Merge "tests: stop updating the search engine"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 10 Nov 2016 23:27:40 +0000 (23:27 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 10 Nov 2016 23:27:40 +0000 (23:27 +0000)
340 files changed:
.mailmap
CREDITS
RELEASE-NOTES-1.28
RELEASE-NOTES-1.29
autoload.php
composer.json
docs/hooks.txt
includes/AjaxDispatcher.php
includes/AjaxResponse.php
includes/CategoryViewer.php
includes/DefaultSettings.php
includes/EditPage.php
includes/Feed.php
includes/FormOptions.php
includes/GlobalFunctions.php
includes/Html.php
includes/MediaWiki.php
includes/MediaWikiServices.php
includes/Message.php
includes/OutputPage.php
includes/PHPVersionCheck.php
includes/Preferences.php
includes/Sanitizer.php
includes/Title.php
includes/WebRequest.php
includes/WebRequestUpload.php
includes/Xml.php
includes/actions/HistoryAction.php
includes/actions/MarkpatrolledAction.php
includes/api/ApiFormatBase.php
includes/api/ApiMain.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiRsd.php
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/gl.json
includes/api/i18n/lt.json
includes/api/i18n/oc.json
includes/api/i18n/pt.json
includes/api/i18n/qqq.json
includes/api/i18n/ru.json
includes/api/i18n/zh-hans.json
includes/cache/UserCache.php
includes/cache/localisation/LCStoreCDB.php
includes/cache/localisation/LocalisationCache.php
includes/collation/IcuCollation.php
includes/db/DatabaseMssql.php
includes/db/MWLBFactory.php
includes/deferred/SearchUpdate.php
includes/diff/DifferenceEngine.php
includes/diff/WordLevelDiff.php
includes/exception/MWExceptionHandler.php
includes/export/XmlDumpWriter.php
includes/filebackend/lockmanager/MySqlLockManager.php
includes/filerepo/LocalRepo.php
includes/filerepo/file/OldLocalFile.php
includes/htmlform/HTMLFormField.php
includes/htmlform/HTMLNestedFilterable.php
includes/htmlform/OOUIHTMLForm.php
includes/htmlform/VFormHTMLForm.php
includes/htmlform/fields/HTMLAutoCompleteSelectField.php
includes/htmlform/fields/HTMLCheckField.php
includes/htmlform/fields/HTMLCheckMatrix.php
includes/htmlform/fields/HTMLComboboxField.php
includes/htmlform/fields/HTMLDateTimeField.php
includes/htmlform/fields/HTMLFloatField.php
includes/htmlform/fields/HTMLHiddenField.php
includes/htmlform/fields/HTMLInfoField.php
includes/htmlform/fields/HTMLIntField.php
includes/htmlform/fields/HTMLMultiSelectField.php
includes/htmlform/fields/HTMLRadioField.php
includes/htmlform/fields/HTMLRestrictionsField.php
includes/htmlform/fields/HTMLSelectAndOtherField.php
includes/htmlform/fields/HTMLSelectField.php
includes/htmlform/fields/HTMLSelectLimitField.php
includes/htmlform/fields/HTMLSelectNamespace.php
includes/htmlform/fields/HTMLSelectOrOtherField.php
includes/htmlform/fields/HTMLSizeFilterField.php
includes/htmlform/fields/HTMLTagFilter.php
includes/htmlform/fields/HTMLTextAreaField.php
includes/htmlform/fields/HTMLTextField.php
includes/http/MWHttpRequest.php
includes/installer/DatabaseInstaller.php
includes/installer/MssqlInstaller.php
includes/installer/PhpBugTests.php
includes/installer/i18n/ar.json
includes/installer/i18n/be-tarask.json
includes/installer/i18n/bn.json
includes/installer/i18n/cs.json
includes/installer/i18n/de.json
includes/installer/i18n/et.json
includes/installer/i18n/fr.json
includes/installer/i18n/gl.json
includes/installer/i18n/it.json
includes/installer/i18n/lb.json
includes/installer/i18n/lt.json
includes/installer/i18n/pl.json
includes/installer/i18n/pt.json
includes/installer/i18n/ru.json
includes/installer/i18n/sl.json
includes/installer/i18n/zh-hans.json
includes/interwiki/InterwikiLookupAdapter.php
includes/jobqueue/JobQueueDB.php
includes/jobqueue/JobRunner.php
includes/libs/CSSMin.php
includes/libs/CryptRand.php
includes/libs/MultiHttpClient.php
includes/libs/Timing.php
includes/libs/filebackend/FileBackend.php
includes/libs/filebackend/SwiftFileBackend.php
includes/libs/jsminplus.php
includes/libs/mime/MimeAnalyzer.php
includes/libs/mime/XmlTypeCheck.php
includes/libs/rdbms/database/Database.php
includes/libs/rdbms/database/DatabaseMysqlBase.php
includes/libs/rdbms/database/DatabasePostgres.php
includes/libs/rdbms/database/DatabaseSqlite.php
includes/libs/rdbms/database/IDatabase.php
includes/libs/rdbms/database/position/MySQLMasterPos.php
includes/libs/rdbms/lbfactory/ILBFactory.php
includes/libs/rdbms/lbfactory/LBFactory.php
includes/libs/rdbms/lbfactory/LBFactoryMulti.php
includes/libs/rdbms/lbfactory/LBFactorySimple.php
includes/libs/rdbms/lbfactory/LBFactorySingle.php
includes/libs/rdbms/loadbalancer/LoadBalancer.php
includes/libs/rdbms/loadmonitor/LoadMonitorMySQL.php
includes/libs/time/ConvertibleTimestamp.php
includes/libs/virtualrest/ParsoidVirtualRESTService.php
includes/libs/virtualrest/RestbaseVirtualRESTService.php
includes/mail/UserMailer.php
includes/media/DjVuImage.php
includes/media/FormatMetadata.php
includes/media/MediaHandler.php
includes/media/PNGMetadataExtractor.php
includes/media/SVGMetadataExtractor.php
includes/media/TransformationalImageHandler.php
includes/media/XCF.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/pager/TablePager.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserOptions.php
includes/parser/ParserOutput.php
includes/registration/ExtensionProcessor.php
includes/resourceloader/ResourceLoader.php
includes/search/SearchPostgres.php
includes/skins/BaseTemplate.php
includes/skins/SkinTemplate.php
includes/specialpage/LoginSignupSpecialPage.php
includes/specialpage/SpecialPageFactory.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUploadStash.php
includes/tidy/RaggettInternalPHP.php
includes/user/User.php
includes/utils/UIDGenerator.php
languages/classes/LanguageSr.php
languages/classes/LanguageZh.php
languages/i18n/ang.json
languages/i18n/ar.json
languages/i18n/arn.json
languages/i18n/ast.json
languages/i18n/ba.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bho.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/cs.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/en.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/ext.json
languages/i18n/fi.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/gl.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hr.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ko.json
languages/i18n/lb.json
languages/i18n/lt.json
languages/i18n/mai.json
languages/i18n/mk.json
languages/i18n/mt.json
languages/i18n/nan.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/pl.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ru.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sd.json
languages/i18n/sgs.json
languages/i18n/sl.json
languages/i18n/sr-ec.json
languages/i18n/sv.json
languages/i18n/szl.json
languages/i18n/tl.json
languages/i18n/tt-cyrl.json
languages/i18n/udm.json
languages/i18n/ur.json
languages/i18n/wo.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/Maintenance.php
maintenance/archives/patch-img_media_type.sql
maintenance/checkComposerLockUpToDate.php
maintenance/createCommonPasswordCdb.php
maintenance/dev/includes/router.php
maintenance/findHooks.php
maintenance/getLagTimes.php
maintenance/jsduck/external.js
maintenance/language/digit2html.php
maintenance/mssql/tables.sql
maintenance/mwdoc-filter.php
maintenance/rebuildLocalisationCache.php
maintenance/sqlite/archives/searchindex-fts3.sql
maintenance/tables.sql
maintenance/updateCredits.php [new file with mode: 0644]
resources/Resources.php
resources/lib/oojs-ui/i18n/ar.json
resources/lib/oojs-ui/i18n/bg.json
resources/lib/oojs-ui/i18n/da.json
resources/lib/oojs-ui/i18n/mr.json
resources/lib/oojs-ui/i18n/nds.json
resources/lib/oojs-ui/i18n/tr.json
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-core-apex.css
resources/lib/oojs-ui/oojs-ui-core-mediawiki.css
resources/lib/oojs-ui/oojs-ui-core.js
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui-toolbars-apex.css
resources/lib/oojs-ui/oojs-ui-toolbars-mediawiki.css
resources/lib/oojs-ui/oojs-ui-toolbars.js
resources/lib/oojs-ui/oojs-ui-widgets-apex.css
resources/lib/oojs-ui/oojs-ui-widgets-mediawiki.css
resources/lib/oojs-ui/oojs-ui-widgets.js
resources/lib/oojs-ui/oojs-ui-windows-apex.css
resources/lib/oojs-ui/oojs-ui-windows-mediawiki.css
resources/lib/oojs-ui/oojs-ui-windows.js
resources/lib/oojs-ui/themes/apex/icons-media.json
resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.svg
resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png
resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.svg
resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png
resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/icons-media.json
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.svg
resources/src/jquery/jquery.accessKeyLabel.js
resources/src/jquery/jquery.byteLimit.js
resources/src/mediawiki.action/mediawiki.action.edit.preview.js
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.less/mediawiki.ui/variables.less
resources/src/mediawiki.skinning/content.css
resources/src/mediawiki.special/mediawiki.special.apisandbox.js
resources/src/mediawiki/mediawiki.js
resources/src/oojs-ui-local.js
resources/src/polyfill-nodeTypes.js
resources/src/startup.js
tests/parser/TestFileReader.php
tests/parser/parserTests.txt
tests/phpunit/includes/GitInfoTest.php
tests/phpunit/includes/HtmlTest.php
tests/phpunit/includes/HttpTest.php
tests/phpunit/includes/LinkFilterTest.php
tests/phpunit/includes/MediaWikiTest.php
tests/phpunit/includes/MessageTest.php
tests/phpunit/includes/PagePropsTest.php
tests/phpunit/includes/SampleTest.php
tests/phpunit/includes/SanitizerTest.php
tests/phpunit/includes/TemplateCategoriesTest.php
tests/phpunit/includes/api/ApiContinuationManagerTest.php
tests/phpunit/includes/api/ApiMessageTest.php
tests/phpunit/includes/api/ApiResultTest.php
tests/phpunit/includes/api/ApiRevisionDeleteTest.php
tests/phpunit/includes/auth/AuthManagerTest.php
tests/phpunit/includes/auth/EmailNotificationSecondaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/LocalPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/TemporaryPasswordPrimaryAuthenticationProviderTest.php
tests/phpunit/includes/auth/UserDataAuthenticationRequestTest.php
tests/phpunit/includes/exception/MWExceptionTest.php
tests/phpunit/includes/installer/DatabaseUpdaterTest.php
tests/phpunit/includes/linker/LinkRendererTest.php
tests/phpunit/includes/media/ExifBitmapTest.php
tests/phpunit/includes/session/SessionProviderTest.php
tests/phpunit/includes/session/SessionTest.php
tests/phpunit/includes/specialpage/SpecialPageFactoryTest.php
tests/phpunit/includes/specials/QueryAllSpecialPagesTest.php
tests/phpunit/includes/upload/UploadBaseTest.php
tests/phpunit/includes/user/UserTest.php
tests/phpunit/structure/ApiDocumentationTest.php
tests/phpunit/structure/ResourcesTest.php
tests/phpunit/suites/ParserTestTopLevelSuite.php
tests/qunit/suites/resources/startup.test.js

index 5c82af8..6d9f8e8 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -1,30 +1,62 @@
+# Map author and committer names and email addresses to canonical real names
+# and email addresses.
+#
+# To update the CREDITS file, run maintenance/updateCredits.php
+#
+# Two types of entries are useful here. The first sets a cannonical author
+# name for a given email address:
+#
+#   Cannonical Author Name <author email>
+#
+# The second allows collecting alternate email addresses into a single
+# cannonical author name and email address:
+#
+#   Cannonical Author Name <author email> <alternate email>
+#
+# Mappings are only needed for authors who have used multiple author names
+# and/or author emails for revisions over time. Author names begenning with
+# "[BOT]" will be omitted from the CREDITS file.
+#
+# See also: https://git-scm.com/docs/git-shortlog#_mapping_authors
+#
+[BOT] Gerrit Code Review <gerrit@wikimedia.org>
 [BOT] Gerrit Patch Uploader <gerritpatchuploader@gmail.com>
+[BOT] jenkins-bot <jenkins-bot@gerrit.wikimedia.org>
+[BOT] jenkins-bot <jenkins-bot@gerrit.wikimedia.org> <jenkins-bot@wikimedia.org>
 [BOT] Translation updater bot <l10n-bot@translatewiki.net>
 Aaron Schulz <aschulz@wikimedia.org>
 Aaron Schulz <aschulz@wikimedia.org> <aaron@users.mediawiki.org>
 Adam Roses Wight <awight@wikimedia.org>
+Adam Roses Wight <awight@wikimedia.org> <spam@ludd.net>
 addshore <addshorewiki@gmail.com>
+Aditya Sastry <ganeshaditya1@gmail.com>
 Adrian Heine <adrian.heine@wikimedia.de>
-Alex Monk <krenair@gmail.com>
-Alex Monk <krenair@gmail.com> <krenair@wikimedia.org>
-Alex Z <mrzmanwiki@gmail.com> <mrzman@users.mediawiki.org>
+Alex Z. <mrzmanwiki@gmail.com> <mrzman@users.mediawiki.org>
 Alexander Emsenhuber <ialex.wiki@gmail.com>
 Alexander Emsenhuber <ialex.wiki@gmail.com> <ialex@users.mediawiki.org>
 Alexander Emsenhuber <ialex.wiki@gmail.com> <mediawiki@emsenhuber.ch>
+Alexander Monk <krenair@gmail.com>
+Alexander Monk <krenair@gmail.com> <alex@wikimedia.org>
+Alexander Monk <krenair@gmail.com> <krenair@wikimedia.org>
 Alexia E. Smith <washuu@gmail.com>
 Amir E. Aharoni <amir.aharoni@mail.huji.ac.il>
 Amir E. Aharoni <amir.aharoni@mail.huji.ac.il> <amire80@users.mediawiki.org>
+Amir Sarabadani <ladsgroup@gmail.com> <Ladsgroup@gmail.com>
 Anders Wegge Jakobsen <awegge@gmail.com> <wegge@users.mediawiki.org>
 Andre Engels <andreengels@gmail.com> <a_engels@users.mediawiki.org>
+Andrew Garrett <agarrett@wikimedia.org>
 Andrew Garrett <agarrett@wikimedia.org> <werdna@users.mediawiki.org>
 Angela Beesley Starling <wiki@nge.la> <angelab@users.mediawiki.org>
 Antoine Musso <hashar@free.fr>
 Antoine Musso <hashar@free.fr> <hashar@users.mediawiki.org>
 Aran Dunkley <aran@organicdesign.co.nz> <nad@users.mediawiki.org>
 Ariel Glenn <ariel@wikimedia.org> <ariel@users.mediawiki.org>
+Ariel Glenn <ariel@wikimedia.org> <ariel@wikimedia.org>
 Arlo Breault <abreault@wikimedia.org>
+Arthur Richards <arichards@wikimedia.org>
 Arthur Richards <arichards@wikimedia.org> <awjrichards@users.mediawiki.org>
 Aryeh Gregor <simetrical+mw@gmail.com> <simetrical@users.mediawiki.org>
+Asher Feldman <afeldman@wikimedia.org>
 Asher Feldman <afeldman@wikimedia.org> <asher@users.mediawiki.org>
 aude <aude.wiki@gmail.com>
 Audrey Tang <audreyt@audreyt.org>
@@ -32,25 +64,30 @@ Audrey Tang <audreyt@audreyt.org> <au@localhost>
 ayush_garg <ayush.ce13@iitp.ac.in>
 Bahodir Mansurov <bmansurov@wikimedia.org>
 Bartosz Dziewoński <matma.rex@gmail.com>
-Bartosz Dziewoński <matma.rex@gmail.com> <matmarex@wikimedia.org>
 Bartosz Dziewoński <matma.rex@gmail.com> <bdziewonski@wikimedia.org>
+Bartosz Dziewoński <matma.rex@gmail.com> <matmarex@wikimedia.org>
 Ben Hartshorne <bhartshorne@wikimedia.org> <ben@users.mediawiki.org>
 Bene <benestar.wikimedia@gmail.com>
-Benjamin Lees <emufarmers@gmail.com> <emufarmers@users.mediawiki.org>
+Bene <benestar.wikimedia@gmail.com> <benestar.wikimedia@googlemail.com>
+Benny Situ <bsitu@wikimedia.org>
 Benny Situ <bsitu@wikimedia.org> <bsitu@users.mediawiki.org>
 Bertrand Grondin <bertrand.grondin@tiscali.fr> <grondin@users.mediawiki.org>
 Brad Jorsch <bjorsch@wikimedia.org>
+Brad Jorsch <bjorsch@wikimedia.org> <anomie.wikipedia@gmail.com>
 Brandon Harris <bharris@wikimedia.org> <bharris@users.mediawiki.org>
-Brian Wolff <bawolff+svn@gmail.com> <bawolff@users.mediawiki.org>
 Brian Wolff <bawolff+wn@gmail.com>
+Brian Wolff <bawolff+wn@gmail.com> <bawolff+svn@gmail.com>
+Brian Wolff <bawolff+wn@gmail.com> <bawolff@users.mediawiki.org>
 Brion Vibber <brion@wikimedia.org>
 Brion Vibber <brion@wikimedia.org> <brion@pobox.com>
 Brion Vibber <brion@wikimedia.org> <brion@users.mediawiki.org>
 Bryan Davis <bd808@wikimedia.org>
+Bryan Davis <bd808@wikimedia.org> <bd808@bd808.com>
+Bryan Tong Minh <bryan.tongminh@gmail.com>
 Bryan Tong Minh <bryan.tongminh@gmail.com> <btongminh@users.mediawiki.org>
 C. Scott Ananian <cscott@cscott.net>
 C. Scott Ananian <cscott@cscott.net> <cananian@wikimedia.org>
-cacycle@gerrit.wikimedia.org <cacyclewp@gmail.com>
+Cacycle <cacyclewp@gmail.com>
 cenarium <cenarium.sysop@gmail.com>
 Chad Horohoe <chadh@wikimedia.org>
 Chad Horohoe <chadh@wikimedia.org> <demon@users.mediawiki.org>
@@ -58,44 +95,64 @@ Charles Melbye <charlie@yourwiki.net> <charlie@users.mediawiki.org>
 Chiefwei <chiefwei1989@gmail.com>
 Chris McMahon <cmcmahon@wikimedia.org>
 Chris Steipp <csteipp@wikimedia.org>
-Christian Aistleitner <christian@quelltextlich.at> <qchris@users.mediawiki.org>
 Christian Aistleitner <christian@quelltextlich.at>
+Christian Aistleitner <christian@quelltextlich.at> <qchris@users.mediawiki.org>
 Christian Williams <orbit@framezero.com>
 Christian Williams <orbit@framezero.com> <christian@localhost>
 Christian Williams <orbit@framezero.com> <christian@wikia-inc.com>
+Christopher Johnson <root@bugzilla.wmde.de>
+church of emacs <churchofemacs@users.mediawiki.org>
+Cindy Cicalese <cicalese@mitre.org>
 ckoerner <nobelx@gmail.com>
 Conrad Irwin <conrad.irwin+wiki@gmail.com> <conrad@users.mediawiki.org>
 Dan Duvall <dduvall@wikimedia.org>
 dan-nl <d_entous@yahoo.com>
 Daniel A. R. Werner <daniel.a.r.werner@gmail.com>
 Daniel Cannon <cannon.danielc@gmail.com> <amidaniel@users.mediawiki.org>
+Daniel Friesen <mediawiki@danielfriesen.name>
+Daniel Friesen <mediawiki@danielfriesen.name> <daniel@nadir-seen-fire.com>
 Daniel Friesen <mediawiki@danielfriesen.name> <dantman@users.mediawiki.org>
+Daniel Friesen <mediawiki@danielfriesen.name> <pub-github@nadir-seen-fire.com>
 Daniel Kinzler <daniel.kinzler@wikimedia.de>
 Daniel Kinzler <daniel.kinzler@wikimedia.de> <daniel@users.mediawiki.org>
-Danny B <Wikipedia.Danny.B@email.cz> <danny_b@users.mediawiki.org>
+Danny B. <Wikipedia.Danny.B@email.cz>
+Danny B. <Wikipedia.Danny.B@email.cz> <danny.b@email.cz>
+Danny B. <Wikipedia.Danny.B@email.cz> <danny_b@users.mediawiki.org>
+Danny B. <Wikipedia.Danny.B@email.cz> <wikimedia.danny.b@email.cz>
+Darian Anthony Patrick <dpatrick@wikimedia.org>
+Darkdragon09 <ubuntu@ip-172-31-39-38.us-west-2.compute.internal>
 David Chan <david@sheetmusic.org.uk>
+Dereckson <dereckson@espace-win.org>
+Derk-Jan Hartman <hartman@videolan.org>
+Derk-Jan Hartman <hartman@videolan.org> <hartman.wiki@gmail.com>
 Derk-Jan Hartman <hartman@videolan.org> <hartman@users.mediawiki.org>
-Derk-Jan Hartman <hartman.wiki@gmail.com>
 Diederik van Liere <dvanliere@gmail.com> <diederik@users.mediawiki.org>
 Domas Mituzas <domas.mituzas@gmail.com> <midom@users.mediawiki.org>
 Douglas Gardner <douglas@chippy.ch>
 DPStokesNZ <duncan.stokes@gmail.com>
 Ebrahim Byagowi <ebrahim@gnu.org>
 Ed Sanders <esanders@wikimedia.org>
-Elliott Eggleston <ejegg@ejegg.com>
+Elliott Eggleston <eeggleston@wikimedia.org>
+Elliott Eggleston <eeggleston@wikimedia.org> <ejegg@ejegg.com>
 Emmanuel Engelhart <kelson@kiwix.org> <kelson42@users.mediawiki.org>
-eranroz <eranroz89@gmail.com>
+Emufarmers <emufarmers@gmail.com>
+Emufarmers <emufarmers@gmail.com> <emufarmers@users.mediawiki.org>
+Entlinkt <entlinkt@gmx-topmail.de>
+Eranroz <eranroz89@gmail.com>
 Erik Bernhardson <ebernhardson@wikimedia.org>
 Erik Moeller <erik@wikimedia.org>
 Erik Moeller <erik@wikimedia.org> <erik@users.mediawiki.org>
 Erwin Dokter <erwin@darcoury.nl>
 Evan McIntire <mcintire.evan@gmail.com>
+Evan Prodromou <evanprodromou@users.mediawiki.org> <evan@users.mediawiki.org>
 Federico Leva <federicoleva@tiscali.it>
 Fenzik Joseph <fenzik@gmail.com> <fenzik@users.mediawiki.org>
-Florianschmidtwelzow <florian.schmidt.welzow@t-online.de> <florian.schmidt.stargatewissen@gmail.com>
-Florianschmidtwelzow <florian.schmidt.welzow@t-online.de> Florian <florian.schmidt.welzow@t-online.de>
-Fomafix <fomafix@googlemail.com>
+Florian Schmidt <florian.schmidt.welzow@t-online.de>
+Florian Schmidt <florian.schmidt.welzow@t-online.de> <florian.schmidt.stargatewissen@gmail.com>
+fomafix <fomafix@googlemail.com>
+Fran Rogers <fran@dumetella.net>
 Fran Rogers <fran@dumetella.net> <krimpet@users.mediawiki.org>
+freakolowsky <freak@drajv.si>
 FunPika <funpikawiki@gmail.com>
 Gabriel Wicke <gwicke@wikimedia.org>
 Gabriel Wicke <gwicke@wikimedia.org> <gwicke@users.mediawiki.org>
@@ -110,31 +167,38 @@ glaisher <glaisher.wiki@gmail.com>
 Greg Sabino Mullane <greg@turnstep.com>
 Greg Sabino Mullane <greg@turnstep.com> <greg@endpoint.com>
 Greg Sabino Mullane <greg@turnstep.com> <greg@users.mediawiki.org>
+Grunny <mwgrunny@gmail.com>
 Guy Van den Broeck <guyvdb@gmail.com> <guyvdb@users.mediawiki.org>
 Happy-melon <happy-melon@live.com> <happy-melon@users.mediawiki.org>
 Helder <he7d3r@gmail.com>
 Helder <he7d3r@gmail.com> <helder.wiki@gmail.com>
 Hoo man <hoo@online.de>
+Huji <huji.huji@gmail.com>
 Huji <huji.huji@gmail.com> <huji@users.mediawiki.org>
 Ian Baker <ibaker@wikimedia.org> <raindrift@users.mediawiki.org>
 Ilmari Karonen <nospam@vyznev.net> <vyznev@users.mediawiki.org>
 Inez Korczyński <inez@wikia-inc.com>
 Inez Korczyński <inez@wikia-inc.com> <inez@users.mediawiki.org>
 isarra <s@zaori.org>
+isarra <s@zaori.org> <zhorishna@gmail.com>
 Ivan Lanin <ivanlanin@gmail.com> <ivanlanin@users.mediawiki.org>
-Jack Phoenix <jack@countervandalism.net> <ashley@users.mediawiki.org>
 Jack Phoenix <jack@countervandalism.net>
+Jack Phoenix <jack@countervandalism.net> <ashley@users.mediawiki.org>
 Jackmcbarn <jackmcbarn@gmail.com>
-Jackmcbarn <jackmcbarn@users.noreply.github.com>
+Jackmcbarn <jackmcbarn@gmail.com> <jackmcbarn@users.noreply.github.com>
 jagori <jagori79@gmail.com>
-James D. Forrester <jforrester@wikimedia.org>
+James Forrester <jforrester@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>
 Jan Paul Posma <jp.posma@gmail.com> <janpaul123@users.mediawiki.org>
 Jan Zerebecki <jan.wikimedia@zerebecki.de>
+Jared Flores <jaredflores2000@gmail.com>
 Jaroslav Škarvada <jskarvad@redhat.com>
 jarrettmunton <jmuntjmunt@gmail.com>
+Jason Richey <jasonr@wikia.com>
 Jason Richey <jasonr@wikia.com> <jasonr@users.mediawiki.org>
+Jason Richey <jasonr@wikia.com> <urichj00@users.mediawiki.org>
 Jeff Hall <jeffreyehall@gmail.com>
 Jeff Hall <jeffreyehall@gmail.com> <jhall@wikimedia.org>
 Jeff Janes <jeff.janes@gmail.com>
@@ -151,40 +215,58 @@ Jon Robson <jrobson@wikimedia.org> <jdlrobson@gmail.com>
 Juliusz Gonera <jgonera@gmail.com>
 Juliusz Gonera <jgonera@gmail.com> <jgonera@wikimedia.org>
 JuneHyeon Bae <devunt@gmail.com>
+Jure Kajzer <freak@drajv.si>
 Jure Kajzer <freak@drajv.si> <freakolowsky@users.mediawiki.org>
+Karun Dambiec <karun.84@gmx.de>
+Katie Filbert <aude.wiki@gmail.com>
 Katie Filbert <aude.wiki@gmail.com> <aude@users.mediawiki.org>
 Kevin Israel <pleasestand@live.com>
-Kunal Mehta <legoktm@gmail.com>
-Kunal Mehta <legoktm@gmail.com> <legoktm.wikipedia@gmail.com>
+Kunal Grover <kunalgrover05@gmail.com>
+Kunal Mehta <legoktm@member.fsf.org>
+Kunal Mehta <legoktm@member.fsf.org> <legoktm.wikipedia@gmail.com>
+Kunal Mehta <legoktm@member.fsf.org> <legoktm@gmail.com>
 Kwan Ting Chan <ktc@ktchan.info> <ktchan@users.mediawiki.org>
 lekshmi <andnlnbn18@gmail.com>
 Leo Koppelkamm <diebuche@gmail.com> <diebuche@users.mediawiki.org>
+Leon Liesener <leon.liesener@wikipedia.de>
 Leon Weber <leon@vserver152.masterssystems.com> <leon@users.mediawiki.org>
 Leonardo Gregianin <leogregianin@googlemail.com> <leogregianin@users.mediawiki.org>
 Leons Petrazickis <leons.petrazickis.haveyouconsiderednotincludingthisphrase@gmail.com> <leonsp@users.mediawiki.org>
-Liangent <liangent@gmail.com>
+liangent <liangent@gmail.com>
 Lisa Ridley <lhridley@gmail.com> <lhridley@users.mediawiki.org>
 Ljudusika <plo2000@i.ua>
 Luis Felipe Schenone <schenonef@gmail.com>
+Lupo <lupo.bugzilla@gmail.com>
 m4tx <m4tx@m4tx.pl>
+Madman <madman.enwiki@gmail.com>
 Magnus Manske <magnusmanske@googlemail.com> <magnusmanske@users.mediawiki.org>
 Manuel Schneider <manuel.schneider@wikimedia.ch> <80686@users.mediawiki.org>
+Marc-André Pelletier <marc@uberbox.org>
+Marcin Cieślak <saper@saper.info>
 Marcin Cieślak <saper@saper.info> <saper@users.mediawiki.org>
+Marco Falke <maic23@live.de>
+MarcoAurelio <strigiwm@gmail.com>
 Marielle Volz <marielle.volz@gmail.com>
 Marius Hoch <hoo@online.de>
-Mark A. Hershberger <mah@everybody.org>
-Mark A. Hershberger <mah@everybody.org> <mah@nichework.com>
-Mark A. Hershberger <mah@everybody.org> <mah@users.mediawiki.org>
 Mark Clements <mediawiki@kennel17.co.uk> <happydog@users.mediawiki.org>
+Mark Hershberger <mah@everybody.org>
+Mark Hershberger <mah@everybody.org> <mah@nichework.com>
+Mark Hershberger <mah@everybody.org> <mah@users.mediawiki.org>
+Mark Hershberger <mah@everybody.org> <mhershberger@wikimedia.org>
 Mark Holmquist <mtraceur@member.fsf.org>
+Mark Holmquist <mtraceur@member.fsf.org> <mholmquist@wikimedia.org>
 Marko Obrovac <mobrovac@wikimedia.org>
+Markus Glaser <glaser@hallowelt.biz>
+Markus Glaser <glaser@hallowelt.biz> <mglaser@users.mediawiki.org>
 Matt Johnston <mattj@emazestudios.com> <mattj@users.mediawiki.org>
 Matthew Britton <hugglegurch@gmail.com> <gurch@users.mediawiki.org>
 Matthew Flaschen <mflaschen@wikimedia.org>
 Matthias Mullie <git@mullie.eu>
+Matthias Mullie <git@mullie.eu> <mmullie@wikimedia.org>
 Matěj Grabovský <mgrabovsky@yahoo.com> <mgrabovsky@users.mediawiki.org>
 Max Semenik <maxsem.wiki@gmail.com>
 Max Semenik <maxsem.wiki@gmail.com> <maxsem@users.mediawiki.org>
+Max Semenik <maxsem.wiki@gmail.com> <semenik@gmail.com>
 mgooley <g0013y@gmail.com>
 Michael Dale <mdale@wikimedia.org> <dale@users.mediawiki.org>
 mjbmr <mjbmri@gmail.com>
@@ -192,23 +274,30 @@ Mohamed Magdy <mohamedmk@gmail.com> <alnokta@users.mediawiki.org>
 Moriel Schottlender <mschottlender@wikimedia.org>
 Moriel Schottlender <mschottlender@wikimedia.org> <moriel@gmail.com>
 Mormegil <mormegil@centrum.cz>
+MrBlueSky <mrbluesky@wikipedia.be>
+MrBlueSky <mrbluesky@wikipedia.be> <mrbluesky@localhost>
 Mukunda Modell <mmodell@wikimedia.org>
+Mwalker <mwalker@wikimedia.org>
 MZMcBride <g@mzmcbride.com>
 nadeesha <nadeesha@calcey.com> <nadeesha@users.mediawiki.org>
 Namit <namit.ohri@gmail.com>
 Nathaniel Herman <redwwjd@yahoo.com> <pinky@users.mediawiki.org>
 Neil Kandalgaonkar <neilk@wikimedia.org> <neilk@users.mediawiki.org>
 Nemo bis <federicoleva@tiscali.it>
-Nephele <nephele@skyhighway.com> <nephele@users.mediawiki.org>
+nephele <nephele@skyhighway.com> <nephele@users.mediawiki.org>
 Nick Jenkins <nickpj@gmail.com> <nickj@users.mediawiki.org>
 Nik Everett <neverett@wikimedia.org>
 Niklas Laxström <niklas.laxstrom@gmail.com>
 Niklas Laxström <niklas.laxstrom@gmail.com> <nikerabbit@users.mediawiki.org>
 Nimish Gautam <nimishg@wikimedia.org> <nimishg@users.mediawiki.org>
 Nuria Ruiz <nuria@wikimedia.org>
-Ori.livneh <ori@wikimedia.org>
+Ori Livneh <ori@wikimedia.org>
+Ori Livneh <ori@wikimedia.org> <ori.livneh@gmail.com>
 OverlordQ <wikipedia@thedarkcitadel.com> <overlordq@users.mediawiki.org>
+Owen Davis <owen@wikia-inc.com>
+Owen Davis <owen@wikia-inc.com> <owen@users.mediawiki.org>
 paladox <thomasmulhall410@yahoo.com>
+Patrick Reilly <preilly@wikimedia.org>
 Patrick Reilly <preilly@wikimedia.org> <preilly@users.mediawiki.org>
 Patrick Westerhoff <PatrickWesterhoff@gmail.com>
 Paul Copperman <paul.copperman@gmail.com> <pcopp@users.mediawiki.org>
@@ -223,9 +312,9 @@ PranavK <pranavmk98@gmail.com>
 Prateek Saxena <psaxena@wikimedia.org>
 Prateek Saxena <psaxena@wikimedia.org> <prtksxna@gmail.com>
 Priyanka Dhanda <pdhanda@wikimedia.org> <pdhanda@users.mediawiki.org>
-Purodha B Blissenbach <purodha@blissenbach.org>
-Purodha B Blissenbach <purodha@blissenbach.org> <purodha@users.mediawiki.org>
-Purodha B Blissenbach <purodha@blissenbach.org> <publi@web.de>
+Purodha Blissenbach <purodha@blissenbach.org>
+Purodha Blissenbach <purodha@blissenbach.org> <publi@web.de>
+Purodha Blissenbach <purodha@blissenbach.org> <purodha@users.mediawiki.org>
 Raimond Spekking <raimond.spekking@gmail.com>
 Raimond Spekking <raimond.spekking@gmail.com> <raymond@users.mediawiki.org>
 Remember the dot <rememberthedot@gmail.com> <rememberthedot@users.mediawiki.org>
@@ -233,13 +322,15 @@ Reza <reza.energy@gmail.com>
 Ricordisamoa <ricordisamoa@openmailbox.org>
 rillke <rillke@wikipedia.de>
 rillke <rillke@wikipedia.de> <rainerrillke@hotmail.com>
-River Tarnell <river@wikimedia.org> <river@users.mediawiki.org>
 River Tarnell <river@wikimedia.org> <kateturner@users.mediawiki.org>
+River Tarnell <river@wikimedia.org> <river@users.mediawiki.org>
 Roan Kattouw <roan.kattouw@gmail.com>
 Roan Kattouw <roan.kattouw@gmail.com> <catrope@users.mediawiki.org>
 Roan Kattouw <roan.kattouw@gmail.com> <roan@wikimedia.org>
 Rob Church <robchur@gmail.com> <robchurch@users.mediawiki.org>
+Rob Lanphier <robla@robla.net>
 Rob Lanphier <robla@robla.net> <robla@users.mediawiki.org>
+Rob Lanphier <robla@robla.net> <robla@wikimedia.org>
 Rob Moen <rmoen@mediawiki.org>
 Rob Moen <rmoen@mediawiki.org> <rmoen@users.mediawiki.org>
 Rob Moen <rmoen@mediawiki.org> <rmoen@wikimedia.org>
@@ -247,24 +338,30 @@ Robert Hoenig <indielives010@gmail.com>
 Robert Leverington <robert@rhl.me.uk> <roberthl@users.mediawiki.org>
 Robert Rohde <rarohde@gmail.com> <rarohde@users.mediawiki.org>
 Robert Stojnić <rainmansr@gmail.com> <rainman@users.mediawiki.org>
+Robin Pepermans <robinp.1273@gmail.com>
 Robin Pepermans <robinp.1273@gmail.com> <robin@users.mediawiki.org>
 robinhood701 <robinhood70@live.ca>
 Rohan <rohan1395@yahoo.com>
 Rotem Liss <rotemliss@gmail.com> <rotem@users.mediawiki.org>
 Rummana Yasmeen <ryasmeen@wikimedia.org>
 Russ Nelson <russnelson@gmail.com> <nelson@users.mediawiki.org>
-Ryan Kaldari <rkaldari@wikimedia.org> <kaldari@users.mediawiki.org>
 Ryan Kaldari <rkaldari@wikimedia.org>
 Ryan Kaldari <rkaldari@wikimedia.org> <kaldari@gmail.com>
+Ryan Kaldari <rkaldari@wikimedia.org> <kaldari@users.mediawiki.org>
+Ryan Lane <rlane32@gmail.com>
 Ryan Lane <rlane32@gmail.com> <laner@users.mediawiki.org>
+Ryan Lane <rlane32@gmail.com> <rlane@wikimedia.org>
+Ryan Schmidt <skizzerz@gmail.com>
+Ryan Schmidt <skizzerz@gmail.com> <skizzerz@skizzerz.net>
 Ryan Schmidt <skizzerz@gmail.com> <skizzerz@users.mediawiki.org>
 S Page <spage@wikimedia.org>
 Sam Reed <reedy@wikimedia.org>
+Sam Reed <reedy@wikimedia.org> <Reedy reedy@wikimedia.org>
+Sam Reed <reedy@wikimedia.org> <reedy@formey.wikimedia.org>
 Sam Reed <reedy@wikimedia.org> <reedy@users.mediawiki.org>
 Sam Smith <git@samsmith.io>
-Santhosh Thottingal <santhosh.thottingal@gmail.com> <santhosh@users.mediawiki.org>
 Santhosh Thottingal <santhosh.thottingal@gmail.com>
-saper <saper@saper.info>
+Santhosh Thottingal <santhosh.thottingal@gmail.com> <santhosh@users.mediawiki.org>
 Schnark <listenleser@gmail.com>
 Scimonster <tehalmightyscimonster@gmail.com>
 Sean Colombo <sean.colombo@gmail.com> <sean_colombo@users.mediawiki.org>
@@ -272,11 +369,14 @@ Sean Pringle <springle@wikimedia.org>
 Seb35 <seb35wikipedia@gmail.com>
 Sergio Santoro <santoro.srg@gmail.com>
 Shahyar <shahyar@gmail.com>
+Shinjiman <shinjiman@gmail.com>
 Shinjiman <shinjiman@gmail.com> <shinjiman@users.mediawiki.org>
 Siebrand Mazeland <s.mazeland@xs4all.nl>
 Siebrand Mazeland <s.mazeland@xs4all.nl> <siebrand@kitano.nl>
 Siebrand Mazeland <s.mazeland@xs4all.nl> <siebrand@users.mediawiki.org>
 Siebrand Mazeland <s.mazeland@xs4all.nl> <siebrand@wikimedia.org>
+Smriti Singh <smritis.31095@gmail.com>
+Sorawee Porncharoenwase <nullzero.free@gmail.com>
 Southparkfan <southparkfan223@hotmail.com>
 SQL <sxwiki@gmail.com> <sql@users.mediawiki.org>
 Stanislav Malyshev <smalyshev@gmail.com>
@@ -288,9 +388,10 @@ Steven Roddis <StevenRoddis@users.noreply.github.com>
 Subramanya Sastry <ssastry@wikimedia.org>
 Sucheta Ghoshal <sghoshal@wikimedia.org>
 Sumit Asthana <asthana.sumit23@gmail.com>
+Swalling <swalling@wikimedia.org>
 Thalia Chan <thalia@cantorion.org>
-TheDJ <hartman.wiki@gmail.com>
 Thiemo Mättig (WMDE) <thiemo.maettig@wikimedia.de>
+Thiemo Mättig (WMDE) <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>
@@ -305,29 +406,45 @@ Timo Tijhof <krinklemail@gmail.com> <krinkle@users.mediawiki.org>
 Timo Tijhof <krinklemail@gmail.com> <timo@wikimedia.org>
 Timo Tijhof <krinklemail@gmail.com> <ttijhof@wikimedia.org>
 Tina Johnson <tinajohnson.1234@gmail.com>
+Tisane <nathanlarson3141@gmail.com>
+Tjones <tjones@wikimedia.org>
 Tom Maaswinkel <tom.maaswinkel@12wiki.eu> <thedevilonline@users.mediawiki.org>
 Tomasz Finc <tfinc@wikimedia.org> <tomasz@users.mediawiki.org>
+Tomasz W. Kozlowski <tomasz@twkozlowski.com>
+Tomasz W. Kozlowski <tomasz@twkozlowski.com> <tomasz@twkozlowski.net>
+Tomasz W. Kozlowski <tomasz@twkozlowski.com> <twkozlowski@gmail.com>
 Tony Thomas <01tonythomas@gmail.com>
+Tpt <thomaspt@hotmail.fr>
 Trevor Parscal <trevorparscal@gmail.com>
 Trevor Parscal <trevorparscal@gmail.com> <tparscal@users.mediawiki.org>
 Trevor Parscal <trevorparscal@gmail.com> <tparscal@wikimedia.org>
 Tyler Cipriani <tcipriani@wikimedia.org>
 Tyler Romeo <tylerromeo@gmail.com>
-umherirrender <umherirrender_de.wp@web.de>
+Umherirrender <umherirrender_de.wp@web.de>
+Victor Vasiliev <vasilvv@mit.edu>
 Victor Vasiliev <vasilvv@mit.edu> <vasilievvv@users.mediawiki.org>
+Victor Vasiliev <vasilvv@mit.edu> <vasilvv@gmail.com>
 Vikas S Yaligar <vikasyaligar.it@gmail.com>
 Vivek Ghaisas <v.a.ghaisas@gmail.com>
 wctaiwan <wctaiwan@gmail.com>
 withoutaname <drevitchi@gmail.com>
 X! <soxred93@gmail.com> <soxred93@users.mediawiki.org>
+Yaron Koren <yaron57@gmail.com>
+Yaron Koren <yaron57@gmail.com> <yaron@users.mediawiki.org>
 Yaroslav Melnychuk <yaroslavmelnuchuk@gmail.com>
+Yongmin Hong <revi@member.fsf.org>
+Yongmin Hong <revi@member.fsf.org> <revi@pobox.com>
+Yongmin Hong <revi@member.fsf.org> <reviwiki@gmail.com>
 Yuri Astrakhan <yurik@wikimedia.org>
+Yuri Astrakhan <yurik@wikimedia.org> <yuriastrakhan@gmail.com>
 Yuri Astrakhan <yurik@wikimedia.org> <yurik@users.mediawiki.org>
 Yusuke Matsubara <whym@whym.org>
-YuviPanda <yuvipanda@gmail.com>
+Yuvi Panda <yuvipanda@gmail.com>
 Zak Greant <zak+mediawiki@fooassociates.com> <zak@users.mediawiki.org>
+Zhengzhu Feng <zhengzhu@gmail.com>
+Zhengzhu Feng <zhengzhu@gmail.com> <zhengzhu@users.mediawiki.org>
+Zppix <support@zppixballee.com>
 Ævar Arnfjörð Bjarmason <avarab@gmail.com> <avar@users.mediawiki.org>
+Étienne Beaulé <beauleetienne0@gmail.com>
 Željko Filipin <zeljko.filipin@gmail.com>
 Željko Filipin <zeljko.filipin@gmail.com> <zfilipin@wikimedia.org>
-Zhengzhu Feng <zhengzhu@gmail.com>
-Zhengzhu Feng <zhengzhu@gmail.com> <zhengzhu@users.mediawiki.org>
diff --git a/CREDITS b/CREDITS
index 46d5c9c..1c1cf87 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -6,252 +6,657 @@ following names for their contribution to the product.
 -->
 <!-- Please notice that the following can be found parsed under Special:Version/Credits -->
 
-== Developers ==
-* Aaron Schulz
-* Alex Z.
-* Alexander Monk
-* Alexandre Emsenhuber
-* Andrew Garrett
-* Antoine Musso
-* Arthur Richards
-* Aryeh Gregor
-* Bartosz Dziewoński
-* Bertrand Grondin
-* Brad Jorsch
-* Brian Wolff
-* Brion Vibber
-* Bryan Davis
-* Bryan Tong Minh
-* Chad Horohoe
-* Charles Melbye
-* Chris Steipp
-* church of emacs
-* Daniel Friesen
-* Daniel Kinzler
-* Daniel Renfro
-* Danny B.
-* David McCabe
-* Derk-Jan Hartman
-* Domas Mituzas
-* Ed Sanders
-* Emufarmers
-* Fran Rogers
-* Greg Sabino Mullane
-* Guy Van den Broeck
-* Happy-melon
-* Hojjat
-* Ian Baker
-* Ilmari Karonen
-* Jack D. Pond
-* Jack Phoenix
-* Jackmcbarn
-* James Forrester
-* Jan Paul Posma
-* Jason Richey
-* Jeroen De Dauw
-* John Du Hart
-* Jon Harald Søby
-* Juliano F. Ravasi
-* JuneHyeon Bae
-* Leo Koppelkamm
-* Leon Weber
-* Leslie Hoare
-* Marco Schuster
-* Marius Hoch
-* Matěj Grabovský
-* Matt Johnston
-* Matthew Flaschen
-* Max Semenik
-* Meno25
-* MinuteElectron
-* Mohamed Magdy
-* Nathaniel Herman
-* Neil Kandalgaonkar
-* Nicolas Dumazet
-* Niklas Laxström
-* Ori Livneh
-* Patrick Reilly
-* Philip Tzou
-* Platonides
-* Purodha Blissenbach
-* Raimond Spekking
-* Remember the dot
-* Roan Kattouw
-* Robert Stojnić
-* Robin Pepermans
-* Rotem Liss
-* Ryan Kaldari
-* Ryan Lane
-* Ryan Schmidt
-* Sam Reed
-* Shinjiman
-* Siebrand Mazeland
-* Soxred93
-* SQL
-* Szymon Świerkosz
-* This, that and the other
-* Thomas Bleher
-* Thomas Gries
-* Tim Starling
-* Timo Tijhof
-* Trevor Parscal
-* Tyler Anthony Romeo
-* Victor Vasiliev
-* Yesid Carrillo
-* Yuri Astrakhan
-
-== Patch Contributors ==
+== Contributors ==
+<!-- Updates to this list made with maintenance/updateCredits.php -->
+<!-- BEGIN CONTRIBUTOR LIST -->
+* aalekhN
 * Aaron Ball
 * Aaron Pramana
+* Aaron Schulz
+* Aarti Dwivedi
+* Aashaka Shah
+* abhinand
+* Abhishek Das
+* Adam Miller
+* Adam Roses Wight
+* addshore
+* Aditya Sastry
+* Adrian Heine
+* Adrian Lang
+* Ævar Arnfjörð Bjarmason
 * Agbad
 * Ahmad Sherif
+* Ajayrahul P
+* Alangi Derick
+* Albert221
 * Alejandro Mery
+* AlephNull
+* Alex Ivanov
+* Alex Shih-Han Lin
+* Alex Z.
+* Alexander Emsenhuber
+* Alexander I. Mashin
+* Alexander Lehmann
+* Alexander Monk
+* Alexander Sigachov
+* Alexandre Emsenhuber
+* Alexia E. Smith
 * Amalthea
 * Amir E. Aharoni
+* Amir Sarabadani
+* ananay
+* Anders Wegge Jakobsen
+* Andre Engels
+* Andrew Bogott
 * Andrew Dunbar
+* Andrew Garrett
+* Andrew Green
+* Andrew H
+* Andrew Harris
+* Andrew Otto
+* Andrius R
+* andymw
+* Angela Beesley Starling
+* ankur
+* Antoine Musso
 * Antonio Ospite
+* apexkid
+* April King
+* Aran Dunkley
+* Arash Boostani
+* Arcane21
+* Ariel Glenn
+* Arlo Breault
+* Arne Heizmann
+* Arthur Richards
+* Aryeh Gregor
+* Asher Feldman
 * Asier Lostalé
+* ayush_garg
 * Azliq7
 * Bagariavivek
+* Bahodir Mansurov
+* balloonguy
+* Bartosz Dziewoński
 * Beau
+* Ben Davis
+* Ben Hartshorne
+* Bene
 * Benny Situ
 * Bergi
+* Bertrand Grondin
+* Bill Traynor
+* Billinghurst
+* billm
+* blotmandroid
+* Bogdan Stancescu
+* Boris Nagaev
 * Borislav Manolov
+* Brad Jorsch
+* Brandon Black
+* Brandon Harris
 * Brent G
+* Brent Garber
+* Brian Wolff
 * Brianna Laugher
+* Brion Vibber
+* Bryan Davis
+* Bryan Tong Minh
+* burthsceh
+* C. Scott Ananian
+* Cacycle
+* Calak
+* Camille Constans
+* Carl Fürstenberg
 * Carlin
 * Carsten Nielsen
+* Cblair91
+* cenarium
+* Chad Horohoe
+* Charles Melbye
+* Chiefwei
+* Chris McMahon
+* Chris Seaton
+* Chris Steipp
 * Christian Aistleitner
+* Christian List
 * Christian Neubauer
+* Christopher Johnson
+* church of emacs
+* Cindy Cicalese
+* ckoerner
 * Conrad Irwin
 * cryptocoryne
 * Dan Barrett
 * Dan Collins
+* Dan Duvall
 * Dan Nessett
+* Dan Poltawski
+* dan-nl
+* Daniel A. R. Werner
 * Daniel Arnold
+* Daniel Cannon
+* Daniel De Marco
+* Daniel Evans
+* Daniel Friesen
+* Daniel Kinzler
+* Daniel Renfro
 * Daniel Werner
+* DanielRenfro
+* Danny B.
+* Darian Anthony Patrick
+* Darkdragon09
+* DaSch
 * David Baumgarten
+* David Chan
+* David E. Narváez
+* David Lynch
+* David McCabe
+* David Mudrák
+* dcausse
+* dennisroczek
 * Denny Vrandecic
+* Dereckson
+* Derk-Jan Hartman
+* Derric Atzrott
+* Derrick Coetzee
 * Dévai Tamás
+* Devi Krishnan
+* Diederik van Liere
+* Domas Mituzas
+* Douglas Gardner
+* DPStokesNZ
+* dr0ptp4kt
 * Ebrahim Byagowi
+* Ed Sanders
+* Edward Chernenko
 * Edward Z. Yang
+* Elisabeth Bauer
+* Elliott Eggleston
 * Elvis Stansvik
+* Emil Podlaszewski
+* Emmanuel Engelhart
+* Emmanuel Gil Peyrot
+* Emmet Hikory
+* Emufarmers
+* enigmaeth
+* Entlinkt
 * Eranroz
+* Eric Evans
+* Eric Schneider
+* Erich Lerch
+* Erick Guan
+* Erik Bernhardson
+* Erik Moeller
 * Erwin Dokter
 * Étienne Beaulé
+* Evan McIntire
+* Evan Prodromou
+* ExplosiveHippo
+* Faidon Liambotis
 * Federico Leva
+* Fenzik Joseph
+* firebus
 * Florian Schmidt
 * fomafix
+* Fran Rogers
+* Fred Emmott
 * FunPika
 * Gabriel Wicke
+* Gary Guo
+* gbt248
 * Geoffrey Mon
+* georggi
+* Gergő Tisza
 * Gero Scholz
+* gicode
+* Giftpflanze
+* Gilles Dubuc
 * Gilles van den Hoven
+* Giuseppe Lavagetto
+* gladoscc
+* glaisher
+* Greg Maxwell
+* Greg Sabino Mullane
+* Gregory Szorc
 * Grunny
+* Guillaume Blanchard
+* Guy Van den Broeck
+* Happy-melon
+* haritha28
 * Harry Burt
+* Hazard-SJ
+* Hector A Escobedo
+* Helder
+* Henning Snater
+* Hojjat
+* Huji
+* Hydriz
+* Ian Baker
+* Ilmari Karonen
+* Inez Korczyński
+* IoannisKydonis
 * Ireas
+* isarra
+* Ivan Lanin
+* Jack D. Pond
+* Jack Phoenix
+* Jackmcbarn
 * Jacob Block
+* Jacob Clark
+* jagori
+* Jakub Vrana
+* James Earl Douglas
+* James Forrester
+* Jan Berkel
+* Jan Drewniak
 * Jan Gerber
 * Jan Luca Naumann
+* Jan Paul Posma
+* Jan Zerebecki
+* Jared Flores
+* Jaroslav Škarvada
+* jarrettmunton
+* jarry1250
 * Jaska Zedlik
+* Jason Richey
+* jeblad
+* Jeff Janes
+* jeff303
+* Jens Frank
+* Jens Ohlig
+* Jérémie Roquet
 * Jeremy Baron
+* Jeremy Postlethwaite
+* jeremyb
+* Jeroen De Dauw
+* Jerome Jamnicky
+* Jesús Martínez Novo
+* jhobs
+* Jiabao
 * Jidanni
+* Jimmy Collins
 * Jimmy Xu
+* joakin
+* Joan Creus
+* Joel Natividad
+* Joerg
+* Johan Dahlin
+* John Du Hart
 * John N
+* Jon Harald Søby
+* Jon Robson
 * Jonathan Wiltshire
+* Jools Wills
+* jsahleen
+* Julian Ostrow
+* Juliano F. Ravasi
+* Juliusz Gonera
+* JuneHyeon Bae
 * Jure Kajzer
+* Justin Du
+* Kai_WMDE
+* kaligula
+* Kartik Mistry
 * Karun Dambiec
 * Katie Filbert
 * Kevin Israel
+* Kghbln
+* Kim Eik
 * Kim Hyun-Joon
+* kipod
+* kishanio
+* konarak
+* krishna keshav
+* Krzysztof Krzyzaniak
+* Krzysztof Zbudniewek
+* Kunal Grover
+* Kunal Mehta
+* Kwan Ting Chan
+* Laurence Parry
+* Lee Bousfield
+* Lee Daniel Crocker
 * Lee Worden
 * Lejonel
+* lekshmi
+* Leo Koppelkamm
 * Leon Liesener
+* Leon Weber
+* Leonardo Gregianin
+* Leons Petrazickis
+* Leslie Hoare
+* Leszek Manicki
+* lethosor
+* Lewis Cawte
+* Liam Edwards-Playne
 * liangent
+* Lisa Ridley
+* Ljudusika
+* Lojjik Braughler
 * Louperivois
+* Ltrlg
+* Luc Van Oostenryck
 * Lucas Garczewski
 * Luigi Corsaro
+* Luis Felipe Schenone
 * Luke Faraone
+* Lupin
 * Lupo
+* lwelling
+* m4tx
 * Madman
+* madurangasiriwardena
+* Magnus Manske
 * Manuel Menal
+* Manuel Schneider
+* Marc Ordinas i Llopis
 * Marc-André Pelletier
 * Marcin Cieślak
+* Marco Falke
+* Marco Schuster
+* MarcoAurelio
 * Marcus Buck
+* Marius Hoch
+* Mark Bergsma
+* Mark Clements
 * Mark Hershberger
 * Mark Holmquist
+* Marko Obrovac
+* Markus Glaser
+* Markus Krötzsch
 * Marooned
+* Martin Urbanec
+* Massaf
+* Matěj Grabovský
+* matejsuchanek
 * Mathias Ertl
 * mati
+* Matt Fitzpatrick
+* Matt Johnston
+* Matt Russell
+* Matthew Bowker
 * Matthew Britton
+* Matthew Flaschen
+* Matthias Jordan
 * Matthias Mullie
+* MatthiasDD
 * Max
+* Max Semenik
 * Max Sikström
+* mayankmadan
+* Meno25
 * merl
+* Merlijn S. van Deen
+* MGChecker
+* mgooley
+* mhutti1
 * Michael Dale
 * Michael De La Rue
+* Michael Holloway
 * Michael M.
 * Michael Newton
 * Michael Walsh
+* Michał Łazowik
+* Michał Roszka
+* Michał Zieliński
 * Mike Horvath
+* Minh Nguyễn
+* MinuteElectron
+* Misza13
+* mjbmr
 * moejoe0000
+* Mohamed Magdy
+* Molly White
+* Moriel Schottlender
 * Mormegil
+* Mr. E23
 * MrBlueSky
 * MrPete
+* Mukunda Modell
+* Mwalker
+* mwjames
 * mybugs.mail
 * MZMcBride
+* nadeesha
 * Nakon
+* Namit
 * Nathan Larson
+* Nathaniel Herman
+* Neil Kandalgaonkar
+* Nemo bis
 * nephele
+* Nicholas Pisarro, Jr
+* Nick Jenkins
+* nicoco007
+* Nicolas Dumazet
+* Nicolas Weeger
 * Nik
+* Nik Everett
+* Niklas Laxström
 * Nikola Kovacs
+* Nikola Smolenski
 * Nikolaos S. Karastathis
+* Nimish Gautam
 * Nischay Nahata
+* nischayn22
+* nomoa
+* nullspoon
+* Nuria Ruiz
 * Nx.devnull
+* Ocean behind ears
 * Olaf Lenz
 * Olivier Finlay Beaton
+* onei
+* opatel99
+* Oren Held
+* Ori Livneh
+* oskar.jauch@gmail.com
+* OverlordQ
+* Owen Davis
+* Paa Kwesi Imbeah
+* paladox
 * Patricio Molina
+* Patrick Reilly
+* Patrick Westerhoff
+* Pau Giner
 * Paul Copperman
 * Paul Oranje
+* Pavel Astakhov
+* Pavel Selitskas
+* Pcoombe
+* Perside Rosalie
 * Peter Gehres
+* Peter Hedenskog
+* Peter Potrowl
+* Petr Bena
+* Petr Kadlec
 * Petr Onderka
+* Petr Pchelko
+* Philip Tzou
+* physikerwelt (Moritz Schubotz)
 * PieRRoMaN
+* Pikne
+* PiRSquared17
+* Platonides
+* Pmlineditor
+* pmolina
+* prageck
+* Pranav Ravichandran
+* PranavK
+* Prateek Saxena
+* Priyanka Dhanda
+* Prod
+* ptarjan
+* pubudu538
+* Purodha Blissenbach
+* quiddity
 * quietust
+* Quim Gil
+* rahul21
+* Raimond Spekking
+* Ramunas Geciauskas
+* Remember the dot
 * René Kijewski
+* Reza
 * rgcjonas
+* Ricordisamoa
+* rillke
+* River Tarnell
+* Roan Kattouw
+* Rob Church
+* Rob Lanphier
 * Rob Moen
+* Robert Hoenig
+* Robert Leverington
+* Robert Rohde
+* Robert Stojnić
 * Robert Treat
+* Robert Vogel
+* Robin Pepermans
+* robinhood701
 * RockMFR
+* Rohan
+* Roman Nosov
+* Roman Tsukanov
+* Rotem Liss
+* Rowan Collins
+* Russ Nelson
 * Russell Blau
 * Rusty Burchfield
+* Ruud Koot
+* Ryan Bies
+* Ryan Finnie
+* Ryan Kaldari
+* Ryan Lane
+* Ryan Schmidt
 * S Page
 * Salvatore Ingala
+* Sam Reed
+* Sam Smith
 * Santhosh Thottingal
+* Schnark
+* Scimonster
+* scnd
 * Scott Colcord
 * se4598
+* Sean Colombo
+* Sean Pringle
+* Seb35
+* Sebastian Brückner
 * Sébastien Santoro
+* Sergio Santoro
+* Sethakill
+* Shahyar
+* Shane Gibbons
+* Shane King
+* Shinjiman
+* shirayuki
+* Sidhant Gupta
+* Siebrand Mazeland
 * Simon Walker
+* Smriti Singh
 * Solitarius
+* Sorawee Porncharoenwase
 * Søren Løvborg
 * Southparkfan
+* Soxred93
+* SQL
 * Srikanth Lakshmanan
+* Stanislav Malyshev
 * Stefano Codari
+* Steinsplitter
+* Stephan Gambke
+* Stephan Muggli
+* Stephane Bisson
+* Stephen Liang
+* Steve Sanbeg
+* Steven Roddis
 * Str4nd
 * Subramanya Sastry
+* Sumit Asthana
 * svip
+* Swalling
+* Szymon Świerkosz
+* T.D. Corell
+* Tarquin
+* The Discoverer
 * The Evil IP address
+* theopolisme
+* Thiemo Mättig (WMDE)
+* This, that and the other
+* tholam
+* Thomas Arrow
+* Thomas Bleher
+* Thomas Dalton
+* Thomas Gries
+* ThomasV
+* Tim Hollmann
 * Tim Landscheidt
+* Tim Laqua
+* Tim Starling
+* Timo Tijhof
+* Tina Johnson
 * Tisane
+* tjlsangria
+* Tjones
+* TK-999
+* Tobias Gritschacher
+* Tom Arrow
+* Tom Gilder
+* Tom Maaswinkel
+* Tomasz Finc
+* Tomasz W. Kozlowski
+* Tomasz Wegrzanowski
+* tomek
+* Tony Thomas
+* Tpt
+* Trevor Parscal
+* TyA
+* Tychay
+* Tyler Anthony Romeo
+* Tyler Cipriani
+* Tyler Romeo
+* U-REDMOND\emadelw
+* UltrasonicNXT
 * Umherirrender
+* utkarsh95
 * Van de Bugger
+* Viačeslav
+* Victor Porton
+* Victor Vasiliev
+* victorbarbu
 * Ville Stadista
+* vishnu
 * Vitaliy Filippov
 * Vivek Ghaisas
+* vlakoff
+* Volker E
 * Waldir Pimenta
+* wctaiwan
+* Wikinaut
+* Wil Mahan
 * William Demchick
+* withoutaname
+* WMDE-Fisch
+* X!
+* XP1
+* Yaron Koren
+* Yaroslav Melnychuk
+* Yesid Carrillo
+* Yogesh K S
+* Yongmin Hong
+* yoonghm
+* Yuri Astrakhan
 * Yusuke Matsubara
 * Yuvi Panda
 * Zachary Hauri
+* Zak Greant
+* Željko Filipin
+* Zhaofeng Li
+* Zhengzhu Feng
+* Zppix
+* محمد شعیب
+<!-- END CONTRIBUTOR LIST -->
 
 == Translators ==
 
index e04bb17..557162e 100644 (file)
@@ -5,6 +5,20 @@ THIS IS NOT A RELEASE YET
 MediaWiki 1.28 is an alpha-quality branch and is not recommended for use in
 production.
 
+=== Changes since 1.28.0rc0 ===
+* (T142210) The changes to move the parser "NewPP limit report" from a HTML
+  comment to a machine-readable JavaScript config option 'wgPageParseReport'
+  have been undone. They caused the human-readable limit report to be shown
+  incompletely or not at all. ParserOutput::setLimitReportData() and
+  getLimitReportData() behave as they did in MediaWiki 1.27 again.
+* (T149510) Value of {{DISPLAYTITLE:}} parser function will not be used for
+  the text of subheadings on a category page when creating it. This wasn't
+  working correctly.
+* (T106793) MediaWiki will no longer try to perform a HTTP redirect to the
+  canonical pretty URL when a non-pretty URL is used. It resulted in redirect
+  loops in some clients and in some server configurations. This undoes a change
+  made in MediaWiki 1.26.
+
 === Configuration changes in 1.28 ===
 * $wgSend404Code now affects status code of action=history if the page is not there.
 * BREAKING CHANGE: $wgHTTPProxy is now *required* for all external requests
@@ -40,6 +54,8 @@ production.
   away from. If you depend upon magic link functionality, it is requested that you comment
   on <https://www.mediawiki.org/wiki/Requests_for_comment/Future_of_magic_links> and
   explain your use case(s).
+* New config variable $wgCSPFalsePositiveUrls to control what URLs to ignore
+  in upcoming Content-Security-Policy feature's reporting.
 
 === New features in 1.28 ===
 * User::isBot() method for checking if an account is a bot role account.
@@ -209,7 +225,6 @@ changes to languages because of Phabricator reports.
   * Skin::linkKnown() (use MediaWiki\Linker\LinkRenderer instead)
   * Skin::userLink() (use Linker::userLink() instead)
   * Skin::userToolLinks() (use Linker::userToolLinks() instead)
-* The 'ParserLimitReportFormat' hook was removed.
 * Disabled "bug 2702" HTML tidying of parsed UI messages on wikis where Tidy is
   disabled.
 * DifferenceEngine::generateDiffBody() was removed (deprecated since 1.21).
index 5a38cf9..fa1e1c4 100644 (file)
@@ -34,6 +34,8 @@ regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Phabricator reports.
 
 === Other changes in 1.29 ===
+* Database::getSearchEngine() (deprecated in 1.28) was removed. Use
+  SearchEngineFactory::getSearchEngineClass() instead.
 
 == Compatibility ==
 
index bbf4bd0..30ef985 100644 (file)
@@ -1010,6 +1010,7 @@ $wgAutoloadLocalClasses = [
        'OrphanStats' => __DIR__ . '/maintenance/storage/orphanStats.php',
        'Orphans' => __DIR__ . '/maintenance/orphans.php',
        'OutputPage' => __DIR__ . '/includes/OutputPage.php',
+       'PHPVersionCheck' => __DIR__ . '/includes/PHPVersionCheck.php',
        'PNGHandler' => __DIR__ . '/includes/media/PNG.php',
        'PNGMetadataExtractor' => __DIR__ . '/includes/media/PNGMetadataExtractor.php',
        'PPCustomFrame_DOM' => __DIR__ . '/includes/parser/Preprocessor_DOM.php',
index fdbd0cd..e1d9f47 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.17.10",
+               "oojs/oojs-ui": "0.18.0",
                "oyejorge/less.php": "1.7.0.10",
                "php": ">=5.5.9",
                "psr/log": "1.0.0",
index ea662cc..5b707c1 100644 (file)
@@ -1200,7 +1200,6 @@ wrapped in a span element which has class="patrollink".
 $differenceEngine: DifferenceEngine object
 &$markAsPatrolledLink: The "mark as patrolled" link HTML (string)
 $rcid: Recent change ID (rc_id) for this change (int)
-$token: Patrol token; $rcid is used in generating this variable
 
 'DifferenceEngineMarkPatrolledRCID': Allows extensions to possibly change the rcid parameter.
 For example the rcid might be set to zero due to the user being the same as the
@@ -1926,8 +1925,8 @@ $code: language of the preferred translations
 in various places to allow extensions to define the effective language
 links for a page.
 $title: The page's Title.
-&$links: Associative array mapping language codes to prefixed links of the
-  form "language:title".
+&$links: Array with elements of the form "language:title" in the order
+  that they will be output.
 &$linkFlags: Associative array mapping prefixed links to arrays of flags.
   Currently unused, but planned to provide support for marking individual
   language links in the UI, e.g. for featured articles.
@@ -2487,12 +2486,24 @@ cache or return false to not use it.
 &$parser: Parser object
 &$varCache: variable cache (array)
 
-'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare instead.
+'ParserLimitReport': DEPRECATED! Use ParserLimitReportPrepare and
+ParserLimitReportFormat instead.
 Called at the end of Parser:parse() when the parser will
 include comments about size of the text parsed.
 $parser: Parser object
 &$limitReport: text that will be included (without comment tags)
 
+'ParserLimitReportFormat': Called for each row in the parser limit report that
+needs formatting. If nothing handles this hook, the default is to use "$key" to
+get the label, and "$key-value" or "$key-value-text"/"$key-value-html" to
+format the value.
+$key: Key for the limit report item (string)
+&$value: Value of the limit report item
+&$report: String onto which to append the data
+$isHTML: If true, $report is an HTML table with two columns; if false, it's
+  text intended for display in a monospaced font.
+$localize: If false, $report should be output in English.
+
 'ParserLimitReportPrepare': Called at the end of Parser:parse() when the parser
 will include comments about size of the text parsed. Hooks should use
 $output->setLimitReportData() to populate data. Functions for this hook should
@@ -2521,10 +2532,6 @@ $showEditLinks: boolean describing whether this section has an edit link
 &$globals: Array with all the globals which should be set for parser tests.
   The arrays keys serve as the globals names, its values are the globals values.
 
-'ParserTestParser': Called when creating a new instance of Parser in
-tests/parser/parserTest.inc.
-&$parser: Parser object created
-
 'ParserTestTables': Alter the list of tables to duplicate when parser tests are
 run. Use when page save hooks require the presence of custom tables to ensure
 that tests continue to run properly.
@@ -3361,7 +3368,7 @@ PageArchive object has been created but before any further processing is done.
 &$archive: PageArchive object
 $title: Title object of the page that we're viewing
 
-'UndeleteForm::undelete': Called un UndeleteForm::undelete, after checking that
+'UndeleteForm::undelete': Called in UndeleteForm::undelete, after checking that
 the site is not in read-only mode, that the Title object is not null and after
 a PageArchive object has been constructed but before performing any further
 processing.
index 9142238..d444a27 100644 (file)
@@ -90,7 +90,6 @@ class AjaxDispatcher {
                                # Or we could throw an exception:
                                # throw new MWException( __METHOD__ . ' called without any data (mode empty).' );
                }
-
        }
 
        /**
@@ -156,6 +155,5 @@ class AjaxDispatcher {
                                }
                        }
                }
-
        }
 }
index 4fe46dd..0686578 100644 (file)
@@ -161,7 +161,7 @@ class AjaxResponse {
                        // For back-compat, it is supported that mResponseCode be a string like " 200 OK"
                        // (with leading space and the status message after). Cast response code to an integer
                        // to take advantage of PHP's conversion rules which will turn "  200 OK" into 200.
-                       // http://php.net/string#language.types.string.conversion
+                       // https://secure.php.net/manual/en/language.types.string.php#language.types.string.conversion
                        $n = intval( trim( $this->mResponseCode ) );
                        HttpStatus::header( $n );
                }
index c858dd7..b95f274 100644 (file)
@@ -422,26 +422,11 @@ class CategoryViewer extends ContextSource {
                return $r;
        }
 
-       /**
-        * Return pretty name which is display name if given and different from prefix text or
-        * the unprefixed page name.
-        *
-        * @return string HTML safe name.
-        */
-       function getPrettyPageNameHtml() {
-               $displayTitle = $this->getOutput()->getPageTitle();
-               if ( $displayTitle === $this->getTitle()->getPrefixedText() ) {
-                       return htmlspecialchars( $this->getTitle()->getText() );
-               } else {
-                       return $displayTitle;
-               }
-       }
-
        /**
         * @return string
         */
        function getPagesSection() {
-               $name = $this->getPrettyPageNameHtml();
+               $ti = wfEscapeWikiText( $this->title->getText() );
                # Don't show articles section if there are none.
                $r = '';
 
@@ -457,7 +442,7 @@ class CategoryViewer extends ContextSource {
 
                if ( $rescnt > 0 ) {
                        $r = "<div id=\"mw-pages\">\n";
-                       $r .= '<h2>' . $this->msg( 'category_header' )->rawParams( $name )->parse() . "</h2>\n";
+                       $r .= '<h2>' . $this->msg( 'category_header', $ti )->parse() . "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'page' );
                        $r .= $this->formatList( $this->articles, $this->articles_start_char );
@@ -471,7 +456,6 @@ class CategoryViewer extends ContextSource {
         * @return string
         */
        function getImageSection() {
-               $name = $this->getPrettyPageNameHtml();
                $r = '';
                $rescnt = $this->showGallery ? $this->gallery->count() : count( $this->imgsNoGallery );
                $dbcnt = $this->cat->getFileCount();
@@ -481,7 +465,10 @@ class CategoryViewer extends ContextSource {
                if ( $rescnt > 0 ) {
                        $r .= "<div id=\"mw-category-media\">\n";
                        $r .= '<h2>' .
-                               $this->msg( 'category-media-header' )->rawParams( $name )->parse() .
+                               $this->msg(
+                                       'category-media-header',
+                                       wfEscapeWikiText( $this->title->getText() )
+                               )->text() .
                                "</h2>\n";
                        $r .= $countmsg;
                        $r .= $this->getSectionPagingLinks( 'file' );
index 68e4f5d..9d8ccf8 100644 (file)
@@ -311,7 +311,7 @@ $wgAppleTouchIcon = false;
  * Value for the referrer policy meta tag.
  * One of 'never', 'default', 'origin', 'always'. Setting it to false just
  * prevents the meta tag from being output.
- * See http://www.w3.org/TR/referrer-policy/ for details.
+ * See https://www.w3.org/TR/referrer-policy/ for details.
  *
  * @since 1.25
  */
@@ -658,7 +658,7 @@ $wgLockManagers = [];
 
 /**
  * Show Exif data, on by default if available.
- * Requires PHP's Exif extension: http://www.php.net/manual/en/ref.exif.php
+ * Requires PHP's Exif extension: https://secure.php.net/manual/en/ref.exif.php
  *
  * @note FOR WINDOWS USERS:
  * To enable Exif functions, add the following line to the "Windows
@@ -1511,7 +1511,7 @@ $wgDjvuTxt = null;
  * For now we recommend you use djvudump instead. The djvuxml output is
  * probably more stable, so we'll switch back to it as soon as they fix
  * the efficiency problem.
- * http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
+ * https://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
  *
  * @par Example:
  * @code
@@ -1973,7 +1973,7 @@ $wgDBerrorLog = false;
  * Defaults to the wiki timezone ($wgLocaltimezone).
  *
  * A list of usable timezones can found at:
- * http://php.net/manual/en/timezones.php
+ * https://secure.php.net/manual/en/timezones.php
  *
  * @par Examples:
  * @code
@@ -3110,7 +3110,7 @@ $wgForceUIMsgAsContentMsg = [];
  * timezone-nameinlowercase like timezone-utc.
  *
  * A list of usable timezones can found at:
- * http://php.net/manual/en/timezones.php
+ * https://secure.php.net/manual/en/timezones.php
  *
  * @par Examples:
  * @code
@@ -3178,7 +3178,7 @@ $wgHtml5 = true;
  *
  * If your wiki uses RDFa, set it to the correct value for RDFa+HTML5.
  * Correct current values are 'HTML+RDFa 1.0' or 'XHTML+RDFa 1.0'.
- * See also http://www.w3.org/TR/rdfa-in-html/#document-conformance
+ * See also https://www.w3.org/TR/rdfa-in-html/#document-conformance
  * @since 1.16
  */
 $wgHtml5Version = null;
@@ -4216,7 +4216,7 @@ $wgAllowImageTag = false;
 /**
  * Configuration for HTML postprocessing tool. Set this to a configuration
  * array to enable an external tool. Dave Raggett's "HTML Tidy" is typically
- * used. See http://www.w3.org/People/Raggett/tidy/
+ * used. See https://www.w3.org/People/Raggett/tidy/
  *
  * If this is null and $wgUseTidy is true, the deprecated configuration
  * parameters will be used instead.
@@ -6375,9 +6375,9 @@ $wgDisableInternalSearch = false;
  * To forward to Google you'd have something like:
  * @code
  * $wgSearchForwardUrl =
- *     'http://www.google.com/search?q=$1' .
- *     '&domains=http://example.com' .
- *     '&sitesearch=http://example.com' .
+ *     'https://www.google.com/search?q=$1' .
+ *     '&domains=https://example.com' .
+ *     '&sitesearch=https://example.com' .
  *     '&ie=utf-8&oe=utf-8';
  * @endcode
  */
@@ -6710,9 +6710,9 @@ $wgFeedDiffCutoff = 32768;
  * Should be a format as key (either 'rss' or 'atom') and an URL to the feed
  * as value.
  * @par Example:
- * Configure the 'atom' feed to http://example.com/somefeed.xml
+ * Configure the 'atom' feed to https://example.com/somefeed.xml
  * @code
- * $wgSiteFeed['atom'] = "http://example.com/somefeed.xml";
+ * $wgSiteFeed['atom'] = "https://example.com/somefeed.xml";
  * @endcode
  */
 $wgOverrideSiteFeed = [];
@@ -7121,7 +7121,7 @@ $wgAutoloadAttemptLowercase = true;
  *         'Foo Barstein',
  *     ],
  *     'version' => '1.9.0',
- *     'url' => 'http://example.org/example-extension/',
+ *     'url' => 'https://example.org/example-extension/',
  *     'descriptionmsg' => 'exampleextension-desc',
  *     'license-name' => 'GPL-2.0+',
  * ];
@@ -7148,7 +7148,7 @@ $wgAutoloadAttemptLowercase = true;
  * - author: A string or an array of strings. Authors can be linked using
  *    the regular wikitext link syntax. To have an internationalized version of
  *    "and others" show, add an element "...". This element can also be linked,
- *    for instance "[http://example ...]".
+ *    for instance "[https://example ...]".
  *
  * - descriptionmsg: A message key or an an array with message key and parameters:
  *    `'descriptionmsg' => 'exampleextension-desc',`
@@ -7366,7 +7366,7 @@ $wgCategoryPagingLimit = 200;
  *     all languages in a mediocre way. However, it is better than "uppercase".
  *
  * To use the uca-default collation, you must have PHP's intl extension
- * installed. See http://php.net/manual/en/intl.setup.php . The details of the
+ * installed. See https://secure.php.net/manual/en/intl.setup.php . The details of the
  * resulting collation will depend on the version of ICU installed on the
  * server.
  *
@@ -8035,7 +8035,7 @@ $wgShellCgroup = false;
 $wgPhpCli = '/usr/bin/php';
 
 /**
- * Locale for LC_CTYPE, to work around http://bugs.php.net/bug.php?id=45132
+ * 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.
  */
index 0f27e78..ca14864 100644 (file)
@@ -1044,7 +1044,6 @@ class EditPage {
 
                // Allow extensions to modify form data
                Hooks::run( 'EditPage::importFormData', [ $this, $request ] );
-
        }
 
        /**
@@ -2237,7 +2236,6 @@ class EditPage {
         * @return bool
         */
        private function mergeChangesIntoContent( &$editContent ) {
-
                $db = wfGetDB( DB_MASTER );
 
                // This is the revision the editor started from
@@ -2600,10 +2598,21 @@ class EditPage {
 
                $this->setHeaders();
 
-               if ( $this->showHeader() === false ) {
+               $this->addTalkPageText();
+               $this->addEditNotices();
+
+               if ( !$this->isConflict &&
+                       $this->section != '' &&
+                       !$this->isSectionEditSupported() ) {
+                       // We use $this->section to much before this and getVal('wgSection') directly in other places
+                       // at this point we can't reset $this->section to '' to fallback to non-section editing.
+                       // Someone is welcome to try refactoring though
+                       $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
                        return;
                }
 
+               $this->showHeader();
+
                $wgOut->addHTML( $this->editFormPageTop );
 
                if ( $wgUser->getOption( 'previewontop' ) ) {
@@ -2813,7 +2822,6 @@ class EditPage {
                if ( !$wgUser->getOption( 'previewontop' ) ) {
                        $this->displayPreviewArea( $previewOutput, false );
                }
-
        }
 
        /**
@@ -2839,7 +2847,6 @@ class EditPage {
                return Html::rawElement( 'div', [ 'class' => 'templatesUsed' ],
                        $templateListFormatter->format( $templates, $type )
                );
-
        }
 
        /**
@@ -2858,29 +2865,14 @@ class EditPage {
                }
        }
 
-       /**
-        * @return bool
-        */
        protected function showHeader() {
-               global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
+               global $wgOut, $wgUser;
                global $wgAllowUserCss, $wgAllowUserJs;
 
-               $this->addTalkPageText();
-
-               $this->addEditNotices();
-
                if ( $this->isConflict ) {
-                       $wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
+                       $this->addExplainConflictHeader( $wgOut );
                        $this->editRevId = $this->page->getLatest();
                } else {
-                       if ( $this->section != '' && !$this->isSectionEditSupported() ) {
-                               // We use $this->section to much before this and getVal('wgSection') directly in other places
-                               // at this point we can't reset $this->section to '' to fallback to non-section editing.
-                               // Someone is welcome to try refactoring though
-                               $wgOut->showErrorPage( 'sectioneditnotsupported-title', 'sectioneditnotsupported-text' );
-                               return false;
-                       }
-
                        if ( $this->section != '' && $this->section != 'new' ) {
                                if ( !$this->summary && !$this->preview && !$this->diff ) {
                                        $sectionTitle = self::extractSectionTitle( $this->textbox1 ); // FIXME: use Content object
@@ -3006,69 +2998,12 @@ class EditPage {
                        }
                }
 
-               if ( $this->mTitle->isProtected( 'edit' ) &&
-                       MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== [ '' ]
-               ) {
-                       # Is the title semi-protected?
-                       if ( $this->mTitle->isSemiProtected() ) {
-                               $noticeMsg = 'semiprotectedpagewarning';
-                       } else {
-                               # Then it must be protected based on static groups (regular)
-                               $noticeMsg = 'protectedpagewarning';
-                       }
-                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
-                               [ 'lim' => 1, 'msgKey' => [ $noticeMsg ] ] );
-               }
-               if ( $this->mTitle->isCascadeProtected() ) {
-                       # Is this page under cascading protection from some source pages?
-                       /** @var Title[] $cascadeSources */
-                       list( $cascadeSources, /* $restrictions */ ) = $this->mTitle->getCascadeProtectionSources();
-                       $notice = "<div class='mw-cascadeprotectedwarning'>\n$1\n";
-                       $cascadeSourcesCount = count( $cascadeSources );
-                       if ( $cascadeSourcesCount > 0 ) {
-                               # Explain, and list the titles responsible
-                               foreach ( $cascadeSources as $page ) {
-                                       $notice .= '* [[:' . $page->getPrefixedText() . "]]\n";
-                               }
-                       }
-                       $notice .= '</div>';
-                       $wgOut->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] );
-               }
-               if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) {
-                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
-                               [ 'lim' => 1,
-                                       'showIfEmpty' => false,
-                                       'msgKey' => [ 'titleprotectedwarning' ],
-                                       'wrap' => "<div class=\"mw-titleprotectedwarning\">\n$1</div>" ] );
-               }
+               $this->addPageProtectionWarningHeaders();
 
-               if ( $this->contentLength === false ) {
-                       $this->contentLength = strlen( $this->textbox1 );
-               }
+               $this->addLongPageWarningHeader();
 
-               if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) {
-                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
-                               [
-                                       'longpageerror',
-                                       $wgLang->formatNum( round( $this->contentLength / 1024, 3 ) ),
-                                       $wgLang->formatNum( $wgMaxArticleSize )
-                               ]
-                       );
-               } else {
-                       if ( !$this->context->msg( 'longpage-hint' )->isDisabled() ) {
-                               $wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
-                                       [
-                                               'longpage-hint',
-                                               $wgLang->formatSize( strlen( $this->textbox1 ) ),
-                                               strlen( $this->textbox1 )
-                                       ]
-                               );
-                       }
-               }
                # Add header copyright warning
                $this->showHeaderCopyrightWarning();
-
-               return true;
        }
 
        /**
@@ -3283,44 +3218,9 @@ HTML
                global $wgOut, $wgUser;
 
                $wikitext = $this->safeUnicodeOutput( $text );
-               if ( strval( $wikitext ) !== '' ) {
-                       // Ensure there's a newline at the end, otherwise adding lines
-                       // is awkward.
-                       // But don't add a newline if the ext is empty, or Firefox in XHTML
-                       // mode will show an extra newline. A bit annoying.
-                       $wikitext .= "\n";
-               }
+               $wikitext = $this->addNewLineAtEnd( $wikitext );
 
-               $attribs = $customAttribs + [
-                       'accesskey' => ',',
-                       'id' => $name,
-                       'cols' => $wgUser->getIntOption( 'cols' ),
-                       'rows' => $wgUser->getIntOption( 'rows' ),
-                       // Avoid PHP notices when appending preferences
-                       // (appending allows customAttribs['style'] to still work).
-                       'style' => ''
-               ];
-
-               // The following classes can be used here:
-               // * mw-editfont-default
-               // * mw-editfont-monospace
-               // * mw-editfont-sans-serif
-               // * mw-editfont-serif
-               $class = 'mw-editfont-' . $wgUser->getOption( 'editfont' );
-
-               if ( isset( $attribs['class'] ) ) {
-                       if ( is_string( $attribs['class'] ) ) {
-                               $attribs['class'] .= ' ' . $class;
-                       } elseif ( is_array( $attribs['class'] ) ) {
-                               $attribs['class'][] = $class;
-                       }
-               } else {
-                       $attribs['class'] = $class;
-               }
-
-               $pageLang = $this->mTitle->getPageLanguage();
-               $attribs['lang'] = $pageLang->getHtmlCode();
-               $attribs['dir'] = $pageLang->getDir();
+               $attribs = $this->buildTextboxAttribs( $name, $customAttribs, $wgUser );
 
                $wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) );
        }
@@ -3554,22 +3454,16 @@ HTML
                ] ) .
                        Html::openElement( 'tbody' );
 
-               foreach ( $output->getLimitReportData()['limitreport'] as $key => $value ) {
+               foreach ( $output->getLimitReportData() as $key => $value ) {
                        if ( Hooks::run( 'ParserLimitReportFormat',
                                [ $key, &$value, &$limitReport, true, true ]
                        ) ) {
-                               $keyMsg = wfMessage( "limitreport-$key" );
-                               $valueMsg = wfMessage(
-                                       [ "limitreport-$key-value-html", "limitreport-$key-value" ]
-                               );
+                               $keyMsg = wfMessage( $key );
+                               $valueMsg = wfMessage( [ "$key-value-html", "$key-value" ] );
                                if ( !$valueMsg->exists() ) {
                                        $valueMsg = new RawMessage( '$1' );
                                }
                                if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
-                                       // If it's a value/limit array, convert it for $1/$2
-                                       if ( is_array( $value ) && isset( $value['value'] ) ) {
-                                               $value = [ $value['value'], $value['limit'] ];
-                                       }
                                        $limitReport .= Html::openElement( 'tr' ) .
                                                Html::rawElement( 'th', null, $keyMsg->parse() ) .
                                                Html::rawElement( 'td', null, $valueMsg->params( $value )->parse() ) .
@@ -4401,6 +4295,9 @@ HTML
                return strtr( $result, [ "&#x0" => "&#x" ] );
        }
 
+       /**
+        * @since 1.29
+        */
        protected function addEditNotices() {
                global $wgOut;
 
@@ -4419,6 +4316,9 @@ HTML
                }
        }
 
+       /**
+        * @since 1.29
+        */
        protected function addTalkPageText() {
                global $wgOut;
 
@@ -4426,4 +4326,145 @@ HTML
                        $wgOut->addWikiMsg( 'talkpagetext' );
                }
        }
+
+       /**
+        * @since 1.29
+        */
+       protected function addLongPageWarningHeader() {
+               global $wgMaxArticleSize, $wgOut, $wgLang;
+
+               if ( $this->contentLength === false ) {
+                       $this->contentLength = strlen( $this->textbox1 );
+               }
+
+               if ( $this->tooBig || $this->contentLength > $wgMaxArticleSize * 1024 ) {
+                       $wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
+                               [
+                                       'longpageerror',
+                                       $wgLang->formatNum( round( $this->contentLength / 1024, 3 ) ),
+                                       $wgLang->formatNum( $wgMaxArticleSize )
+                               ]
+                       );
+               } else {
+                       if ( !$this->context->msg( 'longpage-hint' )->isDisabled() ) {
+                               $wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
+                                       [
+                                               'longpage-hint',
+                                               $wgLang->formatSize( strlen( $this->textbox1 ) ),
+                                               strlen( $this->textbox1 )
+                                       ]
+                               );
+                       }
+               }
+       }
+
+       /**
+        * @since 1.29
+        */
+       protected function addPageProtectionWarningHeaders() {
+               global $wgOut;
+
+               if ( $this->mTitle->isProtected( 'edit' ) &&
+                       MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== [ '' ]
+               ) {
+                       # Is the title semi-protected?
+                       if ( $this->mTitle->isSemiProtected() ) {
+                               $noticeMsg = 'semiprotectedpagewarning';
+                       } else {
+                               # Then it must be protected based on static groups (regular)
+                               $noticeMsg = 'protectedpagewarning';
+                       }
+                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
+                               [ 'lim' => 1, 'msgKey' => [ $noticeMsg ] ] );
+               }
+               if ( $this->mTitle->isCascadeProtected() ) {
+                       # Is this page under cascading protection from some source pages?
+                       /** @var Title[] $cascadeSources */
+                       list( $cascadeSources, /* $restrictions */ ) = $this->mTitle->getCascadeProtectionSources();
+                       $notice = "<div class='mw-cascadeprotectedwarning'>\n$1\n";
+                       $cascadeSourcesCount = count( $cascadeSources );
+                       if ( $cascadeSourcesCount > 0 ) {
+                               # Explain, and list the titles responsible
+                               foreach ( $cascadeSources as $page ) {
+                                       $notice .= '* [[:' . $page->getPrefixedText() . "]]\n";
+                               }
+                       }
+                       $notice .= '</div>';
+                       $wgOut->wrapWikiMsg( $notice, [ 'cascadeprotectedwarning', $cascadeSourcesCount ] );
+               }
+               if ( !$this->mTitle->exists() && $this->mTitle->getRestrictions( 'create' ) ) {
+                       LogEventsList::showLogExtract( $wgOut, 'protect', $this->mTitle, '',
+                               [ 'lim' => 1,
+                                       'showIfEmpty' => false,
+                                       'msgKey' => [ 'titleprotectedwarning' ],
+                                       'wrap' => "<div class=\"mw-titleprotectedwarning\">\n$1</div>" ] );
+               }
+       }
+
+       /**
+        * @param OutputPage $out
+        * @since 1.29
+        */
+       protected function addExplainConflictHeader( OutputPage $out ) {
+               $out->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
+       }
+
+       /**
+        * @param string $name
+        * @param mixed[] $customAttribs
+        * @param User $user
+        * @return mixed[]
+        * @since 1.29
+        */
+       protected function buildTextboxAttribs( $name, array $customAttribs, User $user ) {
+               $attribs = $customAttribs + [
+                               'accesskey' => ',',
+                               'id' => $name,
+                               'cols' => $user->getIntOption( 'cols' ),
+                               'rows' => $user->getIntOption( 'rows' ),
+                               // Avoid PHP notices when appending preferences
+                               // (appending allows customAttribs['style'] to still work).
+                               'style' => ''
+                       ];
+
+               // The following classes can be used here:
+               // * mw-editfont-default
+               // * mw-editfont-monospace
+               // * mw-editfont-sans-serif
+               // * mw-editfont-serif
+               $class = 'mw-editfont-' . $user->getOption( 'editfont' );
+
+               if ( isset( $attribs['class'] ) ) {
+                       if ( is_string( $attribs['class'] ) ) {
+                               $attribs['class'] .= ' ' . $class;
+                       } elseif ( is_array( $attribs['class'] ) ) {
+                               $attribs['class'][] = $class;
+                       }
+               } else {
+                       $attribs['class'] = $class;
+               }
+
+               $pageLang = $this->mTitle->getPageLanguage();
+               $attribs['lang'] = $pageLang->getHtmlCode();
+               $attribs['dir'] = $pageLang->getDir();
+
+               return $attribs;
+       }
+
+       /**
+        * @param string $wikitext
+        * @return string
+        * @since 1.29
+        */
+       protected function addNewLineAtEnd( $wikitext ) {
+               if ( strval( $wikitext ) !== '' ) {
+                       // Ensure there's a newline at the end, otherwise adding lines
+                       // is awkward.
+                       // But don't add a newline if the text is empty, or Firefox in XHTML
+                       // mode will show an extra newline. A bit annoying.
+                       $wikitext .= "\n";
+                       return $wikitext;
+               }
+               return $wikitext;
+       }
 }
index 8bfe1c7..189fd9f 100644 (file)
@@ -236,7 +236,6 @@ abstract class ChannelFeed extends FeedItem {
                        $wgOut->addVaryHeader( 'X-Forwarded-Proto' );
                }
                $wgOut->sendCacheControl();
-
        }
 
        /**
index 826f3bb..725a512 100644 (file)
@@ -53,7 +53,7 @@ class FormOptions implements ArrayAccess {
         */
        const INTNULL = 3;
        /** Array type, maps guessType() to WebRequest::getArray()
-        * @since 1.28 */
+        * @since 1.29 */
        const ARR = 5;
        /* @} */
 
@@ -378,7 +378,7 @@ class FormOptions implements ArrayAccess {
 
        /** @name ArrayAccess functions
         * These functions implement the ArrayAccess PHP interface.
-        * @see http://php.net/manual/en/class.arrayaccess.php
+        * @see https://secure.php.net/manual/en/class.arrayaccess.php
         */
        /* @{ */
        /**
index 15a73cf..b3ccc56 100644 (file)
@@ -40,7 +40,7 @@ use Wikimedia\ScopedCallback;
  */
 
 // hash_equals function only exists in PHP >= 5.6.0
-// http://php.net/hash_equals
+// https://secure.php.net/hash_equals
 if ( !function_exists( 'hash_equals' ) ) {
        /**
         * Check whether a user-provided string is equal to a fixed-length secret string
@@ -2138,7 +2138,7 @@ function wfMkdirParents( $dir, $mode = null, $caller = null ) {
  */
 function wfRecursiveRemoveDir( $dir ) {
        wfDebug( __FUNCTION__ . "( $dir )\n" );
-       // taken from http://de3.php.net/manual/en/function.rmdir.php#98622
+       // taken from https://secure.php.net/manual/en/function.rmdir.php#98622
        if ( is_dir( $dir ) ) {
                $objects = scandir( $dir );
                foreach ( $objects as $object ) {
@@ -2231,8 +2231,8 @@ function wfEscapeShellArg( /*...*/ ) {
                        // Escaping for an MSVC-style command line parser and CMD.EXE
                        // @codingStandardsIgnoreStart For long URLs
                        // Refs:
-                       //  * http://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
-                       //  * http://technet.microsoft.com/en-us/library/cc723564.aspx
+                       //  * https://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+                       //  * https://technet.microsoft.com/en-us/library/cc723564.aspx
                        //  * T15518
                        //  * CR r63214
                        // Double the backslashes before any double quotes. Escape the double quotes.
@@ -2332,7 +2332,7 @@ function wfShellExec( $cmd, &$retval = null, $environ = [],
                if ( wfIsWindows() ) {
                        /* Surrounding a set in quotes (method used by wfEscapeShellArg) makes the quotes themselves
                         * appear in the environment variable, so we must use carat escaping as documented in
-                        * http://technet.microsoft.com/en-us/library/cc723564.aspx
+                        * https://technet.microsoft.com/en-us/library/cc723564.aspx
                         * Note however that the quote isn't listed there, but is needed, and the parentheses
                         * are listed there but doesn't appear to need it.
                         */
@@ -2550,7 +2550,7 @@ function wfShellExecWithStderr( $cmd, &$retval = null, $environ = [], $limits =
 }
 
 /**
- * Workaround for http://bugs.php.net/bug.php?id=45132
+ * Workaround for https://bugs.php.net/bug.php?id=45132
  * escapeshellarg() destroys non-ASCII characters if LANG is not a UTF-8 locale
  */
 function wfInitShellLocale() {
@@ -2802,7 +2802,7 @@ function wfUseMW( $req_ver ) {
 /**
  * Return the final portion of a pathname.
  * Reimplemented because PHP5's "basename()" is buggy with multibyte text.
- * http://bugs.php.net/bug.php?id=33898
+ * https://bugs.php.net/bug.php?id=33898
  *
  * PHP's basename() only considers '\' a pathchar on Windows and Netware.
  * We'll consider it so always, as we don't want '\s' in our Unix paths either.
index 48b30c7..0b6b655 100644 (file)
@@ -3,7 +3,7 @@
  * Collection of methods to generate HTML content
  *
  * Copyright © 2009 Aryeh Gregor
- * http://www.mediawiki.org/
+ * https://www.mediawiki.org/
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -156,10 +156,10 @@ class Html {
         * @param string $contents The raw HTML contents of the element: *not*
         *   escaped!
         * @param array $attrs Associative array of attributes, e.g., [
-        *   'href' => 'http://www.mediawiki.org/' ]. See expandAttributes() for
+        *   'href' => 'https://www.mediawiki.org/' ]. See expandAttributes() for
         *   further documentation.
         * @param string[] $modifiers classes to add to the button
-        * @see http://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
+        * @see https://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
         * @return string Raw HTML
         */
        public static function linkButton( $contents, array $attrs, array $modifiers = [] ) {
@@ -176,10 +176,10 @@ class Html {
         * @param string $contents The raw HTML contents of the element: *not*
         *   escaped!
         * @param array $attrs Associative array of attributes, e.g., [
-        *   'href' => 'http://www.mediawiki.org/' ]. See expandAttributes() for
+        *   'href' => 'https://www.mediawiki.org/' ]. See expandAttributes() for
         *   further documentation.
         * @param string[] $modifiers classes to add to the button
-        * @see http://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
+        * @see https://tools.wmflabs.org/styleguide/desktop/index.html for guidance on available modifiers
         * @return string Raw HTML
         */
        public static function submitButton( $contents, array $attrs, array $modifiers = [] ) {
@@ -200,7 +200,7 @@ class Html {
         *
         * @param string $element The element's name, e.g., 'a'
         * @param array $attribs Associative array of attributes, e.g., [
-        *   'href' => 'http://www.mediawiki.org/' ]. See expandAttributes() for
+        *   'href' => 'https://www.mediawiki.org/' ]. See expandAttributes() for
         *   further documentation.
         * @param string $contents The raw HTML contents of the element: *not*
         *   escaped!
@@ -321,7 +321,7 @@ class Html {
         *
         * @param string $element Name of the element, e.g., 'a'
         * @param array $attribs Associative array of attributes, e.g., [
-        *   'href' => 'http://www.mediawiki.org/' ].  See expandAttributes() for
+        *   'href' => 'https://www.mediawiki.org/' ].  See expandAttributes() for
         *   further documentation.
         * @return array An array of attributes functionally identical to $attribs
         */
@@ -431,8 +431,8 @@ class Html {
        /**
         * Given an associative array of element attributes, generate a string
         * to stick after the element name in HTML output.  Like [ 'href' =>
-        * 'http://www.mediawiki.org/' ] becomes something like
-        * ' href="http://www.mediawiki.org"'.  Again, this is like
+        * 'https://www.mediawiki.org/' ] becomes something like
+        * ' href="https://www.mediawiki.org"'.  Again, this is like
         * Xml::expandAttributes(), but it implements some HTML-specific logic.
         *
         * Attributes that can contain space-separated lists ('class', 'accesskey' and 'rel') array
@@ -458,7 +458,7 @@ class Html {
         * @endcode
         *
         * @param array $attribs Associative array of attributes, e.g., [
-        *   'href' => 'http://www.mediawiki.org/' ].  Values will be HTML-escaped.
+        *   'href' => 'https://www.mediawiki.org/' ].  Values will be HTML-escaped.
         *   A value of false means to omit the attribute.  For boolean attributes,
         *   you can omit the key, e.g., [ 'checked' ] instead of
         *   [ 'checked' => 'checked' ] or such.
@@ -501,8 +501,8 @@ class Html {
                                continue;
                        }
 
-                       // http://www.w3.org/TR/html401/index/attributes.html ("space-separated")
-                       // http://www.w3.org/TR/html5/index.html#attributes-1 ("space-separated")
+                       // https://www.w3.org/TR/html401/index/attributes.html ("space-separated")
+                       // https://www.w3.org/TR/html5/index.html#attributes-1 ("space-separated")
                        $spaceSeparatedListAttributes = [
                                'class', // html4, html5
                                'accesskey', // as of html5, multiple space-separated values allowed
@@ -956,7 +956,7 @@ class Html {
         * @return bool
         */
        public static function isXmlMimeType( $mimetype ) {
-               # http://www.whatwg.org/html/infrastructure.html#xml-mime-type
+               # https://html.spec.whatwg.org/multipage/infrastructure.html#xml-mime-type
                # * text/xml
                # * application/xml
                # * Any MIME type with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
@@ -1005,7 +1005,7 @@ class Html {
         *
         * @note srcset width and height values are not supported.
         *
-        * @see http://www.whatwg.org/html/embedded-content-1.html#attr-img-srcset
+        * @see https://html.spec.whatwg.org/#attr-img-srcset
         *
         * @par Example:
         * @code
index f7e57fc..eaa1c99 100644 (file)
@@ -313,8 +313,6 @@ class MediaWiki {
         * - Normalise empty title:
         *   /wiki/ -> /wiki/Main
         *   /w/index.php?title= -> /wiki/Main
-        * - Normalise non-standard title urls:
-        *   /w/index.php?title=Foo_Bar -> /wiki/Foo_Bar
         * - Don't redirect anything with query parameters other than 'title' or 'action=view'.
         *
         * @param Title $title
@@ -327,6 +325,8 @@ class MediaWiki {
 
                if ( $request->getVal( 'action', 'view' ) != 'view'
                        || $request->wasPosted()
+                       || ( $request->getVal( 'title' ) !== null
+                               && $title->getPrefixedDBkey() == $request->getVal( 'title' ) )
                        || count( $request->getValueNames( [ 'action', 'title' ] ) )
                        || !Hooks::run( 'TestCanonicalRedirect', [ $request, $title, $output ] )
                ) {
@@ -341,19 +341,7 @@ class MediaWiki {
                }
                // Redirect to canonical url, make it a 301 to allow caching
                $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
-
-               if ( $targetUrl != $request->getFullRequestURL() ) {
-                       $output->setCdnMaxage( 1200 );
-                       $output->redirect( $targetUrl, '301' );
-                       return true;
-               }
-
-               // If there is no title, or the title is in a non-standard encoding, we demand
-               // a redirect. If cgi somehow changed the 'title' query to be non-standard while
-               // the url is standard, the server is misconfigured.
-               if ( $request->getVal( 'title' ) === null
-                       || $title->getPrefixedDBkey() != $request->getVal( 'title' )
-               ) {
+               if ( $targetUrl == $request->getFullRequestURL() ) {
                        $message = "Redirect loop detected!\n\n" .
                                "This means the wiki got confused about what page was " .
                                "requested; this sometimes happens when moving a wiki " .
@@ -375,7 +363,9 @@ class MediaWiki {
                        }
                        throw new HttpError( 500, $message );
                }
-               return false;
+               $output->setSquidMaxage( 1200 );
+               $output->redirect( $targetUrl, '301' );
+               return true;
        }
 
        /**
index f882d74..7c9363c 100644 (file)
@@ -192,7 +192,6 @@ class MediaWikiServices extends ServiceContainer {
                } else {
                        $oldInstance->destroy();
                }
-
        }
 
        /**
@@ -298,7 +297,7 @@ class MediaWikiServices extends ServiceContainer {
                self::resetGlobalInstance();
 
                // Child, reseed because there is no bug in PHP:
-               // http://bugs.php.net/bug.php?id=42465
+               // https://bugs.php.net/bug.php?id=42465
                mt_srand( getmypid() );
        }
 
@@ -567,7 +566,7 @@ class MediaWikiServices extends ServiceContainer {
        }
 
        /**
-        * @since 1.28
+        * @since 1.29
         * @return Parser
         */
        public function getParser() {
index c1a12aa..27aab8a 100644 (file)
  * @since 1.17
  */
 class Message implements MessageSpecifier, Serializable {
+       /** Use message text as-is */
+       const FORMAT_PLAIN = 'plain';
+       /** Use normal wikitext -> HTML parsing (the result will be wrapped in a block-level HTML tag) */
+       const FORMAT_BLOCK_PARSE = 'block-parse';
+       /** Use normal wikitext -> HTML parsing but strip the block-level wrapper */
+       const FORMAT_PARSE = 'parse';
+       /** Transform {{..}} constructs but don't transform to HTML */
+       const FORMAT_TEXT = 'text';
+       /** Transform {{..}} constructs, HTML-escape the result */
+       const FORMAT_ESCAPED = 'escaped';
 
        /**
         * In which language to get this message. True, which is the default,
@@ -190,15 +200,8 @@ class Message implements MessageSpecifier, Serializable {
        protected $parameters = [];
 
        /**
-        * Format for the message.
-        * Supported formats are:
-        * * text (transform)
-        * * escaped (transform+htmlspecialchars)
-        * * block-parse
-        * * parse (default)
-        * * plain
-        *
         * @var string
+        * @deprecated
         */
        protected $format = 'parse';
 
@@ -347,8 +350,10 @@ class Message implements MessageSpecifier, Serializable {
         * @since 1.21
         *
         * @return string
+        * @deprecated since 1.29 formatting is not stateful
         */
        public function getFormat() {
+               wfDeprecated( __METHOD__, '1.29' );
                return $this->format;
        }
 
@@ -796,9 +801,18 @@ class Message implements MessageSpecifier, Serializable {
         *
         * @since 1.17
         *
+        * @param string|null $format One of the FORMAT_* constants. Null means use whatever was used
+        *   the last time (this is for B/C and should be avoided).
+        *
         * @return string HTML
         */
-       public function toString() {
+       public function toString( $format = null ) {
+               if ( $format === null ) {
+                       $ex = new LogicException( __METHOD__ . ' using implicit format: ' . $this->format );
+                       \MediaWiki\Logger\LoggerFactory::getInstance( 'message-format' )->warning(
+                               $ex->getMessage(), [ 'exception' => $ex, 'format' => $this->format, 'key' => $this->key ] );
+                       $format = $this->format;
+               }
                $string = $this->fetchMessage();
 
                if ( $string === false ) {
@@ -821,23 +835,23 @@ class Message implements MessageSpecifier, Serializable {
                }
 
                # Replace parameters before text parsing
-               $string = $this->replaceParameters( $string, 'before' );
+               $string = $this->replaceParameters( $string, 'before', $format );
 
                # Maybe transform using the full parser
-               if ( $this->format === 'parse' ) {
+               if ( $format === self::FORMAT_PARSE ) {
                        $string = $this->parseText( $string );
                        $string = Parser::stripOuterParagraph( $string );
-               } elseif ( $this->format === 'block-parse' ) {
+               } elseif ( $format === self::FORMAT_BLOCK_PARSE ) {
                        $string = $this->parseText( $string );
-               } elseif ( $this->format === 'text' ) {
+               } elseif ( $format === self::FORMAT_TEXT ) {
                        $string = $this->transformText( $string );
-               } elseif ( $this->format === 'escaped' ) {
+               } elseif ( $format === self::FORMAT_ESCAPED ) {
                        $string = $this->transformText( $string );
                        $string = htmlspecialchars( $string, ENT_QUOTES, 'UTF-8', false );
                }
 
                # Raw parameter replacement
-               $string = $this->replaceParameters( $string, 'after' );
+               $string = $this->replaceParameters( $string, 'after', $format );
 
                return $string;
        }
@@ -852,17 +866,11 @@ class Message implements MessageSpecifier, Serializable {
         * @return string
         */
        public function __toString() {
-               if ( $this->format !== 'parse' ) {
-                       $ex = new LogicException( __METHOD__ . ' using implicit format: ' . $this->format );
-                       \MediaWiki\Logger\LoggerFactory::getInstance( 'message-format' )->warning(
-                               $ex->getMessage(), [ 'exception' => $ex, 'format' => $this->format, 'key' => $this->key ] );
-               }
-
                // PHP doesn't allow __toString to throw exceptions and will
                // trigger a fatal error if it does. So, catch any exceptions.
 
                try {
-                       return $this->toString();
+                       return $this->toString( self::FORMAT_PARSE );
                } catch ( Exception $ex ) {
                        try {
                                trigger_error( "Exception caught in " . __METHOD__ . " (message " . $this->key . "): "
@@ -871,10 +879,7 @@ class Message implements MessageSpecifier, Serializable {
                                // Doh! Cause a fatal error after all?
                        }
 
-                       if ( $this->format === 'plain' || $this->format === 'text' ) {
-                               return '<' . $this->key . '>';
-                       }
-                       return '&lt;' . htmlspecialchars( $this->key ) . '&gt;';
+                       return '⧼' . htmlspecialchars( $this->key ) . '⧽';
                }
        }
 
@@ -886,8 +891,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return string Parsed HTML.
         */
        public function parse() {
-               $this->format = 'parse';
-               return $this->toString();
+               $this->format = self::FORMAT_PARSE;
+               return $this->toString( self::FORMAT_PARSE );
        }
 
        /**
@@ -898,8 +903,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return string Unescaped message text.
         */
        public function text() {
-               $this->format = 'text';
-               return $this->toString();
+               $this->format = self::FORMAT_TEXT;
+               return $this->toString( self::FORMAT_TEXT );
        }
 
        /**
@@ -910,8 +915,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return string Unescaped untransformed message text.
         */
        public function plain() {
-               $this->format = 'plain';
-               return $this->toString();
+               $this->format = self::FORMAT_PLAIN;
+               return $this->toString( self::FORMAT_PLAIN );
        }
 
        /**
@@ -922,8 +927,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return string HTML
         */
        public function parseAsBlock() {
-               $this->format = 'block-parse';
-               return $this->toString();
+               $this->format = self::FORMAT_BLOCK_PARSE;
+               return $this->toString( self::FORMAT_BLOCK_PARSE );
        }
 
        /**
@@ -935,8 +940,8 @@ class Message implements MessageSpecifier, Serializable {
         * @return string Escaped message text.
         */
        public function escaped() {
-               $this->format = 'escaped';
-               return $this->toString();
+               $this->format = self::FORMAT_ESCAPED;
+               return $this->toString( self::FORMAT_ESCAPED );
        }
 
        /**
@@ -1070,13 +1075,14 @@ class Message implements MessageSpecifier, Serializable {
         *
         * @param string $message The message text.
         * @param string $type Either "before" or "after".
+        * @param string $format One of the FORMAT_* constants.
         *
         * @return string
         */
-       protected function replaceParameters( $message, $type = 'before' ) {
+       protected function replaceParameters( $message, $type = 'before', $format ) {
                $replacementKeys = [];
                foreach ( $this->parameters as $n => $param ) {
-                       list( $paramType, $value ) = $this->extractParam( $param );
+                       list( $paramType, $value ) = $this->extractParam( $param, $format );
                        if ( $type === $paramType ) {
                                $replacementKeys['$' . ( $n + 1 )] = $value;
                        }
@@ -1091,10 +1097,11 @@ class Message implements MessageSpecifier, Serializable {
         * @since 1.18
         *
         * @param mixed $param Parameter as defined in this class.
+        * @param string $format One of the FORMAT_* constants.
         *
         * @return array Array with the parameter type (either "before" or "after") and the value.
         */
-       protected function extractParam( $param ) {
+       protected function extractParam( $param, $format ) {
                if ( is_array( $param ) ) {
                        if ( isset( $param['raw'] ) ) {
                                return [ 'after', $param['raw'] ];
@@ -1113,7 +1120,7 @@ class Message implements MessageSpecifier, Serializable {
                        } elseif ( isset( $param['bitrate'] ) ) {
                                return [ 'before', $this->getLanguage()->formatBitrate( $param['bitrate'] ) ];
                        } elseif ( isset( $param['plaintext'] ) ) {
-                               return [ 'after', $this->formatPlaintext( $param['plaintext'] ) ];
+                               return [ 'after', $this->formatPlaintext( $param['plaintext'], $format ) ];
                        } else {
                                $warning = 'Invalid parameter for message "' . $this->getKey() . '": ' .
                                        htmlspecialchars( serialize( $param ) );
@@ -1127,7 +1134,7 @@ class Message implements MessageSpecifier, Serializable {
                        // Message objects should not be before parameters because
                        // then they'll get double escaped. If the message needs to be
                        // escaped, it'll happen right here when we call toString().
-                       return [ 'after', $param->toString() ];
+                       return [ 'after', $param->toString( $format ) ];
                } else {
                        return [ 'before', $param ];
                }
@@ -1207,18 +1214,19 @@ class Message implements MessageSpecifier, Serializable {
         * @since 1.25
         *
         * @param string $plaintext String to ensure plaintext output of
+        * @param string $format One of the FORMAT_* constants.
         *
-        * @return string Input plaintext encoded for output to $this->format
+        * @return string Input plaintext encoded for output to $format
         */
-       protected function formatPlaintext( $plaintext ) {
-               switch ( $this->format ) {
-               case 'text':
-               case 'plain':
+       protected function formatPlaintext( $plaintext, $format ) {
+               switch ( $format ) {
+               case self::FORMAT_TEXT:
+               case self::FORMAT_PLAIN:
                        return $plaintext;
 
-               case 'parse':
-               case 'block-parse':
-               case 'escaped':
+               case self::FORMAT_PARSE:
+               case self::FORMAT_BLOCK_PARSE:
+               case self::FORMAT_ESCAPED:
                default:
                        return htmlspecialchars( $plaintext, ENT_QUOTES );
 
index bf59c9a..50629ba 100644 (file)
@@ -295,9 +295,6 @@ class OutputPage extends ContextSource {
         */
        private $copyrightUrl;
 
-       /** @var array Profiling data */
-       private $limitReportData = [];
-
        /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will implicitly create
@@ -1214,8 +1211,8 @@ class OutputPage extends ContextSource {
        /**
         * Add new language links
         *
-        * @param array $newLinkArray Associative array mapping language code to the page
-        *                      name
+        * @param string[] $newLinkArray Array of interwiki-prefixed (non DB key) titles
+        *                               (e.g. 'fr:Test page')
         */
        public function addLanguageLinks( array $newLinkArray ) {
                $this->mLanguageLinks += $newLinkArray;
@@ -1224,8 +1221,8 @@ class OutputPage extends ContextSource {
        /**
         * Reset the language links and add new language links
         *
-        * @param array $newLinkArray Associative array mapping language code to the page
-        *                      name
+        * @param string[] $newLinkArray Array of interwiki-prefixed (non DB key) titles
+        *                               (e.g. 'fr:Test page')
         */
        public function setLanguageLinks( array $newLinkArray ) {
                $this->mLanguageLinks = $newLinkArray;
@@ -1234,7 +1231,7 @@ class OutputPage extends ContextSource {
        /**
         * Get the list of language links
         *
-        * @return array Array of Interwiki Prefixed (non DB key) Titles (e.g. 'fr:Test page')
+        * @return string[] Array of interwiki-prefixed (non DB key) titles (e.g. 'fr:Test page')
         */
        public function getLanguageLinks() {
                return $this->mLanguageLinks;
@@ -1713,7 +1710,6 @@ class OutputPage extends ContextSource {
                $popts->setTidy( $oldTidy );
 
                $this->addParserOutput( $parserOutput );
-
        }
 
        /**
@@ -1776,16 +1772,11 @@ class OutputPage extends ContextSource {
                        }
                }
 
-               // Enable OOUI if requested via ParserOutput
+               // enable OOUI if requested via ParserOutput
                if ( $parserOutput->getEnableOOUI() ) {
                        $this->enableOOUI();
                }
 
-               // Include profiling data
-               if ( !$this->limitReportData ) {
-                       $this->setLimitReportData( $parserOutput->getLimitReportData() );
-               }
-
                // Link flags are ignored for now, but may in the future be
                // used to mark individual language links.
                $linkFlags = [];
@@ -2811,8 +2802,8 @@ class OutputPage extends ContextSource {
                        // The spec recommends defining XHTML5's charset using the XML declaration
                        // instead of meta.
                        // Our XML declaration is output by Html::htmlHeader.
-                       // http://www.whatwg.org/html/semantics.html#attr-meta-http-equiv-content-type
-                       // http://www.whatwg.org/html/semantics.html#charset
+                       // https://html.spec.whatwg.org/multipage/semantics.html#attr-meta-http-equiv-content-type
+                       // https://html.spec.whatwg.org/multipage/semantics.html#charset
                        $pieces[] = Html::element( 'meta', [ 'charset' => 'UTF-8' ] );
                }
 
@@ -2967,15 +2958,6 @@ class OutputPage extends ContextSource {
                        }
                }
 
-               if ( $this->limitReportData ) {
-                       $chunks[] = ResourceLoader::makeInlineScript(
-                               ResourceLoader::makeConfigSetScript(
-                                       [ 'wgPageParseReport' => $this->limitReportData ],
-                                       true
-                               )
-                       );
-               }
-
                return self::combineWrappedStrings( $chunks );
        }
 
@@ -3696,7 +3678,7 @@ class OutputPage extends ContextSource {
        public static function transformCssMedia( $media ) {
                global $wgRequest;
 
-               // http://www.w3.org/TR/css3-mediaqueries/#syntax
+               // https://www.w3.org/TR/css3-mediaqueries/#syntax
                $screenMediaQueryRegex = '/^(?:only\s+)?screen\b/i';
 
                // Switch in on-screen display for media testing
@@ -3877,12 +3859,4 @@ class OutputPage extends ContextSource {
                        'mediawiki.widgets.styles',
                ] );
        }
-
-       /**
-        * @param array $data Data from ParserOutput::getLimitReportData()
-        * @since 1.28
-        */
-       public function setLimitReportData( array $data ) {
-               $this->limitReportData = $data;
-       }
 }
index 656ba43..e6e96c7 100644 (file)
@@ -1,4 +1,7 @@
 <?php
+// @codingStandardsIgnoreFile Generic.Arrays.DisallowLongArraySyntax
+// @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
  *
  * @file
  */
-
-/**
- * Check php version and that external dependencies are installed, and
- * display an informative error if either condition is not satisfied.
- *
- * @note Since we can't rely on anything, the minimum PHP versions and MW current
- * version are hardcoded here
- */
-function wfEntryPointCheck( $entryPoint ) {
-       $mwVersion = '1.29';
-       $minimumVersionPHP = '5.5.9';
-       $phpVersion = PHP_VERSION;
-
-       if ( !function_exists( 'version_compare' )
-               || version_compare( $phpVersion, $minimumVersionPHP ) < 0
-       ) {
-               wfPHPVersionError( $entryPoint, $mwVersion, $minimumVersionPHP, $phpVersion );
-       }
-
-       // @codingStandardsIgnoreStart MediaWiki.Usage.DirUsage.FunctionFound
-       if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
-               // @codingStandardsIgnoreEnd
-               wfMissingVendorError( $entryPoint, $mwVersion );
-       }
-
-       // List of functions and their associated PHP extension to check for
-       // @codingStandardsIgnoreStart Generic.Arrays.DisallowLongArraySyntax
-       $extensions = array(
+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 $functionsExtensionsMapping = array(
                'mb_substr'   => 'mbstring',
                'utf8_encode' => 'xml',
                'ctype_digit' => 'ctype',
                'json_decode' => 'json',
                'iconv'       => 'iconv',
        );
-       // List of extensions we're missing
-       $missingExtensions = array();
-       // @codingStandardsIgnoreEnd
 
-       foreach ( $extensions as $function => $extension ) {
-               if ( !function_exists( $function ) ) {
-                       $missingExtensions[] = $extension;
+       /**
+        * @var string Which entry point we are protecting. One of:
+        *   - index.php
+        *   - load.php
+        *   - api.php
+        *   - mw-config/index.php
+        *   - cli
+        */
+       var $entryPoint = null;
+
+       /**
+        * @param string $entryPoint Which entry point we are protecting. One of:
+        *   - index.php
+        *   - load.php
+        *   - api.php
+        *   - mw-config/index.php
+        *   - cli
+        * @return $this
+        */
+       function setEntryPoint( $entryPoint ) {
+               $this->entryPoint = $entryPoint;
+       }
+
+       /**
+        * Returns the version of the installed php implementation.
+        *
+        * @return string
+        */
+       function getPHPImplVersion() {
+               return PHP_VERSION;
+       }
+
+       /**
+        * Displays an error, if the installed php version does not meet the minimum requirement.
+        *
+        * @return $this
+        */
+       function checkRequiredPHPVersion() {
+               if ( !function_exists( 'version_compare' )
+                    || version_compare( $this->getPHPImplVersion(), $this->minimumVersionPHP ) < 0
+               ) {
+                       $shortText = "MediaWiki $this->mwVersion requires at least PHP version"
+                                    . " $this->minimumVersionPHP, you are using PHP {$this->getPHPImplVersion()}.";
+
+                       $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";
+
+                       $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
+                       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.
+HTML;
+                       $this->triggerError( 'Supported PHP versions', $shortText, $longText, $longHtml );
                }
        }
 
-       if ( $missingExtensions ) {
-               wfMissingExtensions( $entryPoint, $mwVersion, $missingExtensions );
+       /**
+        * Displays an error, if the vendor/autoload.php file could not be found.
+        *
+        * @return $this
+        */
+       function checkVendorExistence() {
+               if ( !file_exists( dirname( __FILE__ ) . '/../vendor/autoload.php' ) ) {
+                       $shortText = "Installing some external dependencies (e.g. via composer) is required.";
+
+                       $longText = "Error: You are missing some external dependencies. \n"
+                                   . "MediaWiki now also has some external dependencies that need to be installed\n"
+                                   . "via composer or from a separate git repo. Please see\n"
+                                   . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
+                                   . "for help on installing the required components.";
+
+                       $longHtml = <<<HTML
+               MediaWiki now also has some external dependencies that need to be installed via
+               composer or from a separate git repo. Please see
+               <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a>
+               for help on installing the required components.
+HTML;
+
+                       $this->triggerError( 'External dependencies', $shortText, $longText, $longHtml );
+               }
        }
-}
 
-/**
- * Display something vaguely comprehensible in the event of a totally unrecoverable error.
- * Does not assume access to *anything*; no globals, no autoloader, no database, no localisation.
- * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
- * no longer need to be).
- *
- * Calling this function kills execution immediately.
- *
- * @param string $type Which entry point we are protecting. One of:
- *   - index.php
- *   - load.php
- *   - api.php
- *   - mw-config/index.php
- *   - cli
- * @param string $mwVersion The number of the MediaWiki version used
- * @param string $title HTML code to be put within an <h2> tag
- * @param string $shortText
- * @param string $longText
- * @param string $longHtml
- */
-function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $longHtml ) {
-       $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
+       /**
+        * Displays an error, if a PHP extension does not exist.
+        *
+        * @return $this
+        */
+       function checkExtensionExistence() {
+               $missingExtensions = array();
+               foreach ( $this->functionsExtensionsMapping as $function => $extension ) {
+                       if ( !function_exists( $function ) ) {
+                               $missingExtensions[] = $extension;
+                       }
+               }
+
+               if ( $missingExtensions ) {
+                       $shortText = "Installing some PHP extensions is required.";
+
+                       $missingExtText = '';
+                       $missingExtHtml = '';
+                       $baseUrl = 'https://secure.php.net';
+                       foreach ( $missingExtensions as $ext ) {
+                               $missingExtText .= " * $ext <$baseUrl/$ext>\n";
+                               $missingExtHtml .= "<li><b>$ext</b> "
+                                                  . "(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
+                       }
+
+                       $cliText = "Error: Missing one or more required components of PHP.\n"
+                                  . "You are missing a required extension to PHP that MediaWiki needs.\n"
+                                  . "Please install:\n" . $missingExtText;
+
+                       $longHtml = <<<HTML
+               You are missing a required extension to PHP that MediaWiki
+               requires to run. Please install:
+               <ul>
+               $missingExtHtml
+               </ul>
+HTML;
+
+                       $this->triggerError( 'Required components', $shortText, $cliText, $longHtml );
+               }
+       }
+
+       /**
+        * Output headers that prevents error pages to be cached.
+        */
+       function outputHTMLHeader() {
+               $protocol = isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0';
 
-       if ( $type == 'cli' ) {
-               $finalOutput = $longText;
-       } else {
                header( "$protocol 500 MediaWiki configuration Error" );
                // Don't cache error pages!  They cause no end of trouble...
                header( 'Cache-control: none' );
                header( 'Pragma: no-cache' );
+       }
 
-               if ( $type == 'index.php' || $type == 'mw-config/index.php' ) {
-                       $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
-                       if ( $type == 'mw-config/index.php' ) {
-                               $dirname = dirname( $pathinfo['dirname'] );
-                       } else {
-                               $dirname = $pathinfo['dirname'];
-                       }
-                       $encLogo = htmlspecialchars(
-                               str_replace( '//', '/', $dirname . '/' ) .
-                               'resources/assets/mediawiki.png'
-                       );
-                       $shortHtml = htmlspecialchars( $shortText );
+       /**
+        * Returns an error page, which is suitable for output to the end user via a web browser.
+        *
+        * @param $title
+        * @param $longHtml
+        * @param $shortText
+        * @return string
+        */
+       function getIndexErrorOutput( $title, $longHtml, $shortText ) {
+               $pathinfo = pathinfo( $_SERVER['SCRIPT_NAME'] );
+               if ( $this->entryPoint == 'mw-config/index.php' ) {
+                       $dirname = dirname( $pathinfo['dirname'] );
+               } else {
+                       $dirname = $pathinfo['dirname'];
+               }
+               $encLogo =
+                       htmlspecialchars( str_replace( '//', '/', $dirname . '/' ) .
+                                         'resources/assets/mediawiki.png' );
+               $shortHtml = htmlspecialchars( $shortText );
 
-                       header( 'Content-type: text/html; charset=UTF-8' );
+               header( 'Content-type: text/html; charset=UTF-8' );
 
-                       $finalOutput = <<<HTML
+               $finalOutput = <<<HTML
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
        <head>
                <meta charset="UTF-8" />
-               <title>MediaWiki {$mwVersion}</title>
+               <title>MediaWiki {$this->mwVersion}</title>
                <style media='screen'>
                        body {
                                color: #000;
@@ -144,7 +231,7 @@ function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $long
        </head>
        <body>
                <img src="{$encLogo}" alt='The MediaWiki logo' />
-               <h1>MediaWiki {$mwVersion} internal error</h1>
+               <h1>MediaWiki {$this->mwVersion} internal error</h1>
                <div class='error'>
                <p>
                        {$shortHtml}
@@ -157,105 +244,59 @@ function wfGenericError( $type, $mwVersion, $title, $shortText, $longText, $long
        </body>
 </html>
 HTML;
-               // Handle everything that's not index.php
-               } else {
-                       // So nothing thinks this is JS or CSS
-                       $finalOutput = ( $type == 'load.php' ) ? "/* $shortText */" : $shortText;
-               }
-       }
-       echo "$finalOutput\n";
-       die( 1 );
-}
-
-/**
- * Display an error for the minimum PHP version requirement not being satisfied.
- *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- * @param string $minimumVersionPHP The minimum PHP version supported by MediaWiki
- * @param string $phpVersion The current PHP version
- */
-function wfPHPVersionError( $type, $mwVersion, $minimumVersionPHP, $phpVersion ) {
-       $shortText = "MediaWiki $mwVersion requires at least "
-               . "PHP version $minimumVersionPHP, you are using PHP $phpVersion.";
-
-       $longText = "Error: You might be using on older PHP version. \n"
-               . "MediaWiki $mwVersion needs PHP $minimumVersionPHP or higher.\n\n"
-               . "Check 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
-                       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.
-HTML;
-       wfGenericError( $type, $mwVersion, 'Supported PHP versions', $shortText, $longText, $longHtml );
-}
-
-/**
- * Display an error for the vendor/autoload.php file not being found.
- *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- */
-function wfMissingVendorError( $type, $mwVersion ) {
-       $shortText = "Installing some external dependencies (e.g. via composer) is required.";
 
-       $longText = "Error: You are missing some external dependencies. \n"
-               . "MediaWiki now also has some external dependencies that need to be installed\n"
-               . "via composer or from a separate git repo. Please see\n"
-               . "https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries\n"
-               . "for help on installing the required components.";
+               return $finalOutput;
+       }
 
-       // @codingStandardsIgnoreStart Generic.Files.LineLength
-       $longHtml = <<<HTML
-               MediaWiki now also has some external dependencies that need to be installed via
-               composer or from a separate git repo. Please see
-               <a href="https://www.mediawiki.org/wiki/Download_from_Git#Fetch_external_libraries">mediawiki.org</a>
-               for help on installing the required components.
-HTML;
-       // @codingStandardsIgnoreEnd
+       /**
+        * Display something vaguely comprehensible in the event of a totally unrecoverable error.
+        * Does not assume access to *anything*; no globals, no autoloader, no database, no localisation.
+        * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
+        * no longer need to be).
+        *
+        * Calling this function kills execution immediately.
+        *
+        * @param string $title HTML code to be put within an <h2> tag
+        * @param string $shortText
+        * @param string $longText
+        * @param string $longHtml
+        */
+       function triggerError( $title, $shortText, $longText, $longHtml ) {
+               switch ( $this->entryPoint ) {
+                       case 'cli':
+                               $finalOutput = $longText;
+                               break;
+                       case 'index.php':
+                       case 'mw-config/index.php':
+                               $this->outputHTMLHeader();
+                               $finalOutput = $this->getIndexErrorOutput( $title, $longHtml, $shortText );
+                               break;
+                       case 'load.php':
+                               $this->outputHTMLHeader();
+                               $finalOutput = "/* $shortText */";
+                               break;
+                       default:
+                               $this->outputHTMLHeader();
+                               // Handle everything that's not index.php
+                               $finalOutput = $shortText;
+               }
 
-       wfGenericError( $type, $mwVersion, 'External dependencies', $shortText, $longText, $longHtml );
+               echo "$finalOutput\n";
+               die( 1 );
+       }
 }
 
 /**
- * Display an error for a PHP extension not existing.
+ * Check php version and that external dependencies are installed, and
+ * display an informative error if either condition is not satisfied.
  *
- * @param string $type See wfGenericError
- * @param string $mwVersion See wfGenericError
- * @param array $missingExts The extensions we're missing
+ * @note Since we can't rely on anything, the minimum PHP versions and MW current
+ * version are hardcoded here
  */
-function wfMissingExtensions( $type, $mwVersion, $missingExts ) {
-       $shortText = "Installing some PHP extensions is required.";
-
-       $missingExtText = '';
-       $missingExtHtml = '';
-       $baseUrl = 'https://secure.php.net';
-       foreach ( $missingExts as $ext ) {
-               $missingExtText .= " * $ext <$baseUrl/$ext>\n";
-               $missingExtHtml .= "<li><b>$ext</b> "
-                       . "(<a href=\"$baseUrl/$ext\">more information</a>)</li>";
-       }
-
-       $cliText = "Error: Missing one or more required components of PHP.\n"
-               . "You are missing a required extension to PHP that MediaWiki needs.\n"
-               . "Please install:\n" . $missingExtText;
-
-       $longHtml = <<<HTML
-               You are missing a required extension to PHP that MediaWiki
-               requires to run. Please install:
-               <ul>
-               $missingExtHtml
-               </ul>
-HTML;
-
-       wfGenericError( $type, $mwVersion, 'Required components', $shortText,
-               $cliText, $longHtml );
+function wfEntryPointCheck( $entryPoint ) {
+       $phpVersionCheck = new PHPVersionCheck();
+       $phpVersionCheck->setEntryPoint( $entryPoint );
+       $phpVersionCheck->checkRequiredPHPVersion();
+       $phpVersionCheck->checkVendorExistence();
+       $phpVersionCheck->checkExtensionExistence();
 }
index 9f8c06b..d86b19a 100644 (file)
@@ -861,7 +861,6 @@ class Preferences {
                        'section' => 'editing/preview',
                        'label-message' => 'tog-uselivepreview',
                ];
-
        }
 
        /**
@@ -1614,7 +1613,6 @@ class PreferencesForm extends HTMLForm {
         * @return string
         */
        function getButtons() {
-
                $attrs = [ 'id' => 'mw-prefs-restoreprefs' ];
 
                if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) {
index 4069658..44e4e3e 100644 (file)
@@ -41,7 +41,7 @@ class Sanitizer {
 
        /**
         * Acceptable tag name charset from HTML5 parsing spec
-        * http://www.w3.org/TR/html5/syntax.html#tag-open-state
+        * https://www.w3.org/TR/html5/syntax.html#tag-open-state
         */
        const ELEMENT_BITS_REGEX = '!^(/?)([A-Za-z][^\t\n\v />\0]*+)([^>]*?)(/?>)([^<]*)$!';
 
@@ -58,7 +58,7 @@ class Sanitizer {
 
        /**
         * List of all named character entities defined in HTML 4.01
-        * http://www.w3.org/TR/html4/sgml/entities.html
+        * https://www.w3.org/TR/html4/sgml/entities.html
         * As well as &apos; which is only defined starting in XHTML1.
         */
        private static $htmlEntities = [
@@ -333,7 +333,7 @@ class Sanitizer {
        /**
         * Regular expression to match HTML/XML attribute pairs within a tag.
         * Allows some... latitude. Based on,
-        * http://www.w3.org/TR/html5/syntax.html#before-attribute-value-state
+        * https://www.w3.org/TR/html5/syntax.html#before-attribute-value-state
         * Used in Sanitizer::fixTagAttributes and Sanitizer::decodeTagAttributes
         * @return string
         */
@@ -1149,11 +1149,11 @@ class Sanitizer {
         * ambiguous if it's part of something that looks like a percent escape
         * (which don't work reliably in fragments cross-browser).
         *
-        * @see http://www.w3.org/TR/html401/types.html#type-name Valid characters
+        * @see https://www.w3.org/TR/html401/types.html#type-name Valid characters
         *   in the id and name attributes
-        * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with
+        * @see https://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with
         *   the id attribute
-        * @see http://www.whatwg.org/html/elements.html#the-id-attribute
+        * @see https://www.w3.org/TR/html5/dom.html#the-id-attribute
         *   HTML5 definition of id attribute
         *
         * @param string $id Id to escape
@@ -1239,7 +1239,7 @@ class Sanitizer {
         *
         * @todo For extra validity, input should be validated UTF-8.
         *
-        * @see http://www.w3.org/TR/CSS21/syndata.html Valid characters/format
+        * @see https://www.w3.org/TR/CSS21/syndata.html Valid characters/format
         *
         * @param string $class
         * @return string
@@ -1352,7 +1352,7 @@ class Sanitizer {
                } elseif ( !isset( $set[2] ) ) {
                        # In XHTML, attributes must have a value so return an empty string.
                        # See "Empty attribute syntax",
-                       # http://www.w3.org/TR/html5/syntax.html#syntax-attribute-name
+                       # https://www.w3.org/TR/html5/syntax.html#syntax-attribute-name
                        return "";
                } else {
                        throw new MWException( "Tag conditions not met. This should never happen and is a bug." );
@@ -1622,7 +1622,7 @@ class Sanitizer {
 
                        # RDFa
                        # These attributes are specified in section 9 of
-                       # http://www.w3.org/TR/2008/REC-rdfa-syntax-20081014
+                       # https://www.w3.org/TR/2008/REC-rdfa-syntax-20081014
                        'about',
                        'property',
                        'resource',
@@ -1630,7 +1630,7 @@ class Sanitizer {
                        'typeof',
 
                        # Microdata. These are specified by
-                       # http://www.whatwg.org/html/microdata.html#the-microdata-model
+                       # https://html.spec.whatwg.org/multipage/microdata.html#the-microdata-model
                        'itemid',
                        'itemprop',
                        'itemref',
@@ -1654,7 +1654,7 @@ class Sanitizer {
                ];
 
                # Numbers refer to sections in HTML 4.01 standard describing the element.
-               # See: http://www.w3.org/TR/html4/
+               # See: https://www.w3.org/TR/html4/
                $whitelist = [
                        # 7.5.4
                        'div'        => $block,
@@ -1701,7 +1701,7 @@ class Sanitizer {
                        # 9.3.2
                        'br'         => array_merge( $common, [ 'clear' ] ),
 
-                       # http://www.whatwg.org/html/text-level-semantics.html#the-wbr-element
+                       # https://www.w3.org/TR/html5/text-level-semantics.html#the-wbr-element
                        'wbr'        => $common,
 
                        # 9.3.4
@@ -1776,7 +1776,7 @@ class Sanitizer {
                        'hr'         => array_merge( $common, [ 'width' ] ),
 
                        # HTML Ruby annotation text module, simple ruby only.
-                       # http://www.whatwg.org/html/text-level-semantics.html#the-ruby-element
+                       # https://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
                        'ruby'       => $common,
                        # rbc
                        'rb'         => $common,
@@ -1786,14 +1786,14 @@ class Sanitizer {
 
                        # MathML root element, where used for extensions
                        # 'title' may not be 100% valid here; it's XHTML
-                       # http://www.w3.org/TR/REC-MathML/
+                       # https://www.w3.org/TR/REC-MathML/
                        'math'       => [ 'class', 'style', 'id', 'title' ],
 
                        # HTML 5 section 4.6
                        'bdi' => $common,
 
                        # HTML5 elements, defined by:
-                       # http://www.whatwg.org/html/
+                       # https://html.spec.whatwg.org/multipage/semantics.html#the-data-element
                        'data' => array_merge( $common, [ 'value' ] ),
                        'time' => array_merge( $common, [ 'datetime' ] ),
                        'mark' => $common,
index 213572b..3c51bae 100644 (file)
@@ -1412,7 +1412,6 @@ class Title implements LinkTarget {
                        $fragment,
                        $this->getInterwiki()
                );
-
        }
 
        /**
@@ -2926,7 +2925,6 @@ class Title implements LinkTarget {
 
                        # Cycle through all the restrictions.
                        foreach ( $rows as $row ) {
-
                                // Don't take care of restrictions types that aren't allowed
                                if ( !in_array( $row->pr_type, $restrictionTypes ) ) {
                                        continue;
@@ -4600,7 +4598,6 @@ class Title implements LinkTarget {
                        : $wgExemptFromUserRobotsControl;
 
                return !in_array( $this->mNamespace, $bannedNamespaces );
-
        }
 
        /**
index 0065135..3ef3bc1 100644 (file)
@@ -113,7 +113,7 @@ class WebRequest {
         */
        public static function getPathInfo( $want = 'all' ) {
                global $wgUsePathInfo;
-               // PATH_INFO is mangled due to http://bugs.php.net/bug.php?id=31892
+               // PATH_INFO is mangled due to https://bugs.php.net/bug.php?id=31892
                // And also by Apache 2.x, double slashes are converted to single slashes.
                // So we will use REQUEST_URI if possible.
                $matches = [];
@@ -175,7 +175,7 @@ class WebRequest {
                } elseif ( $wgUsePathInfo ) {
                        if ( isset( $_SERVER['ORIG_PATH_INFO'] ) && $_SERVER['ORIG_PATH_INFO'] != '' ) {
                                // Mangled PATH_INFO
-                               // http://bugs.php.net/bug.php?id=31892
+                               // https://bugs.php.net/bug.php?id=31892
                                // Also reported when ini_get('cgi.fix_pathinfo')==false
                                $matches['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
 
@@ -379,7 +379,7 @@ class WebRequest {
         */
        private function getGPCVal( $arr, $name, $default ) {
                # PHP is so nice to not touch input data, except sometimes:
-               # http://us2.php.net/variables.external#language.variables.external.dot-in-names
+               # https://secure.php.net/variables.external#language.variables.external.dot-in-names
                # Work around PHP *feature* to avoid *bugs* elsewhere.
                $name = strtr( $name, '.', '_' );
                if ( isset( $arr[$name] ) ) {
index c741907..916a10c 100644 (file)
@@ -102,7 +102,7 @@ class WebRequestUpload {
 
        /**
         * Return the upload error. See link for explanation
-        * http://www.php.net/manual/en/features.file-upload.errors.php
+        * https://secure.php.net/manual/en/features.file-upload.errors.php
         *
         * @return int One of the UPLOAD_ constants, 0 if non-existent
         */
index b1bd098..4c6b071 100644 (file)
@@ -238,7 +238,6 @@ class Xml {
                        Xml::label( $msg->text(), $attrs['id'] ),
                        Xml::tags( 'select', $attrs, $options )
                ];
-
        }
 
        /**
index 1e1bb39..c1763fa 100644 (file)
@@ -218,7 +218,6 @@ class HistoryAction extends FormlessAction {
                        $pager->getNavigationBar()
                );
                $out->preventClickjacking( $pager->getPreventClickjacking() );
-
        }
 
        /**
index 85ea87c..8df6044 100644 (file)
@@ -1,7 +1,5 @@
 <?php
 /**
- * Mark a revision as patrolled on a page
- *
  * Copyright © 2011 Alexandre Emsenhuber
  *
  * This program is free software; you can redistribute it and/or modify
  *
  * @ingroup Actions
  */
-class MarkpatrolledAction extends FormlessAction {
+class MarkpatrolledAction extends FormAction {
 
        public function getName() {
                return 'markpatrolled';
        }
 
        protected function getDescription() {
+               // Disable default header "subtitle"
                return '';
        }
 
-       public function onView() {
-               $request = $this->getRequest();
+       public function getRestriction() {
+               return 'patrol';
+       }
 
-               $rcId = $request->getInt( 'rcid' );
-               $rc = RecentChange::newFromId( $rcId );
-               if ( is_null( $rc ) ) {
+       protected function getRecentChange( $data = null ) {
+               $rc = null;
+               // Note: This works both on initial GET url and after submitting the form
+               $rcId = $data ? intval( $data['rcid'] ) : $this->getRequest()->getInt( 'rcid' );
+               if ( $rcId ) {
+                       $rc = RecentChange::newFromId( $rcId );
+               }
+               if ( !$rc ) {
                        throw new ErrorPageError( 'markedaspatrollederror', 'markedaspatrollederrortext' );
                }
+               return $rc;
+       }
 
-               $user = $this->getUser();
-               if ( !$user->matchEditToken( $request->getVal( 'token' ), $rcId ) ) {
-                       throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
-               }
+       protected function preText() {
+               $rc = $this->getRecentChange();
+               $title = $rc->getTitle();
+
+               // Based on logentry-patrol-patrol (see PatrolLogFormatter)
+               $revId = $rc->getAttribute( 'rc_this_oldid' );
+               $query = [
+                       'curid' => $rc->getAttribute( 'rc_cur_id' ),
+                       'diff' => $revId,
+                       'oldid' => $rc->getAttribute( 'rc_last_oldid' )
+               ];
+               $revlink = Linker::link( $title, htmlspecialchars( $revId ), [], $query );
+               $pagelink = Linker::link( $title, htmlspecialchars( $title->getPrefixedText() ) );
 
+               return $this->msg( 'confirm-markpatrolled-top' )->params(
+                       $title->getPrefixedText(),
+                       // Provide pre-rendered link as parser would render [[:$1]] as bold non-link
+                       Message::rawParam( $pagelink ),
+                       Message::rawParam( $revlink )
+               )->parse();
+       }
+
+       protected function alterForm( HTMLForm $form ) {
+               $form->addHiddenField( 'rcid', $this->getRequest()->getInt( 'rcid' ) );
+               $form->setTokenSalt( 'patrol' );
+               $form->setSubmitTextMsg( 'confirm-markpatrolled-button' );
+       }
+
+       /**
+        * @return bool|array True for success, false for didn't-try, array of errors on failure
+        */
+       public function onSubmit( $data ) {
+               $user = $this->getUser();
+               $rc = $this->getRecentChange( $data );
                $errors = $rc->doMarkPatrolled( $user );
 
                if ( in_array( [ 'rcpatroldisabled' ], $errors ) ) {
                        throw new ErrorPageError( 'rcpatroldisabled', 'rcpatroldisabledtext' );
                }
 
-               if ( in_array( [ 'hookaborted' ], $errors ) ) {
-                       // The hook itself has handled any output
-                       return;
-               }
-
-               # It would be nice to see where the user had actually come from, but for now just guess
+               // Guess where the user came from
+               // TODO: Would be nice to see where the user actually came from
                if ( $rc->getAttribute( 'rc_type' ) == RC_NEW ) {
                        $returnTo = 'Newpages';
                } elseif ( $rc->getAttribute( 'rc_log_type' ) == 'upload' ) {
@@ -76,18 +108,25 @@ class MarkpatrolledAction extends FormlessAction {
                        $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrollederror' ) );
                        $this->getOutput()->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
                        $this->getOutput()->returnToMain( null, $return );
-
-                       return;
+                       return true;
                }
 
-               if ( count( $errors ) ) {
-                       throw new PermissionsError( 'patrol', $errors );
+               if ( $errors ) {
+                       if ( !in_array( [ 'hookaborted' ], $errors ) ) {
+                               throw new PermissionsError( 'patrol', $errors );
+                       }
+                       // The hook itself has handled any output
+                       return $errors;
                }
 
-               # Inform the user
                $this->getOutput()->setPageTitle( $this->msg( 'markedaspatrolled' ) );
                $this->getOutput()->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
                $this->getOutput()->returnToMain( null, $return );
+               return true;
+       }
+
+       public function onSuccess() {
+               // Required by parent class. Redundant as our onSubmit handles output already.
        }
 
        public function doesWrites() {
index 4c406a7..67f54a8 100644 (file)
@@ -33,6 +33,7 @@ abstract class ApiFormatBase extends ApiBase {
        private $mIsHtml, $mFormat, $mUnescapeAmps, $mHelp;
        private $mBuffer, $mDisabled = false;
        private $mIsWrappedHtml = false;
+       private $mHttpStatus = false;
        protected $mForceDefaultParams = false;
 
        /**
@@ -147,6 +148,23 @@ abstract class ApiFormatBase extends ApiBase {
                }
        }
 
+       /**
+        * Set the HTTP status code to be used for the response
+        * @since 1.29
+        * @param int $code
+        */
+       public function setHttpStatus( $code ) {
+               if ( $this->mDisabled ) {
+                       return;
+               }
+
+               if ( $this->getIsHtml() ) {
+                       $this->mHttpStatus = $code;
+               } else {
+                       $this->getMain()->getRequest()->response()->statusHeader( $code );
+               }
+       }
+
        /**
         * Initialize the printer function and prepare the output headers.
         * @param bool $unused Always false since 1.25
@@ -212,6 +230,18 @@ abstract class ApiFormatBase extends ApiBase {
                                                ApiHelp::fixHelpLinks( $header )
                                        )
                                );
+
+                               if ( $this->mHttpStatus && $this->mHttpStatus !== 200 ) {
+                                       $out->addHTML(
+                                               Html::rawElement( 'div', [ 'class' => 'api-pretty-header api-pretty-status' ],
+                                                       $this->msg(
+                                                               'api-format-prettyprint-status',
+                                                               $this->mHttpStatus,
+                                                               HttpStatus::getMessage( $this->mHttpStatus )
+                                                       )->parse()
+                                               )
+                                       );
+                               }
                        }
 
                        if ( Hooks::run( 'ApiFormatHighlight', [ $context, $result, $mime, $format ] ) ) {
@@ -225,6 +255,8 @@ abstract class ApiFormatBase extends ApiBase {
                                $time = microtime( true ) - $this->getConfig()->get( 'RequestTime' );
                                $json = FormatJson::encode(
                                        [
+                                               'status' => (int)( $this->mHttpStatus ?: 200 ),
+                                               'statustext' => HttpStatus::getMessage( $this->mHttpStatus ?: 200 ),
                                                'html' => $out->getHTML(),
                                                'modules' => array_values( array_unique( array_merge(
                                                        $out->getModules(),
index 8deee5c..38299b4 100644 (file)
@@ -572,11 +572,7 @@ class ApiMain extends ApiBase {
 
                $response = $this->getRequest()->response();
                $headerStr = 'MediaWiki-API-Error: ' . $errCode;
-               if ( $e->getCode() === 0 ) {
-                       $response->header( $headerStr );
-               } else {
-                       $response->header( $headerStr, true, $e->getCode() );
-               }
+               $response->header( $headerStr );
 
                // Reset and print just the error message
                ob_clean();
@@ -585,7 +581,7 @@ class ApiMain extends ApiBase {
                $this->createErrorPrinter();
 
                try {
-                       $this->printResult( true );
+                       $this->printResult( $e->getCode() );
                } catch ( UsageException $ex ) {
                        // The error printer itself is failing. Try suppressing its request
                        // parameters and redo.
@@ -595,7 +591,10 @@ class ApiMain extends ApiBase {
                        $this->mPrinter = null;
                        $this->createErrorPrinter();
                        $this->mPrinter->forceDefaultParams();
-                       $this->printResult( true );
+                       if ( $e->getCode() ) {
+                               $response->statusHeader( 200 ); // Reset in case the fallback doesn't want a non-200
+                       }
+                       $this->printResult( $e->getCode() );
                }
        }
 
@@ -636,8 +635,8 @@ class ApiMain extends ApiBase {
         * If the parameter and the header do match, the header is checked against $wgCrossSiteAJAXdomains
         * and $wgCrossSiteAJAXdomainExceptions, and if the origin qualifies, the appropriate CORS
         * headers are set.
-        * http://www.w3.org/TR/cors/#resource-requests
-        * http://www.w3.org/TR/cors/#resource-preflight-requests
+        * https://www.w3.org/TR/cors/#resource-requests
+        * https://www.w3.org/TR/cors/#resource-preflight-requests
         *
         * @return bool False if the caller should abort (403 case), true otherwise (all other cases)
         */
@@ -719,7 +718,7 @@ class ApiMain extends ApiBase {
 
                        $response->header( "Access-Control-Allow-Origin: $allowOrigin" );
                        $response->header( "Access-Control-Allow-Credentials: $allowCredentials" );
-                       // http://www.w3.org/TR/resource-timing/#timing-allow-origin
+                       // https://www.w3.org/TR/resource-timing/#timing-allow-origin
                        if ( $allowTiming !== false ) {
                                $response->header( "Timing-Allow-Origin: $allowTiming" );
                        }
@@ -1441,7 +1440,7 @@ class ApiMain extends ApiBase {
                        MWDebug::appendDebugInfoToApiResult( $this->getContext(), $this->getResult() );
 
                        // Print result data
-                       $this->printResult( false );
+                       $this->printResult();
                }
        }
 
@@ -1621,15 +1620,18 @@ class ApiMain extends ApiBase {
        /**
         * Print results using the current printer
         *
-        * @param bool $isError
+        * @param int $httpCode HTTP status code, or 0 to not change
         */
-       protected function printResult( $isError ) {
+       protected function printResult( $httpCode = 0 ) {
                if ( $this->getConfig()->get( 'DebugAPI' ) !== false ) {
                        $this->setWarning( 'SECURITY WARNING: $wgDebugAPI is enabled' );
                }
 
                $printer = $this->mPrinter;
                $printer->initPrinter( false );
+               if ( $httpCode ) {
+                       $printer->setHttpStatus( $httpCode );
+               }
                $printer->execute();
                $printer->closePrinter();
        }
index 99f722d..0bb7ff8 100644 (file)
@@ -576,7 +576,6 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                ApiResult::setIndexedTagName( $data, 'library' );
 
                return $this->getResult()->addValue( 'query', $property, $data );
-
        }
 
        protected function appendExtensions( $property ) {
index 712217b..4fac37d 100644 (file)
@@ -75,7 +75,7 @@ class ApiRsd extends ApiBase {
         * compatible APIs, by hooking 'ApiRsdServiceApis' and adding more
         * elements to the array.
         *
-        * See http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html for
+        * See https://cyber.harvard.edu/blogs/gems/tech/rsd.html for
         * the base RSD spec, and check WordPress and StatusNet sites for
         * in-production examples listing several blogging and micrblogging
         * APIs.
index fe73a56..0f184d9 100644 (file)
        "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: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: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-pageset-param-titles": "A list of titles to work on.",
        "api-pageset-param-pageids": "A list of page IDs to work on.",
index 2351733..c23f33d 100644 (file)
                        "2axterix2",
                        "Dgstranz",
                        "Copper12",
-                       "Irus"
+                       "Irus",
+                       "Hamilton Abreu",
+                       "Pompilos",
+                       "Igv"
                ]
        },
        "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-edit-param-tags": "Cambia las etiquetas para aplicarlas a la revisión.",
        "apihelp-edit-param-minor": "Edición menor.",
        "apihelp-edit-param-notminor": "Edición no menor.",
-       "apihelp-edit-param-bot": "Marcar esta edición como de bot.",
+       "apihelp-edit-param-bot": "Marcar esta edición como edición de bot.",
        "apihelp-edit-param-basetimestamp": "Marca de tiempo de la revisión base, usada para detectar conflictos de edición. Se puede obtener mediante [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]]",
        "apihelp-edit-param-starttimestamp": "Marca de tiempo de cuando empezó el proceso de edición, usada para detectar conflictos de edición. Se puede obtener un valor apropiado usando <var>[[Special:ApiHelp/main|curtimestamp]]</var> cuando comiences el proceso de edición (por ejemplo, al cargar el contenido de la página por editar).",
        "apihelp-edit-param-recreate": "Reemplazar los errores acerca de la página de haber sido eliminados en el ínterin.",
index 6d90fb5..902221a 100644 (file)
@@ -10,7 +10,8 @@
                        "Toliño",
                        "Umherirrender",
                        "Amire80",
-                       "Macofe"
+                       "Macofe",
+                       "Hamilton Abreu"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw: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: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-query+allfileusages-param-dir": "Dirección na cal listar.",
        "apihelp-query+allfileusages-example-B": "Lista títulos de ficheiro, incluíndo os   eliminados, cos IDs de páxina dos que proveñen, comezando en <kbd>B</kbd>.",
        "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 eliminados.",
+       "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+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 modelos só neste espazo de nomes.",
+       "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-param-dir": "Dirección na cal listar.",
index 938c098..ea169a4 100644 (file)
        "apihelp-block-description": "Blokuoti vartotoją.",
        "apihelp-block-param-reason": "Blokavimo priežastis.",
        "apihelp-block-param-nocreate": "Neleisti kurti paskyrų.",
+       "apihelp-compare-param-fromtitle": "Pirmas pavadinimas palyginimui.",
+       "apihelp-compare-param-fromid": "Pirmojo lyginamo puslapio ID.",
+       "apihelp-compare-param-totitle": "Antrasis pavadinimas palyginimui.",
+       "apihelp-compare-param-toid": "Antrojo lyginamo puslapio ID.",
+       "apihelp-createaccount-description": "Kurti naują vartotojo paskyrą.",
        "apihelp-createaccount-param-name": "Naudotojo vardas.",
+       "apihelp-createaccount-param-email": "Vartotojo el. pašto adresas (nebūtina).",
        "apihelp-createaccount-param-realname": "Vardas (nebūtina).",
        "apihelp-delete-description": "Ištrinti puslapį.",
+       "apihelp-delete-param-watch": "Pridėti puslapį prie dabartinio vartotojo stebimųjų sąrašo.",
+       "apihelp-delete-param-unwatch": "Pašalinti puslapį iš dabartinio vartotojo stebimųjų sąrašo.",
        "apihelp-delete-example-simple": "Ištrinti <kbd>Main Page</kbd>.",
        "apihelp-delete-example-reason": "Ištrinti <kbd>Main Page</kbd> su priežastimi <kbd>Preparing for move</kbd>.",
        "apihelp-disabled-description": "Šis modulis buvo išjungtas.",
        "apihelp-edit-description": "Kurti ir redaguoti puslapius.",
+       "apihelp-edit-param-title": "Redaguotino puslapio pavadinimas. Negali būti naudojamas kartu su <var>$1pageid</var>.",
+       "apihelp-edit-param-pageid": "Redaguotino puslapio ID. Negali būti naudojamas kartu su <var>$1title</var>.",
+       "apihelp-edit-param-section": "Sekcijos numeris. <kbd>0</kbd> - viršutinei sekcijai, <kbd>new</kbd> - naujai sekcijai.",
        "apihelp-edit-param-sectiontitle": "Naujo skyriaus pavadinimas.",
        "apihelp-edit-param-text": "Puslapio turinys.",
+       "apihelp-edit-param-summary": "Keitimo santrauka. Taip pat sekcijos pavadinimas, kai $1section=new ir $1sectiontitle yra nenustatytas.",
        "apihelp-edit-param-minor": "Smulkus pakeitimas.",
        "apihelp-edit-param-notminor": "Nesmulkus pakeitimas.",
+       "apihelp-edit-param-bot": "Pažymėti šį pakeitimą kaip roboto pakeitimą.",
        "apihelp-edit-param-createonly": "Neredaguoti puslapio jei jis jau egzistuoja.",
+       "apihelp-edit-param-nocreate": "Parodyti klaidą, jei puslapis neegzistuoja.",
        "apihelp-edit-param-watch": "Pridėti puslapį į dabartinio vartotojo stebimųjų sąrašą.",
        "apihelp-edit-param-unwatch": "Pašalinti puslapį iš dabartinio vartotojo stebimųjų sąrašo.",
        "apihelp-edit-param-redirect": "Automatiškai išspręsti peradresavimus.",
+       "apihelp-edit-param-contentmodel": "Naujam turiniui taikomas turinio modelis.",
        "apihelp-edit-example-edit": "Redaguoti puslapį.",
        "apihelp-emailuser-description": "Siųsti el. laišką naudotojui.",
        "apihelp-emailuser-param-target": "El. laiško gavėjas.",
+       "apihelp-emailuser-param-subject": "Temos antraštė.",
+       "apihelp-emailuser-param-ccme": "Siųsti šio laiško kopiją man.",
+       "apihelp-emailuser-example-email": "Siųsti el. pašto vartotojui <kbd>WikiSysop</kbd> su tekstu <kbd>Content</kbd>.",
        "apihelp-expandtemplates-param-title": "Puslapio pavadinimas.",
+       "apihelp-feedcontributions-description": "Gražina vartotojo įnašų srautą.",
        "apihelp-feedcontributions-param-feedformat": "Srauto formatas.",
        "apihelp-feedcontributions-param-year": "Nuo metų (ir anksčiau).",
        "apihelp-feedcontributions-param-month": "Nuo mėnesio (ir anksčiau).",
        "apihelp-feedcontributions-param-tagfilter": "Filtruoti įnašus, kurie turi šias žymes.",
        "apihelp-feedcontributions-param-deletedonly": "Rodyti tik ištrintus įnašus.",
+       "apihelp-feedcontributions-param-toponly": "Rodyti tik keitimus, kurie yra paskutiniai pakeitimai.",
+       "apihelp-feedcontributions-param-newonly": "Rodyti tik keitimus, kurie yra puslapio sukūrimai.",
        "apihelp-feedcontributions-param-hideminor": "Slėpti nedidelius pakeitimus.",
+       "apihelp-feedcontributions-param-showsizediff": "Rodyti dydžio skirtumą tarp keitimų.",
+       "apihelp-feedcontributions-example-simple": "Gražinti įnašus vartotojui <kbd>Example</kbd>.",
+       "apihelp-feedrecentchanges-description": "Gražina naujausių pakeitimų srautą.",
        "apihelp-feedrecentchanges-param-feedformat": "Srauto formatas.",
+       "apihelp-feedrecentchanges-param-limit": "Maksimalus grąžinamų rezultatų skaičius.",
        "apihelp-feedrecentchanges-param-from": "Rodyti pakeitimus nuo tada.",
        "apihelp-feedrecentchanges-param-hideminor": "Slėpti smulkius pakeitimus.",
        "apihelp-feedrecentchanges-param-hidebots": "Slėpti robotų pakeitimus.",
        "apihelp-feedrecentchanges-param-hideanons": "Slėpti vartotojų anonimų pakeitimus.",
        "apihelp-feedrecentchanges-param-hideliu": "Slėpti užsiregistravusių vartotojų pakeitimus.",
        "apihelp-feedrecentchanges-param-hidemyself": "Slėpti pakeitimus, atliktus dabartinio vartotojo.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Slėpti kategorijos narystės pakeitimus.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtruoti pagal žymę.",
        "apihelp-feedrecentchanges-param-target": "Rodyti tik keitimus puslapiuose, pasiekiamuose iš šio puslapio.",
+       "apihelp-feedrecentchanges-param-showlinkedto": "Vietoj to, rodyti pakeitimus puslapyje, susietame su pasirinktu puslapiu.",
+       "apihelp-feedrecentchanges-param-categories": "Rodyti pakeitimus tik puslapiuose, esančiuose visuose šiuose kategorijose.",
+       "apihelp-feedrecentchanges-param-categories_any": "Vietoj to, rodyti tik pakeitimus puslapiuse, esančiuose bet kurioje iš kategorijų.",
        "apihelp-feedrecentchanges-example-simple": "Parodyti naujausius keitimus.",
+       "apihelp-feedrecentchanges-example-30days": "Rodyti naujausius pakeitimus per 30 dienų.",
+       "apihelp-feedwatchlist-description": "Gražina stebimųjų sąrašo srautą.",
        "apihelp-feedwatchlist-param-feedformat": "Srauto formatas.",
+       "apihelp-feedwatchlist-example-default": "Rodyti stebimųjų sąrašo srautą.",
+       "apihelp-feedwatchlist-example-all6hrs": "Rodyti visus pakeitimus stebimuose puslapiuose per paskutines 6 valandas.",
        "apihelp-filerevert-param-comment": "Įkėlimo komentaras.",
+       "apihelp-help-description": "Rodyti pagalbą pasirinktiems moduliams.",
+       "apihelp-help-example-main": "Pagalba pagrindiniam moduliui.",
        "apihelp-help-example-recursive": "Visa pagalba viename puslapyje.",
        "apihelp-help-example-help": "Pačio pagalbos modulio pagalba.",
        "apihelp-imagerotate-description": "Pasukti viena ar daugiau paveikslėlių.",
        "apihelp-imagerotate-param-rotation": "Kiek laipsnių pasukti paveikslėlį pagal laikrodžio rodyklę.",
+       "apihelp-imagerotate-example-simple": "Pasukti <kbd>File:Example.png</kbd> <kbd>90</kbd> laipsnių.",
        "apihelp-imagerotate-example-generator": "Pasukti visus paveikslėlius <kbd>Category:Flip</kbd> <kbd>180</kbd> laipsnių.",
        "apihelp-import-param-xml": "XML failas įkeltas.",
        "apihelp-login-param-name": "Vartotojo vardas.",
        "apihelp-query+allcategories-param-limit": "Kiek kategorijų gražinti.",
        "apihelp-query+allcategories-paramvalue-prop-size": "Prideda puslapių kategorijoje skaičių.",
        "apihelp-query+alldeletedrevisions-example-user": "Sąrašas paskutinių 50 ištrintų indėlių pagal vartotoją\n<kbd>Pavyzdys</kbd>.",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Prideda failo pavadinimą.",
+       "apihelp-query+allfileusages-param-limit": "Kiek iš viso gražinti objektų.",
+       "apihelp-query+allfileusages-example-generator": "Gauti puslapius, kuriuose yra failai.",
+       "apihelp-query+allimages-param-limit": "Kiek iš viso gražinti paveikslėlių.",
+       "apihelp-query+allimages-example-B": "Rodyti failų sąrašą, pradedant raide <kbd>B</kbd>.",
+       "apihelp-query+allimages-example-recent": "Rodyti neseniai įkeltų failų sąrašą, panašu į [[Special:NewFiles]].",
+       "apihelp-query+allimages-example-mimetypes": "Rodyti sąrašą failų su MIME tipu <kbd>image/png</kbd> arba <kbd>image/gif</kbd>",
+       "apihelp-query+allimages-example-generator": "Rodyti informaciją apie 4 failus, pradedant raide <kbd>T</kbd>.",
+       "apihelp-query+alllinks-param-prop": "Kokią informaciją įtraukti:",
        "apihelp-query+alllinks-paramvalue-prop-title": "Prideda nuorodos pavadinimą.",
        "apihelp-query+alllinks-param-limit": "Kiek objektų iš viso gražinti.",
        "apihelp-query+allmessages-param-lang": "Gražinti pranešimus šia kalba.",
+       "apihelp-query+allmessages-param-from": "Gražinti pranešimus, pradedant šiuo pranešimu.",
+       "apihelp-query+allmessages-param-to": "Gražinti pranešimus, baigiant šiuo pranešimu.",
        "apihelp-query+allrevisions-param-namespace": "Rodyti puslapius tik šioje vardų srityje.",
+       "apihelp-query+mystashedfiles-param-limit": "Kiek gauti failų.",
+       "apihelp-query+allusers-param-prop": "Kokią informaciją įtraukti:",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Nurodo visas grupes, kuriuose vartotojas yra automatiškai.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Nurodo teises, kurias turi vartotojas.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Prideda vartotojo pakeitimų skaičių.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Prideda laiko žymą, nurodančia kada vartotojas prisiregistravo, jei prieinama (gali būti tuščias).",
+       "apihelp-query+allusers-param-limit": "Kiek viso gražinti vartotojų vardų.",
+       "apihelp-query+allusers-param-witheditsonly": "Nurodyti tik vartotojus, kurie atliko keitimus.",
+       "apihelp-query+allusers-param-activeusers": "Nurodyti tik vartotojus, kurie buvo aktyvus per {{PLURAL:$1|paskutinę dieną|paskutines $1 dienas}}.",
+       "apihelp-query+allusers-example-Y": "Nurodyti vartotojus, pradedant nuo <kbd>Y</kbd>.",
+       "apihelp-query+backlinks-description": "Rasti visus puslapius, kurie nukreipia į pateiktą puslapį.",
        "apihelp-query+backlinks-example-simple": "Rodyti nuorodas <kbd>Pagrindinis puslapis</kbd>.",
+       "apihelp-query+blocks-description": "Nurodyti visus užblokuotus vartotojus ir IP adresus.",
+       "apihelp-query+blocks-param-limit": "Maksimalus nurodomų blokavimų skaičius.",
        "apihelp-query+blocks-paramvalue-prop-id": "Prideda bloko ID.",
        "apihelp-query+blocks-paramvalue-prop-user": "Prideda užblokuoto vartotojo vardą.",
        "apihelp-query+blocks-paramvalue-prop-userid": "Prideda užblokuoto vartotojo ID.",
        "apihelp-query+blocks-paramvalue-prop-expiry": "Prideda blokavimo pabaigos laiko žymes.",
        "apihelp-query+blocks-paramvalue-prop-reason": "Prideda blokavimo priežastį.",
        "apihelp-query+blocks-paramvalue-prop-range": "Prideda blokavimo paveiktų IP adresų diapazoną.",
+       "apihelp-query+blocks-example-simple": "Nurodyti blokavimus.",
+       "apihelp-query+blocks-example-users": "Nurodo vartotojų <kbd>Alice</kbd> ir <kbd>Bob</kbd> blokavimus.",
+       "apihelp-query+categories-description": "Nurodo visas kategorijas, kurioms priklauso puslapiai.",
+       "apihelp-query+categories-param-show": "Kokias kategorijas rodyti.",
+       "apihelp-query+categories-param-limit": "Kiek kategorijų gražinti.",
+       "apihelp-query+categories-param-categories": "Nurodyti tik šias kategorijas. Naudinga, kai norima patikrinti ar tam tikras puslapis yra tam tikroje kategorijoje.",
+       "apihelp-query+categories-example-simple": "Gauti sąrašą kategorijų, kurioms priklauso puslapis <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categories-example-generator": "Gauti informaciją apie visas kategorijas, panaudotas <kbd>Albert Einstein</kbd> puslapyje.",
+       "apihelp-query+categoryinfo-description": "Gražina informaciją apie pateiktas kategorijas.",
+       "apihelp-query+categoryinfo-example-simple": "Gauti informaciją apie <kbd>Category:Foo</kbd> ir <kbd>Category:Bar</kbd>.",
+       "apihelp-query+categorymembers-description": "Nurodyti visus puslapius pateiktoje kategorijoje.",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Prideda puslapio ID.",
+       "apihelp-query+categorymembers-param-limit": "Maksimalus grąžinamų puslapių skaičius.",
+       "apihelp-query+categorymembers-param-startsortkey": "Vietoj to, naudoti $1starthexsortkey",
+       "apihelp-query+categorymembers-param-endsortkey": "Vietoj to, naudoti $1endhexsortkey",
+       "apihelp-query+categorymembers-example-simple": "Gauti pirmus 10 puslapiu iš <kbd>Category:Physics</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "Gauti puslapių informaciją apie pirmus 10 puslapių iš <kbd>Category:Physics</kbd>.",
+       "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Režimas|Režimai}}: $2",
+       "apihelp-query+duplicatefiles-param-limit": "Kiek pasikartojančių failų gražinti.",
+       "apihelp-query+duplicatefiles-example-simple": "Ieškoti [[:File:Albert Einstein Head.jpg]] dublikatų.",
+       "apihelp-query+duplicatefiles-example-generated": "Ieškoti pasikartojančių visuose failuose.",
+       "apihelp-query+embeddedin-param-title": "Pavadinimas paieškai. Negali būti naudojamas kartu su $1pageid.",
+       "apihelp-query+embeddedin-param-pageid": "Puslapio ID paieškai. Negali būti naudojamas kartu su $1title.",
+       "apihelp-query+embeddedin-param-limit": "Kiek puslapių iš viso gražinti.",
+       "apihelp-query+extlinks-param-limit": "Kiek nuorodų grąžinti.",
+       "apihelp-query+extlinks-example-simple": "Gauti sąrašą <kbd>Main Page</kbd> išorinių nuorodų.",
+       "apihelp-query+exturlusage-param-prop": "Kokią informaciją įtraukti:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Prideda puslapio ID.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Prideda URL, panaudota puslapyje.",
+       "apihelp-query+exturlusage-param-limit": "Kiek puslapių gražinti.",
+       "apihelp-query+exturlusage-example-simple": "Rodyti puslapius, nurodančius į <kbd>http://www.mediawiki.org</kbd>.",
+       "apihelp-query+filearchive-param-prop": "Kokią paveikslėlio informaciją gauti:",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Prideda laiko žymę įkeltai versijai.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Prideda vartotoją, kuris įkėlė paveikslėlio versiją.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Prideda paveikslėlio dydžio informaciją baitais ir aukštį, plotį ir puslapių skaičių (jei taikoma).",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Prideda paveikslėlio MIME.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Prideda paveikslėlio medijos tipą.",
+       "apihelp-query+filearchive-example-simple": "Rodyti visų ištrintų failų sąrašą.",
+       "apihelp-query+fileusage-param-prop": "Kurias savybes gauti:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "Kiekvieno puslapio ID.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Kiekvieno puslapio pavadinimas.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Pažymėti jei puslapis yra peradresavimas.",
+       "apihelp-query+fileusage-param-limit": "Kiek gražinti.",
+       "apihelp-query+fileusage-example-simple": "Gauti sąrašą puslapių, kurie naudoja [[:File:Example.jpg]].",
+       "apihelp-query+fileusage-example-generator": "Gauti informaciją apie puslapius, kurie naudoja [[:File:Example.jpg]].",
+       "apihelp-query+imageinfo-description": "Gražina failo informaciją ir įkėlimų istoriją.",
+       "apihelp-query+imageinfo-param-prop": "Kurią failo informaciją gauti:",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Prideda laiko žymę įkeltai versijai.",
+       "apihelp-query+imageinfo-paramvalue-prop-user": "Prideda vartotoją, kuris įkėlę kiekvieną failo versiją.",
+       "apihelp-query+imageinfo-paramvalue-prop-userid": "Prideda vartotojo ID, kuris įkėlė kiekvieną failo versiją.",
+       "apihelp-query+imageinfo-paramvalue-prop-comment": "Versijos komentaras.",
+       "apihelp-query+imageinfo-paramvalue-prop-mime": "Prideda MIME failo tipą.",
+       "apihelp-query+imageinfo-paramvalue-prop-mediatype": "Prideda failo medijos tipą.",
+       "apihelp-query+imageinfo-param-urlheight": "Panašu į $1urlwidth.",
+       "apihelp-query+images-param-limit": "Kiek failų gražinti.",
+       "apihelp-query+images-param-images": "Nurodyti tik šiuos failus. Naudinga, kai norima patikrinti ar tam tikras puslapis turi tam tikrą failą.",
+       "apihelp-query+images-example-simple": "Gauti sąrašą failų, kurie naudojami [[Main Page]].",
+       "apihelp-query+images-example-generator": "Gauti informaciją apie failus, kurie yra naudojami [[Main Page]].",
+       "apihelp-query+imageusage-description": "Rasti visus puslapius, kurie naudoja duotą paveikslėlio pavadinimą.",
+       "apihelp-query+info-description": "Gauti pagrindinę puslapio informaciją.",
+       "apihelp-query+info-param-prop": "Kokias papildomas savybes gauti:",
+       "apihelp-query+info-paramvalue-prop-protection": "Nurodyti kiekvieno puslapio apsaugos lygį.",
+       "apihelp-query+info-paramvalue-prop-watched": "Kiekvieno puslapio stebėjimo būsena.",
+       "apihelp-query+info-paramvalue-prop-watchers": "Stebėtojų skaičius, jei leidžiama.",
+       "apihelp-query+info-paramvalue-prop-readable": "Ar vartotojas gali skaityti šį puslapį.",
+       "apihelp-query+info-paramvalue-prop-preload": "Pateikia tekstą, gražinta EditFormPreloadText.",
+       "apihelp-query+info-example-simple": "Gauti informaciją apie puslapį <kbd>Main Page</kbd>.",
+       "apihelp-query+info-example-protection": "Gauti bendrą ir apsaugos informaciją apie <kbd>Main Page</kbd> puslapį.",
+       "apihelp-query+iwbacklinks-param-prop": "Kurias savybes gauti:",
+       "apihelp-query+iwbacklinks-example-simple": "Gauti puslapius, nurodančius į [[wikibooks:Test]].",
+       "apihelp-query+iwbacklinks-example-generator": "Gauti informaciją apie puslapius, nurodančius į [[wikibooks:Test]].",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Prideda visą URL.",
+       "apihelp-query+langbacklinks-param-lang": "Kalbos nuorodos kalba.",
+       "apihelp-query+langbacklinks-param-limit": "Kiek puslapių iš viso gražinti.",
+       "apihelp-query+langbacklinks-param-prop": "Kurias savybes gauti:",
+       "apihelp-query+langbacklinks-example-simple": "Gauti puslapius, nurodančius į [[:fr:Test]].",
+       "apihelp-query+langbacklinks-example-generator": "Gauti informaciją apie puslapius, nurodančius į [[:fr:Test]].",
+       "apihelp-query+langlinks-param-url": "Ar gauti visą URL (negali būti naudojamas su <var>$1prop</var>).",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Prideda visą URL.",
+       "apihelp-query+links-param-limit": "Kiek nuorodų grąžinti.",
+       "apihelp-query+links-example-simple": "Gauti nuorodas iš puslapio <kbd>Main Page</kbd>",
+       "apihelp-query+links-example-generator": "Gauti informaciją apie puslapių nuorodas puslapyje <kbd>Main Page</kbd>.",
+       "apihelp-query+linkshere-description": "Rasti visus puslapius, kurie nurodo į pateiktus puslapius.",
+       "apihelp-query+linkshere-param-prop": "Kurias savybes gauti:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Kiekvieno puslapio ID.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Kiekvieno puslapio pavadinimas.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Pažymėti jei puslapis yra peradresavimas.",
+       "apihelp-query+linkshere-param-limit": "Kiek gražinti.",
+       "apihelp-query+linkshere-param-show": "Rodyti tik elementus, atitinkančius šiuos kriterijus:\n;redirect:Rodyti tik nukreipimus.\n;!redirect:Rodyti tik ne nukreipimus.",
+       "apihelp-query+linkshere-example-simple": "Gauti sąrašą puslapių, kurie nurodo į [[Main Page]].",
+       "apihelp-query+linkshere-example-generator": "Gauti informaciją apie puslapius, kurie nurodo į [[Main Page]].",
+       "apihelp-query+logevents-description": "Gauti įvykius iš žurnalų.",
+       "apihelp-query+logevents-param-prop": "Kurias savybes gauti:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Prideda žurnalo įvykio ID.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Prideda žurnalo įvykio tipą.",
        "apihelp-query+watchlist-paramvalue-type-external": "Išoriniai keitimai.",
        "apihelp-query+watchlist-paramvalue-type-new": "Puslapio sukūrimai.",
        "apihelp-stashedit-param-title": "Puslapio pavadinimas buvo redaguotas.",
index 6e85779..7ecfebe 100644 (file)
@@ -28,7 +28,7 @@
        "apihelp-edit-param-text": "Contengut de la pagina.",
        "apihelp-edit-param-minor": "Modificacion menora.",
        "apihelp-edit-param-notminor": "Modificacion pas menora.",
-       "apihelp-edit-param-bot": "Marcar aquesta modificacion coma robòt.",
+       "apihelp-edit-param-bot": "Marcar aquesta modificacion coma efectuada per un robòt.",
        "apihelp-edit-example-edit": "Modificar una pagina",
        "apihelp-edit-example-prepend": "Prefixar una pagina per <kbd>_&#95;NOTOC_&#95;</kbd>",
        "apihelp-emailuser-description": "Mandar un corrièr electronic un l’utilizaire.",
index 3670172..deb612c 100644 (file)
@@ -5,28 +5,29 @@
                        "Fúlvio",
                        "Macofe",
                        "Jkb8",
-                       "Hamilton Abreu"
+                       "Hamilton Abreu",
+                       "Mansil"
                ]
        },
        "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 <i>cluster</i> de bases de dados replicadas. Para impedir que as operações causem ainda mais atrasos de replicação do <i>site</i>, 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-smaxage": "Definir no cabeçalho HTTP <code>s-maxage</code> de controlo da <i>cache</i> este número de segundos. Os erros nunca são armazenados na <i>cache</i>.",
-       "apihelp-main-param-maxage": "Definir no cabeçalho HTTP <code>max-age</code> de controlo da <i>cache</i> este número de segundos. Os erros nunca são armazenados na <i>cache</i>.",
+       "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-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ô.",
        "apihelp-main-param-assertuser": "Verificar que o utilizador atual é o utilizador nomeado.",
        "apihelp-main-param-requestid": "Qualquer valor fornecido aqui será incluído na resposta. Pode ser usado para distinguir pedidos.",
-       "apihelp-main-param-servedby": "Incluir o nome do servidor que serviu o pedido nos resultados.",
+       "apihelp-main-param-servedby": "Incluir nos resultados o nome do servidor que serviu o pedido.",
        "apihelp-main-param-curtimestamp": "Incluir a data e hora atuais no resultado.",
-       "apihelp-main-param-origin": "Ao aceder à API usando um pedido AJAX entre domínios (CORS), coloque aqui o domínio de origem. Isto tem de ser incluído em todas as verificações prévias e, portanto, tem de fazer parte do URI do pedido (e não do conteúdo do POST).\n\nPara pedidos autenticados, este valor tem de corresponder de forma exata a um dos cabeçalhos <code>Origin</code>, portanto tem de ser algo como <kbd>https://en.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não for igual ao cabeçalho <code>Origin</code>, será devolvida a resposta 403. Se este parâmetro for igual ao cabeçalho <code>Origin</code> e a origem for permitida (<i>white-listed</i>) os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão preenchidos.\n\nPara pedidos não autenticados, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code>\nseja preenchido, mas <code>Access-Control-Allow-Credentials</code> terá o valor <code>false</code> e o acesso a todos os dados específicos do utilizador está restringido.",
+       "apihelp-main-param-origin": "Ao aceder à API usando um pedido AJAX entre domínios (CORS), coloque aqui o domínio de origem. Isto tem de ser incluído em todas as verificações prévias e, portanto, tem de fazer parte do URI do pedido (e não do conteúdo do POST).\n\nPara pedidos autenticados, este valor tem de corresponder de forma exata a um dos cabeçalhos <code>Origin</code>, portanto, tem de ser algo como <kbd>https://en.wikipedia.org</kbd> ou <kbd>https://meta.wikimedia.org</kbd>. Se este parâmetro não for igual ao cabeçalho <code>Origin</code>, será devolvida a resposta 403. Se este parâmetro for igual ao cabeçalho <code>Origin</code> e a origem for permitida (''white-listed'') os cabeçalhos <code>Access-Control-Allow-Origin</code> e <code>Access-Control-Allow-Credentials</code> serão preenchidos.\n\nPara pedidos não autenticados, especifique o valor <kbd>*</kbd>. Isto fará com que o cabeçalho <code>Access-Control-Allow-Origin</code>\nseja preenchido, mas <code>Access-Control-Allow-Credentials</code> terá o valor <code>false</code> e o acesso a todos os dados específicos do utilizador está restringido.",
        "apihelp-main-param-uselang": "Língua a usar nas traduções de mensagens. <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>user</kbd> para usar a língua nas preferências do utilizador atual, ou especifique <kbd>content</kbd> para usar a língua de conteúdo desta wiki.",
        "apihelp-block-description": "Bloquear um utilizador.",
-       "apihelp-block-param-user": "Nome de utilizador(a), endereço ou gama de IP que pretende bloquear.",
+       "apihelp-block-param-user": "O nome de utilizador, endereço IP ou gama de endereços IP a serem bloqueados.",
        "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-reason": "Motivo do bloqueio.",
+       "apihelp-block-param-reason": "O motivo do bloqueio.",
        "apihelp-block-param-anononly": "Bloquear só utilizadores anónimos (isto é, impedir edições anónimas a partir deste endereço IP)",
-       "apihelp-block-param-nocreate": "Impedir criação de contas.",
+       "apihelp-block-param-nocreate": "Impedir criação de contas.",
        "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-delete-param-watch": "Adicionar a página às páginas vigiadas do utilizador atual.",
        "apihelp-delete-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-delete-param-unwatch": "Remover a página das páginas vigiadas do utilizador atual.",
-       "apihelp-delete-example-simple": "Eliminar <kbd>Main Page</kbd>.",
-       "apihelp-disabled-description": "O módulo foi desativado.",
+       "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-param-sectiontitle": "Título para uma nova secção.",
        "apihelp-edit-param-text": "Conteúdo da página.",
+       "apihelp-edit-param-summary": "Resumo da edição. Também é o título da secção quando $1section=new e $1sectiontitle não está definido.",
+       "apihelp-edit-param-tags": "Etiquetas de modificação a aplicar à revisão.",
        "apihelp-edit-param-minor": "Edição menor.",
-       "apihelp-edit-param-bot": "Marcar esta edição como robô.",
+       "apihelp-edit-param-notminor": "Edição não menor.",
+       "apihelp-edit-param-bot": "Marcar esta edição como edição de robô.",
+       "apihelp-edit-param-basetimestamp": "Data e hora da revisão de base, usada para detetar conflitos de edição. Pode ser obtida usando [[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]].",
+       "apihelp-edit-param-starttimestamp": "Data e hora de início do processo de edição, usada para detetar conflitos de edição. Pode-se obter um valor apropriado usando <var>[[Special:ApiHelp/main|curtimestamp]]</var> ao iniciar o processo de edição (por exemplo, ao carregar o conteúdo da página para edição).",
+       "apihelp-edit-param-recreate": "Ignorar todos os erros acerca da página ter sido eliminada entretanto.",
        "apihelp-edit-param-createonly": "Não editar a página se ela já existe.",
        "apihelp-edit-param-nocreate": "Gerar um erro se a página não existe.",
        "apihelp-edit-param-watch": "Adicionar a página às páginas vigiadas do utilizador atual.",
        "apihelp-edit-param-unwatch": "Remover a página da lista de páginas vigiadas do utilizador atual.",
        "apihelp-edit-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-edit-param-md5": "A chave MD5 do parâmetro $1text, ou os parâmetros $1prependtext e $1appendtext concatenados. Se estiver definido, a edição não será realizada a menos que a chave seja correta.",
-       "apihelp-edit-param-prependtext": "Adicionar este texto ao início da página. Substitui $1text.",
-       "apihelp-edit-param-appendtext": "Adicionar este texto ao fim da página. Substitui $1text.\n\nPara acrescentar uma nova secção no fim da página, usar $1section=new em vez deste parâmetro.",
-       "apihelp-edit-param-undo": "Desfazer esta revisão. Substitui $1text, $1prependtext e $1appendtext.",
+       "apihelp-edit-param-prependtext": "Adicionar este texto ao início da página. Tem precedência sobre $1text.",
+       "apihelp-edit-param-appendtext": "Adicionar este texto ao fim da página. Tem precedência sobre $1text.\n\nPara acrescentar uma nova secção no fim da página, usar $1section=new em vez deste parâmetro.",
+       "apihelp-edit-param-undo": "Desfazer esta revisão. Tem precedência sobre $1text, $1prependtext e $1appendtext.",
        "apihelp-edit-param-undoafter": "Desfazer todas as revisões desde $1undo até esta. Se não for definido, desfazer só uma revisão.",
        "apihelp-edit-param-redirect": "Resolver automaticamente redirecionamentos.",
        "apihelp-edit-param-contentformat": "Formato para seriação do conteúdo, usado para o texto de entrada.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Quaisquer categorias existentes na entrada que não estão representadas no texto em notação wiki de saída.",
        "apihelp-expandtemplates-paramvalue-prop-properties": "Propriedades da página, definidas por palavras mágicas expandidas, no texto em notação wiki.",
        "apihelp-expandtemplates-paramvalue-prop-volatile": "Indica se o resultado é volátil e não deve ser reutilizado noutra parte da página.",
-       "apihelp-expandtemplates-paramvalue-prop-ttl": "O período máximo a partir do qual os armazenamentos do resultado na <i>cache</i> devem ser invalidados.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "O período máximo a partir do qual os armazenamentos do resultado na ''cache'' devem ser invalidados.",
        "apihelp-expandtemplates-paramvalue-prop-modules": "Quaisquer módulos ResourceLoader que as funções do analisador sintático solicitaram que fossem adicionados ao resultado de saída. Um dos valores <kbd>jsconfigvars</kbd> ou <kbd>encodedjsconfigvars</kbd> tem de ser solicitado em conjunto com o valor <kbd>modules</kbd>.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "Devolve as variáveis de configuração JavaScript específicas desta página.",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "Devolve as variáveis de configuração JavaScript específicas da página, no formato de uma ''string'' JSON.",
        "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-deletedonly": "Mostrar apenas contribuições eliminadas.",
+       "apihelp-feedcontributions-param-year": "Desde o ano.",
+       "apihelp-feedcontributions-param-month": "Desde o mês.",
+       "apihelp-feedcontributions-param-tagfilter": "Filtrar as contribuições para produzir as que têm estas etiquetas.",
+       "apihelp-feedcontributions-param-deletedonly": "Mostrar apenas as contribuições eliminadas.",
        "apihelp-feedcontributions-param-toponly": "Mostrar apenas as edições mais recentes.",
+       "apihelp-feedcontributions-param-newonly": "Mostrar apenas as edições que são criações de páginas.",
        "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-limit": "Número máximo de resultados a apresentar.",
+       "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-associated": "Incluir o espaço nominal associado (de discussão ou principal).",
+       "apihelp-feedrecentchanges-param-days": "Dias aos quais limitar os resultados.",
+       "apihelp-feedrecentchanges-param-limit": "O número máximo de resultados a serem devolvidos.",
        "apihelp-feedrecentchanges-param-from": "Mostrar alterações desde então.",
        "apihelp-feedrecentchanges-param-hideminor": "Ocultar edições menores.",
-       "apihelp-feedrecentchanges-param-hidebots": "Ocultar alterações feitas por robôs.",
-       "apihelp-feedrecentchanges-param-hideanons": "Ocultar alterações feitas por utilizadores anónimos.",
-       "apihelp-feedrecentchanges-param-hideliu": "Ocultar alterações feitas por utilizadores registados.",
-       "apihelp-feedrecentchanges-param-hidepatrolled": "Ocultar alterações patrulhadas.",
-       "apihelp-feedrecentchanges-param-hidemyself": "Ocultar alterações feitas pelo utilizador atual.",
-       "apihelp-feedrecentchanges-param-hidecategorization": "Ocultar alterações da pertença a categorias.",
+       "apihelp-feedrecentchanges-param-hidebots": "Ocultar mudanças feitas por robôs.",
+       "apihelp-feedrecentchanges-param-hideanons": "Ocultar mudanças feitas por utilizadores anónimos.",
+       "apihelp-feedrecentchanges-param-hideliu": "Ocultar mudanças feitas por utilizadores registados.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Ocultar mudanças patrulhadas.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Ocultar mudanças feitas pelo utilizador atual.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Ocultar mudanças de pertença a categorias.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrar por etiqueta.",
        "apihelp-feedrecentchanges-param-target": "Mostrar apenas mudanças em páginas afluentes a esta.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostrar mudanças em páginas com ligações para a página selecionada.",
        "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-help-example-main": "Ajuda para o módulo principal",
-       "apihelp-help-example-recursive": "Toda a ajuda numa página",
-       "apihelp-login-description": "Entrar e obter <i>cookies</i> 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-param-name": "Nome de utilizador(a).",
+       "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-param-helpformat": "Formato de saída da ajuda.",
+       "apihelp-help-param-wrap": "Envolver a saída numa estrutura padrão de resposta da API.",
+       "apihelp-help-param-toc": "Incluir uma tabela de conteúdo na saída HTML.",
+       "apihelp-help-example-main": "Ajuda para o módulo principal.",
+       "apihelp-help-example-submodules": "Ajuda para <kbd>action=query</kbd> e todos os respetivos submódulos.",
+       "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-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-interwikipage": "Para importações interwikis: a página a importar.",
+       "apihelp-import-param-fullhistory": "Para importações interwikis: importar o historial completo, não apenas a versão atual.",
+       "apihelp-import-param-templates": "Para importações interwikis: importar também todas as predefinições incluídas.",
+       "apihelp-import-param-namespace": "Importar para este espaço nominal. Não pode ser usado em conjunto com <var>$1rootpage</var>.",
+       "apihelp-import-param-rootpage": "Importar como subpágina desta página. Não pode ser usado em conjunto com <var>$1namespace</var>.",
+       "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 e limpar dados de sessão.",
-       "apihelp-managetags-description": "Executar tarefas de gestão relacionadas com alteração de etiquetas.",
+       "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-param-ignorewarnings": "Indica se devem ser ignorados todos os avisos gerados durante a operação.",
+       "apihelp-managetags-example-create": "Criar uma etiqueta com o nome <kbd>spam</kbd> e o motivo <kbd>For use in edit patrolling</kbd>",
+       "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-toid": "Identificador da página à qual o historial será fundido. Não pode ser usado em conjunto com <var>$1to</var>.",
+       "apihelp-mergehistory-param-timestamp": "Data e hora até a qual as revisões serão movidas do historial da página de origem para o historial das páginas de destino. Se omitido, todo o historial da página de origem será fundido com a página de destino.",
+       "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-reason": "Motivo para a alteração do nome.",
+       "apihelp-move-param-movetalk": "Alterar o nome da página de discussão, se esta existir.",
+       "apihelp-move-param-movesubpages": "Alterar o nome das subpáginas, se estas existirem.",
        "apihelp-move-param-noredirect": "Não criar um redirecionamento.",
        "apihelp-move-param-watch": "Adicionar a página e o redirecionamento às páginas vigiadas do utilizador atual.",
+       "apihelp-move-param-unwatch": "Remover a página e o redirecionamento das páginas vigiadas do utilizador atual.",
        "apihelp-move-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-move-param-ignorewarnings": "Ignorar quaisquer avisos.",
-       "apihelp-opensearch-param-limit": "Número máximo de resultados a apresentar.",
+       "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-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-options-param-reset": "Reiniciar preferências para os padrões do sítio.",
-       "apihelp-options-example-reset": "Reiniciar todas as preferências",
+       "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-param-optionname": "O nome da opção que deve ser configurada com o valor dado por <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "O valor para a opção especificada por <var>$1optionname</var>.",
+       "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-mainmodule": "Obter também informação sobre o módulo principal (do nível de topo). Em vez de usá-lo, usar <kbd>$1modules=main</kbd>.",
+       "apihelp-paraminfo-param-pagesetmodule": "Obter também informação sobre o módulo pageset (fornecendo titles= e restantes).",
+       "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-param-page": "Analisar o conteúdo desta página. Não pode ser usado em conjunto com <var>$1text</var> e <var>$1title</var>.",
+       "apihelp-parse-param-pageid": "Analisar o conteúdo desta página. Tem precedência sobre <var>$1page</var>.",
+       "apihelp-parse-param-redirects": "Se <var>$1page</var> ou <var>$1pageid</var> estiverem definidos para um redirecionamento, resolvê-lo.",
+       "apihelp-parse-param-oldid": "Analisar o conteúdo desta revisão. Tem precedência sobre <var>$1page</var> e <var>$1pageid</var>.",
        "apihelp-parse-param-prop": "As informações que devem ser obtidas:",
+       "apihelp-parse-paramvalue-prop-text": "Fornece o texto analisado, de um texto com notação wiki.",
+       "apihelp-parse-paramvalue-prop-langlinks": "Fornece os links interlínguas do texto analisado.",
+       "apihelp-parse-paramvalue-prop-categories": "Fornece as categorias do texto analisado.",
+       "apihelp-parse-paramvalue-prop-categorieshtml": "Fornece a versão HTML das categorias.",
+       "apihelp-parse-paramvalue-prop-links": "Fornece os links internos do texto analisado.",
+       "apihelp-parse-paramvalue-prop-templates": "Fornece as predefinições do texto analisado.",
+       "apihelp-parse-paramvalue-prop-images": "Fornece as imagens do texto analisado.",
+       "apihelp-parse-paramvalue-prop-externallinks": "Fornece os links externos do texto analisado.",
+       "apihelp-parse-paramvalue-prop-sections": "Fornece as secções do texto analisado.",
        "apihelp-parse-paramvalue-prop-revid": "Adiciona o identificador de revisão da página analisada.",
-       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Devolve as variáveis de configuração JavaScript específicas da página, no formato de uma ''string'' JSON.",
-       "apihelp-parse-param-section": "Apenas analisar o conteúdo desta secção.\n\nQuando <kbd>nova</kbd>, analise <var>$1text</var> e <var>$1sectiontitle</var> como se fosse adicionar uma nova secção da página.\n\n<kbd>novo</kbd> só é permitido quando especifica <var>text</var>.",
-       "apihelp-patrol-description": "Patrulhar uma página ou edição.",
-       "apihelp-patrol-example-rcid": "Patrulhar uma mudança recente",
-       "apihelp-patrol-example-revid": "Patrulhar uma edição",
+       "apihelp-parse-paramvalue-prop-displaytitle": "Adiciona o título do texto analisado.",
+       "apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece os elementos a colocar no <code>&lt;head&gt;</code> da página.",
+       "apihelp-parse-paramvalue-prop-headhtml": "Fornece o <code>&lt;head&gt;</code> analisado da página.",
+       "apihelp-parse-paramvalue-prop-modules": "Fornece os módulos ResourceLoader usados na página. Para carregá-los, usar <code>mw.loader.using()</code>. Uma das variáveis <kbd>jsconfigvars</kbd> ou <kbd>encodedjsconfigvars</kbd> tem de ser pedida em conjunto com <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Fornece as variáveis de configuração JavaScript específicas da página. Para aplicá-las, usar <code>mw.config.set()</code>.",
+       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Fornece as variáveis de configuração JavaScript específicas da página, no formato de uma ''string'' JSON.",
+       "apihelp-parse-paramvalue-prop-indicators": "Fornece o HTML dos indicadores de estado de página que são usados na página.",
+       "apihelp-parse-paramvalue-prop-iwlinks": "Fornece os links interwikis do texto analisado.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Fornece o texto original com notação wiki que foi analisado.",
+       "apihelp-parse-paramvalue-prop-properties": "Fornece várias propriedades definidas no texto analisado.",
+       "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-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-disablelimitreport": "Omitir o relatório de limites (\"NewPP limit report\") do resultado de saída do analisador sintático.",
+       "apihelp-parse-param-disablepp": "Em vez deste, usar <var>$1disablelimitreport</var>.",
+       "apihelp-parse-param-disableeditsection": "Omitir links para edição da secção no resultado da análise sintática.",
+       "apihelp-parse-param-disabletidy": "Não fazer a limpeza do HTML (isto é, o ''tidy'') no resultado da análise sintática.",
+       "apihelp-parse-param-generatexml": "Gerar a árvore de análise XML (requer o modelo de conteúdo <code>$1</code>; substituído por <kbd>$2prop=parsetree</kbd>).",
+       "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-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 do registo de patrulha.",
+       "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-param-expiry": "Datas e horas de expiração. Se só uma data e hora for definida, será usada para todas as proteções. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> ou <kbd>never</kbd>, para proteção sem expiração.",
+       "apihelp-protect-param-reason": "Motivo da proteção ou desproteção.",
+       "apihelp-protect-param-tags": "Etiquetas de modificação a aplicar à entrada no registo de proteções.",
+       "apihelp-protect-param-cascade": "Ativar a proteção em cascata (isto é, proteger as predefinições transcluídas e as imagens usadas nesta página). Ignorado se nenhum dos níveis de proteção dados suportam a proteção em cascata.",
        "apihelp-protect-param-watch": "Se definido, adicionar a página que está a ser protegida ou desprotegida às páginas vigiadas do utilizador atual.",
        "apihelp-protect-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-protect-example-protect": "Proteger uma página",
-       "apihelp-purge-description": "Limpar a <i>cache</i> para os títulos especificados.\n\nRequer um pedido POST se o utilizador não tiver iniciado uma sessão.",
-       "apihelp-query-description": "Obter dados do MediaWiki e acerca dele.\n\nTodas as modificações de dados têm primeiro de usar um pedido para adquirir uma chave, de forma a impedir ações abusivas de <i>sites</i> maliciosos.",
+       "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.\n\nRequer um pedido POST se o utilizador não tiver iniciado uma sessão.",
+       "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 de 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-iwurl": "Indica se deve ser obtido o URL completo quando o título é um <i>link</i> interwikis.",
+       "apihelp-query-param-indexpageids": "Incluir uma secção adicional de identificadores de página que lista todos os identificadores de página devolvidos.",
+       "apihelp-query-param-export": "Exportar as revisões atuais de todas as páginas fornecidas ou geradas.",
+       "apihelp-query-param-exportnowrap": "Devolver o XML de exportação sem o envolver num resultado XML (o mesmo formato que [[Special:Export]]). Só pode ser usado com $1export.",
+       "apihelp-query-param-iwurl": "Indica se deve ser obtido o URL completo quando o título é um ''link'' interwikis.",
+       "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-param-dir": "A direção da ordenação.",
+       "apihelp-query+allcategories-param-min": "Só devolver as categorias que tenham no mínimo este número de membros.",
+       "apihelp-query+allcategories-param-max": "Só devolver as categorias que tenham no máximo este número de membros.",
+       "apihelp-query+allcategories-param-limit": "O número de categorias a serem devolvidas.",
        "apihelp-query+allcategories-param-prop": "As propriedades a serem obtidas:",
        "apihelp-query+allcategories-paramvalue-prop-size": "Adiciona o número de páginas na categoria.",
-       "apihelp-query+alldeletedrevisions-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "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-end": "A data e hora na qual será terminada a enumeração.",
+       "apihelp-query+alldeletedrevisions-param-from": "Começar a listagem neste título.",
+       "apihelp-query+alldeletedrevisions-param-to": "Terminar a listagem neste título.",
+       "apihelp-query+alldeletedrevisions-param-prefix": "Procurar todos os títulos de página que começam por este valor.",
        "apihelp-query+alldeletedrevisions-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
+       "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-example-user": "Lista das últimas 50 contribuições eliminadas pelo utilizador <kbd>Example</kbd>.",
+       "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-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-param-unique": "Mostrar só nomes de ficheiro únicos. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nAo ser usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+allfileusages-param-prop": "As informações que devem ser incluídas:",
-       "apihelp-query+allfileusages-paramvalue-prop-ids": "Adiciona os identificadores das páginas que o utilizam (não pode ser usado com $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Adiciona os identificadores das páginas que utilizam (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Adiciona o título do ficheiro.",
+       "apihelp-query+allfileusages-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+allfileusages-param-dir": "A direção de listagem.",
+       "apihelp-query+allfileusages-example-B": "Listar os títulos de ficheiros, incluindo aqueles em falta, com os identificadores das páginas de onde provêm, começando no <kbd>B</kbd>.",
+       "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-param-start": "A data e hora a partir da qual será começada a enumeração. Só pode ser usado com $1sort=timestamp.",
+       "apihelp-query+allimages-param-to": "O título da imagem no qual será terminada a enumeração. Só pode ser usado com $1sort=name.",
+       "apihelp-query+allimages-param-start": "A data e hora da imagem a partir da qual será começada a enumeração. Só pode ser usado com $1sort=timestamp.",
+       "apihelp-query+allimages-param-end": "A data e hora da imagem na qual será terminada a enumeração. Só pode ser usado com $1sort=timestamp.",
+       "apihelp-query+allimages-param-prefix": "Procurar todos os títulos de imagem que começam por este valor. Só pode ser usado com $1sort=name.",
+       "apihelp-query+allimages-param-minsize": "Limitar só às imagens com este número mínimo de bytes.",
+       "apihelp-query+allimages-param-maxsize": "Limitar só às imagens com este número máximo de bytes.",
+       "apihelp-query+allimages-param-sha1": "Resumo criptográfico SHA1 da imagem. Tem precedência sobre $1sha1base36.",
+       "apihelp-query+allimages-param-sha1base36": "Resumo criptográfico SHA1 da imagem em base 36 (usado no MediaWiki).",
+       "apihelp-query+allimages-param-user": "Devolver só os ficheiros carregados por este utilizador. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "Como filtrar os ficheiros carregados por robôs. Só pode ser usado com $1sort=timestamp. Não pode ser usado em conjunto com $1user.",
+       "apihelp-query+allimages-param-mime": "Tipos MIME a procurar; por exemplo, <kbd>image/jpeg</kbd>.",
+       "apihelp-query+allimages-param-limit": "O número total de imagens a serem devolvidas.",
+       "apihelp-query+allimages-example-B": "Mostrar uma lista dos ficheiros que começam com a letra <kbd>B</kbd>.",
+       "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-param-unique": "Mostrar só títulos ligados únicos. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nAo ser usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+alllinks-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Adiciona o identificador da página que contém a ligação (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Adiciona o título do ''link''.",
        "apihelp-query+alllinks-param-namespace": "O espaço nominal a ser enumerado.",
+       "apihelp-query+alllinks-param-limit": "O número total de entradas a serem devolvidas.",
        "apihelp-query+alllinks-param-dir": "A direção de listagem.",
+       "apihelp-query+alllinks-example-B": "Listar os títulos para os quais existem ligações, incluindo títulos em falta, com os identificadores das páginas que contêm as respetivas ligações, começando pela letra <kbd>B</kbd>.",
+       "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-nocontent": "Se definido, não incluir o conteúdo das mensagens no resultado de saída.",
+       "apihelp-query+allmessages-param-includelocal": "Incluir também as mensagens locais, isto é, mensagens que não existem no software mas existem como uma página no espaço nominal MediaWiki:.\nIsto lista todas as páginas do espaço nominal MediaWiki:, portanto, também irá listar aquelas que não são verdadeiramente mensagens, como [[MediaWiki:Common.js|Common.js]].",
+       "apihelp-query+allmessages-param-args": "Os argumentos a serem substituídos na mensagem.",
+       "apihelp-query+allmessages-param-filter": "Devolver só as mensagens cujos nomes contêm este texto.",
+       "apihelp-query+allmessages-param-customised": "Devolver só as mensagens neste estado de personalização.",
+       "apihelp-query+allmessages-param-lang": "Devolver as mensagens nesta língua.",
+       "apihelp-query+allmessages-param-from": "Devolver as mensagens, a partir desta mensagem.",
+       "apihelp-query+allmessages-param-to": "Devolver as mensagens, até esta mensagem.",
+       "apihelp-query+allmessages-param-title": "Nome da página a utilizar como contexto ao fazer a análise sintática da mensagem (para a opção $1enableparser).",
+       "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+allpages-description": "Enumerar todas as páginas sequencialmente dentro de um espaço nominal.",
+       "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-prefix": "Pesquisa para todos os títulos de páginas que comecem com este valor.",
+       "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-param-namespace": "O espaço nominal a ser enumerado.",
        "apihelp-query+allpages-param-filterredir": "As páginas a serem listadas.",
+       "apihelp-query+allpages-param-minsize": "Limitar só às páginas com este número mínimo de bytes.",
+       "apihelp-query+allpages-param-maxsize": "Limitar só às páginas com este número máximo de bytes.",
+       "apihelp-query+allpages-param-prtype": "Limitar só às páginas protegidas.",
+       "apihelp-query+allpages-param-prlevel": "Filtrar as proteções com base no nível de proteção (tem de ser usado com o parâmetro $1prtype=).",
+       "apihelp-query+allpages-param-prfiltercascade": "Filtrar as proteções com base na proteção em cascata (ignorado se $1prtype não estiver presente).",
+       "apihelp-query+allpages-param-limit": "O número total de páginas a serem devolvidas.",
        "apihelp-query+allpages-param-dir": "A direção de listagem.",
+       "apihelp-query+allpages-param-filterlanglinks": "Filtrar dependo de uma página ter ''links'' interlínguas. Note que isto pode não tomar em consideração ''links'' interlínguas adicionados por extensões.",
        "apihelp-query+allpages-param-prexpiry": "O tipo de expiração pelo qual as páginas serão filtradas:\n;indefinite:Obter só páginas com um período de expiração indefinido.\n;definite:Obter só páginas com um período de expiração definido (específico).\n;all:Obter páginas com qualquer período de expiração.",
-       "apihelp-query+allpages-example-generator": "Mostrar informação sobre 4 páginas que comecem com a letra <kbd>T</kbd>.",
+       "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-param-unique": "Mostrar só páginas de destino únicas. Não pode ser usado com <kbd>$1prop=ids|fragment|interwiki</kbd>.\nAo ser usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+allredirects-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Adiciona o identificador da página que contém o redirecionamento (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Adiciona o título do redirecionamento.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Adiciona o fragmento do redirecionamento, se existir (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Adiciona o prefixo interwikis do redirecionamento, se existir (não pode ser usado em conjunto com <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "O espaço nominal a ser enumerado.",
+       "apihelp-query+allredirects-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+allredirects-param-dir": "A direção de listagem.",
+       "apihelp-query+allredirects-example-B": "Listar as páginas de destino, incluindo aquelas em falta, com os identificadores da página de origem, começando na <kbd>B</kbd>.",
+       "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-excludeuser": "Não listar as revisões deste utilizador.",
        "apihelp-query+allrevisions-param-namespace": "Listar só as páginas neste espaço nominal.",
+       "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-param-unique": "Mostrar só títulos transcluídos únicos. Não pode ser usado com <kbd>$1prop=ids</kbd>.\nAo ser usado como gerador, produz páginas de destino em vez de páginas de origem.",
        "apihelp-query+alltransclusions-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Adiciona o identificador da página onde é feita a transclusão (não pode ser usado com <var>$1unique</var>).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Adiciona o título da transclusão.",
        "apihelp-query+alltransclusions-param-namespace": "O espaço nominal a enumerar.",
+       "apihelp-query+alltransclusions-param-limit": "O número total de elementos a serem devolvidos.",
        "apihelp-query+alltransclusions-param-dir": "A direção de listagem.",
+       "apihelp-query+alltransclusions-example-B": "Listar os títulos transcluídos, incluindo aqueles em falta, com os identificadores das páginas de origem, começando no <kbd>B</kbd>.",
+       "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-dir": "A direção da ordenação.",
+       "apihelp-query+allusers-param-group": "Incluir só os utilizadores nos grupos indicados.",
+       "apihelp-query+allusers-param-excludegroup": "Excluir os utilizadores nos grupos indicados.",
+       "apihelp-query+allusers-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+allusers-param-prop": "As informações que devem ser incluídas:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Adiciona a informação sobre um bloqueio atual do utilizador.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Lista os grupos a que o utilizador pertence. Isto usa mais recursos do servidor e pode devolver menos resultados do que o limite.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Lista todos os grupos a que o utilizador pertence de forma automática.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lista as permissões que o utilizador tem.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Adiciona a data e hora de registo do utilizador, se estiver disponível (pode estar vazia).",
+       "apihelp-query+allusers-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
+       "apihelp-query+allusers-param-limit": "O número total de nomes de utilizador a serem devolvidos.",
        "apihelp-query+allusers-param-witheditsonly": "Listar só os utilizadores que realizaram edições.",
-       "apihelp-query+allusers-example-Y": "Lista de utilizadores que comecem com <kbd>Y</kbd>.",
+       "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-dir": "A direção de listagem.",
-       "apihelp-query+backlinks-param-limit": "O número de páginas totais a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o nível aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
-       "apihelp-query+backlinks-example-simple": "Mostrar ligações para <kbd>Main page</kbd>.",
-       "apihelp-query+backlinks-example-generator": "Obter informações sobre as páginas com ligação para <kbd>Main page</kbd>.",
+       "apihelp-query+backlinks-param-filterredir": "Como filtrar os redirecionamentos. Se definido como <kbd>nonredirects</kbd> quando <var>$1redirect</var> está ativado, isto é aplicado apenas no segundo nível.",
+       "apihelp-query+backlinks-param-limit": "O número total de páginas a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o limite aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
+       "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-users": "Lista dos utilizadores a serem procurados (opcional).",
        "apihelp-query+blocks-param-ip": "Obter todos os bloqueios aplicáveis a este endereço IP ou intervalo CIDR, incluindo bloqueios de intervalos. Não pode ser usado em conjunto com <var>$3users</var>. Não são aceites intervalos CIDR maiores que IPv4/$1 ou IPv6/$2.",
        "apihelp-query+blocks-param-limit": "O número máximo de bloqueios a listar.",
        "apihelp-query+blocks-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Adiciona o identificador do bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Adiciona o nome de utilizador do utilizador bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Adiciona o identificador do utilizador bloqueado.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Adiciona o nome do utilizador que bloqueou.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Adiciona o identificador do utilizador que fez o bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Adiciona a data e hora de realização do bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Adiciona a data e hora de expiração do bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Adiciona o motivo apresentado para o bloqueio.",
        "apihelp-query+blocks-paramvalue-prop-range": "Adiciona o intervalo de endereços IP afetado pelo bloqueio.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Etiqueta o bloqueio com (autoblock, anononly, etc.).",
        "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-paramvalue-prop-hidden": "Etiqueta as categorias que estão ocultadas com <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "Os tipos de categorias que serão mostrados.",
+       "apihelp-query+categories-param-limit": "O número de categorias a serem devolvidas.",
        "apihelp-query+categories-param-categories": "Listar só estas categorias. Útil para verificar se uma determinada página está numa determinada categoria.",
        "apihelp-query+categories-param-dir": "A direção de listagem.",
-       "apihelp-query+categorymembers-description": "Lista de todas as páginas numa categoria específica.",
+       "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ção 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-paramvalue-prop-ids": "Adiciona o identificador da página.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Adiciona o título e o identificador do espaço nominal da página.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Adiciona a chave usada para a ordenação da categoria (''string'' hexadecimal).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Adiciona o prefixo da chave usada para a ordenação da categoria (parte legível da chave de ordenação).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Adiciona o tipo com que a página foi categorizada (<samp>page</samp>, <samp>subcat</samp> ou <samp>file</samp>).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Adiciona a data e hora de inclusão da página.",
+       "apihelp-query+categorymembers-param-namespace": "Incluir só as páginas destes espaços nominais. Note que pode usar <kbd>$1type=subcat</kbd> ou <kbd>$1type=file</kbd> em vez de <kbd>$1namespace=14</kbd> ou <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "O tipo de membros de categoria que devem ser incluídos. Ignorado se <kbd>$1sort=timestamp</kbd> estiver definido.",
-       "apihelp-query+categorymembers-param-dir": "A direção de ordenação.",
-       "apihelp-query+deletedrevisions-param-start": "A data e hora a partir da qual será começada a enumeração. Ignorado ao processar uma lista de identificadores de revisão.",
+       "apihelp-query+categorymembers-param-limit": "O número máximo de páginas a serem devolvidas.",
+       "apihelp-query+categorymembers-param-sort": "Propriedade pela qual fazer a ordenação.",
+       "apihelp-query+categorymembers-param-dir": "A direção da ordenação.",
+       "apihelp-query+categorymembers-param-start": "A data e hora da página a partir da qual será começada a listagem. Só pode ser usado em conjunto com <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-end": "A data e hora da página na qual será terminada a listagem. Só pode ser usado em conjunto com <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "A chave de ordenação a partir da qual a listagem será começada, como devolvida por <kbd>$1prop=sortkey</kbd>. Só pode ser usado com <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "A chave de ordenação na qual a listagem será terminada, como devolvida por <kbd>$1prop=sortkey</kbd>. só pode ser usado com <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "O prefixo da chave de ordenação a partir do qual a listagem será começada. Só pode ser usado com <kbd>$1sort=sortkey</kbd>. Tem precedência sobre <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "O prefixo da chave de ordenação <strong>antes</strong> do qual a listagem será terminada (não <strong>no</strong> qual; se este valor ocorrer não será incluído!). Só pode ser usado com <kbd>$1sort=sortkey</kbd>. Tem precedência sobre <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-startsortkey": "Em vez dele, usar $1starthexsortkey.",
+       "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-user": "Listar só as revisões deste utilizador.",
+       "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 a partir da qual será começada a enumeração.",
+       "apihelp-query+deletedrevs-param-start": "A data e hora para iniciar a enumeração.",
+       "apihelp-query+deletedrevs-param-end": "A data e hora para parar a enumeração.",
+       "apihelp-query+deletedrevs-param-from": "Começar a listagem neste título.",
+       "apihelp-query+deletedrevs-param-to": "Terminar a listagem neste título.",
+       "apihelp-query+deletedrevs-param-prefix": "Procurar todos os títulos de página que começam por este valor.",
+       "apihelp-query+deletedrevs-param-unique": "Listar só uma revisão para cada página.",
        "apihelp-query+deletedrevs-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
+       "apihelp-query+deletedrevs-param-user": "Listar só as revisões deste utilizador.",
        "apihelp-query+deletedrevs-param-excludeuser": "Não listar edições deste utilizador.",
-       "apihelp-query+deletedrevs-param-namespace": "Listar apenas as páginas neste domínio.",
-       "apihelp-query+deletedrevs-param-prop": "As propriedades a serem obtidas:\n;revid:Adiciona o identificador de revisão da revisão eliminada.\n;parentid:Adiciona o identificador de revisão da revisão anterior da página.\n;user:Adiciona o utilizador que fez a revisão.\n;userid:Adiciona o identificador do utilizador que fez a revisão.\n;comment:Adiciona o comentário da revisão.\n;parsedcomment:Adiciona o comentário da revisão após passagem pelo analisador sintático.\n;minor:Etiqueta a revisão como uma revisão menor.\n;len:Adiciona o comprimento (em bytes) da revisão.\n;sha1:Adiciona o SHA-1 (base 16) da revisão.\n;content:Adiciona o conteúdo da revisão.\n;token:<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece a chave da edição.\n;tags:Etiquetas da revisão.",
+       "apihelp-query+deletedrevs-param-namespace": "Listar só as páginas neste domínio.",
+       "apihelp-query+deletedrevs-param-limit": "O número máximo de revisões a serem listadas.",
+       "apihelp-query+deletedrevs-param-prop": "As propriedades a serem obtidas:\n;revid:Adiciona o identificador da revisão eliminada.\n;parentid:Adiciona o identificador da revisão anterior da página.\n;user:Adiciona o utilizador que fez a revisão.\n;userid:Adiciona o identificador do utilizador que fez a revisão.\n;comment:Adiciona o comentário da revisão.\n;parsedcomment:Adiciona o comentário da revisão após passagem pelo analisador sintático.\n;minor:Etiqueta a revisão como uma revisão menor.\n;len:Adiciona o comprimento (em bytes) da revisão.\n;sha1:Adiciona o SHA-1 da revisão (na base 16).\n;content:Adiciona o conteúdo da revisão.\n;token:<span class=\"apihelp-deprecated\">Obsoleto.</span> Fornece a chave da edição.\n;tags:Etiquetas da revisão.",
+       "apihelp-query+deletedrevs-example-mode1": "Listar só as últimas revisões eliminadas das páginas <kbd>Main Page</kbd> e <kbd>Talk:Main Page</kbd>, com o conteúdo (modo 1).",
+       "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-dir": "A direção de listagem.",
+       "apihelp-query+embeddedin-param-filterredir": "Como filtrar os redirecionamentos.",
+       "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-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 <i>links</i> externos.",
+       "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-example-simple": "Obtenha uma lista de ligações externas na <kbd>Main Page</kbd>.",
+       "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-paramvalue-prop-url": "Adiciona o URL usado na página.",
-       "apihelp-query+exturlusage-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 <i>links</i> externos.",
+       "apihelp-query+exturlusage-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+exturlusage-param-query": "Texto da pesquisa sem um protocolo. Ver [[Special:LinkSearch]]. Deixar vazio para listar todos os ''links'' externos.",
        "apihelp-query+exturlusage-param-namespace": "Os espaços nominais a serem enumerados.",
-       "apihelp-query+exturlusage-param-expandurl": "Expandir URL relativos a protocolos com o protocolo canónico.",
+       "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-param-limit": "O número total de imagens a devolver.",
        "apihelp-query+filearchive-param-dir": "A direção de listagem.",
+       "apihelp-query+filearchive-param-sha1": "O resumo criptográfico SHA-1 da imagem. Tem precedência sobre $1sha1base36.",
+       "apihelp-query+filearchive-param-sha1base36": "O resumo criptográfico da imagem na base 36 (usado no MediaWiki).",
        "apihelp-query+filearchive-param-prop": "As informações da imagem que devem ser obtidas:",
-       "apihelp-query+filearchive-example-simple": "Mostrar lista de todos os ficheiros eliminados",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Adiciona o resumo criptográfico SHA-1 da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Adiciona a data e hora da versão carregada.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Adiciona o utilizador que carregou a versão da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Adiciona o tamanho da imagem em ''bytes'' e a altura, largura e contagem de páginas (se aplicável).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Nome alternativo para ''size''.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Adiciona a descrição da versão da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Analisar a descrição da versão.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Adiciona o tipo MIME da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Adiciona o tipo de multimédia da imagem.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Lista os metadados Exif para a versão da imagem.",
+       "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-example-simple": "Obter informação 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": "Identificação de página de cada página.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Título de cada página.",
        "apihelp-query+fileusage-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+fileusage-param-namespace": "Incluir só as páginas destes espaços nominais.",
+       "apihelp-query+fileusage-param-limit": "O número de elementos a serem devolvidos.",
+       "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-paramvalue-prop-userid": "Adiciona o identificador do utilizador que carregou cada versão de ficheiro.",
+       "apihelp-query+imageinfo-paramvalue-prop-comment": "O comentário na versão.",
+       "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Analisar o comentário na versão.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Adiciona o título canónico do ficheiro.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "Devolve URL para o ficheiro e página de descrição.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Adiciona o tamanho do ficheiro em ''bytes'' e a altura, largura e contagem de páginas (se aplicável).",
+       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Nome alternativo para ''size''.",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Adiciona o resumo criptográfico SHA-1 do ficheiro.",
+       "apihelp-query+imageinfo-paramvalue-prop-mime": "Adiciona o tipo MIME do ficheiro.",
        "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "Adiciona o tipo MIME da miniatura (requer URL e o parâmetro $1urlwidth).",
+       "apihelp-query+imageinfo-paramvalue-prop-mediatype": "Adiciona o tipo de multimédia do ficheiro.",
+       "apihelp-query+imageinfo-paramvalue-prop-metadata": "Lista os metadados Exif para a versão do ficheiro.",
+       "apihelp-query+imageinfo-paramvalue-prop-commonmetadata": "Lista os metadados genéricos do formato de ficheiro para a versão do ficheiro.",
+       "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "Lista os metadados formatados, combinados de várias fontes. Os resultados estão no formato HTML.",
+       "apihelp-query+imageinfo-paramvalue-prop-archivename": "Adiciona o nome de ficheiro da versão arquivada das versões anteriores à última.",
+       "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Adiciona a profundidade em ''bits'' da versão.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "Usado pela página Special:Upload para obter informação sobre um ficheiro existente. Não se destina a ser usado fora do núcleo central do MediaWiki.",
+       "apihelp-query+imageinfo-param-limit": "O número de revisões a serem devolvidas por ficheiro.",
+       "apihelp-query+imageinfo-param-start": "Data e hora a partir da qual será começada a listagem.",
+       "apihelp-query+imageinfo-param-end": "Data e hora na qual será terminada a listagem.",
        "apihelp-query+imageinfo-param-urlwidth": "Se $2prop=url está definido, será devolvido um URL para uma imagem redimensionada com este comprimento.\nPor razões de desempenho, se esta opção for usada não serão devolvidas mais de $1 imagens redimensionadas.",
+       "apihelp-query+imageinfo-param-urlheight": "Semelhante a $1urlwidth.",
+       "apihelp-query+imageinfo-param-metadataversion": "Versão de metadados a ser usada. Se for especificado o valor <kbd>latest</kbd>, usar a versão mais recente. Por omissão tem o valor <kbd>1</kbd> para compatibilidade com versões anteriores.",
        "apihelp-query+imageinfo-param-extmetadatalanguage": "Em que língua obter extmetadata. Isto afeta tanto a tradução que será obtida, caso existam várias, como a formatação de números e vários outros valores.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Se estiverem disponíveis traduções para a propriedade extmetadata, obtê-las todas.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "Se for especificado e não estiver vazio, só serão devolvidas estas chaves para $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "Um parâmetro de texto específico do objeto. Por exemplo, ficheiros PDF podem usar <kbd>page15-100px</kbd>. <var>$1urlwidth</var> tem de ser usado e ser consistente com <var>$1urlparam</var>.",
+       "apihelp-query+imageinfo-param-localonly": "Procurar apenas por ficheiros 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": "Título para pesquisar. Não pode ser utilizado 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-dir": "A direção de listagem.",
-       "apihelp-query+info-description": "Obter informação básica da página.",
+       "apihelp-query+imageusage-param-filterredir": "Como filtrar redirecionamentos. Se definido como <kbd>nonredirects</kbd> quando <var>$1redirect</var> está ativado, isto só é aplicado ao segundo nível.",
+       "apihelp-query+imageusage-param-limit": "O número total de páginas a serem devolvidas. Se <var>$1redirect</var> estiver ativado, o nível aplica-se a cada nível em separado (o que significa que até 2 * <var>$1limit</var> resultados podem ser devolvidos).",
+       "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ção sobre as páginas que utilizam [[: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-paramvalue-prop-watched": "Listar o estado de vigilância de cada página.",
+       "apihelp-query+info-paramvalue-prop-watchers": "O número de vigilantes, se for permitido.",
+       "apihelp-query+info-paramvalue-prop-visitingwatchers": "O número de vigilantes de cada página que visitaram edições recentes dessa página, se permitido.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "A data e hora das notificações de alterações de cada página vigiada.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "A identificação da página fonte de cada página de discussão.",
        "apihelp-query+info-paramvalue-prop-url": "Fornece um URL completo, um URL de edição e o URL canónico, para cada página.",
        "apihelp-query+info-paramvalue-prop-readable": "Indica se o utilizador pode ler esta página.",
+       "apihelp-query+info-paramvalue-prop-preload": "Fornece o texto devolvido por EditFormPreloadText.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Fornece a forma como o título da página é atualmente apresentado.",
        "apihelp-query+info-param-testactions": "Testar se o utilizador pode realizar certas operações na página.",
        "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 para a interwiki.",
+       "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-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Adiciona o prefixo do ''link'' interwikis.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Adiciona o título do ''link'' interwikis.",
        "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-limit": "O número de ''links'' interwikis a serem devolvidos.",
+       "apihelp-query+iwlinks-param-prefix": "Devolver só os ''links'' interwikis com este prefixo.",
+       "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-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Adiciona o código de língua da ligação interlínguas.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Adiciona o título do ''link'' interlínguas.",
        "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ção sobre as páginas associadas 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-paramvalue-prop-url": "Adiciona o URL completo.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Adiciona o nome da língua localizado (melhor esforço). Usar <var>$1inlanguagecode</var> para controlar a língua.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Adiciona o nome nativo da língua.",
+       "apihelp-query+langlinks-param-lang": "Devolver apenas as associações de idioma com este código de idioma.",
+       "apihelp-query+langlinks-param-title": "''Link'' a ser procurado. Tem de ser usado com <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "A direção de listagem.",
+       "apihelp-query+langlinks-param-inlanguagecode": "O código de idioma para os nomes de idioma localizados.",
+       "apihelp-query+langlinks-example-simple": "Obter os ''links'' interlínguas da página <kbd>Main Page</kbd>.",
+       "apihelp-query+links-description": "Devolve todas as associações das páginas indicadas.",
+       "apihelp-query+links-param-namespace": "Mostrar apenas as associações nestes espaços de nome.",
+       "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-param-dir": "A direção de listagem.",
+       "apihelp-query+links-example-simple": "Obter associações da página <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-generator": "Obter informação sobre as páginas associadas 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 estão associadas com as páginas indicadas.",
        "apihelp-query+linkshere-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "A identificação de página de cada página.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "O título de cada página.",
        "apihelp-query+linkshere-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+linkshere-param-namespace": "Incluir só as páginas nestes espaços nominais.",
+       "apihelp-query+linkshere-param-limit": "O número de páginas a serem devolvidas.",
+       "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-paramvalue-prop-type": "Adiciona o tipo do evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Adiciona o utilizador responsável pelo evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Adiciona o identificador do utilizador responsável pelo evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Adiciona a data e hora do evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Adiciona o comentário do evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Adiciona o comentário do evento do registo, após análise sintática.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Lista detalhes adicionais sobre o evento do registo.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Lista as etiquetas do evento do registo.",
+       "apihelp-query+logevents-param-type": "Filtrar as entradas do registo apenas para este tipo.",
+       "apihelp-query+logevents-param-action": "Filtrar as entradas do registo para produzir só as desta operação. Tem precedência sobre <var>$1type</var>. Na lista dos valores possíveis, os valores com o carácter de substituição asterisco <kbd>action/*</kbd> podem conter outros valores após a barra (/).",
        "apihelp-query+logevents-param-start": "A data e hora a partir da qual será começada a enumeração.",
+       "apihelp-query+logevents-param-end": "A data e hora na qual será terminada a enumeração.",
+       "apihelp-query+logevents-param-user": "Filtrar as entradas para produzir só as criadas pelo utilizador indicado.",
+       "apihelp-query+logevents-param-title": "Filtrar as entradas para produzir só as relacionadas com uma página.",
+       "apihelp-query+logevents-param-namespace": "Filtrar as entradas para produzir só as que estão no espaço nominal indicado.",
+       "apihelp-query+logevents-param-prefix": "Filtrar as entradas que começam com este prefixo.",
        "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-param-dir": "A direção de ordenação.",
-       "apihelp-query+protectedtitles-param-namespace": "Listar só os títulos neste espaço nominal.",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Adiciona o identificador da página.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Adiciona o título e o identificador do espaço nominal da página.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Adiciona o valor da propriedade da página.",
+       "apihelp-query+pageswithprop-param-limit": "O número máximo de páginas a serem devolvidas.",
+       "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-param-start": "Começar a listagem pelo título que tem esta data e hora de proteção.",
+       "apihelp-query+protectedtitles-param-end": "Terminar a listagem no título que tem esta data e hora de proteção.",
        "apihelp-query+protectedtitles-param-prop": "As propriedades a serem obtidas:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Adiciona a data e hora a que a proteção foi adicionada.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Adiciona o utilizador que fez a proteção.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Adiciona o identificador do utilizador que fez a proteção.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Adiciona o comentário da proteção.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Adiciona o comentário da proteção após a análise sintática.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Adiciona a data e hora a que a proteção será removida.",
+       "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 resultados de [[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-user": "Listar só as alterações deste utilizador.",
-       "apihelp-query+recentchanges-param-tag": "Listar só as alterações marcadas com esta etiqueta.",
+       "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-user": "Listar só as mudanças feitas por este utilizador.",
+       "apihelp-query+recentchanges-param-excludeuser": "Não listar as mudanças feitas por este utilizador.",
+       "apihelp-query+recentchanges-param-tag": "Listar só as mudanças marcadas com esta etiqueta.",
+       "apihelp-query+recentchanges-param-prop": "Incluir informações adicionais:",
        "apihelp-query+recentchanges-paramvalue-prop-user": "Adiciona o utilizador responsável pela edição e marca se o utilizador é um endereço IP.",
-       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adiciona indicações para a edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Adiciona o identificador do utilizador responsável pela edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Adiciona o comentário da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adiciona as etiquetas da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Adiciona o título de página da edição.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Adiciona o identificadores da página, das mudanças recentes, e das revisões nova e antiga.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Adiciona os tamanhos antigo e novo da página em ''bytes''.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Etiqueta a página se esta for um redirecionamento.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Etiqueta as edições que podem ser patrulhadas, marcando-as como patrulhadas ou não patrulhadas.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Adiciona informação de registo (identificador do registo, tipo de entrada, etc.) às entradas do registo.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Lista as etiquetas da entrada.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Adiciona a soma de controlo do conteúdo para as entradas associadas com uma revisão.",
        "apihelp-query+recentchanges-param-token": "Em substituição, usar <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+recentchanges-param-show": "Mostrar só as entradas que correspondem a estes critérios. Por exemplo, para ver só as edições menores feitas por utilizadores autenticados, defina $1show=minor|!anon.",
+       "apihelp-query+recentchanges-param-limit": "O número total de mudanças a serem devolvidas.",
+       "apihelp-query+recentchanges-param-type": "Os tipos de mudanças a serem mostradas.",
        "apihelp-query+recentchanges-param-toponly": "Listar só as alterações que são a revisão mais recente.",
-       "apihelp-query+recentchanges-example-simple": "Lista de mudanças recentes",
+       "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-paramvalue-prop-fragment": "O fragmento de cada redirecionamento, se existir.",
+       "apihelp-query+redirects-param-namespace": "Incluir só as páginas destes espaços nominais.",
+       "apihelp-query+redirects-param-limit": "O número de redirecionamentos a serem devolvidos.",
+       "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-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-param-excludeuser": "Excluir as revisões deste utilizador.",
        "apihelp-query+revisions-param-tag": "Listar só as revisões marcadas com esta etiqueta.",
        "apihelp-query+revisions-param-token": "Que chaves obter para cada revisão.",
+       "apihelp-query+revisions-example-content": "Obter dados com o conteúdo da última revisão dos títulos <kbd>API</kbd> e <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-last5": "Obter as últimas 5 revisões da página <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5": "Obter as primeiras 5 revisões da página <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "Obter as primeiras 5 revisões da página <kbd>Main Page</kbd> feitas após 2006-05-01.",
+       "apihelp-query+revisions-example-first5-not-localhost": "Obter as primeiras 5 revisões da página <kbd>Main Page</kbd> que não foram feitas pelo utilizador anónimo <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "Obter as primeiras 5 revisões da página <kbd>Main Page</kbd> feitas pelo utilizador <kbd>MediaWiki default</kbd>.",
        "apihelp-query+revisions+base-param-prop": "As propriedades a serem obtidas para cada revisão:",
-       "apihelp-query+revisions+base-paramvalue-prop-flags": "Indicações de revisão (menor).",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "O identificador da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "As etiquetas da revisão (menor).",
+       "apihelp-query+revisions+base-paramvalue-prop-timestamp": "A data e hora da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "O utilizador que fez a revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "O identificador de utilizador do criador da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "O tamanho (em bytes) da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "O resumo criptográfico SHA-1 (na base 16) da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "O identificador do modelo de conteúdo da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "O comentário do utilizador para a revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "O comentário do utilizador para a revisão, após a análise sintática.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "O texto da revisão.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "As etiquetas para a revisão.",
+       "apihelp-query+revisions+base-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-query+revisions+base-param-limit": "Limitar o número de revisões que serão devolvidas.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Expandir modelos no conteúdo de revisão (requer $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Gerar a árvore de análise sintática em XML do conteúdo da revisão (requer $1prop=content; substituído por <kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "Fazer a análise sintática do conteúdo da revisão (requer $1prop=content). Por motivos de desempenho, se esta opção for usada $1limit é forçado a ser 1.",
+       "apihelp-query+revisions+base-param-section": "Obter apenas o conteúdo deste número de secção.",
+       "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-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 apenas nestes espaços de nomes.",
        "apihelp-query+search-param-what": "O tipo de pesquisa a executar.",
+       "apihelp-query+search-param-info": "Quais os metadados a serem devolvidos.",
        "apihelp-query+search-param-prop": "As propriedades a serem devolvidas:",
+       "apihelp-query+search-param-qiprofile": "O perfil independente das pesquisas a ser usado (afeta o algoritmo de classificação).",
+       "apihelp-query+search-paramvalue-prop-size": "Adiciona o tamanho da página em ''bytes''.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Adiciona o número de palavras da página.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Adiciona a data e hora a que a página foi editada pela última vez.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Adiciona um fragmento de código com a página, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Adiciona um fragmento de código com o título da página, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Adiciona um fragmento de código com o título redirecionado, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Adiciona o título do redirecionamento correspondente.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Adiciona um fragmento de código com o título da secção correspondente, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Adiciona o título da secção correspondente.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Adiciona um fragmento de código com a categoria correspondente, após análise sintática.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Adiciona um valor booleano que indica se a pesquisa encontrou correspondência no conteúdo de ficheiros.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Obsoleto e ignorado.</span>",
+       "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 reescrita da consulta interna. Alguns motores de busca podem reescrever a consulta, 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, como acontece na correção de 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-namespacealiases": "Uma lista dos nomes alternativos dos espaços nominais registados.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "Uma lista dos nomes alternativos das páginas especiais.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "Uma lista das palavras mágicas e dos seus nomes alternativos.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Devolve as estatísticas do ''site''.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Devolve o mapa de interwikis (opcionalmente filtrado, opcionalmente localizado usando <var>$1inlanguagecode</var>).",
        "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Devolve o servidor da base de dados com o maior atraso de replicação.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Devolve os grupos de utilizadores e as permissões associadas.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Devolve as bibliotecas instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Devolve as extensões instaladas na wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Devolve uma lista das extensões (tipos) dos ficheiros que podem ser carregados.",
+       "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-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-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-paramvalue-prop-uploaddialog": "Devolve a configuração do diálogo de carregamento.",
+       "apihelp-query+siteinfo-param-filteriw": "Devolver só as entradas locais, ou só as não locais, do mapa de interwikis.",
        "apihelp-query+siteinfo-param-showalldb": "Listar todos os servidores da base de dados, não só aquele que tem maior atraso.",
+       "apihelp-query+siteinfo-param-numberingroup": "Lista o número de utilizadores nos grupos de utilizadores.",
+       "apihelp-query+siteinfo-param-inlanguagecode": "O código de idioma dos nomes de idioma localizados (o melhor possível) e nomes de temas.",
+       "apihelp-query+siteinfo-example-simple": "Obter informação 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-displayname": "Adiciona a mensagem de sistema para a etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-description": "Adiciona a descrição da etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Adiciona o número de revisões e de entradas no registo que têm esta etiqueta.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Indicar se a etiqueta está definida.",
+       "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-param-dir": "A direção de listagem.",
+       "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 chaves para operaçõ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-paramvalue-prop-redirect": "Indicar se a página é um redirecionamento.",
+       "apihelp-query+transcludedin-param-namespace": "Incluir só as páginas nestes espaços nominais.",
+       "apihelp-query+transcludedin-param-limit": "O número de entradas a serem devolvidas.",
+       "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-param-user": "Os utilizadores para obter contribuições.",
+       "apihelp-query+usercontribs-param-userprefix": "Obter contribuições de todos os utilizadores cujos nomes começam com este valor. Sobrepõe $1user.",
        "apihelp-query+usercontribs-param-namespace": "Listar só as contribuições nestes espaços nominais.",
-       "apihelp-query+usercontribs-paramvalue-prop-flags": "Adiciona indicações da edição.",
+       "apihelp-query+usercontribs-param-prop": "Incluir partes adicionais da informação:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Adiciona os identificadores da página e da revisão.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Adiciona o título e o identificador do espaço nominal da página.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Adiciona o comentário da edição.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Adiciona o novo tamanho da edição.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Adiciona a diferença de tamanho entre a edição e a sua progenitora.",
+       "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-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ção 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-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 que o utilizador atual pode adicionar ou remover para os mesmos.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lista todas as preferências que o utilizador atual definiu.",
        "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Obsoleto.</span> Obter uma chave para alterar as preferências do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Adiciona a contagem de edições do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lista todos os limites de frequência do utilizador atual.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Adiciona o nome real do utilizador.",
        "apihelp-query+userinfo-paramvalue-prop-email": "Adicionar o correio eletrónico do utilizador e a data de autenticação do correio eletrónico.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Faz eco do cabeçalho <code>Accept-Language</code> enviado pelo cliente num formato estruturado.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Adiciona a data de registo do utilizador.",
        "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Adiciona a contagem de páginas não lidas da lista de páginas vigiadas do utilizador (máximo $1; devolve <samp>$2</samp> se forem mais).",
+       "apihelp-query+userinfo-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
+       "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ção sobre o utilizador atual.",
+       "apihelp-query+userinfo-example-data": "Obter informações adicionais sobre o utilizador atual.",
+       "apihelp-query+users-description": "Obter informação 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-implicitgroups": "Lista todos os grupos que 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-paramvalue-prop-registration": "Adiciona a data e hora de registo do utilizador.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Etiqueta que indica se o utilizador pode e quer receber correio eletrónico através de [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Seleciona o género do utilizador. Devolve \"male\" (masculino), \"female\" (feminino) ou \"unknown\" (desconhecido).",
+       "apihelp-query+users-paramvalue-prop-centralids": "Adiciona os identificadores centrais e o estado de ligação central (''attachment'') do utilizador.",
+       "apihelp-query+users-paramvalue-prop-cancreate": "Indica se pode ser criada uma conta para os nomes de utilizador não registados, mas válidos.",
+       "apihelp-query+users-param-attachedwiki": "Com <kbd>$1prop=centralids</kbd>, indicar se o utilizador tem ligação com a wiki designada por este identificador.",
+       "apihelp-query+users-param-users": "Uma lista de utilizadores para obter informação.",
        "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ção para o utilizador <kbd>Example</kbd>.",
        "apihelp-query+watchlist-description": "Obter mudanças recentes das páginas vigiadas do utilizador atual.",
-       "apihelp-query+watchlist-param-start": "A data e hora a partir da qual será começada a enumeração.",
-       "apihelp-query+watchlist-param-user": "Listar só as alterações deste utilizador.",
+       "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-param-namespace": "Filtrar alterações para apenas os espaços de nome indicados.",
+       "apihelp-query+watchlist-param-user": "Listar apenas as alterações deste utilizador.",
+       "apihelp-query+watchlist-param-excludeuser": "Não listar as alterações deste utilizador.",
+       "apihelp-query+watchlist-param-limit": "O número total de resultados a serem devolvidos por pedido.",
        "apihelp-query+watchlist-param-prop": "As propriedades adicionais que devem ser obtidas:",
-       "apihelp-query+watchlist-paramvalue-prop-flags": "Adiciona indicações para a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Adiciona identificadores de revisões e de páginas.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Adiciona o título da página.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "Adiciona etiquetas para a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "Adiciona o utilizador que editou.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Adiciona o identificador do utilizador que realizou a edição.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Adiciona o comentário da edição.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Adiciona o comentário da edição, após análise sintática.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Adiciona a data e hora da edição.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "Edições de etiqueta que são controladas.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "Adiciona os tamanhos novo e antigo da página.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adiciona a data e hora da última vez em que o utilizador foi notificado da edição.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adiciona informação do registo quando apropriado.",
+       "apihelp-query+watchlist-param-show": "Mostrar apenas os itens que correspondem a estes critérios. Por exemplo, para ver apenas as edições menores efetuadas por utilizadores autenticados, definir $1show=minor|!anon.",
        "apihelp-query+watchlist-param-type": "Os tipos de alterações a serem mostradas:",
+       "apihelp-query+watchlist-paramvalue-type-edit": "Edições de página regulares.",
+       "apihelp-query+watchlist-paramvalue-type-external": "Alterações externas.",
+       "apihelp-query+watchlist-paramvalue-type-new": "Criações de páginas.",
+       "apihelp-query+watchlist-paramvalue-type-log": "Entradas do registo.",
+       "apihelp-query+watchlist-paramvalue-type-categorize": "Alterações de subscrição de categorias.",
        "apihelp-query+watchlist-param-owner": "Usado com $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlist-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
+       "apihelp-query+watchlist-example-simple": "Listar a revisão de topo das páginas alteradas recentemente na lista de páginas vigiadas do utilizador atual.",
        "apihelp-query+watchlist-example-props": "Obter informação adicional sobre a revisão mais recente das páginas vigiadas do utilizador atual que tenham sido alteradas.",
+       "apihelp-query+watchlist-example-allrev": "Obter informações sobre todas as mudanças recentes às páginas vigiadas do utilizador atual.",
        "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ção da revisão para as alterações 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-paramvalue-prop-changed": "Adiciona a data e hora da última vez em que o utilizador foi notificado da edição.",
        "apihelp-query+watchlistraw-param-show": "Listar só os elementos que preenchem estes critérios.",
        "apihelp-query+watchlistraw-param-owner": "Usado em conjunto com o parâmetro $1token para aceder à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlistraw-param-token": "Uma chave de segurança (disponível nas [[Special:Preferences#mw-prefsection-watchlist|preferências]] do utilizador) para permitir acesso à lista de páginas vigiadas de outro utilizador.",
        "apihelp-query+watchlistraw-param-dir": "A direção de listagem.",
        "apihelp-query+watchlistraw-param-fromtitle": "O título (com o prefixo do espaço nominal) a partir do qual será começada a enumeração.",
+       "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-param-capture": "Devolver as palavras-passe temporárias que foram enviadas. Requer a permissão <code>passwordreset</code>.",
+       "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-hide": "O que deve ser ocultado para cada revisão.",
+       "apihelp-revisiondelete-param-show": "O que deve ser mostrado para cada revisão.",
+       "apihelp-revisiondelete-param-suppress": "Indica se devem ser suprimidos os dados aos administradores como a todos os restantes utilizadores.",
+       "apihelp-revisiondelete-param-reason": "O motivo da eliminação ou restauro.",
+       "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-user": "O nome do utilizador cujas edições vão ser revertidas.",
+       "apihelp-rollback-param-summary": "Resumo personalizado da edição. Se estiver vazio, será utilizado o resumo por omissão.",
+       "apihelp-rollback-param-markbot": "Marcar as edições revertidas e a reversão como edições de robôs.",
        "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-param-newerthanrevid": "A revisão da qual definir que a data e hora de notificação é mais recente (só uma página).",
        "apihelp-setnotificationtimestamp-example-all": "Reiniciar o estado de notificação de todas as páginas vigiadas.",
-       "apihelp-stashedit-description": "Preparar uma edição na <i>cache</i> 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-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-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-text": "O conteúdo da página.",
+       "apihelp-stashedit-param-stashedtexthash": "O resumo criptográfico do conteúdo da página, resultante de uma colocação anterior na área de ficheiros escondidos, a ser usado em vez de outro.",
+       "apihelp-stashedit-param-contentmodel": "O modelo de conteúdo do novo conteúdo.",
+       "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-add": "As etiquetas a serem adicionadas. Só podem ser adicionadas as etiquetas definidas manualmente.",
+       "apihelp-tag-param-remove": "As etiquetas a serem removidas. Só podem ser removidas as etiquetas definidas manualmente ou completamente indefinidas.",
+       "apihelp-tag-param-reason": "O motivo da alteraçã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>.",
        "apihelp-unblock-param-user": "Nome de utilizador, endereço IP ou gama de endereços IP a desbloquear. Não pode ser usado em conjunto com <var>$1id</var>.",
        "apihelp-unblock-param-reason": "Motivo para o desbloqueio.",
+       "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+deletedrevs|list=deletedrevs]] 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-timestamps": "As datas e horas das revisões a serem restauradas. Se ambos os parâmetros <var>$1timestamps</var> e <var>$1fileids</var> estiverem vazios, serão restauradas todas as revisões.",
+       "apihelp-undelete-param-fileids": "Os identificadores das revisões a serem restauradas. Se ambos os parâmetros <var>$1timestamps</var> e <var>$1fileids</var> estiverem vazios, serão restauradas todas as revisõ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-upload-param-watch": "Vigiar página.",
+       "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-text": "Texto inicial da página para ficheiros novos.",
+       "apihelp-upload-param-watch": "Vigiar a página.",
        "apihelp-upload-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-upload-param-ignorewarnings": "Ignorar todos os avisos.",
-       "apihelp-upload-param-url": "URL de onde obter o ficheiro.",
+       "apihelp-upload-param-file": "O conteúdo do ficheiro.",
+       "apihelp-upload-param-url": "O URL de onde obter o ficheiro.",
+       "apihelp-upload-param-filekey": "Chave que identifica um carregamento prévio que está temporariamente na área de ficheiros escondidos.",
+       "apihelp-upload-param-sessionkey": "O mesmo que $1filekey, mantido para compatibilidade com versões anteriores.",
+       "apihelp-upload-param-stash": "Se definido, o servidor irá colocar temporariamente o ficheiro na área de ficheiros escondidos em vez de o adicionar ao repositório.",
+       "apihelp-upload-param-filesize": "O tamanho do carregamento completo.",
+       "apihelp-upload-param-offset": "Posição do segmento em ''bytes''.",
+       "apihelp-upload-param-chunk": "O conteúdo do segmento.",
+       "apihelp-upload-param-async": "Tornar assíncronas as operações sobre ficheiros possivelmente grandes, quando possível.",
+       "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-userrights-param-user": "Nome de utilizador(a).",
-       "apihelp-userrights-param-userid": "ID de utilizador.",
+       "apihelp-upload-example-filekey": "Prosseguir um carregamento que falhou devido a avisos.",
+       "apihelp-userrights-description": "Alterar os membros de um grupo de utilizadores.",
+       "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.",
-       "apihelp-userrights-param-remove": "Remover este utilizador destes grupos.",
+       "apihelp-userrights-param-remove": "Remover o utilizador destes grupos.",
+       "apihelp-userrights-param-reason": "O motivo da alteração.",
+       "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-watch-description": "Adicionar ou remover páginas da lista de páginas vigiadas do utilizador atual.",
-       "apihelp-watch-example-unwatch": "Deixar de vigiar a página <kbd>Página Principal</kbd>.",
-       "apihelp-json-description": "Dados de saída em formato JSON.",
+       "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-unwatch": "Deixar de 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-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-pageset-param-generator": "Obter a lista de páginas em que trabalhar, executando o módulo de consulta especificado.\n\n<strong>Nota:</strong> Os nomes dos parâmetros de geradores têm de ser prefixados com um \"g\", veja os exemplos.",
+       "api-pageset-param-redirects-generator": "Resolver automaticamente os redirecionamentos em  <var>$1titles</var>, <var>$1pageids</var> e <var>$1revids</var>, e nas páginas devolvidas por <var>$1generator</var>.",
+       "api-pageset-param-redirects-nogenerator": "Resolver automaticamente os redirecionamentos em  <var>$1titles</var>, <var>$1pageids</var> e <var>$1revids</var>.",
+       "api-pageset-param-converttitles": "Converter os títulos noutras variantes de língua, se necessário. Só funciona se a língua de conteúdo da wiki suporta a conversão entre variantes. As línguas que suportam conversão entre variantes incluem $1.",
        "api-help-title": "Ajuda da API do MediaWiki",
        "api-help-lead": "Esta é uma página de documentação da API do MediaWiki gerada automaticamente.\n\nDocumentação e exemplos: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "Módulo principal",
-       "api-help-flag-deprecated": "Este módulo está obsoleto.",
+       "api-help-flag-deprecated": "Este módulo é obsoleto.",
        "api-help-flag-internal": "<strong>Este módulo é interno ou instável.</strong> O seu funcionamento pode ser alterado sem aviso prévio.",
        "api-help-flag-readrights": "Este módulo requer direitos de leitura.",
        "api-help-flag-writerights": "Este módulo requer direitos de escrita.",
        "api-help-param-deprecated": "Obsoleto.",
        "api-help-param-required": "Este parâmetro é obrigatório.",
        "api-help-datatypes-header": "Tipo de dados",
-       "api-help-datatypes": "O <i>input</i> para o MediaWiki de ser UTF-8 normalizado de acordo com a norma NFC. O MediaWiki pode converter outros tipos de entrada, mas isto pode causar que algumas operações (tais como [[Special:ApiHelp/edit|edições]] com verificações MD5) falhem.\n\nAlguns tipos de parâmetros nos pedidos à API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:As datas e horas podem ser especificados em vários formatos. O formato de data e hora ISO 8601 é recomendado. Todas as horas estão em UTC, qualquer inclusão de fuso horário é ignorada.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <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> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* O texto <kbd>now</kbd>\n;separador alternativo de valores múltiplos\n:Os parâmetros que aceitam vários valores são normalmente fornecidos com os valores separados por uma barra vertical (<i>pipe</i>), por exemplo <kbd>parâmetro=valor1|valor2</kbd> ou <kbd>parâmetro=valor1%7Cvalor2</kbd>. Se um valor contém a barra vertical, use U+001F (Separador de Unidades) como separador ''e'' prefixe o valor com U+001F, isto é, <kbd>parâmetro=%1Fvalor1%1Fvalor2</kbd>.",
+       "api-help-datatypes": "O formato de entrada para o MediaWiki deve ser UTF-8 normalizado de acordo com a norma NFC. O MediaWiki pode converter outros tipos de entrada, mas isto pode causar a falha de algumas operações (tais como [[Special:ApiHelp/edit|edições]] com verificações MD5).\n\nAlguns tipos de parâmetros nos pedidos à API necessitam de mais explicações:\n;boolean\n:Os parâmetros booleanos funcionam como as caixas de seleção HTML: se o parâmetro for especificado, independentemente do valor, é considerado verdadeiro. Para um valor falso, omitir o parâmetro completo.\n;timestamp\n:As datas e horas podem ser especificados em vários formatos. O formato de data e hora ISO 8601 é recomendado. Todas as horas estão em UTC, qualquer inclusão de fuso horário é ignorada.\n:* Data e hora ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (pontuação e <kbd>Z</kbd> são opcionais)\n:* Data e hora ISO 8601 com segundos fracionários (ignorado), <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> (traços, dois pontos e <kbd>Z</kbd> são opcionais)\n:* Formato do MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Formato numérico genérico, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (fuso horário opcional de <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd>, ou <kbd>-<var>##</var></kbd> são ignorados)\n:* Formato EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:*Formato RFC 2822 (o fuso horário pode ser omitido), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato RFC 850 (o fuso horário pode ser omitido), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Formato C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Segundos desde 1970-01-01T00:00:00Z como um inteiro de 1 a 13 dígitos (excluindo <kbd>0</kbd>)\n:* O texto <kbd>now</kbd>\n;separador alternativo de valores múltiplos\n:Os parâmetros que aceitam vários valores são normalmente fornecidos com os valores separados por uma barra vertical (''pipe''), por exemplo <kbd>parâmetro=valor1|valor2</kbd> ou <kbd>parâmetro=valor1%7Cvalor2</kbd>. Se um valor contém a barra vertical, use U+001F (Separador de Unidades) como separador ''e'' prefixe o valor com U+001F, isto é, <kbd>parâmetro=%1Fvalor1%1Fvalor2</kbd>.",
        "api-help-param-type-limit": "Tipo: inteiro ou <kbd>max</kbd>",
        "api-help-param-type-integer": "Tipo: {{PLURAL:$1|1=inteiro|2=lista de números inteiros}}",
        "api-help-param-type-boolean": "Tipo: booleano ([[Special:ApiHelp/main#main/datatypes|detalhes]])",
        "api-help-param-integer-min": "{{PLURAL:$1|1=O valor não pode ser inferior a|2=Os valores não podem ser inferiores a}} $2.",
        "api-help-param-integer-max": "{{PLURAL:$1|1=O valor não pode ser superior a|2=Os valores não podem ser superiores a}} $3.",
        "api-help-param-integer-minmax": "{{PLURAL:$1|1=O valor tem de estar compreendido|2=Os valores têm de estar compreendidos}} entre $2 e $3.",
-       "api-help-param-upload": "Tem ser enviado (<i>posted</i>) como um carregamento de ficheiro usando multipart/form-data.",
+       "api-help-param-upload": "Tem ser enviado (''posted'') como um carregamento de ficheiro usando multipart/form-data.",
        "api-help-param-multi-separate": "Separar os valores com <kbd>|</kbd> ou [[Special:ApiHelp/main#main/datatypes|alternativas]].",
        "api-help-param-multi-max": "O número máximo de valores é {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} para robôs).",
        "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, a chave usada na interface <i>web</i> também é aceite.",
-       "api-help-param-disabled-in-miser-mode": "Desativado devido ao [[mw:Manual:$wgMiserMode|modo avarento]] (<i>miser mode</i>).",
-       "api-help-param-limited-in-miser-mode": "<strong>Nota:</strong> devido ao [[mw:Manual:$wgMiserMode|modo avarento]]  (<i>miser mode</i>), usar isto pode causar que menos de <var>$1limit</var> resultados sejam devolvidos antes de continuar; em casos extremos, pode não ser devolvido qualquer resultado.",
-       "api-help-param-direction": "Em que direção enumerar:\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-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: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-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-examples": "{{PLURAL:$1|Exemplo|Exemplos}}:",
        "api-help-authmanagerhelper-messageformat": "Formato a usar nas mensagens de saída.",
        "api-help-authmanagerhelper-mergerequestfields": "Combinar a informação de todos os pedidos de autenticação numa única matriz.",
        "api-help-authmanagerhelper-preservestate": "Preservar o estado de uma tentativa de autenticação anterior falhada, se possível.",
-       "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 <i>browser</i> ou uma <i>web view</i> 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 <i>browser</i> ou a <i>web view</i> 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-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.",
        "api-credits-header": "Créditos",
index 95d6485..f7c750e 100644 (file)
        "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-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-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-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}}",
index 064c5a8..67c1a50 100644 (file)
@@ -99,6 +99,7 @@
        "apihelp-edit-description": "Создать и отредактировать страницы.",
        "apihelp-edit-param-sectiontitle": "Заголовок для нового раздела.",
        "apihelp-edit-param-text": "Содержание страницы.",
+       "apihelp-edit-param-tags": "Изменить теги для подачи заявки на пересмотр.",
        "apihelp-edit-param-minor": "Незначительное изменение (малая правка).",
        "apihelp-edit-param-notminor": "Значительное изменение (обычная, не «малая», правка).",
        "apihelp-edit-param-bot": "Пометьте этот редактировать как изменить скрипт.",
        "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": "Формат сериализации содержимого, используемый для ввода текста.",
        "apihelp-edit-param-contentmodel": "Модель содержимого нового содержимого.",
        "apihelp-expandtemplates-description": "Расширяет все шаблоны в тексте.",
        "apihelp-expandtemplates-param-title": "Заголовок страницы.",
        "apihelp-expandtemplates-param-text": "Викитекст для конвертирования",
+       "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": "Есть ли выход летучих и не должны использоваться повторно в другом месте на странице.",
+       "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-year": "От года (и ранее).",
        "apihelp-feedcontributions-param-month": "От месяца (и ранее).",
        "apihelp-feedcontributions-param-deletedonly": "Показать только удалённые правки.",
index fc82255..e908cd2 100644 (file)
        "apihelp-edit-param-sectiontitle": "新段落的标题。",
        "apihelp-edit-param-text": "页面内容。",
        "apihelp-edit-param-summary": "编辑摘要。当$1section=new且未设置$1sectiontitle时,还包括小节标题。",
-       "apihelp-edit-param-tags": "更改标签以应用修订。",
+       "apihelp-edit-param-tags": "应用到此修订的更改标签。",
        "apihelp-edit-param-minor": "小编辑。",
        "apihelp-edit-param-notminor": "不是小编辑。",
        "apihelp-edit-param-bot": "标记此编辑为机器人编辑。",
        "apihelp-edit-param-token": "令牌应总是发送为最后参数,或至少在$1text参数之后。",
        "apihelp-edit-example-edit": "编辑一个页面。",
        "apihelp-edit-example-prepend": "页面中预置<kbd>_&#95;NOTOC_&#95;</kbd>。",
-       "apihelp-edit-example-undo": "通过13585撤销修订版本13579并自动填写编辑摘要。",
+       "apihelp-edit-example-undo": "撤销修订版本13579至13585并自动填写编辑摘要。",
        "apihelp-emailuser-description": "电子邮件联系一位用户。",
        "apihelp-emailuser-param-target": "电子邮件的目标用户。",
        "apihelp-emailuser-param-subject": "主题页眉。",
        "apihelp-expandtemplates-param-text": "要转换的wiki文本。",
        "apihelp-expandtemplates-param-revid": "修订版本ID,用于<nowiki>{{REVISIONID}}</nowiki>和类似变体。",
        "apihelp-expandtemplates-param-prop": "要获取的那条信息。\n\n注意如果没有选定值,结果将包含wiki文本,但将以弃用的格式显示。",
-       "apihelp-expandtemplates-paramvalue-prop-wikitext": "扩充的wiki文本。",
+       "apihelp-expandtemplates-paramvalue-prop-wikitext": "展开后的wiki文本。",
        "apihelp-expandtemplates-paramvalue-prop-categories": "任何在输出中提供的,未在wiki文本输出中表现的分类。",
        "apihelp-expandtemplates-paramvalue-prop-properties": "由wiki文本中扩充的魔术字定义的页面属性。",
-       "apihelp-expandtemplates-paramvalue-prop-volatile": "无论输出是否常常变动,均不应被在页面中其他任何位置重用。",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "输出是否常常变动,是否不应被在页面中其他任何位置重用。",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "结果缓存应无效化后的最长时间。",
-       "apihelp-expandtemplates-paramvalue-prop-modules": "任何解析器函数请求添加至输出的ResourceLoader模块。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
+       "apihelp-expandtemplates-paramvalue-prop-modules": "任何解析器函数请求添加至输出的ResourceLoader模块。<kbd>jsconfigvars</kbd>和<kbd>encodedjsconfigvars</kbd>之一必须与<kbd>modules</kbd>共同被请求。",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "针对页面提供JavaScript配置变量为一个JSON字符串。",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "输入的XML分析树。",
-       "apihelp-expandtemplates-param-includecomments": "è¾\93å\87ºæ\97¶æ\98¯å\90¦å\8c\85å\90«HTMLæ\91\98è¦\81。",
+       "apihelp-expandtemplates-param-includecomments": "è¾\93å\87ºæ\97¶æ\98¯å\90¦å\8c\85å\90«HTML注é\87\8a。",
        "apihelp-expandtemplates-param-generatexml": "生成XML解析树(取代自$1prop=parsetree)。",
        "apihelp-expandtemplates-example-simple": "展开wiki文本<kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>。",
        "apihelp-feedcontributions-description": "返回用户贡献纲要。",
        "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": "Lists all rate limits applying to the current user.",
+       "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-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-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-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格式。",
index 016306a..5c75292 100644 (file)
@@ -80,7 +80,6 @@ class UserCache {
         * @param string $caller The calling method
         */
        public function doQuery( array $userIds, $options = [], $caller = '' ) {
-
                $usersToCheck = [];
                $usersToQuery = [];
 
@@ -132,7 +131,6 @@ class UserCache {
                        }
                }
                $lb->execute();
-
        }
 
        /**
index 2c3f58f..78a4863 100644 (file)
@@ -31,7 +31,7 @@ use Cdb\Writer;
  * space. The performance advantage is greater when the DBA extension is
  * available than it is with the PHP port.
  *
- * See Cdb.php and http://cr.yp.to/cdb.html
+ * See Cdb.php and https://cr.yp.to/cdb.html
  */
 class LCStoreCDB implements LCStore {
 
index 4970a2b..4b6362f 100644 (file)
@@ -549,7 +549,6 @@ class LocalisationCache {
         * @return array Array with a 'messages' key, or empty array if the file doesn't exist
         */
        public function readJSONFile( $fileName ) {
-
                if ( !is_readable( $fileName ) ) {
                        return [];
                }
@@ -561,7 +560,6 @@ class LocalisationCache {
 
                $data = FormatJson::decode( $json, true );
                if ( $data === null ) {
-
                        throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
                }
 
@@ -1036,7 +1034,6 @@ class LocalisationCache {
                        $blobStore = new MessageBlobStore();
                        $blobStore->clear();
                }
-
        }
 
        /**
index 4110472..e6b773c 100644 (file)
@@ -91,72 +91,47 @@ class IcuCollation extends Collation {
         * available and that there are, in fact, no additional letters to consider.
         */
        private static $tailoringFirstLetters = [
-               // Verified by native speakers
-               'be' => [ "Ё" ],
-               'be-tarask' => [ "Ё" ],
-               'bs' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
-               'cs' => [ "Č", "Ch", "Ř", "Š", "Ž" ],
-               'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
-               'en' => [],
-               'fa' => [
-                       // RTL, let's put each letter on a new line
-                       "آ",
-                       "ء",
-                       "ه",
-                       "ا",
-                       "و"
-               ],
-               'fi' => [ "Å", "Ä", "Ö" ],
-               'fr' => [],
-               'hr' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
-               'hsb' => [ "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ],
-               'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ],
-               'is' => [ "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ],
-               'it' => [],
-               'lt' => [ "Č", "Š", "Ž" ],
-               'lv' => [ "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ],
-               'mk' => [ "Ѓ", "Ќ" ],
-               'nl' => [],
-               'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ],
-               'pt' => [],
-               'ru' => [],
-               'sk' => [ "Ä", "Č", "Ch", "Ô", "Š", "Ž" ],
-               'sr' => [],
-               'sv' => [ "Å", "Ä", "Ö" ],
-               'sv@collation=standard' => [ "Å", "Ä", "Ö" ],
-               'ta' => [
-                       "\xE0\xAE\x82", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
-                       "ப்", "ம்", "ய்", "ர்", "ல்", "வ்", "ழ்", "ள்", "ற்", "ன்", "ஜ்", "ஶ்", "ஷ்",
-                       "ஸ்", "ஹ்", "க்ஷ்"
-               ],
-               'uk' => [ "Ґ", "Ь" ],
-               'vi' => [ "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ],
-               // Not verified, but likely correct
                'af' => [],
                'am' => [],
                'ar' => [],
                'as' => [ "\xe0\xa6\x82", "\xe0\xa6\x81", "\xe0\xa6\x83", "\xe0\xa7\x8e", "ক্ষ " ],
-               'ast' => [ "Ch", "Ll", "Ñ" ], // Not in libicu?
+               'ast' => [ "Ch", "Ll", "Ñ" ], // not in libicu
                'az' => [ "Ç", "Ə", "Ğ", "İ", "Ö", "Ş", "Ü" ],
+               'be' => [ "Ё" ],
+               'be-tarask' => [ "Ё" ],
                'bg' => [],
                'bo' => [],
                'br' => [ "Ch", "C'h" ],
+               'bs' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
                'bs-Cyrl' => [],
                'ca' => [],
                'chr' => [],
-               'co' => [], // Not in libicu?
+               'co' => [], // not in libicu
+               'cs' => [ "Č", "Ch", "Ř", "Š", "Ž" ],
+               'cy' => [ "Ch", "Dd", "Ff", "Ng", "Ll", "Ph", "Rh", "Th" ],
                'da' => [ "Æ", "Ø", "Å" ],
                'de' => [],
                'de-AT@collation=phonebook' => [ 'ä', 'ö', 'ü', 'ß' ],
                'dsb' => [ "Č", "Ć", "Dź", "Ě", "Ch", "Ł", "Ń", "Ŕ", "Š", "Ś", "Ž", "Ź" ],
                'ee' => [ "Dz", "Ɖ", "Ɛ", "Ƒ", "Gb", "Ɣ", "Kp", "Ny", "Ŋ", "Ɔ", "Ts", "Ʋ" ],
                'el' => [],
+               'en' => [],
                'eo' => [ "Ĉ", "Ĝ", "Ĥ", "Ĵ", "Ŝ", "Ŭ" ],
                'es' => [ "Ñ" ],
                'et' => [ "Š", "Ž", "Õ", "Ä", "Ö", "Ü", "W" ], // added W for CollationEt (xx-uca-et)
-               'eu' => [ "Ñ" ], // Not in libicu?
+               'eu' => [ "Ñ" ], // not in libicu
+               'fa' => [
+                       // RTL, let's put each letter on a new line
+                       "آ",
+                       "ء",
+                       "ه",
+                       "ا",
+                       "و"
+               ],
+               'fi' => [ "Å", "Ä", "Ö" ],
                'fil' => [ "Ñ", "Ng" ],
                'fo' => [ "Á", "Ð", "Í", "Ó", "Ú", "Ý", "Æ", "Ø", "Å" ],
+               'fr' => [],
                'fr-CA' => [], // fr-CA sorts accents slightly different from fr.
                'fur' => [ "À", "Á", "Â", "È", "Ì", "Ò", "Ù" ], // not in libicu
                'fy' => [], // not in libicu
@@ -168,10 +143,17 @@ class IcuCollation extends Collation {
                'haw' => [ 'ʻ' ],
                'he' => [],
                'hi' => [ "\xe0\xa4\x82", "\xe0\xa4\x83" ],
+               'hr' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
+               'hsb' => [ "Č", "Dź", "Ě", "Ch", "Ł", "Ń", "Ř", "Š", "Ć", "Ž" ],
+               'hu' => [ "Cs", "Dz", "Dzs", "Gy", "Ly", "Ny", "Ö", "Sz", "Ty", "Ü", "Zs" ],
                'hy' => [ "և" ],
                'id' => [],
                'ig' => [ "Ch", "Gb", "Gh", "Gw", "Ị", "Kp", "Kw", "Ṅ", "Nw", "Ny", "Ọ", "Sh", "Ụ" ],
+               'is' => [ "Á", "Ð", "É", "Í", "Ó", "Ú", "Ý", "Þ", "Æ", "Ö", "Å" ],
+               'it' => [],
                'ka' => [],
+               'kk' => [ "Ү", "І" ],
+               'kl' => [ "Æ", "Ø", "Å" ],
                'km' => [
                        "រ", "ឫ", "ឬ", "ល", "ឭ", "ឮ", "\xe1\x9e\xbb\xe1\x9f\x86",
                        "\xe1\x9f\x86", "\xe1\x9e\xb6\xe1\x9f\x86", "\xe1\x9f\x87",
@@ -180,32 +162,36 @@ class IcuCollation extends Collation {
                ],
                'kn' => [ "\xe0\xb2\x81", "\xe0\xb2\x83", "\xe0\xb3\xb1", "\xe0\xb3\xb2" ],
                'kok' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष" ],
-               'kk' => [ "Ү", "І" ],
-               'kl' => [ "Æ", "Ø", "Å" ],
-               'ku' => [ "Ç", "Ê", "Î", "Ş", "Û" ], // ku is not in libicu
+               'ku' => [ "Ç", "Ê", "Î", "Ş", "Û" ], // not in libicu
                'ky' => [ "Ё" ],
-               'la' => [], // la is not in libicu
+               'la' => [], // not in libicu
                'lb' => [],
                'lkt' => [ 'Č', 'Ǧ', 'Ȟ', 'Š', 'Ž' ],
                'ln' => [ 'Ɛ' ],
                'lo' => [],
+               'lt' => [ "Č", "Š", "Ž" ],
+               'lv' => [ "Č", "Ģ", "Ķ", "Ļ", "Ņ", "Š", "Ž" ],
+               'mk' => [ "Ѓ", "Ќ" ],
                'ml' => [],
                'mn' => [],
+               'mo' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], // not in libicu
                'mr' => [ "\xe0\xa4\x82", "\xe0\xa4\x83", "ळ", "क्ष", "ज्ञ" ],
-               'mo' => [ "Ă", "Â", "Î", "Ş", "Ţ" ], // no mo in libicu
                'ms' => [],
                'mt' => [ "Ċ", "Ġ", "Għ", "Ħ", "Ż" ],
                'nb' => [ "Æ", "Ø", "Å" ],
                'ne' => [],
+               'nl' => [],
                'nn' => [ "Æ", "Ø", "Å" ],
-               // no is not in the libicu list. You should probably use nb or nn instead.
-               'no' => [ "Æ", "Ø", "Å" ],
+               'no' => [ "Æ", "Ø", "Å" ], // not in libicu. You should probably use nb or nn instead.
                'oc' => [], // not in libicu
                'om' => [ 'Ch', 'Dh', 'Kh', 'Ny', 'Ph', 'Sh' ],
                'or' => [ "\xe0\xac\x81", "\xe0\xac\x82", "\xe0\xac\x83", "କ୍ଷ" ],
                'pa' => [ "\xe0\xa9\x8d" ],
+               'pl' => [ "Ą", "Ć", "Ę", "Ł", "Ń", "Ó", "Ś", "Ź", "Ż" ],
+               'pt' => [],
                'rm' => [], // not in libicu
                'ro' => [ "Ă", "Â", "Î", "Ş", "Ţ" ],
+               'ru' => [],
                'rup' => [ "Ă", "Â", "Î", "Ľ", "Ń", "Ş", "Ţ" ], // not in libicu
                'sco' => [],
                'se' => [
@@ -213,11 +199,20 @@ class IcuCollation extends Collation {
                        'Š', 'Ŧ', 'Ž', 'Ø', 'Æ', 'Ȧ', 'Ä', 'Ö'
                ],
                'si' => [ "\xe0\xb6\x82", "\xe0\xb6\x83", "\xe0\xb6\xa4" ],
+               'sk' => [ "Ä", "Č", "Ch", "Ô", "Š", "Ž" ],
                'sl' => [ "Č", "Š", "Ž" ],
                'smn' => [ "Á", "Č", "Đ", "Ŋ", "Š", "Ŧ", "Ž", "Æ", "Ø", "Å", "Ä", "Ö" ],
                'sq' => [ "Ç", "Dh", "Ë", "Gj", "Ll", "Nj", "Rr", "Sh", "Th", "Xh", "Zh" ],
+               'sr' => [],
                'sr-Latn' => [ "Č", "Ć", "Dž", "Đ", "Lj", "Nj", "Š", "Ž" ],
+               'sv' => [ "Å", "Ä", "Ö" ],
+               'sv@collation=standard' => [ "Å", "Ä", "Ö" ],
                'sw' => [],
+               'ta' => [
+                       "\xE0\xAE\x82", "ஃ", "க்ஷ", "க்", "ங்", "ச்", "ஞ்", "ட்", "ண்", "த்", "ந்",
+                       "ப்", "ம்", "ய்", "ர்", "ல்", "வ்", "ழ்", "ள்", "ற்", "ன்", "ஜ்", "ஶ்", "ஷ்",
+                       "ஸ்", "ஹ்", "க்ஷ்"
+               ],
                'te' => [ "\xe0\xb0\x81", "\xe0\xb0\x82", "\xe0\xb0\x83" ],
                'th' => [ "ฯ", "\xe0\xb9\x86", "\xe0\xb9\x8d", "\xe0\xb8\xba" ],
                'tk' => [ "Ç", "Ä", "Ž", "Ň", "Ö", "Ş", "Ü", "Ý" ],
@@ -225,7 +220,9 @@ class IcuCollation extends Collation {
                'to' => [ "Ng", "ʻ" ],
                'tr' => [ "Ç", "Ğ", "İ", "Ö", "Ş", "Ü" ],
                'tt' => [ "Ә", "Ө", "Ү", "Җ", "Ң", "Һ" ], // not in libicu
+               'uk' => [ "Ґ", "Ь" ],
                'uz' => [ "Ch", "G'", "Ng", "O'", "Sh" ], // not in libicu
+               'vi' => [ "Ă", "Â", "Đ", "Ê", "Ô", "Ơ", "Ư" ],
                'vo' => [ "Ä", "Ö", "Ü" ],
                'yi' => [
                        "\xd7\x91\xd6\xbf", "\xd7\x9b\xd6\xbc", "\xd7\xa4\xd6\xbc",
index 6d07216..7208b7e 100644 (file)
@@ -1134,7 +1134,7 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * MS SQL requires specifying the escape character used in a LIKE query
         * or using Square brackets to surround characters that are to be escaped
-        * http://msdn.microsoft.com/en-us/library/ms179859.aspx
+        * 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
index bfdce39..42ef685 100644 (file)
@@ -64,7 +64,11 @@ abstract class MWLBFactory {
                                        if ( $server['type'] === 'sqlite' ) {
                                                $server += [ 'dbDirectory' => $mainConfig->get( 'SQLiteDataDir' ) ];
                                        } elseif ( $server['type'] === 'postgres' ) {
-                                               $server += [ 'port' => $mainConfig->get( 'DBport' ) ];
+                                               $server += [
+                                                       'port' => $mainConfig->get( 'DBport' ),
+                                                       // Work around the reserved word usage in MediaWiki schema
+                                                       'keywordTableMap' => [ 'user' => 'mwuser', 'text' => 'pagecontent' ]
+                                               ];
                                        }
                                        $lbConf['servers'][$i] = $server + [
                                                'schema' => $mainConfig->get( 'DBmwschema' ),
@@ -96,6 +100,8 @@ abstract class MWLBFactory {
                                        $server[ 'dbDirectory'] = $mainConfig->get( 'SQLiteDataDir' );
                                } elseif ( $server['type'] === 'postgres' ) {
                                        $server['port'] = $mainConfig->get( 'DBport' );
+                                       // Work around the reserved word usage in MediaWiki schema
+                                       $server['keywordTableMap'] = [ 'user' => 'mwuser', 'text' => 'pagecontent' ];
                                }
                                $lbConf['servers'] = [ $server ];
                        }
index 62c8b00..b9a259b 100644 (file)
@@ -108,7 +108,6 @@ class SearchUpdate implements DeferrableUpdate {
                        # Perform the actual update
                        $search->update( $this->id, $normalTitle, $search->normalizeText( $text ) );
                }
-
        }
 
        /**
index 73408ab..a5a8676 100644 (file)
@@ -496,12 +496,11 @@ class DifferenceEngine extends ContextSource {
                                                [
                                                        'action' => 'markpatrolled',
                                                        'rcid' => $linkInfo['rcid'],
-                                                       'token' => $linkInfo['token'],
                                                ]
                                        ) . ']</span>';
                                // Allow extensions to change the markpatrolled link
                                Hooks::run( 'DifferenceEngineMarkPatrolledLink', [ $this,
-                                       &$this->mMarkPatrolledLink, $linkInfo['rcid'], $linkInfo['token'] ] );
+                                       &$this->mMarkPatrolledLink, $linkInfo['rcid'] ] );
                        }
                }
                return $this->mMarkPatrolledLink;
@@ -511,7 +510,7 @@ class DifferenceEngine extends ContextSource {
         * Returns an array of meta data needed to build a "mark as patrolled" link and
         * adds the mediawiki.page.patrol.ajax to the output.
         *
-        * @return array|false An array of meta data for a patrol link (rcid & token)
+        * @return array|false An array of meta data for a patrol link (rcid only)
         *  or false if no link is needed
         */
        protected function getMarkPatrolledLinkInfo() {
@@ -561,10 +560,8 @@ class DifferenceEngine extends ContextSource {
                                        $this->getOutput()->addModules( 'mediawiki.page.patrol.ajax' );
                                }
 
-                               $token = $user->getEditToken( $rcid );
                                return [
                                        'rcid' => $rcid,
-                                       'token' => $token,
                                ];
                        }
                }
index 296e3b7..9c9b1c9 100644 (file)
@@ -42,7 +42,6 @@ class WordLevelDiff extends \Diff {
         * @param string[] $linesAfter
         */
        public function __construct( $linesBefore, $linesAfter ) {
-
                list( $wordsBefore, $wordsBeforeStripped ) = $this->split( $linesBefore );
                list( $wordsAfter, $wordsAfterStripped ) = $this->split( $linesAfter );
 
@@ -68,7 +67,6 @@ class WordLevelDiff extends \Diff {
                                $yi += count( $closing );
                        }
                }
-
        }
 
        /**
@@ -77,7 +75,6 @@ class WordLevelDiff extends \Diff {
         * @return array[]
         */
        private function split( $lines ) {
-
                $words = [];
                $stripped = [];
                $first = true;
index 736cb06..3d8ddb8 100644 (file)
@@ -284,7 +284,7 @@ TXT;
                $trace = $trace ?: debug_backtrace();
                $logger = LoggerFactory::getInstance( 'fatal' );
                $logger->error( $msg, [
-                       'exception' => [
+                       'fatal_exception' => [
                                'class' => 'ErrorException',
                                'message' => "PHP Fatal Error: {$message}",
                                'code' => $level,
index 42168d7..ab26803 100644 (file)
@@ -51,7 +51,7 @@ class XmlDumpWriter {
                         * you copy in the new xsd file.
                         *
                         * After it is reviewed, merged and deployed (sync-docroot), the index.html needs purging.
-                        * echo "http://www.mediawiki.org/xml/index.html" | mwscript purgeList.php --wiki=aawiki
+                        * echo "https://www.mediawiki.org/xml/index.html" | mwscript purgeList.php --wiki=aawiki
                         */
                        'xsi:schemaLocation' => "http://www.mediawiki.org/xml/export-$ver/ " .
                                "http://www.mediawiki.org/xml/export-$ver.xsd",
index fc23f76..5936e7d 100644 (file)
@@ -34,7 +34,7 @@ class MySqlLockManager extends DBLockManager {
 
        /**
         * Get a connection to a lock DB and acquire locks on $paths.
-        * This does not use GET_LOCK() per http://bugs.mysql.com/bug.php?id=1118.
+        * This does not use GET_LOCK() per https://bugs.mysql.com/bug.php?id=1118.
         *
         * @see DBLockManager::getLocksOnServer()
         * @param string $lockSrv
index c195241..c4730d7 100644 (file)
@@ -195,12 +195,12 @@ class LocalRepo extends FileRepo {
                        $expiry = 86400; // has invalidation, 1 day
                }
 
-               $that = $this;
+               $method = __METHOD__;
                $redirDbKey = ObjectCache::getMainWANInstance()->getWithSetCallback(
                        $memcKey,
                        $expiry,
-                       function ( $oldValue, &$ttl, array &$setOpts ) use ( $that, $title ) {
-                               $dbr = $that->getSlaveDB(); // possibly remote DB
+                       function ( $oldValue, &$ttl, array &$setOpts ) use ( $method, $title ) {
+                               $dbr = $this->getSlaveDB(); // possibly remote DB
 
                                $setOpts += Database::getCacheSetOptions( $dbr );
 
@@ -213,7 +213,7 @@ class LocalRepo extends FileRepo {
                                                        'page_title' => $title->getDBkey(),
                                                        'rd_from = page_id'
                                                ],
-                                               __METHOD__
+                                               $method
                                        );
                                } else {
                                        $row = false;
index a17ca6e..06fef4f 100644 (file)
@@ -194,14 +194,12 @@ class OldLocalFile extends LocalFile {
                } else {
                        $this->fileExists = false;
                }
-
        }
 
        /**
         * Load lazy file metadata from the DB
         */
        protected function loadExtraFromDB() {
-
                $this->extraDataLoaded = true;
                $dbr = $this->repo->getSlaveDB();
                $conds = [ 'oi_name' => $this->getName() ];
@@ -227,7 +225,6 @@ class OldLocalFile extends LocalFile {
                } else {
                        throw new MWException( "Could not find data for image '{$this->archive_name}'." );
                }
-
        }
 
        /**
index 4afdea7..8390a0b 100644 (file)
@@ -42,7 +42,7 @@ abstract class HTMLFormField {
         *
         * @return string Valid HTML.
         */
-       abstract function getInputHTML( $value );
+       abstract public function getInputHTML( $value );
 
        /**
         * Same as getInputHTML, but returns an OOUI object.
@@ -51,7 +51,7 @@ abstract class HTMLFormField {
         * @param string $value
         * @return OOUI\Widget|false
         */
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                return false;
        }
 
@@ -74,7 +74,7 @@ abstract class HTMLFormField {
         *
         * @return Message
         */
-       function msg() {
+       public function msg() {
                $args = func_get_args();
 
                if ( $this->mParent ) {
@@ -266,7 +266,7 @@ abstract class HTMLFormField {
         * @param array $alldata The data collected from the form
         * @return bool
         */
-       function isHidden( $alldata ) {
+       public function isHidden( $alldata ) {
                if ( !$this->mHideIf ) {
                        return false;
                }
@@ -284,7 +284,7 @@ abstract class HTMLFormField {
         *
         * @return bool True to cancel the submission
         */
-       function cancelSubmit( $value, $alldata ) {
+       public function cancelSubmit( $value, $alldata ) {
                return false;
        }
 
@@ -299,7 +299,7 @@ abstract class HTMLFormField {
         * @return bool|string True on success, or String error to display, or
         *   false to fail validation without displaying an error.
         */
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                if ( $this->isHidden( $alldata ) ) {
                        return true;
                }
@@ -318,7 +318,7 @@ abstract class HTMLFormField {
                return true;
        }
 
-       function filter( $value, $alldata ) {
+       public function filter( $value, $alldata ) {
                if ( isset( $this->mFilterCallback ) ) {
                        $value = call_user_func( $this->mFilterCallback, $value, $alldata, $this->mParent );
                }
@@ -370,7 +370,7 @@ abstract class HTMLFormField {
         * @param WebRequest $request
         * @return string The value
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $request->getCheck( $this->mName ) ) {
                        return $request->getText( $this->mName );
                } else {
@@ -386,7 +386,7 @@ abstract class HTMLFormField {
         * @since 1.22 The 'label' attribute no longer accepts raw HTML, use 'label-raw' instead
         * @throws MWException
         */
-       function __construct( $params ) {
+       public function __construct( $params ) {
                $this->mParams = $params;
 
                if ( isset( $params['parent'] ) && $params['parent'] instanceof HTMLForm ) {
@@ -472,7 +472,7 @@ abstract class HTMLFormField {
         *
         * @return string Complete HTML table row.
         */
-       function getTableRow( $value ) {
+       public function getTableRow( $value ) {
                list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
                $inputHtml = $this->getInputHTML( $value );
                $fieldType = get_class( $this );
@@ -903,7 +903,7 @@ abstract class HTMLFormField {
         * @since 1.28
         * @return string[]
         */
-       function getNotices() {
+       public function getNotices() {
                $notices = [];
 
                if ( isset( $this->mParams['notice-message'] ) ) {
@@ -924,11 +924,11 @@ abstract class HTMLFormField {
        /**
         * @return string HTML
         */
-       function getLabel() {
+       public function getLabel() {
                return is_null( $this->mLabel ) ? '' : $this->mLabel;
        }
 
-       function getLabelHtml( $cellAttributes = [] ) {
+       public function getLabelHtml( $cellAttributes = [] ) {
                # Don't output a for= attribute for labels with no associated input.
                # Kind of hacky here, possibly we don't want these to be <label>s at all.
                $for = [];
@@ -967,7 +967,7 @@ abstract class HTMLFormField {
                return $html;
        }
 
-       function getDefault() {
+       public function getDefault() {
                if ( isset( $this->mDefault ) ) {
                        return $this->mDefault;
                } else {
@@ -1036,7 +1036,7 @@ abstract class HTMLFormField {
         * @param array $array
         * @return array
         */
-       static function forceToStringRecursive( $array ) {
+       public static function forceToStringRecursive( $array ) {
                if ( is_array( $array ) ) {
                        return array_map( [ __CLASS__, 'forceToStringRecursive' ], $array );
                } else {
index 2c09ea4..d44fc60 100644 (file)
@@ -7,5 +7,5 @@ interface HTMLNestedFilterable {
         *
         * @param array $data
         */
-       function filterDataForSubmit( $data );
+       public function filterDataForSubmit( $data );
 }
index 6fbf15b..46b570d 100644 (file)
@@ -48,7 +48,7 @@ class OOUIHTMLForm extends HTMLForm {
                return $field;
        }
 
-       function getButtons() {
+       public function getButtons() {
                $buttons = '';
 
                // IE<8 has bugs with <button>, so we'll need to avoid them.
@@ -190,7 +190,7 @@ class OOUIHTMLForm extends HTMLForm {
         * @param string $elementsType
         * @return string
         */
-       function getErrorsOrWarnings( $elements, $elementsType ) {
+       public function getErrorsOrWarnings( $elements, $elementsType ) {
                if ( !in_array( $elementsType, [ 'error', 'warning' ] ) ) {
                        throw new DomainException( $elementsType . ' is not a valid type.' );
                }
@@ -230,7 +230,7 @@ class OOUIHTMLForm extends HTMLForm {
                return '';
        }
 
-       function getHeaderText( $section = null ) {
+       public function getHeaderText( $section = null ) {
                if ( is_null( $section ) ) {
                        // We handle $this->mHeader elsewhere, in getBody()
                        return '';
@@ -239,7 +239,7 @@ class OOUIHTMLForm extends HTMLForm {
                }
        }
 
-       function getBody() {
+       public function getBody() {
                $fieldset = parent::getBody();
                // FIXME This only works for forms with no subsections
                if ( $fieldset instanceof OOUI\FieldsetLayout ) {
@@ -273,7 +273,7 @@ class OOUIHTMLForm extends HTMLForm {
                return $fieldset;
        }
 
-       function wrapForm( $html ) {
+       public function wrapForm( $html ) {
                $form = new OOUI\FormLayout( $this->getFormAttributes() + [
                        'classes' => [ 'mw-htmlform-ooui' ],
                        'content' => new OOUI\HtmlSnippet( $html ),
index c920ac3..5d9f7a0 100644 (file)
@@ -50,7 +50,7 @@ class VFormHTMLForm extends HTMLForm {
                return $field;
        }
 
-       function getHTML( $submitResult ) {
+       public function getHTML( $submitResult ) {
                // This is required for VForm HTMLForms that use that style regardless
                // of wgUseMediaWikiUIEverywhere (since they pre-date it).
                // When wgUseMediaWikiUIEverywhere is removed, this should be consolidated
@@ -71,12 +71,12 @@ class VFormHTMLForm extends HTMLForm {
                return $attribs;
        }
 
-       function wrapForm( $html ) {
+       public function wrapForm( $html ) {
                // Always discard $this->mWrapperLegend
                return Html::rawElement( 'form', $this->getFormAttributes(), $html );
        }
 
-       function getButtons() {
+       public function getButtons() {
                $buttons = '';
 
                if ( $this->mShowSubmit ) {
index 76a88d5..0f86ee8 100644 (file)
@@ -29,7 +29,7 @@
 class HTMLAutoCompleteSelectField extends HTMLTextField {
        protected $autocomplete = [];
 
-       function __construct( $params ) {
+       public function __construct( $params ) {
                $params += [
                        'require-match' => false,
                ];
@@ -63,7 +63,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
                }
        }
 
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $request->getCheck( $this->mName ) ) {
                        $val = $request->getText( $this->mName . '-select', 'other' );
 
@@ -80,7 +80,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
                }
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
@@ -116,7 +116,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
                return $attribs;
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $oldClass = $this->mClass;
                $this->mClass = (array)$this->mClass;
 
@@ -170,7 +170,7 @@ class HTMLAutoCompleteSelectField extends HTMLTextField {
         * @param string $value
         * @return false
         */
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                // To be implemented, for now override the function from HTMLTextField
                return false;
        }
index a553839..b080e18 100644 (file)
@@ -4,7 +4,7 @@
  * A checkbox field
  */
 class HTMLCheckField extends HTMLFormField {
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                global $wgUseMediaWikiUIEverywhere;
 
                if ( !empty( $this->mParams['invert'] ) ) {
@@ -79,7 +79,7 @@ class HTMLCheckField extends HTMLFormField {
         *
         * @return string
         */
-       function getLabel() {
+       public function getLabel() {
                if ( $this->mParent instanceof OOUIHTMLForm ) {
                        return $this->mLabel;
                } elseif (
@@ -113,7 +113,7 @@ class HTMLCheckField extends HTMLFormField {
         *
         * @return bool
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                $invert = isset( $this->mParams['invert'] ) && $this->mParams['invert'];
 
                // GetCheck won't work like we want for checks.
index b324fb6..890cd7c 100644 (file)
@@ -38,7 +38,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                parent::__construct( $params );
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $rows = $this->mParams['rows'];
                $columns = $this->mParams['columns'];
 
@@ -79,7 +79,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         *
         * @return string
         */
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $html = '';
                $tableContents = '';
                $rows = $this->mParams['rows'];
@@ -186,7 +186,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         *
         * @return string Complete HTML table row
         */
-       function getTableRow( $value ) {
+       public function getTableRow( $value ) {
                list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
                $inputHtml = $this->getInputHTML( $value );
                $fieldType = get_class( $this );
@@ -224,7 +224,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
         *
         * @return array
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $this->isSubmitAttempt( $request ) ) {
                        // Checkboxes are just not added to the request arrays if they're not checked,
                        // so it's perfectly possible for there not to be an entry at all
@@ -235,7 +235,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                }
        }
 
-       function getDefault() {
+       public function getDefault() {
                if ( isset( $this->mDefault ) ) {
                        return $this->mDefault;
                } else {
@@ -243,7 +243,7 @@ class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
                }
        }
 
-       function filterDataForSubmit( $data ) {
+       public function filterDataForSubmit( $data ) {
                $columns = HTMLFormField::flattenOptions( $this->mParams['columns'] );
                $rows = HTMLFormField::flattenOptions( $this->mParams['rows'] );
                $res = [];
index 0c3bc5a..3f63c18 100644 (file)
@@ -25,7 +25,7 @@ class HTMLComboboxField extends HTMLTextField {
                return $attribs;
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $datalist = new XmlSelect( false, $this->mName . '-datalist' );
                $datalist->setTagName( 'datalist' );
                $datalist->addOptions( $this->getOptions() );
@@ -33,7 +33,7 @@ class HTMLComboboxField extends HTMLTextField {
                return parent::getInputHTML( $value ) . $datalist->getHTML();
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                $disabled = false;
                $allowedParams = [ 'tabindex' ];
                $attribs = OOUI\Element::configFromHtmlAttributes(
index 3390a56..88dcd24 100644 (file)
@@ -75,7 +75,7 @@ class HTMLDateTimeField extends HTMLTextField {
                return $ret;
        }
 
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( !$request->getCheck( $this->mName ) ) {
                        return $this->getDefault();
                }
@@ -85,7 +85,7 @@ class HTMLDateTimeField extends HTMLTextField {
                return $date ? $this->formatDate( $date ) : $value;
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
index 2ef4978..d1250c0 100644 (file)
@@ -4,11 +4,11 @@
  * A field that will contain a numeric value
  */
 class HTMLFloatField extends HTMLTextField {
-       function getSize() {
+       public function getSize() {
                return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 20;
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
@@ -17,7 +17,7 @@ class HTMLFloatField extends HTMLTextField {
 
                $value = trim( $value );
 
-               # http://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
+               # https://www.w3.org/TR/html5/infrastructure.html#floating-point-numbers
                # with the addition that a leading '+' sign is ok.
                if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
                        return $this->msg( 'htmlform-float-invalid' )->parseAsBlock();
index c0fce2b..02562c4 100644 (file)
@@ -11,7 +11,7 @@ class HTMLHiddenField extends HTMLFormField {
                }
 
                # Per HTML5 spec, hidden fields cannot be 'required'
-               # http://www.w3.org/TR/html5/forms.html#hidden-state-%28type=hidden%29
+               # https://www.w3.org/TR/html5/forms.html#hidden-state-%28type=hidden%29
                unset( $this->mParams['required'] );
        }
 
index 6dc5d08..1376d0c 100644 (file)
@@ -19,7 +19,7 @@ class HTMLInfoField extends HTMLFormField {
                parent::__construct( $info );
        }
 
-       function getDefault() {
+       public function getDefault() {
                $default = parent::getDefault();
                if ( $default instanceof Closure ) {
                        $default = call_user_func( $default, $this->mParams );
index b0148d9..c87a778 100644 (file)
@@ -4,14 +4,14 @@
  * A field that must contain a number
  */
 class HTMLIntField extends HTMLFloatField {
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
                        return $p;
                }
 
-               # http://www.w3.org/TR/html5/infrastructure.html#signed-integers
+               # https://www.w3.org/TR/html5/infrastructure.html#signed-integers
                # with the addition that a leading '+' sign is ok. Note that leading zeros
                # are fine, and will be left in the input, which is useful for things like
                # phone numbers when you know that they are integers (the HTML5 type=tel
index fee5d63..58de763 100644 (file)
@@ -27,7 +27,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
                }
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
@@ -50,7 +50,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
                }
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                if ( isset( $this->mParams['dropdown'] ) ) {
                        $this->mParent->getOutput()->addModules( 'jquery.chosen' );
                }
@@ -61,7 +61,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
                return $html;
        }
 
-       function formatOptions( $options, $value ) {
+       public function formatOptions( $options, $value ) {
                $html = '';
 
                $attribs = $this->getAttributes( [ 'disabled', 'tabindex' ] );
@@ -151,7 +151,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
         *
         * @return string
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $this->isSubmitAttempt( $request ) ) {
                        // Checkboxes are just not added to the request arrays if they're not checked,
                        // so it's perfectly possible for there not to be an entry at all
@@ -162,7 +162,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
                }
        }
 
-       function getDefault() {
+       public function getDefault() {
                if ( isset( $this->mDefault ) ) {
                        return $this->mDefault;
                } else {
@@ -170,7 +170,7 @@ class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable
                }
        }
 
-       function filterDataForSubmit( $data ) {
+       public function filterDataForSubmit( $data ) {
                $data = HTMLFormField::forceToStringRecursive( $data );
                $options = HTMLFormField::flattenOptions( $this->getOptions() );
 
index 42c2fdf..69dc617 100644 (file)
@@ -19,7 +19,7 @@ class HTMLRadioField extends HTMLFormField {
                }
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
@@ -47,13 +47,13 @@ class HTMLRadioField extends HTMLFormField {
         *
         * @return string
         */
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $html = $this->formatOptions( $this->getOptions(), strval( $value ) );
 
                return $html;
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                $options = [];
                foreach ( $this->getOptions() as $label => $data ) {
                        $options[] = [
@@ -76,7 +76,7 @@ class HTMLRadioField extends HTMLFormField {
                return true;
        }
 
-       function formatOptions( $options, $value ) {
+       public function formatOptions( $options, $value ) {
                global $wgUseMediaWikiUIEverywhere;
 
                $html = '';
index 8dc16bf..5a18025 100644 (file)
@@ -32,7 +32,7 @@ class HTMLRestrictionsField extends HTMLTextAreaField {
         * @param WebRequest $request
         * @return string|MWRestrictions Restrictions object or original string if invalid
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( !$request->getCheck( $this->mName ) ) {
                        return $this->getDefault();
                }
index e75c2b2..86e8e75 100644 (file)
@@ -11,7 +11,7 @@
  * @todo FIXME: If made 'required', only the text field should be compulsory.
  */
 class HTMLSelectAndOtherField extends HTMLSelectField {
-       function __construct( $params ) {
+       public function __construct( $params ) {
                if ( array_key_exists( 'other', $params ) ) {
                        // Do nothing
                } elseif ( array_key_exists( 'other-message', $params ) ) {
@@ -31,10 +31,9 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                        $this->mOptions = [ $params['other'] => 'other' ] + $this->mOptions;
                }
                $this->mFlatOptions = self::flattenOptions( $this->getOptions() );
-
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $select = parent::getInputHTML( $value[1] );
 
                $textAttribs = [
@@ -64,7 +63,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                return "$select<br />\n$textbox";
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                return false;
        }
 
@@ -73,7 +72,7 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
         *
         * @return array("<overall message>","<select value>","<text field value>")
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $request->getCheck( $this->mName ) ) {
                        $list = $request->getText( $this->mName );
                        $text = $request->getText( $this->mName . '-other' );
@@ -108,11 +107,11 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                return [ $final, $list, $text ];
        }
 
-       function getSize() {
+       public function getSize() {
                return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
        }
 
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                # HTMLSelectField forces $value to be one of the options in the select
                # field, which is not useful here.  But we do want the validation further up
                # the chain
index 40b31b5..c1f8e42 100644 (file)
@@ -4,7 +4,7 @@
  * A select dropdown field.  Basically a wrapper for Xmlselect class
  */
 class HTMLSelectField extends HTMLFormField {
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                $p = parent::validate( $value, $alldata );
 
                if ( $p !== true ) {
@@ -20,7 +20,7 @@ class HTMLSelectField extends HTMLFormField {
                }
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
 
                if ( !empty( $this->mParams['disabled'] ) ) {
@@ -42,7 +42,7 @@ class HTMLSelectField extends HTMLFormField {
                return $select->getHTML();
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                $disabled = false;
                $allowedParams = [ 'tabindex' ];
                $attribs = OOUI\Element::configFromHtmlAttributes(
index e7f1c04..45191d0 100644 (file)
@@ -12,7 +12,7 @@ class HTMLSelectLimitField extends HTMLSelectField {
         * @param array $alldata
         * @return bool
         */
-       function validate( $value, $alldata ) {
+       public function validate( $value, $alldata ) {
                if ( $value == '' ) {
                        return true;
                }
index 230790d..f13aa17 100644 (file)
@@ -9,10 +9,9 @@ class HTMLSelectNamespace extends HTMLFormField {
                $this->mAllValue = array_key_exists( 'all', $params )
                        ? $params['all']
                        : 'all';
-
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                return Html::namespaceSelector(
                        [
                                'selected' => $value,
index 8f7750c..bb41079 100644 (file)
@@ -7,7 +7,7 @@
  * and should be used instead.
  */
 class HTMLSelectOrOtherField extends HTMLTextField {
-       function __construct( $params ) {
+       public function __construct( $params ) {
                parent::__construct( $params );
                $this->getOptions();
                if ( !in_array( 'other', $this->mOptions, true ) ) {
@@ -18,10 +18,9 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                        // Have 'other' always as first element
                        $this->mOptions = [ $msg => 'other' ] + $this->mOptions;
                }
-
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $valInSelect = false;
 
                if ( $value !== false ) {
@@ -65,7 +64,7 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                return "$select<br />\n$textbox";
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                return false;
        }
 
@@ -74,7 +73,7 @@ class HTMLSelectOrOtherField extends HTMLTextField {
         *
         * @return string
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                if ( $request->getCheck( $this->mName ) ) {
                        $val = $request->getText( $this->mName );
 
index c767d8f..d94eb8d 100644 (file)
@@ -9,11 +9,11 @@
  * size limits are represented using a negative integer.
  */
 class HTMLSizeFilterField extends HTMLIntField {
-       function getSize() {
+       public function getSize() {
                return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 9;
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $attribs = [];
                if ( !empty( $this->mParams['disabled'] ) ) {
                        $attribs['disabled'] = 'disabled';
@@ -42,7 +42,7 @@ class HTMLSizeFilterField extends HTMLIntField {
        }
 
        // No OOUI yet
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                return false;
        }
 
@@ -51,7 +51,7 @@ class HTMLSizeFilterField extends HTMLIntField {
         *
         * @return string
         */
-       function loadDataFromRequest( $request ) {
+       public function loadDataFromRequest( $request ) {
                $size = $request->getInt( $this->mName );
                if ( !$size ) {
                        return $this->getDefault();
index 8075de5..e24541c 100644 (file)
@@ -5,7 +5,7 @@
 class HTMLTagFilter extends HTMLFormField {
        protected $tagFilter;
 
-       function getTableRow( $value ) {
+       public function getTableRow( $value ) {
                $this->tagFilter = ChangeTags::buildTagFilterSelector( $value );
                if ( $this->tagFilter ) {
                        return parent::getTableRow( $value );
@@ -13,7 +13,7 @@ class HTMLTagFilter extends HTMLFormField {
                return '';
        }
 
-       function getDiv( $value ) {
+       public function getDiv( $value ) {
                $this->tagFilter = ChangeTags::buildTagFilterSelector( $value );
                if ( $this->tagFilter ) {
                        return parent::getDiv( $value );
@@ -21,7 +21,7 @@ class HTMLTagFilter extends HTMLFormField {
                return '';
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                if ( $this->tagFilter ) {
                        // we only need the select field, HTMLForm should handle the label
                        return $this->tagFilter[1];
index 8ffff43..82ec3bf 100644 (file)
@@ -22,15 +22,15 @@ class HTMLTextAreaField extends HTMLFormField {
                }
        }
 
-       function getCols() {
+       public function getCols() {
                return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
        }
 
-       function getRows() {
+       public function getRows() {
                return isset( $this->mParams['rows'] ) ? $this->mParams['rows'] : static::DEFAULT_ROWS;
        }
 
-       function getSpellCheck() {
+       public function getSpellCheck() {
                $val = isset( $this->mParams['spellcheck'] ) ? $this->mParams['spellcheck'] : null;
                if ( is_bool( $val ) ) {
                        // "spellcheck" attribute literally requires "true" or "false" to work.
@@ -39,7 +39,7 @@ class HTMLTextAreaField extends HTMLFormField {
                return null;
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                $attribs = [
                                'id' => $this->mID,
                                'cols' => $this->getCols(),
index 3ab7176..88f5ec5 100644 (file)
@@ -22,11 +22,11 @@ class HTMLTextField extends HTMLFormField {
                }
        }
 
-       function getSize() {
+       public function getSize() {
                return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
        }
 
-       function getSpellCheck() {
+       public function getSpellCheck() {
                $val = isset( $this->mParams['spellcheck'] ) ? $this->mParams['spellcheck'] : null;
                if ( is_bool( $val ) ) {
                        // "spellcheck" attribute literally requires "true" or "false" to work.
@@ -43,7 +43,7 @@ class HTMLTextField extends HTMLFormField {
                return !( isset( $this->mParams['type'] ) && $this->mParams['type'] === 'password' );
        }
 
-       function getInputHTML( $value ) {
+       public function getInputHTML( $value ) {
                if ( !$this->isPersistent() ) {
                        $value = '';
                }
@@ -119,7 +119,7 @@ class HTMLTextField extends HTMLFormField {
                return $type;
        }
 
-       function getInputOOUI( $value ) {
+       public function getInputOOUI( $value ) {
                if ( !$this->isPersistent() ) {
                        $value = '';
                }
index 458854a..08883ae 100644 (file)
@@ -362,7 +362,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * @return Status
         */
        public function execute() {
-
                $this->content = "";
 
                if ( strtoupper( $this->method ) == "HEAD" ) {
@@ -378,7 +377,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                if ( !isset( $this->reqHeaders['User-Agent'] ) ) {
                        $this->setUserAgent( Http::userAgent() );
                }
-
        }
 
        /**
@@ -387,7 +385,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * found in an array in the member variable headerList.
         */
        protected function parseHeader() {
-
                $lastname = "";
 
                foreach ( $this->headerList as $header ) {
@@ -404,7 +401,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                }
 
                $this->parseCookies();
-
        }
 
        /**
@@ -538,7 +534,6 @@ class MWHttpRequest implements LoggerAwareInterface {
         * Parse the cookies in the response headers and store them in the cookie jar.
         */
        protected function parseCookies() {
-
                if ( !$this->cookieJar ) {
                        $this->cookieJar = new CookieJar;
                }
@@ -549,7 +544,6 @@ class MWHttpRequest implements LoggerAwareInterface {
                                $this->cookieJar->parseCookieResponseHeader( $cookie, $url['host'] );
                        }
                }
-
        }
 
        /**
index 331d1a1..50d73de 100644 (file)
@@ -336,7 +336,6 @@ abstract class DatabaseInstaller {
                $services->redefineService( 'DBLoadBalancerFactory', function() use ( $connection ) {
                        return LBFactorySingle::newFromConnection( $connection );
                } );
-
        }
 
        /**
index c5ec72b..5e8ed3f 100644 (file)
@@ -282,7 +282,7 @@ class MssqlInstaller extends DatabaseInstaller {
                // Check to ensure we can grant everything needed as well
                // We can't actually tell if we have WITH GRANT OPTION for a given permission, so we assume we do
                // and just check for the permission
-               // http://technet.microsoft.com/en-us/library/ms178569.aspx
+               // https://technet.microsoft.com/en-us/library/ms178569.aspx
                // The following array sets up which permissions imply whatever permissions we specify
                $implied = [
                        // schema           database  server
index 01327be..d412216 100644 (file)
@@ -24,7 +24,7 @@
 /**
  * Test for PHP+libxml2 bug which breaks XML input subtly with certain versions.
  * Known fixed with PHP 5.2.9 + libxml2-2.7.3
- * @see http://bugs.php.net/bug.php?id=45996
+ * @see https://bugs.php.net/bug.php?id=45996
  * @ingroup PHPBugTests
  */
 class PhpXmlBugTester {
index 239ad7e..8142abd 100644 (file)
@@ -8,7 +8,8 @@
                        "Claw eg",
                        "Kuwaity26",
                        "محمد أحمد عبد الفتاح",
-                       "Maroen1990"
+                       "Maroen1990",
+                       "Super ninja2"
                ]
        },
        "config-desc": "مثبت لميدياويكي",
@@ -47,6 +48,8 @@
        "config-page-existingwiki": "ويكي موجودة",
        "config-help-restart": "هل تريد إزالة البيانات المحفوظة التي قد قمت بإدخالها وإعادة تشغيل عملية التثبيت؟",
        "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-env-good": "جرى التحقق من البيئة. يمكنك تنصيب ميدياويكي.",
        "config-env-bad": "جرى التحقق من البيئة. لا يمكنك تنصيب ميدياويكي.",
        "config-env-php": "بي إتش بي $1 مثبت.",
index eb84cc6..c17de3f 100644 (file)
        "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-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-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>MediaWiki была ўсталяваная.</strong>",
-       "mainpagedocfooter": "Глядзіце [https://meta.wikimedia.org/wiki/Help:Contents дапаможнік карыстальніка] для атрыманьня інфармацыі па карыстаньні вікі-праграмамі.\n\n== З чаго пачаць ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Сьпіс парамэтраў канфігурацыі]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Частыя пытаньні MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Пераклад MediaWiki на вашую мову]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Даведайцеся, як змагацца з спамам у вашай вікі]"
+       "mainpagedocfooter": "Глядзіце [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents дапаможнік карыстальніка] для атрыманьня інфармацыі па карыстаньні вікі-праграмамі.\n\n== З чаго пачаць ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Сьпіс парамэтраў канфігурацыі]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Частыя пытаньні MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка паведамленьняў пра зьяўленьне новых вэрсіяў MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Пераклад MediaWiki на вашую мову]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Даведайцеся, як змагацца з спамам у вашай вікі]"
 }
index d52f8f1..f28e2c5 100644 (file)
        "config-help": "সাহায্য",
        "config-help-tooltip": "প্রসারিত করতে ক্লিক করুন",
        "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 মিডিয়াউইকি মুক্তির মেইলিং লিস্ট]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources আপনার ভাষার জন্য মিডিয়াউইকি স্থানীয়করণ করুন]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam আপনার উইকিতে স্প্যামের সাথে লড়াই করার উপায় সম্পর্কে জানুন]"
+       "mainpagedocfooter": "কীভাবে উইকি সফটওয়্যারটি ব্যবহারকার করবেন, তা জানতে [https://www.mediawiki.org/wiki/Special:MyLanguage/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 মিডিয়াউইকি মুক্তির মেইলিং লিস্ট]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources আপনার ভাষার জন্য মিডিয়াউইকি স্থানীয়করণ করুন]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam আপনার উইকিতে স্প্যামের সাথে লড়াই করার উপায় সম্পর্কে জানুন]"
 }
index 06e54e1..2fee258 100644 (file)
        "config-nofile": "Soubor „$1“ nelze nalézt. Byl smazán?",
        "config-extension-link": "Věděli jste, že vaše wiki podporuje [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions rozšíření]?\n\nMůžete si prohlédnout [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category seznam rozšíření po kategoriích].",
        "mainpagetext": "<strong>MediaWiki byla úspěšně nainstalována.</strong>",
-       "mainpagedocfooter": "[https://meta.wikimedia.org/wiki/Help:Contents Uživatelská příručka] vám napoví, jak používat MediaWiki.\n\n== Začínáme ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Nastavení konfigurace]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Často kladené otázky o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Překlad MediaWiki do vašeho jazyka]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Naučte se bojovat se spamem na vaší wiki]"
+       "mainpagedocfooter": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Uživatelská příručka] vám napoví, jak používat MediaWiki.\n\n== Začínáme ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Nastavení konfigurace]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Často kladené otázky o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Překlad MediaWiki do vašeho jazyka]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Naučte se bojovat se spamem na vaší wiki]"
 }
index 3fe893a..c7690e2 100644 (file)
        "config-nofile": "Die Datei „$1“ konnte nicht gefunden werden. Wurde sie gelöscht?",
        "config-extension-link": "Wusstest du, dass dein Wiki die Nutzung von [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions Erweiterungen] unterstützt?\n\nDu kannst die [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category Erweiterungen nach Kategorie] anzeigen oder die [https://www.mediawiki.org/wiki/Extension_Matrix Erweiterungs-Matrix] aufrufen, um eine vollständige Liste der Erweiterungen zu sehen.",
        "mainpagetext": "<strong>MediaWiki wurde installiert.</strong>",
-       "mainpagedocfooter": "Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].\n\n== Starthilfen ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]"
+       "mainpagedocfooter": "Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Benutzerhandbuch].\n\n== Starthilfen ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Liste der Konfigurationsvariablen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Übersetze MediaWiki für deine Sprache]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Erfahre, wie du Spam auf deinem Wiki bekämpfen kannst]"
 }
index dfcf1d3..46e8d90 100644 (file)
@@ -79,5 +79,5 @@
        "config-install-tables": "Tabelite loomine",
        "config-help": "abi",
        "mainpagetext": "<strong>MediaWiki tarkvara on paigaldatud.</strong>",
-       "mainpagedocfooter": "Vikitarkvara kasutamise kohta leiad lisateavet [https://meta.wikimedia.org/wiki/Help:Contents juhendist].\n\n== Alustamine ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Häälestussätete loend]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki KKK]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki versiooniuuenduste postiloend]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources MediaWiki lokaliseerimine]"
+       "mainpagedocfooter": "Vikitarkvara kasutamise kohta leiad lisateavet [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents siit].\n\n== Alustamine ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Häälestussätete loend]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki KKK]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki versiooniuuenduste postiloend]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources MediaWiki lokaliseerimine]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Loe, kuidas vikis rämpspostitusi tõrjuda]"
 }
index 43a39e0..82a2373 100644 (file)
@@ -87,7 +87,7 @@
        "config-apc": "[http://www.php.net/apc APC] est installé",
        "config-apcu": "[http://www.php.net/apcu APCu] est installé",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] est installé",
-       "config-no-cache-apcu": "'''Attention :''' Impossible de trouver [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nLa mise en cache d'objets n'est pas activée.",
+       "config-no-cache-apcu": "<strong>Attention :</strong> Impossible de trouver [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].\nLa mise en cache d'objets n'est pas activée.",
        "config-mod-security": "'''Attention''': Votre serveur web a [http://modsecurity.org/ mod_security] activé. S'il est mal configuré, cela peut poser des problèmes à MediaWiki ou à d'autres applications qui permettent aux utilisateurs de publier un contenu quelconque.\nReportez-vous à [http://modsecurity.org/documentation/ la documentation de mod_security] ou contactez le support de votre hébergeur si vous rencontrez des erreurs aléatoires.",
        "config-diff3-bad": "GNU diff3 introuvable.",
        "config-git": "Logiciel de contrôle de version Git trouvé : <code>$1</code>.",
        "config-mysql-engine": "Moteur de stockage :",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "''' Avertissement ''': vous avez sélectionné MyISAM comme moteur de stockage pour MySQL, ce qui n’est pas recommandé pour une utilisation avec MediaWiki, parce que :\n * il prend à peine en charge la simultanéité en raison de verrouillage de table\n * il est plus sujet à la corruption que les autres moteurs\n * le code de base MediaWiki ne gère pas toujours MyISAM comme il se doit\n\nSi votre installation MySQL prenden charge InnoDB, il est fortement recommandé que vous le choisissiez plutôt. \nSi votre installation MySQL ne prend pas en charge les tables InnoDB, il est peut-être temps de faire une mise à niveau.",
-       "config-mysql-only-myisam-dep": "'''Attention :''' MyISAM est le seul moteur de stockage disponible pour MySQL sur cette machine, et cela n’est pas recommandé pour une utilisation avec MédiaWiki, car :\n* il prend très peu en charge les accès concurrents à cause du verrouillage des tables\n* il est plus sujet à corruption que les autres moteurs\n* le code de base de MédiaWiki ne gère pas toujours MyISAM comme il faudrait\n\nVotre installation MySQL ne prend pas en charge InnoDB ; il est peut-être temps de la mettre à jour.",
-       "config-mysql-engine-help": "'''InnoDB''' est presque toujours la meilleure option, car il prend bien en charge les accès concurrents.\n\n'''MyISAM''' peut être plus rapide dans les installations monoposte ou en lecture seule.\nLes bases de données MyISAM ont tendance à se corrompre plus souvent que les bases d’InnoDB.",
+       "config-mysql-myisam-dep": "<strong> Avertissement </strong>: vous avez sélectionné MyISAM comme moteur de stockage pour MySQL, ce qui n’est pas recommandé pour une utilisation avec MediaWiki, parce que :\n * il prend à peine en charge la simultanéité en raison de verrouillage de table\n * il est plus sujet à la corruption que les autres moteurs\n * le code de base MediaWiki ne gère pas toujours MyISAM comme il se doit\n\nSi votre installation MySQL prenden charge InnoDB, il est fortement recommandé que vous le choisissiez plutôt. \nSi votre installation MySQL ne prend pas en charge les tables InnoDB, il est peut-être temps de faire une mise à niveau.",
+       "config-mysql-only-myisam-dep": "<strong>Attention :</strong> MyISAM est le seul moteur de stockage disponible pour MySQL sur cette machine, et cela n’est pas recommandé pour une utilisation avec MédiaWiki, car :\n* il prend très peu en charge les accès concurrents à cause du verrouillage des tables\n* il est plus sujet à corruption que les autres moteurs\n* le code de base de MédiaWiki ne gère pas toujours MyISAM comme il faudrait\n\nVotre installation MySQL ne prend pas en charge InnoDB ; il est peut-être temps de la mettre à jour.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> est presque toujours la meilleure option, car il prend bien en charge les accès concurrents.\n\n<strong>MyISAM</strong> peut être plus rapide dans les installations monoposte ou en lecture seule.\nLes bases de données MyISAM ont tendance à se corrompre plus souvent que les bases d’InnoDB.",
        "config-mysql-charset": "Jeu de caractères de la base de données :",
        "config-mysql-binary": "Binaire",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "En ''mode binaire'', MediaWiki stocke le texte au format UTF-8 dans la base de données dans des champs binaires.\nC'est plus efficace que le ''UTF-8 mode'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.\n\nEn ''mode UTF-8'', MySQL reconnaîtra le jeu de caractères dans lequel sont vos données et pourra les présenter et les convertir de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
+       "config-mysql-charset-help": "En <strong>mode binaire</strong>, MediaWiki stocke le texte au format UTF-8 dans la base de données dans des champs binaires.\nC'est plus efficace que le ''UTF-8 mode'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.\n\nEn <strong>mode UTF-8</strong>, MySQL reconnaîtra le jeu de caractères dans lequel sont vos données et pourra les présenter et les convertir de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [https://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
        "config-mssql-auth": "Type d’authentification :",
        "config-mssql-install-auth": "Sélectionner le type d’authentification qui sera utilisé pour se connecter à la base de données pendant le processus d’installation.\nSi vous sélectionnez « {{int:config-mssql-windowsauth}} », les informations d’identification de l’utilisateur faisant tourner le serveur seront utilisées.",
        "config-mssql-web-auth": "Sélectionner le type d’authentification que le serveur web utilisera pour se connecter au serveur de base de données lors des opérations habituelles du wiki.\nSi vous sélectionnez « {{int:config-mssql-windowsauth}} », les informations d’identification de l’utilisateur sous lequel tourne le serveur web seront utilisées.",
index f7d8d07..a2466c3 100644 (file)
        "config-nofile": "Non se puido atopar o ficheiro \"$1\". Se cadra, foi borrado.",
        "config-extension-link": "Sabía que o seu wiki soporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensións]?\n\nPode explorar as [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensións por categoría] ou a [https://www.mediawiki.org/wiki/Extension_Matrix matriz de extensións] para ollar a lista completa de extensións.",
        "mainpagetext": "<strong>Instalouse MediaWiki.</strong>",
-       "mainpagedocfooter": "Consulte a [https://meta.wikimedia.org/wiki/Help:Contents guía de usuario] para obter máis información sobre como usar o software wiki.\n\n== Primeiros pasos ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista das opcións de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas máis frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo dos lanzamentos de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localice MediaWiki á súa lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda como combater a publicidade na súa wiki]"
+       "mainpagedocfooter": "Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guía de usuario] para obter máis información sobre como usar o software wiki.\n\n== Primeiros pasos ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista das opcións de configuración]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Preguntas máis frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo dos lanzamentos de MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localice MediaWiki á súa lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda como combater a publicidade na súa wiki]"
 }
index 8d4f8be..cedccd1 100644 (file)
        "config-nofile": "Il file \"$1\" non può essere trovato. È stato eliminato?",
        "config-extension-link": "Sapevi che il tuo wiki supporta le  [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions estensioni]?\n\nPuoi navigare tra le [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category estensioni per categoria].",
        "mainpagetext": "<strong>MediaWiki è stato installato.</strong>",
-       "mainpagedocfooter": "Consulta la [https://meta.wikimedia.org/wiki/Special:MyLanguage/Help:Contents Guida utente] per maggiori informazioni sull'uso di questo software wiki.\n\n== Per iniziare ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostazioni di configurazione]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Domande frequenti su MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Trova MediaWiki nella tua lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Imparare a combattere lo spam sul tuo wiki]"
+       "mainpagedocfooter": "Consulta la [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents guida utente] per maggiori informazioni sull'uso di questo software wiki.\n\n== Per iniziare ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Impostazioni di configurazione]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Domande frequenti su MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Trova MediaWiki nella tua lingua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Imparare a combattere lo spam sul tuo wiki]"
 }
index b23288c..d1b1a9b 100644 (file)
        "config-help-tooltip": "klickt fir opzeklappen",
        "config-nofile": "De Fichier \"$1\" gouf net fonnt. Gouf e geläscht?",
        "mainpagetext": "<strong>MediaWiki gouf installéiert.</strong>",
-       "mainpagedocfooter": "Kuckt w.e.g. [https://meta.wikimedia.org/wiki/Help:Contents d'Benotzerhandbuch] fir Informatiounen iwwer de Gebruach vun der Wiki Software.\n\n== Fir  unzefänken ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Hëllef bei der Konfiguratioun]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokaliséiert MediaWiki fir Är Sprooch]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Léiert wéi Spam op Ärer Wiki reduzéiert gi kann]"
+       "mainpagedocfooter": "Kuckt w.e.g. [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents d'Benotzerhandbuch] fir Informatiounen iwwer de Gebruach vun der Wiki Software.\n\n== Fir  unzefänken ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Hëllef bei der Konfiguratioun]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki-FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Lokaliséiert MediaWiki fir Är Sprooch]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Léiert wéi Spam op Ärer Wiki reduzéiert gi kann]"
 }
index 3660b82..8e7d8c1 100644 (file)
@@ -54,6 +54,7 @@
        "config-memory-raised": "PHP <code>memory_limit</code> yra $1, padidintas iki $2.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache] yra įdiegtas",
        "config-apc": "[http://www.php.net/apc APC] yra įdiegtas",
+       "config-apcu": "[http://www.php.net/apcu APCu] yra įdiegtas",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache] yra įdiegtas",
        "config-no-cache-apcu": "<strong>Įspėjimas:</strong> Nepavyko rasti [http://www.php.net/apcu APCu], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].\nObjekto spartinimas neįjungtas.",
        "config-diff3-bad": "GNU diff3 nerastas.",
@@ -93,6 +94,7 @@
        "config-postgres-old": "PostgreSQL $1 ar vėlesnė yra reikalinga. Jūs turite $2.",
        "config-sqlite-cant-create-db": "Nepavyko sukurti duomenų bazės failo <code>$1</code>.",
        "config-regenerate": "Pergeneruoti LocalSettings.php →",
+       "config-db-web-account": "Duomenų bazės paskyra dėl internetinės prieigos",
        "config-db-web-account-same": "Naudoti tą pačią paskyrą kaip ir įdiegimui",
        "config-db-web-create": "Sukurti paskyrą, jeigu jos nėra",
        "config-mysql-engine": "Saugojimo variklis:",
index 52b4ca5..f224b5d 100644 (file)
        "config-nofile": "Nie udało się odnaleźć pliku \"$1\". Czy nie został usunięty?",
        "config-extension-link": "Czy wiesz, że twoja wiki obsługuje [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions rozszerzenia]?\n\nMożesz przejrzeć [https://www.mediawiki.org/wiki/Category:Extensions_by_category rozszerzenia według kategorii] lub [https://www.mediawiki.org/wiki/Extension_Matrix Extension Matrix], aby zobaczyć pełną listę rozszerzeń.",
        "mainpagetext": "<strong>Instalacja MediaWiki powiodła się.</strong>",
-       "mainpagedocfooter": "Zobacz [https://meta.wikimedia.org/wiki/Help:Contents/pl przewodnik użytkownika], aby uzyskać informacje o działaniu oprogramowania wiki.\n\n== Na początek ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista ustawień konfiguracyjnych]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki (lista dyskusyjna)]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Przetłumacz MediaWiki na swój język]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Dowiedz się, jak walczyć ze spamem na swojej wiki]"
+       "mainpagedocfooter": "Zapoznaj się z [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents informacjami o działaniu oprogramowania wiki].\n\n== Na początek ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista ustawień konfiguracyjnych]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki (lista dyskusyjna)]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Przetłumacz MediaWiki na swój język]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Dowiedz się, jak walczyć ze spamem na swojej wiki]"
 }
index f6480dc..18d77e3 100644 (file)
@@ -16,7 +16,8 @@
                        "Cainamarques",
                        "Vitorvicentevalente",
                        "Macofe",
-                       "Diniscoelho"
+                       "Diniscoelho",
+                       "Ruila"
                ]
        },
        "config-desc": "O instalador do MediaWiki",
        "config-admin-error-user": "Ocorreu um erro interno ao criar um administrador com o nome \"<nowiki>$1</nowiki>\".",
        "config-admin-error-password": "Ocorreu um erro interno ao definir uma palavra-passe para o administrador \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
        "config-admin-error-bademail": "Introduziu um correio electrónico inválido",
-       "config-subscribe": "Subscreva a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de divulgação de anúncios de lançamento].",
+       "config-subscribe": "Subscrever a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de divulgação de anúncios de lançamento].",
        "config-subscribe-help": "Esta é uma lista de divulgação de baixo volume para anúncios de lançamento de versões novas, incluindo anúncios de segurança importantes.\nDeve subscrevê-la e atualizar a sua instalação MediaWiki quando são lançadas versões novas.",
        "config-subscribe-noemail": "Tentou subscrever a lista de divulgação dos anúncios de novas versões, sem fornecer um endereço de correio electrónico.\nPara subscrever esta lista de divulgação tem de fornecer um endereço de correio electrónico.",
        "config-pingback": "Partilhar dados sobre esta instalação com os programadores do MediaWiki.",
        "config-pingback-help": "Se selecionar esta opção, o MediaWiki fará periodicamente um <i>ping</i> a https://www.mediawiki.org com dados básicos acerca desta instância do MediaWiki. Estes dados incluem, por exemplo, o tipo de sistema, a versão do PHP e a base de dados que escolheu. A Wikimedia Foundation partilha estes dados com os programadores do MediaWiki, para ajudar a guiar o esforço de desenvolvimento futuro. Para o seu sistema, serão enviados os seguintes dados:\n<pre>$1</pre>",
-       "config-almost-done": "Está quase a terminar!\nAgora pode saltar as configurações restantes e instalar já a wiki.",
+       "config-almost-done": "Está quase a terminar!\nAgora pode ignorar as restantes configurações e instalar já a wiki.",
        "config-optional-continue": "Faz-me mais perguntas.",
        "config-optional-skip": "Já estou aborrecido, instala lá a wiki.",
        "config-profile": "Perfil de permissões:",
        "config-install-mainpage": "A criar a página principal com o conteúdo padrão.",
        "config-install-extension-tables": "A criar as tabelas das extensões ativadas",
        "config-install-mainpage-failed": "Não foi possível inserir a página principal: $1",
-       "config-install-done": "<strong>Parabéns!</strong>\nTerminou a instalação do MediaWiki.\n\nO instalador gerou um ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contém todas as configurações.\n\nPrecisa de fazer a descarga do ficheiro e colocá-lo no diretório de raiz da sua instalação (o mesmo diretório onde está o ficheiro index.php). Esta descarga deverá ter sido iniciada automaticamente.\n\nSe a descarga não foi iniciada, ou se o cancelou, pode recomeçá-la ao clicar na ligação abaixo:\n\n$3\n\n<strong>Nota</strong>: Se não fizer isto agora, o ficheiro que foi gerado deixará de estar disponível quando sair do processo de instalação.\n\nDepois de terminar o passo anterior, pode <strong>[$2 entrar na wiki]</strong>.",
-       "config-install-done-path": "<strong>Parabéns!</strong>\nTerminou a instalação do MediaWiki.\n\nO instalador gerou um ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contém todas as configurações.\n\nPrecisa de fazer a descarga do ficheiro e colocá-lo no diretório <code>$4</code>. Esta descarga deverá ter sido iniciada automaticamente.\n\nSe a descarga não foi iniciada, ou se o cancelou, pode recomeçá-la ao clicar na ligação abaixo:\n\n$3\n\n<strong>Nota</strong>: Se não fizer isto agora, o ficheiro que foi gerado deixará de estar disponível quando sair do processo de instalação.\n\nDepois de terminar o passo anterior, pode <strong>[$2 entrar na wiki]</strong>.",
-       "config-download-localsettings": "Descarga do <code>LocalSettings.php</code>",
+       "config-install-done": "<strong>Parabéns!</strong>\nTerminou a instalação do MediaWiki.\n\nO instalador gerou um ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contém todas as configurações.\n\nPrecisa de descarregar o ficheiro e colocá-lo no diretório de raiz da sua instalação (o mesmo diretório onde está o ficheiro index.php). Este descarregamento deverá ter sido iniciado automaticamente.\n\nSe o descarregamento não foi iniciado, ou se o cancelou, pode recomeçá-lo clicando na ligação abaixo:\n\n$3\n\n<strong>Nota</strong>: Se não o descarregar agora, o ficheiro que foi gerado deixará de estar disponível quando sair do processo de instalação.\n\nDepois de terminar o passo anterior, pode <strong>[$2 entrar na wiki]</strong>.",
+       "config-install-done-path": "<strong>Parabéns!</strong>\nTerminou a instalação do MediaWiki.\n\nO instalador gerou um ficheiro <code>LocalSettings.php</code>.\nEste ficheiro contém todas as configurações.\n\nPrecisa de descarregar o ficheiro e colocá-lo no diretório <code>$4</code>. Este descarregamento deverá ter sido iniciado automaticamente.\n\nSe o descarregamento não foi iniciado, ou se o cancelou, pode recomeçá-lo clicando na ligação abaixo:\n\n$3\n\n<strong>Nota</strong>: Se não fizer o descarregamento agora, o ficheiro que foi gerado deixará de estar disponível quando sair do processo de instalação.\n\nDepois de terminar o passo anterior, pode <strong>[$2 entrar na wiki]</strong>.",
+       "config-download-localsettings": "Descarregar <code>LocalSettings.php</code>",
        "config-help": "ajuda",
        "config-help-tooltip": "clique para expandir",
        "config-nofile": "Não foi possível encontrar o ficheiro \"$1\". Terá sido apagado?",
        "config-extension-link": "Sabia que a sua wiki suporta [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensões]?\n\nPode procurar [https://www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category extensões por categoria].",
        "mainpagetext": "<strong>MediaWiki instalado.</strong>",
-       "mainpagedocfooter": "Consulte o [https://meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize o MediaWiki para a sua língua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda a combater <i>spam</i> na sua wiki]"
+       "mainpagedocfooter": "Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Ajuda do MediaWiki] para informações sobre o uso do software wiki.\n\n== Onde começar ==\n\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de opções de configuração]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Regionalize o MediaWiki para a sua língua]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Aprenda a combater <i>spam</i> na sua wiki]"
 }
index 1ae87d0..c285e73 100644 (file)
        "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>MediaWiki успешно установлена.</strong>",
-       "mainpagedocfooter": "Информацию по работе с этой вики можно найти в [https://meta.wikimedia.org/wiki/Help:Contents/ru справочном руководстве].\n\n== Некоторые полезные ресурсы ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];\n* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]"
+       "mainpagedocfooter": "Информацию по работе с этой вики можно найти в [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents справочном руководстве].\n\n== Некоторые полезные ресурсы ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Список возможных настроек];\n* [https://www.mediawiki.org/wiki/Manual:FAQ/ru Часто задаваемые вопросы и ответы по MediaWiki];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Рассылка уведомлений о выходе новых версий MediaWiki].\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Перевод MediaWiki на свой язык]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Узнайте, как бороться со спамом в вашей вики]"
 }
index d6ee081..86d88a3 100644 (file)
        "config-download-localsettings": "Prenesi <code>LocalSettings.php</code>",
        "config-help": "pomoč",
        "mainpagetext": "<strong>Programje MediaWiki je bilo nameščeno.</strong>",
-       "mainpagedocfooter": "Oglejte si [https://meta.wikimedia.org/wiki/Help:Contents Uporabniški priročnik] za informacije o uporabi programja wiki.\n\n== Kako začeti ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Seznam konfiguracijskih nastavitev]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Poogsto zastavljena vprašanja MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Poštni seznam izdaj MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Prevedite MediaWiki v svoj jezik]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Izvedite, kako se boriti proti smetju na svojem wikiju]"
+       "mainpagedocfooter": "Oglejte si [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents Uporabniški priročnik] za informacije o uporabi programja wiki.\n\n== Kako začeti ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Seznam konfiguracijskih nastavitev]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ Poogsto zastavljena vprašanja MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Poštni seznam izdaj MediaWiki]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Prevedite MediaWiki v svoj jezik]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam Izvedite, kako se boriti proti smetju na svojem wikiju]"
 }
index 2b7e705..55654bc 100644 (file)
        "config-nofile": "找不到文件“$1”。它是否已被删除?",
        "config-extension-link": "您是否知道您的wiki支持[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>已安装MediaWiki。</strong>",
-       "mainpagedocfooter": "请查阅[https://meta.wikimedia.org/wiki/Help:Contents 用户指南]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]"
+       "mainpagedocfooter": "请查阅[https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents]以获取使用本wiki软件的信息!\n\n== 入门 ==\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings MediaWiki配置设置列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ/zh-hans MediaWiki常见问题]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki发布邮件列表]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 本地化MediaWiki到您的语言]\n* [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Combating_spam 了解如何在您的wiki上打击破坏]"
 }
index a17bdd9..60d6f43 100644 (file)
@@ -21,7 +21,7 @@ namespace MediaWiki\Interwiki;
  *
  * @file
  *
- * @since 1.28
+ * @since 1.29
  * @ingroup InterwikiLookup
  *
  * @license GNU GPL v2+
@@ -30,7 +30,7 @@ namespace MediaWiki\Interwiki;
 use Interwiki;
 use Site;
 use SiteLookup;
-use MediawikiSite;
+use MediaWikiSite;
 
 class InterwikiLookupAdapter implements InterwikiLookup {
 
@@ -155,7 +155,7 @@ class InterwikiLookupAdapter implements InterwikiLookup {
                $interwikis = [];
                foreach ( $site->getInterwikiIds() as $interwiki ) {
                        $url = $site->getPageUrl();
-                       if ( $site instanceof MediawikiSite ) {
+                       if ( $site instanceof MediaWikiSite ) {
                                $path = $site->getFileUrl( 'api.php' );
                        } else {
                                $path = '';
index 84b2a0b..0a8ae7f 100644 (file)
@@ -324,7 +324,7 @@ class JobQueueDB extends JobQueue {
                $invertedDirection = false; // whether one job_random direction was already scanned
                // This uses a replication safe method for acquiring jobs. One could use UPDATE+LIMIT
                // instead, but that either uses ORDER BY (in which case it deadlocks in MySQL) or is
-               // not replication safe. Due to http://bugs.mysql.com/bug.php?id=6980, subqueries cannot
+               // not replication safe. Due to https://bugs.mysql.com/bug.php?id=6980, subqueries cannot
                // be used here with MySQL.
                do {
                        if ( $tinyQueue ) { // queue has <= MAX_OFFSET rows
@@ -398,7 +398,7 @@ class JobQueueDB extends JobQueue {
                $row = false; // the row acquired
                do {
                        if ( $dbw->getType() === 'mysql' ) {
-                               // Per http://bugs.mysql.com/bug.php?id=6980, we can't use subqueries on the
+                               // Per https://bugs.mysql.com/bug.php?id=6980, we can't use subqueries on the
                                // same table being changed in an UPDATE query in MySQL (gives Error: 1093).
                                // Oracle and Postgre have no such limitation. However, MySQL offers an
                                // alternative here by supporting ORDER BY + LIMIT for UPDATE queries.
index 0469eeb..990f112 100644 (file)
@@ -336,7 +336,7 @@ class JobRunner implements LoggerAwareInterface {
         */
        private function getMaxRssKb() {
                $info = wfGetRusage() ?: [];
-               // see http://linux.die.net/man/2/getrusage
+               // see https://linux.die.net/man/2/getrusage
                return isset( $info['ru_maxrss'] ) ? (int)$info['ru_maxrss'] : null;
        }
 
index 797a438..bc99672 100644 (file)
@@ -357,7 +357,6 @@ class CSSMin {
                }, $source );
 
                return $source;
-
        }
 
        /**
index 6d18c81..10088f2 100644 (file)
@@ -182,7 +182,7 @@ class CryptRand {
                $this->logger->debug( "Clock drift calculation " .
                        "(time-taken=" . ( $timeTaken * 1000 ) . "ms, " .
                        "iterations=$iterations, " .
-                       "time-per-iteration=" . ( $timeTaken / $iterations * 1e6 ) . "us)\n" );
+                       "time-per-iteration=" . ( $timeTaken / $iterations * 1e6 ) . "us)" );
 
                return $data;
        }
@@ -235,8 +235,6 @@ class CryptRand {
         */
        public function generate( $bytes, $forceStrong = false ) {
 
-               $this->logger->debug( "Generating cryptographic random bytes for\n" );
-
                $bytes = floor( $bytes );
                static $buffer = '';
                if ( is_null( $this->strong ) ) {
@@ -255,11 +253,11 @@ class CryptRand {
                                $rem = $bytes - strlen( $buffer );
                                $iv = mcrypt_create_iv( $rem, MCRYPT_DEV_URANDOM );
                                if ( $iv === false ) {
-                                       $this->logger->debug( "mcrypt_create_iv returned false.\n" );
+                                       $this->logger->debug( "mcrypt_create_iv returned false." );
                                } else {
                                        $buffer .= $iv;
                                        $this->logger->debug( "mcrypt_create_iv generated " . strlen( $iv ) .
-                                               " bytes of randomness.\n" );
+                                               " bytes of randomness." );
                                }
                        }
                }
@@ -269,12 +267,12 @@ class CryptRand {
                                $rem = $bytes - strlen( $buffer );
                                $openssl_bytes = openssl_random_pseudo_bytes( $rem, $openssl_strong );
                                if ( $openssl_bytes === false ) {
-                                       $this->logger->debug( "openssl_random_pseudo_bytes returned false.\n" );
+                                       $this->logger->debug( "openssl_random_pseudo_bytes returned false." );
                                } else {
                                        $buffer .= $openssl_bytes;
                                        $this->logger->debug( "openssl_random_pseudo_bytes generated " .
                                                strlen( $openssl_bytes ) . " bytes of " .
-                                               ( $openssl_strong ? "strong" : "weak" ) . " randomness.\n" );
+                                               ( $openssl_strong ? "strong" : "weak" ) . " randomness." );
                                }
                                if ( strlen( $buffer ) >= $bytes ) {
                                        // openssl tells us if the random source was strong, if some of our data was generated
@@ -291,7 +289,7 @@ class CryptRand {
                        $rem = $bytes - strlen( $buffer );
                        if ( !function_exists( 'stream_set_read_buffer' ) && $forceStrong ) {
                                $this->logger->debug( "Was forced to read from /dev/urandom " .
-                                       "without control over the buffer size.\n" );
+                                       "without control over the buffer size." );
                        }
                        // /dev/urandom is generally considered the best possible commonly
                        // available random source, and is available on most *nix systems.
@@ -317,14 +315,14 @@ class CryptRand {
                                $buffer .= $random_bytes;
                                fclose( $urandom );
                                $this->logger->debug( "/dev/urandom generated " . strlen( $random_bytes ) .
-                                       " bytes of randomness.\n" );
+                                       " bytes of randomness." );
 
                                if ( strlen( $buffer ) >= $bytes ) {
                                        // urandom is always strong, set to true if all our data was generated using it
                                        $this->strong = true;
                                }
                        } else {
-                               $this->logger->debug( "/dev/urandom could not be opened.\n" );
+                               $this->logger->debug( "/dev/urandom could not be opened." );
                        }
                }
 
@@ -336,7 +334,7 @@ class CryptRand {
                // out and being used to predict the /randomness/ that follows.
                if ( strlen( $buffer ) < $bytes ) {
                        $this->logger->debug( __METHOD__ .
-                               ": Falling back to using a pseudo random state to generate randomness.\n" );
+                               ": Falling back to using a pseudo random state to generate randomness." );
                }
                while ( strlen( $buffer ) < $bytes ) {
                        $buffer .= MWCryptHash::hmac( $this->randomState(), strval( mt_rand() ) );
@@ -352,7 +350,7 @@ class CryptRand {
                $buffer = substr( $buffer, $bytes );
 
                $this->logger->debug( strlen( $buffer ) .
-                       " bytes of randomness leftover in the buffer.\n" );
+                       " bytes of randomness leftover in the buffer." );
 
                return $generated;
        }
index a870204..f0b44a5 100644 (file)
@@ -215,7 +215,7 @@ class MultiHttpClient {
                                // Wait (if possible) for available work...
                                if ( $active > 0 && $mrc == CURLM_OK ) {
                                        if ( curl_multi_select( $chm, 10 ) == -1 ) {
-                                               // PHP bug 63411; http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+                                               // PHP bug 63411; https://curl.haxx.se/libcurl/c/curl_multi_fdset.html
                                                usleep( 5000 ); // 5ms
                                        }
                                }
index 62baaf1..57c253d 100644 (file)
@@ -36,9 +36,9 @@ use Psr\Log\NullLogger;
  *   getEntryByName().
  *
  * The in-line documentation incorporates content from the User Timing Specification
- * http://www.w3.org/TR/user-timing/
+ * https://www.w3.org/TR/user-timing/
  * Copyright © 2013 World Wide Web Consortium, (MIT, ERCIM, Keio, Beihang).
- * http://www.w3.org/Consortium/Legal/2015/doc-license
+ * https://www.w3.org/Consortium/Legal/2015/doc-license
  *
  * @since 1.27
  */
index 5764cc3..15f13b9 100644 (file)
@@ -928,7 +928,7 @@ abstract class FileBackend implements LoggerAwareInterface {
         * @return ScopedCallback|null
         */
        final protected function getScopedPHPBehaviorForOps() {
-               if ( PHP_SAPI != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
+               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
                        $old = ignore_user_abort( true ); // avoid half-finished operations
                        return new ScopedCallback( function () use ( $old ) {
                                ignore_user_abort( $old );
index 4bc0ce6..08cb388 100644 (file)
@@ -176,7 +176,6 @@ class SwiftFileBackend extends FileBackendStore {
                return isset( $params['headers'] )
                        ? $this->getCustomHeaders( $params['headers'] )
                        : [];
-
        }
 
        /**
@@ -1209,7 +1208,7 @@ class SwiftFileBackend extends FileBackendStore {
                                        $this->rgwS3SecretKey,
                                        true // raw
                                ) );
-                               // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
+                               // See https://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
                                // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
                                // Note: S3 API is the rgw default; remove the /swift/ URL bit.
                                return str_replace( '/swift/v1', '', $this->storageUrl( $auth ) . $spath ) .
@@ -1305,7 +1304,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * Set read/write permissions for a Swift container.
         *
-        * @see http://swift.openstack.org/misc.html#acls
+        * @see http://docs.openstack.org/developer/swift/misc.html#acls
         *
         * In general, we don't allow listings to end-users. It's not useful, isn't well-defined
         * (lists are truncated to 10000 item with no way to page), and is just a performance risk.
index 99cf399..40f22c5 100644 (file)
@@ -6,9 +6,9 @@
  * Minifies a javascript file using a javascript parser
  *
  * This implements a PHP port of Brendan Eich's Narcissus open source javascript engine (in javascript)
- * References: http://en.wikipedia.org/wiki/Narcissus_(JavaScript_engine)
- * Narcissus sourcecode: http://mxr.mozilla.org/mozilla/source/js/narcissus/
- * JSMinPlus weblog: http://crisp.tweakblogs.net/blog/cat/716
+ * References: https://en.wikipedia.org/wiki/Narcissus_(JavaScript_engine)
+ * Narcissus sourcecode: https://mxr.mozilla.org/mozilla/source/js/narcissus/
+ * JSMinPlus weblog: https://crisp.tweakblogs.net/blog/cat/716
  *
  * Tino Zijdel <crisp@tweakers.net>
  *
@@ -936,7 +936,7 @@ class JSParser
                                {
                                        // <script language="JavaScript"> (without version hints) may need
                                        // automatic semicolon insertion without a newline after do-while.
-                                       // See http://bugzilla.mozilla.org/show_bug.cgi?id=238945.
+                                       // See https://bugzilla.mozilla.org/show_bug.cgi?id=238945.
                                        $this->t->match(OP_SEMICOLON);
                                        return $n;
                                }
index 5f4d7c9..e42d1a9 100644 (file)
@@ -861,7 +861,7 @@ EOT;
                        'text-web',
                        'text' ];
 
-               // http://lists.oasis-open.org/archives/office/200505/msg00006.html
+               // https://lists.oasis-open.org/archives/office/200505/msg00006.html
                $types = '(?:' . implode( '|', $opendocTypes ) . ')';
                $opendocRegex = "/^mimetype(application\/vnd\.oasis\.opendocument\.$types)/";
 
index f057140..3958f8c 100644 (file)
@@ -175,7 +175,6 @@ class XmlTypeCheck {
        }
 
        private function validate( $reader ) {
-
                // First, move through anything that isn't an element, and
                // handle any processing instructions with the callback
                do {
@@ -240,7 +239,6 @@ class XmlTypeCheck {
                                        // NOTATION, or XML_DECLARATION
                                        // xml_parse didn't send these to the filter, so we won't.
                        }
-
                } while ( $this->readNext( $reader ) );
 
                if ( $this->stackDepth !== 0 ) {
@@ -248,7 +246,6 @@ class XmlTypeCheck {
                } elseif ( $this->wellFormed === null ) {
                        $this->wellFormed = true;
                }
-
        }
 
        /**
index ee4524f..3d35d76 100644 (file)
@@ -898,7 +898,7 @@ abstract class Database implements IDatabase, IMaintainableDatabase, LoggerAware
 
                if ( false === $ret ) {
                        # Deadlocks cause the entire transaction to abort, not just the statement.
-                       # http://dev.mysql.com/doc/refman/5.7/en/innodb-error-handling.html
+                       # https://dev.mysql.com/doc/refman/5.7/en/innodb-error-handling.html
                        # https://www.postgresql.org/docs/9.1/static/explicit-locking.html
                        if ( $this->wasDeadlock() ) {
                                if ( $this->explicitTrxActive() || $priorWritesPending ) {
index 76208c4..668443b 100644 (file)
@@ -274,7 +274,7 @@ abstract class DatabaseMysqlBase extends Database {
                // Unfortunately, mysql_fetch_object does not reset the last errno.
                // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
                // these are the only errors mysql_fetch_object can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               // See https://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
                if ( $errno == 2000 || $errno == 2013 ) {
                        throw new DBUnexpectedError(
                                $this,
@@ -310,7 +310,7 @@ abstract class DatabaseMysqlBase extends Database {
                // Unfortunately, mysql_fetch_array does not reset the last errno.
                // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
                // these are the only errors mysql_fetch_array can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               // See https://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
                if ( $errno == 2000 || $errno == 2013 ) {
                        throw new DBUnexpectedError(
                                $this,
@@ -345,7 +345,7 @@ abstract class DatabaseMysqlBase extends Database {
                // Unfortunately, mysql_num_rows does not reset the last errno.
                // We are not checking for any errors here, since
                // these are no errors mysql_num_rows can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               // See https://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
                // See https://phabricator.wikimedia.org/T44430
                return $n;
        }
@@ -572,7 +572,7 @@ abstract class DatabaseMysqlBase extends Database {
        public function indexInfo( $table, $index, $fname = __METHOD__ ) {
                # SHOW INDEX works in MySQL 3.23.58, but SHOW INDEXES does not.
                # SHOW INDEX should work for 3.x and up:
-               # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
+               # https://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
                $table = $this->tableName( $table );
                $index = $this->indexName( $index );
 
@@ -1013,7 +1013,7 @@ abstract class DatabaseMysqlBase extends Database {
 
        /**
         * FROM MYSQL DOCS:
-        * http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
+        * https://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
         * @param string $lockName
         * @param string $method
         * @return bool
@@ -1034,7 +1034,7 @@ abstract class DatabaseMysqlBase extends Database {
        }
 
        private function makeLockName( $lockName ) {
-               // http://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_get-lock
+               // https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_get-lock
                // Newer version enforce a 64 char length limit.
                return ( strlen( $lockName ) > 64 ) ? sha1( $lockName ) : $lockName;
        }
index d4d3aa8..cd02177 100644 (file)
@@ -42,9 +42,20 @@ class DatabasePostgres extends Database {
        private $connectString;
        /** @var string */
        private $mCoreSchema;
+       /** @var string[] Map of (reserved table name => alternate table name) */
+       private $keywordTableMap = [];
 
+       /**
+        * @see Database::__construct()
+        * @param array $params Additional parameters include:
+        *   - keywordTableMap : Map of reserved table names to alternative table names to use
+        */
        public function __construct( array $params ) {
                $this->port = isset( $params['port'] ) ? $params['port'] : false;
+               $this->keywordTableMap = isset( $params['keywordTableMap'] )
+                       ? $params['keywordTableMap']
+                       : [];
+
                parent::__construct( $params );
        }
 
@@ -736,16 +747,9 @@ __INDEXATTR__;
        /**
         * @param string $name
         * @return string Value of $name or remapped name if $name is a reserved keyword
-        * @TODO: dependency inject these...
         */
        public function remappedTableName( $name ) {
-               if ( $name === 'user' ) {
-                       return 'mwuser';
-               } elseif ( $name === 'text' ) {
-                       return 'pagecontent';
-               }
-
-               return $name;
+               return isset( $this->keywordTableMap[$name] ) ? $this->keywordTableMap[$name] : $name;
        }
 
        /**
@@ -841,7 +845,7 @@ __INDEXATTR__;
 
        /**
         * Posted by cc[plus]php[at]c2se[dot]com on 25-Mar-2009 09:12
-        * to http://www.php.net/manual/en/ref.pgsql.php
+        * to https://secure.php.net/manual/en/ref.pgsql.php
         *
         * Parsing a postgres array can be a tricky problem, he's my
         * take on this, it handles multi-dimensional arrays plus
index 8236abf..7317d54 100644 (file)
@@ -268,7 +268,7 @@ class DatabaseSqlite extends Database {
        }
 
        /**
-        * Attaches external database to our connection, see http://sqlite.org/lang_attach.html
+        * Attaches external database to our connection, see https://sqlite.org/lang_attach.html
         * for details.
         *
         * @param string $name Database name to be used in queries like
index f33dfc0..48d76c4 100644 (file)
@@ -386,7 +386,7 @@ interface IDatabase {
 
        /**
         * Get the number of fields in a result object
-        * @see http://www.php.net/mysql_num_fields
+        * @see https://secure.php.net/mysql_num_fields
         *
         * @param mixed $res A SQL result
         * @return int
@@ -395,7 +395,7 @@ interface IDatabase {
 
        /**
         * Get a field name in a result object
-        * @see http://www.php.net/mysql_field_name
+        * @see https://secure.php.net/mysql_field_name
         *
         * @param mixed $res A SQL result
         * @param int $n
@@ -419,7 +419,7 @@ interface IDatabase {
 
        /**
         * Change the position of the cursor in a result object
-        * @see http://www.php.net/mysql_data_seek
+        * @see https://secure.php.net/mysql_data_seek
         *
         * @param mixed $res A SQL result
         * @param int $row
@@ -428,7 +428,7 @@ interface IDatabase {
 
        /**
         * Get the last error number
-        * @see http://www.php.net/mysql_errno
+        * @see https://secure.php.net/mysql_errno
         *
         * @return int
         */
@@ -436,7 +436,7 @@ interface IDatabase {
 
        /**
         * Get a description of the last error
-        * @see http://www.php.net/mysql_error
+        * @see https://secure.php.net/mysql_error
         *
         * @return string
         */
@@ -455,7 +455,7 @@ interface IDatabase {
 
        /**
         * Get the number of rows affected by the last write query
-        * @see http://www.php.net/mysql_affected_rows
+        * @see https://secure.php.net/mysql_affected_rows
         *
         * @return int
         */
@@ -463,7 +463,7 @@ interface IDatabase {
 
        /**
         * Returns a wikitext link to the DB's website, e.g.,
-        *   return "[http://www.mysql.com/ MySQL]";
+        *   return "[https://www.mysql.com/ MySQL]";
         * Should at least contain plain text, if for some reason
         * your database has no website.
         *
@@ -1088,7 +1088,7 @@ interface IDatabase {
         *
         * Any implementation of this function should *not* involve reusing
         * sequence numbers created for rolled-back transactions.
-        * See http://bugs.mysql.com/bug.php?id=30767 for details.
+        * See https://bugs.mysql.com/bug.php?id=30767 for details.
         * @param string $seqName
         * @return null|int
         */
index 71fbe7e..7b49ce9 100644 (file)
@@ -117,8 +117,8 @@ class MySQLMasterPos implements DBMasterPos {
        }
 
        /**
-        * @see http://dev.mysql.com/doc/refman/5.7/en/show-master-status.html
-        * @see http://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html
+        * @see https://dev.mysql.com/doc/refman/5.7/en/show-master-status.html
+        * @see https://dev.mysql.com/doc/refman/5.7/en/show-slave-status.html
         * @return array|bool (binlog, (integer file number, integer position)) or false
         */
        protected function getBinlogCoordinates() {
index ff1bd43..5288c24 100644 (file)
@@ -106,6 +106,22 @@ interface ILBFactory {
         */
        public function getExternalLB( $cluster );
 
+       /**
+        * Get cached (tracked) load balancers for all main database clusters
+        *
+        * @return LoadBalancer[] Map of (cluster name => LoadBalancer)
+        * @since 1.29
+        */
+       public function getAllMainLBs();
+
+       /**
+        * Get cached (tracked) load balancers for all external database clusters
+        *
+        * @return LoadBalancer[] Map of (cluster name => LoadBalancer)
+        * @since 1.29
+        */
+       public function getAllExternalLBs();
+
        /**
         * Execute a function for each tracked load balancer
         * The callback is called with the load balancer as the first parameter,
index 4fb5b38..15a5c0d 100644 (file)
@@ -555,7 +555,7 @@ abstract class LBFactory implements ILBFactory {
         * @return ScopedCallback|null
         */
        final protected function getScopedPHPBehaviorForCommit() {
-               if ( PHP_SAPI != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
+               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
                        $old = ignore_user_abort( true ); // avoid half-finished operations
                        return new ScopedCallback( function () use ( $old ) {
                                ignore_user_abort( $old );
index a7cc16c..1d22873 100644 (file)
@@ -284,6 +284,26 @@ class LBFactoryMulti extends LBFactory {
                return $this->extLBs[$cluster];
        }
 
+       public function getAllMainLBs() {
+               $lbs = [];
+               foreach ( $this->sectionsByDB as $db => $section ) {
+                       if ( !isset( $lbs[$section] ) ) {
+                               $lbs[$section] = $this->getMainLB( $db );
+                       }
+               }
+
+               return $lbs;
+       }
+
+       public function getAllExternalLBs() {
+               $lbs = [];
+               foreach ( $this->externalLoads as $cluster => $unused ) {
+                       $lbs[$cluster] = $this->getExternalLB( $cluster );
+               }
+
+               return $lbs;
+       }
+
        /**
         * Make a new load balancer object based on template and load array
         *
index 1e69d8f..5bf5032 100644 (file)
@@ -108,6 +108,19 @@ class LBFactorySimple extends LBFactory {
                return $this->extLBs[$cluster];
        }
 
+       public function getAllMainLBs() {
+               return [ 'DEFAULT' => $this->getMainLB() ];
+       }
+
+       public function getAllExternalLBs() {
+               $lbs = [];
+               foreach ( $this->externalClusters as $cluster => $unused ) {
+                       $lbs[$cluster] = $this->getExternalLB( $cluster );
+               }
+
+               return $lbs;
+       }
+
        private function newLoadBalancer( array $servers ) {
                $lb = new LoadBalancer( array_merge(
                        $this->baseLoadBalancerParams(),
index 9424614..819375d 100644 (file)
@@ -78,6 +78,20 @@ class LBFactorySingle extends LBFactory {
                throw new BadMethodCallException( "Method is not supported." );
        }
 
+       /**
+        * @return LoadBalancerSingle[] Map of (cluster name => LoadBalancer)
+        */
+       public function getAllMainLBs() {
+               return [ 'DEFAULT' => $this->lb ];
+       }
+
+       /**
+        * @return LoadBalancerSingle[] Map of (cluster name => LoadBalancer)
+        */
+       public function getAllExternalLBs() {
+               return [];
+       }
+
        /**
         * @param string|callable $callback
         * @param array $params
index a86e1de..d42fed9 100644 (file)
@@ -1529,7 +1529,7 @@ class LoadBalancer implements ILoadBalancer {
         * @return ScopedCallback|null
         */
        final protected function getScopedPHPBehaviorForCommit() {
-               if ( PHP_SAPI != 'cli' ) { // http://bugs.php.net/bug.php?id=47540
+               if ( PHP_SAPI != 'cli' ) { // https://bugs.php.net/bug.php?id=47540
                        $old = ignore_user_abort( true ); // avoid half-finished operations
                        return new ScopedCallback( function () use ( $old ) {
                                ignore_user_abort( $old );
index babd609..45b1d83 100644 (file)
@@ -52,7 +52,7 @@ class LoadMonitorMySQL extends LoadMonitor {
                                $host = $this->parent->getServerName( $index );
                                $this->replLogger->error( __METHOD__ . ": could not get status for $host" );
                        } else {
-                               // http://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html
+                               // https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html
                                if ( $s->Innodb_buffer_pool_pages_total > 0 ) {
                                        $ratio = $s->Innodb_buffer_pool_pages_data / $s->Innodb_buffer_pool_pages_total;
                                } elseif ( $s->Qcache_total_blocks > 0 ) {
index b02985a..c830b4e 100644 (file)
@@ -90,7 +90,7 @@ class ConvertibleTimestamp {
                        # TS_MW
                } elseif ( preg_match( '/^(-?\d{1,13})(\.\d+)?$/D', $ts, $m ) ) {
                        # TS_UNIX
-                       $strtime = "@{$m[1]}"; // http://php.net/manual/en/datetime.formats.compound.php
+                       $strtime = "@{$m[1]}"; // https://secure.php.net/manual/en/datetime.formats.compound.php
                } elseif ( preg_match( '/^\d{2}-\d{2}-\d{4} \d{2}:\d{2}:\d{2}.\d{6}$/', $ts ) ) {
                        # TS_ORACLE // session altered to DD-MM-YYYY HH24:MI:SS.FF6
                        $strtime = preg_replace( '/(\d\d)\.(\d\d)\.(\d\d)(\.(\d+))?/', "$1:$2:$3",
index da47d35..a148a39 100644 (file)
@@ -103,7 +103,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                                continue;
                        }
                        if ( $targetWiki !== 'local' ) {
-
                                throw new Exception( "Only 'local' target wiki is currently supported" );
                        }
                        if ( $reqType !== 'page' && $reqType !== 'transform' ) {
@@ -150,7 +149,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
         * API.  We now translate these to the "real" Parsoid v3 API.
         */
        public function onParsoid1Request( array $req, Closure $idGeneratorFunc ) {
-
                $parts = explode( '/', $req['url'] );
                list(
                        $targetWiki, // 'local'
@@ -221,7 +219,6 @@ class ParsoidVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
 }
index 3afbaa3..35c45de 100644 (file)
@@ -78,7 +78,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
        }
 
        public function onRequests( array $reqs, Closure $idGenFunc ) {
-
                if ( $this->params['parsoidCompat'] ) {
                        return $this->onParsoidRequests( $reqs, $idGenFunc );
                }
@@ -117,7 +116,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
         * Remaps Parsoid v1/v3 requests to RESTBase v1 requests.
         */
        public function onParsoidRequests( array $reqs, Closure $idGeneratorFunc ) {
-
                $result = [];
                foreach ( $reqs as $key => $req ) {
                        $version = explode( '/', $req['url'] )[1];
@@ -131,7 +129,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $result;
-
        }
 
        /**
@@ -223,7 +220,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
        /**
@@ -241,7 +237,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
         *   * $revision is optional
         */
        public function onParsoid3Request( array $req, Closure $idGeneratorFunc ) {
-
                $parts = explode( '/', $req['url'] );
                list(
                        $targetWiki, // 'local'
@@ -272,7 +267,6 @@ class RestbaseVirtualRESTService extends VirtualRESTService {
                }
 
                return $req;
-
        }
 
 }
index 1059d7b..c8e9999 100644 (file)
@@ -283,7 +283,7 @@ class UserMailer {
                        ->getFullURL( '', false, PROTO_CANONICAL ) . '>';
 
                // Line endings need to be different on Unix and Windows due to
-               // the bug described at http://trac.wordpress.org/ticket/2603
+               // the bug described at https://core.trac.wordpress.org/ticket/2603
                $endl = PHP_EOL;
 
                if ( is_array( $body ) ) {
index ed361eb..5e8f8c8 100644 (file)
@@ -254,7 +254,7 @@ class DjVuImage {
 
                if ( isset( $wgDjvuDump ) ) {
                        # djvudump is faster as of version 3.5
-                       # http://sourceforge.net/tracker/index.php?func=detail&aid=1704049&group_id=32953&atid=406583
+                       # https://sourceforge.net/p/djvu/bugs/71/
                        $cmd = wfEscapeShellArg( $wgDjvuDump ) . ' ' . wfEscapeShellArg( $this->mFilename );
                        $dump = wfShellExec( $cmd );
                        $xml = $this->convertDumpToXML( $dump );
index fffc262..51a0135 100644 (file)
@@ -102,7 +102,6 @@ class FormatMetadata extends ContextSource {
                unset( $tags['ResolutionUnit'] );
 
                foreach ( $tags as $tag => &$vals ) {
-
                        // This seems ugly to wrap non-array's in an array just to unwrap again,
                        // especially when most of the time it is not an array
                        if ( !is_array( $tags[$tag] ) ) {
@@ -165,7 +164,6 @@ class FormatMetadata extends ContextSource {
                        }
 
                        foreach ( $vals as &$val ) {
-
                                switch ( $tag ) {
                                        case 'Compression':
                                                switch ( $val ) {
@@ -1683,7 +1681,6 @@ class FormatMetadata extends ContextSource {
        protected function getExtendedMetadataFromHook( File $file, array $extendedMetadata,
                &$maxCacheTime
        ) {
-
                Hooks::run( 'GetExtendedMetadata', [
                        &$extendedMetadata,
                        $file,
@@ -1807,7 +1804,6 @@ class FormatMetadata extends ContextSource {
                                $field['value'] = $this->resolveMultivalueValue( $field['value'] );
                        }
                }
-
        }
 
        /**
index 4bc36ba..2a735a2 100644 (file)
@@ -104,7 +104,7 @@ abstract class MediaHandler {
         *   Warning, FSFile::getPropsFromPath might pass an FSFile instead of File (!)
         * @param string $path The filename
         * @return array|bool Follow the format of PHP getimagesize() internal function.
-        *   See http://www.php.net/getimagesize. MediaWiki will only ever use the
+        *   See https://secure.php.net/getimagesize. MediaWiki will only ever use the
         *   first two array keys (the width and height), and the 'bits' associative
         *   key. All other array keys are ignored. Returning a 'bits' key is optional
         *   as not all formats have a notion of "bitdepth". Returns false on failure.
index f4f29dd..d0517d7 100644 (file)
@@ -47,7 +47,7 @@ class PNGMetadataExtractor {
                self::$pngSig = pack( "C8", 137, 80, 78, 71, 13, 10, 26, 10 );
                self::$crcSize = 4;
                /* based on list at http://owl.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData
-                * and http://www.w3.org/TR/PNG/#11keywords
+                * and https://www.w3.org/TR/PNG/#11keywords
                 */
                self::$textChunks = [
                        'xml:com.adobe.xmp' => 'xmp',
@@ -123,7 +123,7 @@ class PNGMetadataExtractor {
                                }
                                $bitDepth = ord( substr( $buf, 8, 1 ) );
                                // Detect the color type in British English as per the spec
-                               // http://www.w3.org/TR/PNG/#11IHDR
+                               // https://www.w3.org/TR/PNG/#11IHDR
                                switch ( ord( substr( $buf, 9, 1 ) ) ) {
                                        case 0:
                                                $colorType = 'greyscale';
index 62b5c2c..6a974c7 100644 (file)
@@ -264,7 +264,7 @@ class SVGReader {
                        ) {
                                $sysLang = $this->reader->getAttribute( 'systemLanguage' );
                                if ( !is_null( $sysLang ) && $sysLang !== '' ) {
-                                       // See http://www.w3.org/TR/SVG/struct.html#SystemLanguageAttribute
+                                       // See https://www.w3.org/TR/SVG/struct.html#SystemLanguageAttribute
                                        $langList = explode( ',', $sysLang );
                                        foreach ( $langList as $langItem ) {
                                                $langItem = trim( $langItem );
@@ -369,7 +369,7 @@ class SVGReader {
 
        /**
         * Return a rounded pixel equivalent for a labeled CSS/SVG length.
-        * http://www.w3.org/TR/SVG11/coords.html#UnitIdentifiers
+        * https://www.w3.org/TR/SVG11/coords.html#Units
         *
         * @param string $length CSS/SVG length.
         * @param float|int $viewportSize Optional scale for percentage units...
index 11c4d42..e33c27e 100644 (file)
@@ -511,21 +511,22 @@ abstract class TransformationalImageHandler extends ImageHandler {
         */
        protected function getMagickVersion() {
                $cache = MediaWikiServices::getInstance()->getLocalServerObjectCache();
+               $method = __METHOD__;
                return $cache->getWithSetCallback(
                        'imagemagick-version',
                        $cache::TTL_HOUR,
-                       function () {
+                       function () use ( $method ) {
                                global $wgImageMagickConvertCommand;
 
                                $cmd = wfEscapeShellArg( $wgImageMagickConvertCommand ) . ' -version';
-                               wfDebug( __METHOD__ . ": Running convert -version\n" );
+                               wfDebug( $method . ": Running convert -version\n" );
                                $retval = '';
                                $return = wfShellExec( $cmd, $retval );
                                $x = preg_match(
                                        '/Version: ImageMagick ([0-9]*\.[0-9]*\.[0-9]*)/', $return, $matches
                                );
                                if ( $x != 1 ) {
-                                       wfDebug( __METHOD__ . ": ImageMagick version check failed\n" );
+                                       wfDebug( $method . ": ImageMagick version check failed\n" );
                                        return false;
                                }
 
index 108d6fb..c419524 100644 (file)
@@ -67,7 +67,7 @@ class XCFHandler extends BitmapHandler {
                }
 
                # Forge a return array containing metadata information just like getimagesize()
-               # See PHP documentation at: http://www.php.net/getimagesize
+               # See PHP documentation at: https://secure.php.net/getimagesize
                return [
                        0 => $header['width'],
                        1 => $header['height'],
index 15f5238..9a2a8e2 100644 (file)
@@ -1184,10 +1184,6 @@ class Article implements Page {
                        return false;
                }
 
-               $rcid = $rc->getAttribute( 'rc_id' );
-
-               $token = $user->getEditToken( $rcid );
-
                $outputPage->preventClickjacking();
                if ( $wgEnableAPI && $wgEnableWriteAPI && $user->isAllowed( 'writeapi' ) ) {
                        $outputPage->addModules( 'mediawiki.page.patrol.ajax' );
@@ -1199,8 +1195,7 @@ class Article implements Page {
                        [],
                        [
                                'action' => 'markpatrolled',
-                               'rcid' => $rcid,
-                               'token' => $token,
+                               'rcid' => $rc->getAttribute( 'rc_id' ),
                        ]
                );
 
index af77868..db3ec14 100644 (file)
@@ -215,7 +215,6 @@ class ImagePage extends Article {
                        'filepage', // always show the local local Filepage.css, bug 29277
                        'mediawiki.action.view.filepage', // Add MediaWiki styles for a file page
                ] );
-
        }
 
        /**
index dd78d19..a5ac78f 100644 (file)
@@ -624,7 +624,7 @@ class WikiPage implements Page, IDBAccessObject {
                        // SELECT. Thus we need S1 to also gets the revision row FOR UPDATE; otherwise, it
                        // may not find it since a page row UPDATE and revision row INSERT by S2 may have
                        // happened after the first S1 SELECT.
-                       // http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html#isolevel_repeatable-read
+                       // https://dev.mysql.com/doc/refman/5.0/en/set-transaction.html#isolevel_repeatable-read
                        $flags = Revision::READ_LOCKING;
                        $revision = Revision::newFromPageId( $this->getId(), $latest, $flags );
                } elseif ( $this->mDataLoadedFrom == self::READ_LATEST ) {
index 0a89e4e..f2fca68 100644 (file)
@@ -315,7 +315,7 @@ abstract class TablePager extends IndexPager {
                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. <http://www.w3.org/TR/CSS2/tables.html#fixed-table-layout>
+                       // 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";
index b32f43b..e7712f2 100644 (file)
@@ -267,10 +267,8 @@ class LinkHolderArray {
         * @param string $text
         */
        public function replace( &$text ) {
-
                $this->replaceInternal( $text );
                $this->replaceInterwiki( $text );
-
        }
 
        /**
@@ -414,7 +412,6 @@ class LinkHolderArray {
                        $replacer->cb(),
                        $text
                );
-
        }
 
        /**
@@ -614,7 +611,6 @@ class LinkHolderArray {
         * @return string
         */
        public function replaceText( $text ) {
-
                $text = preg_replace_callback(
                        '/<!--(LINK|IWLINK) (.*?)-->/',
                        [ &$this, 'replaceTextCallback' ],
index eafccd9..c7db8a1 100644 (file)
@@ -507,46 +507,60 @@ class Parser {
                                [ $this->mHighestExpansionDepth, $this->mOptions->getMaxPPExpandDepth() ]
                        );
                        $this->mOutput->setLimitReportData( 'limitreport-expensivefunctioncount',
-                               [ $this->mExpensiveFunctionCount,
-                                       $this->mOptions->getExpensiveParserFunctionLimit() ]
+                               [ $this->mExpensiveFunctionCount, $this->mOptions->getExpensiveParserFunctionLimit() ]
                        );
                        Hooks::run( 'ParserLimitReportPrepare', [ $this, $this->mOutput ] );
 
-                       $limitReport = '';
-                       Hooks::run( 'ParserLimitReport', [ $this, &$limitReport ] );
-                       if ( $limitReport != '' ) {
-                               // Sanitize for comment. Note '‐' in the replacement is U+2010,
-                               // which looks much like the problematic '-'.
-                               $limitReport = str_replace( [ '-', '&' ], [ '‐', '&amp;' ], $limitReport );
-                               $text .= "\n<!-- \nNewPP limit report\n$limitReport-->\n";
+                       $limitReport = "NewPP limit report\n";
+                       if ( $wgShowHostnames ) {
+                               $limitReport .= 'Parsed by ' . wfHostname() . "\n";
+                       }
+                       $limitReport .= 'Cached time: ' . $this->mOutput->getCacheTime() . "\n";
+                       $limitReport .= 'Cache expiry: ' . $this->mOutput->getCacheExpiry() . "\n";
+                       $limitReport .= 'Dynamic content: ' .
+                               ( $this->mOutput->hasDynamicContent() ? 'true' : 'false' ) .
+                               "\n";
+
+                       foreach ( $this->mOutput->getLimitReportData() as $key => $value ) {
+                               if ( Hooks::run( 'ParserLimitReportFormat',
+                                       [ $key, &$value, &$limitReport, false, false ]
+                               ) ) {
+                                       $keyMsg = wfMessage( $key )->inLanguage( 'en' )->useDatabase( false );
+                                       $valueMsg = wfMessage( [ "$key-value-text", "$key-value" ] )
+                                               ->inLanguage( 'en' )->useDatabase( false );
+                                       if ( !$valueMsg->exists() ) {
+                                               $valueMsg = new RawMessage( '$1' );
+                                       }
+                                       if ( !$keyMsg->isDisabled() && !$valueMsg->isDisabled() ) {
+                                               $valueMsg->params( $value );
+                                               $limitReport .= "{$keyMsg->text()}: {$valueMsg->text()}\n";
+                                       }
+                               }
                        }
+                       // Since we're not really outputting HTML, decode the entities and
+                       // then re-encode the things that need hiding inside HTML comments.
+                       $limitReport = htmlspecialchars_decode( $limitReport );
+                       Hooks::run( 'ParserLimitReport', [ $this, &$limitReport ] );
+
+                       // Sanitize for comment. Note '‐' in the replacement is U+2010,
+                       // which looks much like the problematic '-'.
+                       $limitReport = str_replace( [ '-', '&' ], [ '‐', '&amp;' ], $limitReport );
+                       $text .= "\n<!-- \n$limitReport-->\n";
 
-                       // Add on template profiling data in human/machine readable way
+                       // Add on template profiling data
                        $dataByFunc = $this->mProfiler->getFunctionStats();
                        uasort( $dataByFunc, function ( $a, $b ) {
                                return $a['real'] < $b['real']; // descending order
                        } );
-                       $profileReport = [];
+                       $profileReport = "Transclusion expansion time report (%,ms,calls,template)\n";
                        foreach ( array_slice( $dataByFunc, 0, 10 ) as $item ) {
-                               $profileReport[] = sprintf( "%6.2f%% %8.3f %6d %s",
-                                       $item['%real'], $item['real'], $item['calls'], $item['name'] );
+                               $profileReport .= sprintf( "%6.2f%% %8.3f %6d - %s\n",
+                                       $item['%real'], $item['real'], $item['calls'],
+                                       htmlspecialchars( $item['name'] ) );
                        }
-                       $this->mOutput->setLimitReportData( 'limitreport-timingprofile', $profileReport );
+                       $text .= "\n<!-- \n$profileReport-->\n";
 
-                       // Add other cache related metadata
-                       if ( $wgShowHostnames ) {
-                               $this->mOutput->setLimitReportData( 'cachereport-origin', wfHostname() );
-                       }
-                       $this->mOutput->setLimitReportData( 'cachereport-timestamp',
-                               $this->mOutput->getCacheTime() );
-                       $this->mOutput->setLimitReportData( 'cachereport-ttl',
-                               $this->mOutput->getCacheExpiry() );
-                       $this->mOutput->setLimitReportData( 'cachereport-transientcontent',
-                               $this->mOutput->hasDynamicContent() );
-
-                       if ( $this->mGeneratedPPNodeCount
-                               > $this->mOptions->getMaxGeneratedPPNodeCount() / 10
-                       ) {
+                       if ( $this->mGeneratedPPNodeCount > $this->mOptions->getMaxGeneratedPPNodeCount() / 10 ) {
                                wfDebugLog( 'generated-pp-node-count', $this->mGeneratedPPNodeCount . ' ' .
                                        $this->mTitle->getPrefixedDBkey() );
                        }
@@ -4217,7 +4231,7 @@ class Parser {
 
                        # HTML names must be case-insensitively unique (bug 10721).
                        # This does not apply to Unicode characters per
-                       # http://www.w3.org/TR/html5/infrastructure.html#case-sensitivity-and-string-comparison
+                       # https://www.w3.org/TR/html5/infrastructure.html#case-sensitivity-and-string-comparison
                        # @todo FIXME: We may be changing them depending on the current locale.
                        $arrayKey = strtolower( $safeHeadline );
                        if ( $legacyHeadline === false ) {
index 9a10878..2900f41 100644 (file)
@@ -733,7 +733,6 @@ class ParserOptions {
                $this->mThumbSize = $user->getOption( 'thumbsize' );
                $this->mStubThreshold = $user->getStubThreshold();
                $this->mUserLang = $lang;
-
        }
 
        /**
index 9dfa97c..d2ef5e3 100644 (file)
@@ -188,7 +188,9 @@ class ParserOutput extends CacheTime {
         */
        private $mExtensionData = [];
 
-       /** @var array $mLimitReportData Parser limit report data. */
+       /**
+        * @var array $mLimitReportData Parser limit report data.
+        */
        private $mLimitReportData = [];
 
        /**
@@ -991,34 +993,24 @@ class ParserOutput extends CacheTime {
        /**
         * Sets parser limit report data for a key
         *
-        * If $value consist of a list of two floats, it will be interpreted as
-        * (actual value, maximum allowed value). The presence of a "-" in $key will cause
-        * the first part of the key to be interpreted as a namespace.
+        * The key is used as the prefix for various messages used for formatting:
+        *  - $key: The label for the field in the limit report
+        *  - $key-value-text: Message used to format the value in the "NewPP limit
+        *      report" HTML comment. If missing, uses $key-format.
+        *  - $key-value-html: Message used to format the value in the preview
+        *      limit report table. If missing, uses $key-format.
+        *  - $key-value: Message used to format the value. If missing, uses "$1".
+        *
+        * Note that all values are interpreted as wikitext, and so should be
+        * encoded with htmlspecialchars() as necessary, but should avoid complex
+        * HTML for sanity of display in the "NewPP limit report" comment.
         *
         * @since 1.22
-        * @param string $key Data key
-        * @param mixed $value Data value One of (float, string, bool, JSON serializable array)
+        * @param string $key Message key
+        * @param mixed $value Appropriate for Message::params()
         */
        public function setLimitReportData( $key, $value ) {
-               if ( is_array( $value ) ) {
-                       if ( array_keys( $value ) === [ 0, 1 ]
-                               && is_numeric( $value[0] )
-                               && is_numeric( $value[1] )
-                       ) {
-                               $data = [ 'value' => $value[0], 'limit' => $value[1] ];
-                       } else {
-                               $data = $value;
-                       }
-               } else {
-                       $data = $value;
-               }
-
-               if ( strpos( $key, '-' ) ) {
-                       list( $ns, $name ) = explode( '-', $key, 2 );
-                       $this->mLimitReportData[$ns][$name] = $data;
-               } else {
-                       $this->mLimitReportData[$key] = $data;
-               }
+               $this->mLimitReportData[$key] = $value;
        }
 
        /**
index d613b2e..26fbfa1 100644 (file)
@@ -8,50 +8,50 @@ class ExtensionProcessor implements Processor {
         * @var array
         */
        protected static $globalSettings = [
-               'ResourceLoaderSources',
-               'ResourceLoaderLESSVars',
-               'DefaultUserOptions',
-               'HiddenPrefs',
-               'GroupPermissions',
-               'RevokePermissions',
-               'GrantPermissions',
-               'GrantPermissionGroups',
-               'ImplicitGroups',
-               'GroupsAddToSelf',
-               'GroupsRemoveFromSelf',
+               'ActionFilteredLogs',
+               'Actions',
                'AddGroups',
-               'RemoveGroups',
-               'AvailableRights',
-               'ContentHandlers',
-               'ConfigRegistry',
-               'SessionProviders',
+               'APIFormatModules',
+               'APIListModules',
+               'APIMetaModules',
+               'APIModules',
+               'APIPropModules',
                'AuthManagerAutoConfig',
+               'AvailableRights',
                'CentralIdLookupProviders',
                'ChangeCredentialsBlacklist',
-               'RemoveCredentialsBlacklist',
-               'RateLimits',
-               'RecentChangesFlags',
-               'MediaHandlers',
-               'ExtensionFunctions',
+               'ConfigRegistry',
+               'ContentHandlers',
+               'DefaultUserOptions',
                'ExtensionEntryPointListFiles',
-               'SpecialPages',
-               'JobClasses',
-               'LogTypes',
-               'LogRestrictions',
+               'ExtensionFunctions',
+               'FeedClasses',
                'FilterLogTypes',
-               'ActionFilteredLogs',
-               'LogNames',
-               'LogHeaders',
+               'GrantPermissionGroups',
+               'GrantPermissions',
+               'GroupPermissions',
+               'GroupsAddToSelf',
+               'GroupsRemoveFromSelf',
+               'HiddenPrefs',
+               'ImplicitGroups',
+               'JobClasses',
                'LogActions',
                'LogActionsHandlers',
-               'Actions',
-               'APIModules',
-               'APIFormatModules',
-               'APIMetaModules',
-               'APIPropModules',
-               'APIListModules',
+               'LogHeaders',
+               'LogNames',
+               'LogRestrictions',
+               'LogTypes',
+               'MediaHandlers',
+               'RateLimits',
+               'RecentChangesFlags',
+               'RemoveCredentialsBlacklist',
+               'RemoveGroups',
+               'ResourceLoaderLESSVars',
+               'ResourceLoaderSources',
+               'RevokePermissions',
+               'SessionProviders',
+               'SpecialPages',
                'ValidSkinNames',
-               'FeedClasses',
        ];
 
        /**
@@ -62,18 +62,18 @@ class ExtensionProcessor implements Processor {
         * @var array
         */
        protected static $mergeStrategies = [
-               'wgGroupPermissions' => 'array_plus_2d',
-               'wgRevokePermissions' => 'array_plus_2d',
-               'wgGrantPermissions' => 'array_plus_2d',
-               'wgHooks' => 'array_merge_recursive',
+               'wgAuthManagerAutoConfig' => 'array_plus_2d',
+               'wgCapitalLinkOverrides' => 'array_plus',
                'wgExtensionCredits' => 'array_merge_recursive',
                'wgExtraGenderNamespaces' => 'array_plus',
-               'wgNamespacesWithSubpages' => 'array_plus',
+               'wgGrantPermissions' => 'array_plus_2d',
+               'wgGroupPermissions' => 'array_plus_2d',
+               'wgHooks' => 'array_merge_recursive',
                'wgNamespaceContentModels' => 'array_plus',
                'wgNamespaceProtection' => 'array_plus',
-               'wgCapitalLinkOverrides' => 'array_plus',
+               'wgNamespacesWithSubpages' => 'array_plus',
                'wgRateLimits' => 'array_plus_2d',
-               'wgAuthManagerAutoConfig' => 'array_plus_2d',
+               'wgRevokePermissions' => 'array_plus_2d',
        ];
 
        /**
index 143f5cc..1073de0 100644 (file)
@@ -388,7 +388,6 @@ class ResourceLoader implements LoggerAwareInterface {
                                }
                        }
                }
-
        }
 
        /**
@@ -428,7 +427,6 @@ class ResourceLoader implements LoggerAwareInterface {
                        // Keep track of their names so that they can be loaded together
                        $this->testModuleNames[$id] = array_keys( $testModules[$id] );
                }
-
        }
 
        /**
@@ -670,7 +668,7 @@ class ResourceLoader implements LoggerAwareInterface {
                // back for subsequent output, resulting in invalid GZIP. So we have to wrap
                // the whole thing in our own output buffer to be sure the active buffer
                // doesn't use ob_gzhandler.
-               // See http://bugs.php.net/bug.php?id=36514
+               // See https://bugs.php.net/bug.php?id=36514
                ob_start();
 
                // Find out which modules are missing and instantiate the others
@@ -716,7 +714,7 @@ class ResourceLoader implements LoggerAwareInterface {
                }
 
                // See RFC 2616 § 3.11 Entity Tags
-               // http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.11
+               // https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.11
                $etag = 'W/"' . $versionHash . '"';
 
                // Try the client-side cache first
@@ -779,7 +777,6 @@ class ResourceLoader implements LoggerAwareInterface {
 
                $this->errors = [];
                echo $response;
-
        }
 
        /**
@@ -824,7 +821,7 @@ class ResourceLoader implements LoggerAwareInterface {
                        header( 'Content-Type: text/javascript; charset=utf-8' );
                }
                // See RFC 2616 § 14.19 ETag
-               // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19
+               // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.19
                header( 'ETag: ' . $etag );
                if ( $context->getDebug() ) {
                        // Do not cache debug responses
@@ -849,7 +846,7 @@ class ResourceLoader implements LoggerAwareInterface {
         */
        protected function tryRespondNotModified( ResourceLoaderContext $context, $etag ) {
                // See RFC 2616 § 14.26 If-None-Match
-               // http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26
+               // https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.26
                $clientKeys = $context->getRequest()->getHeader( 'If-None-Match', WebRequest::GETHEADER_LIST );
                // Never send 304s in debug mode
                if ( $clientKeys !== false && !$context->getDebug() && in_array( $etag, $clientKeys ) ) {
@@ -859,7 +856,7 @@ class ResourceLoader implements LoggerAwareInterface {
                        // response (because the gzip header is always there). This is
                        // a problem because 304 responses have to be completely empty
                        // per the HTTP spec, and Firefox behaves buggily when they're not.
-                       // See also http://bugs.php.net/bug.php?id=51579
+                       // See also https://bugs.php.net/bug.php?id=51579
                        // To work around this, we tear down all output buffering before
                        // sending the 304.
                        wfResetOutputBuffers( /* $resetGzipEncoding = */ true );
@@ -1142,7 +1139,6 @@ MESSAGE;
        protected static function makeLoaderImplementScript(
                $name, $scripts, $styles, $messages, $templates
        ) {
-
                if ( $scripts instanceof XmlJsCode ) {
                        $scripts = new XmlJsCode( "function ( $, jQuery, require, module ) {\n{$scripts->value}\n}" );
                } elseif ( !is_string( $scripts ) && !is_array( $scripts ) ) {
@@ -1434,14 +1430,13 @@ MESSAGE;
         * the given value.
         *
         * @param array $configuration List of configuration values keyed by variable name
-        * @param bool $pretty Pretty-print with extra whitespace
         * @return string
         */
-       public static function makeConfigSetScript( array $configuration, $pretty = null ) {
+       public static function makeConfigSetScript( array $configuration ) {
                return Xml::encodeJsCall(
                        'mw.config.set',
                        [ $configuration ],
-                       ( $pretty === null ) ? ResourceLoader::inDebugMode() : $pretty
+                       ResourceLoader::inDebugMode()
                );
        }
 
index 8ba49b6..5a50b17 100644 (file)
@@ -62,7 +62,6 @@ class SearchPostgres extends SearchDatabase {
         * @return string
         */
        function parseQuery( $term ) {
-
                wfDebug( "parseQuery received: $term \n" );
 
                # # No backslashes allowed
@@ -115,7 +114,6 @@ class SearchPostgres extends SearchDatabase {
                wfDebug( "parseQuery returned: $searchstring \n" );
 
                return $searchstring;
-
        }
 
        /**
index 6ea8b89..65eb9b7 100644 (file)
@@ -289,7 +289,6 @@ abstract class BaseTemplate extends QuickTemplate {
                if ( $content !== '' ) {
                        echo "<div class='after-portlet after-portlet-$name'>$content</div>";
                }
-
        }
 
        /**
index 3efbd3b..9c5600d 100644 (file)
@@ -196,7 +196,6 @@ class SkinTemplate extends Skin {
        }
 
        protected function setupTemplateForOutput() {
-
                $request = $this->getRequest();
                $user = $this->getUser();
                $title = $this->getTitle();
@@ -257,7 +256,6 @@ class SkinTemplate extends Skin {
                if ( $oldContext ) {
                        $this->setContext( $oldContext );
                }
-
        }
 
        /**
@@ -1171,7 +1169,6 @@ class SkinTemplate extends Skin {
         * @return array
         */
        private function buildContentActionUrls( $content_navigation ) {
-
                // content_actions has been replaced with content_navigation for backwards
                // compatibility and also for skins that just want simple tabs content_actions
                // is now built by flattening the content_navigation arrays into one
index 984e32b..1e03774 100644 (file)
@@ -156,7 +156,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                        [
                                'returnto' => $this->mReturnTo,
                                'returntoquery' => $this->mReturnToQuery,
-                               'uselang' => $this->mLanguage,
+                               'uselang' => $this->mLanguage ?: null,
                                'fromhttp' => $wgSecureLogin && $this->mFromHTTP ? '1' : null,
                        ]
                );
@@ -619,7 +619,7 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                $form = HTMLForm::factory( 'vform', $formDescriptor, $context );
 
                $form->addHiddenField( 'authAction', $this->authAction );
-               if ( $wgLoginLanguageSelector ) {
+               if ( $wgLoginLanguageSelector && $this->mLanguage ) {
                        $form->addHiddenField( 'uselang', $this->mLanguage );
                }
                $form->addHiddenField( 'force', $this->securityLevel );
@@ -763,14 +763,21 @@ abstract class LoginSignupSpecialPage extends AuthManagerSpecialPage {
                $wgAuth->modifyUITemplate( $template, $action );
 
                $oldTemplate = $template;
-               $hookName = $this->isSignup() ? 'UserCreateForm' : 'UserLoginForm';
-               Hooks::run( $hookName, [ &$template ] );
-               if ( $oldTemplate !== $template ) {
-                       wfDeprecated( "reference in $hookName hook", '1.27' );
+
+               // Both Hooks::run are explicit here to make findHooks.php happy
+               if ( $this->isSignup() ) {
+                       Hooks::run( 'UserCreateForm', [ &$template ] );
+                       if ( $oldTemplate !== $template ) {
+                               wfDeprecated( "reference in UserCreateForm hook", '1.27' );
+                       }
+               } else {
+                       Hooks::run( 'UserLoginForm', [ &$template ] );
+                       if ( $oldTemplate !== $template ) {
+                               wfDeprecated( "reference in UserLoginForm hook", '1.27' );
+                       }
                }
 
                return $template;
-
        }
 
        public function onAuthChangeFormFields(
index 4356bc5..daabded 100644 (file)
@@ -188,7 +188,6 @@ class SpecialPageFactory {
 
        private static $list;
        private static $aliases;
-       private static $pageObjectCache = [];
 
        /**
         * Reset the internal list of special pages. Useful when changing $wgSpecialPages after
@@ -197,7 +196,6 @@ class SpecialPageFactory {
        public static function resetList() {
                self::$list = null;
                self::$aliases = null;
-               self::$pageObjectCache = [];
        }
 
        /**
@@ -379,10 +377,6 @@ class SpecialPageFactory {
        public static function getPage( $name ) {
                list( $realName, /*...*/ ) = self::resolveAlias( $name );
 
-               if ( isset( self::$pageObjectCache[$realName] ) ) {
-                       return self::$pageObjectCache[$realName];
-               }
-
                $specialPageList = self::getPageList();
 
                if ( isset( $specialPageList[$realName] ) ) {
@@ -410,7 +404,6 @@ class SpecialPageFactory {
                                $page = null;
                        }
 
-                       self::$pageObjectCache[$realName] = $page;
                        if ( $page instanceof SpecialPage ) {
                                return $page;
                        } else {
index 39ca8dd..0899d58 100644 (file)
@@ -105,6 +105,7 @@ class SpecialBlockList extends SpecialPage {
                $form = HTMLForm::factory( 'ooui', $fields, $context );
                $form
                        ->setMethod( 'get' )
+                       ->setFormIdentifier( 'blocklist' )
                        ->setWrapperLegendMsg( 'ipblocklist-legend' )
                        ->setSubmitTextMsg( 'ipblocklist-submit' )
                        ->setSubmitProgressive()
index 9746ef6..82abccf 100644 (file)
@@ -34,7 +34,7 @@ use MediaWiki\Auth\AuthManager;
  */
 class SpecialPasswordReset extends FormSpecialPage {
        /** @var PasswordReset */
-       private $passwordReset;
+       private $passwordReset = null;
 
        /**
         * @var string[] Temporary storage for the passwords which have been sent out, keyed by username.
@@ -53,7 +53,13 @@ class SpecialPasswordReset extends FormSpecialPage {
 
        public function __construct() {
                parent::__construct( 'PasswordReset', 'editmyprivateinfo' );
-               $this->passwordReset = new PasswordReset( $this->getConfig(), AuthManager::singleton() );
+       }
+
+       private function getPasswordReset() {
+               if ( $this->passwordReset === null ) {
+                       $this->passwordReset = new PasswordReset( $this->getConfig(), AuthManager::singleton() );
+               }
+               return $this->passwordReset;
        }
 
        public function doesWrites() {
@@ -61,11 +67,11 @@ class SpecialPasswordReset extends FormSpecialPage {
        }
 
        public function userCanExecute( User $user ) {
-               return $this->passwordReset->isAllowed( $user )->isGood();
+               return $this->getPasswordReset()->isAllowed( $user )->isGood();
        }
 
        public function checkExecutePermissions( User $user ) {
-               $status = Status::wrap( $this->passwordReset->isAllowed( $user ) );
+               $status = Status::wrap( $this->getPasswordReset()->isAllowed( $user ) );
                if ( !$status->isGood() ) {
                        throw new ErrorPageError( 'internalerror', $status->getMessage() );
                }
@@ -150,7 +156,7 @@ class SpecialPasswordReset extends FormSpecialPage {
 
                $this->method = $username ? 'username' : 'email';
                $this->result = Status::wrap(
-                       $this->passwordReset->execute( $this->getUser(), $username, $email, $capture ) );
+                       $this->getPasswordReset()->execute( $this->getUser(), $username, $email, $capture ) );
                if ( $capture && $this->result->isOK() ) {
                        $this->passwords = $this->result->getValue();
                }
@@ -199,7 +205,7 @@ class SpecialPasswordReset extends FormSpecialPage {
         * @return bool
         */
        public function isListed() {
-               if ( $this->passwordReset->isAllowed( $this->getUser() )->isGood() ) {
+               if ( $this->getPasswordReset()->isAllowed( $this->getUser() )->isGood() ) {
                        return parent::isListed();
                }
 
index 6daf19f..9280b04 100644 (file)
@@ -234,11 +234,6 @@ class SpecialSearch extends SpecialPage {
 
                        return;
                }
-               # No match, generate an edit URL
-               $title = Title::newFromText( $term );
-               if ( !is_null( $title ) ) {
-                       Hooks::run( 'SpecialSearchNogomatch', [ &$title ] );
-               }
                $this->showResults( $term );
        }
 
@@ -422,7 +417,12 @@ class SpecialSearch extends SpecialPage {
                                $out->addHTML( '<div class="error">' .
                                        $textStatus->getMessage( 'search-error' ) . '</div>' );
                        } else {
-                               $this->showCreateLink( $title, $num, $titleMatches, $textMatches );
+                               if ( !$this->offset ) {
+                                       // If we have an offset the create link was rendered earlier in this function.
+                                       // This class needs a good de-spaghettification, but for now this will
+                                       // do the job.
+                                       $this->showCreateLink( $title, $num, $titleMatches, $textMatches );
+                               }
                                $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>",
                                        [ $hasOtherResults ? 'search-nonefound-thiswiki' : 'search-nonefound',
                                                        wfEscapeWikiText( $term )
@@ -455,7 +455,6 @@ class SpecialSearch extends SpecialPage {
                $out->addHTML( "</div>" );
 
                Hooks::run( 'SpecialSearchResultsAppend', [ $this, $out, $term ] );
-
        }
 
        /**
@@ -470,25 +469,6 @@ class SpecialSearch extends SpecialPage {
                return "<p class=\"mw-search-interwiki-header mw-search-visualclear\">\n$wikiMsg</p>";
        }
 
-       /**
-        * Decide if the suggested query should be run, and it's results returned
-        * instead of the provided $textMatches
-        *
-        * @param SearchResultSet $textMatches The results of a users query
-        * @return bool
-        */
-       protected function shouldRunSuggestedQuery( SearchResultSet $textMatches ) {
-               if ( !$this->runSuggestion ||
-                       !$textMatches->hasSuggestion() ||
-                       $textMatches->numRows() > 0 ||
-                       $textMatches->searchContainedSyntax()
-               ) {
-                       return false;
-               }
-
-               return $this->getConfig()->get( 'SearchRunSuggestedQuery' );
-       }
-
        /**
         * Generates HTML shown to the user when we have a suggestion about a query
         * that might give more results than their current query.
@@ -752,7 +732,6 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function showHit( SearchResult $result, $terms, $position ) {
-
                if ( $result->isBrokenTitle() ) {
                        return '';
                }
@@ -972,7 +951,6 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function showInterwikiHit( $result, $lastInterwiki, $query ) {
-
                if ( $result->isBrokenTitle() ) {
                        return '';
                }
@@ -1335,24 +1313,6 @@ class SpecialSearch extends SpecialPage {
                return false;
        }
 
-       /**
-        * Check if query starts with all: prefix
-        *
-        * @param string $term The string to check
-        * @return bool
-        */
-       protected function startsWithAll( $term ) {
-
-               $allkeyword = $this->msg( 'searchall' )->inContentLanguage()->text();
-
-               $parts = explode( ':', $term );
-               if ( count( $parts ) > 1 ) {
-                       return $parts[0] == $allkeyword;
-               }
-
-               return false;
-       }
-
        /**
         * @since 1.18
         *
index 9573f33..8478e94 100644 (file)
@@ -60,7 +60,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * Execute page -- can output a file directly or show a listing of them.
         *
         * @param string $subPage Subpage, e.g. in
-        *   http://example.com/wiki/Special:UploadStash/foo.jpg, the "foo.jpg" part
+        *   https://example.com/wiki/Special:UploadStash/foo.jpg, the "foo.jpg" part
         * @return bool Success
         */
        public function execute( $subPage ) {
index 1ce14b6..e5642d9 100644 (file)
@@ -32,7 +32,7 @@ class RaggettInternalPHP extends RaggettBase {
                $retval = $tidy->getStatus();
                if ( $retval == 2 ) {
                        // 2 is magic number for fatal error
-                       // http://www.php.net/manual/en/function.tidy-get-status.php
+                       // https://secure.php.net/manual/en/tidy.getstatus.php
                        $cleansource = null;
                } else {
                        $cleansource = tidy_get_output( $tidy );
index 92a65f0..273d555 100644 (file)
@@ -1658,7 +1658,6 @@ class User implements IDBAccessObject {
 
                // Extensions
                Hooks::run( 'GetBlockedStatus', [ &$this ] );
-
        }
 
        /**
@@ -1690,9 +1689,8 @@ class User implements IDBAccessObject {
         * @return bool True if blacklisted.
         */
        public function inDnsBlacklist( $ip, $bases ) {
-
                $found = false;
-               // @todo FIXME: IPv6 ???  (http://bugs.php.net/bug.php?id=33170)
+               // @todo FIXME: IPv6 ???  (https://bugs.php.net/bug.php?id=33170)
                if ( IP::isIPv4( $ip ) ) {
                        // Reverse IP, bug 21255
                        $ipReversed = implode( '.', array_reverse( explode( '.', $ip ) ) );
index 1fd830e..c6d1a54 100644 (file)
@@ -56,13 +56,13 @@ class UIDGenerator {
                if ( !preg_match( '/^[0-9a-f]{12}$/i', $nodeId ) ) {
                        MediaWiki\suppressWarnings();
                        if ( wfIsWindows() ) {
-                               // http://technet.microsoft.com/en-us/library/bb490913.aspx
+                               // https://technet.microsoft.com/en-us/library/bb490913.aspx
                                $csv = trim( wfShellExec( 'getmac /NH /FO CSV' ) );
                                $line = substr( $csv, 0, strcspn( $csv, "\n" ) );
                                $info = str_getcsv( $line );
                                $nodeId = isset( $info[0] ) ? str_replace( '-', '', $info[0] ) : '';
                        } elseif ( is_executable( '/sbin/ifconfig' ) ) { // Linux/BSD/Solaris/OS X
-                               // See http://linux.die.net/man/8/ifconfig
+                               // See https://linux.die.net/man/8/ifconfig
                                $m = [];
                                preg_match( '/\s([0-9a-f]{2}(:[0-9a-f]{2}){5})\s/',
                                        wfShellExec( '/sbin/ifconfig -a' ), $m );
@@ -517,7 +517,7 @@ class UIDGenerator {
        protected function timeWaitUntil( array $time ) {
                do {
                        $ct = self::millitime();
-                       if ( $ct >= $time ) { // http://php.net/manual/en/language.operators.comparison.php
+                       if ( $ct >= $time ) { // https://secure.php.net/manual/en/language.operators.comparison.php
                                return $ct; // current timestamp is higher than $time
                        }
                } while ( ( ( $time[0] - $ct[0] ) * 1000 + ( $time[1] - $ct[1] ) ) <= 10 );
index fc91443..886ee94 100644 (file)
@@ -186,7 +186,6 @@ class SrConverter extends LanguageConverter {
                } else {
                        return false;
                }
-
        }
 
 }
index d9111a6..e1099f8 100644 (file)
@@ -174,7 +174,6 @@ class LanguageZh extends LanguageZh_hans {
         * @return string
         */
        function normalizeForSearch( $string, $autoVariant = 'zh-hans' ) {
-
                // always convert to zh-hans before indexing. it should be
                // better to use zh-hans for search, since conversion from
                // Traditional to Simplified is less ambiguous than the
@@ -183,7 +182,6 @@ class LanguageZh extends LanguageZh_hans {
                // LanguageZh_hans::normalizeForSearch
                $s = parent::normalizeForSearch( $s );
                return $s;
-
        }
 
        /**
index 7fedea0..e7415f5 100644 (file)
        "wrongpasswordempty": "Þū ne write nǣnig þafungword. \nSēc þū eft lā.",
        "passwordtooshort": "Þafungword sculon habban læst {{PLURAL:$1|1 stafan|$1 stafena}}.",
        "passwordtoolong": "Þafungword ne cunnon wesan lengran þonne {{PLURAL:$1|1 stafa|$1 stafena}}.",
+       "passwordtoopopular": "Swiðe gewunelice gelēafnesword ne mæg man brūcan. Cies anliepe gelēafnesword.",
        "password-name-match": "Þīn þafungword sceal wesan ungelīc þīnum brūcendes naman.",
        "password-login-forbidden": "Sēo nytt þisses brūcendes naman and þafungwordes nis gelīfed.",
        "mailmypassword": "Settan þafungword eft",
        "passwordremindertitle": "Nīwe hwīlendlic þafungword for {{SITENAME}}",
        "noemail": "Þær nis nǣnig spearcǣrenda nama gewriten for \"$1\" brūcende.",
        "noemailcreate": "Þū þearft wrītan gengne spearcǣrenda naman.",
-       "blocked-mailpassword": "Þīn IP nama is fortȳned and ne cann adihtan; þæs ne cann  hit brūcan þone þafungworda eftgemyndgunge tōl swā þæt man ne miswende hine.",
+       "passwordsent": "Niw gelēafnesword habbaþ we gesended þæm ærendgewrites hamsteall in ūr nambrede for \"$1\".",
+       "blocked-mailpassword": "Þīn IP nama is fortȳned and ne mæg adihtan. To þam þæt man ne mæg miswendan, man ne mōt brūcan gelēafneswordforfang fram þissum IP stede.",
        "acct_creation_throttle_hit": "Nēosiende tō þissum wici, þe þīnne IP-Stōwe brȳcþ, hæfþ gesett {{PLURAL:$1|1 hordcleofan|$1 hordcleofan}} in þǣm læsten dæge. Þu ne canst settan ǣnige māran. Þǣrfram ne cunnon Nēosiende, þe þisne IP-Stōwe brȳcþ, settan ǣnige hordcleofan māran on þisse handhwīle.",
        "accountcreated": "Scōp reccinge",
        "loginlanguagelabel": "Sprǣc: $1",
index 1c6303b..3289983 100644 (file)
@@ -68,7 +68,8 @@
                        "بدارين",
                        "باسم",
                        "Moud hosny",
-                       "ديفيد"
+                       "ديفيد",
+                       "Super ninja2"
                ]
        },
        "tog-underline": "سطر تحت الوصلات:",
        "modifiedarticleprotection": "غير مستوى حماية \"[[$1]]\"",
        "unprotectedarticle": "أزال الحماية من \"[[$1]]\"",
        "movedarticleprotection": "نقل إعدادات الحماية من \"[[$2]]\" إلى \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|محمي}} \"[[$1]]\"",
        "protect-title": "ضبط حماية \"$1\"",
        "protect-title-notallowed": "عرض مستوى حماية \"$1\"",
        "prot_1movedto2": "نُقلت [[$1]] إلى [[$2]]",
index 6893166..dd96161 100644 (file)
        "articlepage": "Adkintun trokiñdungu wülngiñ",
        "talk": "Nütramkawün",
        "views": "Adngelün",
-       "toolbox": "Küdzawpeyüm",
+       "toolbox": "Küdawpeyüm",
        "userpage": "Adkintun kellufe ñi wülngiñ",
        "projectpage": "Adkintun zeumanzugu wülngiñ",
        "imagepage": "Adkintun ad wülngiñ",
        "yourname": "Tami üy",
        "yourpassword": "Tami kondungu",
        "yourpasswordagain": "Rüf feypinge nülawe:",
-       "remembermypassword": "Amulen tañi nülküwküleael tüfa mew (alürumechi $1 {{PLURAL:$1 antü}})",
        "login": "Konkülen",
        "nav-login-createaccount": "konkülen/dewman konün",
        "userlogin": "Konkülen/dewman konün",
index 78e4779..51b24c5 100644 (file)
        "botpasswords-label-delete": "Desaniciar",
        "botpasswords-label-resetpassword": "Reestablecer la contraseña",
        "botpasswords-label-grants": "Permisos aplicables:",
-       "botpasswords-help-grants": "Cada permisu da accesu a los permisos de usuario llistaos que yá tenga la cuenta. Mira la [[Special:ListGrants|tabla de permisos]] pa más información.",
+       "botpasswords-help-grants": "Los permisos dan accesu a los permisos d'usuariu que yá tenga la cuenta. Activar un permisu equí nun da accesu a nengún permisu que la to cuenta nun tenga d'otra miente. Mira la [[Special:ListGrants|tabla de permisos]] pa más información.",
        "botpasswords-label-grants-column": "Permitío",
        "botpasswords-bad-appid": "El nome del bot \"$1\" nun ye válidu.",
        "botpasswords-insert-failed": "Nun pudo amestase'l nome de bot «$1». ¿Taba añadíu yá?",
        "grant-basic": "Permisos básicos",
        "grant-viewdeleted": "Ver los ficheros y páxines desaniciaos",
        "grant-viewmywatchlist": "Ver la to llista de siguimientu",
+       "grant-viewrestrictedlogs": "Ver entraes acutaes del rexistru",
        "newuserlogpage": "Rexistru de creación d'usuarios",
        "newuserlogpagetext": "Esti ye un rexistru de creación d'usuarios.",
        "rightslog": "Rexistru de permisos d'usuariu",
        "booksources-search": "Buscar",
        "booksources-text": "Esta ye una llista d'enllaces a otros sitios que vienden llibros nuevos y usaos, y que puen tener más información sobre los llibros que ta buscando:",
        "booksources-invalid-isbn": "El códigu ISBN que puxisti nun paez que valga; mira que te vien copiáu de la fonte orixinal.",
+       "magiclink-tracking-rfc": "Páxines que usen enllaces máxicos RFC",
+       "magiclink-tracking-rfc-desc": "Esta páxina utiliza enllaces máxicos RFC. Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pa saber como facer la migración.",
+       "magiclink-tracking-pmid": "Páxines qu'usen enllaces máxicos PMID",
+       "magiclink-tracking-pmid-desc": "Esta páxina utiliza enllaces máxicos PMID. Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pa saber como facer la migración.",
+       "magiclink-tracking-isbn": "Páxines que usen enllaces máxicos ISBN",
+       "magiclink-tracking-isbn-desc": "Esta páxina utiliza enllaces máxicos ISBN. Consulta [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pa saber como facer la migración.",
        "specialloguserlabel": "Fecho por:",
        "speciallogtitlelabel": "Oxetivu (títulu o {{ns:user}}:nome d'usuariu):",
        "log": "Rexistros",
        "activeusers-intro": "Esta ye una llista d'usuarios que tuvieron alguna mena d'actividá hai menos de $1 {{PLURAL:$1|día|díes}}.",
        "activeusers-count": "$1 {{PLURAL:$1|edición|ediciones}} {{PLURAL:$3|nel caberu día|nos caberos $3 díes}}",
        "activeusers-from": "Amosar usuarios principiando dende:",
-       "activeusers-hidebots": "Anubrir bots",
-       "activeusers-hidesysops": "Anubrir alministradores",
+       "activeusers-groups": "Amosar los usuarios que pertenecen a los grupos:",
        "activeusers-noresult": "Nun s'alcontraron usuarios.",
        "activeusers-submit": "Amosar los usuarios activos",
        "listgrouprights": "Drechos de los grupos d'usuariu",
        "modifiedarticleprotection": "camudó’l nivel de proteición de «[[$1]]»",
        "unprotectedarticle": "quitó-y la protección a \"[[$1]]\"",
        "movedarticleprotection": "treslladó los parámetros de proteición dende «[[$2]]» a «[[$1]]»",
+       "protectedarticle-comment": "{{GENDER:$2|Protexó}} «[[$1]]»",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Cambió'l nivel de protección}} pa «[[$1]]»",
+       "unprotectedarticle-comment": "{{GENDER:$2|Quitó la protección}} de «[[$1]]»",
        "protect-title": "Protexendo \"$1\"",
        "protect-title-notallowed": "Ver el nivel de proteición de «$1»",
        "prot_1movedto2": "[[$1]] treslladáu a [[$2]]",
        "patrol-log-header": "Esti ye un rexistru de les revisiones supervisaes.",
        "log-show-hide-patrol": "$1 rexistru de supervisión",
        "log-show-hide-tag": "$1 rexistru d'etiquetes",
+       "confirm-markpatrolled-button": "Aceutar",
+       "confirm-markpatrolled-top": "¿Marcar la revisión $3 de $2 como patrullada?",
        "deletedrevision": "Esborrada la reversión vieya $1",
        "filedeleteerror-short": "Error al esborrar l'archivu: $1",
        "filedeleteerror-long": "Atopáronse errores al esborrar l'archivu:\n\n$1",
        "authmanager-authn-autocreate-failed": "Falló la creación automática d'una cuenta local: $1",
        "authmanager-change-not-supported": "Les credenciales apurríes nun pueden camudase porque nun hai nada que les use.",
        "authmanager-create-disabled": "Ta desactivada la creación de cuentes.",
-       "authmanager-create-from-login": "Pa crear la cuenta, rellena los campos de más abaxo.",
+       "authmanager-create-from-login": "Pa crear la cuenta, rellena los campos.",
        "authmanager-create-not-in-progress": "La creación de la cuenta nun ta progresando, o perdiéronse los datos de la sesión. Por favor, vuelve de nueves al principiu.",
        "authmanager-create-no-primary": "Les credenciales apurríes nun pueden usase pa crear cuentes.",
        "authmanager-link-no-primary": "Les credenciales apurríes nun pueden usase pa enllazar cuentes.",
index b7466f7..9a33968 100644 (file)
        "activeusers-intro": "Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.",
        "activeusers-count": "һуңғы $3 {{PLURAL:$3|1=көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}",
        "activeusers-from": "Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:",
-       "activeusers-hidebots": "Боттарҙы йәшерергә",
-       "activeusers-hidesysops": "Хакимдәрҙе йәшерергә",
        "activeusers-noresult": "Ҡатнашыусылар табылманы",
        "activeusers-submit": "Әүҙем ҡулланыусыларҙы күрһәтергә",
        "listgrouprights": "Ҡатнашыусылар төркөмө хоҡуҡтары",
        "tags-deactivate-not-allowed": "«$1» тамғаһын һүндереп булмай.",
        "tags-deactivate-submit": "һүндерергә",
        "tags-apply-no-permission": "Һеҙҙең үҙгәртеү тамғаһы ҡуйыу хоҡуғы юҡ.",
-       "tags-apply-blocked": "Ò®Ò\99гÓ\99Ñ\80Ñ\82еүÒ\99Ó\99Ñ\80гÓ\99 Ñ\82амÒ\93а Ò¡Ñ\83Ñ\84ырға һеҙҙең хоҡуҡ юҡ, һеҙ бикләнгән.",
+       "tags-apply-blocked": "ҺеÒ\99 Ð±Ð¸ÐºÐ»Ðµ Ð±Ñ\83лÒ\93аÑ\81, Ò¯Ò\99гÓ\99Ñ\80Ñ\82еүÒ\99Ó\99Ñ\80гÓ\99 Ñ\82амÒ\93а Ò¡Ñ\83йырға һеҙҙең хоҡуҡ юҡ, һеҙ бикләнгән.",
        "tags-apply-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай",
        "tags-apply-not-allowed-multi": "Ҡулдан {{PLURAL:$2|түбәндәге тамғаны өҫтәп булмай}}: $1",
        "tags-update-no-permission": "Һеҙҙең айырым өлгөләрҙә һәм журнал яҙмаларында тамға йәки үҙгәртеү тамғаһы ҡуйырға хоҡуғығыҙ юҡ.",
-       "tags-update-blocked": "Һеҙгә блок ҡуйылған, үҙһәртеү тамғалары менән идара итә алмайһығыҙ.",
+       "tags-update-blocked": "Һеҙгә блок ҡуйылған, үҙгәртеү тамғалары менән идара итә алмайһығыҙ.",
        "tags-update-add-not-allowed-one": " «$1» тамғаһын ҡулдан файҙаланып булмай",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|түбәндәге тег}} ҡулдан өҫтәлмәй: $1",
        "tags-update-remove-not-allowed-one": " «$1» тамғаһын юйып булмай",
index 7077396..6c6a77d 100644 (file)
        "botpasswords-label-delete": "Выдаліць",
        "botpasswords-label-resetpassword": "Скінуць пароль",
        "botpasswords-label-grants": "Прыдатныя дазволы:",
-       "botpasswords-help-grants": "Ð\9aожнÑ\8b Ð´Ð°Ð·Ð²Ð¾Ð» Ð´Ð°Ðµ Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ð¿Ñ\80авоÑ\9e Ñ\83дзелÑ\8cнÑ\96ка, Ñ\8fкÑ\96Ñ\8f Ñ\9eжо Ð¼Ð°Ðµ Ñ\80аÑ\85Ñ\83нак Ñ\83дзелÑ\8cнÑ\96ка. Глядзіце [[Special:ListGrants|табліцу дазволаў]] дзеля дадатковых зьвестак.",
+       "botpasswords-help-grants": "Ð\94азволÑ\8b Ð´Ð°Ñ\8eÑ\86Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ð¿Ñ\80авоÑ\9e Ñ\83дзелÑ\8cнÑ\96ка, Ñ\8fкÑ\96Ñ\8f Ñ\9eжо Ð¼Ð°Ðµ Ð²Ð°Ñ\88 Ñ\80аÑ\85Ñ\83нак Ñ\83дзелÑ\8cнÑ\96ка. Ð\9dаданÑ\8cне Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ñ\82Ñ\83Ñ\82 Ð½Ðµ Ð´Ð°Ðµ Ð´Ð¾Ñ\81Ñ\82Ñ\83пÑ\83 Ð´Ð° Ð¿Ñ\80авоÑ\9e, Ñ\8fкÑ\96Ñ\85 Ð½Ñ\8fма Ñ\9e Ð²Ð°Ñ\88ага Ñ\80аÑ\85Ñ\83нкÑ\83. Глядзіце [[Special:ListGrants|табліцу дазволаў]] дзеля дадатковых зьвестак.",
        "botpasswords-label-grants-column": "Дазволена",
        "botpasswords-bad-appid": "Назва робата «$1» зьяўляецца няслушнай.",
        "botpasswords-insert-failed": "Не атрымалася дадаць робата зь імем «$1». Магчыма, ён ужо быў дададзены?",
        "missing-revision": "Вэрсія старонкі №$1 з назвай «{{FULLPAGENAME}}» не існуе.\n\nЗвычайна гэта здараецца з-за пераходу па састарэлай спасылцы на старонку, якая была выдаленая.\nПадрабязнасьці можна знайсьці ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].",
        "userpage-userdoesnotexist": "Рахунак удзельніка «$1» не зарэгістраваны. Калі ласка, удакладніце, ці жадаеце Вы стварыць/рэдагаваць гэтую старонку.",
        "userpage-userdoesnotexist-view": "Рахунак «$1» ня створаны.",
-       "blocked-notice-logextract": "Гэты ўдзельнік у дадзены момант заблякаваны.\nАпошні запіс з журналу блякаваньняў пададзены ніжэй для даведкі:",
+       "blocked-notice-logextract": "Гэты ўдзельнік у цяперашні момант заблякаваны.\nАпошні запіс з журналу блякаваньняў пададзены ніжэй для даведкі:",
        "clearyourcache": "<strong>Заўвага:</strong> каб пабачыць зьмены пасьля захаваньня, Вам можа спатрэбіцца ачысьціць кэш Вашага браўзэра. \n* <strong>Firefox / Safari:</strong> трымайце <em>Shift</em> і націсьніце <em>Reload</em>, ці націсьніце <em>Ctrl-F5</em> ці <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>Menu → 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}}», каб паспрабаваць новы код JavaScript перад тым, як яго запісаць.",
+       "usercssyoucanpreview": "<strong>Падказка:</strong> выкарыстоўвайце кнопку «{{int:showpreview}}», каб паспрабаваць новы CSS-код перад яго захаваньнем.",
+       "userjsyoucanpreview": "<strong>Падказка:</strong> выкарыстоўвайце кнопку «{{int:showpreview}}», каб паспрабаваць новы код JavaScript перад тым, як яго захаваць.",
        "usercsspreview": "'''Памятайце, што гэта толькі папярэдні прагляд Вашага CSS. Ён яшчэ не запісаны!'''",
        "userjspreview": "'''Памятайце, што гэта толькі папярэдні прагляд Вашага JavaScript, ён яшчэ не запісаны!'''",
        "sitecsspreview": "'''Памятайце, што гэта толькі папярэдні прагляд гэтага CSS.'''\n'''Ён яшчэ не захаваны!'''",
        "grant-basic": "Асноўныя правы",
        "grant-viewdeleted": "Прагляд выдаленых файлаў і старонак",
        "grant-viewmywatchlist": "Прагляд вашага сьпісу назіраньня",
+       "grant-viewrestrictedlogs": "Прагляд запісаў журнала з абмежаваным доступам",
        "newuserlogpage": "Журнал стварэньня рахункаў",
        "newuserlogpagetext": "Гэта журнал стварэньня рахункаў удзельнікаў і ўдзельніц.",
        "rightslog": "Журнал правоў удзельнікаў",
        "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] пра тое, як зладзіць міграцыю.",
        "specialloguserlabel": "Выканаўца:",
        "speciallogtitlelabel": "Мэта (назва ці {{ns:user}}:імя_ўдзельніка для ўдзельніка):",
        "log": "Журналы падзеяў",
        "activeusers-intro": "Гэта сьпіс удзельнікаў, якія былі актыўнымі на працягу $1 {{PLURAL:$1|апошняга дня|апошніх дзён|апошніх дзён}}.",
        "activeusers-count": "$1 {{PLURAL:$1|дзеяньне|дзеяньні|дзеяньняў}} за $3 {{PLURAL:$3|апошні дзень|апошнія дні|апошніх дзён}}",
        "activeusers-from": "Паказваць ўдзельнікаў, пачынаючы з:",
-       "activeusers-hidebots": "Схаваць робатаў",
-       "activeusers-hidesysops": "Схаваць адміністратараў",
        "activeusers-noresult": "Удзельнікі ня знойдзеныя.",
        "activeusers-submit": "Паказаць актыўных удзельнікаў",
        "listgrouprights": "Правы групаў удзельнікаў",
        "tags-deactivate": "адключыць",
        "tags-hitcount": "$1 {{PLURAL:$1|зьмена|зьмены|зьменаў}}",
        "tags-manage-no-permission": "Вы ня маеце правоў на зьмену метак.",
-       "tags-manage-blocked": "Вы ня можаце мяняць меткі, калі заблякаваныя.",
+       "tags-manage-blocked": "Ð\92Ñ\8b Ð½Ñ\8f Ð¼Ð¾Ð¶Ð°Ñ\86е Ð¼Ñ\8fнÑ\8fÑ\86Ñ\8c Ð¼ÐµÑ\82кÑ\96, ÐºÐ°Ð»Ñ\96 Ð²Ñ\8b Ð·Ð°Ð±Ð»Ñ\8fкаванÑ\8bÑ\8f.",
        "tags-create-heading": "Стварэньне новай меткі",
        "tags-create-explanation": "Па змоўчаньні, наваствораныя меткі будуць даступныя для выкарыстаньня ўдзельнікамі і робатамі.",
        "tags-create-tag-name": "Назва меткі:",
index 720f58b..e648261 100644 (file)
        "botpasswords-label-delete": "Сцерці",
        "botpasswords-label-resetpassword": "Скінуць пароль",
        "botpasswords-label-grants": "Прыдатныя дазволы:",
-       "botpasswords-help-grants": "Ð\9aожнÑ\8b Ð´Ð°Ð·Ð²Ð¾Ð» Ð´Ð°Ðµ Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ð¿Ñ\80авоÑ\9e Ñ\83дзелÑ\8cнÑ\96ка, Ñ\8fкÑ\96Ñ\8f Ñ\9eжо Ð¿Ñ\80Ñ\8bзнаÑ\87анÑ\8b Ñ\9eлÑ\96ковамÑ\83 Ð·Ð°Ð¿Ñ\96Ñ\81Ñ\83 Ñ\83дзелÑ\8cнÑ\96ка. Ð\93лÑ\8fдзÑ\96Ñ\86е [[Special:ListGrants|Ñ\82аблÑ\96Ñ\86Ñ\83 Ð´Ð°Ð·Ð²Ð¾Ð»Ð°Ñ\9e]] Ð´Ð»Ñ\8f Ð°Ñ\82Ñ\80Ñ\8bманнÑ\8f Ð´Ð°Ð´Ð°Ñ\82ковÑ\8bÑ\85 Ð·Ñ\8cвестак.",
+       "botpasswords-help-grants": "Ð\94азволÑ\8b Ð´Ð°Ñ\8eÑ\86Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ð´Ð° Ð¿Ñ\80авоÑ\9e, Ñ\8fкÑ\96Ñ\8f Ñ\9eжо Ð¼Ð°Ðµ Ð\92аÑ\88 Ñ\83лÑ\96ковÑ\8b Ð·Ð°Ð¿Ñ\96Ñ\81. Ð\9dаданне Ð´Ð°Ð·Ð²Ð¾Ð»Ñ\83 Ñ\82Ñ\83Ñ\82 Ð½Ðµ Ð´Ð°Ðµ Ð´Ð¾Ñ\81Ñ\82Ñ\83пÑ\83 Ð´Ð° Ð¿Ñ\80авоÑ\9e, Ñ\8fкÑ\96Ñ\85 Ð½Ñ\8fма Ñ\9e Ð\92аÑ\88ага Ñ\9eлÑ\96ковага Ð·Ð°Ð¿Ñ\96Ñ\81Ñ\83. Ð\93лÑ\8fдзÑ\96Ñ\86е [[Special:ListGrants|Ñ\82аблÑ\96Ñ\86Ñ\83 Ð´Ð°Ð·Ð²Ð¾Ð»Ð°Ñ\9e]] Ð´Ð»Ñ\8f Ð°Ñ\82Ñ\80Ñ\8bманнÑ\8f Ð´Ð°Ð´Ð°Ñ\82ковÑ\8bÑ\85 Ð·вестак.",
        "botpasswords-label-grants-column": "Дазволена",
        "botpasswords-bad-appid": "Назва робата \"$1\" недапушчальная.",
        "botpasswords-insert-failed": "Не ўдалося дадаць робату назву \"$1\". Магчыма, яна ўжо дададзена?",
        "missing-revision": "Няма версіі #$1 у старонкі з назвай \"{{FULLPAGENAME}}\".\n\nЗвычайна такое здараецца, калі прайсці па састарэлай спасылцы з гісторыі на старонку, якая была сцёрта.\nПадрабязнасці можна пабачыць у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале сціранняў].",
        "userpage-userdoesnotexist": "Рахунак удзельніка \"<nowiki>$1</nowiki>\" не зарэгістраваны. Праверце, ці вы жадаеце стварыць або паправіць гэтую старонку.",
        "userpage-userdoesnotexist-view": "Уліковы запіс удзельніка \" $1 \"не зарэгістраваны.",
-       "blocked-notice-logextract": "Гэты карыстальнік у дадзены момант заблакаваны. \n Апошні запіс журнала блакіровак прыводзіцца ніжэй для даведкі:",
+       "blocked-notice-logextract": "Гэты карыстальнік у дадзены момант заблакаваны. \nАпошні запіс журнала блакіровак прыводзіцца ніжэй для даведкі:",
        "clearyourcache": "<strong>Заўвага:</strong> Пасля замацоўвання, вам можа спатрэбіцца ачыстка кэшу браўзера, каб убачыць унесеныя змяненні. \n*<strong>Firefox / Safari:</strong> націсніце <em>Reload</em>, утрымліваючы <em>Shift</em>, або націсніце <em>Ctrl-F5</em> ці <em>Ctrl-R</em> (<em>⌘-R</em> на Макінтошах)\n* <strong>Google Chrome</strong>: Націсніце <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> на Mac)\n* <strong>Internet Explorer</strong>: націсніце <em>Refresh</em>, утрымліваючы <em>Ctrl</em>, або націсніце <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Увайдзіце <em>Menu → 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}}''\" для выпрабоўвання новага коду JS ''перад тым'', як яго запісваць.",
+       "usercssyoucanpreview": "<strong>Парада:</strong> Карыстайцеся кнопкай \"''{{int:showpreview}}''\", каб паспрабаваць новы код CSS перад тым, як яго запісваць.",
+       "userjsyoucanpreview": "<strong>Парада:</strong> Карыстайцеся кнопкай \"''{{int:showpreview}}''\", каб паспрабаваць новы код JavaScript перад тым, як яго запісваць.",
        "usercsspreview": "'''Памятайце, што гэта толькі папярэдні паказ вашага ўласнага CSS. Праўкі яшчэ не замацаваныя!'''",
        "userjspreview": "'''Памятайце, што гэта выпрабаванне/папярэдні паказ вашага ўласнага Яваскрыпту, які яшчэ не быў замацаваны!'''",
        "sitecsspreview": "'''Памятайце, што гэта толькі папярэдні паказ вашага CSS.'''\n'''Праўкі яшчэ не замацаваныя!'''",
        "grant-basic": "Асноўныя правы",
        "grant-viewdeleted": "Праглядаць сцёртыя файлы і старонкі",
        "grant-viewmywatchlist": "Бачыць ваш спіс назірання",
+       "grant-viewrestrictedlogs": "Прагляд запісаў журнала з абмежаваным доступам",
        "newuserlogpage": "Журнал рэгістрацыі ўдзельнікаў",
        "newuserlogpagetext": "Гэта журнал рэгістрацыі новых удзельнікаў.",
        "rightslog": "Журнал правоў удзельнікаў",
        "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] аб тым, як перанесці.",
        "specialloguserlabel": "Выканаўца:",
        "speciallogtitlelabel": "Мэта (назва ці {{ns:user}}:імя_ўдзельніка для ўдзельніка):",
        "log": "Журналы",
        "tags-activate": "актываваць",
        "tags-deactivate": "адключыць",
        "tags-hitcount": "$1 {{PLURAL:$1|змена|змены|змен}}",
+       "tags-manage-blocked": "Вы не можаце мяняць меткі, калі вы заблакаваныя.",
        "tags-create-heading": "Стварыць новую бірку",
        "tags-create-explanation": "Калі не ўказана іншае, новыя біркі будуць даступны для выкарыстання ўдзельнікам і робатам.",
        "tags-create-tag-name": "Назва біркі:",
        "feedback-submit": "Даслаць",
        "feedback-thanks": "Дзякуй! Ваш водгук размешчаны на старонцы «[$2 $1]».",
        "feedback-thanks-title": "Дзякуем!",
-       "searchsuggest-search": "Ð\97найÑ\81Ñ\86Ñ\96",
+       "searchsuggest-search": "ШÑ\83каÑ\86Ñ\8c Ñ\83 {{SITENAME}}",
        "searchsuggest-containing": "змяшчае...",
        "api-error-badaccess-groups": "У Вас няма дазволу загружаць файлы ў гэтую вікі.",
        "api-error-badtoken": "Унутраная памылка: няслушны ключ.",
index e6b5d68..4d8d730 100644 (file)
@@ -39,7 +39,8 @@
                        "Iliev",
                        "Spas.Z.Spasov",
                        "АдмиралАнимЕ",
-                       "Irus"
+                       "Irus",
+                       "Kareyac"
                ]
        },
        "tog-underline": "Подчертаване на препратките:",
        "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",
index cae33df..8182cc1 100644 (file)
        "diff-multi-sameuser": "(ای کار زوروکئ {{PLURAL:$1|یک میانی نخسه|$1 میانی نخسه}}ِ نمایش داته بوته)",
        "diff-multi-otherusers": "({{PLURAL:$1|۱ میانین نخسه|$1 میانین نخسه}} دستکاری بوتگ شه {{PLURAL:$2|۱ کارزوروک|$2 کارزوروک}}ئ نیمگاه  نشان داته نه بوته)",
        "diff-multi-manyusers": "({{PLURAL:$1|یک|$1}} میانین دستکاری بوته ئین نخسه گیشتیر شه {{PLURAL:$2|یک|$2}} کارزورکئ نیمگاه نشان داته نه بوته)",
-       "searchresults": "گشتین ئی  نتیجه",
+       "searchresults": "گشتینئی  نتیجه",
        "searchresults-title": "گشتینئ نتایج په «$1»",
        "titlematches": "مقاله ئی ئنوانئ یکی کورتین",
        "textmatches": "مقاله ئی متنئ یکی کورتین",
        "search-category": "(تهر  $1)",
        "search-file-match": "(فایلی محتوایی یکرنگی)",
        "search-suggest": "آیا شمی منظور ایش ات: $1",
-       "search-rewritten": "$1 ئی نتیجه ئانی نمایش. گشتین په $2 جاها.",
+       "search-rewritten": "$1‌ئی نتیجه‌ئانی نشان داتین. گشتین په $2‌ئی جاگا.",
        "search-interwiki-caption": "گوارین پروژه ئان",
        "search-interwiki-default": "نتایج شه $1 :",
        "search-interwiki-more": "(گیشتیر)",
        "rcshowhidecategorization": "$1 تاکدیمئ تهربندی",
        "rcshowhidecategorization-show": "نشان داتین",
        "rcshowhidecategorization-hide": "چیهر داتین",
-       "rclinks": "نشان داتین $1 آخیر ئین تغییر بئ $2 اخیرین روچا<br />$3",
+       "rclinks": "آ آخیرئین $1 تغیرانئ نشان داتین که به $2 اخیرئین روچانئ تا پیش بوته انت<br />$3",
        "diff": "فرق",
        "hist": "تاریخچه",
        "hide": "چیهر داتین",
        "actioncomplete": "کار بوت",
        "actionfailed": "کار نه بوت",
        "deletedtext": "«$1» پاک بوت.\nپه آخیرین پاک بوتینین سابقه ئا بئ $2 ئی تا مراجعه بکنیت.",
-       "dellogpage": "سیاه چال ئی پاک کورتین",
-       "dellogpagetext": "جهلگین لڑلیست شه آخیرین پاک بوته ئین ئانی لڑا اینت.\nموچین ئانی نشان داته بته ئین وخت خادم وخت (گرینویچ ئی وخت) انت.",
-       "deletionlog": "سیاه چال ئی پاک کورتین",
+       "dellogpage": "پاک بوته‌ئانی کورم",
+       "dellogpagetext": "جهلگین لڑلیستا که گیندیت په آخیرئین پاک بوته‌ئین فابلاني خاتیرا اینت.\nموچین نشان داته بوته‌ئین وخت گو (گرینویچ‌ئی وختا) مطابق انت.",
+       "deletionlog": "پاک بوته‌ئانی کورم",
        "reverted": "بی دیمتیرین نخسه ئا بیئرگردینته بوت",
        "deletecomment": "دلیل:",
        "deleteotherreason": "دیگرین دلیل/اضافی:",
        "undeletebtn": "احیا",
        "undeletelink": "نمایش/احیا",
        "undeleteviewlink": "دیستین",
-       "undeleteinvert": "انتخاب سرچپی بیئت",
+       "undeleteinvert": "انتخابئ سرچپي کورتین",
        "undeletecomment": "دلیل:",
        "undeletedrevisions": "$1 ئی نخسه احیا {{PLURAL:$1|بوت}}",
        "undeletedrevisions-files": "$1 نخسه و $2 فایل پداجۆڑ {{PLURAL:$1|بوت|بوتنت}}.",
        "undelete-show-file-confirm": "آیا شما مطمئن وێت که لوٹیت یک پاک بوته ئین نخسه شه فایل \"<nowiki>$1</nowiki>\" مورخ $2 سائت $3 ئا بگیندیت؟",
        "undelete-show-file-submit": "هان",
        "namespace": "نامئ اؤرکجاه:",
-       "invert": "انتخاب سرچپی بیئت",
-       "tooltip-invert": "اÛ\8c Ø¬Ø¦Ø¨Ù\87 Ø¦Ø§ Ø¦Ù\84اÙ\85ت Ø¨Ø¬Ù\86Û\8cت ØªØ§ Ú©Ù\87 Ù¾Ø²Ø§Û\8c Ù\86اÙ\85 ØªØ§ Ø¦Û\8cÙ\86 Ø§Ù\86تخاب Ø¨Ù\88تÙ\87 Ø¦Û\8cÙ\86 ØªØ§Ú©Ø¯Û\8cÙ\85اÙ\86Û\8c ØªØºÛ\8cرات (Ù\88 Ø¯Û\8cگرÛ\8cÙ\86 Ø¦Ù\84اÙ\85ت Ø¬ØªÙ\87 Ø¨Ù\88تÙ\87 Ø¦Û\8cÙ\86 Ù¾Ø²Ø§Û\8c Ù\86اÙ\85 Ø¦Ø§Ù\86) Ú\86Û\8cÙ\87ر Ø¨Ù\87 ینت",
+       "invert": "انتخابا سرچپي کورتین",
+       "tooltip-invert": "اÛ\8c Ø¬Ø¹Ø¨Ù\87 Ø¦Ø§ Ø¹Ù\84اÙ\85ت Ø¨Ø¬Ù\86Û\8cت ØªØ§ Ú©Ù\87 ØªØ§Ú©Ø¯Û\8cÙ\85اÙ\86Ù\8a ØªÙ\87ئ Ø§Ù\86تخاب Ø¨Ù\88تÙ\87â\80\8cاÛ\8cÙ\86 Ù\86اÙ\85ئ Ø§Ù\88رکجاÙ\87â\80\8cاÛ\8c ØªØºÛ\8cر (Ù\88 Ø¯Û\8cگرÛ\8cÙ\86 Ø¹Ù\84اÙ\85ت Ø¬ØªÙ\87 Ø¨Ù\88تÙ\87â\80\8cاÛ\8cÙ\86 Ù\86اÙ\85ئ Ø§Ù\88رکجاÙ\87اÙ\86) Ú\86Û\8cÙ\87ر Ø¨Ù\87â\80\8cینت",
        "namespace_association": "Associated namespace",
        "tooltip-namespace_association": "ای جئبه ئا ئلامت بجنیت تا که مربوتین موزو ئی پزای نامی گپ گۆ\nانتخاب بوته ئین پزای ناما شامل بیت",
        "blanknamespace": "(بُنیادی)",
index 5b12678..5ca09c0 100644 (file)
        "tog-hideminor": "हाल के बदलाव में से छोट संपादन छिपाईं",
        "tog-hidepatrolled": "हाल के बदलाव में से जाँचल संपादन छिपाईं",
        "tog-newpageshidepatrolled": "नया पन्ना के सूची में से जाँचल पन्ना सभ के छिपाईं",
+       "tog-hidecategorization": "पन्ना श्रेणीकरण छिपाईं",
        "tog-extendwatchlist": "खाली हाले के बदलाव ना बालुक, सगरी बदलाव के देखावे खातिर धियानसूची के बिस्तारित करीं",
        "tog-usenewrc": "तुरंत भइल बदलाव में आ धियानसूची में भइल बदलाव सभ के पन्ना अनुसार झुंड में बांटी",
        "tog-numberheadings": "हेडिंग के ऑटो-नंबरिंग",
-       "tog-showtoolbar": "समà¥\8dपादन औजारपट्टी के देखावल जाव",
+       "tog-showtoolbar": "सà¤\82पादन औजारपट्टी के देखावल जाव",
        "tog-editondblclick": "दुइ क्लिक पर पन्ना सभ के संपादन करीं",
        "tog-editsectiononrightclick": "खंड की हेडिंग पर दायाँ क्लिक कइ के खंड के सम्पादित करीं",
        "tog-watchcreations": "हमार बनावल पन्ना आ हमार अपलोड कइल फाइल सभ के हमरी धियानसूची में जोड़ दिहल जाव",
        "tog-watchdefault": "हम जौना पन्ना आ फाइलन के संपादित करीं उनहन के हमरी धियानसूची में जोड़ दिहल जाव",
        "tog-watchmoves": "हमरा द्वारा स्थानांतरित पन्ना आ फाइलन के हमरा धियानसूची में जोड़ दिहल जाव",
        "tog-watchdeletion": "हमरा द्वारा हटावल पन्ना आ फाइल सभ के हमार धियानसूची में जोड़ दिहल जाव",
+       "tog-watchuploads": "हम नया फाइल अपलोड करीं त उनहना के हमार धियानसूची में जोड़ल जाय",
        "tog-watchrollback": "हमरा द्वारा रोलबैक कइल गइल पन्ना सभ के हमार धियानसूची में जोड़ दिहल जाव",
        "tog-minordefault": "डिफाल्ट रूप से सगरी संपादन कुल के छोट संपादन की रुप में चिन्हित कइल जाव",
-       "tog-previewontop": "नमà¥\82ना (preview) संपादन बक्सा से पहिले देखावल जाय",
-       "tog-previewonfirst": "पहिला à¤¸à¤\82पादन à¤ªà¤° à¤¨à¤®à¥\82ना देखावल जाय",
-       "tog-enotifwatchlistpages": "हमार à¤§à¤¿à¤¯à¤¾à¤¨à¤¸à¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤¦à¤°à¥\8dà¤\9c à¤\95à¥\8cनà¥\8b à¤­à¥\80 à¤ªà¤¨à¥\8dना à¤¯à¤¾ à¤«à¤¾à¤\87ल à¤®à¥\87à¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤¹à¥\8bà¤\96ला à¤ªà¤° à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95रल जाव",
-       "tog-enotifusertalkpages": "यदि à¤¹à¤®à¤¾à¤° à¤µà¤¾à¤°à¥\8dतालाप à¤ªà¤¨à¥\8dना à¤ªà¤° à¤\95à¥\8cनà¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\8bà¤\96à¥\87 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95रल जाव",
-       "tog-enotifminoredits": "पनà¥\8dना à¤\86 à¤«à¤¾à¤\87ल à¤ªà¤° à¤\9bà¥\8bà¤\9fà¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\8bà¤\96à¥\87 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95रल जाव",
-       "tog-enotifrevealaddr": "à¤\85धिसà¥\82à¤\9aना ई-मेल में हमार ई-मेल पता देखावल जाव",
+       "tog-previewontop": "à¤\9dलà¤\95 (पà¥\8dरà¥\80वà¥\8dयà¥\82) संपादन बक्सा से पहिले देखावल जाय",
+       "tog-previewonfirst": "पहिला à¤¸à¤\82पादन à¤ªà¤° à¤\9dलà¤\95 (पà¥\8dरà¥\80वà¥\8dयà¥\82) देखावल जाय",
+       "tog-enotifwatchlistpages": "हमार à¤§à¤¿à¤¯à¤¾à¤¨à¤¸à¥\82à¤\9aà¥\80 à¤®à¥\87à¤\82 à¤¦à¤°à¥\8dà¤\9c à¤\95à¥\8cनà¥\8b à¤­à¥\80 à¤ªà¤¨à¥\8dना à¤¯à¤¾ à¤«à¤¾à¤\87ल à¤®à¥\87à¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤¹à¥\8bà¤\96ला à¤ªà¤° à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95à¤\87ल जाव",
+       "tog-enotifusertalkpages": "à¤\85à¤\97र à¤¹à¤®à¤°à¥\87 à¤¬à¤¾à¤¤à¤\9aà¥\80त à¤ªà¤¨à¥\8dना à¤ªà¤° à¤\95à¥\8cनà¥\8b à¤¬à¤¦à¤²à¤¾à¤µ à¤¹à¥\8bà¤\96à¥\87 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95à¤\87ल जाव",
+       "tog-enotifminoredits": "पनà¥\8dना à¤\86 à¤«à¤¾à¤\87ल à¤ªà¤° à¤\9bà¥\8bà¤\9fà¥\8b à¤¬à¤¦à¤²à¤¾à¤µ à¤¹à¥\8bà¤\96à¥\87 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\88-मà¥\87ल à¤\95à¤\87ल जाव",
+       "tog-enotifrevealaddr": "नà¥\8bà¤\9fिफिà¤\95à¥\87शन ई-मेल में हमार ई-मेल पता देखावल जाव",
        "tog-shownumberswatching": "धियान रखे वालन सदस्यन के देखावल जाव",
-       "tog-oldsig": "वरà¥\8dतमान à¤¦à¤¸à¤\96त",
+       "tog-oldsig": "राà¤\89र à¤µà¤°à¥\8dतमान à¤¦à¤¸à¤\96त:",
        "tog-fancysig": "दसखत के विकी पाठ के रुप में उपयोग करीं (बिना ऑटोमेटिक कड़ी के)",
-       "tog-uselivepreview": "लà¤\97ातार à¤\9aालà¥\82 à¤¨à¤®à¥\82ना à¤¦à¥\87à¤\96ावल (preview) à¤\95à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\80à¤\82",
+       "tog-uselivepreview": "लà¤\97ातार à¤\9dलà¤\95 (लाà¤\87व à¤ªà¥\8dरà¥\80वà¥\8dयà¥\82) à¤\87सà¥\8dतà¥\87माल à¤\95à¤\87ल à¤\9cाव",
        "tog-forceeditsummary": "यदि संपादन सारांश ना दिहल होखे त हमके सूचित कइल जाय",
        "tog-watchlisthideown": "हमरी धियानसूची से हमार खुद के संपादन छिपाईं",
-       "tog-watchlisthidebots": "हमार धियानसूची से बॉट द्वारा करल गइल बदलाव के छिपाईं",
-       "tog-watchlisthideminor": "हमार धियानसूची से छोट बदलाव के छिपावल जाव",
-       "tog-watchlisthideliu": "हमार धियानसूची में लॉग-इन भइल सदस्यन के संपादन छिपावल जाय",
+       "tog-watchlisthidebots": "धियानसूची से बॉट संपादन छिपावल जाय",
+       "tog-watchlisthideminor": "धियानसूची से छोट संपादन छिपावल जाय",
+       "tog-watchlisthideliu": "धियानसूची में लॉग-इन भइल सदस्यन के संपादन छिपावल जाय",
+       "tog-watchlistreloadautomatically": "जब कौनों फिल्टर बदलल जाय तब धियानसूची ऑटोमेटिक दोबारा लोड होखे (जावास्क्रिप्ट जरूरी)",
        "tog-watchlisthideanons": "आइ॰पी॰ सदस्यन द्वारा करल गइल सम्पादन के हमार धियानसूची में से छिपावल जाय",
        "tog-watchlisthidepatrolled": "जाँचल गइल सम्पादन के हमार ध्यानसूची में से छिपावल जाय",
+       "tog-watchlisthidecategorization": "पन्ना श्रेणीकरण छिपावल जाय",
        "tog-ccmeonemails": "हमरा द्वारा अन्य सदस्यन के भेजल गइल ईमेल के कॉपी हमरो के भेजल जाय",
-       "tog-diffonly": "à¤\85नà¥\8dतर à¤¦à¥\87à¤\96ावत à¤¸à¤®à¤¯ à¤\85à¤\82तर à¤\95à¥\80 à¤¨à¥\80à¤\9aà¥\87 à¤ªà¤¨à¥\8dना à¤\95à¥\87 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤®à¤¤ à¤¦à¥\87à¤\96ावल à¤\9cाव।",
+       "tog-diffonly": "à¤\85à¤\82तर à¤¦à¥\87à¤\96ावत à¤¸à¤®à¤¯ à¤¨à¥\80à¤\9aà¥\87 à¤ªà¤¨à¥\8dना à¤\95à¥\87 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤¨ à¤¦à¥\87à¤\96ावल à¤\9cाय",
        "tog-showhiddencats": "छिपल श्रेणियन के भी देखावल जाय",
-       "tog-norollbackdiff": "रà¥\8bलबà¥\88à¤\95 à¤\95à¤\87ला à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\85à¤\82तर à¤®à¤¤ à¤¦à¥\87à¤\96ावल à¤\9cाव",
-       "tog-useeditwarning": "à¤\9cà¥\8b à¤¹à¤® à¤\95à¥\8cनà¥\8bà¤\82 à¤ªà¤¨à¥\8dना à¤ªà¤° à¤¸à¤\82पादन à¤\95रत à¤\98रà¥\80 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\95à¥\87 à¤¬à¤¿à¤¨à¤¾ à¤¸à¤¹à¥\87à¤\9cलà¥\87 à¤\9bà¥\8bड़ à¤¦à¥\87à¤\88à¤\82 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\96बर à¤\95à¤\87ल à¤\9cाव",
-       "tog-prefershttps": "à¤\9cब à¤\96ाता à¤®à¥\87à¤\82 à¤²à¥\89à¤\97िन à¤\95रà¥\80à¤\82 à¤¤ हमेशा सुरक्षित कनेक्शन के प्रयोग कइल जाय",
+       "tog-norollbackdiff": "रà¥\8bलबà¥\88à¤\95 à¤\95à¤\87ला à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤\85à¤\82तर à¤¨ à¤¦à¥\87à¤\96ावल à¤\9cाय",
+       "tog-useeditwarning": "à¤\9cà¥\8b à¤¹à¤® à¤\95à¥\8cनà¥\8bà¤\82 à¤ªà¤¨à¥\8dना à¤ªà¤° à¤¸à¤\82पादन à¤\95रत à¤\98रà¥\80 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\95à¥\87 à¤¬à¤¿à¤¨à¤¾ à¤¸à¤¹à¥\87à¤\9cलà¥\87 à¤\9bà¥\8bड़ à¤¦à¥\87à¤\88à¤\82 à¤¤ à¤¹à¤®à¤\95à¥\87 à¤\96बर à¤\95à¤\87ल à¤\9cाय",
+       "tog-prefershttps": "लà¥\89à¤\97िन à¤°à¤¹à¤²à¥\87 à¤ªà¤° हमेशा सुरक्षित कनेक्शन के प्रयोग कइल जाय",
        "underline-always": "हमेशा",
        "underline-never": "कभी ना",
-       "underline-default": "à¤\9cिलà¥\8dद (सà¥\8dà¤\95िन) à¤¯à¤¾ à¤¬à¥\8dराà¤\89सर डिफॉल्ट",
-       "editfont-style": "समà¥\8dपादन क्षेत्र के फॉन्ट स्टाइल:",
+       "underline-default": "à¤\9cिलà¥\8dद (सà¥\8dà¤\95िन) à¤¯à¤¾ à¤¬à¥\8dराà¤\89à¤\9cर डिफॉल्ट",
+       "editfont-style": "सà¤\82पादन क्षेत्र के फॉन्ट स्टाइल:",
        "editfont-default": "ब्राउजर डिफाल्ट",
        "editfont-monospace": "मोनोस्पेस्ड फोंट",
-       "editfont-sansserif": "सनà¥\8dस-सेरिफ फॉन्ट",
+       "editfont-sansserif": "सà¥\88à¤\82स-सेरिफ फॉन्ट",
        "editfont-serif": "सेरिफ फॉन्ट",
        "sunday": "इतवार",
        "monday": "सोमवार",
        "october-date": "अक्टूबर $1",
        "november-date": "नवंबर $1",
        "december-date": "दिसंबर $1",
+       "period-am": "AM",
+       "period-pm": "PM",
        "pagecategories": "{{PLURAL:$1|श्रेणी|श्रेणी}}",
        "category_header": "\"$1\" श्रेणी में पन्ना",
        "subcategories": "उपश्रेणी",
        "category-file-count-limited": "वर्तमान में निम्नलिखित {{PLURAL:$1|पन्ना|$1 पन्नां}} इ श्रेणीं में बाड़े।",
        "listingcontinuesabbrev": "जारी...",
        "index-category": "सूचीबद्ध पन्ना",
-       "noindex-category": "बिना सूचीबद्ध पन्ना",
+       "noindex-category": "बिनासूचीबद्ध पन्ना",
        "broken-file-category": "टूटल फाइल कड़ियन वाला पन्ना",
        "about": "बारे में",
        "article": "सामग्री पन्ना",
        "newwindow": "(नया विंडो में खोलीं)",
        "cancel": "कैंसिल",
        "moredotdotdot": "अउर...",
-       "morenotlisted": "à¤\87 à¤¸à¥\82à¤\9aà¥\80 à¤ªà¥\82रà¥\8dण à¤¨à¤\87खे।",
+       "morenotlisted": "हà¥\8b à¤¸à¤\95à¥\87ला à¤\95ि à¤\88 à¤²à¤¿à¤¸à¥\8dà¤\9f à¤ªà¥\82रा à¤¨ à¤¹à¥\8bखे।",
        "mypage": "पन्ना",
        "mytalk": "हमार बातचीत पन्ना",
        "anontalk": "बातचीत",
        "tagline": "भोजपुरी {{SITENAME}} से",
        "help": "मदद",
        "search": "खोज",
+       "search-ignored-headings": " #<!-- एह लाइन के बिलकुल अइसहीं छोड़ दीं --> <pre>\n# हेडिंग जिनहन पर खोज करत समय धियान ना दिहल जाई।\n# एह हेडिंग वाला पन्ना जइसहीं सूचीबद्ध होखी, बदलाव प्रभावी हो जइहें।\n# आप एगो खाली संपादन (null edit) कइ के दुबारा सूचीकरण के लागू कर सकत बानी।\n# एकर सिंटेक्स अइसे बा कि:\n#   * Everything from a \"#\" character to the end of the line is a comment.\n#   * Every non-blank line is the exact title to ignore, case and everything.\nसंदर्भ\nबाहरी कड़ी\nइहो देखल जाय\n #</pre> <!-- एह लाइन के बिलकुल अइसहीं छोड़ दीं -->",
        "searchbutton": "खोजीं",
        "go": "जाईं",
        "searcharticle": "जाईं",
        "talk": "बात-चीत",
        "views": "कइसन लउकी?",
        "toolbox": "औजार",
+       "tool-link-userrights": "{{GENDER:$1|प्रयोगकर्ता}} के सदस्यसमूह बदलीं",
+       "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} के ईमेल करीं",
        "userpage": "प्रयोगकर्ता पन्ना देखीं",
        "projectpage": "परियोजना पन्ना देखीं",
        "imagepage": "फाइल पन्ना देखीं",
        "viewsource": "स्रोत देखीं",
        "viewsource-title": "$1 के स्रोत देखीं",
        "actionthrottled": "कार्य समाप्त कर दिहल गइल बा",
-       "actionthrottledtext": "सà¥\8dपà¥\88म à¤\95à¥\87 à¤°à¥\8bà¤\95थाम à¤\96ातिर, à¤\87 à¤\95à¥\8dरिया à¤\8fतना à¤\95म à¤¸à¤®à¤¯ à¤®à¥\87à¤\82 à¤\8fà¤\95 à¤¸à¥\80मा à¤¸à¥\87 à¤\85धिà¤\95 à¤¬à¤¾à¤° à¤\95रà¥\87 à¤\95à¥\87 à¤®à¤¨à¤¾ à¤¬à¤¾, à¤\86 à¤°à¤\89à¤\86 à¤\87 à¤¸à¥\80मा à¤\95à¥\87 à¤ªà¤¾à¤° à¤\95र à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¤¨à¥\80।\nà¤\95à¥\83पया à¤\95à¥\81à¤\9b à¤¸à¤®à¤¯ à¤¬à¤¾à¤¦ à¤ªà¥\81न: à¤¯à¤¤à¥\8dन करीं।",
+       "actionthrottledtext": "दà¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95थाम à¤\89पाय à¤\95à¥\87 à¤°à¥\82प à¤®à¥\87à¤\82, à¤\8fह à¤\95ाम à¤\95à¥\87 à¤¬à¤¹à¥\81त à¤\95म à¤¸à¤®à¤¯ à¤®à¥\87à¤\82 à¤\8fà¤\95 à¤¸à¥\80मा à¤¸à¥\87 à¤\85धिà¤\95 à¤¬à¥\87 à¤\95रà¥\87 à¤\95à¥\87 à¤®à¤¨à¤¾ à¤¬à¤¾, à¤\86 à¤°à¤\89à¤\86 à¤\88 à¤¸à¥\80मा à¤\95à¥\87 à¤ªà¤¾à¤° à¤\95र à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¤¨à¥\80।\nà¤\95à¥\83पया à¤\95à¥\81à¤\9b à¤¸à¤®à¤¯ à¤¬à¤¾à¤¦ à¤¦à¥\8bबारा à¤\95à¥\8bसिस करीं।",
        "protectedpagetext": "इ पन्ना संपादन आ अन्य कार्यं से बचाव खातिर सुरक्षित कर दिहल गइल बा।",
        "viewsourcetext": "रउआँ एह पन्ना के स्रोत देख सकत बानी आ एकर नकल उतार सकत बानी:",
        "viewyourtext": "एह पन्ना पर <strong>राउर आपन संपादन सब</strong>के स्रोत देख सकत बानी आ ओकर नकल ले सकत बानी।",
        "virus-scanfailed": "जाँच विफल (कोड $1)",
        "virus-unknownscanner": "अज्ञात ऐंटीवायरस:",
        "logouttext": "'''रउआ अब खाता से बाहर बानी'''\n\nध्यान रहे कि जब तक रउआ आपन ब्राउजर के कैश साफ ना करब, तब तक कुछ पन्नन में हो सकत बा रउआ के खाता में लगातार प्रवेशित दिखावत रही।",
+       "cannotlogoutnow-title": "एह समय लॉगआउट ना हो सकी",
+       "cannotlogoutnow-text": "$1 के इस्तेमाल करत समय लॉगआउट नइखे संभव।",
        "welcomeuser": "राउर स्वागत बा, $1!",
        "welcomecreation-msg": "राउर खाता बना दिहल गईल बा।\nआपन [[Special:Preferences|{{SITENAME}} वरीयतां]] के बदले के ना भूलब।",
        "yourname": "सदस्यनाम:",
        "yourpasswordagain": "गुप्त-शब्द पुन:डालीं:",
        "createacct-yourpasswordagain": "गुप्तशब्द (पासवर्ड) के पुष्टि करीं",
        "createacct-yourpasswordagain-ph": "गुप्तशब्द (पासवर्ड) फेर से प्रवेश करीं",
-       "remembermypassword": "इ ब्राउजर पर हमार प्रवेश याद रखीं (अधिकतम $1 {{PLURAL:$1|दिन|दिनं}} तक)",
        "userlogin-remembermypassword": "हमके लॉग इन रहे दीं",
        "userlogin-signwithsecure": "सुरक्षित कनेक्शन के प्रयोग करीं",
+       "cannotlogin-title": "लॉगइन नइखे हो पावत",
+       "cannotlogin-text": "लॉगइन कइल संभव नइखे।",
+       "cannotloginnow-title": "एह समय लॉगइन नइखे हो सकत",
+       "cannotloginnow-text": "$1 के इस्तेमाल करत समय लॉगइन कइल नइखे संभव।",
+       "cannotcreateaccount-title": "खाता नइखे बनावल जा सकत",
+       "cannotcreateaccount-text": "एह विकि पर सीधे खाता बनावले के सुबिधा सक्षम नइखे।",
        "yourdomainname": "राउर डोमेनः",
        "password-change-forbidden": "रउआ इ विकी पर गुप्तशब्द नइखीं बदल सकत।",
        "externaldberror": "या त प्रमाणिकरण डाटाबेस में भइल बा या फिर रउआ के आपन बाह्य खाता अपडेट करे के अनुमति नइखे।",
        "login": "लॉग इन",
+       "login-security": "आपन पहिचान साबित करीं",
        "nav-login-createaccount": "खाता प्रवेश / खाता बनाईं",
        "userlogin": "खाता प्रवेश / खाता बनाईं",
        "userloginnocreate": "खाता में प्रवेश",
        "userlogin-resetpassword-link": "आपन गुप्तशब्द भूला गईनी का?",
        "userlogin-helplink2": "लॉग इन में मदद",
        "userlogin-loggedin": "रउआ {{GENDER:$1|$1}} के रूप में पहिले से लॉग्ड इन बानीं।\nकौनो अन्य सदस्य के रूप में लॉग इन करे खातिर निम्नलिखित फ़ॉर्म के प्रयोग करीं।",
+       "userlogin-reauth": "आप के ई साबित करे खातिर की आपे {{GENDER:$1|$1}} बानी, दुबारा लॉगिन करे के पड़ी।",
        "userlogin-createanother": "एगो दूसर खाता बनाईं",
        "createacct-emailrequired": "ई-मेल पता",
        "createacct-emailoptional": "ई-मेल पता (वैकल्पिक)",
        "createaccountreason": "कारण:",
        "createacct-reason": "कारण",
        "createacct-reason-ph": "रउआ एगो अन्य खाता काहे बना रहल बानी",
+       "createacct-reason-help": "खाता बनवले के लॉग में देखाई पड़े वाला संदेस",
        "createacct-submit": "आपन खाता बनाईं",
-       "createacct-another-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": "लॉगिन पूरा",
        "loginsuccess": "''' \"$1\" के रुप में रउआ {{SITENAME}} में अब प्रवेश कर चुकल बानी।'''",
        "noemail": "\"$1\" सदस्य खातिर कउनो भी ई-मेल पता दर्ज नइखे करल गइल।",
        "noemailcreate": "रउआ एगो जायज ई-मेल पता उपलब्ध करावे के पड़ी।",
        "passwordsent": "\"$1\" के ई-मेल पता पर एगो नया गुप्तशब्द भेज दिहल गइल बा।\nई-मेल पावे के बाद कृपया दुबारा खाता में प्रवेश करब।",
-       "blocked-mailpassword": "राà¤\89र à¤\86à¤\87॰पà¥\80 à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤¸à¤®à¥\8dपादन à¤\95रà¥\87 à¤¸à¥\87 à¤µà¤\82à¤\9aित à¤\95र à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾, à¤\86 à¤\97लत à¤ªà¥\8dरयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\87 à¤\96ातिर à¤\97à¥\81पà¥\8dतशबà¥\8dद à¤ªà¥\81नà¤\83 à¤ªà¥\8dरापà¥\8dति à¤\95à¥\87 à¤¸à¥\81विधा à¤\87 à¤\86à¤\87॰पà¥\80 à¤ªà¤° à¤¬à¤\82द à¤\95र à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾।",
+       "blocked-mailpassword": "राà¤\89र à¤\86à¤\87पà¥\80 à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤¸à¤\82पादन à¤\95रà¥\87 à¤¸à¥\87 à¤°à¥\8bà¤\95 à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾à¥¤ à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\87 à¤\96ातिर, à¤\8f à¤\86à¤\87पà¥\80 à¤¸à¥\87 à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤°à¤¿à¤\95वरà¥\80 à¤\95à¥\87 à¤\85नà¥\81मति à¤¨à¤\87à¤\96à¥\87।",
        "eauthentsent": "दर्ज करावल गइल ई-मेल पता पर एगो पुष्टिकरण ई-मेल भेज दिहल गइल बा।\nउ खाता पर कौनो दुसर ईमेल भेजल जाओ उ से पहिले, रउआ भेजल गईल ई-मेल पर दिहल गइल निर्देश के अनुसरण कर के ई-मेल पता के पुष्टिकरण करावे के पड़ी ताकि पता चले की सही में उ राउरे खाता ह।",
        "throttled-mailpassword": "पिछला {{PLURAL:$1|एक घंटा|$1 घंटा}} के अंदर एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जा चुकल बा।\nदुरुपयोग से बचावे खातिर {{PLURAL:$1|एक घंटा|$1 घंटा}} में सिर्फ एगो गुप्तशब्द पुनर्स्थापन ई-मेल भेजल जाई।",
        "mailerror": "ई-मेल भेजे में त्रुटि: $1",
-       "acct_creation_throttle_hit": "राà¤\89र à¤\86à¤\87॰पà¥\80 à¤ªà¤¤à¤¾ à¤¸à¥\87 à¤\86à¤\88ल à¤\86à¤\97à¤\82तà¥\81à¤\95 à¤ªà¤¿à¤\9bला à¤\9aà¥\8cबà¥\80स à¤\98à¤\82à¤\9fा à¤®à¥\87à¤\82 à¤\87 à¤µà¤¿à¤\95ि à¤ªà¤° {{PLURAL:$1|à¤\8fà¤\95 à¤\96ाता|$1 à¤\96ाता}} à¤¬à¤¨à¤¾ à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¤¨à¥\80, à¤\87 à¤¸à¤®à¤¯à¤¾à¤µà¤§à¤¿ à¤®à¥\87à¤\82 à¤\87हà¥\87 à¤\85धिà¤\95तम à¤¸à¥\80मा à¤¬à¤¾à¥¤\nà¤\85तà¤\83 à¤\87 à¤¸à¤®à¤¯ à¤\87 à¤\86à¤\87॰पà¥\80 à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤ªà¥\8dरयà¥\8bà¤\97 à¤\95रà¥\87 à¤µà¤¾à¤²à¤¾ à¤\86à¤\97à¤\82तà¥\81à¤\95 à¤\85à¤\89र à¤\85धिà¤\95 à¤\96ाता à¤¨à¤\87à¤\96न बना सकत।",
+       "acct_creation_throttle_hit": "राà¤\89र à¤\86à¤\87पà¥\80 à¤ªà¤¤à¤¾ à¤¸à¥\87 à¤\86à¤\87ल à¤\86à¤\97à¤\82तà¥\81à¤\95 à¤²à¥\8bà¤\97 à¤ªà¤¿à¤\9bला à¤\9aà¥\8cबà¥\80स à¤\98à¤\82à¤\9fा à¤®à¥\87à¤\82 à¤\8fह à¤µà¤¿à¤\95ि à¤ªà¤° {{PLURAL:$1|à¤\8fà¤\95 à¤ à¥\8b à¤\96ाता|$1 à¤\96ाता}} à¤¬à¤¨à¤¾ à¤\9aà¥\81à¤\95ल à¤¬à¤¾ à¤\9cवन à¤\8fह à¤¸à¤®à¤¯à¤\85वधि à¤®à¥\87à¤\82 à¤\85धिà¤\95तम à¤¸à¥\80मा à¤¬à¤¾à¥¤\nà¤\8fहà¥\80 à¤\95ारण, à¤\8fह à¤\86à¤\87पà¥\80 à¤ªà¤¤à¤¾ à¤\95à¥\87 à¤\87सà¥\8dतà¥\87माल à¤\95रà¥\87 à¤µà¤¾à¤²à¤¾ à¤\86à¤\97à¤\82तà¥\81à¤\95 à¤\85ब à¤\95à¥\8cनà¥\8bà¤\82 à¤\85à¤\89रà¥\80 à¤\96ाता à¤\8fह à¤¸à¤®à¤¯ à¤¨à¤\87à¤\96à¥\87à¤\82 बना सकत।",
        "emailauthenticated": "$2 के $3 पर राउर ई-मेल पता के पुष्टीकरण हो चुकल बा।",
        "emailnotauthenticated": "राउर ई-मेल पता के अभी तक प्रमाणिकरण नइखे भईल।\nनिम्नलिखित कउनो भी सुविधा खातिर रउआ के कौनो भी ई-मेल ना भेजल जाई।",
        "noemailprefs": "इ सुविधा के प्रयोग करे खातिर आपन वरियता में एगो ई-मेल पता दिहीं।",
        "createaccount-title": "{{SITENAME}} खातिर खाता बनाईं",
        "createaccount-text": "राउर ई-मेल पता खातिर {{SITENAME}} ($4) पर \"$2\" सदस्य नाम से \"$3\" गुप्तशब्द (पासवर्ड) सहित खाता खोलले बानी। रउआ खाता में प्रवेश कर के आपन गुप्तशब्द (पासवर्ड) तुरंत बदल लेवे के चाहीं।\n\nयदि इ खाता गलती से खोलल गईल बा, त रउआ इ संदेश के अनदेखा कर सकत बानी।",
        "login-throttled": "रउआ हाले में कईयन बार खाता में प्रवेश करे के कोशिश कर चुकल बानी।\nकृपया $1 प्रतिक्षा करला के बाद फिर से प्रयास करब।",
-       "login-abort-generic": "राà¤\89र à¤\96ाता à¤®à¥\87à¤\82 à¤ªà¥\8dरवà¥\87श à¤\85सफल à¤°à¤¹à¤² - à¤¨à¤¿à¤·à¥\8dफलित",
+       "login-abort-generic": "राà¤\89र à¤²à¥\89à¤\97िन à¤¬à¤¿à¤«à¤² à¤°à¤¹à¤² - à¤°à¤¦à¥\8dद à¤\95à¤\87ल à¤\97à¤\87ल",
        "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 के mail() फ़ंक्शन में अज्ञात त्रुटि बा।",
        "newpassword": "नया गुप्त-शब्द:",
        "retypenew": "नया गुप्त-शब्द पुन: डालीं:",
        "resetpass_submit": "गुप्तशब्द बनाईं आ खाता में प्रवेश करीं",
-       "changepassword-success": "राà¤\89र à¤\97à¥\81पà¥\8dतशबà¥\8dद à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\81रà¥\8dवà¤\95 à¤¬à¤¦à¤² à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल बा!",
+       "changepassword-success": "राà¤\89र à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤¬à¤¦à¤² à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल बा!",
        "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-column": "मंजूर भइल",
+       "botpasswords-bad-appid": "बॉट नाँव \"$1\" वैध नइखे।",
+       "botpasswords-created-title": "बॉट पासवर्ड बनावल गइल",
        "resetpass_forbidden": "गुप्तशब्द बदलल नइखे जा सकत",
        "resetpass-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआ पहिले खाता में प्रवेश करे के पड़ी।",
        "resetpass-submit-loggedin": "गुप्त शब्द बदलीं",
        "passwordreset-emailtext-user": "{{SITENAME}} ($4) पर सदस्य $1 राउर {{PLURAL:$3|खाता}} के गुप्तशब्द के पुनर्स्थापित करे के अनुरोध कइले बानी। इ ई-मेल पता से निम्न {{PLURAL:$3|खाता जुड़ल बा}}:\n\n$2\n\n{{PLURAL:$3|इ}} अस्थायी गुप्तशब्द {{PLURAL:$5|एक दिन|$5 दिन}} के बाद काम ना करी।\nरउआ खाता में प्रवेश करके एगो नया गुप्तशब्द अभीये चुन लेवे के चाहीं। यदि इ अनुरोध केहु अउर कइले बा, या फिर रउआ आपन मूल गुप्तशब्द याद आ गईल बा, अउर रउआ {{PLURAL:$3|आपन}} गुप्तशब्द नईखीं बदले के चाहत त, रउआ इ संदेश के अनदेखा कर के आपन पुरनका गुप्तशब्द के प्रयोग जारी रख सकत बानीं।",
        "passwordreset-emailelement": "सदस्यनाम: \n$1\n\nअस्थायी गुप्तशब्द: \n$2",
        "passwordreset-emailsentemail": "एगो गुप्तशब्द रिसेट ई-मेल भेजल जा चुकल बा।",
+       "passwordreset-invalideamil": "अवैध ईमेल पता",
        "changeemail": "ई-मेल पता बदलीं",
        "changeemail-header": "खाता के ई-मेल पता बदलीं",
        "changeemail-no-info": "इ पन्ना के सिधे प्रयोग करे खातिर रउआ पहिले खाता में प्रवेश करे के पड़ी।",
        "sig_tip": "समय मोहर की संघे राउर दस्खत",
        "hr_tip": "पड़ी लकीर (कम प्रयोग करीं)",
        "summary": "छोट विवरण (सारांश):",
-       "subject": "विषय/शिरà¥\8dषà¤\95:",
+       "subject": "बिसय:",
        "minoredit": "छोट परिवर्तन",
        "watchthis": "धियानसूची में डालीं",
        "savearticle": "पन्ना सहेजीं",
+       "savechanges": "बदलाव सहेजीं",
+       "publishpage": "पन्ना प्रकाशित करीं",
+       "publishchanges": "बदलाव प्रकाशित करीं",
        "preview": "पूर्वावलोकन",
        "showpreview": "झलक देखीं",
        "showdiff": "बदलाव देखीं",
        "missingsummary": "'''स्मरणपत्र:'''रउआ एगो सारांश के सम्पादन नईखीं प्रदान कईले। अगर रउआ \"फिर से सुरक्षित करीं\" पर क्लिक करेब, त राउर सम्पादन बिना एगो सारांश के सुरक्षित हो जाई।",
        "selfredirect": "<strong>चेतावनी:</strong> आप खुद के इ पन्ना पर पुनः निर्देशित कर रहल बानी।\nआप अनुप्रेषित खातिर गलत लक्ष्य निर्दिष्ट हो सकत बानी, या आप के द्वारा गलत पन्ना के संपादन हो सकत बा।\nआप यदि फेर से \"{{int:savearticle}}\" क्लिक करत बानी त, पुन: निर्देषण ओइसहु बनावल जाई।",
        "missingcommenttext": "कृपया निचे एगो टिप्पणी करीं।",
-       "missingcommentheader": "'''सà¥\8dमरणपतà¥\8dर:''' à¤°à¤\89à¤\86 à¤\88 à¤\9fिपà¥\8dपणà¥\80 à¤\96ातिर à¤\95à¥\8cनà¥\8b à¤µà¤¿à¤·à¤¯/शिरà¥\8dषà¤\95 à¤ªà¥\8dरदान à¤¨à¤\88à¤\96à¥\80à¤\82 à¤\95à¤\88लà¥\87। \"{{int:savearticle}}\" à¤¯à¤¦à¤¿ à¤°à¤\89à¤\86 à¤«à¤¿à¤° à¤¸à¥\87 à¤¸à¥\81रà¤\95à¥\8dषित à¤\95रब à¤¤ à¤°à¤¾à¤\89र à¤¸à¤®à¥\8dपादन à¤¬à¤¿à¤¨à¤¾ à¤\95à¥\8cनà¥\8b à¤¶à¤¿à¤°à¥\8dषà¤\95 à¤\95à¥\87 à¤¸à¥\81रà¤\95à¥\8dषित à¤¹à¥\8b जाई।",
+       "missingcommentheader": "'''याद à¤¦à¤¿à¤¯à¤¾à¤µà¤² à¤\9cात à¤¬à¤¾:''' à¤°à¤\89à¤\86à¤\81 à¤\8fह à¤\95मà¥\87à¤\82à¤\9f à¤\96ातिर à¤\95à¥\8cनà¥\8bà¤\82 à¤¬à¤¿à¤¸à¤¯ à¤¨à¤\87à¤\96à¥\80à¤\82 à¤¦à¤¿à¤¹à¤²à¥\87। à¤\85à¤\97र à¤\86प \"{{int:savearticle}}\" à¤ªà¤° à¤\95à¥\8dलिà¤\95 à¤\95रब à¤¤à¤¬ à¤°à¤¾à¤\89र à¤¸à¤\82पादन à¤\8fà¤\95रà¥\87 à¤¬à¤¿à¤¨à¤¾ à¤¸à¤¹à¥\87à¤\9cा जाई।",
        "summary-preview": "सारांश पूर्वावलोकन:",
-       "subject-preview": "विषय/शिरà¥\8dषà¤\95 à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न:",
+       "subject-preview": "बिसय à¤\95à¥\87 à¤\9dलà¤\95:",
        "previewerrortext": "जब आप आपन बदलाव के पुर्वावलोकन देखे खातिर प्रयास कइनी ह तवने घड़ी एगो त्रुटी उत्पन्न हो गइल बा।",
        "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आपन कउनो भी प्रश्न में कृपया इ सब जानकारी भी शामिल करब।",
        "previewnote": "'''याद रखीं, इ एगो झलक मात्र हो।'''\nराउर बदलाव अभी तक सुरक्षित नईखे करल गईल!",
        "continue-editing": "संपादन क्षेत्र में जाईं",
        "previewconflict": "ई नमूना ई देखावत बा की अगर रउआँ ए संपादन बक्सा में मौजूद पाठ के सहेजब त ऊ कइसन देखाई पड़ी।",
-       "session_fail_preview": "<strong>माफ करीं! एह सत्र के आँकड़ा के गायब हो गइला की कारण आपके संपादन के प्रॉसेस करे में हमनी के असमर्थ बाणी।</strong>\nदोबारा से कोसिस करीं।\nअगर तबो काम ना होखे तब [[Special:UserLogout|लॉग आउट करीं]] आ दोबारा लॉग इन कइ के कोसिस करी।",
+       "session_fail_preview": "माफ करीं! एह सत्र के आँकड़ा के गायब हो गइला के कारण आपके संपादन के प्रॉसेस करे में हमनी के असमर्थ बानी जा।\nहो सकेला आप लॉगआउट हो गइल होखीं।\n<strong>जाँच लेईं कि आप अभी लॉगिन बानी आ दुबारा कोसिस करीं</strong>।\nअगर तबो काम ना होखे तब [[Special:UserLogout|लॉगआउट कइके]] आ दोबारा लॉग इन कइ के कोसिस करी, आ जाँच करीं कि आपके ब्राउजर एह साइट से कुकीज सभ के मंजूर करत बा।",
        "session_fail_preview_html": "<strong>माफ करीं! सत्र आँकड़ा के गायब होखला की कारन आपके संपादन सहेजल नइखे जा सकत।</strong>\n\n<em>चूँकि, {{SITENAME}} में मूल HTML सक्षम कइल बाटे, जावास्क्रिप्ट हमला से बचाव की खातिर नमूना देखावे के छिपावल गइल बा।</em>\n\n<strong>अगर ई एगो वैध संपादन बाटे तब एक बेर फिर से कोसिस करीं।</strong>\nअगर तबो पर काम नइखे हो पावत त [[Special:UserLogout|लॉग आउट करीं]] आ दुबारा लॉगिन क के कोसिस करीं।",
        "token_suffix_mismatch": "<strong>राउर संपादन रिजेक्ट कइल जात बा काहें से की राउर क्लायंट संपादन टोकन में विराम चीन्हा सब से गड़बड़ क दिहले बा।</strong>\nपन्ना के पाठ के तहस-नहस होखे से बचावे खाती ई संपादन रिजेक्ट कइल गइल बा।\nकबो-कबो अइसन एहू दसा में हो सकेला जब आप खराबी-युक्त वेबआधारित बेनाम प्रॉक्सी सर्वर के इस्तेमाल करत होखीं।",
        "edit_form_incomplete": "<strong>संपादन के कुछ हिस्सा सर्वर ले ना पहुँच पावल ह; दोहरा के चेक करीं की राउर संपादन बदलल न होखे आ एक बेर फिर से सहेजे के कोसिस करीं।</strong>",
        "editing": "$1 संपादन",
        "creating": "$1 बनावे जा रहल बानी",
        "editingsection": "$1 संपादन (खंड)",
-       "editingcomment": "$1 à¤¸à¤®à¥\8dपादन (नया à¤\85नà¥\81भाà¤\97)",
-       "editconflict": "सà¤\82पादन à¤\85à¤\82तरà¥\8dविरोध: $1",
-       "explainconflict": "à¤\86पà¤\95à¥\80 à¤¸à¤\82पादन à¤¶à¥\81रà¥\82 à¤\95à¤\87ला à¤\95à¥\80 à¤¬à¤¾à¤¦ à¤¸à¥\87 à¤\95à¥\87हà¥\82 à¤\85à¤\89रà¥\80 à¤\8f à¤ªà¤¨à¥\8dना à¤®à¥\87à¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95 à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¤\9fà¥\87।\nà¤\8aपर à¤\95à¥\87 à¤ªà¤¾à¤  à¤¹à¤¿à¤¸à¥\8dसा à¤®à¥\87à¤\82 à¤²à¥\87à¤\96 à¤\95à¥\80 à¤ªà¤¾à¤  à¤\95à¥\87 à¤µà¤°à¥\8dतमान à¤¸à¥\8dथिति à¤¦à¥\87à¤\96ावल à¤\9cात à¤¬à¤¾à¥¤\nराà¤\89र à¤¸à¤\82पादन à¤¨à¥\80à¤\9aà¥\87 à¤\95à¥\80 पाठ हिस्सा में देखावल गइल बा।\nरउआँ के आपन बदलाव एह पहिले से मौजूद पाठ में मिलावे के परी।\n<strong>खाली</strong> ऊपर की पाठ हिस्सा में लउकत पाठ सहेजल जाई अगर आप \"{{int:savearticle}}\" बटन दबाइब।",
-       "yourtext": "राउर पाठ्य",
-       "storedversion": "सà¥\81रà¤\95à¥\8dषित à¤\95रल à¤\97à¤\88ल संशोधन",
+       "editingcomment": "$1 à¤¸à¤\82पादन (नया à¤\96à¤\82ड)",
+       "editconflict": "सà¤\82पादन à¤\85à¤\82तरà¥\8dबिरोध: $1",
+       "explainconflict": "à¤\86पà¤\95à¥\87 à¤¦à¥\8dवारा à¤¸à¤\82पादन à¤¸à¥\81रà¥\82 à¤\95à¤\87ला à¤\95à¥\87 à¤¬à¤¾à¤¦ à¤¸à¥\87 à¤\95à¥\87हà¥\82 à¤\85à¤\89रà¥\80 à¤\8f à¤ªà¤¨à¥\8dना à¤®à¥\87à¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95 à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¤\9fà¥\87।\nà¤\8aपर à¤\95à¥\87 à¤ªà¤¾à¤  à¤¹à¤¿à¤¸à¥\8dसा à¤®à¥\87à¤\82 à¤²à¥\87à¤\96 à¤\95à¥\87 à¤ªà¤¾à¤  à¤\95à¥\87 à¤µà¤°à¥\8dतमान à¤¸à¥\8dथिति à¤¦à¥\87à¤\96ावल à¤\9cात à¤¬à¤¾à¥¤\nराà¤\89र à¤¸à¤\82पादन à¤¨à¥\80à¤\9aà¥\87 à¤\95à¥\87 पाठ हिस्सा में देखावल गइल बा।\nरउआँ के आपन बदलाव एह पहिले से मौजूद पाठ में मिलावे के परी।\n<strong>खाली</strong> ऊपर की पाठ हिस्सा में लउकत पाठ सहेजल जाई अगर आप \"{{int:savearticle}}\" बटन दबाइब।",
+       "yourtext": "राउर पाठ",
+       "storedversion": "सà¥\81रà¤\95à¥\8dषित à¤\95à¤\87ल à¤\97à¤\87ल संशोधन",
        "nonunicodebrowser": "<strong>चेतावनी: राउर ब्राउसर युनिकोड समर्थ नइखे।</strong>\nपन्ना सभ के सुरक्षित संपादित करे के एगो तरीका सुझावल जात बा: गैर-ASCII अक्षर सभ संपादन बॉक्स में हेक्साडेसिमल कोड की रूप में देखावल जाई।",
        "editingold": "<strong>चेतावनी: रउआँ ए पन्ना क एगो पुरान अवतरण के संपादन करत बानी।</strong>\nअगर आप एकरा के सहेज देइब, त एकरी बाद के सगरी बदलाव गायब हो जाई।",
        "yourdiff": "अंतर",
        "templatesusedpreview": "इ पुर्वावलोकन में प्रयुक्त {{PLURAL:$1|टेम्पलेट|टेम्पलेट कुल}}:",
        "templatesusedsection": "एह खण्ड में इस्तेमाल {{PLURAL:$1|टेम्पलेट|कुल}}:",
        "template-protected": "(सुरक्षित)",
-       "template-semiprotected": "(à¤\95à¥\81à¤\9b-सुरक्षित)",
+       "template-semiprotected": "(à¤\86धा-सुरक्षित)",
        "hiddencategories": "ई पन्ना {{PLURAL:$1|1 छिपल श्रेणी|$1 छिपल श्रेणीसभ}} के सदस्य बा:",
        "nocreatetext": "{{SITENAME}} नया पन्ना बनावे पर रोक लगवले बा।\nपीछे जाईं आ पहिले से बनल पन्ना संपादित करीं या फिर [[Special:UserLogin|लॉगिन करीं या नया खाता बनाईं]]।",
-       "nocreate-loggedin": "नया पन्ना बनावे रउआ अधिकार नइखे।",
-       "sectioneditnotsupported-title": "अनुभाग सम्पादन समर्थित नइखे",
-       "sectioneditnotsupported-text": "इ पन्ना पर अनुभाग सम्पादन समर्थित नइखे",
-       "permissionserrors": "अनुमति त्रुटी",
-       "permissionserrorstext": "निम्नलिखित {{PLURAL:$1|कारण|कारणन}} के चलते आपके अइसन करे के अनुमति नइखे:",
-       "permissionserrorstext-withaction": "नीचे दिहल {{PLURAL:$1|कारण|कारणन}} से रउआँ के $2 के परमीशन नइखे:",
+       "nocreate-loggedin": "रउआँ के नया पन्ना बनावे के अधिकार नइखे।",
+       "sectioneditnotsupported-title": "खंड संपादन समर्थित नइखे",
+       "sectioneditnotsupported-text": "एह पन्ना पर खंड संपादन समर्थित नइखे",
+       "permissionserrors": "परमीशन खराबी",
+       "permissionserrorstext": "नीचे दिहल {{PLURAL:$1|कारण|कारणन}} के चलते आपके अइसन करे के परमीशन नइखे:",
+       "permissionserrorstext-withaction": "नीचे दिहल {{PLURAL:$1|कारण|कारणन}} के चलते रउआँ के $2 के परमीशन नइखे:",
+       "contentmodelediterror": "रउआँ एह अवतरण के संपादन नइखीं कर सकत काहें से कि एकर सामग्री मॉडल <code>$1</code> बा जवन पन्ना के के वर्तमान मॉडल <code>$2</code> से अलग बाटे।",
        "recreate-moveddeleted-warn": "<strong>चेतावनी: रउआँ एगो अइसन पन्ना दुबारा बनावे जा रहल बानी जेवन पहिले हटावल जा चुकल बा</strong>\n\nआपके ई बिचार क लेवे के चाहीं की आगे संपादन कइल ठीक बा की ना।\n\nसुविधा खातिर, ए पन्ना के हटवले आ स्थानांतरण के लॉग नीचे दिहल जात बा:",
        "moveddeleted-notice": "ई पन्ना हटा दिहल गइल बा।\nसंदर्भ खातिर हटावे आ स्थानांतरण के लॉग नीचे दिहल जात बाटे।",
        "log-fulllog": "पूरा लॉग देखीं",
        "edit-hook-aborted": "संपादन के हुक निरस्त क दिहलस।\nई कौनों कारन ना बतवलस।",
        "edit-gone-missing": "पन्ना अपडेट ना हो पावल।\nबुझात बा कि ई हटा दिहल गइल बा।",
-       "edit-conflict": "सà¤\82पादन à¤\85à¤\82तरà¥\8dविरोध",
-       "edit-no-change": "à¤\86पà¤\95à¥\87 à¤¸à¤®à¥\8dपादन à¤ªà¤° à¤§à¤¿à¤¯à¤¾à¤¨ à¤¨à¤¾ à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤\95ाहà¥\87à¤\82 à¤¸à¥\87 à¤\95à¥\80 à¤ªà¤¾à¤  à¤®à¥\87à¤\82 à¤\95à¥\8cनà¥\8bà¤\82 à¤¬à¤¦à¤²à¤¾à¤µ à¤¨à¤¾ à¤\95à¤\87ल à¤\97à¤\87ल à¤°à¤¹ल।",
-       "postedit-confirmation-created": "पनà¥\8dना à¤¬à¤¨à¤¾ à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल।",
+       "edit-conflict": "सà¤\82पादन à¤\85à¤\82तरà¥\8dबिरोध",
+       "edit-no-change": "पाठ à¤®à¥\87à¤\82 à¤\95à¥\8cनà¥\8bà¤\82 à¤\85à¤\82तर à¤¨à¤¾ à¤¹à¥\8bà¤\96à¥\87 à¤\95à¥\87 à¤\95ारण à¤°à¤¾à¤\89र à¤¸à¤\82पादन à¤ªà¤° à¤§à¤¿à¤¯à¤¾à¤¨ à¤¨à¤¾ à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल।",
+       "postedit-confirmation-created": "पनà¥\8dना à¤¬à¤¨à¤¾ à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल।",
        "postedit-confirmation-restored": "पन्ना के दुबारा अस्थापित कइल गइल।",
-       "postedit-confirmation-saved": "राà¤\89र à¤¸à¤®à¥\8dपादन à¤¸à¥\81रà¤\95à¥\8dषित à¤\95र à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल।",
+       "postedit-confirmation-saved": "राà¤\89र à¤¸à¤\82पादन à¤¸à¤¹à¥\87à¤\9c à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल।",
        "edit-already-exists": "नया पन्ना ना बनावल जा सकत बा।\nई पहिलहीं से मौजूद बाटे।",
-       "defaultmessagetext": "संदेश के डिफ़ॉल्ट पाठ्य",
-       "content-failed-to-parse": "$2 के सामग्री, $1 मॉडल खातिर पार्स (parse) ना हो पावल: $3",
-       "invalid-content-data": "अवैध डाटा सामग्री",
-       "content-not-allowed-here": "\"$1\" सामग्री, पन्ना [[$2]] पर ना डालल जा सकेला।",
-       "editwarning-warning": "ए पन्ना के छोड़ के हटला पर आपके कइल बदलाव गायब हो जाई।\nअगर आप लॉगिन कइले बानी तब ए चेतावनी के अपनी सेटिंग में \"{{int:prefs-editing}}\" खंड में जा के बन्द क सकत बानीं।",
+       "defaultmessagetext": "डिफॉल्ट संदेस पाठ",
+       "content-failed-to-parse": "$2 के सामग्री, $1 मॉडल खातिर प्राप्त (पार्स) ना हो पावल: $3",
+       "invalid-content-data": "अवैध सामग्री डाटा",
+       "content-not-allowed-here": "पन्ना [[$2]] पर \"$1\" सामग्री डाले के इजाजत नइखे।",
+       "editwarning-warning": "ए पन्ना के छोड़ के हटला पर आपके द्वारा कइल बदलाव गायब हो सके लें।\nअगर आप लॉगिन कइले बानी तब ए चेतावनी के अपनी सेटिंग में \"{{int:prefs-editing}}\" खंड में जा के बंद कर सकत बानीं।",
+       "editpage-invalidcontentmodel-title": "सामग्री मॉडल सपोर्टेड नइखे",
+       "editpage-invalidcontentmodel-text": "सामग्री मॉडल \"$1\" सपोर्टेड नइखे।",
        "editpage-notsupportedcontentformat-title": "सामग्री के फॉरमैट सपोर्टेड नइखे।",
-       "editpage-notsupportedcontentformat-text": "सामà¤\97à¥\8dरà¥\80 à¤«à¥\89रमà¥\88à¤\9f $1 à¤\95à¥\87 à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤®à¥\89डल $2 à¤¸à¤ªà¥\8bरà¥\8dà¤\9f à¤¨à¤\87à¤\96à¥\87 à¤\95रत।",
-       "content-model-wikitext": "विà¤\95à¥\80पाठà¥\8dय",
-       "content-model-text": "सामानà¥\8dय पाठ",
+       "editpage-notsupportedcontentformat-text": "सामà¤\97à¥\8dरà¥\80 à¤®à¥\89डल $2 à¤¦à¥\8dवारा à¤¸à¤¾à¤®à¤\97à¥\8dरà¥\80 à¤«à¥\89रमà¥\88à¤\9f $1 à¤¸à¤ªà¥\8bरà¥\8dà¤\9fà¥\87ड à¤¨à¤\87à¤\96à¥\87।",
+       "content-model-wikitext": "विà¤\95िपाठ",
+       "content-model-text": "à¤\86म पाठ",
        "content-model-javascript": "जावास्क्रिप्ट",
        "content-model-css": "सी॰एस॰एस",
-       "content-json-empty-object": "खाली चीज (Empty object)",
-       "content-json-empty-array": "खाली अरे (Empty array)",
+       "content-json-empty-object": "खाली चीज (एम्प्टी ऑब्जेक्ट)",
+       "content-json-empty-array": "खाली ऍरे",
+       "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": "टेम्पलेट कॉल में डुप्लिकेट तर्क इस्तेमाल वाला पन्ना",
        "duplicate-args-category-desc": "पन्ना पर अइसन टेम्पलेट काल मौजूद बा जेवन डुप्लीकेट (दोहरा) आर्गुमेंट इस्तेमाल करत बाटे, जइसे की <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> या <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "<strong>चेतावनी:</strong> ई पन्ना बहुत ढेर सारा  खर्चीला पार्सर फंक्शन काल के इस्तेमाल करत बा।\n\nए पन्ना पर $2 {{PLURAL:$2|काल|काल कुल}} से कम संख्या में काल होखे के चाहीं, बाकी इहाँ ए समय {{PLURAL:$1|$1 काल बा|$1 काल कुल बाड़ी}}।",
        "expensive-parserfunction-category": "बहुत ढेर खर्चीला पार्सर फंक्शन काल वाला पन्ना सभ",
-       "post-expand-template-inclusion-warning": "'''à¤\9aà¥\87तावनà¥\80:''' à¤\96ाà¤\81à¤\9aा à¤\9cà¥\8bड़à¥\87 à¤\95à¥\87 à¤¸à¥\80मा à¤ªà¤¾à¤° à¤¹à¥\8b à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¥¤\nà¤\95à¥\81à¤\9b à¤\96ाà¤\81à¤\9aा à¤¨à¤¾ à¤\9cà¥\8bड़ल à¤\9cाà¤\88।",
-       "post-expand-template-inclusion-category": "à¤\85à¤\87सन à¤ªà¥\83षà¥\8dठ à¤\9cà¥\87 à¤ªà¤° à¤¸à¤¾à¤\81à¤\9aा à¤\9cà¥\8bडे के सीमा पार हो गइल बा",
+       "post-expand-template-inclusion-warning": "'''à¤\9aà¥\87तावनà¥\80:''' à¤\9fà¥\87मà¥\8dपलà¥\87à¤\9f à¤\9cà¥\8bड़à¥\87 à¤\95à¥\87 à¤¸à¥\80मा à¤ªà¤¾à¤° à¤¹à¥\8b à¤\9aà¥\81à¤\95ल à¤¬à¤¾à¥¤\nà¤\95à¥\81à¤\9b à¤\9fà¥\87मà¥\8dपलà¥\87à¤\9f à¤¸à¤¾à¤®à¤¿à¤² à¤¨à¤¾ à¤¹à¥\8bà¤\96िहà¥\87à¤\82।",
+       "post-expand-template-inclusion-category": "पनà¥\8dना à¤\9cहाà¤\81 à¤\9fà¥\87मà¥\8dपलà¥\87à¤\9f à¤¸à¤¾à¤®à¤¿à¤² à¤\95रे के सीमा पार हो गइल बा",
        "post-expand-template-argument-warning": "<strong>चेतावनी:</strong> ए पन्ना पर कम से कम एक ठो अइसन टेम्पलेट आर्गुमेंट बा जेवन बहुत बड़ खर्चीला साइज के बा।\nअइसन आर्गुमेंट के लोप कइ दिहल गइल बा।",
        "post-expand-template-argument-category": "पन्ना जिनहन में लोप कइल गइल टेम्पलेट आर्गुमेंट बा",
        "parser-template-loop-warning": "टेम्पलेट लूप पकड़ में आइल बा:[[$1]]",
        "expansion-depth-exceeded-warning": "पन्ना अधिकतम बिस्तार गहिराई के पार क गइल",
        "parser-unstrip-loop-warning": "अनस्ट्रिप लूप पकड़ में आइल बा",
        "parser-unstrip-recursion-limit": "अनस्ट्रिप रिकर्शन सीमा पार हो गइल ($1)",
-       "converter-manual-rule-error": "मà¥\88नà¥\81à¤\85ल à¤­à¤¾à¤·à¤¾ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¨à¤¿à¤¯à¤® à¤®à¤¬ खराबी पकड़ल गइल",
+       "converter-manual-rule-error": "मà¥\88नà¥\81à¤\85ल à¤­à¤¾à¤·à¤¾ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¨à¤¿à¤¯à¤® à¤®à¥\87à¤\82 खराबी पकड़ल गइल",
        "undo-success": "संपादन वापस कइल जा सकत बा।\nनीचे दिहल तुलना के चेक करीं आ पुष्टी करीं की आप इहे कइल चाहत बाड़ीं, ओकरा बाद बदलाव सहेज के संपादन वापसी के पूरा करीं।",
        "undo-failure": "बीच में अउरी संपादन होखला की कारण ई संपादन वापस नइखे लिहल जा सकत।",
        "undo-norev": "संपादन वापस नइखे लिहल जा सकत, काहें से की या त ई हइये नइखे या हटा दिहल गइल बाटे।",
        "undo-nochange": "लागत बा की ई संपादन पहिलहीं वापस लिहल जा चुकल बाटे।",
-       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|वारà¥\8dता]]) à¤\95à¥\87 à¤¦à¥\8dवारा à¤\95à¤\87ल $1 à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\87 वापस कइल गइल",
-       "undo-summary-username-hidden": "à¤\8fà¤\97à¥\8b छिपल सदस्य द्वारा कइल बदलाव $1 वापस कइल गइल",
-       "cantcreateaccount-text": "एह आइपी पता (IP address)(<strong>$1</strong>) द्वारा नया खाता बनावे पर  [[User:$3|$3]] द्वारा रोक लगावल गइल बा।\n\nएकरा खातिर $3 के दिहल कारण:<em>$2</em>",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|वारà¥\8dता]]) à¤\95à¥\87 à¤\95à¤\87ल $1 à¤¬à¤¦à¤²à¤¾à¤µ वापस कइल गइल",
+       "undo-summary-username-hidden": "à¤\95à¥\87हà¥\82 छिपल सदस्य द्वारा कइल बदलाव $1 वापस कइल गइल",
+       "cantcreateaccount-text": "एह आइपी पता (IP address)(<strong>$1</strong>) द्वारा नया खाता बनावे पर [[User:$3|$3]] द्वारा रोक लगावल गइल बा।\n\nएकरा खातिर $3 के दिहल कारण:<em>$2</em>",
        "cantcreateaccount-range-text": "आइपी पता बिस्तार (IP address range) <strong>$1</strong> पर, जेवना में आपके आइपी (<strong>$4</strong>) भी बा, नया खाता बनावे पर [[User:$3|$3]] द्वारा रोक लगावल गइल बा।\n\nएकरा खातिर $3 के दिहल कारण बा:<em>$2</em>",
        "viewpagelogs": "ए पन्ना खातिर लॉग कुल देखीं",
        "nohistory": "ए पन्ना के कौनों संपादन इतिहास नइखे",
        "currentrev": "सबसे नया बदलाव",
        "currentrev-asof": "$1 ले भइल नया बदलाव",
        "revisionasof": "$1 ले भइल नया बदलाव",
-       "revision-info": "{{GENDER:$6|$2}}$7 à¤\95à¥\87 à¤¦à¥\8dवारा $1 à¤\95à¥\87 à¤¸à¤\82शà¥\8bधन",
-       "previousrevision": "â\86\90 à¤ªà¥\81रान à¤¸à¤\82शà¥\8bधन",
-       "nextrevision": "नया à¤¸à¤\82सà¥\8bधन →",
+       "revision-info": "{{GENDER:$6|$2}}$7 à¤\95à¥\87 à¤¦à¥\8dवारा $1 à¤\95à¥\87 à¤¬à¤¦à¤²à¤¾à¤µ",
+       "previousrevision": "â\86\90 à¤ªà¥\81रान à¤¬à¤¦à¤²à¤¾à¤µ",
+       "nextrevision": "नया à¤¬à¤¦à¤²à¤¾à¤µ →",
        "currentrevisionlink": "हाल के संसोधन",
        "cur": "हाल",
        "next": "अगिला",
        "last": "पछिला",
        "page_first": "पहिलका",
        "page_last": "आखिरी",
-       "histlegend": "à¤\9aà¥\81नाव à¤\85नà¥\8dतर: à¤¤à¥\81लना à¤\95रà¥\87 à¤\96ातिर à¤¸à¤\82शà¥\8bधन à¤\95à¥\87 à¤°à¥\87डियà¥\8b à¤¬à¤\9fन à¤ªà¤° à¤¨à¤¿à¤¶à¤¾à¤¨ à¤²à¤\97ाà¤\88à¤\82 à¤\86 enter à¤¬à¤\9fन à¤¦à¤¬à¤¾à¤\88à¤\82 à¤\86 à¤\9aाहà¥\87 à¤¨à¤¿à¤\9aला à¤¬à¤\9fन à¤¦à¤¬à¤¾à¤\88à¤\82।<br />\nLegend: '''({{int:cur}})''' = à¤¹à¤¾à¤² à¤\95à¥\87 à¤¸à¤\82शà¥\8bधन à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\85à¤\82तर, '''({{int:last}})''' = à¤ªà¥\81रà¥\8dववरà¥\8dतà¥\80 à¤¸à¤\82शà¥\8bधन à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\85à¤\82तर, '''{{int:minoreditletter}}''' = à¤\9bà¥\8bà¤\9f à¤¸à¤®à¥\8dपादन।",
-       "history-fieldset-title": "à¤\87तिहास à¤¨à¤¿à¤¹à¤¾à¤°ीं",
+       "histlegend": "à¤\85à¤\82तर à¤¬à¥\80à¤\9bà¥\80à¤\82: à¤¤à¥\81लना à¤¦à¥\87à¤\96à¥\87 à¤\96ातिर à¤¬à¤¦à¤²à¤¾à¤µà¤¨ à¤\95à¥\87 à¤°à¥\87डियà¥\8b à¤¬à¤\9fन à¤\9aिनà¥\8dहित à¤\95रà¥\80à¤\82 à¤\86 à¤\8fà¤\82à¤\9fर à¤¯à¤¾ à¤«à¤¿à¤° à¤¨à¥\80à¤\9aà¥\87 à¤¦à¤¿à¤¹à¤² à¤¬à¤\9fन à¤¦à¤¬à¤¾à¤\88à¤\82।<br />\nसà¤\82à¤\95à¥\87त: <strong>({{int:cur}})</strong> = à¤¸à¤­à¤¸à¥\87 à¤¨à¤¯à¤¾ à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\85à¤\82तर, <strong>({{int:last}})</strong> = à¤ªà¤\9bिला à¤¬à¤¦à¤²à¤¾à¤µ à¤\95à¥\87 à¤¸à¤¾à¤¥ à¤\85à¤\82तर, <strong>{{int:minoreditletter}}</strong> = à¤\9bà¥\8bà¤\9f à¤¸à¤\82पादन।",
+       "history-fieldset-title": "à¤\87तिहास à¤¦à¥\87à¤\96ीं",
        "history-show-deleted": "खाली मेटावल",
        "histfirst": "सबसे पुरान",
        "histlast": "सबसे नया",
        "historysize": "({{PLURAL:$1|1 बाइट|$1 बाइट}})",
        "historyempty": "(खाली)",
-       "history-feed-title": "सà¤\82शà¥\8bधन इतिहास",
-       "history-feed-description": "विà¤\95ि à¤ªà¤° à¤\87 पन्ना के संशोधन के इतिहास",
+       "history-feed-title": "बदलाव इतिहास",
+       "history-feed-description": "विà¤\95ि à¤ªà¤° à¤\8fह पन्ना के संशोधन के इतिहास",
        "history-feed-item-nocomment": "$1 $2 पर",
-       "history-feed-empty": "à¤\85नà¥\81रà¥\8bध à¤\95रल à¤\97à¤\88ल à¤ªà¤¨à¥\8dना à¤\89पलबà¥\8dध à¤¨à¤\88à¤\96à¥\87। à¤¹à¥\8b à¤¸à¤\95त à¤¬à¤¾ à¤\89 à¤\95à¥\87 à¤µà¤¿à¤\95ि à¤ªà¤° à¤¸à¥\87 à¤®à¤¿à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल à¤¹à¥\8bà¤\96à¥\87, à¤\86 à¤\9aाहà¥\87 à¤\89 à¤\95à¥\87 à¤¨à¤¾à¤® à¤¬à¤¦à¤² à¤¦à¥\87वल à¤\97à¤\88ल à¤¹à¥\8bà¤\96à¥\87।\nपà¥\8dरासà¤\82à¤\97िà¤\95 à¤ªà¤¨à¥\8dना à¤\95à¥\87 [[Special:Search|विà¤\95ि à¤ªà¤° à¤\96à¥\8bà¤\9cà¥\87 à¤\95à¥\87]] à¤\95à¥\8bशिश à¤\95रत à¤°à¤¹ीं।",
+       "history-feed-empty": "à¤\85नà¥\81रà¥\8bध à¤\95रल à¤\97à¤\87ल à¤ªà¤¨à¥\8dना à¤\89पलबà¥\8dध à¤¨à¤\87à¤\96à¥\87। à¤¹à¥\8b à¤¸à¤\95त à¤¬à¤¾ à¤\8fà¤\95रा à¤\95à¥\87 à¤µà¤¿à¤\95ि à¤ªà¤° à¤¸à¥\87 à¤¹à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¹à¥\8bà¤\96à¥\87, à¤¯à¤¾ à¤\8fà¤\95र à¤¨à¤¾à¤\81व à¤¬à¤¦à¤²à¤² à¤\97à¤\87ल à¤¹à¥\8bà¤\96à¥\87।\nपà¥\8dरसà¤\82à¤\97 à¤\85नà¥\81सार à¤¨à¤¯à¤¾ à¤ªà¤¨à¥\8dना à¤\8fह [[Special:Search|विà¤\95ि à¤ªà¤° à¤\96à¥\8bà¤\9cà¥\87 à¤\95à¥\87]] à¤\95à¥\8bशिश à¤\95रीं।",
        "history-edit-tags": "सेलेक्ट कइल बदलाव खातिर संपादन टैग",
-       "rev-deleted-comment": "(समà¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¹à¤\9fावल à¤\97à¤\88ल)",
-       "rev-deleted-user": "(पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤\95à¥\87 à¤¨à¤¾à¤® à¤®à¤¿à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल बा)",
-       "rev-deleted-event": "(लà¥\89à¤\97 à¤µà¤¿à¤µà¤°à¤£ à¤¹à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल बा)",
-       "rev-deleted-user-contribs": "[पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤\86 à¤\9aाहà¥\87 à¤\86à¤\87 à¤ªà¥\80 à¤ªà¤¤à¤¾ à¤¹à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\88ल à¤¬à¤¾ - à¤¯à¥\8bà¤\97दान à¤¸à¥\87 à¤¸à¤®à¥\8dपादन à¤\9bà¥\81प à¤\97à¤\88ल बा]",
+       "rev-deleted-comment": "(समà¥\8dपादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤¹à¤\9fावल à¤\97à¤\87ल)",
+       "rev-deleted-user": "(पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤\95à¥\87 à¤¨à¤¾à¤\81व à¤®à¤¿à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल बा)",
+       "rev-deleted-event": "(लà¥\89à¤\97 à¤µà¤¿à¤µà¤°à¤£ à¤¹à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल बा)",
+       "rev-deleted-user-contribs": "[पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® à¤¯à¤¾ à¤\86à¤\87पà¥\80 à¤ªà¤¤à¤¾ à¤¹à¤\9fा à¤¦à¤¿à¤¹à¤² à¤\97à¤\87ल à¤¬à¤¾ - à¤¯à¥\8bà¤\97दान à¤²à¤¿à¤¸à¥\8dà¤\9f à¤¸à¥\87 à¤¸à¤\82पादन à¤\9bिप à¤\97à¤\87ल बा]",
        "rev-deleted-text-permission": "ई पन्ना के संशोधन '''मिटा'''' दिहल गईल बा।\nमेटावल जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} डिलेशन लॉग] में मिली।",
        "rev-suppressed-text-permission": "ए पन्ना के बदलाव<strong>दबा दिहल गइल बा</strong>।\nबिस्तृत जानकारी [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} दबावल चीज के लॉग] पर मिल जाई।",
        "rev-deleted-text-unhide": "पन्ना पर क ई बदलाव <strong>हटा दिहल गइल बा</strong>।\nएकर डिटेल जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटवले के लॉग] में मिल सकेला।\nअभी भी आप [$1 ई बदलाव देख सकत बानी]  अगर आप आगे देखल चाहत होखीं।",
        "searchprofile-everything-tooltip": "सब जगह खोजीं (बातचीत पन्ना सहित)",
        "searchprofile-advanced-tooltip": "विशेष नामस्थान में खोजीं",
        "search-result-size": "$1 ({{PLURAL:$2|1 शब्द|$2 शब्द}})",
-       "search-redirect": "(अनुप्रेषण$1)",
+       "search-redirect": "($1 से अनुप्रेषित)",
        "search-section": "(खंड $1)",
        "search-category": "(श्रेणी $1)",
        "search-suggest": "का राउर मतलब बा: $1",
        "rightslogtext": "ई सदस्यन के सदस्य-अधिकार के बदलाव के लॉग बा",
        "action-read": "ई पन्ना पढ़ीं",
        "action-edit": "ई पन्ना संपादित करीं",
-       "action-createpage": "पन्ना बनाईं",
-       "action-createtalk": "वारà¥\8dता पन्ना बनाईं",
+       "action-createpage": "à¤\88 à¤ªà¤¨à¥\8dना à¤¬à¤¨à¤¾à¤\88à¤\82",
+       "action-createtalk": "à¤\88 à¤¬à¤¾à¤¤à¤\9aà¥\80त पन्ना बनाईं",
        "action-createaccount": "ई सदस्यखाता बनाईं",
        "action-history": "ए पन्ना के इतिहास देखीं",
        "action-minoredit": "ए संपादन के छोट चिह्नित करीं",
        "action-delete": "ई पन्ना के मिटाईं",
        "action-unwatchedpages": "ध्यानसूची में जवन पन्ना नइखे ओकर सूची देखीं",
        "enhancedrc-history": "इतिहास",
-       "recentchanges": "तà¥\81रà¤\82त à¤­à¤\87ल बदलाव",
+       "recentchanges": "हाल à¤\95à¥\87 बदलाव",
        "recentchanges-legend": "हाल के बदलाव संबंधी बिकल्प",
        "recentchanges-summary": "ए विकि पर हाल में भइल बदलाव इहाँ देखल जा सकत बा।",
+       "recentchanges-noresult": "दिहल गइल समयअवधि खातिर एह पैमाना पर सही उतरे वाला कौनों बदलाव नइखे।",
+       "recentchanges-feed-description": "एह विकि पर सभसे हालिया बदलाव के एह फीड में निगरानी करीं।",
        "recentchanges-label-newpage": "ए संपादन से एगो नया पन्ना बनल",
        "recentchanges-label-minor": "ई एगो छोट संपादन बा",
        "recentchanges-label-bot": "इ संपादन एगो बॉट द्वारा कइल गइल बा",
        "recentchanges-label-unpatrolled": "ए संपादन के अभिन ले जाँचल नइखे गइल",
-       "recentchanges-label-plusminus": "à¤\8fतना à¤¬à¤¾à¤\87à¤\9fसà¥\8d से पन्ना के साइज बदलल गइल",
+       "recentchanges-label-plusminus": "à¤\8fतना à¤¬à¤¾à¤\87à¤\9fà¥\8dस से पन्ना के साइज बदलल गइल",
        "recentchanges-legend-heading": "<strong>संकेत:</strong>",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (इहो देखीं [[Special:NewPages|नया पन्नवन के लिस्ट]])",
-       "rclistfrom": "$2, $3 से शुरु नया बदलाव देखाईं",
+       "recentchanges-submit": "देखावल जाय",
+       "rcnotefrom": "<strong>$3, $4</strong> से (<strong>$1</strong> तक ले के) {{PLURAL:$5|बदलाव|बदलाव सभ}} नीचे दिहल गइल बा।",
+       "rclistfrom": "$2, $3 से शुरु होखे वाला नया बदलाव देखावल जाय",
        "rcshowhideminor": "$1 छोट संपादन",
-       "rcshowhideminor-show": "दà¥\87à¤\96ाà¤\88à¤\82",
-       "rcshowhideminor-hide": "à¤\9bिपाà¤\88à¤\82",
+       "rcshowhideminor-show": "दà¥\87à¤\96ावल à¤\9cाय",
+       "rcshowhideminor-hide": "à¤\9bिपावल à¤\9cाय",
        "rcshowhidebots": "बॉट $1",
-       "rcshowhidebots-show": "दà¥\87à¤\96ाà¤\88à¤\82",
-       "rcshowhidebots-hide": "à¤\9bिपाà¤\88à¤\82",
+       "rcshowhidebots-show": "दà¥\87à¤\96ावल à¤\9cाय",
+       "rcshowhidebots-hide": "à¤\9bिपावल à¤\9cाय",
        "rcshowhideliu": "रजिस्टर्ड सदस्य $1",
-       "rcshowhideliu-show": "दà¥\87à¤\96ाà¤\88à¤\82",
-       "rcshowhideliu-hide": "à¤\9bिपाà¤\88à¤\82",
+       "rcshowhideliu-show": "दà¥\87à¤\96ावल à¤\9cाय",
+       "rcshowhideliu-hide": "à¤\9bिपावल à¤\9cाय",
        "rcshowhideanons": "बेनाम सदस्य $1",
-       "rcshowhideanons-show": "दà¥\87à¤\96ाà¤\88à¤\82",
-       "rcshowhideanons-hide": "à¤\9bिपाà¤\88à¤\82",
+       "rcshowhideanons-show": "दà¥\87à¤\96ावल à¤\9cाय",
+       "rcshowhideanons-hide": "à¤\9bिपावल à¤\9cाय",
        "rcshowhidepatr": "जाँचल बदलाव $1",
-       "rcshowhidepatr-show": "दà¥\87à¤\96ाà¤\88à¤\82",
-       "rcshowhidepatr-hide": "à¤\9bिपाà¤\88à¤\82",
+       "rcshowhidepatr-show": "दà¥\87à¤\96ावल à¤\9cाय",
+       "rcshowhidepatr-hide": "à¤\9bिपावल à¤\9cाय",
        "rcshowhidemine": "हमार संपादन $1",
-       "rcshowhidemine-show": "देखाईं",
-       "rcshowhidemine-hide": "छिपाईं",
-       "rclinks": "पछिला $2 दिन में भइल $1 बदलाव देखाईं<br />$3",
-       "diff": "अन्तर",
-       "hist": "इति",
-       "hide": "छिपाईं",
-       "show": "देखाईं",
+       "rcshowhidemine-show": "देखावल जाय",
+       "rcshowhidemine-hide": "छिपावल जाय",
+       "rcshowhidecategorization": "$1 पन्ना श्रेणीकरण",
+       "rcshowhidecategorization-show": "देखावल जाय",
+       "rcshowhidecategorization-hide": "छिपावल जाय",
+       "rclinks": "पछिला $2 दिन में भइल $1 बदलाव देखावल जाय<br />$3",
+       "diff": "अंतर",
+       "hist": "इतिहास",
+       "hide": "छिपावल जाय",
+       "show": "देखावल जाय",
        "minoreditletter": "छो",
        "newpageletter": "न",
        "boteditletter": "बॉ",
-       "number_of_watching_users_pageview": "[$1 देखल जा रहल बा {{PLURAL:$1|प्रयोगकर्ता|प्रयोगकर्ता}}]",
-       "rc_categories": "श्रेणिन के सीमा (\"|\" से अलगा करीं)",
-       "rc_categories_any": "कौनों",
-       "rc-change-size-new": "$1 {{PLURAL:$1|बाइट|बाइट सब}} बदलाव के बाद",
+       "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|प्रयोगकर्ता|प्रयोगकर्ता लोग}} के धियानसूची में बा]",
+       "rc_categories": "श्रेणिन के सीमा (\"|\" से अलगा करीं):",
+       "rc_categories_any": "बीछल में से कौनों एक ठो",
+       "rc-change-size-new": "बदलाव के बाद $1 {{PLURAL:$1|बाइट|बाइट्स}}",
+       "newsectionsummary": "/* $1 */ नया खंड",
+       "rc-enhanced-expand": "डिटेल देखावल जाय",
+       "rc-enhanced-hide": "डिटेल छिपावल जाय",
+       "rc-old-title": "मूल $1 नाँव से बनावल गइल",
        "recentchangeslinked": "संबंधित बदलाव",
-       "recentchangeslinked-feed": "समà¥\8dबनà¥\8dधित बदलाव",
+       "recentchangeslinked-feed": "सà¤\82बà¤\82धित बदलाव",
        "recentchangeslinked-toolbox": "संबंधित बदलाव",
-       "recentchangeslinked-title": "\"$1\" à¤¸à¥\87 à¤¸à¤\82बधी बदलाव",
+       "recentchangeslinked-title": "\"$1\" à¤¸à¤\82बà¤\82धी बदलाव",
        "recentchangeslinked-summary": "ई एगो पन्ना बिसेस से (या एगो श्रेणी बिसेस की सदस्य से) जुड़ल पन्नवन में हाल में भइल बदलाव के एगो लिस्ट हवे। \n[[Special:Watchlist|आपकी धियानसूची]] के पन्ना सब <strong>मोट अच्छर में</strong> लउकत बाटे।",
        "recentchangeslinked-page": "पन्ना नाँव:",
-       "recentchangeslinked-to": "ए पन्ना से जुड़ल पन्नवन मे भइल बदलाव भले देखाईं",
+       "recentchangeslinked-to": "एकरे बजाय ए पन्ना से जुड़ल पन्नवन मे भइल बदलाव देखावल जाय",
+       "recentchanges-page-added-to-category": "[[:$1]] श्रेणी में जोड़ल गइल",
        "upload": "फाइल अपलोड करीं",
        "uploadlogpage": "लदनी (अपलोड) के लॉग",
        "uploadlogpagetext": "नीचे हाल में अपलोड करल गइल फाइलन के सूची बा।\nदृश्य अवलोकन खातिर [[Special:NewFiles|नया फाइलन के गैलरी]] देखीं।",
        "unwatchedpages": "ध्यान न दिहल गइल पन्ना",
        "listredirects": "पुनर्निर्देशन के सूची",
        "unusedtemplates": "बिना प्रयोग के खाँचा",
-       "randompage": "बà¥\87तरतà¥\80ब पन्ना",
+       "randompage": "à¤\95à¥\8cनà¥\8bà¤\82 à¤\8fà¤\97à¥\8b पन्ना",
        "randomincategory": "श्रेणी में अनियमित पन्ना",
        "randomincategory-nopages": "[[:Category:$1|$1]] श्रेणी में कउनो पन्ना नइखे।",
        "randomincategory-category": "श्रेणी:",
        "wantedpages": "पन्ना चाहत बा",
        "wantedfiles": "जरुरत के फाईलसभ",
        "wantedfiletext-nocat-noforeign": "ई फाइल सभ इस्तेमाल में बाटे बाकी मौजूद नइखे।",
-       "wantedtemplates": "जरुरत के खाँचा",
-       "mostlinked": "सबसे ढेर पन्ना-जोड़ वाला",
-       "mostlinkedcategories": "सबसे अधिक से जुड़ल श्रेणीसभ",
-       "mostlinkedtemplates": "सभसे ढेर ट्रांसक्लूजन वाला पन्ना",
-       "mostcategories": "सबसे अधिक श्रेणी वाला पन्नाकुल",
-       "mostimages": "सभसे ढेर फाइल-जोड़ वाला",
-       "mostinterwikis": "सभसे ढेर इंटरविकि वाला पन्ना",
-       "mostrevisions": "सभसे ढेर रिवीजन वाला पन्ना सभ",
-       "prefixindex": "उपसर्ग अनुसार पन्ना",
-       "shortpages": "छोट पन्नासभ",
+       "wantedtemplates": "टेम्पलेट जिनहन के जरूरत बा",
+       "mostlinked": "पन्ना जहाँ सभसे ढेर कड़ी आ के जुड़त बा",
+       "mostlinkedcategories": "सबसे अधिक से जुड़ल श्रेणी",
+       "mostlinkedtemplates": "सभसे ढेर ट्रांसक्लूड पन्ना",
+       "mostcategories": "पन्ना जिनहन पर सभसे ढेर श्रेणी बा",
+       "mostimages": "पन्ना जिनहन पर सभसे ढेर फाइल बा",
+       "mostinterwikis": "पन्ना जिनहन में सभसे ढेर इंटरविकि कड़ी बा",
+       "mostrevisions": "सभसे ढेर बदलाव इतिहास वाला पन्ना",
+       "prefixindex": "सगरी पन्ना जिनहन में उपसर्ग बा",
+       "prefixindex-namespace": "सगरी पन्ना जिनहन में उपसर्ग ($1 नाँवस्थान) बा",
+       "prefixindex-submit": "देखीं",
+       "shortpages": "छोट पन्ना",
        "longpages": "लमहर पन्ना",
-       "deadendpages": "मरल-à¤\96पल पन्ना",
+       "deadendpages": "à¤\85à¤\82तिम à¤\9bà¥\8bर à¤ªà¤° à¤\9bà¥\82à¤\9fल पन्ना",
        "protectedpages": "सुरक्षित पन्ना",
        "protectedpages-noredirect": "अनुप्रेषण छिपाईं",
        "protectedpagesempty": "कौनों पन्ना के सुरक्षा ए पैमान पर नइखे",
        "protectedpages-timestamp": "टाइममोहर",
        "protectedpages-page": "पन्ना",
        "protectedpages-expiry": "एक्सपायर हो जाई",
-       "protectedpages-performer": "सदसà¥\8dय à¤¸à¥\81रà¤\95à¥\8dषा",
+       "protectedpages-performer": "सà¥\81रà¤\95à¥\8dषा à¤²à¤\97ावà¥\87 à¤µà¤¾à¤²à¤¾ à¤¸à¤¦à¤¸à¥\8dय",
        "protectedpages-params": "सुरक्षा पैमाना",
        "protectedpages-reason": "कारण",
+       "protectedpages-submit": "पन्ना देखीं",
        "protectedpages-unknown-timestamp": "नामालूम",
        "protectedpages-unknown-performer": "नामालूम सदस्य",
        "protectedtitles": "सुरक्षित शीर्षक",
        "protectedtitlesempty": "कौनों टाइटिल के सुरक्षा एह पैमान पर नइखे।",
+       "protectedtitles-submit": "शीर्षक देखीं",
        "listusers": "सदस्यसूची",
        "listusers-editsonly": "उहे सदस्य देखाईं जे संपादन कइले होखे",
        "listusers-creationsort": "बनवले की तारीख की हिसाब से सरियाईं",
        "usereditcount": "$1 {{PLURAL:$1|संपादन|संपादन सभ}}",
        "newpages": "नया पन्ना",
        "newpages-username": "सदस्यनाँव:",
-       "ancientpages": "सभन à¤¸à¥\87 à¤ªà¥\81रान à¤ªà¤¨à¥\8dनासभ",
-       "move": "सà¥\8dथानà¥\8dतरण",
-       "movethispage": "à¤\88 à¤ªà¤¨à¥\8dना à¤\95à¥\87 à¤¸à¥\8dथांतरण करीं",
+       "ancientpages": "पà¥\81रान à¤ªà¤¨à¥\8dना",
+       "move": "सà¥\8dथानाà¤\82तरण",
+       "movethispage": "à¤\8fह à¤ªà¤¨à¥\8dना à¤\95à¥\87 à¤¸à¥\8dथानांतरण करीं",
        "suppress": "ओवरसाइटर",
        "apihelp": "एपीआइ (API) मदद",
        "apihelp-no-such-module": "मॉड्युल $1 ना मिलल।",
        "trackingcategories-msg": "निगरानी श्रेणी",
        "trackingcategories-name": "संदेस नाँव",
        "emailuser": "ई प्रयोगकर्ता के ईमेल करीं",
-       "watchlist": "धà¥\8dयानसूची",
+       "watchlist": "धियानसूची",
        "mywatchlist": "धियानसूची",
        "watch": "धियानसूची में डालीं",
        "watchthispage": "ई पन्ना ध्यानसूची में डालीं",
-       "unwatch": "धà¥\8dयानसूची से हटाईं",
+       "unwatch": "धियानसूची से हटाईं",
        "watching": "ध्यानसूची में जाते हुए",
        "unwatching": "ध्यानसूची से हटते हुए",
        "created": "बनावल गईल",
index 851d0c3..31ecf59 100644 (file)
        "booksources-search": "অনুসন্ধান",
        "booksources-text": "নতুন ও পুরাতন ব্যবহৃত বই বিক্রি করে, এমন কতগুলি সাইটের সংযোগের তালিকা নিচে দেওয়া হল, যে সাইটগুলিতে আপনার অনুসন্ধানকৃত বইগুলির উপর আরও তথ্য থাকতে পারে:",
        "booksources-invalid-isbn": "উল্লেখিত ISBN সঠিক নয়; অনুগ্রহ করে মূল উৎস থেকে আবার পরীক্ষা করুন।",
+       "magiclink-tracking-rfc": "আরএফসি জাদু সংযোগ ব্যবহার করা পাতা",
+       "magiclink-tracking-pmid": "পিএমআইডি জাদু সংযোগ ব্যবহার করা পাতা",
+       "magiclink-tracking-isbn": "আইএসবিএন জাদু সংযোগ ব্যবহার করা পাতা",
        "specialloguserlabel": "সম্পাদক:",
        "speciallogtitlelabel": "লক্ষ্য (শিরোনাম বা {{ns:user}}:ব্যবহারকারীর জন্য ব্যবহারকারী নাম):",
        "log": "লগগুলি",
        "modifiedarticleprotection": "\"[[$1]]\"-এর জন্য সুরক্ষার স্তর পরিবর্তন করা হয়েছে",
        "unprotectedarticle": "\"[[$1]]\"-এর সুরক্ষা সরিয়ে নেওয়া হয়েছে",
        "movedarticleprotection": "সুরক্ষা সেটিংস \"[[$2]]\" থেকে \"[[$1]]\"-এ স্থানান্তরিত হয়েছে",
+       "protectedarticle-comment": "\"[[$1]]\" {{GENDER:$2|সুরক্ষিত করা হয়েছে}}",
+       "modifiedarticleprotection-comment": "\"[[$1]]\"-এর {{GENDER:$2|সুরক্ষার স্তর পরিবর্তন করা হয়েছে}}",
+       "unprotectedarticle-comment": "\"[[$1]]\" থেকে {{GENDER:$2|সুরক্ষা সরানো হয়েছে}}",
        "protect-title": "\"$1\" সুরক্ষিত করা হচ্ছে",
        "protect-title-notallowed": "\"$1\" এর সুরক্ষা মাত্রা দেখুন",
        "prot_1movedto2": "[[$1]]-কে [[$2]]-এ সরিয়ে নেওয়া হয়েছে",
index ef28d54..114b000 100644 (file)
        "pageinfo-category-subcats": "Broj potkategorija",
        "pageinfo-category-files": "Broj datoteka",
        "markaspatrolleddiff": "Označi kao patrolirano",
-       "markaspatrolledtext": "Označi ovaj članak kao patroliran",
+       "markaspatrolledtext": "Označi stranicu kao patroliranu",
        "markedaspatrolled": "Označeno kao patrolirano",
        "markedaspatrolledtext": "Izabrana revizija [[:$1]] je bila označena kao patrolirana.",
        "rcpatroldisabled": "Patroliranje nedavnih izmjena onemogućeno",
        "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-restore": "$1 {{GENDER:$2|vratio|vratila}} je stranicu $3",
-       "logentry-delete-event": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost {{PLURAL:$5|događaja|$5 događaja}} u evidenciji na $3: $4",
+       "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",
        "logentry-delete-revision-legacy": "$1 je {{GENDER:$2|promijenio|promijenila}} vidljivost izmjena na stranici $3",
index e18a9bf..d3d8dbd 100644 (file)
        "botpasswords-label-delete": "Smazat",
        "botpasswords-label-resetpassword": "Resetovat heslo",
        "botpasswords-label-grants": "Použitelná oprávnění:",
-       "botpasswords-help-grants": "Každé přidělení dává přístup k uvedeným uživatelským oprávněním, která uživatelský účet již má. Viz [[Special:ListGrants|table of grants]] pro více informací.",
+       "botpasswords-help-grants": "Přidělení dávají přístup k oprávněním, která váš uživatelský účet již má. Zaškrtnutím přidělení zde nezíská váš účet jakákoli práva, která by jinak neměl. Viz [[Special:ListGrants|table of grants]] pro více informací.",
        "botpasswords-label-grants-column": "Přiděleno",
        "botpasswords-bad-appid": "Název bota „$1“ není platný.",
        "botpasswords-insert-failed": "Nepodařilo se přidat název bota „$1“. Nebyl už přidán?",
        "rcshowhideminor": "$1 malé editace",
        "rcshowhideminor-show": "Zobrazit",
        "rcshowhideminor-hide": "Skrýt",
-       "rcshowhidebots": "$1 boty",
+       "rcshowhidebots": "$1 roboty",
        "rcshowhidebots-show": "Zobrazit",
        "rcshowhidebots-hide": "Skrýt",
        "rcshowhideliu": "$1 registrované uživatele",
        "booksources-search": "Hledat",
        "booksources-text": "Níže je seznam odkazů na servery prodávající knihy, nebo které mohou mít další informace o knihách, které hledáte.",
        "booksources-invalid-isbn": "Zadané ISBN se zdá být neplatné. Zkontrolujte jej s originálním zdrojem.",
+       "magiclink-tracking-rfc": "Stránky používající kouzelné odkazy RFC",
+       "magiclink-tracking-rfc-desc": "Tato stránka používá kouzelné odkazy RFC. Více informací k migraci najdete na [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
+       "magiclink-tracking-pmid": "Stránky používající kouzelné odkazy PMID",
+       "magiclink-tracking-pmid-desc": "Tato stránka používá kouzelné odkazy PMID. Více informací k migraci najdete na [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
+       "magiclink-tracking-isbn": "Stránky používající kouzelné odkazy ISBN",
+       "magiclink-tracking-isbn-desc": "Tato stránka používá kouzelné odkazy ISBN. Více informací k migraci najdete na [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
        "specialloguserlabel": "Původce:",
        "speciallogtitlelabel": "Cíl (název nebo {{ns:user}}:Jméno pro uživatele):",
        "log": "Protokolovací záznamy",
        "watchlist-submit": "Zobrazit",
        "wlshowtime": "Zobrazené období:",
        "wlshowhideminor": "malé editace",
-       "wlshowhidebots": "boty",
+       "wlshowhidebots": "roboty",
        "wlshowhideliu": "registrované uživatele",
        "wlshowhideanons": "anonymní uživatele",
        "wlshowhidepatr": "prověřené editace",
        "modifiedarticleprotection": "mění zámek stránky „[[$1]]“",
        "unprotectedarticle": "odemyká „[[$1]]“",
        "movedarticleprotection": "nastavení zámků přesunuto z „[[$2]]“ na „[[$1]]“",
+       "protectedarticle-comment": "{{GENDER:$2|Zamkl|Zamkla}} stránku „[[$1]]“",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Změnil|Změnila}} nastavení zámků stránky „[[$1]]“",
+       "unprotectedarticle-comment": "{{GENDER:$2|Odemkl|Odemkla}} stránku „[[$1]]“",
        "protect-title": "Zamyká se „$1“",
        "protect-title-notallowed": "Zobrazení zámků na „$1“",
        "prot_1movedto2": "Stránka [[$1]] přemístěna na stránku [[$2]]",
        "patrol-log-header": "Toto je kniha prověřených verzí.",
        "log-show-hide-patrol": "$1 knihu záznamů patroly",
        "log-show-hide-tag": "$1 knihu značek",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Označit revizi $3 stránky $2 jako prověřenou?",
        "deletedrevision": "Smazána stará revize $1",
        "filedeleteerror-short": "Chyba při mazání souboru: $1",
        "filedeleteerror-long": "Vyskytla se chyba při mazání souboru:\n\n$1",
        "newimages-summary": "Na této speciální stránce se zobrazují poslední načtené soubory.",
        "newimages-legend": "Filtr",
        "newimages-label": "Název souboru (nebo jeho část):",
-       "newimages-showbots": "Zobrazit soubory načtené boty",
+       "newimages-showbots": "Zobrazit soubory načtené roboty",
        "newimages-hidepatrolled": "Skrýt prověřená načtení souborů",
        "noimages": "Není co zobrazit.",
        "gallery-slideshow-toggle": "Přepnout náhledy",
        "tags-active-yes": "Ano",
        "tags-active-no": "Ne",
        "tags-source-extension": "Definována softwarem",
-       "tags-source-manual": "Přidávána ručně uživateli a boty",
+       "tags-source-manual": "Přidávána ručně uživateli a roboty",
        "tags-source-none": "Už nepoužívána",
        "tags-edit": "editovat",
        "tags-delete": "smazat",
        "log-description-managetags": "Tato stránka obsahuje seznam správcovských úkonů týkajících se [[Special:Tags|značek]]. Protokol obsahuje pouze akce, které provedl ručně správce; značky může vytvářet či mazat přímo software wiki, aniž by v tomto protokolu vznikl záznam.",
        "logentry-managetags-create": "$1 {{GENDER:$2|vytvořil|vytvořila}} značku „$4“",
        "logentry-managetags-delete": "$1 {{GENDER:$2|smazal|smazala}} značku „$4“ (odstraněna z $5 {{PLURAL:$5|revize nebo protokolovacího záznamu|revizí nebo protokolovacích záznamů}})",
-       "logentry-managetags-activate": "$1 {{GENDER:$2|aktivoval|aktivovala}} značku „$4“ pro uživatele a boty",
-       "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivoval|deaktivovala}} značku „$4“ pro uživatele a boty",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|aktivoval|aktivovala}} značku „$4“ pro uživatele a roboty",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|deaktivoval|deaktivovala}} značku „$4“ pro uživatele a roboty",
        "log-name-tag": "Kniha značek",
        "log-description-tag": "Tato stránka zobrazuje přidání či odebrání [[Special:Tags|značek]] na stránkách či protokolovacích záznamech uživateli. Tato kniha nezaznamenává označování probíhající jako součást editace, smazání či podobné akce.",
        "logentry-tag-update-add-revision": "$1 {{GENDER:$2|přidal|přidala}} {{PLURAL:$7|značku|značky}} $6 na revizi $4 stránky $3",
        "authmanager-authn-autocreate-failed": "Automatické založení lokálního účtu se nezdařilo: $1",
        "authmanager-change-not-supported": "Uvedené přihlašovací údaje nelze změnit, protože by je nikdo nepoužíval.",
        "authmanager-create-disabled": "Zakládání účtů je zakázáno.",
-       "authmanager-create-from-login": "Pro založení účtu vyplňte níže uvedená pole.",
+       "authmanager-create-from-login": "Pro založení účtu vyplňte uvedená pole.",
        "authmanager-create-not-in-progress": "Zakládání účtu neprobíhá nebo se ztratila data sezení. Začněte prosím znovu od začátku.",
        "authmanager-create-no-primary": "Uvedené přihlašovací údaje nelze použít pro založení účtu.",
        "authmanager-link-no-primary": "Uvedené přihlašovací údaje nelze použít pro propojení účtů.",
index 470602e..792991a 100644 (file)
        "botpasswords-label-delete": "Löschen",
        "botpasswords-label-resetpassword": "Passwort zurücksetzen",
        "botpasswords-label-grants": "Anwendbare Berechtigungen:",
-       "botpasswords-help-grants": "Jede Berechtigung gibt Zugriff auf gelistete Benutzerrechte, die ein Benutzerkonto bereits hat. Siehe die [[Special:ListGrants|Tabelle]] für weitere Informationen.",
+       "botpasswords-help-grants": "Berechtigungen erlauben den Zugriff auf Rechte, die bereits dein Benutzerkonto besitzt. Das Aktivieren einer Berechtigung hier bietet keinen Zugriff auf Rechte, die dein Benutzerkonto ansonsten nicht hat. Siehe die [[Special:ListGrants|Berechtigungstabelle]] für weitere Informationen.",
        "botpasswords-label-grants-column": "Gewährt",
        "botpasswords-bad-appid": "Der Botname „$1“ ist nicht gültig.",
        "botpasswords-insert-failed": "Der Botname „$1“ konnte nicht hinzugefügt werden. Wurde er bereits hinzugefügt?",
        "booksources-search": "Suchen",
        "booksources-text": "Dies ist eine Liste mit Links zu Internetseiten, die neue und gebrauchte Bücher verkaufen. Dort kann es auch weitere Informationen über die Bücher geben. {{SITENAME}} ist mit keinem dieser Anbieter geschäftlich verbunden.",
        "booksources-invalid-isbn": "Vermutlich ist die ISBN ungültig.\nBitte prüfe, ob sie korrekt von der Quelle übertragen wurde.",
+       "magiclink-tracking-rfc": "Seiten, die magische RFC-Links verwenden",
+       "magiclink-tracking-rfc-desc": "Diese Seite verwendet magische RFC-Links. Siehe [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] für die Migration.",
+       "magiclink-tracking-pmid": "Seiten, die magische PMID-Links verwenden",
+       "magiclink-tracking-pmid-desc": "Diese Seite verwendet magische PMID-Links. Siehe [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] für die Migration.",
+       "magiclink-tracking-isbn": "Seiten, die magische ISBN-Links verwenden",
+       "magiclink-tracking-isbn-desc": "Diese Seite verwendet magische ISBN-Links. Siehe [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] für die Migration.",
        "specialloguserlabel": "Ausführender Benutzer:",
        "speciallogtitlelabel": "Ziel (Titel oder {{ns:user}}:Benutzername für einen Benutzer):",
        "log": "Logbücher",
        "modifiedarticleprotection": "änderte den Schutz von „[[$1]]“",
        "unprotectedarticle": "hob den Schutz von „[[$1]]“ auf",
        "movedarticleprotection": "übertrug den Seitenschutz von „[[$2]]“ auf „[[$1]]“",
+       "protectedarticle-comment": "{{GENDER:$2|Schützte}} „[[$1]]“",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Änderte}} den Schutzstatus für „[[$1]]“",
+       "unprotectedarticle-comment": "{{GENDER:$2|Entfernte}} den Schutz von „[[$1]]“",
        "protect-title": "Schutz ändern von „$1“",
        "protect-title-notallowed": "Schutz ansehen von „$1“",
        "prot_1movedto2": "hat „[[$1]]“ nach „[[$2]]“ verschoben",
        "patrol-log-header": "Dies ist das Kontroll-Logbuch.",
        "log-show-hide-patrol": "Kontroll-Logbuch $1",
        "log-show-hide-tag": "Markierungs-Logbuch $1",
+       "confirm-markpatrolled-button": "Okay",
+       "confirm-markpatrolled-top": "Version $3 von $2 als kontrolliert markieren?",
        "deletedrevision": "alte Version $1 gelöscht",
        "filedeleteerror-short": "Fehler bei Datei-Löschung: $1",
        "filedeleteerror-long": "Bei der Datei-Löschung wurden Fehler festgestellt:\n\n$1",
        "htmlform-float-invalid": "Der angegebene Wert ist keine Zahl.",
        "htmlform-int-toolow": "Der angegebene Wert ist unter dem Minimum von $1",
        "htmlform-int-toohigh": "Der angegebene Wert ist über dem Maximum von $1",
-       "htmlform-required": "Dieser Wert wird benötigt",
+       "htmlform-required": "Diese Angabe wird benötigt.",
        "htmlform-submit": "Speichern",
        "htmlform-reset": "Änderungen rückgängig machen",
        "htmlform-selectorother-other": "Andere",
        "authmanager-authn-autocreate-failed": "Die automatische Erstellung des lokalen Benutzerkontos ist fehlgeschlagen: $1",
        "authmanager-change-not-supported": "Die angegebenen Anmeldeinformationen konnten nicht geändert werden, da sie von nichts genutzt werden würden.",
        "authmanager-create-disabled": "Die Benutzerkontenerstellung ist deaktiviert.",
-       "authmanager-create-from-login": "Um dein Benutzerkonto zu erstellen, fülle bitte die unten stehenden Felder aus.",
+       "authmanager-create-from-login": "Um dein Benutzerkonto zu erstellen, fülle bitte die Felder aus.",
        "authmanager-create-not-in-progress": "Die Benutzerkontenerstellung ist nicht im Gang oder es sind Sitzungsdaten verloren gegangen. Bitte beginne von vorn.",
        "authmanager-create-no-primary": "Die angegebenen Anmeldeinformationen konnten nicht für die Benutzerkontenerstellung verwendet werden.",
        "authmanager-link-no-primary": "Die angegebenen Anmeldeinformationen konnten nicht für die Benutzerkontenverknüpfung verwendet werden.",
index 82507cb..d5a49eb 100644 (file)
        "usermessage-editor": "Xeberdarê sistemi",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchlist": "Listey pawıteyan",
-       "mywatchlist": "Listey pawıteyan",
+       "mywatchlist": "Lista mına cıewniyayışi",
        "watchlistfor2": "Qandê $1 ($2)",
        "nowatchlist": "listeya temaşa kerdıişê şıma de yew madde zi çina.",
        "watchlistanontext": "qey vurnayişê maddeya listeya temaşakerdiş ronıştış akerê",
index 8ac4089..a033edd 100644 (file)
        "botpasswords-label-delete": "Delete",
        "botpasswords-label-resetpassword": "Reset the password",
        "botpasswords-label-grants": "Applicable grants:",
-       "botpasswords-help-grants": "Each grant gives access to listed user rights that a user account already has. See the [[Special:ListGrants|table of grants]] for more information.",
+       "botpasswords-help-grants": "Grants allow access to rights already held by your user account. Enabling a grant here does not provide access to any rights that your user account would not otherwise have. See the [[Special:ListGrants|table of grants]] for more information.",
        "botpasswords-label-grants-column": "Granted",
        "botpasswords-bad-appid": "The bot name \"$1\" is not valid.",
        "botpasswords-insert-failed": "Failed to add bot name \"$1\". Was it already added?",
        "patrol-log-header": "This is a log of patrolled revisions.",
        "log-show-hide-patrol": "$1 patrol log",
        "log-show-hide-tag": "$1 tag log",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Mark revision $3 of $2 as patrolled?",
        "deletedrevision": "Deleted old revision $1",
        "filedeleteerror-short": "Error deleting file: $1",
        "filedeleteerror-long": "Errors were encountered while deleting the file:\n\n$1",
        "tags-deactivate": "deactivate",
        "tags-hitcount": "$1 {{PLURAL:$1|change|changes}}",
        "tags-manage-no-permission": "You do not have permission to manage change tags.",
-       "tags-manage-blocked": "You cannot manage change tags while blocked.",
+       "tags-manage-blocked": "You cannot manage change tags while you are blocked.",
        "tags-create-heading": "Create a new tag",
        "tags-create-explanation": "By default, newly created tags will be made available for use by users and bots.",
        "tags-create-tag-name": "Tag name:",
        "tags-deactivate-not-allowed": "It is not possible to deactivate the tag \"$1\".",
        "tags-deactivate-submit": "Deactivate",
        "tags-apply-no-permission": "You do not have permission to apply change tags along with your changes.",
-       "tags-apply-blocked": "You cannot apply change tags along with your changes while blocked.",
+       "tags-apply-blocked": "You cannot apply change tags along with your changes while you are blocked.",
        "tags-apply-not-allowed-one": "The tag \"$1\" is not allowed to be manually applied.",
        "tags-apply-not-allowed-multi": "The following {{PLURAL:$2|tag is|tags are}} not allowed to be manually applied: $1",
        "tags-update-no-permission": "You do not have permission to add or remove change tags from individual revisions or log entries.",
-       "tags-update-blocked": "You cannot add or remove change tags while blocked.",
+       "tags-update-blocked": "You cannot add or remove change tags while you are blocked.",
        "tags-update-add-not-allowed-one": "The tag \"$1\" is not allowed to be manually added.",
        "tags-update-add-not-allowed-multi": "The following {{PLURAL:$2|tag is|tags are}} not allowed to be manually added: $1",
        "tags-update-remove-not-allowed-one": "The tag \"$1\" is not allowed to be removed.",
        "authmanager-authn-autocreate-failed": "Auto-creation of a local account failed: $1",
        "authmanager-change-not-supported": "The supplied credentials cannot be changed, as nothing would use them.",
        "authmanager-create-disabled": "Account creation is disabled.",
-       "authmanager-create-from-login": "To create your account, please fill in the fields below.",
+       "authmanager-create-from-login": "To create your account, please fill in the fields.",
        "authmanager-create-not-in-progress": "Account creation is not in progress or session data has been lost. Please start again from the beginning.",
        "authmanager-create-no-primary": "The supplied credentials could not be used for account creation.",
        "authmanager-link-no-primary": "The supplied credentials could not be used for account linking.",
index 69b004a..cda6edc 100644 (file)
                        "AlvaroMolina",
                        "Tokvo",
                        "Irus",
-                       "Sophivorus"
+                       "Sophivorus",
+                       "Pompilos",
+                       "Igv"
                ]
        },
        "tog-underline": "Subrayar los enlaces:",
        "booksources-search": "Buscar",
        "booksources-text": "Abajo hay una lista de enlaces a otros sitios que venden libros nuevos y usados, puede que contengan más información sobre los libros que estás buscando.",
        "booksources-invalid-isbn": "El número de ISBN no parece ser válido; comprueba los errores copiándolo de la fuente original.",
+       "magiclink-tracking-rfc": "Páginas que usan enlaces mágicos RFC",
+       "magiclink-tracking-rfc-desc": "Esta página usa enlaces mágicos RFC. Véase [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sobre cómo migrar.",
+       "magiclink-tracking-pmid": "Páginas que usan enlaces mágicos PMID",
+       "magiclink-tracking-pmid-desc": "Esta página usa enlaces mágicos PMID. Véase [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sobre cómo migrar.",
+       "magiclink-tracking-isbn": "Páginas que usan enlaces mágicos de ISBN",
+       "magiclink-tracking-isbn-desc": "Esta página usa enlaces mágicos de ISBN. Véase [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sobre cómo migrar.",
        "specialloguserlabel": "Usuario:",
        "speciallogtitlelabel": "Objetivo (título o {{ns:user}}:nombre de usuario):",
        "log": "Registros",
        "activeusers-intro": "Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.",
        "activeusers-count": "$1 {{PLURAL:$1|acción|acciones}} en {{PLURAL:$3|el último día|los últimos $3 días}}",
        "activeusers-from": "Mostrando a los usuarios empezando por:",
+       "activeusers-groups": "Mostrar los usuarios que pertenecen a los grupos:",
        "activeusers-noresult": "No se encontraron usuarios.",
        "activeusers-submit": "Mostrar usuarios activos",
        "listgrouprights": "Permisos de los grupos de usuarios",
        "modifiedarticleprotection": "cambió el nivel de protección de «[[$1]]»",
        "unprotectedarticle": "desprotegió «[[$1]]»",
        "movedarticleprotection": "cambiadas protecciones de «[[$2]]» a «[[$1]]»",
+       "protectedarticle-comment": "{{GENDER:$2|Protegido}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Cambiado el nivel de protección}}\" de [[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Quitar la protección}} de \"[[$1]]\"",
        "protect-title": "Cambiando el nivel de protección de «$1»",
        "protect-title-notallowed": "Ver el nivel de protección de «$1»",
        "prot_1movedto2": "[[$1]] se trasladó a [[$2]]",
        "undeletehistorynoadmin": "El artículo ha sido borrado. La razón de su eliminación se indica abajo en el resumen, así como los detalles de las ediciones realizadas antes del borrado. El texto completo del artículo está disponible sólo para usuarios con permisos de administrador.",
        "undelete-revision": "Edición borrada de $1 (fechada el $4, a las $5) por $3:",
        "undeleterevision-missing": "Revisión no válida o perdida. Puede deberse a un enlace incorrecto,\no a que la revisión haya sido restaurada o eliminada del archivo.",
+       "undeleterevision-duplicate-revid": "{{PLURAL:$1|Una revisión|$1 revisiones}} no se han podido restaurar, porque {{PLURAL:$1|su|su}} <code>rev_id</code> ya estaba en uso.",
        "undelete-nodiff": "No existe una revisión previa.",
        "undeletebtn": "Restaurar",
        "undeletelink": "ver/restaurar",
        "patrol-log-header": "Este es un registro de revisiones verificadas.",
        "log-show-hide-patrol": "$1 registro de verificación",
        "log-show-hide-tag": "$1 registro de etiquetas",
+       "confirm-markpatrolled-button": "Aceptar",
+       "confirm-markpatrolled-top": "marcar la revisión $3 de $2 como revisada?",
        "deletedrevision": "Borrada revisión antigua $1",
        "filedeleteerror-short": "Error al borrar el archivo: $1",
        "filedeleteerror-long": "Se han producido errores mientras se borraba el archivo:\n\n$1",
        "authmanager-authn-autocreate-failed": "Falló la creación automática de una cuenta local: $1",
        "authmanager-change-not-supported": "Las credenciales proporcionadas no se pueden cambiar, ya que no hay nada que fuera a hacer uso de ellas.",
        "authmanager-create-disabled": "Está desactivada la creación de cuentas.",
-       "authmanager-create-from-login": "Para crear tu cuenta, completa los campos a continuación.",
+       "authmanager-create-from-login": "Para crear su cuenta, por favor, complete los campos.",
        "authmanager-create-not-in-progress": "El proceso de creación de la cuenta no está en progreso o se perdieron los datos de la sesión. Empieza de nuevo desde el principio.",
        "authmanager-create-no-primary": "Las credenciales suministradas no pueden usarse para la creación de la cuenta.",
        "authmanager-link-no-primary": "Las credenciales proporcionadas no se han podido utilizar para enlazar cuentas.",
index d256a21..ec27ab5 100644 (file)
        "mw-widgets-titleinput-description-new-page": "lehekülge pole veel",
        "mw-widgets-titleinput-description-redirect": "ümbersuunamine leheküljele \"$1\"",
        "randomrootpage": "Juhuslik juurlehekülg",
+       "log-action-filter-block": "Blokeeringu tüüp:",
+       "log-action-filter-all": "Kõik",
+       "log-action-filter-block-block": "Blokeerimine",
+       "log-action-filter-block-reblock": "Blokeeringu muutmine",
+       "log-action-filter-block-unblock": "Blokeeringu tühistamine",
        "authmanager-provider-password": "Paroolipõhine autentimine",
        "authmanager-provider-password-domain": "Parooli- ja domeenipõhine autentimine",
        "authmanager-provider-temporarypassword": "Ajutine parool",
index 302bc58..38189f2 100644 (file)
        "nstab-main": "Artículu",
        "nstab-user": "Páhina d'usuáriu",
        "nstab-media": "Páhina \"Meya\"",
-       "nstab-special": "Artículu especial",
+       "nstab-special": "Páhina especial",
        "nstab-project": "Página el proyeutu",
        "nstab-image": "Archivu",
        "nstab-mediawiki": "Mensahi",
        "undo-norev": "La eición nu pué sel eshecha ebiu a que nu dessisti, u hue esborrá",
        "undo-summary": "Eshazel revisión $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Caraba]])",
        "cantcreateaccount-text": "La criación de cuentas pol parti e la IP ('''$1''') á siu pará pol el usuáriu [[User:$3|$3]].\n\nLa razón dá pol $3 es ''$2''",
-       "viewpagelogs": "Vel los rustrihus d´esta páhina",
+       "viewpagelogs": "Vel los rustrihus desta páhina",
        "nohistory": "Nu ai dengún estorial d´eicionis pa esta páhina.",
        "currentrev": "Revisión atual",
        "currentrev-asof": "Úrtima revisión: $1",
        "history-feed-title": "Estorial de revisionis",
        "history-feed-description": "Estorial de revisionis pa esta páhina nel güiqui",
        "history-feed-item-nocomment": "$1 en $2",
-       "history-feed-empty": "Esa páhina nu desisti.\nEs posibri qu´aiga siu esborrá e la güiqui, u que s´aiga chambau el su nombri.\nPreba [[Special:Search|landeandu]] entri las nuevas páhinas de la güiqui.",
+       "history-feed-empty": "Esa páhina nu desisti.\nEs posibri qu’aiga siu esborrá e la güiqui, u que s’aiga chambau el su nombri.\nPreba [[Special:Search|landeandu]] entri las nuevas páhinas de la güiqui.",
        "rev-deleted-comment": "(comentáriu esborrau)",
        "rev-deleted-user": "(nombri d´usuáriu esborrau)",
        "rev-deleted-event": "(entrá esborrá)",
        "enhancedrc-history": "Estorial",
        "recentchanges": "Úrtimus chambus",
        "recentchanges-legend": "Ocionis enos úrtimus chambus",
-       "recentchanges-summary": "Sigui los úrtimus chambus d´esti güiqui nesta páhina.",
+       "recentchanges-summary": "Sigui los úrtimus chambus desti güiqui nesta páhina.",
        "recentchanges-feed-description": "Sigui los úrtimus chambus nel güiqui nesti feed.",
        "rcnotefrom": "Embahu se muestran los chambus hechus dendi el '''$2''' (hata el '''$1''').",
        "rclistfrom": "Muestral los chambus hechus dendi el $3 $2",
        "filehist-comment": "Comentáriu",
        "imagelinks": "Atihus",
        "linkstoimage": "{{PLURAL:$1|El siguienti artículu atiha|Los siguientis $1 artículus atihan}} a esti archivu:",
-       "nolinkstoimage": "Nu ai denguna páhina qu´atihi a esti archivu.",
+       "nolinkstoimage": "Nu ai denguna páhina quatihi a esti archivu.",
        "morelinkstoimage": "Guipal [[Special:WhatLinksHere/$1|mas atijus]] a esti archivu.",
        "sharedupload": "Esti archivu procei de $1 i puei gastalsi dendi otrus proyeutus.",
        "uploadnewversion-linktext": "Empuntal una nueva velsión d´esti archivu",
        "tooltip-t-print": "Velsión pa imprental desta páhina",
        "tooltip-t-permalink": "Atihu remanenti a esta velsión de la páhina",
        "tooltip-ca-nstab-main": "Vel el artículu",
-       "tooltip-ca-nstab-user": "Vel la páhina d´usuáriu",
+       "tooltip-ca-nstab-user": "Vel la páhina dusuáriu",
        "tooltip-ca-nstab-media": "Vel la páhina e \"meya\"",
        "tooltip-ca-nstab-special": "Esta es una páhina especial, razón pola que nu pueis eitala",
        "tooltip-ca-nstab-project": "Vel la páhina el proyeutu",
        "tooltip-ca-nstab-image": "Vel la páhina el archivu",
        "tooltip-ca-nstab-mediawiki": "Vel el mensahi el sistema",
        "tooltip-ca-nstab-template": "Vel la prantilla",
-       "tooltip-ca-nstab-help": "Vel la páhina d´ayua",
+       "tooltip-ca-nstab-help": "Vel la páhina dayua",
        "tooltip-ca-nstab-category": "Vel la categoria",
        "tooltip-minoredit": "Aseñalal cumu eición chiquenina",
        "tooltip-save": "Emburacal los tus chambus",
index 523cd59..76610b4 100644 (file)
@@ -52,7 +52,8 @@
                        "01miki10",
                        "Matma Rex",
                        "BiscuitMan",
-                       "Alluk."
+                       "Alluk.",
+                       "Tumm1"
                ]
        },
        "tog-underline": "Linkkien alleviivaus:",
@@ -60,7 +61,7 @@
        "tog-hidepatrolled": "Piilota tarkastetut muutokset tuoreet muutokset -listasta",
        "tog-newpageshidepatrolled": "Piilota tarkastetut sivut uusien sivujen listalta",
        "tog-hidecategorization": "Piilota sivujen luokittelu",
-       "tog-extendwatchlist": "Laajenna tarkkailulista näyttämään kaikki tehdyt muutokset eikä vain viimeisimmät",
+       "tog-extendwatchlist": "Laajenna tarkkailulista näyttämään kaikki tehdyt muutokset, eikä vain viimeisimmät",
        "tog-usenewrc": "Ryhmittele muutokset sivun mukaan tuoreiden muutosten listalla ja tarkkailulistalla",
        "tog-numberheadings": "Numeroi otsikot automaattisesti",
        "tog-showtoolbar": "Näytä työkalupalkki",
index edf9094..19113d8 100644 (file)
@@ -11,7 +11,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Irus"
                ]
        },
        "tog-underline": "Undirstrika leinki:",
        "yourpasswordagain": "Skriva loyniorð umaftur:",
        "createacct-yourpasswordagain": "Váttað loyniorðið",
        "createacct-yourpasswordagain-ph": "Skrivað loyniorðið enn einaferð",
-       "remembermypassword": "Minst til logg inn hjá mær á hesum kaganum (í mesta lagi í $1 {{PLURAL:$1|dag|dagar}})",
        "userlogin-remembermypassword": "Lat meg vera innritaðan",
        "userlogin-signwithsecure": "Nýt trygt samband",
        "yourdomainname": "Títt domene:",
        "passwordreset-emailtext-user": "Brúkari $1 á {{SITENAME}} hevur biðið um eina nullstillan av tínum loyniorði til {{SITENAME}} \n($4). Fylgjandi brúkara {{PLURAL:$3|konta er|kontur eru}} settar í samband við hesa t-post adressuna:\n\n$2\n\n{{PLURAL:$3|Hetta fyribils loyniorðið|Hesi fyribils loyniorðini}} ganga út um {{PLURAL:$5|ein dag|$5 dagar}}.\nTú eigur at rita inn og velja eitt nýtt loyniorð nú. Um onkur annar hevur gjørt hesa umbøn, ella um tú ert komin í tankar um títt uppruna loyniorð, og tú ikki longur ynskir at broyta tað, so kanst tú síggja burtur frá hesum boðum og halda fram at brúka títt gamla loyniorð.",
        "passwordreset-emailelement": "Brúkaranavn: \n$1\n\nFyribils loyniorð: \n$2",
        "passwordreset-emailsentemail": "Ein teldupostur har tú kanst nullstillað loyniorðið er blivin sendur.",
-       "passwordreset-emailsent-capture": "Ein teldupostur, har ið tú kanst nullstilla loyniorðið, er blivin sendur, sum víst niðanfyri.",
-       "passwordreset-emailerror-capture": "Ein teldupostur við nullstillaðum loyniorði var gjørdur, sum víst niðanfyri, men tað miseydnaðist at senda til {{GENDER:$2|brúkaran}}: $1",
        "changeemail": "Broyt teldupost adressu",
        "changeemail-header": "Broyt t-post adressuna hjá kontuni",
        "changeemail-no-info": "Tú mást vera innritað/ur fyri at fáa beinleiðis atgongd til hesa síðu.",
        "undo-norev": "Rættingin kann ikki takast burtur, tí at hon er ikki til ella var strikað.",
        "undo-summary": "Tak burtur versjón $1 hjá [[Special:Contributions/$2|$2]] ([[User talk:$2|kjak]])",
        "undo-summary-username-hidden": "Angra versjón $1 sum ein fjaldur brúkari hevur gjørt",
-       "cantcreateaccounttitle": "Tað ber ikki til at upprætta konto",
        "cantcreateaccount-text": "Upprættan frá hesi IP adressuni ('''$1''') er blivin sperrað av [[User:$3|$3]]. Orsøkin til sperringina sigst vera ''$2''\n\n$3 sigur orsøkina vera ''$2''",
        "cantcreateaccount-range-text": "IP adressur í intervallinum <strong>$1</strong>, sum fevnir um tína IP adressu (<strong>$4</strong>), eru sperraðar fyri upprættan av nýggjari konto av [[User:$3|$3]].\n\n$3 segði orsøkina vera <em>$2</em>",
        "viewpagelogs": "Sí logg fyri hesa grein",
        "activeusers-intro": "Hetta er ein listi yvir brúkarar, ið høvdu okkurt slag av aktiviteti tann seinasta/teir seinastu $1 {{PLURAL:$1|dagin|dagarnar}}.",
        "activeusers-count": "$1 {{PLURAL:$1|handling|handlingar}} tann seinasta/teir seinastu {{PLURAL:$3|dagin|$3 dagarnar}}",
        "activeusers-from": "Vís brúkarar, ið byrja við:",
-       "activeusers-hidebots": "Fjal bottar",
-       "activeusers-hidesysops": "Fjal umboðsstjórar (administratorar)",
        "activeusers-noresult": "Ongir brúkarar funnir.",
        "listgrouprights": "Brúkara bólka rættindi",
        "listgrouprights-summary": "Henda síða vísir ein lista av brúkarabólkum, sum eru útgreinaðir á hesi wiki og rættindini hjá teimum einstøku bólkunum.\nMøguliga er [[{{MediaWiki:Listgrouprights-helppage}}|meira kunning]] um einstøk rættindi.",
        "contributions": "{{GENDER:$1|Brúkaraíkøst}}",
        "contributions-title": "Brúkaraíkøst fyri $1",
        "mycontris": "Íkøst",
+       "anoncontribs": "Íkøst",
        "contribsub2": "Fyri {{GENDER:$3|$1}} ($2)",
        "nocontribs": "Ongar broytingar vóru funnar, sum samsvaraðu hesar treytirnar.",
        "uctop": "(verandi)",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|versjón|versjónir}}",
        "import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versjón|versjónir}} frá $2",
        "javascripttest": "Royndarkoyring av JavaScript",
-       "tooltip-pt-userpage": "Tín brúkarasíða",
+       "tooltip-pt-userpage": "{{GENDER:|Tín}} brúkarasíða",
        "tooltip-pt-anonuserpage": "Brúkarasíðan fyri IP adressuna, sum tú rættar frá",
        "tooltip-pt-mytalk": "Tín kjaksíða",
        "tooltip-pt-anontalk": "Kjak um rættingar frá hesi IP adressuni",
        "tooltip-pt-logout": "Rita út",
        "tooltip-pt-createaccount": "Vit mæla tær til at upprætta eina konto, tað er tó ikki eitt krav.",
        "tooltip-ca-talk": "Kjak um innihaldssíðuna",
-       "tooltip-ca-edit": "Tú kanst broyta hesa síðuna. Vinarliga nýt forskoðanarknøttin áðrenn tú goymir.",
+       "tooltip-ca-edit": "Rætta hesa síðuna",
        "tooltip-ca-addsection": "Byrja eitt nýtt brot",
        "tooltip-ca-viewsource": "Henda síðan er friðað. Tú kanst síggja keldukotuna.",
        "tooltip-ca-history": "Fyrrverandi útgávur av hesi síðu.",
        "logentry-upload-upload": "$1 {{GENDER:$2|legði út}} $3",
        "rightsnone": "(ongin)",
        "revdelete-summary": "yvirlit yvir broytingar",
-       "searchsuggest-search": "Leita",
+       "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.",
        "expand_templates_preview": "Forskoðan",
        "mw-widgets-dateinput-placeholder-day": "ÁÁÁÁ-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "ÁÁÁÁ-MM",
-       "mw-widgets-titleinput-description-new-page": "síðan er ikki til enn",
-       "api-error-blacklisted": "Vinarliga vel ein annarleiðis tittul, sum lýsir fíluna betri."
+       "mw-widgets-titleinput-description-new-page": "síðan er ikki til enn"
 }
index 288710d..1f9d34e 100644 (file)
        "botpasswords-label-delete": "Supprimer",
        "botpasswords-label-resetpassword": "Réinitialiser le mot de passe",
        "botpasswords-label-grants": "Droits applicables :",
-       "botpasswords-help-grants": "Chaque droit accordé donne accès à la liste des droits utilisateurs dont l’utilisateur dispose déjà. Voyez le [[Special:ListGrants|tableau des droits]] pour plus d’informations.",
+       "botpasswords-help-grants": "Les autorisations permettent d’accéder aux droits déjà accordés à votre compte utilisateur. Activer une autorisation ici ne fournit l’accès à aucun droit que votre compte utilisateur n’aurait pas par ailleurs. Voyez le [[Special:ListGrants|tableau des autorisations]] pour plus d’information.",
        "botpasswords-label-grants-column": "Accordé",
        "botpasswords-bad-appid": "Le nom de robot « $1 » n’est pas valide.",
        "botpasswords-insert-failed": "Échec de l’ajout du nom de robot « $1 ». A-t-il déjà été ajouté ?",
        "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 ayez 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 « {{int:savearticle}} ».",
        "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.",
        "booksources-search": "Rechercher",
        "booksources-text": "Voici une liste indicative de liens vers d’autres sites vendant des livres neufs et d’occasion et sur lesquels vous trouverez peut-être des informations sur les ouvrages que vous cherchez :",
        "booksources-invalid-isbn": "L’ISBN donné ne semble pas être correct ; vérifiez si vous avez fait une erreur en copiant la source originale.",
+       "magiclink-tracking-rfc": "Pages utilisant des liens magiques RFC",
+       "magiclink-tracking-rfc-desc": "Cette page utilise des liens magiques RFC. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur la manière de migrer.",
+       "magiclink-tracking-pmid": "Pages utilisant des liens magiques PMID",
+       "magiclink-tracking-pmid-desc": "Cette page utilise des liens magiques PMID. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur la manière de migrer.",
+       "magiclink-tracking-isbn": "Pages utilisant des liens magiques ISBN",
+       "magiclink-tracking-isbn-desc": "Cette page utilise des liens magiques ISBN. Voyez [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] sur la manière de migrer.",
        "specialloguserlabel": "Auteur :",
        "speciallogtitlelabel": "Cible (titre ou {{ns:user}}:nom d'utilisateur) :",
        "log": "Journaux d’opérations",
        "modifiedarticleprotection": "a modifié le niveau de protection de « [[$1]] »",
        "unprotectedarticle": "a supprimé la protection de « [[$1]] »",
        "movedarticleprotection": "a déplacé les paramètres de protection depuis « [[$2]] » vers « [[$1]] »",
+       "protectedarticle-comment": "{{GENDER:$2|A protégé}} « [[$1]] »",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|A changé le niveau de protection}} pour « [[$1]] »",
+       "unprotectedarticle-comment": "{{GENDER:$2|A supprimé la protection}} de « [[$1]] »",
        "protect-title": "Changer le niveau de protection pour « $1 »",
        "protect-title-notallowed": "Voir le niveau de protection de « $1 »",
        "prot_1movedto2": "[[$1]] renommé en [[$2]]",
        "patrol-log-header": "Voici l’historique des versions relues.",
        "log-show-hide-patrol": "$1 l’historique des relectures",
        "log-show-hide-tag": "$1 le journal des balises",
+       "confirm-markpatrolled-button": "Valider",
+       "confirm-markpatrolled-top": "Marquer la révision de $3 de $2 comme prise en compte ?",
        "deletedrevision": "Ancienne version $1 supprimée",
        "filedeleteerror-short": "Erreur lors de la suppression du fichier : $1",
        "filedeleteerror-long": "Des erreurs ont été rencontrées lors de la suppression du fichier :\n\n$1",
        "tags-deactivate-not-allowed": "Il n'est pas possible de désactiver la balise « $1 ».",
        "tags-deactivate-submit": "Désactiver",
        "tags-apply-no-permission": "Vous n’avez pas le droit d’appliquer des balises de changement avec vos modifications.",
-       "tags-apply-blocked": "Vous ne pouvez pas appliquer les modifications de balises lorsque vous êtes bloqué{{GENDER:||e}}.",
+       "tags-apply-blocked": "Vous ne pouvez pas appliquer les modifications de balises et vos modifications lorsque vous êtes bloqué{{GENDER:||e}}.",
        "tags-apply-not-allowed-one": "La balise « $1 » n’est pas autorisée à être appliquée manuellement.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|La balise suivante n’est pas autorisée à être appliquée|Les balises suivantes ne sont pas autorisées à être appliquées}} manuellement : $1",
        "tags-update-no-permission": "Vous n’avez pas le droit d’ajouter ou de supprimer des balises de modification des révisions individuelles ou des entrées de journal.",
        "authmanager-authn-autocreate-failed": "La création automatique d’un compte local a échoué : $1",
        "authmanager-change-not-supported": "Les informations d’identification fournies ne peuvent pas être modifiées, car rien ne les utiliserait.",
        "authmanager-create-disabled": "La création de compte est désactivée.",
-       "authmanager-create-from-login": "Pour créer votre compte, veuillez remplir les champs ci-dessous.",
+       "authmanager-create-from-login": "Pour créer votre compte, veuillez remplir les champs.",
        "authmanager-create-not-in-progress": "La création de compte n’est pas en cours, ou les données de session ont été perdues. Veuillez recommencer depuis le début.",
        "authmanager-create-no-primary": "Les informations d’identification fournies n’ont pas pu être utilisées pour la création de compte.",
        "authmanager-link-no-primary": "Les informations d’identification fournies n’ont pas pu être utilisées pour lier un compte.",
index aaf97e6..e8675d5 100644 (file)
        "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 parece non ser válido; comprobe que non haxa erros ao copialo da fonte orixinal.",
+       "magiclink-tracking-rfc": "Páxinas que usan ligazóns máxicas RFC",
+       "magiclink-tracking-rfc-desc": "Esta páxina utiliza ligazóns máxicas RFC. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para descubrir como facer a migración.",
+       "magiclink-tracking-pmid": "Páxinas que usan ligazóns máxicas PMID",
+       "magiclink-tracking-pmid-desc": "Esta páxina utiliza ligazóns máxicas PMID. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para descubrir como facer a migración.",
+       "magiclink-tracking-isbn": "Páxinas que usan ligazóns máxicas ISBN",
+       "magiclink-tracking-isbn-desc": "Esta páxina utiliza ligazóns máxicas ISBN. Consulte [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para descubrir como facer a migración.",
        "specialloguserlabel": "Executante:",
        "speciallogtitlelabel": "Obxectivo (título ou {{ns:user}}:nome de usuario):",
        "log": "Rexistros",
        "activeusers-intro": "Esta é unha lista cos usuarios que tiveron algún tipo de actividade {{PLURAL:$1|no último día|nos últimos $1 días}}.",
        "activeusers-count": "$1 {{PLURAL:$1|acción|accións}} {{PLURAL:$3|no último día|nos últimos $3 días}}",
        "activeusers-from": "Mostrar os usuarios que comecen por:",
+       "activeusers-groups": "Mostrar os usuarios que pertencen ós grupos:",
        "activeusers-noresult": "Non se atopou ningún usuario.",
        "activeusers-submit": "Mostrar usuarios activos",
        "listgrouprights": "Dereitos dun usuario segundo o seu grupo",
        "modifiedarticleprotection": "modificou o nivel de protección de \"[[$1]]\"",
        "unprotectedarticle": "eliminou a protección de \"[[$1]]\"",
        "movedarticleprotection": "cambiou as características da protección de \"[[$2]]\" a \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Protexido}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Cambiado o nivel de protección}} para \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Eliminada a protección}} para \"[[$1]]\"",
        "protect-title": "Cambiar o nivel de protección de \"$1\"",
        "protect-title-notallowed": "Ollar o nivel de protección de \"$1\"",
        "prot_1movedto2": "moveu \"[[$1]]\" a \"[[$2]]\"",
        "patrol-log-header": "Este é un rexistro das revisións patrulladas.",
        "log-show-hide-patrol": "$1 o rexistro de patrullas",
        "log-show-hide-tag": "$1 rexistro de etiquetas",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Marcar a revisión $3 de $2 como patrullada?",
        "deletedrevision": "A revisión vella $1 foi borrada.",
        "filedeleteerror-short": "Erro ao eliminar o ficheiro: $1",
        "filedeleteerror-long": "Atopáronse erros ao eliminar o ficheiro:\n\n$1",
        "authmanager-authn-autocreate-failed": "A creación automatica dunha conta local fallou: $1",
        "authmanager-change-not-supported": "As credenciais proporcionadas non se poden modificar, xa que ninguén as utilizará.",
        "authmanager-create-disabled": "A creación de contas está desactivada.",
-       "authmanager-create-from-login": "Para crear a súa conta, complete os campos a continuación.",
+       "authmanager-create-from-login": "Para crear a súa conta, complete os campos.",
        "authmanager-create-not-in-progress": "O proceso de creación da conta non está en progreso ou perdéronse os datos da sesión. Empece de novo desde o principio.",
        "authmanager-create-no-primary": "As credenciais subministradas non poden usarse para a creación da conta.",
        "authmanager-link-no-primary": "As credenciais subministradas non poden usarse para a ligazón da conta.",
index d9da88d..458d0e5 100644 (file)
        "activeusers-intro": "છેલ્લા  $1 {{PLURAL:$1|દિવસ|દિવસો}}માં જે સભ્યોએ કંઈક યોગદાન કર્યું હોય તેમની યાદી.",
        "activeusers-count": "$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}} છેલ્લા {{PLURAL:$3|દિવસ |$3 દિવસો }}માં",
        "activeusers-from": "આનાથી શરૂ થતા સભ્યો દર્શાવો:",
-       "activeusers-hidebots": "બોટને છુપાવો",
-       "activeusers-hidesysops": "પ્રબંધકો છુપાવો",
        "activeusers-noresult": "કોઇ સક્રીય સભ્ય ન મળ્યો",
        "listgrouprights": "સભ્ય જૂથ ના હક્કો",
        "listgrouprights-summary": "નીચે આ વિકિ પર વ્યાખ્યાયિત સભ્ય જૂથોની યાદી, તેમની સાથે સંકળાયેલા હક્કો સાથે આપી છે.\nવ્યક્તિગત હક્કો માટે [[{{MediaWiki:Listgrouprights-helppage}}|વધારાની માહિતી]].",
        "dberr-usegoogle": "તેસમયા દરમ્યાન તમે ગુગલ દ્વારા શોધી શકો",
        "dberr-outofdate": "આપણી માહિતી સંબંધી તેમની સૂચિ કાલાતિત હોઇ શકે.",
        "dberr-cachederror": "વિનંતિ કરેલ પાનાની આ એક સંગ્રહીત પ્રત માત્ર છે અને તે અધ્યતન ન પણ હોય.",
-       "htmlform-invalid-input": "તમારા અમુક ઉમેરા માંઅમુક તકલીફ છે",
+       "htmlform-invalid-input": "તમારા અમુક ઉમેરામાં ક્ષતિઓ છે.",
        "htmlform-select-badoption": "તમે બતાવેલ વિકલ્પ અવૈધ છે",
        "htmlform-int-invalid": "તમે લખેલ વિકલ્પ અંક નથી",
        "htmlform-float-invalid": "તમે લખેલ વિકલ્પ અંક નથી",
index 043c6c6..3af5f05 100644 (file)
        "botpasswords-label-delete": "מחיקה",
        "botpasswords-label-resetpassword": "איפוס ססמה",
        "botpasswords-label-grants": "זיכיונות מתאימים",
-       "botpasswords-help-grants": "×\9b×\9c ×\96×\99×\9b×\99×\95×\9f × ×\95ת×\9f ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×\9eשת×\9eש ×¨×©×\95×\9e×\95ת ×©×\99ש ×\9c×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש. ×¢×\99×\99× ×\95 ×\91[[Special:ListGrants|×\98×\91×\9cת ×\94×\96×\99×\9b×\99×\95× ×\95ת]] ×\9c×\9e×\99×\93×¢ × ×\95סף.",
+       "botpasswords-help-grants": "×\96×\99×\9b×\99×\95× ×\95ת × ×\95תנ×\99×\9d ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×©×\9b×\91ר ×\9e×\95×\97×\96ק×\95ת ×\91×\99×\93×\99 ×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a. ×\94פע×\9cת ×\96×\99×\9b×\99×\95×\9f ×\91×\93×£ ×\96×\94 ×\90×\99× ×\94 × ×\95תנת ×\92×\99ש×\94 ×\9c×\94רש×\90×\95ת ×\90×\97ר×\95ת ×©×\90×\99× ×\9f ×\9e×\95×\97×\96ק×\95ת ×\91×\99×\93×\99 ×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a. ×\9e×\99×\93×¢ × ×\95סף ×\9e×\95פ×\99×¢ ×\91[[Special:ListGrants|×\98×\91×\9cת ×\94×\96×\99×\9b×\99×\95× ×\95ת]].",
        "botpasswords-label-grants-column": "ניתן זיכיון",
        "botpasswords-bad-appid": "שם הבוט \"$1\" אינו תקין.",
        "botpasswords-insert-failed": "הוספת שם הבוט \"$1\" נכשלה. האם הוא כבר נוסף?",
        "grant-basic": "הרשאות בסיסיות",
        "grant-viewdeleted": "צפייה בקבצים ודפים שנמחקו",
        "grant-viewmywatchlist": "צפייה ברשימת המעקב שלך",
-       "grant-viewrestrictedlogs": "צפ×\99×\99×\94 ×\91פר×\99×\98×\99 ×\99×\95×\9e×\9f מוגבלים",
+       "grant-viewrestrictedlogs": "צפ×\99×\99×\94 ×\91פר×\99×\98×\99 ×\94×\99×\95×\9e×\9f ×\94מוגבלים",
        "newuserlogpage": "יומן רישום משתמשים",
        "newuserlogpagetext": "זהו יומן המכיל הרשמות של משתמשים.",
        "rightslog": "יומן הרשאות",
        "booksources-search": "חיפוש",
        "booksources-text": "להלן רשימת קישורים לאתרים אחרים המוכרים ספרים חדשים ויד־שנייה, ושבהם עשוי להיות מידע נוסף לגבי ספרים שאתם מחפשים:",
        "booksources-invalid-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": "יומנים",
        "protectlogtext": "להלן רשימה של שינויי ההגנה על דפים.\nראו גם את [[Special:ProtectedPages|רשימת הדפים המוגנים]] הנוכחית.",
        "protectedarticle": "הופעלה הגנה על הדף \"[[$1]]\"",
        "modifiedarticleprotection": "רמת ההגנה של הדף \"[[$1]]\" שונתה",
-       "unprotectedarticle": "×\94×\94×\92× ×\94 ×¢×\9c ×\94×\93×£ \"[[$1]]\" ×\94×\95סר×\94",
+       "unprotectedarticle": "×\94×\94×\92× ×\94 ×\94×\95סר×\94 ×\9e×\94×\93×£ \"[[$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]]",
        "patrol-log-header": "יומן זה מציג גרסאות שנבדקו.",
        "log-show-hide-patrol": "$1 יומן שינויים בדוקים",
        "log-show-hide-tag": "$1 יומן תגיות",
+       "confirm-markpatrolled-button": "אישור",
+       "confirm-markpatrolled-top": "לסמן את גרסה $3 של $2 כבדוקה?",
        "deletedrevision": "מחיקת גרסה ישנה ($1)",
        "filedeleteerror-short": "שגיאה במחיקת הקובץ: $1",
        "filedeleteerror-long": "שגיאות שאירעו בעת מחיקת הקובץ:\n\n$1",
        "tags-deactivate": "ביטול הפעלה",
        "tags-hitcount": "{{PLURAL:$1|שינוי אחד|$1 שינויים}}",
        "tags-manage-no-permission": "אין לך הרשאה לנהל תגיות שינויים.",
-       "tags-manage-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c× ×\94×\9c ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\91עת ×\97ס×\99×\9e×\94.",
+       "tags-manage-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c× ×\94×\9c ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\9e×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\97ס×\95×\9d.",
        "tags-create-heading": "יצירת תגית חדשה",
        "tags-create-explanation": "כברירת מחדל, תגיות חדשות שנוצרות יהיו זמינות לשימושם של משתמשים ובוטים.",
        "tags-create-tag-name": "שם התגית:",
        "tags-deactivate-not-allowed": "לא ניתן לבטל את הפעלת התגית \"$1\".",
        "tags-deactivate-submit": "ביטול הפעלה",
        "tags-apply-no-permission": "אין לך הרשאה להחיל תגיות שינויים יחד עם השינויים שלך.",
-       "tags-apply-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c×\94×\97×\99×\9c ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\99×\97×\93 ×¢×\9d ×\94ש×\99× ×\95×\99×\99×\9d ×©×\9c×\9a ×\91עת ×\97ס×\99×\9e×\94.",
+       "tags-apply-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c×\94×\97×\99×\9c ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\99×\97×\93 ×¢×\9d ×\94ש×\99× ×\95×\99×\99×\9d ×©×\9c×\9a ×\9e×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\97ס×\95×\9d.",
        "tags-apply-not-allowed-one": "לא ניתן להחיל את התגית \"$1\" ידנית.",
        "tags-apply-not-allowed-multi": "לא ניתן להחיל את {{PLURAL:$2|התגית הבאה|התגיות הבאות}} ידנית: $1",
        "tags-update-no-permission": "אין לך הרשאה להוסיף או להסיר תגיות שינויים לגרסאות מסוימות או לרשומות יומן.",
-       "tags-update-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c×\94×\95ס×\99×£ ×\90×\95 ×\9c×\94ס×\99ר ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\91עת ×\97ס×\99×\9e×\94.",
+       "tags-update-blocked": "×\9c×\90 × ×\99ת×\9f ×\9c×\94×\95ס×\99×£ ×\90×\95 ×\9c×\94ס×\99ר ×ª×\92×\99×\95ת ×©×\99× ×\95×\99×\99×\9d ×\9e×\97ש×\91×\95×\9f ×\9eשת×\9eש ×\97ס×\95×\9d.",
        "tags-update-add-not-allowed-one": "לא ניתן להוסיף את התגית \"$1\" ידנית.",
        "tags-update-add-not-allowed-multi": "לא ניתן להוסיף את {{PLURAL:$2|התגית הבאה|התגיות הבאות}} ידנית: $1",
        "tags-update-remove-not-allowed-one": "לא ניתן להסיר את התגית \"$1\".",
        "authmanager-authn-autocreate-failed": "יצירה אוטומטית של חשבון מקומי נכשלה: $1",
        "authmanager-change-not-supported": "לא ניתן לשנות את נתוני ההאמנה שניתנו, כי שום דבר לא ישתמש בהם.",
        "authmanager-create-disabled": "אפשרות יצירת החשבונות מבוטלת.",
-       "authmanager-create-from-login": "×\9b×\93×\99 ×\9c×\99צ×\95ר ×\90ת ×\94×\97ש×\91×\95×\9f, × ×\90 ×\9c×\9e×\9c×\90 ×\90ת ×\94ש×\93×\95ת ×©×\9c×\94×\9c×\9f.",
+       "authmanager-create-from-login": "×\9b×\93×\99 ×\9c×\99צ×\95ר ×\90ת ×\94×\97ש×\91×\95×\9f, ×\99ש ×\9c×\9e×\9c×\90 ×\90ת ×\94ש×\93×\95ת.",
        "authmanager-create-not-in-progress": "יצירת החשבון נכשלה או שנתוני הפעולה נאבדו. נא להתחיל את התהליך מחדש.",
        "authmanager-create-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש ביצירת חשבון.",
        "authmanager-link-no-primary": "האישורים שסופקו לא יכולים להיות בשימוש בקישור חשבונות.",
index 11620fa..7d15d79 100644 (file)
        "userlogin-yourname": "Suradničko ime",
        "userlogin-yourname-ph": "Unesite Vaše suradničko ime",
        "createacct-another-username-ph": "Upišite suradničko ime:",
-       "yourpassword": "Lozinka:",
+       "yourpassword": "Zaporka:",
        "userlogin-yourpassword": "Zaporka",
        "userlogin-yourpassword-ph": "Unesite Vašu zaporku",
        "createacct-yourpassword-ph": "Unesite zaporku",
-       "yourpasswordagain": "Ponovno upišite lozinku",
+       "yourpasswordagain": "Ponovno upišite zaporku",
        "createacct-yourpasswordagain": "Potvrdi zaporku",
        "createacct-yourpasswordagain-ph": "Unesite zaporku ponovno",
        "userlogin-remembermypassword": "Zapamti me",
        "createacct-benefit-body1": "{{PLURAL:$1|uređivanje|uređivanja}}",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
        "createacct-benefit-body3": "{{PLURAL:$1|nedavni suradnik|nedavnih suradnika}}",
-       "badretype": "Unesene lozinke nisu istovjetne.",
+       "badretype": "Unesene zaporke nisu istovjetne.",
        "userexists": "Uneseno suradničko ime već je u upotrebi.\nUnesite neko drugo ime.",
        "loginerror": "Pogrješka u prijavi",
        "createacct-error": "Pogrješka u stvaranju računa",
        "wrongpassword": "Zaporka koju ste unijeli nije ispravna. Pokušajte ponovno.",
        "wrongpasswordempty": "Niste unijeli zaporku. Pokušajte ponovno.",
        "passwordtooshort": "Zaporka mora sadržavati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.",
-       "password-name-match": "Vaša lozinka mora biti različita od Vašeg suradničkog imena.",
+       "password-name-match": "Vaša zaporka mora biti različita od Vašeg suradničkog imena.",
        "password-login-forbidden": "Uporaba ovog suradničkog imena i lozinke nije dozvoljena.",
-       "mailmypassword": "Pošalji mi novu lozinku",
-       "passwordremindertitle": "{{SITENAME}}: nova lozinka.",
-       "passwordremindertext": "Netko je (vjerojatno Vi, s IP adrese $1) zatražio novu lozinku za projekt {{SITENAME}} ($4).\nPrivremena lozinka za suradnika \"$2\" je postavljena na \"$3\".\nUkoliko ste to Vi učinili, molimo Vas da se prijavite i promijenite lozinku.\nPrivremena lozinka vrijedi još {{PLURAL:$5|$5 dan|$5 dana}}.\n\nUkoliko niste zatražili novu lozinku, ili ste se sjetili stare lozinke i\nviše ju ne želite promijeniti, slobodno zanemarite ovu poruku i nastavite\nkoristiti staru lozinku.",
+       "mailmypassword": "Pošalji mi novu zaporku",
+       "passwordremindertitle": "{{SITENAME}}: nova zaporka.",
+       "passwordremindertext": "Netko je (vjerojatno Vi, s IP adrese $1) zatražio novu zaporku za projekt {{SITENAME}} ($4).\nPrivremena zaporka za suradnika \"$2\" je postavljena na \"$3\".\nUkoliko ste to Vi učinili, molimo Vas da se prijavite i promijenite zaporku.\nPrivremena zaporka vrijedi još {{PLURAL:$5|$5 dan|$5 dana}}.\n\nUkoliko niste zatražili novu zaporku, ili ste se sjetili stare zaporke i\nviše ju ne želite promijeniti, slobodno zanemarite ovu poruku i nastavite\nkoristiti staru zaporku.",
        "noemail": "Suradnik \"$1\" nema zapisanu e-mail adresu.",
        "noemailcreate": "Morate navesti važeću e-mail adresu",
        "passwordsent": "Nova je zaporka poslana na adresu elektroničke pošte suradnika \"$1\"",
-       "blocked-mailpassword": "Vašoj IP adresi je blokirano uređivanje stranica, a da bi se spriječila nedopuštena radnja, mogućnost zahtijevanja nove lozinke je također onemogućena.",
+       "blocked-mailpassword": "Vašoj IP adresi je blokirano uređivanje stranica, a da bi se spriječila nedopuštena radnja, mogućnost zahtijevanja nove zaporke je također onemogućena.",
        "eauthentsent": "Na navedenu adresu poslana je e-poruka s potvrdom.\nPrije nego što pošaljemo daljnje poruke, molimo Vas otvorite e-poruku i slijedite u njemu sadržana uputstva kako biste potvrdili da je adresa e-pošte zaista Vaša.",
        "throttled-mailpassword": "Već Vam je poslan e-mail za promjenu zaporke, u {{PLURAL:$1|posljednjih sat vremena|posljednja $1 sata|posljednjih $1 sati}}.\nDa bi spriječili zloupotrebu, moguće je poslati samo jedan e-mail za promjenu zaporke {{PLURAL:$1|svakih sat vremena|svaka $1 sata|svakih $1 sati}}.",
        "mailerror": "Pogrješka pri slanju e-pošte: $1",
        "accountcreated": "Suradnički račun otvoren",
        "accountcreatedtext": "Suradnički je račun [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) stvoren.",
        "createaccount-title": "Otvaranje suradničkog računa za {{SITENAME}}",
-       "createaccount-text": "Netko je stvorio suradnički račun s Vašom adresom elektronske pošte na {{SITENAME}} ($4) nazvan \"$2\", s lozinkom \"$3\". Trebali biste se prijaviti i odmah promijeniti lozinku.\n\nMožete zanemariti ovu poruku ako je suradnički račun stvoren nenamjerno.",
+       "createaccount-text": "Netko je stvorio suradnički račun s Vašom adresom e-pošte na {{SITENAME}} ($4) nazvan \"$2\", sa zaporkom \"$3\". Trebali biste se prijaviti i odmah promijeniti zaporku.\n\nMožete zanemariti ovu poruku ako je suradnički račun stvoren nenamjerno.",
        "login-throttled": "Nedavno ste se previše puta pokušali prijaviti.\nMolimo Vas pričekajte $1 prije nego što pokušate ponovno.",
        "login-abort-generic": "Vaša je prijava bila neuspješna te je stoga prekinuta.",
        "login-migrated-generic": "Vaš se suradnički račun preselio, te Vaše suradničko ime više ne postoji u ovom wikiju.",
        "user-mail-no-addy": "Pokušaj slanja e-maila bez e-mail adrese.",
        "user-mail-no-body": "Pokušali ste poslati e-mail bez sadržaja ili s prekratkim sadržajem.",
        "changepassword": "Promjena zaporke",
-       "resetpass_announce": "Da biste završili proces mijenjanja lozinke, upišite \nnovu lozinku.",
-       "resetpass_header": "Promijeni lozinku računa",
-       "oldpassword": "Stara lozinka",
-       "newpassword": "Nova lozinka",
-       "retypenew": "Ponovno unesite lozinku",
-       "resetpass_submit": "Postavite lozinku i prijavite se",
+       "resetpass_announce": "Da biste završili proces mijenjanja zaporke, upišite \nnovu zaporku.",
+       "resetpass_header": "Promijeni zaporku računa",
+       "oldpassword": "Stara zaporka",
+       "newpassword": "Nova zaporka",
+       "retypenew": "Ponovno unesite zaporku",
+       "resetpass_submit": "Postavite zaporku i prijavite se",
        "changepassword-success": "Zaporka je uspješno postavljena!",
        "changepassword-throttled": "Nedavno ste se previše puta pokušali prijaviti.\nMolimo Vas pričekajte $1 prije nego što pokušate ponovno.",
        "botpasswords": "Zaporke botova",
        "botpasswords-bad-appid": "Ime bota \"$1\" nije valjano.",
        "botpasswords-insert-failed": "Nije moguće dodavanje imena bota \"$1\". Možda je već dodano?",
        "botpasswords-update-failed": "Nije moguće ažurirati bot s imenom \"$1\". Možda je izbrisan?",
-       "resetpass_forbidden": "Lozinka ne može biti promijenjena",
+       "resetpass_forbidden": "Zaporka ne može biti promijenjena",
        "resetpass-no-info": "Morate biti prijavljeni da biste izravno pristupili ovoj stranici.",
-       "resetpass-submit-loggedin": "Promijeni lozinku",
+       "resetpass-submit-loggedin": "Promijeni zaporku",
        "resetpass-submit-cancel": "Odustani",
-       "resetpass-wrong-oldpass": "Pogrešna privremena ili trenutačna lozinka.\nMožda ste već uspješno promijenili Vašu lozinku ili ste zatražili novu privremenu lozinku.",
+       "resetpass-wrong-oldpass": "Pogrešna privremena ili trenutačna zaporka.\nMožda ste već uspješno promijenili Vašu zaporku ili ste zatražili novu privremenu zaporku.",
        "resetpass-recycled": "Molimo Vas, promijenite zaporku u nešto drugačiju od Vaše trenutačne zaporke.",
        "resetpass-temp-emailed": "Prijavljeni ste s privremenom zaporkom prijavljenom putem e-poruke.\nDa biste dovršili prijavu morate postaviti novu zaporku.",
-       "resetpass-temp-password": "Privremena lozinka:",
+       "resetpass-temp-password": "Privremena zaporka:",
        "resetpass-abort-generic": "Poništena je promjena zaporke.",
        "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 lozinku",
+       "passwordreset": "Ponovno 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.",
        "passwordreset-capture-help": "Ako označite ovu kućicu, e-poruka s privremenom lozinkom će biti prikazana i poslana korisniku.",
        "passwordreset-email": "E-mail adresa:",
        "passwordreset-emailtitle": "Pojedinosti o računu na {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Netko (vjerojatno Vi, s IP adrese $1) zatražio je podsjetnik za Vaše detalje računa\nza {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|račun suradnika je|računi suradnika su}}\npovezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu lozinku. Ukoliko je netko drugi napravio ovaj\nzahtjev, ili ako ste sjeti Vaše izvorne lozinke, a vi je više ne želite promijeniti, \nmožete zanemariti ovu poruku i nastavite koristiti staru lozinku.",
-       "passwordreset-emailtext-user": "Suradnik $1 na {{SITENAME}} zatražio podsjetnik o pojedinostima vašeg računa za {{SITENAME}}\n($4). Sljedeći {{PLURAL:$3|račun suradnika je|računi suradnika su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu lozinku. Ukoliko je netko drugi napravio ovaj\nzahtjev, ili ako ste sjeti Vaše izvorne lozinke, a vi je više ne želite promijeniti, \nmožete zanemariti ovu poruku i nastavite koristiti staru lozinku.",
-       "passwordreset-emailelement": "Suradničko ime: \n$1\n\nPrivremena lozinka: \n$2",
+       "passwordreset-emailtext-ip": "Netko (vjerojatno Vi, s IP adrese $1) zatražio je podsjetnik za Vaše detalje računa\nza {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|račun suradnika je|računi suradnika su}}\npovezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena zaporka|Ove privremene zaporke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu zaporku. Ukoliko je netko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili Vaše izvorne zaporke, a više je ne želite promijeniti, \nmožete zanemariti ovu poruku i nastavite koristiti staru zaporku.",
+       "passwordreset-emailtext-user": "Suradnik $1 na {{SITENAME}} zatražio je podsjetnik o pojedinostima vašeg računa za {{SITENAME}}\n($4). Sljedeći {{PLURAL:$3|račun suradnika je|računi suradnika su}} povezani s ovom e-mail adresom:\n\n$2\n\n{{PLURAL:$3|Ova privremena zaporka|Ove privremene zaporke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.\nTrebate se prijaviti i odabrati novu zaporku. Ukoliko je netko drugi napravio ovaj\nzahtjev, ili ako ste se sjetili Vaše izvorne zaporke, a više je ne želite promijeniti, \nmožete zanemariti ovu poruku i nastavite koristiti staru zaporku.",
+       "passwordreset-emailelement": "Suradničko ime: \n$1\n\nPrivremena zaporka: \n$2",
        "passwordreset-emailsentemail": "Ako je ova adresa povezana s Vašim suradničkim računom, na nju će biti poslan podsjetnik na zaporku.",
        "changeemail": "Promijeni ili izbriši e-mail adresu",
        "changeemail-header": "Promijeni adresu e-pošte računa",
        "loginreqtitle": "Nužna prijava",
        "loginreqlink": "prijavite se",
        "loginreqpagetext": "Da biste vidjeli ostale stranice, molimo $1.",
-       "accmailtitle": "Lozinka poslana.",
-       "accmailtext": "Nova lozinka za [[User talk:$1|$1]] je poslana na $2.\n\nNakon prijave, lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|promijeni lozinku]]'' nakon prijave.",
+       "accmailtitle": "Zaporka poslana.",
+       "accmailtext": "Nova zaporka za [[User talk:$1|$1]] je poslana na $2.\n\nNakon prijave, zaporka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|promijeni zaporku]]'' nakon prijave.",
        "newarticle": "(Novo)",
        "newarticletext": "Došli ste na stranicu koja još ne postoji.\nAko želite stvoriti tu stranicu, počnite tipkati u prozor ispod ovog teksta (pogledajte [$1 stranicu za pomoć]).\nAko ste ovamo dospjeli slučajno, kliknite gumb '''natrag''' (back) u svom pregledniku.",
        "anontalkpagetext": "----''Ovo je stranica za razgovor s neprijavljenim suradnikom koji još nije otvorio suradnički račun ili se njime ne koristi. Zbog toga se moramo služiti brojčanom IP adresom kako bismo ga identificirali. Takvu adresu često može dijeliti više ljudi. Ako ste neprijavljeni suradnik i smatrate da su Vam upućeni irelevantni komentari, molimo Vas da [[Special:CreateAccount|otvorite suradnički račun]] ili [[Special:UserLogin|se prijavite]] te tako u budućnosti izbjegnete zamjenu s drugim neprijavljenim suradnicima.''",
        "prefs-watchlist-edits-max": "Maksimalni broj: 1000",
        "prefs-watchlist-token": "Token popisa praćenja:",
        "prefs-misc": "Razno",
-       "prefs-resetpass": "Promijeni lozinku",
+       "prefs-resetpass": "Promijeni zaporku",
        "prefs-changeemail": "promijeni adresu e-pošte",
        "prefs-setemail": "Postavite E-mail adresu",
        "prefs-email": "Mogućnosti e-maila",
index 6d74097..0b91499 100644 (file)
        "listusers-blocked": "(blokkolva)",
        "activeusers": "Aktív szerkesztők listája",
        "activeusers-intro": "Ez a lap azon felhasználók listáját tartalmazza, akik végeztek valamilyen tevékenységet az elmúlt {{PLURAL:$1|egy|$1}} napban.",
-       "activeusers-count": "$1 szerkesztés az utolsó $3 napban",
+       "activeusers-count": "$1 művelet az elmúlt $3 napban",
        "activeusers-from": "Szerkesztők listázása a következő névtől kezdve:",
        "activeusers-noresult": "Nem található ilyen szerkesztő.",
        "activeusers-submit": "Aktív szerkesztők megjelenítése",
index 4408039..7102f64 100644 (file)
@@ -27,7 +27,8 @@
                        "Aram1985",
                        "KeepingCalm",
                        "Macofe",
-                       "Kareyac"
+                       "Kareyac",
+                       "Irus"
                ]
        },
        "tog-underline": "ընդգծել հղումները՝",
@@ -55,7 +56,7 @@
        "tog-enotifminoredits": "էլ-փոստով տեղեկացնել նաև էջերի չնչին խմբագրումների մասին",
        "tog-enotifrevealaddr": "Ցույց տալ իմ էլ-փոստի հասցեն ծանուցման նամակներում",
        "tog-shownumberswatching": "Ցույց տալ հսկող մասնակիցների թիվը",
-       "tog-oldsig": "Ընթացիկ ստորագրությունը՝",
+       "tog-oldsig": "Ձեր ընթացիկ ստորագրությունը՝",
        "tog-fancysig": "Ստորագրությունը վիքիտեքստի տեսքով (առանց ավտոմատ հղման)",
        "tog-uselivepreview": "Օգտագործել անմիջական նախադիտում",
        "tog-forceeditsummary": "Նախազգուշացնել խմբագրման ամփոփումը դատարկ թողնելու դեպքում",
@@ -72,7 +73,7 @@
        "tog-showhiddencats": "Ցուցադրել թաքնված կատեգորիաները",
        "tog-norollbackdiff": "Չցուցադրել տարբերությունները հետ գլորելուց հետո",
        "tog-useeditwarning": "Զգուշացնել ինձ, երբ ես լքում եմ խմբագրման էջը առանց կատարած փոփոխությունները հիշելու։",
-       "tog-prefershttps": "Õ\84Õ¸Ö\82Õ¿Ö\84 Õ£Õ¸Ö\80Õ®Õ¥Õ¬Õ¸Ö\82Ö\81 Õ°Õ¥Õ¿Õ¸, Õ´Õ«Õ·Õ¿ Õ£Õ¸Ö\80Õ®Õ¡Õ®Õ¥Õ¬ Õ¡Õ¶Õ¾Õ¶Õ¿Õ¡Õ¶Õ£ Õ´Õ«Õ¡Ö\81Õ¸Ö\82Õ´Õ«Ö\81 (HTTPS)",
+       "tog-prefershttps": "Õ\84Õ«Õ·Õ¿ Ö\85Õ£Õ¿Õ¡Õ£Õ¸Ö\80Õ®Õ¥Ö\84 Õ¡Õ¶Õ¾Õ¿Õ¡Õ¶Õ£ Õ´Õ«Õ¡Ö\81Õ¸Ö\82Õ´ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö\80Õ£Õ¸Ö\82Õ´ Õ¶Õ¥Ö\80Õ¯Õ¡ÕµÕ¡Ö\81Õ¶Õ¥Õ¬Õ¸Ö\82Ö\81 Õ°Õ¥Õ¿Õ¸",
        "underline-always": "Միշտ",
        "underline-never": "Երբեք",
        "underline-default": "Դիտարկչի կամ թեմայի լռելյայն ոճով",
        "newwindow": "(բացվում է նոր պատուհանում)",
        "cancel": "Չեղարկել",
        "moredotdotdot": "Ավելին...",
-       "morenotlisted": "Ô±ÕµÕ½ Ö\81Õ¡Õ¶Õ¯Õ¶ Õ¡Õ¾Õ¡Ö\80Õ¿Õ¸Ö\82Õ¶ Õ¹Õ§Ö\89",
+       "morenotlisted": "Ô±ÕµÕ½ Ö\81Õ¸Ö\82Ö\81Õ¡Õ¯Õ¨ Õ¯Õ¡Ö\80Õ¸Õ² Õ§ Õ¬Õ«Õ¶Õ¥Õ¬ Õ©Õ¥Ö\80Õ«",
        "mypage": "Էջ",
        "mytalk": "Քննարկում",
        "anontalk": "Քննարկում",
        "badarticleerror": "Տվյալ գործողությունը չի կարող կատարվել այս էջում։",
        "cannotdelete": "Չհաջողվեց ջնջել «$1» էջը կամ ֆայլը։\nՀավանաբար այն արդեն ջնջվել է մեկ այլ մասնակցի կողմից։",
        "cannotdelete-title": "Հնարավոր չէ ջնջել $1 էջը",
+       "delete-hook-aborted": "Խմբագրել չեղյալ է luxplanet-перехватчиком.\nԼրացուցիչ պարզաբանումներ չի դրվել.",
+       "no-null-revision": "Չի հաջողվել ստեղծել նոր զրոյական правку համար էջը \"$1\"",
        "badtitle": "Անընդունելի անվանում",
        "badtitletext": "Հարցված էջի անվանումը անընդունելի է, դատարկ է կամ սխալ միջ-լեզվական կամ ինտերվիքի անվանում է։ Հնարավոր է, որ այն պարունակում է անթույլատրելի սիմվոլներ։",
        "title-invalid-empty": "Էջի հայցվող վերնագիրը դատարկ է կամ պարունակում է միայն անվանատարածքի անունը։",
+       "title-invalid-utf8": "Հարցումն ստացած անունը էջը պարունակում է կրում սխալ հաջորդականությունը նիշ UTF-8.",
        "perfcached": "Ստորև տվյալները պահուստավորված են և հնարավոր է չարտացոլեն վերջին փոփոխությունները։ Առավելագույն {{PLURAL:$1|արդյունք|$1 արդյունք}} է հասանելի քեշում։",
        "perfcachedts": "Հետևյալ տվյալները վերցված են քեշից և վերջին անգամ թարմացվել են $1։ A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
        "querypage-no-updates": "Այս էջի փոփոխությունները ներկայումս արգելված են։ Այստեղի տվյալները այժմ չեն թարմացվի։",
        "newarticle": "(Նոր)",
        "newarticletext": "Դուք հղվել եք դեռևս գոյություն չունեցող էջի։ \nՆոր էջ ստեղծելու համար ստորև գտնվող խմբագրման դաշտում ավելացրեք տեքստ, այնուհետև սեղմեք '''Հիշել էջը''' (այցելեք [$1 օգնության էջը]՝ մանրամասն տեղեկությունների համար)։ \n\nԵթե դուք սխալմամբ եք այստեղ հայտնվել, ապա սեղմեք ձեր դիտարկչի '''հետ''' (back) կոճակը։",
        "anontalkpagetext": "----\n''Այս քննարկման էջը պատկանում է անանուն մասնակցին, որը դեռ չի ստեղծել մասնակցային հաշիվ կամ չի մտել համակարգ մասնակցի անունով։''\nԱյդ իսկ պատճառով օգտագործվում է թվային IP-հասցեն։\nՆման IP-հասցեից կարող են օգտվել մի քանի մասնակիցներ։\nԵթե դուք անանուն մասնակից եք, բայց կարծում եք, որ ուրիշներին վերաբերող դիտողությունները արվում են ձեր հասցեով, ապա խնդրում ենք պարզապես [[Special:CreateAccount|գրանցվել]] կամ [[Special:UserLogin|մտնել համակարգ]], որպեսզի հետագայում ձեզ չշփոթեն այլ անանուն մասնակիցների հետ։",
-       "noarticletext": "Ներկայումս այս էջում որևէ տեքստ չկա։\nԴուք կարող եք [[Special:Search/{{PAGENAME}}|որոնել այս անվանումը]] այլ էջերում, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} որոնել համապատասխան տեղեկամատյանները] կամ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ստեղծել նոր էջ այս անվանմամբ]</span>։",
+       "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>» անվանմամբ մասնակից գոյություն չունի։\nԽնդրում ենք հավաստիանալ նրանում, թե արդյոք ուզում եք ստեղծել/խմբագրել այս էջը։",
        "userpage-userdoesnotexist-view": "«$1» անվանմամբ գրանցված մասնակից չկա։",
        "searchprofile-advanced-tooltip": "Որոնել նշված անվանատարածքներում",
        "search-result-size": "$1 ({{PLURAL:$2|1 բառ|$2 բառ}})",
        "search-result-category-size": "{{PLURAL:$1|անդամ}} ({{PLURAL:$2|ենթակատեգորիա}}, {{PLURAL:$3|նիշք}})",
-       "search-redirect": "(վերահղում $1)",
+       "search-redirect": "(վերահղում $1-ից)",
        "search-section": "(բաժին $1)",
        "search-suggest": "Գուցե նկատի ունե՞ք՝ $1",
        "search-interwiki-caption": "Կից նախագծեր",
        "whatlinkshere-prev": "{{PLURAL:$1|նախորդ|նախորդ $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|հաջորդ|հաջորդ $1}}",
        "whatlinkshere-links": "← հղումներ",
-       "whatlinkshere-hideredirs": "$1 վերահղում",
-       "whatlinkshere-hidetrans": "$1 Õ¶Õ¥Ö\80Õ¡Õ¼Õ¸Ö\82Õ´Õ¶Õ¥Ö\80Õ¨",
-       "whatlinkshere-hidelinks": "$1 հղում",
+       "whatlinkshere-hideredirs": "$1 վերահղումներ",
+       "whatlinkshere-hidetrans": "$1 Õ¶Õ¥Ö\80Õ¡Õ¼Õ¥Õ¬Õ¸Ö\82",
+       "whatlinkshere-hidelinks": "$1 հղումներ",
        "whatlinkshere-hideimages": "$1 նիշքային հղումներ",
        "whatlinkshere-filters": "Զտիչներ",
        "whatlinkshere-submit": "Գնալ առաջ",
        "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",
        "ipbhidename": "Թաքցնել մասնակցի անունը արգելափակման տեղեկամատյանից, գործող արգելափակումների ցանկից և մասնակիցների ցանկից։",
-       "ipbwatchuser": "Մասնակցի էջն ու քննարկման էջն ավելացնել հսկացանկում",
+       "ipbwatchuser": "Ավելացնել հսկացանկում մասնակցի էջն ու քննարկման էջն",
        "ipb-disableusertalk": "Արգելել մասնակցին խմբագրել իր քննարկման էջն արգելափակման ընթացքում",
        "badipaddress": "Սխալ IP-հասցե",
        "blockipsuccesssub": "Արգելափակումը կատարված է",
        "markedaspatrollednotify": "Այս փոփոխությունը $1 էջում նշվել է ստուգված",
        "markedaspatrollederrornotify": "Ստուգված նշել չհաջողվեց։",
        "patrol-log-page": "Պարեկման տեղեկամատյան",
+       "confirm-markpatrolled-button": "Լավ",
        "deletedrevision": "Ջնջված է հին տարբերակը $1",
        "filedeleteerror-short": "Նիշքի ջնջման սխալ. $1",
        "filedeleteerror-long": "Տեղի են ունեցել սխալներ նիշքի ջնջման ընթացքում.\n\n$1",
        "feedback-close": "Արված է",
        "feedback-message": "Հաղորդագրություն․",
        "feedback-subject": "Թեմա.",
-       "searchsuggest-search": "Որոնել",
+       "searchsuggest-search": "Որոնել {{SITENAME}} կայքում",
        "duration-seconds": "$1 {{PLURAL:$1|վայրկյան}}",
        "duration-minutes": "$1 {{PLURAL:$1|րոպե}}",
        "duration-hours": "$1 {{PLURAL:$1|ժամ}}",
        "special-characters-group-khmer": "Կխմեր",
        "special-characters-title-endash": "ո գծիկ (en dash)",
        "special-characters-title-emdash": "ա գծիկ (em dash)",
-       "special-characters-title-minus": "հանածի նշան"
+       "special-characters-title-minus": "հանածի նշան",
+       "authmanager-create-from-login": "Հաշիվ ստեղծելու համար, խնդրում ենք լրացնել ստորև դաշտերը"
 }
index 716b82e..ad6acb0 100644 (file)
        "botpasswords-label-delete": "Deler",
        "botpasswords-label-resetpassword": "Reinitialisar le contrasigno",
        "botpasswords-label-grants": "Concessiones applicabile:",
-       "botpasswords-help-grants": "Cata concession da accesso al derectos de usator listate que un conto de usator jam ha. Vide le [[Special:ListGrants|tabula de concessiones]] pro plus information.",
+       "botpasswords-help-grants": "Concessiones permitte accesso a derectos jam detenite per tu conto de usator. Activar un concession hic non forni accesso a alcun derecto que tu conto de usator non haberea alteremente. Vide le [[Special:ListGrants|tabula de concessiones]] pro plus information.",
        "botpasswords-label-grants-column": "Concedite",
        "botpasswords-bad-appid": "Le nomine del robot \"$1\" non es valide.",
        "botpasswords-insert-failed": "Le addition del nomine de robot \"$1\" ha fallite. Esque illo ha jam essite addite?",
        "grant-basic": "Derectos de base",
        "grant-viewdeleted": "Vider files e paginas delite",
        "grant-viewmywatchlist": "Vider le proprie observatorio",
+       "grant-viewrestrictedlogs": "Vider entratas de registro confidential",
        "newuserlogpage": "Registro de creation de usatores",
        "newuserlogpagetext": "Isto es un registro de creation de usatores.",
        "rightslog": "Registro de derectos de usator",
        "booksources-search": "Cercar",
        "booksources-text": "Infra es un lista de ligamines a altere sitos que vende libros nove e usate, e pote etiam haber altere informationes super libros que tu cerca:",
        "booksources-invalid-isbn": "Le ISBN date non pare esser valide; verifica que tu non ha facite errores copiante lo del fonte original.",
+       "magiclink-tracking-rfc": "Paginas usante ligamines magic RFC",
+       "magiclink-tracking-rfc-desc": "Iste pagina usa ligamines magic RFC. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pro saper como migrar.",
+       "magiclink-tracking-pmid": "Paginas usante ligamines magic PMID",
+       "magiclink-tracking-pmid-desc": "Iste pagina usa ligamines magic PMID. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pro saper como migrar.",
+       "magiclink-tracking-isbn": "Paginas usante ligamines magic ISBN",
+       "magiclink-tracking-isbn-desc": "Iste pagina usa ligamines magic ISBN. Vide [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] pro saper como migrar.",
        "specialloguserlabel": "Executor:",
        "speciallogtitlelabel": "Objectivo (titulo o {{ns:user}}:nomine de usator):",
        "log": "Registros",
        "activeusers-intro": "Isto es un lista de usatores que habeva alcun typo de activitate intra le ultime $1 {{PLURAL:$1|die|dies}}.",
        "activeusers-count": "$1 {{PLURAL:$1|action|actiones}} in le ultime {{PLURAL:$3|die|$3 dies}}",
        "activeusers-from": "Presentar usatores a partir de:",
-       "activeusers-hidebots": "Celar bots",
-       "activeusers-hidesysops": "Celar administratores",
+       "activeusers-groups": "Monstrar usatores pertinente a gruppos:",
        "activeusers-noresult": "Nulle usator trovate.",
        "activeusers-submit": "Monstrar usatores active",
        "listgrouprights": "Derectos del gruppos de usatores",
        "modifiedarticleprotection": "cambiava nivello de protection de \"[[$1]]\"",
        "unprotectedarticle": "removeva le protection de \"[[$1]]\"",
        "movedarticleprotection": "displaciava le configurationes de protection ab \"[[$2]]\" verso \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Protegeva}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Cambiar nivello de protection}} pro \"[[$1]]\"",
        "protect-title": "Cambiar nivello de protection de \"$1\"",
        "protect-title-notallowed": "Vider nivello de protection de \"$1\"",
        "prot_1movedto2": "displaciava [[$1]] verso [[$2]]",
index 475b8e8..e3e042c 100644 (file)
        "botpasswords-label-delete": "Cancella",
        "botpasswords-label-resetpassword": "Reimposta la password",
        "botpasswords-label-grants": "Assegnazioni applicabili:",
-       "botpasswords-help-grants": "Ogni assegnazione dà accesso ai diritti utente elencati che un'utenza ha già. Vedi la [[Special:ListGrants|tabella delle assegnazioni]] per ulteriori informazioni.",
+       "botpasswords-help-grants": "Le assegnazioni consentono l'accesso a diritti che la tua utenza possiede già. Attivare un'assegnazione qui non fornisce l'accesso ad alcun diritto che la tua utenza altrimenti non avrebbe. Vedi la [[Special:ListGrants|tabella delle assegnazioni]] per ulteriori informazioni.",
        "botpasswords-label-grants-column": "Assegnazioni",
        "botpasswords-bad-appid": "Il nome bot \"$1\" non è valido.",
        "botpasswords-insert-failed": "Impossibile aggiungere il nome bot \"$1\". È stato già aggiunto?",
        "grant-basic": "Diritti di base",
        "grant-viewdeleted": "Vede i file e le pagine cancellati",
        "grant-viewmywatchlist": "Vede i tuoi osservati speciali",
+       "grant-viewrestrictedlogs": "Vedi valori privati del registro",
        "newuserlogpage": "Nuovi utenti",
        "newuserlogpagetext": "Di seguito sono elencate le utenze di nuova creazione.",
        "rightslog": "Diritti degli utenti",
        "booksources-search": "Cerca",
        "booksources-text": "Di seguito sono elencati alcuni collegamenti verso siti esterni che vendono libri nuovi e usati, attraverso i quali è possibile ottenere maggiori informazioni sul testo cercato.",
        "booksources-invalid-isbn": "L'ISBN inserito sembra non essere valido; verificare che non siano stati commessi errori nel copiarlo dalla fonte originale.",
+       "magiclink-tracking-rfc": "Pagine che utilizzano collegamenti magici RFC",
+       "magiclink-tracking-rfc-desc": "Questa pagina utilizza collegamenti magici RFC. Vedi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] su come eseguire la migrazione.",
+       "magiclink-tracking-pmid": "Pagine che utilizzano collegamenti magici PMID",
+       "magiclink-tracking-pmid-desc": "Questa pagina utilizza collegamenti magici PMID. Vedi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] su come eseguire la migrazione.",
+       "magiclink-tracking-isbn": "Pagine che utilizzano collegamenti magici ISBN",
+       "magiclink-tracking-isbn-desc": "Questa pagina utilizza collegamenti magici ISBN. Vedi [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] su come eseguire la migrazione.",
        "specialloguserlabel": "Azione effettuata da:",
        "speciallogtitlelabel": "Azione effettuata su (titolo della pagina o {{ns:user}}:Nome utente):",
        "log": "Registri",
        "listusers-noresult": "Nessun utente risponde ai criteri impostati.",
        "listusers-blocked": "(bloccato)",
        "activeusers": "Elenco degli utenti attivi",
-       "activeusers-intro": "Questo è un elenco di utenti che hanno avuto qualche tipo di attività da $1 {{PLURAL:$1|giorno|giorni}} a questa parte.",
+       "activeusers-intro": "Questo è un elenco di utenti che hanno avuto qualche tipo di attività {{PLURAL:$1|nell'ultimo giorno|negli ultimi $1 giorni}}.",
        "activeusers-count": "$1 {{PLURAL:$1|azione|azioni}} {{PLURAL:$3|nell'ultimo giorno|negli ultimi $3 giorni}}",
        "activeusers-from": "Mostra gli utenti a partire da:",
        "activeusers-groups": "Visualizza gli utenti appartenenti ai gruppi:",
        "modifiedarticleprotection": "ha modificato il livello di protezione di \"[[$1]]\"",
        "unprotectedarticle": "ha sprotetto \"[[$1]]\"",
        "movedarticleprotection": "ha spostato la protezione da \"[[$2]]\" a \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Protetto}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Modificato il livello di protezione}} per \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Rimossa la protezione}} da \"[[$1]]\"",
        "protect-title": "Modifica del livello di protezione per \"$1\"",
        "protect-title-notallowed": "Visualizza il livello di protezione di \" $1 \"",
        "prot_1movedto2": "ha spostato [[$1]] a [[$2]]",
        "patrol-log-header": "Di seguito sono elencate le verifiche delle modifiche.",
        "log-show-hide-patrol": "$1 registro delle modifiche verificate",
        "log-show-hide-tag": "$1 registro delle etichette",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Segna versione $3 di $2 come verificata?",
        "deletedrevision": "Cancellata la vecchia versione di $1.",
        "filedeleteerror-short": "Errore nella cancellazione del file: $1",
        "filedeleteerror-long": "Si sono verificati degli errori nel tentativo di cancellare il file:\n\n$1",
        "authmanager-authn-autocreate-failed": "Creazione automatica di un'utenza locale fallita: $1",
        "authmanager-change-not-supported": "Le credenziali fornite non possono essere modificate, dato che non verrebbero usate da nulla.",
        "authmanager-create-disabled": "La creazione di utenze è disabilitata.",
-       "authmanager-create-from-login": "Per creare la tua utenza, completa i campi qui sotto.",
+       "authmanager-create-from-login": "Per creare la tua utenza, completa i campi.",
        "authmanager-create-not-in-progress": "La creazione di un'utenza non è in corso o i dati della sessione sono andati persi. Si prega di ricominciare nuovamente dall'inizio.",
        "authmanager-create-no-primary": "Le credenziali fornite non possono essere utilizzate per la creazione dell'utenza.",
        "authmanager-link-no-primary": "Le credenziali fornite non possono essere utilizzate per il collegamento dell'utenza.",
index f82f9c3..27fe191 100644 (file)
        "confirmdeletetext": "ページをすべての履歴とともに削除しようとしています。\n本当にこの操作を行いたいか、操作の結果を理解しているか、およびこの操作が[[{{MediaWiki:Policy-url}}|方針]]に従っているかどうか、確認してください。",
        "actioncomplete": "操作を完了しました",
        "actionfailed": "操作に失敗しました",
-       "deletedtext": "ã\80\8c$1ã\80\8dã\81¯å\89\8aé\99¤ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82\næ\9c\80è¿\91ã\81®å\89\8aé\99¤ã\81«ã\81¤ã\81\84ã\81¦ã\81¯ã\80\81$2ã\82\92å\8f\82ç\85§ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。",
+       "deletedtext": "ã\80\8c$1ã\80\8dã\81¯å\89\8aé\99¤ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9fã\80\82\næ\9c\80è¿\91ã\81®å\89\8aé\99¤ã\81¯$2ã\81§å\8f\82ç\85§ã\81§ã\81\8dã\81¾ã\81\99。",
        "dellogpage": "削除記録",
        "dellogpagetext": "以下は最近の削除と復元の一覧です。",
        "deletionlog": "削除記録",
        "undeletedrevisions-files": "{{PLURAL:$1|$1版}}と{{PLURAL:$2|$2ファイル}}を復元しました",
        "undeletedfiles": "{{PLURAL:$1|$1ファイル}}を復元しました",
        "cannotundelete": "復元に一部またはすべて失敗しました:\n$1",
-       "undeletedpage": "<strong>$1を復元しました。</strong>\n\n最近の削除と復元の記録については[[Special:Log/delete|削除記録]]を参照してください。",
+       "undeletedpage": "<strong>$1 を復元しました。</strong>\n\n最近の削除と復元は[[Special:Log/delete|削除記録]]で参照できます。",
        "undelete-header": "最近削除されたページは[[Special:Log/delete|削除記録]]で確認できます。",
        "undelete-search-title": "削除されたページの検索",
        "undelete-search-box": "削除されたページの検索",
        "revertmove": "差し戻し",
        "delete_and_move_text": "移動先「[[:$1]]」は既に存在します。\n移動のためにこのページを削除しますか?",
        "delete_and_move_confirm": "はい、ページを削除します",
-       "delete_and_move_reason": "ã\80\8c[[$1]]ã\80\8dã\81\8bã\82\89ã\81®ç§»å\8b\95ã\81®ã\81\9fã\82\81ã\81«削除",
+       "delete_and_move_reason": "ã\80\8c[[$1]]ã\80\8dã\81\8bã\82\89ã\81®ç§»å\8b\95ã\81«ä¼´ã\81\86削除",
        "selfmove": "移動元と移動先のページ名が同じです。\n自分自身には移動できません。",
        "immobile-source-namespace": "「$1」名前空間のページは移動できません",
        "immobile-target-namespace": "「$1」名前空間にはページを移動できません",
index 4b7a55c..11710e6 100644 (file)
@@ -62,7 +62,8 @@
                        "Ellif",
                        "HDNua",
                        "Ykhwong",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Tursetic"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "authmanager-authn-autocreate-failed": "로컬 계정 자동 생성 실패: $1",
        "authmanager-change-not-supported": "지정된 자격 증명을 사용하고 있는 곳이 없어서 변경할 수 없습니다.",
        "authmanager-create-disabled": "계정 만들기가 금지되어 있습니다.",
-       "authmanager-create-from-login": "ê³\84ì \95ì\9d\84 ë§\8cë\93\9c려면, ì\95\84ë\9e\98ì\9d\98 ì¹¸ë\93¤을 채워 주십시오.",
+       "authmanager-create-from-login": "ê³\84ì \95ì\9d\84 ë§\8cë\93¤ë ¤ë©´ ë¹\88칸을 채워 주십시오.",
        "authmanager-create-not-in-progress": "계정 만들기가 진행 중이 아니거나 세션 데이터를 분실했습니다. 처음부터 다시 시작해 주십시오.",
        "authmanager-create-no-primary": "제공된 자격 증명은 계정 생성에 쓰일 수 없습니다.",
        "authmanager-link-no-primary": "제공된 자격 증명은 계정을 연결하는 데 쓰일 수 없습니다.",
index 3a7cb80..48fec63 100644 (file)
        "booksources-search": "Sichen",
        "booksources-text": "Hei ass eng Lëscht mat Linken op Internetsäiten, déi nei a gebraucht Bicher verkafen. Do kann et sinn datt Dir méi Informatiounen iwwer déi Bicher fannt déi Dir sicht.",
        "booksources-invalid-isbn": "D'ISBN-Nummer déi Dir uginn hutt schéngt net gëlteg ze sinn. Kuckt w.e.g. no ob beim Kopéiere kee Feeler geschitt ass.",
+       "magiclink-tracking-rfc": "Säiten, déi magesch RFC-Linke benotzen.",
+       "magiclink-tracking-rfc-desc": "Dës Säit benotzt magesch RFC-Linken. Kuckt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] fir d'Migratioun.",
+       "magiclink-tracking-pmid": "Säiten, déi magesch PMID-Linke benotzen.",
+       "magiclink-tracking-pmid-desc": "Dës Säit benotzt magesch PMID-Linken. Kuckt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] fir d'Migratioun.",
+       "magiclink-tracking-isbn": "Säiten, déi magesch ISBN-Linke benotzen.",
+       "magiclink-tracking-isbn-desc": "Dës Säit benotzt magesch ISBN-Linken. Kuckt [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] fir d'Migratioun.",
        "specialloguserlabel": "Aktive Benotzer:",
        "speciallogtitlelabel": "Zil (Titel oder {{ns:user}}:Benotzernumm fir e Benotzer):",
        "log": "Logbicher",
        "activeusers-intro": "Dëst ass eng Lëscht vun de Benotzer déi op iergend eng Manéier an de leschten $1 {{PLURAL:$1|Dag|Deeg}} aktiv waren.",
        "activeusers-count": "$1 {{PLURAL:$1|Aktioun|Aktiounen}} {{PLURAL:$3|gëschter|an de leschten $3 Deeg}}",
        "activeusers-from": "Benotzer weisen, ugefaange bei:",
+       "activeusers-groups": "Benotzer weisen déi zu de Gruppe gehéieren:",
        "activeusers-noresult": "Keng Benotzer fonnt.",
        "activeusers-submit": "Aktiv Benotzer weisen",
        "listgrouprights": "Rechter vun de Benotzergruppen",
        "modifiedarticleprotection": "huet d'Protektioun vun \"[[$1]]\" geännert",
        "unprotectedarticle": "huet d'Spär vu(n) \"[[$1]]\" opgehuewen",
        "movedarticleprotection": "huet de Säiteschutz vun \"[[$2]]\" op \"[[$1]]\" geännert",
+       "protectedarticle-comment": "huet \"[[$1]]\" {{GENDER:$2|gespaart}}",
        "protect-title": "Ännerung vun der Protektioun vu(n) „$1“",
        "protect-title-notallowed": "Den Niveau vun der Protektioun vu(n) \"$1\" weisen",
        "prot_1movedto2": "[[$1]] gouf op [[$2]] geréckelt",
        "patrol-log-page": "Logbuch vun den iwwerkuckte Versiounen",
        "patrol-log-header": "Dëst ass d'Logbuch vun den nogekuckte Versiounen.",
        "log-show-hide-patrol": "Kontroll-Logbuch $1",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Versioun $3 vu(n) $2 als kontrolléiert markéieren?",
        "deletedrevision": "Al, geläscht Versioun vu(n) $1",
        "filedeleteerror-short": "Feeler beim Läsche vum Fichier: $1",
        "filedeleteerror-long": "Bäim Läsche vum Fichier si Feeler festgestallt ginn:\n\n$1",
        "log-action-filter-upload-upload": "Neien Upload",
        "log-action-filter-upload-overwrite": "Nees eroplueden",
        "authmanager-create-disabled": "D'Opmaache vu Benotzerkonten ass gespaart.",
-       "authmanager-create-from-login": "Fir Äre Benotzerkont unzeleeën fëllt w.e.g. d'Felder hei drënner aus.",
+       "authmanager-create-from-login": "Fir Äre Benotzerkont unzeleeën fëllt w.e.g. d'Felder aus.",
        "authmanager-authplugin-setpass-failed-title": "Änner vum Passwuert huet net funktionéiert",
        "authmanager-authplugin-setpass-bad-domain": "Net valabelen Domain.",
        "authmanager-autocreate-noperm": "Automatescht Uleeë vu Benotzerkonten ass net erlaabt.",
index b9166ac..b1e889d 100644 (file)
        "grant-group-high-volume": "Atlikti didelės apimties veiklą",
        "grant-group-customization": "Pritaikymas ir parinktys",
        "grant-group-administration": "Atlikti administravimo veiksmų",
+       "grant-group-private-information": "Prieiti prie privačių duomenų apie jus",
        "grant-group-other": "Įvairios veiklos",
        "grant-blockusers": "Užblokuoti ir atblokuoti naudotojus",
        "grant-createaccount": "Kurti paskyras",
        "grant-highvolume": "Didelės apimties redagavimas",
        "grant-oversight": "Paslėpti naudotojus ir numalšinti versijas",
        "grant-patrol": "Patrulių pakeitimai puslapiuose",
+       "grant-privateinfo": "Prieiti prie privačių duomenų",
        "grant-protect": "Apsaugoti ir neapsaugoti puslapiai",
        "grant-rollback": "Atšaukti pakeitimus puslapiuose",
        "grant-sendemail": "Siųsti el. laišką kitiems naudotojams",
        "apisandbox-submit": "Pateikti prašymą",
        "apisandbox-reset": "Išvalyti",
        "apisandbox-retry": "Bandykite dar kartą",
+       "apisandbox-loading": "API modulio „$1“ informacija įkeliama...",
+       "apisandbox-load-error": "Įvyko klaida įkeliant API modulio „$1“ informaciją: $2",
        "apisandbox-no-parameters": "Šis API modulis neturi parametrų.",
        "apisandbox-helpurls": "Pagalbinės nuorodos",
        "apisandbox-examples": "Pavyzdžiai",
        "booksources-search": "Ieškoti",
        "booksources-text": "Žemiau yra nuorodų sąrašas į kitas svetaines, kurios parduoda naujas ar naudotas knygas, bei galbūt turinčias daugiau informacijos apie knygas, kurių ieškote:",
        "booksources-invalid-isbn": "Duotas ISBN atrodo neteisingas; patikrinkite, ar nepadarėte kopijavimo klaidų.",
+       "magiclink-tracking-rfc": "Puslapiai, naudojantys RFC magiškas nuorodas",
+       "magiclink-tracking-rfc-desc": "Šis puslapis naudoja RFC magiškas nuorodas. Informacija apie perkėlimą [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
+       "magiclink-tracking-pmid": "Puslapiai, naudojantys PMID magiškas nuorodas",
+       "magiclink-tracking-pmid-desc": "Šis puslapis naudoja PMID magiškas nuorodas. Informacija apie perkėlimą [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
+       "magiclink-tracking-isbn": "Puslapiai, naudojantys ISBN magiškas nuorodas",
+       "magiclink-tracking-isbn-desc": "Šis puslapis naudoja ISBN magiškas nuorodas. Informacija apie perkėlimą [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org].",
        "specialloguserlabel": "Naudotojas:",
        "speciallogtitlelabel": "Tikslas (pavadinimas arba {{ns:user}}:naudotojo vardas naudotojui):",
        "log": "Specialiųjų veiksmų sąrašas",
        "activeusers-intro": "Tai naudotojų sąrašas, kurie ką nors padarė per $1 {{PLURAL:$1|paskutinę dieną|paskutines dienas|paskutinių dienų}}.",
        "activeusers-count": "$1 {{PLURAL:$1|keitimas|keitimai|keitimų}} per {{PLURAL:$3|paskutinę dieną|$3 paskutines dienas|$3 paskutinių dienų}}",
        "activeusers-from": "Rodyti naudotojus, pradedant:",
+       "activeusers-groups": "Rodyti vartotojus, priklausančius grupėms:",
        "activeusers-noresult": "Nerasta jokių naudotojų.",
        "activeusers-submit": "Rodyti aktyvius vartotojus",
        "listgrouprights": "Naudotojų grupių teisės",
        "modifiedarticleprotection": "pakeistas „[[$1]]“ apsaugos lygis",
        "unprotectedarticle": "atrakino „[[$1]]“",
        "movedarticleprotection": "perkelti apsaugos nustatymai iš „[[$2]]“ į „[[$1]]“",
+       "protectedarticle-comment": "{{GENDER:$2|Apsaugojo}} „[[$1]]“",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Pakeitė „[[$1]]“ apsaugos lygį}}",
+       "unprotectedarticle-comment": "{{GENDER:$2|Pašalino apsaugą}} iš „[[$1]]“",
        "protect-title": "Nustatomas apsaugos lygis puslapiui „$1“",
        "protect-title-notallowed": "Peržiūrėti \"$1\" apsaugos lygį",
        "prot_1movedto2": "[[$1]] pervadintas į [[$2]]",
        "pageinfo-category-pages": "Puslapių skaičius",
        "pageinfo-category-subcats": "Dukterinių kategorijų skaičius",
        "pageinfo-category-files": "Failų skaičius",
+       "pageinfo-user-id": "Vartotojo ID",
        "markaspatrolleddiff": "Žymėti, kad patikrinta",
        "markaspatrolledtext": "Pažymėti, kad puslapis patikrintas",
        "markaspatrolledtext-file": "Pažymėti šią failo versiją kaip patruliuojamą",
        "patrol-log-header": "Tai patvirtintų versijų sąrašas.",
        "log-show-hide-patrol": "$1 patvirtinimų sąrašą",
        "log-show-hide-tag": "$1 žymės žurnalas",
+       "confirm-markpatrolled-button": "GERAI",
        "deletedrevision": "Ištrinta sena versija $1",
        "filedeleteerror-short": "Klaida trinant rinkmeną: $1",
        "filedeleteerror-long": "Įvyko klaidų trinant failą:\n\n$1",
        "tags-edit-reason": "Priežastis:",
        "tags-edit-revision-submit": "Taikyti pakeitimus {{PLURAL:$1|šiai versijai|$1 versijoms}}",
        "tags-edit-logentry-submit": "Taikyti pakeitimus {{PLURAL:$1|šiam žurnalo įrašui|$1 žurnalo įrašams}}",
-       "tags-edit-success": "Pakeitimai sėkmingai pritaikyti.",
+       "tags-edit-success": "Pakeitimai buvo pritaikyti.",
        "tags-edit-failure": "Pokyčiai negali būti taikomi:\n$1",
        "tags-edit-nooldid-title": "Negalima pasirinkta versija",
        "tags-edit-nooldid-text": "Jūs nenurodėte jokio peržiūros, kuriai vykdyti šią funkciją, arba nurodytos peržiūros nėra.",
        "htmlform-cloner-create": "Pridėti dar",
        "htmlform-cloner-delete": "Pašalinti",
        "htmlform-cloner-required": "Bent viena reikšmė būtina.",
+       "htmlform-date-placeholder": "MMMM-MM-DD",
+       "htmlform-time-placeholder": "VV:MM:SS",
+       "htmlform-datetime-placeholder": "MMMM-MM-DD VV:MM:SS",
        "htmlform-title-badnamespace": "[[:$1]] nėra \"{{ns:$2}}\" vardų srityje.",
        "htmlform-title-not-creatable": "\"$1\" nėra tinkamas sukūrimui puslapio pavadinimas",
        "htmlform-title-not-exists": "$1 neegzistuoja.",
        "linkaccounts-success-text": "Paskyra buvo susieta.",
        "linkaccounts-submit": "Susieti paskyras",
        "unlinkaccounts": "Atsieti paskyras",
-       "unlinkaccounts-success": "Paskyra buvo atsieta."
+       "unlinkaccounts-success": "Paskyra buvo atsieta.",
+       "edit-error-short": "Klaida: $1",
+       "edit-error-long": "Klaidos:\n\n$1"
 }
index ad92ab9..a5ceb17 100644 (file)
        "activeusers-intro": "ई ओहेन प्रयोक्ता सभक सूची अछि जे पछिला $1 {{PLURAL:$1|दिन|दिन}} मे किछु सक्रियता देखेने छथि।",
        "activeusers-count": "$1 {{PLURAL:$1|कार्य}} पिछला $3 {{PLURAL:$3|दिन|दिनसभ}}मे",
        "activeusers-from": "प्रयोक्ता प्रदर्शन प्रारम्भ भेल:",
-       "activeusers-hidebots": "स्वचालक नुकाबी",
-       "activeusers-hidesysops": "प्रबन्धक नुकाबी",
        "activeusers-noresult": "कोनो प्रयोक्ता नै भेटल",
        "activeusers-submit": "सक्रिय प्रयोगकर्ता देखाबी",
        "listgrouprights": "प्रयोगकर्ता समूह अधिकार",
        "sp-contributions-blocked-notice-anon": "ई अनिकेत अखन प्रतिबन्धित अछि।\nअद्यतन प्रतिबन्धित  वृत्तलेख लेखा सन्दर्भ नीचाँ देल अछि:",
        "sp-contributions-search": "अवदानक लेल ताकू",
        "sp-contributions-username": "अनिकेत संकेत वा प्रयोक्तानाम:",
-       "sp-contributions-toponly": "मात्र ओइ सम्पादनकेँ देखाउ जे अद्यतन संशोधन छी।",
+       "sp-contributions-toponly": "मात्र ओइ सम्पादन देखाबी जे अद्यतन संशोधन छी।",
        "sp-contributions-newonly": "मात्र ओइ सम्पादन देखाउ जे पृष्ठ निर्मित भेल अछि",
        "sp-contributions-hideminor": "अल्प सम्पादन नुकाबी",
        "sp-contributions-submit": "ताकू",
index 427f771..bfb6fee 100644 (file)
        "botpasswords-label-delete": "Избриши",
        "botpasswords-label-resetpassword": "Ставете нова лозинка",
        "botpasswords-label-grants": "Применливи доделувања:",
-       "botpasswords-help-grants": "Секое Ð´Ð¾Ð´ÐµÐ»Ñ\83ваÑ\9aе Ð´Ð°Ð²Ð° Ð¿Ñ\80иÑ\81Ñ\82ап Ð´Ð¾ Ñ\81пиÑ\81ок Ð´Ð¾ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸ Ð¿Ñ\80ава Ñ\88Ñ\82о Ð²ÐµÑ\9cе Ð³Ð¸ Ð¸Ð¼Ð° ÐºÐ¾Ñ\80иÑ\81ниÑ\87каÑ\82а Ñ\81меÑ\82ка. Ð\9fовеÑ\9cе Ñ\9cе Ð½Ð°Ñ\98деÑ\82е Ð½Ð° [[Special:ListGrants|Ñ\82абелаÑ\82а Ñ\81о доделувања]].",
+       "botpasswords-help-grants": "Ð\94оделÑ\83ваÑ\9aаÑ\82а Ð²Ð¸ Ð´Ð°Ð²Ð°Ð°Ñ\82 Ð¿Ñ\80иÑ\81Ñ\82ап Ð´Ð¾ Ð¿Ñ\80ава ÐºÐ¾Ð¸ Ð²ÐµÑ\9cе Ð³Ð¸ Ð¸Ð¼Ð° Ð²Ð°Ñ\88аÑ\82а Ñ\81меÑ\82ка. Ð\9eвозможÑ\83ваÑ\98Ñ\9cи Ð´Ð¾Ð´ÐµÐ»Ñ\83ваÑ\9aе Ñ\82Ñ\83ка, Ð½Ðµ Ð´Ð¾Ð±Ð¸Ð²Ð°Ñ\82е Ð½Ð¸ÐºÐ°ÐºÐ²Ð¸ Ð¿Ñ\80ава Ñ\88Ñ\82о Ð²ÐµÑ\9cе Ð³Ð¸ Ð½ÐµÐ¼Ð° Ñ\81меÑ\82каÑ\82а. Ð\9fовеÑ\9cе Ð¸Ð½Ñ\84оÑ\80маÑ\86ии Ñ\9cе Ð½Ð°Ñ\98деÑ\82е Ð½Ð° [[Special:ListGrants|Ñ\82абелаÑ\82а Ð½Ð° доделувања]].",
        "botpasswords-label-grants-column": "Доделено",
        "botpasswords-bad-appid": "Името на ботот „$1“ е неважечко.",
        "botpasswords-insert-failed": "Не успеав да го додадам името на ботот „$1“. Да не е веќе додадено?",
        "booksources-search": "Пребарај",
        "booksources-text": "Ова е список на врски кон други мрежни места кои продаваат нови и користени книги, и тие може\nда имаат повеќе информации за книгите што ги баравте:",
        "booksources-invalid-isbn": "Наведениот ISBN се чини неправилен. Проверете да не настанала некоја грешка при копирањето од изворот.",
+       "magiclink-tracking-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": "Дневници",
        "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]]",
        "patrol-log-header": "Ова е дневник на патролирани преработки.",
        "log-show-hide-patrol": "$1 дневник на патролирање",
        "log-show-hide-tag": "$1 дневник на ознаки",
+       "confirm-markpatrolled-button": "ОК",
+       "confirm-markpatrolled-top": "Да ја означан преработката $3 на $2 како испатролирана?",
        "deletedrevision": "Избришана стара преработка $1.",
        "filedeleteerror-short": "Грешка при бришење на податотека: $1",
        "filedeleteerror-long": "Се појавија грешки при бришењето на податотеката:\n\n$1",
        "authmanager-authn-autocreate-failed": "Автоматското создавање на месна сметка не успеа: $1",
        "authmanager-change-not-supported": "Укажаните најавни податоци не можат да се изменат, бидејќи тогаш ништо нема да ги користи.",
        "authmanager-create-disabled": "Создавањето на сметки е оневозможено.",
-       "authmanager-create-from-login": "За да направите сметка, пополнете ги полињата подолу.",
+       "authmanager-create-from-login": "За да направите сметка, пополнете ги полињата.",
        "authmanager-create-not-in-progress": "Создавањето на сметката не е во тек, или има губиток на седничките податоци. Почнете одново.",
        "authmanager-create-no-primary": "Укажаните најавни податоци не можат да се употребат во создавање на сметка.",
        "authmanager-link-no-primary": "Укажаните најавни податоци не можат да се употребат во поврзување на сметка.",
index 9df4ea2..db52b06 100644 (file)
@@ -12,7 +12,8 @@
                        "Leli Forte",
                        "Macofe",
                        "Matma Rex",
-                       "MTSap"
+                       "MTSap",
+                       "Nemo bis"
                ]
        },
        "tog-underline": "Ħoloq sottolinjati:",
        "yourpasswordagain": "Erġa' ikteb il-password:",
        "createacct-yourpasswordagain": "Ikkonferma l-password",
        "createacct-yourpasswordagain-ph": "Erġa' daħħal il-password",
-       "remembermypassword": "Ftakar il-login tiegħi fuq dan il-kompjuter (għal massimu ta' {{PLURAL:$1|ġurnata|$1 ġurnata}})",
        "userlogin-remembermypassword": "Żommni fil-kont",
        "userlogin-signwithsecure": "Uża konnessjoni sigura",
        "yourdomainname": "Id-dominju tiegħek:",
        "passwordreset-emailtext-user": "{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadikx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
        "passwordreset-emailelement": "Isem tal-utent: \n$1\n\nPassword temporanja: \n$2",
        "passwordreset-emailsentemail": "Intbagħtet ittra-e għall-issettjar mill-ġdid tal-password.",
-       "passwordreset-emailsent-capture": "Intbagħtet ittra-e għall-ssettjar mill-ġdid tal-password u l-kontenut jidher hawn taħt.",
-       "passwordreset-emailerror-capture": "Ġiet ġenerata ittra-e ta' tfakkira, li l-kontenut tagħha jidher hawn taħt. Madanakollu, il-posta ma ntbagħtitx lill-utent: $1",
        "changeemail": "Biddel l-indirizz elettroniku",
        "changeemail-header": "Biddel l-indirizz elettroniku tal-kont",
        "changeemail-no-info": "Trid tkun dħalt fil-kont tiegħek sabiex taċċessa direttament din il-paġna.",
        "continue-editing": "Mur fil-kaxxa tal-editjar",
        "previewconflict": "Din il-previżjoni turi l-kliem li jinsab fiż-żona ta' modifika superjuri u turi kif tidher kieku l-paġna kella tiġi modifikata.",
        "session_fail_preview": "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.\nJekk jogħġbok, erġa' pprova. Jekk xorta tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
-       "session_fail_preview_html": "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.'''\n\n''Peress li {{#ifeq: {{SITENAME}} | translatewiki.net | fuq {{SITENAME}} | fil-{{SITENAME}}}} huwa possibbli l-użu tal-HTML mingħajr limitazzjonijiet (''raw HTML''), id-dehra proviżorja tiġi moħbija bħala prekawzjoni kontra l-attakki tal-JavaScript.''\n\n'''Jekk dan huwa attentat leġittmu ta' modifika, jekk jogħġbok erġa' pprova. Jekk tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
+       "session_fail_preview_html": "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.'''\n\n''Peress li fil-{{SITENAME}} huwa possibbli l-użu tal-HTML mingħajr limitazzjonijiet (''raw HTML''), id-dehra proviżorja tiġi moħbija bħala prekawzjoni kontra l-attakki tal-JavaScript.''\n\n'''Jekk dan huwa attentat leġittmu ta' modifika, jekk jogħġbok erġa' pprova. Jekk tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
        "token_suffix_mismatch": "'''Il-modifika tiegħek ma ġietx aċċettata minħabba li klijent tiegħek tertaq l-karratri tal-ortografija fit-token tal-modifika.\nDin il-modifika ma ġietx aċċettata sabiex ma jkunx hemm żballji fit-test tal-paġna. Dan xi kultant jiġri minħabba li qiegħed tuża servizz difettuż anonimu li huwa bbażat fuq il-web ta' prokura.'''",
        "edit_form_incomplete": "'''Ċerti parti tal-formola tal-modifika ma laħqux is-server; iċċekkja jekk il-modifiki tiegħek humiex intatti u erġa' pprova.'''",
        "editing": "Modifika ta' $1",
        "undo-failure": "Huwa impossibbli li tiġi annullata l-modifika, minħabba kunflitt ta' modifiki intermedji.",
        "undo-norev": "Il-modifika ma tistax tiġi annullata peress li ma teżistix jew inkella għax ġiet diġà imħassra.",
        "undo-summary": "Neħħi r-reviżjoni $1 ta' [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussjoni]])",
-       "cantcreateaccounttitle": "Il-kont ma jistax jinħoloq",
        "cantcreateaccount-text": "Ħolqien tal-kont minn dan l-indirizz IP ('''$1''') ġie imblukkat minn [[User:$3|$3]].\n\nIr-raġuni li ngħatat minħabba l-blokk mingħand $3 kienet ''$2''",
        "viewpagelogs": "Ara r-reġistri ta' din il-paġna",
        "nohistory": "M'hemm l-ebda kronoloġija ta' modifika f'din il-paġna.",
        "activeusers-intro": "Din hija lista ta' utenti li kellhom xi tip ta' attività f'dawn l-aħħar $1 {{PLURAL:$1|ġurnata|ġurnata}}.",
        "activeusers-count": "$1 {{PLURAL:$1|modifika|modifika}} fl-aħħar {{PLURAL:$3|jum|$3 jum}}",
        "activeusers-from": "Uri utenti li jibdew minn:",
-       "activeusers-hidebots": "Aħbi l-bots",
-       "activeusers-hidesysops": "Aħbi amministraturi",
        "activeusers-noresult": "L-ebda utent ma nstab.",
        "listgrouprights": "Drittijiet tal-grupp tal-utenti",
        "listgrouprights-summary": "Hawn taħt hawn elenkati l-gruppi tal-utenti għal din il-wiki, bid-drittijiet ta' aċċess rispettiv.\nJista' jkun hemm [[{{MediaWiki:Listgrouprights-helppage}}|aktar informazzjoni]] fuq id-drittjiet individwali.",
        "htmlform-cloner-create": "Żid aktar",
        "htmlform-cloner-delete": "Neħħi",
        "htmlform-cloner-required": "Minn tal-anqas valur wieħed huwa bżonnjuż.",
-       "sqlite-has-fts": "$1 bil-possibilità ta' tfittxija kompluta fit-test",
-       "sqlite-no-fts": "$1 mingħajr il-possibilità ta' tfittxija kompluta fit-test",
        "logentry-delete-delete": "$1 {{GENDER:$2|ħassar|ħassret}} il-paġna $3",
        "logentry-delete-restore": "$1 reġġa' lura l-paġna $3",
        "logentry-delete-event": "$1 biddel il-viżibilità ta' {{PLURAL:$5|azzjoni tar-reġistru|$5 azzjonijiet tar-reġistru}} ta' $3: $4",
        "feedback-external-bug-report-button": "Irrapporta problema teknika",
        "feedback-dialog-title": "Ibgħat ir-rispons",
        "feedback-dialog-intro": "Tista' tuża din il-formola sabiex tibgħat ir-rispons tiegħek. Il-kumment tiegħek jiġi miżjuda mal-paġna \"$1\", flimkien mal-isem tal-utent.",
-       "feedback-error-title": "Żball",
        "feedback-error1": "Żball: Riżultat mhux rikonoxxut mill-API",
        "feedback-error2": "Żball: Modifika mhux esegwita",
        "feedback-error3": "Żball: L-ebda risposta mill-API",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
        "mw-widgets-dateinput-placeholder-day": "SSSS-XX-ĠĠ",
-       "mw-widgets-dateinput-placeholder-month": "SSSS-XX",
-       "api-error-blacklisted": "Jekk jogħġbok agħżel titlu differenti u deskrittiv."
+       "mw-widgets-dateinput-placeholder-month": "SSSS-XX"
 }
index 5f4b8b5..2b1bc3e 100644 (file)
        "newarticle": "(Sin)",
        "newarticletext": "Lí tòe 1 ê liân-kiat lâi kàu 1 bīn iáu-bōe chûn-chāi ê ia̍h. Beh khai-sí pian-chi̍p chit ia̍h, chhiáⁿ tī ē-kha ê bûn-jī keh-á lāi-té phah-jī. ([$1 Bo̍k-lio̍k] kà lí án-choáⁿ chìn-hêng.) Ká-sú lí bô-tiuⁿ-tî lâi kàu chia, ē-sai chhi̍h liû-lám-khì ê '''téng-1-ia̍h''' tńg--khì.",
        "anontalkpagetext": "----''Pún thó-lūn-ia̍h bô kò·-tēng ê kháu-chō/hō·-thâu, kan-na ū 1 ê IP chū-chí (chhin-chhiūⁿ 123.456.789.123). In-ūi bô kāng lâng tī bô kāng sî-chūn ū khó-lêng tú-hó kong-ke kāng-ê IP, lâu tī chia ê oē ū khó-lêng hō· bô kāng lâng ê! Beh pī-bián chit khoán būn-tê, ē-sái khì [[Special:UserLogin|khui 1 ê hō·-thâu a̍h-sī teng-ji̍p]].''",
-       "noarticletext": "這頁這馬無內容,你會使佇別頁[[Special:Search/{{PAGENAME}}|揣這頁標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 揣相關日誌],\n抑[{{fullurl:{{FULLPAGENAME}}|action=edit}} 這頁]</span>。",
+       "noarticletext": "這頁這馬無內容,你會使佇別頁[[Special:Search/{{PAGENAME}}|揣這頁標題]],\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 揣相關日誌],\n抑[{{fullurl:{{FULLPAGENAME}}|action=edit}} 創造這頁]</span>。",
        "clearyourcache": "'''Chù-ì:''' Pó-chûn liáu-āu, tio̍h ē-kì leh kā liû-lám-khì ê cache piàⁿ tiāu chiah khoàⁿ-ē-tio̍h kái-piàn: *'''Firefox / Safari:''' chhi̍h tiâu \"Shift\" kâng-sî-chūn tiám-kik ''Reload/têng-sin chài-ji̍p'' a̍h-sī chhi̍h ''Ctrl-F5'' \"Ctrl-R\" kî-tiong chi̍t ê (''Command-R'' tī Mac) \n* '''Google Chrome:''' chhi̍h ''Ctrl-Shift-R'' (''Command-Shift-R'' tī Mac)\n'''Internet Explorer :'''chhi̍h tiâu \"Ctrl\" kâng-sî-chūn tiám-kek ''Refresh/têng-sin chài-ji̍p'' a̍h-sī chhi̍h \"Ctrl-F5\" \n* '''Konqueror:'''  tiám-kek ''Reload/têng-sin chài-ji̍p'' a̍h-sī chhi̍h ''F5''\n* '''Opera:''' piàⁿ-tiāu cache tī ''Tools(ke-si) → Preferences(siat-piān)''",
        "usercssyoucanpreview": "'''Phiat-pō·''': Pó-chûn chìn-chêng ē-sái chhi̍h 'Seng khoàⁿ-māi' kiám-cha sin ê CSS a̍h-sī JavaScript.",
        "userjsyoucanpreview": "'''Phiat-pō·''': Pó-chûn chìn-chêng ē-sái chhi̍h 'Seng khoàⁿ-māi' kiám-cha sin ê CSS a̍h-sī JavaScript.",
        "filemissing": "Bô tóng-àn",
        "import": "Su-ji̍p ia̍h",
        "tooltip-pt-userpage": "{{GENDER:|Lí ê iōng-chiá}} ê ia̍h",
-       "tooltip-pt-mytalk": " ê thó-lūn ia̍h",
+       "tooltip-pt-mytalk": "{{GENDER:Lí}} ê thó-lūn ia̍h",
        "tooltip-pt-preferences": "{{GENDER:|Lí ê}} siat-tēng",
        "tooltip-pt-watchlist": "你監視的頁有改過的清單",
-       "tooltip-pt-mycontris": " ê kòng-hiàn lia̍t-toaⁿ",
+       "tooltip-pt-mycontris": "{{GENDER:|Lí}} ê kòng-hiàn lia̍t-toaⁿ",
        "tooltip-pt-login": "Hi-bāng lí teng-ji̍p; m̄-ko bô kiông-chè",
        "tooltip-pt-logout": "Teng-chhut",
        "tooltip-pt-createaccount": "Kiàn-gī lí seng khui chi̍t-ê kháu-chō (bô-it-tēng ài); chiah koh teng-ji̍p.",
index f3f5855..6b2192d 100644 (file)
        "botpasswords-label-delete": "Slett",
        "botpasswords-label-resetpassword": "Tilbakestill passord",
        "botpasswords-label-grants": "Tilgjengelige tildelinger:",
-       "botpasswords-help-grants": "Hver tildeling gir tilgang til opplistede brukerrettigheter som brukerkontoen allerede har. Se [[Special:ListGrants|tildelingstabellen]] for mer informasjon.",
+       "botpasswords-help-grants": "Tildelinger gir tilgang til rettighetene som allerede innehas av brukerkontoen din. Å slå på en tildeling her gir ikke tilgang til rettigheter brukerkontoen din ikke ellers ville hatt. Se [[Special:ListGrants|tildelingstabellen]] for mer informasjon.",
        "botpasswords-label-grants-column": "Bevilget",
        "botpasswords-bad-appid": "Robotnavnet \"$1\" er ikke gyldig.",
        "botpasswords-insert-failed": "Kunne ikke legge til robotnavnet \"$1\". Har det allerede blitt lagt til?",
        "uploadnewversion-linktext": "Last opp en ny versjon av denne filen",
        "shared-repo-from": "fra $1",
        "shared-repo": "et delt fillager",
+       "filepage.css": "/* CSS som plasseres her inkluderes på filbeskrivelsessiden, og inkluderes også på andre wikier som bruker denne */",
        "upload-disallowed-here": "Du kan ikke overskrive denne filen.",
        "filerevert": "Tilbakestill $1",
        "filerevert-legend": "Tilbakestill fil",
        "booksources-search": "Søk",
        "booksources-text": "Under er en liste over lenker til andre sider som selger nye og brukte bøker, og kan også ha videre informasjon om bøker du leter etter:",
        "booksources-invalid-isbn": "Det gitte ISBN-nummeret er ugyldig; sjekk om du har angitt det riktig.",
+       "magiclink-tracking-rfc": "Sider som bruker magiske RFC-lenker",
+       "magiclink-tracking-rfc-desc": "Denne siden bruker magiske RFC-lenker. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links MediaWiki.org] for hvordan man kan bytte.",
+       "magiclink-tracking-pmid": "Sider som bruker magiske PMID-lenker",
+       "magiclink-tracking-pmid-desc": "Denne siden bruker magiske PMID-lenker. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links MediaWiki.org] for hvordan man kan bytte.",
+       "magiclink-tracking-isbn": "Sider som bruker magiske ISBN-lenker",
+       "magiclink-tracking-isbn-desc": "Denne siden bruker magiske ISBN-lenker. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links MediaWiki.org] for hvordan man kan bytte.",
        "specialloguserlabel": "Utøver:",
        "speciallogtitlelabel": "Mål (tittel eller {{ns:user}}:brukernavn for brukeren):",
        "log": "Logger",
        "activeusers-intro": "Dette er en liste over brukere som har hatt en eller annen form for aktivitet innenfor {{PLURAL:$1|den siste dagen|de siste dagene}}.",
        "activeusers-count": "$1 {{PLURAL:$1|endring|endringer}} {{PLURAL:$3|det siste døgnet|de siste $3 dagene}}",
        "activeusers-from": "Vis brukere fra og med:",
+       "activeusers-groups": "Vis brukere som tilhører gruppene:",
        "activeusers-noresult": "Ingen brukere funnet.",
        "activeusers-submit": "Vis",
        "listgrouprights": "Rettigheter for brukergrupper",
        "modifiedarticleprotection": "endret beskyttelsesnivå for «[[$1]]»",
        "unprotectedarticle": "fjernet beskyttelse av «[[$1]]»",
        "movedarticleprotection": "flyttet beskyttelsesinnstillinger fra «[[$2]]» til «[[$1]]»",
+       "protectedarticle-comment": "{{GENDER:$2|Beskyttet}} «[[$1]]»",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Endret beskyttelsesnivå}} for «[[$1]]»",
+       "unprotectedarticle-comment": "{{GENDER:$2|Fjernet beskyttelsen}} av «[[$1]]»",
        "protect-title": "Låser «$1»",
        "protect-title-notallowed": "Vis beskyttelsesnivået til «$1»",
        "prot_1movedto2": "[[$1]] flyttet til [[$2]]",
        "tooltip-summary": "Skriv et kort sammendrag",
        "interlanguage-link-title": "$1 – $2",
        "common.css": "/* CSS plassert i denne fila vil gjelde for alle utseender. */",
+       "print.css": "/* CSS som plasseres her vil påvirke utskriftsversjoner */",
+       "noscript.css": "/* CSS plassert her vil påvirke brukere som har slått av JavaScript */",
+       "group-autoconfirmed.css": "/* CSS plassert her vil kun påvirke autobekreftede brukere */",
+       "group-user.css": "/* CSS plassert her vil kun påvirke registrerte brukere */",
+       "group-bot.css": "/* CSS plassert her vil kun påvirke botter */",
+       "group-sysop.css": "/* CSS plassert her vil kun påvirke administratorer */",
+       "group-bureaucrat.css": "/* CSS plassert her vil kun påvirke byråkrater */",
        "common.js": "/* Javascript i denne fila vil gjelde for alle drakter. */",
+       "group-autoconfirmed.js": "/* JavaScript her vil kun lastes for autobekreftede brukere */",
+       "group-user.js": "/* JavaScript her vil kun lastes for registrerte brukere */",
+       "group-bot.js": "/* JavaScript her vil kun lastes for botter */",
+       "group-sysop.js": "/* Javascript her vil kun lastes for administratorer */",
+       "group-bureaucrat.js": "/* JavaScript her vil kun lastes for byråkrater */",
        "anonymous": "{{PLURAL:$1|Anonym bruker|Anonyme brukere}} av {{SITENAME}}",
        "siteuser": "{{SITENAME}}-bruker $1",
        "anonuser": "{{SITENAME}}s anonyme bruker $1",
        "patrol-log-header": "Dette er en logg over patruljerte sideversjoner.",
        "log-show-hide-patrol": "$1 patruljeringslogg",
        "log-show-hide-tag": "$1 merkelogg",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Merk revisjon $3 av $2 som patruljert?",
        "deletedrevision": "Slettet gammel revisjon $1.",
        "filedeleteerror-short": "Feil under filsletting: $1",
        "filedeleteerror-long": "Feil oppsto under filsletting:\n\n$1",
        "newimages-showbots": "Vis opplastinger av botter",
        "newimages-hidepatrolled": "Skjul patruljerte opplastinger",
        "noimages": "Ingenting å se.",
+       "gallery-slideshow-toggle": "Skift miniatyrbilder",
        "ilsubmit": "Søk",
        "bydate": "etter dato",
        "sp-newimages-showfrom": "Vis nye filer fra og med $2 $1",
-       "hours-abbrev": "$1t",
+       "hours-abbrev": "$1 t",
        "seconds": "{{PLURAL:$1|$1 sekund|$1 sekunder}}",
        "minutes": "{{PLURAL:$1|$1 minutt|$1 minutter}}",
        "hours": "{{PLURAL:$1|$1 time|$1 timer}}",
        "exif-compression-2": "CCITT Gruppe 3 1-dimensjonal modifisert Huffman-kjørelengdekoding",
        "exif-compression-3": "CCITT Gruppe 3 faks-koding",
        "exif-compression-4": "CCITT Gruppe 4 faks-koding",
+       "exif-compression-6": "JPEG (gammel)",
        "exif-copyrighted-true": "Opphavsrettsbeskyttet",
        "exif-copyrighted-false": "Opphavsrettstatus er ikke angitt",
+       "exif-photometricinterpretation-0": "Svart-hvitt (hvitt er 0)",
        "exif-photometricinterpretation-1": "Sort og hvitt (Sort er 0)",
+       "exif-photometricinterpretation-4": "Gjennomsiktighetsmaske",
+       "exif-photometricinterpretation-5": "Atskilt (trolig CMYK)",
+       "exif-photometricinterpretation-9": "CIE L*a*b* (ICC-koding)",
+       "exif-photometricinterpretation-10": "CIE L*a*b* (ITU-koding)",
+       "exif-photometricinterpretation-32803": "Fargefiltertabell",
+       "exif-photometricinterpretation-34892": "Lineær rå",
        "exif-unknowndate": "Ukjent dato",
        "exif-orientation-1": "Normal",
        "exif-orientation-2": "Snudd horisontalt",
        "confirm-unwatch-top": "Fjern denne siden fra overvåkningslisten din?",
        "confirm-rollback-button": "OK",
        "confirm-rollback-top": "Tilbakestill redigeringer på denne siden?",
+       "ellipsis": "…",
+       "percent": "$1&nbsp;%",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← forrige side",
        "imgmultipagenext": "neste side &rarr;",
        "autoredircomment": "Omdirigerer til [[$1]]",
        "autosumm-new": "Ny side: $1",
        "autosumm-newblank": "Opprettet tom side",
+       "size-bytes": "$1 {{PLURAL:$1|byte}}",
+       "size-pixel": "$1 {{PLURAL:$1|piksel|piksler}}",
        "lag-warn-normal": "Endringer nyere enn $1 {{PLURAL:$1|sekund|sekunder}} vises muligens ikke i denne listen.",
        "lag-warn-high": "På grunn av stor databaseforsinkelse, vil ikke endringer som er nyere enn $1 {{PLURAL:$1|sekund|sekunder}} vises i denne listen.",
        "watchlistedit-normal-title": "Rediger overvåkningsliste",
        "version-entrypoints": "Inngangspunkts-URL-er",
        "version-entrypoints-header-entrypoint": "Inngangspunkt",
        "version-entrypoints-header-url": "URL",
+       "version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Artikkelsti]",
+       "version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Skriptsti]",
        "version-libraries": "Installerte biblioteker",
        "version-libraries-library": "Bibliotek",
        "version-libraries-version": "Versjon",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (<strong>slått av</strong>)",
        "mediastatistics": "Mediestatistikk",
        "mediastatistics-summary": "Statistikk over opplastede filtyper. Dette inkluderer bare den nyeste versjonen av hver fil. Eldre eller slettede versjoner av filene er eksludert.",
+       "mediastatistics-nfiles": "$1 ($2&nbsp;%)",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte}} ($2; $3 %)",
        "mediastatistics-bytespertype": "Total filstørrelse for denne seksjonen: {{PLURAL:$1|$1 byte}} ($2; $3 %).",
        "mediastatistics-allbytes": "Total filstørrelse for alle filer: {{PLURAL:$1|$1 byte}} ($2).",
index 97dac43..3babc10 100644 (file)
@@ -22,7 +22,8 @@
                        "राम प्रसाद जोशी",
                        "Matma Rex",
                        "जनक राज भट्ट",
-                       "Suniltheblue"
+                       "Suniltheblue",
+                       "Irus"
                ]
        },
        "tog-underline": "रेखाङ्कित लिङ्क:",
        "category-file-count-limited": "निम्न  {{PLURAL:$1|फाइल|$1 फाइलहरू}} यस श्रेणीमा रहेको ।",
        "listingcontinuesabbrev": "निरन्तरता...",
        "index-category": "क्रमाङ्कित पृष्ठहरू",
-       "noindex-category": "à¤\95à¥\8dरमाà¤\99à¥\8dà¤\95न नगरिएका पृष्ठहरू",
+       "noindex-category": "à¤\85नà¥\81à¤\95à¥\8dरमण नगरिएका पृष्ठहरू",
        "broken-file-category": "टुटेको फाइल लिङ्कहरूसितको पृष्ठ",
        "about": "बारेमा",
        "article": "सामाग्री पृष्ठ",
        "talk": "वार्तालाप",
        "views": "अवलोकनहरू",
        "toolbox": "औजारहरू",
+       "tool-link-userrights": "परिवर्तन {{GENDER:$1|प्रयोगकर्ता}} समूह",
+       "tool-link-emailuser": "{{GENDER:$1|प्रयोगकर्ता}} लाई इमेल गर्ने",
        "userpage": "प्रयोगकर्ता पृष्ठ हेर्ने",
        "projectpage": "आयोजना पृष्ठ हेर्ने",
        "imagepage": "फाइल पृष्ठ हेर्नुहोस्",
        "privacy": "गोपनियता नीति",
        "privacypage": "Project:गोपनीयता नीति",
        "badaccess": "अनुमतिमा त्रुटि",
-       "badaccess-group0": "तपाà¤\88à¤\81ले अनुरोध गरेको कार्य गर्न तपाईंलाई अनुमति दिइएको छैन।",
+       "badaccess-group0": "तपाà¤\88à¤\82ले अनुरोध गरेको कार्य गर्न तपाईंलाई अनुमति दिइएको छैन।",
        "badaccess-groups": "तपाईंले अनुरोध गर्नुभएको कार्य  {{PLURAL:$2|समूह |कुनै एक समूह}}: $1 मा रहेका प्रयोगकर्ताहरूले मात्र गर्नसक्छन ।",
        "versionrequired": "MediaWiki संस्करण $1 चाहिने",
        "versionrequiredtext": "यो पृष्ठ प्रयोग गर्नको लागि MediaWiki $1 संस्करण चाहिन्छ ।\nहेर्नुहोस्  [[Special:Version|version page]]",
        "backlinksubtitle": "← $1",
        "retrievedfrom": " \"$1\" बाट निकालिएको",
        "youhavenewmessages": "तपाईंको लागि ($2) मा  $1 छ ।",
-       "youhavenewmessagesfromusers": "तपाईंको लागि {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरू}} का $1 छन् । ($2)",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|तपाईंको लागि}} {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरू}}का $1 छन् । ($2)",
        "youhavenewmessagesmanyusers": "तपाईंलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।",
        "newmessageslinkplural": "{{PLURAL:$1|एउटा नयाँ सन्देश|999=नयाँ सन्देशहरू}}",
        "newmessagesdifflinkplural": "अन्तिम {{PLURAL:$1|परिवर्तन|999=परिवर्तनहरू}}",
        "nosuchaction": "यस्तो कार्य हैन",
        "nosuchactiontext": "URL ले खुलाएको कार्य मान्य छैन ।\nतपाईंले URL गलत टाइपगर्नु भएको , वा गलत लिंक पछ्याउनु भएको हुनसक्छ ।\nयो{{SITENAME}}ले सफ्टवेयरमा भएको गल्ति देखाएको पनि हुनसक्छ ।",
        "nosuchspecialpage": "त्यस्तो विशेष पृष्ठ छैन",
-       "nospecialpagetext": "<strong>तपाà¤\88à¤\81ले अनुरोध गर्नुभएको विशेष पृष्ठ अमान्य छ ।</strong>\n\nमान्य पृष्ठहरूको सूची यहाँ [[Special:SpecialPages|{{int:specialpages}}]] उपलब्ध छ ।",
+       "nospecialpagetext": "<strong>तपाà¤\88à¤\82ले अनुरोध गर्नुभएको विशेष पृष्ठ अमान्य छ ।</strong>\n\nमान्य पृष्ठहरूको सूची यहाँ [[Special:SpecialPages|{{int:specialpages}}]] उपलब्ध छ ।",
        "error": "त्रुटि",
        "databaseerror": "डेटावेस त्रुटि",
        "databaseerror-text": "डेटाबेस क्वेरीमा खराबी देखा पर्‌यो ।\nयसले सफ्टवेयरमा त्रुटी रहेको इङ्गित गर्न सक्छ ।",
        "mypreferencesprotected": "तपाईंसँग तपाईंको अभिरुचीहरू सम्पादन गर्ने अनुमती छैन",
        "ns-specialprotected": "विशेष पृष्ठहरू सम्पादन गर्न सकिदैन।",
        "titleprotected": "[[User:$1|$1]]द्वारा यो शीर्षक निर्माणहुनबाट जोगाइएको छ।\nकारण <em>$2</em> हो ।",
-       "filereadonlyerror": "फाà¤\87ल \"$1\" à¤²à¤¾à¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िà¤\81दà¥\88न à¤\95िन à¤­à¤¨à¥\87 à¤«à¤¾à¤\87ल à¤­à¤£à¥\8dडार  \"$2\" à¤\95à¥\87वल à¤ªà¤¢à¥\8dनà¥\87 à¤¸à¥\8dथिति (read-only mode)मा à¤\9b।\n\nयसलाà¤\88 à¤¸à¥\81रà¤\95à¥\8dषित à¤\97रà¥\8dनà¥\87 à¤ªà¥\8dरवनà¥\8dधà¤\95लà¥\87  à¤¯à¥\8b à¤\95ारण à¤¦à¤¿à¤\8fà¤\95ाà¤\9bनà¥\8d : ''$3''।",
+       "filereadonlyerror": "à¤\85à¤\95à¥\8dषम à¤\97रà¥\8dन à¤ªà¤°à¤¿à¤®à¤¾à¤°à¥\8dà¤\9cन à¤«à¤¾à¤\87ल \"$1\" à¤«à¤¾à¤\87ल à¤­à¤£à¥\8dडार \"$2\" à¤®à¤¾ à¤ªà¤¢à¥\8dन-मातà¥\8dर à¤®à¥\8bड à¥¤ \n\nपà¥\8dरणालà¥\80 à¤ªà¥\8dरशासà¤\95 à¤¬à¤¨à¥\8dद à¤\97रà¥\8dनà¥\87 à¤¯à¥\8b à¤\9aढाà¤\8fà¤\95à¥\8b à¤¯à¥\8b à¤µà¥\8dयाà¤\96à¥\8dया: \"$3\".",
        "invalidtitle-knownnamespace": "नेमस्पेस \"$2\" तथा अक्षर \"$3\" सहितको अवैश शिर्षक",
        "invalidtitle-unknownnamespace": "अज्ञात नेमस्पेस अंक $1 तथा अक्षर \"$2\" भएको अवैध शिर्षक",
        "exception-nologin": "प्रवेश (लग ईन) नगरिएको",
        "virus-scanfailed": "पढाइ असफल(कोड $1)",
        "virus-unknownscanner": "अज्ञात एन्टीभाइरस:",
        "logouttext": "<strong>तपाईं अहिले बाहिर निस्कनु भएको छ।</strong>\n\nयाद राख्नुहोस् तपाईंले ब्राउजरको क्याच खालि नगर्दासम्म कुनै पृष्ठहरूमा तपाईं अझै प्रवेश गरिरखेको देखाउन सक्छ।",
+       "cannotlogoutnow-title": "अब लगआउट गर्न सकिँदैन",
+       "cannotlogoutnow-text": "लग आउट सम्भव छैन प्रयोग गर्दा $1.",
        "welcomeuser": "$1जी स्वागत छ!",
        "welcomecreation-msg": "तपाईंको खाता तयार भयो । \nतपाईंले चाहनु भएको खण्डमा {{SITENAME}} [[Special:Preferences|प्राथमिकताहरू]] परिवर्तन गर्न सक्नु हुनेछ ।",
        "yourname": "प्रयोगकर्ता नाम:",
        "createacct-yourpasswordagain-ph": "फेरि पासवर्ड लेख्नुहोस्",
        "userlogin-remembermypassword": "मलाई प्रवेश गराइराख्ने",
        "userlogin-signwithsecure": "सुक्षित जडान प्रयोग गर्ने",
+       "cannotlogin-title": "मा लग गर्न सक्दैनौं",
+       "cannotcreateaccount-title": "सिर्जना गर्न सकिँदैन खाता",
+       "cannotcreateaccount-text": "प्रत्यक्ष खाता सिर्जना सक्षम छैन on this wiki.",
        "yourdomainname": "तपाईंको ज्ञानक्षेत्र(डोमेन):",
        "password-change-forbidden": "यो विकिमा पासवर्ड परिवर्तन गर्न सक्नुहुन्न।",
        "externaldberror": "यहाँ प्रमाणिकरण डेटाबेस त्रुटि भयो या त तपाईंलाई आफ्नो बाहिरी खाता अद्यतन गर्ने अनुमति छैन।",
        "user-mail-no-addy": "इमेल ठेगाना बिना नै इमेल पठाउन खोजिएको थियो।",
        "user-mail-no-body": "खाली वा ज्यादै न्युन सन्देश भएको इमेल पठाउन खोजिएको ।",
        "changepassword": "पासवर्ड परिवर्तन गर्नुहोस्",
-       "resetpass_announce": "पà¥\8dरवà¥\87श à¤ªà¥\82रा à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88à¤\81ले पासवर्ड परिवर्तन गर्नुपर्छ।",
+       "resetpass_announce": "पà¥\8dरवà¥\87श à¤ªà¥\82रा à¤\97रà¥\8dन à¤¤à¤ªà¤¾à¤\88à¤\82ले पासवर्ड परिवर्तन गर्नुपर्छ।",
        "resetpass_text": "<!-- Add text here -->",
        "resetpass_header": "खाताको पासवर्ड परिवर्तन गर्ने",
        "oldpassword": "पुरानो पासवर्ड:",
        "changepassword-success": "तपाईंको पासवर्ड सफलतापूर्वक परिवर्तन भयो!",
        "changepassword-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेश (लग इन)को निम्ति प्रयास गर्नुभएको छ। \nकृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
        "resetpass_forbidden": "पासवर्ड परिवर्तन गर्न मिल्दैन",
-       "resetpass-no-info": "यà¥\8b à¤ªà¥\83षà¥\8dठ à¤¸à¤¿à¤§à¥\88 à¤¹à¥\87रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\81ले प्रवेश गर्नुपर्छ ।",
+       "resetpass-no-info": "यà¥\8b à¤ªà¥\83षà¥\8dठ à¤¸à¤¿à¤§à¥\88 à¤¹à¥\87रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\82ले प्रवेश गर्नुपर्छ ।",
        "resetpass-submit-loggedin": "प्रवेसशब्द परिवर्तन गर्ने",
        "resetpass-submit-cancel": "रद्द गर्ने",
        "resetpass-wrong-oldpass": "अस्थायी अथवा हालिएको प्रवेश शब्द अमान्य\nतपाईंले अघिबाट नैं प्रवेश शब्द सफलता पूर्वक परिवर्तन गरिसक्नु भएको हो वा नयाँ प्रवेश शब्दको निम्ति निवेदन गर्नुभएकोछ।",
        "missingsummary": "'''यादगर्नुहोस् :''' तपाईंले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईंले \"{{int:savearticle}}\"  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"{{int:savearticle}}\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
-       "missingcommentheader": "'''याद गर्नुहोस् :''' तपाईँले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईँले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा संग्रहित हुनेछ ।",
+       "missingcommentheader": "<strong>याद गर्नुहोस् :</strong> तपाईंले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईंले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईंको सम्पादन यसै रुपमा सङ्ग्रहित हुनेछ ।",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
        "previewerrortext": "तपाईंको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।",
        "accmailtitle": "पासवर्ड पठाइयो",
        "accmailtext": "जथाभावीरूपमा सृजना गरिएको प्रवेशशब्द प्रयोगकर्ता [[User talk:$1|$1]] को  $2 मा पठाइएको छ।\n\nयो नयाँ खाताको प्रवेशशब्द  ''[[Special:ChangePassword|change password]]'' मा प्रवेश गरेर परिवर्तन गर्न सकिन्छ ।",
        "newarticle": "(नयाँ)",
-       "newarticletext": "तपाà¤\88à¤\81लà¥\87 à¤\85हिलà¥\87 à¤¸à¤®à¥\8dम à¤¨à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤²à¤¿à¤\82à¤\99à¥\8dà¤\95 à¤ªà¤¹à¤¿à¤²à¥\8dयाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\9b।\nयà¥\8b à¤ªà¥\83षà¥\8dठ à¤¨à¤¿à¤°à¥\8dमाण à¤\97रà¥\8dन à¤¤à¤²à¤\95à¥\8b à¤\95à¥\8bषà¥\8dठमा à¤\9fाà¤\87प à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d  à¥¤(थप à¤\9cानà¤\95ारà¥\80à¤\95à¥\8b à¤²à¤¾à¤\97ि [$1 help page] à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d )।\nयहाà¤\81 à¤¤à¥\8dयतà¥\8dतिà¤\95à¥\88 à¤\86à¤\87पà¥\81à¤\97à¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b  '''back''' à¤¬à¤\9fन à¤¥à¤¿à¤\9aà¥\8dनà¥\81हà¥\8bस ।",
+       "newarticletext": "तपाà¤\88à¤\82लà¥\87 à¤\85हिलà¥\87 à¤¸à¤®à¥\8dम à¤¨à¤­à¤\8fà¤\95à¥\8b à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤²à¤¿à¤\99à¥\8dà¤\95 à¤ªà¤¹à¤¿à¤²à¥\8dयाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\9b।\nयà¥\8b à¤ªà¥\83षà¥\8dठ à¤¨à¤¿à¤°à¥\8dमाण à¤\97रà¥\8dन à¤¤à¤²à¤\95à¥\8b à¤\95à¥\8bषà¥\8dठमा à¤\9fाà¤\87प à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d  à¥¤(थप à¤\9cानà¤\95ारà¥\80à¤\95à¥\8b à¤²à¤¾à¤\97ि [$1 help page] à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d )।\nयहाà¤\81 à¤¤à¥\8dयतà¥\8dतिà¤\95à¥\88 à¤\86à¤\87पà¥\81à¤\97à¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b  '''back''' à¤¬à¤\9fन à¤¥à¤¿à¤\9aà¥\8dनà¥\81हà¥\8bसà¥\8d ।",
        "anontalkpagetext": "----''यो वार्तालाप पृष्ठ अज्ञात प्रयोगकर्ताको हो जसले अहिलेसम्म खाता बनाएकै छैन, अथवा जसले यस पृष्ठको उपयोग गर्दैन।\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}}|यस पृष्ठको शीर्षकको लागि खोज]] गर्न सक्नुहुन्छ,\nअथवा <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|पृष्ठ={{FULLPAGENAMEE}}}} सम्बन्धित लगहरू खोज्न सक्नुहुनेछ ]</span> तर तपाईंलाई नयाँ पृष्ठ बनाउने अधिकार छैन।",
        "missing-revision": "\"{{FULLPAGENAME}}\" पृष्ठको अवतरण #$1 रहेको छैन।\n\nसामान्य रूपमा यसो एउटा हटाइएको पृष्ठको पुरानो लिङ्कमा क्लिक गर्दा हुन्छ।\nअधिक जानकारीको लागि तपाईं [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} हटाएको लग] हेर्न सक्नुहुन्छ।",
-       "userpage-userdoesnotexist": "पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤\96ाता  \"<nowiki>$1</nowiki>\" à¤¦à¤°à¥\8dता à¤\97रिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\81ले पृष्ठ निर्माण/सम्पादन गर्न चाहनु भएको भए जाँच गर्नुहोस् ।",
+       "userpage-userdoesnotexist": "पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤\96ाता  \"<nowiki>$1</nowiki>\" à¤¦à¤°à¥\8dता à¤\97रिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\82ले पृष्ठ निर्माण/सम्पादन गर्न चाहनु भएको भए जाँच गर्नुहोस् ।",
        "userpage-userdoesnotexist-view": "प्रयोगकर्ता खाता \"$1\" दर्ता गरिएको छैन।",
        "blocked-notice-logextract": "यो प्रयोगकर्ता हाल प्रतिबन्धित छ।\nभर्खरैको प्रतिबन्ध लग प्रविष्टि सन्दर्भको निम्ति तल दिइन्छ:",
-       "clearyourcache": "<strong>à¤\9fिपà¥\8dपणà¥\80</strong> à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤\97रà¥\87पà¤\9bि, à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\87रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤\86फà¥\8dनà¥\8b à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b à¤\95à¥\8dयाà¤\9a à¤¬à¤¾à¤\88पास à¤\97रà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नसà¤\95à¥\8dà¤\9b।\n*<strong>फायरफà¤\95à¥\8dस / à¤¸à¤«à¤¾à¤°à¥\80मा:</strong> <em>Shift</em> à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80 à¤¥à¤¿à¤\9aà¥\80 à¤°à¤¾à¤\96à¥\87र <em>Reload</em> à¤\95à¥\8dलिà¤\95 à¤\97रà¥\8dनà¥\81परà¥\8dà¤\9b, à¤µà¤¾ <em>Ctrl-F5</em> à¤µà¤¾ <em>Ctrl-R</em> à¤¦à¤¬à¤¾à¤\89नà¥\81हà¥\8bस (मà¥\8dयाà¤\95मा <em>â\8c\98-R</em>)\n*<strong>à¤\97à¥\81à¤\97ल à¤\95à¥\8dरà¥\8bम:</strong> <em>Ctrl-Shift-R</em> à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80 à¤¦à¤¬à¤¾à¤\89नà¥\81हà¥\8bस (मà¥\8dयाà¤\95मा <em>â\8c\98-R</em>)\n*<strong>à¤\93पà¥\87रा:</strong> <em>Tools â\86\92 Preferences</em> à¤®à¤¾ à¤\97à¤\8fर à¤\95à¥\8dयाश à¤¹à¤\9fाà¤\89नà¥\81हà¥\8bस\n*<strong>à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤\8fà¤\95à¥\8dसपà¥\8dलà¥\8bरर</strong>: <em>Ctrl</em> à¤²à¤¾à¤\88 à¤¥à¤¿à¤\9aà¥\80 à¤°à¤¾à¤\96à¥\87र <em>Refresh</em> à¤\95à¥\8dलिà¤\95 à¤\97रà¥\8dनà¥\81हà¥\8bस à¤µà¤¾ <em>Ctrl-F5</em> à¤¥à¤¿à¤\9aà¥\8dनà¥\81हà¥\8bस",
+       "clearyourcache": "<strong>à¤\9fिपà¥\8dपणà¥\80</strong> à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤\97रà¥\87पà¤\9bि, à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤¹à¥\87रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\86फà¥\8dनà¥\8b à¤¬à¥\8dराà¤\89à¤\9cरà¤\95à¥\8b à¤\95à¥\8dयाà¤\9a à¤¬à¤¾à¤\88पास à¤\97रà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नसà¤\95à¥\8dà¤\9b।\n*<strong>फायरफà¤\95à¥\8dस / à¤¸à¤«à¤¾à¤°à¥\80मा:</strong> <em>Shift</em> à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80 à¤¥à¤¿à¤\9aà¥\80 à¤°à¤¾à¤\96à¥\87र <em>Reload</em> à¤\95à¥\8dलिà¤\95 à¤\97रà¥\8dनà¥\81परà¥\8dà¤\9b, à¤µà¤¾ <em>Ctrl-F5</em> à¤µà¤¾ <em>Ctrl-R</em> à¤¦à¤¬à¤¾à¤\89नà¥\81हà¥\8bसà¥\8d (मà¥\8dयाà¤\95मा <em>â\8c\98-R</em>)\n*<strong>à¤\97à¥\81à¤\97ल à¤\95à¥\8dरà¥\8bम:</strong> <em>Ctrl-Shift-R</em> à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80 à¤¦à¤¬à¤¾à¤\89नà¥\81हà¥\8bसà¥\8d (मà¥\8dयाà¤\95मा <em>â\8c\98-R</em>)\n*<strong>à¤\93पà¥\87रा:</strong> <em>Tools â\86\92 Preferences</em> à¤®à¤¾ à¤\97à¤\8fर à¤\95à¥\8dयाश à¤¹à¤\9fाà¤\89नà¥\81हà¥\8bसà¥\8d\n*<strong>à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤\8fà¤\95à¥\8dसपà¥\8dलà¥\8bरर</strong>: <em>Ctrl</em> à¤²à¤¾à¤\88 à¤¥à¤¿à¤\9aà¥\80 à¤°à¤¾à¤\96à¥\87र <em>Refresh</em> à¤\95à¥\8dलिà¤\95 à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d à¤µà¤¾ <em>Ctrl-F5</em> à¤¥à¤¿à¤\9aà¥\8dनà¥\81हà¥\8bसà¥\8d",
        "usercssyoucanpreview": "<strong>सुझाव:</strong> तपाईंको नयाँ सिययस सङ्ग्रह गर्न अघि  \"{{int:showpreview}}\" बटन थिचेर जाँच्नुहोस्।",
        "userjsyoucanpreview": "<strong>सुझाव:</strong> तपाईंको नयाँ जाभा स्क्रिप्ट सङ्ग्रह गर्न अघि  \"{{int:showpreview}}\" बटन थिचेर जाँच्नुहोस्।",
-       "usercsspreview": "<strong>याद राख्नुहोस तपाईँले आफ्नो प्रयोगकर्ता सियसयसको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाई अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
-       "userjspreview": "<strong>याद à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bस à¤¤à¤ªà¤¾à¤\88à¤\81ले आफ्नो प्रयोगकर्ता जाभास्क्रिप्टको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाइ अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
-       "sitecsspreview": "<strong>याद à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bसà¥\8d à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤\95à¥\87वल à¤µà¤¿à¤¶à¥\8dववà¥\8dयापà¥\80 à¤¸à¤¿à¤¯à¤¸à¤¯à¤¸à¤\95à¥\8b à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न à¤®à¤¾à¤¤à¥\8dर à¤\85वलà¥\8bà¤\95न à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b।\nयसलाई अहिलेसम्म सङ्ग्रह गरिएको छैन!</strong>",
-       "sitejspreview": "<strong>याद राख्नुहोस तपाईँले केवल जाभास्क्रिप्ट कोडको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाई अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
+       "usercsspreview": "<strong>याद राख्नुहोस् तपाईंले आफ्नो प्रयोगकर्ता सियसयसको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाई अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
+       "userjspreview": "<strong>याद à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bस à¤¤à¤ªà¤¾à¤\88à¤\82ले आफ्नो प्रयोगकर्ता जाभास्क्रिप्टको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाइ अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
+       "sitecsspreview": "<strong>याद à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bसà¥\8d à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\95à¥\87वल à¤µà¤¿à¤¶à¥\8dववà¥\8dयापà¥\80 à¤¸à¤¿à¤¯à¤¸à¤¯à¤¸à¤\95à¥\8b à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न à¤®à¤¾à¤¤à¥\8dर à¤\85वलà¥\8bà¤\95न à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b ।\nयसलाई अहिलेसम्म सङ्ग्रह गरिएको छैन!</strong>",
+       "sitejspreview": "<strong>याद राख्नुहोस् तपाईंले केवल जाभास्क्रिप्ट कोडको पूर्वावलोकन मात्र हेरिरहनु भएको छ।\nयसलाई अहिले सम्म सङ्ग्रह गरिएको छैन!</strong>",
        "userinvalidcssjstitle": "<strong>चेतावनी:</strong> यहाँ कुनैपनि \"$1\" नामको खोल छैन।\nप्रचलित .css तथा .js पृष्ठहरूले निम्नपद शीर्षक प्रयोग गर्छन्, जस्तै {{ns:user}}:Foo/Vector.css को सट्टामा {{ns:user}}:Foo/vector.css",
        "updated": "नवीन",
        "note": "'''सूचना:'''",
        "searchprofile-advanced-tooltip": "अनुकुल नेमस्पेसमा खोज्ने",
        "search-result-size": "$1 ({{PLURAL:$2|1 शब्द|$2 शब्दहरू}})",
        "search-result-category-size": "{{PLURAL:$1|एक सदस्य|$1 सदस्यहरू}} ({{PLURAL:$2|1 उपश्रेणी|$2  उपश्रेणीहरू}}, {{PLURAL:$3|एउटा फाइल|$3 फाइलहरू}})",
-       "search-redirect": "(à¤\9cानà¥\87 $1)",
+       "search-redirect": "(रिडाà¤\87रà¥\87à¤\95à¥\8dà¤\9f à¤¦à¥\87à¤\96ि $1)",
        "search-section": "(खण्ड $1)",
        "search-category": "(श्रेणी $1)",
        "search-file-match": "(भेटिएका फाइल सामाग्री)",
        "notvisiblerev": "पूर्वावलोकन हटाइयो",
        "watchlist-details": "तपाईंको निगरानी सूचीमा रहेका {{PLURAL:$1|$1 पृष्ठ|$1 पृष्ठहरू}} वार्तालाप पृष्ठ गनिएका छैनन्।",
        "wlheader-enotif": "ईमेल जानकारी सक्रिय गरियो ।",
-       "wlheader-showupdated": "तपाà¤\88à¤\81ले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
+       "wlheader-showupdated": "तपाà¤\88à¤\82ले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
        "wlnote": "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरूमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम  '''$1''' परिवर्तनहरू तल दिइएका छन्}}।",
        "wlshowlast": "पछिल्ला $2 दिनहरू $1 घण्टाहरू देखाउनुहोस्",
        "watchlist-hide": "लुकाउनुहोस्",
        "movepage-moved": "'''\"$1\" लाई \"$2\"मा सारिएको छ'''",
        "movepage-moved-redirect": "अनुप्रेषित पृष्ठ सृजना गरियो।",
        "movepage-moved-noredirect": "रिडाइरेक्ट पृष",
-       "articleexists": "यस नामको पृष्ठ पहिले देखि नै रहेको ,या तपाईँले छान्नु भएको नाम अमान्य छ।\nकृपया अर्कै नाम छान्नुहोस् ।",
+       "articleexists": "यस नामको पृष्ठ पहिले देखि नै रहेको छ, या तपाईंले छान्नु भएको नाम अमान्य छ । कृपया अर्कै नाम छान्नुहोस् ।",
        "cantmove-titleprotected": "तपाईं यो स्थानमा पृष्ठ सार्न सक्नुहुन्न, किनकी यो नयाँ शिर्षकलाई सिर्जना हुनबाट जोगाइएको छ",
        "movetalk": "सम्बन्धित वार्ता पृष्ठ",
        "move-subpages": "सहायक पृष्ठहरू सार्ने($1 सम्मको)",
        "tooltip-pt-mytalk": "{{GENDER:|तपाईंको}} वार्ता पृष्ठ",
        "tooltip-pt-anontalk": "यो IP ठेगानाबाट गरिएका सम्पादनका बारेमा बार्तालाप",
        "tooltip-pt-preferences": "{{GENDER:|तपाईंका}} अभिरुचिहरू",
-       "tooltip-pt-watchlist": "पà¥\83षà¥\8dठहरà¥\82à¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤\9cसà¤\95ा à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82लाà¤\88 à¤¤à¤ªà¤¾à¤\88à¤\81ले निगरानी गरिरहनु भएको छ",
+       "tooltip-pt-watchlist": "पà¥\83षà¥\8dठहरà¥\82à¤\95à¥\8b à¤¸à¥\82à¤\9aà¥\80 à¤\9cसà¤\95ा à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82लाà¤\88 à¤¤à¤ªà¤¾à¤\88à¤\82ले निगरानी गरिरहनु भएको छ",
        "tooltip-pt-mycontris": "{{GENDER:|तपाईंका}} योगदानहरूको सूची",
        "tooltip-pt-login": "तपाईंलाई प्रवेस गर्न सुझाव दिइन्छ ; तर यो जरुरी भने छैन",
        "tooltip-pt-logout": "निर्गमन (लग आउट) गर्नुहोस्",
        "compare-submit": "दँजाउनुहोस्",
        "compare-invalid-title": "तपाईंले खुलाउनु भएको शिर्षक अमान्य छ।",
        "compare-title-not-exists": "तपाईंले खुलाउनु भएको शिर्षक उपलब्ध छैन ।",
-       "compare-revision-not-exists": "तपाà¤\88à¤\81ले खुलाउनु भएको संस्करण उपलब्ध छैन ।",
+       "compare-revision-not-exists": "तपाà¤\88à¤\82ले खुलाउनु भएको संस्करण उपलब्ध छैन ।",
        "dberr-problems": "क्षमा पाउँ! यो साइटमा तकनीकी गड़बड़ी आइपरेकोछ।",
        "dberr-again": "केही समय पर्खिएर पुन: लोड हुन दिनुहोस् ।",
        "dberr-info": "(डेटाबेस सर्भर: $1 सँग सम्पर्क स्थापित गर्न सकिएन)",
        "htmlform-invalid-input": "तपाईंको कुनै प्रविष्ठिहरू सही छैनन्",
        "htmlform-select-badoption": "तपाईंले खुलाउनु भएको मान मान्य विकल्प हैन ।",
        "htmlform-int-invalid": "तपाईंले खुलाउनु भएको मान कुनै इन्टिजर हैन ।",
-       "htmlform-float-invalid": "तपाà¤\88à¤\81ले जनाउनु भएको मान कुनै संख्या हैन ।",
+       "htmlform-float-invalid": "तपाà¤\88à¤\82ले जनाउनु भएको मान कुनै संख्या हैन ।",
        "htmlform-int-toolow": "तपाईंले जनाउनु भएको मान न्युनतम $1 भन्दा कम भयो ।",
        "htmlform-int-toohigh": "तपाईंले जनाउनु भएको मान अधिकतम $1 भन्दा बढी भयो ।",
        "htmlform-required": "यसको मूल्य(value) चाहिन्छ",
index 8ab60d1..c86e332 100644 (file)
        "right-override-export-depth": "Pagina's exporteren inclusief pagina's waarnaar verwezen wordt tot een diepte van vijf",
        "right-sendemail": "E-mail versturen aan andere gebruikers",
        "right-passwordreset": "E-mails voor wachtwoord opnieuw instellen bekijken",
-       "right-managechangetags": "[[Special:Tags|Labels]] creëren en (de)activeren",
+       "right-managechangetags": "[[Special:Tags|Labels]] aanmaken en (de)activeren",
        "right-applychangetags": "[[Special:Tags|Labels]] aan bewerkingen toewijzen",
        "right-changetags": "Willekeurige [[Special:Tags|labels]] toevoegen aan en verwijderen van versies en logboekregels",
        "right-deletechangetags": "[[Special:Tags|Labels]] uit de database verwijderen",
        "grant-group-high-volume": "Activiteiten met hoog volume uitvoeren",
        "grant-group-customization": "Aanpassingen en voorkeuren",
        "grant-group-administration": "Beheerdershandelingen uitvoeren",
-       "grant-group-private-information": "Toegang tot persoonlijke gegevens over u",
+       "grant-group-private-information": "Persoonlijke gegevens over u bekijken",
        "grant-group-other": "Diverse handelingen",
        "grant-blockusers": "Gebruikers (de)blokkeren",
        "grant-createaccount": "Accounts aanmaken",
        "grant-highvolume": "Veel bewerkingen in korte tijd maken",
        "grant-oversight": "Gebruikers en versies verbergen",
        "grant-patrol": "Wijzigingen aan pagina's controleren",
-       "grant-privateinfo": "Toegang tot persoonlijke informatie",
+       "grant-privateinfo": "Persoonlijke gegevens bekijken",
        "grant-protect": "Pagina's beveiligen en beveiliging opheffen",
        "grant-rollback": "Wijzigingen aan pagina's terugdraaien",
        "grant-sendemail": "E-mail verzenden aan andere gebruikers",
        "grant-basic": "Basisrechten",
        "grant-viewdeleted": "Verwijderde bestanden en pagina's bekijken",
        "grant-viewmywatchlist": "Eigen volglijst bekijken",
-       "grant-viewrestrictedlogs": "Bekijk vertrouwelijke logbestanden",
+       "grant-viewrestrictedlogs": "Vertrouwelijke logboekbestanden bekijken",
        "newuserlogpage": "Logboek nieuwe gebruikers",
        "newuserlogpagetext": "Hieronder staan de nieuw ingeschreven gebruikers",
        "rightslog": "Gebruikersrechtenlogboek",
index b92995c..66b151e 100644 (file)
        "talk": "Diskusjon",
        "views": "Visningar",
        "toolbox": "Verktøy",
+       "tool-link-userrights": "Endra {{GENDER:$1|brukargrupper}}",
+       "tool-link-emailuser": "Send e-post til {{GENDER:$1|brukaren}}",
        "userpage": "Vis brukarside",
        "projectpage": "Sjå prosjektsida",
        "imagepage": "Vis filside",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Tomt objekt",
+       "duplicate-args-warning": "<strong>Åtvaring:</strong> [[:$1]] kallar [[:$2]] med meir enn éin verdi for argumentet «$3». Berre den sist oppgjevne verdien vert nytta.",
        "expensive-parserfunction-warning": "Åtvaring: Denne sida inneheld for mange prosesskrevande parserfunksjonar.\n\nDet burde vere færre enn {{PLURAL:$2|$2|$2}}, men er no {{PLURAL:$1|$1|$1}}.",
        "expensive-parserfunction-category": "Sider med for mange prosesskrevande parserfunksjonar",
        "post-expand-template-inclusion-warning": "Åtvaring: Storleiken på malar som er inkluderte er for stor.\nNokre malar vert ikkje inkluderte.",
        "activeusers-intro": "Dette er ei liste over brukarar som har hatt ei eller anna form for aktivitet innanfor {{PLURAL:$1|den siste dagen|dei siste dagane}}.",
        "activeusers-count": "{{PLURAL:$1|Éi handling|$1 handlingar}} {{PLURAL:$3|det siste døgeret|dei siste $3 døgra}}",
        "activeusers-from": "Vis brukarar frå og med:",
-       "activeusers-hidebots": "Gøym robotar",
-       "activeusers-hidesysops": "Gøym administratorar",
        "activeusers-noresult": "Ingen brukarar funne.",
        "listgrouprights": "Rettar for brukargrupper",
        "listgrouprights-summary": "Detter ei liste som viser brukargruppene som er definerte på wikien, og kva rettar dei har. Det kan finnast [[{{MediaWiki:Listgrouprights-helppage}}|meir informasjon]]  om dei ulike rettane.",
index 4048ef8..3493eb7 100644 (file)
@@ -33,6 +33,7 @@
        "tog-watchdefault": "Apondre las paginas que modifiqui e los fichièrs qu'impòrti a ma lista de seguiment",
        "tog-watchmoves": "Apondre las paginas e los fichièrs que tòrni nomenar a ma lista de seguiment",
        "tog-watchdeletion": "Apondre las paginas e los fichièrs que suprimissi de ma lista de seguiment",
+       "tog-watchuploads": "Apondre los novèls fichièrs qu’impòrti a ma lista de seguiment",
        "tog-watchrollback": "Apondre a ma lista de seguiment las paginas sus las qualas ai efectuat una revocacion",
        "tog-minordefault": "Considerar mas modificacions coma menoras per defaut",
        "tog-previewontop": "Far veire la previsualizacion al dessús de la zòna de modificacion",
@@ -42,7 +43,7 @@
        "tog-enotifminoredits": "M’avertir per corrièr electronic quitament en cas de modificacions menoras de las paginas o dels fichièrs",
        "tog-enotifrevealaddr": "Afichar mon adreça electronica dins la los corrièrs electronics d’avertiment",
        "tog-shownumberswatching": "Afichar lo nombre d'utilizaires que seguisson aquesta pagina",
-       "tog-oldsig": "Signatura existenta :",
+       "tog-oldsig": "Vòstra signatura existenta :",
        "tog-fancysig": "Tractar la signatura coma de wikitèxte (sens ligam automatic)",
        "tog-uselivepreview": "Utilizar l’apercebut rapid",
        "tog-forceeditsummary": "M'avertir quand ai pas completat lo contengut de la bóstia de comentaris",
@@ -59,7 +60,7 @@
        "tog-showhiddencats": "Afichar las categorias amagadas",
        "tog-norollbackdiff": "Afichar pas lo diff aprèp aver revocat",
        "tog-useeditwarning": "M’avisar quand quiti una pagina de modificacion sens publicar los cambiaments",
-       "tog-prefershttps": "Utilizar totjorn una connexion securizada en essent connectat",
+       "tog-prefershttps": "Utilizatz totjorn una connexion securizada per vos connectar",
        "underline-always": "Totjorn",
        "underline-never": "Pas jamai",
        "underline-default": "Valor per defaut del navigador o del tèma",
        "newwindow": "(dobrís una fenèstra novèla)",
        "cancel": "Anullar",
        "moredotdotdot": "E mai...",
-       "morenotlisted": "Aquesta lista es pas completa.",
+       "morenotlisted": "Aquesta lista pòt èsser incompleta.",
        "mypage": "Pagina",
        "mytalk": "Discussion",
        "anontalk": "Discussion",
        "talk": "Discussion",
        "views": "Afichatges",
        "toolbox": "Aisinas",
+       "tool-link-userrights": "Modificar los gropes de {{GENDER:$1|l’utilizaire|l’utilizaira}}",
+       "tool-link-emailuser": "Mandar un corrièr electronic a {{GENDER:$1|l’utilizaire|l’utilizaira}}",
        "userpage": "Pagina d'utilizaire",
        "projectpage": "Pagina meta",
        "imagepage": "Veire la pagina del fichièr",
        "virus-unknownscanner": "antivirús desconegut :",
        "logouttext": "'''Ara, sètz desconnectat.'''\n\nNotatz que d'unas paginas pòdon èsser encara afichadas coma s'eratz encara connectat, fins al moment qu'escafaretz l'escondedor de vòstre navigador.",
        "cannotlogoutnow-title": "Impossible de se desconnectar ara",
+       "cannotlogoutnow-text": "La desconnexion es pas possibla en utilizant $1.",
        "welcomeuser": "Benvenguda, $1&nbsp;!",
        "welcomecreation-msg": "Vòstre compte d'utilizaire es estat creat.\nDoblidetz pas de modificar [[Special:Preferences|vòstras preferéncias per {{SITENAME}}]].",
        "yourname": "Nom d'utilizaire :",
        "createacct-yourpasswordagain-ph": "Entratz lo senhal tornarmai",
        "userlogin-remembermypassword": "Gardar ma session activa",
        "userlogin-signwithsecure": "Utilizar una connexion securizada",
+       "cannotlogin-title": "Impossible de se connectar",
+       "cannotlogin-text": "La connexion es pas possibla.",
        "cannotloginnow-title": "Impossible de se connectar ara",
+       "cannotloginnow-text": "La connexion es pas possibla en utilizant $1.",
+       "cannotcreateaccount-title": "Creacion de comptes impossibla",
+       "cannotcreateaccount-text": "La creacion dirècta de comptes d'utilizaires es pas activada sus aqueste wiki.",
        "yourdomainname": "Vòstre domeni",
        "password-change-forbidden": "Podètz pas modificar los senhals sus aqueste wiki.",
        "externaldberror": "Siá una error s’es produita amb la basa de donadas d’autentificacion extèrna, siá sètz pas autorizat a metre a jorn vòstre compte extèrne.",
        "login": "Identificacion",
+       "login-security": "Verificar vòstra identitat",
        "nav-login-createaccount": "Crear un compte o se connectar",
        "userlogin": "Crear un compte o se connectar",
        "userloginnocreate": "Connexion",
        "userlogin-resetpassword-link": "Senhal doblidat ?",
        "userlogin-helplink2": "Ajuda a la connexion",
        "userlogin-loggedin": "Sètz ja connectat en tant que {{GENDER:$1|$1}}.\nUtilizatz lo formulari çaijós per vos connectar amb un autre utilizaire.",
+       "userlogin-reauth": "Vos cal vos reconnectar per verificar que sètz {{GENDER:$1|$1}}.",
        "userlogin-createanother": "Crear un autre compte",
        "createacct-emailrequired": "Adreça electronica",
        "createacct-emailoptional": "Adreça de corrièr electronic (facultativa)",
        "createacct-reason-ph": "Perqué creatz un autre compte",
        "createacct-submit": "Creatz vòstre compte",
        "createacct-another-submit": "Crear un compte",
+       "createacct-continue-submit": "Contunhar la creacion de compte",
+       "createacct-another-continue-submit": "Contunhar la creacion de compte",
        "createacct-benefit-heading": "{{SITENAME}} es escrit per de monde coma vos.",
        "createacct-benefit-body1": "{{PLURAL:$1|cambiament|cambiaments}}",
        "createacct-benefit-body2": "{{PLURAL:$1|pagina|paginas}}",
        "createacct-another-realname-tip": "Lo nom vertadièr es opcional.\nSe decidissètz de lo provesir, serà utilizat per atribuir a l’utilizaire sos trabalhs.",
        "pt-login": "Se connectar",
        "pt-login-button": "Se connectar",
+       "pt-login-continue-button": "Contunhar la connexion",
        "pt-createaccount": "Crear un compte",
        "pt-userlogout": "Se desconnectar",
        "php-mail-error-unknown": "Error desconeguda dins la foncion mail() de PHP.",
        "changepassword-success": "Vòstre senhal es estat modificat !",
        "changepassword-throttled": "Avètz ensajat un tròp grand nombre de connexions darrièrament.\nEsperatz $1 abans d’ensajar tornarmai.",
        "botpasswords": "Senhals de robòts",
+       "botpasswords-label-appid": "Nom del robòt :",
+       "botpasswords-label-create": "Crear",
+       "botpasswords-label-update": "Metre a jorn",
+       "botpasswords-label-cancel": "Anullar",
+       "botpasswords-label-delete": "Suprimir",
+       "botpasswords-label-resetpassword": "Reïnicializar lo senhal",
+       "botpasswords-label-grants": "Dreits aplicables :",
+       "botpasswords-label-grants-column": "Acordat",
+       "botpasswords-bad-appid": "Lo nom del robòt «$1» es pas valid.",
        "resetpass_forbidden": "Los senhals pòdon pas èsser cambiats",
        "resetpass-no-info": "Vos cal èsser connectat per aver accès a aquesta pagina.",
        "resetpass-submit-loggedin": "Modificar lo senhal",
        "history-feed-description": "Istoric per aquesta pagina sul wiki",
        "history-feed-item-nocomment": "$1 lo $2",
        "history-feed-empty": "La pagina demandada existís pas.\nBenlèu es estada escafada o renomenada.\nEnsajatz de [[Special:Search|recercar sul wiki]] per trobar de paginas en rapòrt.",
+       "history-edit-tags": "Modificar las balisas de las versions seleccionadas",
        "rev-deleted-comment": "(resumit de comentari suprimit)",
        "rev-deleted-user": "(nom d’utilizaire suprimit)",
        "rev-deleted-event": "(detalhs de l'entrada suprimida)",
        "mergehistory-empty": "Cap de revision pòt pas èsser fusionada.",
        "mergehistory-done": "$3 version{{PLURAL:$3||s}} de $1 {{PLURAL:$3|es estada fusionada|son estada fusionadas}} dins [[:$2]].",
        "mergehistory-fail": "Impossible de procedir a la fusion dels istorics. Seleccionatz  tornamai la pagina e mai los paramètres de data.",
+       "mergehistory-fail-bad-timestamp": "L’orodatatge es pas valid.",
        "mergehistory-fail-toobig": "Impossible d’efectuar la fusion de l’istoric perque un nombre de {{PLURAL:$1|revisions}} superior al limit de $1 deuriá èsser desplaçat.",
        "mergehistory-no-source": "La pagina d'origina $1 existís pas.",
        "mergehistory-no-destination": "La pagina de destinacion $1 existís pas.",
        "searchprofile-advanced-tooltip": "Recercar dins d'espacis de noms personalizats",
        "search-result-size": "$1 ({{PLURAL:$2|1 mot|$2 mots}})",
        "search-result-category-size": "$1 membre{{PLURAL:$1||s}} ($2 soscategoria{{PLURAL:$2||s}}, $3 fichièr{{PLURAL:$3||s}})",
-       "search-redirect": "(redireccion cap a $1)",
+       "search-redirect": "(redireccion dempuèi $1)",
        "search-section": "(seccion $1)",
        "search-category": "(categoria $1)",
        "search-file-match": "(correspond al contengut del fichièr)",
        "activeusers-intro": "Aquò es una lista dels utilizaires qu'an exerçat una activitat quina que siá al cors {{PLURAL:$1|de la darrièra jornada|dels $1 darrièrs jorns}}.",
        "activeusers-count": "$1 {{PLURAL:$1|accion|accions}} al moment {{PLURAL:$3|del darrièr jorn|dels $3 darrièrs jorns}}",
        "activeusers-from": "Afichar los utilizaires dempuèi :",
-       "activeusers-hidebots": "Amagar los robòts",
-       "activeusers-hidesysops": "Amagar los administrators",
        "activeusers-noresult": "Cap d'utilizaire pas trobat.",
        "listgrouprights": "Dreits dels gropes d'utilizaires",
        "listgrouprights-summary": "Aquesta pagina conten una lista de gropes definits sus aqueste wiki e mai los dreits d'accès qu'i son associats.\nI pòt aver [[{{MediaWiki:Listgrouprights-helppage}}|d'entresenhas complementàrias]] a prepaus dels dreits.",
        "htmlform-cloner-create": "Apondre encara",
        "htmlform-cloner-delete": "Suprimir",
        "htmlform-cloner-required": "Una valor al mens es obligatòria.",
-       "sqlite-has-fts": "$1 amb recèrca en tèxte integral suportada",
-       "sqlite-no-fts": "$1 sens recèrca en tèxte integral suportada",
        "logentry-delete-delete": "$1 {{GENDER:$2|a suprimit}} la pagina $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|a restablit}} la pagina $3",
        "logentry-delete-event": "$1 {{GENDER:$2|a modificat}} la visibilitat {{PLURAL:$5|d'un eveniment del jornal|de $5 eveniments del jornal}} sus $3 : $4",
        "feedback-close": "Fait",
        "feedback-external-bug-report-button": "Senhalar un bug tecnic",
        "feedback-dialog-title": "Sometre un comentari",
-       "feedback-error-title": "Error",
        "feedback-error1": "Error : Resultat de l'IPA pas reconegut",
        "feedback-error2": "Error : la modificacion a fracassat",
        "feedback-error3": "Error : pas cap de responsa de l'API",
        "feedback-thanks": "Mercé ! Vòstre comentari es estat publicat sus la pagina \"[$2 $1]\".",
        "feedback-thanks-title": "Mercés !",
        "feedback-useragent": "Agent utilizaire :",
-       "searchsuggest-search": "Recercar",
+       "searchsuggest-search": "Recercar sus {{SITENAME}}",
        "searchsuggest-containing": "que conten...",
        "api-error-badaccess-groups": "Sètz pas autorizat a cargar de fichièrs sus aqueste wiki.",
        "api-error-badtoken": "Error intèrna : marrit « geton ».",
index 676e1b3..75d2b95 100644 (file)
        "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.",
+       "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",
+       "magiclink-tracking-pmid-desc": "Ta strona zawiera magiczne linki do PMID. Zobacz w [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org], jak dokonać migracji.",
+       "magiclink-tracking-isbn": "Strony używające magicznych linków ISBN",
+       "magiclink-tracking-isbn-desc": "Ta strona zawiera magiczne linki do ISBN. Zobacz w [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org], jak dokonać migracji.",
        "specialloguserlabel": "Kto:",
        "speciallogtitlelabel": "Co (tytuł lub {{ns:user}}:nick użytkownika):",
        "log": "Rejestr operacji",
        "modifiedarticleprotection": "zmienił(a) stopień zabezpieczenia „[[$1]]”",
        "unprotectedarticle": "odbezpieczył(a) „[[$1]]”",
        "movedarticleprotection": "przeniósł ustawienia zabezpieczeń z [[$2]] do [[$1]]",
+       "protectedarticle-comment": "{{GENDER:$2|Zabezpieczył|Zabezpieczyła}} „[[$1]]”",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Zmienił|Zmieniła}} poziom zabezpieczenia „[[$1]]”",
+       "unprotectedarticle-comment": "{{GENDER:$2|Usunął|Usunęła}} zabezpieczenie z „[[$1]]”",
        "protect-title": "Zmiana stopnia zabezpieczenia „$1”",
        "protect-title-notallowed": "Podgląd stopnia zabezpieczenia „$1”",
        "prot_1movedto2": "stronę [[$1]] przeniósł do [[$2]]",
        "patrol-log-header": "Poniżej znajduje się rejestr patrolowania stron.",
        "log-show-hide-patrol": "$1 rejestr sprawdzania",
        "log-show-hide-tag": "$1 rejestr znaczników",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Oznaczyć wersję $3 strony $2 jako sprawdzoną?",
        "deletedrevision": "Usunięto poprzednie wersje $1",
        "filedeleteerror-short": "Błąd przy usuwaniu pliku $1",
        "filedeleteerror-long": "Wystąpiły błędy przy usuwaniu pliku:\n\n$1",
        "log-action-filter-upload-overwrite": "Przesłane ponownie",
        "authmanager-authn-autocreate-failed": "Automatyczne tworzenie lokalnego konta nie powiodło się: $1",
        "authmanager-create-disabled": "Utworzenie konta jest wyłączone.",
-       "authmanager-create-from-login": "Aby utworzyć konto, wypełnij poniższe pola.",
+       "authmanager-create-from-login": "Aby utworzyć konto, wypełnij odpowiednie pola.",
+       "authmanager-create-not-in-progress": "Tworzenie konta nie jest wykonywane lub dane sesji zostały utracone. Zacznij od początku.",
        "authmanager-authplugin-setpass-failed-title": "Zmiana hasła nie powiodła się",
        "authmanager-authplugin-setpass-failed-message": "Wtyczka do uwierzytelniania uniemożliwiła zmianę hasła.",
        "authmanager-authplugin-create-fail": "Wtyczka do uwierzytelniania uniemożliwiła utworzenie konta.",
index 31f79c7..90cf9cc 100644 (file)
        "underline-default": "Padrão do navegador/skin",
        "editfont-style": "Estilo da fonte da área de edição:",
        "editfont-default": "Padrão do navegador",
-       "editfont-monospace": "Fonte mono-espaçada",
+       "editfont-monospace": "Fonte monoespaçada",
        "editfont-sansserif": "Fonte sem serifa",
        "editfont-serif": "Fonte serifada",
        "sunday": "domingo",
        "protectedpages-page": "Página",
        "protectedpages-expiry": "Expira",
        "protectedpages-performer": "Usuário que protegeu",
-       "protectedpages-params": "Parâmetros de proteção.",
+       "protectedpages-params": "Parâmetros de proteção",
        "protectedpages-reason": "Motivo",
        "protectedpages-submit": "Exibir páginas",
        "protectedpages-unknown-timestamp": "Desconhecido",
        "delete-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nA eliminação de tais páginas foi restrita, a fim de se evitarem problemas acidentais em {{SITENAME}}.",
        "delete-warning-toobig": "Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.\nEliminá-la poderá causar problemas na base de dados de {{SITENAME}};\nprossiga com cuidado.",
        "deleteprotected": "Não é possível eliminar esta página porque foi protegida.",
-       "deleting-backlinks-warning": "'''Cuidado:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] ligam ou redirecionam para a página que você está prestes a excluir.",
+       "deleting-backlinks-warning": "'''Cuidado:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|outras páginas]] ligam ou redirecionam para a página que você está prestes a eliminar.",
        "rollback": "Reverter edições",
        "rollbacklink": "reverter",
        "rollbacklinkcount": "reverter $1 {{PLURAL:$1|edição|edições}}",
        "protect-cascadeon": "Esta página está protegida porque é transclusa da seguinte {{PLURAL:$1|página, que possui|páginas, que possuem}} a proteção em cascata ativas.\nAs mudanças no nível de proteção desta página não afetam a proteção em cascata.",
        "protect-default": "Permitir todos os usuários",
        "protect-fallback": "Permitir apenas os usuários com privilégio de \"$1\"",
-       "protect-level-autoconfirmed": "Permitir apenas usuários auto-confirmados",
+       "protect-level-autoconfirmed": "Permitir apenas usuários autoconfirmados",
        "protect-level-sysop": "Permitir apenas administradores",
        "protect-summary-cascade": "em cascata",
        "protect-expiring": "expira em $1 (UTC)",
        "tooltip-t-recentchangeslinked": "Mudanças recentes nas páginas para as quais esta possui links",
        "tooltip-feed-rss": "Feed RSS desta página",
        "tooltip-feed-atom": "Feed Atom desta página",
-       "tooltip-t-contributions": "Ver as contribuições {{GENDER:$1{{BASEPAGENAME}}|deste usuário|desta usuária|deste(a) usuário(a)}}",
+       "tooltip-t-contributions": "Ver as contribuições {{GENDER:$1|deste usuário|desta usuária|deste(a) usuário(a)}}",
        "tooltip-t-emailuser": "Enviar um e-mail a {{GENDER:{{BASEPAGENAME}}|este usuário|esta usuária|este(a) usuário(a)}}",
        "tooltip-t-info": "Mais informações sobre esta página",
        "tooltip-t-upload": "Enviar arquivos",
index 4a5ed60..276d93e 100644 (file)
        "search": "Pesquisa",
        "search-ignored-headings": " #<!-- deixe esta linha exatamente como ela está --> <pre>\n# Títulos de página que serão ignorados pela pesquisa.\n# Mudanças a esta lista terão efeito quando a página com o título referido for indexada.\n# Pode forçar a indexação de uma página realizando uma edição nula nessa página.\n# A sintaxe é a seguinte:\n#  * Tudo desde um símbolo de cardinal (#) até ao fim da linha é um comentário\n#  * Cada linha não vazia é o título exato a ignorar, respeitando o uso de maiúsculas\nReferências\nLinks externos\nVer também\n #</pre> <!-- deixe esta linha exatamente como ela está -->",
        "searchbutton": "Pesquisar",
-       "go": "Ir",
+       "go": "Prosseguir",
        "searcharticle": "Ir",
        "history": "Histórico",
        "history_short": "Histórico",
        "botpasswords-label-cancel": "Cancelar",
        "botpasswords-label-delete": "Eliminar",
        "botpasswords-label-resetpassword": "Redefinir palavra-passe",
-       "botpasswords-label-grants": "Concessões de privilégios aplicáveis:",
-       "botpasswords-help-grants": "Cada concessão de privilégios dá acesso às permissões listadas que uma conta de utilizador já possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.",
+       "botpasswords-label-grants": "Concessões de permissões aplicáveis:",
+       "botpasswords-help-grants": "As concessões de permissões permitem acesso a permissões já detidas pela sua conta de utilizador. Fazer uma concessão aqui não fornece acesso a quaisquer permissões que a usa conta de utilizador não possua. Consulte a [[Special:ListGrants|tabela de concessões]] para mais informação.",
        "botpasswords-label-grants-column": "Concedido",
        "botpasswords-bad-appid": "O nome do robô \"$1\" não é válido.",
        "botpasswords-insert-failed": "Falhou ao adicionar o nome do robô \"$1\". Já foi adicionado?",
        "right-ipblock-exempt": "Contornar bloqueios de IP, bloqueios automáticos e bloqueios de gamas de IP",
        "right-unblockself": "Desbloquearem-se a si próprios",
        "right-protect": "Mudar níveis de proteção e editar páginas protegidas em cascata",
-       "right-editprotected": "Editar páginas protegidas como \"{{int:protect-level-sysop}}\"",
-       "right-editsemiprotected": "Editar páginas protegidas como \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editprotected": "Editar páginas protegidas com \"{{int:protect-level-sysop}}\"",
+       "right-editsemiprotected": "Editar páginas protegidas com \"{{int:protect-level-autoconfirmed}}\"",
        "right-editcontentmodel": "Editar o modelo de conteúdo de uma página",
        "right-editinterface": "Editar a interface de utilizador",
        "right-editusercssjs": "Editar os ficheiros CSS e JS de outros utilizadores",
        "enhancedrc-history": "histórico",
        "recentchanges": "Mudanças recentes",
        "recentchanges-legend": "Opções das mudanças recentes",
-       "recentchanges-summary": "Acompanha nesta página as mudanças mais recentes desta wiki.",
+       "recentchanges-summary": "Acompanhe nesta página as mudanças mais recentes da wiki.",
        "recentchanges-noresult": "Nenhuma alteração correspondente a esses critérios foi realizada durante o período selecionado.",
        "recentchanges-feed-description": "Acompanhe neste ''feed'' as mudanças mais recentes da wiki.",
        "recentchanges-label-newpage": "Esta edição criou uma nova página",
        "filedelete-edit-reasonlist": "Editar motivos de eliminação",
        "filedelete-maintenance": "Eliminação e restauro de ficheiros foram temporariamente impossibilitadas durante a manutenção.",
        "filedelete-maintenance-title": "Não é possível eliminar o ficheiro",
-       "mimesearch": "Pesquisa MIME",
-       "mimesearch-summary": "Esta página permite a filtragem de ficheiros pelo seu tipo MIME. Entrada: contenttype/subtype ou contenttype/*, ex. <code>image/jpeg</code>.",
+       "mimesearch": "Pesquisa de ficheiros pelo tipo MIME",
+       "mimesearch-summary": "Esta página permite a filtragem de ficheiros pelo seu tipo MIME.\nSintaxe: \"tipo de conteúdo/subtipo\" ou \"tipo de conteúdo/*\". Exemplos, <code>image/jpeg</code>, <code>image/png</code>, <code>application/*</code>.",
        "mimetype": "Tipo MIME:",
        "download": "descarregar",
        "unwatchedpages": "Páginas não vigiadas",
-       "listredirects": "Lista de redirecionamentos",
-       "listduplicatedfiles": "Lista de ficheiros com duplicados",
+       "listredirects": "Redirecionamentos",
+       "listduplicatedfiles": "Ficheiros com duplicados",
        "listduplicatedfiles-summary": "Esta é uma lista de ficheiros cuja versões mais recentes são duplicados da versão mais recente de outros ficheiros. Só os ficheiros locais são considerados.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] tem [[$3|{{PLURAL:$2|um duplicado|$2 duplicados}}]].",
        "unusedtemplates": "Predefinições não utilizadas",
        "randomincategory-nopages": "Não há páginas na categoria [[:Category:$1|$1]].",
        "randomincategory-category": "Categoria:",
        "randomincategory-legend": "Página aleatória na categoria",
-       "randomincategory-submit": "Ir",
+       "randomincategory-submit": "Continuar",
        "randomredirect": "Redirecionamento aleatório",
        "randomredirect-nopages": "Não há redirecionamentos no domínio \"$1\".",
        "statistics": "Estatísticas",
        "statistics-users": "[[Special:ListUsers|Utilizadores]] registados",
        "statistics-users-active": "Utilizadores ativos",
        "statistics-users-active-desc": "Utilizadores que efectuaram uma operação {{PLURAL:$1|no último dia|nos últimos $1 dias}}",
-       "pageswithprop": "Páginas com uma propriedade",
-       "pageswithprop-legend": "Páginas com uma propriedade",
+       "pageswithprop": "Páginas que usam uma propriedade",
+       "pageswithprop-legend": "Páginas que usam uma propriedade",
        "pageswithprop-text": "Esta página lista páginas que usam uma propriedade em particular.",
        "pageswithprop-prop": "Nome da propriedade:",
        "pageswithprop-submit": "Avançar",
        "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.",
+       "magiclink-tracking-rfc": "Páginas que usam links mágicos RFC",
+       "magiclink-tracking-rfc-desc": "Esta página usa links mágicos RFC. Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber como migrar.",
+       "magiclink-tracking-pmid": "Páginas que usam links mágicos PMID",
+       "magiclink-tracking-pmid-desc": "Esta página usa links mágicos PMID. Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber como migrar.",
+       "magiclink-tracking-isbn": "Páginas que usam links mágicos ISBN",
+       "magiclink-tracking-isbn-desc": "Esta página usa links mágicos ISBN. Consulte a [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] para saber como migrar.",
        "specialloguserlabel": "Executante:",
        "speciallogtitlelabel": "Alvo (título ou página ou {{ns:user}}:nome de utilizador):",
        "log": "Registos",
        "listusers-submit": "Mostrar",
        "listusers-noresult": "Não foram encontrados utilizadores.",
        "listusers-blocked": "({{GENDER:$1|bloqueado|bloqueada|bloqueado(a)}})",
-       "activeusers": "Lista de utilizadores ativos",
+       "activeusers": "Utilizadores ativos",
        "activeusers-intro": "Esta é uma lista dos utilizadores com qualquer tipo de atividade {{PLURAL:$1|no último dia|nos últimos $1 dias}}.",
        "activeusers-count": "$1 {{PLURAL:$1|ação|ações}} {{PLURAL:$3|no último dia|nos últimos $3 dias}}",
        "activeusers-from": "Mostrar utilizadores começados por:",
        "listgrouprights-namespaceprotection-header": "Restrições de domínios",
        "listgrouprights-namespaceprotection-namespace": "Domínio",
        "listgrouprights-namespaceprotection-restrictedto": "Direito(s) do utilizador para editar",
-       "listgrants": "Concessões de privilégios a aplicações",
-       "listgrants-summary": "Esta é uma lista das possíveis concessões de privilégios e dos respetivos privilégios do utilizador que são atribuídas por cada concessão. Os utilizadores podem autorizar aplicações a utilizar a sua conta, agindo assim em seu nome mas com as permissões limitadas com base nestas concessões de privilégios. Uma aplicação que age em nome de um utilizador não pode utilizar permissões que o utilizador não possui.\nPoderá existir [[{{MediaWiki:Listgrouprights-helppage}}|informação adicional]] sobre as permissões individuais.",
+       "listgrants": "Concessões de permissões a aplicações ligadas",
+       "listgrants-summary": "Esta é uma lista das possíveis concessões de permissões e das respetivas permissões dos utilizadores que são atribuídas por cada concessão. Os utilizadores podem autorizar aplicações a utilizar a sua conta, agindo assim em seu nome mas com as permissões limitadas com base nestas concessões. Uma aplicação que age em nome de um utilizador não pode utilizar permissões que o utilizador não possui.\nPoderá existir [[{{MediaWiki:Listgrouprights-helppage}}|informação adicional]] sobre as permissões individuais.",
        "listgrants-grant": "Concessão de permissões",
        "listgrants-rights": "Permissões",
        "trackingcategories": "Categorias de monitorização",
        "trackingcategories-msg": "Categoria monitorada",
        "trackingcategories-name": "Nome da mensagem",
        "trackingcategories-desc": "Critérios de inclusão",
-       "restricted-displaytitle-ignored": "Páginas com títulos de exibição ignorados",
+       "restricted-displaytitle-ignored": "Páginas com títulos de apresentação ignorados",
        "restricted-displaytitle-ignored-desc": "Esta página tem um <code><nowiki>{{DISPLAYTITLE}}</nowiki></code> ignorado porque não é equivalente ao título verdadeiro da página.",
        "noindex-category-desc": "A página não é indexada por robôs porque contém a palavra mágica <code><nowiki>__NOINDEX__</nowiki></code> e está num domínio onde esta palavra mágica é permitida.",
        "index-category-desc": "A página contém a palavra mágica <code><nowiki>__INDEX__</nowiki></code> (e está num domínio em que essa marca é permitida) e, portanto, será indexada pelos robôs mesmo quando normalmente não o seria.",
        "modifiedarticleprotection": "alterou o nível de proteção para \"[[$1]]\"",
        "unprotectedarticle": "desprotegeu \"[[$1]]\"",
        "movedarticleprotection": "moveu as configurações de proteção de \"[[$2]]\" para \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Protegeu}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Alterou o nível de proteção}} de \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Removeu a proteção}} de \"[[$1]]\"",
        "protect-title": "Alterar o nível de proteção de \"$1\"",
        "protect-title-notallowed": "Ver o nível de proteção de \"$1\"",
        "prot_1movedto2": "moveu [[$1]] para [[$2]]",
        "whatlinkshere-hidelinks": "$1 ligações",
        "whatlinkshere-hideimages": "$1 ligações para ficheiros",
        "whatlinkshere-filters": "Filtros",
-       "whatlinkshere-submit": "Ir",
+       "whatlinkshere-submit": "Continuar",
        "autoblockid": "Bloqueio automático nº$1",
        "block": "Bloquear utilizador(a)",
        "unblock": "Desbloquear utilizador",
        "pageinfo-header-edits": "Histórico de edições",
        "pageinfo-header-restrictions": "Proteção da página",
        "pageinfo-header-properties": "Propriedades da página",
-       "pageinfo-display-title": "Título exibido",
+       "pageinfo-display-title": "Título apresentado",
        "pageinfo-default-sort": "Chave de classificação padrão",
        "pageinfo-length": "Tamanho da página (em bytes)",
        "pageinfo-article-id": "ID da página",
        "patrol-log-header": "Este é um registo de edições patrulhadas.",
        "log-show-hide-patrol": "$1 registo de edições patrulhadas",
        "log-show-hide-tag": "$1 registo de etiquetas",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Marcar a revisão $3 de $2 como patrulhada?",
        "deletedrevision": "Apagou a versão antiga $1",
        "filedeleteerror-short": "Erro ao eliminar ficheiro: $1",
        "filedeleteerror-long": "Foram encontrados erros ao tentar eliminar o ficheiro:\n\n$1",
        "exif-orientation-8": "Rodado 90° no sentido horário",
        "exif-planarconfiguration-1": "formato irregular",
        "exif-planarconfiguration-2": "formato plano",
+       "exif-xyresolution-c": "$1 pt/cm",
        "exif-colorspace-65535": "Cor não calibrada",
        "exif-componentsconfiguration-0": "não existe",
        "exif-exposureprogram-0": "Não definido",
        "imgmultigoto": "Ir para a página $1",
        "img-lang-default": "(língua padrão)",
        "img-lang-info": "Compor esta imagem em $1. $2",
-       "img-lang-go": "Ir",
+       "img-lang-go": "Compor",
        "ascending_abbrev": "asc",
        "descending_abbrev": "desc",
        "table_pager_next": "Página seguinte",
        "table_pager_last": "Última página",
        "table_pager_limit": "Mostrar $1 por página",
        "table_pager_limit_label": "Entradas por página:",
-       "table_pager_limit_submit": "Ir",
+       "table_pager_limit_submit": "Continuar",
        "table_pager_empty": "Sem resultados",
        "autosumm-blank": "Limpou toda a página",
        "autosumm-replace": "Página substituída por \"$1\"",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
        "timezone-local": "Local",
        "duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
-       "duplicate-displaytitle": "<strong>Aviso:</strong> O título em exibição \"$2\" anula o título anteriormente em exibição \"$1\".",
+       "duplicate-displaytitle": "<strong>Aviso:</strong> O título de apresentação \"$2\" anula o título anterior \"$1\".",
        "restricted-displaytitle": "<strong>Aviso</strong>: A apresentação do título \"$1\" foi ignorada porque não é equivalente ao título atual da página.",
        "invalid-indicator-name": "<strong>Erro:</strong> O atributo <code>name</code>, da página de estados, não deve estar em branco.",
        "version": "Versão",
        "version-libraries-license": "Licença",
        "version-libraries-description": "Descrição",
        "version-libraries-authors": "Autores",
-       "redirect": "Redirecionar por ficheiro, utilizador, página, revisão, ou ID de registo",
-       "redirect-summary": "Esta página especial redireciona para um ficheiro (dado o nome do ficheiro), para uma página (dado um ID de revisão ou página), para uma página de utilizador (dado um ID numérico do utilizador) ou para uma entrada do registo (dado o ID do registo). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], \n[[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]], ou [[{{#Special:Redirect}}/logid/186]].",
-       "redirect-submit": "Ir",
+       "redirect": "Redirecionar por nome de ficheiro, ou ID de utilizador, página, revisão ou registo",
+       "redirect-summary": "Esta página especial redireciona para um ficheiro (dado o nome do ficheiro), para uma página (dado o identificador numérico da página ou da revisão), para uma página de utilizador (dado o identificador numérico do utilizador) ou para uma entrada do registo (dado o identificador numérico da entrada no registo). Exemplos de utilização: [[{{#Special:Redirect}}/file/Flag_Bandeiras_lusófonas.JPG]], \n[[{{#Special:Redirect}}/page/12071]], [[{{#Special:Redirect}}/revision/700]], [[{{#Special:Redirect}}/user/1]], ou [[{{#Special:Redirect}}/logid/18868382]].",
+       "redirect-submit": "Continuar",
        "redirect-lookup": "Pesquisa:",
        "redirect-value": "Valor:",
        "redirect-user": "Identificador do utilizador",
-       "redirect-page": "Identificador (ID) da página",
-       "redirect-revision": "Revisão da página",
+       "redirect-page": "Identificador da página",
+       "redirect-revision": "Identificador de revisão da página",
        "redirect-file": "Nome do ficheiro",
-       "redirect-logid": "ID do registo",
+       "redirect-logid": "Identificador da entrada do registo",
        "redirect-not-exists": "Valor não encontrado",
-       "fileduplicatesearch": "Pesquisar ficheiros duplicados",
-       "fileduplicatesearch-summary": "Procure ficheiros duplicados tendo por base o seu resumo criptográfico.",
-       "fileduplicatesearch-filename": "Ficheiro:",
+       "fileduplicatesearch": "Pesquisa de ficheiros duplicados",
+       "fileduplicatesearch-summary": "Pesquisa de ficheiros duplicados baseada no resumo criptográfico.",
+       "fileduplicatesearch-filename": "Nome do ficheiro:",
        "fileduplicatesearch-submit": "Pesquisar",
        "fileduplicatesearch-info": "$1 × $2 píxeis<br />Tamanho: $3<br />tipo MIME: $4",
-       "fileduplicatesearch-result-1": "O ficheiro \"$1\" não possui cópias idênticas.",
+       "fileduplicatesearch-result-1": "O ficheiro \"$1\" não tem cópias idênticas.",
        "fileduplicatesearch-result-n": "O ficheiro \"$1\" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.",
        "fileduplicatesearch-noresults": "Não foi encontrado nenhum ficheiro com o nome \"$1\".",
        "specialpages": "Páginas especiais",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Etiqueta|Etiquetas}}]]: $2)",
        "tag-mw-contentmodelchange": "alteração do modelo de conteúdo",
        "tag-mw-contentmodelchange-description": "Edições que [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:ChangeContentModel alteram o modelo de conteúdo] de uma página",
-       "tags-title": "Etiquetas",
+       "tags-title": "Etiquetas de modificação válidas",
        "tags-intro": "Esta página lista as etiquetas com que o software poderá marcar uma edição, e o seu significado.",
        "tags-tag": "Nome da etiqueta",
        "tags-display-header": "Aparência nas listas de modificações",
        "tags-deactivate": "desativar",
        "tags-hitcount": "$1 {{PLURAL:$1|modificação|modificações}}",
        "tags-manage-no-permission": "Não possui permissão para gerir alterações de etiquetas.",
-       "tags-manage-blocked": "Não pode gerir alterações de etiquetas enquanto estiver bloqueado.",
+       "tags-manage-blocked": "Não pode gerir etiquetas de modificação enquanto estiver bloqueado.",
        "tags-create-heading": "Criar nova etiqueta",
        "tags-create-explanation": "Por definição, etiquetas recém-criadas estarão disponíveis para utilização por utilizadores e robôs.",
        "tags-create-tag-name": "Nome da etiqueta:",
        "tags-deactivate-not-allowed": "Não é possível desativar a etiqueta \"$1\".",
        "tags-deactivate-submit": "Desativar",
        "tags-apply-no-permission": "Não possui privilégios para aplicar alterações a etiquetas em conjunto com as suas modificações.",
-       "tags-apply-blocked": "Não pode aplicar etiquetas de modificação nas suas alterações enquanto estiver bloqueado(a).",
+       "tags-apply-blocked": "Não pode aplicar etiquetas de modificação nas suas alterações enquanto estiver bloqueado.",
        "tags-apply-not-allowed-one": "A etiqueta \"$1\" não pode ser aplicada manualmente.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|A seguinte etiqueta não pode ser aplicada|As seguintes etiquetas não podem ser aplicadas}} manualmente: $1",
        "tags-update-no-permission": "Não possui privilégios para adicionar ou remover etiquetas de revisões individuais ou entradas de registo.",
-       "tags-update-blocked": "Não pode adicionar ou remover etiquetas de modificação enquanto estiver bloqueado(a).",
+       "tags-update-blocked": "Não pode adicionar ou remover etiquetas de modificação enquanto estiver bloqueado.",
        "tags-update-add-not-allowed-one": "A etiqueta \"$1\" não pode ser adicionada manualmente.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|A seguinte etiqueta não pode ser adicionada|As seguintes etiquetas não podem ser adicionadas}} manualmente: $1",
        "tags-update-remove-not-allowed-one": "A remoção da etiqueta \"$1\" não é permitida.",
        "mediastatistics": "Estatísticas multimédia",
        "mediastatistics-summary": "Estatísticas sobre os tipos de ficheiros carregados. Inclui apenas a versão mais recente do ficheiro. Versões antigas ou eliminadas são excluídas.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%)",
-       "mediastatistics-bytespertype": "Tamanho total de ficheiro para este secção: {{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%).",
-       "mediastatistics-allbytes": "Tamanho total de ficheiro para todos os ficheiros: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
+       "mediastatistics-bytespertype": "Tamanho total dos ficheiros para esta secção: {{PLURAL:$1|$1 byte|$1 bytes}} ($2; $3%).",
+       "mediastatistics-allbytes": "Tamanho total de todos os ficheiros: {{PLURAL:$1|$1 byte|$1 bytes}} ($2).",
        "mediastatistics-table-mimetype": "Tipo MIME",
        "mediastatistics-table-extensions": "Extensões possíveis",
        "mediastatistics-table-count": "Número de ficheiros",
        "mediastatistics-table-totalbytes": "Tamanho combinado",
        "mediastatistics-header-unknown": "Desconhecido",
-       "mediastatistics-header-bitmap": "Imagens de mapa de bits",
+       "mediastatistics-header-bitmap": "Imagens em mapa de bits",
        "mediastatistics-header-drawing": "Desenhos (imagens vetoriais)",
        "mediastatistics-header-audio": "Áudio",
        "mediastatistics-header-video": "Vídeo",
        "sessionprovider-generic": "Sessões $1",
        "sessionprovider-mediawiki-session-cookiesessionprovider": "sessões baseadas em cookie",
        "sessionprovider-nocookies": "Os cookies podem estar desativados. Certifique-se de que os cookies estão ativados e inicie novamente.",
-       "randomrootpage": "Página raiz aleatória",
+       "randomrootpage": "Página aleatória de raiz",
        "log-action-filter-block": "Tipo de bloqueio:",
        "log-action-filter-contentmodel": "Tipo de alteração de modelo de conteúdo:",
        "log-action-filter-delete": "Tipo de eliminação:",
index 5d01666..e5df378 100644 (file)
        "passwordreset-emailsentusername": "Used in [[Special:PasswordReset]].\n\nSee also:\n* {{msg-mw|Passwordreset-emailsent-capture}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
        "passwordreset-emailsent-capture2": "Used in [[Special:PasswordReset]].\n\nParameters:\n* $1 - number of accounts notified\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
        "passwordreset-emailerror-capture2": "Error message displayed in [[Special:PasswordReset]] when sending an email fails. Parameters:\n* $1 - error message\n* $2 - username, used for GENDER\n* $3 - number of accounts notified\n\nSee also:\n* {{msg-mw|Passwordreset-emailsentemail}}\n* {{msg-mw|Passwordreset-emailsentusername}}\n* {{msg-mw|Passwordreset-emailsent-capture}}\n* {{msg-mw|Passwordreset-emailerror-capture}}",
-       "passwordreset-nocaller": "Shown when a password reset was requested but the caller was not provided. This is an internal error.",
+       "passwordreset-nocaller": "Shown when a password reset was requested but the process failed due to an internal error related to missing details about the origin (caller) of the password reset request.",
        "passwordreset-nosuchcaller": "Shown when a password reset was requested but the username of the caller could not be resolved to a user. This is an internal error.\n\nParameters:\n* $1 - username of the caller",
        "passwordreset-ignored": "Shown when password reset was unsuccessful due to configuration problems.",
        "passwordreset-invalideamil": "Returned when the email address is syntatically invalid.",
        "editpage-invalidcontentmodel-text": "Error message shown when using an unrecognized content model on EditPage. $1 is the user's invalid input",
        "editpage-notsupportedcontentformat-title": "Title of error page shown when using an incompatible format on EditPage.\n\nUsed as title for the following error message:\n* {{msg-mw|Editpage-notsupportedcontentformat-text}}.",
        "editpage-notsupportedcontentformat-text": "Error message shown when using an incompatible format on EditPage.\n\nThe title for this error is {{msg-mw|Editpage-notsupportedcontentformat-title}}.\n\nParameters:\n* $1 - the format id\n* $2 - the content model name",
-       "content-model-wikitext": "Name for the wikitext content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "content-model-wikitext": "Name for the wikitext content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|Wikitext}}",
        "content-model-text": "Name for the plain text content model, used when decribing what type of content a page contains. Plaintext means that the content of the page will be rendered as is like:\n\n<nowiki>This is [[plain text]]. <a href=\"https://www.mediawiki.org/\">Really!</a></nowiki>\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n\n{{Identical|Plain text}}",
        "content-model-javascript": "Name for the JavaScript content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
-       "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
+       "content-model-css": "Name for the CSS content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}\n{{Identical|CSS}}",
        "content-model-json": "Name for the JSON content model, used when decribing what type of content a page contains.\n\nThis message is substituted in:\n*{{msg-mw|Bad-target-model}}\n*{{msg-mw|Content-not-allowed-here}}",
        "content-json-empty-object": "Used to represent an object with no properties on a JSON content model page.",
        "content-json-empty-array": "Used to represent an array with no values on a JSON content model page.",
        "right-ipblock-exempt": "{{doc-right|ipblock-exempt}}\nThis user automatically bypasses IP blocks, auto-blocks and range blocks - so I presume - but I am uncertain",
        "right-unblockself": "{{doc-right|unblockself}}",
        "right-protect": "{{doc-right|protect}}",
-       "right-editprotected": "{{doc-right|editprotected}}\nRefers to {{msg-mw|Protect-level-sysop}}.\n\nSee also:\n* {{msg-mw|Right-editsemiprotected}}",
-       "right-editsemiprotected": "{{doc-right|editsemiprotected}}\nRefers to {{msg-mw|Protect-level-autoconfirmed}}.\n\nSee also:\n* {{msg-mw|Right-editprotected}}",
+       "right-editprotected": "{{doc-right|editprotected}}\nRefers to {{msg-mw|Protect-level-sysop}}.\n\nSee also:\n* {{msg-mw|Right-editeditorprotected}}\n* {{msg-mw|Right-editextendedsemiprotected}}\n* {{msg-mw|Right-editprotected}}\n* {{msg-mw|Right-editsemiprotected}}",
+       "right-editsemiprotected": "{{doc-right|editsemiprotected}}\nRefers to {{msg-mw|Protect-level-autoconfirmed}}.\n\nSee also:\n* {{msg-mw|Right-editeditorprotected}}\n* {{msg-mw|Right-editextendedsemiprotected}}\n* {{msg-mw|Right-editprotected}}\n* {{msg-mw|Right-editsemiprotected}}",
        "right-editcontentmodel": "{{doc-right|editcontentmodel}}",
        "right-editinterface": "{{doc-right|editinterface}}",
        "right-editusercssjs": "{{doc-right|editusercssjs}}",
        "grant-patrol": "Name for grant \"patrol\".\n{{Related|Grant}}",
        "grant-privateinfo": "Name for grant \"privateinfo\".\n{{Related|Grant}}",
        "grant-protect": "Name for grant \"protect\".\n{{Related|Grant}}",
-       "grant-rollback": "Name for grant \"rollback\".\n{{Related|Grant}}",
+       "grant-rollback": "Name for grant \"rollback\".\n{{Related|Grant}}\n{{Identical|Rollback}}",
        "grant-sendemail": "Name for grant \"sendemail\".\n{{Related|Grant}}",
        "grant-uploadeditmovefile": "Name for grant \"uploadeditmovefile\".\n{{Related|Grant}}",
        "grant-uploadfile": "Name for grant \"uploadfile\".\n{{Related|Grant}}\n{{Identical|Upload new file}}",
        "action-suppressionlog": "{{Doc-action|suppressionlog}}",
        "action-block": "{{Doc-action|block}}",
        "action-protect": "{{Doc-action|protect}}",
-       "action-rollback": "{{Doc-action|rollback}}",
+       "action-rollback": "{{Doc-action|rollback}}\n{{Identical|Rollback}}",
        "action-import": "{{Doc-action|import}}",
        "action-importupload": "{{Doc-action|importupload}}",
        "action-patrol": "{{Doc-action|patrol}}",
        "filedelete-edit-reasonlist": "Shown beneath the file deletion form on the right side. It is a link to [[MediaWiki:Filedelete-reason-dropdown]].\n\n{{Identical|Edit delete reasons}}",
        "filedelete-maintenance": "Content of the error page when $wgUploadMaintenance is set to true.",
        "filedelete-maintenance-title": "Title of the error page when $wgUploadMaintenance is set to true.",
-       "mimesearch": "Title of [[Special:MIMESearch]]. Also used as legend of the form.\n\nSee also:\n* {{msg-mw|Mimetype|label for input box}}\n* {{msg-mw|Ilsubmit|Submit button text}}",
-       "mimesearch-summary": "Text for [[Special:MIMESearch]]",
-       "mimetype": "Used as label for input box in the MIMESearch form on [[Special:MIMESearch]].\n\nSee also:\n* {{msg-mw|Mimesearch|page title}}\n* {{msg-mw|Ilsubmit|Submit button text}}\n{{Identical|MIME type}}",
+       "mimesearch": "Used as page title for [[Special:MIMESearch]], legend of input form and link text in [[Special:SpecialPages]].\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.",
+       "mimesearch-summary": "Page summary for [[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.",
+       "mimetype": "Label for input box 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|MIME type}}",
        "download": "Direct download link in each line returned by [[Special:MIMESearch]]. Points to the actual file, rather than the image description page.\n{{Identical|Download}}",
        "unwatchedpages": "{{doc-special|UnwatchedPages}}",
        "unwatchedpages-summary": "{{doc-specialpagesummary|unwatchedpages}}",
        "patrol-log-header": "Text that appears above the log entries on the [[Special:log|patrol log]].",
        "log-show-hide-patrol": "Used in [[Special:Log]]. Parameters:\n* $1 - link text; one of {{msg-mw|Show}} or {{msg-mw|Hide}}\n{{Related|Log-show-hide}}",
        "log-show-hide-tag": "Used in [[Special:Log]]. Parameters:\n* $1 - link text; one of {{msg-mw|Show}} or {{msg-mw|Hide}}\n{{Related|Log-show-hide}}",
+       "confirm-markpatrolled-button": "Used as Submit button text.\n{{Identical|OK}}",
+       "confirm-markpatrolled-top": "Confirmation message on interstitial form.\n\nParameters:\n* $1 - Target page title\n* $2 - Link to target page with page title as label\n* $3 - Link to recent change diff with revision ID as label",
        "deletedrevision": "Used as log comment. Parameters:\n* $1 - archive name of old image",
        "filedeleteerror-short": "Used as error message. Parameters:\n* $1 – There are two uses: 1) filename or 2) more specific error message like {{msg-mw|Backend-fail-internal}}.\nSee also:\n* {{msg-mw|Filedeleteerror-long}}",
        "filedeleteerror-long": "Used as error message. Parameters:\n* $1 - ...\nSee also:\n* {{msg-mw|Filedeleteerror-short}}",
        "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}}.",
        "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": "Used as label for input box in the MIMESearch form on [[Special:MIMESearch]].\n\nSee also:\n* {{msg-mw|Mimesearch|page title}}\n* {{msg-mw|Mimetype|label for input box}}\n{{Identical|Search}}",
+       "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}}",
        "bydate": "{{Identical|Date}}",
        "sp-newimages-showfrom": "This is a link on [[Special:NewImages]] which takes you to a gallery of the newest files.\n* $1 is a date (example: ''19 March 2008'')\n* $2 is a time (example: ''12:15'')",
        "video-dims": "{{optional}}\nParameters:\n* $1 - ...\n* $2 - width\n* $3 - height",
index 4acb8b6..5dd18e3 100644 (file)
@@ -95,7 +95,8 @@
                        "Jack who built the house",
                        "Cat1987",
                        "SergeyButkov",
-                       "Irus"
+                       "Irus",
+                       "Kareyac"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "botpasswords-label-delete": "Удалить",
        "botpasswords-label-resetpassword": "Сбросить пароль",
        "botpasswords-label-grants": "Применимые разрешения:",
-       "botpasswords-help-grants": "Ð\9aаждое Ñ\80азÑ\80еÑ\88ение Ð´Ð°Ñ\91Ñ\82 Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð¿ÐµÑ\80еÑ\87иÑ\81леннÑ\8bм Ð¿Ñ\80авам Ñ\83Ñ\87аÑ\81Ñ\82ника, ÐºÐ¾Ñ\82оÑ\80Ñ\8bе Ñ\83же ÐµÑ\81Ñ\82Ñ\8c Ñ\83 Ñ\83Ñ\87Ñ\91Ñ\82ной Ð·Ð°Ð¿Ð¸Ñ\81и Ñ\83Ñ\87аÑ\81Ñ\82ника. Ð¡Ð¼. [[Special:ListGrants|Ñ\82аблиÑ\86Ñ\83 Ñ\80азÑ\80еÑ\88ений]] для получения дополнительной информации.",
+       "botpasswords-help-grants": "Ð\93Ñ\80анÑ\82Ñ\8b Ñ\80азÑ\80еÑ\88иÑ\82Ñ\8c Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð¿Ñ\80авам, ÐºÐ¾Ñ\82оÑ\80Ñ\8bми Ñ\83же Ð²Ð»Ð°Ð´ÐµÐµÑ\82 Ð\92аÑ\88ей Ñ\83Ñ\87еÑ\82ной Ð·Ð°Ð¿Ð¸Ñ\81и Ð¿Ð¾Ð»Ñ\8cзоваÑ\82елÑ\8f. Ð\92клÑ\8eÑ\87ение Ð\93Ñ\80анÑ\82 Ð·Ð´ÐµÑ\81Ñ\8c Ð½Ðµ Ð¿Ñ\80едоÑ\81Ñ\82авлÑ\8fеÑ\82 Ð´Ð¾Ñ\81Ñ\82Ñ\83п Ðº Ð»Ñ\8eбÑ\8bм Ð¿Ñ\80авам, Ñ\87Ñ\82о Ð²Ð°Ñ\88а Ñ\83Ñ\87еÑ\82наÑ\8f Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c Ð\9fолÑ\8cзоваÑ\82елÑ\8f Ð½Ðµ Ð±Ñ\83деÑ\82 Ð² Ð¿Ñ\80оÑ\82ивном Ñ\81лÑ\83Ñ\87ае. Ð¡Ð¼ [[Special:ListGrants|ТаблиÑ\86а Ð³Ñ\80анÑ\82ов]] для получения дополнительной информации.",
        "botpasswords-label-grants-column": "Разрешено",
        "botpasswords-bad-appid": "Имя бота «$1» является недопустимым.",
        "botpasswords-insert-failed": "Не удалось добавить бота с именем «$1». Возможно, он был уже добавлен?",
        "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": "Журналы",
        "activeusers-intro": "Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней|1=последний день}}.",
        "activeusers-count": "$1 {{PLURAL:$1|правка|правки|правок}} за {{PLURAL:$3|$3 последний день|последние $3 дня|последние $3 дней|1=последний день}}",
        "activeusers-from": "Показать участников, начиная с:",
+       "activeusers-groups": "Отображать пользователей, принадлежащих к группам:",
        "activeusers-noresult": "Не найдено участников.",
        "activeusers-submit": "Показать активных участников",
        "listgrouprights": "Права групп участников",
        "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]]",
        "patrol-log-header": "Это журнал патрулированных версий.",
        "log-show-hide-patrol": "$1 журнал патрулирования",
        "log-show-hide-tag": "$1 журнал меток",
+       "confirm-markpatrolled-button": "OK",
+       "confirm-markpatrolled-top": "Пометить версию $3 страницы $2 как отпатрулированную?",
        "deletedrevision": "Удалена старая версия $1",
        "filedeleteerror-short": "Ошибка удаления файла: $1",
        "filedeleteerror-long": "Во время удаления файла возникли ошибки:\n\n$1",
        "tags-deactivate": "отключить",
        "tags-hitcount": "$1 {{PLURAL:$1|изменение|изменения|изменений}}",
        "tags-manage-no-permission": "У вас нет прав на управление изменениями меток.",
-       "tags-manage-blocked": "Ð\92Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ñ\83пÑ\80авлÑ\8fÑ\82Ñ\8c Ð¼ÐµÑ\82ками Ð¿Ñ\80авок, Ð¿Ð¾Ðºа вы заблокированы.",
+       "tags-manage-blocked": "Ð\9dелÑ\8cзÑ\8f Ñ\83пÑ\80авлÑ\8fÑ\82Ñ\8c Ñ\82еги Ð¼ÐµÐ½Ñ\8fеÑ\82Ñ\81Ñ\8fа вы заблокированы.",
        "tags-create-heading": "Создать новую метку",
        "tags-create-explanation": "Вновь созданные метки по умолчанию будут созданы доступными для использования участниками и ботами.",
        "tags-create-tag-name": "Название метки:",
        "tags-deactivate-not-allowed": "Невозможно отключить метку «$1».",
        "tags-deactivate-submit": "Отключить",
        "tags-apply-no-permission": "У вас нет права применять метки изменения к своими изменениям.",
-       "tags-apply-blocked": "Ð\92Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿Ñ\80именÑ\8fÑ\82Ñ\8c Ð¼ÐµÑ\82ки Ð¿Ñ\80авок Ðº Ñ\81воим Ð¿Ñ\80авкам, Ð¿Ð¾ÐºÐ° Ð²Ñ\8b Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ\80ованÑ\8b.",
+       "tags-apply-blocked": "Ð\9dелÑ\8cзÑ\8f Ð¿Ñ\80именÑ\8fÑ\82Ñ\8c Ñ\82еги Ð¼ÐµÐ½Ñ\8fÑ\82Ñ\8cÑ\81Ñ\8f Ð²Ð¼ÐµÑ\81Ñ\82е Ñ\81 Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ\8fми, Ð¿Ð¾ÐºÐ° Ð²Ñ\8b Ð½Ðµ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¸Ñ\80овали.",
        "tags-apply-not-allowed-one": "Метка «$1» не может быть применена вручную.",
        "tags-apply-not-allowed-multi": "{{PLURAL:$2|Следующая метка не может быть применена|Следующие метки не могут быть применены}} вручную: $1",
        "tags-update-no-permission": "У вас нет права на добавление или изменение меток изменения из отдельных версий или записей журналов.",
-       "tags-update-blocked": "Ð\92Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð¾Ð±Ð°Ð²Ð»Ñ\8fÑ\82Ñ\8c Ð¸Ð»Ð¸ Ñ\83далÑ\8fÑ\82Ñ\8c Ð¼ÐµÑ\82ки Ð¿Ñ\80авок, Ð¿Ð¾Ðºа вы заблокированы.",
+       "tags-update-blocked": "Ð\92Ñ\8b Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ\82е Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ\82Ñ\8c Ð¸Ð»Ð¸ Ñ\83далиÑ\82Ñ\8c Ñ\82еги Ð¼ÐµÐ½Ñ\8fеÑ\82Ñ\81Ñ\8fа вы заблокированы.",
        "tags-update-add-not-allowed-one": "Тег \"$1\" не может быть добавлен вручную.",
        "tags-update-add-not-allowed-multi": "{{PLURAL:$2|Следующий тег|Следующие теги}} нельзя добавлять вручную: $1",
        "tags-update-remove-not-allowed-one": "Метка «$1» не может быть удалена.",
index 598e10d..232e75e 100644 (file)
@@ -34,6 +34,7 @@
        "tog-watchdefault": "Уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-watchmoves": "Аатын уларыппыт сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
        "tog-watchdeletion": "Соппут сирэйдэрбин уонна билэлэрбин кэтээн көрүү тиһигэр киллэрэн ис",
+       "tog-watchuploads": "Хачайдаан киллэрбит билэлэрбин кэтииргэ",
        "tog-watchrollback": "Төннөрбүт сирэйдэрбин кэтэбилим тиһигэр киллэрэн ис",
        "tog-minordefault": "Уларытыылары атын этиллибэтэҕинэ кыра уларытыы курдук бэлиэтээ",
        "tog-previewontop": "Хайдах буоларын уларытар түннүк үрдүнэн (иннигэр) көрдөр",
        "newwindow": "(атын түннүккэ арыллар)",
        "cancel": "Салҕаама",
        "moredotdotdot": "Өссө...",
-       "morenotlisted": "Ð\91Ñ\83 Ñ\82иһик Ñ\82олоÑ\80Ñ\83Ñ\82а Ñ\81Ñ\83оÑ\85.",
+       "morenotlisted": "Ð\91Ñ\83 Ñ\82иһилик Ñ\82олоÑ\80Ñ\83Ñ\82а Ñ\81Ñ\83оÑ\85 Ð±Ñ\83олÑ\83он Ñ\81өп.",
        "mypage": "Сирэй",
        "mytalk": "Кэпсэтэр сирим",
        "anontalk": "Ырытыы",
        "searchprofile-advanced-tooltip": "Этиллибит аат далларыгар көрдөөһүн",
        "search-result-size": "$1 ({{PLURAL:$2|1 тыл|$2 тыл}})",
        "search-result-category-size": "{{PLURAL:$1|$1 элэмиэн|$1 элэмиэннэр}} ({{PLURAL:$2|$2 субкатегория|$2 субкатегориялар}}, {{PLURAL:$3|$3 билэ|$3 билэлэр}})",
-       "search-redirect": "(утаарыы $1)",
+       "search-redirect": "(мантан $1 утаарылынна)",
        "search-section": "($1 сиэксийэ)",
        "search-category": "(категория $1)",
        "search-file-match": "(билэ иһинээҕитин кытта сөп түбэһэр)",
        "activeusers-intro": "Бу кэлиҥҥи $1 {{PLURAL:$1|күҥҥэ|күннэргэ}} тугу эмэ гыммыт кыттааччылар тиһиктэрэ.",
        "activeusers-count": "Кэнники $3 күҥҥэ саҥа $1 көннөрүү киирбит",
        "activeusers-from": "Мантан саҕалаан кыттааччылары көрүү:",
-       "activeusers-hidebots": "Руобаттары көрдөрүмэ",
-       "activeusers-hidesysops": "Дьаһабыллары көрдөрүмэ",
        "activeusers-noresult": "Кыттааччылар көстүбэтилэр.",
        "activeusers-submit": "Көхтөөх кыттааччылары көрдөр",
        "listgrouprights": "Кыттааччылар бөлөхтөрүн бырааптара",
        "feedback-external-bug-report-button": "Тех. садаанньаны ыытыы",
        "feedback-dialog-title": "Санааҕын ыыт",
        "feedback-dialog-intro": "Санааҕын этэргэ аллара баар судургу форманы туһаныаххын сөп. Оччоҕо Эн аатыҥ уонна этииҥ «$1» сирэйгэ эбиллиэ.",
-       "feedback-error-title": "Алҕас",
        "feedback-error1": "Алҕас: API биллибэт түмүгэ",
        "feedback-error2": "Алҕас: Көннөрүү сатаммата",
        "feedback-error3": "Алҕас: API хоруйдаабата",
        "feedback-thanks": "Махтал! Эн санааҥ бу сирэйгэ \"[$2 $1]\" сурулунна.",
        "feedback-thanks-title": "Махтал!",
        "feedback-useragent": "Браузерым:",
-       "searchsuggest-search": "Көрдөөһүн",
+       "searchsuggest-search": "{{SITENAME}} иһигэр көрдөөһүн",
        "searchsuggest-containing": "тыл баар ыстатыйалара...",
        "api-error-badaccess-groups": "Эн бу биикигэ билэ киллэрэриҥ хааччахтаммыт.",
        "api-error-badtoken": "Ис алҕас: Омсолоох токен.",
index 3f5890a..807dbfc 100644 (file)
        "tog-watchlisthidebots": "Ammuccia li canciamenti dî bot ntâ lista taliata",
        "tog-watchlisthideminor": "Ammuccia li canciamenti nichi ntâ lista taliata",
        "tog-watchlisthideliu": "Ammuccia li canciamenti di l'utilizzatura riggistrati ntâ lista taliata",
+       "tog-watchlistreloadautomatically": "Ricarica automaticamenti l'elencu di l'ussirvati spiciali ogni vota ca si cancia nu filtru (addumanna JavaScript)",
        "tog-watchlisthideanons": "Ammuccia li canciamenti di l'utilizzatura anònimi ntâ lista taliata",
        "tog-watchlisthidepatrolled": "Ammuccia li canciamenti virificati ntâ lista taliata",
+       "tog-watchlisthidecategorization": "Ammuccia la catigurizzazioni dî pàggini",
        "tog-ccmeonemails": "Mànnami na copia dî missaggi spiduti a l'àutri utenti",
        "tog-diffonly": "Nun ammustrari lu cuntinutu dî pàggini sutta dî cunfrunti tra virsioni",
        "tog-showhiddencats": "Ammustra li catigurìi ammucciati",
        "tog-norollbackdiff": "Nun ammustrari lu cunfruntu tra virsioni doppu aviri fattu nu canciu n'arreri",
        "tog-useeditwarning": "Avvèrtimi quannu mi nni vaiu di na pàggina cu canciamenti nun sarvati",
-       "tog-prefershttps": "Adòpira sempri na cunnissioni sicura quannu trasisti",
+       "tog-prefershttps": "Adòpirati sempri na cunnissioni sicura quannu trasiti",
        "underline-always": "Sempri",
        "underline-never": "Mai",
        "underline-default": "Mpustazzioni pridifinuta dâ peddi o dû browser",
        "october-date": "$1 di uttùviru",
        "november-date": "$1 di nuvèmmiru",
        "december-date": "$1 di dicèmmiru",
+       "period-am": "di matina",
        "pagecategories": "{{PLURAL:$1|Catigurìa|Catigurìi}}",
        "category_header": "Pàggini ntâ catigurìa \"$1\"",
        "subcategories": "Suttacatigurìi",
        "newwindow": "(grapi na finestra nova)",
        "cancel": "Annulla",
        "moredotdotdot": "Àutru...",
-       "morenotlisted": "Sta lista è ncumpreta",
+       "morenotlisted": "Sta lista putissi siri ncumpreta",
        "mypage": "Pàggina",
        "mytalk": "La mè pàggina di discussioni",
-       "anontalk": "Discussioni di stu nnirizzu IP",
+       "anontalk": "Discussioni",
        "navigation": "Navigazzioni",
        "and": "&#32;e",
        "qbfind": "Attrova",
        "yourpasswordagain": "Scrivi la password n'àutra vota",
        "createacct-yourpasswordagain": "Cunfirma la password",
        "createacct-yourpasswordagain-ph": "Nzirisci la password attorna",
-       "remembermypassword": "Arricorda la password supra stu computer (pi ô massimu $1 {{PLURAL:$1|jornu|jorna}})",
        "userlogin-remembermypassword": "Mantènimi culligatu",
        "userlogin-signwithsecure": "Adòpira na cunnissioni sicura",
        "yourdomainname": "Lu tò duminiu:",
        "passwordreset-emailtext-user": "L'utenti $1 supra a {{SITENAME}} fici n'addumannata pi l'azziramentu dâ tò password pi {{SITENAME}} ($4). {{PLURAL:$3|Lu cuntu utenti siguenti è assuciatu|Li cunti utenti siguenti sù assuciati}} cu stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurània|Sti password timpurànii}} scàdinu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a tràsiri e scègghiri na password nova. Si fu quarchidun'àutru a fari st'addumannata e nun tu, o si t'arricurdasti la tò password origginali e nun la voi canciari cchiù, poi gnurari stu missaggiu e cuntinuari a adupirari la tò password vecchia.",
        "passwordreset-emailelement": "Nomu utenti: \n$1\n\nPassword timpurània: \n$2",
        "passwordreset-emailsentemail": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu mannatu.",
-       "passwordreset-emailsent-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu mannatu, cû cuntinutu chi si pò taliari ccassutta.",
-       "passwordreset-emailerror-capture": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu cumpilatu, cû cuntinutu chi si pò taliari ccassutta, pirò la sò spidizzioni a l'utenti {{GENDER:$2|user}} nun arriniscìu: $1",
        "changeemail": "Canciu dû nnirizzu di posta elittrònica",
        "changeemail-header": "Jinchi stu mòdulu pi canciari lu tò nnirizzu di posta elittrònica. Hai a nziriri la tò password pi cunfirmari stu canciamentu.",
        "changeemail-no-info": "Hai a aviri trasutu p'aviri accessu direttu a sta pàggina.",
        "undo-nochange": "Pari chi lu canciamentu già fu annullatu.",
        "undo-summary": "Annullatu lu canciamentu $1 di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussioni]])",
        "undo-summary-username-hidden": "Annullata la virsioni $1 fatta di n'utenti ammucciatu",
-       "cantcreateaccounttitle": "Mpussìbbili criari un cuntu",
        "cantcreateaccount-text": "La criazzioni di cunti a pàrtiri di stu nnirizzu IP (<strong>$1</strong>), fu bluccata di [[User:$3|$3]].\n\nLa spigazzioni data di $3 è <em>$2</em>",
        "cantcreateaccount-range-text": "La criazzioni di cunti a pàrtiri dî nnirizzi IP ntô ntervallu <strong>$1</strong>, chi cumprenni lu tò nnirizzu IP (<strong>$4</strong>), fu bluccata di [[User:$3|$3]].\n\nLa spigazzioni data di $3 è <em>$2</em>",
        "viewpagelogs": "Talìa li riggistri di sta pàggina",
        "activeusers-intro": "Chista è na lista di l'utenti chi fìciru na quarchi attività {{PLURAL:$1|nta l'ùrtimu jornu|nta l'ùrtimi $1 jorna}}.",
        "activeusers-count": "$1 {{PLURAL:$1|azzioni}} nta {{PLURAL:$3|l'ùrtimu jornu|l'ùrtimi $3 jorna}}",
        "activeusers-from": "Ammustra l'utenti a pàrtiri di:",
-       "activeusers-hidebots": "Ammuccia li bot",
-       "activeusers-hidesysops": "Ammuccia l'amministratura",
        "activeusers-noresult": "Nuddu utenti attruvatu.",
        "listgrouprights": "Dritti di gruppa d'utenti",
        "listgrouprights-summary": "Ccà sutta sunnu elincati li gruppa d'utenti difinuti nta sta wiki, cu li sò dritti d'accessu.\nCi ponnu èssiri [[{{MediaWiki:Listgrouprights-helppage}}|àutri nfurmazzioni]] a prupòsitu d'ognidunu drittu.",
        "htmlform-title-not-exists": "$1 nun esisti.",
        "htmlform-user-not-exists": "<strong>$1</strong> nun esisti.",
        "htmlform-user-not-valid": "<strong>$1</strong> nun è vàlidu comu nomu utenti.",
-       "sqlite-has-fts": "$1 cu capacità d'arricerca a tuttu testu",
-       "sqlite-no-fts": "$1 senza capacità d'arricerca a tuttu testu",
        "logentry-delete-delete": "$1 {{GENDER:$2|cancillau}} la pàggina $3",
        "logentry-delete-restore": "$1 {{GENDER:$2|ripristinau}} la pàggina $3",
        "logentry-delete-event": "$1 {{GENDER:$2|canciau}} la visibbilità di {{PLURAL:$5|n'eventu dû riggistru|$5 eventi dû riggistru}} di $3: $4",
        "feedback-external-bug-report-button": "Signala nu prubblema tècnicu",
        "feedback-dialog-title": "Lassa nu cummentu",
        "feedback-dialog-intro": "Poi adupirari stu mòdulu facili ccassutta pi lassari lu tò cummentu. Stu cummentu è agghiunciutu â pàggina «$1», nzèmmula ô tò nomu utenti.",
-       "feedback-error-title": "Erruri",
        "feedback-error1": "Erruri: Risurtatu di l'API nun arricanusciutu",
        "feedback-error2": "Erruri: Lu canciamentu nun arriniscìu",
        "feedback-error3": "Erruri: Nudda arrispunnuta di l'API",
index f3a4340..f3d70fb 100644 (file)
        "tog-watchdefault": "منهنجا ترميميل صفحا ۽ فائيل  منهنجي نظرھيٺ فھرست ۾ رکو",
        "tog-watchmoves": "جيڪي صفحا ۽ فائيل آءُٗ چوريان، سي منهنجي نظرھيٺ فھرست ۾ شامل ڪريو.",
        "tog-watchdeletion": "آءُٗ جيڪي صفحا ۽ فائيل  ڊاهيان، سي منهنجي نظرھيٺ فھرست تي رکو",
+       "tog-watchuploads": "منهنجا نوان چاڙهيل فائيلس ٽيٽ فهرست ۾ شامل ڪريو",
        "tog-watchrollback": "انهن صفحن کي منهنجي نظرھيٺ فھرست تي رکو، جن ۾ تبديلين کي مون واپس ورايو آهي.",
        "tog-minordefault": "سمورين تبديلين کي بنان چئي معمولي ترميم تصور ڪريو",
-       "tog-previewontop": "ترميمي دٻي مٿان پيش نگاھ ڏيکاريو",
-       "tog-previewonfirst": "پهرين ترميم تي پيش نگاھ ڏيکاريو",
-       "tog-enotifwatchlistpages": "Ù\85Ù\88Ù\86 Ú©Ù\8a Ø§Ù\8aÙ\85Ù\8aÙ\84 ÚªØ±Ù\8aÙ\88 Ø¬Ú\8fÙ\87Ù\86 Ù\85Ù\86Ù\87Ù\86جÙ\8a Ù\86ظرھÙ\8aÙº Ù\81ھرست Û¾ ÚªÙ\88 ØµÙ\81Ø­Ù\88 Ù\8aا Ù\81ائÙ\8aÙ\84 ØªØ¨Ø¯Ù\8aÙ\84 ÚªÙ\8aÙ\88 Ù\88Ú\83Ù\8a",
+       "tog-previewontop": "ترميمي دٻيءَ مٿان پيش نگاهہ ڏيکاريو",
+       "tog-previewonfirst": "پهرين ترميم تي پيش نگاهہ ڏيکاريو",
+       "tog-enotifwatchlistpages": "Ù\85Ù\86Ù\87Ù\86جÙ\8a Ù½Ù\8aÙ½ Ù\81ھرست Ø§Ù\86در Ø´Ø§Ù\85Ù\84 ÚªÙ\86Ù\87Ù\86 ØµÙ\81Ø­Ù\8a Ù\8aا Ù\81ائÙ\8aÙ\84 Û¾ ØªØ¨Ø¯Ù\8aÙ\84 Ù¾Ù\8aØ´ Ø§Ú\86Ù\8a Ù\85Ù\88Ù\86 Ú©Ù\8a Ø¨Ø±Ù\82 Ù½Ù¾Ø§Ù\84 Ø§Ù\85اڻÙ\8aÙ\88",
        "tog-enotifusertalkpages": "منهنجي مباحثي صفحي ۾ تبديليءَ جي صورت ۾ مون کي برق ٽپال اماڻيو",
        "tog-enotifminoredits": "صفحن ۾ معمولي ترميمن جي صورت ۾ بہ مون کي برق ٽپال ڪريو",
        "tog-enotifrevealaddr": "پڌراين ۾ منهنجو برق ٽپال پتو ظاهر ڪريو.",
        "tog-watchlisthideminor": "ٽيٽ فهرست تان معمولي ترميمون لڪايو",
        "tog-watchlisthideliu": "لاگ اِن ٿيل يوزرس جون ڪيل ترميمون زيرنظر فهرست ۾ نہ ڏيکاريو",
        "tog-watchlisthideanons": "ٽيٽ فهرست تان اڻڄاتل يوزر جون ترميمون لڪايو",
-       "tog-watchlisthidepatrolled": "Ù\86ظرھÙ\8aÙº فھرست مان گشت ڪيل ترميمون لڪايو",
+       "tog-watchlisthidepatrolled": "Ù½Ù\8aÙ½ فھرست مان گشت ڪيل ترميمون لڪايو",
        "tog-watchlisthidecategorization": "صفحن جا زمرا لڪايو",
        "tog-ccmeonemails": "ٻين يوزرس ڏانهن منهنجي موڪليل برق ٽپال جو پرت مون کي اماڻيو",
        "tog-diffonly": "تفاوت هيٺان صفحي جو مواد نہ ڏيکاريو",
        "tog-showhiddencats": "لڪل زمرا ڏيکاريو",
+       "tog-norollbackdiff": "واپس ورائڻ کان پوءِ تفاوت نہ ڏيکاريو",
        "tog-useeditwarning": "مونکي خبردار ڪريو جڏهن مان هڪ ترميم وارو صفحو بغير تبديلين سانڍڻ جي ڇڏيان",
        "tog-prefershttps": "هميشہ محفوظ ڪنيڪشن استعمال ڪريو جڏهن داخل ٿيل هجو",
        "underline-always": "هميشہ",
        "underline-never": "ڪڏهن بہ نہ",
+       "underline-default": "پيش طَي چَم يا جھانگُو",
        "editfont-style": "ايراضي جو فونٽ اسٽائيل سنواريو:",
-       "editfont-sansserif": "سينس-سيرف فونٽ",
-       "editfont-serif": "سيرِف اِنڊو",
+       "editfont-default": "پيش طَي جھانگُو",
+       "editfont-monospace": "يڪ وٺيل اِنڊو",
+       "editfont-sansserif": "بي سريف اِنڊو",
+       "editfont-serif": "باسريف اِنڊو",
        "sunday": "آچر",
        "monday": "سومر",
        "tuesday": "اڱارو",
@@ -69,9 +74,9 @@
        "february": "فيبروري",
        "march": "مارچ",
        "april": "اپريل",
-       "may_long": "مَئي",
-       "june": "جÙ\88Ù\86",
-       "july": "جولاءِ",
+       "may_long": "مَي",
+       "june": "جÙ\8fÙ\88Ù\86Ù\90",
+       "july": "جÙ\8fÙ\88Ù\84اءÙ\90",
        "august": "آگسٽ",
        "september": "سيپٽمبر",
        "october": "آڪٽوبر",
@@ -93,9 +98,9 @@
        "feb": "فيبروري",
        "mar": "مارچ",
        "apr": "اپريل",
-       "may": "مئي",
-       "jun": "جÙ\88Ù\86",
-       "jul": "جولاءِ",
+       "may": "مَي",
+       "jun": "جÙ\8fÙ\88Ù\86Ù\90",
+       "jul": "جÙ\8fÙ\88Ù\84اءÙ\90",
        "aug": "آگسٽ",
        "sep": "سيپٽمبر",
        "oct": "آڪٽوبر",
        "qbpageoptions": "هيءُ صفحو",
        "qbmyoptions": "منهنجا صفحا",
        "faq": "ڪپس",
-       "faqpage": "Project:ڪپوس",
-       "actions": "فعل",
+       "faqpage": "Project:ڪپس",
+       "actions": "ڪارگذاريون",
        "namespaces": "نانءُپولارَ",
        "variants": "بَدَلَ",
        "navigation-heading": "رهنما مينيو",
        "title-invalid-interwiki": "ڄاڻايل عنوان ۾ اهڙو بين‌الوڪِي ڳنڍڻو شامل آهي، جيڪو عنوانن ۾ استعمال ڪري نہ ٿو سگھجي.",
        "title-invalid-characters": "صفحي جي ڄاڻايل عنوان ۾ ناقابل ڪار اکر شامل آهن: $1",
        "title-invalid-leading-colon": "صفحي جي ڄاڻايل عنوان جي ابتدا ۾ ناقابل ڪار ڪالن شامل آهي.",
-       "viewsource": "ذريعو ڏسو",
+       "viewsource": "ڪوڊ ڏسو",
        "viewsource-title": "$1 جو ڪوڊ ڏسو",
        "protectedpagetext": "هيءُ صفحو ترميمن کان تحفظيل آهي.",
        "viewsourcetext": "توهان هن صفحي جو ڪوڊ ڏسي ۽ نقل ڪري سگھو ٿا:",
        "mypreferencesprotected": "توهان جي پنهنجون ترجيحات سنوارڻ جي اجات حاصل ڪانهي.",
        "ns-specialprotected": "خاص صفحا سنواري نٿا سگھجن.",
        "titleprotected": "[[User:$1|$1]] اهڙي عنوان سان صفحو سرجڻ تي روڪ لڳائي ڇڏي آهي. سبب <em>$2</em> ڄاڻايو ويو آهي.",
-       "exception-nologin": "داخل ٿيل ناهيو",
+       "exception-nologin": "داخل ٿيل نہ آهيو",
        "virus-unknownscanner": "اڻ ڄاتل نِس وائرس:",
        "cannotlogoutnow-title": "ھاڻي ٻاھر نٿو نڪري سگھجي",
        "cannotlogoutnow-text": "$1 استعمال ڪرڻ دوران ٻاھر نڪرڻ ممڪن نہ آھي.",
        "cannotlogin-text": "داخل ٿيڻ ممڪن نه آھي",
        "cannotloginnow-title": "ھاڻي داخل نٿو ٿي سگھجي",
        "cannotloginnow-text": "$1 استعمال ڪرڻ دوران داخل ٿيڻ ممڪن نہ آھي.",
-       "cannotcreateaccount-title": "کاتا نٿو کولي سگھي",
+       "cannotcreateaccount-title": "کاتا کولي نہ ٿو سگھي",
        "yourdomainname": "توهان جو ميدان:",
        "password-change-forbidden": "هن وڪِي تي توهان ڳجھالفظ بدلائي نٿا سگھو.",
        "login": "داخل ٿيو",
        "userloginnocreate": "داخل ٿيو",
        "logout": "ٻاھر نڪرو",
        "userlogout": "ٻاھر نڪرو",
-       "notloggedin": "داخل ٿيل ناهيو",
-       "userlogin-noaccount": "کاتو نٿا رکو؟",
+       "notloggedin": "داخل ٿيل نہ آهيو",
+       "userlogin-noaccount": "کاتو نہ ٿا رکو؟",
        "userlogin-joinproject": "{{SITENAME}} ۾ شامل ٿيو",
        "nologin": " کاتو نہ ٿا رکو؟ '''$1'''.",
        "nologinlink": "نئون کاتو کوليو",
        "botpasswords-label-cancel": "رد",
        "botpasswords-label-delete": "ڊاهيو",
        "botpasswords-label-resetpassword": "ڳجھولفظ ٻيھر مقرر ڪريو",
+       "botpasswords-label-grants-column": "منظور",
        "resetpass_forbidden": "ڳجھالفظ بدلائي نٿا سگھجن",
        "resetpass_forbidden-reason": "ڳجھالفظ بدلائي نٿا سگھجن:$1",
        "resetpass-no-info": "هيءُ صفحو پڙهڻ لاءِ داخل ٿيڻ ضروري آهي.",
        "passwordreset-email": "برق ٽپال پتو:",
        "passwordreset-emailtitle": "{{SITENAME}} واري کاتي جا تفصيل",
        "passwordreset-emailelement": "يُوزر نانءُ: \n$1\n\nعارضي ڳجھو لفظ:\n$2",
+       "passwordreset-invalideamil": "ناقابل ڪار برق ٽپال پتو",
        "changeemail": "برق ٽپال پتو مِٽايو يا بدلايو",
        "changeemail-oldemail": "هاڻوڪو برق ٽپال پتو:",
        "changeemail-newemail": "نئون برق ٽپال پتو:",
        "rev-deleted-user": "(يُوزرنانءُ ڊاٺو ويو)",
        "rev-deleted-event": "(لاگ تفصيل هٽايا ويا)",
        "rev-deleted-user-contribs": "[يُوزرنانءُ يا آءِ پِي پتو مِٽايو ويو - ڀاڱيدارين مان ترميمون لڪايون ويون]",
+       "rev-suppressed-no-diff": "توهان اهو تفاوت ڏسي نہ ٿا سگھو، ڇاڪاڻ تہ ڪا هڪ ترميم <strong> ڊهي چڪي </strong> آهي.",
        "rev-delundel": "نمائش تبديل ڪريو",
        "rev-showdeleted": "ڏيکاريو",
        "revisiondelete": "مسوادا ڊاهيو/اڻ‌ڊاهيو",
        "listusers-noresult": "ڪو بہ يُوزر نہ لڌو",
        "listusers-blocked": "(بندشيل)",
        "activeusers": "سرگرم يُوزرس جي فهرست",
-       "activeusers-hidebots": "بوٽس لڪايو",
-       "activeusers-hidesysops": "منتظمن کي لڪايو",
        "activeusers-noresult": "ڪي بہ يُوزرس نہ لڌا.",
        "activeusers-submit": "سرگرم يُوزرس ڏيکاريو",
        "listgrouprights": "يوزر گروپ جا حق",
index 273c8a6..5bd2832 100644 (file)
@@ -48,7 +48,7 @@
        "tog-showhiddencats": "Ruodītė pakavuotas kateguorėjės",
        "tog-norollbackdiff": "Nekrēptė diemesė i skėrtoma atlėkus atmetėma",
        "tog-useeditwarning": "Monėi dout žėnuot, kāp ėšēno ėš poslapė anon naėšsauguojis",
-       "tog-prefershttps": "Vėsūmet nauduotė saugu rīši kāp būno prėsijongė̄s",
+       "tog-prefershttps": "Vėsūmet nauduotė saugu rīši kap būno prisijongė̄s",
        "underline-always": "Vėsūmet",
        "underline-never": "Nikūmet",
        "underline-default": "Vagol naršīklės nustatīmus",
        "laggedslavemode": "Atėduos: Poslapie gal' nesmatītė vielībiausiu pakeitėmu.",
        "readonly": "Doumenū bazė ožrakėnta",
        "enterlockreason": "Iveskėt ožrakėnėma prižasti, tēpuogi kumet daugmaž bus atrokėnta",
-       "readonlytext": "Doumenū bazė daba īr ožrakėnta naujėm irašam a kėtėm keitėmam,\nmažo doumenū bazės techninē pruofilaktėkā,\npuo tuo vėsks griš i sava viežes.\nOžrakėnusiuojo admėnėstratuoriaus pateikts rakėnima paaiškėnims: $1",
+       "readonlytext": "Doumenū bazė daba īr ožrakinta naujėm irašam a kėtėm keitėmam,\nmažo doumenū bazės techninē pruofilaktėkā,\npu tuo viskos grīš i sava viežės.\nOžrakėnosė admėnėstratuorė douts rakėnėma paaiškėnėms: $1",
        "missing-article": "Doumenū bazė nerada poslapė teksta, katra ana torietu rastė, pavadėnta „$1“ $2.\n\nPaprastā tas būn dielē pasenosės skėrtoma vuo istuorėjės nūruodas i poslapi, katros bova ėštrėnts.\n\nJēgo tas nie šėts varėjants, Tamsta mažo raduot klaida pruogramėnė ironguo.\nPrašuom aple šėtā paskelbtė [[Special:ListUsers/sysop|adminėstratoriō]], nepamėršdamė nuruodītė nūruoda.",
        "missingarticle-rev": "(atmains nr. $1)",
        "missingarticle-diff": "(Skėrt.: $1, $2)",
        "yourpasswordagain": "Pakartuoket slaptažuodė:",
        "createacct-yourpasswordagain": "Čīstā tuokis slaptažuodis?",
        "createacct-yourpasswordagain-ph": "Apent ožrašīkat slaptažuodi",
-       "remembermypassword": "Atmintė prisėjongėma infuormacėjė šėtom kuompioteri (daugiausē $1 {{PLURAL:$1|dėina|dėinė|dėinas}})",
        "userlogin-remembermypassword": "Ka liktō prisėjongis",
        "userlogin-signwithsecure": "Apsauguots rīšīs",
        "cannotloginnow-title": "Nēn prėsijongtė",
        "eauthentsent": "Patvėrtėnėma gruomata bova nusiōsta i paskėrta el. pašta adresa.\nPrīš ėšsiontiant kėta gruomata i Tamstas diežote, Tamsta torėt vīkdītė nuruodīmus gruomatuo, kū patvėrtėntomiet, kū diežotė tėkrā īr Tamstas.",
        "throttled-mailpassword": "Slaptažuodžė priminims jau bova ėšsiōsts, par paskotėnės {{PLURAL:$1|adīna|$1 adīnas}}. Nuorint apsėsauguotė nū pėktnaudēvėma, slaptažuodė priminėms gal būt ėšsiōsts tėk kas {{PLURAL:$1|adīna|$1 adīnas}}.",
        "mailerror": "Bieda siontiont gromata: $1",
-       "acct_creation_throttle_hit": "Ton pruojekta lankītuojē, katrėi nauduo Tamstas IP adresa, padėrba {{PLURAL:$1|$1 paskīra|$1 paskīras|$1 paskīrū}} par paskotėnta dėina, a tas īr dėdliausis leidams skaitlios par ta čiesa.\nTudie šėton čieso lankītuojē, katrėi nauduo ta IP adresa, daugiau paskīrū dėrbt negal.",
+       "acct_creation_throttle_hit": "Ton pruojekta lankītuojē, katrėi nauduo Tamstas IP adresa, padėrba {{PLURAL:$1|$1 paskīra|$1 paskīras|$1 paskīrū}} par paskotėnta dėina, a tas īr dėdliausis leidams skaitlios par ta čiesa.\nTudie šėton čieso lankītuojē, katrėi nauduo tou IP adresa, daugiau paskīrū dėrbtė nagal.",
        "emailauthenticated": "Tamstas el. pašta adresos bova ožtvirtėnts $2 d. $3.",
        "emailnotauthenticated": "Tamstas el. pašta adresos da nier patvėrtėnts. Anėjuokės gruomatas\nnebus siontamas ni vėinam žemiau ėšvardėntam puoslaugiō.",
        "noemailprefs": "Nuruodėkīt el. pašta adresa, kū vėiktu šėtos funkcėjės.",
        "userpage-userdoesnotexist-view": "Nie nauduotuojė vardo „$1“",
        "blocked-notice-logextract": "Nauduotuos ožgints īr.\nApatiuo paruodīta kas ė kāpː",
        "clearyourcache": "'''Diemesė:''' ėšsauguojus Tamstā gal prireiktė ėšvalītė Tamstas naršīklės rėnktovė, kū paveizėtomėt pakeitėmus. '''Mozilla / Safari / Konqueror:''' laikīdami ''Shift'' pasėrinkėt ''Atsiōstė ėš nauja'', a paspauskėt ''Ctrl-Shift-R'' (sėstemuo Apple Mac ''Cmd-Shift-R''); '''IE:''' laikīdamė ''Ctrl'' paspauskėt ''Atnaujėntė'', o paspauskėt ''Ctrl-F5''; '''Konqueror:''' paprastiausē paspauskėt ''Perkrautė'' mīgtoka, o paspauskėt ''F5''; '''Opera''' nauduotuojam gal prireiktė pėlnā ėšvalītė anū rėnktovė ''Rakondā→Nustatīmā''.",
-       "usercssyoucanpreview": "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS priš ėšsaugont.",
-       "userjsyoucanpreview": "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji JS priš ėšsaugont.",
+       "usercssyoucanpreview": "'''Patarėms:''' Nauduokat „{{int:showpreview}}“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS prīš anou ėšsaugont.",
+       "userjsyoucanpreview": "'''Patarėms:''' Nauduokat „{{int:showpreview}}“ mīgtoka, kū ėšmiegintomiet sava naujaji JS prīš anou ėšsaugont.",
        "usercsspreview": "'''Napamirškėt, kū Tamsta tėk parveizėt sava nauduotoja CSS, ans da nabova ėšsauguots!'''",
        "userjspreview": "'''Nepamirškėt, kū Tamsta tėk testoujat/parvaizėt sava nauduotoja ''JavaScript'', ans da nabova ėšsauguots!'''",
        "userinvalidcssjstitle": "'''Diemesė:''' Nė juokės ėšruodos „$1“. Napamirškėt, kū sava .css ėr .js poslapē nauduo pavadėnėma mažuosiomės raidiemis, pvz., Nauduotuos:Foo/vector.css, o ne Nauduotuos:Foo/Vector.css.",
        "updated": "(Atnaujėnta)",
        "note": "'''Žėniuo:'''",
-       "previewnote": "'''Nepamėrškėt, kū tas tėktās pervaiza, pakeitėmā da nier ėšsauguotė!'''",
-       "continue-editing": "Dėrbtė tuoliau",
+       "previewnote": "'''Napamirškat, kū tas tėktās tier parvaiza, pakeitėmā da nier ėšsauguoti!'''",
+       "continue-editing": "Dėrbtė tūliaus",
        "previewconflict": "Šėta parvaiza paruod teksta ėš vėršotinėjė teksta redagavėma lauka tēp, kāp ans bus ruodoms, jei pasirinksėt anū ėšsauguotė.",
-       "session_fail_preview": "'''Atsiprašuom! Mes nagalėm vīkdītė Tamstas keitėma diel sesėjės doumenū praradima.\nPrašuom pamiegintė vielēk. Jei šėtā napaded, pamieginkėt atsėjongtė ėr prėsėjongtė atgal.'''",
-       "session_fail_preview_html": "'''Atsėprašuom! Mes nagalėm apdoroutė Tamstas keitėma diel sesėjės doumenū praradėma.'''\n''Kadaogi šėtom pruojekte grīnasės HTML īr ijongts, parveiza īr pasliepta kāp atsargoma prėimonė priš JavaScript atakas.''\n'''Jei tā teisiets keitėma bandīms, prašuom pamiegint viel. Jei šėtā napaded, pamieginkėt atsėjongtė ėr prėsėjongtė atgal.'''",
+       "session_fail_preview": "'''Atsiprašuom! Mes nagalam ožrašītė Tamstas keitėma diel sesėjės doumenū praradima.\nPrašuom pamiegintė vielek. Jeb tas namacīj, pamieginkat atsijongtė ė prisijongtė apent.'''",
+       "session_fail_preview_html": "'''Atsiprašuom! Mes nagalam apdirbtė Tamstas keitėma diel sesėjės doumenū praradėma.'''\n''Ka tamė pruojektė grīnasis HTML īr ijongts, parveiza īr pakavuota kap atsargoms prīš JavaScript poulėmus.''\n'''Je tā teisiets keitėma miegėnėms, prašuom pamiegintė apent. Je tas namacīj, pamieginkėt atsijongtė ė prisijongtė apent.'''",
        "editing": "Taisuoms straipsnis - $1",
        "creating": "Dėrbama $1",
        "editingsection": "Keitams $1 (skėrsnelis)",
        "editingold": "'''Atėdės: Tamsta keitat ne vielībiausi poslapė atmaina.\nJēgo ėšsauguosat sava pakeitėmus, īkondin darītė pakeitėmā prapols.'''",
        "yourdiff": "Skėrtomā",
        "copyrightwarning": "Žėnuokat, ka vėsks, kas patenk i {{SITENAME}}, īr laikuoma pavėišėnto vagol $2 (platiau - $1). Jēgo nenuorat, ka Tamstas duovis būtom ba gailesė keitams ė skleidams, nerašīkat čė.<br />\nTamsta tēpuogi pasėžadat, ka tas īr Tamstas patėis rašīts torėnīs aba parrašīts nug vėišū aba panašiū liousū vėitu.\n'''NEDIEKAT AUTUORĖNIEM TEISIEM APSERGIETU DARBŪ BA LEIDĖMA!'''",
-       "copyrightwarning2": "Žėnuokat, ka vėsks, kas patenk i {{SITENAME}}, gal būtė keitama ė trėnama. Jēgo nenuorat, ka Tamstas duovis būtom ba gailesė keitams ė skleidams, nerašīkat čė.<br />\nTamsta tēpuogi pasėžadat, ka tas īr Tamstas patėis rašīts torėnīs aba parrašīts nug vėišū aba panašiū liousū vėitu.\n'''NEDIEKAT AUTUORĖNIEM TEISIEM APSERGIETU DARBŪ BA LEIDĖMA!'''",
+       "copyrightwarning2": "Žėnuokat, ka vėskos, kas pakliūn i {{SITENAME}}, gal būtė keitama ė trėnama. Jēgo nenuorat, ka Tamstas duovis būtom ba gailesė keitams ė skleidams, nerašīkat čė.<br />\nTamsta tepuogė pasižadat, ka tas īr Tamstas patėis rašīts torėnīs aba parrašīts nug vėišū aba panašiū liousū vėitu.\n'''NEDIEKAT AUTUORĖNIEM TEISIEM APSERGIETU DARBŪ BA LEIDĖMA!'''",
        "readonlywarning": "'''DIEMESĖ: Doumenū bazė bova ožrakėnta teknėnē pruofilaktėkā,\ntudie negaliesėt ėšsauguotė sava pakeitėmu daba. Tamsta galėt nosėkopėjoutė teksta i tekstėni faila\nė paskum ikeltė ana čė.'''",
        "protectedpagewarning": "'''DIEMESĖ: Šėts poslapis īr ožrakints ėr anū redagoutė gal tėk admėnėstratuorė teises torėntīs prietelē.'''",
        "semiprotectedpagewarning": "'''Pastebiejėms:''' Šėts poslapis bova ožrakėnts ėr anuo gal redagoutė tėk regėstroutė nauduotojā.",
        "listusers-noresult": "Nerast anėjuokiū nauduotuoju.",
        "listusers-blocked": "(ožgints)",
        "activeusers": "Vēkōs nauduotuojē",
-       "activeusers-hidebots": "Kavuotė robuotus",
-       "activeusers-hidesysops": "Kavuotė admėnėstratorius",
        "activeusers-noresult": "Nerast anėjuokiu nauduotuoju.",
        "listgrouprights": "Nauduotuoju gropiu teisės",
        "listgrouprights-group": "Gropė",
index fa1aa9d..63ad3c7 100644 (file)
        "botpasswords-label-delete": "Izbriši",
        "botpasswords-label-resetpassword": "Ponastavi geslo",
        "botpasswords-label-grants": "Veljavne pravice:",
-       "botpasswords-help-grants": "Vsaka pravica dodeli dostop do navedenih uporabniških pravic, ki jih uporabniški račun že ima. Za več informacij si oglejte [[Special:ListGrants|tabelo pravic]].",
+       "botpasswords-help-grants": "Pravice omogočajo dostop do pravic, ki jih vaš uporabniški račun že ima. Tukajšnja omogočitev pravice ne podeli dostopa do katere koli pravice, ki je vaš uporabniški račun drugače še nima. Za več informacij si oglejte [[Special:ListGrants|tabelo pravic]].",
        "botpasswords-label-grants-column": "Odobreno",
        "botpasswords-bad-appid": "Ime bota »$1« ni veljavno.",
        "botpasswords-insert-failed": "Dodajanje imena bota »$1« ni uspelo. Ste ga že dodali?",
        "booksources-search": "Išči",
        "booksources-text": "Sledi seznam povezav do drugi spletnih strani, ki prodajajo nove in rabljene knjige, in imajo morda nadaljnje informacije o knjigah, ki jih iščete:",
        "booksources-invalid-isbn": "Za dani ISBN se ne zdi, da je veljaven; preverite za morebitne napake pri kopiranju iz prvotnega vira.",
+       "magiclink-tracking-rfc": "Strani, ki uporabljajo čarobne povezave RFC",
+       "magiclink-tracking-rfc-desc": "Stran uporablja čarobne povezave RFC. Oglejte si [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] za navodila glede selitve.",
+       "magiclink-tracking-pmid": "Strani, ki uporabljajo čarobne povezave PMID",
+       "magiclink-tracking-pmid-desc": "Stran uporablja čarobne povezave PMID. Oglejte si [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] za navodila glede selitve.",
+       "magiclink-tracking-isbn": "Strani, ki uporabljajo čarobne povezave ISBN",
+       "magiclink-tracking-isbn-desc": "Stran uporablja čarobne povezave ISBN. Oglejte si [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] za navodila glede selitve.",
        "specialloguserlabel": "Izvajalec:",
        "speciallogtitlelabel": "Cilj (naslov ali {{ns:user}}:uporabniškoime za uporabnika):",
        "log": "Dnevniki",
        "modifiedarticleprotection": "spremenjena stopnja zaščite »[[$1]]«",
        "unprotectedarticle": "odstranil(-a) zaščito »[[$1]]«",
        "movedarticleprotection": "nastavitve zaščite so prestavljene iz »[[$2]]« na »[[$1]]«",
+       "protectedarticle-comment": "{{GENDER:$2|Zaščitil|Zaščitila|Zaščitil(-a)}} »[[$1]]«",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Spremenil|Spremenila|Spremenil(-a)}} stopnjo zaščite »[[$1]]«",
+       "unprotectedarticle-comment": "{{GENDER:$2|Odstranil|Odstranil|Odstranil(-a)}} zaščito »[[$1]]«",
        "protect-title": "Zaščita strani »$1«",
        "protect-title-notallowed": "Ogled stopnje zaščite »$1«",
        "prot_1movedto2": "je prestavil(-a) [[$1]] na [[$2]]",
        "patrol-log-header": "To je dnevnik nadzorovanih redakcij.",
        "log-show-hide-patrol": "$1 dnevnik nadzora",
        "log-show-hide-tag": "$1 dnevnik oznak",
+       "confirm-markpatrolled-button": "V redu",
+       "confirm-markpatrolled-top": "Označimo redakcijo $3 strani $2 kot nadzorovano?",
        "deletedrevision": "Prejšnja redakcija $1 je izbrisana",
        "filedeleteerror-short": "Napaka pri brisanju datoteke: $1",
        "filedeleteerror-long": "Pri brisanju datoteke so se pojavile napake:\n\n$1",
        "authmanager-authn-autocreate-failed": "Samodejno ustvarjanje lokalnega računa je spodletelo: $1",
        "authmanager-change-not-supported": "Navedenih poverilnic nismo mogli spremeniti, saj jih ne bi nič uporabljalo.",
        "authmanager-create-disabled": "Ustvarjanje računov je onemogočeno.",
-       "authmanager-create-from-login": "Da ustvarite svoj račun, prosimo, izpolnite spodnja polja.",
+       "authmanager-create-from-login": "Da ustvarite svoj račun, prosimo, izpolnite polja.",
        "authmanager-create-not-in-progress": "Ustvarjanje računa ni v teku ali pa smo izgubili podatke seje. Prosimo, pričnite znova od začetka.",
        "authmanager-create-no-primary": "Navedenih poverilnic ne moremo uporabiti za ustvarjanje računa.",
        "authmanager-link-no-primary": "Navedenih poverilnic ne moremo uporabiti za povezovanje računa.",
index 1453345..2cd4d4c 100644 (file)
        "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]]",
        "patrol-log-header": "Ово је дневник патролираних измена.",
        "log-show-hide-patrol": "$1 дневник патролирања",
        "log-show-hide-tag": "$1 дневник ознака",
+       "confirm-markpatrolled-button": "У реду",
+       "confirm-markpatrolled-top": "Означити измену $3 странице $2 патролираном?",
        "deletedrevision": "Обрисана стара измена $1.",
        "filedeleteerror-short": "Грешка при брисању датотеке: $1",
        "filedeleteerror-long": "Дошло је до грешака при брисању датотеке:\n\n$1",
index 12c3497..333ab9f 100644 (file)
        "booksources-search": "Sök",
        "booksources-text": "Nedan följer en lista över länkar till webbplatser som säljer nya och begagnade böcker, och som kanske har ytterligare information om de böcker du söker.",
        "booksources-invalid-isbn": "Det angivna ISBN-numret verkar inte vara giltigt. Kontrollera källan för eventuella fel.",
+       "magiclink-tracking-rfc": "Sidor som använder magiska RFC-länkar",
+       "magiclink-tracking-rfc-desc": "Denna sida använder magiska RFC-länkar. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] om hur man migrerar.",
+       "magiclink-tracking-pmid": "Sidor som använder magiska PMID-länkar",
+       "magiclink-tracking-pmid-desc": "Denna sida använder magiska PMID-länkar. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] om hur man migrerar.",
+       "magiclink-tracking-isbn": "Sidor som använder magiska ISBN-länkar",
+       "magiclink-tracking-isbn-desc": "Denna sida använder magiska ISBN-länkar. Se [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] om hur man migrerar.",
        "specialloguserlabel": "Utförare:",
        "speciallogtitlelabel": "Mål (titel eller {{ns:user}}:användarnamn för användare):",
        "log": "Loggar",
        "activeusers-intro": "Detta är en lista på användare som har haft någon form av aktivitet inom de senaste $1 {{PLURAL:$1|dygnet|dygnen}}.",
        "activeusers-count": "$1 {{PLURAL:$1|handling|handlingar}} {{PLURAL:$3|det senaste dygnet|de senaste $3 dygnen}}",
        "activeusers-from": "Visa användare från och med:",
+       "activeusers-groups": "Visa användare som tillhör grupper:",
        "activeusers-noresult": "Inga användare funna.",
        "activeusers-submit": "Visa aktiva användare",
        "listgrouprights": "Behörigheter för användargrupper",
        "modifiedarticleprotection": "ändrade skyddsnivån för \"[[$1]]\"",
        "unprotectedarticle": "tog bort skrivskydd från \"[[$1]]\"",
        "movedarticleprotection": "flyttade skrivskyddsinställningar från \"[[$2]]\" till \"[[$1]]\"",
+       "protectedarticle-comment": "{{GENDER:$2|Skyddad}} \"[[$1]]\"",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|Ändrade skyddsnivå}} för \"[[$1]]\"",
+       "unprotectedarticle-comment": "{{GENDER:$2|Tog bort skydd}} från \"[[$1]]\"",
        "protect-title": "Ändra skrivskyddsnivå för \"$1\"",
        "protect-title-notallowed": "Visa skyddsnivån för \"$1\"",
        "prot_1movedto2": "[[$1]] flyttades till [[$2]]",
index 3685734..70344cf 100644 (file)
        "yourpasswordagain": "Naszkryflej ausdruk zaś",
        "createacct-yourpasswordagain": "Potwjyrdź hasło",
        "createacct-yourpasswordagain-ph": "Wszkryflej hasło jeszcze roz",
-       "remembermypassword": "Pamjyntej můj ausdruk na tym kůmputrze (nojdalij bez $1 {{PLURAL:$1|dźyń|dńůw}})",
        "userlogin-remembermypassword": "Ńy wylogůwywuj mje",
        "userlogin-signwithsecure": "Użyj bezpjecznygo połůnczyńa",
        "yourdomainname": "Twoja domyna",
        "listusersfrom": "Pokaž užytkowńikůw začynojůnc uod:",
        "listusers-submit": "Uobejrzij",
        "listusers-noresult": "Ńy znejdźůno žodnygo užytkowńika.",
-       "activeusers-hidebots": "Schrůń boty",
-       "activeusers-hidesysops": "Schrůń adminy",
        "activeusers-noresult": "Niy szło znŏjść żŏdnych używŏczōw",
        "listgrouprights": "Uprawńyńo grup użytkowńikůw",
        "listgrouprights-summary": "Půńiży znojdowo śe spis grup użytkowńikůw zdefińjowanych na tyj wiki, s wyszczygůlńyńym przidźelůnych im prow dostympu.\nSprowdź zajta [[{{MediaWiki:Listgrouprights-helppage}}|s dodatkowymi informacjami]] uo uprowńyńach użytkowńikůw.",
        "logentry-upload-upload": "$1 {{GENDER:$2|posłoł|posłała}} $3",
        "rightsnone": "podstawowo",
        "revdelete-summary": "uopis pomjyńań",
-       "searchsuggest-search": "Sznupej",
+       "searchsuggest-search": "Sznupej we {{SITENAME}}",
        "expand_templates_ok": "OK"
 }
index b3fc2ca..d8af709 100644 (file)
@@ -45,7 +45,7 @@
        "tog-enotifminoredits": "Padalhan din ako ng e-liham para sa mga maliliit na mga pagbabago ng mga pahina at mga talaksan",
        "tog-enotifrevealaddr": "Ipakita ang aking direksiyong e-liham sa loob ng mga e-liham ng pagpapahayag",
        "tog-shownumberswatching": "Ipakita ang bilang ng mga nagbabantay na tagagamit",
-       "tog-oldsig": "Umiiral na lagda:",
+       "tog-oldsig": "Ang iyong umiiral na lagda:",
        "tog-fancysig": "Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)",
        "tog-uselivepreview": "Gamitin ang buhay na paunang tingin",
        "tog-forceeditsummary": "Pagsabihan ako kapag nagpapasok ng walang-lamang buod ng pagbabago",
        "resetpass_submit": "Itakda ang password at mag-login",
        "changepassword-success": "Matagumpay na nabago ang iyong password!",
        "changepassword-throttled": "Masyadong madami ang kamakailan lamang mong pagsubok sa pag-login.\nMaghintay po muna ng $1 bago subukan uli.",
+       "botpasswords-label-delete": "Burahin",
+       "botpasswords-label-resetpassword": "Itakdang-muli/baguhin ang hudyat (password)",
+       "botpasswords-label-grants-column": "Ipinagkaloob na",
        "resetpass_forbidden": "Hindi mababago ang mga password",
        "resetpass-no-info": "Nakalagda ka dapat para tuwirang mapuntahan ang pahina ito.",
        "resetpass-submit-loggedin": "Baguhin ang password",
        "activeusers-intro": "Isa itong talaan ng mga tagagamit na nagkaroon ng ilang uri ng galaw sa loob ng huling $1 {{PLURAL:$1|araw|mga araw}}.",
        "activeusers-count": "$1 {{PLURAL:$1|pagbabago|mga pagbabago}} sa loob ng huling {{PLURAL:$3|araw|$3 mga araw}}",
        "activeusers-from": "Ipakita ang mga tagagamit simula sa:",
-       "activeusers-hidebots": "Itago ang mga bots",
-       "activeusers-hidesysops": "Itago ang mga tagapangasiwa",
        "activeusers-noresult": "Walang natagpuang mga tagagamit.",
        "listgrouprights": "Mga uri ng tagagamit",
        "listgrouprights-summary": "Ang sumusunod ay isang talaan ng mga pangkat ng tagagamit na binigyang kahulugang sa wiking ito, kasama ang kanilang mga kaugnay na mga karapatan.\nMaaaring may mga [[{{MediaWiki:Listgrouprights-helppage}}|karagdagang kabatiran]] tungkol sa bawat isang mga karapatan sa [[{{MediaWiki:Listgrouprights-helppage}}]].",
index b7cadee..5ea66b8 100644 (file)
@@ -25,7 +25,8 @@
                        "Macofe",
                        "Selimcan",
                        "Исмаил Садуев",
-                       "Matma Rex"
+                       "Matma Rex",
+                       "Irus"
                ]
        },
        "tog-underline": "Сылтамаларның астына сызу:",
        "searchprofile-advanced-tooltip": "Бирелгән исемнәр мәйданында эзләү",
        "search-result-size": "$1 ({{PLURAL:$2|$2 сүз}})",
        "search-result-category-size": "$1 {{PLURAL:$1|әгъза}} ($2 {{PLURAL:$2|астөркем}}, $3 {{PLURAL:$3|файл}})",
-       "search-redirect": "(юнәлтү $1)",
+       "search-redirect": "($1 битеннән юнәлтү)",
        "search-section": "($1 бүлеге)",
        "search-category": "($1 категориясе)",
        "search-file-match": "(файл эчтәлеге белән туры килә)",
        "listusers-noresult": "Кулланучыларны табылмады.",
        "listusers-blocked": "(тыелган)",
        "activeusers": "Актив кулланучылар исемлеге",
-       "activeusers-hidebots": "Ботларны яшер",
-       "activeusers-hidesysops": "Идарәчеләрне яшер",
        "activeusers-noresult": "Кулланучылар табылмады.",
        "listgrouprights": "Кулланучы төркемнәренең хокуклары",
        "listgrouprights-key": "Легенда:\n* <span class=\"listgrouprights-granted\">Бирелгән хокуклар</span>\n* <span class=\"listgrouprights-revoked\">Алынган хокуклар</span>",
        "blocklogpage": "Тыю көндәлеге",
        "blocklogentry": "[[$1]] $2 вакытка тыелды $3",
        "unblocklogentry": "$1 кулланучысының тыелу вакыты бетте",
+       "block-log-flags-anononly": "аноним кулланучылар гына",
        "block-log-flags-nocreate": "яңа хисап язмасы теркәү тыелган",
        "block-log-flags-noemail": "хат җибәрү тыелган",
        "block-log-flags-hiddenname": "кулланучының исеме яшерелгән",
        "feedback-submit": "Җибәрү",
        "feedback-thanks": "Рәхмәт! Сезнең фикер \"[$2 $1]\" сәхифәсенә куелды.",
        "feedback-thanks-title": "Рәхмәт!",
-       "searchsuggest-search": "Эзләү",
+       "searchsuggest-search": "{{SITENAME}} эчендә эзләү",
        "searchsuggest-containing": "эчтәлек...",
        "api-error-badaccess-groups": "Сезгә бу викигә файллар өстәү рөхсәт ителмәгән",
        "api-error-badtoken": "Эчке хата: дөрес булмаган токен.",
index bae91c1..5ced470 100644 (file)
        "last": "азьв.",
        "history-show-deleted": "Ӵушылэмъёссэ гинэ",
        "rev-showdeleted": "возьматоно",
+       "revdelete-show-file-submit": "да",
        "revdelete-radio-set": "Ватэм",
        "revdelete-radio-unset": "Адӟымон",
        "revdelete-reason-dropdown": "*Вӧлскем палэнскон мугъёсты\n** Авторской правоосты тӥян\n** Яке кулэтэм информациез личной комментарий\n** Логин несоответствовать\n** Курла информациез Потенциально",
index 64accfa..1fcff99 100644 (file)
        "talk": "تبادلہٴ خیال",
        "views": "مشاہدات",
        "toolbox": "آلات",
-       "tool-link-userrights": "{{GENDER:$1|صارف}} کے گروہوں میں تبدیلی کریں",
+       "tool-link-userrights": "حلقہ ہائے {{GENDER:$1|صارف}} میں تبدیلی",
        "tool-link-emailuser": "اس {{GENDER:$1|صارف}} کو برقی خط لکھیں",
        "userpage": "صارف کا صفحہ دیکھیے",
        "projectpage": "منصوبہ کا صفحہ دیکھیے",
        "prefswarning-warning": "ترجیحات میں آپ کی جانب سے کی جانے والی تبدیلیاں ابھی محفوظ نہیں ہوئی ہیں۔\nاگر آپ «$1» پر کلک کیے بغیر اس صفحہ کو چھوڑ دیں تو آپ کی تبدیلیاں محفوظ نہیں ہوگی۔",
        "prefs-tabs-navigation-hint": "نکتہ: مختلف خانوں میں جانے کے لیے آپ دائیں اور بائیں کی جہت نما کلیدیں استعمال کر سکتے ہیں۔",
        "userrights": "حقوقِ صارف کی نظامت",
-       "userrights-lookup-user": "گروہائے صارف کا انتظام",
+       "userrights-lookup-user": "حلقہ ہائے صارف کا انتظام",
        "userrights-user-editname": "کوئی اسم‌صارف داخل کیجئے:",
-       "editusergroup": "{{GENDER:$1|صارف}} کے گروہوں میں ترمیم کریں",
+       "editusergroup": "حلقہ ہائے {{GENDER:$1|صارف}} میں ترمیم کریں",
        "editinguser": "{{GENDER:$1|صارف}} <strong>[[User:$1|$1]]</strong> $2 کے اختیارات میں تبدیلی",
-       "userrights-editusergroup": "ترÙ\85Û\8cÙ\85 Ú¯Ø±Ù\88Û\81ائÛ\92 ØµØ§Ø±Ù\81",
-       "saveusergroups": "{{GENDER:$1|صارف}} کے گروہوں کو محفوظ کریں",
+       "userrights-editusergroup": "Ø­Ù\84Ù\82Û\81 Û\81ائÛ\92 ØµØ§Ø±Ù\81 Ù\85Û\8cÚº ØªØ±Ù\85Û\8cÙ\85 Ú©Ø±Û\8cÚº",
+       "saveusergroups": "حلقہ ہائے {{GENDER:$1|صارف}} کو محفوظ کریں",
        "userrights-groupsmember": "رکنِ:",
        "userrights-groupsmember-auto": "اعتباری صارف در",
-       "userrights-groups-help": "آپ ان گروہان میں تبدیلی کرسکتے ہیں جن سے صارف متعلق ہے: \n* نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے ہے۔ \n* غیر نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے نہیں ہے۔ \n* یہ * علامت اس بات کا اشارہ ہے کہ آپ اس گروہ کو نہیں ہٹا سکتے جسے ایک مرتبہ آپ نے شامل کردیا ہو، یا اس کے بر عکس۔",
+       "userrights-groups-help": "آپ ان حلقوں میں تبدیلی کرسکتے ہیں جن سے صارف متعلق ہے: \n* نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے ہے۔ \n* غیر نشان زد خانہ کا مطلب یہ ہے کہ صارف کا تعلق اس گروہ سے نہیں ہے۔ \n* یہ * علامت اس بات کا اشارہ ہے کہ آپ اس گروہ کو نہیں ہٹا سکتے جسے ایک مرتبہ آپ نے شامل کردیا ہو، یا اس کے بر عکس۔",
        "userrights-reason": "وجہ:",
        "userrights-no-interwiki": "دوسرے ویکیوں پر حقوقِ صارف میں ترمیم کی آپ کو اجازت نہیں ہے.",
        "userrights-nodatabase": "ڈیٹابیس $1 موجود نہیں یا مقامی نہیں۔",
        "userrights-unchangeable-col": "مجموعات جو آپ تبدیل نہیں کرسکتے",
        "userrights-conflict": "اختیارات کی تبدیلی میں تنازعہ! براہ کرم نظر ثانی کریں اور اپنی تبدیلیوں کی تصدیق کریں۔",
        "userrights-removed-self": "آپ نے اپنے اختیارات ختم کر لیے ہیں، چنانچہ اب یہ صفحہ آپ کی دسترس سے باہر ہو گیا ہے۔",
-       "group": "گروہ:",
+       "group": "حلقہ:",
        "group-user": "صارفین",
        "group-autoconfirmed": "خود توثیق شدہ صارفین",
        "group-bot": "روبالات",
        "activeusers-intro": "ذیل میں ان صارفین کی فہرست ہے جو گزشتہ $1 {{PLURAL:$1|دن|دنوں}} میں کسی بھی قسم کی سرگرمی میں شریک رہے ہوں۔",
        "activeusers-count": "گزشتہ {{PLURAL:$3|دن|$3 دنوں}} میں $1 {{PLURAL:$1|اقدام|اقدامات}}",
        "activeusers-from": "اس حرف سے شروع ہونے والے صارفین کے نام دکھائیں:",
-       "activeusers-hidebots": "خودکار صارفین کو چھپائیں",
-       "activeusers-hidesysops": "منتظمین کو چھپائیں",
        "activeusers-noresult": "یہ صارف نہیں مل سکا",
        "activeusers-submit": "فعال صارفین دکھائیں",
-       "listgrouprights": "صارÙ\81 Ú¯Ø±Ù\88Û\81Ù\88Úº کے اختیارات",
-       "listgrouprights-summary": "ذیل میں اس ویکی پر موجود صارف گروہوں کی فہرست درج ہے۔ اس میں دائیں جانب گروہ کا نام اور بائیں جانب متعلقہ گروہ کو حاصل شدہ اختیارات کی تفصیل بیان کی گئی ہے۔\nانفرادی اختیارات کے متعلق [[{{MediaWiki:Listgrouprights-helppage}}|اضافی معلومات یہاں]] دیکھی جا سکتی ہیں۔",
+       "listgrouprights": "Ø­Ù\84Ù\82Û\81 ØµØ§Ø±Ù\81Û\8cÙ\86 کے اختیارات",
+       "listgrouprights-summary": "ذیل میں اس ویکی پر موجود صارف حلقوں کی فہرست درج ہے۔ اس میں دائیں جانب حلقے کا نام اور بائیں جانب متعلقہ حلقے کو حاصل شدہ اختیارات کی تفصیل بیان کی گئی ہے۔\nانفرادی اختیارات کے متعلق [[{{MediaWiki:Listgrouprights-helppage}}|اضافی معلومات یہاں]] دیکھی جا سکتی ہیں۔",
        "listgrouprights-key": "عنوان:\n* <span class=\"listgrouprights-granted\">تفویض کردہ اختیارات</span>\n* <span class=\"listgrouprights-revoked\">منسوخ کردہ اختیارات</span>",
-       "listgrouprights-group": "گروہ",
+       "listgrouprights-group": "حلقہ",
        "listgrouprights-rights": "اختیارات",
-       "listgrouprights-helppage": "Help:اختیاراتِ گروہ",
+       "listgrouprights-helppage": "Help:اختیاراتِ حلقہ",
        "listgrouprights-members": "(اراکین کی فہرست)",
-       "listgrouprights-addgroup": "{{PLURAL:$2|اس گروہ|ان گروہوں}} میں شامل کرنے کا اختیار ہے: \n\n$1",
-       "listgrouprights-removegroup": "{{PLURAL:$2|اس گروہ|ان گروہوں}} سے ہٹانے کا اختیار ہے: \n\n$1",
-       "listgrouprights-addgroup-all": "تمام گروہوں کا ا ضافہ کریں",
-       "listgrouprights-removegroup-all": "تمام گروہوں کو ہٹانے کا اختیار ہے",
-       "listgrouprights-addgroup-self": "{{PLURAL:$2|اس گروہ|ان گروہوں}} میں از خود شامل ہونے کا اختیار ہے: \n\n$1",
-       "listgrouprights-removegroup-self": "{{PLURAL:$2|اس گروہ|ان گروہوں}} سے از خود نکلنے کا اختیار ہے: \n\n$1",
-       "listgrouprights-addgroup-self-all": "تمام گروہوں میں از خود شامل ہونے کا اختیار ہے",
-       "listgrouprights-removegroup-self-all": "تمام گروہوں سے از خود نکلنے کا اختیار ہے",
+       "listgrouprights-addgroup": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} میں شامل کرنے کا اختیار ہے: \n\n$1",
+       "listgrouprights-removegroup": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} سے ہٹانے کا اختیار ہے: \n\n$1",
+       "listgrouprights-addgroup-all": "تمام حلقوں کا ا ضافہ کریں",
+       "listgrouprights-removegroup-all": "تمام حلقوں کو ہٹانے کا اختیار ہے",
+       "listgrouprights-addgroup-self": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} میں از خود شامل ہونے کا اختیار ہے: \n\n$1",
+       "listgrouprights-removegroup-self": "{{PLURAL:$2|اس حلقہ|ان حلقوں}} سے از خود نکلنے کا اختیار ہے: \n\n$1",
+       "listgrouprights-addgroup-self-all": "تمام حلقوں میں از خود شامل ہونے کا اختیار ہے",
+       "listgrouprights-removegroup-self-all": "تمام حلقوں سے از خود نکلنے کا اختیار ہے",
        "listgrouprights-namespaceprotection-header": "نام فضا پابندیاں",
        "listgrouprights-namespaceprotection-namespace": "فضائے نام",
        "listgrouprights-namespaceprotection-restrictedto": "ترمیم کی اجازت دینے والے اختیار(ات)",
        "logentry-protect-protect-cascade": "$1 نے $3 کو {{GENDER:$2|محفوظ کیا}} $4 [آبشاری]",
        "logentry-protect-modify": "$1 نے $3 کا درجۂ حفاظت {{GENDER:$2|تبدیل کیا}} $4",
        "logentry-protect-modify-cascade": "$1 نے $3 کا درجہ حفاظت {{GENDER:$2|تبدیل کیا}} $4 [آبشاری]",
-       "logentry-rights-rights": "$1 نے {{GENDER:$6|$3}} کی گروہی رکنیت از $4 تا $5 {{GENDER:$2|تبدیل کی}}",
-       "logentry-rights-rights-legacy": "$1 Ù\86Û\92 $3 Ú©Û\8c Ú¯Ø±Ù\88Û\81Û\8c Ø±Ù\88Ú©Ù\86Û\8cت کو {{GENDER:$2|تبدیل کیا}}",
+       "logentry-rights-rights": "$1 نے {{GENDER:$6|$3}} کا حلقہ صارف از $4 تا $5 {{GENDER:$2|تبدیل کی}}",
+       "logentry-rights-rights-legacy": "$1 Ù\86Û\92 $3 Ú©Û\92 Ø­Ù\84Ù\82Û\81 ØµØ§Ø±Ù\81 کو {{GENDER:$2|تبدیل کیا}}",
        "logentry-rights-autopromote": "$1 کو خودکار طور پر $4 سے $5 پر {{GENDER:$2|ترقی مل گئی}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|اپلوڈ}} $3",
        "logentry-upload-overwrite": "$1 نے $3 کا نیا نسخہ {{GENDER:$2|اپلوڈ کیا}}",
index 575f5a9..dbee858 100644 (file)
        "yourpasswordagain": "Bindaatal sa baatujàll",
        "createacct-yourpasswordagain": "Dëggalal baatujàll bi",
        "createacct-yourpasswordagain-ph": "Duggalaatal baatujàll bi",
-       "remembermypassword": "Denc sama yëgley dukkukaay ci bii joowukaay (lu ëpp nag $1 {{PLURAL:$1|day|days}})",
        "userlogin-remembermypassword": "Wéyal dima jàppe gu dugg",
        "yourdomainname": "Sa barab",
        "externaldberror": "Njuumte judd na ci dàttub njoxe bi, walla day ni rekk amuloo sañ-sañu yeesal sa sàqum biti.",
        "undo-failure": "Neenalug coppite gi defuwul: man naa jur ab jàppante ci coppite yi ci diggante bi",
        "undo-norev": "Coppite gi manoo koo neenal ndaxte nekkul walla dañu koo far",
        "undo-summary": "Neenalug coppite $1 yu [[Special:Contributions/$2|$2]] ([[User talk:$2|waxtaan]])",
-       "cantcreateaccounttitle": "sag mbindu Manu la nekk .",
        "cantcreateaccount-text": "Sosum sàq mu bàyyikoo ci bii màkkaanu IP ('''$1''') dañ kaa téye [[User:$3|$3]].\n\nNgirtey téye gi $3 joxe, mooy ne: ''$2''.",
        "viewpagelogs": "Xool yéenekaayu xët wii",
        "nohistory": "Xët wii amulub jaar-jaar.",
        "searchprofile-everything-tooltip": "Seet fépp (ba ci xëti waxtaanuwaay yi)",
        "searchprofile-advanced-tooltip": "Seet ci barabi tur yi",
        "search-result-size": "$1 ({{PLURAL:$2|1 baat|$2 baat}})",
-       "search-redirect": "(jubluwaat bu jëm $1)",
+       "search-redirect": "(yoonalaat gu jëm $1)",
        "search-section": "(xaaj $1)",
        "search-suggest": "Xéj-na lii nga doon seet: $1",
        "search-interwiki-caption": "Sémbu niroowaale",
index a69810c..b6061ed 100644 (file)
        "botpasswords-label-delete": "删除",
        "botpasswords-label-resetpassword": "重置密码",
        "botpasswords-label-grants": "应用授权:",
-       "botpasswords-help-grants": "æ¯\8f个æ\8e\88æ\9d\83å°\86ä¼\9aèµ\8bäº\88被å\88\97å\87ºã\80\81ä¸\94ç\94¨æ\88·è´¦æ\88·å·²æ\8b¥æ\9c\89权限的访问权。参见[[Special:ListGrants|授权表]]以获取更多信息。",
+       "botpasswords-help-grants": "æ\8e\88æ\9d\83å\85\81许对æ\82¨ç\9a\84ç\94¨æ\88·è´¦æ\88·å·²æ\8c\81æ\9c\89ç\9a\84æ\9d\83é\99\90è¿\9bè¡\8c访é\97®ã\80\82å\9c¨æ­¤å\90¯ç\94¨æ\8e\88æ\9d\83并ä¸\8dä¼\9aæ\8f\90ä¾\9bæ\82¨æ ¹æ\9c¬ä¸\8dä¼\9aæ\8b¥æ\9c\89ç\9a\84权限的访问权。参见[[Special:ListGrants|授权表]]以获取更多信息。",
        "botpasswords-label-grants-column": "已授权",
        "botpasswords-bad-appid": "机器人名“$1”无效。",
        "botpasswords-insert-failed": "无法添加机器人名“$1”。它是否已添加?",
        "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": "日志",
        "modifiedarticleprotection": "更改“[[$1]]”的保护等级",
        "unprotectedarticle": "移除页面“[[$1]]”的保护",
        "movedarticleprotection": "移动保护设置自“[[$2]]”至“[[$1]]”",
+       "protectedarticle-comment": "{{GENDER:$2|已保护}}“[[$1]]”",
+       "modifiedarticleprotection-comment": "{{GENDER:$2|已更改}}“[[$1]]”的保护等级",
+       "unprotectedarticle-comment": "已从“[[$1]]”{{GENDER:$2|移除保护}}",
        "protect-title": "更改“$1”的保护等级",
        "protect-title-notallowed": "查看“$1”的保护等级",
        "prot_1movedto2": "[[$1]]移动至[[$2]]",
        "unlockdbtext": "解锁数据库将会恢复所有用户编辑页面、修改参数、编辑监视列表以及其他需要更改数据库的操作。请确认您的决定。",
        "lockconfirm": "是,我的确想要锁定数据库。",
        "unlockconfirm": "是,我的确想要解锁数据库。",
-       "lockbtn": "数据库锁定",
+       "lockbtn": "锁定数据库",
        "unlockbtn": "解锁数据库",
        "locknoconfirm": "您没有勾选确认框。",
        "lockdbsuccesssub": "数据库锁定成功",
        "lockedbyandtime": "(由 {{GENDER:$1|$1}} 于$2 $3执行)",
        "move-page": "移动$1",
        "move-page-legend": "移动页面",
-       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其版本历史移动到新页面。同时老的条目将会被重定向到新条目。您可以自动地将指向老的条目的重定向更新为指向新条目。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:如果新条目已经有对应页面,此页面将<strong>不会</strong>被移动,除非新页面是重定向页并且无任何修订历史。这意味着您可在误操作后将页面移回原处,同时,您无法覆盖现有页面。\n\n<strong>注意:</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
+       "movepagetext": "您可以使用下面的表单来重命名一个页面,同时将其所有版本历史移动到新页面。旧标题将会被重定向到新标题。您可以自动更新链接至原标题的重定向。如果您不选择这样做的话,请检查[[Special:DoubleRedirects|双重]]或[[Special:BrokenRedirects|损坏重定向]]链接。您有责任确保链接会被正确指向他们应该被指向的地方。\n\n注意:如果已存在使用新标题的页面,此页面将<strong>不会</strong>被移动,除非新页面是重定向,并且没有过去的编辑历史。这意味着您可在误操作后将页面移回原处,同时,您无法覆盖现有页面。\n\n<strong>注意:</strong>对这样一个经常被访问的页面而言这可能是一个重大且唐突的更改;请在行动前先了解您的修改可能带来的一切后果。",
        "movepagetext-noredirectfixer": "用下面的表单来重命名一个页面,并将其版本历史同时移动到新页面。老的页面将成为新页面的重定向页。请检查[[Special:DoubleRedirects|双重重定向]]或[[Special:BrokenRedirects|损坏重定向]]链接。您应当负责确定所有链接依然会链到指定的页面。\n\n注意如果新页面已经有内容的话,页面将<strong>不会</strong>被移动,除非新页面无内容或是重定向页,而且没有版本历史。这意味着您再必要时可以在移动到新页面后再移回老的页面,同时您也无法覆盖现有页面。\n\n<strong>注意:</strong>对一个经常被访问的页面而言这可能是一个重大与唐突的更改;请在行动前先确定您了解其所可能带来的后果。",
        "movepagetalktext": "如果您勾选此框,相关联的讨论页将被自动移动到新的标题,除非这里已经有了一个非空讨论页。\n\n在这种情况下,如有需要,您将不得不手动移动或合并页面。",
        "moveuserpage-warning": "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
        "patrol-log-header": "这是已巡查版本的日志。",
        "log-show-hide-patrol": "$1巡查纪录",
        "log-show-hide-tag": "$1标签日志",
+       "confirm-markpatrolled-button": "确定",
+       "confirm-markpatrolled-top": "将$2的修订版本$3标记为已巡查么?",
        "deletedrevision": "已删除旧版本$1",
        "filedeleteerror-short": "删除文件发生错误:$1",
        "filedeleteerror-long": "删除文件时出错:\n\n$1",
        "authmanager-authn-autocreate-failed": "所有账户的自动创建失败:$1",
        "authmanager-change-not-supported": "提供的凭据不能被更改,因为没有东西会使用它们。",
        "authmanager-create-disabled": "账户创建已停用。",
-       "authmanager-create-from-login": "要创建您的账户,请填写下方的字段。",
+       "authmanager-create-from-login": "要创建您的账户,请填写字段。",
        "authmanager-create-not-in-progress": "账户创建尚未进行,或会话数据丢失。请从头重新开始。",
        "authmanager-create-no-primary": "提供的凭据不能用于账户创建。",
        "authmanager-link-no-primary": "提供的证书不能用于账户链接。",
index 314f811..fc41120 100644 (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",
index c74cae2..552bec0 100644 (file)
@@ -459,7 +459,6 @@ abstract class Maintenance {
         * Add the default parameters to the scripts
         */
        protected function addDefaultParams() {
-
                # Generic (non script dependant) options:
 
                $this->addOption( 'help', 'Display this help message', false, false, 'h' );
@@ -546,7 +545,6 @@ abstract class Maintenance {
                                . "for this script to run: $joined. Please enable them and then try again.";
                        $this->error( $msg, 1 );
                }
-
        }
 
        /**
index 87b8c2f..b0f9ece 100644 (file)
@@ -6,12 +6,12 @@ ALTER TABLE /*$wgDBprefix*/image ADD (
   img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
 
   -- major part of a MIME media type as defined by IANA
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
 
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
   -- but should be consistent throughout the database
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   img_minor_mime varbinary(32) NOT NULL default "unknown"
 );
index 3f0a83d..b504bde 100644 (file)
@@ -60,7 +60,6 @@ class CheckComposerLockUpToDate extends Maintenance {
                        // We couldn't find any out-of-date dependencies, so assume everything is ok!
                        $this->output( "Your composer.lock file is up to date with current dependencies!\n" );
                }
-
        }
 }
 
index f13dd93..388ad8a 100644 (file)
@@ -109,7 +109,6 @@ class GenerateCommonPassword extends Maintenance {
                } catch ( \Cdb\Exception $e ) {
                        $this->error( "Error writing cdb file: " . $e->getMessage(), 2 );
                }
-
        }
 }
 
index cdef7e0..77b0e61 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /**
  * Router for the php cli-server built-in webserver.
- * http://www.php.net/manual/en/features.commandline.webserver.php
+ * https://secure.php.net/manual/en/features.commandline.webserver.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
index c91d824..f6e65f9 100644 (file)
@@ -8,7 +8,7 @@
  * - hooks names in code are the first parameter of wfRunHooks.
  *
  * if --online option is passed, the script will compare the hooks in the code
- * with the ones at http://www.mediawiki.org/wiki/Manual:Hooks
+ * with the ones at https://www.mediawiki.org/wiki/Manual:Hooks
  *
  * Any instance of wfRunHooks that doesn't meet these parameters will be noted.
  *
index c2c6958..677bfa2 100644 (file)
@@ -23,6 +23,8 @@
 
 require_once __DIR__ . '/Maintenance.php';
 
+use MediaWiki\MediaWikiServices;
+
 /**
  * Maintenance script that displays replication lag times.
  *
@@ -32,27 +34,35 @@ class GetLagTimes extends Maintenance {
        public function __construct() {
                parent::__construct();
                $this->addDescription( 'Dump replication lag times' );
+               $this->addOption( 'report', "Report the lag values to StatsD" );
        }
 
        public function execute() {
-               $lb = wfGetLB();
+               $lbFactory = MediaWikiServices::getInstance()->getDBLoadBalancerFactory();
+               $stats = MediaWikiServices::getInstance()->getStatsdDataFactory();
 
-               if ( $lb->getServerCount() == 1 ) {
-                       $this->error( "This script dumps replication lag times, but you don't seem to have\n"
-                               . "a multi-host db server configuration." );
-               } else {
+               $lbs = $lbFactory->getAllMainLBs() + $lbFactory->getAllExternalLBs();
+               foreach ( $lbs as $cluster => $lb ) {
+                       if ( $lb->getServerCount() <= 1 ) {
+                               continue;
+                       }
                        $lags = $lb->getLagTimes();
-                       foreach ( $lags as $n => $lag ) {
-                               $host = $lb->getServerName( $n );
+                       foreach ( $lags as $serverIndex => $lag ) {
+                               $host = $lb->getServerName( $serverIndex );
                                if ( IP::isValid( $host ) ) {
                                        $ip = $host;
                                        $host = gethostbyaddr( $host );
                                } else {
                                        $ip = gethostbyname( $host );
                                }
+
                                $starLen = min( intval( $lag ), 40 );
                                $stars = str_repeat( '*', $starLen );
                                $this->output( sprintf( "%10s %20s %3d %s\n", $ip, $host, $lag, $stars ) );
+
+                               if ( $this->hasOption( 'report' ) ) {
+                                       $stats->gauge( "loadbalancer.lag.$cluster.$host", $lag );
+                               }
                        }
                }
        }
index 1613111..85b1f92 100644 (file)
@@ -38,6 +38,6 @@
  */
 
 /**
- * Source: <http://api.qunitjs.com/>
+ * Source: <https://api.qunitjs.com/>
  * @class QUnit
  */
index 5bdc8a7..bb1f3d2 100644 (file)
@@ -31,7 +31,7 @@ require_once __DIR__ . '/../Maintenance.php';
 class Digit2Html extends Maintenance {
 
        # A list of unicode numerals is available at:
-       # http://www.fileformat.info/info/unicode/category/Nd/list.htm
+       # https://www.fileformat.info/info/unicode/category/Nd/list.htm
        private $mLangs = [
                'Ar', 'As', 'Bh', 'Bo', 'Dz',
                'Fa', 'Gu', 'Hi', 'Km', 'Kn',
index beb9727..256ee36 100644 (file)
@@ -577,13 +577,13 @@ CREATE TABLE /*_*/image (
   img_media_type varchar(16) default null,
 
   -- major part of a MIME media type as defined by IANA
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   img_major_mime varchar(16) not null default 'unknown',
 
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
   -- but should be consistent throughout the database
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   img_minor_mime nvarchar(100) NOT NULL default 'unknown',
 
   -- Description field as entered by the uploader.
index ed63c5c..07aa282 100644 (file)
@@ -5,7 +5,7 @@
  * Should be set in Doxygen INPUT_FILTER as "php mwdoc-filter.php"
  *
  * Based on
- * <http://virtualtee.blogspot.co.uk/2012/03/tip-for-using-doxygen-for-php-code.html>
+ * <https://virtualtee.blogspot.co.uk/2012/03/tip-for-using-doxygen-for-php-code.html>
  *
  * Improved to resolve various bugs and better MediaWiki PHPDoc conventions:
  *
@@ -16,7 +16,7 @@
  * - Strip the text after @var from the output to avoid Doxygen warnings aboug bogus
  *   symbols being documented but not declared or defined.
  *
- * Copyright (C) 2012 Tamas Imrei <tamas.imrei@gmail.com> http://virtualtee.blogspot.com/
+ * Copyright (C) 2012 Tamas Imrei <tamas.imrei@gmail.com> https://virtualtee.blogspot.com/
  * Copyright (C) 2015 Timo Tijhof
  *
  * Permission is hereby granted, free of charge, to any person obtaining
index b9c797d..48602de 100644 (file)
@@ -112,7 +112,7 @@ class RebuildLocalisationCache extends Maintenance {
 
                        if ( $pid === 0 ) {
                                // Child, reseed because there is no bug in PHP:
-                               // http://bugs.php.net/bug.php?id=42465
+                               // https://bugs.php.net/bug.php?id=42465
                                mt_srand( getmypid() );
 
                                $this->doRebuild( $codes, $lc, $force );
index 2a37094..38cdfcf 100644 (file)
@@ -1,6 +1,6 @@
 -- Patch that introduces fulltext search capabilities to SQLite schema
 -- Requires that SQLite must be compiled with FTS3 module (comes with core amalgamation).
--- See http://sqlite.org/fts3.html for details of syntax.
+-- See https://sqlite.org/fts3.html for details of syntax.
 -- Will fail if FTS3 is not present,
 DROP TABLE IF EXISTS /*_*/searchindex;
 CREATE VIRTUAL TABLE /*_*/searchindex USING FTS3(
@@ -15,4 +15,4 @@ CREATE VIRTUAL TABLE /*_*/searchindex USING FTS3(
   si_text
 );
 
-INSERT INTO /*_*/updatelog (ul_key) VALUES ('fts3');
\ No newline at end of file
+INSERT INTO /*_*/updatelog (ul_key) VALUES ('fts3');
index 03ce508..cf60d89 100644 (file)
@@ -861,14 +861,14 @@ CREATE TABLE /*_*/image (
   img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
 
   -- major part of a MIME media type as defined by IANA
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   -- for "chemical" cf. http://dx.doi.org/10.1021/ci9803233 by the ACS
   img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart", "chemical") NOT NULL default "unknown",
 
   -- minor part of a MIME media type as defined by IANA
   -- the minor parts are not required to adher to any standard
   -- but should be consistent throughout the database
-  -- see http://www.iana.org/assignments/media-types/
+  -- see https://www.iana.org/assignments/media-types/
   img_minor_mime varbinary(100) NOT NULL default "unknown",
 
   -- Description field as entered by the uploader.
diff --git a/maintenance/updateCredits.php b/maintenance/updateCredits.php
new file mode 100644 (file)
index 0000000..a43e0ba
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Update the CREDITS list by merging in the list of git commit authors.
+ *
+ * The contents of the existing contributors list will be preserved. If a name
+ * needs to be removed for some reason that must be done manually before or
+ * after running this script.
+ *
+ * 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
+ */
+
+if ( PHP_SAPI != 'cli' ) {
+       die( "This script can only be run from the command line.\n" );
+}
+
+chdir( dirname( __DIR__ ) );
+
+$CREDITS = 'CREDITS';
+$START_CONTRIBUTORS = '<!-- BEGIN CONTRIBUTOR LIST -->';
+$END_CONTRIBUTORS = '<!-- END CONTRIBUTOR LIST -->';
+
+$inHeader = true;
+$inFooter = false;
+$header = [];
+$contributors = [];
+$footer = [];
+
+$lines = explode( "\n", file_get_contents( $CREDITS ) );
+foreach ( $lines as $line ) {
+       if ( $inHeader ) {
+               $header[] = $line;
+               $inHeader = $line !== $START_CONTRIBUTORS;
+       } elseif ( $inFooter ) {
+               $footer[] = $line;
+       } elseif ( $line == $END_CONTRIBUTORS ) {
+               $inFooter = true;
+               $footer[] = $line;
+       } else {
+               $name = substr( $line, 2 );
+               $contributors[$name] = true;
+       }
+}
+unset( $lines );
+
+$lines = explode( "\n", shell_exec( 'git log --format="%aN"' ) );
+foreach ( $lines as $line ) {
+       if ( empty( $line ) )  {
+               continue;
+       }
+       if ( substr( $line, 0, 5 ) === '[BOT]' ) {
+               continue;
+       }
+       $contributors[$line] = true;
+}
+
+$contributors = array_keys( $contributors );
+$collator = Collator::create( 'uca-default-u-kn' );
+$collator->sort( $contributors );
+array_walk( $contributors, function ( &$v, $k ) {
+       $v = "* {$v}";
+} );
+
+file_put_contents( $CREDITS,
+       implode( "\n", array_merge( $header, $contributors, $footer ) ) );
index 2e4a15d..5c2f12a 100644 (file)
@@ -1867,6 +1867,7 @@ return [
                        'apisandbox-continue',
                        'apisandbox-continue-clear',
                        'apisandbox-continue-help',
+                       'api-format-prettyprint-status',
                        'blanknamespace',
                ],
        ],
index 610e1ee..50a8cad 100644 (file)
@@ -12,7 +12,8 @@
                        "ترجمان05",
                        "Abanima",
                        "محمد أحمد عبد الفتاح",
-                       "Hiba Alshawi"
+                       "Hiba Alshawi",
+                       "Meno25"
                ]
        },
        "ooui-outline-control-move-down": "انقل العنصر للأسفل",
@@ -27,8 +28,8 @@
        "ooui-dialog-process-dismiss": "أغلق",
        "ooui-dialog-process-retry": "حاول مرة أخرى",
        "ooui-dialog-process-continue": "استمر",
-       "ooui-selectfile-button-select": "أختر Ù\85Ù\84Ù\81",
-       "ooui-selectfile-not-supported": "تحدÙ\8aد الملفات غير مدعوم",
-       "ooui-selectfile-placeholder": "Ù\84Ù\85 Ù\8aختر أي ملف",
-       "ooui-selectfile-dragdrop-placeholder": "ترÙ\83 ملف هنا"
+       "ooui-selectfile-button-select": "اختر Ù\85Ù\84Ù\81ا",
+       "ooui-selectfile-not-supported": "اختÙ\8aار الملفات غير مدعوم",
+       "ooui-selectfile-placeholder": "Ù\84Ù\85 Ù\8aتÙ\85 Ø§Ø®ØªÙ\8aار أي ملف",
+       "ooui-selectfile-dragdrop-placeholder": "اترÙ\83 Ø§Ù\84ملف هنا"
 }
index dce3593..5a3a93d 100644 (file)
@@ -5,9 +5,12 @@
                        "Hristofor.mirchev",
                        "පසිඳු කාවින්ද",
                        "Mitzev",
-                       "Aquilax"
+                       "Aquilax",
+                       "Vodnokon4e"
                ]
        },
+       "ooui-outline-control-move-down": "Преместване на елемента надолу",
+       "ooui-outline-control-move-up": "Преместване на елемента нагоре",
        "ooui-outline-control-remove": "Премахване на обекта",
        "ooui-toolbar-more": "Още",
        "ooui-toolgroup-expand": "Още",
@@ -17,5 +20,9 @@
        "ooui-dialog-process-error": "Нещо се обърка",
        "ooui-dialog-process-dismiss": "Затвори",
        "ooui-dialog-process-retry": "Опитайте отново",
-       "ooui-dialog-process-continue": "Продължаване"
+       "ooui-dialog-process-continue": "Продължаване",
+       "ooui-selectfile-button-select": "Избиране на файл",
+       "ooui-selectfile-not-supported": "Избраният файл не се поддържа",
+       "ooui-selectfile-placeholder": "Не е избран файл",
+       "ooui-selectfile-dragdrop-placeholder": "Пуснете файла тук"
 }
index e193fb0..7e1cd56 100644 (file)
@@ -21,5 +21,6 @@
        "ooui-dialog-message-reject": "Afbryd",
        "ooui-dialog-process-error": "Noget gik galt",
        "ooui-dialog-process-retry": "Prøv igen",
-       "ooui-dialog-process-continue": "Fortsæt"
+       "ooui-dialog-process-continue": "Fortsæt",
+       "ooui-selectfile-button-select": "Vælg en fil"
 }
index 15a5de3..de8d6f1 100644 (file)
        },
        "ooui-outline-control-move-down": "घटक (आयटम) खाली सरकवा",
        "ooui-outline-control-move-up": "घटक (आयटम) वर सरकवा",
+       "ooui-outline-control-remove": "बाब हटवा",
        "ooui-toolbar-more": "अधिक",
        "ooui-toolgroup-expand": "अधिक",
+       "ooui-toolgroup-collapse": "कमी",
        "ooui-dialog-message-accept": "ठिक आहे",
        "ooui-dialog-message-reject": "रद्द करा",
+       "ooui-dialog-process-error": "काहीतरी गडबड झाली",
        "ooui-dialog-process-dismiss": "रद्द करा",
-       "ooui-dialog-process-continue": "चालू ठेवा"
+       "ooui-dialog-process-retry": "पुन्हा प्रयत्न करा",
+       "ooui-dialog-process-continue": "चालू ठेवा",
+       "ooui-selectfile-button-select": "संचिका निवडा",
+       "ooui-selectfile-not-supported": "संचिका निवडणे साहाय्यीकृत नाही",
+       "ooui-selectfile-placeholder": "संचिका निवडल्या गेली नाही",
+       "ooui-selectfile-dragdrop-placeholder": "संचिका येथे टाका"
 }
index 1e5b83d..9dee2f5 100644 (file)
@@ -1,10 +1,16 @@
 {
        "@metadata": {
                "authors": [
-                       "Zylbath"
+                       "Zylbath",
+                       "Joachim Mos"
                ]
        },
        "ooui-outline-control-move-down": "Element na ünnen schuven",
        "ooui-outline-control-move-up": "Element na baven schuven",
-       "ooui-toolbar-more": "Mehr"
+       "ooui-toolbar-more": "Mehr",
+       "ooui-dialog-message-accept": "OK",
+       "ooui-dialog-message-reject": "Afbreken",
+       "ooui-dialog-process-error": "Do is wat in'e Büx goan",
+       "ooui-dialog-process-continue": "Wiedermaken",
+       "ooui-selectfile-button-select": "En Datei utwählen"
 }
index 3e54e85..dbe9f86 100644 (file)
@@ -10,7 +10,8 @@
                        "TurkishStyles",
                        "Sayginer",
                        "Meelo",
-                       "McAang"
+                       "McAang",
+                       "Uğurkent"
                ]
        },
        "ooui-outline-control-move-down": "Ögeyi aşağı taşı",
@@ -25,5 +26,7 @@
        "ooui-dialog-process-dismiss": "Kapat",
        "ooui-dialog-process-retry": "Tekrar dene",
        "ooui-dialog-process-continue": "Devam et",
+       "ooui-selectfile-button-select": "Dosya seç",
+       "ooui-selectfile-not-supported": "Dosya seçimi desteklenmiyor",
        "ooui-selectfile-placeholder": "Herhangi bir dosya seçilmedi"
 }
index d72957d..542447d 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
index 2f811da..bcc3778 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-element-hidden {
-       display: none !important;
-       /* stylelint-disable-line declaration-no-important */
+  display: none !important;
+  /* stylelint-disable-line declaration-no-important */
 }
 .oo-ui-buttonElement {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       cursor: pointer;
-       display: inline-block;
-       vertical-align: middle;
-       font-family: inherit;
-       font-size: inherit;
-       line-height: normal;
-       white-space: nowrap;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  cursor: pointer;
+  display: inline-block;
+  vertical-align: middle;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: normal;
+  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 > .oo-ui-iconElement-icon,
 .oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       display: none;
+  display: none;
 }
 .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-       z-index: 2;
+  cursor: default;
 }
 .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
 .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonElement-frameless {
-       position: relative;
+  position: relative;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       vertical-align: top;
-       text-align: center;
+  vertical-align: top;
+  text-align: center;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       color: #333;
+  color: #333;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: 0;
+  margin-left: 0;
 }
 .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin: 0.46875em;
+  margin: 0.46875em;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-left: 0.46875em;
+  margin-left: 0.46875em;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus {
-       outline: none;
+  outline: none;
 }
 .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 {
-       opacity: 1;
+  opacity: 1;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label,
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button:focus > .oo-ui-labelElement-label {
-       color: #000;
+  color: #000;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #333;
+  color: #333;
 }
 .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin-left: 0.25em;
+  margin-left: 0.25em;
 }
 .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button {
-       padding-left: 0.25em;
-       color: #333;
+  padding-left: 0.25em;
+  color: #333;
 }
 .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button:focus {
-       color: #000;
+  color: #000;
 }
 .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #087ecc;
+  color: #087ecc;
 }
 .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #76ab36;
+  color: #76ab36;
 }
 .oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #d45353;
+  color: #d45353;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       padding: 0.2em 0.8em;
-       border-radius: 0.3em;
-       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;
-       background-color: #eee;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffffffff\', endColorstr=\'#ffdddddd\' )';
+  padding: 0.2em 0.8em;
+  border-radius: 0.3em;
+  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;
+  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%);
+  -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: none;
+  border-color: #aaa;
+  outline: none;
 }
 .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       line-height: 1.875em;
+  line-height: 1.875em;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-       box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
-       color: #000;
-       border-color: #c9c9c9;
-       background-color: #eee;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffdddddd\', endColorstr=\'#ffffffff\' )';
+  box-shadow: inset 0 1px 4px 0 rgba(0, 0, 0, 0.07);
+  color: #000;
+  border-color: #c9c9c9;
+  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%);
+  -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 {
-       margin-left: -0.5em;
-       margin-right: -0.5em;
+  margin-left: -0.5em;
+  margin-right: -0.5em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-right: 0.3em;
+  margin-right: 0.3em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-left: -0.005em;
-       margin-right: -0.005em;
+  margin-left: -0.005em;
+  margin-right: -0.005em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-left: 0.46875em;
-       margin-right: -0.275em;
+  margin-left: 0.46875em;
+  margin-right: -0.275em;
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button {
-       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\' )';
+  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-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:focus {
-       border-color: #9dc2d4;
+  border-color: #9dc2d4;
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-       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\' )';
+  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-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button {
-       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\' )';
+  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-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:focus {
-       border-color: #adcb89;
+  border-color: #adcb89;
 }
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-active > .oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
-       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\' )';
+  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-buttonElement-framed.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button {
-       color: #d45353;
+  color: #d45353;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .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: translate3d(0, 0, 0);
-       box-shadow: none;
-       color: #333;
-       background: #eee;
-       border-color: #ccc;
+  opacity: 0.5;
+  -webkit-transform: translate3d(0, 0, 0);
+  box-shadow: none;
+  color: #333;
+  background: #eee;
+  border-color: #ccc;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:hover,
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus,
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button:focus,
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button:focus {
-       border-color: #ccc;
-       box-shadow: none;
+  border-color: #ccc;
+  box-shadow: none;
 }
 .oo-ui-clippableElement-clippable {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-floatableElement-hidden {
-       display: none;
+  display: none;
 }
 .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;
+  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-iconElement .oo-ui-iconElement-icon,
 .oo-ui-iconElement.oo-ui-iconElement-icon {
-       opacity: 0.8;
+  opacity: 0.8;
 }
 .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;
+  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-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
-       opacity: 0.8;
+  opacity: 0.8;
 }
 .oo-ui-labelElement .oo-ui-labelElement-label-highlight {
-       font-weight: bold;
+  font-weight: bold;
 }
 .oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
+  background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
 }
 .oo-ui-fieldLayout {
-       display: block;
-       margin-bottom: 1em;
+  display: block;
+  margin-bottom: 1em;
 }
 .oo-ui-fieldLayout:before,
 .oo-ui-fieldLayout:after {
-       content: ' ';
-       display: table;
+  content: ' ';
+  display: table;
 }
 .oo-ui-fieldLayout:after {
-       clear: both;
+  clear: both;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .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;
+  display: block;
+  float: left;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       text-align: right;
+  text-align: right;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
-       display: table;
+  display: table;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-       display: table-cell;
-       vertical-align: middle;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help {
-       float: right;
+  float: right;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
+  z-index: 1;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content {
-       padding: 0.5em 0.75em;
-       line-height: 1.5;
+  padding: 0.5em 0.75em;
+  line-height: 1.5;
 }
 .oo-ui-fieldLayout:last-child {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding-top: 0.5em;
-       margin-right: 5%;
-       width: 35%;
+  padding-top: 0.5em;
+  margin-right: 5%;
+  width: 35%;
 }
 .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 {
-       width: 60%;
+  width: 60%;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-       margin-bottom: 1.25em;
+  margin-bottom: 1.25em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding: 0.25em 0.25em 0.25em 0.5em;
+  padding: 0.25em 0.25em 0.25em 0.5em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding: 0.5em 0;
+  padding: 0.5em 0;
 }
 .oo-ui-fieldLayout > .oo-ui-popupButtonWidget {
-       margin-right: 0;
-       margin-top: 0.25em;
+  margin-right: 0;
+  margin-top: 0.25em;
 }
 .oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-fieldLayout-messages {
-       list-style: none none;
-       margin: 0;
-       padding: 0;
-       margin-top: 0.25em;
-       margin-left: 0.25em;
+  list-style: none none;
+  margin: 0;
+  padding: 0;
+  margin-top: 0.25em;
+  margin-left: 0.25em;
 }
 .oo-ui-fieldLayout-messages > li {
-       margin: 0;
-       padding: 0;
+  margin: 0;
+  padding: 0;
 }
 .oo-ui-fieldLayout-messages .oo-ui-iconWidget {
-       display: none;
+  display: none;
 }
 .oo-ui-fieldLayout-messages .oo-ui-fieldLayout-messages-error {
-       color: #d45353;
+  color: #d45353;
 }
 .oo-ui-fieldLayout-messages .oo-ui-labelWidget {
-       padding: 0.1em 0;
-       line-height: 1.5em;
-       vertical-align: middle;
+  padding: 0.1em 0;
+  line-height: 1.5em;
+  vertical-align: middle;
 }
 .oo-ui-actionFieldLayout {
-       max-width: 50em;
+  max-width: 50em;
 }
 .oo-ui-actionFieldLayout-input,
 .oo-ui-actionFieldLayout-button {
-       display: table-cell;
-       vertical-align: middle;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-actionFieldLayout-input {
-       padding-right: 1em;
+  padding-right: 1em;
 }
 .oo-ui-actionFieldLayout-button {
-       width: 1%;
-       white-space: nowrap;
+  width: 1%;
+  white-space: nowrap;
 }
 .oo-ui-fieldsetLayout {
-       position: relative;
-       min-width: 0;
-       margin: 0;
-       border: 0;
-       padding: 0.01px 0 0 0;
+  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;
+  display: table-cell;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       display: block;
-       position: absolute;
+  display: block;
+  position: absolute;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       color: inherit;
-       display: inline-table;
-       box-sizing: border-box;
-       max-width: 100%;
-       padding: 0;
-       white-space: normal;
-       float: left;
+  color: inherit;
+  display: inline-table;
+  box-sizing: border-box;
+  max-width: 100%;
+  padding: 0;
+  white-space: normal;
+  float: left;
 }
 .oo-ui-fieldsetLayout-group {
-       clear: both;
+  clear: both;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help {
-       float: right;
+  float: right;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
+  z-index: 1;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content {
-       padding: 0.5em 0.75em;
-       line-height: 1.5;
+  padding: 0.5em 0.75em;
+  line-height: 1.5;
 }
 .oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
 .oo-ui-fieldsetLayout + .oo-ui-formLayout {
-       margin-top: 2em;
+  margin-top: 2em;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       font-size: 1.1em;
-       margin-bottom: 0.5em;
-       padding: 0.25em 0;
-       font-weight: bold;
+  font-size: 1.1em;
+  margin-bottom: 0.5em;
+  padding: 0.25em 0;
+  font-weight: bold;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-       padding-left: 2em;
-       line-height: 1.8em;
+  padding-left: 2em;
+  line-height: 1.8em;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0.25em;
+  left: 0;
+  top: 0.25em;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-formLayout + .oo-ui-fieldsetLayout,
 .oo-ui-formLayout + .oo-ui-formLayout {
-       margin-top: 2em;
+  margin-top: 2em;
 }
 .oo-ui-panelLayout {
-       position: relative;
+  position: relative;
 }
 .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 .oo-ui-panelLayout-expanded {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
 }
 .oo-ui-panelLayout-padded {
-       padding: 1.25em;
+  padding: 1.25em;
 }
 .oo-ui-panelLayout-framed {
-       border-radius: 0.5em;
-       box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
+  border-radius: 0.5em;
+  box-shadow: 0 0.25em 1em rgba(0, 0, 0, 0.25);
 }
 .oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
-       margin: 1em 0;
+  margin: 1em 0;
 }
 .oo-ui-horizontalLayout > .oo-ui-widget {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout,
 .oo-ui-horizontalLayout > .oo-ui-widget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout:last-child,
 .oo-ui-horizontalLayout > .oo-ui-widget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-optionWidget {
-       position: relative;
-       display: block;
-       padding: 0.25em 0.5em;
-       border: 0;
+  position: relative;
+  display: block;
+  padding: 0.25em 0.5em;
+  border: 0;
 }
 .oo-ui-optionWidget.oo-ui-widget-enabled {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
+  cursor: default;
 }
 .oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
 }
 .oo-ui-optionWidget-highlighted {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 .oo-ui-optionWidget .oo-ui-labelElement-label {
-       line-height: 1.5em;
+  line-height: 1.5em;
 }
 .oo-ui-selectWidget-depressed .oo-ui-optionWidget-selected {
-       background-color: #a7dcff;
+  background-color: #a7dcff;
 }
 .oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed,
 .oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted,
 .oo-ui-selectWidget-pressed .oo-ui-optionWidget-pressed.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-       background-color: #a7dcff;
+  background-color: #a7dcff;
 }
 .oo-ui-optionWidget.oo-ui-widget-disabled {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-decoratedOptionWidget {
-       padding: 0.5em 2em 0.5em 3em;
+  padding: 0.5em 2em 0.5em 3em;
 }
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       position: absolute;
+  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%;
+  top: 0;
+  height: 100%;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       left: 0.5em;
+  left: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       right: 0.5em;
+  right: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-radioOptionWidget {
-       cursor: default;
-       padding: 0;
-       background-color: transparent;
+  cursor: default;
+  padding: 0;
+  background-color: transparent;
 }
 .oo-ui-radioOptionWidget .oo-ui-radioInputWidget,
 .oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       padding-left: 0.5em;
+  padding-left: 0.5em;
 }
 .oo-ui-radioOptionWidget .oo-ui-radioInputWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-labelWidget {
-       display: inline-block;
-       padding: 0.5em 0;
+  display: inline-block;
+  padding: 0.5em 0;
 }
 .oo-ui-iconWidget {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 2.5em;
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5em;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-indicatorWidget {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 2.5em;
-       margin: 0.46875em;
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5em;
+  margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-buttonWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-buttonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 0.3em;
-       margin-right: 0.5em;
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 0.3em;
+  margin-right: 0.5em;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-active .oo-ui-buttonElement-button {
+  cursor: default;
 }
 .oo-ui-buttonGroupWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-left: -1px;
+  border-radius: 0;
+  margin-left: -1px;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:first-child .oo-ui-buttonElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
+  border-bottom-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+  margin-left: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed:last-child .oo-ui-buttonElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
 }
 .oo-ui-popupWidget {
-       position: absolute;
-       /* @noflip */
-       left: 0;
+  position: absolute;
+  /* @noflip */
+  left: 0;
 }
 .oo-ui-popupWidget-popup {
-       position: relative;
-       overflow: hidden;
-       z-index: 1;
+  position: relative;
+  overflow: hidden;
+  z-index: 1;
 }
 .oo-ui-popupWidget-anchor {
-       display: none;
-       z-index: 1;
+  display: none;
+  z-index: 1;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-       display: block;
-       position: absolute;
-       top: 0;
-       /* @noflip */
-       left: 0;
-       background-repeat: no-repeat;
+  display: block;
+  position: absolute;
+  top: 0;
+  /* @noflip */
+  left: 0;
+  background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  float: right;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-       float: left;
-       cursor: default;
+  float: left;
+  cursor: default;
 }
 .oo-ui-popupWidget-body {
-       clear: both;
-       overflow: hidden;
+  clear: both;
+  overflow: hidden;
 }
 .oo-ui-popupWidget-popup {
-       background-color: #fff;
-       border: 1px solid #ccc;
-       border-radius: 0.25em;
-       box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border-radius: 0.25em;
+  box-shadow: 0 0.15em 0.5em 0 rgba(0, 0, 0, 0.2);
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-       margin-top: 6px;
+  margin-top: 6px;
 }
 .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;
-       border-top: 0;
+  content: '';
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-style: solid;
+  border-color: transparent;
+  border-top: 0;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before {
-       bottom: -7px;
-       left: -6px;
-       border-bottom-color: #aaa;
-       border-width: 7px;
+  bottom: -7px;
+  left: -6px;
+  border-bottom-color: #aaa;
+  border-width: 7px;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-       bottom: -7px;
-       left: -5px;
-       border-bottom-color: #fff;
-       border-width: 6px;
+  bottom: -7px;
+  left: -5px;
+  border-bottom-color: #fff;
+  border-width: 6px;
 }
 .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;
+  -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;
 }
 .oo-ui-popupWidget-head {
-       height: 2.5em;
+  height: 2.5em;
 }
 .oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-       margin: 0.25em;
+  margin: 0.25em;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-       margin: 0.75em 1em;
+  margin: 0.75em 1em;
 }
 .oo-ui-popupWidget-body-padded {
-       padding: 0 1em;
+  padding: 0 1em;
 }
 .oo-ui-popupButtonWidget {
-       position: relative;
+  position: relative;
 }
 .oo-ui-popupButtonWidget .oo-ui-popupWidget {
-       position: absolute;
-       cursor: auto;
+  position: absolute;
+  cursor: auto;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
-       /* @noflip */
-       left: 0.9375em;
+  /* @noflip */
+  left: 0.9375em;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
-       /* @noflip */
-       left: 1.2375em;
+  /* @noflip */
+  left: 1.2375em;
 }
 .oo-ui-inputWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-inputWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonInputWidget > button,
 .oo-ui-buttonInputWidget > input {
-       border: 0;
-       padding: 0;
-       background-color: transparent;
+  border: 0;
+  padding: 0;
+  background-color: transparent;
 }
 .oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .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;
+  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;
+  display: block;
 }
 .oo-ui-dropdownInputWidget select {
-       width: 100%;
-       cursor: pointer;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  width: 100%;
+  cursor: pointer;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-dropdownInputWidget select {
-       background-color: #fff;
-       height: 2.5em;
-       padding: 0.5em;
-       font-size: inherit;
-       font-family: inherit;
-       border: 1px solid rgba(0, 0, 0, 0.1);
-       border-radius: 0.25em;
+  background-color: #fff;
+  height: 2.5em;
+  padding: 0.5em;
+  font-size: inherit;
+  font-family: inherit;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 0.25em;
 }
 .oo-ui-dropdownInputWidget option {
-       font-size: inherit;
-       font-family: inherit;
-       height: 1.5em;
-       padding: 0.5em 1em;
+  font-size: inherit;
+  font-family: inherit;
+  height: 1.5em;
+  padding: 0.5em 1em;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover,
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
-       border-color: rgba(0, 0, 0, 0.2);
-       outline: none;
+  border-color: rgba(0, 0, 0, 0.2);
+  outline: none;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select {
-       color: #ccc;
-       border-color: #ddd;
-       background-color: #f3f3f3;
+  color: #ccc;
+  border-color: #ddd;
+  background-color: #f3f3f3;
 }
 .oo-ui-radioSelectInputWidget .oo-ui-fieldLayout {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .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;
+  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;
+  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;
+  overflow: auto;
+  resize: none;
 }
 .oo-ui-textInputWidget [type='number'] {
-       -moz-appearance: textfield;
+  -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;
+  -webkit-appearance: none;
+  margin: 0;
 }
 .oo-ui-textInputWidget [type='search'] {
-       -webkit-appearance: textfield;
+  -webkit-appearance: textfield;
 }
 .oo-ui-textInputWidget [type='search']::-ms-clear {
-       display: none;
+  display: none;
 }
 .oo-ui-textInputWidget [type='search']::-webkit-search-decoration,
 .oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button {
-       display: none;
+  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;
+  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;
+  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;
+  cursor: text;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled input,
 .oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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-disabled .oo-ui-labelElement-label {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  display: block;
 }
 .oo-ui-textInputWidget > .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
-       left: 0;
+  left: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
 .oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
-       right: 0;
+  right: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
-       position: absolute;
-       top: 0;
+  position: absolute;
+  top: 0;
 }
 .oo-ui-textInputWidget input,
 .oo-ui-textInputWidget textarea {
-       padding: 0.5em;
-       line-height: 1.275em;
-       font-size: inherit;
-       font-family: inherit;
-       background-color: #fff;
-       color: #000;
-       border: 1px solid #ccc;
-       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;
+  padding: 0.5em;
+  line-height: 1.275em;
+  font-size: inherit;
+  font-family: inherit;
+  background-color: #fff;
+  color: #000;
+  border: 1px solid #ccc;
+  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;
 }
 .oo-ui-textInputWidget input.oo-ui-pendingElement-pending,
 .oo-ui-textInputWidget textarea.oo-ui-pendingElement-pending {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled input:focus,
 .oo-ui-textInputWidget.oo-ui-widget-enabled textarea:focus {
-       outline: none;
-       border-color: #a7dcff;
-       box-shadow: 0 0 0.3em #a7dcff, 0 0 0 #fff;
+  outline: none;
+  border-color: #a7dcff;
+  box-shadow: 0 0 0.3em #a7dcff, 0 0 0 #fff;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly],
 .oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly] {
-       color: #777;
+  color: #777;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid input,
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-flaggedElement-invalid textarea {
-       background-color: #fdd;
+  background-color: #fdd;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled input,
 .oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
-       color: #ccc;
-       text-shadow: 0 1px 1px #fff;
-       border-color: #ddd;
-       background-color: #f3f3f3;
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #ddd;
+  background-color: #f3f3f3;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
-       color: #ddd;
-       text-shadow: 0 1px 1px #fff;
+  color: #ddd;
+  text-shadow: 0 1px 1px #fff;
 }
 .oo-ui-textInputWidget.oo-ui-iconElement input,
 .oo-ui-textInputWidget.oo-ui-iconElement textarea {
-       padding-left: 2.475em;
+  padding-left: 2.475em;
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       max-height: 2.375em;
-       margin-left: 0.3em;
+  max-height: 2.375em;
+  margin-left: 0.3em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement input,
 .oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-       padding-right: 2.4875em;
+  padding-right: 2.4875em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       max-height: 2.375em;
-       margin-right: 0.775em;
+  max-height: 2.375em;
+  margin-right: 0.775em;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
-       padding: 0.4em;
-       line-height: 1.5em;
-       color: #888;
+  padding: 0.4em;
+  line-height: 1.5em;
+  color: #888;
 }
 .oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label {
-       margin-right: 2.0875em;
+  margin-right: 2.0875em;
 }
 .oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label {
-       margin-left: 2.075em;
+  margin-left: 2.075em;
 }
 .oo-ui-menuSelectWidget {
-       position: absolute;
-       width: 100%;
-       z-index: 4;
-       background-color: #fff;
-       margin-top: -1px;
-       border: 1px solid #ccc;
-       border-radius: 0 0 0.25em 0.25em;
-       box-shadow: 0 0.15em 1em 0 rgba(0, 0, 0, 0.2);
+  position: absolute;
+  width: 100%;
+  z-index: 4;
+  background-color: #fff;
+  margin-top: -1px;
+  border: 1px solid #ccc;
+  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;
+  position: absolute;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  opacity: 0;
 }
 .oo-ui-menuOptionWidget {
-       position: relative;
+  position: relative;
 }
 .oo-ui-menuOptionWidget .oo-ui-iconElement-icon {
-       display: none;
+  display: none;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-       display: block;
+  display: block;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted,
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted.oo-ui-optionWidget-selected {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 .oo-ui-menuSectionOptionWidget {
-       cursor: default;
-       padding: 0.33em 0.75em;
-       color: #888;
+  cursor: default;
+  padding: 0.33em 0.75em;
+  color: #888;
 }
 .oo-ui-dropdownWidget {
-       display: inline-block;
-       position: relative;
-       width: 100%;
-       max-width: 50em;
-       background-color: #fff;
-       margin-right: 0.5em;
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+  background-color: #fff;
+  margin-right: 0.5em;
 }
 .oo-ui-dropdownWidget-handle {
-       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;
+  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-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-dropdownWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-dropdownWidget-handle {
-       height: 2.5em;
-       border: 1px solid rgba(0, 0, 0, 0.1);
-       border-radius: 0.25em;
+  height: 2.5em;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 0.25em;
 }
 .oo-ui-dropdownWidget-handle:hover {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-       top: 0;
-       right: 0;
-       margin: 0.775em;
+  top: 0;
+  right: 0;
+  margin: 0.775em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
-       top: 0;
-       left: 0.25em;
-       margin: 0.3em;
+  top: 0;
+  left: 0.25em;
+  margin: 0.3em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       line-height: 2.5em;
-       margin: 0 0.5em;
+  line-height: 2.5em;
+  margin: 0 0.5em;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle {
-       color: #ccc;
-       text-shadow: 0 1px 1px #fff;
-       border-color: #ddd;
-       background-color: #f3f3f3;
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #ddd;
+  background-color: #f3f3f3;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
+  margin-left: 3em;
 }
 .oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       margin-right: 2em;
+  margin-right: 2em;
 }
 .oo-ui-comboBoxInputWidget {
-       display: inline-block;
-       width: 100%;
-       max-width: 50em;
-       margin-right: 0.5em;
-}
-.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
-       cursor: pointer;
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
+}
+.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;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  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;
-       height: 2.5em;
-       width: 2.5em;
-       padding: 0;
+  opacity: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  height: 2.5em;
+  width: 2.5em;
+  padding: 0;
 }
 .oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator {
-       pointer-events: none;
+  pointer-events: none;
 }
 .oo-ui-comboBoxInputWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton {
+  position: absolute;
+  top: 0;
+  right: 0;
+  visibility: hidden;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button {
+  padding: 0;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator.oo-ui-indicator-down {
+  visibility: visible;
+  margin: 0.775em;
 }
-.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
-.oo-ui-comboBoxInputWidget-empty .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       cursor: default;
-       opacity: 0.2;
+.oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
+  cursor: default;
+  opacity: 0.2;
 }
 .oo-ui-multioptionWidget {
-       position: relative;
-       display: block;
+  position: relative;
+  display: block;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-enabled {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-disabled {
-       cursor: default;
+  cursor: default;
 }
 .oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
 }
 .oo-ui-multioptionWidget .oo-ui-labelElement-label {
-       line-height: 1.5em;
+  line-height: 1.5em;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-disabled {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-checkboxMultioptionWidget {
-       cursor: default;
-       padding: 0;
+  cursor: default;
+  padding: 0;
 }
 .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget,
 .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       padding-left: 0.5em;
+  padding-left: 0.5em;
 }
 .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-progressBarWidget {
-       max-width: 50em;
-       background-color: #fff;
-       border: 1px solid #ccc;
-       border-radius: 0.25em;
-       overflow: hidden;
+  max-width: 50em;
+  background-color: #fff;
+  border: 1px solid #ccc;
+  border-radius: 0.25em;
+  overflow: hidden;
 }
 .oo-ui-progressBarWidget-bar {
-       height: 1em;
-       border-right: 1px solid #ccc;
-       -webkit-transition: width 250ms ease, margin-left 250ms ease;
-          -moz-transition: width 250ms ease, margin-left 250ms ease;
-               transition: width 250ms ease, margin-left 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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffeaf4fa\', endColorstr=\'#ffb0d9ee\' )';
+  height: 1em;
+  border-right: 1px solid #ccc;
+  -webkit-transition: width 250ms ease, margin-left 250ms ease;
+     -moz-transition: width 250ms ease, margin-left 250ms ease;
+          transition: width 250ms ease, margin-left 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%);
+  -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;
-       width: 40%;
-       margin-left: -10%;
-       border-left: 1px solid #a6cee1;
+  -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%;
+  margin-left: -10%;
+  border-left: 1px solid #a6cee1;
 }
 .oo-ui-progressBarWidget.oo-ui-widget-disabled {
-       opacity: 0.6;
+  opacity: 0.6;
 }
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
 @-moz-keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
 @keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
index 9a3d7eb..e7c2ee0 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-element-hidden {
-       display: none !important;
-       /* stylelint-disable-line declaration-no-important */
+  display: none !important;
+  /* stylelint-disable-line declaration-no-important */
 }
 .oo-ui-buttonElement {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       cursor: pointer;
-       display: inline-block;
-       vertical-align: middle;
-       font-family: inherit;
-       font-size: inherit;
-       line-height: normal;
-       white-space: nowrap;
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  cursor: pointer;
+  display: inline-block;
+  vertical-align: middle;
+  font-family: inherit;
+  font-size: inherit;
+  line-height: normal;
+  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 > .oo-ui-iconElement-icon,
 .oo-ui-buttonElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       display: none;
+  display: none;
 }
 .oo-ui-buttonElement.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       cursor: default;
-}
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-       z-index: 2;
+  cursor: default;
 }
 .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon,
 .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonElement-frameless {
-       position: relative;
+  position: relative;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       vertical-align: top;
-       text-align: center;
+  vertical-align: top;
+  text-align: center;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
-       font-weight: bold;
-       text-decoration: none;
+  font-weight: bold;
+  text-decoration: none;
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button:focus {
-       border-radius: 2px;
-       outline: 0;
+  border-radius: 2px;
+  outline: 0;
+}
+.oo-ui-buttonElement > .oo-ui-buttonElement-button:focus::-moz-focus-inner {
+  border-color: transparent;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: 0;
+  margin-left: 0;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-right: 0.25em;
-       margin-left: 0.46875em;
+  margin-right: 0.25em;
+  margin-left: 0.46875em;
 }
 .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;
+  -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;
+  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;
+  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;
+  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;
+  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;
+  opacity: 1;
 }
 .oo-ui-buttonElement-frameless > .oo-ui-buttonElement-button .oo-ui-indicatorElement-indicator {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin-left: 0.25em;
-       margin-right: 0.25em;
+  margin-left: 0.25em;
+  margin-right: 0.25em;
 }
 .oo-ui-buttonElement-frameless > input.oo-ui-buttonElement-button {
-       padding-left: 0.25em;
-       padding-right: 0.25em;
+  padding-left: 0.25em;
+  padding-right: 0.25em;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-       color: #222;
+  color: #222;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-       color: #444;
+  color: #444;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-       box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #36c;
+  box-shadow: inset 0 0 0 1px #36c, 0 0 0 1px #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;
+  color: #000;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #36c;
+  color: #36c;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
-       color: #447ff5;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
+  color: #447ff5;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #2a4b8d;
-       box-shadow: none;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  color: #2a4b8d;
+  box-shadow: none;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #36c;
+  color: #36c;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
-       color: #447ff5;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
+  color: #447ff5;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #2a4b8d;
-       box-shadow: none;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  color: #2a4b8d;
+  box-shadow: none;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #c33;
+  color: #c33;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
-       color: #e53939;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover > .oo-ui-labelElement-label {
+  color: #e53939;
 }
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
-.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       color: #873636;
-       box-shadow: none;
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:active > .oo-ui-labelElement-label,
+.oo-ui-buttonElement-frameless.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+  color: #873636;
+  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;
+  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;
+  opacity: 0.73;
 }
 .oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       color: #72777d;
+  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;
+  opacity: 0.51;
 }
 .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.4em;
+  padding-left: 2.4em;
 }
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
-       padding: 0.5em 1em;
-       min-height: 1.2em;
-       min-width: 1em;
-       border-radius: 2px;
-       position: relative;
+  padding: 0.546875em 1em;
+  min-height: 1.25em;
+  min-width: 1em;
+  border-radius: 2px;
+  position: relative;
 }
 .oo-ui-buttonElement-framed > input.oo-ui-buttonElement-button,
 .oo-ui-buttonElement-framed.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       line-height: 1.2;
+  line-height: 1.25;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       position: absolute;
-       top: 0.2em;
-       left: 0.5625em;
+  position: absolute;
+  top: 0.2em;
+  left: 0.5625em;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin-left: 0.3em;
+  margin-left: 0.3em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator,
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-iconElement:not( .oo-ui-labelElement ) > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       margin-left: 0.46875em;
-       margin-right: -0.275em;
+  margin-left: 0.46875em;
+  margin-right: -0.275em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       position: relative;
-       left: 0.2em;
+  position: relative;
+  left: 0.2em;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
-       background-color: #c8ccd1;
-       color: #fff;
-       border: 1px solid #c8ccd1;
+  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;
+  border-left-color: #fff;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled > .oo-ui-buttonElement-button {
-       background-color: #f8f9fa;
-       color: #222;
-       border: 1px solid #9aa0a7;
+  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;
+  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;
+  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-pressed > .oo-ui-buttonElement-button {
-       background-color: #d9d9d9;
-       color: #000;
-       border-color: #72777d;
+  background-color: #d9d9d9;
+  color: #000;
+  border-color: #72777d;
 }
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-       background-color: #2a4b8d;
-       color: #fff;
-       border-color: #2a4b8d;
-       z-index: 3;
+  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;
+  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;
+  color: #36c;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-       background-color: #fff;
-       border-color: #859dcc;
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #859dcc;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.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: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-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-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;
+  color: #36c;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-       background-color: #fff;
-       border-color: #859dcc;
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #859dcc;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.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: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-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-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: #c33;
+  color: #c33;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-       background-color: #fff;
-       border-color: #b77c79;
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
+  background-color: #fff;
+  border-color: #b77c79;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-       background-color: #fbf4f4;
-       color: #873636;
-       border-color: #873636;
-       box-shadow: none;
+.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: #fbf4f4;
+  color: #873636;
+  border-color: #873636;
+  box-shadow: none;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-       border-color: #c33;
-       box-shadow: inset 0 0 0 1px #c33;
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:focus {
+  border-color: #c33;
+  box-shadow: inset 0 0 0 1px #c33;
 }
 .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-widget-enabled > .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-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.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-widget-enabled.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-widget-enabled > .oo-ui-buttonElement-button:focus {
-       border-color: #36c;
-       box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  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-widget-enabled > .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-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.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-widget-enabled.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-widget-enabled > .oo-ui-buttonElement-button:focus {
-       border-color: #36c;
-       box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  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: #c33;
-       border-color: #c33;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:hover {
-       background-color: #e53939;
-       border-color: #e53939;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:active,
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.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-widget-enabled.oo-ui-buttonElement-active > .oo-ui-buttonElement-button {
-       color: #fff;
-       background-color: #873636;
-       border-color: #873636;
-       box-shadow: none;
-}
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled > .oo-ui-buttonElement-button:focus {
-       border-color: #c33;
-       box-shadow: inset 0 0 0 1px #c33, inset 0 0 0 2px #fff;
+  color: #fff;
+  background-color: #c33;
+  border-color: #c33;
+}
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive > .oo-ui-buttonElement-button:hover {
+  background-color: #e53939;
+  border-color: #e53939;
+}
+.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: #873636;
+  border-color: #873636;
+  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: #c33;
+  box-shadow: inset 0 0 0 1px #c33, 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;
+  opacity: 1;
 }
 .oo-ui-clippableElement-clippable {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-floatableElement-hidden {
-       display: none;
+  display: none;
 }
 .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;
+  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;
+  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;
+  font-weight: bold;
 }
 .oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
+  background-image: /* @embed */ url(themes/mediawiki/images/textures/pending.gif);
 }
 .oo-ui-fieldLayout {
-       display: block;
-       margin-bottom: 1em;
+  display: block;
+  margin-bottom: 1em;
 }
 .oo-ui-fieldLayout:before,
 .oo-ui-fieldLayout:after {
-       content: ' ';
-       display: table;
+  content: ' ';
+  display: table;
 }
 .oo-ui-fieldLayout:after {
-       clear: both;
+  clear: both;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .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;
+  display: block;
+  float: left;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       text-align: right;
+  text-align: right;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body {
-       display: table;
+  display: table;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline > .oo-ui-fieldLayout-body > .oo-ui-fieldLayout-field {
-       display: table-cell;
-       vertical-align: middle;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-fieldLayout.oo-ui-labelElement.oo-ui-fieldLayout-align-top > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help {
-       float: right;
+  float: right;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
+  z-index: 1;
 }
 .oo-ui-fieldLayout > .oo-ui-fieldLayout-help .oo-ui-fieldLayout-help-content {
-       padding: 0.5em 0.75em;
-       line-height: 1.5;
+  padding: 0.5em 0.75em;
+  line-height: 1.5;
 }
 .oo-ui-fieldLayout:last-child {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-left.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label,
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-right.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding-top: 0.5em;
-       margin-right: 5%;
-       width: 35%;
+  padding-top: 0.5em;
+  margin-right: 5%;
+  width: 35%;
 }
 .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 {
-       width: 60%;
+  width: 60%;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline {
-       margin-bottom: 1.25em;
+  margin-bottom: 1.25em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-inline.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding: 0.25em 0.25em 0.25em 0.5em;
+  padding: 0.25em 0.25em 0.25em 0.5em;
 }
 .oo-ui-fieldLayout.oo-ui-fieldLayout-align-top.oo-ui-labelElement > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       padding-top: 0.25em;
-       padding-bottom: 0.5em;
+  padding-top: 0.25em;
+  padding-bottom: 0.5em;
 }
 .oo-ui-fieldLayout > .oo-ui-popupButtonWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-fieldLayout > .oo-ui-popupButtonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
-       color: #72777d;
+  color: #72777d;
 }
 .oo-ui-fieldLayout-messages {
-       list-style: none none;
-       margin: 0.25em 0 0 0.25em;
-       padding: 0;
+  list-style: none none;
+  margin: 0.25em 0 0 0.25em;
+  padding: 0;
 }
 .oo-ui-fieldLayout-messages > li {
-       margin: 0;
-       padding: 0;
-       display: table;
+  margin: 0;
+  padding: 0;
+  display: table;
 }
 .oo-ui-fieldLayout-messages .oo-ui-iconWidget {
-       display: table-cell;
-       border-right: 0.5em solid transparent;
+  display: table-cell;
+  border-right: 0.5em solid transparent;
 }
 .oo-ui-fieldLayout-messages .oo-ui-labelWidget {
-       display: table-cell;
-       padding: 0.1em 0;
-       line-height: 1.5;
-       vertical-align: middle;
+  display: table-cell;
+  padding: 0.1em 0;
+  line-height: 1.5;
+  vertical-align: middle;
 }
 .oo-ui-actionFieldLayout {
-       max-width: 50em;
+  max-width: 50em;
 }
 .oo-ui-actionFieldLayout-input,
 .oo-ui-actionFieldLayout-button {
-       display: table-cell;
-       vertical-align: middle;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-actionFieldLayout-input {
-       padding-right: 1em;
+  padding-right: 1em;
 }
 .oo-ui-actionFieldLayout-button {
-       width: 1%;
-       white-space: nowrap;
+  width: 1%;
+  white-space: nowrap;
 }
 .oo-ui-fieldsetLayout {
-       position: relative;
-       min-width: 0;
-       margin: 0;
-       border: 0;
-       padding: 0.01px 0 0 0;
+  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;
+  display: table-cell;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       display: block;
-       position: absolute;
+  display: block;
+  position: absolute;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       color: inherit;
-       display: inline-table;
-       box-sizing: border-box;
-       max-width: 100%;
-       padding: 0;
-       white-space: normal;
-       float: left;
+  color: inherit;
+  display: inline-table;
+  box-sizing: border-box;
+  max-width: 100%;
+  padding: 0;
+  white-space: normal;
+  float: left;
 }
 .oo-ui-fieldsetLayout-group {
-       clear: both;
+  clear: both;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help {
-       float: right;
+  float: right;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help > .oo-ui-popupWidget > .oo-ui-popupWidget-popup {
-       z-index: 1;
+  z-index: 1;
 }
 .oo-ui-fieldsetLayout > .oo-ui-fieldsetLayout-help .oo-ui-fieldsetLayout-help-content {
-       padding: 0.5em 0.75em;
-       line-height: 1.5;
+  padding: 0.5em 0.75em;
+  line-height: 1.5;
 }
 .oo-ui-fieldsetLayout + .oo-ui-fieldsetLayout,
 .oo-ui-fieldsetLayout + .oo-ui-formLayout {
-       margin-top: 2em;
+  margin-top: 2em;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
-       margin-bottom: 0.5em;
-       font-size: 1.1em;
-       font-weight: bold;
+  margin-bottom: 0.5em;
+  font-size: 1.1em;
+  font-weight: bold;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-labelElement-label {
-       padding-left: 2em;
-       line-height: 1.8;
+  padding-left: 2em;
+  line-height: 1.8;
 }
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0.25em;
+  top: 0;
+  left: 0;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-fieldsetLayout > .oo-ui-popupButtonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-formLayout + .oo-ui-fieldsetLayout,
 .oo-ui-formLayout + .oo-ui-formLayout {
-       margin-top: 2em;
+  margin-top: 2em;
 }
 .oo-ui-panelLayout {
-       position: relative;
+  position: relative;
 }
 .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 .oo-ui-panelLayout-expanded {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
 }
 .oo-ui-panelLayout-padded {
-       padding: 1.25em;
+  padding: 1.25em;
 }
 .oo-ui-panelLayout-framed {
-       border: 1px solid #a2a9b1;
-       border-radius: 2px;
-       box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
 }
 .oo-ui-panelLayout-padded.oo-ui-panelLayout-framed {
-       margin: 1em 0;
+  margin: 1em 0;
 }
 .oo-ui-horizontalLayout > .oo-ui-widget {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout,
 .oo-ui-horizontalLayout > .oo-ui-widget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout:last-child,
 .oo-ui-horizontalLayout > .oo-ui-widget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-horizontalLayout > .oo-ui-layout {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-optionWidget {
-       position: relative;
-       display: block;
-       border: 0;
-       padding: 0.25em 0.5em;
+  position: relative;
+  display: block;
+  border: 0;
+  padding: 0.25em 0.5em;
 }
 .oo-ui-optionWidget.oo-ui-widget-enabled {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-optionWidget.oo-ui-widget-disabled {
-       cursor: default;
+  cursor: default;
 }
 .oo-ui-optionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
 }
 .oo-ui-optionWidget .oo-ui-labelElement-label {
-       line-height: 1.5;
+  line-height: 1.5;
 }
 .oo-ui-optionWidget-selected .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       opacity: 1;
+  opacity: 1;
 }
 .oo-ui-optionWidget.oo-ui-widget-disabled {
-       color: #72777d;
+  color: #72777d;
 }
 .oo-ui-decoratedOptionWidget {
-       padding: 0.5em 2em 0.5em 3em;
+  padding: 0.5em 2em 0.5em 3em;
 }
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
-       position: absolute;
+  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%;
+  top: 0;
+  height: 100%;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       left: 0.5em;
+  left: 0.5em;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       right: 0.5em;
+  right: 0.5em;
 }
 .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;
+  opacity: 0.51;
 }
 .oo-ui-radioSelectWidget:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-radioSelectWidget:focus [type='radio']:checked + span:before {
-       border-color: #fff;
+  border-color: #fff;
 }
 .oo-ui-radioOptionWidget {
-       cursor: default;
-       padding: 0.25em 0;
-       background-color: transparent;
+  cursor: default;
+  padding: 0.25em 0;
+  background-color: transparent;
 }
 .oo-ui-radioOptionWidget .oo-ui-radioInputWidget,
 .oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-radioOptionWidget.oo-ui-optionWidget-highlighted {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-radioOptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       padding: 0.25em 0.25em 0.25em 0.5em;
+  padding: 0.25em 0.25em 0.25em 0.5em;
 }
 .oo-ui-radioOptionWidget .oo-ui-radioInputWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-labelWidget {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-iconWidget {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 2.5;
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5;
 }
 .oo-ui-iconWidget.oo-ui-widget-disabled {
-       opacity: 0.51;
+  opacity: 0.51;
 }
 .oo-ui-indicatorWidget {
-       display: inline-block;
-       vertical-align: middle;
-       line-height: 2.5;
-       margin: 0.46875em;
+  display: inline-block;
+  vertical-align: middle;
+  line-height: 2.5;
+  margin: 0.46875em;
 }
 .oo-ui-indicatorWidget.oo-ui-widget-disabled {
-       opacity: 0.51;
+  opacity: 0.51;
 }
 .oo-ui-buttonWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-buttonWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 2px;
-       margin-right: 0.5em;
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 2px;
+  margin-right: 0.5em;
+  z-index: 0;
+  position: relative;
+}
+.oo-ui-buttonGroupWidget .oo-ui-buttonElement-active .oo-ui-buttonElement-button {
+  cursor: default;
 }
 .oo-ui-buttonGroupWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonGroupWidget .oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-left: -1px;
+  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;
+  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;
+  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-buttonElement-button:focus {
-       border-color: #36c;
-       z-index: 3;
+.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;
-       /* @noflip */
-       left: 0;
+  position: absolute;
+  /* @noflip */
+  left: 0;
 }
 .oo-ui-popupWidget-popup {
-       position: relative;
-       overflow: hidden;
-       z-index: 1;
+  position: relative;
+  overflow: hidden;
+  z-index: 1;
 }
 .oo-ui-popupWidget-anchor {
-       display: none;
-       z-index: 1;
+  display: none;
+  z-index: 1;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor {
-       display: block;
-       position: absolute;
-       top: 0;
-       /* @noflip */
-       left: 0;
-       background-repeat: no-repeat;
+  display: block;
+  position: absolute;
+  top: 0;
+  /* @noflip */
+  left: 0;
+  background-repeat: no-repeat;
 }
 .oo-ui-popupWidget-head {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  float: right;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-       float: left;
-       cursor: default;
+  float: left;
+  cursor: default;
 }
 .oo-ui-popupWidget-body {
-       clear: both;
-       overflow: hidden;
+  clear: both;
+  overflow: hidden;
 }
 .oo-ui-popupWidget-popup {
-       background-color: #fff;
-       border: 1px solid #a2a9b1;
-       border-radius: 2px;
-       box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
-       margin-top: 9px;
+  margin-top: 9px;
 }
 .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;
-       border-top: 0;
+  content: '';
+  position: absolute;
+  width: 0;
+  height: 0;
+  border-style: solid;
+  border-color: transparent;
+  border-top: 0;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:before {
-       bottom: -10px;
-       left: -9px;
-       border-bottom-color: #888;
-       border-width: 10px;
+  bottom: -10px;
+  left: -9px;
+  border-bottom-color: #888;
+  border-width: 10px;
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-anchor:after {
-       bottom: -10px;
-       left: -8px;
-       border-bottom-color: #fff;
-       border-width: 9px;
+  bottom: -10px;
+  left: -8px;
+  border-bottom-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;
+  -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;
+  height: 2.5em;
 }
 .oo-ui-popupWidget-head > .oo-ui-buttonWidget {
-       margin: 0.25em;
+  margin: 0.25em;
 }
 .oo-ui-popupWidget-head > .oo-ui-labelElement-label {
-       margin: 0.75em 1em;
+  margin: 0.75em 1em;
 }
 .oo-ui-popupWidget-body-padded {
-       padding: 0 1em;
+  padding: 0 1em;
 }
 .oo-ui-popupButtonWidget {
-       position: relative;
+  position: relative;
 }
 .oo-ui-popupButtonWidget .oo-ui-popupWidget {
-       position: absolute;
-       cursor: auto;
+  position: absolute;
+  cursor: auto;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-frameless > .oo-ui-popupWidget {
-       /* @noflip */
-       left: 0.9375em;
+  /* @noflip */
+  left: 0.9375em;
 }
 .oo-ui-popupButtonWidget.oo-ui-buttonElement-framed > .oo-ui-popupWidget {
-       /* @noflip */
-       left: 1.5em;
+  /* @noflip */
+  left: 1.5em;
 }
 .oo-ui-inputWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-inputWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonInputWidget > button,
 .oo-ui-buttonInputWidget > input {
-       border: 0;
-       padding: 0;
-       background-color: transparent;
+  border: 0;
+  padding: 0;
+  background-color: transparent;
 }
 .oo-ui-checkboxInputWidget {
-       position: relative;
-       line-height: 1.6em;
-       white-space: nowrap;
+  position: relative;
+  line-height: 1.6em;
+  white-space: nowrap;
 }
 .oo-ui-checkboxInputWidget * {
-       font: inherit;
-       vertical-align: middle;
+  font: inherit;
+  vertical-align: middle;
 }
 .oo-ui-checkboxInputWidget [type='checkbox'] {
-       position: relative;
-       max-width: none;
-       width: 1.6em;
-       height: 1.6em;
-       margin: 0;
-       opacity: 0;
-       z-index: 1;
+  position: relative;
+  max-width: none;
+  width: 1.6em;
+  height: 1.6em;
+  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.6em;
-       height: 1.6em;
-       border: 1px solid #72777d;
-       border-radius: 2px;
+  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.6em;
+  height: 1.6em;
+  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%;
+  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;
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
 }
 .oo-ui-checkboxInputWidget [type='checkbox']:disabled:hover + span {
-       background-color: #c8ccd1;
-       border-color: #c8ccd1;
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
 }
 .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox'] {
-       cursor: pointer;
+  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;
+  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;
+  border-color: #36c;
 }
-.oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:active + span {
-       background-color: #2a4b8d;
-       border-color: #2a4b8d;
+.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;
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
 }
 .oo-ui-checkboxInputWidget.oo-ui-widget-enabled [type='checkbox']:checked + span {
-       background-color: #2a4b8d;
-       border-color: #2a4b8d;
+  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: #36c;
-       border-color: #36c;
+  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 {
-       background-color: #2a4b8d;
-       border-color: #2a4b8d;
+.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: #2a4b8d;
-       border-color: #2a4b8d;
-       box-shadow: inset 0 0 0 1px #36c, inset 0 0 0 2px #fff;
+  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-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
-       padding: 0.25em 0;
+  padding: 0.25em 0;
 }
 .oo-ui-checkboxMultiselectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
-       line-height: 1.5;
+  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;
+  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;
+  display: block;
 }
 .oo-ui-dropdownInputWidget select {
-       width: 100%;
-       cursor: pointer;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  width: 100%;
+  cursor: pointer;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-dropdownInputWidget select {
-       background-color: #fff;
-       height: 2.275em;
-       font-size: inherit;
-       font-family: inherit;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
-       padding-left: 1em;
-       vertical-align: middle;
+  background-color: #fff;
+  height: 2.275em;
+  font-size: inherit;
+  font-family: inherit;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding-left: 1em;
+  vertical-align: middle;
 }
 .oo-ui-dropdownInputWidget option {
-       font-size: inherit;
-       font-family: inherit;
-       height: 1.5em;
-       padding: 0.5em 1em;
+  font-size: inherit;
+  font-family: inherit;
+  height: 1.5em;
+  padding: 0.5em 1em;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:hover,
 .oo-ui-dropdownInputWidget.oo-ui-widget-enabled select:focus {
-       border-color: #a2a9b1;
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-dropdownInputWidget.oo-ui-widget-disabled select {
-       color: #72777d;
-       border-color: #c8ccd1;
-       background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+  background-color: #eaecf0;
 }
 .oo-ui-radioInputWidget {
-       position: relative;
-       line-height: 1.6em;
-       white-space: nowrap;
+  position: relative;
+  line-height: 1.6em;
+  white-space: nowrap;
 }
 .oo-ui-radioInputWidget * {
-       font: inherit;
-       vertical-align: middle;
+  font: inherit;
+  vertical-align: middle;
 }
 .oo-ui-radioInputWidget [type='radio'] {
-       position: relative;
-       max-width: none;
-       width: 1.6em;
-       height: 1.6em;
-       margin: 0;
-       opacity: 0;
-       z-index: 1;
+  position: relative;
+  max-width: none;
+  width: 1.6em;
+  height: 1.6em;
+  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.6em;
-       height: 1.6em;
-       border: 1px solid #72777d;
-       border-radius: 100%;
+  background-color: #fff;
+  position: absolute;
+  left: 0;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  width: 1.6em;
+  height: 1.6em;
+  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%;
+  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.4em;
+  border-width: 0.4em;
 }
 .oo-ui-radioInputWidget [type='radio']:checked:hover + span,
 .oo-ui-radioInputWidget [type='radio']:checked:focus:hover + span {
-       border-width: 0.4em;
+  border-width: 0.4em;
 }
 .oo-ui-radioInputWidget [type='radio']:disabled + span {
-       background-color: #c8ccd1;
-       border-color: #c8ccd1;
+  background-color: #c8ccd1;
+  border-color: #c8ccd1;
 }
 .oo-ui-radioInputWidget [type='radio']:disabled:checked + span {
-       background-color: #fff;
+  background-color: #fff;
 }
 .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio'] {
-       cursor: pointer;
+  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;
+  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;
+  border-color: #36c;
 }
 .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:active + span {
-       background-color: #2a4b8d;
-       border-color: #2a4b8d;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
 }
 .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked + span {
-       border-color: #2a4b8d;
+  border-color: #36c;
 }
 .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover + span {
-       border-color: #36c;
+  border-color: #447ff5;
 }
 .oo-ui-radioInputWidget.oo-ui-widget-enabled [type='radio']:checked:hover:focus + span {
-       border-color: #36c;
-       box-shadow: inset 0 0 0 1px #36c;
+  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;
+  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;
+  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;
+  border-color: #fff;
+  top: -3px;
+  right: -3px;
+  bottom: -3px;
+  left: -3px;
 }
 .oo-ui-radioSelectInputWidget .oo-ui-fieldLayout {
-       margin-bottom: 0;
+  margin-bottom: 0;
 }
 .oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body {
-       padding: 0.25em 0;
+  padding: 0.25em 0;
 }
 .oo-ui-radioSelectInputWidget .oo-ui-fieldLayout .oo-ui-fieldLayout-body .oo-ui-labelElement-label {
-       line-height: 1.5;
+  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;
+  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;
+  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;
+  overflow: auto;
+  resize: none;
 }
 .oo-ui-textInputWidget [type='number'] {
-       -moz-appearance: textfield;
+  -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;
+  -webkit-appearance: none;
+  margin: 0;
 }
 .oo-ui-textInputWidget [type='search'] {
-       -webkit-appearance: textfield;
+  -webkit-appearance: textfield;
 }
 .oo-ui-textInputWidget [type='search']::-ms-clear {
-       display: none;
+  display: none;
 }
 .oo-ui-textInputWidget [type='search']::-webkit-search-decoration,
 .oo-ui-textInputWidget [type='search']::-webkit-search-cancel-button {
-       display: none;
+  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;
+  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;
+  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;
+  cursor: text;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled.oo-ui-textInputWidget-type-search > .oo-ui-indicatorElement-indicator {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled input,
 .oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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-disabled .oo-ui-labelElement-label {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  display: block;
 }
 .oo-ui-textInputWidget > .oo-ui-iconElement-icon,
 .oo-ui-textInputWidget-labelPosition-before > .oo-ui-labelElement-label {
-       left: 0;
+  left: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-indicatorElement-indicator,
 .oo-ui-textInputWidget-labelPosition-after > .oo-ui-labelElement-label {
-       right: 0;
+  right: 0;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
-       position: absolute;
-       top: 0;
+  position: absolute;
+  top: 0;
 }
 .oo-ui-textInputWidget input,
 .oo-ui-textInputWidget textarea {
-       padding: 0.5em;
-       margin: 0;
-       font-size: inherit;
-       font-family: inherit;
-       background-color: #fff;
-       color: #000;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
+  margin: 0;
+  font-size: inherit;
+  font-family: inherit;
+  background-color: #fff;
+  color: #000;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0.625em 0.546875em 0.546875em;
+}
+.oo-ui-textInputWidget input {
+  line-height: 1.172em;
 }
 .oo-ui-textInputWidget textarea {
-       line-height: 1.275;
+  line-height: 1.275;
 }
 .oo-ui-textInputWidget .oo-ui-pendingElement-pending {
-       background-color: transparent;
+  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 0.1em #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);
+  box-shadow: inset 0 0 0 0.1em #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;
+  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;
+  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: #777;
-       text-shadow: 0 1px 1px #fff;
+  color: #72777d;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled input[readonly]:hover,
 .oo-ui-textInputWidget.oo-ui-widget-enabled textarea[readonly]:hover {
-       border-color: #ccc;
+  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: #ccc;
-       box-shadow: inset 0 0 0 0.1em #ccc;
+  border-color: #c8ccd1;
+  box-shadow: inset 0 0 0 1px #c8ccd1;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled :-moz-placeholder {
-       color: #54595d;
-       opacity: 1;
+  color: #72777d;
+  opacity: 1;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled ::-moz-placeholder {
-       color: #54595d;
-       opacity: 1;
+  color: #72777d;
+  opacity: 1;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled :-ms-input-placeholder {
-       color: #54595d;
+  color: #72777d;
 }
 .oo-ui-textInputWidget.oo-ui-widget-enabled ::-webkit-input-placeholder {
-       color: #54595d;
+  color: #72777d;
+}
+.oo-ui-textInputWidget.oo-ui-widget-enabled :placeholder-shown {
+  color: #72777d;
 }
 .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: #f00;
+  border-color: #f00;
 }
 .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: #f00;
+  border-color: #f00;
 }
 .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: #f00;
-       box-shadow: inset 0 0 0 0.1em #f00;
+  border-color: #f00;
+  box-shadow: inset 0 0 0 0.1em #f00;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled input,
 .oo-ui-textInputWidget.oo-ui-widget-disabled textarea {
-       background-color: #eaecf0;
-       color: #72777d;
-       text-shadow: 0 1px 1px #fff;
-       border-color: #c8ccd1;
+  background-color: #eaecf0;
+  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;
+  opacity: 0.51;
 }
 .oo-ui-textInputWidget.oo-ui-widget-disabled .oo-ui-labelElement-label {
-       color: #72777d;
-       text-shadow: 0 1px 1px #fff;
+  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.875em;
+  padding-left: 2.875em;
 }
 .oo-ui-textInputWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       left: 0;
-       height: 100%;
-       max-height: 2.375em;
-       margin-left: 0.5em;
-       background-position: right center;
+  left: 0;
+  height: 100%;
+  max-height: 2.375em;
+  margin-left: 0.5em;
+  background-position: right center;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement input,
 .oo-ui-textInputWidget.oo-ui-indicatorElement textarea {
-       padding-right: 2.4875em;
+  padding-right: 2.4875em;
 }
 .oo-ui-textInputWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       height: 100%;
-       max-height: 2.375em;
-       margin: 0 0.775em;
+  height: 100%;
+  max-height: 2.375em;
+  margin: 0 0.775em;
 }
 .oo-ui-textInputWidget > .oo-ui-labelElement-label {
-       padding: 0.4em;
-       line-height: 1.5;
-       color: #888;
+  color: #72777d;
+  padding: 0.4em;
+  line-height: 1.5;
 }
 .oo-ui-textInputWidget-labelPosition-after.oo-ui-indicatorElement > .oo-ui-labelElement-label {
-       margin-right: 2.0875em;
+  margin-right: 2.0875em;
 }
 .oo-ui-textInputWidget-labelPosition-before.oo-ui-iconElement > .oo-ui-labelElement-label {
-       margin-left: 2.475em;
+  margin-left: 2.475em;
 }
 .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 0.15em 0 0 rgba(0, 0, 0, 0.15);
+  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 0.15em 0 0 rgba(0, 0, 0, 0.15);
 }
 .oo-ui-menuSelectWidget input {
-       position: absolute;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       opacity: 0;
+  position: absolute;
+  width: 0;
+  height: 0;
+  overflow: hidden;
+  opacity: 0;
 }
 .oo-ui-menuOptionWidget {
-       position: relative;
-       padding: 0.5em 1em;
-       -webkit-transition: background-color 100ms, color 100ms;
-          -moz-transition: background-color 100ms, color 100ms;
-               transition: background-color 100ms, color 100ms;
+  position: relative;
+  padding: 0.5em 1em;
+  -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;
+  display: none;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-       display: block;
+  display: block;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-highlighted {
-       background-color: #eaecf0;
-       color: #000;
+  background-color: #eaecf0;
+  color: #000;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected {
-       background-color: #eaf3ff;
-       color: #36c;
+  background-color: #eaf3ff;
+  color: #36c;
 }
 .oo-ui-menuOptionWidget.oo-ui-optionWidget-selected .oo-ui-iconElement-icon {
-       display: none;
+  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;
+  background-color: rgba(41, 98, 204, 0.1);
+  color: #36c;
 }
 .oo-ui-menuSectionOptionWidget {
-       cursor: default;
-       padding: 0.33em 0.75em;
-       color: #888;
+  cursor: default;
+  color: #72777d;
+  padding: 0.33em 0.75em;
 }
 .oo-ui-dropdownWidget {
-       display: inline-block;
-       position: relative;
-       width: 100%;
-       max-width: 50em;
-       margin-right: 0.5em;
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
 }
 .oo-ui-dropdownWidget-handle {
-       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;
+  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-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-enabled .oo-ui-dropdownWidget-handle {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-dropdownWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-dropdownWidget-handle {
-       padding: 0.5em 0;
-       height: 2.275em;
-       line-height: 1.275;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
+  padding: 0.546875em 0;
+  height: 2.5em;
+  line-height: 1.275;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator {
-       top: 0;
-       right: 0;
-       margin: 0.775em;
+  top: 0;
+  right: 0;
+  margin: 0.775em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
-       top: 0;
-       left: 0.25em;
-       margin: 0.3em;
+  top: 0;
+  left: 0.25em;
+  margin: 0.3em;
 }
 .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       margin: 0 1em;
+  margin: 0 1em;
 }
 .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;
+  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;
-       border-color: #a2a9b1;
+  background-color: #fff;
+  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;
+  opacity: 0.73;
 }
 .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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  outline: 0;
 }
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 0.15;
+  opacity: 0.15;
 }
 .oo-ui-dropdownWidget.oo-ui-iconElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
+  margin-left: 3em;
 }
 .oo-ui-dropdownWidget.oo-ui-indicatorElement .oo-ui-dropdownWidget-handle .oo-ui-labelElement-label {
-       margin-right: 2em;
+  margin-right: 2em;
 }
 .oo-ui-comboBoxInputWidget {
-       display: inline-block;
+  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.oo-ui-widget-enabled > .oo-ui-indicatorElement-indicator {
-       cursor: pointer;
+.oo-ui-comboBoxInputWidget-dropdownButton > .oo-ui-buttonElement-button {
+  display: block;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  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;
-       height: 2.5em;
-       width: 2.5em;
-       padding: 0;
+  opacity: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  height: 2.5em;
+  width: 2.5em;
+  padding: 0;
 }
 .oo-ui-comboBoxInputWidget-php > .oo-ui-indicatorElement-indicator {
-       pointer-events: none;
+  pointer-events: none;
 }
 .oo-ui-comboBoxInputWidget input,
 .oo-ui-comboBoxInputWidget textarea {
-       height: 2.35em;
+  height: 2.5em;
+  border-top-right-radius: 0;
+  border-bottom-right-radius: 0;
+  border-right-width: 0;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton {
+  width: 2.5em;
+}
+.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button {
+  min-height: 2.5em;
+  padding: 0.546875em;
 }
-.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled:hover input,
-.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled:hover textarea {
-       border-color: #a2a9b1;
+.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button,
+.oo-ui-comboBoxInputWidget-dropdownButton .oo-ui-buttonElement-button:focus {
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
 }
-.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled:hover input:focus,
-.oo-ui-comboBoxInputWidget.oo-ui-widget-enabled:hover textarea:focus {
-       border-color: #36c;
+.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty input,
+.oo-ui-comboBoxInputWidget.oo-ui-comboBoxInputWidget-empty textarea {
+  border-right-width: 1px;
 }
 .oo-ui-comboBoxInputWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
-       opacity: 0.15;
+  opacity: 1;
 }
 .oo-ui-multioptionWidget {
-       position: relative;
-       display: block;
+  position: relative;
+  display: block;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-enabled {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-disabled {
-       cursor: default;
+  cursor: default;
 }
 .oo-ui-multioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: block;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: block;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
 }
 .oo-ui-multioptionWidget .oo-ui-labelElement-label {
-       line-height: 1.5;
+  line-height: 1.5;
 }
 .oo-ui-multioptionWidget.oo-ui-widget-disabled {
-       color: #72777d;
+  color: #72777d;
 }
 .oo-ui-checkboxMultioptionWidget {
-       cursor: default;
-       padding: 0.25em 0;
+  cursor: default;
+  padding: 0.25em 0;
 }
 .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget,
 .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       vertical-align: middle;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-checkboxMultioptionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       padding: 0.25em 0.25em 0.25em 0.5em;
+  padding: 0.25em 0.25em 0.25em 0.5em;
 }
 .oo-ui-checkboxMultioptionWidget .oo-ui-checkboxInputWidget {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-progressBarWidget {
-       max-width: 50em;
-       background-color: #fff;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
-       overflow: hidden;
+  max-width: 50em;
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  overflow: hidden;
 }
 .oo-ui-progressBarWidget-bar {
-       background-color: #ddd;
-       height: 1em;
-       -webkit-transition: width 200ms, margin-left 200ms;
-          -moz-transition: width 200ms, margin-left 200ms;
-               transition: width 200ms, margin-left 200ms;
+  background-color: #36c;
+  height: 1em;
+  -webkit-transition: width 200ms, margin-left 200ms;
+     -moz-transition: width 200ms, margin-left 200ms;
+          transition: width 200ms, margin-left 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%;
-       margin-left: -10%;
-       border-left-width: 1px;
+  -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%;
+  margin-left: -10%;
+  border-left-width: 1px;
 }
 .oo-ui-progressBarWidget.oo-ui-widget-disabled {
-       opacity: 0.6;
+  opacity: 0.6;
 }
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
 @-moz-keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
 @keyframes oo-ui-progressBarWidget-slide {
-       from {
-               margin-left: -40%;
-       }
-       to {
-               margin-left: 100%;
-       }
+  from {
+    margin-left: -40%;
+  }
+  to {
+    margin-left: 100%;
+  }
 }
index 109645b..fd4e033 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
@@ -260,6 +260,18 @@ OO.ui.debounce = function ( func, wait, immediate ) {
        };
 };
 
+/**
+ * Puts a console warning with provided message.
+ *
+ * @param {string} message
+ */
+OO.ui.warnDeprecation = function ( message ) {
+       if ( OO.getProp( window, 'console', 'warn' ) !== undefined ) {
+               // eslint-disable-next-line no-console
+               console.warn( message );
+       }
+};
+
 /**
  * Returns a function, that, when invoked, will only be triggered at most once
  * during a given window of time. If called again during that window, it will
@@ -312,30 +324,6 @@ OO.ui.now = Date.now || function () {
        return new Date().getTime();
 };
 
-/**
- * Proxy for `node.addEventListener( eventName, handler, true )`.
- *
- * @param {HTMLElement} node
- * @param {string} eventName
- * @param {Function} handler
- * @deprecated since 0.15.0
- */
-OO.ui.addCaptureEventListener = function ( node, eventName, handler ) {
-       node.addEventListener( eventName, handler, true );
-};
-
-/**
- * Proxy for `node.removeEventListener( eventName, handler, true )`.
- *
- * @param {HTMLElement} node
- * @param {string} eventName
- * @param {Function} handler
- * @deprecated since 0.15.0
- */
-OO.ui.removeCaptureEventListener = function ( node, eventName, handler ) {
-       node.removeEventListener( eventName, handler, true );
-};
-
 /**
  * Reconstitute a JavaScript object corresponding to a widget created by
  * the PHP implementation.
@@ -747,6 +735,7 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {
        // pick up dynamic state, like focus, value of form inputs, scroll position, etc.
        state = cls.static.gatherPreInfuseState( $elem[ 0 ], data );
        // rebuild widget
+       // eslint-disable-next-line new-cap
        obj = new cls( data );
        // now replace old DOM with this new DOM.
        if ( top ) {
@@ -1610,7 +1599,6 @@ OO.ui.Theme.prototype.getElementClasses = function () {
  * For elements with theme logic hooks, this should be called any time there's a state change.
  *
  * @param {OO.ui.Element} element Element for which to update classes
- * @return {Object.<string,string[]>} Categorized class names with `on` and `off` lists
  */
 OO.ui.Theme.prototype.updateElementClasses = function ( element ) {
        var $elements = $( [] ),
@@ -1871,13 +1859,18 @@ OO.ui.mixin.ButtonElement.prototype.setButtonElement = function ( $button ) {
 
        this.$button = $button
                .addClass( 'oo-ui-buttonElement-button' )
-               .attr( { role: 'button' } )
                .on( {
                        mousedown: this.onMouseDownHandler,
                        keydown: this.onKeyDownHandler,
                        click: this.onClickHandler,
                        keypress: this.onKeyPressHandler
                } );
+
+       // Add `role="button"` on `<a>` elements, where it's needed
+       // `toUppercase()` is added for XHTML documents
+       if ( this.$button.prop( 'tagName' ).toUpperCase() === 'A' ) {
+               this.$button.attr( 'role', 'button' );
+       }
 };
 
 /**
@@ -3393,31 +3386,14 @@ OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.FlaggedElement );
 OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.TabIndexedElement );
 OO.mixinClass( OO.ui.ButtonWidget, OO.ui.mixin.AccessKeyedElement );
 
-/* Methods */
-
-/**
- * @inheritdoc
- */
-OO.ui.ButtonWidget.prototype.onMouseDown = function ( e ) {
-       if ( !this.isDisabled() ) {
-               // Remove the tab-index while the button is down to prevent the button from stealing focus
-               this.$button.removeAttr( 'tabindex' );
-       }
-
-       return OO.ui.mixin.ButtonElement.prototype.onMouseDown.call( this, e );
-};
+/* Static Properties */
 
 /**
  * @inheritdoc
  */
-OO.ui.ButtonWidget.prototype.onMouseUp = function ( e ) {
-       if ( !this.isDisabled() ) {
-               // Restore the tab-index after the button is up to restore the button's accessibility
-               this.$button.attr( 'tabindex', this.tabIndex );
-       }
+OO.ui.ButtonWidget.static.cancelButtonMouseDownEvents = false;
 
-       return OO.ui.mixin.ButtonElement.prototype.onMouseUp.call( this, e );
-};
+/* Methods */
 
 /**
  * Get hyperlink location.
@@ -7582,18 +7558,6 @@ OO.ui.InputWidget.prototype.getValue = function () {
        return this.value;
 };
 
-/**
- * Set the directionality of the input, either RTL (right-to-left) or LTR (left-to-right).
- *
- * @deprecated since v0.13.1; use #setDir directly
- * @param {boolean} isRTL Directionality is right-to-left
- * @chainable
- */
-OO.ui.InputWidget.prototype.setRTL = function ( isRTL ) {
-       this.setDir( isRTL ? 'rtl' : 'ltr' );
-       return this;
-};
-
 /**
  * Set the directionality of the input.
  *
@@ -8612,7 +8576,7 @@ 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',
- *  'email', 'url', 'date' or 'number'. Ignored if `multiline` is true.
+ *  'email', 'url', 'date', 'month' or 'number'. Ignored if `multiline` is true.
  *
  *  Some values of `type` result in additional behaviors:
  *
@@ -8646,17 +8610,14 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                type: 'text',
                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
        }
-       if ( config.required ) {
-               if ( config.indicator === undefined ) {
-                       config.indicator = 'required';
-               }
-       }
 
        // Parent constructor
        OO.ui.TextInputWidget.parent.call( this, config );
@@ -8670,6 +8631,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        // Properties
        this.type = this.getSaneType( config );
        this.readOnly = false;
+       this.required = false;
        this.multiline = !!config.multiline;
        this.autosize = !!config.autosize;
        this.minRows = config.rows !== undefined ? config.rows : '';
@@ -8713,6 +8675,7 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
                .addClass( 'oo-ui-textInputWidget oo-ui-textInputWidget-type-' + this.type )
                .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 );
@@ -8723,10 +8686,6 @@ OO.ui.TextInputWidget = function OoUiTextInputWidget( config ) {
        if ( config.autofocus ) {
                this.$input.attr( 'autofocus', 'autofocus' );
        }
-       if ( config.required ) {
-               this.$input.attr( 'required', 'required' );
-               this.$input.attr( 'aria-required', 'true' );
-       }
        if ( config.autocomplete === false ) {
                this.$input.attr( 'autocomplete', 'off' );
                // Turning off autocompletion also disables "form caching" when the user navigates to a
@@ -8925,6 +8884,42 @@ OO.ui.TextInputWidget.prototype.setReadOnly = function ( state ) {
        return this;
 };
 
+/**
+ * Check if the input is {@link #required required}.
+ *
+ * @return {boolean}
+ */
+OO.ui.TextInputWidget.prototype.isRequired = function () {
+       return this.required;
+};
+
+/**
+ * Set the {@link #required required} state of the input.
+ *
+ * @param {boolean} state Make input required
+ * @chainable
+ */
+OO.ui.TextInputWidget.prototype.setRequired = function ( state ) {
+       this.required = !!state;
+       if ( this.required ) {
+               this.$input
+                       .attr( 'required', 'required' )
+                       .attr( 'aria-required', 'true' );
+               if ( this.getIndicator() === null ) {
+                       this.setIndicator( 'required' );
+               }
+       } else {
+               this.$input
+                       .removeAttr( 'required' )
+                       .removeAttr( 'aria-required' );
+               if ( this.getIndicator() === 'required' ) {
+                       this.setIndicator( null );
+               }
+       }
+       this.updateSearchIndicator();
+       return this;
+};
+
 /**
  * Support function for making #onElementAttach work across browsers.
  *
@@ -9100,6 +9095,7 @@ OO.ui.TextInputWidget.prototype.getSaneType = function ( config ) {
                'email',
                'url',
                'date',
+               'month',
                'number'
        ];
        return allowedTypes.indexOf( config.type ) !== -1 ? config.type : 'text';
@@ -9297,30 +9293,6 @@ OO.ui.TextInputWidget.prototype.setValidityFlag = function ( isValid ) {
        }
 };
 
-/**
- * Check if a value is valid.
- *
- * This method returns a promise that resolves with a boolean `true` if the current value is
- * considered valid according to the supplied {@link #validate validation pattern}.
- *
- * @deprecated since v0.12.3
- * @return {jQuery.Promise} A promise that resolves to a boolean `true` if the value is valid.
- */
-OO.ui.TextInputWidget.prototype.isValid = function () {
-       var result;
-
-       if ( this.validate instanceof Function ) {
-               result = this.validate( this.getValue() );
-               if ( result && $.isFunction( result.promise ) ) {
-                       return result.promise();
-               } else {
-                       return $.Deferred().resolve( !!result ).promise();
-               }
-       } else {
-               return $.Deferred().resolve( !!this.getValue().match( this.validate ) ).promise();
-       }
-};
-
 /**
  * Get the validity of current value.
  *
@@ -9449,6 +9421,99 @@ OO.ui.TextInputWidget.prototype.restorePreInfuseState = function ( state ) {
        }
 };
 
+/**
+ * @class
+ * @extends OO.ui.TextInputWidget
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+OO.ui.SearchInputWidget = function OoUiSearchInputWidget( config ) {
+       config = $.extend( {
+               icon: 'search'
+       }, config );
+
+       // Set type to text so that TextInputWidget doesn't
+       // get stuck in an infinite loop.
+       config.type = 'text';
+
+       // Parent constructor
+       OO.ui.SearchInputWidget.parent.call( this, config );
+
+       // Initialization
+       this.$element.addClass( 'oo-ui-textInputWidget-type-search' );
+       this.updateSearchIndicator();
+       this.connect( this, {
+               disable: 'onDisable'
+       } );
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.SearchInputWidget, OO.ui.TextInputWidget );
+
+/* Methods */
+
+/**
+ * @inheritdoc
+ * @protected
+ */
+OO.ui.SearchInputWidget.prototype.getInputElement = function () {
+       return $( '<input>' ).attr( 'type', 'search' );
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.SearchInputWidget.prototype.onIndicatorMouseDown = function ( e ) {
+       if ( e.which === OO.ui.MouseButtons.LEFT ) {
+               // Clear the text field
+               this.setValue( '' );
+               this.$input[ 0 ].focus();
+               return false;
+       }
+};
+
+/**
+ * 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.SearchInputWidget.prototype.updateSearchIndicator = function () {
+       if ( this.getValue() === '' || this.isDisabled() || this.isReadOnly() ) {
+               this.setIndicator( null );
+       } else {
+               this.setIndicator( 'clear' );
+       }
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.SearchInputWidget.prototype.onChange = function () {
+       OO.ui.SearchInputWidget.parent.prototype.onChange.call( this );
+       this.updateSearchIndicator();
+};
+
+/**
+ * Handle disable events.
+ *
+ * @param {boolean} disabled Element is disabled
+ * @private
+ */
+OO.ui.SearchInputWidget.prototype.onDisable = function () {
+       this.updateSearchIndicator();
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.SearchInputWidget.prototype.setReadOnly = function ( state ) {
+       OO.ui.SearchInputWidget.parent.prototype.setReadOnly.call( this, state );
+       this.updateSearchIndicator();
+       return this;
+};
+
 /**
  * ComboBoxInputWidgets combine a {@link OO.ui.TextInputWidget text input} (where a value
  * can be entered manually) and a {@link OO.ui.MenuSelectWidget menu of options} (from which
@@ -9511,17 +9576,19 @@ OO.ui.TextInputWidget.prototype.restorePreInfuseState = function ( state ) {
 OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        // Configuration initialization
        config = $.extend( {
-               indicator: 'down',
                autocomplete: false
        }, config );
-       // For backwards-compatibility with ComboBoxWidget config
-       $.extend( config, config.input );
 
        // Parent constructor
        OO.ui.ComboBoxInputWidget.parent.call( this, config );
 
        // Properties
        this.$overlay = config.$overlay || this.$element;
+       this.dropdownButton = new OO.ui.ButtonWidget( {
+               classes: [ 'oo-ui-comboBoxInputWidget-dropdownButton' ],
+               indicator: 'down',
+               disabled: this.disabled
+       } );
        this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
                {
                        widget: this,
@@ -9531,18 +9598,15 @@ OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
                },
                config.menu
        ) );
-       // For backwards-compatibility with ComboBoxWidget
-       this.input = this;
 
        // Events
-       this.$indicator.on( {
-               click: this.onIndicatorClick.bind( this ),
-               keypress: this.onIndicatorKeyPress.bind( this )
-       } );
        this.connect( this, {
                change: 'onInputChange',
                enter: 'onInputEnter'
        } );
+       this.dropdownButton.connect( this, {
+               click: 'onDropdownButtonClick'
+       } );
        this.menu.connect( this, {
                choose: 'onMenuChoose',
                add: 'onMenuItemsChange',
@@ -9558,8 +9622,12 @@ OO.ui.ComboBoxInputWidget = function OoUiComboBoxInputWidget( config ) {
        if ( config.options !== undefined ) {
                this.setOptions( config.options );
        }
-       // Extra class for backwards-compatibility with ComboBoxWidget
-       this.$element.addClass( 'oo-ui-comboBoxInputWidget oo-ui-comboBoxWidget' );
+       this.$field = $( '<div>' )
+               .addClass( 'oo-ui-comboBoxInputWidget-field' )
+               .append( this.$input, this.dropdownButton.$element );
+       this.$element
+               .addClass( 'oo-ui-comboBoxInputWidget' )
+               .append( this.$field );
        this.$overlay.append( this.menu.$element );
        this.onMenuItemsChange();
 };
@@ -9608,42 +9676,24 @@ OO.ui.ComboBoxInputWidget.prototype.onInputChange = function ( value ) {
 };
 
 /**
- * Handle mouse click events.
- *
- * @private
- * @param {jQuery.Event} e Mouse click event
- */
-OO.ui.ComboBoxInputWidget.prototype.onIndicatorClick = function ( e ) {
-       if ( !this.isDisabled() && e.which === OO.ui.MouseButtons.LEFT ) {
-               this.menu.toggle();
-               this.$input[ 0 ].focus();
-       }
-       return false;
-};
-
-/**
- * Handle key press events.
+ * Handle input enter events.
  *
  * @private
- * @param {jQuery.Event} e Key press event
  */
-OO.ui.ComboBoxInputWidget.prototype.onIndicatorKeyPress = function ( e ) {
-       if ( !this.isDisabled() && ( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER ) ) {
-               this.menu.toggle();
-               this.$input[ 0 ].focus();
-               return false;
+OO.ui.ComboBoxInputWidget.prototype.onInputEnter = function () {
+       if ( !this.isDisabled() ) {
+               this.menu.toggle( false );
        }
 };
 
 /**
- * Handle input enter events.
+ * Handle button click events.
  *
  * @private
  */
-OO.ui.ComboBoxInputWidget.prototype.onInputEnter = function () {
-       if ( !this.isDisabled() ) {
-               this.menu.toggle( false );
-       }
+OO.ui.ComboBoxInputWidget.prototype.onDropdownButtonClick = function () {
+       this.menu.toggle();
+       this.$input[ 0 ].focus();
 };
 
 /**
@@ -9677,6 +9727,9 @@ OO.ui.ComboBoxInputWidget.prototype.setDisabled = function ( disabled ) {
        // Parent method
        OO.ui.ComboBoxInputWidget.parent.prototype.setDisabled.call( this, disabled );
 
+       if ( this.dropdownButton ) {
+               this.dropdownButton.setDisabled( this.isDisabled() );
+       }
        if ( this.menu ) {
                this.menu.setDisabled( this.isDisabled() );
        }
@@ -9703,12 +9756,6 @@ OO.ui.ComboBoxInputWidget.prototype.setOptions = function ( options ) {
        return this;
 };
 
-/**
- * @class
- * @deprecated since 0.13.2; use OO.ui.ComboBoxInputWidget instead
- */
-OO.ui.ComboBoxWidget = OO.ui.ComboBoxInputWidget;
-
 /**
  * FieldLayouts are used with OO.ui.FieldsetLayout. Each FieldLayout requires a field-widget,
  * which is a widget that is specified by reference before any optional configuration settings.
@@ -10015,6 +10062,7 @@ OO.ui.FieldLayout.prototype.updateMessages = function () {
  * @constructor
  * @param {OO.ui.Widget} fieldWidget Field widget
  * @param {OO.ui.ButtonWidget} buttonWidget Button widget
+ * @param {Object} config
  */
 OO.ui.ActionFieldLayout = function OoUiActionFieldLayout( fieldWidget, buttonWidget, config ) {
        // Allow passing positional parameters inside the config object
index 616f78e..17bca7e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
index d6ed767..7fb36c4 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
-       z-index: 4;
+  z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
-       /* @noflip */
-       margin-left: 1.25em;
+  /* @noflip */
+  margin-left: 1.25em;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup {
-       border: 0;
-       border-radius: 0;
-       margin: 0;
+  border: 0;
+  border-radius: 0;
+  margin: 0;
 }
 .oo-ui-toolGroupTool:first-child > .oo-ui-popupToolGroup {
-       border-top-left-radius: 0.3125em;
-       border-bottom-left-radius: 0.3125em;
+  border-top-left-radius: 0.3125em;
+  border-bottom-left-radius: 0.3125em;
 }
 .oo-ui-toolGroupTool:last-child > .oo-ui-popupToolGroup {
-       border-top-right-radius: 0.3125em;
-       border-bottom-right-radius: 0.3125em;
+  border-top-right-radius: 0.3125em;
+  border-bottom-right-radius: 0.3125em;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
-       height: 1.875em;
-       padding: 0.3125em;
+  height: 1.875em;
+  padding: 0.3125em;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       height: 1.875em;
-       width: 1.875em;
+  height: 1.875em;
+  width: 1.875em;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       line-height: 2.1em;
+  line-height: 2.1em;
 }
 .oo-ui-toolGroup {
-       display: inline-block;
-       vertical-align: middle;
-       margin: 0.375em;
-       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;
+  display: inline-block;
+  vertical-align: middle;
+  margin: 0.375em;
+  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;
 }
 .oo-ui-toolGroup-empty {
-       display: none;
+  display: none;
 }
 .oo-ui-toolGroup .oo-ui-tool-link {
-       text-decoration: none;
-       cursor: pointer;
+  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;
+  outline: 0;
+  cursor: default;
 }
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
-       margin-left: 0;
+  margin-left: 0;
 }
 .oo-ui-toolGroup.oo-ui-widget-enabled:hover {
-       border-color: rgba(0, 0, 0, 0.1);
+  border-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-toolGroup.oo-ui-widget-enabled .oo-ui-tool-link .oo-ui-tool-title {
-       color: #000;
+  color: #000;
 }
 .oo-ui-barToolGroup > .oo-ui-iconElement-icon,
 .oo-ui-barToolGroup > .oo-ui-labelElement-label {
-       display: none;
+  display: none;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
-       display: inline-block;
-       position: relative;
-       vertical-align: top;
+  display: inline-block;
+  position: relative;
+  vertical-align: top;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-       display: block;
+  display: block;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
-       display: none;
+  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;
+  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;
+  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;
+  display: inline;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
-       margin: -1px 0 -1px -1px;
-       border: 1px solid transparent;
+  margin: -1px 0 -1px -1px;
+  border: 1px solid transparent;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool:first-child {
-       border-top-left-radius: 0.3125em;
-       border-bottom-left-radius: 0.3125em;
+  border-top-left-radius: 0.3125em;
+  border-bottom-left-radius: 0.3125em;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool:last-child {
-       margin-right: -1px;
-       border-top-right-radius: 0.3125em;
-       border-bottom-right-radius: 0.3125em;
+  margin-right: -1px;
+  border-top-right-radius: 0.3125em;
+  border-bottom-right-radius: 0.3125em;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-       height: 1.875em;
-       padding: 0.3125em;
+  height: 1.875em;
+  padding: 0.3125em;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 1.875em;
-       width: 1.875em;
+  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.1em;
+  line-height: 2.1em;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled {
-       border-color: rgba(0, 0, 0, 0.2);
-       box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#fff1f7fb\', endColorstr=\'#ffffffff\' )';
+  border-color: rgba(0, 0, 0, 0.2);
+  box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
+  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%);
+  -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 {
-       border-left-color: rgba(0, 0, 0, 0.1);
+  border-left-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-tool-title {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover > .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 1;
+  opacity: 1;
 }
 .oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-popupToolGroup {
-       position: relative;
-       height: 2.5em;
-       min-width: 2.5em;
+  position: relative;
+  height: 2.5em;
+  min-width: 2.5em;
 }
 .oo-ui-popupToolGroup-handle {
-       display: block;
-       cursor: pointer;
+  display: block;
+  cursor: pointer;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-       outline: 0;
-       cursor: default;
+  outline: 0;
+  cursor: default;
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       display: none;
-       position: absolute;
-       z-index: 4;
+  display: none;
+  position: absolute;
+  z-index: 4;
 }
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-       display: block;
+  display: block;
 }
 .oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-       left: 0;
+  left: 0;
 }
 .oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-       right: 0;
+  right: 0;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link {
-       display: table;
-       width: 100%;
-       vertical-align: middle;
-       white-space: nowrap;
+  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;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-       text-align: right;
+  text-align: right;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
-       padding-left: 3em;
+  padding-left: 3em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup {
-       min-width: 1.875em;
+  min-width: 1.875em;
 }
 .oo-ui-popupToolGroup.oo-ui-iconElement {
-       min-width: 3.125em;
+  min-width: 3.125em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement {
-       min-width: 2.5em;
+  min-width: 2.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 4.375em;
+  min-width: 4.375em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 3.75em;
+  min-width: 3.75em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       line-height: 2.6em;
-       margin: 0 1em;
+  line-height: 2.6em;
+  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;
+  margin: 0 0.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
+  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;
+  margin-left: 2.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-right: 2.25em;
+  margin-right: 2.25em;
 }
 .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;
+  margin-right: 1.75em;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
-       height: 0.9375em;
-       margin: 0.78125em;
-       top: 0;
-       right: 0;
+  width: 0.9375em;
+  height: 0.9375em;
+  margin: 0.78125em;
+  top: 0;
+  right: 0;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       right: -0.3125em;
+  right: -0.3125em;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       width: 1.875em;
-       height: 1.875em;
-       margin: 0.3125em;
-       top: 0;
-       left: 0.3125em;
+  width: 1.875em;
+  height: 1.875em;
+  margin: 0.3125em;
+  top: 0;
+  left: 0.3125em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       left: 0;
+  left: 0;
 }
 .oo-ui-popupToolGroup-header {
-       line-height: 2.6em;
-       margin: 0 0.6em;
-       font-weight: bold;
+  line-height: 2.6em;
+  margin: 0 0.6em;
+  font-weight: bold;
 }
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled {
-       border-bottom-left-radius: 0;
-       border-bottom-right-radius: 0;
-       box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#fff1f7fb\', endColorstr=\'#ffffffff\' )';
+  border-bottom-left-radius: 0;
+  border-bottom-right-radius: 0;
+  box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
+  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%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff1f7fb', endColorstr='#ffffffff' )";
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       top: 2.5em;
-       margin: 0 -1px;
-       border: 1px solid #ccc;
-       background-color: #fff;
-       box-shadow: 0 0.3125em 1.25em rgba(0, 0, 0, 0.25);
+  top: 2.5em;
+  margin: 0 -1px;
+  border: 1px solid #ccc;
+  background-color: #fff;
+  box-shadow: 0 0.3125em 1.25em rgba(0, 0, 0, 0.25);
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link {
-       padding: 0.3125em 0 0.3125em 0.3125em;
+  padding: 0.3125em 0 0.3125em 0.3125em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       height: 1.875em;
-       width: 1.875em;
-       min-width: 1.875em;
+  height: 1.875em;
+  width: 1.875em;
+  min-width: 1.875em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       padding-left: 0.5em;
+  padding-left: 0.5em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       line-height: 2em;
+  line-height: 2em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-       color: #888;
+  color: #888;
 }
 .oo-ui-listToolGroup .oo-ui-tool {
-       display: block;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  display: block;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-listToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.3125em;
+  padding: 0.3125em;
 }
 .oo-ui-listToolGroup.oo-ui-popupToolGroup-active {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-listToolGroup .oo-ui-tool {
-       border: 1px solid transparent;
-       margin: -1px 0;
-       padding: 0 0.625em 0 0;
+  border: 1px solid transparent;
+  margin: -1px 0;
+  padding: 0 0.625em 0 0;
 }
 .oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-       border-color: rgba(0, 0, 0, 0.1);
-       box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#fff1f7fb\', endColorstr=\'#ffffffff\' )';
+  border-color: rgba(0, 0, 0, 0.1);
+  box-shadow: inset 0 0.0875em 0.0875em 0 rgba(0, 0, 0, 0.07);
+  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%);
+  -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 {
-       border-top-color: rgba(0, 0, 0, 0.1);
+  border-top-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled:hover {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 1;
+  opacity: 1;
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-accel {
-       color: #ddd;
+  color: #ddd;
 }
 .oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-listToolGroup.oo-ui-widget-disabled {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
 .oo-ui-listToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-menuToolGroup {
-       border-color: rgba(0, 0, 0, 0.1);
+  border-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-menuToolGroup .oo-ui-tool {
-       display: block;
+  display: block;
 }
 .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 10em;
+  min-width: 10em;
 }
 .oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 8.125em;
+  min-width: 8.125em;
 }
 .oo-ui-menuToolGroup .oo-ui-toolGroup-tools {
-       padding: 0.3125em 0 0.3125em 0;
+  padding: 0.3125em 0 0.3125em 0;
 }
 .oo-ui-menuToolGroup.oo-ui-widget-enabled:hover {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-menuToolGroup.oo-ui-popupToolGroup-active {
-       border-color: rgba(0, 0, 0, 0.25);
+  border-color: rgba(0, 0, 0, 0.25);
 }
 .oo-ui-menuToolGroup .oo-ui-tool {
-       padding: 0 1.25em 0 0.3125em;
+  padding: 0 1.25em 0 0.3125em;
 }
 .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-image: none;
+  background-image: none;
 }
 .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-size: contain;
-       background-position: center center;
-       background-repeat: no-repeat;
+  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-size: contain;
+  background-position: center center;
+  background-repeat: no-repeat;
 }
 .oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-enabled:hover {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 .oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-tool-title {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-menuToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-link .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-menuToolGroup.oo-ui-widget-disabled {
-       color: #ccc;
-       border-color: rgba(0, 0, 0, 0.05);
+  color: #ccc;
+  border-color: rgba(0, 0, 0, 0.05);
 }
 .oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator,
 .oo-ui-menuToolGroup.oo-ui-widget-disabled .oo-ui-iconElement-icon {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-toolbar {
-       clear: both;
+  clear: both;
 }
 .oo-ui-toolbar-bar {
-       line-height: 1;
-       position: relative;
+  line-height: 1;
+  position: relative;
 }
 .oo-ui-toolbar-tools,
 .oo-ui-toolbar-actions,
 .oo-ui-toolbar-shadow {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  display: inline;
+  white-space: nowrap;
 }
 .oo-ui-toolbar-narrow .oo-ui-toolbar-tools {
-       white-space: normal;
+  white-space: normal;
 }
 .oo-ui-toolbar-tools .oo-ui-tool {
-       white-space: normal;
+  white-space: normal;
 }
 .oo-ui-toolbar-actions {
-       float: right;
+  float: right;
 }
 .oo-ui-toolbar-actions .oo-ui-toolbar {
-       display: inline-block;
+  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;
+  -webkit-touch-callout: default;
+  -webkit-user-select: all;
+     -moz-user-select: all;
+      -ms-user-select: all;
+          user-select: all;
 }
 .oo-ui-toolbar-shadow {
-       background-position: left top;
-       background-repeat: repeat-x;
-       position: absolute;
-       width: 100%;
-       pointer-events: none;
+  background-position: left top;
+  background-repeat: repeat-x;
+  position: absolute;
+  width: 100%;
+  pointer-events: none;
 }
 .oo-ui-toolbar-bar {
-       border-bottom: 1px solid #ccc;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffffffff\', endColorstr=\'#fff1f7fb\' )';
+  border-bottom: 1px solid #ccc;
+  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%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#fff1f7fb' )";
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-       border: 0;
-       background: none;
+  border: 0;
+  background: none;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-framed,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-framed:last-child {
-       margin-top: 0.4em;
-       margin-bottom: 0.4em;
-       margin-right: 0.5em;
+  margin-top: 0.4em;
+  margin-bottom: 0.4em;
+  margin-right: 0.5em;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement {
-       margin: 0;
+  margin: 0;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button {
-       margin: 0;
-       padding: 0 0.3125em;
+  margin: 0;
+  padding: 0 0.3125em;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
-       margin: 0 1em;
-       line-height: 3.40625em;
+  margin: 0 1em;
+  line-height: 3.40625em;
 }
 .oo-ui-toolbar-shadow {
-       background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png);
-       bottom: -9px;
-       height: 9px;
-       opacity: 0.5;
-       -webkit-transition: opacity 500ms ease;
-          -moz-transition: opacity 500ms ease;
-               transition: opacity 500ms ease;
+  background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png);
+  bottom: -9px;
+  height: 9px;
+  opacity: 0.5;
+  -webkit-transition: opacity 500ms ease;
+     -moz-transition: opacity 500ms ease;
+          transition: opacity 500ms ease;
 }
index 411c6bb..cb9660a 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-tool.oo-ui-widget-enabled {
-       -webkit-transition: background-color 100ms;
-          -moz-transition: background-color 100ms;
-               transition: background-color 100ms;
+  -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;
+  -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;
+  z-index: 4;
 }
 .oo-ui-popupTool .oo-ui-popupWidget {
-       /* @noflip */
-       margin-left: 1.25em;
+  /* @noflip */
+  margin-left: 1.25em;
 }
 .oo-ui-toolGroupTool > .oo-ui-toolGroup {
-       border-right: 0;
+  border-right: 0;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup > .oo-ui-popupToolGroup-handle {
-       height: 2.5em;
-       padding: 0.3125em;
+  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;
+  height: 2.5em;
+  width: 1.875em;
 }
 .oo-ui-toolGroupTool > .oo-ui-popupToolGroup.oo-ui-labelElement > .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       line-height: 2.1;
+  line-height: 2.1;
 }
 .oo-ui-toolGroup {
-       display: inline-block;
-       vertical-align: middle;
-       border-right: 1px solid #c8ccd1;
+  display: inline-block;
+  vertical-align: middle;
+  border-right: 1px solid #c8ccd1;
 }
 .oo-ui-toolGroup-empty {
-       display: none;
+  display: none;
 }
 .oo-ui-toolGroup .oo-ui-tool-link {
-       text-decoration: none;
-       cursor: pointer;
+  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;
+  outline: 0;
+  cursor: default;
 }
 .oo-ui-toolbar-actions .oo-ui-toolGroup {
-       border-right: 0;
-       border-left: 1px solid #9aa0a7;
+  border-right: 0;
+  border-left: 1px solid #c8ccd1;
 }
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
-       margin-left: 0;
+  margin-left: 0;
 }
 .oo-ui-barToolGroup > .oo-ui-iconElement-icon,
 .oo-ui-barToolGroup > .oo-ui-labelElement-label {
-       display: none;
+  display: none;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
-       display: inline-block;
-       position: relative;
-       vertical-align: top;
+  display: inline-block;
+  position: relative;
+  vertical-align: top;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-       display: block;
+  display: block;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-accel {
-       display: none;
+  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;
+  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;
+  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;
+  display: inline;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
-       height: 1.875em;
-       padding: 0.625em;
+  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;
+  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;
+  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;
+  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;
+  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);
+  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);
+  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;
+  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;
+  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;
+  opacity: 0.3;
 }
 .oo-ui-popupToolGroup {
-       position: relative;
-       height: 3.125em;
-       min-width: 2em;
+  position: relative;
+  height: 3.125em;
+  min-width: 2em;
 }
 .oo-ui-popupToolGroup-handle {
-       display: block;
-       cursor: pointer;
+  display: block;
+  cursor: pointer;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
-       outline: 0;
-       cursor: default;
+  outline: 0;
+  cursor: default;
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       display: none;
-       position: absolute;
-       z-index: 4;
+  display: none;
+  position: absolute;
+  z-index: 4;
 }
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
-       display: block;
+  display: block;
 }
 .oo-ui-popupToolGroup-left > .oo-ui-toolGroup-tools {
-       left: 0;
+  left: 0;
 }
 .oo-ui-popupToolGroup-right > .oo-ui-toolGroup-tools {
-       right: 0;
+  right: 0;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link {
-       display: table;
-       width: 100%;
-       vertical-align: middle;
-       white-space: nowrap;
+  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;
+  display: table-cell;
+  vertical-align: middle;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-       text-align: right;
+  text-align: right;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel:not( :empty ) {
-       padding-left: 3em;
+  padding-left: 3em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup {
-       min-width: 1.875em;
+  min-width: 1.875em;
 }
 .oo-ui-popupToolGroup.oo-ui-iconElement {
-       min-width: 3.125em;
+  min-width: 3.125em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-iconElement {
-       min-width: 2.5em;
+  min-width: 2.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 4.375em;
+  min-width: 4.375em;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup.oo-ui-indicatorElement.oo-ui-iconElement {
-       min-width: 3.75em;
+  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;
+  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;
+  margin: 0 0.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-iconElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-left: 3em;
+  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;
+  margin-left: 2.5em;
 }
 .oo-ui-popupToolGroup.oo-ui-labelElement.oo-ui-indicatorElement .oo-ui-popupToolGroup-handle .oo-ui-labelElement-label {
-       margin-right: 2em;
+  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;
+  margin-right: 1.75em;
 }
 .oo-ui-popupToolGroup-header {
-       line-height: 2.6;
-       margin: 0 0.6em;
-       font-weight: bold;
+  line-height: 2.6;
+  margin: 0 0.6em;
+  font-weight: bold;
 }
 .oo-ui-popupToolGroup-handle {
-       padding: 0.3125em;
-       height: 2.5em;
+  padding: 0.3125em;
+  height: 2.5em;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       width: 0.9375em;
-       height: 1.625em;
-       margin: 0.78125em 0.5em;
-       top: 0;
-       right: 0;
-       opacity: 0.3;
+  width: 0.9375em;
+  height: 1.625em;
+  margin: 0.78125em 0.5em;
+  top: 0;
+  right: 0;
+  opacity: 0.3;
 }
 .oo-ui-toolbar-narrow .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator {
-       right: -0.3125em;
+  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;
+  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;
+  left: 0;
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
-       top: 3.125em;
-       margin: 0 -1px;
-       border: 1px solid #9aa0a7;
-       background-color: #fff;
-       box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2);
-       min-width: 16em;
+  top: 3.125em;
+  margin: 0 -1px;
+  border: 1px solid #c8ccd1;
+  background-color: #fff;
+  box-shadow: 0 2px 3px rgba(0, 0, 0, 0.2);
+  min-width: 16em;
 }
 .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;
+  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;
+  height: 2.5em;
+  width: 1.875em;
+  min-width: 1.875em;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title,
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-       line-height: 2;
+  line-height: 2;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-title {
-       padding-left: 0.5em;
-       color: #222;
+  padding-left: 0.5em;
+  color: #222;
 }
 .oo-ui-popupToolGroup .oo-ui-tool-link .oo-ui-tool-accel {
-       color: #888;
+  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;
+  -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;
+  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;
+  color: #36c;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-enabled-handle:hover {
-       background-color: #eaecf0;
+  background-color: #eaecf0;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-enabled-handle:active {
-       background-color: #eaf3ff;
+  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;
+  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;
+  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;
+  opacity: 0.9;
 }
 .oo-ui-listToolGroup .oo-ui-tool-active.oo-ui-widget-enabled {
-       background-color: #eaf3ff;
+  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);
+  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);
+  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;
+  color: #36c;
 }
 .oo-ui-listToolGroup.oo-ui-widget-disabled,
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-title,
-.oo-ui-listToolGroup .oo-ui-tool.oo-ui-widget-disabled .oo-ui-tool-accel {
-       color: #72777d;
+.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;
+  opacity: 0.3;
 }
 .oo-ui-menuToolGroup .oo-ui-tool {
-       display: block;
+  display: block;
 }
 .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 10em;
+  min-width: 10em;
 }
 .oo-ui-toolbar-narrow .oo-ui-menuToolGroup .oo-ui-popupToolGroup-handle {
-       min-width: 8.125em;
+  min-width: 8.125em;
 }
 .oo-ui-menuToolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-image: none;
+  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;
+  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);
+  background-color: rgba(41, 98, 204, 0.1);
 }
 .oo-ui-menuToolGroup .oo-ui-tool-name-menuTool.oo-ui-tool-active {
-       background-color: #eaf3ff;
+  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;
+  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;
+  opacity: 0.3;
 }
 .oo-ui-toolbar {
-       clear: both;
+  clear: both;
 }
 .oo-ui-toolbar-bar {
-       line-height: 1;
-       position: relative;
+  line-height: 1;
+  position: relative;
 }
 .oo-ui-toolbar-tools,
 .oo-ui-toolbar-actions,
 .oo-ui-toolbar-shadow {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  -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;
+  display: inline;
+  white-space: nowrap;
 }
 .oo-ui-toolbar-narrow .oo-ui-toolbar-tools {
-       white-space: normal;
+  white-space: normal;
 }
 .oo-ui-toolbar-tools .oo-ui-tool {
-       white-space: normal;
+  white-space: normal;
 }
 .oo-ui-toolbar-actions {
-       float: right;
+  float: right;
 }
 .oo-ui-toolbar-actions .oo-ui-toolbar {
-       display: inline-block;
+  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;
+  -webkit-touch-callout: default;
+  -webkit-user-select: all;
+     -moz-user-select: all;
+      -ms-user-select: all;
+          user-select: all;
 }
 .oo-ui-toolbar-shadow {
-       background-position: left top;
-       background-repeat: repeat-x;
-       position: absolute;
-       width: 100%;
-       pointer-events: none;
+  background-position: left top;
+  background-repeat: repeat-x;
+  position: absolute;
+  width: 100%;
+  pointer-events: none;
 }
 .oo-ui-toolbar-bar {
-       border-bottom: 1px solid #c8ccd1;
-       background-color: #fff;
-       box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
-       font-weight: 500;
-       color: #222;
+  border-bottom: 1px solid #c8ccd1;
+  background-color: #fff;
+  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
+  font-weight: 500;
+  color: #222;
 }
 .oo-ui-toolbar-bar .oo-ui-toolbar-bar {
-       border-bottom: 0;
-       background-color: transparent;
-       box-shadow: none;
+  border-bottom: 0;
+  background-color: transparent;
+  box-shadow: none;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement {
-       margin: 0;
+  margin: 0;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button {
-       border: 0;
-       border-radius: 0;
-       padding: 0 0.3125em;
+  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 {
-       margin: 0 1em;
-       line-height: 3.125em;
+  margin: 0 1em;
+  line-height: 3.125em;
 }
 .oo-ui-toolbar-actions > .oo-ui-toolbar:not( :last-child ) {
-       border-right: 1px solid #9aa0a7;
+  border-right: 1px solid #c8ccd1;
 }
index 822b2d9..e17f511 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
@@ -320,6 +320,7 @@ OO.ui.Toolbar = function OoUiToolbar( toolFactory, toolGroupFactory, config ) {
        this.$bar = $( '<div>' );
        this.$actions = $( '<div>' );
        this.initialized = false;
+       this.narrowThreshold = null;
        this.onWindowResizeHandler = this.onWindowResize.bind( this );
 
        // Events
@@ -402,10 +403,24 @@ OO.ui.Toolbar.prototype.onPointerDown = function ( e ) {
 OO.ui.Toolbar.prototype.onWindowResize = function () {
        this.$element.toggleClass(
                'oo-ui-toolbar-narrow',
-               this.$bar.width() <= this.narrowThreshold
+               this.$bar.width() <= this.getNarrowThreshold()
        );
 };
 
+/**
+ * Get the (lazily-computed) width threshold for applying the oo-ui-toolbar-narrow
+ * class.
+ *
+ * @private
+ * @return {number} Width threshold in pixels
+ */
+OO.ui.Toolbar.prototype.getNarrowThreshold = function () {
+       if ( this.narrowThreshold === null ) {
+               this.narrowThreshold = this.$group.width() + this.$actions.width();
+       }
+       return this.narrowThreshold;
+};
+
 /**
  * Sets up handles and preloads required information for the toolbar to work.
  * This must be called after it is attached to a visible document and before doing anything else.
@@ -413,7 +428,6 @@ OO.ui.Toolbar.prototype.onWindowResize = function () {
 OO.ui.Toolbar.prototype.initialize = function () {
        if ( !this.initialized ) {
                this.initialized = true;
-               this.narrowThreshold = this.$group.width() + this.$actions.width();
                $( this.getElementWindow() ).on( 'resize', this.onWindowResizeHandler );
                this.onWindowResize();
        }
@@ -1896,6 +1910,8 @@ OO.ui.PopupToolGroup.prototype.onHandleMouseKeyDown = function ( e ) {
  *
  * When active, the popup is visible. A mouseup event anywhere in the document will trigger
  * deactivation.
+ *
+ * @param {boolean} value The active state to set
  */
 OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
        var containerWidth, containerLeft;
index 2d2b200..d6ba00b 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
-       cursor: move;
-       cursor: url(images/grab.cur );
-       cursor: -webkit-grab;
-       cursor:    -moz-grab;
-       cursor:         grab;
+  cursor: move;
+  cursor: url(images/grab.cur );
+  cursor: -webkit-grab;
+  cursor:    -moz-grab;
+  cursor:         grab;
 }
 .oo-ui-draggableElement-handle:active {
-       cursor: url(images/grabbing.cur );
-       cursor: -webkit-grabbing;
-       cursor:    -moz-grabbing;
-       cursor:         grabbing;
+  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;
+  cursor: default;
 }
 .oo-ui-draggableElement-placeholder {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
-       overflow-y: hidden;
+  overflow-y: hidden;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded {
-       padding: 2em;
+  padding: 2em;
 }
 .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 3em;
-       overflow-y: auto;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 3em;
+  overflow-y: auto;
 }
 .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-       padding: 1.5em;
+  padding: 1.5em;
 }
 .oo-ui-bookletLayout-outlinePanel {
-       border-right: 1px solid #ddd;
+  border-right: 1px solid #ddd;
 }
 .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-       box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
+  box-shadow: 0 0 0.25em rgba(0, 0, 0, 0.25);
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-menu {
-       height: 3em;
+  height: 3em;
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-content {
-       top: 3em;
+  top: 3em;
 }
 .oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
-       padding: 1.5em;
+  padding: 1.5em;
 }
 .oo-ui-menuLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-       /* stylelint-disable declaration-no-important */
-       /* stylelint-enable declaration-no-important */
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  /* stylelint-disable declaration-no-important */
+  /* stylelint-enable declaration-no-important */
 }
 .oo-ui-menuLayout-menu,
 .oo-ui-menuLayout-content {
-       position: absolute;
-       -webkit-transition: all 200ms ease;
-          -moz-transition: all 200ms ease;
-               transition: all 200ms ease;
+  position: absolute;
+  -webkit-transition: all 200ms ease;
+     -moz-transition: all 200ms ease;
+          transition: all 200ms ease;
 }
 .oo-ui-menuLayout-menu {
-       height: 18em;
-       width: 18em;
+  height: 18em;
+  width: 18em;
 }
 .oo-ui-menuLayout-content {
-       top: 18em;
-       left: 18em;
-       right: 18em;
-       bottom: 18em;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  top: 0 !important;
+  right: 0 !important;
+  bottom: 0 !important;
 }
 .oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-       display: block;
-       position: relative;
+  display: block;
+  position: relative;
 }
 .oo-ui-buttonSelectWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 0.3em;
-       margin-right: 0.5em;
+  display: inline-block;
+  white-space: nowrap;
+  border-radius: 0.3em;
+  margin-right: 0.5em;
 }
 .oo-ui-buttonSelectWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-left: -1px;
+  border-radius: 0;
+  margin-left: -1px;
 }
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:first-child .oo-ui-buttonElement-button {
-       border-bottom-left-radius: 0.3em;
-       border-top-left-radius: 0.3em;
-       margin-left: 0;
+  border-bottom-left-radius: 0.3em;
+  border-top-left-radius: 0.3em;
+  margin-left: 0;
 }
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget:last-child .oo-ui-buttonElement-button {
-       border-bottom-right-radius: 0.3em;
-       border-top-right-radius: 0.3em;
+  border-bottom-right-radius: 0.3em;
+  border-top-right-radius: 0.3em;
 }
 .oo-ui-buttonOptionWidget {
-       display: inline-block;
-       padding: 0;
-       background-color: transparent;
+  display: inline-block;
+  padding: 0;
+  background-color: transparent;
 }
 .oo-ui-buttonOptionWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
-       cursor: default;
+  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;
+  position: static;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-toggleButtonWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-toggleButtonWidget:last-child {
-       margin-right: 0;
+  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);
-          -moz-transform: translateZ(0);
-           -ms-transform: translateZ(0);
-               transform: translateZ(0);
-       height: 2em;
-       width: 4em;
-       border-radius: 1em;
-       box-shadow: 0 0 0 #fff, inset 0 0.1em 0.2em #ddd;
-       border: 1px solid #ccc;
-       margin-right: 0.5em;
-       background-color: #eee;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffdddddd\', endColorstr=\'#ffffffff\' )';
+  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);
+     -moz-transform: translateZ(0);
+      -ms-transform: translateZ(0);
+          transform: translateZ(0);
+  height: 2em;
+  width: 4em;
+  border-radius: 1em;
+  box-shadow: 0 0 0 #fff, inset 0 0.1em 0.2em #ddd;
+  border: 1px solid #ccc;
+  margin-right: 0.5em;
+  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%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffdddddd', endColorstr='#ffffffff' )";
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
-       cursor: pointer;
+  cursor: pointer;
 }
 .oo-ui-toggleSwitchWidget-grip {
-       position: absolute;
-       display: block;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  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;
+  margin-right: 0;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover,
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-       border-color: #aaa;
+  border-color: #aaa;
 }
 .oo-ui-toggleSwitchWidget-grip {
-       top: 0.25em;
-       left: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
-       margin-top: -1px;
-       border-radius: 1em;
-       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;
-       background-color: #eee;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffffffff\', endColorstr=\'#ffdddddd\' )';
+  top: 0.25em;
+  left: 0.25em;
+  width: 1.5em;
+  height: 1.5em;
+  margin-top: -1px;
+  border-radius: 1em;
+  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;
+  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%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
 }
 .oo-ui-toggleSwitchWidget-glow {
-       position: absolute;
-       top: 0;
-       bottom: 0;
-       right: 0;
-       left: 0;
-       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;
-       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\' )';
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  right: 0;
+  left: 0;
+  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;
+  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' )";
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
 }
 .oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-       opacity: 0;
+  opacity: 0;
 }
 .oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.25em;
-       margin-left: 0;
+  left: 0.25em;
+  margin-left: 0;
 }
 .oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-       opacity: 1;
+  opacity: 1;
 }
 .oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 2.25em;
-       margin-left: -2px;
+  left: 2.25em;
+  margin-left: -2px;
 }
 .oo-ui-selectFileWidget {
-       display: inline-block;
-       vertical-align: middle;
-       width: 100%;
-       max-width: 50em;
-       margin-right: 0.5em;
+  display: inline-block;
+  vertical-align: middle;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
 }
 .oo-ui-selectFileWidget-selectButton {
-       display: table-cell;
+  display: table-cell;
 }
 .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       position: relative;
-       overflow: hidden;
+  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;
+  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;
+  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;
+  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;
+  position: absolute;
 }
 .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;
+  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;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  text-overflow: ellipsis;
 }
 .oo-ui-selectFileWidget-clearButton {
-       position: absolute;
-       z-index: 2;
+  position: absolute;
+  z-index: 2;
 }
 .oo-ui-selectFileWidget-dropTarget {
-       position: relative;
-       cursor: default;
-       height: 8.815em;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  display: block;
+  position: relative;
+  top: inherit;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
-       display: block;
-       padding-top: 0.5em;
-       padding-right: 2.375em;
+  display: block;
+  padding-top: 0.5em;
+  padding-right: 2.375em;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-clearButton {
-       right: 0.5em;
+  right: 0.5em;
 }
 .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;
+  display: none;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton {
-       display: block;
-       margin: 2.2em 1em 1em;
+  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;
+  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;
+  margin: 0;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
 .oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
-       display: none;
+  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;
+  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;
+  -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;
+  cursor: no-drop;
 }
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-       height: auto;
+  height: auto;
 }
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-       padding: 1em;
+  padding: 1em;
 }
 .oo-ui-selectFileWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       border-radius: 0 0.25em 0.25em 0;
+  border-radius: 0 0.25em 0.25em 0;
 }
 .oo-ui-selectFileWidget-info {
-       height: 2.4em;
-       background-color: #fff;
-       border: 1px solid rgba(0, 0, 0, 0.1);
-       border-radius: 0.25em 0 0 0.25em;
-       border-width: 1px 0 1px 1px;
+  height: 2.4em;
+  background-color: #fff;
+  border: 1px solid rgba(0, 0, 0, 0.1);
+  border-radius: 0.25em 0 0 0.25em;
+  border-width: 1px 0 1px 1px;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
-       top: 0;
-       left: 0;
-       height: 2.3em;
-       margin-left: 0.3em;
+  top: 0;
+  left: 0;
+  height: 2.3em;
+  margin-left: 0.3em;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
-       top: 0;
-       right: 0;
-       height: 2.3em;
-       margin-right: 0.775em;
+  top: 0;
+  right: 0;
+  height: 2.3em;
+  margin-right: 0.775em;
 }
 .oo-ui-selectFileWidget-label {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       left: 0.5em;
-       right: 2.175em;
-       line-height: 2.3em;
-       margin: 0;
-       overflow: hidden;
-       white-space: nowrap;
-       text-overflow: ellipsis;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  left: 0.5em;
+  right: 2.175em;
+  line-height: 2.3em;
+  margin: 0;
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
 }
 .oo-ui-selectFileWidget-clearButton {
-       top: 0;
-       right: 0;
-       width: 1.875em;
-       margin-right: 0;
+  top: 0;
+  right: 0;
+  width: 1.875em;
+  margin-right: 0;
 }
 .oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       height: 2.3em;
+  height: 2.3em;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
-       color: #ccc;
+  color: #ccc;
 }
 .oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-label {
-       left: 2.475em;
+  left: 2.475em;
 }
 .oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
-       right: 4.2625em;
+  right: 4.2625em;
 }
 .oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-clearButton {
-       right: 2.0875em;
+  right: 2.0875em;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label,
 .oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-label {
-       right: 0.5em;
+  right: 0.5em;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-label,
 .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label,
 .oo-ui-selectFileWidget-empty.oo-ui-indicatorElement .oo-ui-selectFileWidget-label,
 .oo-ui-selectFileWidget-notsupported.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
-       right: 2em;
+  right: 2em;
 }
 .oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget {
-       background-color: #e1f3ff;
+  background-color: #e1f3ff;
 }
 .oo-ui-selectFileWidget-dropTarget {
-       background-color: #fff;
-       border: 1px solid #aaa;
-       vertical-align: middle;
-       border-radius: 0.25em;
+  background-color: #fff;
+  border: 1px solid #aaa;
+  vertical-align: middle;
+  border-radius: 0.25em;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       border-radius: 0.25em;
+  border-radius: 0.25em;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-       line-height: 1.4;
-       overflow: inherit;
-       white-space: normal;
+  line-height: 1.4;
+  overflow: inherit;
+  white-space: normal;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget {
-       border-style: dashed;
+  border-style: dashed;
 }
 .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: #f3f3f3;
-       color: #ccc;
-       border-color: #ddd;
-       text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  color: #ccc;
+  border-color: #ddd;
+  text-shadow: 0 1px 1px #fff;
 }
 .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: #f3f3f3;
-       color: #ccc;
-       border-color: #ddd;
-       text-shadow: 0 1px 1px #fff;
+  background-color: #f3f3f3;
+  color: #ccc;
+  border-color: #ddd;
+  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.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.2;
+  opacity: 0.2;
 }
 .oo-ui-outlineOptionWidget {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       font-size: 1.1em;
-       padding: 0.75em;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  font-size: 1.1em;
+  padding: 0.75em;
 }
 .oo-ui-outlineOptionWidget .oo-ui-iconElement-icon {
-       font-size: 90.90909%;
+  font-size: 90.90909%;
 }
 .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
+  padding-right: 1.5em;
 }
 .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-outlineOptionWidget-level-0 {
-       padding-left: 3.5em;
+  padding-left: 3.5em;
 }
 .oo-ui-outlineOptionWidget-level-0 .oo-ui-iconElement-icon {
-       left: 1em;
+  left: 1em;
 }
 .oo-ui-outlineOptionWidget-level-1 {
-       padding-left: 5em;
+  padding-left: 5em;
 }
 .oo-ui-outlineOptionWidget-level-1 .oo-ui-iconElement-icon {
-       left: 2.5em;
+  left: 2.5em;
 }
 .oo-ui-outlineOptionWidget-level-2 {
-       padding-left: 6.5em;
+  padding-left: 6.5em;
 }
 .oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon {
-       left: 4em;
+  left: 4em;
 }
 .oo-ui-selectWidget-depressed .oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected {
-       background-color: #a7dcff;
-       text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
+  background-color: #a7dcff;
+  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5);
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important {
-       font-weight: bold;
+  font-weight: bold;
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label {
-       color: #777;
+  color: #777;
 }
 .oo-ui-outlineControlsWidget {
-       height: 3em;
-       background-color: #fff;
+  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;
+  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;
+  float: left;
+  background-position: right center;
 }
 .oo-ui-outlineControlsWidget-items {
-       float: left;
+  float: left;
 }
 .oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-       float: left;
+  float: left;
 }
 .oo-ui-outlineControlsWidget-movers {
-       float: right;
+  float: right;
 }
 .oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-       float: right;
+  float: right;
 }
 .oo-ui-outlineControlsWidget-items,
 .oo-ui-outlineControlsWidget-movers {
-       height: 2em;
-       margin: 0.5em 0.5em 0.5em 0;
-       padding: 0;
+  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;
+  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: #eee;
-       box-shadow: inset 0 -0.015em 0.1em rgba(0, 0, 0, 0.1);
+  text-align: left;
+  white-space: nowrap;
+  overflow: hidden;
+  background-color: #eee;
+  box-shadow: inset 0 -0.015em 0.1em rgba(0, 0, 0, 0.1);
 }
 .oo-ui-tabOptionWidget {
-       display: inline-block;
-       vertical-align: bottom;
-       padding: 0.5em 1em;
-       margin: 0.5em 0 0 0.75em;
-       border: 1px solid transparent;
-       border-bottom: 0;
-       border-top-left-radius: 0.5em;
-       border-top-right-radius: 0.5em;
+  display: inline-block;
+  vertical-align: bottom;
+  padding: 0.5em 1em;
+  margin: 0.5em 0 0 0.75em;
+  border: 1px solid transparent;
+  border-bottom: 0;
+  border-top-left-radius: 0.5em;
+  border-top-right-radius: 0.5em;
 }
 .oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
+  padding-right: 1.5em;
 }
 .oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-selectWidget-pressed .oo-ui-tabOptionWidget.oo-ui-optionWidget-pressed {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
-       background-color: rgba(255, 255, 255, 0.2);
-       border-color: #ddd;
+  background-color: rgba(255, 255, 255, 0.2);
+  border-color: #ddd;
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:active {
-       background-color: #fff;
-       border-color: #ddd;
+  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 {
-       background-color: #fff;
-       border-color: #ddd;
+  background-color: #fff;
+  border-color: #ddd;
 }
 .oo-ui-capsuleMultiselectWidget {
-       display: inline-block;
-       position: relative;
-       width: 100%;
-       max-width: 50em;
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
 }
 .oo-ui-capsuleMultiselectWidget-handle {
-       width: 100%;
-       display: block;
-       position: relative;
+  width: 100%;
+  display: block;
+  position: relative;
 }
 .oo-ui-capsuleMultiselectWidget-content {
-       position: relative;
+  position: relative;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-content > input {
-       display: none;
+  display: none;
 }
 .oo-ui-capsuleMultiselectWidget-group {
-       display: inline;
+  display: inline;
 }
 .oo-ui-capsuleMultiselectWidget-handle {
-       background-color: #fff;
-       cursor: text;
-       min-height: 2.4em;
-       margin-right: 0.5em;
-       padding: 0.15em 0.25em;
-       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;
+  background-color: #fff;
+  cursor: text;
+  min-height: 2.4em;
+  margin-right: 0.5em;
+  padding: 0.15em 0.25em;
+  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;
 }
 .oo-ui-capsuleMultiselectWidget-handle:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator,
 .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-capsuleMultiselectWidget-content > input {
-       border: 0;
-       line-height: 1.675em;
-       margin: 0;
-       margin-left: 0.2em;
-       padding: 0;
-       font-size: inherit;
-       font-family: inherit;
-       background-color: transparent;
-       color: #000;
-       vertical-align: middle;
+  border: 0;
+  line-height: 1.675em;
+  margin: 0;
+  margin-left: 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:focus {
-       outline: none;
+  outline: none;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle {
-       padding-right: 2.4875em;
+  padding-right: 2.4875em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-       right: 0;
-       top: 0;
-       margin: 0.775em;
+  right: 0;
+  top: 0;
+  margin: 0.775em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle {
-       padding-left: 2.475em;
+  padding-left: 2.475em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0;
-       margin: 0.3em;
+  left: 0;
+  top: 0;
+  margin: 0.3em;
 }
 .oo-ui-capsuleMultiselectWidget:hover .oo-ui-capsuleMultiselectWidget-handle {
-       border-color: rgba(0, 0, 0, 0.2);
+  border-color: rgba(0, 0, 0, 0.2);
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle {
-       color: #ccc;
-       text-shadow: 0 1px 1px #fff;
-       border-color: #ddd;
-       background-color: #f3f3f3;
-       cursor: default;
+  color: #ccc;
+  text-shadow: 0 1px 1px #fff;
+  border-color: #ddd;
+  background-color: #f3f3f3;
+  cursor: default;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon,
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-capsuleItemWidget {
-       position: relative;
-       display: inline-block;
-       cursor: default;
-       white-space: nowrap;
-       width: auto;
-       max-width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       vertical-align: middle;
-       padding: 0 0.4em;
-       margin: 0.1em;
-       height: 1.7em;
-       line-height: 1.7em;
-       background-color: #eee;
-       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%);
-       -ms-filter: 'progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#ffffffff\', endColorstr=\'#ffdddddd\' )';
-       border: 1px solid #ccc;
-       color: #555;
-       border-radius: 0.25em;
+  position: relative;
+  display: inline-block;
+  cursor: default;
+  white-space: nowrap;
+  width: auto;
+  max-width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  vertical-align: middle;
+  padding: 0 0.4em;
+  margin: 0.1em;
+  height: 1.7em;
+  line-height: 1.7em;
+  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%);
+  -ms-filter: "progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffffff', endColorstr='#ffdddddd' )";
+  border: 1px solid #ccc;
+  color: #555;
+  border-radius: 0.25em;
 }
 .oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: inline-block;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  cursor: text;
 }
 .oo-ui-capsuleItemWidget:focus {
-       outline: none;
-       border-color: #087ecc;
+  outline: none;
+  border-color: #087ecc;
 }
 .oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
-       opacity: 0.5;
-       -webkit-transform: translate3d(0, 0, 0);
-       box-shadow: none;
-       color: #333;
-       background: #eee;
-       border-color: #ccc;
+  opacity: 0.5;
+  -webkit-transform: translate3d(0, 0, 0);
+  box-shadow: none;
+  color: #333;
+  background: #eee;
+  border-color: #ccc;
 }
 .oo-ui-capsuleItemWidget > .oo-ui-buttonElement {
-       margin-top: -1.25em;
-       padding-left: 0.3em;
+  margin-top: -1.25em;
+  padding-left: 0.3em;
 }
 .oo-ui-searchWidget-query {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       width: 100%;
+  width: 100%;
 }
 .oo-ui-searchWidget-results {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       overflow-x: hidden;
-       overflow-y: auto;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  overflow-x: hidden;
+  overflow-y: auto;
 }
 .oo-ui-searchWidget-query {
-       height: 4em;
-       padding: 0 1em;
-       box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
+  height: 4em;
+  padding: 0 1em;
+  box-shadow: 0 0 0.5em rgba(0, 0, 0, 0.2);
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       margin: 0.75em 0;
+  margin: 0.75em 0;
 }
 .oo-ui-searchWidget-results {
-       top: 4em;
-       padding: 1em;
-       line-height: 0;
+  top: 4em;
+  padding: 1em;
+  line-height: 0;
 }
 .oo-ui-numberInputWidget {
-       display: inline-block;
-       position: relative;
-       max-width: 50em;
+  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;
+  display: table-cell;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-numberInputWidget-field {
-       display: table;
-       table-layout: fixed;
-       width: 100%;
+  display: table;
+  table-layout: fixed;
+  width: 100%;
 }
 .oo-ui-numberInputWidget-field > .oo-ui-buttonWidget {
-       width: 2.25em;
+  width: 2.25em;
 }
 .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;
+  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;
+  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;
+  border-radius: 0;
 }
index d1b4225..bf50532 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-draggableElement-handle,
 .oo-ui-draggableElement-handle.oo-ui-widget {
-       cursor: move;
-       cursor: url(images/grab.cur );
-       cursor: -webkit-grab;
-       cursor:    -moz-grab;
-       cursor:         grab;
+  cursor: move;
+  cursor: url(images/grab.cur );
+  cursor: -webkit-grab;
+  cursor:    -moz-grab;
+  cursor:         grab;
 }
 .oo-ui-draggableElement-handle:active {
-       cursor: url(images/grabbing.cur );
-       cursor: -webkit-grabbing;
-       cursor:    -moz-grabbing;
-       cursor:         grabbing;
+  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;
+  cursor: default;
 }
 .oo-ui-draggableElement-placeholder {
-       opacity: 0.2;
+  opacity: 0.2;
 }
 .oo-ui-draggableGroupElement-horizontal .oo-ui-draggableElement {
-       display: inline-block;
+  display: inline-block;
 }
 .oo-ui-bookletLayout-stackLayout.oo-ui-stackLayout-continuous > .oo-ui-panelLayout-scrollable {
-       overflow-y: hidden;
+  overflow-y: hidden;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-       width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-scrollable {
-       overflow-y: auto;
+  overflow-y: auto;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout-padded {
-       padding: 2em;
+  padding: 2em;
 }
 .oo-ui-bookletLayout-outlinePanel-editable > .oo-ui-outlineSelectWidget {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 3em;
-       overflow-y: auto;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 3em;
+  overflow-y: auto;
 }
 .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
+  position: absolute;
+  bottom: 0;
+  left: 0;
+  right: 0;
 }
 .oo-ui-bookletLayout-stackLayout > .oo-ui-panelLayout {
-       padding: 1.5em;
+  padding: 1.5em;
 }
 .oo-ui-bookletLayout-outlinePanel {
-       border-right: 1px solid #ddd;
+  border-right: 1px solid #ddd;
 }
 .oo-ui-bookletLayout-outlinePanel > .oo-ui-outlineControlsWidget {
-       box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
+  box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-menu {
-       height: 3em;
+  height: 3em;
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-content {
-       top: 3em;
+  top: 3em;
 }
 .oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
-       padding: 1.5em;
+  padding: 1.5em;
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-menu {
-       height: 2.75em;
+  height: 2.75em;
 }
 .oo-ui-indexLayout > .oo-ui-menuLayout-content {
-       top: 2.75em;
+  top: 2.75em;
 }
 .oo-ui-menuLayout {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
-       bottom: 0;
-       /* stylelint-disable declaration-no-important */
-       /* stylelint-enable declaration-no-important */
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  /* stylelint-disable declaration-no-important */
+  /* stylelint-enable declaration-no-important */
 }
 .oo-ui-menuLayout-menu,
 .oo-ui-menuLayout-content {
-       position: absolute;
-       -webkit-transition: all 200ms ease;
-          -moz-transition: all 200ms ease;
-               transition: all 200ms ease;
+  position: absolute;
+  -webkit-transition: all 200ms ease;
+     -moz-transition: all 200ms ease;
+          transition: all 200ms ease;
 }
 .oo-ui-menuLayout-menu {
-       height: 18em;
-       width: 18em;
+  height: 18em;
+  width: 18em;
 }
 .oo-ui-menuLayout-content {
-       top: 18em;
-       left: 18em;
-       right: 18em;
-       bottom: 18em;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  top: 0 !important;
+  right: 0 !important;
+  bottom: 0 !important;
 }
 .oo-ui-stackLayout-continuous > .oo-ui-panelLayout {
-       display: block;
-       position: relative;
+  display: block;
+  position: relative;
 }
 .oo-ui-buttonSelectWidget {
-       display: inline-block;
-       white-space: nowrap;
-       border-radius: 2px;
-       margin-right: 0.5em;
+  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;
+  margin-right: 0;
 }
 .oo-ui-buttonSelectWidget:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-buttonSelectWidget .oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       border-radius: 0;
-       margin-left: -1px;
+  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;
+  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;
+  border-bottom-right-radius: 2px;
+  border-top-right-radius: 2px;
 }
 .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;
+  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;
-       padding: 0;
+  display: inline-block;
+  padding: 0;
 }
 .oo-ui-buttonOptionWidget.oo-ui-buttonElement-active .oo-ui-buttonElement-button {
-       cursor: default;
+  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;
+  position: static;
+  display: inline-block;
+  vertical-align: middle;
 }
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-selected,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-pressed,
 .oo-ui-buttonOptionWidget.oo-ui-optionWidget-highlighted {
-       background-color: transparent;
+  background-color: transparent;
 }
 .oo-ui-toggleButtonWidget {
-       margin-right: 0.5em;
+  margin-right: 0.5em;
 }
 .oo-ui-toggleButtonWidget:last-child {
-       margin-right: 0;
+  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);
-          -moz-transform: translateZ(0);
-           -ms-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;
+  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);
+     -moz-transform: translateZ(0);
+      -ms-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;
+  cursor: pointer;
 }
 .oo-ui-toggleSwitchWidget-grip {
-       position: absolute;
-       display: block;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  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;
+  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;
+  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;
+  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;
+  display: none;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.4em;
-       margin-left: 0;
+  left: 0.4em;
+  margin-left: 0;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 1.9em;
-       margin-left: -2px;
+  left: 1.9em;
+  margin-left: -2px;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
-       background-color: #f8f9fa;
-       border: 1px solid #72777d;
+  background-color: #f8f9fa;
+  border: 1px solid #72777d;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
-       background-color: #fff;
-       border-color: #447ff5;
+  background-color: #fff;
+  border-color: #447ff5;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover .oo-ui-toggleSwitchWidget-grip {
-       background-color: #fff;
-       border-color: #447ff5;
+  background-color: #fff;
+  border-color: #447ff5;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active,
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:active:hover {
-       background-color: #36c;
-       border-color: #2a4b8d;
+.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 {
-       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: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;
+  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;
+  border-color: #36c;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on {
-       background-color: #2a4b8d;
-       border-color: #2a4b8d;
+  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);
+  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: #36c;
-       border-color: #36c;
+  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;
+  background-color: #2a4b8d;
+  border-color: #2a4b8d;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus {
-       border-color: #36c;
+  border-color: #36c;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on:focus:before {
-       border-color: #fff;
+  border-color: #fff;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
-       background-color: #c8ccd1;
-       border-color: #c8ccd1;
-       outline: 0;
+  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;
+  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;
+  background-color: #fff;
 }
 .oo-ui-selectFileWidget {
-       display: inline-block;
-       vertical-align: middle;
-       width: 100%;
-       max-width: 50em;
-       margin-right: 0.5em;
+  display: inline-block;
+  vertical-align: middle;
+  width: 100%;
+  max-width: 50em;
+  margin-right: 0.5em;
 }
 .oo-ui-selectFileWidget-selectButton {
-       display: table-cell;
+  display: table-cell;
 }
 .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       position: relative;
-       overflow: hidden;
+  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;
+  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;
+  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;
+  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;
+  position: absolute;
 }
 .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;
+  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;
+  position: absolute;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  right: 0;
+  text-overflow: ellipsis;
 }
 .oo-ui-selectFileWidget-clearButton {
-       position: absolute;
-       z-index: 2;
+  position: absolute;
+  z-index: 2;
 }
 .oo-ui-selectFileWidget-dropTarget {
-       position: relative;
-       cursor: default;
-       height: 8.815em;
+  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;
+  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;
+  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;
+  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;
+  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;
+  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;
+  display: block;
+  position: relative;
+  top: inherit;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-fileName {
-       display: block;
-       padding-top: 0.5em;
-       padding-right: 2.375em;
+  display: block;
+  padding-top: 0.5em;
+  padding-right: 2.375em;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-clearButton {
-       right: 0.5em;
+  right: 0.5em;
 }
 .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;
+  display: none;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton {
-       display: block;
-       margin: 2.2em 1em 1em;
+  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;
+  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;
+  margin: 0;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-clearButton,
 .oo-ui-selectFileWidget-notsupported .oo-ui-selectFileWidget-clearButton {
-       display: none;
+  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;
+  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;
+  -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;
+  cursor: no-drop;
 }
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget {
-       height: auto;
+  height: auto;
 }
 .oo-ui-selectFileWidget-notsupported.oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-       padding: 1em;
+  padding: 1em;
 }
 .oo-ui-selectFileWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       border-radius: 0 2px 2px 0;
+  border-radius: 0 2px 2px 0;
 }
 .oo-ui-selectFileWidget-info {
-       height: 2.4em;
-       background-color: #fff;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px 0 0 2px;
-       border-width: 1px 0 1px 1px;
+  height: 2.4em;
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px 0 0 2px;
+  border-width: 1px 0 1px 1px;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0;
-       height: 2.3em;
-       margin-left: 0.5em;
+  left: 0;
+  top: 0;
+  height: 2.3em;
+  margin-left: 0.5em;
 }
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator {
-       top: 0;
-       right: 0;
-       height: 2.3em;
-       margin-right: 0.775em;
+  top: 0;
+  right: 0;
+  height: 2.3em;
+  margin-right: 0.775em;
 }
 .oo-ui-selectFileWidget-label {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       display: block;
-       right: 2.375em;
-       line-height: 2.3;
-       margin: 0;
-       overflow: hidden;
-       white-space: nowrap;
-       text-overflow: ellipsis;
-       padding-left: 0.5em;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  display: block;
+  right: 2.375em;
+  margin: 0;
+  padding-left: 0.5em;
+  line-height: 2.3;
+  white-space: nowrap;
+}
+.oo-ui-selectFileWidget-fileName {
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 .oo-ui-selectFileWidget-clearButton {
-       top: 0;
-       right: 0;
-       min-width: 24px;
-       width: 1.875em;
-       margin-right: 0;
+  top: 0;
+  right: 0;
+  min-width: 24px;
+  width: 1.875em;
+  margin-right: 0;
 }
 .oo-ui-selectFileWidget-clearButton .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       height: 2.3em;
+  height: 2.3em;
 }
 .oo-ui-selectFileWidget-empty .oo-ui-selectFileWidget-label {
-       color: #72777d;
+  color: #72777d;
 }
 .oo-ui-selectFileWidget.oo-ui-iconElement .oo-ui-selectFileWidget-label {
-       left: 2.875em;
+  left: 2.875em;
 }
 .oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-label {
-       right: 4.4625em;
-       padding-left: 0;
+  right: 4.4625em;
+  padding-left: 0;
 }
 .oo-ui-selectFileWidget.oo-ui-indicatorElement .oo-ui-selectFileWidget-clearButton {
-       right: 2.0875em;
+  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;
+  right: 2em;
 }
 .oo-ui-selectFileWidget-supported.oo-ui-widget-enabled.oo-ui-selectFileWidget-canDrop.oo-ui-selectFileWidget-dropTarget {
-       background-color: #eaf3ff;
+  background-color: #eaf3ff;
 }
 .oo-ui-selectFileWidget-dropTarget {
-       background-color: #fff;
-       border: 1px solid #9aa0a7;
-       vertical-align: middle;
-       overflow: hidden;
-       border-radius: 2px;
+  background-color: #fff;
+  border: 1px solid #a2a9b1;
+  vertical-align: middle;
+  overflow: hidden;
+  border-radius: 2px;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-selectButton > .oo-ui-buttonElement-button {
-       border-radius: 2px;
+  border-radius: 2px;
 }
 .oo-ui-selectFileWidget-dropTarget .oo-ui-selectFileWidget-label {
-       line-height: 1.4;
-       overflow: inherit;
-       white-space: normal;
+  line-height: 1.4;
+  overflow: inherit;
+  white-space: normal;
 }
 .oo-ui-selectFileWidget-empty.oo-ui-widget-enabled.oo-ui-selectFileWidget-dropTarget {
-       background-color: #eee;
-       border-style: dashed;
+  background-color: #eee;
+  border-style: dashed;
 }
 .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;
+  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;
+  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.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.51;
+  opacity: 0.51;
 }
 .oo-ui-widget-disabled .oo-ui-selectFileWidget-dropLabel {
-       display: none;
+  display: none;
 }
 .oo-ui-outlineOptionWidget {
-       -webkit-touch-callout: none;
-       -webkit-user-select: none;
-          -moz-user-select: none;
-           -ms-user-select: none;
-               user-select: none;
-       font-size: 1.1em;
-       padding: 0.75em;
-       -webkit-transition: background-color 100ms, color 100ms;
-          -moz-transition: background-color 100ms, color 100ms;
-               transition: background-color 100ms, color 100ms;
+  -webkit-touch-callout: none;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  font-size: 1.1em;
+  padding: 0.75em;
+  -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;
+  background-color: #eaecf0;
+  color: #000;
 }
 .oo-ui-outlineOptionWidget.oo-ui-optionWidget-selected {
-       background-color: #eaf3ff;
-       color: #36c;
+  background-color: #eaf3ff;
+  color: #36c;
 }
 .oo-ui-outlineOptionWidget.oo-ui-optionWidget-pressed {
-       background-color: rgba(41, 98, 204, 0.1);
-       color: #36c;
+  background-color: rgba(41, 98, 204, 0.1);
+  color: #36c;
 }
 .oo-ui-outlineOptionWidget .oo-ui-iconElement-icon {
-       font-size: 90.90909%;
+  font-size: 90.90909%;
 }
 .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
+  padding-right: 1.5em;
 }
 .oo-ui-outlineOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-outlineOptionWidget-level-0 {
-       padding-left: 3.5em;
+  padding-left: 3.5em;
 }
 .oo-ui-outlineOptionWidget-level-0 .oo-ui-iconElement-icon {
-       left: 1em;
+  left: 1em;
 }
 .oo-ui-outlineOptionWidget-level-1 {
-       padding-left: 5em;
+  padding-left: 5em;
 }
 .oo-ui-outlineOptionWidget-level-1 .oo-ui-iconElement-icon {
-       left: 2.5em;
+  left: 2.5em;
 }
 .oo-ui-outlineOptionWidget-level-2 {
-       padding-left: 6.5em;
+  padding-left: 6.5em;
 }
 .oo-ui-outlineOptionWidget-level-2 .oo-ui-iconElement-icon {
-       left: 4em;
+  left: 4em;
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-important {
-       font-weight: bold;
+  font-weight: bold;
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-iconElement-icon {
-       opacity: 0.5;
+  opacity: 0.5;
 }
 .oo-ui-outlineOptionWidget.oo-ui-flaggedElement-empty .oo-ui-labelElement-label {
-       color: #777;
+  color: #777;
 }
 .oo-ui-outlineControlsWidget {
-       height: 3em;
-       background-color: #fff;
+  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;
+  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;
+  float: left;
+  background-position: right center;
 }
 .oo-ui-outlineControlsWidget-items {
-       float: left;
+  float: left;
 }
 .oo-ui-outlineControlsWidget-items .oo-ui-buttonWidget {
-       float: left;
+  float: left;
 }
 .oo-ui-outlineControlsWidget-movers {
-       float: right;
+  float: right;
 }
 .oo-ui-outlineControlsWidget-movers .oo-ui-buttonWidget {
-       float: right;
+  float: right;
 }
 .oo-ui-outlineControlsWidget-items,
 .oo-ui-outlineControlsWidget-movers {
-       height: 2em;
-       margin: 0.5em 0.5em 0.5em 0;
-       padding: 0;
+  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;
+  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: #ddd;
+  text-align: left;
+  white-space: nowrap;
+  overflow: hidden;
+  background-color: #ddd;
 }
 .oo-ui-tabOptionWidget {
-       display: inline-block;
-       vertical-align: bottom;
-       padding: 0.35em 1em;
-       margin: 0.5em 0 0 0.75em;
-       border: 1px solid transparent;
-       border-bottom: 0;
-       border-top-left-radius: 2px;
-       border-top-right-radius: 2px;
-       color: #222;
-       font-weight: bold;
+  display: inline-block;
+  vertical-align: bottom;
+  padding: 0.35em 1em;
+  margin: 0.5em 0 0 0.75em;
+  border: 1px solid transparent;
+  border-bottom: 0;
+  border-top-left-radius: 2px;
+  border-top-right-radius: 2px;
+  color: #222;
+  font-weight: bold;
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:hover {
-       background-color: rgba(255, 255, 255, 0.3);
+  background-color: rgba(255, 255, 255, 0.3);
 }
 .oo-ui-tabOptionWidget.oo-ui-widget-enabled:active {
-       background-color: rgba(255, 255, 255, 0.8);
+  background-color: rgba(255, 255, 255, 0.8);
 }
 .oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-labelElement-label {
-       padding-right: 1.5em;
+  padding-right: 1.5em;
 }
 .oo-ui-tabOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
-       opacity: 0.5;
+  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: #333;
+  background-color: #fff;
+  color: #333;
 }
 .oo-ui-capsuleMultiselectWidget {
-       display: inline-block;
-       position: relative;
-       width: 100%;
-       max-width: 50em;
+  display: inline-block;
+  position: relative;
+  width: 100%;
+  max-width: 50em;
 }
 .oo-ui-capsuleMultiselectWidget-handle {
-       width: 100%;
-       display: block;
-       position: relative;
+  width: 100%;
+  display: block;
+  position: relative;
 }
 .oo-ui-capsuleMultiselectWidget-content {
-       position: relative;
+  position: relative;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-content > input {
-       display: none;
+  display: none;
 }
 .oo-ui-capsuleMultiselectWidget-group {
-       display: inline;
+  display: inline;
 }
 .oo-ui-capsuleMultiselectWidget-handle {
-       min-height: 2.4em;
-       margin-right: 0.5em;
-       padding: 0.15em 0.25em;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  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:hover {
-       border-color: #72777d;
+  margin-right: 0;
 }
 .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator,
 .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-       position: absolute;
+  position: absolute;
 }
 .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;
+  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:focus {
-       outline: 0;
+  outline: 0;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle {
-       padding-right: 2.4875em;
+  padding-right: 2.4875em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-       right: 0;
-       top: 0;
-       margin: 0.775em;
+  right: 0;
+  top: 0;
+  margin: 0.775em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle {
-       padding-left: 2.475em;
+  padding-left: 2.475em;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-iconElement .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-iconElement-icon {
-       left: 0;
-       top: 0;
-       margin: 0.3em;
+  left: 0;
+  top: 0;
+  margin: 0.3em;
 }
 .oo-ui-capsuleMultiselectWidget .oo-ui-popupWidget {
-       width: 100%;
-       margin-top: -1px;
+  width: 100%;
+  margin-top: -1px;
 }
 .oo-ui-capsuleMultiselectWidget .oo-ui-popupWidget-popup {
-       min-width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       border-width: 0 1px;
-       border-radius: 0 0 2px 2px;
+  min-width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  border-width: 0 1px;
+  border-radius: 0 0 2px 2px;
 }
 .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);
+  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: #a2a9b1;
+  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;
+  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;
+  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;
+  opacity: 0.51;
 }
 .oo-ui-capsuleMultiselectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiselectWidget-handle > .oo-ui-indicatorElement-indicator {
-       opacity: 0.15;
+  opacity: 0.15;
 }
 .oo-ui-capsuleItemWidget {
-       position: relative;
-       display: inline-block;
-       cursor: default;
-       white-space: nowrap;
-       width: auto;
-       max-width: 100%;
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
-       vertical-align: middle;
-       height: 1.7em;
-       line-height: 1.7;
-       background-color: #eee;
-       color: #222;
-       margin: 0.1em;
-       border: 1px solid #9aa0a7;
-       border-radius: 2px;
-       padding: 0 0.4em;
+  position: relative;
+  display: inline-block;
+  cursor: default;
+  white-space: nowrap;
+  width: auto;
+  max-width: 100%;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
+  vertical-align: middle;
+  height: 1.7em;
+  line-height: 1.7;
+  background-color: #eee;
+  color: #222;
+  margin: 0.1em;
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  padding: 0 0.4em;
 }
 .oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       display: inline-block;
-       text-overflow: ellipsis;
-       overflow: hidden;
+  display: inline-block;
+  text-overflow: ellipsis;
+  overflow: hidden;
+  cursor: text;
 }
 .oo-ui-capsuleItemWidget:focus {
-       outline: 0;
-       border-color: #36c;
-       box-shadow: inset 0 0 0 1px #36c;
+  outline: 0;
+  border-color: #36c;
+  box-shadow: inset 0 0 0 1px #36c;
 }
 .oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
-       background-color: #eaecf0;
-       color: #72777d;
-       border-color: #c8ccd1;
-       text-shadow: 0 1px 1px #fff;
+  background-color: #eaecf0;
+  color: #72777d;
+  border-color: #c8ccd1;
+  text-shadow: 0 1px 1px #fff;
 }
 .oo-ui-capsuleItemWidget > .oo-ui-buttonElement {
-       display: none;
+  display: none;
 }
 .oo-ui-capsuleItemWidget.oo-ui-widget-enabled {
-       padding-right: 1.5375em;
+  padding-right: 1.5375em;
 }
 .oo-ui-capsuleItemWidget.oo-ui-widget-enabled > .oo-ui-buttonElement {
-       display: block;
-       position: absolute;
-       top: 0;
-       right: 0;
-       bottom: 0;
+  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%;
+  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;
+  position: absolute;
+  top: 0;
+  right: 0.3em;
+  bottom: 0;
+  height: auto;
 }
 .oo-ui-searchWidget-query {
-       position: absolute;
-       top: 0;
-       left: 0;
-       right: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       width: 100%;
+  width: 100%;
 }
 .oo-ui-searchWidget-results {
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       right: 0;
-       overflow-x: hidden;
-       overflow-y: auto;
+  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 #9aa0a7;
+  height: 4em;
+  padding: 0 1em;
+  border-bottom: 1px solid #a2a9b1;
 }
 .oo-ui-searchWidget-query .oo-ui-textInputWidget {
-       margin: 0.75em 0;
+  margin: 0.75em 0;
 }
 .oo-ui-searchWidget-results {
-       top: 4em;
-       padding: 1em;
-       line-height: 0;
+  top: 4em;
+  padding: 1em;
+  line-height: 0;
 }
 .oo-ui-numberInputWidget {
-       display: inline-block;
-       position: relative;
-       max-width: 50em;
+  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;
+  display: table-cell;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -webkit-box-sizing: border-box;
+     -moz-box-sizing: border-box;
+          box-sizing: border-box;
 }
 .oo-ui-numberInputWidget-field {
-       display: table;
-       table-layout: fixed;
-       width: 100%;
+  display: table;
+  table-layout: fixed;
+  width: 100%;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonWidget {
-       width: 2.5em;
+  width: 2.5em;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-buttonElement-button {
-       display: block;
-       padding-left: 0;
-       padding-right: 0;
+  display: block;
+  min-height: 2.5em;
+  padding-left: 0;
+  padding-right: 0;
 }
 .oo-ui-numberInputWidget-buttoned .oo-ui-textInputWidget input {
-       border-radius: 0;
+  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;
+  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;
+  border-top-left-radius: 0;
+  border-bottom-left-radius: 0;
+  border-left-width: 0;
 }
index 636e3f5..6962c92 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
@@ -85,7 +85,7 @@ OO.ui.mixin.DraggableElement.static.cancelButtonMouseDownEvents = false;
  * Respond to mousedown event.
  *
  * @private
- * @param {jQuery.Event} e jQuery event
+ * @param {jQuery.Event} e Drag event
  */
 OO.ui.mixin.DraggableElement.prototype.onDragMouseDown = function ( e ) {
        this.wasHandleUsed =
@@ -99,7 +99,8 @@ OO.ui.mixin.DraggableElement.prototype.onDragMouseDown = function ( e ) {
  * Respond to dragstart event.
  *
  * @private
- * @param {jQuery.Event} e jQuery event
+ * @param {jQuery.Event} e Drag event
+ * @return {boolean} False if the event is cancelled
  * @fires dragstart
  */
 OO.ui.mixin.DraggableElement.prototype.onDragStart = function ( e ) {
@@ -149,7 +150,7 @@ OO.ui.mixin.DraggableElement.prototype.onDragEnd = function () {
  * Handle drop event.
  *
  * @private
- * @param {jQuery.Event} e jQuery event
+ * @param {jQuery.Event} e Drop event
  * @fires drop
  */
 OO.ui.mixin.DraggableElement.prototype.onDrop = function ( e ) {
@@ -161,6 +162,7 @@ OO.ui.mixin.DraggableElement.prototype.onDrop = function ( e ) {
  * In order for drag/drop to work, the dragover event must
  * return false and stop propogation.
  *
+ * @param {jQuery.Event} e Drag event
  * @private
  */
 OO.ui.mixin.DraggableElement.prototype.onDragOver = function ( e ) {
@@ -3103,13 +3105,10 @@ OO.ui.OutlineOptionWidget.prototype.getLevel = function () {
  */
 OO.ui.OutlineOptionWidget.prototype.setPressed = function ( state ) {
        OO.ui.OutlineOptionWidget.parent.prototype.setPressed.call( this, state );
-       if ( this.constructor.static.pressable ) {
-               this.pressed = !!state;
-               if ( this.pressed ) {
-                       this.setFlags( 'progressive' );
-               } else if ( !this.selected ) {
-                       this.clearFlags();
-               }
+       if ( this.pressed ) {
+               this.setFlags( 'progressive' );
+       } else if ( !this.selected ) {
+               this.clearFlags();
        }
        return this;
 };
@@ -3147,13 +3146,10 @@ OO.ui.OutlineOptionWidget.prototype.setRemovable = function ( removable ) {
  */
 OO.ui.OutlineOptionWidget.prototype.setSelected = function ( state ) {
        OO.ui.OutlineOptionWidget.parent.prototype.setSelected.call( this, state );
-       if ( this.constructor.static.selectable ) {
-               this.selected = !!state;
-               if ( this.selected ) {
-                       this.setFlags( 'progressive' );
-               } else {
-                       this.clearFlags();
-               }
+       if ( this.selected ) {
+               this.setFlags( 'progressive' );
+       } else {
+               this.clearFlags();
        }
        return this;
 };
@@ -3496,6 +3492,8 @@ OO.ui.CapsuleItemWidget.prototype.onClick = function () {
 
 /**
  * Handle keyDown event for the entire capsule
+ *
+ * @param {jQuery.Event} e Key down event
  */
 OO.ui.CapsuleItemWidget.prototype.onKeyDown = function ( e ) {
        var element = this.getElementGroup();
@@ -3573,6 +3571,7 @@ OO.ui.CapsuleItemWidget.prototype.focus = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
+ * @cfg {string} [placeholder] Placeholder text
  * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if not present in the menu.
  * @cfg {Object} [menu] (required) Configuration options to pass to the
  *  {@link OO.ui.MenuSelectWidget menu select widget}.
@@ -3599,8 +3598,11 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
        }, config );
 
        // Properties (must be set before mixin constructor calls)
-       this.$input = config.popup ? null : $( '<input>' );
        this.$handle = $( '<div>' );
+       this.$input = config.popup ? null : $( '<input>' );
+       if ( config.placeholder !== undefined && config.placeholder !== '' ) {
+               this.$input.attr( 'placeholder', config.placeholder );
+       }
 
        // Mixin constructors
        OO.ui.mixin.GroupElement.call( this, config );
@@ -3676,7 +3678,6 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
                        role: 'combobox',
                        'aria-autocomplete': 'list'
                } );
-               this.updateInputSize();
        }
        if ( config.data ) {
                this.setItemsFromData( config.data );
@@ -3695,6 +3696,14 @@ OO.ui.CapsuleMultiselectWidget = function OoUiCapsuleMultiselectWidget( config )
                this.$content.append( this.$input );
                this.$overlay.append( this.menu.$element );
        }
+
+       // Input size needs to be calculated after everything else is rendered
+       setTimeout( function () {
+               if ( this.$input ) {
+                       this.updateInputSize();
+               }
+       }.bind( this ) );
+
        this.onMenuItemsChange();
 };
 
@@ -3911,9 +3920,12 @@ OO.ui.CapsuleMultiselectWidget.prototype.addItems = function ( items ) {
  * @param {Object} item
  */
 OO.ui.CapsuleMultiselectWidget.prototype.editItem = function ( item ) {
+       this.addItemFromLabel( this.$input.val() );
+       this.clearInput();
        this.$input.val( item.label );
        this.updateInputSize();
        this.focus();
+       this.menu.updateItemVisibility(); // Hack, we shouldn't be calling this method directly
        this.removeItems( [ item ] );
 };
 
@@ -4149,11 +4161,31 @@ OO.ui.CapsuleMultiselectWidget.prototype.onKeyDown = function ( e ) {
  */
 OO.ui.CapsuleMultiselectWidget.prototype.updateInputSize = function () {
        var $lastItem, direction, contentWidth, currentWidth, bestWidth;
-       if ( !this.isDisabled() ) {
+       if ( this.$input && !this.isDisabled() ) {
                this.$input.css( 'width', '1em' );
                $lastItem = this.$group.children().last();
                direction = OO.ui.Element.static.getDir( this.$handle );
-               contentWidth = this.$input[ 0 ].scrollWidth;
+
+               // Get the width of the input with the placeholder text as
+               // the value and save it so that we don't keep recalculating
+               if (
+                       this.contentWidthWithPlaceholder === undefined &&
+                       this.$input.val() === '' &&
+                       this.$input.attr( 'placeholder' ) !== undefined
+               ) {
+                       this.$input.val( this.$input.attr( 'placeholder' ) );
+                       this.contentWidthWithPlaceholder = this.$input[ 0 ].scrollWidth;
+                       this.$input.val( '' );
+
+               }
+
+               // Always keep the input wide enough for the placeholder text
+               contentWidth = Math.max(
+                       this.$input[ 0 ].scrollWidth,
+                       // undefined arguments in Math.max lead to NaN
+                       ( this.contentWidthWithPlaceholder === undefined ) ?
+                               0 : this.contentWidthWithPlaceholder
+               );
                currentWidth = this.$input.width();
 
                if ( contentWidth < currentWidth ) {
@@ -4161,13 +4193,14 @@ OO.ui.CapsuleMultiselectWidget.prototype.updateInputSize = function () {
                        return;
                }
 
-               if ( !$lastItem.length ) {
+               if ( $lastItem.length === 0 ) {
                        bestWidth = this.$content.innerWidth();
                } else {
                        bestWidth = direction === 'ltr' ?
                                this.$content.innerWidth() - $lastItem.position().left - $lastItem.outerWidth() :
                                $lastItem.position().left;
                }
+
                // Some safety margin for sanity, because I *really* don't feel like finding out where the few
                // pixels this is off by are coming from.
                bestWidth -= 10;
index 1cceac5..6258b84 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-actionWidget.oo-ui-pendingElement-pending {
-       background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
+  background-image: /* @embed */ url(themes/apex/images/textures/pending.gif);
 }
 .oo-ui-window {
-       background-color: transparent;
-       background-image: none;
+  background-color: transparent;
+  background-image: none;
 }
 .oo-ui-window-frame {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -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;
+  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;
+  -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;
+  margin: 0;
+  padding: 0;
+  background: none;
 }
 .oo-ui-window-overlay {
-       position: absolute;
-       top: 0;
-       /* @noflip */
-       left: 0;
+  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;
+  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;
+  overflow: hidden;
+  z-index: 1;
+  top: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
-       overflow: auto;
-       z-index: 2;
-       top: 0;
-       bottom: 0;
+  overflow: auto;
+  z-index: 2;
+  top: 0;
+  bottom: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-foot {
-       z-index: 3;
-       bottom: 0;
+  z-index: 3;
+  bottom: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
-       box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+  box-shadow: 0 0 0.66em rgba(0, 0, 0, 0.25);
+}
+.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%;
+  display: table;
+  table-layout: fixed;
+  width: 100%;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       display: table-cell;
-       width: 1%;
+  display: table-cell;
+  width: 1%;
 }
 .oo-ui-messageDialog-actions-vertical {
-       display: block;
+  display: block;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       display: block;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.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;
-       display: inline;
-       white-space: nowrap;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 .oo-ui-messageDialog-content .oo-ui-window-body {
-       box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
 }
 .oo-ui-messageDialog-title,
 .oo-ui-messageDialog-message {
-       display: block;
-       text-align: center;
+  display: block;
+  text-align: center;
 }
 .oo-ui-messageDialog-title.oo-ui-labelElement,
 .oo-ui-messageDialog-message.oo-ui-labelElement {
-       padding-top: 0.5em;
+  padding-top: 0.5em;
 }
 .oo-ui-messageDialog-title {
-       font-size: 1.5em;
-       line-height: 1em;
-       color: #000;
+  font-size: 1.5em;
+  line-height: 1em;
+  color: #000;
 }
 .oo-ui-messageDialog-message {
-       font-size: 0.9em;
-       line-height: 1.25em;
-       color: #666;
+  font-size: 0.9em;
+  line-height: 1.25em;
+  color: #666;
 }
 .oo-ui-messageDialog-message-verbose {
-       font-size: 1.1em;
-       line-height: 1.5em;
-       text-align: left;
+  font-size: 1.1em;
+  line-height: 1.5em;
+  text-align: left;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       border-right: 1px solid #e5e5e5;
-       margin: 0;
+  border-right: 1px solid #e5e5e5;
+  margin: 0;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-       border-right-width: 0;
+  border-right-width: 0;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       border-bottom: 1px solid #e5e5e5;
-       margin: 0;
+  border-bottom: 1px solid #e5e5e5;
+  margin: 0;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-       border-bottom-width: 0;
+  border-bottom-width: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget {
-       height: 3.4em;
-       margin-right: 0;
+  height: 3.4em;
+  margin-right: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-labelElement .oo-ui-labelElement-label {
-       text-align: center;
-       line-height: 3.4em;
+  text-align: center;
+  line-height: 3.4em;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-       background-color: rgba(0, 0, 0, 0.05);
+  background-color: rgba(0, 0, 0, 0.05);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:active {
-       background-color: rgba(0, 0, 0, 0.1);
+  background-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover {
-       background-color: rgba(8, 126, 204, 0.05);
+  background-color: rgba(8, 126, 204, 0.05);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active {
-       background-color: rgba(8, 126, 204, 0.1);
+  background-color: rgba(8, 126, 204, 0.1);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label {
-       font-weight: bold;
+  font-weight: bold;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-       background-color: rgba(118, 171, 54, 0.05);
+  background-color: rgba(118, 171, 54, 0.05);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-       background-color: rgba(118, 171, 54, 0.1);
+  background-color: rgba(118, 171, 54, 0.1);
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-       background-color: rgba(212, 83, 83, 0.05);
+  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);
+  background-color: rgba(212, 83, 83, 0.1);
 }
 .oo-ui-processDialog-location {
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 .oo-ui-processDialog-title {
-       display: inline;
-       padding: 0;
+  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;
+  white-space: nowrap;
 }
 .oo-ui-processDialog-actions-safe,
 .oo-ui-processDialog-actions-primary {
-       position: absolute;
-       top: 0;
-       bottom: 0;
+  position: absolute;
+  top: 0;
+  bottom: 0;
 }
 .oo-ui-processDialog-actions-safe {
-       left: 0;
+  left: 0;
 }
 .oo-ui-processDialog-actions-primary {
-       right: 0;
+  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;
+  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.4em;
+  height: 3.4em;
 }
 .oo-ui-processDialog-content .oo-ui-window-body {
-       top: 3.4em;
-       box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
+  top: 3.4em;
+  box-shadow: 0 0 0.33em rgba(0, 0, 0, 0.33);
 }
 .oo-ui-processDialog-navigation {
-       position: relative;
-       height: 3.4em;
-       padding: 0 1em;
+  position: relative;
+  height: 3.4em;
+  padding: 0 1em;
 }
 .oo-ui-processDialog-location {
-       padding: 0.75em 0;
-       height: 1.875em;
-       cursor: default;
-       text-align: center;
+  padding: 0.75em 0;
+  height: 1.875em;
+  cursor: default;
+  text-align: center;
 }
 .oo-ui-processDialog-title {
-       font-weight: bold;
-       line-height: 1.875em;
+  font-weight: bold;
+  line-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-buttonElement-button {
-       min-width: 1.875em;
-       min-height: 1.875em;
+  min-width: 1.875em;
+  min-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget .oo-ui-labelElement-label,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget .oo-ui-labelElement-label,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget .oo-ui-labelElement-label {
-       line-height: 1.875em;
+  line-height: 1.875em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
-       margin-top: -0.125em;
+  margin-top: -0.125em;
 }
 .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.75em;
+  margin: 0.75em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-framed .oo-ui-buttonElement-button {
-       padding: 0 1em;
-       vertical-align: middle;
-       margin: -1px;
+  padding: 0 1em;
+  vertical-align: middle;
+  margin: -1px;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless {
-       margin: 0;
+  margin: 0;
 }
 .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;
+  padding: 0.75em 1em;
+  vertical-align: middle;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget:hover {
-       background-color: rgba(0, 0, 0, 0.05);
+  background-color: rgba(0, 0, 0, 0.05);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
-       background-color: rgba(0, 0, 0, 0.1);
+  background-color: rgba(0, 0, 0, 0.1);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover {
-       background-color: rgba(8, 126, 204, 0.05);
+  background-color: rgba(8, 126, 204, 0.05);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active {
-       background-color: rgba(8, 126, 204, 0.1);
+  background-color: rgba(8, 126, 204, 0.1);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label {
-       font-weight: bold;
+  font-weight: bold;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
-       background-color: rgba(118, 171, 54, 0.05);
+  background-color: rgba(118, 171, 54, 0.05);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:active {
-       background-color: rgba(118, 171, 54, 0.1);
+  background-color: rgba(118, 171, 54, 0.1);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:hover {
-       background-color: rgba(212, 83, 83, 0.05);
+  background-color: rgba(212, 83, 83, 0.05);
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
-       background-color: rgba(212, 83, 83, 0.1);
+  background-color: rgba(212, 83, 83, 0.1);
 }
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-processDialog > .oo-ui-window-frame {
-       min-height: 5em;
+  min-height: 5em;
 }
 .oo-ui-processDialog-errors {
-       background-color: rgba(255, 255, 255, 0.9);
-       padding: 3em 3em 1.5em 3em;
-       text-align: center;
+  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;
+  margin: 2em 1em 2em 1em;
 }
 .oo-ui-processDialog-errors-title {
-       font-size: 1.5em;
-       color: #000;
-       margin-bottom: 2em;
+  font-size: 1.5em;
+  color: #000;
+  margin-bottom: 2em;
 }
 .oo-ui-processDialog-error {
-       text-align: left;
-       margin: 1em;
-       padding: 1em;
-       border: 1px solid #ff9e9e;
-       background-color: #fff7f7;
-       border-radius: 0.25em;
+  text-align: left;
+  margin: 1em;
+  padding: 1em;
+  border: 1px solid #ff9e9e;
+  background-color: #fff7f7;
+  border-radius: 0.25em;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog {
-       position: fixed;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       z-index: 4;
+  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;
+  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%;
+  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;
+  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 ease;
-          -moz-transition: opacity 250ms ease;
-               transition: opacity 250ms ease;
+  background-color: rgba(255, 255, 255, 0.5);
+  opacity: 0;
+  -webkit-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);
-       -webkit-transition: all 250ms ease;
-          -moz-transition: all 250ms ease;
-               transition: all 250ms ease;
+  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 ease;
+     -moz-transition: all 250ms ease;
+          transition: all 250ms ease;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog.oo-ui-window-setup {
-       opacity: 1;
+  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);
+  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 #ccc;
-       border-radius: 0.5em;
-       box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
+  top: 1em;
+  bottom: 1em;
+  max-height: 100%;
+  max-height: calc(100% - 2em);
+  border: 1px solid #ccc;
+  border-radius: 0.5em;
+  box-shadow: 0 0.2em 1em rgba(0, 0, 0, 0.3);
 }
index 38e40b9..359c469 100644 (file)
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:06Z
+ * Date: 2016-11-09T00:52:42Z
  */
 .oo-ui-window {
-       background: transparent;
+  background: transparent;
 }
 .oo-ui-window-frame {
-       -webkit-box-sizing: border-box;
-          -moz-box-sizing: border-box;
-               box-sizing: border-box;
+  -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;
+  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;
+  -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;
+  margin: 0;
+  padding: 0;
+  background: none;
 }
 .oo-ui-window-overlay {
-       position: absolute;
-       top: 0;
-       /* @noflip */
-       left: 0;
+  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;
+  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;
+  overflow: hidden;
+  z-index: 1;
+  top: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-body {
-       overflow: auto;
-       z-index: 2;
-       top: 0;
-       bottom: 0;
+  overflow: auto;
+  z-index: 2;
+  top: 0;
+  bottom: 0;
 }
 .oo-ui-dialog-content > .oo-ui-window-foot {
-       z-index: 3;
-       bottom: 0;
+  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%;
+  display: table;
+  table-layout: fixed;
+  width: 100%;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       display: table-cell;
-       width: 1%;
+  display: table-cell;
+  width: 1%;
 }
 .oo-ui-messageDialog-actions-vertical {
-       display: block;
+  display: block;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       display: block;
-       overflow: hidden;
-       text-overflow: ellipsis;
-}
-.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;
-       display: inline;
-       white-space: nowrap;
+  display: block;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 .oo-ui-messageDialog-content > .oo-ui-window-foot {
-       outline: 1px solid #aaa;
+  outline: 1px solid #a2a9b1;
 }
 .oo-ui-messageDialog-title,
 .oo-ui-messageDialog-message {
-       display: block;
-       text-align: center;
+  display: block;
+  text-align: center;
 }
 .oo-ui-messageDialog-title.oo-ui-labelElement,
 .oo-ui-messageDialog-message.oo-ui-labelElement {
-       padding-top: 0.5em;
+  padding-top: 0.5em;
 }
 .oo-ui-messageDialog-title {
-       font-size: 1.5em;
-       line-height: 1;
-       color: #000;
+  font-size: 1.5em;
+  line-height: 1;
+  color: #000;
 }
 .oo-ui-messageDialog-message {
-       font-size: 0.9em;
-       line-height: 1.25;
-       color: #222;
+  font-size: 0.9em;
+  line-height: 1.25;
+  color: #222;
 }
 .oo-ui-messageDialog-message-verbose {
-       font-size: 1.1em;
-       line-height: 1.5;
-       text-align: left;
+  font-size: 1.1em;
+  line-height: 1.5;
+  text-align: left;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget {
-       border-right: 1px solid #9aa0a7;
-       margin: 0;
+  border-right: 1px solid #a2a9b1;
+  margin: 0;
 }
 .oo-ui-messageDialog-actions-horizontal .oo-ui-actionWidget:last-child {
-       border-right-width: 0;
+  border-right-width: 0;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget {
-       border-bottom: 1px solid #9aa0a7;
-       margin: 0;
+  border-bottom: 1px solid #a2a9b1;
+  margin: 0;
 }
 .oo-ui-messageDialog-actions-vertical .oo-ui-actionWidget:last-child {
-       border-bottom-width: 0;
+  border-bottom-width: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget {
-       min-height: 3.4em;
-       margin-right: 0;
+  min-height: 3.4em;
+  margin-right: 0;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:last-child {
-       margin-right: 0;
+  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.4;
-       text-align: center;
+  line-height: 3.4;
+  text-align: center;
 }
 .oo-ui-messageDialog-actions .oo-ui-actionWidget:hover {
-       background-color: rgba(0, 0, 0, 0.05);
+  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 {
-       background-color: rgba(8, 126, 204, 0.05);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active {
-       background-color: rgba(8, 126, 204, 0.1);
-}
-.oo-ui-messageDialog-actions .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label {
-       font-weight: bold;
+  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);
+  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);
+  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);
+  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);
+  background-color: rgba(212, 83, 83, 0.1);
 }
 .oo-ui-processDialog-location {
-       overflow: hidden;
-       text-overflow: ellipsis;
-       white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
 }
 .oo-ui-processDialog-title {
-       display: inline;
-       padding: 0;
+  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;
+  white-space: nowrap;
 }
 .oo-ui-processDialog-actions-safe,
 .oo-ui-processDialog-actions-primary {
-       position: absolute;
-       top: 0;
-       bottom: 0;
+  position: absolute;
+  top: 0;
+  bottom: 0;
 }
 .oo-ui-processDialog-actions-safe {
-       left: 0;
+  left: 0;
 }
 .oo-ui-processDialog-actions-primary {
-       right: 0;
+  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;
+  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.4em;
+  height: 3.4em;
 }
 .oo-ui-processDialog-content .oo-ui-window-body {
-       top: 3.4em;
-       outline: 1px solid rgba(0, 0, 0, 0.2);
+  top: 3.4em;
+  outline: 1px solid rgba(0, 0, 0, 0.2);
 }
 .oo-ui-processDialog-navigation {
-       position: relative;
-       height: 3.4em;
-       padding: 0 1em;
+  position: relative;
+  height: 3.4em;
+  padding: 0 1em;
 }
 .oo-ui-processDialog-location {
-       padding: 0.75em 0;
-       height: 1.875em;
-       cursor: default;
-       text-align: center;
+  padding: 0.75em 0;
+  height: 1.875em;
+  cursor: default;
+  text-align: center;
 }
 .oo-ui-processDialog-title {
-       font-weight: bold;
-       line-height: 1.875em;
+  font-weight: bold;
+  line-height: 1.875em;
 }
 .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.5em;
+  margin: 0.5em;
 }
 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless,
 .oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless,
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless {
-       margin: 0;
+  margin: 0;
 }
 .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;
+  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;
+  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);
+  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 {
-       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 {
-       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 {
-       font-weight: bold;
-}
-.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(118, 171, 54, 0.05);
-}
-.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(118, 171, 54, 0.1);
+  background-color: rgba(0, 0, 0, 0.1);
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .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-progressive .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-progressive .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 .oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:active,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .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-progressive .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-progressive .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-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-progressive .oo-ui-processDialog-actions-primary .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-progressive .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-progressive .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);
+  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);
+  background-color: rgba(212, 83, 83, 0.1);
 }
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement {
-       margin-right: 0;
+  margin-right: 0;
 }
 .oo-ui-processDialog > .oo-ui-window-frame {
-       min-height: 5em;
+  min-height: 5em;
 }
 .oo-ui-processDialog-errors {
-       background-color: rgba(255, 255, 255, 0.9);
-       padding: 3em 3em 1.5em 3em;
-       text-align: center;
+  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;
+  margin: 2em 1em 2em 1em;
 }
 .oo-ui-processDialog-errors-title {
-       font-size: 1.5em;
-       color: #000;
-       margin-bottom: 2em;
+  font-size: 1.5em;
+  color: #000;
+  margin-bottom: 2em;
 }
 .oo-ui-processDialog-error {
-       text-align: left;
-       margin: 1em;
-       padding: 1em;
-       border: 1px solid #ff9e9e;
-       background-color: #fff7f7;
-       border-radius: 2px;
+  text-align: left;
+  margin: 1em;
+  padding: 1em;
+  border: 1px solid #ff9e9e;
+  background-color: #fff7f7;
+  border-radius: 2px;
 }
 .oo-ui-windowManager-modal > .oo-ui-dialog {
-       position: fixed;
-       width: 0;
-       height: 0;
-       overflow: hidden;
-       z-index: 4;
+  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;
+  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%;
+  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;
+  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;
+  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;
+  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;
+  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);
+  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 0.15em 0 0 rgba(0, 0, 0, 0.15);
+  top: 1em;
+  bottom: 1em;
+  max-height: 100%;
+  max-height: calc(100% - 2em);
+  border: 1px solid #a2a9b1;
+  border-radius: 2px;
+  box-shadow: 0 0.15em 0 0 rgba(0, 0, 0, 0.15);
 }
index 0a29b8b..8b614c6 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.17.10
+ * OOjs UI v0.18.0
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2016 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2016-10-03T18:59:01Z
+ * Date: 2016-11-09T00:52:37Z
  */
 ( function ( OO ) {
 
@@ -804,7 +804,6 @@ OO.ui.Error.prototype.getMessageText = function () {
  *  that must be resolved before proceeding, or a function to execute. See #createStep for more information. see #createStep for more information
  * @param {Object} [context=null] Execution context of the function. The context is ignored if the step is
  *  a number or promise.
- * @return {Object} Step object, with `callback` and `context` properties
  */
 OO.ui.Process = function ( step, context ) {
        // Properties
@@ -1026,6 +1025,7 @@ OO.ui.WindowManager = function OoUiWindowManager( config ) {
        this.preparingToClose = null;
        this.currentWindow = null;
        this.globalEvents = false;
+       this.$returnFocusTo = null;
        this.$ariaHidden = null;
        this.onWindowResizeTimeout = null;
        this.onWindowResizeHandler = this.onWindowResize.bind( this );
@@ -1142,6 +1142,7 @@ OO.ui.WindowManager.prototype.afterWindowResize = function () {
 /**
  * Check if window is opening.
  *
+ * @param {OO.ui.Window} win Window to check
  * @return {boolean} Window is opening
  */
 OO.ui.WindowManager.prototype.isOpening = function ( win ) {
@@ -1151,6 +1152,7 @@ OO.ui.WindowManager.prototype.isOpening = function ( win ) {
 /**
  * Check if window is closing.
  *
+ * @param {OO.ui.Window} win Window to check
  * @return {boolean} Window is closing
  */
 OO.ui.WindowManager.prototype.isClosing = function ( win ) {
@@ -1160,6 +1162,7 @@ OO.ui.WindowManager.prototype.isClosing = function ( win ) {
 /**
  * Check if window is opened.
  *
+ * @param {OO.ui.Window} win Window to check
  * @return {boolean} Window is opened
  */
 OO.ui.WindowManager.prototype.isOpened = function ( win ) {
@@ -1283,6 +1286,7 @@ OO.ui.WindowManager.prototype.getCurrentWindow = function () {
  *
  * @param {OO.ui.Window|string} win Window object or symbolic name of window to open
  * @param {Object} [data] Window opening data
+ * @param {jQuery} [data.$returnFocusTo] Element to which the window will return focus when closed.
  * @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.
  * @fires opening
@@ -1290,6 +1294,7 @@ OO.ui.WindowManager.prototype.getCurrentWindow = function () {
 OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
        var manager = this,
                opening = $.Deferred();
+       data = data || {};
 
        // Argument handling
        if ( typeof win === 'string' ) {
@@ -1319,6 +1324,7 @@ OO.ui.WindowManager.prototype.openWindow = function ( win, data ) {
                                manager.toggleGlobalEvents( true );
                                manager.toggleAriaIsolation( true );
                        }
+                       manager.$returnFocusTo = data.$returnFocusTo || $( document.activeElement );
                        manager.currentWindow = win;
                        manager.opening = opening;
                        manager.preparingToOpen = null;
@@ -1412,6 +1418,7 @@ OO.ui.WindowManager.prototype.closeWindow = function ( win, data ) {
                                                                manager.toggleGlobalEvents( false );
                                                                manager.toggleAriaIsolation( false );
                                                        }
+                                                       manager.$returnFocusTo[ 0 ].focus();
                                                        manager.closing = null;
                                                        manager.currentWindow = null;
                                                        closing.resolve( data );
@@ -1448,6 +1455,9 @@ OO.ui.WindowManager.prototype.addWindows = function ( windows ) {
                        if ( typeof name !== 'string' ) {
                                throw new Error( 'Cannot add window' );
                        }
+                       if ( !name ) {
+                               OO.ui.warnDeprecation( 'OO.ui.WindowManager#addWindows: Windows must have a `name` static property defined.' );
+                       }
                        list[ name ] = windows[ i ];
                }
        } else if ( OO.isPlainObject( windows ) ) {
@@ -1514,6 +1524,7 @@ OO.ui.WindowManager.prototype.clearWindows = function () {
  *
  * Fullscreen mode will be used if the dialog is too wide to fit in the screen.
  *
+ * @param {OO.ui.Window} win Window to update, should be the current window
  * @chainable
  */
 OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
@@ -1852,17 +1863,20 @@ OO.ui.Window.prototype.getSizeProperties = function () {
 OO.ui.Window.prototype.withoutSizeTransitions = function ( callback ) {
        // Temporarily resize the frame so getBodyHeight() can use scrollHeight measurements.
        // Disable transitions first, otherwise we'll get values from when the window was animating.
-       var oldTransition,
-               styleObj = this.$frame[ 0 ].style;
-       oldTransition = styleObj.transition || styleObj.OTransition || styleObj.MsTransition ||
-               styleObj.MozTransition || styleObj.WebkitTransition;
-       styleObj.transition = styleObj.OTransition = styleObj.MsTransition =
-               styleObj.MozTransition = styleObj.WebkitTransition = 'none';
+       // We need to build the transition CSS properties using these specific properties since
+       // Firefox doesn't return anything useful when asked just for 'transition'.
+       var oldTransition = this.$frame.css( 'transition-property' ) + ' ' +
+               this.$frame.css( 'transition-duration' ) + ' ' +
+               this.$frame.css( 'transition-timing-function' ) + ' ' +
+               this.$frame.css( 'transition-delay' );
+
+       this.$frame.css( 'transition', 'none' );
        callback();
-       // Force reflow to make sure the style changes done inside callback really are not transitioned
+
+       // Force reflow to make sure the style changes done inside callback
+       // really are not transitioned
        this.$frame.height();
-       styleObj.transition = styleObj.OTransition = styleObj.MsTransition =
-               styleObj.MozTransition = styleObj.WebkitTransition = oldTransition;
+       this.$frame.css( 'transition', oldTransition );
 };
 
 /**
index 703911b..809cd02 100644 (file)
@@ -7,10 +7,6 @@
                "imageGallery": { "file": {
                        "ltr": "images/icons/imageGallery-ltr.svg",
                        "rtl": "images/icons/imageGallery-rtl.svg"
-               } },
-               "photoGallery": { "file": {
-                       "ltr": "images/icons/imageGallery-ltr.svg",
-                       "rtl": "images/icons/imageGallery-rtl.svg"
                } }
        }
 }
index 82fbd14..e8b2911 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bigger-ltr.png differ
index 6d95fc6..fffbcdd 100644 (file)
@@ -1,7 +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="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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M15.5 9h7L19 3z"/>
-    </g>
+    <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>
index 64d1cf1..2f5e05d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/bigger-rtl.png differ
index 807cdd9..7b903c4 100644 (file)
@@ -1,7 +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="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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M1.5 9h7L5 3z"/>
-    </g>
+    <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>
index f5e89ba..a9b29d8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smaller-ltr.png differ
index 82d16af..9431252 100644 (file)
@@ -1,7 +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="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 id="down">
-        <path id="arrow" d="M22 3l-3.5 6L15 3z"/>
-    </g>
+    <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>
index e07c7b0..006bd2b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png and b/resources/lib/oojs-ui/themes/apex/images/icons/smaller-rtl.png differ
index 7466f48..d2d2858 100644 (file)
@@ -1,7 +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="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 id="down">
-        <path id="arrow" d="M9 3L5.5 9 2 3z"/>
-    </g>
+    <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>
index 3911956..8c7b845 100644 (file)
                        "ltr": "images/icons/imageGallery-ltr.svg",
                        "rtl": "images/icons/imageGallery-rtl.svg"
                } },
-               "photoGallery": { "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"
index 97f77f4..ad247d3 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-invert.png differ
index 26f9653..b5ce7e7 100644 (file)
@@ -1,7 +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"><style>* { fill: #fff }</style>
-    <path 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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M15.5 9h7L19 3z"/>
-    </g>
+    <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>
index 183aaeb..af290b9 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr-progressive.png differ
index fedf787..e1f33d8 100644 (file)
@@ -1,7 +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"><style>* { fill: #36c }</style>
-    <path 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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M15.5 9h7L19 3z"/>
-    </g>
+    <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>
index 82fbd14..e8b2911 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-ltr.png differ
index 6d95fc6..fffbcdd 100644 (file)
@@ -1,7 +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="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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M15.5 9h7L19 3z"/>
-    </g>
+    <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>
index 628de3d..f40c303 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-invert.png differ
index aeb562c..8ed760b 100644 (file)
@@ -1,7 +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"><style>* { fill: #fff }</style>
-    <path 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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M1.5 9h7L5 3z"/>
-    </g>
+    <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>
index 47af038..a5095a1 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl-progressive.png differ
index 6c7b5fc..34ec7c0 100644 (file)
@@ -1,7 +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"><style>* { fill: #36c }</style>
-    <path 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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M1.5 9h7L5 3z"/>
-    </g>
+    <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>
index 64d1cf1..2f5e05d 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bigger-rtl.png differ
index 807cdd9..7b903c4 100644 (file)
@@ -1,7 +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="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" id="a"/>
-    <g id="up">
-        <path id="arrow" d="M1.5 9h7L5 3z"/>
-    </g>
+    <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>
index 84b1bcd..1b597da 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-invert.png differ
index 0eb2bfa..b29f718 100644 (file)
@@ -1,7 +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"><style>* { fill: #fff }</style>
-    <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 id="down">
-        <path id="arrow" d="M22 3l-3.5 6L15 3z"/>
-    </g>
+    <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>
index ba4fcef..2878f23 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr-progressive.png differ
index b3c6452..9b7962e 100644 (file)
@@ -1,7 +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"><style>* { fill: #36c }</style>
-    <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 id="down">
-        <path id="arrow" d="M22 3l-3.5 6L15 3z"/>
-    </g>
+    <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>
index f5e89ba..a9b29d8 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-ltr.png differ
index 82d16af..9431252 100644 (file)
@@ -1,7 +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="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 id="down">
-        <path id="arrow" d="M22 3l-3.5 6L15 3z"/>
-    </g>
+    <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>
index c9cdd77..f94184a 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-invert.png differ
index a87f7ba..171b31d 100644 (file)
@@ -1,7 +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"><style>* { fill: #fff }</style>
-    <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 id="down">
-        <path id="arrow" d="M9 3L5.5 9 2 3z"/>
-    </g>
+    <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>
index 03a4bcc..99abfdb 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl-progressive.png differ
index 64d103c..23c0b09 100644 (file)
@@ -1,7 +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"><style>* { fill: #36c }</style>
-    <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 id="down">
-        <path id="arrow" d="M9 3L5.5 9 2 3z"/>
-    </g>
+    <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>
index e07c7b0..006bd2b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smaller-rtl.png differ
index 7466f48..d2d2858 100644 (file)
@@ -1,7 +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="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 id="down">
-        <path id="arrow" d="M9 3L5.5 9 2 3z"/>
-    </g>
+    <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>
index e52d6a7..a6106e4 100644 (file)
@@ -97,7 +97,7 @@ function getAccessKeyLabel( element ) {
                return '';
        }
        // use accessKeyLabel if possible
-       // http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#dom-accesskeylabel
+       // https://html.spec.whatwg.org/multipage/interaction.html#dom-accesskeylabel
        if ( !useTestPrefix && element.accessKeyLabel ) {
                return element.accessKeyLabel;
        }
index dd71a2b..b1692bb 100644 (file)
                                // maxLength is a strange property. Removing or setting the property to
                                // undefined directly doesn't work. Instead, it can only be unset internally
                                // by the browser when removing the associated attribute (Firefox/Chrome).
-                               // http://code.google.com/p/chromium/issues/detail?id=136004
+                               // https://bugs.chromium.org/p/chromium/issues/detail?id=136004
                                $el.removeAttr( 'maxlength' );
 
                        } else {
                        // changed while text is being entered and keyup/change will not be fired yet
                        // (such as holding down a single key, fires keydown, and after each keydown,
                        // we can trim the previous one).
-                       // See http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order for
+                       // See https://www.w3.org/TR/DOM-Level-3-Events/#events-keyboard-event-order for
                        // the order and characteristics of the key events.
                        $el.on( eventKeys, function () {
                                var res = $.trimByteLength(
index 3b19b35..f26c336 100644 (file)
                                        $( '<span>' ).addClass( 'comment' ).html(
                                                // There is no equivalent to rawParams
                                                mw.message( 'parentheses' ).escaped()
-                                                       .replace( '$1', parse.parsedsummary )
+                                                       // .replace() use $ as start of a pattern.
+                                                       // $$ is the pattern for '$'.
+                                                       // The inner .replace() duplicates any $ and
+                                                       // the outer .replace() simplifies the $$.
+                                                       .replace( '$1', parse.parsedsummary.replace( /\$/g, '$$$$' ) )
                                        )
                                );
                        }
index 7ccf59e..4daf77f 100644 (file)
@@ -5,7 +5,7 @@
  */
 
 /* For clarity, explicitly state some recommendations from
- * http://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right
+ * https://www.w3.org/TR/CSS21/sample.html to make sure the editsection links scale right
  */
 
 h1 {
index 28ad10a..676ecca 100644 (file)
@@ -50,7 +50,7 @@
 @colorWarningText: #705000;
 
 // UI colors
-@colorFieldBorder: #9aa0a7;
+@colorFieldBorder: #a2a9b1;
 @colorShadow: @colorGray14;
 @colorPlaceholder: @colorGray10;
 @colorNeutral: @colorGray7;
index 022fa28..d4c93fd 100644 (file)
@@ -89,7 +89,7 @@ table.toc td {
        display: table-cell;
        /*
        Text decorations are not propagated to the contents of inline blocks and inline tables,
-       according to <http://www.w3.org/TR/css-text-decor-3/#line-decoration>, and 'display: table-cell'
+       according to <https://www.w3.org/TR/css-text-decor-3/#line-decoration>, and 'display: table-cell'
        generates an inline table when used without any parent table-rows and tables.
        */
        text-decoration: inherit;
index 98ed3ee..64cfcf5 100644 (file)
                        },
                        apiCheckValid: function () {
                                var that = this;
-                               return this.isValid().done( function ( ok ) {
+                               return this.getValidity().then( function () {
+                                       return $.Deferred().resolve( true ).promise();
+                               }, function () {
+                                       return $.Deferred().resolve( false ).promise();
+                               } ).done( function ( ok ) {
                                        ok = ok || suppressErrors;
                                        that.setIcon( ok ? null : 'alert' );
                                        that.setIconTitle( ok ? '' : mw.message( 'apisandbox-alert-field' ).plain() );
                },
 
                dateTimeInputWidget: {
-                       isValid: function () {
-                               var ok = !Util.apiBool( this.paramInfo.required ) || this.getApiValue() !== '';
-                               return $.Deferred().resolve( ok ).promise();
+                       getValidity: function () {
+                               if ( !Util.apiBool( this.paramInfo.required ) || this.getApiValue() !== '' ) {
+                                       return $.Deferred().resolve().promise();
+                               } else {
+                                       return $.Deferred().reject().promise();
+                               }
                        }
                },
 
                                        } );
                                        widget.setIcon = widget.input.setIcon.bind( widget.input );
                                        widget.setIconTitle = widget.input.setIconTitle.bind( widget.input );
-                                       widget.isValid = widget.input.isValid.bind( widget.input );
+                                       widget.getValidity = widget.input.getValidity.bind( widget.input );
                                        widget.paramInfo = pi;
                                        $.extend( widget, WidgetMethods.textInputWidget );
                                        if ( Util.apiBool( pi.enforcerange ) ) {
                                        } );
                                        widget.setIcon = widget.input.setIcon.bind( widget.input );
                                        widget.setIconTitle = widget.input.setIconTitle.bind( widget.input );
-                                       widget.isValid = widget.input.isValid.bind( widget.input );
+                                       widget.getValidity = widget.input.getValidity.bind( widget.input );
                                        widget.input.setValidation( function ( value ) {
                                                return value === 'max' || widget.validateNumber( value );
                                        } );
                                                        if ( data.modules.length ) {
                                                                mw.loader.load( data.modules );
                                                        }
+                                                       if ( data.status && data.status !== 200 ) {
+                                                               $( '<div>' )
+                                                                       .addClass( 'api-pretty-header api-pretty-status' )
+                                                                       .append(
+                                                                               mw.message( 'api-format-prettyprint-status', data.status, data.statustext ).parse()
+                                                                       )
+                                                                       .appendTo( $result );
+                                                       }
                                                        $result.append( Util.parseHTML( data.html ) );
                                                        loadTime = data.time;
                                                } else if ( ( m = data.match( /<pre[ >][\s\S]*<\/pre>/ ) ) ) {
index da4c769..9c8fe70 100644 (file)
                                 *  - this.Raw: The raw value is directly included.
                                 *  - this.Cdata: The raw value is directly included. An exception is
                                 *    thrown if it contains any illegal ETAGO delimiter.
-                                *    See <http://www.w3.org/TR/html401/appendix/notes.html#h-B.3.2>.
+                                *    See <https://www.w3.org/TR/html401/appendix/notes.html#h-B.3.2>.
                                 * @return {string} HTML
                                 */
                                element: function ( name, attrs, contents ) {
index 84ec92d..99d9784 100644 (file)
@@ -1,5 +1,10 @@
-// Connect OOjs UI to MediaWiki's localisation system
 ( function ( mw ) {
+       // Connect OOjs UI to MediaWiki's localisation system
        OO.ui.getUserLanguages = mw.language.getFallbackLanguageChain;
        OO.ui.msg = mw.msg;
+       // Connect OOjs UI's deprecation warnings to MediaWiki's logging system
+       OO.ui.warnDeprecation = function ( message ) {
+               mw.track( 'mw.deprecate', 'oojs-ui' );
+               mw.log.warn( message );
+       };
 }( mediaWiki ) );
index 556b51b..5f52d1e 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * Adds window.Node with node types according to:
- * http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247
+ * https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-1950641247
  */
 
 window.Node = window.Node || {
index 61d06b6..5e05590 100644 (file)
@@ -65,7 +65,9 @@ function isCompatible( str ) {
                // support in the modern run-time.
                && !(
                        ua.match( /webOS\/1\.[0-4]|SymbianOS|Series60|NetFront|Opera Mini|S40OviBrowser|MeeGo|Android.+Glass/ ) ||
-                       ua.match( /PlayStation/i )
+                       ua.match( /PlayStation/i ) ||
+                       // UC Mini (speed mode on)
+                       ua.match( /^Mozilla\/5\.0 .+ Gecko\/$/ )
                )
        );
 }
index 59f88c9..b6e811b 100644 (file)
@@ -264,7 +264,6 @@ class TestFileReader {
                $this->sectionLineNum = [];
                $this->sectionData = [];
                $this->section = null;
-
        }
 
        /**
index 103acc6..a18e219 100644 (file)
@@ -1,5 +1,5 @@
 # MediaWiki Parser test cases
-# Some taken from http://meta.wikimedia.org/wiki/Parser_testing
+# Some taken from https://meta.wikimedia.org/wiki/Parser_testing
 # All (C) their respective authors and released under the GPL
 #
 # The syntax should be fairly self-explanatory.
@@ -524,7 +524,7 @@ http://fr.wikipedia.org/wiki/🍺
 !! end
 
 # Note that the html+tidy output removes the spaces after the <li>,
-# which is a bug (http://sourceforge.net/p/tidy/bugs/945/, etc).
+# which is a bug (https://sourceforge.net/p/tidy/bugs/945/, etc).
 # This is an issue for all tests with lists.  We intentionally do
 # *not* add html+tidy clauses for these, as we don't want to
 # document/test the broken behavior.  (Parsoid matches the non-tidy
@@ -1230,7 +1230,7 @@ Text-level semantic html elements in wikitext
 !! end
 
 # test cases taken from
-# http://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
+# https://www.w3.org/TR/html5/text-level-semantics.html#the-ruby-element
 !! test
 Ruby markup (W3C-style)
 !! wikitext
@@ -1293,7 +1293,7 @@ Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
 </p>
 !! end
 
-# There is a tidy bug here: http://sourceforge.net/p/tidy/bugs/946/
+# There is a tidy bug here: https://sourceforge.net/p/tidy/bugs/946/
 # If the non-word-character tag made it through the sanitizer, tidy
 # would munge it up.
 !! test
@@ -3849,7 +3849,7 @@ Definition Lists: Hacky use to indent tables (WS-insensitive)
 ## All Parsoid only definition list tests have this difference.
 ##
 ## See also: https://phabricator.wikimedia.org/T8569
-## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
+## and https://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
 
 !! test
 Table / list interaction: indented table with lists in table contents
@@ -5203,7 +5203,7 @@ http://www.example.com/?title=AT%26T
 <p><a rel="mw:ExtLink" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a></p>
 !! end
 
-# According to http://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain
+# According to https://www.w3.org/TR/2011/WD-html5-20110525/Overview.html#parsing-urls a plain
 # % is actually legal in HTML5. Any change in output would need testing though.
 !! test
 Bug 4781, 5267: %25 in URL
@@ -5790,7 +5790,7 @@ Plain ''italic'''s plain
 
 # This should not produce <table></table> as <table><tr><td></td></tr></table>
 # is the bare minimum required by the spec, see:
-# http://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables
+# https://www.w3.org/TR/xhtml-modularization/dtd_module_defs.html#a_module_Basic_Tables
 # Parsoid team replies: empty table tags are legal in HTML5
 !! test
 A table with no data.
@@ -19107,7 +19107,7 @@ parsoid=wt2html,wt2wt,html2html
 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
 !! end
 
-# See: http://www.w3.org/TR/html5/syntax.html#character-references
+# See: https://www.w3.org/TR/html5/syntax.html#character-references
 # Note that U+000C (form feed) is not a valid XML character, so
 # it is banned even though allowed in HTML5.
 !! test
index 9f4a01c..89416f2 100644 (file)
@@ -18,7 +18,6 @@ class GitInfoTest extends MediaWikiTestCase {
                $this->assertEquals( 'master', $gitInfo->getCurrentBranch() );
                $this->assertContains( '0123456789abcdef0123456789abcdef01234567',
                        $gitInfo->getHeadViewUrl() );
-
        }
 
        public function testValidJsonData() {
index bc50966..e2ee193 100644 (file)
@@ -92,7 +92,6 @@ class HtmlTest extends MediaWikiTestCase {
         * @covers Html::expandAttributes
         */
        public function testExpandAttributesSkipsNullAndFalse() {
-
                # ## EMPTY ########
                $this->assertEmpty(
                        Html::expandAttributes( [ 'foo' => null ] ),
@@ -190,7 +189,6 @@ class HtmlTest extends MediaWikiTestCase {
                        Html::expandAttributes( [ 'zero' => 0 ] ),
                        'Number 0 value needs no quotes'
                );
-
        }
 
        /**
@@ -447,7 +445,7 @@ class HtmlTest extends MediaWikiTestCase {
 
        /**
         * List of input element types values introduced by HTML5
-        * Full list at http://www.w3.org/TR/html-markup/input.html
+        * Full list at https://www.w3.org/TR/html-markup/input.html
         */
        public static function provideHtml5InputTypes() {
                $types = [
index ae0b4be..c3804c6 100644 (file)
@@ -188,7 +188,7 @@ class HttpTest extends MediaWikiTestCase {
 
        /**
         * Constant values are from PHP 5.3.28 using cURL 7.24.0
-        * @see http://php.net/manual/en/curl.constants.php
+        * @see https://secure.php.net/manual/en/curl.constants.php
         *
         * All constant values are present so that developers don’t need to remember
         * to add them if added at a later date. The commented out constants were
index 61b165a..428b012 100644 (file)
@@ -6,7 +6,6 @@
 class LinkFilterTest extends MediaWikiLangTestCase {
 
        protected function setUp() {
-
                parent::setUp();
 
                $this->setMwGlobals( 'wgUrlProtocols', [
@@ -26,7 +25,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        'mms://',
                        '//',
                ] );
-
        }
 
        /**
@@ -38,11 +36,9 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return string Regex
         */
        function createRegexFromLIKE( $like ) {
-
                $regex = '!^';
 
                foreach ( $like as $item ) {
-
                        if ( $item instanceof LikeMatch ) {
                                if ( $item->toString() == '%' ) {
                                        $regex .= '.*';
@@ -58,7 +54,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                $regex .= '$!';
 
                return $regex;
-
        }
 
        /**
@@ -67,7 +62,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return array
         */
        public static function provideValidPatterns() {
-
                return [
                        // Protocol, Search pattern, URL which matches the pattern
                        [ 'http://', '*.test.com', 'http://www.test.com' ],
@@ -164,7 +158,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        // [ '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
                        //      'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ],
                ];
-
        }
 
        /**
@@ -181,7 +174,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @param bool $shouldBeFound Should the URL be found? (defaults true)
         */
        function testMakeLikeArrayWithValidPatterns( $protocol, $pattern, $url, $shouldBeFound = true ) {
-
                $indexes = wfMakeUrlIndexes( $url );
                $likeArray = LinkFilter::makeLikeArray( $pattern, $protocol );
 
@@ -211,7 +203,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                                "Search pattern '$protocol$pattern' should not find url '$url' \n$debugmsg"
                        );
                }
-
        }
 
        /**
@@ -220,7 +211,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @return array
         */
        public static function provideInvalidPatterns() {
-
                return [
                        [ '' ],
                        [ '*' ],
@@ -240,7 +230,6 @@ class LinkFilterTest extends MediaWikiLangTestCase {
                        [ 'test.com/*/index' ],
                        [ 'test.com/dir/index?arg=*' ],
                ];
-
        }
 
        /**
@@ -253,12 +242,10 @@ class LinkFilterTest extends MediaWikiLangTestCase {
         * @param string $pattern Invalid search pattern
         */
        function testMakeLikeArrayWithInvalidPatterns( $pattern ) {
-
                $this->assertFalse(
                        LinkFilter::makeLikeArray( $pattern ),
                        "'$pattern' is not a valid pattern and should be rejected"
                );
-
        }
 
 }
index df92012..a8d1e33 100644 (file)
@@ -34,7 +34,7 @@ class MediaWikiTest extends MediaWikiTestCase {
                                'url' => 'http://example.org/w/index.php?title=Foo_Bar',
                                'query' => [ 'title' => 'Foo_Bar' ],
                                'title' => 'Foo_Bar',
-                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                               'redirect' => false,
                        ],
                        [
                                // View: Script path with implicit title from page id
@@ -76,21 +76,21 @@ class MediaWikiTest extends MediaWikiTestCase {
                                'url' => 'http://example.org/w/?title=Foo_Bar',
                                'query' => [ 'title' => 'Foo_Bar' ],
                                'title' => 'Foo_Bar',
-                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                               'redirect' => false,
                        ],
                        [
                                // View: Root path with escaped title
                                'url' => 'http://example.org/?title=Foo_Bar',
                                'query' => [ 'title' => 'Foo_Bar' ],
                                'title' => 'Foo_Bar',
-                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                               'redirect' => false,
                        ],
                        [
                                // View: Canonical with redundant query
                                'url' => 'http://example.org/wiki/Foo_Bar?action=view',
                                'query' => [ 'action' => 'view' ],
                                'title' => 'Foo_Bar',
-                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                               'redirect' => false,
                        ],
                        [
                                // Edit: Canonical view url with action query
@@ -104,7 +104,7 @@ class MediaWikiTest extends MediaWikiTestCase {
                                'url' => 'http://example.org/w/index.php?title=Foo_Bar&action=view',
                                'query' => [ 'title' => 'Foo_Bar', 'action' => 'view' ],
                                'title' => 'Foo_Bar',
-                               'redirect' => 'http://example.org/wiki/Foo_Bar',
+                               'redirect' => false,
                        ],
                        [
                                // Edit: Index with action query
index 4c689ab..bb9af8f 100644 (file)
@@ -236,11 +236,14 @@ class MessageTest extends MediaWikiLangTestCase {
 
        public static function provideToString() {
                return [
-                       [ 'mainpage', 'Main Page' ],
-                       [ 'i-dont-exist-evar', '⧼i-dont-exist-evar⧽' ],
-                       [ 'i-dont-exist-evar', '⧼i-dont-exist-evar⧽', 'escaped' ],
-                       [ 'script>alert(1)</script', '⧼script&gt;alert(1)&lt;/script⧽', 'escaped' ],
-                       [ 'script>alert(1)</script', '⧼script&gt;alert(1)&lt;/script⧽' ],
+                       // key, transformation, transformed, transformed implicitly
+                       [ 'mainpage', 'plain', 'Main Page', 'Main Page' ],
+                       [ 'i-dont-exist-evar', 'plain', '⧼i-dont-exist-evar⧽', '⧼i-dont-exist-evar⧽' ],
+                       [ 'i-dont-exist-evar', 'escaped', '⧼i-dont-exist-evar⧽', '⧼i-dont-exist-evar⧽' ],
+                       [ 'script>alert(1)</script', 'escaped', '⧼script&gt;alert(1)&lt;/script⧽',
+                               '⧼script&gt;alert(1)&lt;/script⧽' ],
+                       [ 'script>alert(1)</script', 'plain', '⧼script&gt;alert(1)&lt;/script⧽',
+                               '⧼script&gt;alert(1)&lt;/script⧽' ],
                ];
        }
 
@@ -249,11 +252,45 @@ class MessageTest extends MediaWikiLangTestCase {
         * @covers Message::__toString
         * @dataProvider provideToString
         */
-       public function testToString( $key, $expect, $format = 'plain' ) {
+       public function testToString( $key, $format, $expect, $expectImplicit ) {
                $msg = new Message( $key );
-               $msg->$format();
+               $this->assertEquals( $expect, $msg->$format() );
+               $this->assertEquals( $expect, $msg->toString() );
+               $this->assertEquals( $expectImplicit, $msg->__toString() );
+               $this->assertEquals( $expect, $msg->toString() );
+       }
+
+       public static function provideToString_raw() {
+               return [
+                       [ '<span>foo</span>', 'parse', '<span>foo</span>', '<span>foo</span>' ],
+                       [ '<span>foo</span>', 'escaped', '&lt;span&gt;foo&lt;/span&gt;',
+                         '<span>foo</span>' ],
+                       [ '<span>foo</span>', 'plain', '<span>foo</span>', '<span>foo</span>' ],
+                       [ '<script>alert(1)</script>', 'parse', '&lt;script&gt;alert(1)&lt;/script&gt;',
+                               '&lt;script&gt;alert(1)&lt;/script&gt;' ],
+                       [ '<script>alert(1)</script>', 'escaped', '&lt;script&gt;alert(1)&lt;/script&gt;',
+                               '&lt;script&gt;alert(1)&lt;/script&gt;' ],
+                       [ '<script>alert(1)</script>', 'plain', '<script>alert(1)</script>',
+                         '&lt;script&gt;alert(1)&lt;/script&gt;' ],
+               ];
+       }
+
+       /**
+        * @covers Message::toString
+        * @covers Message::__toString
+        * @dataProvider provideToString_raw
+        */
+       public function testToString_raw( $key, $format, $expect, $expectImplicit ) {
+               // make the message behave like RawMessage and use the key as-is
+               $msg = $this->getMockBuilder( Message::class )->setMethods( [ 'fetchMessage' ] )
+                       ->setConstructorArgs( [ $key ] )
+                       ->getMock();
+               $msg->expects( $this->any() )->method( 'fetchMessage' )->willReturn( $key );
+               /** @var Message $msg */
+               $this->assertEquals( $expect, $msg->$format() );
+               $this->assertEquals( $expect, $msg->toString() );
+               $this->assertEquals( $expectImplicit, $msg->__toString() );
                $this->assertEquals( $expect, $msg->toString() );
-               $this->assertEquals( $expect, $msg->__toString() );
        }
 
        /**
index cc1708a..29c9e22 100644 (file)
@@ -266,11 +266,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        }
 
        protected function setProperties( $pageID, $properties ) {
-
                $rows = [];
 
                foreach ( $properties as $propertyName => $propertyValue ) {
-
                        $row = [
                                'pp_page' => $pageID,
                                'pp_propname' => $propertyName,
@@ -295,11 +293,9 @@ class TestPageProps extends MediaWikiLangTestCase {
        }
 
        protected function setProperty( $pageID, $propertyName, $propertyValue ) {
-
                $properties = [];
                $properties[$propertyName] = $propertyValue;
 
                $this->setProperties( $pageID, $properties );
-
        }
 }
index 7c31384..02935a5 100644 (file)
@@ -32,7 +32,7 @@ class TestSample extends MediaWikiLangTestCase {
         * they run.  While MediaWiki isn't strictly an Agile Programming
         * project, you are encouraged to use the naming described under
         * "Agile Documentation" at
-        * http://www.phpunit.de/manual/3.4/en/other-uses-for-tests.html
+        * https://www.phpunit.de/manual/3.4/en/other-uses-for-tests.html
         */
        public function testTitleObjectStringConversion() {
                $title = Title::newFromText( "text" );
@@ -45,7 +45,7 @@ class TestSample extends MediaWikiLangTestCase {
 
        /**
         * If you want to run a the same test with a variety of data, use a data provider.
-        * see: http://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
+        * see: https://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
         */
        public static function provideTitles() {
                return [
@@ -60,7 +60,7 @@ class TestSample extends MediaWikiLangTestCase {
        // @codingStandardsIgnoreStart Generic.Files.LineLength
        /**
         * @dataProvider provideTitles
-        * See http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.dataProvider
+        * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.dataProvider
         */
        // @codingStandardsIgnoreEnd
        public function testCreateBasicListOfTitles( $titleName, $ns, $text ) {
@@ -89,7 +89,7 @@ class TestSample extends MediaWikiLangTestCase {
 
        /**
         * @depends testSetUpMainPageTitleForNextTest
-        * See http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.depends
+        * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.depends
         */
        public function testCheckMainPageTitleIsConsideredLocal( $title ) {
                $this->assertTrue( $title->isLocal() );
@@ -98,7 +98,7 @@ class TestSample extends MediaWikiLangTestCase {
        // @codingStandardsIgnoreStart Generic.Files.LineLength
        /**
         * @expectedException InvalidArgumentException
-        * See http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.expectedException
+        * See https://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.expectedException
         */
        // @codingStandardsIgnoreEnd
        public function testTitleObjectFromObject() {
index c915b70..12db1a1 100644 (file)
@@ -134,19 +134,19 @@ class SanitizerTest extends MediaWikiTestCase {
                                'Self-closing closing div'
                        ],
                        // Make sure special nested HTML5 semantics are not broken
-                       // http://www.whatwg.org/html/text-level-semantics.html#the-kbd-element
+                       // https://html.spec.whatwg.org/multipage/semantics.html#the-kbd-element
                        [
                                '<kbd><kbd>Shift</kbd>+<kbd>F3</kbd></kbd>',
                                '<kbd><kbd>Shift</kbd>+<kbd>F3</kbd></kbd>',
                                'Nested <kbd>.'
                        ],
-                       // http://www.whatwg.org/html/text-level-semantics.html#the-sub-and-sup-elements
+                       // https://html.spec.whatwg.org/multipage/semantics.html#the-sub-and-sup-elements
                        [
                                '<var>x<sub><var>i</var></sub></var>, <var>y<sub><var>i</var></sub></var>',
                                '<var>x<sub><var>i</var></sub></var>, <var>y<sub><var>i</var></sub></var>',
                                'Nested <var>.'
                        ],
-                       // http://www.whatwg.org/html/text-level-semantics.html#the-dfn-element
+                       // https://html.spec.whatwg.org/multipage/semantics.html#the-dfn-element
                        [
                                '<dfn><abbr title="Garage Door Opener">GDO</abbr></dfn>',
                                '<dfn><abbr title="Garage Door Opener">GDO</abbr></dfn>',
index 9359568..152602a 100644 (file)
@@ -91,6 +91,5 @@ class TemplateCategoriesTest extends MediaWikiLangTestCase {
                        $title->getParentCategories(),
                        'Verify that the page is no longer in the category after template deletion'
                );
-
        }
 }
index 6da16a0..3ad16d1 100644 (file)
@@ -195,7 +195,6 @@ class ApiContinuationManagerTest extends MediaWikiTestCase {
                                'Expected exception'
                        );
                }
-
        }
 
 }
index a45015a..8764b41 100644 (file)
@@ -5,17 +5,17 @@
  */
 class ApiMessageTest extends MediaWikiTestCase {
 
-       private function compareMessages( $msg, $msg2 ) {
+       private function compareMessages( Message $msg, Message $msg2 ) {
                $this->assertSame( $msg->getKey(), $msg2->getKey(), 'getKey' );
                $this->assertSame( $msg->getKeysToTry(), $msg2->getKeysToTry(), 'getKeysToTry' );
                $this->assertSame( $msg->getParams(), $msg2->getParams(), 'getParams' );
-               $this->assertSame( $msg->getFormat(), $msg2->getFormat(), 'getFormat' );
                $this->assertSame( $msg->getLanguage(), $msg2->getLanguage(), 'getLanguage' );
 
                $msg = TestingAccessWrapper::newFromObject( $msg );
                $msg2 = TestingAccessWrapper::newFromObject( $msg2 );
                $this->assertSame( $msg->interface, $msg2->interface, 'interface' );
                $this->assertSame( $msg->useDatabase, $msg2->useDatabase, 'useDatabase' );
+               $this->assertSame( $msg->format, $msg2->format, 'format' );
                $this->assertSame(
                        $msg->title ? $msg->title->getFullText() : null,
                        $msg2->title ? $msg2->title->getFullText() : null,
index 48472cf..98e24fb 100644 (file)
@@ -1230,7 +1230,6 @@ class ApiResultTest extends MediaWikiTestCase {
                                ],
                        ],
                ];
-
        }
 
        /**
@@ -1380,7 +1379,6 @@ class ApiResultTest extends MediaWikiTestCase {
                        'two' => 2,
                ], $arr['foo'] );
        }
-
 }
 
 class ApiResultTestStringifiableObject {
index 6359983..d8282be 100644 (file)
@@ -25,7 +25,6 @@ class ApiRevisionDeleteTest extends ApiTestCase {
                        $this->revs[] = Title::newFromText( self::$page )
                                ->getLatestRevID( Title::GAID_FOR_UPDATE );
                }
-
        }
 
        public function testHidingRevisions() {
index 13486e2..f57db11 100644 (file)
@@ -695,7 +695,6 @@ class AuthManagerTest extends \MediaWikiTestCase {
                                $ex->getMessage()
                        );
                }
-
        }
 
        public function testBeginAuthentication() {
@@ -3265,7 +3264,6 @@ class AuthManagerTest extends \MediaWikiTestCase {
                $this->manager->removeAuthenticationSessionData( null );
                $this->assertNull( $this->manager->getAuthenticationSessionData( 'foo' ) );
                $this->assertNull( $this->manager->getAuthenticationSessionData( 'bar' ) );
-
        }
 
        public function testCanLinkAccounts() {
index c52c3e9..ec4bea1 100644 (file)
@@ -104,6 +104,5 @@ class EmailNotificationSecondaryAuthenticationProviderTest extends \PHPUnit_Fram
                $authManager->setAuthenticationSessionData( 'no-email', true );
                $provider->setManager( $authManager );
                $provider->beginSecondaryAccountCreation( $userNotExpectsConfirmation, $creator, [] );
-
        }
 }
index 088dd00..caf1680 100644 (file)
@@ -328,7 +328,6 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
                        AuthenticationResponse::newPass( $userName ),
                        $provider->beginPrimaryAuthentication( $reqs )
                );
-
        }
 
        /**
@@ -645,7 +644,6 @@ class LocalPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestCase
                $this->assertNull( $provider->finishAccountCreation( $user, $user, $res2 ) );
                $ret = $provider->beginPrimaryAuthentication( $reqs );
                $this->assertEquals( AuthenticationResponse::PASS, $ret->status, 'new password is set' );
-
        }
 
 }
index bc78c08..d4ebe34 100644 (file)
@@ -347,7 +347,6 @@ class TemporaryPasswordPrimaryAuthenticationProviderTest extends \MediaWikiTestC
                        'wrongpassword',
                        $ret->message->getKey()
                );
-
        }
 
        /**
index 7fe3351..7dea123 100644 (file)
@@ -36,7 +36,6 @@ class UserDataAuthenticationRequestTest extends AuthenticationRequestTestCase {
                        $this->assertSame( $email ?: 'default@example.com', $user->getEmail() );
                        $this->assertSame( $realname ?: 'Fake Name', $user->getRealName() );
                }
-
        }
 
        public static function providePopulateUser() {
index 0e87ffa..7c36f7d 100644 (file)
@@ -173,7 +173,6 @@ class MWExceptionTest extends MediaWikiTestCase {
         * @dataProvider provideJsonSerializedKeys
         */
        public function testJsonserializeexceptionKeys( $expectedKeyType, $exClass, $key ) {
-
                # Make sure we log a backtrace:
                $this->setMwGlobals( [ 'wgLogExceptionBacktrace' => true ] );
 
@@ -235,7 +234,6 @@ class MWExceptionTest extends MediaWikiTestCase {
                        MWExceptionHandler::jsonSerializeException( new Exception() )
                );
                $this->assertObjectNotHasAttribute( 'backtrace', $json );
-
        }
 
 }
index 22d52f0..2a75cf4 100644 (file)
@@ -103,7 +103,7 @@ class FakeDatabase extends Database {
 
        /**
         * Get the number of fields in a result object
-        * @see http://www.php.net/mysql_num_fields
+        * @see https://secure.php.net/mysql_num_fields
         *
         * @param mixed $res A SQL result
         * @return int
@@ -114,7 +114,7 @@ class FakeDatabase extends Database {
 
        /**
         * Get a field name in a result object
-        * @see http://www.php.net/mysql_field_name
+        * @see https://secure.php.net/mysql_field_name
         *
         * @param mixed $res A SQL result
         * @param int $n
@@ -142,7 +142,7 @@ class FakeDatabase extends Database {
 
        /**
         * Change the position of the cursor in a result object
-        * @see http://www.php.net/mysql_data_seek
+        * @see https://secure.php.net/mysql_data_seek
         *
         * @param mixed $res A SQL result
         * @param int $row
@@ -153,7 +153,7 @@ class FakeDatabase extends Database {
 
        /**
         * Get the last error number
-        * @see http://www.php.net/mysql_errno
+        * @see https://secure.php.net/mysql_errno
         *
         * @return int
         */
@@ -163,7 +163,7 @@ class FakeDatabase extends Database {
 
        /**
         * Get a description of the last error
-        * @see http://www.php.net/mysql_error
+        * @see https://secure.php.net/mysql_error
         *
         * @return string
         */
@@ -197,7 +197,7 @@ class FakeDatabase extends Database {
 
        /**
         * Get the number of rows affected by the last write query
-        * @see http://www.php.net/mysql_affected_rows
+        * @see https://secure.php.net/mysql_affected_rows
         *
         * @return int
         */
@@ -217,7 +217,7 @@ class FakeDatabase extends Database {
 
        /**
         * Returns a wikitext link to the DB's website, e.g.,
-        *   return "[http://www.mysql.com/ MySQL]";
+        *   return "[https://www.mysql.com/ MySQL]";
         * Should at least contain plain text, if for some reason
         * your database has no website.
         *
index 70c0ece..6d096c2 100644 (file)
@@ -24,7 +24,6 @@ class LinkRendererTest extends MediaWikiLangTestCase {
                        'wgScript' => '/w/index.php',
                ] );
                $this->factory = MediaWikiServices::getInstance()->getLinkRendererFactory();
-
        }
 
        public function testMergeAttribs() {
index f70b42d..47ed67b 100644 (file)
@@ -17,7 +17,6 @@ class ExifBitmapTest extends MediaWikiMediaTestCase {
                $this->setMwGlobals( 'wgShowEXIF', true );
 
                $this->handler = new ExifBitmapHandler;
-
        }
 
        /**
index 4cbeeb9..8284d05 100644 (file)
@@ -138,7 +138,6 @@ class SessionProviderTest extends MediaWikiTestCase {
                                $ex->getMessage()
                        );
                }
-
        }
 
        public function testHashToSessionId() {
index 3815416..e6a6ad3 100644 (file)
@@ -299,7 +299,6 @@ class SessionTest extends MediaWikiTestCase {
 
                $session->resetAllTokens();
                $this->assertArrayNotHasKey( 'wsTokenSecrets', $backend->data );
-
        }
 
        /**
index 145ffb3..f79f6e4 100644 (file)
@@ -57,17 +57,19 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
                $specialPageTestHelper = new SpecialPageTestHelper();
 
                return [
-                       'class name' => [ 'SpecialAllPages' ],
+                       'class name' => [ 'SpecialAllPages', false ],
                        'closure' => [ function () {
                                return new SpecialAllPages();
-                       } ],
-                       'function' => [ [ $this, 'newSpecialAllPages' ] ],
-                       'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages' ],
+                       }, false ],
+                       'function' => [ [ $this, 'newSpecialAllPages' ], false ],
+                       'callback string' => [ 'SpecialPageTestHelper::newSpecialAllPages', false ],
                        'callback with object' => [
-                               [ $specialPageTestHelper, 'newSpecialAllPages' ]
+                               [ $specialPageTestHelper, 'newSpecialAllPages' ],
+                               false
                        ],
                        'callback array' => [
-                               [ 'SpecialPageTestHelper', 'newSpecialAllPages' ]
+                               [ 'SpecialPageTestHelper', 'newSpecialAllPages' ],
+                               false
                        ]
                ];
        }
@@ -76,7 +78,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
         * @covers SpecialPageFactory::getPage
         * @dataProvider specialPageProvider
         */
-       public function testGetPage( $spec ) {
+       public function testGetPage( $spec, $shouldReuseInstance ) {
                $this->mergeMwGlobalArrayValue( 'wgSpecialPages', [ 'testdummy' => $spec ] );
                SpecialPageFactory::resetList();
 
@@ -84,7 +86,7 @@ class SpecialPageFactoryTest extends MediaWikiTestCase {
                $this->assertInstanceOf( 'SpecialPage', $page );
 
                $page2 = SpecialPageFactory::getPage( 'testdummy' );
-               $this->assertEquals( true, $page2 === $page, "Should re-use instance:" );
+               $this->assertEquals( $shouldReuseInstance, $page2 === $page, "Should re-use instance:" );
        }
 
        /**
index 061e598..c1083af 100644 (file)
@@ -22,7 +22,7 @@ class QueryAllSpecialPagesTest extends MediaWikiTestCase {
         * Pages whose query use the same DB table more than once.
         * This is used to skip testing those pages when run against a MySQL backend
         * which does not support reopening a temporary table. See upstream bug:
-        * http://bugs.mysql.com/bug.php?id=10327
+        * https://bugs.mysql.com/bug.php?id=10327
         */
        protected $reopensTempTable = [
                'BrokenRedirects',
@@ -51,7 +51,7 @@ class QueryAllSpecialPagesTest extends MediaWikiTestCase {
 
                foreach ( $this->queryPages as $page ) {
                        // With MySQL, skips special pages reopening a temporary table
-                       // See http://bugs.mysql.com/bug.php?id=10327
+                       // See https://bugs.mysql.com/bug.php?id=10327
                        if (
                                $wgDBtype === 'mysql'
                                && in_array( $page->getName(), $this->reopensTempTable )
index a44926b..6be272f 100644 (file)
@@ -349,7 +349,7 @@ class UploadBaseTest extends MediaWikiTestCase {
                        ],
                        [
                                // This currently doesn't seem to work in any browsers, but in case
-                               // http://www.w3.org/TR/css3-images/ is implemented for SVG files
+                               // https://www.w3.org/TR/css3-images/ is implemented for SVG files
                                '<svg xmlns="http://www.w3.org/2000/svg"> <rect width="100" height="100" style="background-image:image(\'sprites.svg#xywh=40,0,20,20\')"/> </svg>',
                                true,
                                true,
index 34548c0..199fc8f 100644 (file)
@@ -269,7 +269,6 @@ class UserTest extends MediaWikiTestCase {
                // let the user have a few (3) edits
                $page = WikiPage::factory( Title::newFromText( 'Help:UserTest_EditCount' ) );
                for ( $i = 0; $i < 3; $i++ ) {
-
                        $page->doEditContent(
                                ContentHandler::makeContent( (string)$i, $page->getTitle() ),
                                'test',
@@ -505,7 +504,6 @@ class UserTest extends MediaWikiTestCase {
        public function testGetId() {
                $user = static::getTestUser()->getUser();
                $this->assertTrue( $user->getId() > 0 );
-
        }
 
        /**
index 2049e38..bc5a6bd 100644 (file)
@@ -137,6 +137,8 @@ class ApiDocumentationTest extends MediaWikiTestCase {
 
                // Messages for examples.
                foreach ( $module->getExamplesMessages() as $qs => $msg ) {
+                       $this->assertStringStartsNotWith( 'api.php?', $qs,
+                               "Query string must not begin with 'api.php?'" );
                        $this->checkMessage( $msg, "Example $qs" );
                }
        }
index 86ce53f..2e6bf37 100644 (file)
@@ -91,7 +91,6 @@ class ResourcesTest extends MediaWikiTestCase {
         */
        public function testMissingMessages() {
                $data = self::getAllModules();
-               $validDeps = array_keys( $data['modules'] );
                $lang = Language::factory( 'en' );
 
                /** @var ResourceLoaderModule $module */
@@ -114,7 +113,6 @@ class ResourcesTest extends MediaWikiTestCase {
         */
        public function testUnsatisfiableDependencies() {
                $data = self::getAllModules();
-               $validDeps = array_keys( $data['modules'] );
 
                /** @var ResourceLoaderModule $module */
                foreach ( $data['modules'] as $moduleName => $module ) {
index 5a7fc48..5d5d693 100644 (file)
@@ -108,7 +108,7 @@ class ParserTestTopLevelSuite extends PHPUnit_Framework_TestSuite {
                        $testsName = $extensionName . '__' . basename( $fileName, '.txt' );
                        $parserTestClassName = ucfirst( $testsName );
 
-                       // Official spec for class names: http://php.net/manual/en/language.oop5.basic.php
+                       // Official spec for class names: https://secure.php.net/manual/en/language.oop5.basic.php
                        // Prepend 'ParserTest_' to be paranoid about it not starting with a number
                        $parserTestClassName = 'ParserTest_' .
                                preg_replace( '/[^a-zA-Z0-9_\x7f-\xff]/', '_', $parserTestClassName );
index 2d996ae..045b633 100644 (file)
@@ -10,6 +10,7 @@
                        'Mozilla/5.0 (Windows NT 6.1.1; rv:5.0) Gecko/20100101 Firefox/5.0',
                        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
                        'Mozilla/5.0 (Macintosh; I; Intel Mac OS X 11_7_9; de-LI; rv:1.9b4) Gecko/2012010317 Firefox/10.0a4',
+                       'Mozilla/5.0 (X11; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0',
                        'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20120403211507 Firefox/12.0',
                        'Mozilla/5.0 (Windows NT 6.2; Win64; x64; rv:16.0.1) Gecko/20121011 Firefox/16.0.1',
                        // Kindle Fire
@@ -46,6 +47,8 @@
                        'Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3B48b Safari/419.3',
                        // Android
                        'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17',
+                       // UC Mini (speed mode off)
+                       'Mozilla/5.0 (Linux; U; Android 6.0.1; en-US; Nexus_5 Build/MMB29S) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1 UCBrowser/10.7.6.805 Mobile',
 
                        /* Grade C */
 
                        // Google Glass
                        'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
                        // MeeGo
-                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13'
+                       'Mozilla/5.0 (MeeGo; NokiaN9) AppleWebKit/534.13 (KHTML, like Gecko) NokiaBrowser/8.5.0 Mobile Safari/534.13',
+                       // UC Mini (speed mode on)
+                       'Mozilla/5.0 (X11; U; Linux i686; zh-CN; r:1.2.3.4) Gecko/'
                ]
        };