Merge "CategorySelector: Add different ways of searching"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 23 Sep 2015 16:30:47 +0000 (16:30 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 23 Sep 2015 16:30:47 +0000 (16:30 +0000)
246 files changed:
.jscsrc
.mailmap
RELEASE-NOTES-1.26
autoload.php
composer.json
docs/extension.schema.json
docs/hooks.txt
includes/AuthPlugin.php
includes/DefaultSettings.php
includes/GlobalFunctions.php
includes/Preferences.php
includes/Setup.php
includes/User.php
includes/api/ApiImport.php
includes/api/ApiStashEdit.php
includes/api/i18n/de.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/fr.json
includes/api/i18n/he.json
includes/api/i18n/it.json
includes/api/i18n/ksh.json
includes/api/i18n/lb.json
includes/api/i18n/pl.json
includes/api/i18n/qqq.json
includes/api/i18n/zh-hant.json
includes/changes/RecentChange.php
includes/debug/logger/MonologSpi.php
includes/debug/logger/monolog/AvroFormatter.php [new file with mode: 0644]
includes/debug/logger/monolog/BufferHandler.php [new file with mode: 0644]
includes/debug/logger/monolog/KafkaHandler.php [new file with mode: 0644]
includes/deferred/DeferredUpdates.php
includes/deferred/LinksDeletionUpdate.php [new file with mode: 0644]
includes/deferred/LinksUpdate.php
includes/filebackend/FileBackendMultiWrite.php
includes/filebackend/FileBackendStore.php
includes/filebackend/MemoryFileBackend.php
includes/filebackend/lockmanager/LockManager.php
includes/installer/i18n/es.json
includes/installer/i18n/jut.json
includes/installer/i18n/nap.json
includes/installer/i18n/pt-br.json
includes/jobqueue/jobs/RefreshLinksJob.php
includes/libs/objectcache/WANObjectCache.php
includes/objectcache/MultiWriteBagOStuff.php
includes/objectcache/RedisBagOStuff.php
includes/page/Article.php
includes/page/ImagePage.php
includes/page/WikiPage.php
includes/registration/CoreVersionChecker.php [new file with mode: 0644]
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/registration/Processor.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderModule.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialImport.php
includes/specials/SpecialPasswordReset.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/upload/UploadBase.php
includes/upload/UploadFromUrl.php
includes/utils/AvroValidator.php [new file with mode: 0644]
languages/i18n/af.json
languages/i18n/am.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/as.json
languages/i18n/ast.json
languages/i18n/awa.json
languages/i18n/azb.json
languages/i18n/ba.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bn.json
languages/i18n/br.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/cs.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dsb.json
languages/i18n/dty.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fr.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hif-latn.json
languages/i18n/hr.json
languages/i18n/hrx.json
languages/i18n/hsb.json
languages/i18n/hu.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/jut.json
languages/i18n/jv.json
languages/i18n/ka.json
languages/i18n/kab.json
languages/i18n/kk-cyrl.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mr.json
languages/i18n/ms.json
languages/i18n/mt.json
languages/i18n/nah.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/nds-nl.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/oc.json
languages/i18n/olo.json
languages/i18n/or.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/ps.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/qu.json
languages/i18n/rm.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/sc.json
languages/i18n/scn.json
languages/i18n/sco.json
languages/i18n/ses.json
languages/i18n/sh.json
languages/i18n/si.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/ta.json
languages/i18n/te.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/ug-arab.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vi.json
languages/i18n/war.json
languages/i18n/wo.json
languages/i18n/yi.json
languages/i18n/yo.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
maintenance/jsduck/eg-iframe.html
resources/ResourcesOOUI.php
resources/lib/oojs-ui/i18n/ca.json
resources/lib/oojs-ui/i18n/el.json
resources/lib/oojs-ui/i18n/en-ca.json
resources/lib/oojs-ui/i18n/en.json
resources/lib/oojs-ui/i18n/fa.json
resources/lib/oojs-ui/i18n/it.json
resources/lib/oojs-ui/i18n/ka.json
resources/lib/oojs-ui/i18n/krc.json
resources/lib/oojs-ui/i18n/krl.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/olo.json [new file with mode: 0644]
resources/lib/oojs-ui/i18n/pt.json
resources/lib/oojs-ui/i18n/qqq.json
resources/lib/oojs-ui/i18n/vec.json
resources/lib/oojs-ui/i18n/vi.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/apex/images/icons/picture.png
resources/lib/oojs-ui/themes/apex/images/icons/picture.svg
resources/lib/oojs-ui/themes/apex/images/icons/table.png
resources/lib/oojs-ui/themes/apex/images/icons/table.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.svg
resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png
resources/lib/oojs-ui/themes/mediawiki/images/icons/table.svg
resources/src/jquery/jquery.byteLimit.js
resources/src/jquery/jquery.suggestions.js
resources/src/mediawiki.legacy/oldshared.css
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.messagePoster/mediawiki.messagePoster.MessagePoster.js
resources/src/mediawiki.special/mediawiki.special.css
resources/src/mediawiki.special/mediawiki.special.preferences.css
resources/src/mediawiki.special/mediawiki.special.search.css
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
resources/src/mediawiki/mediawiki.ForeignStructuredUpload.js
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.htmlform.js
resources/src/mediawiki/mediawiki.storage.js
tests/phpunit/includes/ConsecutiveParametersMatcher.php [new file with mode: 0644]
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/debug/logger/monolog/AvroFormatterTest.php [new file with mode: 0644]
tests/phpunit/includes/debug/logger/monolog/KafkaHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/logging/LogFormatterTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/registration/CoreVersionCheckerTest.php [new file with mode: 0644]
tests/phpunit/includes/utils/AvroValidatorTest.php [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js

diff --git a/.jscsrc b/.jscsrc
index aaa876c..46d98aa 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -7,6 +7,7 @@
        "disallowQuotedKeysInObjects": "allButReserved",
        "requireDotNotation": { "allExcept": [ "keywords" ] },
        "jsDoc": {
+               "checkRedundantReturns": true,
                "requireNewlineAfterDescription": true,
                "requireParamTypes": true,
                "requireReturnTypes": true
index 12ff31d..5c82af8 100644 (file)
--- a/.mailmap
+++ b/.mailmap
@@ -7,14 +7,25 @@ addshore <addshorewiki@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>
 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>
 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>
+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> <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>
 Arlo Breault <abreault@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@users.mediawiki.org>
 aude <aude.wiki@gmail.com>
 Audrey Tang <audreyt@audreyt.org>
 Audrey Tang <audreyt@audreyt.org> <au@localhost>
@@ -23,37 +34,56 @@ 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>
+Ben Hartshorne <bhartshorne@wikimedia.org> <ben@users.mediawiki.org>
 Bene <benestar.wikimedia@gmail.com>
+Benjamin Lees <emufarmers@gmail.com> <emufarmers@users.mediawiki.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>
+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>
 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 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>
 cenarium <cenarium.sysop@gmail.com>
 Chad Horohoe <chadh@wikimedia.org>
+Chad Horohoe <chadh@wikimedia.org> <demon@users.mediawiki.org>
+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 Williams <orbit@framezero.com>
 Christian Williams <orbit@framezero.com> <christian@localhost>
 Christian Williams <orbit@framezero.com> <christian@wikia-inc.com>
 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 Kinzler <daniel.kinzler@wikimedia.de>
 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> <dantman@users.mediawiki.org>
+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>
 David Chan <david@sheetmusic.org.uk>
+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>
+Emmanuel Engelhart <kelson@kiwix.org> <kelson42@users.mediawiki.org>
 eranroz <eranroz89@gmail.com>
 Erik Bernhardson <ebernhardson@wikimedia.org>
 Erik Moeller <erik@wikimedia.org>
@@ -61,8 +91,11 @@ Erik Moeller <erik@wikimedia.org> <erik@users.mediawiki.org>
 Erwin Dokter <erwin@darcoury.nl>
 Evan McIntire <mcintire.evan@gmail.com>
 Federico Leva <federicoleva@tiscali.it>
-Florianschmidtwelzow <florian.schmidt.welzow@t-online.de>
+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>
+Fran Rogers <fran@dumetella.net> <krimpet@users.mediawiki.org>
 FunPika <funpikawiki@gmail.com>
 Gabriel Wicke <gwicke@wikimedia.org>
 Gabriel Wicke <gwicke@wikimedia.org> <gwicke@users.mediawiki.org>
@@ -74,111 +107,183 @@ Giftpflanze <gifti@tools.wmflabs.org>
 Gilles Dubuc <gdubuc@wikimedia.org>
 gladoscc <admin@glados.cc>
 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>
+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@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>
+Ivan Lanin <ivanlanin@gmail.com> <ivanlanin@users.mediawiki.org>
+Jack Phoenix <jack@countervandalism.net> <ashley@users.mediawiki.org>
 Jack Phoenix <jack@countervandalism.net>
 Jackmcbarn <jackmcbarn@gmail.com>
 Jackmcbarn <jackmcbarn@users.noreply.github.com>
 jagori <jagori79@gmail.com>
 James D. Forrester <jforrester@wikimedia.org>
+Jan Gerber <j@thing.net> <j@users.mediawiki.org>
+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>
 Jaroslav Škarvada <jskarvad@redhat.com>
 jarrettmunton <jmuntjmunt@gmail.com>
+Jason Richey <jasonr@wikia.com> <jasonr@users.mediawiki.org>
 Jeff Hall <jeffreyehall@gmail.com>
 Jeff Hall <jeffreyehall@gmail.com> <jhall@wikimedia.org>
 Jeff Janes <jeff.janes@gmail.com>
-jeroendedauw <jeroendedauw@gmail.com>
+Jeremy Postlethwaite <jpostlethwaite@wikimedia.org> <jpostlethwaite@users.mediawiki.org>
+Jeroen De Dauw <jeroendedauw@gmail.com>
+Jeroen De Dauw <jeroendedauw@gmail.com> <jeroendedauw@users.mediawiki.org>
 Jesús Martínez Novo <martineznovo@gmail.com>
 Jiabao <jiabao.foss@gmail.com>
+Jimmy Collins <jimmy.collins@web.de> <collinj@users.mediawiki.org>
+John Du Hart <john@compwhizii.net> <johnduhart@users.mediawiki.org>
+Jon Harald Søby <jhsoby@gmail.com> <jhsoby@users.mediawiki.org>
 Jon Robson <jrobson@wikimedia.org>
 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> <freakolowsky@users.mediawiki.org>
+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>
+Kwan Ting Chan <ktc@ktchan.info> <ktchan@users.mediawiki.org>
 lekshmi <andnlnbn18@gmail.com>
+Leo Koppelkamm <diebuche@gmail.com> <diebuche@users.mediawiki.org>
+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>
+Lisa Ridley <lhridley@gmail.com> <lhridley@users.mediawiki.org>
 Ljudusika <plo2000@i.ua>
 Luis Felipe Schenone <schenonef@gmail.com>
 m4tx <m4tx@m4tx.pl>
+Magnus Manske <magnusmanske@googlemail.com> <magnusmanske@users.mediawiki.org>
+Manuel Schneider <manuel.schneider@wikimedia.ch> <80686@users.mediawiki.org>
+Marcin Cieślak <saper@saper.info> <saper@users.mediawiki.org>
 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 Holmquist <mtraceur@member.fsf.org>
 Marko Obrovac <mobrovac@wikimedia.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>
+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>
 mgooley <g0013y@gmail.com>
+Michael Dale <mdale@wikimedia.org> <dale@users.mediawiki.org>
 mjbmr <mjbmri@gmail.com>
+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>
 Mukunda Modell <mmodell@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>
+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>
+OverlordQ <wikipedia@thedarkcitadel.com> <overlordq@users.mediawiki.org>
 paladox <thomasmulhall410@yahoo.com>
+Patrick Reilly <preilly@wikimedia.org> <preilly@users.mediawiki.org>
 Patrick Westerhoff <PatrickWesterhoff@gmail.com>
+Paul Copperman <paul.copperman@gmail.com> <pcopp@users.mediawiki.org>
 Peter Coti <petercoti@gmail.com>
+Peter Potrowl <peter017@gmail.com> <peter17@users.mediawiki.org>
 Petr Kadlec <mormegil@centrum.cz>
+Philip Tzou <philip.npc@gmail.com> <philip@users.mediawiki.org>
 physikerwelt (Moritz Schubotz) <wiki@physikerwelt.de>
 PiRSquared17 <pirsquared@tools.wmflabs.org>
+Platonides <platonides@gmail.com> <platonides@users.mediawiki.org>
 PranavK <pranavmk98@gmail.com>
 Prateek Saxena <psaxena@wikimedia.org>
 Prateek Saxena <psaxena@wikimedia.org> <prtksxna@gmail.com>
-Purodha <purodha@blissenbach.org>
+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>
 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>
 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>
 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> <robla@users.mediawiki.org>
 Rob Moen <rmoen@mediawiki.org>
 Rob Moen <rmoen@mediawiki.org> <rmoen@users.mediawiki.org>
 Rob Moen <rmoen@mediawiki.org> <rmoen@wikimedia.org>
 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@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 Lane <rlane32@gmail.com> <laner@users.mediawiki.org>
+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@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>
 Schnark <listenleser@gmail.com>
 Scimonster <tehalmightyscimonster@gmail.com>
+Sean Colombo <sean.colombo@gmail.com> <sean_colombo@users.mediawiki.org>
 Sean Pringle <springle@wikimedia.org>
 Seb35 <seb35wikipedia@gmail.com>
 Sergio Santoro <santoro.srg@gmail.com>
 Shahyar <shahyar@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>
 Southparkfan <southparkfan223@hotmail.com>
+SQL <sxwiki@gmail.com> <sql@users.mediawiki.org>
 Stanislav Malyshev <smalyshev@gmail.com>
 Stephan Gambke <s7eph4n@gmail.com>
 Stephane Bisson <sbisson@wikimedia.org>
 Stephen Liang <github@stephenliang.pw>
+Steve Sanbeg <ffnaort@jro.qr> <sanbeg@users.mediawiki.org>
 Steven Roddis <StevenRoddis@users.noreply.github.com>
 Subramanya Sastry <ssastry@wikimedia.org>
 Sucheta Ghoshal <sghoshal@wikimedia.org>
@@ -188,12 +293,20 @@ TheDJ <hartman.wiki@gmail.com>
 Thiemo Mättig (WMDE) <thiemo.maettig@wikimedia.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>
+Thomas Dalton <thomas.dalton@gmail.com> <tango@users.mediawiki.org>
+Thomas Gries <mail@tgries.de> <wikinaut@users.mediawiki.org>
 Tim Landscheidt <tim@tim-landscheidt.de>
+Tim Laqua <t.laqua@gmail.com> <tlaqua@users.mediawiki.org>
 Tim Starling <tstarling@wikimedia.org>
+Tim Starling <tstarling@wikimedia.org> <tstarling@users.mediawiki.org>
 Timo Tijhof <krinklemail@gmail.com>
+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>
+Tom Maaswinkel <tom.maaswinkel@12wiki.eu> <thedevilonline@users.mediawiki.org>
+Tomasz Finc <tfinc@wikimedia.org> <tomasz@users.mediawiki.org>
 Tony Thomas <01tonythomas@gmail.com>
 Trevor Parscal <trevorparscal@gmail.com>
 Trevor Parscal <trevorparscal@gmail.com> <tparscal@users.mediawiki.org>
@@ -201,13 +314,20 @@ Trevor Parscal <trevorparscal@gmail.com> <tparscal@wikimedia.org>
 Tyler Cipriani <tcipriani@wikimedia.org>
 Tyler Romeo <tylerromeo@gmail.com>
 umherirrender <umherirrender_de.wp@web.de>
+Victor Vasiliev <vasilvv@mit.edu> <vasilievvv@users.mediawiki.org>
 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>
 Yaroslav Melnychuk <yaroslavmelnuchuk@gmail.com>
 Yuri Astrakhan <yurik@wikimedia.org>
+Yuri Astrakhan <yurik@wikimedia.org> <yurik@users.mediawiki.org>
 Yusuke Matsubara <whym@whym.org>
 YuviPanda <yuvipanda@gmail.com>
+Zak Greant <zak+mediawiki@fooassociates.com> <zak@users.mediawiki.org>
+Ævar Arnfjörð Bjarmason <avarab@gmail.com> <avar@users.mediawiki.org>
 Ž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>
index 13239de..47c751e 100644 (file)
@@ -30,6 +30,17 @@ production.
 * Custom LESS functions (defined via $wgResourceLoaderLESSFunctions)
   have been removed, after being deprecated in 1.24.
 * $wgAlwaysUseTidy has been removed.
+* ResetSessionID hook has been removed. Nothing seems to use it.
+* Certain AuthPlugin methods are deprecated in favor of new hooks:
+** AuthPlugin::initUser() is replaced by LocalUserCreated.
+** AuthPlugin::updateUser() is replaced by UserLoggedIn.
+** AuthPlugin::updateExternalDB() is replaced by the existing UserSaveSettings.
+** AuthPlugin::updateExternalDBGroups() is replaced by UserGroupsChanged.
+** AuthPluginUser::isHidden() is replaced by UserIsHidden.
+** AuthPluginUser::isLocked() is replaced by UserIsLocked.
+* The UserRights hook is deprecated in favor of the new UserGroupsChanged hook.
+* AuthPlugin::initUser() and AuthPlugin::updateUser() should no longer replace
+  the passed User object.
 
 === New features in 1.26 ===
 * (T51506) Now action=info gives estimates of actual watchers for a page.
@@ -188,6 +199,8 @@ changes to languages because of Phabricator reports.
   are deprecated. Applications using those can work via the OAuth
   extension instead. New tokens types should not be added.
 * DatabaseBase::errorCount() was removed (unused).
+* $wgDeferredUpdateList was removed.
+* DeferredUpdates::addHTMLCacheUpdate() was removed.
 
 == Compatibility ==
 
index 5adfbe5..4bed014 100644 (file)
@@ -149,6 +149,7 @@ $wgAutoloadLocalClasses = array(
        'AutoLoader' => __DIR__ . '/includes/AutoLoader.php',
        'AutoloadGenerator' => __DIR__ . '/includes/utils/AutoloadGenerator.php',
        'Autopromote' => __DIR__ . '/includes/Autopromote.php',
+       'AvroValidator' => __DIR__ . '/includes/utils/AvroValidator.php',
        'BacklinkCache' => __DIR__ . '/includes/cache/BacklinkCache.php',
        'BacklinkJobUtils' => __DIR__ . '/includes/jobqueue/utils/BacklinkJobUtils.php',
        'BackupDumper' => __DIR__ . '/maintenance/backup.inc',
@@ -273,6 +274,7 @@ $wgAutoloadLocalClasses = array(
        'CopyJobQueue' => __DIR__ . '/maintenance/copyJobQueue.php',
        'CoreParserFunctions' => __DIR__ . '/includes/parser/CoreParserFunctions.php',
        'CoreTagHooks' => __DIR__ . '/includes/parser/CoreTagHooks.php',
+       'CoreVersionChecker' => __DIR__ . '/includes/registration/CoreVersionChecker.php',
        'CreateAndPromote' => __DIR__ . '/maintenance/createAndPromote.php',
        'CreateFileOp' => __DIR__ . '/includes/filebackend/FileOp.php',
        'CreditsAction' => __DIR__ . '/includes/actions/CreditsAction.php',
@@ -677,7 +679,7 @@ $wgAutoloadLocalClasses = array(
        'LinkHolderArray' => __DIR__ . '/includes/parser/LinkHolderArray.php',
        'LinkSearchPage' => __DIR__ . '/includes/specials/SpecialLinkSearch.php',
        'Linker' => __DIR__ . '/includes/Linker.php',
-       'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php',
+       'LinksDeletionUpdate' => __DIR__ . '/includes/deferred/LinksDeletionUpdate.php',
        'LinksUpdate' => __DIR__ . '/includes/deferred/LinksUpdate.php',
        'ListDuplicatedFilesPage' => __DIR__ . '/includes/specials/SpecialListDuplicatedFiles.php',
        'ListVariants' => __DIR__ . '/maintenance/language/listVariants.php',
@@ -753,6 +755,9 @@ $wgAutoloadLocalClasses = array(
        'MediaWiki\\Logger\\LegacySpi' => __DIR__ . '/includes/debug/logger/LegacySpi.php',
        'MediaWiki\\Logger\\LoggerFactory' => __DIR__ . '/includes/debug/logger/LoggerFactory.php',
        'MediaWiki\\Logger\\MonologSpi' => __DIR__ . '/includes/debug/logger/MonologSpi.php',
+       'MediaWiki\\Logger\\Monolog\\AvroFormatter' => __DIR__ . '/includes/debug/logger/monolog/AvroFormatter.php',
+       'MediaWiki\\Logger\\Monolog\\BufferHandler' => __DIR__ . '/includes/debug/logger/monolog/BufferHandler.php',
+       'MediaWiki\\Logger\\Monolog\\KafkaHandler' => __DIR__ . '/includes/debug/logger/monolog/KafkaHandler.php',
        'MediaWiki\\Logger\\Monolog\\LegacyFormatter' => __DIR__ . '/includes/debug/logger/monolog/LegacyFormatter.php',
        'MediaWiki\\Logger\\Monolog\\LegacyHandler' => __DIR__ . '/includes/debug/logger/monolog/LegacyHandler.php',
        'MediaWiki\\Logger\\Monolog\\LineFormatter' => __DIR__ . '/includes/debug/logger/monolog/LineFormatter.php',
index a1987cc..e41b6c7 100644 (file)
                "wiki": "https://www.mediawiki.org/"
        },
        "require": {
+               "composer/semver": "0.1.0",
                "cssjanus/cssjanus": "1.1.1",
                "ext-iconv": "*",
                "liuggio/statsd-php-client": "1.0.16",
                "oyejorge/less.php": "1.7.0.5",
                "mediawiki/at-ease": "1.1.0",
-               "oojs/oojs-ui": "0.12.8.1",
+               "oojs/oojs-ui": "0.12.9",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/assert": "0.2.2",
                "jakub-onderka/php-parallel-lint": "0.9",
                "justinrainbow/json-schema": "~1.3",
                "phpunit/phpunit": "3.7.37",
-               "mediawiki/mediawiki-codesniffer": "0.3.0"
+               "mediawiki/mediawiki-codesniffer": "0.3.0",
+               "wikimedia/avro": "1.7.7",
+               "nmred/kafka-php": "0.1.4",
+               "monolog/monolog": "1.14.0"
        },
        "suggest": {
                "ext-fileinfo": "Improved mime magic detection",
                "ext-wikidiff2": "Diff accelerator",
                "ext-apc": "Local data and opcode cache",
                "monolog/monolog": "Flexible debug logging system",
+               "nmred/kafka-php": "Send debug log events to kafka",
                "pear/mail": "Mail sending support",
                "pear/mail_mime": "Mail sending support",
-               "pear/mail_mime-decode": "Mail sending support"
+               "pear/mail_mime-decode": "Mail sending support",
+               "wikimedia/avro": "Binary serialization format used with kafka"
        },
        "autoload": {
                "psr-0": {
index d11635d..218a19c 100644 (file)
                                "Unlicense"
                        ]
                },
+               "requires": {
+                       "type": "object",
+                       "description": "Indicates what versions of MediaWiki core are required. This syntax may be extended in the future, for example to check dependencies between other extensions.",
+                       "properties": {
+                               "MediaWiki": {
+                                       "type": "string",
+                                       "description": "Version constraint string against MediaWiki core."
+                               }
+                       }
+               },
                "ResourceFileModulePaths": {
                        "type": "object",
                        "description": "Default paths to use for all ResourceLoader file modules",
index b7f31cb..9aa2964 100644 (file)
@@ -1272,20 +1272,21 @@ $user: User being checked
 $confirmed: Whether or not the email address is confirmed
 
 'EmailUser': Before sending email from one user to another.
-$to: address of receiving user
-$from: address of sending user
+$to: MailAddress object of receiving user
+$from: MailAddress object of sending user
 $subject: subject of the mail
 $text: text of the mail
+&$error: Out-param for an error
 
 'EmailUserCC': Before sending the copy of the email to the author.
-$to: address of receiving user
-$from: address of sending user
+$to: MailAddress object of receiving user
+$from: MailAddress object of sending user
 $subject: subject of the mail
 $text: text of the mail
 
 'EmailUserComplete': After sending email from one user to another.
-$to: address of receiving user
-$from: address of sending user
+$to: MailAddress object of receiving user
+$from: MailAddress object of sending user
 $subject: subject of the mail
 $text: text of the mail
 
@@ -1632,6 +1633,11 @@ Return false to stop further processing of the tag
 $reader: XMLReader object
 $revisionInfo: Array of information
 
+'ImportSources': Called when reading from the $wgImportSources configuration
+variable. Can be used to lazy-load the import sources list.
+&$importSources: The value of $wgImportSources. Modify as necessary. See the
+comment in DefaultSettings.php for the detail of how to structure this array.
+
 'InfoAction': When building information to display on the action=info page.
 $context: IContextSource object
 &$pageInfo: Array of information
@@ -1845,6 +1851,10 @@ optional localisation messages
 &$ignored: Array of ignored message keys
 &$optional: Array of optional message keys
 
+'LocalUserCreated': Called when a local user has been created
+$user: User object for the created user
+$autocreated: Boolean, whether this was an auto-creation
+
 'LogEventsListGetExtraInputs': When getting extra inputs to display on
 Special:Log for a specific log type
 $type: String of log type being displayed
@@ -2180,6 +2190,7 @@ which depends on user options should install this hook and append its values to
 the key.
 &$confstr: reference to a hash key string which can be modified
 $user: User (object) requesting the page
+&$forOptions: array of options the hash is for
 
 'PageViewUpdates': Allow database (or other) changes to be made after a
 page view is seen by MediaWiki.  Note this does not capture views made
@@ -2448,10 +2459,6 @@ $context: (IContextSource) The RequestContext the skin is being created for.
 $user: The user having their password expiration reset
 &$newExpire: The new expiration date
 
-'ResetSessionID': Called from wfResetSessionID
-$oldSessionID: old session id
-$newSessionID: new session id
-
 'ResourceLoaderForeignApiModules': Called from ResourceLoaderForeignApiModule.
 Use this to add dependencies to 'mediawiki.ForeignApi' module when you wish
 to override its behavior. See the module docs for more information.
@@ -3109,7 +3116,9 @@ $descriptor: (array) the HTMLForm descriptor
 
 'UploadFormSourceDescriptors': after the standard source inputs have been
 added to the descriptor
-$descriptor: (array) the HTMLForm descriptor
+&$descriptor: (array) the HTMLForm descriptor
+&$radio: Boolean, if source type should be shown as radio button
+$selectedSourceType: The selected source type
 
 'UploadVerification': Additional chances to reject an uploaded file. Consider
 using UploadVerifyFile instead.
@@ -3204,6 +3213,12 @@ $context: IContextSource object
 $user: User to get rights for
 &$rights: Current rights
 
+'UserGroupsChanged': Called after user groups are changed.
+$user: User whose groups changed
+$added: Groups added
+$removed: Groups removed
+$performer: User who performed the change, false if via autopromotion
+
 'UserIsBlockedFrom': Check if a user is blocked from a specific page (for
 specific block exemptions).
 $user: User in question
@@ -3221,6 +3236,14 @@ $ip: User's IP address
 false if a UserGetRights hook might remove the named right.
 $right: The user right being checked
 
+'UserIsHidden': Check if the user's name should be hidden. See User::isHidden().
+$user: User in question.
+&$hidden: Set true if the user's name should be hidden.
+
+'UserIsLocked': Check if the user is locked. See User::isLocked().
+$user: User in question.
+&$locked: Set true if the user should be locked.
+
 'UserLoadAfterLoadFromSession': Called to authenticate users on external or
 environmental means; occurs after session is loaded.
 $user: user object being loaded
@@ -3244,6 +3267,9 @@ database.
 $user: User object
 &$options: Options, can be modified.
 
+'UserLoggedIn': Called after a user is logged in
+$user: User object for the logged-in user
+
 'UserLoginComplete': After a user has logged in.
 $user: the user object that was created on login
 $inject_html: Any HTML to inject after the "logged in" message.
@@ -3289,8 +3315,9 @@ message(s).
 $user: user retrieving new talks messages
 $talks: array of new talks page(s)
 
-'UserRights': After a user's group memberships are changed.
-$user: User object that was changed
+'UserRights': DEPRECATED! Use UserGroupsChanged instead.
+After a user's group memberships are changed.
+&$user: User object that was changed
 $add: Array of strings corresponding to groups added
 $remove: Array of strings corresponding to groups removed
 
index 45ad4d1..badf47c 100644 (file)
@@ -120,6 +120,8 @@ class AuthPlugin {
         * The User object is passed by reference so it can be modified; don't
         * forget the & on your function declaration.
         *
+        * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning
+        *  a different User object to $user is no longer supported.
         * @param User $user
         * @return bool
         */
@@ -204,6 +206,7 @@ class AuthPlugin {
         * Update user information in the external authentication database.
         * Return true if successful.
         *
+        * @deprecated since 1.26, use the UserSaveSettings hook instead.
         * @param User $user
         * @return bool
         */
@@ -215,6 +218,7 @@ class AuthPlugin {
         * Update user groups in the external authentication database.
         * Return true if successful.
         *
+        * @deprecated since 1.26, use the UserGroupsChanged hook instead.
         * @param User $user
         * @param array $addgroups Groups to add.
         * @param array $delgroups Groups to remove.
@@ -278,6 +282,8 @@ class AuthPlugin {
         * The User object is passed by reference so it can be modified; don't
         * forget the & on your function declaration.
         *
+        * @deprecated since 1.26, use the UserLoggedIn hook instead. And assigning
+        *  a different User object to $user is no longer supported.
         * @param User $user
         * @param bool $autocreate True if user is being autocreated on login
         */
@@ -326,11 +332,21 @@ class AuthPluginUser {
                return -1;
        }
 
+       /**
+        * Indicate whether the user is locked
+        * @deprecated since 1.26, use the UserIsLocked hook instead.
+        * @return bool
+        */
        public function isLocked() {
                # Override this!
                return false;
        }
 
+       /**
+        * Indicate whether the user is hidden
+        * @deprecated since 1.26, use the UserIsHidden hook instead.
+        * @return bool
+        */
        public function isHidden() {
                # Override this!
                return false;
index 37429b9..c5fdbac 100644 (file)
@@ -6363,8 +6363,8 @@ $wgShowCreditsIfMax = true;
 
 /**
  * List of interwiki prefixes for wikis we'll accept as sources for
- * Special:Import (for sysops). Since complete page history can be imported,
- * these should be 'trusted'.
+ * Special:Import and API action=import. Since complete page history can be
+ * imported, these should be 'trusted'.
  *
  * This can either be a regular array, or an associative map specifying
  * subprojects on the interwiki map of the target wiki, or a mix of the two,
@@ -6377,6 +6377,9 @@ $wgShowCreditsIfMax = true;
  *     );
  * @endcode
  *
+ * If you have a very complex import sources setup, you can lazy-load it using
+ * the ImportSources hook.
+ *
  * If a user has the 'import' permission but not the 'importupload' permission,
  * they will only be able to run imports through this transwiki interface.
  */
index f2e37d5..486926f 100644 (file)
@@ -3216,6 +3216,7 @@ function wfUsePHP( $req_ver ) {
  *
  * @see perldoc -f use
  *
+ * @deprecated since 1.26, use the "requires' property of extension.json
  * @param string|int|float $req_ver The version to check, can be a string, an integer, or a float
  * @throws MWException
  */
@@ -3466,7 +3467,6 @@ function wfResetSessionID() {
                $_SESSION = $tmp;
        }
        $newSessionId = session_id();
-       Hooks::run( 'ResetSessionID', array( $oldSessionId, $newSessionId ) );
 }
 
 /**
index 248b308..d0475c1 100644 (file)
@@ -1433,10 +1433,10 @@ class Preferences {
                        }
 
                        Hooks::run( 'PreferencesFormPreSave', array( $formData, $form, $user, &$result ) );
-                       $user->saveSettings();
                }
 
                $wgAuth->updateExternalDB( $user );
+               $user->saveSettings();
 
                return $result;
        }
index 479ce8c..e79d13c 100644 (file)
@@ -681,12 +681,6 @@ if ( !is_object( $wgAuth ) ) {
  */
 $wgTitle = null;
 
-/**
- * @deprecated since 1.24 Use DeferredUpdates::addUpdate instead
- * @var array
- */
-$wgDeferredUpdateList = array();
-
 Profiler::instance()->scopedProfileOut( $ps_globals );
 $ps_extensions = Profiler::instance()->scopedProfileIn( $fname . '-extensions' );
 
index 6df41ee..22c90cd 100644 (file)
@@ -1430,8 +1430,8 @@ class User implements IDBAccessObject {
                foreach ( $toPromote as $group ) {
                        $this->addGroup( $group );
                }
-
                // update groups in external authentication database
+               Hooks::run( 'UserGroupsChanged', array( $this, $toPromote, array(), false ) );
                $wgAuth->updateExternalDBGroups( $this, $toPromote );
 
                $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
@@ -1993,6 +1993,7 @@ class User implements IDBAccessObject {
                global $wgAuth;
                $authUser = $wgAuth->getUserInstance( $this );
                $this->mLocked = (bool)$authUser->isLocked();
+               Hooks::run( 'UserIsLocked', array( $this, &$this->mLocked ) );
                return $this->mLocked;
        }
 
@@ -2010,6 +2011,7 @@ class User implements IDBAccessObject {
                        global $wgAuth;
                        $authUser = $wgAuth->getUserInstance( $this );
                        $this->mHideName = (bool)$authUser->isHidden();
+                       Hooks::run( 'UserIsHidden', array( $this, &$this->mHideName ) );
                }
                return $this->mHideName;
        }
index 735cc7f..a6aae4b 100644 (file)
@@ -92,6 +92,30 @@ class ApiImport extends ApiBase {
                $result->addValue( null, $this->getModuleName(), $resultData );
        }
 
+       /**
+        * Returns a list of interwiki prefixes corresponding to each defined import
+        * source.
+        *
+        * @return array
+        * @since 1.26
+        */
+       public function getAllowedImportSources() {
+               $importSources = $this->getConfig()->get( 'ImportSources' );
+               Hooks::run( 'ImportSources', array( &$importSources ) );
+
+               $result = array();
+               foreach ( $importSources as $key => $value ) {
+                       if ( is_int( $key ) ) {
+                               $result[] = $value;
+                       } else {
+                               foreach ( $value as $subproject ) {
+                                       $result[] = "$key:$subproject";
+                               }
+                       }
+               }
+               return $result;
+       }
+
        public function mustBePosted() {
                return true;
        }
@@ -107,7 +131,7 @@ class ApiImport extends ApiBase {
                                ApiBase::PARAM_TYPE => 'upload',
                        ),
                        'interwikisource' => array(
-                               ApiBase::PARAM_TYPE => $this->getConfig()->get( 'ImportSources' ),
+                               ApiBase::PARAM_TYPE => $this->getAllowedImportSources(),
                        ),
                        'interwikipage' => null,
                        'fullhistory' => false,
index a66b356..e87fc97 100644 (file)
@@ -20,7 +20,7 @@
  */
 
 /**
- * Prepare and edit in shared cache so that it can be reused on edit
+ * Prepare an edit in shared cache so that it can be reused on edit
  *
  * This endpoint can be called via AJAX as the user focuses on the edit
  * summary box. By the time of submission, the parse may have already
index 98e1c10..8737f7f 100644 (file)
        "apihelp-query+tags-description": "Änderungs-Tags auflisten.",
        "apihelp-query+tags-example-simple": "Verfügbare Tags auflisten",
        "apihelp-query+usercontribs-description": "Alle Bearbeitungen von einem Benutzer abrufen.",
+       "apihelp-query+usercontribs-param-limit": "Die maximale Anzahl der zurückzugebenden Beiträge.",
+       "apihelp-query+usercontribs-param-start": "Der zurückzugebende Start-Zeitstempel.",
+       "apihelp-query+usercontribs-param-end": "Der zurückzugebende End-Zeitstempel.",
+       "apihelp-query+usercontribs-param-user": "Die Benutzer, für die Beiträge abgerufen werden sollen.",
        "apihelp-query+usercontribs-paramvalue-prop-ids": "Ergänzt die Seiten- und Versionskennung.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Ergänzt den Zeitstempel der Bearbeitung.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Ergänzt den Kommentar der Bearbeitung.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Ergänzt den Bearbeitungszähler des aktuellen Benutzers.",
        "apihelp-query+userinfo-paramvalue-prop-realname": "Fügt den bürgerlichen Namen des Benutzers hinzu.",
        "apihelp-query+userinfo-example-simple": "Informationen über den aktuellen Benutzer abrufen",
        "apihelp-query+users-description": "Informationen über eine Liste von Benutzern abrufen.",
+       "apihelp-query+users-example-simple": "Gibt Informationen für den Benutzer <kbd>Example</kbd> zurück.",
        "apihelp-rsd-description": "Ein RSD-Schema (Really Simple Discovery) exportieren.",
        "apihelp-rsd-example-simple": "Das RSD-Schema exportieren",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "An allen beobachteten Seiten arbeiten.",
index 173598f..78f0568 100644 (file)
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Set the notification timestamp for <kbd>Main page</kbd> so all edits since 1 January 2012 are unviewed.",
        "apihelp-setnotificationtimestamp-example-allpages": "Reset the notification status for pages in the <kbd>{{ns:user}}</kbd> namespace.",
 
+       "apihelp-stashedit-description": "Prepare an edit in shared cache.\n\nThis is intended to be used via AJAX from the edit form to improve the performance of the page save.",
+       "apihelp-stashedit-param-title": "Title of the page being edited.",
+       "apihelp-stashedit-param-section": "Section number. <kbd>0</kbd> for the top section, <kbd>new</kbd> for a new section.",
+       "apihelp-stashedit-param-sectiontitle": "The title for a new section.",
+       "apihelp-stashedit-param-text": "Page content.",
+       "apihelp-stashedit-param-contentmodel": "Content model of the new content.",
+       "apihelp-stashedit-param-contentformat": "Content serialization format used for the input text.",
+       "apihelp-stashedit-param-baserevid": "Revision ID of the base revision.",
+
        "apihelp-tag-description": "Add or remove change tags from individual revisions or log entries.",
        "apihelp-tag-param-rcid": "One or more recent changes IDs from which to add or remove the tag.",
        "apihelp-tag-param-revid": "One or more revision IDs from which to add or remove the tag.",
index 06478f6..a9c04d0 100644 (file)
@@ -77,7 +77,7 @@
        "apihelp-edit-description": "Crear y editar páginas.",
        "apihelp-edit-param-title": "Título de la página a editar. No se puede utilizar junto a <var>$1pageid</var>.",
        "apihelp-edit-param-pageid": "ID de la página a editar. No se puede utilizar junto a <var>$1title</var>.",
-       "apihelp-edit-param-section": "Número de la sección. <kbd>0</kbd> para una sección superior, <kbd>nuevo</kbd> para una nueva sección.",
+       "apihelp-edit-param-section": "Número de la sección. <kbd>0</kbd> para una sección superior, <kbd>new</kbd> para una sección nueva.",
        "apihelp-edit-param-sectiontitle": "El título de una sección nueva.",
        "apihelp-edit-param-text": "Contenido de la página.",
        "apihelp-edit-param-summary": "Editar resumen. Además de la sección del título cuando $1section=new y $1sectiontitle no están establecidos.",
        "apihelp-revisiondelete-param-show": "Qué mostrar en cada revisión.",
        "apihelp-revisiondelete-param-reason": "Motivo de la eliminación o restauración.",
        "apihelp-rollback-param-summary": "Resumen de edición personalizado. Si se deja vacío se utilizará el predeterminado.",
+       "apihelp-stashedit-param-title": "Título de la página que se está editando.",
+       "apihelp-stashedit-param-section": "Número de la sección. <kbd>0</kbd> para una sección superior, <kbd>new</kbd> para una sección nueva.",
+       "apihelp-stashedit-param-sectiontitle": "El título de una sección nueva.",
+       "apihelp-stashedit-param-text": "Contenido de la página.",
+       "apihelp-stashedit-param-contentformat": "Formato de serialización de contenido utilizado para el texto de entrada.",
+       "apihelp-stashedit-param-baserevid": "Identificador de la revisión de base.",
        "apihelp-tag-param-logid": "Uno o más identificadores de entradas del registro a los que agregar o eliminar la etiqueta.",
        "apihelp-tag-param-reason": "Motivo del cambio.",
        "apihelp-tag-example-rev": "Añadir la etiqueta <kbd>vandalism</kbd> al identificador de revisión 123 sin especificar un motivo",
index 7e3c65c..8d4bd0c 100644 (file)
        "apihelp-setnotificationtimestamp-example-page": "Réinitialiser l’état de notification pour la <kbd>Page principale<kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "Fixer l’horodatage de notification pour <kbd>Page principale</kbd> afin que toutes les modifications depuis le 1 janvier 2012 soient non vues",
        "apihelp-setnotificationtimestamp-example-allpages": "Réinitialiser l’état de notification sur les pages dans l’espace de noms <kbd>{{ns:user}}</kbd>.",
+       "apihelp-stashedit-description": "Préparer une modification dans le cache partagé.\n\nCeci a pour but d’être utilisé via AJAX depuis le formulaire d’édition pour améliorer la performance de la sauvegarde de la page.",
+       "apihelp-stashedit-param-title": "Titre de la page en cours de modification.",
+       "apihelp-stashedit-param-section": "Numéro de section. <kbd>0</kbd> pour la section du haut, <kbd>new</kbd> pour une nouvelle section.",
+       "apihelp-stashedit-param-sectiontitle": "Le titre pour une nouvelle section.",
+       "apihelp-stashedit-param-text": "Contenu de la page.",
+       "apihelp-stashedit-param-contentmodel": "Modèle de contenu du nouveau contenu.",
+       "apihelp-stashedit-param-contentformat": "Format de sérialisation de contenu utilisé pour le texte saisi.",
+       "apihelp-stashedit-param-baserevid": "ID de révision de la révision de base.",
        "apihelp-tag-description": "Ajouter ou enlever des balises de modification aux révisions ou ou aux entrées de journal individuelles.",
        "apihelp-tag-param-rcid": "Un ou plus IDs de modification récente à partir desquels ajouter ou supprimer la balise.",
        "apihelp-tag-param-revid": "Un ou plus IDs de révision à partir desquels ajouter ou supprimer la balise.",
index 5cd1d94..cb29d8c 100644 (file)
        "apihelp-setnotificationtimestamp-example-page": "אתחול מצב ההודעה עבור <kbd>Main Page</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "הגדרת חותם־הזמן להודעה ל־<kbd>Main page</kbd> כך שכל העריכות מאז 1 בינואר 2012 מוגדרות בתור כאלה שלא נצפו.",
        "apihelp-setnotificationtimestamp-example-allpages": "אתחול מצב ההודעה עבור דפים במרחב השם <kbd>{{ns:user}}</kbd>.",
+       "apihelp-stashedit-description": "הכנת עריכה במטמון משותף.\n\nזה מיועד לשימוש דרך AJAX מתוך ערך כדי לשפר את הביצועים של שמירת הדף.",
+       "apihelp-stashedit-param-title": "כותרת הדף הנערך.",
+       "apihelp-stashedit-param-section": "מספר הפסקה. <kbd>0</kbd> עבור הפסקה הראשונה, <kbd>new</kbd> עבור פסקה חדשה.",
+       "apihelp-stashedit-param-sectiontitle": "כותרת הפסקה החדשה.",
+       "apihelp-stashedit-param-text": "תוכן הדף.",
+       "apihelp-stashedit-param-contentmodel": "מודל התוכן של התוכן החדש.",
+       "apihelp-stashedit-param-contentformat": "תסדיר הסדרת תוכן עבור טקסט הקלט.",
+       "apihelp-stashedit-param-baserevid": "מזהה גסה של גרסת הבסיס.",
        "apihelp-tag-description": "הוספת או הסרה של תגים מגרסאות בודדות או עיולי יומן בודדים.",
        "apihelp-tag-param-rcid": "מזהה שינוי אחרון אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
        "apihelp-tag-param-revid": "מזהה גרסה אחד או יותר שתג יתווסף אליה או יוסר ממנה.",
index 5c4c55e..90be9e2 100644 (file)
@@ -7,7 +7,8 @@
                        "Gianfranco",
                        "Alexmar983",
                        "Ricordisamoa",
-                       "Valepert"
+                       "Valepert",
+                       "Sannita"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentazione (in inglese)]]\n* [[mw:API:FAQ|FAQ (in inglese)]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mailing list]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annunci sull'API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bug & richieste]\n</div>\n<strong>Stato:</strong> Tutte le funzioni e caratteristiche mostrate su questa pagina dovrebbero funzionare, ma l'API è ancora in fase d'attivo sviluppo, e potrebbe cambiare in qualsiasi momenento. Iscriviti alla [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce mailing list] per essere informato sugli aggiornamenti.\n\n<strong>Istruzioni sbagliate:</strong> quando vengono impartite all'API delle istruzioni sbagliate, un'intestazione HTTP verrà inviata col messaggio \"MediaWiki-API-Error\" e sia al valore dell'intestazione sia al codice d'errore verrà impostato lo stesso valore. Per maggiori informazioni leggi [[mw:API:Errors_and_warnings|API:Errori ed avvertimenti (in inglese)]].",
        "apihelp-edit-param-unwatch": "Rimuovi la pagina dagli Osservati Speciali dell'utente corrente.",
        "apihelp-edit-example-edit": "Modifica una pagina.",
        "apihelp-emailuser-description": "Manda un'e-mail ad un utente.",
+       "apihelp-emailuser-param-target": "Utente a cui inviare l'e-mail.",
+       "apihelp-emailuser-param-subject": "Oggetto dell'e-mail.",
+       "apihelp-emailuser-param-text": "Testo dell'e-mail.",
        "apihelp-emailuser-param-ccme": "Mandami una copia di questa mail.",
+       "apihelp-emailuser-example-email": "Manda una e-mail all'utente <kbd>WikiSysop</kbd> con il testo <kbd>Contenuto</kbd>",
        "apihelp-expandtemplates-description": "Espandi tutti i template nel wikitesto.",
        "apihelp-expandtemplates-param-title": "Titolo della pagina.",
        "apihelp-expandtemplates-param-text": "Wikitesto da convertire.",
@@ -94,6 +99,8 @@
        "apihelp-feedrecentchanges-param-hideanons": "Nascondi le modifiche fatte da utenti anonimi.",
        "apihelp-feedrecentchanges-param-hideliu": "Nascondi le modifiche apportate dagli utenti registrati.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostra solo le modifiche alle pagine collegate a quella specificata.",
+       "apihelp-feedrecentchanges-example-simple": "Mostra le ultime modifiche.",
+       "apihelp-feedrecentchanges-example-30days": "Mostra le modifiche degli ultimi 30 giorni.",
        "apihelp-login-param-name": "Nome utente.",
        "apihelp-login-param-password": "Password.",
        "apihelp-move-description": "Sposta una pagina.",
index 46ef968..4e0c006 100644 (file)
        "apihelp-rollback-param-title": "De Övverschreff vun dä Sigg för di_j_en vörrejje Väsjohn zeröckzeholle es. Kam_mer nit zersamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1pageid</var>“ bruche.",
        "apihelp-rollback-param-pageid": "De Kännong vun dä Sigg för di_j_en vörrejje Väsjohn zeröckzeholle es. Kam_mer nit zersamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1title</var>“ bruche.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Donn alle Sigge beärbeide, di en Oppaßleßte dren sin.",
+       "apihelp-stashedit-param-section": "Däm Affschnett sing Nommer. „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr>0</kbd>“ brängk der eezde Affschnett, dä keijn Övverschreff hät, „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr>new</kbd>“ brängg_ene neuje Affschnett.",
+       "apihelp-stashedit-param-sectiontitle": "De Övverschreff för ene neuje Afschnett",
+       "apihelp-stashedit-param-text": "Dä Sigg ehre Ennhalld.",
        "apihelp-tag-description": "Donn Makkehronge vun einzel Väsjohne udder Enndraähsch em Logbohch fott nämme udder se verjävve.",
        "apihelp-tag-param-rcid": "Ein udder mih Kännonge uß de neuste Ännderonge, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
        "apihelp-tag-param-revid": "Ein Kännong udder mih, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
index c0fe740..89bed36 100644 (file)
        "apihelp-revisiondelete-description": "Versioune läschen a restauréieren.",
        "apihelp-revisiondelete-param-reason": "Grond fir ze Läschen oder ze Restauréieren.",
        "apihelp-rsd-example-simple": "Den RSD-Schema exportéieren",
+       "apihelp-stashedit-param-title": "Titel vun der Säit déi geännert gëtt.",
+       "apihelp-stashedit-param-sectiontitle": "Den Titel fir en neien Abschnitt.",
+       "apihelp-stashedit-param-text": "Inhalt vun der Säit",
        "apihelp-tag-param-reason": "Grond fir d'Ännerung.",
        "apihelp-unblock-description": "D'Spär vun engem Benotzer ophiewen.",
        "apihelp-unblock-param-reason": "Grond fir d'Spär opzehiewen",
index 791074e..a64e8e2 100644 (file)
        "apihelp-query+watchlist-paramvalue-prop-comment": "Dodaje komentarz do edycji.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Dodaje znacznik czasu edycji.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Dodaje starą i nową długość strony.",
+       "apihelp-stashedit-param-title": "Tytuł edytowanej strony.",
+       "apihelp-stashedit-param-sectiontitle": "Tytuł nowej sekcji.",
+       "apihelp-stashedit-param-text": "Zawartość strony.",
        "apihelp-tag-param-reason": "Powód zmiany.",
        "apihelp-unblock-param-reason": "Powód odblokowania.",
        "apihelp-undelete-param-reason": "Powód przywracania.",
index b851152..b55faf4 100644 (file)
        "apihelp-setnotificationtimestamp-example-page": "{{doc-apihelp-example|setnotificationtimestamp}}",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "{{doc-apihelp-example|setnotificationtimestamp}}",
        "apihelp-setnotificationtimestamp-example-allpages": "{{doc-apihelp-example|setnotificationtimestamp}}",
+       "apihelp-stashedit-description": "{{doc-apihelp-description|stashedit}}",
+       "apihelp-stashedit-param-title": "{{doc-apihelp-param|stashedit|title}}",
+       "apihelp-stashedit-param-section": "{{doc-apihelp-param|stashedit|section}}",
+       "apihelp-stashedit-param-sectiontitle": "{{doc-apihelp-param|stashedit|sectiontitle}}",
+       "apihelp-stashedit-param-text": "{{doc-apihelp-param|stashedit|text}}",
+       "apihelp-stashedit-param-contentmodel": "{{doc-apihelp-param|stashedit|contentmodel}}",
+       "apihelp-stashedit-param-contentformat": "{{doc-apihelp-param|stashedit|contentformat}}",
+       "apihelp-stashedit-param-baserevid": "{{doc-apihelp-param|stashedit|baserevid}}",
        "apihelp-tag-description": "{{doc-apihelp-description|tag}}",
        "apihelp-tag-param-rcid": "{{doc-apihelp-param|tag|rcid}}",
        "apihelp-tag-param-revid": "{{doc-apihelp-param|tag|revid}}",
index b1e6d95..1b5d20b 100644 (file)
        "apihelp-query+usercontribs-param-limit": "回傳的貢獻數量上限。",
        "apihelp-query+watchlist-param-limit": "每個請求要回傳的結果總數。",
        "apihelp-query+watchlistraw-param-limit": "每個請求要回傳的結果總數。",
+       "apihelp-stashedit-param-title": "正在編輯此頁面的標題。",
+       "apihelp-stashedit-param-text": "頁面內容。",
        "apihelp-tokens-description": "取得資料修改動作的密鑰。\n\n此模組已因支援 [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] 而停用。",
        "apihelp-unblock-param-reason": "解除封鎖的原因。",
        "apihelp-unblock-example-id": "解除封銷 ID #<kbd>105</kbd>。",
index 54ca2ab..87871f4 100644 (file)
@@ -89,6 +89,16 @@ class RecentChange {
         */
        public $counter = -1;
 
+       /**
+        * @var array Array of change types
+        */
+       private static $changeTypes = array(
+               'edit' => RC_EDIT,
+               'new' => RC_NEW,
+               'log' => RC_LOG,
+               'external' => RC_EXTERNAL,
+       );
+
        # Factory methods
 
        /**
@@ -119,18 +129,10 @@ class RecentChange {
                        return $retval;
                }
 
-               switch ( $type ) {
-                       case 'edit':
-                               return RC_EDIT;
-                       case 'new':
-                               return RC_NEW;
-                       case 'log':
-                               return RC_LOG;
-                       case 'external':
-                               return RC_EXTERNAL;
-                       default:
-                               throw new MWException( "Unknown type '$type'" );
+               if ( !array_key_exists( $type, self::$changeTypes ) ) {
+                       throw new MWException( "Unknown type '$type'" );
                }
+               return self::$changeTypes[$type];
        }
 
        /**
@@ -140,24 +142,18 @@ class RecentChange {
         * @return string $type
         */
        public static function parseFromRCType( $rcType ) {
-               switch ( $rcType ) {
-                       case RC_EDIT:
-                               $type = 'edit';
-                               break;
-                       case RC_NEW:
-                               $type = 'new';
-                               break;
-                       case RC_LOG:
-                               $type = 'log';
-                               break;
-                       case RC_EXTERNAL:
-                               $type = 'external';
-                               break;
-                       default:
-                               $type = "$rcType";
-               }
+               return array_search( $rcType, self::$changeTypes, true ) ?: "$rcType";
+       }
 
-               return $type;
+       /**
+        * Get an array of all change types
+        *
+        * @since 1.26
+        *
+        * @return array
+        */
+       public static function getChangeTypes() {
+               return array_keys( self::$changeTypes );
        }
 
        /**
index 7b54861..274e18e 100644 (file)
@@ -20,6 +20,7 @@
 
 namespace MediaWiki\Logger;
 
+use MediaWiki\Logger\Monolog\BufferHandler;
 use Monolog\Logger;
 use ObjectFactory;
 
@@ -84,6 +85,7 @@ use ObjectFactory;
  *                   'logstash'
  *               ),
  *               'formatter' => 'logstash',
+ *               'buffer' => true,
  *           ),
  *           'udp2log' => array(
  *               'class' => '\\MediaWiki\\Logger\\Monolog\\LegacyHandler',
@@ -247,6 +249,9 @@ class MonologSpi implements Spi {
                                        $this->getFormatter( $spec['formatter'] )
                                );
                        }
+                       if ( isset( $spec['buffer'] ) && $spec['buffer'] ) {
+                               $handler = new BufferHandler( $handler );
+                       }
                        $this->singletons['handlers'][$name] = $handler;
                }
                return $this->singletons['handlers'][$name];
diff --git a/includes/debug/logger/monolog/AvroFormatter.php b/includes/debug/logger/monolog/AvroFormatter.php
new file mode 100644 (file)
index 0000000..b6adab4
--- /dev/null
@@ -0,0 +1,139 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use AvroIODatumWriter;
+use AvroIOBinaryEncoder;
+use AvroIOTypeException;
+use AvroNamedSchemata;
+use AvroSchema;
+use AvroStringIO;
+use AvroValidator;
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * Log message formatter that uses the apache Avro format.
+ *
+ * @since 1.26
+ * @author Erik Bernhardson <ebernhardson@wikimedia.org>
+ * @copyright © 2015 Erik Bernhardson and Wikimedia Foundation.
+ */
+class AvroFormatter implements FormatterInterface {
+       /**
+        * @var array Map from schema name to schema definition
+        */
+       protected $schemas;
+
+       /**
+        * @var AvroStringIO
+        */
+       protected $io;
+
+       /**
+        * @var AvroIOBinaryEncoder
+        */
+       protected $encoder;
+
+       /**
+        * @var AvroIODatumWriter
+        */
+       protected $writer;
+
+       /**
+        * @var array $schemas Map from Monolog channel to Avro schema.
+        *  Each schema can be either the JSON string or decoded into PHP
+        *  arrays.
+        */
+       public function __construct( array $schemas ) {
+               $this->schemas = $schemas;
+               $this->io = new AvroStringIO( '' );
+               $this->encoder = new AvroIOBinaryEncoder( $this->io );
+               $this->writer = new AvroIODatumWriter();
+       }
+
+       /**
+        * Formats the record context into a binary string per the
+        * schema configured for the records channel.
+        *
+        * @param array $record
+        * @return string|null The serialized record, or null if
+        *  the record is not valid for the selected schema.
+        */
+       public function format( array $record ) {
+               $this->io->truncate();
+               $schema = $this->getSchema( $record['channel'] );
+               if ( $schema === null ) {
+                       trigger_error( "The schema for channel '{$record['channel']}' is not available" );
+                       return null;
+               }
+               try {
+                       $this->writer->write_data( $schema, $record['context'], $this->encoder );
+               } catch ( AvroIOTypeException $e ) {
+                       $errors = AvroValidator::getErrors( $schema, $record['context'] );
+                       $json = json_encode( $errors );
+                       trigger_error( "Avro failed to serialize record for {$record['channel']} : {$json}" );
+                       return null;
+               }
+               return $this->io->string();
+       }
+
+       /**
+        * Format a set of records into a list of binary strings
+        * conforming to the configured schema.
+        *
+        * @param array $records
+        * @return string[]
+        */
+       public function formatBatch( array $records ) {
+               $result = array();
+               foreach ( $records as $record ) {
+                       $message = $this->format( $record );
+                       if ( $message !== null ) {
+                               $result[] = $message;
+                       }
+               }
+               return $result;
+       }
+
+       /**
+        * Get the writer for the named channel
+        *
+        * @var string $channel Name of the schema to fetch
+        * @return AvroSchema|null
+        */
+       protected function getSchema( $channel ) {
+               if ( !isset( $this->schemas[$channel] ) ) {
+                       return null;
+               }
+               if ( !$this->schemas[$channel] instanceof AvroSchema ) {
+                       if ( is_string( $this->schemas[$channel] ) ) {
+                               $this->schemas[$channel] = AvroSchema::parse( $this->schemas[$channel] );
+                       } else {
+                               $this->schemas[$channel] = AvroSchema::real_parse(
+                                       $this->schemas[$channel],
+                                       null,
+                                       new AvroNamedSchemata()
+                               );
+                       }
+               }
+               return $this->schemas[$channel];
+       }
+}
diff --git a/includes/debug/logger/monolog/BufferHandler.php b/includes/debug/logger/monolog/BufferHandler.php
new file mode 100644 (file)
index 0000000..3ebd0b1
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Helper class for the index.php entry point.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use DeferredUpdates;
+use Monolog\Handler\BufferHandler as BaseBufferHandler;
+
+/**
+ * Updates the Monolog BufferHandler to use DeferredUpdates rather
+ * than register_shutdown_function. On supported platforms this will
+ * use register_postsend_function or fastcgi_finish_request() to delay
+ * until after the request has shutdown and we are no longer delaying
+ * the web request.
+ */
+class BufferHandler extends BaseBufferHandler {
+       /**
+        * {@inheritDoc}
+        */
+       public function handle( array $record ) {
+               if (!$this->initialized) {
+                       DeferredUpdates::addCallableUpdate( array( $this, 'close' ) );
+                       $this->initialized = true;
+               }
+               return parent::handle( $record );
+       }
+}
+
diff --git a/includes/debug/logger/monolog/KafkaHandler.php b/includes/debug/logger/monolog/KafkaHandler.php
new file mode 100644 (file)
index 0000000..59d7764
--- /dev/null
@@ -0,0 +1,224 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use Kafka\MetaDataFromKafka;
+use Kafka\Produce;
+use MediaWiki\Logger\LoggerFactory;
+use Monolog\Handler\AbstractProcessingHandler;
+use Monolog\Logger;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Log handler sends log events to a kafka server.
+ *
+ * Constructor options array arguments:
+ * * alias: map from monolog channel to kafka topic name. When no
+ *       alias exists the topic "monolog_$channel" will be used.
+ * * swallowExceptions: Swallow exceptions that occur while talking to
+ *    kafka. Defaults to false.
+ * * logExceptions: Log exceptions talking to kafka here. Either null,
+ *    the name of a channel to log to, or an object implementing
+ *    FormatterInterface. Defaults to null.
+ *
+ * Requires the nmred/kafka-php library, version >= 1.3.0
+ *
+ * @since 1.26
+ * @author Erik Bernhardson <ebernhardson@wikimedia.org>
+ * @copyright © 2015 Erik Bernhardson and Wikimedia Foundation.
+ */
+class KafkaHandler extends AbstractProcessingHandler {
+       /**
+        * @var Produce Sends requests to kafka
+        */
+       protected $produce;
+
+       /**
+        * @var array Optional handler configuration
+        */
+       protected $options;
+
+       /**
+        * @var array Map from topic name to partition this request produces to
+        */
+       protected $partitions = array();
+
+       /**
+        * @var array defaults for constructor options
+        */
+       private static $defaultOptions = array(
+               'alias' => array(), // map from monolog channel to kafka topic
+               'swallowExceptions' => false, // swallow exceptions sending records
+               'logExceptions' => null, // A PSR3 logger to inform about errors
+       );
+
+       /**
+        * @param Produce $produce Kafka instance to produce through
+        * @param array $options optional handler configuration
+        * @param int $level The minimum logging level at which this handler will be triggered
+        * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+        */
+       public function __construct( Produce $produce, array $options, $level = Logger::DEBUG, $bubble = true ) {
+               parent::__construct( $level, $bubble );
+               $this->produce = $produce;
+               $this->options = array_merge( self::$defaultOptions, $options );
+       }
+
+       /**
+        * Constructs the necessary support objects and returns a KafkaHandler
+        * instance.
+        *
+        * @param string[] $kafkaServers
+        * @param array $options
+        * @param int $level The minimum logging level at which this handle will be triggered
+        * @param bool $bubble Whether the messages that are handled can bubble the stack or not
+        * @return KafkaHandler
+        */
+       public static function factory( $kafkaServers, array $options = array(), $level = Logger::DEBUG, $bubble = true ) {
+               $metadata = new MetaDataFromKafka( $kafkaServers );
+               $produce = new Produce( $metadata );
+               if ( isset( $options['logExceptions'] ) && is_string( $options['logExceptions'] ) ) {
+                       $options['logExceptions'] = LoggerFactory::getInstance( $options['logExceptions'] );
+               }
+               return new self( $produce, $options, $level, $bubble );
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       protected function write( array $record ) {
+               if ( $record['formatted'] !== null ) {
+                       $this->addMessages( $record['channel'], array( $record['formatted'] ) );
+                       $this->send();
+               }
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public function handleBatch( array $batch ) {
+               $channels = array();
+               foreach ( $batch as $record ) {
+                       if ( $record['level'] < $this->level ) {
+                               continue;
+                       }
+                       $channels[$record['channel']][] = $this->processRecord( $record );
+               }
+
+               $formatter = $this->getFormatter();
+               foreach ( $channels as $channel => $records ) {
+                       $messages = array();
+                       foreach ( $records as $idx => $record ) {
+                               $message = $formatter->format( $record );
+                               if ( $message !== null ) {
+                                       $messages[] = $message;
+                               }
+                       }
+                       if ( $messages ) {
+                               $this->addMessages($channel, $messages);
+                       }
+               }
+
+               $this->send();
+       }
+
+       /**
+        * Send any records in the kafka client internal queue.
+        */
+       protected function send() {
+               try {
+                       $this->produce->send();
+               } catch ( \Kafka\Exception $e ) {
+                       $ignore = $this->warning(
+                               'Error sending records to kafka: {exception}',
+                               array( 'exception' => $e ) );
+                       if ( !$ignore ) {
+                               throw $e;
+                       }
+               }
+       }
+
+       /**
+        * @param string $topic Name of topic to get partition for
+        * @return int|null The random partition to produce to for this request,
+        *  or null if a partition could not be determined.
+        */
+       protected function getRandomPartition( $topic ) {
+               if ( !array_key_exists( $topic, $this->partitions ) ) {
+                       try {
+                               $partitions = $this->produce->getAvailablePartitions( $topic );
+                       } catch ( \Kafka\Exception $e ) {
+                               $ignore = $this->warning(
+                                       'Error getting metadata for kafka topic {topic}: {exception}',
+                                       array( 'topic' => $topic, 'exception' => $e ) );
+                               if ( $ignore ) {
+                                       return null;
+                               }
+                               throw $e;
+                       }
+                       if ( $partitions ) {
+                               $key = array_rand( $partitions );
+                               $this->partitions[$topic] = $partitions[$key];
+                       } else {
+                               $details = $this->produce->getClient()->getTopicDetail( $topic );
+                               $ignore = $this->warning(
+                                       'No partitions available for kafka topic {topic}',
+                                       array( 'topic' => $topic, 'kafka' => $details )
+                               );
+                               if ( !$ignore ) {
+                                       throw new \RuntimeException( "No partitions available for kafka topic $topic" );
+                               }
+                               $this->partitions[$topic] = null;
+                       }
+               }
+               return $this->partitions[$topic];
+       }
+
+       /**
+        * Adds records for a channel to the Kafka client internal queue.
+        *
+        * @param string $channel Name of Monolog channel records belong to
+        * @param array $records List of records to append
+        */
+       protected function addMessages( $channel, array $records ) {
+               if ( isset( $this->options['alias'][$channel] ) ) {
+                       $topic = $this->options['alias'][$channel];
+               } else {
+                       $topic = "monolog_$channel";
+               }
+               $partition = $this->getRandomPartition( $topic );
+               if ( $partition !== null ) {
+                       $this->produce->setMessages( $topic, $partition, $records );
+               }
+       }
+
+       /**
+        * @param string $message PSR3 compatible message string
+        * @param array $context PSR3 compatible log context
+        * @return bool true if caller should ignore warning
+        */
+       protected function warning( $message, array $context = array() ) {
+               if ( $this->options['logExceptions'] instanceof LoggerInterface ) {
+                       $this->options['logExceptions']->warning( $message, $context );
+               }
+               return $this->options['swallowExceptions'];
+       }
+}
index b7e5b0a..cd0266f 100644 (file)
@@ -78,17 +78,6 @@ class DeferredUpdates {
                }
        }
 
-       /**
-        * HTMLCacheUpdates are the most common deferred update people use. This
-        * is a shortcut method for that.
-        * @see HTMLCacheUpdate::__construct()
-        * @param Title $title
-        * @param string $table
-        */
-       public static function addHTMLCacheUpdate( $title, $table ) {
-               self::addUpdate( new HTMLCacheUpdate( $title, $table ) );
-       }
-
        /**
         * Add a callable update.  In a lot of cases, we just need a callback/closure,
         * defining a new DeferrableUpdate object is not necessary
@@ -106,9 +95,7 @@ class DeferredUpdates {
         *   prevent lock contention
         */
        public static function doUpdates( $commit = '' ) {
-               global $wgDeferredUpdateList;
-
-               $updates = array_merge( $wgDeferredUpdateList, self::$updates );
+               $updates = self::$updates;
 
                while ( count( $updates ) ) {
                        self::clearPendingUpdates();
@@ -131,7 +118,7 @@ class DeferredUpdates {
                                }
                        }
 
-                       $updates = array_merge( $wgDeferredUpdateList, self::$updates );
+                       $updates = self::$updates;
                }
        }
 
@@ -140,7 +127,6 @@ class DeferredUpdates {
         * want or need to call this. Unit tests need it though.
         */
        public static function clearPendingUpdates() {
-               global $wgDeferredUpdateList;
-               $wgDeferredUpdateList = self::$updates = array();
+               self::$updates = array();
        }
 }
diff --git a/includes/deferred/LinksDeletionUpdate.php b/includes/deferred/LinksDeletionUpdate.php
new file mode 100644 (file)
index 0000000..bbdfcf1
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Updater for link tracking tables after a page edit.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Update object handling the cleanup of links tables after a page was deleted.
+ **/
+class LinksDeletionUpdate extends SqlDataUpdate {
+       /** @var WikiPage The WikiPage that was deleted */
+       protected $mPage;
+
+       /**
+        * Constructor
+        *
+        * @param WikiPage $page Page we are updating
+        * @throws MWException
+        */
+       function __construct( WikiPage $page ) {
+               parent::__construct( false ); // no implicit transaction
+
+               $this->mPage = $page;
+
+               if ( !$page->exists() ) {
+                       throw new MWException( "Page ID not known, perhaps the page doesn't exist?" );
+               }
+       }
+
+       /**
+        * Do some database updates after deletion
+        */
+       public function doUpdate() {
+               $title = $this->mPage->getTitle();
+               $id = $this->mPage->getId();
+
+               # Delete restrictions for it
+               $this->mDb->delete( 'page_restrictions', array( 'pr_page' => $id ), __METHOD__ );
+
+               # Fix category table counts
+               $cats = array();
+               $res = $this->mDb->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ );
+
+               foreach ( $res as $row ) {
+                       $cats[] = $row->cl_to;
+               }
+
+               $this->mPage->updateCategoryCounts( array(), $cats );
+
+               # If using cascading deletes, we can skip some explicit deletes
+               if ( !$this->mDb->cascadingDeletes() ) {
+                       # Delete outgoing links
+                       $this->mDb->delete( 'pagelinks', array( 'pl_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'imagelinks', array( 'il_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'categorylinks', array( 'cl_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'templatelinks', array( 'tl_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'externallinks', array( 'el_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'langlinks', array( 'll_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'iwlinks', array( 'iwl_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'redirect', array( 'rd_from' => $id ), __METHOD__ );
+                       $this->mDb->delete( 'page_props', array( 'pp_page' => $id ), __METHOD__ );
+               }
+
+               # If using cleanup triggers, we can skip some manual deletes
+               if ( !$this->mDb->cleanupTriggers() ) {
+                       # Find recentchanges entries to clean up...
+                       $rcIdsForTitle = $this->mDb->selectFieldValues( 'recentchanges',
+                               'rc_id',
+                               array(
+                                       'rc_type != ' . RC_LOG,
+                                       'rc_namespace' => $title->getNamespace(),
+                                       'rc_title' => $title->getDBkey()
+                               ),
+                               __METHOD__
+                       );
+                       $rcIdsForPage = $this->mDb->selectFieldValues( 'recentchanges',
+                               'rc_id',
+                               array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ),
+                               __METHOD__
+                       );
+
+                       # T98706: delete PK to avoid lock contention with RC delete log insertions
+                       $rcIds = array_merge( $rcIdsForTitle, $rcIdsForPage );
+                       if ( $rcIds ) {
+                               $this->mDb->delete( 'recentchanges', array( 'rc_id' => $rcIds ), __METHOD__ );
+                       }
+               }
+       }
+}
\ No newline at end of file
index e9ec7ff..be5aff3 100644 (file)
@@ -935,99 +935,3 @@ class LinksUpdate extends SqlDataUpdate {
                }
        }
 }
-
-/**
- * Update object handling the cleanup of links tables after a page was deleted.
- **/
-class LinksDeletionUpdate extends SqlDataUpdate {
-       /** @var WikiPage The WikiPage that was deleted */
-       protected $mPage;
-
-       /**
-        * Constructor
-        *
-        * @param WikiPage $page Page we are updating
-        * @throws MWException
-        */
-       function __construct( WikiPage $page ) {
-               parent::__construct( false ); // no implicit transaction
-
-               $this->mPage = $page;
-
-               if ( !$page->exists() ) {
-                       throw new MWException( "Page ID not known, perhaps the page doesn't exist?" );
-               }
-       }
-
-       /**
-        * Do some database updates after deletion
-        */
-       public function doUpdate() {
-               $title = $this->mPage->getTitle();
-               $id = $this->mPage->getId();
-
-               # Delete restrictions for it
-               $this->mDb->delete( 'page_restrictions', array( 'pr_page' => $id ), __METHOD__ );
-
-               # Fix category table counts
-               $cats = array();
-               $res = $this->mDb->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ );
-
-               foreach ( $res as $row ) {
-                       $cats[] = $row->cl_to;
-               }
-
-               $this->mPage->updateCategoryCounts( array(), $cats );
-
-               # If using cascading deletes, we can skip some explicit deletes
-               if ( !$this->mDb->cascadingDeletes() ) {
-                       # Delete outgoing links
-                       $this->mDb->delete( 'pagelinks', array( 'pl_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'imagelinks', array( 'il_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'categorylinks', array( 'cl_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'templatelinks', array( 'tl_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'externallinks', array( 'el_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'langlinks', array( 'll_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'iwlinks', array( 'iwl_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'redirect', array( 'rd_from' => $id ), __METHOD__ );
-                       $this->mDb->delete( 'page_props', array( 'pp_page' => $id ), __METHOD__ );
-               }
-
-               # If using cleanup triggers, we can skip some manual deletes
-               if ( !$this->mDb->cleanupTriggers() ) {
-                       # Find recentchanges entries to clean up...
-                       $rcIdsForTitle = $this->mDb->selectFieldValues( 'recentchanges',
-                               'rc_id',
-                               array(
-                                       'rc_type != ' . RC_LOG,
-                                       'rc_namespace' => $title->getNamespace(),
-                                       'rc_title' => $title->getDBkey()
-                               ),
-                               __METHOD__
-                       );
-                       $rcIdsForPage = $this->mDb->selectFieldValues( 'recentchanges',
-                               'rc_id',
-                               array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ),
-                               __METHOD__
-                       );
-
-                       # T98706: delete PK to avoid lock contention with RC delete log insertions
-                       $rcIds = array_merge( $rcIdsForTitle, $rcIdsForPage );
-                       if ( $rcIds ) {
-                               $this->mDb->delete( 'recentchanges', array( 'rc_id' => $rcIds ), __METHOD__ );
-                       }
-               }
-       }
-
-       /**
-        * Update all the appropriate counts in the category table.
-        * @param array $added Associative array of category name => sort key
-        * @param array $deleted Associative array of category name => sort key
-        */
-       function updateCategoryCounts( $added, $deleted ) {
-               $a = WikiPage::factory( $this->mTitle );
-               $a->updateCategoryCounts(
-                       array_keys( $added ), array_keys( $deleted )
-               );
-       }
-}
index 6c6a90b..1603d44 100644 (file)
  * Only use this class when transitioning from one storage system to another.
  *
  * Read operations are only done on the 'master' backend for consistency.
- * Write operations are performed on all backends, in the order defined.
- * If an operation fails on one backend it will be rolled back from the others.
+ * Write operations are performed on all backends, starting with the master.
+ * This makes a best-effort to have transactional semantics, but since requests
+ * may sometimes fail, the use of "autoResync" or background scripts to fix
+ * inconsistencies is important.
  *
  * @ingroup FileBackend
  * @since 1.19
@@ -45,6 +47,8 @@ class FileBackendMultiWrite extends FileBackend {
 
        /** @var int Index of master backend */
        protected $masterIndex = -1;
+       /** @var int Index of read affinity backend */
+       protected $readIndex = -1;
 
        /** @var int Bitfield */
        protected $syncChecks = 0;
@@ -52,12 +56,6 @@ class FileBackendMultiWrite extends FileBackend {
        /** @var string|bool */
        protected $autoResync = false;
 
-       /** @var array */
-       protected $noPushDirConts = array();
-
-       /** @var bool */
-       protected $noPushQuickOps = false;
-
        /* Possible internal backend consistency checks */
        const CHECK_SIZE = 1;
        const CHECK_TIME = 2;
@@ -73,6 +71,7 @@ class FileBackendMultiWrite extends FileBackend {
         *                      FileBackendStore class, but with these additional settings:
         *                        - class         : The name of the backend class
         *                        - isMultiMaster : This must be set for one backend.
+        *                        - readAffinity  : Use this for reads without 'latest' set.
         *                        - template:     : If given a backend name, this will use
         *                                          the config of that backend as a template.
         *                                          Values specified here take precedence.
@@ -86,8 +85,6 @@ class FileBackendMultiWrite extends FileBackend {
         *                      Use "conservative" to limit resyncing to copying newer master
         *                      backend files over older (or non-existing) clone backend files.
         *                      Cases that cannot be handled will result in operation abortion.
-        *   - noPushQuickOps : (hack) Only apply doQuickOperations() to the master backend.
-        *   - noPushDirConts : (hack) Only apply directory functions to the master backend.
         *
         * @param array $config
         * @throws FileBackendError
@@ -100,12 +97,6 @@ class FileBackendMultiWrite extends FileBackend {
                $this->autoResync = isset( $config['autoResync'] )
                        ? $config['autoResync']
                        : false;
-               $this->noPushQuickOps = isset( $config['noPushQuickOps'] )
-                       ? $config['noPushQuickOps']
-                       : false;
-               $this->noPushDirConts = isset( $config['noPushDirConts'] )
-                       ? $config['noPushDirConts']
-                       : array();
                // Construct backends here rather than via registration
                // to keep these backends hidden from outside the proxy.
                $namesUsed = array();
@@ -132,6 +123,9 @@ class FileBackendMultiWrite extends FileBackend {
                                $this->masterIndex = $index; // this is the "master"
                                $config['fileJournal'] = $this->fileJournal; // log under proxy backend
                        }
+                       if ( !empty( $config['readAffinity'] ) ) {
+                               $this->readIndex = $index; // prefer this for reads
+                       }
                        // Create sub-backend object
                        if ( !isset( $config['class'] ) ) {
                                throw new FileBackendError( 'No class given for a backend config.' );
@@ -142,6 +136,9 @@ class FileBackendMultiWrite extends FileBackend {
                if ( $this->masterIndex < 0 ) { // need backends and must have a master
                        throw new FileBackendError( 'No master backend defined.' );
                }
+               if ( $this->readIndex < 0 ) {
+                       $this->readIndex = $this->masterIndex; // default
+               }
        }
 
        final protected function doOperationsInternal( array $ops, array $opts ) {
@@ -152,6 +149,7 @@ class FileBackendMultiWrite extends FileBackend {
                // Try to lock those files for the scope of this function...
                if ( empty( $opts['nonLocking'] ) ) {
                        // Try to lock those files for the scope of this function...
+                       /** @noinspection PhpUnusedLocalVariableInspection */
                        $scopeLock = $this->getScopedLocksForOps( $ops, $status );
                        if ( !$status->isOK() ) {
                                return $status; // abort
@@ -458,12 +456,10 @@ class FileBackendMultiWrite extends FileBackend {
                $masterStatus = $this->backends[$this->masterIndex]->doQuickOperations( $realOps );
                $status->merge( $masterStatus );
                // Propagate the operations to the clone backends...
-               if ( !$this->noPushQuickOps ) {
-                       foreach ( $this->backends as $index => $backend ) {
-                               if ( $index !== $this->masterIndex ) { // not done already
-                                       $realOps = $this->substOpBatchPaths( $ops, $backend );
-                                       $status->merge( $backend->doQuickOperations( $realOps ) );
-                               }
+               foreach ( $this->backends as $index => $backend ) {
+                       if ( $index !== $this->masterIndex ) { // not done already
+                               $realOps = $this->substOpBatchPaths( $ops, $backend );
+                               $status->merge( $backend->doQuickOperations( $realOps ) );
                        }
                }
                // Make 'success', 'successCount', and 'failCount' fields reflect
@@ -476,24 +472,11 @@ class FileBackendMultiWrite extends FileBackend {
                return $status;
        }
 
-       /**
-        * @param string $path Storage path
-        * @return bool Path container should have dir changes pushed to all backends
-        */
-       protected function replicateContainerDirChanges( $path ) {
-               list( , $shortCont, ) = self::splitStoragePath( $path );
-
-               return !in_array( $shortCont, $this->noPushDirConts );
-       }
-
        protected function doPrepare( array $params ) {
                $status = Status::newGood();
-               $replicate = $this->replicateContainerDirChanges( $params['dir'] );
                foreach ( $this->backends as $index => $backend ) {
-                       if ( $replicate || $index == $this->masterIndex ) {
-                               $realParams = $this->substOpPaths( $params, $backend );
-                               $status->merge( $backend->doPrepare( $realParams ) );
-                       }
+                       $realParams = $this->substOpPaths( $params, $backend );
+                       $status->merge( $backend->doPrepare( $realParams ) );
                }
 
                return $status;
@@ -501,12 +484,9 @@ class FileBackendMultiWrite extends FileBackend {
 
        protected function doSecure( array $params ) {
                $status = Status::newGood();
-               $replicate = $this->replicateContainerDirChanges( $params['dir'] );
                foreach ( $this->backends as $index => $backend ) {
-                       if ( $replicate || $index == $this->masterIndex ) {
-                               $realParams = $this->substOpPaths( $params, $backend );
-                               $status->merge( $backend->doSecure( $realParams ) );
-                       }
+                       $realParams = $this->substOpPaths( $params, $backend );
+                       $status->merge( $backend->doSecure( $realParams ) );
                }
 
                return $status;
@@ -514,12 +494,9 @@ class FileBackendMultiWrite extends FileBackend {
 
        protected function doPublish( array $params ) {
                $status = Status::newGood();
-               $replicate = $this->replicateContainerDirChanges( $params['dir'] );
                foreach ( $this->backends as $index => $backend ) {
-                       if ( $replicate || $index == $this->masterIndex ) {
-                               $realParams = $this->substOpPaths( $params, $backend );
-                               $status->merge( $backend->doPublish( $realParams ) );
-                       }
+                       $realParams = $this->substOpPaths( $params, $backend );
+                       $status->merge( $backend->doPublish( $realParams ) );
                }
 
                return $status;
@@ -527,12 +504,9 @@ class FileBackendMultiWrite extends FileBackend {
 
        protected function doClean( array $params ) {
                $status = Status::newGood();
-               $replicate = $this->replicateContainerDirChanges( $params['dir'] );
                foreach ( $this->backends as $index => $backend ) {
-                       if ( $replicate || $index == $this->masterIndex ) {
-                               $realParams = $this->substOpPaths( $params, $backend );
-                               $status->merge( $backend->doClean( $realParams ) );
-                       }
+                       $realParams = $this->substOpPaths( $params, $backend );
+                       $status->merge( $backend->doClean( $realParams ) );
                }
 
                return $status;
@@ -540,44 +514,52 @@ class FileBackendMultiWrite extends FileBackend {
 
        public function concatenate( array $params ) {
                // We are writing to an FS file, so we don't need to do this per-backend
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->concatenate( $realParams );
+               return $this->backends[$index]->concatenate( $realParams );
        }
 
        public function fileExists( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->fileExists( $realParams );
+               return $this->backends[$index]->fileExists( $realParams );
        }
 
        public function getFileTimestamp( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileTimestamp( $realParams );
+               return $this->backends[$index]->getFileTimestamp( $realParams );
        }
 
        public function getFileSize( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileSize( $realParams );
+               return $this->backends[$index]->getFileSize( $realParams );
        }
 
        public function getFileStat( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileStat( $realParams );
+               return $this->backends[$index]->getFileStat( $realParams );
        }
 
        public function getFileXAttributes( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileXAttributes( $realParams );
+               return $this->backends[$index]->getFileXAttributes( $realParams );
        }
 
        public function getFileContentsMulti( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
-               $contentsM = $this->backends[$this->masterIndex]->getFileContentsMulti( $realParams );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
+
+               $contentsM = $this->backends[$index]->getFileContentsMulti( $realParams );
 
                $contents = array(); // (path => FSFile) mapping using the proxy backend's name
                foreach ( $contentsM as $path => $data ) {
@@ -588,26 +570,31 @@ class FileBackendMultiWrite extends FileBackend {
        }
 
        public function getFileSha1Base36( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileSha1Base36( $realParams );
+               return $this->backends[$index]->getFileSha1Base36( $realParams );
        }
 
        public function getFileProps( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileProps( $realParams );
+               return $this->backends[$index]->getFileProps( $realParams );
        }
 
        public function streamFile( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->streamFile( $realParams );
+               return $this->backends[$index]->streamFile( $realParams );
        }
 
        public function getLocalReferenceMulti( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
-               $fsFilesM = $this->backends[$this->masterIndex]->getLocalReferenceMulti( $realParams );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
+
+               $fsFilesM = $this->backends[$index]->getLocalReferenceMulti( $realParams );
 
                $fsFiles = array(); // (path => FSFile) mapping using the proxy backend's name
                foreach ( $fsFilesM as $path => $fsFile ) {
@@ -618,8 +605,10 @@ class FileBackendMultiWrite extends FileBackend {
        }
 
        public function getLocalCopyMulti( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
-               $tempFilesM = $this->backends[$this->masterIndex]->getLocalCopyMulti( $realParams );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
+
+               $tempFilesM = $this->backends[$index]->getLocalCopyMulti( $realParams );
 
                $tempFiles = array(); // (path => TempFSFile) mapping using the proxy backend's name
                foreach ( $tempFilesM as $path => $tempFile ) {
@@ -630,9 +619,10 @@ class FileBackendMultiWrite extends FileBackend {
        }
 
        public function getFileHttpUrl( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
 
-               return $this->backends[$this->masterIndex]->getFileHttpUrl( $realParams );
+               return $this->backends[$index]->getFileHttpUrl( $realParams );
        }
 
        public function directoryExists( array $params ) {
@@ -665,13 +655,15 @@ class FileBackendMultiWrite extends FileBackend {
        }
 
        public function preloadCache( array $paths ) {
-               $realPaths = $this->substPaths( $paths, $this->backends[$this->masterIndex] );
-               $this->backends[$this->masterIndex]->preloadCache( $realPaths );
+               $realPaths = $this->substPaths( $paths, $this->backends[$this->readIndex] );
+               $this->backends[$this->readIndex]->preloadCache( $realPaths );
        }
 
        public function preloadFileStat( array $params ) {
-               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
-               return $this->backends[$this->masterIndex]->preloadFileStat( $realParams );
+               $index = $this->getReadIndexFromParams( $params );
+               $realParams = $this->substOpPaths( $params, $this->backends[$index] );
+
+               return $this->backends[$index]->preloadFileStat( $realParams );
        }
 
        public function getScopedLocksForOps( array $ops, Status $status ) {
@@ -688,4 +680,12 @@ class FileBackendMultiWrite extends FileBackend {
                // Actually acquire the locks
                return $this->getScopedFileLocks( $pbPaths, 'mixed', $status );
        }
+
+       /**
+        * @param array $params
+        * @return int The master or read affinity backend index, based on $params['latest']
+        */
+       protected function getReadIndexFromParams( array $params ) {
+               return !empty( $params['latest'] ) ? $this->masterIndex : $this->readIndex;
+       }
 }
index 2562f52..9433964 100644 (file)
@@ -1076,6 +1076,7 @@ abstract class FileBackendStore extends FileBackend {
                        // Build up a list of files to lock...
                        $paths = $this->getPathsToLockForOpsInternal( $performOps );
                        // Try to lock those files for the scope of this function...
+
                        $scopeLock = $this->getScopedFileLocks( $paths, 'mixed', $status );
                        if ( !$status->isOK() ) {
                                return $status; // abort
index ba2cf23..2879ddd 100644 (file)
@@ -35,6 +35,10 @@ class MemoryFileBackend extends FileBackendStore {
        /** @var array Map of (file path => (data,mtime) */
        protected $files = array();
 
+       public function getFeatures() {
+               return self::ATTR_UNICODE_PATHS;
+       }
+
        public function isPathUsableInternal( $storagePath ) {
                return true;
        }
index 615ba77..8115fd4 100644 (file)
@@ -102,7 +102,6 @@ abstract class LockManager {
         * @since 1.22
         */
        final public function lockByType( array $pathsByType, $timeout = 0 ) {
-               $status = Status::newGood();
                $pathsByType = $this->normalizePathsByType( $pathsByType );
                $msleep = array( 0, 50, 100, 300, 500 ); // retry backoff times
                $start = microtime( true );
index 7e34f96..9f6f22c 100644 (file)
        "config-install-interwiki-exists": "<strong>Advertencia:</strong> la tabla de interwikis parece ya contener entradas.\nSe omitirá la lista predeterminada.",
        "config-install-stats": "Iniciando las estadísticas",
        "config-install-keys": "Generando claves secretas",
-       "config-insecure-keys": "<strong>Advertencia:</strong> {{PLURAL:$2|una clave de seguridad generada|las claves de seguridad generadas}} ($1) durante la instalación no  {{PLURAL:$2|es totalmente segura|son totalmente seguras}}. Considera {{PLURAL:$2| cambiarla|cambiarlas}} manualmente.",
+       "config-insecure-keys": "<strong>Advertencia:</strong> {{PLURAL:$2|una clave de seguridad generada|las claves de seguridad generadas}} ($1) durante la instalación no {{PLURAL:$2|es totalmente segura|son totalmente seguras}}. Considera {{PLURAL:$2|cambiarla|cambiarlas}} manualmente.",
        "config-install-updates": "Evitar ejecutar actualizaciones innecesarias",
        "config-install-updates-failed": "<strong>Error:</strong> falló la inserción de claves de actualización en las tablas con el siguiente error: $1",
        "config-install-sysop": "Creando la cuenta de usuario del administrador",
index 10119be..28c2087 100644 (file)
@@ -1,9 +1,10 @@
 {
        "@metadata": {
                "authors": [
-                       "Huslåke"
+                       "Huslåke",
+                       "Jyllanj"
                ]
        },
-       "mainpagetext": "'''MediaWiki er nu installeret.'''",
-       "mainpagedocfooter": "Se vores engelskspråĝede [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentåsje tilpasnenge'm åf æ brugergrænseflade] og [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide æ brugervejlednenge] før åplysnenger åpsætnenge'm og anvendelse."
+       "mainpagetext": "'''MediaWiki ä nu installiirtj.'''",
+       "mainpagedocfooter": "Sie [//meta.wikimedia.org/wiki/Help:Contents brugewejliednengen] for oplysnenge om brugi å wikiprogramme.\n\n== Å kom i gång ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Listen öwe opsättnengsmulihede]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki oft stellen spöyrgsmol]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Postlist ångoenje utdjielse å MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Öwesätt MediaWiki te det spraw]"
 }
index fd0ab3e..ab318e2 100644 (file)
        "config-install-pg-schema-not-exist": "'O schema PostgreSQL nun esiste.",
        "config-install-pg-commit": "Mannann' 'e cagnamiente",
        "config-install-pg-plpgsql": "Cuntrollo p' 'o lenguaggio PL/pgSQL",
+       "config-pg-not-in-role": "'O cunto c'avite nzegnato p' 'o utente web esiste già.\n'O cunto dato pe' ce fà 'installazione nun è n'utente avanzato e nun è nu membro d' 'o ruolo 'utente web, picciò nun è in grado 'e se crià oggette 'e pruprietà 'utente web.\n\nMediaWiki mo' addimanna ch' 'e tabbelle fossero pruprietà 'e ll'utente web. Putite nzegnà n'atu cunto web, o facite pure \"arreto\" e specificate n'utente pe' ce ffà 'installazione opportunamente privileggiato.",
        "config-install-user": "Crianno utente 'e database",
+       "config-install-user-alreadyexists": "L'utente \"$1\" esiste già",
+       "config-install-user-create-failed": "Crianno utente \"$1\" guastaje: $2",
+       "config-install-tables": "Crianno tabbelle",
+       "config-install-tables-exist": "'''Attenziò:''' pare ch' 'e tabbelle 'e MediaWiki esisteno già.\nZumpo 'a creazione.",
        "config-install-stats": "Inizializzaziona d' 'e statistiche",
        "config-install-keys": "Generaziona d' 'e chiave segrete",
        "config-install-updates": "Mpiccià ll'agghiurnamiente ca nun fossero necessarie",
index 27dddd3..948b6dd 100644 (file)
@@ -66,7 +66,7 @@
        "config-unicode-using-intl": "Usando a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.",
        "config-unicode-pure-php-warning": "<strong>Aviso</strong>: A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode, abortando e passando para a lenta implementação de PHP puro.\nSe o seu site tem um alto volume de tráfego, informe-se sobre a [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalização Unicode].",
        "config-unicode-update-warning": "<strong>Aviso:</strong> A versão instalada do wrapper de normalização Unicode usa uma versão mais antiga da biblioteca do [//www.site.icu-project.org/projeto ICU].\nVocê deve [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations atualizar] se você tem quaisquer preocupações com o uso do Unicode.",
-       "config-no-db": "Não foi possível localizar um driver de banco de dados apropriado! Você precisa instalar um driver de banco de dados para PHP. O banco de dados seguinte {{PLURAL: $ 2 | | tipo é tipos são}} suportado: $ 1. Se você compilou o PHP mesmo, reconfigurá-lo com um cliente de banco de dados ativada, por exemplo, usando <code> ./ configure --with-mysqli </ code>. Se você instalou o PHP a partir de um pacote Debian ou Ubuntu, então você também precisa instalar, por exemplo, o <code> php5-mysql </ code> pacote.",
+       "config-no-db": "Não foi possível encontrar um driver apropriado para a banco de dados! Você precisa instalar um driver de banco de dados para PHP. {{PLURAL:$2|É aceite o seguinte tipo|São aceites os seguintes tipos}} de banco de dados: $1.\n\nSe compilou o PHP você mesmo, reconfigure-o com um cliente de banco de dados ativado, por exemplo, usando <code>./configure --with-mysqli</code>.\nSe instalou o PHP a partir de um pacote Debian ou Ubuntu, então também precisa instalar, por exemplo, o pacote <code>php5-mysql</code>.",
        "config-outdated-sqlite": "<strong>Aviso:</strong> você tem o SQLite versão $1, que é menor do que a versão mínima necessária $2. O SQLite não estará disponível.",
        "config-no-fts3": "<strong>Aviso</strong> O SQLite foi compilado sem o [//sqlite.org/fts3.html módulo FTS3], as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
        "config-register-globals-error": "<strong>Erro: a opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.\nA mesma deve ser desativada para continuar a instalação.</strong>\nVeja [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] para obter ajuda com isto.",
@@ -75,7 +75,7 @@
        "config-magic-quotes-sybase": "<strong>Erro fatal: A opção [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] está ativada!</strong>\nEsta opção corrompe os dados de entrada de forma imprevisível.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
        "config-mbstring": "<strong>Erro fatal: A opção [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] está ativada!</strong>\nEsta opção causa erros e pode corromper os dados de forma imprevisível.\nVocê não pode instalar ou utilizar o MediaWiki a menos que esta opção seja desativada.",
        "config-safe-mode": "<strong>Aviso:</strong> O [http://www.php.net/features.safe-mode safe mode] do PHP está ativado.\nEste modo pode causar problemas, especialmente no upload de arquivos e no suporte a <code>math</code>.",
-       "config-xml-bad": "Módulo XML do PHP está faltando. MediaWiki requer funções deste módulo e não vai funcionar nesta configuração. Pode ser necessário instalar o pacote RPM php-xml.",
+       "config-xml-bad": "Falta o módulo XML do PHP.\nO MediaWiki necessita de funções deste módulo e não funcionará com esta configuração.\nPode precisar de instalar o pacote RPM chamado php-xml.",
        "config-pcre-old": "<strong>Erro fatal:</strong> É necessário o PCRE $1 ou versão posterior.\nO binário do seu PHP foi vinculado com o PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mais informações].",
        "config-pcre-no-utf8": "<strong>Erro fatal:</strong> O módulo PCRE do PHP parece ser compilado sem suporte a PCRE_UTF8.\nO MediaWiki requer suporte a UTF-8 para funcionar corretamente.",
        "config-memory-raised": "A configuração <code>memory_limit</code> do PHP era $1; foi aumentada para $2.",
index dec944a..935d2fb 100644 (file)
@@ -111,9 +111,6 @@ class RefreshLinksJob extends Job {
         * @return bool
         */
        protected function runForTitle( Title $title = null ) {
-               $linkCache = LinkCache::singleton();
-               $linkCache->clear();
-
                if ( is_null( $title ) ) {
                        $this->setLastError( "refreshLinks: Invalid title" );
                        return false;
@@ -126,14 +123,18 @@ class RefreshLinksJob extends Job {
                        wfGetLB()->waitFor( $this->params['masterPos'] );
                }
 
-               $page = WikiPage::factory( $title );
+               // Clear out title cache data from prior job transaction snapshots
+               $linkCache = LinkCache::singleton();
+               $linkCache->clear();
 
-               // Fetch the current revision...
+               // Fetch the current page and revision...
+               $page = WikiPage::factory( $title );
                $revision = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
                if ( !$revision ) {
                        $this->setLastError( "refreshLinks: Article not found {$title->getPrefixedDBkey()}" );
                        return false; // XXX: what if it was just deleted?
                }
+
                $content = $revision->getContent( Revision::RAW );
                if ( !$content ) {
                        // If there is no content, pretend the content is empty
index 130caeb..a382e1f 100644 (file)
@@ -150,6 +150,13 @@ class WANObjectCache {
         *   - c) When the source data that "check" keys represent changes,
         *        the touchCheckKey() method is called on them
         *
+        * Source data entities might exists in a DB that uses snapshot isolation
+        * (e.g. the default REPEATABLE-READ in innoDB). Even for mutable data, that
+        * isolation can largely be maintained by doing the following:
+        *   - a) Calling delete() on entity change *and* creation, before DB commit
+        *   - b) Keeping transaction duration shorter than delete() hold-off TTL
+        * However, pre-snapshot values might still be seen due to delete() relay lag.
+        *
         * For keys that are hot/expensive, consider using getWithSetCallback() instead.
         *
         * @param string $key Cache key
@@ -264,16 +271,16 @@ class WANObjectCache {
         * changes in a significant way. This deletes the key and starts a hold-off
         * period where the key cannot be written to for a few seconds (HOLDOFF_TTL).
         * This is done to avoid the following race condition:
-        *   a) Some DB data changes and delete() is called on a corresponding key
-        *   b) A request refills the key with a stale value from a lagged DB
-        *   c) The stale value is stuck there until the key is expired/evicted
+        *   a) Some DB data changes and delete() is called on a corresponding key
+        *   b) A request refills the key with a stale value from a lagged DB
+        *   c) The stale value is stuck there until the key is expired/evicted
         *
         * This is implemented by storing a special "tombstone" value at the cache
         * key that this class recognizes; get() calls will return false for the key
         * and any set() calls will refuse to replace tombstone values at the key.
         * For this to always avoid writing stale values, the following must hold:
-        *   a) Replication lag is bounded to being less than HOLDOFF_TTL; or
-        *   b) If lag is higher, the DB will have gone into read-only mode already
+        *   a) Replication lag is bounded to being less than HOLDOFF_TTL; or
+        *   b) If lag is higher, the DB will have gone into read-only mode already
         *
         * If called twice on the same key, then the last hold-off TTL takes
         * precedence. For idempotence, the $ttl should not vary for different
@@ -368,9 +375,9 @@ class WANObjectCache {
         *
         * This is similar to touchCheckKey() in that keys using it via
         * getWithSetCallback() will be invalidated. The differences are:
-        *   a) The timestamp will be deleted from all caches and lazily
+        *   a) The timestamp will be deleted from all caches and lazily
         *      re-initialized when accessed (rather than set everywhere)
-        *   b) Thus, dependent keys will be known to be invalid, but not
+        *   b) Thus, dependent keys will be known to be invalid, but not
         *      for how long (they are treated as "just" purged), which
         *      effects any lockTSE logic in getWithSetCallback()
         * The advantage is that this does not place high TTL keys on every cache
@@ -418,8 +425,8 @@ class WANObjectCache {
         *
         * The simplest way to avoid stampedes for hot keys is to use
         * the 'lockTSE' option in $opts. If cache purges are needed, also:
-        *   a) Pass $key into $checkKeys
-        *   b) Use touchCheckKey( $key ) instead of delete( $key )
+        *   a) Pass $key into $checkKeys
+        *   b) Use touchCheckKey( $key ) instead of delete( $key )
         * Following this pattern lets the old cache be used until a
         * single thread updates it as needed. Also consider tweaking
         * the 'lowTTL' parameter.
index b390659..1a52930 100644 (file)
@@ -32,9 +32,7 @@ class MultiWriteBagOStuff extends BagOStuff {
        /** @var BagOStuff[] */
        protected $caches;
        /** @var bool Use async secondary writes */
-       protected $asyncReplication = false;
-       /** @var array[] */
-       protected $asyncWrites = array();
+       protected $asyncWrites = false;
 
        /**
         * $params include:
@@ -61,8 +59,8 @@ class MultiWriteBagOStuff extends BagOStuff {
        public function __construct( $params ) {
                parent::__construct( $params );
 
-               if ( !isset( $params['caches'] ) ) {
-                       throw new InvalidArgumentException( __METHOD__ . ': "caches" parameter required' );
+               if ( empty( $params['caches'] ) || !is_array( $params['caches'] ) ) {
+                       throw new InvalidArgumentException( __METHOD__ . ': "caches" parameter must be an array of caches' );
                }
 
                $this->caches = array();
@@ -72,9 +70,7 @@ class MultiWriteBagOStuff extends BagOStuff {
                                : ObjectCache::newFromParams( $cacheInfo );
                }
 
-               if ( isset( $params['replication'] ) && $params['replication'] === 'async' ) {
-                       $this->asyncReplication = true;
-               }
+               $this->asyncWrites = isset( $params['replication'] ) && $params['replication'] === 'async';
        }
 
        /**
@@ -149,11 +145,7 @@ class MultiWriteBagOStuff extends BagOStuff {
         */
        public function lock( $key, $timeout = 6, $expiry = 6, $rclass = '' ) {
                // Lock only the first cache, to avoid deadlocks
-               if ( isset( $this->caches[0] ) ) {
-                       return $this->caches[0]->lock( $key, $timeout, $expiry, $rclass );
-               } else {
-                       return true;
-               }
+               return $this->caches[0]->lock( $key, $timeout, $expiry, $rclass );
        }
 
        /**
@@ -161,11 +153,7 @@ class MultiWriteBagOStuff extends BagOStuff {
         * @return bool
         */
        public function unlock( $key ) {
-               if ( isset( $this->caches[0] ) ) {
-                       return $this->caches[0]->unlock( $key );
-               } else {
-                       return true;
-               }
+               return $this->caches[0]->unlock( $key );
        }
 
        /**
@@ -180,13 +168,11 @@ class MultiWriteBagOStuff extends BagOStuff {
        }
 
        public function getLastError() {
-               return isset( $this->caches[0] ) ? $this->caches[0]->getLastError() : self::ERR_NONE;
+               return $this->caches[0]->getLastError();
        }
 
        public function clearLastError() {
-               if ( isset( $this->caches[0] ) ) {
-                       $this->caches[0]->clearLastError();
-               }
+               $this->caches[0]->clearLastError();
        }
 
        /**
@@ -199,7 +185,7 @@ class MultiWriteBagOStuff extends BagOStuff {
                array_shift( $args );
 
                foreach ( $this->caches as $i => $cache ) {
-                       if ( $i == 0 || !$this->asyncReplication ) {
+                       if ( $i == 0 || !$this->asyncWrites ) {
                                // First store or in sync mode: write now and get result
                                if ( !call_user_func_array( array( $cache, $method ), $args ) ) {
                                        $ret = false;
@@ -208,7 +194,7 @@ class MultiWriteBagOStuff extends BagOStuff {
                                // Secondary write in async mode: do not block this HTTP request
                                $logger = $this->logger;
                                DeferredUpdates::addCallableUpdate(
-                                       function() use ( $cache, $method, $args, $logger ) {
+                                       function () use ( $cache, $method, $args, $logger ) {
                                                if ( !call_user_func_array( array( $cache, $method ), $args ) ) {
                                                        $logger->warning( "Async $method op failed" );
                                                }
index a9af9b1..7d9903f 100644 (file)
  * @file
  */
 
+/**
+ * Redis-based caching module for redis server >= 2.6.12
+ *
+ * @note: avoid use of Redis::MULTI transactions for twemproxy support
+ */
 class RedisBagOStuff extends BagOStuff {
        /** @var RedisConnectionPool */
        protected $redisPool;
@@ -81,7 +86,6 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function get( $key, &$casToken = null, $flags = 0 ) {
-
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
                        return false;
@@ -100,7 +104,6 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function set( $key, $value, $expiry = 0 ) {
-
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
                        return false;
@@ -122,41 +125,7 @@ class RedisBagOStuff extends BagOStuff {
                return $result;
        }
 
-       protected function cas( $casToken, $key, $value, $expiry = 0 ) {
-
-               list( $server, $conn ) = $this->getConnection( $key );
-               if ( !$conn ) {
-                       return false;
-               }
-               $expiry = $this->convertToRelative( $expiry );
-               try {
-                       $conn->watch( $key );
-
-                       if ( $this->serialize( $this->get( $key ) ) !== $casToken ) {
-                               $conn->unwatch();
-                               return false;
-                       }
-
-                       // multi()/exec() will fail atomically if the key changed since watch()
-                       $conn->multi();
-                       if ( $expiry ) {
-                               $conn->setex( $key, $expiry, $this->serialize( $value ) );
-                       } else {
-                               // No expiry, that is very different from zero expiry in Redis
-                               $conn->set( $key, $this->serialize( $value ) );
-                       }
-                       $result = ( $conn->exec() == array( true ) );
-               } catch ( RedisException $e ) {
-                       $result = false;
-                       $this->handleException( $conn, $e );
-               }
-
-               $this->logRequest( 'cas', $key, $server, $result );
-               return $result;
-       }
-
        public function delete( $key ) {
-
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
                        return false;
@@ -175,7 +144,6 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function getMulti( array $keys, $flags = 0 ) {
-
                $batches = array();
                $conns = array();
                foreach ( $keys as $key ) {
@@ -220,7 +188,6 @@ class RedisBagOStuff extends BagOStuff {
         * @return bool
         */
        public function setMulti( array $data, $expiry = 0 ) {
-
                $batches = array();
                $conns = array();
                foreach ( $data as $key => $value ) {
@@ -265,7 +232,6 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function add( $key, $value, $expiry = 0 ) {
-
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
                        return false;
@@ -273,11 +239,11 @@ class RedisBagOStuff extends BagOStuff {
                $expiry = $this->convertToRelative( $expiry );
                try {
                        if ( $expiry ) {
-                               $conn->multi();
-                               $conn->setnx( $key, $this->serialize( $value ) );
-                               // @FIXME: this always bumps the TTL; use Redis 2.8 or Lua
-                               $conn->expire( $key, $expiry );
-                               $result = ( $conn->exec() == array( true, true ) );
+                               $result = $conn->set(
+                                       $key,
+                                       $this->serialize( $value ),
+                                       array( 'nx', 'ex' => $expiry )
+                               );
                        } else {
                                $result = $conn->setnx( $key, $this->serialize( $value ) );
                        }
@@ -303,7 +269,6 @@ class RedisBagOStuff extends BagOStuff {
         * @return int|bool New value or false on failure
         */
        public function incr( $key, $value = 1 ) {
-
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
                        return false;
@@ -323,14 +288,6 @@ class RedisBagOStuff extends BagOStuff {
                return $result;
        }
 
-       public function merge( $key, $callback, $exptime = 0, $attempts = 10 ) {
-               if ( !is_callable( $callback ) ) {
-                       throw new Exception( "Got invalid callback." );
-               }
-
-               return $this->mergeViaCas( $key, $callback, $exptime, $attempts );
-       }
-
        public function modifySimpleRelayEvent( array $event ) {
                if ( array_key_exists( 'val', $event ) ) {
                        $event['val'] = serialize( $event['val'] ); // this class uses PHP serialization
@@ -381,7 +338,9 @@ class RedisBagOStuff extends BagOStuff {
 
                        // If automatic failover is enabled, check that the server's link
                        // to its master (if any) is up -- but only if there are other
-                       // viable candidates left to consider.
+                       // viable candidates left to consider. Also, getMasterLinkStatus()
+                       // does not work with twemproxy, though $candidates will be empty
+                       // by now in such cases.
                        if ( $this->automaticFailover && $candidates ) {
                                try {
                                        if ( $this->getMasterLinkStatus( $conn ) === 'down' ) {
index 29a38ba..56b9520 100644 (file)
@@ -1235,18 +1235,33 @@ class Article implements Page {
 
                Hooks::run( 'ShowMissingArticle', array( $this ) );
 
-               // Give extensions a chance to hide their (unrelated) log entries
-               $logTypes = array( 'delete', 'move' );
-               $conds = array( "log_action != 'revision'" );
-               Hooks::run( 'Article::MissingArticleConditions', array( &$conds, $logTypes ) );
-
-               # Show delete and move logs
-               LogEventsList::showLogExtract( $outputPage, $logTypes, $title, '',
-                       array( 'lim' => 10,
-                               'conds' => $conds,
-                               'showIfEmpty' => false,
-                               'msgKey' => array( 'moveddeleted-notice' ) )
-               );
+               # Show delete and move logs if there were any such events.
+               # The logging query can DOS the site when bots/crawlers cause 404 floods,
+               # so be careful showing this. 404 pages must be cheap as they are hard to cache.
+               $cache = ObjectCache::getMainStashInstance();
+               $key = wfMemcKey( 'page-recent-delete', md5( $title->getPrefixedText() ) );
+               $loggedIn = $this->getContext()->getUser()->isLoggedIn();
+               if ( $loggedIn || $cache->get( $key ) ) {
+                       $logTypes = array( 'delete', 'move' );
+                       $conds = array( "log_action != 'revision'" );
+                       // Give extensions a chance to hide their (unrelated) log entries
+                       Hooks::run( 'Article::MissingArticleConditions', array( &$conds, $logTypes ) );
+                       LogEventsList::showLogExtract(
+                               $outputPage,
+                               $logTypes,
+                               $title,
+                               '',
+                               array(
+                                       'lim' => 10,
+                                       'conds' => $conds,
+                                       'showIfEmpty' => false,
+                                       'msgKey' => array( $loggedIn
+                                               ? 'moveddeleted-notice'
+                                               : 'moveddeleted-notice-recent'
+                                       )
+                               )
+                       );
+               }
 
                if ( !$this->mPage->hasViewableContent() && $wgSend404Code && !$validUserPage ) {
                        // If there's no backing content, send a 404 Not Found
index 43b12b2..9b9e3cb 100644 (file)
@@ -712,7 +712,7 @@ EOT
                $canUpload = $this->getTitle()->quickUserCan( 'upload', $this->getContext()->getUser() );
                if ( $canUpload && UploadBase::userCanReUpload(
                                $this->getContext()->getUser(),
-                               $this->mPage->getFile()->name )
+                               $this->mPage->getFile() )
                ) {
                        $ulink = Linker::makeExternalLink(
                                $this->getUploadUrl(),
index 69b675b..d1cec60 100644 (file)
@@ -1765,7 +1765,6 @@ class WikiPage implements Page, IDBAccessObject {
 
                $dbw = wfGetDB( DB_MASTER );
                $now = wfTimestampNow();
-               $this->mTimestamp = $now;
 
                if ( $flags & EDIT_UPDATE ) {
                        // Update article, but only if changed.
@@ -1844,6 +1843,7 @@ class WikiPage implements Page, IDBAccessObject {
                                $user->incEditCount();
 
                                $dbw->commit( __METHOD__ );
+                               $this->mTimestamp = $now;
                        } else {
                                // Bug 32948: revision ID must be set to page {{REVISIONID}} and
                                // related variables correctly
@@ -1938,6 +1938,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $user->incEditCount();
 
                        $dbw->commit( __METHOD__ );
+                       $this->mTimestamp = $now;
 
                        // Update links, etc.
                        $this->doEditUpdates( $revision, $user, array( 'created' => true ) );
@@ -2872,6 +2873,10 @@ class WikiPage implements Page, IDBAccessObject {
                        $dbw->commit( __METHOD__ );
                }
 
+               // Show log excerpt on 404 pages rather than just a link
+               $key = wfMemcKey( 'page-recent-delete', md5( $logTitle->getPrefixedText() ) );
+               ObjectCache::getMainStashInstance()->set( $key, 1, 86400 );
+
                $this->doDeleteUpdates( $id, $content );
 
                Hooks::run( 'ArticleDeleteComplete', array( &$this, &$user, $reason, $id, $content, $logEntry ) );
@@ -3218,10 +3223,10 @@ class WikiPage implements Page, IDBAccessObject {
         */
        public static function onArticleEdit( Title $title, Revision $revision = null ) {
                // Invalidate caches of articles which include this page
-               DeferredUpdates::addHTMLCacheUpdate( $title, 'templatelinks' );
+               DeferredUpdates::addUpdate( new HTMLCacheUpdate( $title, 'templatelinks' ) );
 
                // Invalidate the caches of all pages which redirect here
-               DeferredUpdates::addHTMLCacheUpdate( $title, 'redirect' );
+               DeferredUpdates::addUpdate( new HTMLCacheUpdate( $title, 'redirect' ) );
 
                // Purge squid for this page only
                $title->purgeSquid();
diff --git a/includes/registration/CoreVersionChecker.php b/includes/registration/CoreVersionChecker.php
new file mode 100644 (file)
index 0000000..a7a926c
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+use Composer\Semver\VersionParser;
+use Composer\Semver\Constraint\VersionConstraint;
+
+/**
+ * @since 1.26
+ */
+class CoreVersionChecker {
+
+       /**
+        * @var VersionConstraint|bool representing $wgVersion
+        */
+       private $coreVersion = false;
+
+       /**
+        * @var VersionParser
+        */
+       private $versionParser;
+
+       /**
+        * @param string $coreVersion Current version of core
+        */
+       public function __construct( $coreVersion ) {
+               $this->versionParser = new VersionParser();
+               try {
+                       $this->coreVersion = new VersionConstraint(
+                               '==',
+                               $this->versionParser->normalize( $coreVersion )
+                       );
+               } catch ( UnexpectedValueException $e ) {
+                       // Non-parsable version, don't fatal.
+               }
+       }
+
+       /**
+        * Check that the provided constraint is compatible with the current version of core
+        *
+        * @param string $constraint Something like ">= 1.26"
+        * @return bool
+        */
+       public function check( $constraint ) {
+               if ( $this->coreVersion === false ) {
+                       // Couldn't parse the core version, so we can't check anything
+                       return true;
+               }
+
+               return $this->versionParser->parseConstraints( $constraint )
+                       ->matches( $this->coreVersion );
+       }
+}
index ca84a51..a286f6b 100644 (file)
@@ -192,6 +192,16 @@ class ExtensionProcessor implements Processor {
                );
        }
 
+       public function getRequirements( array $info ) {
+               $requirements = array();
+               $key = ExtensionRegistry::MEDIAWIKI_CORE;
+               if ( isset( $info['requires'][$key] ) ) {
+                       $requirements[$key] = $info['requires'][$key];
+               }
+
+               return $requirements;
+       }
+
        protected function extractHooks( array $info ) {
                if ( isset( $info['Hooks'] ) ) {
                        foreach ( $info['Hooks'] as $name => $value ) {
index 787a4b0..23e29d8 100644 (file)
  */
 class ExtensionRegistry {
 
+       /**
+        * "requires" key that applies to MediaWiki core/$wgVersion
+        */
+       const MEDIAWIKI_CORE = 'MediaWiki';
+
        /**
         * Version of the highest supported manifest version
         */
@@ -156,8 +161,11 @@ class ExtensionRegistry {
         * @throws Exception
         */
        public function readFromQueue( array $queue ) {
+               global $wgVersion;
                $autoloadClasses = array();
                $processor = new ExtensionProcessor();
+               $incompatible = array();
+               $coreVersionParser = new CoreVersionChecker( $wgVersion );
                foreach ( $queue as $path => $mtime ) {
                        $json = file_get_contents( $path );
                        if ( $json === false ) {
@@ -179,8 +187,27 @@ class ExtensionRegistry {
                        // Set up the autoloader now so custom processors will work
                        $GLOBALS['wgAutoloadClasses'] += $autoload;
                        $autoloadClasses += $autoload;
+                       // Check any constraints against MediaWiki core
+                       $requires = $processor->getRequirements( $info );
+                       if ( isset( $requires[self::MEDIAWIKI_CORE] )
+                               && !$coreVersionParser->check( $requires[self::MEDIAWIKI_CORE] )
+                       ) {
+                               // Doesn't match, mark it as incompatible.
+                               $incompatible[] = "{$info['name']} is not compatible with the current "
+                                       . "MediaWiki core (version {$wgVersion}), it requires: ". $requires[self::MEDIAWIKI_CORE]
+                                       . '.';
+                               continue;
+                       }
+                       // Compatible, read and extract info
                        $processor->extractInfo( $path, $info, $version );
                }
+               if ( $incompatible ) {
+                       if ( count( $incompatible ) === 1 ) {
+                               throw new Exception( $incompatible[0] );
+                       } else {
+                               throw new Exception( implode( "\n", $incompatible ) );
+                       }
+               }
                $data = $processor->getExtractedInfo();
                // Need to set this so we can += to it later
                $data['globals']['wgAutoloadClasses'] = array();
index e1aaca7..e5669d2 100644 (file)
@@ -30,4 +30,14 @@ interface Processor {
         *              'attributes' - registration info which isn't a global variable
         */
        public function getExtractedInfo();
+
+       /**
+        * Get the requirements for the provided info
+        *
+        * @since 1.26
+        * @param array $info
+        * @return array Where keys are the name to have a constraint on,
+        *              like 'MediaWiki'. Values are a constraint string like "1.26.1".
+        */
+       public function getRequirements( array $info );
 }
index 1886436..1f48514 100644 (file)
@@ -283,8 +283,8 @@ class ResourceLoader implements LoggerAwareInterface {
                $this->register( include "$IP/resources/Resources.php" );
                $this->register( include "$IP/resources/ResourcesOOUI.php" );
                // Register extension modules
-               Hooks::run( 'ResourceLoaderRegisterModules', array( &$this ) );
                $this->register( $config->get( 'ResourceModules' ) );
+               Hooks::run( 'ResourceLoaderRegisterModules', array( &$this ) );
 
                if ( $config->get( 'EnableJavaScriptTest' ) === true ) {
                        $this->registerTestModules();
@@ -747,18 +747,18 @@ class ResourceLoader implements LoggerAwareInterface {
 
                if ( $context->getImageObj() && $this->errors ) {
                        // We can't show both the error messages and the response when it's an image.
-                       $errorText = '';
-                       foreach ( $this->errors as $error ) {
-                               $errorText .= $error . "\n";
-                       }
-                       $response = $errorText;
+                       $response = implode( "\n\n",  $this->errors );
                } elseif ( $this->errors ) {
-                       // Prepend comments indicating errors
-                       $errorText = '';
-                       foreach ( $this->errors as $error ) {
-                               $errorText .= self::makeComment( $error );
+                       $errorText = implode( "\n\n", $this->errors );
+                       $errorResponse = self::makeComment( $errorText );
+                       if ( $context->shouldIncludeScripts() ) {
+                               $errorResponse .= 'if (window.console && console.error) {'
+                                       . Xml::encodeJsCall( 'console.error', array( $errorText ) )
+                                       . "}\n";
                        }
-                       $response = $errorText . $response;
+
+                       // Prepend error info to the response
+                       $response = $errorResponse . $response;
                }
 
                $this->errors = array();
index 1a4d1f1..1d3ffb5 100644 (file)
@@ -857,14 +857,35 @@ abstract class ResourceLoaderModule {
         * @return string Hash
         */
        protected static function safeFileHash( $filePath ) {
+               static $cache;
+
+               if ( !$cache ) {
+                       $cache = ObjectCache::newAccelerator( CACHE_NONE );
+               }
+
+               MediaWiki\suppressWarnings();
+               $mtime = filemtime( $filePath );
+               MediaWiki\restoreWarnings();
+               if ( !$mtime ) {
+                       return '';
+               }
+
+               $cacheKey = wfGlobalCacheKey( 'resourceloader', __METHOD__, $filePath );
+               $cachedHash = $cache->get( $cacheKey );
+               if ( isset( $cachedHash['mtime'] ) && $cachedHash['mtime'] === $mtime ) {
+                       return $cachedHash['hash'];
+               }
+
                MediaWiki\suppressWarnings();
                $contents = file_get_contents( $filePath );
                MediaWiki\restoreWarnings();
-               if ( $contents !== false ) {
-                       $hash = hash( 'md4', $contents );
-               } else {
-                       $hash = '';
+               if ( !$contents ) {
+                       return '';
                }
+
+               $hash = hash( 'md4', $contents );
+               $cache->set( $cacheKey, array( 'mtime' => $mtime, 'hash' => $hash ), 60 * 60 * 24 );
+
                return $hash;
        }
 }
index 1754471..92cb8bf 100644 (file)
@@ -369,7 +369,10 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        if ( $data['CCMe'] && $to != $from ) {
                                $cc_subject = $context->msg( 'emailccsubject' )->rawParams(
                                        $target->getName(), $subject )->text();
+
+                               // target and sender are equal, because this is the CC for the sender
                                Hooks::run( 'EmailUserCC', array( &$from, &$from, &$cc_subject, &$text ) );
+
                                $ccStatus = UserMailer::send( $from, $from, $cc_subject, $text );
                                $status->merge( $ccStatus );
                        }
index 4cdf6dd..e2bc629 100644 (file)
@@ -42,6 +42,7 @@ class SpecialImport extends SpecialPage {
        private $history = true;
        private $includeTemplates = false;
        private $pageLinkDepth;
+       private $importSources;
 
        /**
         * Constructor
@@ -66,6 +67,9 @@ class SpecialImport extends SpecialPage {
 
                $this->getOutput()->addModules( 'mediawiki.special.import' );
 
+               $this->importSources = $this->getConfig()->get( 'ImportSources' );
+               Hooks::run( 'ImportSources', array( &$this->importSources ) );
+
                $user = $this->getUser();
                if ( !$user->isAllowedAny( 'import', 'importupload' ) ) {
                        throw new PermissionsError( 'import' );
@@ -136,16 +140,17 @@ class SpecialImport extends SpecialPage {
                        }
                        $this->interwiki = $this->fullInterwikiPrefix = $request->getVal( 'interwiki' );
                        // does this interwiki have subprojects?
-                       $importSources = $this->getConfig()->get( 'ImportSources' );
-                       $hasSubprojects = array_key_exists( $this->interwiki, $importSources );
-                       if ( !$hasSubprojects && !in_array( $this->interwiki, $importSources ) ) {
+                       $hasSubprojects = array_key_exists( $this->interwiki, $this->importSources );
+                       if ( !$hasSubprojects && !in_array( $this->interwiki, $this->importSources ) ) {
                                $source = Status::newFatal( "import-invalid-interwiki" );
                        } else {
                                if ( $hasSubprojects ) {
                                        $this->subproject = $request->getVal( 'subproject' );
                                        $this->fullInterwikiPrefix .= ':' . $request->getVal( 'subproject' );
                                }
-                               if ( $hasSubprojects && !in_array( $this->subproject, $importSources[$this->interwiki] ) ) {
+                               if ( $hasSubprojects &&
+                                       !in_array( $this->subproject, $this->importSources[$this->interwiki] )
+                               ) {
                                        $source = Status::newFatal( "import-invalid-interwiki" );
                                } else {
                                        $this->history = $request->getCheck( 'interwikiHistory' );
@@ -306,7 +311,6 @@ class SpecialImport extends SpecialPage {
                $user = $this->getUser();
                $out = $this->getOutput();
                $this->addHelpLink( '//meta.wikimedia.org/wiki/Special:MyLanguage/Help:Import', true );
-               $importSources = $this->getConfig()->get( 'ImportSources' );
 
                if ( $user->isAllowed( 'importupload' ) ) {
                        $mappingSelection = $this->getMappingFormPart( 'upload' );
@@ -356,12 +360,12 @@ class SpecialImport extends SpecialPage {
                                        Xml::closeElement( 'fieldset' )
                        );
                } else {
-                       if ( empty( $importSources ) ) {
+                       if ( empty( $this->importSources ) ) {
                                $out->addWikiMsg( 'importnosources' );
                        }
                }
 
-               if ( $user->isAllowed( 'import' ) && !empty( $importSources ) ) {
+               if ( $user->isAllowed( 'import' ) && !empty( $this->importSources ) ) {
                        # Show input field for import depth only if $wgExportMaxLinkDepth > 0
                        $importDepth = '';
                        if ( $this->getConfig()->get( 'ExportMaxLinkDepth' ) > 0 ) {
@@ -403,7 +407,7 @@ class SpecialImport extends SpecialPage {
                        );
 
                        $needSubprojectField = false;
-                       foreach ( $importSources as $key => $value ) {
+                       foreach ( $this->importSources as $key => $value ) {
                                if ( is_int( $key ) ) {
                                        $key = $value;
                                } elseif ( $value !== $key ) {
@@ -435,7 +439,7 @@ class SpecialImport extends SpecialPage {
                                );
 
                                $subprojectsToAdd = array();
-                               foreach ( $importSources as $key => $value ) {
+                               foreach ( $this->importSources as $key => $value ) {
                                        if ( is_array( $value ) ) {
                                                $subprojectsToAdd = array_merge( $subprojectsToAdd, $value );
                                        }
index 8cad616..9e72807 100644 (file)
@@ -271,7 +271,7 @@ class SpecialPasswordReset extends FormSpecialPage {
                        round( $this->getConfig()->get( 'NewPasswordExpiry' ) / 86400 )
                );
 
-               $title = $this->msg( 'passwordreset-emailtitle' );
+               $title = $this->msg( 'passwordreset-emailtitle' )->inLanguage( $userLanguage );
 
                $this->result = $firstUser->sendMail( $title->text(), $this->email->text() );
 
index 6606c7f..fd0745f 100644 (file)
@@ -366,14 +366,14 @@ class SpecialSearch extends SpecialPage {
                                $out->wrapWikiMsg( "==$1==\n", 'textmatches' );
                        }
 
-                       // show interwiki results if any
-                       if ( $textMatches->hasInterwikiResults() ) {
-                               $out->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults(), $term ) );
-                       }
                        // show results
                        if ( $numTextMatches > 0 ) {
                                $out->addHTML( $this->showMatches( $textMatches ) );
                        }
+                       // show interwiki results if any
+                       if ( $textMatches->hasInterwikiResults() ) {
+                               $out->addHTML( $this->showInterwiki( $textMatches->getInterwikiResults(), $term ) );
+                       }
 
                        $textMatches->free();
                }
@@ -388,6 +388,7 @@ class SpecialSearch extends SpecialPage {
                        }
                }
 
+               $out->addHTML( '<div class="visualClear"></div>\n' );
                if ( $prevnext ) {
                        $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
                }
index eaa9007..cf3804e 100644 (file)
@@ -96,22 +96,14 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                $includesCachedPages = false;
 
                foreach ( $groups as $group => $sortedPages ) {
-                       $total = count( $sortedPages );
-                       $middle = ceil( $total / 2 );
-                       $count = 0;
 
                        $out->wrapWikiMsg(
                                "<h2 class=\"mw-specialpagesgroup\" id=\"mw-specialpagesgroup-$group\">$1</h2>\n",
                                "specialpages-group-$group"
                        );
                        $out->addHTML(
-                               Html::openElement(
-                                       'table',
-                                       array( 'style' => 'width:100%;', 'class' => 'mw-specialpages-table' )
-                               ) . "\n" .
-                               Html::openElement( 'tr' ) . "\n" .
-                               Html::openElement( 'td', array( 'style' => 'width:30%;vertical-align:top' ) ) . "\n" .
-                               Html::openElement( 'ul' ) . "\n"
+                               Html::openElement( 'div', array( 'class' => 'mw-specialpages-list' ) )
+                               . '<ul>'
                        );
                        foreach ( $sortedPages as $desc => $specialpage ) {
                                list( $title, $restricted, $cached ) = $specialpage;
@@ -132,21 +124,10 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                                                array( 'class' => implode( ' ', $pageClasses ) ),
                                                $link
                                        ) . "\n" );
-
-                               # Split up the larger groups
-                               $count++;
-                               if ( $total > 3 && $count == $middle ) {
-                                       $out->addHTML(
-                                               Html::closeElement( 'ul' ) . Html::closeElement( 'td' ) .
-                                               Html::element( 'td', array( 'style' => 'width:10%' ), '' ) .
-                                               Html::openElement( 'td', array( 'style' => 'width:30%' ) ) . Html::openElement( 'ul' ) . "\n"
-                                       );
-                               }
                        }
                        $out->addHTML(
-                               Html::closeElement( 'ul' ) . Html::closeElement( 'td' ) .
-                               Html::element( 'td', array( 'style' => 'width:30%' ), '' ) .
-                               Html::closeElement( 'tr' ) . Html::closeElement( 'table' ) . "\n"
+                               Html::closeElement( 'ul' ) .
+                               Html::closeElement( 'div' )
                        );
                }
 
index 0410ef0..21f1194 100644 (file)
@@ -674,7 +674,12 @@ class LoginForm extends SpecialPage {
                $u->setRealName( $this->mRealName );
                $u->setToken();
 
+               Hooks::run( 'LocalUserCreated', array( $u, $autocreate ) );
+               $oldUser = $u;
                $wgAuth->initUser( $u, $autocreate );
+               if ( $oldUser !== $u ) {
+                       wfWarn( get_class( $wgAuth ) . '::initUser() replaced the user object' );
+               }
 
                $u->saveSettings();
 
@@ -820,7 +825,12 @@ class LoginForm extends SpecialPage {
                        $retval = self::RESET_PASS;
                        $this->mAbortLoginErrorMsg = 'resetpass-expired';
                } else {
+                       Hooks::run( 'UserLoggedIn', array( $u ) );
+                       $oldUser = $u;
                        $wgAuth->updateUser( $u );
+                       if ( $oldUser !== $u ) {
+                               wfWarn( get_class( $wgAuth ) . '::updateUser() replaced the user object' );
+                       }
                        $wgUser = $u;
                        // This should set it for OutputPage and the Skin
                        // which is needed or the personal links will be
index 0158fdb..1ed392f 100644 (file)
@@ -269,11 +269,13 @@ class UserrightsPage extends SpecialPage {
                $user->invalidateCache();
 
                // update groups in external authentication database
+               Hooks::run( 'UserGroupsChanged', array( $user, $add, $remove, $this->getUser() ) );
                $wgAuth->updateExternalDBGroups( $user, $add, $remove );
 
                wfDebug( 'oldGroups: ' . print_r( $oldGroups, true ) . "\n" );
                wfDebug( 'newGroups: ' . print_r( $newGroups, true ) . "\n" );
-               Hooks::run( 'UserRights', array( &$user, $add, $remove ) );
+               // Deprecated in favor of UserGroupsChanged hook
+               Hooks::run( 'UserRights', array( &$user, $add, $remove ), '1.26' );
 
                if ( $newGroups != $oldGroups ) {
                        $this->addLogEntry( $user, $oldGroups, $newGroups, $reason );
index b06b91e..30a85ae 100644 (file)
@@ -1706,24 +1706,21 @@ abstract class UploadBase {
         * Check if a user is the last uploader
         *
         * @param User $user
-        * @param string $img Image name
+        * @param File $img
         * @return bool
         */
-       public static function userCanReUpload( User $user, $img ) {
+       public static function userCanReUpload( User $user, File $img ) {
                if ( $user->isAllowed( 'reupload' ) ) {
                        return true; // non-conditional
-               }
-               if ( !$user->isAllowed( 'reupload-own' ) ) {
+               } elseif ( !$user->isAllowed( 'reupload-own' ) ) {
                        return false;
                }
-               if ( is_string( $img ) ) {
-                       $img = wfLocalFile( $img );
-               }
+
                if ( !( $img instanceof LocalFile ) ) {
                        return false;
                }
 
-               $img->load( File::READ_LATEST );
+               $img->load();
 
                return $user->getId() == $img->getUser( 'id' );
        }
index f578745..f897a79 100644 (file)
@@ -175,7 +175,6 @@ class UploadFromUrl extends UploadBase {
                $url = $request->getVal( 'wpUploadFileURL' );
 
                return !empty( $url )
-                       && Http::isValidURI( $url )
                        && $wgUser->isAllowed( 'upload_by_url' );
        }
 
diff --git a/includes/utils/AvroValidator.php b/includes/utils/AvroValidator.php
new file mode 100644 (file)
index 0000000..4f8e0b1
--- /dev/null
@@ -0,0 +1,184 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Generate error strings for data that doesn't match the specified
+ * Avro schema. This is very similar to AvroSchema::is_valid_datum(),
+ * but returns error messages instead of a boolean.
+ *
+ * @since 1.26
+ * @author Erik Bernhardson <ebernhardson@wikimedia.org>
+ * @copyright © 2015 Erik Bernhardson and Wikimedia Foundation.
+ */
+class AvroValidator {
+       /**
+        * @param AvroSchema $schema The rules to conform to.
+        * @param mixed $datum The value to validate against $schema.
+        * @return string|string[] An error or list of errors in the
+        *  provided $datum. When no errors exist the empty array is
+        *  returned.
+        */
+       public static function getErrors( AvroSchema $schema, $datum ) {
+               switch ( $schema->type) {
+               case AvroSchema::NULL_TYPE:
+                       if ( !is_null($datum) ) {
+                               return self::wrongType( 'null', $datum );
+                       }
+                       return array();
+               case AvroSchema::BOOLEAN_TYPE:
+                       if ( !is_bool($datum) ) {
+                               return self::wrongType( 'boolean', $datum );
+                       }
+                       return array();
+               case AvroSchema::STRING_TYPE:
+               case AvroSchema::BYTES_TYPE:
+                       if ( !is_string($datum) ) {
+                               return self::wrongType( 'string', $datum );
+                       }
+                       return array();
+               case AvroSchema::INT_TYPE:
+                       if ( !is_int($datum) ) {
+                               return self::wrongType( 'integer', $datum );
+                       }
+                       if ( AvroSchema::INT_MIN_VALUE > $datum
+                               || $datum > AvroSchema::INT_MAX_VALUE
+                       ) {
+                               return self::outOfRange(
+                                       AvroSchema::INT_MIN_VALUE,
+                                       AvroSchema::INT_MAX_VALUE,
+                                       $datum
+                               );
+                       }
+                       return array();
+               case AvroSchema::LONG_TYPE:
+                       if ( !is_int($datum) ) {
+                               return self::wrongType( 'integer', $datum );
+                       }
+                       if ( AvroSchema::LONG_MIN_VALUE > $datum
+                               || $datum > AvroSchema::LONG_MAX_VALUE
+                       ) {
+                               return self::outOfRange(
+                                       AvroSchema::LONG_MIN_VALUE,
+                                       AvroSchema::LONG_MAX_VALUE,
+                                       $datum
+                               );
+                       }
+                       return array();
+               case AvroSchema::FLOAT_TYPE:
+               case AvroSchema::DOUBLE_TYPE:
+                       if ( !is_float($datum) && !is_int($datum) ) {
+                               return self::wrongType( 'float or integer', $datum );
+                       }
+                       return array();
+               case AvroSchema::ARRAY_SCHEMA:
+                       if (!is_array($datum)) {
+                               return self::wrongType( 'array', $datum );
+                       }
+                       $errors = array();
+                       foreach ($datum as $d) {
+                               $result = $this->validate( $schema->items(), $d );
+                               if ( $result ) {
+                                       $errors[] = $result;
+                               }
+                       }
+                       if ( $errors ) {
+                               return $errors;
+                       }
+                       return array();
+               case AvroSchema::MAP_SCHEMA:
+                       if (!is_array($datum)) {
+                               return self::wrongType( 'array', $datum );
+                       }
+                       $errors = array();
+                       foreach ($datum as $k => $v) {
+                       if ( !is_string($k) ) {
+                                       $errors[] = self::wrongType( 'string key', $k );
+                               }
+                               $result = self::getErrors( $schema->values(), $v );
+                               if ( $result ) {
+                                       $errors[$k] = $result;
+                               }
+                       }
+                       return $errors;
+               case AvroSchema::UNION_SCHEMA:
+                       $errors = array();
+                       foreach ($schema->schemas() as $schema) {
+                               $result = self::getErrors( $schema, $datum );
+                               if ( !$result ) {
+                                       return array();
+                               }
+                               $errors[] = $result;
+                       }
+                       if ( $errors ) {
+                               return array( "Expected any one of these to be true", $errors );
+                       }
+                       return "No schemas provided to union";
+               case AvroSchema::ENUM_SCHEMA:
+                       if ( !in_array( $datum, $schema->symbols() ) ) {
+                               $symbols = implode( ', ', $schema->symbols );
+                               return "Expected one of $symbols but recieved $datum";
+                       }
+                       return array();
+               case AvroSchema::FIXED_SCHEMA:
+                       if ( !is_string( $datum ) ) {
+                               return self::wrongType( 'string', $datum );
+                       }
+                       $len = strlen( $datum );
+                       if ( $len !== $schema->size() ) {
+                               return "Expected string of length {$schema->size()}, "
+                                       . "but recieved one of length $len";
+                       }
+                       return array();
+               case AvroSchema::RECORD_SCHEMA:
+               case AvroSchema::ERROR_SCHEMA:
+               case AvroSchema::REQUEST_SCHEMA:
+                       if ( !is_array( $datum ) ) {
+                               return self::wrongType( 'array', $datum );
+                       }
+                       $errors = array();
+                       foreach ( $schema->fields() as $field ) {
+                               $name = $field->name();
+                               if ( !array_key_exists( $name, $datum ) ) {
+                                       $errors[$name] = 'Missing expected field';
+                                       continue;
+                               }
+                               $result = self::getErrors( $field->type(), $datum[$name] );
+                               if ( $result ) {
+                                       $errors[$name] = $result;
+                               }
+                       }
+                       return $errors;
+               default:
+                       return "Unknown avro schema type: {$schema->type}";
+               }
+       }
+
+       public static function typeOf( $datum ) {
+               return is_object( $datum ) ? get_class( $datum ) : gettype( $datum );
+       }
+
+       public static function wrongType( $expected, $datum ) {
+               return "Expected $expected, but recieved " . self::typeOf( $datum );
+       }
+
+       public static function outOfRange( $min, $max, $datum ) {
+               return "Expected value between $min and $max, but recieved $datum";
+       }
+}
index d1a8fd4..f2ee892 100644 (file)
        "invalid-content-data": "Ongeldige inhoud",
        "content-not-allowed-here": "\"$1\" word nie op bladsy [[$2]] toegelaat nie.",
        "editwarning-warning": "As u hierdie bladsy verlaat, verloor u moontlik al die wysigings wat u aangebring het.\nIndien u aangemeld is, kan u hierdie waarskuwing in die \"Wysigings\"-afdeling van u voorkeure afskakel.",
+       "editpage-notsupportedcontentformat-title": "Inhoudsformaat word nie ondersteun nie",
        "content-model-wikitext": "Wikiteks",
        "content-model-text": "eenvoudige teks",
        "content-model-javascript": "JavaScript",
        "upload-too-many-redirects": "Die URL bevat te veel aansture",
        "upload-http-error": "'n HTTP-fout het voorgekom: $1",
        "upload-copy-upload-invalid-domain": "Gekopieerde oplaaie word nie vanuit die domein toegelaat nie.",
+       "upload-dialog-title": "Laai lêer op",
+       "upload-dialog-error": "'n Fout het voorgekom",
+       "upload-dialog-warning": "'n Waarskuwing is uitgereik",
+       "upload-dialog-button-cancel": "Kanselleer",
+       "upload-dialog-button-done": "Gedoen",
+       "upload-dialog-button-save": "Stoor",
+       "upload-dialog-button-upload": "Oplaai",
+       "upload-dialog-label-select-file": "Kies lêer",
+       "upload-dialog-label-infoform-title": "Details",
+       "upload-dialog-label-infoform-name": "Naam",
+       "upload-dialog-label-infoform-description": "Beskrywing",
+       "upload-dialog-label-usage-title": "Gebruik",
+       "upload-dialog-label-usage-filename": "Lêernaam",
        "backend-fail-stream": "Kon nie die lêer $1 uitstroom nie.",
        "backend-fail-backup": "Kon nie 'n rugsteunkopie van die lêer $1 maak nie.",
        "backend-fail-notexists": "Die lêer $1 bestaan nie.",
        "pager-older-n": "{{PLURAL:$1|ouer 1|ouer $1}}",
        "suppress": "Toesig",
        "querypage-disabled": "Hierdie spesiale bladsy is afgeskakel om werkverrigting te verbeter (bediener is oorlaai).",
+       "apihelp-no-such-module": "Module \"$1\" nie gevind nie.",
        "booksources": "Boekbronne",
        "booksources-search-legend": "Soek vir boekbronne",
        "booksources-search": "Soek",
        "rollback-success": "Wysigings deur $1 is teruggerol.\nDie laaste weergawe van $2 is teruggeplaas.",
        "sessionfailure-title": "Sessie het gefaal",
        "sessionfailure": "Dit lyk of daar 'n probleem met u sessie is.\nHierdie aksie is gekanselleer omdat dit 'n veiligheidsrisiko is (moontlike kaping van u sessie).\nGaan een bladsy terug, herlaai die bladsy en probeer dan weer.",
+       "changecontentmodel-reason-label": "Rede:",
        "protectlogpage": "Beskermingboekstaaf",
        "protectlogtext": "Hieronder is 'n lys van veranderinge wat aan die beveilig van bladsye aangebring is.\nSien die [[Special:ProtectedPages|lys van beveiligde bladsye]] vir alle bladsye wat tans operasioneel beveilig is.",
        "protectedarticle": "het [[$1]] beskerm",
        "tooltip-ca-nstab-main": "Bekyk die inhoudbladsy",
        "tooltip-ca-nstab-user": "Bekyk die gebruikerbladsy",
        "tooltip-ca-nstab-media": "Bekyk die mediabladsy",
-       "tooltip-ca-nstab-special": "Hierdie is 'n spesiale bladsy; u kan dit nie wysig nie",
+       "tooltip-ca-nstab-special": "Hierdie is 'n spesiale bladsy wat nie wysig kan word nie",
        "tooltip-ca-nstab-project": "Bekyk die projekbladsy",
        "tooltip-ca-nstab-image": "Bekyk die lêerbladsy",
        "tooltip-ca-nstab-mediawiki": "Bekyk die stelselboodskap",
        "version-entrypoints-header-url": "URL",
        "version-libraries-library": "Biblioteek",
        "version-libraries-version": "Weergawe",
+       "version-libraries-license": "Lisensie",
+       "version-libraries-description": "Beskrywing",
+       "version-libraries-authors": "Outeurs",
        "redirect": "Aanstuur volgens lêer, gebruiker, bladsy of weergawenommer",
        "redirect-legend": "Aanstuur na 'n lêer of bladsy",
        "redirect-summary": "Hierdie spesiale bladsy stuur aan na 'n lêer (as 'n lêernaam verskaf word), 'n bladsy (as 'n weergawe-nommer verskaf word) of 'n gebruikersblad (as 'n gebruiker-ID verskaf word).",
        "tags-tag": "Etiketnaam",
        "tags-display-header": "Weergawe in wysigingslyste",
        "tags-description-header": "Volledige beskrywing van betekenis",
+       "tags-source-header": "Bron",
        "tags-active-header": "Aktief?",
        "tags-hitcount-header": "Geëtiketteerde veranderings",
+       "tags-actions-header": "Aksies",
        "tags-active-yes": "Ja",
        "tags-active-no": "Nee",
+       "tags-source-none": "Nie meer in gebruik nie",
        "tags-edit": "wysig",
+       "tags-delete": "skrap",
+       "tags-activate": "aktiveer",
+       "tags-deactivate": "deaktiveer",
        "tags-hitcount": "$1 {{PLURAL:$1|wysiging|wysigings}}",
+       "tags-create-reason": "Rede:",
+       "tags-create-submit": "Skep",
+       "tags-delete-reason": "Rede:",
+       "tags-activate-reason": "Rede:",
+       "tags-activate-submit": "Aktiveer",
+       "tags-deactivate-reason": "Rede:",
+       "tags-edit-existing-tags-none": "''Geen''",
+       "tags-edit-reason": "Rede:",
        "comparepages": "Vergelyk bladsye",
        "compare-page1": "Bladsy 1",
        "compare-page2": "Bladsy 2",
        "rightsnone": "(geen)",
        "revdelete-summary": "redigeringsopsomming",
        "feedback-adding": "U terugvoer word op die bladsy geplaas...",
+       "feedback-back": "Terug",
        "feedback-bugcheck": "Gaaf! Kontroleer of dit nie dalk een van die [$1 bekende foute] is nie.",
        "feedback-bugnew": "Ek het gekontroleer. Rapporteer 'n nuwe fout.",
        "feedback-bugornote": "As u reg is om 'n tegniese probleem in detail te beskryf, [$1 rapporteer 'n fout].\nAnders kan u die eenvoudige vorm hieronder gebruik. U kommentaar sal by die bladsy \"[$3 $2]\", saam met u gebruikersnaam en die webblaaier wat u gebruik gevoeg word.",
        "feedback-subject": "Onderwerp:",
        "feedback-submit": "Dien in",
        "feedback-thanks": "Dankie! U terugvoer is op die bladsy \"[$2 $1]\" geplaas.",
+       "feedback-thanks-title": "Baie dankie!",
        "searchsuggest-search": "Soek",
        "searchsuggest-containing": "bevat...",
        "api-error-badaccess-groups": "U word nie toegelaat om lêers te laai op hierdie wiki.",
        "api-error-copyuploaddisabled": "Oplaai via URL is gedeaktiveer op hierdie bediener.",
        "api-error-duplicate": "Daar {{PLURAL:$1|is al [$2 'n lêer]|is al [$2 lêers]}} met dieselfde inhoud op die wiki.",
        "api-error-duplicate-archive": "Daar {{PLURAL:$1|was [$2 'n ander lêer]|was [$2 ander lêers]}} op hierdie webtuiste met dieselfde inhoud, maar {{PLURAL:$1|dit is|dit is}} geskrap.",
-       "api-error-duplicate-archive-popup-title": "Duplikaat{{PLURAL:$1|lêer|lêers}} wat al verwyder is.",
-       "api-error-duplicate-popup-title": "Duplikaat{{PLURAL:$1|lêer|lêers}}",
        "api-error-empty-file": "Die lêer wat u probeer oplaai is leeg.",
        "api-error-emptypage": "Die skep van leë nuwe bladsye word nie toegelaat nie.",
        "api-error-fetchfileerror": "Interne fout: Iets het verkeerd gegaan met die haal van die lêer.",
        "mediastatistics-header-executable": "Uitvoerbare lêers",
        "mediastatistics-header-archive": "Gekompakteerde lêers",
        "json-error-syntax": "Sintaksfout",
+       "headline-anchor-title": "Skakel na die afdeling",
        "special-characters-group-latin": "Latyns",
        "special-characters-group-latinextended": "Latyns uitgebreid",
        "special-characters-group-ipa": "IFA",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-no-date": "Geen datum gekies nie",
        "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
-       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
+       "mw-widgets-titleinput-description-new-page": "bladsy bestaan nog nie",
+       "mw-widgets-titleinput-description-redirect": "aanstuur na $1"
 }
index 1a649c8..8818f13 100644 (file)
        "api-error-badtoken": "የውስጥ ስህተት: መጥፎ ጥቅል።",
        "api-error-copyuploaddisabled": "በሰነድ አድራሻ መላክ በዚህ አቅራቢ ላይ አልተፈቀደም።",
        "api-error-duplicate": "በዚህ ድረ ገጽ ላይ የዚህ ዓይነት ይዞታ {{PLURAL:$1| [$2 ያለው ፋይል አለ።] | [$2 ያላቸው ፍይሎች አሉ።]}}",
-       "api-error-duplicate-popup-title": "አንድ አይነት {{PLURAL:$1|ፋይል|ፋይሎች}}",
        "api-error-empty-file": "የላኩት ፋይል ባዶ ነበር።",
        "api-error-fetchfileerror": "የውስጥ ስህተት: ፍይሉ ሲመጣ ችግር ተፈጠረ።",
        "api-error-file-too-large": "የላኩት ፋይል በጣም ትልቅ ነበር።",
index 3351302..1b89eec 100644 (file)
        "api-error-copyuploaddisabled": "A puyada por URL ye desactivada en iste servidor.",
        "api-error-duplicate": "Ya existe{{PLURAL:$1| [$2 unatro fichero]|[$2 belatros fichers]}} en o puesto con o mesmo conteniu.",
        "api-error-duplicate-archive": "Ya {{PLURAL:$1|existiba [$2 unatro fichero]|existiban [$2 atros fichers]}} en o puesto con o mesmo conteniu, pero {{PLURAL:$1|estió|estioron}} {{PLURAL:$1|eliminau|eliminaus}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Fichero|Fichers}} {{PLURAL:$1|duplicau|duplicaus}} que ya s'han eliminau",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fichero|Fichers}} {{PLURAL:$1|duplicau|duplicaus}}",
        "api-error-empty-file": "O fichero que ninvió yera vuedo.",
        "api-error-emptypage": "No se permite a creyación de pachinas nuevas en blanco.",
        "api-error-fetchfileerror": "Error interna: Bella cosa salió malament mientres s'obteneba o fichero.",
index ad3d672..c651e0c 100644 (file)
        "api-error-copyuploaddisabled": "تم تعطيل تحميل من رابط على هذا الخادم.",
        "api-error-duplicate": "هناك {{PLURAL:$1|هو [$2 ملف آخر [|كذلك]$2 بعض الملفات الأخرى]}} مسبقاً على الموقع بنفس المضمون.",
        "api-error-duplicate-archive": "هناك {{PLURAL:$1|كان [$2 ملف آخر] |كذلك [$2 بعض الملفات الأخرى]}} مسبقاً على الموقع بنفس المضمون، ولكن {{PLURAL:$1|أنه تم | إجراء}} الحذف لها.",
-       "api-error-duplicate-archive-popup-title": "تكرار {{PLURAL:$1|ملف|ملفات}} قد تم حذفه مسبقاً",
-       "api-error-duplicate-popup-title": "ارفع {{PLURAL:$1|الملف|الملف|الملفين|الملفات|الملفات|الملفات}}",
        "api-error-empty-file": "كان ملف الذي قمت بإرسال فارغة.",
        "api-error-emptypage": "إنشاء صفحات فارغة جديدة، غير مسموح به.",
        "api-error-fetchfileerror": "خطأ داخلي: قد حدث خطأ أثناء إحضار الملف.",
index f8a88f2..5ea9db5 100644 (file)
        "api-error-copyuploaddisabled": "ইউ আৰ এলৰ মাধ্যমেৰে আপল'ড কৰাটো এই চাৰ্ভাৰত নিষ্ক্ৰিয় কৰা হৈছে।",
        "api-error-duplicate": "এই চাইটত একে বিষয়বস্তুৰ {{PLURAL:$1|[$2 আন এটা ফাইল]|[$2 আন কিছুমান ফাইল]}} ইতিমধ্যেই আছে।",
        "api-error-duplicate-archive": "এই চাইটত একে বিষয়বস্তুৰ {{PLURAL:$1|[$2 আন এটা ফাইল]|[$2 আন কিছুমান ফাইল]}} ইতিমধ্যেই আছিল, কিন্তু {{PLURAL:$1|সেইটো|সেইবোৰ}} বিলোপ কৰা হৈছে।",
-       "api-error-duplicate-archive-popup-title": "প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}} যিসমূহ ইতিমধ্যে বিলোপ কৰা হৈছে।",
-       "api-error-duplicate-popup-title": "প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।",
        "api-error-empty-file": "আপুনি দাখিল কৰা ফাইলটো খালী ।",
        "api-error-emptypage": "নতুন, খালি পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।",
        "api-error-fetchfileerror": "আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।",
index f615bed..476c3f6 100644 (file)
        "api-error-copyuploaddisabled": "Xubir d'una URL ta desactivao nesti sirvidor.",
        "api-error-duplicate": "Yá hai {{PLURAL:$1|[$2 otru ficheru]|[$2 otros ficheros]}} nesti sitiu col mesmu conteníu.",
        "api-error-duplicate-archive": "Había {{PLURAL:$1|[$2 otru ficheru]|[$2 otros ficheros]}} nesti sitiu col mesmu conteníu, pero se {{PLURAL:$1|desanició|desaniciaron}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Ficheru duplicáu|Ficheros duplicaos}} que yá se {{PLURAL:$1|desanició|desaniciaron}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Ficheru duplicáu|Ficheros duplicaos}}",
        "api-error-empty-file": "El ficheru qu'unviasti taba baleru.",
        "api-error-emptypage": "Nun se permite la creación de páxines nueves baleres.",
        "api-error-fetchfileerror": "Fallu internu: daqué nun funcionó al buscar el ficheru.",
index e331139..e513bcb 100644 (file)
        "api-error-copyuploaddisabled": "URL द्वारा इस सर्वर पर अपलोड अक्षम है।",
        "api-error-duplicate": "वहाँ {{PLURAL:$1| [ $2 अन्य फ़ाइल] | रहे हैं [ $2 कुछ अन्य फ़ाइलों]}} एक ही सामग्री के साथ साइट पर पहले से ही है.",
        "api-error-duplicate-archive": "वहाँ {{PLURAL:$1|था [$2 कुछ अन्य फ़ाइल] |were [$2 कुछ अन्य फ़ाइलें]}}, पहले से ही {{PLURAL:$1|यह was|they थे}} परन्तु  हटा दिये गये",
-       "api-error-duplicate-archive-popup-title": "डुप्लिकेट {{PLURAL:$1| फ़ाइल | फ़ाइलें}} है कि पहले से ही हटा दिया गया है",
-       "api-error-duplicate-popup-title": "डुप्लिकेट {{PLURAL:$1| फ़ाइल | फ़ाइल}}",
        "api-error-empty-file": "आप कय दीहल फ़ाइल खाली रहा।",
        "api-error-emptypage": "नँवा अव खाली पन्ना बनावै कय अनुमति नाइ है",
        "api-error-fetchfileerror": "आंतरिक त्रुटि: जब फ़ाइल लाया जा रहा तो कुछ गलत हो गया था।",
index a259dfe..ea4a144 100644 (file)
        "viewtalkpage": "دانیشیغا باخ",
        "otherlanguages": "آیری دیل‌لرده",
        "redirectedfrom": "($1-دن يوْل‌لاندیریلمیش)",
-       "redirectpagesub": "یوْل‌لاندیرما صحیفه‌سی",
+       "redirectpagesub": "یوْل‌لاندیرما صفحه‌سی",
        "redirectto": "مسیزپرین دَییشیب:",
        "lastmodifiedat": "بۇ صفحه‌‌ سوْن دفعه $1، $2 تاریخینده دَییشیلمیشدیر.",
        "viewcount": "بۇ صحیفه {{PLURAL:$1|بیر|$1}} دفعه گؤرولوبدور.",
        "mainpage": "آنا صفحه",
        "mainpage-description": "آنا صفحه",
        "policy-url": "Project:قایدالار",
-       "portal": "تÙ\88Ù\92Ù¾Ù\84Ù\88Ù\85 پوْرتالی",
-       "portal-url": "Project:تÙ\88Ù\92Ù¾Ù\84Ù\88Ù\85 پوْرتالی",
+       "portal": "اÛ\8cØ´Ù\84دÙ\86Ù\84ر پوْرتالی",
+       "portal-url": "Project:اÛ\8cØ´Ù\84دÙ\86Ù\84ر پوْرتالی",
        "privacy": "گیزلیلیک سیاستی",
        "privacypage": "Project:گیزلیلیک سیاستی",
        "badaccess": "ایجازه خطاسی",
        "sort-ascending": "چوْخالان سیرالاماق",
        "nstab-main": "صفحه",
        "nstab-user": "ایشلدن صفحه‌سی",
-       "nstab-media": "Ù\85ئدÛ\8cا ØµØ­Û\8cÙ\81Ù\87â\80\8cسÛ\8c",
+       "nstab-media": "Ù\85دÛ\8cا",
        "nstab-special": "اؤزل صفحه",
-       "nstab-project": "پروژه صحیفه‌سی",
+       "nstab-project": "پروژه صفحه‌سی",
        "nstab-image": "فایل",
        "nstab-mediawiki": "مئساژ",
        "nstab-template": "شابلون",
        "nstab-help": "یاردیم صفحه‌سی",
        "nstab-category": "بؤلمه",
+       "mainpage-nstab": "آنا صفحه",
        "nosuchaction": "بئله چالیشما یوْخدور",
        "nosuchactiontext": "URL طرفیندن بیلینن ایش گئچرسیزدیر.\nURL-ی یانلیش یازمیش، یا یانلیش بیر باغلانتی ایله گلمیش، اوْلابیلرسیز.\nهم‌ده بۇ، {{SITENAME}} سایتی ایشلدن یازیلیمین خطاسینی گؤستره بیلر.",
        "nosuchspecialpage": "بئله اؤزل صحیفه یوْخدور",
        "action-read": "بو صحیفه‌نی اوخو",
        "action-edit": "بو صحیفه‌نی دَییشدیر",
        "action-createpage": "صفحه یارات",
-       "action-createtalk": "دانیشیق صحیفه‌سی یاراد",
+       "action-createtalk": "دانیشیق صفحه‌سی یارات",
        "action-createaccount": "بو ایستیفاده‌چی حسابینی یاراد",
        "action-history": "بو صفحه نین گئچمیشین گور",
        "action-minoredit": "بو دَییشیکلیگی، کیچیک اولاراق نیشانلا",
        "rc-enhanced-expand": "تفصیل‌لری گؤستر",
        "rc-enhanced-hide": "تفصیل‌لری گیزلت",
        "rc-old-title": "ایلک‌جه «$1» آدی‌له یارانمیشدیر",
-       "recentchangeslinked": "ایلگیلی دَییشیکلیکلر",
-       "recentchangeslinked-feed": "ایلگیلی دَییشیکلیکلر",
-       "recentchangeslinked-toolbox": "ایلگیلی دَییشیکلیکلر",
+       "recentchangeslinked": "مربوط دَییشیکلیکلر",
+       "recentchangeslinked-feed": "مربوط دَییشیکلیکلر",
+       "recentchangeslinked-toolbox": "مربوط دَییشیکلیکلر",
        "recentchangeslinked-title": "''$1'' ایله ایلگی‌لی دییشیکلر",
        "recentchangeslinked-summary": "آشاغیداکی سیياهی، قئيد اوْلونان صحیفه‌‌يه (و يا قئيد اوْلونان کاتئقوْرياداکی صحیفه‌‌لره) داخیلی کئچید وئرن صحیفه‌‌لرده ائدیلمیش سوْن ديَیشیکلیکلرین سیياهیسیدیر. \n[[Special:Watchlist|ایزله‌مه سیياهینیزداکی]] صحیفه‌‌لر '''قالین''' شریفتله گؤستریلمیشدیر.",
        "recentchangeslinked-page": "صفحه آدی:",
        "tooltip-ca-nstab-main": "مقاله‌یه باخین",
        "tooltip-ca-nstab-user": "ایشلدن صفحه‌سینه باخ",
        "tooltip-ca-nstab-media": "مئدیا-فايل",
-       "tooltip-ca-nstab-special": "بÙ\88 Ø¨Û\8cر Ø§Ø¤Ø²Ù\84 ØµÙ\81Ø­Ù\87â\80\8cدÛ\8cرØ\8c Ø³Û\8cز Ø§Ù\88Ù\86Ù\88 Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\87 Ø¨Û\8cÙ\84Ù\85زسÛ\8cز",
+       "tooltip-ca-nstab-special": "بÙ\88 Ø¨Û\8cر Ø§Ø¤Ø²Ù\84 ØµÙ\81Ø­Ù\87â\80\8cدÛ\8cرØ\8c Ø¨Ù\88 ØµÙ\81Ø­Ù\87 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÙ\84Ù\85Ù\87â\80\8cÙ\85Ù\87â\80\8cÙ\84Û\8cدÛ\8cر",
        "tooltip-ca-nstab-project": "پروژه صحیفه‌سینه باخ",
        "tooltip-ca-nstab-image": "فايل صفحه‌‌سینه باخین",
        "tooltip-ca-nstab-mediawiki": "سیستم مئساژلرینه باخ",
        "pageinfo-toolboxlink": "صفحه بیلگی‌سی",
        "pageinfo-redirectsto": "ایستیقامتلن‌دیریلن",
        "pageinfo-redirectsto-info": "بیلگی",
-       "pageinfo-contentpage": "بÛ\8cر Ù\85زÙ\85Ù\88Ù\86 ØµØ­Û\8cÙ\81ه‌سی ساییلیر",
+       "pageinfo-contentpage": "بÛ\8cر Ù\85ضÙ\85Ù\88Ù\86 ØµÙ\81Ø­ه‌سی ساییلیر",
        "pageinfo-contentpage-yes": "بلی",
        "pageinfo-protect-cascading": "مدافعه‌‌لر بورادان شراره کیمی تؤکولور",
        "pageinfo-protect-cascading-yes": "بلی",
        "api-error-copyuploaddisabled": "بو خیدمتچی‌ده، اینترنت آدرسی‌له فایل یوکله‌مک یاساقلانیب‌دیر.",
        "api-error-duplicate": "بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|[$2 فایل]|[$2 فایل‌لار]}} واردیر.",
        "api-error-duplicate-archive": "بو یاست‌دا، همن بیلگیلرله، باشقا {{PLURAL:$1|[$2 فایل]|[$2 فایل‌لار]}} وار ایدی، اما {{PLURAL:$1|سیلینیب‌دیر|سیلینیبلر}}.",
-       "api-error-duplicate-archive-popup-title": "تیکرارلانمیش {{PLURAL:$1|فایل|فایل‌لار}}، اؤنجه‌دن {{PLURAL:$1|سیلینیب‌دیر|سیلینیبلر}}.",
-       "api-error-duplicate-popup-title": "تیکرارلانمیش {{PLURAL:$1|فایل|فایل‌لار}}.",
        "api-error-empty-file": "سیز یول‌لادیغینیز فایل، بوش ایدی.",
        "api-error-emptypage": "یئنی بوش صحیفه یارادماغا ایجازه یوخدور.",
        "api-error-fetchfileerror": "ایچری خطا: فایلی گتیرمک‌ده بیر ایشکال قاباغا گلدی.",
index c3e558a..2ea4477 100644 (file)
        "nstab-template": "Ҡалып",
        "nstab-help": "Ярҙам",
        "nstab-category": "Категория",
+       "mainpage-nstab": "Баш бит",
        "nosuchaction": "Бындай ғәмәл юҡ",
        "nosuchactiontext": "URL-ла күрһәтелгән ғәмәл хаталы.\nҺеҙ URL-ны хаталы кереткәнһегеҙ йәки хаталы һылтанма буйынса күскәнһегеҙ.\nБыл шулай уҡ {{SITENAME}} проектындағы хата сәбәпле  лә булырға мөмкин.",
        "nosuchspecialpage": "Бындай махсус бит юҡ",
        "api-error-copyuploaddisabled": "Был серверҙа URL адрес буйынса йөкләү өҙөлгән",
        "api-error-duplicate": "Бындай эстәлекле {{PLURAL:$1|[$2 файл]}}  бар.",
        "api-error-duplicate-archive": "Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|1=ул юйылды|улар юйылды}}",
-       "api-error-duplicate-archive-popup-title": "Элек юйылған {{PLURAL:$1|1=файлдың|файлдарҙың}} дубликаты",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|1=файлы|файлдары}} дубликаты.",
        "api-error-empty-file": "Һеҙ ебәргән файл буш.",
        "api-error-emptypage": "Яңы буш биттәр яһау тыйыла.",
        "api-error-fetchfileerror": "Эске хата: файлды күсергән ваҡытта хата китте",
index ddd2575..2ad427d 100644 (file)
        "api-error-copyuploaddisabled": "An pagkakarga sa paagi kan URL pinag-untok sa serbidor na ini.",
        "api-error-duplicate": "Igwa {{PLURAL:$1|nin [$2 ibang sagunson]|mga [$2 iba pang mga sagunson]}} na yaon sa sityo na igwa nin kaparehong laog.",
        "api-error-duplicate-archive": "Igwa {{PLURAL:$1|kaidto nin [$2 ibang sagunson]|kaidto nin [$2 ibang mga sagunson]}} na yaon sa sityo na igwa nin kaparehong laog, alagad {{PLURAL:$1|ini kaidto|sinda kaidto}} pinagpura na.",
-       "api-error-duplicate-archive-popup-title": "Kambal na {{PLURAL:$1|sagunson na|mga sagunson na}} pinagpura na.",
-       "api-error-duplicate-popup-title": "Kambal na {{PLURAL:$1|sagunson|mga sagunson}}.",
        "api-error-empty-file": "An sagunson na saimong pinagsumite daeng laog.",
        "api-error-emptypage": "Nagmumukna nin bago, mayong laog na mga pahina dae pinagtutugutan.",
        "api-error-fetchfileerror": "Panlaog na kasalaan: May bagay na naging sala habang hinahakot an sagunson.",
index 8ca1a15..714f929 100644 (file)
        "tooltip-invert": "Пазначце гэтае поле, каб схаваць зьмены старонак з выбранай прасторы назваў (і зьвязнай прасторы назваў, калі пазначана)",
        "tooltip-whatlinkshere-invert": "Адзначце гэтае поле, каб схаваць спасылкі з старонак у вызначанай прасторы назваў",
        "namespace_association": "Зьвязаная прастора назваў",
-       "tooltip-namespace_association": "Пазначце гэтае поле каб уключыць простору назваў абмеркаваньняў (альбо прадметную), зьвязаных з выбранай прасторай назваў",
+       "tooltip-namespace_association": "Пазначце гэтае поле, каб уключыць прастору назваў абмеркаваньняў (альбо прадметную), зьвязаных з выбранай прасторай назваў",
        "blanknamespace": "(Асноўная)",
        "contributions": "Унёсак {{GENDER:$1|удзельніка|удзельніцы}}",
        "contributions-title": "Унёсак {{GENDER:$1|удзельніка|удзельніцы}} $1",
        "tags-display-header": "Новыя запісы ў сьпісе зьменаў",
        "tags-description-header": "Поўнае апісаньне значэньня",
        "tags-source-header": "Крыніца",
-       "tags-active-header": "Актыўны?",
+       "tags-active-header": "Актыўная?",
        "tags-hitcount-header": "Пазначаныя зьмены",
        "tags-actions-header": "Дзеяньні",
        "tags-active-yes": "Так",
        "tags-edit-revision-submit": "Дастасаваць зьмены да {{PLURAL:$1|1=гэтай вэрсіі|$1 вэрсіяў}}",
        "tags-edit-logentry-submit": "Дастасаваць зьмены да {{PLURAL:$1|$1 журнальнага запісу|$1 журнальных запісаў}}",
        "tags-edit-success": "Зьмены былі пасьпяхова дастасаваныя.",
+       "tags-edit-failure": "Гэтыя зьмены ня могуць быць дастасаваныя:\n$1",
+       "tags-edit-nooldid-title": "Няслушная мэтавая вэрсія",
        "comparepages": "Параўнаньне старонак",
        "compare-page1": "Старонка 1",
        "compare-page2": "Старонка 2",
        "api-error-copyuploaddisabled": "Загрузка з URL-адрасу забароненая на гэтым сэрвэры.",
        "api-error-duplicate": "Ужо {{PLURAL:$1|1=існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.",
        "api-error-duplicate-archive": "Раней на сайце {{PLURAL:$1|1=быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.",
-       "api-error-duplicate-archive-popup-title": "Дублікаты {{PLURAL:$1|1=файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|1=Ідэнтычны файл|Ідэнтычныя файлы}}",
        "api-error-empty-file": "Дасланы Вамі файл быў пусты.",
        "api-error-emptypage": "Стварэньне новых пустых старонак забаронена.",
        "api-error-fetchfileerror": "Унутраная памылка: падчас атрыманьня файла штосьці здарылася.",
index e387bd6..7e62e7e 100644 (file)
        "api-error-copyuploaddisabled": "Загрузка з URL-адрасу забароненая на гэтым серверы.",
        "api-error-duplicate": "Ужо {{PLURAL:$1|існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зместам.",
        "api-error-duplicate-archive": "Раней на сайце {{PLURAL:$1|ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зместам, але {{PLURAL:$1|ён быў выдалены|яны былі выдаленыя}}.",
-       "api-error-duplicate-archive-popup-title": "Дублікаты {{PLURAL:$1|файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Ідэнтычны файл|Ідэнтычныя файлы}}",
        "api-error-empty-file": "Дасланы Вамі файл быў пусты.",
        "api-error-emptypage": "Стварэнне новых пустых старонак забаронена.",
        "api-error-fetchfileerror": "Унутраная памылка: падчас атрымання файла штосьці здарылася.",
index bbe437f..1ba7372 100644 (file)
        "api-error-copyuploaddisabled": "Качването през URL е забранено на този сървър.",
        "api-error-duplicate": "На сайта вече има качени {{PLURAL:$1|[$2 друг файл]|[$2 други файла]}} с идентично съдържание.",
        "api-error-duplicate-archive": "На сайта вече е имало {{PLURAL:$1|качен [$2 друг файл]|качени [$2 други файла]}} с идентично съдържание, {{PLURAL:$1|който е бил изтрит|които са били изтрити}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Дублиращ се файл, който вече е бил изтрит|Дублиращи се файлове, които вече са били изтрити}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Повтарящ се файл|Повтарящи се файлове}}",
        "api-error-empty-file": "Заявеният за качване файл беше празен.",
        "api-error-emptypage": "Създаването на нови, празени страници, не е разрешено.",
        "api-error-fetchfileerror": "Вътрешна грешка: Нещо се обърка при извличане на файла.",
index 2c93cc7..b720da0 100644 (file)
        "searchsuggest-containing": "شامیلین دیمان...",
        "api-error-badaccess-groups": "شما اجازه په پایلی ئی بُرز کورتین ئا بئ ای ویکی ای تا نداریت.",
        "api-error-badtoken": "داخیلی ئین خه تا: امنیتی ئین کوڈ سه ئی نه اینت (Bad token).",
-       "api-error-duplicate-popup-title": "تکرارین {{PLURAL:$1|فایل|فایلان}}",
        "api-error-empty-file": "فایلی که دیم داته بوت خالی ات.",
        "api-error-emptypage": "خالی ئین دیمانی جۆڑ کورتین جایز نه اینت.",
        "api-error-file-too-large": "فایلی که دیم داتیت بئ حد ٹوو ات.",
index 45fa006..0c2377d 100644 (file)
        "api-error-copyuploaddisabled": "এই সার্ভারে ইউআরএল-এর মাধ্যমে আপলোড করার সুবিধা নিস্ক্রিয় রয়েছে।",
        "api-error-duplicate": "ইতোমধ্যে এই সাইটে একই রকমের কন্টেট সমৃদ্ধ {{PLURAL:$1|[$2 অন্য ফাইল]|[$2 কিছু অন্য ফাইল]}} রয়েছে।",
        "api-error-duplicate-archive": "একই নাম ও বিষয়বস্তু বিশিষ্ট {{PLURAL:$1| [$2 অপর একটি ফাইল]| [$2 কয়েকটি ফাইল]}} পূর্বে এই উইকিতে ছিলো, এবং {{PLURAL:$1|সেটিকে|সেগুলোকে}} অপসারণ করা হয়েছে।",
-       "api-error-duplicate-archive-popup-title": "অনুলিপি {{PLURAL:$1|ফাইল|ফাইল}} যা ইতমধ্যে অপসারণ করা হয়েছে",
-       "api-error-duplicate-popup-title": "অনুলিপি {{PLURAL:$1|ফাইল|ফাইল}}",
        "api-error-empty-file": "আপনার জমাকৃত ফাইলটি খালি।",
        "api-error-emptypage": "নতুন পাতা তৈরি হচ্ছে, খালি পাতা গ্রহণযোগ্য নয়।",
        "api-error-fetchfileerror": "অভ্যন্তরীণ ত্রুটি: ফাইল নিয়ে আসার সময় কোনো সমস্যা হয়েছিলো।",
index c442873..4f97519 100644 (file)
        "api-error-copyuploaddisabled": "Diweredekaet eo an enporzhioù dre URL war ar servijer-mañ.",
        "api-error-duplicate": "Bez' {{PLURAL:$1|ez eus [$2 restr all]|[$2 restr all]}} gant an hevelep danvez war al lec'hienn-mañ c'hoazh",
        "api-error-duplicate-archive": "Bez' e oa {{PLURAL:$1|[$2 ur restr all]|[$2 restroù all]}} c'hoazh enno an hevelep danvez, nemet {{PLURAL:$1|eo bet diverket|int bet diverket}}.",
-       "api-error-duplicate-archive-popup-title": "Eilañ ar {{PLURAL:$1|restr|restroù}} zo bet diverket c'hoazh",
-       "api-error-duplicate-popup-title": "Eilañ {{PLURAL:$1|ar restr|ar restroù}}",
        "api-error-empty-file": "Ar restr hoc'h eus roet a oa goullo.",
        "api-error-emptypage": "N'eo ket aotreet krouiñ pajennoù goullo.",
        "api-error-fetchfileerror": "Fazi diabarzh : aet ez eus un dra bennak a-dreuz en ur glask adtapout ar restr.",
index ec73427..7d77f31 100644 (file)
        "api-error-copyuploaddisabled": "Postavljanja putem URL-a su onemogućena na ovom serveru.",
        "api-error-duplicate": "Već postoji {{PLURAL:$1|[$2 druga datoteka]|[$2 druge datoteke]}} na ovoj stranici sa istim sadržajem",
        "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 neke druge datoteke]}} na sajtu sa istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Dupla datoteka|Duple datoteke}} koje su već obrisane",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Dvojna datoteka|Dvojne datoteke}}",
        "api-error-empty-file": "Datoteka koju ste poslali je bila prazna.",
        "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.",
        "api-error-fetchfileerror": "Unutrašnja greška: pojavio se neki problem pri dobijanju podataka o datoteci.",
index 189d882..4cb9fa9 100644 (file)
        "api-error-copyuploaddisabled": "Les càrregues via URL estan desactivades en aquest servidor.",
        "api-error-duplicate": "Ja hi ha {{PLURAL:$1|[$2 un altre fitxer]|[$2 altres fitxers]}} en aquest lloc web amb el mateix contingut.",
        "api-error-duplicate-archive": "Aquí ja hi ha hagut {{PLURAL:$1|[$2 un altre fitxer]|[$2 altres fitxers]}} amb el mateix contingut, i {{PLURAL:$1|va ser esborrat|varen ser esborrats}}.",
-       "api-error-duplicate-archive-popup-title": "Duplica {{PLURAL:$1|el fitxer|els fitxers}} que ja s'han eliminat",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fitxer duplicat|Fitxers duplicats}}",
        "api-error-empty-file": "El fitxer que heu tramès està buit.",
        "api-error-emptypage": "No es permet la creació de pàgines noves en blanc.",
        "api-error-fetchfileerror": "Error intern: quelcom no ha funcionat en accedir al fitxer.",
index 8350f12..cc4f5ce 100644 (file)
        "protect": "Ларъяр",
        "protect_change": "хийца",
        "protectthispage": "Ларъе хӀара агӀо",
-       "unprotect": "Ð\93Ó\80аÑ\80оллеÑ\85 ÐºÑ\8aаÑ\81Ñ\82а",
-       "unprotectthispage": "Ð\93Ó\80аÑ\80оллеÑ\85 ÐºÑ\8aаÑ\81Ñ\82а",
+       "unprotect": "Ð\9bаÑ\80Ñ\8aÑ\8fÑ\80 Ñ\85ийÑ\86аÑ\80",
+       "unprotectthispage": "ХийÑ\86а Ñ\85Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80она Ð»Ð°Ñ\80Ñ\8aÑ\8fÑ\80",
        "newpage": "Керла агӀонаш",
        "talkpage": "Дийцаре йилла хӀара агӀо",
        "talkpagelinktext": "Дийцаре",
        "readonlywarning": "'''ДӀАХЬЕДО. ГӀирса бух блоктоьхна оьшуш долучу хьаштан, цундера хӀинц хьоьга дӀа ца йазло хийцам.\nХила мега, ахьа Ӏалаш дан дезаш хьайн йоза, юха тӀаьхьо леладан иза йоза.'''\n\nКуьйгалхочо блоктоьхна гӀирса бух, цо битина кхетош хӀара хаам: $1",
        "protectedpagewarning": "'''ДӀахьедар. ХӀара агӀо ларйина ю хийцам цабайта, иза хийца я нисъян а бакъо йолуш куьйгалла лелош болу декъашхой бе бац.'''\nЛахахьа гойту хаамаш тӀаьххьара бина болу хийцамна тептар чура:",
        "semiprotectedpagewarning": "'''ДӀахьедо.''' ХӀара агӀо ларйина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.\nЛахахьа тептаро балийна тӀаьххьаралера дӀаязбина хаам:",
-       "cascadeprotectedwarning": "<div id=\"cascadeprotectedwarning\" style=\"border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em\">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]\nХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>",
+       "cascadeprotectedwarning": "<strong>ДӀахьедар:</strong> ХӀара агӀо таян бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча {{PLURAL:$1|1=и агӀо латийна кхечу агӀонашца|и агӀо латийна кхечу агӀонашца}} хӀоттделлачу ларйиначух:",
        "templatesused": "{{PLURAL:$1|1=Кеп, лелош ю|Кепаш, лелош ю}} хӀокху агӀон башхонца:",
        "templatesusedpreview": "{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелойлу}} оцу хьалх хьожучу агӀонца:",
        "templatesusedsection": "ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:",
        "tooltip-ca-viewsource": "ХӀара агӀо ларъеш ю, хийцамаш ца-байта, амма хьо хьажа а, копи яккхан а мегар ду",
        "tooltip-ca-history": "ХӀокху агӀона хийцамаш болу тептар",
        "tooltip-ca-protect": "Ларъе агӀо хийцамаш цабайта",
-       "tooltip-ca-unprotect": "Ð\94lадаккÑ\85а Ñ\85lокÑ\85Ñ\83 Ð°Ð³lонна Ð´Ð¾Ð»Ñ\83 Ð³Ð°Ñ\80олла",
+       "tooltip-ca-unprotect": "ХийÑ\86а Ñ\85Ó\80окÑ\85Ñ\83 Ð°Ð³Ó\80она Ð»Ð°Ñ\80Ñ\8aÑ\8fÑ\80",
        "tooltip-ca-delete": "ДӀаяккха хӀара агӀо",
        "tooltip-ca-move": "АгӀон цӀе хийца",
        "tooltip-ca-watch": "ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа",
        "searchsuggest-search": "Лахар",
        "searchsuggest-containing": "чуьраниг…",
        "api-error-duplicate": "Иштта чулацам болу {{PLURAL:$1|1=[$2 кхин файл]|[$2 кхин файлаш]}} йолуш ю",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|1=Файлан|Файлийн}} дубликат.",
        "api-error-empty-file": "Ахьа яхьийтина файл еса ю.",
        "api-error-mustbeposted": "Чоьхьара гӀалат: дехаро хьехам схьабоьху HTTP POST.",
        "api-error-noimageinfo": "Кхиамца чуяьккхина, амма серверо файлахь лаьцна цхьаа хаам битина бац.",
index aee7150..be9eaff 100644 (file)
        "api-error-copyuploaddisabled": "Načítání z URL je na tomto severu zakázáno.",
        "api-error-duplicate": "Na této wiki již {{PLURAL:$1|existuje [$2 jiný soubor]|existují [$2 jiné soubory]}} se shodným obsahem.",
        "api-error-duplicate-archive": "[$2 {{PLURAL:$1|Soubor|Soubory}}] se stejným obsahem již zde dříve {{PLURAL:$1|byl|byly}}, ale {{PLURAL:$1|byl smazán|byly smazány}}.",
-       "api-error-duplicate-archive-popup-title": "Duplicitní {{PLURAL:$1|soubor, který byl smazán|soubory, které byly smazány}}.",
-       "api-error-duplicate-popup-title": "Duplicitní {{PLURAL:$1|soubor|soubory}}.",
        "api-error-empty-file": "Načtený soubor je prázdný.",
        "api-error-emptypage": "Zakládání prázdných stránek není dovoleno.",
        "api-error-fetchfileerror": "Vnitřní chyba: došlo k chybě při stahování souboru.",
index e162552..b8f4003 100644 (file)
        "api-error-copyuploaddisabled": "Nid oes modd uwchlwytho drwy URL ar y gweinydd hwn",
        "api-error-duplicate": "Mae {{PLURAL:$1||[$2 ffeil arall]|[$2 ffeiliau eraill]|[$2 ffeiliau eraill]|[$2 ffeiliau eraill]|[$2 ffeiliau eraill]}} gyda'r un cynnwys {{PLURAL:$1||ynddi|ynddynt|ynddynt|ynddynt|ynddynt}} eisoes ar y wici hwn",
        "api-error-duplicate-archive": "Fe fu {{PLURAL:$1|[$2 ffeil arall gyda'r un cynnwys ynddi]|[$2 ffeiliau eraill gyda'r un cynnwys ynddynt]}} ar y safle, ond fe'{{PLURAL:$1|i|u}} dilëwyd.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Ffeiliau|Ffeil|Ffeiliau|Ffeiliau|Ffeiliau|Ffeiliau}} dyblyg, sydd eisoes wedi {{PLURAL:$1|eu|ei|eu|eu|eu|eu}} dileu.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Ffeiliau|ffeil|ffeiliau|ffeiliau|ffeiliau|ffeiliau}} dyblyg.",
        "api-error-empty-file": "Mae'r ffeil a gyflwynwyd gennych yn wag.",
        "api-error-emptypage": "Ni chaniateir dechrau tudalen newydd, a honno'n wag.",
        "api-error-fetchfileerror": "Gwall mewnol: aeth rhywbeth o'i le tra'n cywain y ffeil.",
index 065e734..f067a23 100644 (file)
        "api-error-copyuploaddisabled": "At lægge filer op via hjemmesideadresser er slået fra på denne server.",
        "api-error-duplicate": "Der er allerede {{PLURAL:$1|[$2 en anden fil]|[$2 nogle andre filer]}} med samme indhold på webstedet.",
        "api-error-duplicate-archive": "Der var allerede {{PLURAL:$1|en [$2 anden fil]|[$2 nogle andre filer]}} med samme indhold på webstedet, men {{PLURAL:$1|den|de}} blev slettet.",
-       "api-error-duplicate-archive-popup-title": "Duplet af {{PLURAL:$1|fil|filer}}, der allerede er slettet",
-       "api-error-duplicate-popup-title": "Duplet {{PLURAL:$1|fil|filer}}",
        "api-error-empty-file": "Den fil du indsendte var tom.",
        "api-error-emptypage": "Det er ikke tilladt at oprette nye, tomme sider.",
        "api-error-fetchfileerror": "Intern fejl: noget gik galt under hentningen af filen.",
index bf21b13..89fe6cd 100644 (file)
        "nstab-template": "Vorlage",
        "nstab-help": "Hilfeseite",
        "nstab-category": "Kategorie",
+       "mainpage-nstab": "Hauptseite",
        "nosuchaction": "Diese Aktion gibt es nicht",
        "nosuchactiontext": "Die in der URL angegebene Aktion wird von MediaWiki nicht unterstützt.\nEs kann ein Schreibfehler in der URL vorliegen oder es wurde ein fehlerhafter Link angeklickt.\nEs kann sich auch um einen Programmierfehler in der Software, die von {{SITENAME}} benutzt wird, handeln.",
        "nosuchspecialpage": "Spezialseite nicht vorhanden",
        "permissionserrorstext-withaction": "Du bist aus {{PLURAL:$1|dem folgenden Grund|den folgenden Gründen}} nicht berechtigt, $2:",
        "recreate-moveddeleted-warn": "'''Achtung: Du erstellst eine Seite, die bereits früher gelöscht wurde.'''\n\nBitte prüfe sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.\nZu deiner Information folgt das Lösch- und Verschiebungs-Logbuch mit der Begründung für die vorhergehende Löschung:",
        "moveddeleted-notice": "Diese Seite wurde gelöscht. Zur Information folgt das Lösch- und Verschiebungs-Logbuch dieser Seite.",
+       "moveddeleted-notice-recent": "Leider wurde diese Seite kürzlich gelöscht (innerhalb der letzten 24 Stunden).\nZur Information wird das Lösch- und Verschiebungs-Logbuch für die Seite unten angezeigt.",
        "log-fulllog": "Alle Logbucheinträge ansehen",
        "edit-hook-aborted": "Die Bearbeitung wurde ohne Erklärung durch eine Schnittstelle abgebrochen.",
        "edit-gone-missing": "Die Seite konnte nicht aktualisiert werden.\nSie wurde anscheinend gelöscht.",
        "api-error-badaccess-groups": "Du hast nicht die Berechtigung Dateien in dieses Wiki hochzuladen.",
        "api-error-badtoken": "Interner Fehler: Der Token ist fehlerhaft.",
        "api-error-copyuploaddisabled": "Das Hochladen via URL wurde auf diesem Server deaktiviert.",
-       "api-error-duplicate": "Es gibt im Wiki bereits {{PLURAL:$1|[$2 eine andere Datei]|[$2 mehrere andere Dateien]}} gleichen Inhalts.",
-       "api-error-duplicate-archive": "Es {{PLURAL:$1|war bereits [$2 andere Datei]|waren bereits [$2 andere Dateien]}} gleichen Inhalts vorhanden. {{PLURAL:$1|Sie wurde|Sie wurden}} allerdings gelöscht.",
-       "api-error-duplicate-archive-popup-title": "Doppelte {{PLURAL:$1|Datei, die bereits gelöscht wurde|Dateien, die bereits gelöscht wurden}}",
-       "api-error-duplicate-popup-title": "Doppelt vorhandene {{PLURAL:$1|Datei|Dateien}}",
+       "api-error-duplicate": "Es gibt im Wiki bereits {{PLURAL:$1|eine andere Datei|mehrere andere Dateien}} gleichen Inhalts.",
+       "api-error-duplicate-archive": "Es {{PLURAL:$1|war bereits eine andere Datei|waren bereits andere Dateien}} gleichen Inhalts vorhanden. Sie {{PLURAL:$1|wurde|wurden}} allerdings gelöscht.",
        "api-error-empty-file": "Die hochgeladene Datei war leer.",
        "api-error-emptypage": "Es ist nicht erlaubt, neue leere Seiten zu erstellen.",
        "api-error-fetchfileerror": "Interner Fehler: Beim Abrufen der Datei ist ein Fehler aufgetreten.",
index f6fcaf1..b56d4dd 100644 (file)
        "api-error-copyuploaddisabled": "URL barkerdış ena waster dı qefılyayo.",
        "api-error-duplicate": "Ena {{PLURAL:$1|ze ke [zey $2]|biya [zey dosya da $2]}} zeq wesiqa biya wendeyê.",
        "api-error-duplicate-archive": "Ena {{PLURAL:$1|vurneyaya [$2 zey na dosya]| [zerrey cı zey $2 dosya]}} aseno,feqet {{PLURAL:$1|ena dosya|tewr veri}} besterneyaya.",
-       "api-error-duplicate-archive-popup-title": "Ena {{PLURAL:$1|Dosya besterneyaya|dosya}} xora  besterneyaya.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|dosyaya|dosyaya}} dılet",
        "api-error-empty-file": "Dosyaya ke şıma rışta venga.",
        "api-error-emptypage": "Newi, pelaya veng vıraştışi rê mısade nêdeyêno.",
        "api-error-fetchfileerror": "Xırabiya zerrek:Dosya grotış dı tay çi raşt nêşı.",
index 2dc526c..9448eca 100644 (file)
        "api-error-copyuploaddisabled": "Nagrawanje pśez URL jo na toś tom serwerje znjemóžnjone.",
        "api-error-duplicate": "{{PLURAL:$1|Jo|Stej|Su|Jo}} južo {{PLURAL:$1|[$2 druga dataja]|[$2 drugej dataji]|[$2 druge dataje]|[$2 drugich datajow]}} z tym samym wopśimjeśim na sedle",
        "api-error-duplicate-archive": "{{PLURAL:$1|Jo była [$2 druga dataja]|Stej byłej [$2 drugej dataji]|Su byli [$2 druge dataje]|Jo było [$2 drugich datajow]}} južo na websedle z tym samym wopśimjeśim, ale {{PLURAL:$1|jo se wulašowała|stej se wulašowałej|su se wulašowali|jo se wulašowało}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Dwójna dataja, kótaraž jo|Dwójnej dataji, kótarejž stej|Dwójne dataje, kótarež su|Dwójne dataje, kótarež su}} se južo {{PLURAL:$1|wulašowała|wulašowałej|wulašowali|wulašowali}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Dwójna dataja|Dwójnej dataji|Dwójne dataje|Dwójne dataje}}",
        "api-error-empty-file": "Dataja, kótaruž sy nagrał, jo prozna była.",
        "api-error-emptypage": "Napóranje nowych, proznych bokow njejo dowólone.",
        "api-error-fetchfileerror": "Nutśikowna zmólka: Pśi wobstarowanju dataje něco njejo se raźiło.",
index 8da702b..99879da 100644 (file)
        "searchsuggest-search": "खोज",
        "api-error-duplicate": "यै साइटमी पहिलीबठे यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल छ]|भयाका  [$2 केहि अरु फाइलहरू छन्]}} ।",
        "api-error-duplicate-archive": "यै साइटमी पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल थियो]|भयाका  [$2 केहि अरु फाइलहरू थिए]}} ।\nतर {{PLURAL:$1|यो मेट्याको थियो|यी मेटायाका थिए}} ।",
-       "api-error-duplicate-archive-popup-title": "पैल्ली  {{PLURAL:$1|मेट्याको फाइलको|मेट्याका फाइलहरूको}} नकल प्रति बनाउन्या।",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|फाइल|फाइलहरू}} नकल प्रति बनाउन्या",
        "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो भण्या पुन प्रयास गर ।</strong>\nयदि यसले कार्य पूर्ण भएन भण्या [[Special:UserLogout|लग आउट गरिबर]] फेरी लग इन गर्या ।",
        "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भण्या कृपया [[Special:UserLogin|लग इन गरिबर]] पुनः प्रयास गर्या ।</strong>",
        "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}}  <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।"
index 03e3cbb..5adfcef 100644 (file)
        "api-error-copyuploaddisabled": "Η επιφόρτωση από URL είναι απενεργοποιημένη σε αυτόν το διακομιστή.",
        "api-error-duplicate": "{{PLURAL:$1|Υπάρχει  [$2 άλλο αρχείο]|Υπάρχουν [$2 άλλα αρχεία]}} ήδη στον ιστότοπο με το ίδιο περιεχόμενο.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Υπήρχε ήδη [$2 άλλο αρχείο] |Υπήρχαν ήδη [$2 άλλα αρχεία]}} στον ιστότοπο με το ίδιο περιεχόμενο, αλλά {{PLURAL:$1|διαγράφηκε|διαγράφηκαν}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Διπλότυπο αρχείο που έχει|Διπλότυπα αρχεία που έχουν}}  ήδη διαγραφεί",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Διπλότυπο αρχείο|Διπλότυπα αρχεία}}",
        "api-error-empty-file": "Το αρχείο που υποβάλλατε ήταν κενό.",
        "api-error-emptypage": "Η δημιουργία νέων, κενών σελιδών δεν επιτρέπετε.",
        "api-error-fetchfileerror": "Εσωτερικό σφάλμα: κάτι πήγε στραβά κατά την ανάκτηση του αρχείου.",
index 12bd910..6218d70 100644 (file)
        "nstab-template": "Template",
        "nstab-help": "Help page",
        "nstab-category": "Category",
-       "mainpage-nstab": "",
+       "mainpage-nstab": "Main page",
        "nosuchaction": "No such action",
        "nosuchactiontext": "The action specified by the URL is invalid.\nYou might have mistyped the URL, or followed an incorrect link.\nThis might also indicate a bug in the software used by {{SITENAME}}.",
        "nosuchspecialpage": "No such special page",
        "permissionserrorstext-withaction": "You do not have permission to $2, for the following {{PLURAL:$1|reason|reasons}}:",
        "recreate-moveddeleted-warn": "<strong>Warning: You are recreating a page that was previously deleted.</strong>\n\nYou should consider whether it is appropriate to continue editing this page.\nThe deletion and move log for this page are provided here for convenience:",
        "moveddeleted-notice": "This page has been deleted.\nThe deletion and move log for the page are provided below for reference.",
+       "moveddeleted-notice-recent": "Sorry, this page was recently deleted (within the last 24 hours).\nThe deletion and move log for the page are provided below for reference.",
        "log-fulllog": "View full log",
        "edit-hook-aborted": "Edit aborted by hook.\nIt gave no explanation.",
        "edit-gone-missing": "Could not update the page.\nIt appears to have been deleted.",
        "api-error-badaccess-groups": "You are not permitted to upload files to this wiki.",
        "api-error-badtoken": "Internal error: Bad token.",
        "api-error-copyuploaddisabled": "Uploading by URL is disabled on this server.",
-       "api-error-duplicate": "There {{PLURAL:$1|is [$2 another file]|are [$2 some other files]}} already on the site with the same content.",
-       "api-error-duplicate-archive": "There {{PLURAL:$1|was [$2 another file]|were [$2 some other files]}} already on the site with the same content, but {{PLURAL:$1|it was|they were}} deleted.",
-       "api-error-duplicate-archive-popup-title": "Duplicate {{PLURAL:$1|file that has|files that have}} already been deleted.",
-       "api-error-duplicate-popup-title": "Duplicate {{PLURAL:$1|file|files}}.",
+       "api-error-duplicate": "There {{PLURAL:$1|is another file|are some other files}} already on the site with the same content.",
+       "api-error-duplicate-archive": "There {{PLURAL:$1|was another file|were some other files}} already on the site with the same content, but {{PLURAL:$1|it was|they were}} deleted.",
        "api-error-empty-file": "The file you submitted was empty.",
        "api-error-emptypage": "Creating new, empty pages is not allowed.",
        "api-error-fetchfileerror": "Internal error: Something went wrong while fetching the file.",
index 0ff7744..2463205 100644 (file)
        "api-error-copyuploaddisabled": "Alŝuto per URL-adreso estas malebligata en tiu ĉi servilo.",
        "api-error-duplicate": "Jam estas {{PLURAL:$1|[$2 alia dosiero]|[$2 pluraj aliaj dosieroj]}} de sama enhavo en la retejo.",
        "api-error-duplicate-archive": "Jam estis {{PLURAL:$1|[$2 alia dosiero]|[$2 pluraj aliaj dosieroj]}} de sama enhavo en la retejo, sed {{PLURAL:$1|ĝi estis forigita|ili estis forigitaj}}.",
-       "api-error-duplicate-archive-popup-title": "Duoblaj {{PLURAL:$1|dosiero|dosieroj}} kiuj jam estas forigitaj",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Duobla dosiero|Duoblaj dosieroj}}",
        "api-error-empty-file": "La dosiero kiun vi sendis estis malplena.",
        "api-error-emptypage": "Kreo de novaj malplenaj paĝoj ne estas permesita.",
        "api-error-fetchfileerror": "Interna eraro: io misfunkciis dum la dosiera prenado.",
index 280c8c6..3236d67 100644 (file)
        "textmatches": "Resultados por texto de página",
        "notextmatches": "No hay resultados por texto de página",
        "prevn": "$1 {{PLURAL:$1|anterior|anteriores}}",
-       "nextn": "{{PLURAL:$1|$1}} siguientes",
+       "nextn": "{{PLURAL:$1|siguiente|siguientes $1}}",
        "prev-page": "página anterior",
        "next-page": "página siguiente",
        "prevn-title": "$1 {{PLURAL:$1|resultado anterior|resultados anteriores}}",
        "upload-permitted": "{{PLURAL:$2|Tipo de archivo permitido|Tipos de archivo permitidos}}: $1.",
        "upload-preferred": "{{PLURAL:$2|Tipo de archivo preferido|Tipos de archivo preferidos}}: $1.",
        "upload-prohibited": "{{PLURAL:$2|Tipo de archivo prohibido|Tipos de archivo prohibidos}}: $1.",
-       "uploadlogpage": "Subidas de archivos",
+       "uploadlogpage": "Registro de subidas",
        "uploadlogpagetext": "Debajo se muestra una lista de los últimos archivos subidos.\nVéase la [[Special:NewFiles|galería de archivos nuevos]] para una vista más estilizada",
        "filename": "Nombre del archivo",
        "filedesc": "Resumen",
        "uploaddisabled": "Se desactivó la subida de archivos.",
        "copyuploaddisabled": "Se desactivó la subida de archivos mediante URL.",
        "uploaddisabledtext": "Se desactivó la subida de archivos.",
-       "php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP. Por favor compruebe <code>file_uploads</code> en php.ini.",
+       "php-uploaddisabledtext": "La subida de archivos está deshabilitada en PHP.\nComprueba la opción <code>file_uploads</code>.",
        "uploadscripted": "Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.",
        "upload-scripted-pi-callback": "No se pueden cargar archivos que contengan instrucciones de procesamiento en forma de hojas de estilo XML.",
        "uploaded-script-svg": "Se encontró el elemento habilitado para secuencias de órdenes «$1» en el archivo SVG cargado.",
        "uploadjava": "El archivo es un ZIP que contiene un archivo .class de Java.\nNo se permite subir archivos Java, porque pueden causar que se puedan saltar restricciones de seguridad.",
        "upload-source": "Archivo origen",
        "sourcefilename": "Nombre del archivo origen:",
-       "sourceurl": "Dirección original:",
+       "sourceurl": "URL de origen:",
        "destfilename": "Nombre del archivo de destino:",
        "upload-maxfilesize": "Tamaño máximo del archivo: $1",
        "upload-description": "Descripción de archivo",
        "upload-warning-msg": "Hubo un problema con tu subida desde [$2]. Puedes regresar al [[Special:Upload/stash/$1|formulario de subida]] para corregir este problema.",
        "upload-proto-error": "Protocolo incorrecto",
        "upload-proto-error-text": "Para subir archivos desde otra página la URL debe comenzar por <code>http://</code> o <code>ftp://</code>.",
-       "upload-file-error": "Error interno al subir el archivo",
+       "upload-file-error": "Error interno",
        "upload-file-error-text": "Ha ocurrido un error interno mientras se intentaba crear un archivo temporal en el servidor. Contacta con un [[Special:ListUsers/sysop|administrador]].",
        "upload-misc-error": "Error desconocido en la subida",
        "upload-misc-error-text": "Ha ocurrido un error durante la subida.\nVerifica que la URL es válida y accesible e inténtalo de nuevo.\nSi el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador]].",
        "upload-dialog-label-usage-title": "Uso",
        "upload-dialog-label-usage-filename": "Nombre del archivo",
        "backend-fail-stream": "No se pudo transmitir el archivo «$1».",
-       "backend-fail-backup": "No pudo hacer copia de seguridad del archivo «$1».",
+       "backend-fail-backup": "No se pudo hacer copia de seguridad del archivo «$1».",
        "backend-fail-notexists": "El archivo  $1  no existe.",
        "backend-fail-hashes": "No se pudieron obtener los \"hashes\" de los archivos para compararlos.",
        "backend-fail-notsame": "Ya existe un archivo distinto en \"$1\".",
        "deletedcontributions": "Contribuciones borradas de usuario",
        "deletedcontributions-title": "Contribuciones borradas de usuario",
        "sp-deletedcontributions-contribs": "contribuciones",
-       "linksearch": "Enlaces externos",
+       "linksearch": "Búsqueda de enlaces externos",
        "linksearch-pat": "Patrón de búsqueda:",
        "linksearch-ns": "Espacio de nombres:",
        "linksearch-ok": "Buscar",
        "delete_and_move": "Borrar y trasladar",
        "delete_and_move_text": "==Se necesita borrado==\n\nLa página de destino (\"[[:$1]]\") ya existe. ¿Quiere borrarla para permitir al traslado?",
        "delete_and_move_confirm": "Sí, borrar la página",
-       "delete_and_move_reason": "Borrada para trasladar [[$1]]",
+       "delete_and_move_reason": "Borrada para permitir el traslado de \"[[$1]]\"",
        "selfmove": "Los títulos de origen y destino son los mismos;\nno se puede trasladar una página sobre sí misma.",
        "immobile-source-namespace": "No se pueden trasladar páginas en el espacio de nombres «$1»",
        "immobile-target-namespace": "No se puede trasladar páginas al espacio de nombres «$1»",
        "feedback-back": "Volver",
        "feedback-bugcheck": "¡Perfecto! Únicamente comprueba que no sea un [$1 fallo conocido].",
        "feedback-bugnew": "Lo he comprobado. Informar de un nuevo fallo.",
-       "feedback-bugornote": "Si estás preparado para describir en detalle un problema técnico, [$1 informa de un bug] por favor.\n\nEn otro caso, puedes usar el siguiente formulario. Tu comentario será añadido a la página [$3 $2], junto con tu nombre de usuario y el navegador que usas.",
+       "feedback-bugornote": "Si estás preparado para describir en detalle un problema técnico, [$1 informa de un error].\nEn otro caso, puedes usar el siguiente formulario. Tu comentario se añadirá a la página \"[$3 $2]\", junto con tu nombre de usuario.",
        "feedback-cancel": "Cancelar",
        "feedback-close": "Hecho",
        "feedback-external-bug-report-button": "Enviar una tarea técnica",
        "feedback-submit": "Enviar",
        "feedback-terms": "Entiendo que la información de mi agente de usuario incluye información sobre la versión exacta de mi navegador y mi sistema operativo y serán compartidos públicamente junto a mis comentarios.",
        "feedback-termsofuse": "Acepto proporcionar comentarios de acuerdo con los Términos de uso.",
-       "feedback-thanks": "¡Gracias! Su comentario ha sido anotado en la página [$2  $1].",
+       "feedback-thanks": "¡Gracias! Tus comentarios se han publicado en la página \"[$2 $1]\".",
        "feedback-thanks-title": "¡Muchas gracias!",
        "feedback-useragent": "Agente de usuario:",
        "searchsuggest-search": "Buscar",
        "api-error-badtoken": "Error interno: Símbolo incorrecto.",
        "api-error-copyuploaddisabled": "La subida por URL está desactivada en este servidor.",
        "api-error-duplicate": "Ya existe{{PLURAL:$1| [$2 otro archivo]|[$2 n otros archivos]}} en el sitio con el mismo contenido.",
-       "api-error-duplicate-archive": "Ya {{PLURAL:$1|existía [$2 otro archivo]|existían [$2 otros archivos]}} en el sitio con el mismo contenido, pero {{PLURAL:$1|fue|fueron}} {{PLURAL:$1|eliminado|eliminados}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Archivo|Archivos}} {{PLURAL:$1|duplicado|duplicados}} que ya se han eliminado",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Archivo|Archivos}} {{PLURAL:$1|duplicado|duplicados}}",
+       "api-error-duplicate-archive": "Ya {{PLURAL:$1|existía [$2 otro archivo]|existían [$2 otros archivos]}} en el sitio con el mismo contenido, pero {{PLURAL:$1|fue eliminado|fueron eliminados}}.",
        "api-error-empty-file": "El archivo que enviaste estaba vacío.",
        "api-error-emptypage": "No se pueden crear páginas nuevas que estén vacías.",
        "api-error-fetchfileerror": "Error interno: Algo salió mal mientras se obtenía el archivo.",
index a2bf8e7..5384ea9 100644 (file)
        "api-error-copyuploaddisabled": "URLi kaudu üleslaadimine on selles serveris keelatud.",
        "api-error-duplicate": "Siin on {{PLURAL:$1|[$2 teine samasisuline fail]|[$2 mõned teised samasisulised failid]}} juba olemas.",
        "api-error-duplicate-archive": "Siin {{PLURAL:$1|on [$2 teine samasisuline fail]|olid [$2 mõned teised samasisulised failid]}} juba olemas, aga {{PLURAL:$1|see|need}} kustutati.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplikaatfail|Duplikaatfailid}}, mis on juba kustutatud",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Duplikaatfail|Duplikaatfailid}}",
        "api-error-empty-file": "Üleslaaditav fail on tühi.",
        "api-error-emptypage": "Uute tühjade lehekülgede loomine pole lubatud.",
        "api-error-fetchfileerror": "Sisemine tõrge: Midagi läks faili kättesaamisel valesti.",
index 4d582fb..1e46351 100644 (file)
        "searchsuggest-containing": "edukian...",
        "api-error-badaccess-groups": "Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.",
        "api-error-badtoken": "Barne akatsa: token okerra.",
-       "api-error-duplicate-popup-title": "Fitxategi {{PLURAL:$1|bikoiztua|bikoiztuak}}.",
        "api-error-empty-file": "Bidali duzun fitxategia hutsik dago.",
        "api-error-emptypage": "Berria sortzerako garaian orrialde hutsak ezin dira erabili.",
        "api-error-fetchfileerror": "Barne akatsa: zerbait gaizki joan da fitxategia eskuratzerakoan.",
index 095f7e6..886a7e1 100644 (file)
        "api-error-copyuploaddisabled": "بارگذاری با استفاده از نشانی اینترنتی در این کارساز غیرفعال است.",
        "api-error-duplicate": "{{PLURAL:$1|[$2 پروندهٔ دیگری]|[$2 چند پروندهٔ دیگر]}} در تارنما با محتوای یکسان وجود داشت.",
        "api-error-duplicate-archive": "{{PLURAL:$1|[$2 پروندهٔ دیگری]|[$2 چند پروندهٔ دیگر]}} در تارنما با محتوای یکسان وجود داشت، ولی حذف {{PLURAL:$1|شده است|شده‌اند}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|پروندهٔ|پرونده‌های}} تکراری که در حال حاضر حذف شده‌اند",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|پرونده|پرونده‌های}} تکراری",
        "api-error-empty-file": "پرونده‌ای که شما ارسال کردید خالی بود.",
        "api-error-emptypage": "ایجاد صفحه‌های خالی مجاز نیست.",
        "api-error-fetchfileerror": "خطای داخلی: در هنگام گرفتن پرونده، یک چیزی درست پیش نرفت.",
index fd8d5d5..79be76a 100644 (file)
        "api-error-copyuploaddisabled": "Tallentaminen URL-osoitteesta ei ole käytössä.",
        "api-error-duplicate": "Samansisältöisiä tiedostoja löytyi {{PLURAL:$1|[$2 yksi kappale]|[$2 useampia kappaleita]}}.",
        "api-error-duplicate-archive": "Sivustolla oli aiemmin {{PLURAL:$1|[$2 toinen samansisältöinen tiedosto]|[$2 toisia samansisältöisiä tiedostoja]}}, mutta {{PLURAL:$1|se|ne}} poistettiin.",
-       "api-error-duplicate-archive-popup-title": "Tiedostolla on {{PLURAL:$1|poistettu kaksoiskappale|poistettuja kaksoiskappaleita}}",
-       "api-error-duplicate-popup-title": "Tiedoston {{PLURAL:$1|kaksoiskappale|kaksoiskappaleet}}",
        "api-error-empty-file": "Määrittämäsi tiedosto on tyhjä.",
        "api-error-emptypage": "Ei ole sallittua luoda uutta, tyhjää sivua.",
        "api-error-fetchfileerror": "Sisäinen virhe: Jotakin meni pieleen kun tiedostoa haettiin.",
index 010340d..7eb3b97 100644 (file)
        "nstab-template": "Modèle",
        "nstab-help": "Aide",
        "nstab-category": "Catégorie",
+       "mainpage-nstab": "Accueil",
        "nosuchaction": "Action inconnue",
        "nosuchactiontext": "L'action spécifiée dans l'URL est invalide.\nVous avez peut-être mal entré l'URL ou suivi un lien erroné.\nIl peut également s'agir d'un bug dans le logiciel utilisé par {{SITENAME}}.",
        "nosuchspecialpage": "Page spéciale inexistante",
        "permissionserrorstext-withaction": "Vous ne pouvez pas $2, pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} :",
        "recreate-moveddeleted-warn": "'''Attention : vous êtes en train de recréer une page qui a été précédemment supprimée.'''\n\nAssurez-vous qu'il est pertinent de poursuivre les modifications sur cette page. Le journal des suppressions et des déplacements est affiché ci-dessous :",
        "moveddeleted-notice": "Cette page a été supprimée. Le journal des suppressions et des déplacements est affiché ci-dessous pour référence.",
+       "moveddeleted-notice-recent": "Désolé, cette page a été récemment supprimée (dans les dernières 24 heures).\nLes journaux des suppressions et des renommages pour la page sont fournis ci-dessous à titre d’information.",
        "log-fulllog": "Voir le journal complet",
        "edit-hook-aborted": "Échec de la modification par une extension.\nCause inconnue",
        "edit-gone-missing": "N'a pas pu mettre à jour la page.\nIl semble qu'elle ait été supprimée.",
        "api-error-badaccess-groups": "Vous n'êtes pas autorisé à verser des fichiers sur ce wiki.",
        "api-error-badtoken": "Erreur interne : mauvais « jeton ».",
        "api-error-copyuploaddisabled": "Les versements via URL sont désactivés sur ce serveur.",
-       "api-error-duplicate": "Il y a déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d'autres fichiers présents]}} sur le site avec le même contenu.",
-       "api-error-duplicate-archive": "Il y avait déjà {{PLURAL:$1|[$2 un autre fichier présent]|[$2 d'autres fichiers présents]}} sur le site avec le même contenu, mais {{PLURAL:$1|il a été supprimé|ils ont été supprimés}}.",
-       "api-error-duplicate-archive-popup-title": "Dupliquer {{PLURAL:$1|le fichier|les fichiers}} qui {{PLURAL:$1|a déjà été supprimé|ont déjà été supprimés}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|fichier|fichiers}} en double",
+       "api-error-duplicate": "Il y a déjà {{PLURAL:$1|un autre fichier présent|d'autres fichiers présents}} sur le site avec le même contenu.",
+       "api-error-duplicate-archive": "Il y avait déjà {{PLURAL:$1|un autre fichier présent|d'autres fichiers présents}} sur le site avec le même contenu, mais {{PLURAL:$1|il a été supprimé|ils ont été supprimés}}.",
        "api-error-empty-file": "Le fichier que vous avez soumis était vide.",
        "api-error-emptypage": "Création de pages vide n'est pas autorisée.",
        "api-error-fetchfileerror": "Erreur interne : Quelque chose s'est mal passé lors de la récupération du fichier.",
index 4812b02..39c9410 100644 (file)
        "api-error-copyuploaddisabled": "Los tèlèchargements per URL sont dèsactivâs sur cél sèrvor.",
        "api-error-duplicate": "Y at {{PLURAL:$1|[$2 un ôtro fichiér]|[$2 d’ôtros fichiérs]}} ja sur lo seto avouéc lo mémo contegnu.",
        "api-error-duplicate-archive": "Y avéve {{PLURAL:$1|[$2 un ôtro fichiér]|[$2 d’ôtros fichiérs]}} ja sur lo seto avouéc lo mémo contegnu, mas {{PLURAL:$1|il at étâ suprimâ|ils ont étâ suprimâs}}.",
-       "api-error-duplicate-archive-popup-title": "Duplicar {{PLURAL:$1|lo fichiér|los fichiérs}} qu’{{PLURAL:$1|at ja étâ suprimâ|ont ja étâ suprimâs}}",
-       "api-error-duplicate-popup-title": "Fichiér{{PLURAL:$1||s}} en doblo",
        "api-error-empty-file": "Lo fichiér que vos éd somês ére vouedo.",
        "api-error-emptypage": "La crèacion de pâges novèles vouedes est pas ôtorisâ.",
        "api-error-fetchfileerror": "Èrror de dedens : quârque-ren s’est mâl passâ pendent la rècupèracion du fichiér.",
index 087e202..09d69d8 100644 (file)
        "api-error-copyuploaddisabled": "Det huuchschüüren auer URL as üüb didiar server ei aktiif.",
        "api-error-duplicate": "Uun det Wiki {{PLURAL:$1|as al [$2 en ööder datei]|san al [$2 muar datein]}} mä detsalew banen.",
        "api-error-duplicate-archive": "Diar wiar al {{PLURAL:$1|[$2 ööder datei]|[$2 ööder datein]}} mä detsalew banen. {{PLURAL:$1|Hat as |Jo san}} oober stregen wurden.",
-       "api-error-duplicate-archive-popup-title": "Dobelt {{PLURAL:$1|datei, diar al stregen wurden as|datein, diar al stregen wurden san}}.",
-       "api-error-duplicate-popup-title": "Dobelt {{PLURAL:$1|datei|datein}}",
        "api-error-empty-file": "Det datei, wat dü huuchschüürd heest, as leesag.",
        "api-error-emptypage": "Dü mutst nian leesag sidjen nei iinstel.",
        "api-error-fetchfileerror": "Intern feeler: Bi't ufrepen faan det datei as wat skiaf gingen.",
index c9cb743..f42dd11 100644 (file)
        "api-error-copyuploaddisabled": "Tha luchdadh suas le URL à comas air an fhrithealaiche seo.",
        "api-error-duplicate": "Tha {{PLURAL:$1|[$2 faidhle eile]|are [$2 faidhlichean eile]}} air an làrach seo mar-thà sa bheil an aon susbaint.",
        "api-error-duplicate-archive": "Tha {{PLURAL:$1|[$2 faidhle eile]|are [$2 faidhlichean eile]}} air an làrach seo mar-thà sa bheil an aon susbaint ach chaidh {{PLURAL:$1|a sguabadh|an sguabadh}} às.",
-       "api-error-duplicate-archive-popup-title": "Bha {{PLURAL:$1|am faidhle|na faidhlichean}} dùblaichte air {{PLURAL:$1|a|an}} sguabadh às mar-thà.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Faidhle|Faidhlichean}} dùblaichte.",
        "api-error-empty-file": "Tha am faidhle a chuir thu a-null falamh.",
        "api-error-emptypage": "Chan fhaodar duilleagan falamh ùra a chruthachadh.",
        "api-error-fetchfileerror": "Mearachd taobh a-staigh: Chaidh rudeigin cearr le faighinn an fhaidhle.",
index 736f351..6d153b1 100644 (file)
        "api-error-copyuploaddisabled": "As cargas mediante URL están desactivadas neste servidor.",
        "api-error-duplicate": "Xa hai {{PLURAL:$1|[$2 outro ficheiro]|[$2 outros ficheiros]}} no wiki co mesmo contido",
        "api-error-duplicate-archive": "Había {{PLURAL:$1|[$2 outro ficheiro]|[$2 outros ficheiros]}} no sitio co mesmo contido, pero {{PLURAL:$1|foi borrado|foron borrados}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Ficheiro duplicado|Ficheiros duplicados}} que xa {{PLURAL:$1|foi borrado|foron borrados}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Ficheiro duplicado|Ficheiros duplicados}}",
        "api-error-empty-file": "O ficheiro que enviou estaba baleiro.",
        "api-error-emptypage": "Non está permitida a creación de páxinas novas que estean baleiras.",
        "api-error-fetchfileerror": "Erro interno: Houbo un problema ao buscar o ficheiro.",
index 94c5a0b..3ea206e 100644 (file)
        "api-error-copyuploaddisabled": "S Uffelade iber e URL isch uf däm Server deaktiviert.",
        "api-error-duplicate": "S git im Wiki scho {{PLURAL:$1|[$2 ei anderi Datei]|[$2 anderi Dateie]}} mit em glyche Inhalt.",
        "api-error-duplicate-archive": "Es {{PLURAL:$1|isch scho [$2 e andri Datei]|sin scho [$2 anderi Dateie]}} mit em glyche Inhalt vorhande gsi. {{PLURAL:$1|Si isch|Si sin}} allerdings glöscht worde.",
-       "api-error-duplicate-archive-popup-title": "Doppelti {{PLURAL:$1|Datei, wo scho worde isch|Dateie, wo scho glöscht worde sin}}",
-       "api-error-duplicate-popup-title": "Dopplet vorhandeni {{PLURAL:$1|Datei|Dateie}}",
        "api-error-empty-file": "D Datei, wu Du uffeglade hesch, isch läär.",
        "api-error-emptypage": "S isch nit erlaubt, neji lääri Syte aazlege.",
        "api-error-fetchfileerror": "Intärne Fähler: Bim Abruefe vu dr Datei isch e Fähler ufträtte.",
index 3dae27d..d476e5a 100644 (file)
        "api-error-copyuploaddisabled": "આ સર્વર પર URL દ્વારા માહિતી ચઢાવવા પર પ્રતિબંધ",
        "api-error-duplicate": "આ {{PLURAL:$1|is [$2 another file]|are [$2 some other files]}} પહેલેથી સાઈટ પર તેજ માહિતી સાથે મોજૂદ છે.",
        "api-error-duplicate-archive": "ત્યાં {{PLURAL:$1|was [$2 another file]|were [$2 some other files]}} તે જ મહિતી સાથે મોજૂદ છે , પણ {{PLURAL:$1|it was|they were}} હટાવી દો.",
-       "api-error-duplicate-archive-popup-title": "ડ્યુપ્લીકેટ {{PLURAL:$1|ફાઈલ|ફાઈલો}} પહેલેથી મોજુદ છે.",
-       "api-error-duplicate-popup-title": "આબેહુબ અન્ય {{PLURAL:$1|ફાઈલ|ફાઈલો}}.",
        "api-error-empty-file": "તમે ચડાવેલ ફાઈલ ખાલી છે",
        "api-error-emptypage": "નવા ખાલી પાનાં બનાવવાની પરવાનગી નથી.",
        "api-error-fetchfileerror": "આંતરીક ત્રુટી: ફાઈલ લાવતી વખતે અમુક ગડબડ થઈ",
index 7625a16..3a38c7a 100644 (file)
        "nstab-template": "תבנית",
        "nstab-help": "דף עזרה",
        "nstab-category": "קטגוריה",
+       "mainpage-nstab": "עמוד ראשי",
        "nosuchaction": "אין פעולה כזו",
        "nosuchactiontext": "הפעולה שצוינה בכתובת ה־URL אינה תקינה.\nייתכן שטעית בהקלדת ה־URL, או שהשתמשת בקישור לא נכון.\nייתכן גם שהבעיה נוצרה כתוצאה מבאג בתוכנה המשמשת את {{SITENAME}}.",
        "nosuchspecialpage": "אין דף מיוחד בשם זה",
        "permissionserrorstext-withaction": "אינך מורשה $2, מה{{PLURAL:$1|סיבה הבאה|סיבות הבאות}}:",
        "recreate-moveddeleted-warn": "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''\n\nכדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.\nיומני המחיקות וההעברות של הדף מוצגים להלן:",
        "moveddeleted-notice": "דף זה נמחק.\nיומני המחיקות וההעברות של הדף מוצגים להלן.",
+       "moveddeleted-notice-recent": "סליחה, הדף הזה נמחק לאחרונה (ב־24 השעות האחרונות).\nיומני המחיקה וההעברה של הדף מוצגים להלן לעיון.",
        "log-fulllog": "הצגת היומן המלא",
        "edit-hook-aborted": "העריכה בוטלה על־ידי Hook.\nלא ניתן הסבר לביטול.",
        "edit-gone-missing": "לא ניתן לעדכן את הדף.\nנראה שהוא נמחק.",
        "api-error-badaccess-groups": "אינך מורשה להעלות קבצים לאתר הוויקי הזה.",
        "api-error-badtoken": "שגיאה פנימית: אסימון שבור.",
        "api-error-copyuploaddisabled": "העלאה לפי כתובת כובתה בשרת זה.",
-       "api-error-duplicate": "כבר יש באתר הוויקי {{PLURAL:$1|[$2 קובץ אחר] בעל|[$2 קבצים אחרים] בעלי}} אותו תוכן.",
-       "api-error-duplicate-archive": "באתר כבר {{PLURAL:$1|היה [$2 קובץ אחר]|היו [$2 קבצים אחרים]}} עם אותו תוכן, אבל {{PLURAL:$1|הוא נמחק|הם נמחקו}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|קובץ כפול שכבר נמחק|קבצים כפולים שכבר נמחקו}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|קובץ כפול|קבצים כפולים}}",
+       "api-error-duplicate": "כבר יש באתר הזה {{PLURAL:$1|קובץ אחר|קבצים אחרים}} עם אותו תוכן.",
+       "api-error-duplicate-archive": "כבר {{PLURAL:$1|היה|היו}} באתר הזה {{PLURAL:$1|קובץ|קבצים}} עם אותו תוכן, אבל {{PLURAL:$1|הוא נמחק|הם נמחקו}}.",
        "api-error-empty-file": "הקובץ ששלחת היה ריק.",
        "api-error-emptypage": "יצירת דפים חדשים ריקים אינה אפשרית.",
        "api-error-fetchfileerror": "שגיאה פנימית: משהו השתבש בזמן אחזור הקובץ.",
index 893070d..baf854a 100644 (file)
        "nstab-template": "साँचा",
        "nstab-help": "सहायता पृष्ठ",
        "nstab-category": "श्रेणी",
+       "mainpage-nstab": "मुखपृष्ठ",
        "nosuchaction": "ऐसा कोई कार्य नहीं है",
        "nosuchactiontext": "इस यू॰आर॰एल द्वारा निर्दिष्ट क्रिया अवैध है।\nआपने यू॰आर॰एल गलत लिखा होगा, या किसी गलत कड़ी का प्रयोग किया होगा।\nयह {{SITENAME}} के सॉफ़्टवेयर में त्रुटि भी हो सकती है।",
        "nosuchspecialpage": "ऐसा कोई विशेष पृष्ठ नहीं है",
        "api-error-copyuploaddisabled": "URL द्वारा इस सर्वर पर अपलोड अक्षम है।",
        "api-error-duplicate": "वहाँ {{PLURAL:$1| [ $2 अन्य फ़ाइल] | रहे हैं [ $2 कुछ अन्य फ़ाइलों]}} एक ही सामग्री के साथ साइट पर पहले से ही है.",
        "api-error-duplicate-archive": "वहाँ {{PLURAL:$1|था [$2 कुछ अन्य फ़ाइल] |were [$2 कुछ अन्य फ़ाइलें]}}, पहले से ही {{PLURAL:$1|यह was|they थे}} परन्तु  हटा दिये गये",
-       "api-error-duplicate-archive-popup-title": "डुप्लिकेट {{PLURAL:$1| फ़ाइल | फ़ाइलें}} है कि पहले से ही हटा दिया गया है",
-       "api-error-duplicate-popup-title": "डुप्लिकेट {{PLURAL:$1| फ़ाइल | फ़ाइलें}}",
        "api-error-empty-file": "प्रस्तुत फ़ाइल खाली था।",
        "api-error-emptypage": "नए खाली पृष्ठ बनाने की अनुमति नहीं है।",
        "api-error-fetchfileerror": "आंतरिक त्रुटि: जब फ़ाइल लाया जा रहा तो कुछ गलत हो गया था।",
index 9c90dcc..f5c4f10 100644 (file)
        "api-error-copyuploaddisabled": "Uploading by URL ke ii server me disable kar dewa gais hae.",
        "api-error-duplicate": "There {{PLURAL:$1|is [$2 another file]|are [$2 some other files]}} already on the site with the same content.",
        "api-error-duplicate-archive": "There {{PLURAL:$1|was [$2 another file]|were [$2 some other files]}} already on the site with the same content, but {{PLURAL:$1|it was|they were}} deleted.",
-       "api-error-duplicate-archive-popup-title": "Duplicate {{PLURAL:$1|file that has|files that have}} already been deleted.",
-       "api-error-duplicate-popup-title": "Duplicate {{PLURAL:$1|file|files}}.",
        "api-error-empty-file": "Jon file ke aap submit karaa rahaa, khaali hae.",
        "api-error-emptypage": "Nawaa, khaali panna ke banae ke ijajat nai hae.",
        "api-error-fetchfileerror": "Internal error: File khoje ke time kuch wrong hoe gais hae.",
index fc9c649..b197805 100644 (file)
        "api-error-copyuploaddisabled": "Postavljanje datoteka putem URL-a nije omogućeno na ovom projektu.",
        "api-error-duplicate": "{{PLURAL:$1|Postoji [$2 druga datoteka]|Postoje $1 [$2 druge datoteke]|Postoji $1 [$2 drugih datoteka]}} istog sadržaja.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 neke druge datoteke]|Postojalo je [$2 nekih drugih datoteka]}} na projektu s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Dupla datoteka|Duple datoteke}} koje su ranije obrisane.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|$1 dupla datoteka|$1 duple datoteke|$1 duplih datoteka}}.",
        "api-error-empty-file": "Datoteka koju ste poslali je prazna.",
        "api-error-emptypage": "Stvaranje praznih novih stranica nije dopušteno.",
        "api-error-fetchfileerror": "Interna pogrješka: Pojavio se neki problem pri dobivanju podataka o datoteci.",
index e0235d3..7230388 100644 (file)
        "api-error-copyuploaddisabled": "Das Hochloode doorrich URL woard uff dem Server deaktiviert.",
        "api-error-duplicate": "Do gebts im Wiki schon {{PLURAL:$1|[$2 en anner Datei]|[$2 mehrre andere Dateie]}} mit dem gleiche Inhalt.",
        "api-error-duplicate-archive": "Es {{PLURAL:$1|war schon [$2 annre Datei]|woore schon [$2 annre Dateie]}} mit dem gleiche Inhalt voarhand. {{PLURAL:$1|Sie woard|Sie woorre}} awer abgewischt.",
-       "api-error-duplicate-archive-popup-title": "Doppelt {{PLURAL:$1|Datei, wo schon abgewischt woard|Dateie, wo sochon abgewischt worre}}",
-       "api-error-duplicate-popup-title": "Doppelt vorhandne {{PLURAL:$1|Datei|Dateie}}",
        "api-error-empty-file": "Die hochgeloodne Datei woor leer.",
        "api-error-emptypage": "Es ist net erlaubt, neie leere Seite erstelle.",
        "api-error-fetchfileerror": "Interner Fehler: Bei dem Datei abrufe ist en Fehler uffgetret.",
index 28625c2..359b2a4 100644 (file)
        "api-error-copyuploaddisabled": "Nahrawanje přez URL je na tutym serwerje znjemóžnjene.",
        "api-error-duplicate": "{{PLURAL:$1|Je|Stej|Su|Je}} hižo {{PLURAL:$1|[$2 druha dataja]|[$2 druhej dataji]|[$2 druhe dataje]|[$2 druhich datajow]}} ze samsnym wobsahom na sydle",
        "api-error-duplicate-archive": "{{PLURAL:$1|Bě [$2 druha dataja]|Běštej [$2 druhej dataji]|Běchu [$2 druhe dataje]|Bě [$2 druhich datajow]}} hižo na websydle ze samsnym wobsahom, ale {{PLURAL:$1|je so zhašała|stej so zhašałoj|su so zhašeli|je so zhašało}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Dwójna dataja, kotraž je|Dwójnej dataji, kotrejž stej|Dwójne dataje, kotrež su|Dwójne dataje, kotrež su}} so hižo {{PLURAL:$1|zhašała|zhašałoj|zhašeli|zhašeli}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Dwójna dataja|Dwójnej dataji|Dwójne dataje|Dwójne dataje}}",
        "api-error-empty-file": "Dataja, kotruž sy nahrał, je prózdna.",
        "api-error-emptypage": "Wutworjenje nowych, prózdnych stronow njeje dowolene.",
        "api-error-fetchfileerror": "Nutřkowny zmylk: při wobstarowanju dataje je so něšto nimokuliło.",
index 8ad74b9..ac011ba 100644 (file)
        "api-error-copyuploaddisabled": "Az URL-címes feltöltés nem engedélyezett ezen a kiszolgálón.",
        "api-error-duplicate": "Már van {{PLURAL:$1|egy|néhány}} [$2 másik fájl] az oldalon ugyanilyen tartalommal",
        "api-error-duplicate-archive": "Az oldalon {{PLURAL:$1|szerepelt|szerepeltek}} [$2 más {{PLURAL:$1|fájl|fájlok}}] is ugyanezzel a tartalommal, de törölve {{PLURAL:$1|lett|lettek}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Az azonos fájl, ami törölve lett|Azonos fájlok, amik törölve lettek}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Duplikátum|Duplikátumok}}",
        "api-error-empty-file": "Az általad elküldött fájl üres volt.",
        "api-error-emptypage": "Új, üres lap létrehozása nem engedélyezett.",
        "api-error-fetchfileerror": "Belső hiba: valami baj történt a fájl beolvasása közben.",
index cb00042..89aa4b1 100644 (file)
        "changeemail-password": "Contrasigno de {{SITENAME}}:",
        "changeemail-submit": "Cambiar e-mail",
        "changeemail-throttled": "Tu ha facite troppo de tentativas de aperir session.\nPer favor attende $1 ante de probar lo novemente.",
+       "changeemail-nochange": "Per favor entra un altere nove adresse de e-mail.",
        "resettokens": "Reinitialisar indicios",
        "resettokens-text": "Hic tu pote reinitialisar le indicios que permitte le accesso a certe datos private associate a tu conto.\n\nTu deberea facer lo si tu los ha accidentalmente dividite con un altere persona o si tu conto ha essite compromittite.",
        "resettokens-no-tokens": "Il non ha indicios a reinitialisar.",
        "api-error-copyuploaddisabled": "Le incargamentos per URL es disactivate in iste servitor.",
        "api-error-duplicate": "Existe jam [$2 {{PLURAL:$1|un altere file|altere files}}] in le wiki con le mesme contento.",
        "api-error-duplicate-archive": "Il habeva jam {{PLURAL:$1|[$2 un altere file]|[$2 altere files]}} in le sito con le mesme contento, ma {{PLURAL:$1|illo|illos}} ha essite delite.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|File|Files}} duplicate que ha jam essite delite",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|File|Files}} duplicate",
        "api-error-empty-file": "Le file que tu submitteva es vacue.",
        "api-error-emptypage": "Le creation de nove paginas vacue non es permittite.",
        "api-error-fetchfileerror": "Error interne: qualcosa errava durante le obtention del file.",
index 05b2682..6c9cedf 100644 (file)
        "api-error-copyuploaddisabled": "Mengunggah melalui URL dilarang pada peladen ini.",
        "api-error-duplicate": "Sudah ada {{PLURAL:$1|[$2 berkas lain]}} dengan konten yang sama di situs ini.",
        "api-error-duplicate-archive": "Ada {{PLURAL:$1|[$2 berkas]}} lain di situs dengan konten yang sama, namun {{PLURAL:$1|berkas|berkas-berkas}} itu telah dihapus.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Berkas|Berkas-berkas}} duplikat yang telah dihapus.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Berkas}} duplikat.",
        "api-error-empty-file": "Berkas yang Anda kirim kosong.",
        "api-error-emptypage": "Pembuatan halaman baru yang kosong tidak diizinkan.",
        "api-error-fetchfileerror": "Kesalahan internal: terjadi kesalahan saat memperoleh berkas ini.",
index 63fd383..6a0f328 100644 (file)
        "rows": "Ar-aray:",
        "columns": "Dagiti batong:",
        "searchresultshead": "Biruken",
-       "stub-threshold": "Pagpatinggaan para iti panagpormat iti <a href=\"#\" class=\"stub\">pungol a silpo</a> (dagiti byte):",
+       "stub-threshold": "Pagpatinggaan para iti panagpormat iti silpo ti pungol ($1):",
+       "stub-threshold-sample-link": "wadan",
        "stub-threshold-disabled": "Nabaldado",
        "recentchangesdays": "Al-aldaw nga ipakita iti kaudian a balbaliw:",
        "recentchangesdays-max": "Kapaut nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}",
        "booksources-text": "Dita baba ket listaan dagiti silpo ti sabali a sitio nga aglaklako ti baro ken saan a nausar a liblibro, ken mabalin nga addaan pay iti adu a pakaammo a maipanggep kadagiti libro a birbirukem:",
        "booksources-invalid-isbn": "Ti naited nga ISBN ket kasla saan nga umisu; kitaen dagiti biddut ti panagtulad manipud ti kasisigud a taudan.",
        "specialloguserlabel": "Nangitungpal:",
-       "speciallogtitlelabel": "Puntaan (titulo wenno agar-aramat):",
+       "speciallogtitlelabel": "Puntaan (titulo wenno {{ns:user}}:nagan ti agar-aramat para iti agar-aramat):",
        "log": "Dagiti listaan",
        "all-logs-page": "Amin a listaan a publiko",
        "alllogstext": "Naikaykaysa a panagiparang kadagiti amin a magun-od a listaan iti {{SITENAME}}.\nMapabassitmo ti panagkita babaen ti panagpili ti kita ti listaan, ti nagan ti agar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (sensitibo pay ti kadakkel ti letra).",
        "tooltip-ca-nstab-main": "Kitaen ti naglaon a panid",
        "tooltip-ca-nstab-user": "Kitaen ti panid ti agar-aramat",
        "tooltip-ca-nstab-media": "Kitaen ti panid ti midia",
-       "tooltip-ca-nstab-special": "Daytoy ket espesial a panid, saanmo a mismo a maurnos daytoy a panid",
+       "tooltip-ca-nstab-special": "Daytoy ket espesial a panid, ken saan a mabalin a maurnos",
        "tooltip-ca-nstab-project": "Kitaen ti panid ti proyekto",
        "tooltip-ca-nstab-image": "Kitaen ti panid ti papeles",
        "tooltip-ca-nstab-mediawiki": "Kitaen ti mensahe ti sistema",
        "api-error-copyuploaddisabled": "Ti panagikarga babaen ti URL ket nabaldado iti daytoy server.",
        "api-error-duplicate": "Adda {{PLURAL:$1|ket [$2 a sabali a papeles] |dagiti [$2 sabsabali a papeles]}} nga addaan ditoy a sitio nga agpada ti linaon.",
        "api-error-duplicate-archive": "Adda {{PLURAL:$1|idi [$2 sabali a papeles]|dagidi [$2 sabali a papeles]}} nga addaan ditoy a sitio nga agpada ti linaonda, ngem {{PLURAL:$1|daytoy|dagitoy}} ket naikkat.",
-       "api-error-duplicate-archive-popup-title": "Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}} a naikkaten.",
-       "api-error-duplicate-popup-title": "Duplikado {{PLURAL:$1|ti papeles|dagiti papeles}}.",
        "api-error-empty-file": "Ti papeles nga intedmo ket awan linaon.",
        "api-error-emptypage": "Agparprtuat ti baro, dagiti awan ti linaon a panid ket saan a maipalubos.",
        "api-error-fetchfileerror": "Akin-uneg a biddut: Addaan ti dakes a napasamak bayat nga agal-ala ti papeles.",
index 0f697a9..ef52420 100644 (file)
        "api-error-copyuploaddisabled": "Ekki er hægt að hlaða upp með vefslóð á þessum vefþjón.",
        "api-error-duplicate": "Það {{PLURAL:$1|er [$2 önnur skrá]|eru [$2 aðrar skrár]}} þegar til á vefsvæðinu sem hafa sama innihald.",
        "api-error-duplicate-archive": "Það {{PLURAL:$1|var [$2 önnur skrá]|voru [$2 aðrar skrár]}} þegar á síðunni með sama innihald, en {{PLURAL:$1|henni|þeim}} var eytt.",
-       "api-error-duplicate-archive-popup-title": "Eins {{PLURAL:$1|skrá|skrár}} sem {{PLURAL:$1|hefur|hafa}} þegar verið eytt.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Afrituð skrá|Afritaðar skrár}}",
        "api-error-empty-file": "Skráin sem þú valdir er tóm.",
        "api-error-emptypage": "Stofnun nýrra, tómra síðna er óheimil.",
        "api-error-fetchfileerror": "Innri villa: Mistókst að sækja skránna.",
index bc3d1bc..9f243f2 100644 (file)
        "nstab-template": "Template",
        "nstab-help": "Aiuto",
        "nstab-category": "Categoria",
+       "mainpage-nstab": "Pagina principale",
        "nosuchaction": "Operazione non riconosciuta",
        "nosuchactiontext": "L'azione specificata nella URL non è valida.\nÈ possibile che la URL sia stata digitata in modo errato o che sia stato seguito un collegamento non valido.\nCiò potrebbe anche indicare un bug in {{SITENAME}}.",
        "nosuchspecialpage": "Pagina speciale non disponibile",
        "changeemail-password": "La password su {{SITENAME}}:",
        "changeemail-submit": "Modifica email",
        "changeemail-throttled": "Sono stati effettuati troppi tentativi di accesso.\nAttendi $1 e riprova in seguito.",
+       "changeemail-nochange": "Per favore inserisci un nuovo indirizzo e-mail.",
        "resettokens": "Reimposta token",
        "resettokens-text": "Qui puoi reimpostare le chiavi che permettono l'accesso a determinati dati privati associati alla tua utenza.\n\nDovresti farlo se le hai accidentalmente condivise con qualcuno o se la tua utenza è stato compromessa.",
        "resettokens-no-tokens": "Non ci sono token da reimpostare.",
        "permissionserrorstext-withaction": "Non si dispone dei permessi necessari per $2, per {{PLURAL:$1|il seguente motivo|i seguenti motivi}}:",
        "recreate-moveddeleted-warn": "<strong>Attenzione: si sta per ricreare una pagina già cancellata in passato.</strong>\n\nAccertarsi che sia davvero opportuno continuare a modificare questa pagina.\nL'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per comodità:",
        "moveddeleted-notice": "Questa pagina è stata cancellata. L'elenco delle relative cancellazioni e degli spostamenti viene riportato di seguito per informazione.",
+       "moveddeleted-notice-recent": "Spiacenti, questa pagina è stata cancellata recentemente (nelle ultime 24 ore).\n\nLe azioni di cancellazione e spostamento per questa pagina sono disponibili di seguito per completezza.",
        "log-fulllog": "Visualizza log completo",
        "edit-hook-aborted": "La modifica è stata annullata dall'hook.\nNon è stata restituita alcuna spiegazione.",
        "edit-gone-missing": "Impossibile aggiornare la pagina.\nSembra che sia stata cancellata.",
        "api-error-copyuploaddisabled": "Il caricamento tramite URL è disabilitato su questo server.",
        "api-error-duplicate": "Sul sito {{PLURAL:$1|c'è già [$2 un altro documento]|ci sono già [$2 altri documenti]}} con lo stesso contenuto.",
        "api-error-duplicate-archive": "{{PLURAL:$1|C'era [$2 un altro file]|C'erano [$2 altri file]}} già nel sito con lo stesso contenuto, ma {{PLURAL:$1|è stato cancellato|sono stati cancellati}}.",
-       "api-error-duplicate-archive-popup-title": "File duplicat{{PLURAL:$1|o che è già stato cancellato|i che sono già stati cancellati}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|documento duplicato|documenti duplicati}}",
        "api-error-empty-file": "Il file selezionato era vuoto.",
        "api-error-emptypage": "La creazione di nuove pagine vuote non è consentita.",
        "api-error-fetchfileerror": "Errore interno: c'è stato un problema durante il recupero del documento.",
index 8939be7..48ed171 100644 (file)
        "nstab-template": "テンプレート",
        "nstab-help": "ヘルプページ",
        "nstab-category": "カテゴリ",
+       "mainpage-nstab": "メインページ",
        "nosuchaction": "そのような操作はありません",
        "nosuchactiontext": "この URL で指定された操作は正しくありません。\nURL を間違って入力したか、正しくないリンクをたどった可能性があります。\n{{SITENAME}}が利用するソフトウェアのバグの可能性もあります。",
        "nosuchspecialpage": "そのような特別ページはありません",
        "permissionserrorstext-withaction": "あなたには「$2」を行う権限はありません。{{PLURAL:$1|理由}}は以下の通りです:",
        "recreate-moveddeleted-warn": "<strong>警告: 以前削除されたページを再作成しようとしています。</strong>\n\nこのページの編集を続行するのが適切かどうかご確認ください。\n参考までに、このページの削除と移動の記録を以下に示します:",
        "moveddeleted-notice": "このページは削除されています。\n参考のため、このページの削除と移動の記録を以下に表示します。",
+       "moveddeleted-notice-recent": "ごめんなさい、このページは最近に削除されました (過去24時間以内)。このページについての削除と移動のログが、参考のため、以下にて提供されています。",
        "log-fulllog": "完全な記録を閲覧",
        "edit-hook-aborted": "フックによって編集が破棄されました。\n理由は不明です。",
        "edit-gone-missing": "ページを更新できませんでした。\n既に削除されているようです。",
        "api-error-copyuploaddisabled": "URLによるアップロードはこのサーバーでは無効になっています。",
        "api-error-duplicate": "当ウェブサイト上には、既に同じ内容の{{PLURAL:$1|[$2 他のファイル]が|[$2 他のファイルがいくつか]}}存在しています。",
        "api-error-duplicate-archive": "サイト上に同じ内容の{{PLURAL:$1|[$2 別のファイル]が|[$2 他のファイルがいくつか]}}既にありましたが、{{PLURAL:$1|それは|それらは}}削除されました。",
-       "api-error-duplicate-archive-popup-title": "重複した{{PLURAL:$1|ファイル|ファイル群}}は削除済みです。",
-       "api-error-duplicate-popup-title": "重複した{{PLURAL:$1|ファイル|ファイル群}}です。",
        "api-error-empty-file": "送信されたファイルは空でした。",
        "api-error-emptypage": "内容がないページの新規作成は許可されていません。",
        "api-error-fetchfileerror": "内部エラー: ファイルを取得する際に問題が発生しました。",
index 9ebdaa0..46ca07c 100644 (file)
                        "Xabier Armendaritz",
                        "Ælsån",
                        "Midnight Gambler",
-                       "아라"
+                       "아라",
+                       "Jyllanj"
                ]
        },
-       "tog-underline": "Understreg henvesnenger",
-       "tog-hideminor": "Skjul mendre ændrenger i'n liste åver seneste ændrenger",
+       "tog-underline": "Unjestreg henwisnenge:",
+       "tog-hideminor": "Sjul lie øndrenge i listen öwe siensti øndrenge",
+       "tog-hidepatrolled": "Sjul patruljiirtje redigiirenge i siensti øndrenge",
        "tog-extendwatchlist": "Udvedet liste ve seneste ændrenger",
        "tog-usenewrc": "Førbedret liste åver seneste ændrenger (JavaScript)",
-       "tog-numberheadings": "Åtåmatisk nåmererenge åf åverskrefter",
-       "tog-showtoolbar": "Ves værktøjslenje til redigærenge",
-       "tog-editondblclick": "Redigær sider ve dåbeltklik",
-       "tog-editsectiononrightclick": "Redigær åfsnet ve at klikke på deres titler",
+       "tog-numberheadings": "Automatisk nummeriireng å öweskrifte",
+       "tog-showtoolbar": "Wis wærktyeslinje te redigiireng",
+       "tog-editondblclick": "Redigiir side mä doppeltklikk",
+       "tog-editsectiononrightclick": "Redigiir åsnit we å højaklikk på dæes title",
        "tog-watchcreations": "Tilføj sider a åpretter til miin åvervågnengsliste",
        "tog-watchdefault": "Tilføj sider a redigærer til miin åvervågnengsliste",
        "tog-watchmoves": "Tilføj sider a flytter til miin åvervågnengsliste",
        "tog-watchdeletion": "Tilføj sider a sletter til miin åvervågnengsliste",
-       "tog-minordefault": "Markær søm standård ål redigærenge søm mendre",
-       "tog-previewontop": "Ves førhåndsvesnenge åver æ rædigerengsboks",
-       "tog-previewonfirst": "Ves førhåndsvesnenge når du stårtst ve at redigære",
+       "tog-minordefault": "Markiir som standard åll redigiirenge som lie",
+       "tog-previewontop": "Wis forhånjswisneng öwe redigiirengsboksi",
+       "tog-previewonfirst": "Wis forhånjswisneng we fösjti redigiireng",
        "tog-enotifwatchlistpages": "Send mig en e-mail ve sideændrenger",
-       "tog-enotifusertalkpages": "Send mig en e-mail når miin brugerdiskusjeside ændres",
+       "tog-enotifusertalkpages": "Senj mej i e-mail nær min brugediskusjonssiid øndas",
        "tog-enotifminoredits": "Send mig også en e-mail ve mendre ændrenger åf åvervågede sider",
-       "tog-enotifrevealaddr": "Ves miin e-mail-adresse i mails ve besked ændrenger'm",
-       "tog-shownumberswatching": "Ves åntal brugere, der åvervåger",
+       "tog-enotifrevealaddr": "Wis min e-mailadress i e-mails mä besked om øndrenge",
+       "tog-shownumberswatching": "Wis åntal bruga som öwewåge",
        "tog-fancysig": "Signaturer uden åtåmatisk henvesnenge",
        "tog-uselivepreview": "Brug åtåmatisk førhåndsvesnenge (eksperimentel)",
-       "tog-forceeditsummary": "Advar, hves sammenfatnenge mangler ve gemnenge",
-       "tog-watchlisthideown": "Skjul egne ændrenger i'n åvervågnengsliste",
-       "tog-watchlisthidebots": "Skjul ændrenger frå bots i'n åvervågnengsliste",
-       "tog-watchlisthideminor": "Skjul mendre ændrenger i'n åvervågnengsliste",
-       "tog-ccmeonemails": "Send mig kopier åf e-mails, søm a sender til andre brugere.",
-       "tog-diffonly": "Ves ve versjesammenlegnenger kun førskelle, ekke'n hele side",
-       "tog-showhiddencats": "Ves skjulte klynger",
-       "underline-always": "Ã¥ltid",
-       "underline-never": "Ã¥ldreg",
+       "tog-forceeditsummary": "Adwar mej hwes æ ett utfylle beskriiwelsfeltje",
+       "tog-watchlisthideown": "Sjul ejne øndrenge i öwewågnengslisten",
+       "tog-watchlisthidebots": "Sjul øndrenge fra bots i öwewågnengslisten",
+       "tog-watchlisthideminor": "Sjul lie øndrenge i öwewågningslisten",
+       "tog-ccmeonemails": "Senj mej kopie å e-mails som æ senje te anjer bruga",
+       "tog-diffonly": "Wis ett sidinholj nier unje versjonssammelliiknenge",
+       "tog-showhiddencats": "Wis sjulen kategorie",
+       "underline-always": "Ã\85ltid",
+       "underline-never": "Ã\85ller",
        "underline-default": "æfter brovserendstellenge",
-       "sunday": "søndåg",
-       "monday": "måndåg",
-       "tuesday": "tirsdåg",
-       "wednesday": "ønsdåg",
-       "thursday": "tårsdåg",
-       "friday": "fredåg",
-       "saturday": "lørsdåg",
+       "sunday": "søndaw",
+       "monday": "måndaw",
+       "tuesday": "tirsdaw",
+       "wednesday": "onsdaw",
+       "thursday": "tårsdaw",
+       "friday": "friedaw",
+       "saturday": "lørsdaw",
        "sun": "søn",
        "mon": "mån",
        "tue": "tir",
-       "wed": "øns",
+       "wed": "ons",
        "thu": "tår",
-       "fri": "fre",
+       "fri": "fri",
        "sat": "lør",
        "january": "januar",
        "february": "februar",
        "march": "mårts",
        "april": "åpril",
-       "may_long": "mæ",
+       "may_long": "maj",
        "june": "juni",
        "july": "juli",
        "august": "ågust",
        "september": "september",
        "october": "oktober",
        "november": "november",
-       "december": "desember",
+       "december": "december",
        "january-gen": "januars",
        "february-gen": "februars",
-       "march-gen": "mårtses",
+       "march-gen": "mårts'",
        "april-gen": "åprils",
-       "may-gen": "mæs",
-       "june-gen": "juniis",
-       "july-gen": "juliis",
+       "may-gen": "majs",
+       "june-gen": "junis",
+       "july-gen": "julis",
        "august-gen": "ågusts",
        "september-gen": "septembers",
        "october-gen": "oktobers",
        "november-gen": "novembers",
-       "december-gen": "desembers",
+       "december-gen": "decembers",
        "jan": "jan",
        "feb": "feb",
-       "mar": "mår",
-       "apr": "åpr",
-       "may": "mæ",
+       "mar": "mar",
+       "apr": "apr",
+       "may": "maj",
        "jun": "jun",
        "jul": "jul",
-       "aug": "ågu",
+       "aug": "aug",
        "sep": "sep",
        "oct": "okt",
        "nov": "nov",
-       "dec": "des",
-       "pagecategories": "{{PLURAL:$1|Klynge|Klynger}}",
-       "category_header": "Ertikler i'n klynge \"$1\"",
-       "subcategories": "Underklynger",
-       "category-media-header": "Medier i'n klynge „$1“",
-       "category-empty": "''Denne klynge endeholter før øjeblikket æ verke sider æller medie-gøret.''",
-       "hidden-categories": "{{PLURAL:$1|Skjult klynge|Skjulte klynger}}",
-       "hidden-category-category": "Skjulte klynger",
-       "listingcontinuesabbrev": "førtgøte",
-       "about": "Åm",
-       "article": "Ertikel",
-       "newwindow": "(åbner i et nyt vendue)",
-       "cancel": "Åfbryd",
-       "moredotdotdot": "Mære...",
-       "mypage": "Miin side",
-       "mytalk": "Min diskusje",
-       "anontalk": "Diskusjeside før denne IP-adresse",
-       "navigation": "Navigasje",
-       "and": "&#32;og",
-       "qbfind": "Søĝ",
-       "qbbrowse": "Gennemse",
-       "qbedit": "Redigær",
-       "qbpageoptions": "Endstellenger før side",
-       "qbmyoptions": "Miine endstellenger",
-       "faq": "VSF",
-       "faqpage": "Project:Vøl stellen fråĝer (VSF)",
+       "dec": "dec",
+       "pagecategories": "{{PLURAL:$1|Kategori|Kategorie}}",
+       "category_header": "Side i kategorien \"$1\"",
+       "subcategories": "Unjekategorie",
+       "category-media-header": "Medie i kategorien „$1“",
+       "category-empty": "''Kategorien inholje for yeblikke hverken side elle mediefile.''",
+       "hidden-categories": "{{PLURAL:$1|Sjultj kategori|Sjultj kategorie}}",
+       "hidden-category-category": "Sjulen kategorie",
+       "category-subcat-count": "{{PLURAL:$2|Kategorien hår en unjekategori.|Kategorien inholje nierstoenje {{PLURAL:$1|unjerkategori|$1 unjerkategorie}}, å i ållt $2.}}",
+       "category-article-count": "Kategorien inholje {{PLURAL:$2|kons den nierstoenje siid|{{PLURAL:$1|den nierstoenje siid|di nierstoenje $1 side}} å i ållt $2.}}",
+       "category-file-count": "Kategorien inholje {{PLURAL:$2|kons den nierstoenje siid|{{PLURAL:$1|i nierstoenje fil|di nierstoenje $1 file}} å i ållt $2.}}",
+       "listingcontinuesabbrev": "forts.",
+       "about": "Om",
+       "article": "Artikel",
+       "newwindow": "(åbne i e ny winjye)",
+       "cancel": "Åbryd",
+       "moredotdotdot": "Mier...",
+       "mypage": "Siid",
+       "mytalk": "Diskusjon",
+       "anontalk": "Diskusjonssiid for denn IP-adress",
+       "navigation": "Navigasjon",
+       "and": "&#32;å",
+       "qbfind": "Syeg",
+       "qbbrowse": "Djennemsie",
+       "qbedit": "Redigiir",
+       "qbpageoptions": "Instellenge for siid",
+       "qbmyoptions": "Min instellenge",
+       "faq": "OSS",
+       "faqpage": "Project:OSS",
+       "namespaces": "Naunrum",
+       "variants": "Variantje",
+       "navigation-heading": "Navigasjonsmenu",
        "errorpagetitle": "Fejl",
-       "returnto": "Tilbage til $1.",
-       "tagline": "Frå {{SITENAME}}",
-       "help": "Hjælp",
-       "search": "Søĝ",
-       "searchbutton": "Søĝ",
-       "go": "Gå til",
-       "searcharticle": "Gå til",
-       "history": "Skigt",
-       "history_short": "Skigte",
-       "updatedmarker": "(ændret)",
-       "printableversion": "Utskreftsvelig utgåf",
-       "permalink": "Permanent henvesnenge",
-       "print": "Udskrev",
-       "edit": "Redigær",
-       "create": "Skep",
-       "editthispage": "Redigær side",
-       "create-this-page": "Skep denne side",
-       "delete": "Slet",
-       "deletethispage": "Slet side",
-       "undelete_short": "Førtryd sletnenge åf {{PLURAL:$1|$1 versje|$1 versje}}",
-       "protect": "Beskyt",
-       "protect_change": "Ændret beskyttelse",
-       "protectthispage": "Beskyt side",
-       "unprotect": "Fjern beskyttelse",
-       "unprotectthispage": "Frigæv side",
-       "newpage": "Ny side",
-       "talkpage": "Diskusje",
-       "talkpagelinktext": "diskusje",
-       "specialpage": "Sonst side",
-       "personaltools": "Personlige værktø'r",
-       "articlepage": "Se'n ertikel",
-       "talk": "Diskusje",
-       "views": "Vesnenger",
-       "toolbox": "Værktø'r",
-       "userpage": "Se'n brugerside",
-       "projectpage": "Se'n projektside",
-       "imagepage": "Se'n billetside",
-       "mediawikipage": "Vese endholtsside",
-       "templatepage": "Vese skablånside",
-       "viewhelppage": "Vese hjælpeside",
-       "categorypage": "Vese klyngeside",
-       "viewtalkpage": "Se'n diskusje",
-       "otherlanguages": "Andre språĝ",
-       "redirectedfrom": "(Åmstyret frå $1)",
-       "redirectpagesub": "Åmstyrenge",
-       "lastmodifiedat": "Denne side blev senest ændret den $2, $1.",
-       "viewcount": "Æ side er vest i alt $1 {{PLURAL:$1|geng|genger}}.",
-       "protectedpage": "Beskyttet side",
-       "jumpto": "Skeft til:",
-       "jumptonavigation": "navigasje",
-       "jumptosearch": "Søĝnenge",
-       "aboutsite": "{{SITENAME}}'m",
-       "aboutpage": "Project:Åm",
-       "copyright": "Endholtet er udgævet under $1.",
-       "copyrightpage": "{{ns:project}}:Åphavsret",
-       "currentevents": "Nænte begevenheder",
-       "currentevents-url": "Project:Nænte begevenheder",
-       "disclaimers": "Førbeholt",
-       "disclaimerpage": "Project:Huses førbeholt",
-       "edithelp": "Hjælp til redigærenge",
-       "mainpage": "Førsit",
-       "mainpage-description": "Førsit",
+       "returnto": "Tebag te $1.",
+       "tagline": "Fra {{SITENAME}}",
+       "help": "Hjälp",
+       "search": "Syeg",
+       "searchbutton": "Syeg",
+       "go": "Go te",
+       "searcharticle": "Go te",
+       "history": "Historik",
+       "history_short": "Historik",
+       "updatedmarker": "opdatiirtj sien siensti besyeg",
+       "printableversion": "Utskriftswenli utgaw",
+       "permalink": "Permanentj henvisneng",
+       "print": "Utskriiw",
+       "view": "Wis",
+       "view-foreign": "Wis på $1",
+       "edit": "Redigiir",
+       "create": "Oprett",
+       "create-local": "Tilfye lokal beskriiwels",
+       "editthispage": "Redigiir siid",
+       "create-this-page": "Oprett siden",
+       "delete": "Slett",
+       "deletethispage": "Slett siid",
+       "undelete_short": "Fortryd slettneng å {{PLURAL:$1|jen versjon|$1 versjone}}",
+       "protect": "Beskøtt",
+       "protect_change": "ønda",
+       "protectthispage": "Beskøtt siid",
+       "unprotect": "Ønda beskøttels",
+       "unprotectthispage": "Ønda beskøttelsen å siden",
+       "newpage": "Ny siid",
+       "talkpage": "Diskusjon",
+       "talkpagelinktext": "diskusjon",
+       "specialpage": "Specialsiid",
+       "personaltools": "Personli wærktya",
+       "articlepage": "Sie artikli",
+       "talk": "Diskusjon",
+       "views": "Wisnenge",
+       "toolbox": "Wærktya",
+       "userpage": "Sie brugesiden",
+       "projectpage": "Sie projektsiden",
+       "imagepage": "Sie filsiden",
+       "mediawikipage": "Wis inholjssiid",
+       "templatepage": "Wis skabelonsiid",
+       "viewhelppage": "Wis hjälpsiid",
+       "categorypage": "Wis kategorisiid",
+       "viewtalkpage": "Sie diskusjon",
+       "otherlanguages": "Anjer spraw",
+       "redirectedfrom": "(Omdirigiirtj fra $1)",
+       "redirectpagesub": "Omdirigiirengssiid",
+       "redirectto": "Omdirigiir te:",
+       "lastmodifiedat": "Siden bløw sienst øndatj $1 kl. $2.",
+       "viewcount": "Siden ä wisen {{PLURAL:$1|jen gång|$1 gång}}.",
+       "protectedpage": "Beskøttetj siid",
+       "jumpto": "Skift te:",
+       "jumptonavigation": "navigasjon",
+       "jumptosearch": "Syegneng",
+       "aboutsite": "Om {{SITENAME}}",
+       "aboutpage": "Project:Om",
+       "copyright": "Inholje ä utdjøwen unje $1 mämenna ånj ä åndjøwen.",
+       "copyrightpage": "{{ns:project}}:Ophawsrett",
+       "currentevents": "Aktuell bedjøwenhede",
+       "currentevents-url": "Project:Aktuell bedjøwenhede",
+       "disclaimers": "Forbeholj",
+       "disclaimerpage": "Project:Generell forbeholj",
+       "edithelp": "Hjälp te redigiireng",
+       "helppage-top-gethelp": "Hjälp",
+       "mainpage": "Forsiid",
+       "mainpage-description": "Forsiid",
        "policy-url": "Project:Politik",
-       "portal": "Førside før skrebenter",
-       "portal-url": "Project:Førside før skrebenter",
-       "privacy": "Behandlenge åf personlige åplysnenger",
-       "privacypage": "Project:Behandlinge åf personlige åplysnenger",
-       "badaccess": "Manglende rettigheder",
-       "badaccess-group0": "Du harst ekke de nødvendege rettegheder til denne håndlenge.",
-       "badaccess-groups": "Denne håndlenge ken kun udføres åf brugere, søm tilhører en åf grupperne „$1“.",
-       "versionrequired": "Kræver versje $1 åf MediaWiki",
-       "versionrequiredtext": "Versje $1 åf MediaWiki er påkrævet, før at bruge denne side. Se'n [[Special:Version|versjeside]]",
-       "ok": "Er åkæ",
-       "retrievedfrom": "Hæntet frå \"$1\"",
-       "youhavenewmessages": "Du har $1 ($2).",
-       "youhavenewmessagesmulti": "Der er nye meddelelser til dig: $1",
-       "editsection": "redigær",
-       "editold": "redigær",
-       "viewsourceold": "ves æ kelde",
-       "editsectionhint": "Redigær åfsnet: $1",
-       "toc": "Endholtsførtegnelse",
-       "showtoc": "ves",
-       "hidetoc": "skjul",
-       "thisisdeleted": "Se æller gendan $1?",
-       "viewdeleted": "Ves $1?",
-       "restorelink": "{{PLURAL:$1|en slettet ændrenge|$1 slettede ændrenger}}",
-       "feedlinks": "Fiid:",
-       "feed-invalid": "Ugyldeg abånmentstype.",
-       "feed-unavailable": "RSS og Atåm fiid er ekke tilgængelege på {{SITENAME}}",
-       "site-rss-feed": "$1 RSS-fiid",
-       "site-atom-feed": "$1 Atom-fiid",
-       "page-rss-feed": "\"$1\" RSS-fiid",
-       "page-atom-feed": "\"$1\" Atom-fiid",
-       "red-link-title": "$1 (ekke skrevet endnu)",
-       "nstab-main": "ertikel",
-       "nstab-user": "brugerside",
-       "nstab-media": "medie",
-       "nstab-special": "sonst",
-       "nstab-project": "åm",
-       "nstab-image": "billet",
-       "nstab-mediawiki": "besked",
-       "nstab-template": "skablån",
-       "nstab-help": "hjælp",
-       "nstab-category": "Klynge",
-       "nosuchaction": "Æ funksje fendes ekke",
+       "portal": "Forsiid for skribentje",
+       "portal-url": "Project:Forsiid for skribentje",
+       "privacy": "Behånjleng å personli opløsnenge",
+       "privacypage": "Project:Behånjleng å personli opløsnenge",
+       "badaccess": "Månglenje rettighede",
+       "badaccess-group0": "Du hår ett di nødwenji rettighede te hånjlengen.",
+       "badaccess-groups": "Handlingen kan kons utförs å bruga som tilhör {{PLURAL:$2|gruppen|jen å grupper:}} $1.",
+       "versionrequired": "Kräwe versjon $1 å MediaWiki",
+       "versionrequiredtext": "Versjon $1 å MediaWiki ä påkräwen, for å brug siden. Sie [[Special:Version|versjonssiden]]",
+       "ok": "OK",
+       "retrievedfrom": "Hentjen fra \"$1\"",
+       "youhavenewmessages": "{{PLURAL:$3|Du hår}} $1 ($2).",
+       "youhavenewmessagesmulti": "Du hår nyj beskede på $1",
+       "editsection": "redigiir",
+       "editold": "redigiir",
+       "viewsourceold": "wis tjeljkode",
+       "editlink": "redigiir",
+       "viewsourcelink": "wis tjeljtekst",
+       "editsectionhint": "Redigiir åsnit: $1",
+       "toc": "Inholjsfortejnels",
+       "showtoc": "wis",
+       "hidetoc": "sjul",
+       "thisisdeleted": "Sie elle djensätt $1?",
+       "viewdeleted": "Wis $1?",
+       "restorelink": "{{PLURAL:$1|en sletten øndreng|$1 sletten øndrenge}}",
+       "feedlinks": "Feed:",
+       "feed-invalid": "Udjylji abonnementjstyp.",
+       "feed-unavailable": "Där ä in syndikiirengsfeeds tildjængeli",
+       "site-rss-feed": "$1 RSS-feed",
+       "site-atom-feed": "$1 Atom-feed",
+       "page-rss-feed": "\"$1\" RSS-feed",
+       "page-atom-feed": "\"$1\" Atom-feed",
+       "red-link-title": "$1 (siden ä ett skrøwen ennu)",
+       "nstab-main": "Siid",
+       "nstab-user": "Brugesiid",
+       "nstab-media": "Mediesiid",
+       "nstab-special": "Specialsiid",
+       "nstab-project": "Projektsiid",
+       "nstab-image": "Fil",
+       "nstab-mediawiki": "Besked",
+       "nstab-template": "Skabelon",
+       "nstab-help": "Hjælp",
+       "nstab-category": "Kategori",
+       "nosuchaction": "Funksjonen finjs ett",
        "nosuchactiontext": "Funksje ångævet i'n URL ken ekke genkendes åf æ MediaWiki-softwær",
-       "nosuchspecialpage": "En sådan sonstside fendes ekke",
+       "nosuchspecialpage": "En sån specialsiid finjs ett",
        "nospecialpagetext": "Du harst bedt en sonstside'm, der ekke ken genkendes åf æ MediaWiki-softwær.",
        "error": "Fejl",
        "databaseerror": "Databasefejl",
-       "laggedslavemode": "Bemærk: Den veste side endholter mulegves ekke de nyeste ændrenger.",
-       "readonly": "Æ database er skrevebeskyttet",
-       "enterlockreason": "Skrev en begrundelse før æ skrevebeskyttelse, ve samt en vurderenge åf, hvornår æ skrevebeskyttelse åphæves ig'n",
-       "readonlytext": "Æ database er midlertedegt skrevebeskyttet. Førsøĝ venlegst senere.\n\nÅrsag til æ spærrenge: $1",
-       "readonly_lag": "Æ database er åtåmatisk blevet låst mens slæfdatabaseserverne synkroniserer ve'n master database",
+       "laggedslavemode": "'''Bemærk:''' Den wisen siid inholje muliwis ett di nysti øndrenge.",
+       "readonly": "Databasi ä skriiwbeskøtten",
+       "enterlockreason": "Skriiw en begrunjels for skriiwbeskøttelsen, mä samt en wurdiireng å, nær skriiwbeskøttelsen ophäws idjen",
+       "readonlytext": "Databasi ä i yeblikke låsen for nyj poste å anje øndrenge, sånnsynliwis for rutinmæssi databaseweliholjels, hworette den will wær tebag te normal.\n\nAdministratori som hår låsen, djij forklarengen: $1",
+       "readonly_lag": "Databasi ä automatisk bløwen låsen mens slejvdatabaseserveren synkronisiir mä masterdatabasi",
        "internalerror": "Intern fejl",
        "internalerror_info": "Intern fejl: $1",
-       "filecopyerror": "Kan ekke kopiere'n file \"$1\" til \"$2\".",
-       "filerenameerror": "Kan ekke omdøbe'n file \"$1\" til \"$2\".",
-       "filedeleteerror": "Kan ekke slette'n file \"$1\".",
-       "directorycreateerror": "Kan ekke åprette katalåget \"$1\".",
-       "filenotfound": "Kan ekke finde'n file \"$1\".",
-       "unexpected": "Uventet værdi: \"$1\"=\"$2\".",
-       "formerror": "Fejl: Kan ekke åfsende formulær",
-       "badtitle": "Førkert skrevselenger",
-       "badtitletext": "Den ønskede sides nav var ekke tilladt, tøm æller æ side er førkert henvest frå en {{SITENAME}} på et andet språĝ.",
-       "viewsource": "Ves æ kelde",
+       "filecopyerror": "Ku ett kopiiir fili \"$1\" te \"$2\".",
+       "filerenameerror": "Ku ett omdøb fili \"$1\" te \"$2\".",
+       "filedeleteerror": "Ku ett slett fili \"$1\".",
+       "directorycreateerror": "Ku ett oprett mappen \"$1\".",
+       "filenotfound": "Ku ett finj fili \"$1\".",
+       "unexpected": "Uwentjen wärdi: \"$1\"=\"$2\".",
+       "formerror": "Fejl: Ku ett åsenj formular",
+       "badtitle": "Udjylji titel",
+       "badtitletext": "Titelen å onske siden war ett tillæt, tomm elle siden ä fortjiertj henwistj fra {{SITENAME}} på e ånj spraw.\nDen kan inholj iet elle flier tejn, som ett ma ånwenjs i title.",
+       "viewsource": "Wis tjeljtekst",
        "viewsourcetext": "Du ken dog se og åfskreve'n keldekode til æ side:",
-       "yourname": "Dit brugernav",
-       "yourpassword": "Din adgangskode",
+       "yourname": "Det brugenaun:",
+       "userlogin-yourname": "Brugenaun",
+       "userlogin-yourname-ph": "Intast det brugenaun",
+       "yourpassword": "Din adgångskode",
+       "userlogin-yourpassword": "Adgångskode",
+       "userlogin-yourpassword-ph": "Intast din adgångskode",
+       "createacct-yourpassword-ph": "Intast en adgångskode",
+       "createacct-yourpasswordagain": "Bekräft adgångskode",
+       "createacct-yourpasswordagain-ph": "Intast adgångskode idjen",
        "remembermypassword": "Husk min adgangskode til næste gang (for a maximum of $1 {{PLURAL:$1|day|days}})",
-       "login": "Loĝ på",
-       "nav-login-createaccount": "Åpret æ konto æller loĝ på",
-       "userlogin": "Åpret æ konto æller loĝ på",
-       "logout": "Loĝ åf",
-       "userlogout": "Loĝ åf",
-       "nologin": "Du har engen brugerkonto? $1.",
-       "nologinlink": "Åpret ny brugerkonto",
-       "createaccount": "Åpret en ny konto",
-       "gotaccount": "Du har ålerede en brugerkonto? '''$1'''.",
-       "gotaccountlink": "Loĝ på",
-       "loginsuccesstitle": "Du er nu loĝget på",
-       "loginsuccess": "Du er nu loĝget på {{SITENAME}} søm \"$1\".",
+       "userlogin-remembermypassword": "Husk mej",
+       "login": "Logg på",
+       "nav-login-createaccount": "Oprett e konto ellerlogg på",
+       "userlogin": "Oprett e konto elle logg på",
+       "logout": "Logg å",
+       "userlogout": "Logg å",
+       "userlogin-noaccount": "Hår du ett e konto?",
+       "userlogin-joinproject": "Slut dej te {{SITENAME}}",
+       "nologin": "Du hår iet kronto? $1.",
+       "nologinlink": "Oprett e ny brugekonto",
+       "createaccount": "Oprett e ny brugekonto",
+       "gotaccount": "Hår du ållried e konto? '''$1'''.",
+       "gotaccountlink": "Logg på",
+       "userlogin-resetpassword-link": "Glommen din adgångskode?",
+       "userlogin-helplink2": "Hjälp mä å logg på",
+       "createacct-emailoptional": "E-mailadress (walgfri)",
+       "createacct-email-ph": "Intast dej e-mailadress",
+       "createacct-captcha": "Sikerhedskontroll",
+       "createacct-imgcaptcha-ph": "Intast wenlist öwestoenje tekst",
+       "createacct-submit": "Oprett det konto",
+       "createacct-benefit-heading": "{{SITENAME}} laws å menske som du.",
+       "createacct-benefit-body1": "{{PLURAL:$1|redigiireng|redigiirenge}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|siid|side}}",
+       "createacct-benefit-body3": "{{PLURAL:$1|nyli bidrawye|nyli bidrawya}}",
+       "loginsuccesstitle": "Du ä nu loggen på",
+       "loginsuccess": "'''Du ä nu loggen på {{SITENAME}} som \"$1\".'''",
        "nosuchuser": "Der er ig'n bruger ve navnet \"$1\". Kontrollér æ stavemåde ig'n, æller brug æ formulår herunder til at åprette en ny brugerkonto.",
-       "nosuchusershort": "Der er ig'n bruger ve navn \"$1\". Tjek din stavnenge.",
-       "nouserspecified": "Angæv venlegst et brugernavn.",
-       "wrongpassword": "Den endtastede adgangskode var førkert. Prøv ig'n.",
-       "wrongpasswordempty": "Du glemte at endtaste password. Prøv ig'n.",
+       "nosuchusershort": "Där är ien bruge we naun \"$1\". Tjekk din stawneng.",
+       "nouserspecified": "Åndjie wenlist e brugenaun.",
+       "wrongpassword": "Den intasten adgångskode war forkiertj. Forsyeg idjen.",
+       "wrongpasswordempty": "Du glomm å intast adgångskode. Forsyeg idjen.",
        "passwordtooshort": "Dit kodeort er før kårt. Det skal være mendst $1 tegn langt.",
        "mailmypassword": "Send et nyt adgangskode til min e-mail-adresse",
-       "passwordremindertitle": "Nyt password til {{SITENAME}}",
+       "passwordremindertitle": "Ny midletidi adgångskode te {{SITENAME}}",
        "passwordremindertext": "Nogen (sandsynlegves dig, frå'n IP-addresse $1)\nhar bedt at vi sender dig en ny adgangskode til at loĝge på {{SITENAME}} ($4)'m.\nÆ adgangskode før bruger \"$2\" er nu \"$3\".\nDu bør loĝge på nu og ændre din adgangskode.,\n\nHves en anden har bestilt den nye adgangskode æller hves du er kåmet i tanke dit gamle password og ekke mære vil ændre det'm,\nkenst du bare ignorere denne mail og førtsætte ve at bruge dit gamle password.",
-       "noemail": "Der er ekke åplyst en e-mail-adresse før bruger \"$1\".",
-       "passwordsent": "En ny adgangskode er sendt til æ e-mail-adresse,\nsøm er registræret før \"$1\".\nDu bør loĝge på og ændre din adgangskode straks æfter du harst modtaget æ e-mail.",
+       "noemail": "Där ä ett opløstj en e-mailadress for bruge \"$1\".",
+       "passwordsent": "En ny adgångskode ä senjen te e-mailadressen, som ä registriirtj for \"$1\".\nDu bör logg på å ønda din adgangskode ette du hår modtan e-maili.",
        "eauthentsent": "En bekrftelsesmail er sendt til den angævne e-mail-adresse.\n\nFør en e-mail ken modtages åf andre brugere åf æ {{SITENAME}}-mailfunksje, skel æ adresse og dens tilhørsførholt til denne bruger bekræftes. Følg venlegst anvesnengerne i denne mail.",
-       "retypenew": "Gentag ny adgangskode",
-       "bold_sample": "Fed skrevselenger",
-       "bold_tip": "Fed skrevselenger",
-       "italic_sample": "Skyn skrevselenger",
-       "italic_tip": "Skyn skrevselenger",
-       "link_sample": "Henvesnenge",
-       "link_tip": "Ensende henvesnenge",
-       "extlink_sample": "http://www.example.com Skrevselenger på henvesnenge",
-       "extlink_tip": "Utsende henvesnenge (husk http:// førgøret)",
-       "headline_sample": "Skrevselenger til åverskreft",
-       "headline_tip": "Skå 2 åverskreft",
-       "nowiki_sample": "Endsæt skrevselenger her søm ekke skal redigær påke wikiskrevselenger",
-       "nowiki_tip": "Ekke wikiskrevselenger utse",
-       "image_tip": "Endlejret billet",
-       "media_tip": "Henvesnenge til multimediagøret",
-       "sig_tip": "Din håndstep ve tidsstep",
-       "hr_tip": "Plat lenje (brug den sparsåmt)",
-       "summary": "Beskrevelse:",
-       "subject": "Emne/åverskreft:",
-       "minoredit": "Dette'r en mendre æller lile ændrenge.",
-       "watchthis": "Åvervåg denne ertikel",
-       "savearticle": "Gem side",
-       "preview": "Førhåndsvesnenge",
-       "showpreview": "Førhåndsvesnenge",
-       "showdiff": "Ves ændrenger",
-       "anoneditwarning": "Du arbejder uden at være loĝget på. Estedet før brugernav veses så'n IP-adresse i'n hersenengerskigt.",
-       "summary-preview": "Førhåndsvesnenge åf beskrevelselejne:",
+       "loginlanguagelabel": "Spraw: $1",
+       "pt-login": "Logg på",
+       "pt-login-button": "Logg på",
+       "pt-createaccount": "Oprett konto",
+       "pt-userlogout": "Logg å",
+       "retypenew": "Djentast ny adgångskode",
+       "passwordreset": "Nullstell adgångskode",
+       "bold_sample": "Fied tekst",
+       "bold_tip": "Fied tekst",
+       "italic_sample": "Kursiw tekst",
+       "italic_tip": "Kursiw tekst",
+       "link_sample": "Henwisneng",
+       "link_tip": "Intern henwisneng",
+       "extlink_sample": "http://www.example.com titel på henwisneng",
+       "extlink_tip": "Ekstern henwisneng (husk http:// præfiks)",
+       "headline_sample": "Tekst te öweskrift",
+       "headline_tip": "Typ 2-øweskrift",
+       "nowiki_sample": "Insätt tekst her som ett skal wikiformatiirs",
+       "nowiki_tip": "Ignoriir wikiformatiireng",
+       "image_tip": "Inlejretj fil",
+       "media_tip": "Henwisneng te fil",
+       "sig_tip": "Din signatur mä tidsstempel",
+       "hr_tip": "Horisontal linje (brug den spårsom)",
+       "summary": "Sammelfattneng:",
+       "subject": "Emn/öweskrift:",
+       "minoredit": "Detj ä en lie øndreng",
+       "watchthis": "Öwewåg siden",
+       "savearticle": "Slo siid op",
+       "preview": "Forhånjswisneng",
+       "showpreview": "Forhånjswisneng",
+       "showdiff": "Wis øndrenge",
+       "anoneditwarning": "<strong>Advarsel:</strong> Du ä ett loggen på. Din IP-adress will blyw offentjlien tedjängli, hwes du foretår noe øndrenge. Hwes du <strong>[$1 logge på]</strong> elle <strong>[$2 oprette e konto]</strong> will din redigiirenge blyw tilskrøwen det brugenaun, å du will få flier anjer fordiel.",
+       "summary-preview": "Forhånjswisneng å beskriiwelsen:",
        "blockedtext": "'''Dit brugernav æller din IP-adresse er blevet blokeret.'''\n\nÆ blokerenge er lavet åf $1. Æ begrundelse er ''$2''.\n\nÆ blokerenge starter: $8\nÆ blokerenge udløber: $6\nÆ blokerenge er rettet mod: $7\n\nDu ken kåle $1 æller en åf de andre [[{{MediaWiki:Grouppage-sysop}}|administratårer]] før at diskutere æ blokerenge.\nDu ken ekke bruge æ funksje 'e-mail til denne bruger' vemendre der er ångevet en gyldig email-addresse i dine\n[[Special:Preferences|kontoendstellenger]]. Din nuværende IP-addresse er $3, og blokerengs-ID er #$5. Ångev venlegst en æller begge i åle henvendelser.",
+       "loginreqlink": "logg på",
        "newarticle": "(Ny)",
-       "newarticletext": "'''{{SITENAME}} har endnu ekke nogen {{NAMESPACE}}-side ve nav {{PAGENAME}}.'''<br /> Du ken begynde en side ve at skreve i'n boks herunder. (se'n [$1 hjælp] før yderligere åplysnenger).<br /> Æller du ken [[Special:Search/{{PAGENAME}}|søĝe æfter {{PAGENAME}} i {{SITENAME}}].<br /> Ves det ekke var din meneng, så tryk på æ '''Tilbage'''- æller æ '''Back'''-knåp.",
-       "noarticletext": "'''{{SITENAME}} har ekke nogen side ve prånt dette nav.'''\n* Du ken '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} starte æ side {{PAGENAME}}]'''\n* Æller [[Special:Search/{{PAGENAME}}|søĝe æfter {{PAGENAME}}]] i andre ertikler\n----\n* Ves du har åprettet denne ertikel endenfør de sedste få minutter, så ken de skyldes at der er ledt førsenkelse i'n åpdaterenge åf {{SITENAME}}s cache. Vent venligst og tjek igen senere'n ertikel'm dukker åp, enden du førsøĝer at åprette'n ertikel igen.",
+       "newarticletext": "Du hår fuljtj en henwisneng te en siid som ennu ett finjs.\nFor å oprett siden skal du bedjynn å skriiw i boksi nierfor\n(sie [$1 hjälpsiden] for ytelia informasjon).\nHwes du ä her we en fejl, så trykk på '''tebag'''-knappi å dej browser.",
+       "noarticletext": "Där ä i yeblikke ett noe tekst på siden.\nDu kan [[Special:Search/{{PAGENAME}}|syeg ette sidenaune]] på anjer side,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} syeg i relatiirtje logge]\nelle [{{fullurl:{{FULLPAGENAME}}|action=edit}} oprett siden]</span>.",
+       "noarticletext-nopermission": "Där ä i yeblikke ett no tekst på siden.\nDu kan [[Special:Search/{{PAGENAME}}|syeg ette sidenaune]] på anje side,\nelle <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} syeg i relatiirtje loggliste]</span>,\nmen du hår ett tillædels te å oprett siden.",
        "previewnote": "'''Husk at dette er kun en førhåndsvesnenge, æ side er ekke gemt endnu!'''",
-       "editing": "Redigærer $1",
-       "editingsection": "Redigærer $1 (åfsnet)",
-       "copyrightwarning": "'''Husk: åpskrev engen websider, søm ekke tilhører dig selv, brug engen åphavsretsligt beskyttede værker uden tilladelse frå'n ejer!'''<br />\nDu lover os hermed, at du selv '''har skrevet skrevselenger''', at skrevselenger tilhører ålmenheden, er ('''åpværer hus'''), æller at æ '''åphavsrets-endehaver''' har gevet sen '''tilladelse'''. Ves denne skrevselenger ålerede er åfentliggkort andre steder, skrev det venligst på æ diskusjesside.\n<i>Bemærk venligst, at ål {{SITENAME}}-ertikler åtomatisk står under „$2“ (se $1 før lileskrevselenger). Ves du ekke vel, at dit arbejde her ændres og udbredes åf andre, så tryk ekke på „Gem“.</i>",
-       "templatesused": "Skablåner der er brugt på denne side:",
+       "editing": "Redigiire $1",
+       "creating": "Oprette $1",
+       "editingsection": "Redigiire $1 (åsnit)",
+       "copyrightwarning": "Bemærk wenlist å åll bidraw te {{SITENAME}} ä å betrakt som utdjøwen unje $2 (se $1 for detalje).\nHwes du ett onske å din tekst skal utsätts for nådesløs redigiirenge å å den kan blyw kopiiirtj ette forgodtbefinjenje, så skal du ett placiir den her.<br />\nDu låwe os åsså, å du siel hår forfatten teksten elle hår kopiiirtj den fra en public domain-tjelj elle en tilswarenje fri tjelj.\n'''Lägg åller material her som ä beskøttetj å anjas ophawsrett uen dæes tillædels!'''",
+       "templatesused": "{{PLURAL:$1|Skabelon|Skabelone}} som ä brugtj på siden:",
        "templatesusedpreview": "Følgende skablåner bruges åf denne ertikelførhåndsvesnenge:",
-       "template-protected": "(skrevebeskyttet)",
-       "template-semiprotected": "(skrevebeskyttet før ekke ånmeldte og nye brugere)",
-       "nocreatetext": "Æ'n åpdiin har begrænset åprettelse åf nye sider. Bestående sider ken ændres æller [[Special:UserLogin|loĝge på]].",
-       "recreate-moveddeleted-warn": "'''Advarsel: Du er ve at genskabe en tidligere slettet side.'''\n\nÅvervej det'm er passende at genåprette'n side. De slettede hersenenger før\ndenne side er vest nedenfør:",
-       "viewpagelogs": "Ves loglister før denne side",
-       "currentrev": "Nuværende hersenenge",
-       "revisionasof": "Hersenenger frå $1",
-       "revision-info": "Hersenenge frå $1 til $2",
-       "previousrevision": "←Ældre hersenenge",
-       "nextrevision": "Nyere hersenenge→",
-       "currentrevisionlink": "se nuværende hersenenge",
-       "cur": "nuværende",
-       "last": "forrige",
-       "page_first": "Startem",
-       "page_last": "Enden",
-       "histlegend": "Førklårenge: (nuværende) = førskel til den nuværende\nhersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre ændrenge",
-       "histfirst": "Ældste",
-       "histlast": "Nyeste",
-       "history-feed-item-nocomment": "$1 ve $2",
-       "history-title": "Hersengsskigte før \"$1\"",
-       "lineno": "Lenje $1:",
-       "compareselectedversions": "Sammenlign valgte hersenenger",
-       "editundo": "baĝgøt",
-       "prevn": "førge {{PLURAL:$1|$1}}",
-       "nextn": "nægste {{PLURAL:$1|$1}}",
-       "viewprevnext": "Ves ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchall": "ål",
-       "preferences": "Endstellenger",
-       "mypreferences": "Endstellenger",
-       "skin-preview": "Førhåndsvesnenge",
+       "template-protected": "(skriiwbeskøttetj)",
+       "template-semiprotected": "(dielwis beskyttetj)",
+       "hiddencategories": "Siden ä i {{PLURAL:$1|en sjulen kategori|$1 sjulen kategorie}}:",
+       "nocreatetext": "Serveri hår begrænstj oprettels å nyj side. Bestoenje side kan øndas elle [[Special:UserLogin|logg på]].",
+       "permissionserrorstext-withaction": "Du hår ett rettihede te å $2 å följenje {{PLURAL:$1|grunj}}:",
+       "recreate-moveddeleted-warn": "'''Advarsel: Du ä we å djenskab en tidlia sletten siid.'''\n\nÖwewæj om dä ä passenje å djenoprett siden. Slettnengs- å flyttlogger for siden ä wisen nierfor.",
+       "moveddeleted-notice": "Siden ä bløwen sletten.\nSlettnengs- å flyttlogger for siden ä wisen nierfor.",
+       "viewpagelogs": "Wis loggliste for denn siid",
+       "currentrev": "Nuwærenje versjon",
+       "currentrev-asof": "Nuwærenje versjon fra $1",
+       "revisionasof": "Versjonen fra $1",
+       "revision-info": "Versjon fra $1 å $2 {{GENDER:$6|$2}}$7",
+       "previousrevision": "←Äälja versjon",
+       "nextrevision": "Nya versjon→",
+       "currentrevisionlink": "sie nuwærenje versjon",
+       "cur": "nuwærenje",
+       "last": "förri",
+       "page_first": "fösjt",
+       "page_last": "sist",
+       "histlegend": "Selektiir forskell: Markiir radiobokser å versjone som du will jämnför å trykk på enter elle knappi på bueni.<br />\n\nForklareng: <strong>({{int:cur}})</strong> = forskell te den nuwærenje versjon, <strong>({{int:last}})</strong> = forskell te den förri versjon, <strong>{{int:minoreditletter}}</strong> = lie øndreng.",
+       "histfirst": "älsti",
+       "histlast": "nysti",
+       "history-feed-item-nocomment": "$1 mä $2",
+       "rev-delundel": "ønda sijtbarhed",
+       "history-title": "$1: Versjonshistorik",
+       "difference-title": "Forskell mellem versjone å \"$1\"",
+       "lineno": "Linje $1:",
+       "compareselectedversions": "Djenför walgtje versjone",
+       "editundo": "fjän redigiireng",
+       "diff-multi-sameuser": "({{PLURAL:$1|En mellemliggenje versjon|$1 mellemliggenje versjone}} å sam brugari wises ett)",
+       "searchresults": "Syegresultate",
+       "searchresults-title": "Syegresultate for \"$1\"",
+       "prevn": "förri {{PLURAL:$1|$1}}",
+       "nextn": "nästi {{PLURAL:$1|$1}}",
+       "nextn-title": "Nästi {{PLURAL:$1|resultat|$1 resultate}}",
+       "shown-title": "Wis $1 {{PLURAL:$1|resultat|resultate}} pro siid",
+       "viewprevnext": "Wis ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>Oprett siden \"[[:$1]]\" på wikien!</strong> {{PLURAL:$2|0=|Sie åsså siden som bløw funjen for din syegneng.|Sie åsså syegresultater som bløw funjen.}}",
+       "searchprofile-articles": "Inholjsside",
+       "searchprofile-images": "Multimedia",
+       "searchprofile-everything": "Ållt",
+       "searchprofile-advanced": "Avanciirtj",
+       "searchprofile-articles-tooltip": "Syeg i $1",
+       "searchprofile-images-tooltip": "Syeg ett file",
+       "searchprofile-everything-tooltip": "Syeg i ållt inholj (inklusiw diskusjonsside)",
+       "searchprofile-advanced-tooltip": "Syeg i bestemtje naunrum",
+       "search-result-size": "$1 ({{PLURAL:$2|1 uerd|$2 uerd}})",
+       "search-redirect": "(omdirigiireng $1)",
+       "search-section": "(åsnit $1)",
+       "search-suggest": "Mientje du: $1",
+       "searchall": "åll",
+       "search-showingresults": "{{PLURAL:$4|Resultat <strong>$1</strong> å <strong>$3</strong>|Resultat <strong>$1 - $2</strong> å <strong>$3</strong>}}",
+       "search-nonefound": "Syegnengen djij ien resultate.",
+       "powersearch-ns": "Syeg i naunrummen:",
+       "preferences": "Instellenge",
+       "mypreferences": "Instellenge",
+       "skin-preview": "Forhånjswisneng",
        "youremail": "E-mail:",
-       "yourrealname": "Dit rigtege navn*",
+       "yourrealname": "Det rijti naun:",
        "prefs-help-realname": "* <strong>Dit rigtege navn</strong> (valgfrit): Hves du vælger at åplyse dit navn hvil dette bleve brugt til at tilskreve dig dit arbejde.",
-       "grouppage-sysop": "{{ns:project}}:Administråtorer",
-       "newuserlogpage": "Brugeråprettelseslog",
-       "newuserlogpagetext": "Dett'er en log åver de senest åprettede brugere.",
-       "rightslog": "Rettigheds-logbåĝ",
-       "nchanges": "$1 {{PLURAL:$1|ændrenge|ændrenger}}",
-       "recentchanges": "Seneste ændrenger",
-       "recentchanges-feed-description": "Ve dette fiid ken du følge de seneste ændrenger på {{SITENAME}}.",
+       "grouppage-sysop": "{{ns:project}}:Administrore",
+       "right-writeapi": "Brug redigiirengsdieli å API",
+       "newuserlogpage": "Brugeoprettelslogg",
+       "newuserlogpagetext": "Detj ä i logg öwe di siensti opretten bruga.",
+       "rightslog": "Rettihedslogg",
+       "nchanges": "$1 {{PLURAL:$1|øndreng|øndrenge}}",
+       "enhancedrc-history": "historik",
+       "recentchanges": "Siensti øndrenge",
+       "recentchanges-legend": "Instellenge for siensti øndrenge",
+       "recentchanges-summary": "På denn siid kan du följ di siensti øndrenge på '''{{SITENAME}}'''.",
+       "recentchanges-feed-description": "Mä denn feed kan du följ di siensti øndrenge på {{SITENAME}}.",
+       "recentchanges-label-newpage": "Redigiirengen oprettje en ny siid",
+       "recentchanges-label-minor": "Detj ä en lie øndreng",
+       "recentchanges-label-bot": "Denn redigiireng bløw utförtj å i robott",
+       "recentchanges-label-unpatrolled": "Redigiireng ä ennu ett bløwen patruljiirtj.",
+       "recentchanges-label-plusminus": "Störrelsen på siden bløw øndan mä detj åntal bytes",
+       "recentchanges-legend-heading": "'''Forklareng:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (sie åsså [[Special:NewPages|listen öwe nyj side]])",
        "rcnotefrom": "Nedenfør ses ændrengerne frå '''$2''' til '''$1''' vest.",
-       "rclistfrom": "Ves nye ændrenger startende frå $3 $2",
-       "rcshowhideminor": "$1 lile ændrenger",
-       "rcshowhidebots": "$1 råbotter",
-       "rcshowhideliu": "$1 regestrerede brugere",
-       "rcshowhideanons": "$1 anonyme brugere",
-       "rcshowhidepatr": "$1 bekiiknurede ændrenger",
-       "rcshowhidemine": "$1 egne bidråg",
-       "rclinks": "Ves seneste $1 ændrenger i de sedste $2 dåg<br />$3",
-       "diff": "førskel",
-       "hist": "skigte",
-       "hide": "skjul",
-       "show": "ves",
+       "rclistfrom": "Wis nyj øndrenge startenje fra $3 kl. $2",
+       "rcshowhideminor": "$1 lie øndrenge",
+       "rcshowhideminor-show": "Wis",
+       "rcshowhideminor-hide": "Sjul",
+       "rcshowhidebots": "$1 robotte",
+       "rcshowhidebots-show": "Sjul",
+       "rcshowhidebots-hide": "Sjul",
+       "rcshowhideliu": "$1 registriirtje bruga",
+       "rcshowhideliu-hide": "Sjul",
+       "rcshowhideanons": "$1 anonym bruga",
+       "rcshowhideanons-show": "Wis",
+       "rcshowhideanons-hide": "Sjul",
+       "rcshowhidepatr": "$1 kontrolliirtje øndrenge",
+       "rcshowhidemine": "$1 ejne bidraw",
+       "rcshowhidemine-show": "Wis",
+       "rcshowhidemine-hide": "Sjul",
+       "rclinks": "Wis siensti $1 øndrenge i di sisti $2 daw<br />$3",
+       "diff": "forskell",
+       "hist": "historik",
+       "hide": "Sjul",
+       "show": "Wis",
        "minoreditletter": "l",
        "newpageletter": "N",
        "boteditletter": "b",
-       "recentchangeslinked": "Relaterede ændrenger",
-       "recentchangeslinked-feed": "Relaterede ændrenger",
-       "recentchangeslinked-toolbox": "Relaterede ændrenger",
-       "recentchangeslinked-title": "Ændrenger der vegånde til \"$1\"",
-       "recentchangeslinked-summary": "Denne sonstside beser de seneste ændrenger på de sider der henveses til. Sider på din åvervågnengsliste er vest ve '''fed''' skreft.",
-       "upload": "Læĝ æ billet åp",
-       "uploadbtn": "Læĝ æ gøret åp",
-       "uploadlogpage": "Åplægnengslog",
-       "listfiles": "Billetliste",
-       "file-anchor-link": "Billet",
-       "filehist": "Billetskigt",
-       "filehist-help": "Klik på'n dato/tid før at se den hersenenge åf gøret.",
-       "filehist-current": "nuværende",
-       "filehist-datetime": "Dato/tid",
-       "filehist-user": "Bruger",
-       "filehist-dimensions": "Treflåksjener",
-       "filehist-filesize": "Gøretstørrelse",
-       "filehist-comment": "Biskrevselenge",
-       "imagelinks": "Billethenvesnenger",
-       "linkstoimage": "De følgende sider henveser til dette billet:",
-       "nolinkstoimage": "Der er engen sider der henveser til dette billet.",
+       "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} ette øndrengen",
+       "recentchangeslinked": "Relatiirtje øndrenge",
+       "recentchangeslinked-feed": "Relatiirtje øndrenge",
+       "recentchangeslinked-toolbox": "Relatiirtje øndrenge",
+       "recentchangeslinked-title": "Øndrenge som relatiire te \"$1\"",
+       "recentchangeslinked-summary": "Detj ä en list owe di siensti øndrenge å side, där links til fra en bestemtj siid (elle mälemme å en bestemtj kategori).\nSide på [[Special:Watchlist|din owewågnengslist]] ä wistj mä \"fied skrift\".",
+       "recentchangeslinked-page": "Sidenaun:",
+       "recentchangeslinked-to": "Wis øndrenge i side som henwise te åndjøwen siden i stæj",
+       "upload": "Lägg i fil op",
+       "uploadbtn": "Lägg i fil op",
+       "uploadlogpage": "Opläggnengslogg",
+       "filedesc": "Beskriiwels",
+       "license-header": "Licensiireng",
+       "imgfile": "fil",
+       "listfiles": "Fillist",
+       "file-anchor-link": "Fil",
+       "filehist": "Filhistorik",
+       "filehist-help": "Klikk på e dato/tid for å sietj versjonen å fili.",
+       "filehist-current": "nuwærenje",
+       "filehist-datetime": "Dato/tiid",
+       "filehist-thumb": "Thumbnail",
+       "filehist-thumbtext": "Thumbnail å versjonen fra $1",
+       "filehist-user": "Bruge",
+       "filehist-dimensions": "Dimensjone",
+       "filehist-filesize": "Filstörrels",
+       "filehist-comment": "Kommentar",
+       "imagelinks": "Filånwenjels",
+       "linkstoimage": "{{PLURAL:$1|Den följenje siid|Di följenje $1 side}} henwise te denn fil:",
+       "nolinkstoimage": "Där ä ien side som henwise te filen.",
        "sharedupload": "Denne gøret er en fælles læĝenge og ken bruges åf andre projekter.",
-       "uploadnewversion-linktext": "Læĝ en ny hersenenge åf denne gøret åp",
-       "mimesearch": "Søĝe æfter MIME-sårt",
-       "listredirects": "Henvesnengsliste",
-       "unusedtemplates": "Ekke brugte skablåner",
-       "randompage": "Tilfældig ertikel",
-       "randomredirect": "Tilfældige henvesnenger",
-       "statistics": "Sensje",
-       "doubleredirects": "Dåbbelte åmstyrenger",
-       "brokenredirects": "Bråken åmstyrenger",
-       "withoutinterwiki": "Sider uden henvesnenger til andre språĝ",
-       "fewestrevisions": "Sider ve de færreste hersenenger",
-       "nbytes": "$1 {{PLURAL:$1|åg|åger}}",
-       "nlinks": "{{PLURAL:$1|1 henvesnenge|$1 henvesnenger}}",
-       "nmembers": "- {{PLURAL:$1|1 ertikel|$1 ertikler}}",
-       "lonelypages": "Førældreløse ertikler",
-       "uncategorizedpages": "Uklyngede sider",
-       "uncategorizedcategories": "Uklyngede klynger",
-       "uncategorizedimages": "Ekke klyngede gøret",
-       "uncategorizedtemplates": "Ekke klyngede skablåner",
-       "unusedcategories": "Ubrugte klynger",
-       "unusedimages": "Ubrugte billeter",
-       "wantedcategories": "Brugte men ekke ånlagte klynger",
-       "wantedpages": "Ønskede ertikler",
-       "mostlinked": "Sider ve flest henvesnenger",
-       "mostlinkedcategories": "Mest brugte klynger",
-       "mostlinkedtemplates": "Hyppigst brugte skablåner",
-       "mostcategories": "Mest brugte sider",
-       "mostimages": "Mest brugte gøret",
-       "mostrevisions": "Sider ve de fleste ændrenger",
-       "prefixindex": "Åle sider (ve førgøret)",
-       "shortpages": "Kårte ertikler",
-       "longpages": "Långe ertikler",
-       "deadendpages": "Blendgydesider",
-       "protectedpages": "Skrevebeskyttede sider",
-       "listusers": "Brugerliste",
-       "newpages": "Nyeste ertikler",
-       "ancientpages": "Ældste ertikler",
-       "move": "Flyt",
-       "movethispage": "Flyt side",
-       "booksources": "Boĝkelder",
-       "specialloguserlabel": "Bruger:",
-       "speciallogtitlelabel": "Skrevselenge:",
-       "log": "Loglister",
-       "all-logs-page": "Åle loglister",
-       "allpages": "Åle ertikler",
-       "nextpage": "Næste side ($1)",
-       "prevpage": "Førge side ($1)",
-       "allpagesfrom": "Ves sider startende frå:",
-       "allarticles": "Åle ertikler",
-       "allpagessubmit": "Ves",
-       "allpagesprefix": "Ves sider ve førgøret:",
-       "categories": "Klynger",
-       "deletedcontributions": "Slettede brugerbidråg",
-       "deletedcontributions-title": "Slettede brugerbidråg",
-       "linksearch": "Søĝ i weblinks",
-       "linksearch-pat": "Søĝ æfter links til:",
-       "linksearch-ns": "Navnerum:",
-       "linksearch-ok": "Søĝ",
-       "linksearch-text": "Wildkårter søm \"*.wikipedia.org\" ken benyttes.<br />Understøttede pråtåkoller: <code>$1</code>",
-       "linksearch-line": "$2 linker til $1",
-       "linksearch-error": "Wildkårter må ken benyttes i'n stårt åf håstnavnet.",
-       "emailuser": "E-mail til denne bruger",
-       "watchlist": "Åvervågnengsliste",
-       "mywatchlist": "Åvervågnengsliste",
+       "sharedupload-desc-here": "Fili ä fra $1 å kan brugs på anje projekte. \nInholje på dens [$2 filbeskriiwelssiid] där ä wisen herunje.",
+       "uploadnewversion-linktext": "Lägg en ny versjon å fili op",
+       "upload-disallowed-here": "Du kan ett öweskriiw fili.",
+       "mimesearch": "Syeg ette MIME-typ",
+       "listredirects": "Henwisnengslist",
+       "unusedtemplates": "Ubrugtje skabelone",
+       "randompage": "Tefælji siid",
+       "randomredirect": "Tefælji henwisnenge",
+       "statistics": "Statistik",
+       "doubleredirects": "Doppelt omdirigiirenge",
+       "brokenredirects": "Defekt omdirigiirenge",
+       "withoutinterwiki": "Side uen henwisnenge te anjer spraw",
+       "fewestrevisions": "Sider mä di færsti versjone",
+       "nbytes": "$1 {{PLURAL:$1|byte|bytes}}",
+       "nlinks": "{{PLURAL:$1|1 henwisneng|$1 henwisnenge}}",
+       "nmembers": "- {{PLURAL:$1|1 mälemm|$1 mälemme}}",
+       "lonelypages": "Forääljaløs side",
+       "uncategorizedpages": "Ukategorisiirtje side",
+       "uncategorizedcategories": "Ukategorisiirtje kategorie",
+       "uncategorizedimages": "Ukategorisiirtje file",
+       "uncategorizedtemplates": "Ukategorisiirtje skabelone",
+       "unusedcategories": "Ubrugtje kategorie",
+       "unusedimages": "Ubrugtje file",
+       "wantedcategories": "Onske kategorie",
+       "wantedpages": "Onske side",
+       "mostlinked": "Side mä fliest henwisnenge",
+       "mostlinkedcategories": "Miest-brugtje kategorie",
+       "mostlinkedtemplates": "Miest-brugtje side",
+       "mostcategories": "Side mä di fliesti kategorie",
+       "mostimages": "Miest-brugtje file",
+       "mostrevisions": "Side mä di fliesti versjone",
+       "prefixindex": "Åll side som bedjynne mä",
+       "shortpages": "Kort side",
+       "longpages": "Lång side",
+       "deadendpages": "Blinjenjside",
+       "protectedpages": "Skriiwbeskøttetj side",
+       "listusers": "Brugelist",
+       "newpages": "Nysti side",
+       "ancientpages": "Älsti side",
+       "move": "Flytt",
+       "movethispage": "Flytt siden",
+       "pager-older-n": "{{PLURAL:$1|1 äälja|$1 äälja}}",
+       "booksources": "Buegtjilje",
+       "booksources-search-legend": "Syegneng ette byeg",
+       "booksources-search": "Syeg",
+       "specialloguserlabel": "Utförtj å:",
+       "speciallogtitlelabel": "Mol (titel elle {{ns:user}}:brugenaun til bruge):",
+       "log": "Loggliste",
+       "all-logs-page": "Åll offentjli logge",
+       "allpages": "Åll side",
+       "nextpage": "Nästi siid ($1)",
+       "prevpage": "Förri siid ($1)",
+       "allpagesfrom": "Wis side fra å mä:",
+       "allarticles": "Åll side",
+       "allpagessubmit": "Wis",
+       "allpagesprefix": "Wis side som bedjynne mä:",
+       "categories": "Kategorie",
+       "deletedcontributions": "Sletten brugebidraw",
+       "deletedcontributions-title": "Sletten brugebidraw",
+       "linksearch": "Syegneng i ekstern henwisnenge",
+       "linksearch-pat": "Syeg ette links te:",
+       "linksearch-ns": "Naunrum:",
+       "linksearch-ok": "Syeg",
+       "linksearch-text": "Wildcards som \"*.wikipedia.org\" kan benøtts.\nDär skal som minimum åndjies e topnivå-domæn som f. eks. \"*.org\".<br />\n{{PLURAL:$2|Unjestötten protokol|Unjestötten protokolle}}: $1 (bruge automatisk http:// hwes där ett ä åndjøwen no protokol).",
+       "linksearch-line": "$2 linke te $1",
+       "linksearch-error": "Wildcards ma kons benøtts i starti å hostnaune.",
+       "emailuser": "E-mail te bruge",
+       "watchlist": "Öwewågnengslist",
+       "mywatchlist": "Öwewågnengslist",
        "addedwatchtext": "Æ side \"[[:$1]]\" er blevet tilføjet til din [[Special:Watchlist|åvervågningsliste]]. Fremtidige ændrenger til denne side og den tilhørende diskusjeside hvil bleve listet der, og æ side hvil fremstå '''fremhævet''' i'n [[Special:RecentChanges|liste ve de seneste ændrenger]] før at gøre det lettere at finde den. Hves du senere hvilst fjerne'n side frå din åvervågningsliste, så klik \"Fjern åvervågnenge\".",
        "removedwatchtext": "Æ side \"[[:$1]]\" er blevet fjernet frå din åvervågnengsliste.",
-       "watch": "Ã\85vervåg",
-       "watchthispage": "Ã\85vervÃ¥g side",
-       "unwatch": "Fjern åvervågnenge",
+       "watch": "Ã\96wewåg",
+       "watchthispage": "Ã\96wewÃ¥g siden",
+       "unwatch": "Fjän öwewågneng",
        "watchlist-details": "Du har $1 {{PLURAL:$1|side|sider}} på din åvervågnengsliste (øn diskusjesider).",
        "wlshowlast": "Ves de seneste $1 têmer $2 dåg",
-       "watching": "Åvervåge …",
-       "unwatching": "Ekke åvervåge …",
-       "deletepage": "Slet side",
+       "watching": "Tilfye öwewågneng...",
+       "unwatching": "Fjäne öwewågneng...",
+       "deletepage": "Slett siid",
        "historywarning": "Advarsel: Æ side du erst ve at slette har en skigte:",
-       "confirmdeletetext": "Du erst ve permanent at slette en side\næller et billet sammen ve hæle den tilhørende skigte frå'n database. Bekræft venlegst at du virkelg hvilst gøre dette, at du førstårst konsekvenserne, og at du gør dette i åverensstemmelse ve\n[[{{MediaWiki:Policy-url}}]].",
-       "actioncomplete": "Gennemført",
-       "deletedtext": "\"$1\" er slettet. Sæg $2 før en førtegnelse åver de nyeste sletnenger.",
-       "dellogpage": "Sletnengslog",
-       "deletecomment": "Begrundelse:",
-       "deleteotherreason": "Anden/uddybende begrundelse:",
-       "deletereasonotherlist": "Anden begrundelse",
-       "rollbacklink": "fjern redigærenge",
-       "protectlogpage": "Liste åver beskyttede sider",
-       "prot_1movedto2": "[[$1]] flyttet til [[$2]]",
-       "protectcomment": "Begrundelse:",
-       "protectexpiry": "Udløb:",
-       "protect_expiry_invalid": "Æ udløbstiid er ugyldeg.",
-       "protect_expiry_old": "Æ udløbstiid legger i'n førtiid.",
-       "protect-text": "Her ken beskyttelsesståt før æ side '''$1''' ses og ændres.",
-       "protect-locked-access": "Den brugerkonto har ekke de nødvendege rettegheder til at æ ændre sidebeskyttelse. Her er de aktuelle beskyttelsesendstellenger før æ side '''„$1“:'''",
+       "confirmdeletetext": "Du ä we å slett en siid sammel mä hiel dens tilhörenje historik.\nBekräft wenlist å du wirkeli will djör detj, å du forstor konsekvenser, å å du djör dä i öwe-iensstæmmels mä [[{{MediaWiki:Policy-url}}|rettnengslinjer]].",
+       "actioncomplete": "Djennemförtj",
+       "deletedtext": "\"$1\" ä sletten. Sie $2 for en fortejnels öwe di nysti slettnenge.",
+       "dellogpage": "Slettnengslogg",
+       "deletecomment": "Begrunjels:",
+       "deleteotherreason": "Ånj/utdybenje begrunjels:",
+       "deletereasonotherlist": "Ånj begrunjels",
+       "rollbacklink": "roll tebag",
+       "rollbacklinkcount": "tebagför $1 {{PLURAL:$1|redigiireng|redigiirenge}}",
+       "protectlogpage": "Skriiwbeskøttelslogg",
+       "prot_1movedto2": "[[$1]] flytten te [[$2]]",
+       "protectcomment": "Begrunjels:",
+       "protectexpiry": "Utløb:",
+       "protect_expiry_invalid": "Utløbstiden ä udjylji.",
+       "protect_expiry_old": "Utløbstiden ligge i fortiden.",
+       "protect-text": "Her kan beskøttelsstatus for siden '''$1''' sies å øndas.",
+       "protect-locked-access": "Det brugekonto hår ett di nødwenji rettihede te å ønda sidebeskøttelsen. Her ä di aktuell beskøttelsinstellenge for siden '''„$1“:'''",
        "protect-cascadeon": "Denne side er del åf en nedarvet skrevebeskyttelse. Wen er endeholt i nedenstående {{PLURAL:$1|side|sider}}, søm er skrevebeskyttet ve tilvalg åf \"nedarvende sidebeskyttelse\" Æ sidebeskyttelse ken ændres før denne side, det påverker dog ekke'n kaskadespærrenge:",
        "protect-default": "Ål (standård)",
        "protect-fallback": "Kræv \"$1\"-tilladelse",
        "protect-level-autoconfirmed": "Spærrenge før ekke registrærede brugere",
        "protect-level-sysop": "Kan administratårer",
-       "protect-summary-cascade": "nedarvende",
-       "protect-expiring": "til $1 (UTC)",
-       "protect-cascade": "Nedarvende spærrenge – ål skabelåner, søm er endbundet i denne side spærres også.",
-       "protect-cantedit": "Du kenst ekke ændre beskyttelsesnivå før denne side, da du ekke kenst redigære føden.",
-       "protect-expiry-options": "1 tême:1 hour,1 dåĝ:1 day,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:indefinite",
-       "restriction-type": "Beskyttelsesståt",
-       "restriction-level": "Beskyttelseshøjde",
-       "undeletebtn": "Gendan!",
-       "namespace": "Naverum:",
-       "invert": "Næbiiner udvalg",
-       "blanknamespace": "(Ertikler)",
-       "contributions": "Brugerbidråg",
-       "mycontris": "Mine bidråg",
-       "contribsub2": "Før $1 ($2)",
-       "uctop": "(seneste)",
-       "month": "Måned:",
-       "year": "År:",
-       "sp-contributions-newbies-sub": "Før nybegyndere",
-       "sp-contributions-blocklog": "Blokerengslog",
-       "sp-contributions-deleted": "Slettede brugerbidråg",
-       "sp-contributions-talk": "diskusje",
-       "whatlinkshere": "Vat henveser hertil",
-       "whatlinkshere-title": "Sider der henveser til $1",
-       "linkshere": "De følgende sider henveser til '''„[[:$1]]“''':",
-       "nolinkshere": "Engen sider henveser til '''„[[:$1]]“'''.",
-       "isredirect": "åmstyrsside",
-       "istemplate": "Skablånvetagnenge",
-       "whatlinkshere-prev": "{{PLURAL:$1|førge|førge $1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|nægste|nægste $1}}",
-       "whatlinkshere-links": "← henvesnenger",
-       "blockip": "Bloker bruger",
-       "ipboptions": "1 tême:1 hour,2 têmer:2 hours,6 têmer:6 hours,1 dåĝ:1 day,3 dåĝ:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,1 år:1 year,ubegrænset:indefinite",
-       "ipblocklist": "Blokerede IP-adresser og brugernave",
-       "blocklink": "blåker",
-       "unblocklink": "åphæv blokerenge",
-       "contribslink": "bidråĝ",
-       "blocklogpage": "Blokerengslog",
-       "blocklogentry": "blokerede \"[[$1]]\" ve'n udløbstid på $2 $3",
+       "protect-summary-cascade": "nierarwenje",
+       "protect-expiring": "te $1 (UTC)",
+       "protect-cascade": "Beskøtt side som ä inkludiirtj på siden (nierarwenje beskøttels)",
+       "protect-cantedit": "Du kan ett ønda beskøttelsnivå for siden, fodä du ett hår tillædels te å redigiir den.",
+       "protect-expiry-options": "1 tiem:1 hour,1 daw:1 day,1 ug:1 week,2 uge:2 weeks,1 månj:1 month,3 månje:3 months,6 månje:6 months,1 or:1 year,ubegrænstj:infinite",
+       "restriction-type": "Beskøttelsstatus",
+       "restriction-level": "Beskøttelsnivå:",
+       "undeletebtn": "Djiensatt!",
+       "namespace": "Naunrum:",
+       "invert": "Utlokk walgtj naunrum",
+       "tooltip-invert": "Åkryds feltje for å sjul øndrenge te side i valgtje naunrume (å tilknøtten naunrume, hwes feltje åsså ä åkrydsen)",
+       "namespace_association": "Tilknøtten naunrum",
+       "tooltip-namespace_association": "Åkryds feltje for åsså å inkludiir diskusjons- elle emnnaunrume, som ä tilknøtten valgtje naunrume",
+       "blanknamespace": "(Hwoet)",
+       "contributions": "{{GENDER:$1|Brugebidraw}}",
+       "mycontris": "Bidraw",
+       "contribsub2": "For {{GENDER:$3|$1}} ($2)",
+       "uctop": "(siensti)",
+       "month": "Månj:",
+       "year": "Or:",
+       "sp-contributions-newbies-sub": "Fra nyj konto",
+       "sp-contributions-blocklog": "blokiirengslogg",
+       "sp-contributions-deleted": "sletten brugebidraw",
+       "sp-contributions-talk": "diskusjon",
+       "whatlinkshere": "Hwa henwise hertil",
+       "whatlinkshere-title": "Side som linke te $1",
+       "whatlinkshere-page": "Siid:",
+       "linkshere": "Di följenje side henwise te '''„[[:$1]]“''':",
+       "nolinkshere": "Ien side henwise te '''„[[:$1]]“'''.",
+       "isredirect": "omdirigiirengssiid",
+       "istemplate": "inlejreng",
+       "isimage": "filhenwisneng",
+       "whatlinkshere-prev": "{{PLURAL:$1|förri|förri $1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|nästi|nästi $1}}",
+       "whatlinkshere-links": "← henwisnenge",
+       "whatlinkshere-hideredirs": "$1 omdirigiirenge",
+       "whatlinkshere-hidetrans": "$1 inkludiirenge",
+       "whatlinkshere-hidelinks": "$1 henwisnenge",
+       "whatlinkshere-filters": "Filtjre",
+       "blockip": "Blokiir {{GENDER:$1|bruge}}",
+       "ipboptions": "2 tiem:2 hours,1 daw:1 day,3 daw:3 days,1 ug:1 week,2 uge:2 weeks,1 månj:1 month,3 månje:3 months,6 månje:6 months,1 or:1 year,ubegrænstj:infinite",
+       "ipblocklist": "Blokiirtje bruga",
+       "blocklink": "blokiir",
+       "unblocklink": "ophäw blokiireng",
+       "contribslink": "bidraw",
+       "blocklogpage": "Blokiirengslogg",
+       "blocklogentry": "blokiirtje [[$1]] mä $2 som utløbstiid $3",
        "movepagetext": "Når du brugerst æ formulær herunder hvilst du få omdøbt en side og flyttet æ hæle side han skigte til det nye navn.\nDen gamle titel hvil bleve en omdirigærengsside til den nye titel.\nHenvesnenger til den gamle titel hvil ekke bleve ændret.\nSørg før at tjekke før dåbelte æller dårlege omdirigærenger.\nDu erst ansvarleg før, at ål henvesnenger stadeg pæger derhen, hvår det er æ mænenge de skal pæge.\n\nBemærk at æ side '''ekke''' ken flyttes hves der ålrede er en side ve den nye titel, medmendre den side er tøm æller er en omdirigærenge uden nogen skigte.\nDet betyder at du kenst flytte en side tilbåge hvår den kåm frå, hves du kåmer til at lave en fejl.\n\n'''ADVARSEL!'''\nDette ken være en drastisk og uventet ændrenge før en populær side; vær sekker på, at du førstår konsekvenserne åf dette før du førtsætter.",
-       "movepagetalktext": "Den tilhørende diskusjeside, hves der er en, hvil åtåmatisk bleve flyttet ve'n side '''medmendre:'''\n*Du flytter æ side til et andet navnerum,\n*En ekke-tøm diskusjeside ålrede eksisterer under det nye navn, æller\n*Du fjerner æ markærenge i'n boks nedenunder.\n\nI disse tilfælde er du nødt til at flytte æller sammenflette'n side manuelt.",
-       "movearticle": "Flyt side:",
-       "newtitle": "Til ny titel:",
-       "move-watch": "Denne side åvervåges",
-       "movepagebtn": "Flyt side",
-       "pagemovedsub": "Flytnenge gennemført",
-       "movepage-moved": "Æ side '''\"$1\" er flyttet til \"$2\"'''",
-       "articleexists": "En side ve det navn eksisterer ålrede, æller det\nnavn du harst valgt er ekke gyldegt. Vælg et andet navn.",
-       "movetalk": "Flyt også'n \"diskusjeside\", hves den eksisterer.",
-       "movelogpage": "Flyttelog",
-       "movereason": "Begrundelse:",
-       "revertmove": "gendan",
-       "export": "Utgøter sider",
-       "allmessages": "Åle beskeder",
-       "thumbnail-more": "Førstør",
-       "thumbnail_error": "Fejl ve åprettelse åf thumbnail: $1",
-       "importlogpage": "Importlog",
-       "tooltip-pt-userpage": "Min brugersside",
-       "tooltip-pt-mytalk": "Min diskusjesside",
-       "tooltip-pt-preferences": "Min endstellenger",
-       "tooltip-pt-watchlist": "Æ liste åver sider du åvervåger før ændrenger.",
-       "tooltip-pt-mycontris": "Æ liste åver dine bidråg",
-       "tooltip-pt-login": "Du åpførdres til at loĝge på, men dat er ekke plechnenge.",
-       "tooltip-pt-logout": "Loĝ åf",
-       "tooltip-ca-talk": "Diskusje æ indholt'm på'n side",
-       "tooltip-ca-edit": "Du ken redigære denne side. Brug venligst førhåndsvesnenge før du gemmer.",
-       "tooltip-ca-addsection": "Tilføj en biskrevselenge til denne diskusje.",
-       "tooltip-ca-viewsource": "Denne side er beskyttet. Du ken kegge på'n keldekode.",
-       "tooltip-ca-protect": "Beskyt denne side",
-       "tooltip-ca-delete": "Slet denne side",
-       "tooltip-ca-move": "Flyt denne side",
-       "tooltip-ca-watch": "Sæt denne side på din åvervågnengsliste",
-       "tooltip-ca-unwatch": "Fjern denne side frå din åvervågnengsliste",
-       "tooltip-search": "Søĝ på {{SITENAME}}",
-       "tooltip-n-mainpage": "Besøĝ æ Førsit",
-       "tooltip-n-portal": "Æ projekt'm, vat du ken gøre, vår tenger fendes",
-       "tooltip-n-currentevents": "Find baĝgrundsinformasje nessende begivenheder'm",
-       "tooltip-n-recentchanges": "Æ liste åver de seneste ændrenger æ'n wiki.",
-       "tooltip-n-randompage": "Gå til æ tilfældig ertikel",
-       "tooltip-n-help": "Vordan gør a ...",
-       "tooltip-t-whatlinkshere": "Liste ve ål sider søm henveser hertil",
-       "tooltip-t-contributions": "Se denne brugers bidråg",
-       "tooltip-t-emailuser": "Send en e-mail til denne bruger",
-       "tooltip-t-upload": "Læĝ æ billet, æ sunnåm æller anden mediagøret åp",
-       "tooltip-t-specialpages": "Liste ve ål sonst sider",
-       "tooltip-ca-nstab-user": "Se'n brugerside",
-       "tooltip-ca-nstab-project": "Vese'n wiki'mside",
-       "tooltip-ca-nstab-image": "Se'n billetside",
-       "tooltip-ca-nstab-template": "Se'n skablån",
-       "tooltip-ca-nstab-help": "Se'n hjælpeside",
-       "tooltip-ca-nstab-category": "Se'n klyngeside",
-       "tooltip-minoredit": "Marker dette søm en mendre ændrenge",
-       "tooltip-save": "Gem dine ændrenger",
-       "tooltip-preview": "Førhånds dine ændrenger, brug venligst denne funksje enden du gemmer!",
-       "tooltip-diff": "Ves velke ændrenger du har lavet i æ skrevselenger.",
-       "tooltip-compareselectedversions": "Se førskellene imellem de to valgte hersenenger åf denne side.",
-       "tooltip-watch": "Tilføj denne side til din åvervågnengsliste",
-       "previousdiff": "← Gå til førge førskel",
-       "nextdiff": "Gå til næste førskel →",
-       "file-info-size": "$1 × $2 pixel, gøretstørrelse: $3, MIME-senenge: $4",
-       "file-nohires": "Engen højere åpløsnenge fundet.",
-       "svg-long-desc": "SVG gøret, wønetstørrelse $1 × $2 pixel, gøretstørrelse: $3",
-       "show-big-image": "Hersenenge i større åpløsnenge",
-       "newimages": "Liste ve de nyeste billeter",
-       "bad_image_list": "Æ førmåt er:\n\nKun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første henvesnenge på'n lenje er til det uønskede billet. Æfterfølgende lenker på samme lenjer er undtagelser, dvs. sider vår æ billet må åptræde.",
+       "movepagetalktext": "Den tilhørenje diskusjonssiid, hwes där ä jen, will automatisk blyw flytten mä siden '''mämenja:''' \n*En intj-tomm diskusjonssiid ållried eksistiire unje ny naune, elle\n*Du fjäne markiirengen i boksi nierunje.\n\nI dyss tilfåll ä du nød til å flytt elle sammelflætt siden manuellt.",
+       "movearticle": "Flytt siid:",
+       "newtitle": "Te ny titel:",
+       "move-watch": "Öwewåg siden",
+       "movepagebtn": "Flytt siid",
+       "pagemovedsub": "Flyttneng djennemførtj",
+       "movepage-moved": "Siden '''\"$1\" ä flytten te \"$2\"'''",
+       "articleexists": "En siid mä detj naun eksistiire ållried, elle naune du hår valgtj ä ett djylji. Välg e ånj naun.",
+       "movetalk": "Flytt åsså \"diskusjonssiden\", hwes den eksistiire.",
+       "movelogpage": "Flyttlogg",
+       "movereason": "Begrunjels:",
+       "revertmove": "djensätt",
+       "export": "Eksportiir side",
+       "allmessages": "Åll beskede",
+       "thumbnail-more": "Forstör",
+       "thumbnail_error": "Fejl we oprettels å thumbnail: $1",
+       "importlogpage": "Importlogg",
+       "tooltip-pt-userpage": "Din brugesiid",
+       "tooltip-pt-mytalk": "Din diskusjonssiid",
+       "tooltip-pt-preferences": "Din instellenge",
+       "tooltip-pt-watchlist": "Listen öwe side som du öwewåge for øndrenge",
+       "tooltip-pt-mycontris": "List öwe din bidraw",
+       "tooltip-pt-login": "Du opfordas te å logg på, men dä ä ett obligatorisk.",
+       "tooltip-pt-logout": "Logg å",
+       "tooltip-pt-createaccount": "Du opfordas te å oprett e konto å logg på, men dä ä ett obligatorisk",
+       "tooltip-ca-talk": "Diskusjon om inholje på siden",
+       "tooltip-ca-edit": "Redigiir siden",
+       "tooltip-ca-addsection": "Tilfye e ny åsnit",
+       "tooltip-ca-viewsource": "Siden ä beskyttetj.\nDu kan sietj på tjeljteksten.",
+       "tooltip-ca-history": "Tiidlia versjone å siden",
+       "tooltip-ca-protect": "Beskøtt siden",
+       "tooltip-ca-delete": "Slett siden",
+       "tooltip-ca-move": "Flytt siden",
+       "tooltip-ca-watch": "Sätt siden på din öwewågnengslist",
+       "tooltip-ca-unwatch": "Fjän siden fra din öwewågnengslist",
+       "tooltip-search": "Syeg på {{SITENAME}}",
+       "tooltip-search-go": "Wis en siid mä præcis naune, hwes den finjs",
+       "tooltip-search-fulltext": "Syeg ette side som inholje teksten",
+       "tooltip-p-logo": "Besyeg forsiden",
+       "tooltip-n-mainpage": "Besyeg forsiden",
+       "tooltip-n-mainpage-description": "Besyeg forsiden",
+       "tooltip-n-portal": "Om projekte, hwa du kan djör, hwor tingen finjs",
+       "tooltip-n-currentevents": "Finj bawgrunjsinformasjon om aktuell bedjøwenhede",
+       "tooltip-n-recentchanges": "En list öwe di siensti øndrenge i wikien.",
+       "tooltip-n-randompage": "Go te en tefælji siid",
+       "tooltip-n-help": "Stæjje hwor du finje hjälp",
+       "tooltip-t-whatlinkshere": "En list mä åll side som henwise hertil",
+       "tooltip-t-recentchangeslinked": "Siensti øndrenge i side som denn siid henwise til",
+       "tooltip-feed-atom": "Atom-feed for siden",
+       "tooltip-t-contributions": "Sie bidrawen te brugari",
+       "tooltip-t-emailuser": "Senj i e-mail te brugari",
+       "tooltip-t-upload": "Lägg e bilj elle i ånj mediafil op",
+       "tooltip-t-specialpages": "List öwe åll specialside",
+       "tooltip-t-print": "Printjerwenli utgaw å siden",
+       "tooltip-t-permalink": "Permanentj henwisneng te denn versjon å siden",
+       "tooltip-ca-nstab-main": "Sie inholjssiden",
+       "tooltip-ca-nstab-user": "Sie brugesiden",
+       "tooltip-ca-nstab-special": "Detj ä en specialsiid å kan ett redigiirs",
+       "tooltip-ca-nstab-project": "Wis projektsiden",
+       "tooltip-ca-nstab-image": "Sie filsiden",
+       "tooltip-ca-nstab-template": "Sie skabeloni",
+       "tooltip-ca-nstab-help": "Sie hjälpsiden",
+       "tooltip-ca-nstab-category": "Sie kategorisiden",
+       "tooltip-minoredit": "Markiir detj som en lie øndreng",
+       "tooltip-save": "Djiem din øndrenge",
+       "tooltip-preview": "Forhånjswis din øndrenge, brug wenlist funktionen ien du djieme!",
+       "tooltip-diff": "Wis hwelk øndrenge du hår lawen i teksten.",
+       "tooltip-compareselectedversions": "Sie forskellen imellem di twå walgtje versjone å siden.",
+       "tooltip-watch": "Tilfye siden te din öwewågnengslist",
+       "tooltip-rollback": "\"Rull tebag\" fjäne den sisti bidrawsyes redigiireng(e) å siden mä jet klikk",
+       "tooltip-undo": "\"Fjän redigiireng\" fjän denn redigiireng å åbner redigiirengssiden mä forhånjswisneng.\nDä djie mulihed for å tilfye en begrunjels i beskriiwelsen.",
+       "tooltip-summary": "Intast en kort opsummiireng",
+       "simpleantispam-label": "Anti-spamtjekk.\nUtfyll <strong>ETT</strong> detj!",
+       "pageinfo-toolboxlink": "Opløsnenge om siden",
+       "previousdiff": "← Go te förri øndreng",
+       "nextdiff": "Go te nästi øndreng →",
+       "file-info-size": "$1 × $2 puntje, filstörrels: $3, MIME-typ: $4",
+       "file-nohires": "Ien hya oplösneng funjen.",
+       "svg-long-desc": "SVG fil, basisstörrels $1 × $2 puntjer, störrels: $3",
+       "show-big-image": "Oprinneli fil",
+       "show-big-image-preview": "Störrels å forhånjswisnengen: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Ånj  oplösneng|Anje oplösnenge}}: $1.",
+       "show-big-image-size": "$1 × $2 pixels",
+       "newimages": "Galleri mä di nysti bilje",
+       "bad_image_list": "Formate ä:\n\nKons inholje å liste (linje startenje mä *) blywe brugtj. Den fösjti henwisneng på en linje ä te uonske bilje. Etteföljenje links på sam linje ä unjtalse, dws. side hwor bilje ma opträ.",
        "metadata": "Metadata",
-       "metadata-help": "Denne gøret endeholder yderligere informasje, der søm regel stammer frå lysnåmer æller den brugte skænner. Ve'n æfterføgende bearbejdnenge ken nogle data være ændret.",
-       "metadata-expand": "Ves udvedede data",
-       "metadata-collapse": "Skjul udvedede data",
-       "metadata-fields": "Æ følgende felter frå EXIF-metadata i denne MediaWiki-beskedskrevselenger veses på billetbeskrevelsessider; yderligere lileskrevselenger ken veses.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
-       "namespacesall": "åle",
-       "monthsall": "åle",
-       "watchlisttools-view": "Se ændrede sider i'n åvervågnengsliste",
-       "watchlisttools-edit": "Redigær åvervågnengsliste",
-       "watchlisttools-raw": "Redigær rå åvervågnengsliste",
-       "version": "Informasje MediaWiki'm",
-       "specialpages": "Sonst sider",
-       "expandtemplates": "Engråt templater",
-       "expand_templates_title": "Context titel, før {{SITENAME}}:",
-       "expand_templates_input": "Input skrevselenger:",
-       "expand_templates_output": "Resultåt",
-       "expand_templates_xml_output": "XML output",
-       "expand_templates_ok": "OK",
-       "expand_templates_remove_comments": "Slet kommentår",
-       "expand_templates_generate_xml": "Se XML parse træ",
-       "expand_templates_preview": "Førhåndsvesnenge"
+       "metadata-help": "Denn fil inholje yelia informasjone, di som regel stamme fra digitalkamera elle brugtje scanneri. We en etteföljenje bearbejtneng kan noe data wær øndatj.",
+       "metadata-expand": "Wis utwiiden data",
+       "metadata-collapse": "Sjul utwiiden data",
+       "metadata-fields": "Metadatafeltje inkludiirtj i MediaWiki-systemtekste wises på biljbeskriwelsside nær metadatatabellen ä slotj sammel.\nÖwrije feltje will wær sjultj som standard.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "exif-orientation": "Kamerarettneng",
+       "exif-xresolution": "Horisontal oplösneng",
+       "exif-yresolution": "Vertikal oplösneng",
+       "exif-datetime": "Lawrengstidspuntj",
+       "exif-make": "Kameraproducentj",
+       "exif-model": "Kameramodell",
+       "exif-software": "Brugtj software",
+       "exif-exifversion": "Exif-versjon",
+       "exif-colorspace": "Farwrum",
+       "exif-datetimeoriginal": "Optalstidspuntj",
+       "exif-datetimedigitized": "Digitalisiirengstidspuntj.",
+       "exif-orientation-1": "Normal",
+       "namespacesall": "åll",
+       "monthsall": "åll",
+       "watchlisttools-view": "Sie øndan side i öwewågnengslist",
+       "watchlisttools-edit": "Redigiir öwewågnengslist",
+       "watchlisttools-raw": "Redigiir row öwewågnengslist",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|diskusjon]])",
+       "version": "Informasjon om MediaWiki",
+       "specialpages": "Specialside",
+       "tag-filter": "[[Special:Tags|Tag]]filtjer:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
+       "logentry-delete-delete": "$1 {{GENDER:$2|slettetj}} siden $3",
+       "logentry-move-move": "$1 {{GENDER:$2|flyttje}} siden $3 te $4",
+       "logentry-newusers-create": "Brugekontoe $1 bløw {{GENDER:$2|opretten}}",
+       "logentry-upload-upload": "$1 {{GENDER:$2|lagtj}} $3 op",
+       "searchsuggest-search": "Syeg",
+       "expandtemplates": "Utfolj skabelone",
+       "expand_templates_title": "Sammelhängstitel, for {{FULLPAGENAME}} åsw.:",
+       "expand_templates_input": "Inputtekst:",
+       "expand_templates_output": "Resultat",
+       "expand_templates_xml_output": "XML-kode",
+       "expand_templates_ok": "Utfolj",
+       "expand_templates_remove_comments": "Slett kommentare",
+       "expand_templates_generate_xml": "Wis analysträj som XML",
+       "expand_templates_preview": "Forhånjswisneng"
 }
index a31af01..12d0e4c 100644 (file)
        "api-error-copyuploaddisabled": "Ngunggah saka URL dipatèni nèng sasana iki.",
        "api-error-duplicate": "Ana {{PLURAL:$1|[$2 berkas liya]|[$2 pirang-pirang berkas liya]}} sing wis ana nèng situsé saha isiné padha.",
        "api-error-duplicate-archive": "Ana {{PLURAL:$1|[$2 berkas liya]|[$2 pirang-pirang berkas liya]}} sing wis ana nèng situsé saha isiné padha, nanging {{PLURAL:$1|kuwi|kuwi kabèh}} wis dibusak.",
-       "api-error-duplicate-archive-popup-title": "Gandhakaké {{PLURAL:$1berkas sing wis|berkas sing wis}} dibusak.",
-       "api-error-duplicate-popup-title": "Gandhakaké {{PLURAL:$1berkas|berkas}}.",
        "api-error-empty-file": "Berkas sing Sampéyan kirim kosong.",
        "api-error-emptypage": "Nggawé kaca kosong anyar ora dilikaké.",
        "api-error-fetchfileerror": "Kasalahan njero: Ana sing salah nalika ngètukaké berkas iki.",
index 3366552..f3401a1 100644 (file)
        "api-error-copyuploaddisabled": "ამ სერვერზე URL-მისამართის საშუალებით ატვირთვა გამორთულია.",
        "api-error-duplicate": "უკვე {{PLURAL:$1|არსებობს [$2 სხვა ფაილი]|არსებობს [$2 სხვა მსგავსი ფაილი]}} ანალოგიური შინაარსით.",
        "api-error-duplicate-archive": "საიტზე ადრე {{PLURAL:$1|უკვე იყო [$2 ფაილი]}} ანალოგიური შინაარსით, მაგრამ {{PLURAL:$1|ის წაიშალა|ისინი წაიშალა}}.",
-       "api-error-duplicate-archive-popup-title": "უკვე წაშლილი {{PLURAL:$1|ფაილის|ფაილის}} დუბლიკატი.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|ფაილის|ფაილის}} დუბლიკატი.",
        "api-error-empty-file": "არჩეული ფაილი ცარიელია.",
        "api-error-emptypage": "ახალი, ცარიელი გვერდების შექმნა აკრძალულია.",
        "api-error-fetchfileerror": "შიდა შეცდომა: ფაილის მიღებისას მოხდა რაღაც შეცდომა.",
index 43ce460..c753608 100644 (file)
        "api-error-copyuploaddisabled": "Issenɣal seg URL nsan ɣef aqeddac agi.",
        "api-error-duplicate": "{{PLURAL:$1|[Yella yakan $2 afaylu nniḍen]|[Llan yakan $2 ifuyla nniḍen]}} ɣef asmel agi s ugbur am winna.",
        "api-error-duplicate-archive": "{{PLURAL:$1|[Yella yakan $2 afaylu nniḍen]|[Llan yakan $2 ifuyla nniḍen]}} ɣef asmel agi s ugbur am winna, maca {{PLURAL:$1|yetwekkes|tetwekksen}}.",
-       "api-error-duplicate-archive-popup-title": "Sleg {{PLURAL:$1|afaylu|ifuyla}} yetwekksen yakan.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Afaylu|Ifuyla}} islagen.",
        "api-error-empty-file": "Afaylu id ceggɛeḍ d-ilem.",
        "api-error-emptypage": "Asnulfu n isebtar ilemawen ur yareg ara.",
        "api-error-fetchfileerror": "Tuccḍa tagensit : Yella kra ur yaɛeddan ara s luwqem deg tiririt n ufaylu.",
index da2b2ce..5d881be 100644 (file)
        "nstab-template": "Үлгі",
        "nstab-help": "Анықтама беті",
        "nstab-category": "Санат",
+       "mainpage-nstab": "Басты бет",
        "nosuchaction": "Мұндай әрекет жоқ",
        "nosuchactiontext": "URL-дегі көрсетілген әрекет жарамсыз.\nМүмкін сіз URL теру барысында қате жібердіңіз немесе дұрыс емес сілтеме бойынша өттіңіз.\nБұл сондай-ақ {{SITENAME}} жобасында қолданылатын бағдарламалық жасақтама қатесін көрсетуі мүмкін.",
        "nosuchspecialpage": "Мұндай арнайы бет жоқ",
        "api-error-badtoken": "Ішкі қате: Жаман байрақша",
        "api-error-copyuploaddisabled": "URL бойынша жүктеу бұл серверде өшірілген",
        "api-error-duplicate": "{{PLURAL:$1|[$2 басқа файл]|[$2 кейбір басқа файл]}} әлеқашан сайтта басқа мазмұнда бар.",
-       "api-error-duplicate-archive-popup-title": "Бұл {{PLURAL:$1|файл|файл}} телнұсқасы әлдеқашан жойылған.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|file|files}} телнұсқасы.",
        "api-error-empty-file": "Сіз жіберген файл бос.",
        "api-error-emptypage": "Бос бетті жаңадан бастау рұқсат етілмейді.",
        "api-error-fetchfileerror": "Ішкі қателік: Файлды алу барысында қате кетті.",
index a909979..b5986cf 100644 (file)
        "api-error-copyuploaddisabled": "이 서버에서 URL을 통해 파일 올리기가 비활성화되어 있습니다.",
        "api-error-duplicate": "이 위키에 내용이 똑같은 {{PLURAL:$1|[$2 다른 파일]}}이 있습니다.",
        "api-error-duplicate-archive": "같은 내용을 담고 있던 {{PLURAL:$1|[$2 다른 파일]}}이 있었지만 이 {{PLURAL:$1|파일}}은 삭제되었습니다.",
-       "api-error-duplicate-archive-popup-title": "중복된 {{PLURAL:$1|파일}}이 이미 삭제되었습니다.",
-       "api-error-duplicate-popup-title": "중복된 {{PLURAL:$1|파일}}입니다.",
        "api-error-empty-file": "올리려는 파일이 비어 있습니다.",
        "api-error-emptypage": "새 문서로 빈 문서를 만들 수 없습니다.",
        "api-error-fetchfileerror": "내부 오류: 파일을 불러오는 중 문제가 발생했습니다.",
index a8e026d..e4bfd06 100644 (file)
        "searchsuggest-search": "Излеу",
        "searchsuggest-containing": "ичиндегиси…",
        "api-error-badtoken": "Ич халат: терс токен.",
-       "api-error-duplicate-popup-title": "Дубликат {{PLURAL:$1|файл|файлла}}",
        "api-error-empty-file": "Сиз ийген файлны ичи бошду.",
        "api-error-emptypage": "Ичи бош болгъан джангы бетле къураргъа болмайды.",
        "api-error-file-too-large": "Сиз ийген файл асыры уллуду.",
index 83e1fd4..855f15c 100644 (file)
        "disclaimerpage": "Project:Impressum",
        "edithelp": "Hölp för et Beärbeijde",
        "helppage-top-gethelp": "Hölp",
-       "mainpage": "Haupsigg",
-       "mainpage-description": "Haupsigg",
+       "mainpage": "Houpsigg",
+       "mainpage-description": "Houpsigg",
        "policy-url": "Project:Rejelle",
        "portal": "Övver {{GRAMMAR:Akkusativ|{{ucfirst:{{SITENAME}}}}}} för Metmaacher",
        "portal-url": "Project:Metmaacher Pooz",
        "nstab-template": "Schablohn",
        "nstab-help": "Hölp",
        "nstab-category": "Saachjropp",
+       "mainpage-nstab": "Houpsigg",
        "nosuchaction": "Di Aufgab („<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">action</code>“) känne mer nit",
        "nosuchactiontext": "<strong>Na su jet:</strong> De Aufgab us däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>, di do hinger „<code>action=</code>“ dren steiht, joh, di kennt heh dat Wiki jar nit.\nDo künns Desch vertipp han, udder ene verkeehte Lengk hät Desch noh heh jebraat.\nEt künnt sesch och öm ene Fäähler en dä Sofware fum Wiki handelle.",
        "nosuchspecialpage": "Esu en {{int:nstab-special}} ha'mer nit",
        "api-error-badaccess-groups": "Do häs nit et Rääsch, Datteije en heh dat Wiki huhzelaade.",
        "api-error-badtoken": "Fähler: et Kännzeijsche (<i lang=\"en\">token</i>) es kappott.",
        "api-error-copyuploaddisabled": "Et Huhlaade vun enem <i lang=\"en\">URL</i> es op däm ẞööver heh nit zohjelohße.",
-       "api-error-duplicate": "Mer han em Wiki ald {{PLURAL:$1|[$2 en Dattei]|[$2 $1 andere Datteije]|[$2 kein Dattei]}} mem akeraat sellve Enhalldt.",
-       "api-error-duplicate-archive": "Mer hatte {{PLURAL:$1|[$2 en ander Dattei]|[$2 ander Datteije]|[$2 kein ander Dattei]}} heh em Wiki mem sellve Enhalt, ävver se {{PLURAL:$1|es|sen|es}} ald fottjeschmeße woode.",
-       "api-error-duplicate-archive-popup-title": "Ald fottjeschmeße {{PLURAL:$1|es de dubbelte Datei:|sen de dubbelte Dateije:|es kein dubbelte Datteije woode.}}",
-       "api-error-duplicate-popup-title": "Di {{PLURAL:$1|Dattei es|Datteie sen|Dattei es}} ald doh.",
+       "api-error-duplicate": "Mer han em Wiki ald {{PLURAL:$1|[en Dattei]|[$1 andere Datteije]|[kein Dattei]}} mem akeraat sellve Enhalldt.",
+       "api-error-duplicate-archive": "Mer hatte {{PLURAL:$1|[en ander Dattei]|[ander Datteije]|[kein ander Dattei]}} heh em Wiki mem sellve Enhalt, ävver se {{PLURAL:$1|es|sen|es}} ald fottjeschmeße woode.",
        "api-error-empty-file": "En dä huhjelaade Dattei wohr jaa_nix dren.",
        "api-error-emptypage": "Neu läddijje Sigge aanzelääje es verbodde.",
        "api-error-fetchfileerror": "Fähler: Beim eronger Lahde hät jät nit jeflupp.",
index a65b64a..dc88ddf 100644 (file)
        "api-error-copyuploaddisabled": "D'Eroplueden iwwer eng URL ass op dësem Server desaktivéiert.",
        "api-error-duplicate": "Et gëtt schonn {{PLURAL:$1|[$2 en anere Fichier]|[$2 aner Fichiere]}} mat dem selwechten Inhalt op dem Site",
        "api-error-duplicate-archive": "Et gouf schonn {{PLURAL:$1| [een anere Fichier]|[$2 aner Fichieren]}} op dem Site mat deemselwechten Inhalt, {{PLURAL:$1|e gouf was|se goufen}} awer geläscht.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duebele Fichier, dee scho geläscht gouf|Duebel Fichieren, déi scho geläscht goufen}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Duebele Fichier|Duebel Fichieren}}",
        "api-error-empty-file": "De Fichier deen Dir geschéckt hutt war eidel.",
        "api-error-emptypage": "Et ass net erlaabt nei, eidel Säiten unzeleeën.",
        "api-error-fetchfileerror": "Interne Feeler: beim Opruffe vum Fichier huet eppes net funktionéiert.",
index 5350ef2..e435a01 100644 (file)
        "api-error-copyuploaddisabled": "Uploade via URL steit óp deze server oet.",
        "api-error-duplicate": "d'r {{PLURAL:$1|steit al [$2 e bestandj]|staon al [$2 bestenj]}} mit dezelfden inhawd oppe wiki.",
        "api-error-duplicate-archive": "d'r {{PLURAL:$1|Waar al [$2 'n anger bestandj]|woren al [$2 $1 anger bestenj]}} óppe site mitte zelfdjen inhawd, meh {{PLURAL:$1|det is|die zeen}} gewösj.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplicaatbestandj det al gewösj is|Duplicaatbestenj die al gewösj zeen}}",
-       "api-error-duplicate-popup-title": "Zelfde {{PLURAL:$1|bestandj|bestenj}}",
        "api-error-empty-file": "t Bestandj det se perbeers te uploade had gein inhald.",
        "api-error-emptypage": "Doe maags gein nuuj, laeg pagina's aanmake.",
        "api-error-fetchfileerror": "Intern fout: d'r is get fout gegange bie 't óphaole van 't bestandj.",
index 3251a49..fe1fe64 100644 (file)
        "api-error-copyuploaddisabled": "سوار کردن وا یو آر ال دی ای سرور غیرفعال بیه.",
        "api-error-duplicate": "{{PLURAL:$1|[$2 یه گل جانیا هنی]|[$2 چن گل جانیا هنی]}} د دیارگه وا مینونه هومبراور بی.",
        "api-error-duplicate-archive": "{{PLURAL:$1|[$2 یه گل جانیا هنی]|[$2 چن گل جانیا هنی]}} د دیارگه وا مینونه هومبراور بی.ولی پاکسا {{PLURAL:$1|بیه|بینه}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|جانیا|جانیایا}} تکراری یی که ایسه پاکسا بیینه",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|جانیا|جانیایا}} تکراری",
        "api-error-empty-file": "جانیایی که دئی ته حالی بی.",
        "api-error-emptypage": "یه گل بلگه تازه راس بکیت،بلگه یا حالی صلادار کاری نیئن.",
        "api-error-fetchfileerror": "خطا مین کار: د گات گرتن جانیا، یه چی یی خو پیش نرت.",
index cda64a9..82f8593 100644 (file)
        "changeemail-password": "Jūsų {{SITENAME}} slaptažodis:",
        "changeemail-submit": "Keisti el. pašto adresą",
        "changeemail-throttled": "Jūs atlikote pernelyg daug bandymų prisijungti.\nLuktelėkite $1 prieš bandant vėl.",
+       "changeemail-nochange": "Prašome įvesti kitą naują el. pašto adresą.",
        "resettokens": "Atnaujinti žetonus",
        "resettokens-text": "Jūs galite atnaujinti žetonus, kurie suteikia prieigą prie tam tikros privačios informacijos susijusios su jūsų paskyra čia.\n\nJūs turėtumėte tai padaryti jei netyčia jais pasidalinote su kuo nors arba jei jūsų paskyra buvo pavojuje.",
        "resettokens-no-tokens": "Nėra žetonų, kuriuos galima atnaujinti.",
        "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ų.",
        "specialloguserlabel": "Naudotojas:",
-       "speciallogtitlelabel": "Pavadinimas:",
+       "speciallogtitlelabel": "Tikslas (pavadinimas arba {{ns:user}}:naudotojo vardas naudotojui):",
        "log": "Specialiųjų veiksmų sąrašas",
        "all-logs-page": "Visi viešieji sąrašai",
        "alllogstext": "Bendrai pateikiamas visų galimų „{{SITENAME}}“ specialiųjų veiksmų sąrašas.\nGalima sumažinti rezultatų skaičių, patikslinant veiksmo rūšį, naudotoją ar susijusį puslapį.",
        "api-error-copyuploaddisabled": "Siuntimas pagal URL yra išjungtas šiame serveryje.",
        "api-error-duplicate": "Jau {{PLURAL:$1|yra [$2 kitas failas]|yra [$2 kiti failai]}} puslapyje su tuo pačiu turiniu..",
        "api-error-duplicate-archive": "Jau {{PLURAL:$1|buvo [$2 kitas failas]|buvo [$2 kitų failų]}} puslapyje su tuo pačiu turiniu, bet {{PLURAL:$1|buvo|buvo}} ištrinti.",
-       "api-error-duplicate-archive-popup-title": "Dubliuoti {{PLURAL:$1|failą kuris buvo|failus kurie buvo}} jau buvo ištrinti.",
-       "api-error-duplicate-popup-title": "Dubliuoti  {{PLURAL:$1|failą|failus}}",
        "api-error-empty-file": "Pateikta failas buvo tuščias.",
        "api-error-emptypage": "Kurti naujus, tuščius puslapius neleidžiama.",
        "api-error-fetchfileerror": "Vidinė klaida: Kažkas nutiko gaunant failą.",
index a6c92b5..f427852 100644 (file)
        "tooltip-ca-nstab-main": "Jereo ny takelaka",
        "tooltip-ca-nstab-user": "Jereo ny pejin'ny mpikambana",
        "tooltip-ca-nstab-media": "Hijery ny pejin'ny Media",
-       "tooltip-ca-nstab-special": "Pejy manokana ity pejy ity, ny rindrankajy wiki no mitantana ity pejy ity",
+       "tooltip-ca-nstab-special": "Pejy manokana ity ka tsy azo ovaina",
        "tooltip-ca-nstab-project": "Hijery ny pejin-tetikasa",
        "tooltip-ca-nstab-image": "jereo ny pejy an'io rakitra io",
        "tooltip-ca-nstab-mediawiki": "Hijery ny hafatra ampiasain'ny rindrankajy",
        "spambot_username": "Fanadiovana ny spam amin'i MediaWiki.",
        "spam_reverting": "Famerenana an'ilay versiona farany tsy misy ny rohy mankany amin'ny $1",
        "spam_blanking": "Voafotsy ny versiona misy ny rohy mankany amin'ny $1",
-       "simpleantispam-label": "Fanamarinana anoherana ny spam.\n<strong>AZA</strong> fenoina ity!",
+       "simpleantispam-label": "Fanamarinana anoherana ny spam.\n<strong>Aza</strong> fenoina ity!",
        "pageinfo-title": "Fampahalalana ho an'i \"$1\"",
        "pageinfo-header-basic": "Fampahalalana fototra",
        "pageinfo-header-edits": "Tantaran'ny fanovana",
index 9160d9d..2f9e6f2 100644 (file)
        "november-date": "$1 ноември",
        "december-date": "$1 декември",
        "pagecategories": "{{PLURAL:$1|Категорија|Категории}}",
-       "category_header": "Статии во категоријата „$1“",
+       "category_header": "Страници во категоријата „$1“",
        "subcategories": "Поткатегории",
        "category-media-header": "Податотеки во категоријата „$1“",
        "category-empty": "''Оваа категорија моментално не содржи страници или податотеки.''",
        "permissionserrorstext-withaction": "Немате дозвола за $2, од {{PLURAL:$1|следнава причина|следниве причини}}:",
        "recreate-moveddeleted-warn": "Внимание: Повторно создавате страница што претходно била бришена.'''\n\nРазмислете дали е правилно да продолжите со уредување на оваа страница.\nПодолу е прикажан дневникот на бришења и преместувања на оваа страница:",
        "moveddeleted-notice": "Оваа страница била претходно бришена.\nДневникот на бришења и преместувања за оваа страница е прикажан подолу за ваше дополнително информирање.",
+       "moveddeleted-notice-recent": "За жал, страницава беше неодамна избришана (во последниве 24 часа).\nПодолу можете да го погледате дневникот на бришење и преместување.",
        "log-fulllog": "Преглед на целиот дневник",
        "edit-hook-aborted": "Уредувањето е прекинато со кука.\nНе е дадено никакво образложение.",
        "edit-gone-missing": "Не можев да ја подновам страницата.\nВеројатно е избришана.",
        "prefs-help-signature": "Коментарите на страниците за разговор треба да се потпишуваат со „<nowiki>~~~~</nowiki>“ кое ќе се претвори во вашиот потпис и време.",
        "badsig": "Грешка во потписот.\nПроверете ги HTML ознаките.",
        "badsiglength": "Вашиот потпис е премногу долг.\nМора да биде со помалку од $1 {{PLURAL:$1|знак|знаци}}.",
-       "yourgender": "Ð\9aако Ð±Ð¸ Ñ\81акале Ð´Ð° Ð²Ðµ Ð¾Ð¿Ð¸Ñ\88Ñ\83ваме?",
-       "gender-unknown": "Ð\9aога Ñ\9cе Ð²Ðµ Ñ\81помнÑ\83ва, Ð¿Ñ\80огÑ\80амоÑ\82 Ñ\9cе ÐºÐ¾Ñ\80иÑ\81Ñ\82и Ñ\80одово Ð½ÐµÑ\83Ñ\82Ñ\80ални Ð·Ð±Ð¾Ñ\80ови Ñ\81екаде ÐºÐ°Ñ\98Ñ\88Ñ\82о Ð¼Ð¾Ð¶Ðµ",
-       "gender-male": "ТоÑ\98 Ñ\83Ñ\80едÑ\83ва Ð²Ð¸ÐºÐ¸Ñ\81Ñ\82Ñ\80аниÑ\86и",
-       "gender-female": "Таа Ñ\83Ñ\80едÑ\83ва Ð²Ð¸ÐºÐ¸Ñ\81Ñ\82Ñ\80аниÑ\86и",
+       "yourgender": "Ð\9fол",
+       "gender-unknown": "непоÑ\81оÑ\87ено",
+       "gender-male": "маÑ\88ки",
+       "gender-female": "женÑ\81ки",
        "prefs-help-gender": "Оваа поставка е незадолжителна.\nПрограмот го користи посочениот род за да ве опишува согласно вашиот пол.\nИнформацијата ќе биде јавна.",
        "email": "Е-пошта",
        "prefs-help-realname": "Вистинското име е незадолжително.\nДоколку изберете да го внесете, тоа може да се искористи за оддавање на заслуги за Вашата работа.",
        "api-error-copyuploaddisabled": "Подигањата со URL се оневозможени на овој опслужувач.",
        "api-error-duplicate": "Веќе {{PLURAL:$1|постои [$2 друга податотека]|постојат [$2 други податотеки]}} со истата содржина",
        "api-error-duplicate-archive": "На мрежното место веќе {{PLURAL:$1|постоела [$2 друга податотека]|постоеле [$2 други податотеки]}} со истата содржина, но во меѓувреме {{PLURAL:$1|е избришана|се избришани}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Дуплирана податотека што е веќе избришана|Дуплирани податотеки што се веќе избришани}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Дуплирана податотека|Дуплирани податотеки}}",
        "api-error-empty-file": "Поднесената податотека е празна.",
        "api-error-emptypage": "Создавањето на нови празни страници не е дозволено.",
        "api-error-fetchfileerror": "Внатрешна грешка: нешто тргна наопаку при добивањето на податотеката.",
index 60f032c..e45be59 100644 (file)
        "api-error-copyuploaddisabled": "യൂ.ആർ.എൽ. ഉപയോഗിച്ചുള്ള അപ്‌ലോഡ് ഈ സെർവറിൽ പ്രവർത്തനസജ്ജമാക്കിയിട്ടില്ല.",
        "api-error-duplicate": "വിക്കിയിൽ ഇതേ ഉള്ളടക്കമുള്ള {{PLURAL:$1|[$2 മറ്റൊരു പ്രമാണം]|[$2 മറ്റ് പ്രമാണങ്ങൾ]}} മുമ്പേയുണ്ട്.",
        "api-error-duplicate-archive": "സൈറ്റിൽ ഇതേ ഉള്ളടക്കമുള്ള {{PLURAL:$1|[$2 മറ്റൊരു പ്രമാണം]|[$2 മറ്റ് പ്രമാണങ്ങൾ]}} ഉണ്ടായിരുന്നു, പക്ഷേ {{PLURAL:$1|അത്|അവ}} മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.",
-       "api-error-duplicate-archive-popup-title": "പകർപ്പ് {{PLURAL:$1|പ്രമാണം|പ്രമാണങ്ങൾ}} മുമ്പേതന്നെ മായ്ക്കപ്പെട്ടു",
-       "api-error-duplicate-popup-title": "പകർപ്പ് {{PLURAL:$1|പ്രമാണം|പ്രമാണങ്ങൾ}}",
        "api-error-empty-file": "താങ്കൾ സമർപ്പിച്ച പ്രമാണം ശൂന്യമാണ്.",
        "api-error-emptypage": "ശൂന്യമായ പുതിയ താളുകൾ സൃഷ്ടിക്കുന്നത് അനുവദിക്കുന്നില്ല.",
        "api-error-fetchfileerror": "ആന്തരിക പിഴവ്: പ്രമാണം ശേഖരിച്ചുകൊണ്ടിരുന്നപ്പോൾ എന്തോ പിഴവുണ്ടായി.",
index ef5cbdf..e4c8ca5 100644 (file)
        "api-error-copyuploaddisabled": "या विदागारावर 'संकेतस्थळावरील संचिका चढविणे' अक्षम करण्यात आले आहे.",
        "api-error-duplicate": "या संकेतस्थळावर यासारखाच आशय असलेली {{PLURAL:$1|संचिका आहे [$2 दुसरी संचिका]| [$2 दुसऱ्या संचिका]}} आहेत.",
        "api-error-duplicate-archive": "{{PLURAL:$1| [$2 another file]| [$2 some other files]}} हे याच नावाने साईट वर आहे आणि   पान {{PLURAL:$1|it was|they were}} वगळले गेले आहे",
-       "api-error-duplicate-archive-popup-title": "नक्कल {{PLURAL:$1|संचिका|संचिका}} ज्या पूर्वीच वगळल्या आहेत",
-       "api-error-duplicate-popup-title": "प्रतिरूपक {{PLURAL:$1|संचिका|संचिका}}",
        "api-error-empty-file": "तुम्ही प्रस्तुत केलेली संचिका रिकामी होती.",
        "api-error-emptypage": "नवीन आणि मोकळी पाने बनवायला परवानगी नाही",
        "api-error-fetchfileerror": "अंतर्गत चूक: फाइल मिळवतांना काहीतरी चूक झाली आहे",
index 1a7d7d9..c61c74f 100644 (file)
        "api-error-copyuploaddisabled": "Ciri memuat naik melalui URL dimatikan di pelayan ini.",
        "api-error-duplicate": "Di tapak ini sudah ada {{PLURAL:$1|[$2 satu fail lain]|[$2 fail-fail lain]}} yang sama kandungannya.",
        "api-error-duplicate-archive": "Di tapak ini pernah ada {{PLURAL:$1|[$2 satu fail lain]|[$2 fail-fail lain]}} yang sama kandungannya, tetapi telah dihapuskan.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Fail|Fail-fail}} pendua yang sudah dihapuskan",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fail|Fail-fail}} pendua",
        "api-error-empty-file": "Fail yang anda serahkan adalah kosong.",
        "api-error-emptypage": "Anda tidak dibenarkan membuat laman baru yang kosong.",
        "api-error-fetchfileerror": "Ralat dalaman: ada malasah ketika mengambil fail itu.",
index a8b84f9..9c05e0d 100644 (file)
        "api-error-badtoken": "Żball intern: <em>Token</em> ħażin.",
        "api-error-copyuploaddisabled": "It-tlugħ ta' fajls bl-użu tal-URL mhuwiex permess fuq dan is-server.",
        "api-error-duplicate": "Hemm {{PLURAL:$1|[$2 fajl ieħor]|[$2 xi fajls oħra]}} diġà fuq dan is-sit bl-istess kontenut.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Fajl duplikat li diġà ġie mħassar|Fajls duplikat li diġà ġew imħassra}}.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fajl duplikat|Fajls duplikati}}.",
        "api-error-empty-file": "Il-fajl li bgħatt kien vojt.",
        "api-error-emptypage": "Mhuwiex permess il-ħolqien ta' paġna ġdida vojta.",
        "api-error-fetchfileerror": "Żball intern: Kien hemm problema waqt il-kisba tal-fajl.",
index c600063..7b1173a 100644 (file)
        "oct": "ic mahtlāc",
        "nov": "ic mahtlāctli oncē",
        "dec": "ic mahtlāctli omōme",
+       "january-date": "Īccēmētztli $1",
+       "february-date": "Īcōmemētztli $1",
+       "march-date": "Īquēyimētztli $1",
+       "april-date": "Īcnāhuimētztli $1",
+       "may-date": "Īcmācuīllimētztli $1",
+       "june-date": "Īcchicuacemmētztli $1",
+       "july-date": "Īcchicōmemētztli $1",
+       "august-date": "Īcchicuēyimētztli $1",
+       "september-date": "Īcchiucnāhuimētztli $1",
+       "october-date": "Īcmahtlactlimētztli $1",
+       "november-date": "Īcmahtlactlioncēmētztli $1",
+       "december-date": "Īcmahtlactliomōmemētztli $1",
        "pagecategories": "{{PLURAL:$1|Tlaìxmatkàtlàlilòtl|Tlaìxmatkàtlàlilòmë}}",
        "category_header": "Tlâkuilòlpiltin ìpan tlaìxmatkàtlàlilòtl \"$1\"",
        "subcategories": "Tlaìxmatkàtlàlilòpilòmë",
        "error": "Ahcuallōtl",
        "databaseerror": "Tlahcuilōltzintlān īahcuallo",
        "laggedslavemode": "Xiquitta: huel ahmo ia achi yancuīc in tlapatlaliztli inīn zāzanilco.",
+       "readonly": "Mactzīntlantli tzahtzacticah",
        "missingarticle-rev": "(tlachiyaliztli ītlapōhual: $1)",
        "missingarticle-diff": "(Ahneneuh.: $1, $2)",
        "internalerror": "Ahcuallōtl tlahtic",
        "titleprotected": "Inīn zāzanilli ōmoquīxti ic tlachīhualiztli ic [[User:$1|$1]].\nŌquihto: ''$2''",
        "exception-nologin": "Ahmō timocalac",
        "virus-unknownscanner": "ahmatic antivirus:",
+       "welcomeuser": "Ximopanōltih, $1!",
        "yourname": "Motlatequitiltilīltōca:",
        "yourpassword": "Motlahtōlichtacāyo",
        "yourpasswordagain": "Motlahtōlichtacāyo occeppa",
        "nologin": "¿Ahmō ticpiya cuentah? '''$1'''.",
        "nologinlink": "Ticchīhuaz cē cuentah",
        "createaccount": "Ticchīhuaz cuentah",
-       "gotaccount": "¿Ye ticpiya cē cuentah? '''$1'''.",
+       "gotaccount": "¿Ye ticpiya cē tlapōhualli? '''$1'''.",
        "gotaccountlink": "Ximocalaqui",
        "createaccountmail": "Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl monetitlanizyeyān",
        "createaccountreason": "Tleīpampa:",
+       "createacct-reason": "Tleīpampa",
+       "createacct-submit": "Ticchīhuaz in motlapōhual",
        "badretype": "Ahneneuhqui motlahtōlichtacāyo.",
        "userexists": "In tlatequitiltilīltōcāitl in ōquipehpen ye ia.\nTimitztlātlauhtiah xicpehpena occē.",
        "loginerror": "Ahcuallōtl tlacalaquiliztechcopa",
        "passwordsent": "Ōmoihuah yancuīc motlahtōlichtacāyo īhuīc mo e-mail (\"$1\").\nOcceppa xicalaqui niman ticmatīz.",
        "mailerror": "Ahcuallōtl e-mailcopa: $1",
        "emailconfirmlink": "Ticchicāhua mo e-mail",
-       "accountcreated": "Cuentah ōmochīuh",
+       "accountcreated": "Tlapōhualli ōmochīuh",
        "accountcreatedtext": "In ītlatequitiltilīllapōhual in [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) ōquiyōcoyalo.",
        "createaccount-title": "Cuentah ītlachīhualiz ic {{SITENAME}}",
        "loginlanguagelabel": "Tlâtòlli: $1",
+       "pt-createaccount": "Ticchīhuaz motlapōhual",
        "changepassword": "Ticpatlāz motlahtōlichtacāyo",
        "resetpass_header": "Xicpatlāz motlahtōlichtacāyo",
        "oldpassword": "Huēhueh motlahtōlichtacayo:",
        "note": "'''Tlahtōlcaquiliztilōni:'''",
        "previewnote": "'''Xiquilnamiqui tein inīn zan tlaachtopaittaliztli.'''\n¡Motlapatlaliz ayamo ōquinpix!",
        "editing": "Ticpatlacah $1",
+       "creating": "Ticchīhua $1",
        "editingsection": "Ticpatlacah $1 (tlahtōltzintli)",
        "editingcomment": "Ticpatlacah $1 (tlahtōltzintli)",
        "editconflict": "Tlapatlaliztli yāōyōtōn: $1",
        "history-feed-item-nocomment": "$1 īpan $2",
        "history-feed-empty": "In zāzanilli tiquiēlēhuia ahmo ia.\nHueliz ōmopolo huiqui nozo ōmozacac.\n[[Special:Search|Xitēmoa huiquipan]] yancuīc huēyi zāzaniltin.",
        "rev-delundel": "tiquittāz/tictlātīz",
+       "rev-showdeleted": "ticnēxtīz",
        "revisiondelete": "Tiquimpolōz/ahtiquimpolōz tlachiyaliztli",
        "revdelete-show-file-submit": "Quēmah",
        "revdelete-hide-text": "In tlahtlachiyaliztli ītlahcuilōl",
        "revdelete-hide-image": "Tictlātīz tlahcuilōlli ītlapiyaliz",
        "revdelete-radio-set": "Tlaīnāyalli",
        "revdelete-radio-unset": "Ittalōni",
+       "revdelete-log": "Tleīpampa:",
        "revdel-restore": "Ticpatlāz tlattaliztli",
        "pagehist": "Zāzanilli tlahcuilōlloh",
        "deletedhist": "Ōtlapolo tlahcuilōlloh",
        "mergehistory-no-destination": "Zāzanilhuīc $1 ahmo ia.",
        "mergehistory-autocomment": "Ōmocēntili [[:$1]] īpan [[:$2]]",
        "mergehistory-comment": "Ōmocēntili [[:$1]] īpan [[:$2]]: $3",
+       "mergehistory-reason": "Tleīpampa:",
        "revertmerge": "Tiquīxipehuaz",
        "history-title": "«$1» tlahcuilōlloh ītlaihittaliz",
        "lineno": "Pāntli $1:",
        "preferences": "Tlaēlēhuiliztli",
        "mypreferences": "Notlaēlēhuiliz",
        "prefs-edits": "Tlapatlaliztli tlapōhualli:",
+       "prefs-skin": "Ēhuatl",
        "skin-preview": "Xiquitta quemeh yez",
        "datedefault": "Ayāc tlanequiliztli",
        "prefs-labs": "Ìntlâtlamảtilis in tlayêyẻkòyàntìn",
        "right-edit": "Tiquimpatlāz zāzaniltin",
        "right-createpage": "Ticchīhuāz zāzaniltin (ahmo tēixnāmiquiliztli zāzaniltin)",
        "right-createtalk": "Ticchīhuāz tēixnāmiquiliztli zāzaniltin",
-       "right-createaccount": "Tiquinchīhuāz yancuīc cuentah",
+       "right-createaccount": "Ticchīhuaz yancuic tlapōhualli",
        "right-minoredit": "Ticpatlāz quemeh tlapatlalitzintli",
        "right-move": "Tiquinzacāz zāzaniltin",
        "right-move-subpages": "Tiquinzacāz zāzaniltin auh īzāzaniltōn",
        "action-block": "tiquitzacuilīz inīn tlatequitiltilīlli",
        "action-userrights": "tiquimpatlāz mochi tlatequitiltilīlli huelītiliztli",
        "nchanges": "$1 {{PLURAL:$1|tlapatlaliztli}}",
+       "enhancedrc-history": "tlahtōllōtl",
        "recentchanges": "Yancuīc tlapatlaliztli",
        "recentchanges-legend": "Yancuīc tlapatlaliztechcopa tlanequiliztli",
        "recentchanges-summary": "Xiquinttāz in achi yancuīc ahmo occequīntīn tlapatlaliztli huiquipan inīn zāzanilpan.",
        "recentchanges-label-minor": "Inīn tlapatlaliztli tepitōn",
        "rclistfrom": "Xiquinttāz yancuīc tlapatlaliztli īhuīcpa $3 $2",
        "rcshowhideminor": "$1 tlapatlalitzintli",
+       "rcshowhideminor-show": "Ticnēxtīz",
        "rcshowhidebots": "$1 tepoztlācah",
+       "rcshowhidebots-hide": "Tiquihyānaz",
        "rcshowhideliu": "$1 tēmachiyōmacalli tlatequitiltilīltin",
        "rcshowhideanons": "$1 ahtōcā tlatequitiltilīlli",
+       "rcshowhideanons-show": "Ticnēxtīz",
        "rcshowhidepatr": "$1 tlapatlaliztli mochiyahua",
        "rcshowhidemine": "$1 notlahcuilōl",
+       "rcshowhidemine-show": "Ticnēxtīz",
        "rclinks": "Xiquintta xōcoyōc $1 tlapatlaliztli xōcoyōc $2 tōnalpan.<br />$3",
        "diff": "ahneneuh",
        "hist": "tlahcuil",
        "pager-newer-n": "{{PLURAL:$1|1 yancuīc|$1 yancuīc}}",
        "pager-older-n": "{{PLURAL:$1|1 huēhuetl|$1 huēhueh}}",
        "booksources": "āmoxmēyalli",
+       "booksources-search-legend": "Tiquīxtēmōz āmoxmēyalli",
+       "booksources-search": "Tiquīxtēmōz",
        "specialloguserlabel": "Tlatequitiltilīlli:",
        "speciallogtitlelabel": "Tōcāitl:",
        "log": "Tlahcuilōlloh",
index 76b609d..b885177 100644 (file)
        "api-error-copyuploaddisabled": "'A funzione carrcà 'e n'URL nun è appicciata dint'a stu server.",
        "api-error-duplicate": "Nce {{PLURAL:$1|stà [$2 n'atu file]|stanno [$2 ati file]}} ncopp' 'o sito ch' 'e stisse cuntenute.",
        "api-error-duplicate-archive": "Nce {{PLURAL:$1|steva [$2 n'atu file]|stevano [$2 ati file]}} già ncopp' 'o sito ch' 'e stisse cuntenute, però {{PLURAL:$1|è stato|so' state}} scancellate.",
-       "api-error-duplicate-archive-popup-title": "File duprecat{{PLURAL:$1|o che è già stato scancellato|e che songo già state scancellati}}",
-       "api-error-duplicate-popup-title": "Dupreche {{PLURAL:$1|file|file}}",
        "api-error-empty-file": "'O file ch'avite mannato è abbacante.",
        "api-error-emptypage": "'A criazione 'e paggene nuove abbacante nun è permessa.",
        "api-error-fetchfileerror": "Errore interno: Coccosa ascette stuorta quanno se steva 'analizzà stu file.",
index 138cd78..b2169c5 100644 (file)
        "unwatchthispage": "Fjerner overvåkning",
        "notanarticle": "Ikke en artikkel",
        "notvisiblerev": "Revisjonen er slettet",
-       "watchlist-details": "Du har {{PLURAL:$1|én side|'''$1''' sider}} på [[Hjelp:Overvåke sider|overvåkningslisten]] din (pluss tilhørende [[Hjelp:Diskusjonsside|diskusjonssider]]).",
+       "watchlist-details": "Du har {{PLURAL:$1|én side|$1 sider}} på overvåkningslisten din (med tilhørende diskusjonssider).",
        "wlheader-enotif": "E-postvarsling er slått på.",
        "wlheader-showupdated": "Sider som har blitt endret siden du besøkte dem sist vises med '''fet skrift'''.",
        "wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste <strong>$1</strong> endringene}} {{PLURAL:$2|den siste timen|de siste <strong>$2</strong> timene}}, per $3 kl. $4",
        "api-error-copyuploaddisabled": "Opplasting ved URL er deaktivert på denne tjeneren.",
        "api-error-duplicate": "Det er allerede {{PLURAL:$1|en [$2 annen fil]|flere [$2 andre filer]}} på denne siden med samme innhold.",
        "api-error-duplicate-archive": "Det fantes {{PLURAL:$1|[$2 en annen fil]|[$2 noen andre filer]}} på siden som hadde samme innhold, men {{PLURAL:$1|den|de}} ble slettet.",
-       "api-error-duplicate-archive-popup-title": "Duplikat-{{PLURAL:$1|fil|filer}} som allerede har blitt slettet",
-       "api-error-duplicate-popup-title": "Duplikat {{PLURAL:$1|fil|filer}}",
        "api-error-empty-file": "Filen du sendte inn var tom.",
        "api-error-emptypage": "Det er ikke tillatt å opprette nye, tomme sider.",
        "api-error-fetchfileerror": "Intern feil: Noe gikk galt ved henting av denne filen.",
index 0e312ba..33cd815 100644 (file)
        "api-error-copyuploaddisabled": "Bestaanden opsturen via n webadres is uutezet op disse server.",
        "api-error-duplicate": "Der {{PLURAL:$1|steet al [$2 n bestaand]|staon al [$2 bestaanden]}} mit de zelfde inhoud in de wiki.",
        "api-error-duplicate-archive": "Der {{PLURAL:$1|was al [$2 n aander bestaand]|waren al [$2 $1 aandere bestaanden]}}  op de webstee mit de zelfde inhoud, mer {{PLURAL:$1|dat is|die bin}} vortedaon.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplikaotbestaand dat al vortedaon is|Duplikaotbestaanden die al vortedaon bin}}",
-       "api-error-duplicate-popup-title": "Zelfde {{PLURAL:$1|bestaand|bestaanden}}",
        "api-error-empty-file": "t Bestaand da'j op-estuurd hebben is leeg.",
        "api-error-emptypage": "Je maggen gien lege nieje ziejen anmaken.",
        "api-error-fetchfileerror": "Interne fout: der is iets verkeerd egaon mit t ophaolen van t bestaand.",
index 510ef79..eeb8b92 100644 (file)
        "nstab-template": "ढाँचा (टेम्प्लेट)",
        "nstab-help": "सहायता पृष्ठ",
        "nstab-category": "श्रेणी",
+       "mainpage-nstab": "मुख्य पृष्ठ",
        "nosuchaction": "यस्तो कार्य हैन",
        "nosuchactiontext": "URL ले खुलाएको कार्य मान्य छैन ।\nतपाईंले URL गलत टाइपगर्नु भएको , वा गलत लिंक पछ्याउनु भएको हुनसक्छ ।\nयो{{SITENAME}}ले सफ्टवेयरमा भएको गल्ति देखाएको पनि हुनसक्छ ।",
        "nosuchspecialpage": "त्यस्तो विशेष पृष्ठ छैन",
        "api-error-copyuploaddisabled": "यस सर्वरमा URL द्वारा अपलोड गर्ने व्यवस्था निस्क्रिय गरिएकोछ।",
        "api-error-duplicate": "यस साइटमा पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भएको [$2 अर्को फाइल छ]|भएका  [$2 केहि अरु फाइलहरू छन्]}} ।",
        "api-error-duplicate-archive": "यस साइटमा पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भएको [$2 अर्को फाइल थियो]|भएका  [$2 केहि अरु फाइलहरू थिए]}} ।\nतर {{PLURAL:$1|यो मेटाइएको थियो|यी मेटाइएका थिए}} ।",
-       "api-error-duplicate-archive-popup-title": "पहिले  {{PLURAL:$1|मेटाइएको फाइलको|मेटाइएका फाइलहरूको}} नकल प्रति बनाउने।",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|फाइल|फाइलहरू}} नकल प्रति बनाउने",
        "api-error-empty-file": "तपाईंले बुझाएको फाइल खालि छ।",
        "api-error-emptypage": "नयाँ तयार गर्दै, खाली पृष्ठ तयार गर्न अनुमति छैन ।",
        "api-error-fetchfileerror": "आन्तरिक समस्याः फाइल तान्दा केही कुरा गलत भएछ ।",
index 01adf4e..8fdd116 100644 (file)
        "api-error-copyuploaddisabled": "Uploaden via URL is uitgeschakeld op deze server.",
        "api-error-duplicate": "Er {{PLURAL:$1|staat al [$2 een bestand]|staan al [$2 bestanden]}} met dezelfde inhoud in de wiki.",
        "api-error-duplicate-archive": "Er {{PLURAL:$1|was al [$2 een ander bestand]|waren al [$2 $1 andere bestanden]}}  op de site met dezelfde inhoud, maar {{PLURAL:$1|dat is|die zijn}} verwijderd.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplicaatbestand dat al verwijderd is|Duplicaatbestanden die al verwijderd zijn}}",
-       "api-error-duplicate-popup-title": "Zelfde {{PLURAL:$1|bestand|bestanden}}",
        "api-error-empty-file": "Het bestand dat u hebt geüpload is leeg.",
        "api-error-emptypage": "Het aanmaken van nieuwe, lege pagina's is niet toegestaan.",
        "api-error-fetchfileerror": "Interne fout: er is iets misgegaan bij het ophalen van het bestand.",
index 4d13fb7..0729e7a 100644 (file)
        "api-error-copyuploaddisabled": "Opplasting etter URL er avslege på tenaren.",
        "api-error-duplicate": "Det finst {{PLURAL:$1|[$2 ei anna fil]|[$2 andre filer]}} på nettstaden med same innhaldet.",
        "api-error-duplicate-archive": "Det fanst {{PLURAL:$1|[$2 ei anna fil]|[$2 andre filer]}} på nettstaden med det same innhaldet, men {{PLURAL:$1|ho|dei}} vart sletta.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Tvifelt fil|Tvifelte filer}} som alt er sletta",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Tvifelt fil|Tvifelte filer}}",
        "api-error-empty-file": "Fila du sende var tom.",
        "api-error-emptypage": "Det er ikkje tillate å oppretta nye tomme sider.",
        "api-error-fetchfileerror": "Intern feil: Noko gjekk gale då fila vart henta.",
index 5b54f9d..c8ca3aa 100644 (file)
        "api-error-copyuploaddisabled": "Los cargaments via URL son desactivats sus aqueste servidor.",
        "api-error-duplicate": "I a ja {{PLURAL:$1|[$2 un autre fichièr present]|[$2 d'autres fichièrs presents]}} sul site amb lo meteis contengut.",
        "api-error-duplicate-archive": "I aviá ja {{PLURAL:$1|[$2 un autre fichièr present]|[$2 d'autres fichièrs presents]}} sul site amb lo meteis contengut, mas {{PLURAL:$1|es estat suprimit|son estats suprimits}}.",
-       "api-error-duplicate-archive-popup-title": "Duplicar {{PLURAL:$1|lo fichièr|los fichièrs}} que {{PLURAL:$1|ja es estat suprimit|je son estats suprimits}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|fichièr|fichièrs}} en doble",
        "api-error-empty-file": "Lo fichièr qu'avètz somés èra void.",
        "api-error-emptypage": "Creacion de paginas voidas pas autorizada.",
        "api-error-fetchfileerror": "Error intèrna : Quicòm s'es mal passat al moment de la recuperacion del fichièr.",
index 0f38416..f593f3c 100644 (file)
        "nstab-template": "Šablon",
        "nstab-help": "Abusivu",
        "nstab-category": "Kategourii",
+       "mainpage-nstab": "Piäsivu",
        "nosuchaction": "Nengostu toiminduo ei ole",
        "error": "Haireh",
        "databaseerror": "Tiedokanduhaireh",
index 017b910..78fac1c 100644 (file)
        "api-error-copyuploaddisabled": "URL ଦେଇ ଅପଲୋଡ଼ କରିବା ଏହି ସର୍ଭରରେ ଅଚଳ କରାଯାଇଅଛି ।",
        "api-error-duplicate": "ଏହି ସାଇଟରେ ସେହି ଏକା ତଥ୍ୟ ଥିବା {{PLURAL:$1| [$2 ଆଉ ଏକ ଫାଇଲ] ରହିଅଛି|[$2 ଆଉ କିଛି ଫାଇଲ] ରହି ଅଛନ୍ତି}} ।",
        "api-error-duplicate-archive": "ସେହି ସାଇଟରେ ସେହି ଏକା ଭିତର ଭାଗ ସହିତ ଆଗରୁ {{PLURAL:$1|[$2 ଆଉ ଫାଇଲଟିଏ] ଥିଲା|[$2 ଆଉ କେତେକ ଫାଇଲ] ଥିଲା}}, କିନ୍ତୁ {{PLURAL:$1|ତାହାକୁ|ସେସବୁକୁ}} ଲିଭାଇ ଦିଆଯାଇଅଛି ।",
-       "api-error-duplicate-archive-popup-title": "ଆଗରୁ ଲିଭାଯାଇଥିବା ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}",
-       "api-error-duplicate-popup-title": "ନକଲି {{PLURAL:$1|ଗୋଟି ଫାଇଲ|ଗୋଟି ଫାଇଲ}}",
        "api-error-empty-file": "ଆପଣ ପଠାଇଥିବା ଫାଇଲଟି ଖାଲି ଅଟେ ।",
        "api-error-emptypage": "ନୂଆ, ଖାଲି ପୃଷ୍ଠ ତିଆରି କରିବାର ଅନୁମତି ନାହି ।",
        "api-error-fetchfileerror": "ଭିତର ଅସୁବିଧା: ଏହି ଫାଇଲଟି ପାଖରେ ପହଞ୍ଚିବା ବେଳେ କିଛି ଅସୁବିଧା ହେଲା ।",
index a28368b..82221b9 100644 (file)
        "nstab-template": "Szablon",
        "nstab-help": "Strona pomocy",
        "nstab-category": "Kategoria",
+       "mainpage-nstab": "Strona główna",
        "nosuchaction": "Brak takiej operacji",
        "nosuchactiontext": "Działanie określone w adresie URL jest nieprawidłowe.\nMożliwe przyczyny to literówka w adresie, nieprawidłowy link lub błąd w oprogramowaniu {{GRAMMAR:D.lp|{{SITENAME}}}}.",
        "nosuchspecialpage": "Brak takiej strony specjalnej",
        "undeletepagetext": "{{PLURAL:$1|Następująca strona została usunięta, ale jej kopia wciąż znajduje|Następujące $1 strony zostały usunięte, ale ich kopie wciąż znajdują|Następujące $1 stron zostało usuniętych, ale ich kopie wciąż znajdują}} się w archiwum.\nArchiwum co jakiś czas może być oczyszczane.",
        "undelete-fieldset-title": "Odtwarzanie wersji",
        "undeleteextrahelp": "Jeśli chcesz odtworzyć całą historię edycji strony, pozostaw wszystkie pola niezaznaczone i kliknij '''''{{int:undeletebtn}}'''''.\nWybiórcze odtworzenie możesz wykonać, zaznaczając pola odpowiadające wersjom, które mają zostać odtworzone, a następnie klikając '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|zarchiwizowana wersja|zarchiwizowane wersje|zarchiwizowanych wersji}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|usunięta wersja|usunięte wersje|usuniętych wersji}}",
        "undeletehistory": "Odtworzenie strony spowoduje przywrócenie także jej wszystkich poprzednich wersji.\nJeśli od czasu usunięcia ktoś utworzył nową stronę o tej samej nazwie, odtwarzane wersje znajdą się w jej historii, a obecna wersja pozostanie bez zmian.",
        "undeleterevdel": "Odtworzenie nie zostanie przeprowadzone, jeśli mogłoby spowodować częściowe usunięcie aktualnej wersji strony lub pliku.\nW takiej sytuacji należy odznaczyć lub przywrócić widoczność najnowszej usuniętej wersji.",
        "undeletehistorynoadmin": "Ta strona została usunięta.\nPrzyczyna usunięcia podana jest w podsumowaniu poniżej, razem z danymi użytkownika, który edytował stronę przed usunięciem.\nSama treść usuniętych wersji jest dostępna jedynie dla administratorów.",
        "imagetypemismatch": "Nowe rozszerzenie nazwy pliku jest innego typu niż zawartość",
        "imageinvalidfilename": "Nazwa pliku docelowego jest nieprawidłowa",
        "fix-double-redirects": "Zaktualizuj wszystkie przekierowania wskazujące na stary tytuł",
-       "move-leave-redirect": "Pozostaw przekierowanie pod dotychczasowym tytułem",
+       "move-leave-redirect": "Pozostaw przekierowanie pod dotychczasowym tytułem.",
        "protectedpagemovewarning": "'''UWAGA!''' Ponieważ strona została zabezpieczona, tylko użytkownicy z uprawnieniami administratora mogą zmienić jej nazwę.\nOstatni wpis z rejestru jest pokazany poniżej.",
        "semiprotectedpagemovewarning": "'''Uwaga!''' Ponieważ strona została zabezpieczona, tylko zarejestrowani użytkownicy mogą zmienić jej nazwę.\nOstatni wpis z rejestru jest pokazany poniżej.",
        "move-over-sharedrepo": "== Plik istnieje ==\n[[:$1]] istnieje we wspólnym repozytorium. Zmiana nazwy pliku na tę spowoduje przesłonięcie współdzielonego pliku.",
        "api-error-copyuploaddisabled": "Przesyłanie poprzez podanie adresu URL zostało na tym serwerze wyłączone.",
        "api-error-duplicate": "{{PLURAL:$1|Jest już [$2 inny plik]|Są już [$2 inne pliki]}} o tej samej zawartości",
        "api-error-duplicate-archive": "{{PLURAL:$1|Był już [$2 inny plik]|Były już [$2 inne pliki]}} o takiej samej zawartości, ale {{PLURAL:$1|został usunięty|zostały usunięte}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Zdublowany plik, który został już usunięty|Zdublowane pliki, które zostały już usunięte}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Zdublowany plik|Zdublowane pliki}}",
        "api-error-empty-file": "Przesłany przez Ciebie plik jest pusty.",
        "api-error-emptypage": "Tworzenie nowych, pustych stron jest niedozwolone.",
        "api-error-fetchfileerror": "Błąd wewnętrzny – wystąpił błąd w trakcie pobierania pliku.",
index 5f066f2..f868ab3 100644 (file)
        "api-error-copyuploaddisabled": "Le carie a travers ëd liure a son disabilità ansima a cost servent.",
        "api-error-duplicate": "A-i {{PLURAL:$1|é [$2 n'àutr archivi]|son [$2 àutri archivi]}} già an sël sit col ël midem contnù.",
        "api-error-duplicate-archive": "A-i {{PLURAL:$1|era [$2 n'àutr archivi]|ero [$2 àutri archivi]}} già an sël sit con ël midem contnù, ma {{PLURAL:$1|a l'é stàit|a son ëstàit}} ëscancelà.",
-       "api-error-duplicate-archive-popup-title": "Dupliché {{PLURAL:$1|l'archivi|j'archivi}} ch'a son già stàit ëscancelà",
-       "api-error-duplicate-popup-title": "Dupliché {{PLURAL:$1|l'archivi|j'archivi}}",
        "api-error-empty-file": "L'archivi ch'a l'ha mandà a l'era veuid.",
        "api-error-emptypage": "La creassion ëd pàgine neuve veujde a l'é nen përmëttùa.",
        "api-error-fetchfileerror": "Eror antern: quaicòs a l'é andàit mal antramentre ch'as arcuperava l'archivi.",
index 62313d8..b5c45e4 100644 (file)
        "api-error-copyuploaddisabled": "یو آر ایل نال فائل چڑھانا ایس سرور تے نکام",
        "api-error-duplicate": "ایتھے {{PLURAL:$1|ہے [$2 اک ہور فائل]|ہین [$2 کچ ہور فائلاں]}} ایسے مواد نال ایس تھاں تے پہلے ای ہے۔",
        "api-error-duplicate-archive": "ایتھے  {{PLURAL:$1|سی [$2 اک ہور فائل]|سن [$2 کج ہور فائلاں]}} پہلے ای ایس تھاں تے اے اکو جے مواد نال پر {{PLURAL:$1|اے سی|اوہ سن}} مٹایا گیا۔",
-       "api-error-duplicate-archive-popup-title": "دوجی {{PLURAL:$1|فائل|فائلاں}} جناں نوں پہلے ای مٹا دتا گیا اے۔",
-       "api-error-duplicate-popup-title": "دوجی {{PLURAL:$1|فائل|فائلاں}}",
        "api-error-empty-file": "جیڑی فائل تسی دسی اے اوہ حالی اے۔",
        "api-error-emptypage": "نواں بناریا آن، خالی صفیاں دی اجازت نئیں۔",
        "api-error-fetchfileerror": "اندر دی غلطی: فائل لیندیاں کوئی غلطی ہوئی۔",
index 8f5e713..6383cfd 100644 (file)
        "versionrequired": "د ميډياويکي $1 بڼې ته اړتيا ده",
        "versionrequiredtext": "د دې مخ په ليدلو کې د مېډياويکي $1 بڼې ته اړتيا ده. \n[[Special:Version|د بڼې مخ وگورۍ]].",
        "ok": "ښه",
+       "pagetitle-view-mainpage": "{{SITENAME}}",
        "retrievedfrom": "\"$1\" نه اخيستل شوی",
        "youhavenewmessages": "تاسې $1 لری  ($2).",
        "youhavenewmessagesfromusers": "تاسې د {{PLURAL:$3|يو بل کارن|$3 کارنانو}} لخوا $1 لرۍ ($2).",
        "feedback-useragent": "کارن پلاوی:",
        "searchsuggest-search": "پلټل",
        "api-error-badaccess-groups": "تاسې دې ويکي کې د دوتونو ورپورته کولو پرېښه نه لرۍ.",
-       "api-error-duplicate-popup-title": "غبرګونې {{PLURAL:$1|دوتنه|دوتنې}}.",
        "api-error-empty-file": "کومه دوتنه چې تاسې دلته سپارلې هغه تشه ده.",
        "api-error-emptypage": "د نوي تشو مخونو جوړولو پرېښنه نه شته.",
        "api-error-file-too-large": "کومه دوتنه چې تاسې دلته سپارلې ډېره لويه ده.",
index 55361f0..4c41935 100644 (file)
        "protectedinterface": "Esta página fornece texto de interface ao software deste wiki, se encontrando protegida para prevenir abusos.\n\nPara adicionar ou alterar traduções em todos os wikis, utilize o [//translatewiki.net/ translatewiki.net], projeto de traduções do MediaWiki.",
        "editinginterface": "'''Aviso:''' Você se encontra prestes a editar uma página que é utilizada para fornecer texto de interface ao software.\nAlterações nesta página irão afetar a aparência da interface de usuário para outros usuários deste wiki.\nPara alterar ou adicionar traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt-br translatewiki.net], um projeto destinado para a tradução do MediaWiki.",
        "translateinterface": "Para adicionar ou modificar traduções para todas as wikis, por favor use  [//translatewiki.net/ translatewiki.net], o projeto de localização do MediaWiki.",
-       "cascadeprotected": "Esta página foi protegida contra edições porque é transcluída na seguinte {{PLURAL: $1, | página, que é | páginas, que estão protegidas}} com a \"cascata\" opção ativada: $2",
+       "cascadeprotected": "Esta página foi protegida contra edições porque é transcluída {{PLURAL:$1| na seguinte página que está protegida|nas seguintes páginas que estão protegidas}} com a opção \"em cascata\" ativada: $2",
        "namespaceprotected": "Você não possui permissão para editar páginas no espaço nominal '''$1'''.",
        "customcssprotected": "Você não tem permissão para editar esta página CSS, porque ele contém configurações pessoais de outro usuário.",
        "customjsprotected": "Você não tem permissão para editar esta página de JavaScript, porque ele contém configurações pessoais de outro usuário.",
        "createacct-benefit-body2": "{{PLURAL:$1|página|páginas}}",
        "createacct-benefit-body3": "{{PLURAL:$1|contribuidor|contribuidores}} recentes",
        "badretype": "As senhas que você digitou não são iguais.",
-       "usernameinprogress": "Uma criação da conta para este nome de usuário já está em andamento. Por favor, aguarde.",
+       "usernameinprogress": "Uma criação da conta para este nome de usuário já está em andamento.\nPor favor, aguarde.",
        "userexists": "O nome de usuário fornecido já está em uso.\nEscolha um nome diferente.",
        "loginerror": "Erro de autenticação",
        "createacct-error": "Erro ao criar a conta",
        "readonlywarning": "'''Aviso: O banco de dados foi bloqueado para manutenção, por isso você não poderá salvar a sua edição neste momento.'''\nTalvez você queira copiar o seu texto num editor externo e guardá-lo, para posterior envio.\n\nQuem bloqueou o banco de dados forneceu a seguinte explicação: $1",
        "protectedpagewarning": "'''Atenção: Esta página foi protegida para que apenas usuários com privilégios de administrador possam editá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "semiprotectedpagewarning": "'''Nota:''' Esta página foi protegida, sendo que apenas usuários registrados poderão editá-la.\nA última entrada no histórico é fornecida abaixo para referência:",
-       "cascadeprotectedwarning": "<strong> Aviso: </ strong> Esta página foi protegida para que somente os usuários com privilégios de administrador pode editá-lo porque ele é transcluída na seguinte protegido por cascata {{PLURAL: $1 | página | páginas}}:",
+       "cascadeprotectedwarning": "<strong>Aviso:</strong> Esta página foi protegida para que somente usuários com privilégios de administrador possam editá-la porque ela é transcluída {{PLURAL:$1|na seguinte página protegida|nas seguintes páginas protegidas}} por cascata:",
        "titleprotectedwarning": "'''Atenção: esta página foi protegida; [[Special:ListGroupRights|privilégios específicos]] são necessários para criá-la.'''\nA última entrada no histórico é fornecida abaixo como referência:",
        "templatesused": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta página:",
        "templatesusedpreview": "{{PLURAL:$1|Predefinição usada|Predefinições usadas}} nesta previsão:",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objeto vazio",
        "content-json-empty-array": "Array vazia",
-       "duplicate-args-warning": "<strong> Aviso: </ strong> [[:$1]] está chamando [[:$2]] com mais de um valor para o parâmetro \"$3\". Será utilizado apenas o último valor fornecido.",
+       "duplicate-args-warning": "<strong> Aviso: </strong> [[:$1]] está chamando [[:$2]] com mais de um valor para o parâmetro \"$3\". Será utilizado apenas o último valor fornecido.",
        "duplicate-args-category": "Páginas que utilizam argumentos duplicados ao chamar predefinições",
        "duplicate-args-category-desc": "A pagina contem modelos que usam argumentos duplicados, como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ou <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Aviso: Esta página contém muitas chamadas a funções do analisador \"parser\".\n\nDeveria ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento {{PLURAL:$1|há $1 chamada|existem $1 chamadas}}.",
        "search-category": "(categoria $1)",
        "search-file-match": "(coincide com o conteúdo do arquivo)",
        "search-suggest": "Você quis dizer: $1?",
-       "search-rewritten": "Mostrando resultados por $1. Pesquisar em vez de $2.",
+       "search-rewritten": "Mostrando resultados para $1. Pesquisar ao invés por $2.",
        "search-interwiki-caption": "Projetos irmãos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(mais)",
        "rows": "Linhas:",
        "columns": "Colunas:",
        "searchresultshead": "Pesquisar",
-       "stub-threshold": "Limiar para a formatação ligação stub (US $1):",
+       "stub-threshold": "Limite para a formatação de ligações para esboços ($1):",
        "stub-threshold-sample-link": "amostra",
        "stub-threshold-disabled": "Desabilitado",
        "recentchangesdays": "Dias a apresentar nas mudanças recentes:",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|$1 usuário|$1 usuários}} vigiando]",
-       "rc_categories": "Limite para categorias (separar com \"|\"):",
-       "rc_categories_any": "Qualquer dos escolhidos",
+       "rc_categories": "Limitar às categorias (separar com \"|\"):",
+       "rc_categories_any": "Qualquer um dos escolhidos",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} após alterações",
        "newsectionsummary": "/* $1 */ nova seção",
        "rc-enhanced-expand": "Exibir detalhes",
        "uploaddisabledtext": "O envio de arquivos encontra-se desativado.",
        "php-uploaddisabledtext": "O envio de arquivos via PHP está desativado.\nVerifique a configuração file_uploads.",
        "uploadscripted": "Este arquivo contém HTML ou código que pode ser erroneamente interpretado por um navegador web.",
-       "upload-scripted-pi-callback": "Não é possível fazer upload de um arquivo que contém a instrução de processamento XML-estilo.",
-       "uploaded-script-svg": "Elemento encontrado programável \"$1\" no arquivo SVG carregado.",
+       "upload-scripted-pi-callback": "Não é possível fazer upload de um arquivo que contém instruções de processamento de folha de estilo XML.",
+       "uploaded-script-svg": "Encontrado elemento de script \"$1\" no arquivo SVG carregado.",
        "uploaded-hostile-svg": "Encontrado CSS inseguro no elemento de estilo do arquivo SVG carregado.",
-       "uploaded-event-handler-on-svg": "Configuração de manipulador de eventos atribui <code> $1 = \"$2\" </ code> não é permitido em arquivos SVG.",
+       "uploaded-event-handler-on-svg": "Não é permitido configurar atributos que manipulem eventos  <code>$1=\"$2\"</code> em arquivos SVG.",
        "uploadscriptednamespace": "Este aruivo SVG contém um espaço nominal probido \"$1\"",
        "uploadinvalidxml": "O XML no arquivo enviado não pôde ser analisado.",
        "uploadvirus": "O arquivo contém vírus!\nDetalhes: $1",
        "upload-dialog-label-infoform-title": "Detalhes",
        "upload-dialog-label-infoform-name": "Nome",
        "upload-dialog-label-infoform-description": "Descrição",
-       "upload-dialog-label-usage-title": "uso",
+       "upload-dialog-label-usage-title": "Uso",
        "upload-dialog-label-usage-filename": "Nome do arquivo",
        "backend-fail-stream": "Não foi possível transmitir o arquivo  $1.",
        "backend-fail-backup": "Não foi possível fazer backup do arquivo  $1 .",
        "unusedimages": "Arquivos não utilizados",
        "wantedcategories": "Categorias pedidas",
        "wantedpages": "Páginas pedidas",
-       "wantedpages-summary": "Lista de páginas não-existentes com mais links para eles, excluindo páginas que apenas têm redirecionamentos links para eles. Para obter uma lista de páginas não-existentes que têm redirecionamentos links para eles, veja [[{{#special: Brokenredirects}} | lista de redirecionamentos quebrados]].",
+       "wantedpages-summary": "Lista de páginas inexistentes com mais ligações para elas, excluindo páginas que têm apenas redirecionamentos ligando a elas. Para uma lista de páginas inexistentes mas que têm redirecionamentos que ligam a elas, veja [[{{#special:BrokenRedirects}}|a lista de redirecionamentos quebrados]].",
        "wantedpages-badtitle": "Título inválido no conjunto de resultados: $1",
        "wantedfiles": "Arquivos pedidos",
        "wantedfiletext-cat": "Os seguintes arquivos são usados, mas não existem. Arquivos de repositórios externos podem acabar sendo listados apesar de existirem. Esses falsos positivos aparecerão <del>riscados</del>. As páginas que incluem arquivos inexistentes são listadas em [[:$1]].",
        "booksources-text": "É exibida a seguir uma listagem de links para outros sites que vendem livros novos e usados e que possam possuir informações adicionais sobre os livros que você está pesquisando:",
        "booksources-invalid-isbn": "O número ISBN fornecido não parece ser válido; verifique se houve erros ao copiar da fonte original.",
        "specialloguserlabel": "Executor:",
-       "speciallogtitlelabel": "Alvo (título ou {{ns: user}}: nome de usuário para usuário):",
+       "speciallogtitlelabel": "Alvo (título da página ou {{ns:user}}:'nomedeusuário' para usuários):",
        "log": "Registros",
        "all-logs-page": "Todos os registros públicos",
        "alllogstext": "Exibição combinada de todos registros disponíveis para o {{SITENAME}}.\nVocê pode diminuir a lista escolhendo um tipo de registro, um nome de usuário (sensível a maiúsculas e minúsculas), ou uma página afetada (também sensível a maiúsculas e minúsculas).",
        "rollback-success": "Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.",
        "sessionfailure-title": "Erro de sessão",
        "sessionfailure": "Foram detetados problemas com a sua sessão;\nEsta ação foi cancelada como medida de proteção contra a intercepção de sessões.\nExperimente usar o botão \"Voltar\" e atualizar a página de onde veio e tente novamente.",
-       "changecontentmodel": "Mudar modelo de conteúdo de uma página",
-       "changecontentmodel-legend": "Mudar modelo de conteúdo",
+       "changecontentmodel": "Alterar o modelo de conteúdo de uma página",
+       "changecontentmodel-legend": "Alterar o modelo de conteúdo",
        "changecontentmodel-title-label": "Título da página",
        "changecontentmodel-reason-label": "Motivo:",
        "logentry-contentmodel-change-revertlink": "reverter",
        "protect-othertime": "Outra duração:",
        "protect-othertime-op": "outra duração",
        "protect-existing-expiry": "A proteção atual expirará às $3 de $2",
-       "protect-existing-expiry-infinity": "Existente tempo de expiração: infinito",
+       "protect-existing-expiry-infinity": "Tempo de expiração existente: infinito",
        "protect-otherreason": "Outro motivo/motivo adicional:",
        "protect-otherreason-op": "Outro motivo",
        "protect-dropdown": "*Motivos comuns para proteção\n** Vandalismo excessivo\n** Inserção excessiva de ''spams''\n** Guerra de edições improdutiva\n** Página bastante acessada",
        "api-error-copyuploaddisabled": "O upload por URL está desativado neste servidor.",
        "api-error-duplicate": "Já {{PLURAL:$1|há [$2 outro arquivo]|existem [$2 outros arquivos]}} com o mesmo conteúdo",
        "api-error-duplicate-archive": "Já {{PLURAL:$1|existiu [$2 outro arquivo]|existiram [$2 outros arquivos]}} neste site com o mesmo conteúdo que, no entanto, {{PLURAL:$1|foi removido|foram removidos}}.",
-       "api-error-duplicate-archive-popup-title": "Duplicata de {{PLURAL:$1|arquivo|arquivos}} que já {{PLURAL:$1|foi apagado|foram apagados}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Arquivo|Arquivos}} em duplicata",
        "api-error-empty-file": "O arquivo que você enviou está vazio.",
        "api-error-emptypage": "Não é permitido criar páginas novas vazias.",
        "api-error-fetchfileerror": "Erro interno: ocorreu um problema indeterminado ao acessar o arquivo.",
        "special-characters-title-minus": "sinal de menos",
        "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
        "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
-       "mw-widgets-titleinput-description-redirect": "Direto para $1"
+       "mw-widgets-titleinput-description-redirect": "redirecionar para $1"
 }
index 64f1e09..5c340e0 100644 (file)
        "nstab-template": "Predefinição",
        "nstab-help": "Ajuda",
        "nstab-category": "Categoria",
+       "mainpage-nstab": "Página principal",
        "nosuchaction": "Operação não existe",
        "nosuchactiontext": "A operação especificada pela URL é inválida.\nÉ possível que tenha escrito mal a URL ou seguido uma ligação incorreta.\nIsto pode também indicar um defeito no software da {{SITENAME}}.",
        "nosuchspecialpage": "Esta página especial não existe",
        "protect-othertime": "Outra duração:",
        "protect-othertime-op": "outra duração",
        "protect-existing-expiry": "A proteção atual expirará às $3 de $2",
-       "protect-existing-expiry-infinity": "Existente tempo de expiração: infinito",
+       "protect-existing-expiry-infinity": "Tempo de expiração existente: infinito",
        "protect-otherreason": "Outro motivo/motivo adicional:",
        "protect-otherreason-op": "Outro motivo",
        "protect-dropdown": "*Motivos comuns para proteção\n** Vandalismo excessivo\n** ''Spam'' excessivo\n** Guerra de edições improdutiva\n** Página muito visitada",
        "blockip-legend": "Bloquear utilizador",
        "blockiptext": "Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador.\nIsto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).",
        "ipaddressorusername": "Endereço de IP ou utilizador(a):",
-       "ipbexpiry": "Validade:",
+       "ipbexpiry": "Expiração:",
        "ipbreason": "Motivo:",
        "ipbreason-dropdown": "*Razões comuns para um bloqueio\n** Inserção de informações falsas\n** Remoção de conteúdos de páginas\n** Inserção de \"spam\" para sítios externos\n** Inserção de conteúdo sem sentido/incompreensível nas páginas\n** Comportamento intimidador/inoportuno\n** Uso abusivo de contas múltiplas\n** Nome de utilizador inaceitável",
        "ipb-hardblock": "Impedir que utilizadores autenticados editem a partir deste endereço IP",
        "blocklist-rangeblocks": "Ocultar bloqueios de faixas",
        "blocklist-timestamp": "Data e hora",
        "blocklist-target": "Destinatário",
-       "blocklist-expiry": "Duração",
+       "blocklist-expiry": "Expira",
        "blocklist-by": "Administrador que realizou o bloqueio",
        "blocklist-params": "Parâmetros do bloqueio",
        "blocklist-reason": "Motivo",
        "block-log-flags-angry-autoblock": "ativado o bloqueio automático melhorado",
        "block-log-flags-hiddenname": "nome de utilizador oculto",
        "range_block_disabled": "A funcionalidade de administrador para o bloqueio de gamas de IP está desativada.",
-       "ipb_expiry_invalid": "Tempo de validade inválido.",
+       "ipb_expiry_invalid": "Tempo de expiração inválido.",
        "ipb_expiry_temp": "Bloqueios com nome de utilizador oculto devem ser permanentes.",
        "ipb_hide_invalid": "Não foi possível suprimir esta conta; ela possui mais de {{PLURAL:$1|uma edição|$1 edições}}.",
        "ipb_already_blocked": "\"$1\" já se encontra bloqueado",
        "confirmemail_sent": "Correio de confirmação enviado.",
        "confirmemail_oncreate": "Foi enviado um código de confirmação para o seu endereço de correio eletrónico.\nEste código não é necessário para se autenticar no sistema, mas será necessário para ativar qualquer funcionalidade baseada no uso de correio na wiki.",
        "confirmemail_sendfailed": "A {{SITENAME}} não conseguiu enviar a mensagem de confirmação.\nVerifique se o seu endereço de correio eletrónico tem caracteres inválidos.\n\nO sistema de correio devolveu o erro: $1",
-       "confirmemail_invalid": "Código de confirmação inválido. O código pode ter expirado.",
+       "confirmemail_invalid": "Código de confirmação inválido. O código pode ter expirado.",
        "confirmemail_needlogin": "Precisa de $1 para confirmar o seu endereço de correio eletrónico.",
        "confirmemail_success": "O seu endereço de correio eletrónico foi confirmado.\nPode agora [[Special:UserLogin|autenticar-se]] e desfrutar da wiki.",
        "confirmemail_loggedin": "O seu endereço de correio eletrónico foi confirmado.",
        "api-error-badaccess-groups": "Não tem permissão para enviar ficheiros para esta wiki.",
        "api-error-badtoken": "Erro interno: Chave incorrecta.",
        "api-error-copyuploaddisabled": "O carregamento de ficheiros por URL não foi possibilitado neste servidor.",
-       "api-error-duplicate": "Já {{PLURAL:$1|existe [$2 outro ficheiro]|existem [$2 outros ficheiros]}} na wiki com o mesmo conteúdo.",
-       "api-error-duplicate-archive": "Já {{PLURAL:$1|existia no site [$2 outro ficheiro]|existiam no site [$2 alguns outros ficheiros]}} com o mesmo conteúdo, mas {{PLURAL:$1|foi|foram}} eliminados.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Ficheiro duplicado que já foi eliminado|Ficheiros duplicados que já foram eliminados}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Ficheiro duplicado|Ficheiros duplicados}}",
+       "api-error-duplicate": "Já {{PLURAL:$1|existia outro ficheiro|existiam outros ficheiro}} na wiki com o mesmo conteúdo.",
+       "api-error-duplicate-archive": "Já {{PLURAL:$1|estava outro ficheiro|estavam outros ficheiros}} no  site com o mesmo conteúdo, mas {{PLURAL:$1|foi|foram}} eliminados.",
        "api-error-empty-file": "O ficheiro que enviou está vazio.",
        "api-error-emptypage": "Não é permitido criar páginas novas vazias.",
        "api-error-fetchfileerror": "Erro interno: Ocorreu um problema indeterminado ao aceder ao ficheiro.",
        "api-error-stashfailed": "Erro interno: O servidor não conseguiu armazenar o ficheiro temporário.",
        "api-error-publishfailed": "Erro interno: Servidor não conseguiu publicar ficheiro temporário.",
        "api-error-stasherror": "Ocorreu um erro no carregamento do ficheiro escondido.",
-       "api-error-stashedfilenotfound": "O escondido ficheiro não foi encontrado ao tentar carregar a pasta do stash.",
+       "api-error-stashedfilenotfound": "O ficheiro do stash não foi encontrado ao tentar carregá-lo.",
        "api-error-stashpathinvalid": "O caminho no qual o ficheiro escondido deveria ter sido encontrado era inválido.",
        "api-error-stashfilestorage": "Ocorreu um erro no carregamento do ficheiro escondido.",
        "api-error-stashzerolength": "O servidor não pôde esconder o ficheiro, porque ele tinha de comprimento zero.",
        "expand_templates_generate_xml": "Mostrar a árvore de análise sintáctica do XML",
        "expand_templates_generate_rawhtml": "Mostrar o HTML puro",
        "expand_templates_preview": "Antevisão do resultado",
-       "expand_templates_preview_fail_html": "<em>Devido ao fato de {{SITENAME}} possuir código HTML puro ativado e de ter havido perda de dados da sessão, a pré-visualização ficará oculta como precaução contra ataques do JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor tente novamente.</strong> Se não resultar, experimente [[Special:UserLogout|sair]] e iniciar sessão de novo.",
+       "expand_templates_preview_fail_html": "<em>Devido ao fato de {{SITENAME}} possuir código HTML puro ativado e de ter havido perda de dados da sessão, a pré-visualização ficará oculta como precaução contra ataques por JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor tente novamente.</strong> Se ainda não funcionar, experimente [[Special:UserLogout|sair]] e iniciar sessão de novo.",
        "expand_templates_preview_fail_html_anon": "<em>Devido ao fato de {{SITENAME}} possuir código HTML puro ativado e de não ter sessão iniciada, a pré-visualização ficará oculta como precaução contra ataques do JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor [[Especial:UserLogin|inicie sessão]] e tente novamente.</strong>",
        "pagelanguage": "Seletor de idioma da página",
        "pagelang-name": "Página",
index 5b80d63..39ba6db 100644 (file)
        "nstab-template": "The name for the tab of the template namespace. Example: [[Template:Example]]\n\nSee also:\n* {{msg-mw|Nstab-template}}\n* {{msg-mw|Accesskey-ca-nstab-template}}\n* {{msg-mw|Tooltip-ca-nstab-template}}\n{{Identical|Template}}",
        "nstab-help": "The name for the tab of the help namespace. Example: [[Help:Rollback]]\n\nSee also:\n* {{msg-mw|Nstab-help}}\n* {{msg-mw|Accesskey-ca-nstab-help}}\n* {{msg-mw|Tooltip-ca-nstab-help}}",
        "nstab-category": "The name for the tab of the category namespace. Example: [[:Category:Example]]\n\nSee also:\n* {{msg-mw|Nstab-category}}\n* {{msg-mw|Accesskey-ca-nstab-category}}\n* {{msg-mw|Tooltip-ca-nstab-category}}\n{{Identical|Category}}",
-       "mainpage-nstab": "{{notranslate}}",
+       "mainpage-nstab": "This is the name for Main Page tab shown on the Main Page.\n{{Identical|Main Page}}",
        "nosuchaction": "The title of the error you get when trying to open a page with invalid \"action\" parameter. The text of the warning is the message {{msg-mw|nosuchactiontext}}.\n\nSee example [{{canonicalurl:Main_page|action=x}} action=x].",
        "nosuchactiontext": "This error is shown when trying to open a page with invalid \"action\" parameter, e.g. [{{canonicalurl:Main_page|action=x}} action=x].\n* The title of this error is the message {{msg-mw|nosuchaction}}.",
        "nosuchspecialpage": "The title of the error you get when trying to open a special page which does not exist. The text of the warning is the message {{msg-mw|nospecialpagetext}}. Example: [[Special:Nosuchpage]]",
        "permissionserrorstext-withaction": "This message is \"with action\" version of {{msg-mw|Permissionserrorstext}}.\n\nParameters:\n* $1 - the number of reasons that were found why the action cannot be performed\n* $2 - one of the action-* messages (for example {{msg-mw|action-edit}}) or other such messages tagged with {{tl|doc-action}} in their documentation\n\nPlease report at [[Support]] if you are unable to properly translate this message. Also see [[phab:T16246]] (now closed) for background.",
        "recreate-moveddeleted-warn": "Warning shown when creating a page which has already been deleted. See for example [[Test]].",
        "moveddeleted-notice": "Shown on top of a deleted page in normal view modus ([{{canonicalurl:Test}} example]).",
+       "moveddeleted-notice-recent": "Shown on top of a recently deleted page in normal view modus ([{{canonicalurl:Test}} example]).",
        "log-fulllog": "Used as link text.",
        "edit-hook-aborted": "Used as error message.\n\nSee also:\n* {{msg-mw|edit-gone-missing}}\n* {{msg-mw|edit-conflict}}\n* {{msg-mw|edit-no-change}}\n* {{msg-mw|edit-already-exists}}",
        "edit-gone-missing": "Used as error message.\n\nSee also:\n* {{msg-mw|edit-hook-aborted}}\n* {{msg-mw|edit-conflict}}\n* {{msg-mw|edit-no-change}}\n* {{msg-mw|edit-already-exists}}",
        "api-error-badaccess-groups": "API error message that can be used for client side localisation of API errors.",
        "api-error-badtoken": "API error message that can be used for client side localisation of API errors.",
        "api-error-copyuploaddisabled": "API error message that can be used for client side localisation of API errors.",
-       "api-error-duplicate": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files\n* $2 - a link to a list of duplicate files",
-       "api-error-duplicate-archive": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files\n* $2 - a link to a list of duplicate files",
-       "api-error-duplicate-archive-popup-title": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 is a number of files.",
-       "api-error-duplicate-popup-title": "This message is a pop-up title shown in case one or more files exactly equal to the one just uploaded are already present.\n\nThe word \"duplicate\" is an adjective.\n\nParameters:\n* $1 - number of files",
+       "api-error-duplicate": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files",
+       "api-error-duplicate-archive": "API error message that can be used for client side localisation of API errors. Parameters:\n* $1 - a number of files",
        "api-error-empty-file": "API error message that can be used for client side localisation of API errors.",
        "api-error-emptypage": "API error message that can be used for client side localisation of API errors.",
        "api-error-fetchfileerror": "API error message that can be used for client side localisation of API errors.",
index de2d53b..e7d89be 100644 (file)
        "api-error-copyuploaddisabled": "URL nisqawanqa kay sirwiqpi manam churkuyta atinki.",
        "api-error-duplicate": "Kay tiyaypiqa huk {{PLURAL:$1|[$2 willañiqim]|[$2 willañiqikunam]}} kachkanñam kaqlla samiqniyuq kaq.",
        "api-error-duplicate-archive": "Kay tiyaypiqa huk {{PLURAL:$1|[$2 willañiqim]|[$2 willañiqikunam]}} karqanñam kaqlla samiqniyuq kaq, kunantaq qullusqañam.",
-       "api-error-duplicate-archive-popup-title": "Qullusqaña iskaychasqa {{PLURAL:$1|willañiqi|willañiqikuna}}.",
-       "api-error-duplicate-popup-title": "Iskaychasqa {{PLURAL:$1|willañiqi|willañiqikuna}}.",
        "api-error-empty-file": "Kachasqayki willañiqiqa ch'usaqmi.",
        "api-error-emptypage": "Musuq ch'usaq p'anqakunata kamariyqa manam saqillasqachu.",
        "api-error-fetchfileerror": "Ukhupi pantasqa: Willañiqita chaskiykachachkaptiyki ima mana allin kaqpas tukurqan.",
index efc7a1f..d92ea42 100644 (file)
        "api-error-copyuploaddisabled": "La funcziun da transferir dad ina URL è deactivada sin quest server.",
        "api-error-duplicate": "I dat gia {{PLURAL:$1|ina [$2 autra datoteca]|[$2 autras datotecas]}} cun il medem cuntegn.",
        "api-error-duplicate-archive": "I deva gia {{PLURAL:$1|ina [$2 autra datoteca]|[$2 autras datotecas]}} cun il medem cuntegn, {{PLURAL:$1|quella è dentant vegnida stizzada|quellas èn dentant vegnidas stizzadas}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Datoteca dubla ch'è gia vegnida stizzada|Datotecas dublas ch'èn gia vegnidas stizzadas}}.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Datoteca dubla|Datotecas dublas}}.",
        "api-error-empty-file": "La datoteca tramessa è vida.",
        "api-error-emptypage": "Crear paginas novas e vidas n'è betg lubì.",
        "api-error-fetchfileerror": "Errur interna: Insatge n'ha betg funcziunà durant retschaiver la datoteca.",
index b80552f..bf7a1a6 100644 (file)
        "api-error-copyuploaddisabled": "Încărcarea prin URL este dezactivată pe acest server.",
        "api-error-duplicate": "Există {{PLURAL:$1|un [$2 alt fișier]|[$2 alte fișiere]}} deja încărcate cu același conținut.",
        "api-error-duplicate-archive": "{{PLURAL:$1|A existat [$2 un alt fișier]|Au existat [$2 alte fișiere]}} cu același conținut pe site, dar {{PLURAL:$1|a fost|au fost}} șterse.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Fișierul|Fișierele}} {{PLURAL:$1|duplicat|duplicate}} care {{PLURAL:$1|a|au}} fost deja {{PLURAL:$1|șters|șterse}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fișier|Fișiere}} {{PLURAL:$1|duplicat|duplicate}}",
        "api-error-empty-file": "Fișierul încărcat de dumneavoastră este gol.",
        "api-error-emptypage": "Crearea paginilor noi, goale nu este permisă.",
        "api-error-fetchfileerror": "Eroare internă: ceva nu a funcționat corect la prelucrarea fișierului.",
index 0c47b6a..9c0026c 100644 (file)
        "changeemail-password": "'A passuord tue de {{SITENAME}}:",
        "changeemail-submit": "Cange e-mail",
        "changeemail-throttled": "Tu è pruvate troppe vote a trasè.\nPe piacere aspitte $1 apprime de pruvà arrete.",
+       "changeemail-nochange": "Pe piacere mitte 'n'otre indirizze email.",
        "resettokens": "Azzere le gettone",
        "resettokens-text": "Tu puè azzerà le gettone le quale te donne l'accesse a certe date private collegate cu 'u cunde tune aqquà.\n\nTu avissa farle ce pe sbaglie l'è condivise cu otre o ce 'u cunde tune ha state combromesse.",
        "resettokens-no-tokens": "Non ge stonne gettone de azzerà.",
        "htmlform-cloner-create": "Aggiunge 'n'otre",
        "htmlform-cloner-delete": "Live",
        "htmlform-cloner-required": "Almene 'nu valore l'a mettere.",
+       "htmlform-title-badnamespace": "[[:$1]] non ge stè jndr'à 'u namespace \"{{ns:$2}}\".",
        "htmlform-title-not-exists": "[[:$1]] non g'esiste.",
        "htmlform-user-not-exists": "<strong>$1</strong> non g'esiste.",
        "htmlform-user-not-valid": "<strong>$1</strong> non g'è 'nu nome utende valide.",
        "api-error-copyuploaddisabled": "'U carecamende da URL jè disabbilitate sus a stu server.",
        "api-error-duplicate": "{{PLURAL:$1|Stè [$2 'n'otre file]|Stonne [$2 otre file]}} sus a 'u site cu 'u stesse condenute.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Stave [$2 'n'otre file]|Stavane [$2 otre file]}} già sus a 'u site cu 'u stesse condenute, ma {{PLURAL:$1|ha state|onne state}} scangellate.",
-       "api-error-duplicate-archive-popup-title": "Dupliche {{PLURAL:$1|'u file ca ha state|le file ca onne state}} scangellate.",
-       "api-error-duplicate-popup-title": "Dupleche {{PLURAL:$1|file|file}}",
        "api-error-empty-file": "'U file ca tu è confermate ere vacande.",
        "api-error-emptypage": "Quanne se ne ccreje une, le pàggene vacande non ge sò permesse.",
        "api-error-fetchfileerror": "Errore inderne: Quacchecose ha sciute stuèrte quanne ste analizzave 'u file.",
index de75b96..25a198e 100644 (file)
        "api-error-copyuploaddisabled": "Загрузка по URL-адресу отключена на этом сервере.",
        "api-error-duplicate": "Уже {{PLURAL:$1|1=существует [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым",
        "api-error-duplicate-archive": "Раньше на сайте {{PLURAL:$1|1=уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|1=он был удалён|они были удалены}}.",
-       "api-error-duplicate-archive-popup-title": "Дубликаты {{PLURAL:$1|1=файла|файлов}}, которые уже были удалены.",
-       "api-error-duplicate-popup-title": "Дубликат {{PLURAL:$1|1=файла|файлов}}.",
        "api-error-empty-file": "Отправленный вами файл пуст.",
        "api-error-emptypage": "Не допускается создание новых пустых страниц.",
        "api-error-fetchfileerror": "Внутренняя ошибка: что-то пошло не так при получении файла.",
index 68cd2e9..980206f 100644 (file)
        "api-error-copyuploaddisabled": "Наладовованя з URL є на тім сервері заказане.",
        "api-error-duplicate": "На тій вікі уж {{PLURAL:$1|екзістує [$2 другый файл]|екзістують [$2 іншы файлы]}} з такым самым обсягом.",
        "api-error-duplicate-archive": "{{PLURAL:$1|быв [$2 другый файл]|были [$2 даякы другы файлы]}} з такым самым обсягом уж гев оперед {{PLURAL:$1|быв|были}}, але {{PLURAL:$1|быв змазаный|были змазаны}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|дупліцітный файл, якый быв|дупліцітны файл, як были}} змазаны",
-       "api-error-duplicate-popup-title": "Дупліцітны {{PLURAL:$1|файл|файлы}}",
        "api-error-empty-file": "Наладованый файл є порожнїй.",
        "api-error-emptypage": "Створїня новых, порожнїх сторінк неслободно.",
        "api-error-fetchfileerror": "Внутрїшня хыба: трафила ся хыба під час обтриманя файлу.",
index c2a9b0b..d2916a8 100644 (file)
        "api-error-copyuploaddisabled": "अस्मिन् वितारके युआर् एल् द्वारा उत्तारणं निष्क्रियम् ।",
        "api-error-duplicate": "{{PLURAL:$1| [ $2 अन्यसञ्चिकाः] | सन्ति [ $2 काश्चन अन्यसञ्चिकाः]}} एकस्मिन् एव ।",
        "api-error-duplicate-archive": "तत्र {{PLURAL:$1|आसीत् [$2 काश्चन अन्यसञ्चिकाः] |  [$2काचन अन्यसञ्चिकाः]}}, पूर्वमेव {{PLURAL:$1|यह was|they आसन्}} किन्तु अपनीताः ।",
-       "api-error-duplicate-archive-popup-title": "द्विप्रतिः {{PLURAL:$1| सञ्चिका |सञ्चिकाः}} पूर्वमेव अपमर्जिताः ।",
-       "api-error-duplicate-popup-title": "द्विप्रतिः {{PLURAL:$1| सञ्चिका| सञ्चिकाः}}",
        "api-error-empty-file": "समर्पिता सञ्चिका रिक्ता आसीत् ।",
        "api-error-emptypage": "नूतनस्य रिक्तस्य पृष्ठस्य सर्जनं निषिद्धम् ।",
        "api-error-fetchfileerror": "आन्तरिकदोषः : सञ्चिकायाः प्राप्त्यवसरे कश्चन दोषः जातः ।",
index a99505a..657e867 100644 (file)
        "api-error-copyuploaddisabled": "URL көмөтүнэн киллэрии бу сиэрбэргэ араарыллыбыт.",
        "api-error-duplicate": "Маннык иһинээҕилээх {{PLURAL:$1|[$2 атын билэ] баар эбит}}",
        "api-error-duplicate-archive": "Урут ситим-сиргэ маннык иһинээҕилээх {{PLURAL:$1|[$2 билэ] баар |[$2 билэлэр] бааллар}} этэ, ол гынан баран {{PLURAL:$1|сотуллубута|сотуллубуттара}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Билэ|Билэлэр}} сотуллубут дубликааттара",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Билэ|Билэлэр}} дубликааттара.",
        "api-error-empty-file": "Ыыппыт билэҥ кураанах.",
        "api-error-emptypage": "Саҥа кураанах сирэйи оҥорор табыллыбат.",
        "api-error-fetchfileerror": "Ис алҕас: билэни ыларга туох эрэ сатаммата.",
index 06b1506..3748b83 100644 (file)
                        "Taxandru"
                ]
        },
-       "tog-underline": "Sutalìnia sos ligòngios",
+       "tog-underline": "Sutalìnia sos ligàmenes",
        "tog-hideminor": "Cua is acontzos minores in sa pàgina de is ùrtimas mudàntzias",
        "tog-hidepatrolled": "Cua is mudas verificadas in is ùrtimos càmbios",
        "tog-newpageshidepatrolled": "Cua sas pàginas verificadas dae sa lista de sas pàginas noas",
-       "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totus sos càmbios, non sos prus reghentes ebbia",
+       "tog-extendwatchlist": "Ammània sa watchlist pro ammustrare totu sos càmbios, non sos prus reghentes ebbia",
        "tog-usenewrc": "Pone in pare sos càmbios de cada pàgina in sos ùrtimos càmbios e in sa watchlist",
        "tog-numberheadings": "Auto-numeratzione de sos tìtulos",
        "tog-showtoolbar": "Ammustra sa mustra de sa barra de sas ainas",
        "tog-editondblclick": "Càmbia pàginas cun duos click",
        "tog-editsectiononrightclick": "Abìlita su càmbiu de sas setziones cun click de dereta in sos tìtulos de sas setziones",
-       "tog-watchcreations": "Annanghe is pàginas chi apo creadu e is documentos chi apo carrigadu in sa lista de pàginas annotadas mea",
+       "tog-watchcreations": "Annanghe is pàginas chi apo creadu e is documentos chi apo carrigadu in sa lista mea de pàginas annotadas",
        "tog-watchdefault": "Annanghe pàginas e documentos chi apo cambiadu in sa lista de pàginas annotadas mea",
        "tog-watchmoves": "Annanghe pàginas e documentos chi apo mòvidu in sa lista de pàginas annotadas mea",
        "tog-watchdeletion": "Annanghe pàginas e documentos chi apo burradu in sa lista de pàginas annotadas mea",
        "tog-watchrollback": "Pone is pàginas innue apo fatu su rollback in is pàginas annotadas",
-       "tog-minordefault": "Marca comente minores pro difetu totus sos càmbios",
+       "tog-minordefault": "Marca comente minores pro difetu totu sos càmbios",
        "tog-previewontop": "Ammustra s'anteprima in subra de sa casella de càmbiu e no in suta",
        "tog-previewonfirst": "Ammustra s'anteprima pro sa prima muda",
        "tog-enotifwatchlistpages": "Imbia·mi una post.el. cando b'at àpidu unu càmbiu in una pàgina o in unu documentu de sa watchlist mea",
        "tog-enotifrevealaddr": "Faghe ischire s'indiritzu de sa post.el. mea in sas notìficas de sa post.els",
        "tog-shownumberswatching": "Ammustra su nùmeru de is impitadores chi ant annotadu sa pàgina",
        "tog-oldsig": "Firma atuale:",
-       "tog-fancysig": "Trata sa firma comente unu testu wiki (sena ligòngios automàticos)",
+       "tog-fancysig": "Trata sa firma comente unu testu wiki (sena ligàmenes automàticos)",
        "tog-uselivepreview": "Imprea sa funtzione \"anteprima bia\" (isperimentale)",
        "tog-forceeditsummary": "Averte·mi si su campu ogetu est bòidu",
-       "tog-watchlisthideown": "Cua sas mudas meas dae sa watclist",
+       "tog-watchlisthideown": "Cua sas modìficas meas dae sa watclist",
        "tog-watchlisthidebots": "Cua sas mudas de sos bots dae sa watchlist",
        "tog-watchlisthideminor": "Cua sos càmbios minores dae sa watchlist",
-       "tog-watchlisthideliu": "Cua is càmbios de is impitadores identificados dae sa lista de pàginas annotadas",
+       "tog-watchlisthideliu": "Cua is càmbios de is utentes identificados dae sa lista de pàginas annotadas",
        "tog-watchlisthideanons": "Cua is càmbios de is impitadores anònimos dae sa lista de pàginas annotadas",
        "tog-watchlisthidepatrolled": "Cua mudas verificadas dae sa watchlist",
-       "tog-ccmeonemails": "Imbia·mi sas còpias de is emails chi imbio a is àteros impitadores",
-       "tog-diffonly": "No ammustras su cuntènnidu de sa pàgina a pustis de sa bisura de is diferèntzias",
+       "tog-ccmeonemails": "Imbia·mi sas còpias de is post.els chi imbio a is àteros utentes",
+       "tog-diffonly": "No ammustras su cuntenutu de sa pàgina a pustis de sa bisura de is diferèntzias",
        "tog-showhiddencats": "Ammustra sas categorias cuadas",
        "tog-norollbackdiff": "Cua sa bisura de is diferèntzias a pustis de su rollback",
-       "tog-useeditwarning": "Averte·mi si lassu una pàgina cun càmbios sena de sarbare",
+       "tog-useeditwarning": "Averte·mi si lasso una pàgina cun modìficas sena sarvadas",
        "tog-prefershttps": "Imprea semper una lìnia segura candu fatzo s'intrada.",
        "underline-always": "Semper",
        "underline-never": "Mai",
        "underline-default": "Definitziones dae su navigadore tuo",
-       "editfont-style": "Istile de sos caràteres in s'àrea de càmbiu:",
+       "editfont-style": "Istile de sos caràteres in s'àrea de modìfica:",
        "editfont-default": "Definidu dae su navigadore",
        "editfont-monospace": "Caràtere monospàtziu",
        "editfont-sansserif": "Caràtere sena gràtzias",
        "category-empty": "''In custa categoria non ddu at peruna pàgina o documentu multimediale.''",
        "hidden-categories": "{{PLURAL:$1|Categoria cuada|Categorias cuadas}}",
        "hidden-category-category": "Categorias cuadas",
-       "category-subcat-count": "{{PLURAL:$2|Custa categoria cuntennet un'ùnica sutacategoria ammustrada in suta.|Custa categoria cuntenet {{PLURAL:$1|sa sutacategoria indicada|$1 sutacategorias indicadas}} in suta, dae $2 in totu.}}",
+       "category-subcat-count": "{{PLURAL:$2|Custa categoria cuntenet un'ùnica sutacategoria ammustrada in suta.|Custa categoria cuntenet {{PLURAL:$1|sa sutacategoria indicada|$1 sutacategorias inditadas}} in suta, dae $2 in totu.}}",
        "category-subcat-count-limited": "Custa categoria tenet {{PLURAL:$1|una sutacategoria, ammustrada|$1 sutacategorias, ammustradas}} in suta.",
        "category-article-count": "{{PLURAL:$2|Custa categoria cuntenet feti sa pàgina chi sighit.|Custa categoria cuntenet {{PLURAL:$1|sa pàgina indicada|is $1 pàginas indicadas}} in suta, dae unu totale de $2.}}",
        "category-article-count-limited": "{{PLURAL:$1|Sa pàgina chi sighit est|Is $1 pàginas chi sighint sunt}} in custa categoria.",
        "moredotdotdot": "Àteru…",
        "morenotlisted": "Sa lista no est cumpreta",
        "mypage": "Pàgina",
-       "mytalk": "Cuntierras mias",
+       "mytalk": "Cuntierras meas",
        "anontalk": "Cuntierras pro custu indiritzu IP",
        "navigation": "Navigatzione",
        "and": "&#32;e",
        "history_short": "Istòria",
        "updatedmarker": "atualizada dae s'ùrtima vìsita mea",
        "printableversion": "Versione de imprenta",
-       "permalink": "Ligòngiu permanente",
+       "permalink": "Ligàmene permanente",
        "print": "Imprenta",
        "view": "Ammustra",
        "view-foreign": "Ammustra in $1",
        "edit-local": "Càmbia sa descritzione locale",
        "create": "Crea",
        "create-local": "Annanghe descritzione locale",
-       "editthispage": "Càmbia custa pàgina",
+       "editthispage": "Modìfica custa pàgina",
        "create-this-page": "Crea custa pàgina",
        "delete": "Burra",
        "deletethispage": "Burra custa pàgina",
        "protect_change": "càmbia",
        "protectthispage": "Ampara custa pàgina",
        "unprotect": "Muda amparu",
-       "unprotectthispage": "Muda amparu de custa pàgina",
+       "unprotectthispage": "Càmbia amparu de custa pàgina",
        "newpage": "Pàgina noa",
        "talkpage": "Pàgina de cuntierra",
        "talkpagelinktext": "Cuntierra",
        "personaltools": "Ainas personales",
        "articlepage": "Càstia s'artìculu",
        "talk": "Cuntierras",
-       "views": "Bìsitas",
+       "views": "Vìsitas",
        "toolbox": "Ainas",
        "userpage": "Càstia sa pàgina impitadore",
        "projectpage": "Càstia sa pàgina meta",
        "jumptosearch": "chirca",
        "view-pool-error": "Tene passèntzia, sos servidores sunt càrrigos de traballu.\nIn medas chircant de castiare custa pàgina.\nPro praghere, torra a tenteare posca.\n\n$1",
        "generic-pool-error": "Tene passèntzia, sos servidores sunt càrrigos de traballu.\nIn medas chircant de castiare custa risorsa.\nPro praghere, torra a provare luego.",
-       "pool-timeout": "Timeout abetende pro s'arreu",
+       "pool-timeout": "Timeout isetende pro s'arreu",
        "pool-queuefull": "Sa coa pro su traballu de su protzessu est prena",
        "pool-errorunknown": "Faddina disconnota",
        "pool-servererror": "Su servìtziu de contadore de su protzessu no est disponìbile ($1).",
        "newmessageslinkplural": "{{PLURAL:$1|unu messàggiu nou|999=messàggios noos}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|ùrtima muda|999=ùrtimas mudàntzias}}",
        "youhavenewmessagesmulti": "Tenes messàgios noos in $1",
-       "editsection": "càmbia",
-       "editold": "càmbia",
+       "editsection": "modìfica",
+       "editold": "modìfica",
        "viewsourceold": "càstia testu codificadu",
-       "editlink": "càmbia",
+       "editlink": "modìfica",
        "viewsourcelink": "càstia testu codificadu",
        "editsectionhint": "Càmbia sa setzione: $1",
-       "toc": "Cuntènnidu",
+       "toc": "Cuntenutu",
        "showtoc": "ammustra",
        "hidetoc": "cua",
        "collapsible-collapse": "Serra e istringhe",
        "sort-descending": "Òrdine in falada",
        "sort-ascending": "Òrdine in artziada",
        "nstab-main": "Pàgina",
-       "nstab-user": "Pàgina impitadore",
+       "nstab-user": "Pàgina utente",
        "nstab-media": "Documentu multimediale",
        "nstab-special": "Pàgina ispetziale",
        "nstab-project": "Pàgina de servìtziu",
-       "nstab-image": "Documentu",
+       "nstab-image": "Archìviu",
        "nstab-mediawiki": "Messàgiu",
-       "nstab-template": "Template",
+       "nstab-template": "Modellu",
        "nstab-help": "Agiudu",
        "nstab-category": "Categoria",
        "nosuchaction": "No esistit custa atzione",
        "databaseerror-function": "Funtzione: $1",
        "databaseerror-error": "Faddina: $1",
        "laggedslavemode": "<strong>Atentzione:</strong> Sa pàgina podet non cuntènnere sos agiornamentos prus novos.",
-       "readonly": "Database bloccadu",
+       "readonly": "Database blocadu",
        "enterlockreason": "Inserta su motivu de su blocu, ispetzifichende su momentu probàbile chi su blocu at a acabbare",
        "readonlytext": "In custu momentu su database est bloccadu dae aciunturas e àteras modificas, probabilmente pro ordinaria manutentzione a su database, a pustis de custas at a èssere normale torra.\n\nS'amministradore chi dd'at bloccadu at donadu custa ispiegatzione: $1",
        "missing-article": "Su database no at agatadu su testu de una pàgina chi diat àere agatadu a suta de su nùmene \"$1\" $2.\n\nCustu a su sòlitu si verìficat cando bi est unu ligòngiu in s'istòria o in unu cunfrontu intre revisiones de una pàgina chi est istada fuliada.\n\nSi no est custu su casu, s'est agatada una faddina de su software.\nPro praghere signa s'acontèssidu a unu [[Special:ListUsers/sysop|amministradore]] ispetzifichende su URL de sa faddina.",
        "filerenameerror": "No est stadu possìbile re-numenare su file \"$1\" in \"$2\".",
        "filedeleteerror": "No est stadu possìbile cantzellare su file \"$1\".",
        "directorycreateerror": "Non si podet creare sa directory \"$1\".",
-       "filenotfound": "No est stadu possìbile agatare \"$1\".",
+       "filenotfound": "No est istadu possìbile a agatare \"$1\".",
        "unexpected": "Valore non previstu: \"$1\"=\"$2\".",
-       "formerror": "Errore: impossìbile imbiare su modellu",
+       "formerror": "Errore: impossìbile imbiare su modellu",
        "badarticleerror": "Operatzione non cunsentida pro custa pàgina.",
-       "cannotdelete": "No est stadu possìbile burrare sa pàgina o su file \"$1\".\nPodet èsser stadu burradu dae calicunu àteru.",
+       "cannotdelete": "No est istadu possìbile a burrare sa pàgina o su file \"$1\".\nPodet èsser stadu burradu dae calicunu àteru.",
        "cannotdelete-title": "Impossìbile burrare sa pàgina \"$1\"",
-       "delete-hook-aborted": "Sa burradura est istada annuddada dae su hook de s'estensione.\nNo est istadu datu acrarimentu.",
+       "delete-hook-aborted": "Sa burradura est istada annullada dae su hook de s'estensione.\nNo est istadu dadu acrarimentu.",
        "no-null-revision": "Non si podet creare una versione lulla pro sa pàgina \"$1\"",
        "badtitle": "Tìtulu malu",
        "badtitletext": "Su tìtulu de sa pàgina chi as pregontadu est bùidu, isballiadu, o iscritu in is cullegamentus inter-wiki a manera non currègia.\nPodet cuntènnere uno o unos cantos caràteres no ammìtidos pro is tìtulos.",
        "perfcached": "Is datos chi sighint sunt in sa memòria \"cache\" e podent èessere no agiornados. Unu màssimu de {{PLURAL:$1|unu resurtu est disponìbile|$1 resurtos sunt disponìbiles}} in sa memòria",
        "perfcachedts": "Is datos chi sighint sunt in sa memòria \"cache\", s'ùrtimu agiornamentu est de su $2 a is $3. Unu màssimu de {{PLURAL:$4|unu resurtu est disponìbile|$4 resurtos sunt disponìbiles}} in sa memòria",
        "querypage-no-updates": "Sos agiornamentos pro custa pàgina sunt temporaneamente sessadas.\nSos datos suos no ant a èssere agiornados.",
-       "viewsource": "Càstia mitza",
-       "viewsource-title": "Càstia sa mitza de $1",
+       "viewsource": "Càstia còdighe de orìgine",
+       "viewsource-title": "Càstia su còdighe de orìgine de $1",
        "actionthrottled": "Atzione rimandada",
        "actionthrottledtext": "Comente mesura de seguràntzia contra a s'ispam, non podes torrare a fàghere custa atzione tropu ispissu in unu tempus tropu curtzu, e tue as cabuladu custu lìmide.\nPro piaghere torra a proare a pustis de carchi minutos.",
        "protectedpagetext": "Custa pàgina est istada amparada pro nde prevenner su càmbiu o àteras fatas.",
        "exception-nologin-text": "Pro atzèdere a custa pàgina o atzione est netzessàriu a ti identificare.",
        "exception-nologin-text-manual": "Pro piaghere $1 pro pòder'atzèdere a custa pàgina o atzione.",
        "virus-badscanner": "Faddina de configuratzione: antivirus disconnotu: <em>$1</em>",
-       "virus-scanfailed": "scansione faddida (còdixe $1)",
+       "virus-scanfailed": "iscansione faddida (còdighe $1)",
        "virus-unknownscanner": "antivirus disconnotu:",
        "logouttext": "<strong>As acabadu sa sessione.</strong>\n\nTene contu ca is pàginas ki sunt giai abertas in àteras bentanas podent sighire a pàrrer comente cando fias identificadu, fintzas a cando non ddas renfriscas dae su browser tuo.",
-       "welcomeuser": "Benénnidu, $1!",
+       "welcomeuser": "Bene bènnidu, $1!",
        "welcomecreation-msg": "Su contu tuo est istadu creadu.\nSi boles podes cambiare is [[Special:Preferences|prefèntzias tuas]] pro {{SITENAME}}",
-       "yourname": "Nùmene impitadore:",
-       "userlogin-yourname": "Nùmene impitadore",
-       "userlogin-yourname-ph": "Inserta su nùmene impitadore tuo",
-       "createacct-another-username-ph": "Inserta su nùmene impitadore:",
+       "yourname": "Nùmene utente:",
+       "userlogin-yourname": "Nùmene utente",
+       "userlogin-yourname-ph": "Inseri su nùmene utente tuo",
+       "createacct-another-username-ph": "Inserta su nùmene utente:",
        "yourpassword": "Password:",
        "userlogin-yourpassword": "Password",
        "userlogin-yourpassword-ph": "Inserta sa password tua",
        "userlogin-resetpassword-link": "As ismentigadu sa password?",
        "userlogin-helplink2": "Agiudu pro s'atzessu",
        "userlogin-createanother": "Crea un àteru contu",
-       "createacct-emailrequired": "Indirutzu Email",
-       "createacct-emailoptional": "Indiritzu email (optzionale)",
-       "createacct-email-ph": "Inserta s'indiritzu email tuo",
-       "createacct-another-email-ph": "Inserta s'indiritzu email",
-       "createaccountmail": "Imprea una password a sorte e ispedidda a su indiritzu email ispetzificadu",
+       "createacct-emailrequired": "Indirutzu Post.el",
+       "createacct-emailoptional": "Indiritzu post.el (optzionale)",
+       "createacct-email-ph": "Inserta s'indiritzu post.el tuo",
+       "createacct-another-email-ph": "Inserta s'indiritzu post.el",
+       "createaccountmail": "Imprea una password a sorte e ispedidda a su indiritzu post.el ispetzificadu",
        "createacct-realname": "Nùmene beru (optzionale)",
        "createaccountreason": "Motivu:",
        "createacct-reason": "Motivu",
-       "createacct-reason-ph": "Proite ses creande un àteru contu",
+       "createacct-reason-ph": "Pro ite ses creende un àteru contu",
        "createacct-captcha": "Còmpudu de siguresa",
-       "createacct-imgcaptcha-ph": "Inserta su testu chi bides aissusu",
+       "createacct-imgcaptcha-ph": "Inseri su testu chi ses bidende in artu",
        "createacct-submit": "Crea su contu tuo",
        "createacct-another-submit": "Crea un àteru contu",
        "createacct-benefit-heading": "{{SITENAME}} est òpera de gente che tue.",
        "passwordreset-emaildisabled": "Is funtzionalidades de email sunt istadas disabilitadas in custa wiki.",
        "passwordreset-username": "Nùmene impitadore:",
        "passwordreset-domain": "Domìniu:",
-       "passwordreset-capture": "Ammustrare su cuntènnidu de sa email?",
+       "passwordreset-capture": "Ammustrare su cuntenutu de sa email?",
        "passwordreset-email": "Indiritzu email:",
        "passwordreset-emailtitle": "Particulares de s'impitadore in {{SITENAME}}",
-       "passwordreset-emailelement": "Nùmene impitadore: \n$1\n\nPassword temporànea: \n$2",
+       "passwordreset-emailelement": "Nùmene utente: \n$1\n\nPassword temporànea: \n$2",
        "changeemail": "Càmbia indiritzu email",
        "changeemail-oldemail": "Indiritzu email atuale:",
        "changeemail-newemail": "Indiritzu email nou:",
        "subject": "Tema/tìtulu:",
        "minoredit": "Custu est unu càmbiu minore",
        "watchthis": "Annota custa pàgina",
-       "savearticle": "Sarba sa pàgina",
+       "savearticle": "Sarva sa pàgina",
        "preview": "Antiprima",
        "showpreview": "Ammustra s'antiprima",
        "showdiff": "Ammustra is càmbios",
-       "anoneditwarning": "<strong>Atentzione:</strong> Non ses identificadu.\nS'indiritzu IP tuo at a èssere annòtidu si faghes unos cantos càmbios. Si <strong>idendificas</strong> tibe o <strong>[$2 creas unu contu]</strong>, is càmbios tuos ant a esser marcados cun su nùmene impitadore tuo, paris a àteros giuamentos.",
+       "anoneditwarning": "<strong>Atentzione:</strong> Non ses identificadu.\nS'indiritzu IP tuo at a èssere annotadudu si faghes unos cantos càmbios. Si <strong>identìficas</strong> tibe o <strong>[$2 creas unu contu]</strong>, is càmbios tuos ant a èssere marcados cun su nùmene utente tuo, paris a àteros giuamentos.",
        "anonpreviewwarning": "''Non ses identificadu. Sarvende s'indiritzu IP tuo at a èssere registradu in s'istòria de sa pàgina.''",
        "missingcommenttext": "Inserta unu cummentu inoghe suta.",
        "summary-preview": "Antiprima ogetu:",
        "postedit-confirmation-saved": "Su càmbiu tuo est istadu sarbadu.",
        "edit-already-exists": "No est possìbile creare una pàgina noa.\nEsistit giai.",
        "defaultmessagetext": "Testu de su messàgiu predeterminadu",
-       "invalid-content-data": "Datos de cuntènnidu invàlidos",
-       "content-not-allowed-here": "Cuntènnidu a manera \"$1\" no adduidu in sa pàgina [[$2]]",
+       "invalid-content-data": "Datos de cuntenutu invàlidos",
+       "content-not-allowed-here": "Cuntenutu a manera \"$1\" no adduidu in sa pàgina [[$2]]",
        "editwarning-warning": "S'essida dae custa pàgina diat pòdere cajonare sa pèrdida de totus sos càmbios chi as fatu.\nSi ses autentificadu, podes disabilitare custu avisu in sa setzione \"{{int:prefs-editing}}\" de sas preferèntzias tuas.",
        "editpage-notsupportedcontentformat-title": "Formadu de càbidu non suportadu",
        "content-model-wikitext": "wikitestu",
        "revdelete-selected-file": "{{PLURAL:$1|Versione seletzionada|Versiones seletzionadas}} de su documentu [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Acadessimentu de su registru seletzionadu|Acadessimentos de su registru seletzionadu}}:",
        "revdelete-hide-text": "Testu de sa versione",
-       "revdelete-hide-image": "Cua su cuntènnidu de su documentu",
+       "revdelete-hide-image": "Cua su cuntenutu de su documentu",
        "revdelete-hide-comment": "Modìfica s'ogetu",
        "revdelete-radio-same": "(non cambiare)",
        "revdelete-radio-set": "Cua",
        "difference-multipage": "(Diferèntzias intre pàginas)",
        "lineno": "Lìnia $1:",
        "compareselectedversions": "Cumpara versiones scioberadas",
-       "editundo": "annudda",
+       "editundo": "annulla",
        "diff-empty": "(Diferèntzia peruna)",
        "searchresults": "Resurtados de sa chirca",
        "searchresults-title": "Resurtados pro sa chirca de \"$1\"",
        "viewprevnext": "Càstia ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "<strong>Ddu est una pàgina tzerriada \"[[:$1]]\" in custa wiki.</strong> {{PLURAL:$2|0=|Càstia puru is àteros resurtados de sa chirca.}}",
        "searchmenu-new": "<strong>Crea sa pàgina \"[[:$1]]\" in custa wiki!</strong> {{PLURAL:$2|0=|Càstia fintzas sa pàgina agatada cun sa chirca tua|Càstia fintzas is resurtados de sa chirca}}",
-       "searchprofile-articles": "Pàginas de càbidos",
+       "searchprofile-articles": "Pàginas de cuntenutos",
        "searchprofile-images": "Multimèdia",
        "searchprofile-everything": "Totue",
        "searchprofile-advanced": "Avantzada",
        "right-undelete": "Restaurare una pàgina",
        "right-suppressionlog": "Càstia is registros privados",
        "right-siteadmin": "Bloccare e sbloccare su database",
-       "newuserlogpage": "Impitadores nous",
+       "newuserlogpage": "Utentes noos",
        "rightslog": "Deretos de is impitadores",
        "action-read": "lègher custa pàgina",
        "action-edit": "cambiare custa pàgina",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|dae s'ùrtima bisita}}",
        "enhancedrc-history": "istòria",
        "recentchanges": "Ùrtimas mudàntzias",
-       "recentchanges-legend": "Optziones subra ùrtimas mudàntzias",
+       "recentchanges-legend": "Optziones subra ùrtimos càmbios",
        "recentchanges-summary": "Sighi is ùrtimas mudàntzias a sa wiki in custa pàgina.",
        "recentchanges-feed-description": "Sighi is ùrtimas mudàntzias a sa wiki cun custu feed.",
-       "recentchanges-label-newpage": "Custu càmbiu at creadu una pàgina noa",
-       "recentchanges-label-minor": "Custu est unu càmbiu minore",
-       "recentchanges-label-bot": "Custu càmbiu est istadu fatu dae unu bot",
+       "recentchanges-label-newpage": "Custa modìfica at creadu una pàgina noa",
+       "recentchanges-label-minor": "Custa est una modìfica minore",
+       "recentchanges-label-bot": "Custa modìfica l'at fata unu bot",
        "recentchanges-label-unpatrolled": "Custu càmbiu no est istadu cumprobadu",
-       "recentchanges-label-plusminus": "Sa muda de sa mannesa de sa pàgina dae su nùmeru de bytes",
+       "recentchanges-label-plusminus": "Su càmbiu de sa mannària de sa pàgina dae su nùmeru de bytes",
        "recentchanges-legend-heading": "'''Legenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (càstia [[Special:NewPages|is pàginas noas]])",
        "rcnotefrom": "{{PLURAL:$5|Sa chi sighit est sa mudàntzia|Is chi sighint sunt is mudàntzias}} dae <strong>$3, $4</strong> (ammustradas fintzas a <strong>$1</strong>).",
-       "rclistfrom": "Ammustra mudàntzias dae $3 $2",
+       "rclistfrom": "Ammustra càmbios dae $3 $2",
        "rcshowhideminor": "$1 is càmbios minores",
        "rcshowhideminor-show": "Ammustra",
        "rcshowhideminor-hide": "Cua",
        "rcshowhidebots": "$1 is bots",
        "rcshowhidebots-show": "Ammustra",
        "rcshowhidebots-hide": "Cua",
-       "rcshowhideliu": "$1 is impitadores identificados",
+       "rcshowhideliu": "$1 is utentes identificados",
        "rcshowhideliu-show": "Ammustra",
        "rcshowhideliu-hide": "Cua",
-       "rcshowhideanons": "$1 is impitadores anònimos",
+       "rcshowhideanons": "$1 is utentes anònimos",
        "rcshowhideanons-show": "Ammustra",
        "rcshowhideanons-hide": "Cua",
        "rcshowhidepatr": "$1 càmbios cumprobados",
        "rcshowhidepatr-show": "Ammustra",
        "rcshowhidepatr-hide": "Cua",
-       "rcshowhidemine": "$1 is càmbios mios",
+       "rcshowhidemine": "$1 is modìficas meas",
        "rcshowhidemine-show": "Ammustra",
        "rcshowhidemine-hide": "Cua",
        "rclinks": "Ammustra is ùrtimas $1 mudàntzias fatas in is ùrtimas $2 dies<br />$3",
        "listfiles-latestversion": "Versione atuale",
        "listfiles-latestversion-yes": "Eja",
        "listfiles-latestversion-no": "No",
-       "file-anchor-link": "File",
-       "filehist": "Stòria de su file",
+       "file-anchor-link": "Archìviu",
+       "filehist": "Istòria de su file",
        "filehist-help": "Carca unu grupu data/ora pro castiare su file comente si presentada in su tempus indicadu.",
        "filehist-deleteall": "fùlia totu",
        "filehist-deleteone": "cantzella",
        "filehist-thumb": "Miniatura",
        "filehist-thumbtext": "Miniatura de sa versione de is $1",
        "filehist-nothumb": "Peruna miniatura",
-       "filehist-user": "Impitadore",
+       "filehist-user": "Utente",
        "filehist-dimensions": "Dimensiones",
        "filehist-filesize": "Mannesa de su file",
-       "filehist-comment": "Cummentu",
+       "filehist-comment": "Cumentu",
        "imagelinks": "Ligant a custu file",
        "linkstoimage": "{{PLURAL:$1|Sa pàgina chi sighit ligat|Is $1 pàginas chi sighint ligant}} a custu file:",
        "nolinkstoimage": "Peruna pàgina ligat a custu file.",
        "created": "creada",
        "deletepage": "Fùlia pàgina",
        "confirm": "Cunfima",
-       "excontent": "su cuntènnidu fiat: '$1'",
-       "excontentauthor": "su cuntènnidu fiat: '$1' (e s'ùnicu contribudore fiat '[[Special:Contributions/$2|$2]]')",
+       "excontent": "su cuntenutu fiat: '$1'",
+       "excontentauthor": "su cuntenutu fiat: '$1' (e s'ùnicu contribudore fiat '[[Special:Contributions/$2|$2]]')",
        "delete-confirm": "Fùlia \"$1\"",
        "delete-legend": "Fuliare",
        "confirmdeletetext": "Ses acanta de burrare una pàgina cun totu su stòria sua.\nPro praxere, cunfirma ca est intentzione tua fàgher custu, ca connosches is cosseguèntzias de s'atzione tua, a ca custa est cunforma a is [[{{MediaWiki:Policy-url}}|lìnias polìticas]].",
        "undelete-search-submit": "Chirca",
        "undelete-show-file-submit": "Eja",
        "namespace": "Nùmene-logu:",
-       "invert": "Fùrria sa seletzione",
+       "invert": "Inverti sa seletzione",
        "namespace_association": "Nùmene-logu assotziadu",
        "blanknamespace": "(Printzipale)",
-       "contributions": "Contributos {{GENDER:$1|impitadore}}",
+       "contributions": "Cuntributos {{GENDER:$1|utente}}",
        "contributions-title": "Contributziones de $1",
        "mycontris": "Contributos mios",
        "contribsub2": "Pro {{GENDER:$3|$1}} ($2)",
        "blocklink": "arrea",
        "unblocklink": "sblocca",
        "change-blocklink": "tramuda s'arreu",
-       "contribslink": "contributos",
+       "contribslink": "cuntributos",
        "emaillink": "imbia email",
        "blocklogpage": "Bloccos de impitadores",
        "blocklogentry": "bloccau [[$1]] pro unu tempu de $2 $3",
        "move-page": "Movimentu de $1",
        "move-page-legend": "Movimentu pàgina",
        "movepagetext": "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.\nSu tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.\nPodes agiornare automaticamente is redirects ca ligant a su tìtulu originàriu.\nSi sèberas de no, assicura·ti de controllare pro [[Special:DoubleRedirects| reindiritzaduras dòpias]] o [[Special:BrokenRedirects|sballiadas]].\nSes responsàbile de t'assigurare ca is cullegamentos sighint a puntare  a ue depent puntare.\n\nAnnota ca sa pàgina <strong>non</strong> s'at a mòver si nde esistit giai un'àtera a su tìtulu nou, si no est ki siat bùida o cun sceti unu reindiritzamentu a sa bècia e siat chentza acontzos in antis. In casu de movimentu sballiadu, duncas, si podet torrare a su tìtulu bèciu, ma non podes subrascrìer una pàgina chi giai esistit.\n\n<strong>ATENTZIONE!</strong>\nUnu cambiamentu dràsticu podet creare problemas, mescamente a is pàginas prus populares;\npro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sighire a in antis.",
-       "movepagetalktext": "Sa pàgina cuntierras asotziada, chi esistit, at a èssere movida automaticamenti impare a sa pàgina base, '''a parte in custos casos''':\n* su movimentu de sa pàgina est intre namespaces diversos;\n* in currispondèntzia de su tìtulu nou esistit giai una pàgina de cuntierras (non bùida);\n* sa casella inoe in bàsciu no est istata sceberada.\n\nIn custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
+       "movepagetalktext": "Sa pàgina cuntierras asotziada, chi esistit, at a èssere movida automaticamenti impare a sa pàgina base, '''a parte in custos casos''':\n* su movimentu de sa pàgina est intre namespaces diversos;\n* in currispondèntzia de su tìtulu nou esistit giai una pàgina de cuntierras (non bùida);\n* sa casella inoe in bàsciu no est istata sceberada.\n\nIn custos casos, si cheres, depes mòvere a manu su cuntenutu de sa pàgina.",
        "movearticle": "Move sa pàgina",
        "movenologintext": "Depes èsser unu impitadore registradu e [[Special:UserLogin|identificadu]] pro pòder mòver una pàgina",
        "newtitle": "Tìtulu nou:",
        "allmessages-language": "Limba:",
        "allmessages-filter-submit": "Bae",
        "allmessages-filter-translate": "Tradui",
-       "thumbnail-more": "Amannia",
+       "thumbnail-more": "Ismànnia",
        "thumbnail_error": "Faddina creande sa miniatura: $1",
        "import-interwiki-sourcewiki": "Wiki de orìgine:",
        "import-interwiki-sourcepage": "Pàgina de orìgine:",
        "importstart": "Importande is pàginas...",
        "import-revision-count": "$1 {{PLURAL:$1|revisione|revisiones}}",
        "importlogpage": "Importatziones",
-       "tooltip-pt-userpage": "Sa pàgina impitadore tua",
+       "tooltip-pt-userpage": "Sa pàgina utente tua",
        "tooltip-pt-mytalk": "Sa pàgina de is cuntierras tuas",
        "tooltip-pt-preferences": "Is preferèntzias chi podes seberare",
        "tooltip-pt-watchlist": "Lista de is pàginas annotadas dae tue pro is mudàntzias",
        "tooltip-pt-mycontris": "Sa lista de is contributos mios",
        "tooltip-pt-login": "Sa registratzione est cussigiada; mancari chi non siat obligatoria",
        "tooltip-pt-logout": "Essida (log out)",
-       "tooltip-ca-talk": "Cuntierras a propòsitu de su cuntestu de sa pàgina",
-       "tooltip-ca-edit": "Podes modificare custa pàgina.\nPro praghere, prima de sarbare càstia s'antiprima",
-       "tooltip-ca-addsection": "Incumentza una setzione noa",
+       "tooltip-ca-talk": "Cuntierras a propòsitu de su cuntenutu de sa pàgina",
+       "tooltip-ca-edit": "Podes modificare custa pàgina.\nPro praghere, in antis de sarvare càstia s'anteprima",
+       "tooltip-ca-addsection": "Incumintza una setzione noa",
        "tooltip-ca-viewsource": "Sa pàgina est bardada.\nPodes castiare sa mitza sua",
        "tooltip-ca-history": "Versiones coladas de custa pàgina",
        "tooltip-ca-protect": "Barda custa pàgina",
        "tooltip-ca-delete": "Burra custa pàgina",
        "tooltip-ca-move": "Move custa pàgina (càmbia su tìtulu)",
-       "tooltip-ca-watch": "Annota custa pàgina pro is mudàntzias",
+       "tooltip-ca-watch": "Annota custa pàgina pro is càmbios",
        "tooltip-ca-unwatch": "Rimove custa pàgina dae sa lista de pàginas annotadas tua",
-       "tooltip-search": "Chirca in intru de {{SITENAME}}",
-       "tooltip-search-go": "Bae a una pàgina cun su nùmene indicadu, si esistit",
+       "tooltip-search": "Chirca in intro de {{SITENAME}}",
+       "tooltip-search-go": "Bae a una pàgina cun su nùmene inditadu, si esistit",
        "tooltip-search-fulltext": "Chirca custu testu in is pàginas",
-       "tooltip-p-logo": "Bìsita sa pàgina base",
+       "tooltip-p-logo": "Vìsita sa pàgina base",
        "tooltip-n-mainpage": "Bìsita sa pàgina base",
        "tooltip-n-mainpage-description": "Bìsita sa pàgina base",
        "tooltip-n-portal": "Descritzione de su progetu, ite podes fàgher, a innue agatas is cosas",
        "tooltip-n-currentevents": "Informatziones subra acadessimentos atuales",
-       "tooltip-n-recentchanges": "Lista de is ùrtimas mudàntzias in su giassu",
+       "tooltip-n-recentchanges": "Lista de is ùrtimos càmbios in su giassu",
        "tooltip-n-randompage": "Càrriga una pàgina a sorte",
        "tooltip-n-help": "Pàginas de agiudu",
        "tooltip-t-whatlinkshere": "Lista de totu is pàginas chi ligant a custa",
-       "tooltip-t-recentchangeslinked": "Lista de is ùrtimas mudàntzias de is pàginas ki ligant a custa",
+       "tooltip-t-recentchangeslinked": "Lista de is ùrtimos càmbios de is pàginas ki ligant a custa",
        "tooltip-feed-rss": "RSS feed pro custa pàgina",
        "tooltip-feed-atom": "Atom feed pro custa pàgina",
-       "tooltip-t-contributions": "Càstia sa lista de is contributos de custu impitadore",
+       "tooltip-t-contributions": "Càstia sa lista de is cuntributos de custu utente",
        "tooltip-t-emailuser": "Ispedi una email a custu impitadore",
        "tooltip-t-upload": "Càrriga documentu multimediale",
        "tooltip-t-specialpages": "Lista de is pàginas ispetziales",
        "tooltip-t-print": "Versione de custa pàgina pro s'imprenta",
-       "tooltip-t-permalink": "Ligòngiu permanente a custa versione de sa pàgina",
-       "tooltip-ca-nstab-main": "Càstia su cuntènnidu de sa pàgina",
-       "tooltip-ca-nstab-user": "Càstia sa pàgina impitadore",
+       "tooltip-t-permalink": "Ligàmene permanente a custa versione de sa pàgina",
+       "tooltip-ca-nstab-main": "Càstia su cuntenutu de sa pàgina",
+       "tooltip-ca-nstab-user": "Càstia sa pàgina utente",
        "tooltip-ca-nstab-special": "Custa est una pàgina ispetziale, non si podet modificare",
        "tooltip-ca-nstab-project": "Càstia sa pàgina de servìtziu",
        "tooltip-ca-nstab-image": "Càstia sa pàgina de su file",
        "tooltip-watch": "Annota custa pàgina pro is mudàntzias",
        "tooltip-recreate": "Torra a creare sa pàgina mancari siat stada fuliada",
        "tooltip-upload": "Cumentza a carrigare",
-       "tooltip-rollback": "\"Rollback\" annudda is mudàntzias de custa pàgina fatas dae s'ùrtimu contribudore",
+       "tooltip-rollback": "\"Rollback\" annulla is modìficas de custa pàgina fatas dae s'ùrtimu cuntribudore",
        "tooltip-undo": "\"Annudda\" fùrriat custu càmbiu e aberit su mòdulu de càmbiu comente antiprima.\nPodes annànghere unu motivu in s'ogetu.",
        "tooltip-preferences-save": "Sarba preferèntzias",
        "tooltip-summary": "Inserta unu resumu curtzu",
        "pageinfo-default-sort": "Critèriu de ordinamentu predefinidu",
        "pageinfo-length": "Longària de sa pàgina (in bytes)",
        "pageinfo-article-id": "ID pàgina",
-       "pageinfo-language": "Limba de su cuntènnidu de sa pàgina",
-       "pageinfo-content-model": "Modellu de su cuntènnidu de sa pàgina",
+       "pageinfo-language": "Limba de su cuntenutu de sa pàgina",
+       "pageinfo-content-model": "Modellu de su cuntenutu de sa pàgina",
        "pageinfo-robot-policy": "Inditzizatzione pro is robots",
        "pageinfo-robot-index": "Adduida",
        "pageinfo-firstuser": "Creadore de sa pàgina",
        "yesterday-at": "Eris a is $1",
        "bad_image_list": "Su formadu est su chi sighit:\n\nBenint consideradas isceti is listas punnadas (lìnias chi incumentzant cun *).\nSu primu ligòngiu in cada una lìnia depet èssere unu ligòngiu a unu documentu malu (o indesideradu).\nIs ligòngios chi sighint in sa matessi lìnia sunt cunsiderados comente etzetziones (est a nàrrere, pàginas in ue si podet usare su documentu).",
        "metadata": "Metadatos",
-       "metadata-help": "Custu file cuntènnit informatziones annuntiles, probabilmente annúnghedas dae sa fotocamera o dae su scannerizadore impreadu pro ddu creare o ddu digitalizare. Si su file est istadu mudadu, unos cantos particulares podent non currispòndere a sa realidade.",
+       "metadata-help": "Custu file cuntenet informatziones annuntiles, probabilmente annantas dae sa fotocamera o dae s'iscansionadore impreadu pro ddu creare o ddu digitalizare. Si su file est istadu modificadu, unos cantos particulares podent non currispòndere a sa realidade.",
        "metadata-expand": "Ammustra particulares",
        "metadata-collapse": "Cua particulares",
-       "metadata-fields": "Is campus de is metadatos de imàgine listados in custu messàgiu ant a èssere ammustrados in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinida, is àteros campos ant a èssere cuaos.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Is campos de is metadatos de imàgine listados in custu messàgiu ant a èssere ammustrados in sa pàgina de s'immàgine candu sa tabella de is metadatos est presentada in forma breve. Pro impostatzione predefinida, is àteros campos ant a èssere cuaos.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-artist": "Autore",
        "exif-exposuretime-format": "$1 s ($2)",
        "exif-fnumber-format": "f/$1",
index e1ef3bf..9f84a26 100644 (file)
        },
        "tog-underline": "Suttalìnia li lijami:",
        "tog-hideminor": "Ammuccia li canciamenti nichi nta l'ùrtimi canciamenti",
-       "tog-hidepatrolled": "Ammuccia li mudìfichi battugghiati nta l'ùrtimi canciamenti",
-       "tog-newpageshidepatrolled": "Ammuccia li pàggini battugghiati di l'alencu dî pàggini cchiu' novi",
+       "tog-hidepatrolled": "Ammuccia li canciamenti virificati nta l'ùrtimi canciamenti",
+       "tog-newpageshidepatrolled": "Ammuccia li pàggini virificati di l'elencu dî pàggini cchiù novi",
        "tog-extendwatchlist": "Ammustra tutti li canciamenti ntâ lista taliata, nun sulu lu cchiù ricenti",
        "tog-usenewrc": "Raggruppa li canciamenti pi pàggina ntâ lista dî canciamenti ricenti e ntâ lista taliata",
        "tog-numberheadings": "Nummirazzioni autumàtica dî tìtuli di paràgrafu",
-       "tog-showtoolbar": "Ammustra la barra dî strumenta pû canciamentu",
+       "tog-showtoolbar": "Ammustra la barra dî strummenta pû canciamentu",
        "tog-editondblclick": "Duppiu click pi canciari l'artìculu",
-       "tog-editsectiononrightclick": "Attiva lu canciamentu di na sizzioni quannu si clicca cu' buttuni drittu supra a lu so tìtulu",
+       "tog-editsectiononrightclick": "Attiva lu canciamentu di na sizzioni quannu si clicca cu buttuni drittu supra a lu sò tìtulu",
        "tog-watchcreations": "Agghiunci li pàggini chi creu e li file chi càrricu â mè lista taliata",
        "tog-watchdefault": "Agghiunci li pàggini e li file chi canciu â mè lista taliata",
        "tog-watchmoves": "Agghiunci li pàggini e li file chi spostu â mè lista taliata",
        "tog-watchdeletion": "Agghiunci li pàggini e li file chi cancellu â mè lista taliata",
        "tog-watchrollback": "Agghiunci li pàggini unni fici nu canciu n'arreri â mè lista taliata",
-       "tog-minordefault": "Marca ogni' canciamentu comu nicu pi' mpustazzioni pridifinuta",
+       "tog-minordefault": "Marca ogni canciamentu comu nicu pi mpustazzioni pridifinuta",
        "tog-previewontop": "Ammustra l'antiprima avanti dâ casedda di canciamentu",
        "tog-previewonfirst": "Ammustra l'antiprima ô primu canciamentu",
        "tog-enotifwatchlistpages": "Mànnami nu missaggiu di posta elittrònica quannu na pàggina o nu file dâ mè lista taliata subbìscinu canciamenti",
-       "tog-enotifusertalkpages": "Mànnami nu missaggiu di posta elettrònica quannu la me pàggina di discussioni veni canciata",
+       "tog-enotifusertalkpages": "Mànnami nu missaggiu di posta elettrònica quannu la mè pàggina di discussioni veni canciata",
        "tog-enotifminoredits": "Mànnami nu missaggiu di posta elittrònica macari pi li canciamenti nichi di pàggini e file",
-       "tog-enotifrevealaddr": "Ammustra lu me nnirizzu di posta elittrònica ntê missaggi di nutifica",
-       "tog-shownumberswatching": "Ammustra lu nùmmiru di utenti ca talìunu la pàggina",
+       "tog-enotifrevealaddr": "Ammustra lu mè nnirizzu di posta elittrònica ntê missaggi di nutìfica",
+       "tog-shownumberswatching": "Ammustra lu nùmmiru d'utenti ca talìanu la pàggina",
        "tog-oldsig": "Firma attuali:",
-       "tog-fancysig": "Intèrpitra la firma comu wikitestu (senza liami automaticu)",
-       "tog-uselivepreview": "Attiva l'antiprima in diretta",
-       "tog-forceeditsummary": "Dumanna cunfirma siddu lu riassuntu dûn canciamentu è vacanti",
+       "tog-fancysig": "Ntèrprita la firma comu wikitestu (senza liami automàticu)",
+       "tog-uselivepreview": "Attiva l'antiprima n diretta",
+       "tog-forceeditsummary": "Addumanna cunferma siddu lu riassuntu dûn canciamentu è vacanti",
        "tog-watchlisthideown": "Ammuccia li mè canciamenti ntâ lista taliata",
        "tog-watchlisthidebots": "Ammuccia li canciamenti dî bot ntâ lista taliata",
        "tog-watchlisthideminor": "Ammuccia li canciamenti nichi ntâ lista taliata",
        "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 u cunfruntu tra virsioni doppu aviri fattu nu canciu n'arreri",
-       "tog-useeditwarning": "Avvèrtimi quannu mi nni vaju di na pàggina cu' canciamenti nun sarvati",
-       "tog-prefershttps": "Adòpira sempri na cunnissioni sicura quannu si' trasutu",
+       "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",
        "underline-always": "Sempri",
        "underline-never": "Mai",
        "underline-default": "Mpustazzioni pridifinuta dâ peddi o dû browser",
        "editfont-style": "Stili dû caràttiri dâ casedda di canciamentu:",
        "editfont-default": "Pridifinutu dô browser",
-       "editfont-monospace": "Tipu di caràttiri a' larghizza fissa",
+       "editfont-monospace": "Tipu di caràttiri a larghizza fissa",
        "editfont-sansserif": "Tipu di caràttiri senza grazzî",
-       "editfont-serif": "Tipu di caràttiri cu' grazzî",
+       "editfont-serif": "Tipu di caràttiri cu grazzî",
        "sunday": "Duminicadìa",
        "monday": "Lunidìa",
        "tuesday": "Martidìa",
@@ -85,7 +85,7 @@
        "may_long": "Maiu",
        "june": "Giugnu",
        "july": "Giugnettu",
-       "august": "Aùstu",
+       "august": "Austu",
        "september": "Sittèmmiru",
        "october": "Uttùviru",
        "november": "Nuvèmmiru",
        "may-date": "$1 di maiu",
        "june-date": "$1 di giugnu",
        "july-date": "$1 di giugnettu",
-       "august-date": "$1 di aùstu",
+       "august-date": "$1 d'austu",
        "september-date": "$1 di sittèmmiru",
        "october-date": "$1 di uttùviru",
        "november-date": "$1 di nuvèmmiru",
        "category_header": "Pàggini ntâ catigurìa \"$1\"",
        "subcategories": "Suttacatigurìi",
        "category-media-header": "File multimidiali ntâ catigurìa \"$1\"",
-       "category-empty": "<em>Sta catigurìa pi' com'ora nun cunteni nudda pàggina e nuddu file multimidiali.</em>",
+       "category-empty": "<em>Sta catigurìa pi com'ora nun cunteni nudda pàggina e nuddu file multimidiali.</em>",
        "hidden-categories": "{{PLURAL:$1|Catigurìa ammucciata|Catigurìi ammuciati}}",
        "hidden-category-category": "Catigurìi ammucciati",
        "category-subcat-count": "{{PLURAL:$2|Sta catigurìa cunteni na sula suttacatigurìa, nnicata ccà sutta.|Sta catigurìa cunteni {{PLURAL:$1|la suttacatigurìa|li $1 suttacatigurìi nnicati}} ccà sutta, sùpira nu tutali di $2.}}",
        "moredotdotdot": "Àutru...",
        "morenotlisted": "Sta lista è ncumpreta",
        "mypage": "Pàggina",
-       "mytalk": "La me pàggina di discussioni",
+       "mytalk": "La mè pàggina di discussioni",
        "anontalk": "Discussioni di stu nnirizzu IP",
        "navigation": "Navigazzioni",
        "and": "&#32;e",
        "qbbrowse": "Sfogghia",
        "qbedit": "Cancia",
        "qbpageoptions": "Opzioni pàggina",
-       "qbmyoptions": "Li me pàggini",
+       "qbmyoptions": "Li mè pàggini",
        "faq": "Dumanni cumuni",
        "faqpage": "Project:Dumanni comuni",
        "actions": "Azzioni",
        "variants": "Varianti",
        "navigation-heading": "Menù di navigazzioni",
        "errorpagetitle": "Erruri",
-       "returnto": "Ritorna a' $1.",
+       "returnto": "Torna a $1.",
        "tagline": "Di {{SITENAME}}",
        "help": "Guida",
        "search": "Arricerca",
-       "searchbutton": "Va cerca",
+       "searchbutton": "Va arricerca",
        "go": "Trova",
        "searcharticle": "Vai",
        "history": "Crunuluggìa dâ pàggina",
        "permalink": "Liami pirmanenti",
        "print": "Stampa",
        "view": "Talìa",
-       "view-foreign": "Talìa supra a' $1",
+       "view-foreign": "Talìa supra a $1",
        "edit": "Cancia",
        "edit-local": "Cancia la discrizzioni lucali",
        "create": "Crea",
        "unprotect": "Cancia la prutizzioni",
        "unprotectthispage": "Cancia la prutizzioni di sta pàggina",
        "newpage": "Pàggina nova",
-       "talkpage": "Discussioni supra a' sta pàggina",
+       "talkpage": "Discussioni supra a sta pàggina",
        "talkpagelinktext": "Discussioni",
        "specialpage": "Pàggina spiciali",
        "personaltools": "Strumenta pirsunali",
        "articlepage": "Vidi l'artìculu",
        "talk": "Discussioni",
        "views": "Vìsiti",
-       "toolbox": "Strumenta",
+       "toolbox": "Strummenta",
        "userpage": "Talìa la pàggina di l'utenti",
        "projectpage": "Talìa la pàggina di sirvizziu",
        "imagepage": "Talìa la pàggina dû file",
        "viewhelppage": "Talìa la pàggina dâ guida",
        "categorypage": "Talìa la catigurìa",
        "viewtalkpage": "Talìa la discussioni",
-       "otherlanguages": "Nta autri lingui",
-       "redirectedfrom": "(Rimannu a' pàrtiri di $1)",
+       "otherlanguages": "Nta àutri lingui",
+       "redirectedfrom": "(Rimannu a pàrtiri di $1)",
        "redirectpagesub": "Pàggina di rimannu",
        "redirectto": "Rimanna a:",
-       "lastmodifiedat": "Sta pàggina fu' canciata l'ùltima vota a li $2 di lu $1.",
-       "viewcount": "Sta pàggina hâ statu liggiuta {{PLURAL:$1|na vota|$1 voti}}.",
+       "lastmodifiedat": "Sta pàggina fu canciata l'ùrtima vota a li $2 di lu $1.",
+       "viewcount": "Sta pàggina fu liggiuta {{PLURAL:$1|na vota|$1 voti}}.",
        "protectedpage": "Pàggina prutetta",
-       "jumpto": "Vai a':",
+       "jumpto": "Vai a:",
        "jumptonavigation": "navigazzioni",
-       "jumptosearch": "cerca",
+       "jumptosearch": "arricerca",
        "view-pool-error": "Ni dispiaci, ma li server nta stu mumentu sunnu troppu càrrichi.\nTroppi utenti stannu circannu di taliari sta pàggina.\nPi favuri aspetta n'anticchia prima di pruvari n'àutra vota a taliari sta pàggina.\n\n$1",
        "generic-pool-error": "Ni dispiaci, ma li server nta stu mumentu sunnu troppu càrrichi.\nTroppi utenti stannu circannu di taliari sta risorsa.\nPi favuri aspetta n'anticchia prima di pruvari n'àutra vota a taliari sta risorsa.",
        "pool-timeout": "Tempu scadutu aspittannu lu sbloccu",
        "pool-errorunknown": "Erruri scanusciutu",
        "pool-servererror": "Lu sirvizziu di cuntaturi dî pool nun è dispunìbbili ($1)",
        "poolcounter-usage-error": "Erruri d'utilizzu: $1",
-       "aboutsite": "Nfurmazzioni supra a' {{SITENAME}}",
+       "aboutsite": "Nfurmazzioni supra a {{SITENAME}}",
        "aboutpage": "Project:Àutri nformazzioni",
        "copyright": "Lu cuntinutu è utilizzàbbili secunnu la $1, sarvu minzioni cuntraria.",
        "copyrightpage": "{{ns:project}}:Copyright",
        "privacy": "Pulìtica supra la privacy",
        "privacypage": "Project:Pulìtica rilativa â privacy",
        "badaccess": "Erruri di pirmissu",
-       "badaccess-group0": "Nun hai lu pirmissu p'esèquiri l'azzioni chi' hai addumannatu.",
+       "badaccess-group0": "Nun hai lu pirmissu p'esèquiri l'azzioni chi addumannasti.",
        "badaccess-groups": "La funzioni addumannata è risirvata a l'utenti ca appartèninu {{PLURAL:$2|ô gruppu|a unu dî gruppi siquenti}}: $1.",
        "versionrequired": "È nicissaria la virsioni $1 dû software MediaWiki",
        "versionrequiredtext": "P'usari sta pàggina ci voli la virsioni $1 dû software MediaWiki. Talìa [[Special:Version|sta pàggina]]",
-       "ok": "Va' bonu",
+       "ok": "Va bonu",
        "retrievedfrom": "Estrattu di \"$1\"",
-       "youhavenewmessages": "Ricivisti $1 ($2).",
-       "youhavenewmessagesfromusers": "Ricivisti $1 di {{PLURAL:$3|n'autru utenti|$3 utenti}} ($2).",
-       "youhavenewmessagesmanyusers": "Ricivisti $1 di tanti utenti ($2).",
+       "youhavenewmessages": "Arricivisti $1 ($2).",
+       "youhavenewmessagesfromusers": "Arricivisti $1 di {{PLURAL:$3|n'àutru utenti|$3 utenti}} ($2).",
+       "youhavenewmessagesmanyusers": "Arricivisti $1 di tanti utenti ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|nu missaggiu novu|999=missaggi novi}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|ùrtimu canciamentu|999=ùrtimi canciamenti}}",
-       "youhavenewmessagesmulti": "Ricivisti missaggi novi supra a' $1",
+       "youhavenewmessagesmulti": "Arricivisti missaggi novi supra a $1",
        "editsection": "cancia",
        "editold": "cancia",
-       "viewsourceold": "talìa u surgenti",
+       "viewsourceold": "talìa la surgenti",
        "editlink": "cancia",
-       "viewsourcelink": "talìa u surgenti",
+       "viewsourcelink": "talìa la surgenti",
        "editsectionhint": "Cancia la sizzioni $1",
        "toc": "Ìnnici",
        "showtoc": "ammustra",
        "hidetoc": "ammuccia",
        "collapsible-collapse": "Strinci",
-       "collapsible-expand": "Llarga",
-       "confirmable-confirm": "Si' {{GENDER:$1|sicuru|sicura}}?",
+       "collapsible-expand": "Allarga",
+       "confirmable-confirm": "Sî {{GENDER:$1|sicuru|sicura}}?",
        "confirmable-yes": "Sì",
        "confirmable-no": "No",
        "thisisdeleted": "Vidi e/o riprìstina $1?",
        "page-rss-feed": "Feed RSS di \"$1\"",
        "page-atom-feed": "Feed Atom di \"$1\"",
        "red-link-title": "$1 (la pàggina nun esisti)",
-       "sort-descending": "Òrdina a' scìnniri",
-       "sort-ascending": "Òrdina a' nchianari",
+       "sort-descending": "Òrdina dicriscennu",
+       "sort-ascending": "Òrdina criscennu",
        "nstab-main": "Pàggina",
        "nstab-user": "Pàggina di l'utenti",
        "nstab-media": "Pàggina dû file multimidiali",
        "databaseerror-error": "Erruri: $1",
        "laggedslavemode": "Accura: La pàggina putissi nun ripurtari l'aggiurnamenti cchiù ricenti.",
        "readonly": "Basi di dati bluccata",
-       "enterlockreason": "Spiega lu mutivu dû bloccu, spicificannu na stima di quannu veniravi livatu.",
-       "readonlytext": "Com'ad ora la basi di dati è bluccata e nun sunnu pussìbbili junti o canciamenti; lu mutivu prubbabbili è la manutinzioni ordinària, finuta la quali la basi di dati turniravi normali.\n\nL'amministraturi chi la bluccau desi sta spiegazzioni: $1",
+       "enterlockreason": "Spiega lu mutivu dû bloccu, spicificannu na stima di quannu veni livatu.",
+       "readonlytext": "Com'a ora la basi di dati è bluccata e nun sunnu pussìbbili junti o canciamenti; lu mutivu prubbàbbili è la manutinzioni ordinaria, finuta la quali la basi di dati torna nurmali.\n\nL'amministraturi chi la bluccau desi sta spigazzioni: $1",
        "missing-article": "La basi di dati nun attruvau lu testu di na pàggina c'avissi avutu a attruvari, cu nomu \"$1\" $2.\n\nSta cosa di sòlitu succedi quannu s'arrichiama, a pàrtiri di na crunuluggìa o di nu cunfruntu tra virsioni, nu liami a na pàggina chi fu cancillata.\n\nSi nun è accussì, pò èssiri ca scupristi nu bug ntô software.\nPi favuri signala stu fattu a n'[[Special:ListUsers/sysop|amministraturi]], spicificannu l'URL.",
        "missingarticle-rev": "(№ di virsioni: $1)",
        "missingarticle-diff": "(Diff: $1, $2)",
-       "readonly_lag": "La basi di dati fu' bluccata autumaticamenti nta mentri ca li server di basi di dati slave si sincrunìzzanu cu' chiddu master",
+       "readonly_lag": "La basi di dati fu bluccata autumaticamenti ntô mentri ca li server di basi di dati slave si sincrunìzzanu cu chiddu master",
        "internalerror": "Erruri nternu",
        "internalerror_info": "Erruri nternu: $1",
        "internalerror-fatal-exception": "Eccizzioni fatali di tipu \"$1\"",
-       "filecopyerror": "Nun fu' pussìbbili cupiari lu file \"$1\" nta \"$2\".",
-       "filerenameerror": "Nun fu' pussìbbili canciari lu nomu dû file di \"$1\" a' \"$2\".",
+       "filecopyerror": "Nun fu pussìbbili cupiari lu file \"$1\" nta \"$2\".",
+       "filerenameerror": "Nun fu pussìbbili canciari lu nomu dû file di \"$1\" a \"$2\".",
        "filedeleteerror": "Nun fu pussìbbili cancillari lu file \"$1\".",
        "directorycreateerror": "Nun fu pussìbbili criari la cartella \"$1\".",
-       "directoryreadonlyerror": "La cartella \"$1\" è a' sula littura.",
+       "directoryreadonlyerror": "La cartella \"$1\" è n littura sula.",
        "directorynotreadableerror": "La cartella \"$1\" nun è liggìbbili.",
-       "filenotfound": "Nun fu pussìbbili truvari lu file \"$1\".",
+       "filenotfound": "Nun fu pussìbbili attruvari lu file \"$1\".",
        "unexpected": "Valuri nun privistu: \"$1\"=\"$2\".",
        "formerror": "Erruri: Nun fu pussìbbili mannari lu mòdulu.",
-       "badarticleerror": "St'opirazzioni nun è cunsintuta nta sta pàggina.",
-       "cannotdelete": "Nun fu' pussìbbili cancillari la pàggina o lu file \"$1\".\nPutissi aviri statu già cancillatu di quarchidun'autru.",
+       "badarticleerror": "St'opirazzioni nun è cunzintuta nta sta pàggina.",
+       "cannotdelete": "Nun fu pussìbbili cancillari la pàggina o lu file \"$1\".\nPutissi aviri statu già cancillatu di quarchidun'àutru.",
        "cannotdelete-title": "Nun è pussìbbili cancillari la pàggina \"$1\"",
-       "delete-hook-aborted": "Cancillazzioni annullata di n'hook.\nNun desi nudda spiegazzioni.",
+       "delete-hook-aborted": "Cancillazzioni annullata di n'hook.\nNun desi nudda spigazzioni.",
        "no-null-revision": "Nun fu pussìbbili criari na virsioni nulla pâ paggina \"$1\"",
        "badtitle": "Tìtulu nun bonu",
-       "badtitletext": "Lu tìtulu di pàggina addumannatu nun era vàlidu, era vacanti, o vinìa dûn lijami nterlinguìsticu o nterwiki malu fattu.\nPutissi cuntèniri unu o chiossai caràttiri chi nun sù cunzintuti ntê tìtula.",
+       "badtitletext": "Lu tìtulu di pàggina addumannatu nun era vàlidu, era vacanti, o vinìa dûn lijami nterlinguìsticu o nterwiki malu fattu.\nPutissi cuntèniri unu o chiossai caràttiri chi nun sù cunzintuti ntê tìtuli.",
        "title-invalid-empty": "Lu tìtulu addumannatu pâ pàggina è vacanti o puru cunteni sulu lu nomu dûn namespace.",
        "title-invalid-utf8": "Lu tìtulu addumannatu pâ pàggina cunteni na siguenza UTF-8 nun vàlida.",
        "title-invalid-interwiki": "Lu tìtulu addumannatu pâ pàggina cunteni ligami interwiki, ca ntê tìtula nun si ponnu adupirari.",
        "title-invalid-magic-tilde": "Lu tìtulu addumannatu pâ pàggina cunteni na siguenza màggica di tildi nun vàlida(<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Lu tìtulu addumannatu pâ pàggina è troppu longu. Nun havi a èssiri cchiù longu di {{PLURAL:$1|byte}} sutta cudìfica UTF-8.",
        "title-invalid-leading-colon": "Lu tìtulu addumannatu pâ pàggina cunteni nu signu di dui punti ô principiu, chi nun è vàlidu.",
-       "perfcached": "Li dati ca sèquinu sunnu stratti di na ''cache'' e putissiru nun èssiri aggiurnati. Ntâ ''cache'' {{PLURAL:$1|capi un risultatu|càpunu $1 risultati}} massimu.",
-       "perfcachedts": "Li dati ca sèquinu sunnu stratti di na ''cache'', e furu aggiurnati l'ultima vota ô $1. Ntâ ''cache'' {{PLURAL:$4|capi un risultatu|capunu $4 risultati}} massimu.",
+       "perfcached": "Li dati ca sèquinu sunnu stratti di na ''cache'' e putìssiru nun èssiri aggiurnati. Ntâ ''cache'' {{PLURAL:$1|capi un risurtatu|càpinu $1 risurtati}} màssimu.",
+       "perfcachedts": "Li dati ca sèquinu sunnu stratti di na ''cache'', e foru aggiurnati l'ùrtima vota ô $1. Ntâ ''cache'' {{PLURAL:$4|capi un risurtatu|càpinu $4 risurtati}} màssimu.",
        "querypage-no-updates": "L'aggiurnamenti dâ pàggina sunnu timpuraniamenti suspisi. Li dati 'n chidda cuntinuti nun vèninu aggiurnati.",
-       "viewsource": "Talìa lu surgenti",
-       "viewsource-title": "Talìa lu surgenti di $1",
+       "viewsource": "Talìa la surgenti",
+       "viewsource-title": "Talìa la surgenti di $1",
        "actionthrottled": "Azzioni ritardata",
        "actionthrottledtext": "Comu misura di sicurezza contru lu spam, l'esecuzioni di alcuni azzionu è limitata a nu nùmmuru massimu di voti ni nu determinatu piriudu du tempu, limiti ca ni stu casu fu supiratu. Si prega di ripruvari tra qualchi minutu.",
-       "protectedpagetext": "Sta pàggina fu bluccata pi privèniri canciamenti o autri opirazzioni.",
+       "protectedpagetext": "Sta pàggina fu bluccata pi privèniri canciamenti o àutri opirazzioni.",
        "viewsourcetext": "Poi taliari e cupiari lu còdici surgenti di sta pàggina.",
        "viewyourtext": "Poi taliari e cupiari lu còdici surgenti dî <strong>tò canciamenti</strong> nti sta pàggina.",
        "protectedinterface": "Sta pàggina cunteni un elementu ca fà parti dâ nterfaccia utenti dû software eggh'è  prutetta p'evitari pussìbbili abbusi. Pi jùnciri o canciari li traduzzioni pi tutti li wiki usari [//translatewiki.net/translatewiki.net] lu pruggettu di lucalizzazzioni di Mediawiki.",
-       "editinginterface": "<strong>Accura:</strong> Lu testu di sta pàggina fà parti di l'interfaccia utenti dû situ.\nTutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti di sta wiki.",
-       "translateinterface": "Pi' agghiunciri o canciari traduzzioni pi' tutti i wiki, pi' favuri adupirati [//translatewiki.net/ translatewiki.net], lu pruggettu di lucalizzazzioni di MediaWiki.",
+       "editinginterface": "<strong>Accura:</strong> Lu testu di sta pàggina fa parti dâ nterfaccia utenti dû situ.\nTutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti di sta wiki.",
+       "translateinterface": "Pi agghiùnciri o canciari traduzzioni pi tutti li wiki, pi favuri adòpira [//translatewiki.net/ translatewiki.net], lu pruggettu di lucalizzazzioni di MediaWiki.",
        "cascadeprotected": "Sta pàggina è prutetta dî canciamenti pirchì veni nclusa {{PLURAL:$1|ntâ pàggina siquenti, ca fu prutiggiuta|ntê pàggini siquenti, ca foru prutiggiuti}} cu l'opzioni «a cascata»:\n$2",
        "namespaceprotected": "Nun hai lu pirmissu pi canciari li pàggini ntô namespace '''$1'''.",
-       "customcssprotected": "Nun hai lu pirmissu pi' canciari sta pàggina CSS picchì cunteni i mpustazzioni pirsunali di n'autru utenti.",
-       "customjsprotected": "Nun hai lu pirmissu pi' canciari sta pàggina JavaScript picchì cunteni i mpustazzioni pirsunali di n'autru utenti.",
-       "mycustomcssprotected": "Nun hai lu pirmissu pi' canciari sta paggina CSS.",
-       "mycustomjsprotected": "Nun hai lu pirmissu pi' canciari sta pàggina JavaScript.",
-       "myprivateinfoprotected": "Nun hai lu pirmissu pi' canciari li to nfurmazzioni risirvati.",
-       "mypreferencesprotected": "Nun hai lu pirmissu pi' canciari li to prifirenzi.",
+       "customcssprotected": "Nun hai lu pirmissu pi canciari sta pàggina CSS pirchì cunteni li mpustazzioni pirsunali di n'àutru utenti.",
+       "customjsprotected": "Nun hai lu pirmissu pi canciari sta pàggina JavaScript pirchì cunteni li mpustazzioni pirsunali di n'àutru utenti.",
+       "mycustomcssprotected": "Nun hai lu pirmissu pi canciari sta pàggina CSS.",
+       "mycustomjsprotected": "Nun hai lu pirmissu pi canciari sta pàggina JavaScript.",
+       "myprivateinfoprotected": "Nun hai lu pirmissu pi canciari li tò nfurmazzioni risirvati.",
+       "mypreferencesprotected": "Nun hai lu pirmissu pi canciari li tò prifirenzi.",
        "ns-specialprotected": "Li pàggini ntô namespace {{ns:special}} non ponnu èssiri canciati.",
        "titleprotected": "La criazzioni di sta pàggina cu stu tìtulu fu bluccata da [[User:$1|$1]].\nLa mutivazzioni è chista: ''$2''.",
-       "filereadonlyerror": "Nun fu pussìbbili canciari lu file \"$1\" pirchì lu repository di file \"$2\" è 'n mudalitati di sula littura.\n\nL'amministraturi chi' lu bluccau desi sta spiegazzioni: \"$3\".",
-       "invalidtitle-knownnamespace": "Tìtulu nun vàlidu cu' spazziu dî nomi \"$2\" e testu \"$3\"",
-       "invalidtitle-unknownnamespace": "Tìtulu nun vàlidu cu' nùmmiru di spazziu dî nomi scanusciutu $1 e testu \"$2\"",
+       "filereadonlyerror": "Nun fu pussìbbili canciari lu file \"$1\" pirchì lu repository di file \"$2\" è n mudalità di littura sula.\n\nL'amministraturi chi lu bluccau desi sta spigazzioni: \"$3\".",
+       "invalidtitle-knownnamespace": "Tìtulu nun vàlidu cu spazziu dî nomi \"$2\" e testu \"$3\"",
+       "invalidtitle-unknownnamespace": "Tìtulu nun vàlidu cu nùmmiru di spazziu dî nomi scanusciutu $1 e testu \"$2\"",
        "exception-nologin": "Nun trasutu",
-       "exception-nologin-text": "Pi' favuri trasi pi' putiri accèdiri a' sta pàggina o a' st'azzioni.",
-       "exception-nologin-text-manual": "Pi' favuri $1 pi' putiri accèdiri a' sta pàggina o a' st'azziòni.",
+       "exception-nologin-text": "Pi favuri trasi pi putiri accèdiri a sta pàggina o a st'azzioni.",
+       "exception-nologin-text-manual": "Pi favuri $1 pi putiri accèdiri a sta pàggina o a st'azzioni.",
        "virus-badscanner": "Sbagghiu di cunfigurazzioni: antivirus scanusciutu: ''$1''",
        "virus-scanfailed": "scanzioni nun arrinisciuta (còdici $1)",
        "virus-unknownscanner": "antivirus scanusciutu:",
-       "logouttext": "<strong>Nisciuta. Ora siti fora.</strong>\n\nAccura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun avissi nisciutu nzinu a quannu tu nun scancelli tutta la mimoria dû tò browser.",
+       "logouttext": "<strong>Nisciuta. Ora sî fora.</strong>\n\nAccura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun s'avissi nisciutu nzinu a quannu tu nun cancelli tutta la mimoria dû tò browser.",
        "welcomeuser": "Bommegna, $1!",
-       "welcomecreation-msg": "U to cuntu fu' criatu.\nPoi canciari li to [[Special:Preferences|prifirenzi]] di {{SITENAME}} si' voi.",
+       "welcomecreation-msg": "Lu tò cuntu fu criatu.\nPoi canciari li tò [[Special:Preferences|prifirenzi]] di {{SITENAME}} si voi.",
        "yourname": "Nomu utenti:",
        "userlogin-yourname": "Nomu utenti",
        "userlogin-yourname-ph": "Nzirìsci lu tò nomu utenti",
        "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": "Adopira na cunnissioni sicura",
-       "yourdomainname": "Lu to duminiu:",
+       "userlogin-signwithsecure": "Adòpira na cunnissioni sicura",
+       "yourdomainname": "Lu tò duminiu:",
        "password-change-forbidden": "Nun poi canciari li password nta sta wiki.",
        "externaldberror": "S'havi virificatu n'erruri cû server d'autinticazzioni sternu, oppuru nun si disponi di l'auturizzazzioni nicissari p'aggiurnari lu propiu accessu sternu.",
        "login": "Trasi",
        "userlogout": "Nesci",
        "notloggedin": "Nun trasutu",
        "userlogin-noaccount": "Nun hai nu cuntu?",
-       "userlogin-joinproject": "Scrìviti a' {{SITENAME}}",
+       "userlogin-joinproject": "Scrìviti a {{SITENAME}}",
        "nologin": "Nun hai nu cuntu? $1.",
        "nologinlink": "Crea nu cuntu",
        "createaccount": "Criazzioni dûn cuntu",
        "gotaccountlink": "Trasi",
        "userlogin-resetlink": "Ti scurdasti li dittagghî pâ trasuta?",
        "userlogin-resetpassword-link": "Ti scurdasti la password?",
-       "userlogin-helplink2": "Ajutu pâ trasuta",
-       "userlogin-loggedin": "Già trasìsti comu {{GENDER:$1|$1}}.\nAdòpira lu mòdulu ccassutta pi' tràsiri comu n'autru utenti.",
-       "userlogin-createanother": "Crea n'autru cuntu",
+       "userlogin-helplink2": "Aiutu pâ trasuta",
+       "userlogin-loggedin": "Già trasisti comu {{GENDER:$1|$1}}.\nAdòpira lu mòdulu ccassutta pi tràsiri comu n'àutru utenti.",
+       "userlogin-createanother": "Crea n'àutru cuntu",
        "createacct-emailrequired": "Nnirizzu di posta elittrònica",
        "createacct-emailoptional": "Nnirizzu di posta elittrònica (facurtativu)",
-       "createacct-email-ph": "Nzirisci lu to nnirizzu di posta elittrònica",
-       "createacct-another-email-ph": "Nzirisci u nnirizzu di posta elittrònica",
-       "createaccountmail": "Adòpira na password timpurania casuali e mànnila ô nnirizzu di posta elittrònica spicificatu",
+       "createacct-email-ph": "Nzirisci lu tò nnirizzu di posta elittrònica",
+       "createacct-another-email-ph": "Nzirisci lu nnirizzu di posta elittrònica",
+       "createaccountmail": "Adòpira na password timpurània casuali e mànnala ô nnirizzu di posta elittrònica spicificatu",
        "createacct-realname": "Nomu veru (facurtativu)",
        "createaccountreason": "Mutivu:",
        "createacct-reason": "Mutivu",
        "createacct-reason-ph": "Pirchì stai criannu n'àutru cuntu",
        "createacct-captcha": "Cuntrollu di sicurizza",
        "createacct-imgcaptcha-ph": "Nzirìsci lu testu ca vidi ccassupra",
-       "createacct-submit": "Crea lu to cuntu",
-       "createacct-another-submit": "Crea n'autru cuntu",
-       "createacct-benefit-heading": "{{SITENAME}} è fatta di pirsuni comu a' tìa.",
+       "createacct-submit": "Crea lu tò cuntu",
+       "createacct-another-submit": "Crea n'àutru cuntu",
+       "createacct-benefit-heading": "{{SITENAME}} è fatta di pirsuni comu a tìa.",
        "createacct-benefit-body1": "{{PLURAL:$1|cuntribbutu|cuntribbuti}}",
        "createacct-benefit-body2": "{{PLURAL:$1|pàggina|pàggini}}",
        "createacct-benefit-body3": "{{PLURAL:$1|cuntribbuturi ricenti|cuntribbutura ricenti}}",
-       "badretype": "Li password chi' mittisti nun currispùnnunu tra d'iddi.",
+       "badretype": "Li password chi mittisti nun currispùnninu tra d'iddi.",
        "usernameinprogress": "Un cuntu cu stu nomu utenti già si sta criannu.\nPi favuri aspetta.",
-       "userexists": "Lu nomu utenti nziritu è già usatu.\nTi prijamu pirciò di vuliri scègghîri nu nomu utenti diffirenti.",
+       "userexists": "Lu nomu utenti nzirutu è già usatu.\nTi prijamu pirciò di vuliri scègghiri nu nomu utenti diffirenti.",
        "loginerror": "Erruri ntâ trasuta",
        "createacct-error": "Erruri ntâ criazzioni dû cuntu",
        "createaccounterror": "Nun fu pussìbbili criari lu cuntu: $1",
-       "nocookiesnew": "Lu cuntu utenti fu' criatu, ma nun si' trasutu.\n{{SITENAME}} adòpira li cookie pi' gistiri li trasuti.\nTu hai i cookie disattivati.\nPi' favuri attìvili, e appoi trasi chî to nomu utenti e password novi.",
-       "nocookieslogin": "{{SITENAME}} adòpira li cookie pi' gistiri li trasuti.\nTu hai i cookie disattivati.\nPi' favuri attìvili e prova n'autra vota.",
-       "nocookiesfornew": "Lu cuntu utenti nun fu' criatu, picchì nun pòttimu cunfirmari la so orìggini.\nAssicuriti chi' hai i ''cookie'' attivati, ricarrica sta pàggina e prova n'autra vota.",
+       "nocookiesnew": "Lu cuntu utenti fu criatu, ma nun trasisti.\n{{SITENAME}} adòpira li cookie pi gistiri li trasuti.\nTu hai li cookie disattivati.\nPi favuri attìvali, e appoi trasi chî tò nomu utenti e password novi.",
+       "nocookieslogin": "{{SITENAME}} adòpira li cookie pi gistiri li trasuti.\nTu hai li cookie disattivati.\nPi favuri attìvali e prova n'àutra vota.",
+       "nocookiesfornew": "Lu cuntu utenti nun fu criatu, pirchì nun pòttimu cunfirmari la sò orìggini.\nAssicùrati chi hai li ''cookie'' attivati, ricàrrica sta pàggina e prova n'àutra vota.",
        "noname": "Nun spicificasti nu nomu utenti vàlidu.",
        "loginsuccesstitle": "Trasuta rinisciuta",
-       "loginsuccess": "<strong>Ora si' trasutu nta {{SITENAME}} comu \"$1\".</strong>",
-       "nosuchuser": "Nun è riggistratu nuddu utenti di nomu \"$1\".\nLi nomi di l'utenti fannu diffirenza tra majusculi e minusculi.\nCuntrolla chi' scrivisti lu nomu bonu, o puru [[Special:UserLogin/signup|crea un cuntu novu]].",
-       "nosuchusershort": "Nun è riggistratu nuddu utenti di nomu \"$1\".\nCuntrolla chi' scrivisti u nomu bonu.",
-       "nouserspecified": "Hâ' spicificari un nomu utenti.",
+       "loginsuccess": "<strong>Ora trasisti nta {{SITENAME}} comu \"$1\".</strong>",
+       "nosuchuser": "Nun è riggistratu nuddu utenti di nomu \"$1\".\nLi nomi di l'utenti fannu diffirenza tra maiùsculi e minùsculi.\nCuntrolla chi scrivisti lu nomu bonu, o puru [[Special:UserLogin/signup|crea un cuntu novu]].",
+       "nosuchusershort": "Nun è riggistratu nuddu utenti di nomu \"$1\".\nCuntrolla chi scrivisti lu nomu bonu.",
+       "nouserspecified": "Hai a spicificari un nomu utenti.",
        "login-userblocked": "St'utenti è bluccatu. Nun è pussìbbili di tràsiri.",
-       "wrongpassword": "La password chi' mittisti nun è giusta.\nPi' favuri prova n'àutra vota.",
-       "wrongpasswordempty": "La password chi' mittisti era vacanti.\nPi' favuri prova n'àutra vota.",
-       "passwordtooshort": "I password hannu a' èssiri longhi almenu {{PLURAL:$1|1 caràttiri|$1 caràttiri}}.",
+       "wrongpassword": "La password chi mittisti nun è giusta.\nPi favuri prova n'àutra vota.",
+       "wrongpasswordempty": "La password chi mittisti era vacanti.\nPi favuri prova n'àutra vota.",
+       "passwordtooshort": "Li password hannu a èssiri longhi armenu {{PLURAL:$1|1 caràttiri|$1 caràttiri}}.",
        "passwordtoolong": "Li password nun ponnu èssiri cchiù longhi di {{PLURAL:$1|1 caràttiri|$1 caràttiri}}.",
-       "password-name-match": "La tò password havi a' èssiri diversa dû tò nomu utenti.",
-       "password-login-forbidden": "L'usu di stu nomu utenti e password fu' pruibbitu.",
+       "password-name-match": "La tò password havi a èssiri diversa dû tò nomu utenti.",
+       "password-login-forbidden": "L'usu di stu nomu utenti e password fu pruibbitu.",
        "mailmypassword": "Azzera la password",
-       "passwordremindertitle": "Password nova timpurania pi' {{SITENAME}}",
+       "passwordremindertitle": "Password nova timpurània pi {{SITENAME}}",
        "passwordremindertext": "Quarchidunu (prubbabbirmenti tu, cu nnirizzu IP $1) addumannau d'aviri mannata na password d'accessu nova a {{SITENAME}} ($4). La password pi l'utenti \"$2\" vinni mpustata a \"$3\".\nTi cummeni fari n'accessu quantu prima e canciari la password pi sùbbitu. La tò password timpuranea scadrà dopu {{PLURAL:$5|nu jornu|$5 jorna}}.\nSiddu nun fusti tu a fari la dumanna, oppuru arrittruvasti la password e nun addisìi cchiù canciàrila, poi non tèniri cuntu di stu missaggiu e cuntinuari a usari la password vecchia.",
        "noemail": "Nuddu ndirizzu e-mail riggistratu pi l'utenti \"$1\".",
        "noemailcreate": "Aviti a dari nu nnirizzu e-mail validu",
        "passwordsent": "Na password nova hà statu mannata a lu ndirizzu e-mail riggistratu pi l'utenti \"$1\". Pi favuri, effèttua un accessu nun appena l'arricevi.",
        "blocked-mailpassword": "Pi privèniri abbusi, nun è cunzititu usari la funzioni \"Nvia nova password\" d'un ndirizzu IP bluccatu.",
-       "eauthentsent": "Nu missaggiu e-mail di cunfirma fu' spidutu a lu nnirizzu nnicatu.\nPrima chi' ponnu èssiri mannati autri missaggi e-mail a' stu cuntu, è nicissariu sèquiri li struzzioni ca vi sunnu scritti, 'n modu di cunfirmari di èssiri li liggìttimi prupietarî di lu cuntu.",
-       "throttled-mailpassword": "Nu missaggiu e-mail di azziramentu dâ password già havi statu mannatu nta {{PLURAL:$1|l'ultima ura|l'ultimi $1 uri}}. Pi' privèniri abbusi, si po' mannari nu missaggiu e-mail di azziramentu dâ password na vota sula ogni {{PLURAL:$1|ura|$1 uri}}.",
+       "eauthentsent": "Nu missaggiu e-mail di cunferma fu spidutu a lu nnirizzu nnicatu.\nPrima chi ponnu èssiri mannati àutri missaggi e-mail a stu cuntu, è nicissariu sèquiri li struzzioni ca vi sunnu scritti, n modu di cunfirmari d'èssiri li prupitarî liggìttimi di lu cuntu.",
+       "throttled-mailpassword": "Nu missaggiu e-mail di azziramentu dâ password già fu mannatu nta {{PLURAL:$1|l'ùrtima ura|l'ùrtimi $1 uri}}. Pi privèniri abbusi, si pò mannari nu missaggiu e-mail d'azziramentu dâ password na vota sula ogni {{PLURAL:$1|ura|$1 uri}}.",
        "mailerror": "Erruri nta lu mannu dû missaggiu: $1",
        "acct_creation_throttle_hit": "Visitaturi di sta wiki cû tò stissu nnirizzu IP già criaru {{PLURAL:$1|un cuntu|$1 cunti}} nta sta jurnata, chi è lu màssimu pirmissu pi stu pirìudu di tempu.\nPirciò, com'a ora li visitaturi ca ùsanu stu nnirizzu IP nun ponnu criari àutri cunti.",
-       "emailauthenticated": "Lu to nnirizzu di posta elittrònica fu' cunfirmatu lu $2 ê $3.",
-       "emailnotauthenticated": "Lu to nnirizzu di posta elittrònica ancora nun havi statu cunfirmatu.\nNun ti sarrannu mannati missaggi di posta elittrònica pi' sti funzioni.",
-       "noemailprefs": "Innicari nu nnirizzu di posta elittrònica p'attivari sti funzioni.",
-       "emailconfirmlink": "Cunfirmari lu to nnirizzu di posta elittrònica",
-       "invalidemailaddress": "Lu nnirizzu di posta elittrònica nun pò èssiri accittatu picchì pari chi havi un furmatu nun vàlidu.\nPi favuri nzirisci nu nnirizzu vàlidu o puru svacanta la casedda.",
+       "emailauthenticated": "Lu tò nnirizzu di posta elittrònica fu cunfirmatu lu $2 ê $3.",
+       "emailnotauthenticated": "Lu tò nnirizzu di posta elittrònica ancora nun fu cunfirmatu.\nNun ti sunnu mannati missaggi di posta elittrònica pi sti funzioni.",
+       "noemailprefs": "Nnicari nu nnirizzu di posta elittrònica p'attivari sti funzioni.",
+       "emailconfirmlink": "Cunfirmari lu tò nnirizzu di posta elittrònica",
+       "invalidemailaddress": "Lu nnirizzu di posta elittrònica nun pò èssiri accittatu pirchì pari chi havi un furmatu nun vàlidu.\nPi favuri nzirisci nu nnirizzu vàlidu o puru svacanta la casedda.",
        "cannotchangeemail": "Li nnirizzi di posta elittrònica nun ponnu èssiri canciati nta sta wiki.",
-       "emaildisabled": "Stu situ nun po' mannari missaggi di posta elittrònica.",
+       "emaildisabled": "Stu situ nun pò mannari missaggi di posta elittrònica.",
        "accountcreated": "Cuntu criatu",
-       "accountcreatedtext": "Fu' criatu un cuntu novu pi' l'utenti [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
+       "accountcreatedtext": "Fu criatu un cuntu novu pi l'utenti [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
        "createaccount-title": "Criazzioni di nu cuntu pi {{SITENAME}}",
        "createaccount-text": "Qualcuno criau n'accessu a {{SITENAME}} ($4) a nomu di $2, associatu cu stu ndirizzu di posta elettronica. La password pi l'utenti \"$2\" è mpustata a \"$3\". È opportunu trasiri quantu prima e canciari la password subbutu.\n\nSi l'accessu fu criatu pi sbagghiu, si può gnurari stu missaggiu.",
-       "login-throttled": "Hai fattu troppi tintativi di trasuta.\nPi' favuri spetta $1 prima di pruvari n'autra vota.",
+       "login-throttled": "Facisti troppi tintativi di trasuta.\nPi favuri aspetta $1 prima di pruvari n'àutra vota.",
        "login-abort-generic": "La trasuta nun arriniscìu - Annullata",
-       "login-migrated-generic": "Lu to cuntu fu' migratu, e lu to nomu utenti nun esisti cchiù' nta sta wiki.",
+       "login-migrated-generic": "Lu tò cuntu fu migratu, e lu tò nomu utenti nun esisti cchiù nta sta wiki.",
        "loginlanguagelabel": "Lingua: $1",
        "suspicious-userlogout": "La tò dumanna di discunnissioni fu niàta prichì pari ca veni di nu browser nun funziunanti o nu proxy di caching.",
-       "createacct-another-realname-tip": "U nomu veru è opziunali.\nSi scegghî di furnìrilu, veni adupiratu pi' dari crèditu a' l'utenti pû so travagghiu.",
+       "createacct-another-realname-tip": "Lu nomu veru è opziunali.\nSi scegghi di furnìrilu, veni adupiratu pi dari crèditu a l'utenti pû sò travagghiu.",
        "pt-login": "Trasi",
        "pt-login-button": "Trasi",
        "pt-createaccount": "Crea un cuntu novu",
        "pt-userlogout": "Nesci",
        "php-mail-error-unknown": "Erruri scanusciutu ntâ funzioni mail() dû PHP.",
-       "user-mail-no-addy": "Si pruvàu a' mannari nu missaggiu di posta elittrònica senza nu nnirizzu di posta elittrònica.",
-       "user-mail-no-body": "Si pruvàu a' mannari nu missaggiu di posta elittrònica cûn corpu vacanti o troppu curtu p'aviri significatu.",
+       "user-mail-no-addy": "Si pruvau a mannari nu missaggiu di posta elittrònica senza nu nnirizzu di posta elittrònica.",
+       "user-mail-no-body": "Si pruvau a mannari nu missaggiu di posta elittrònica cûn corpu vacanti o troppu curtu p'aviri significatu.",
        "changepassword": "Cancia la password",
-       "resetpass_announce": "Pi' cumplitari la trasuta, hâ' mpustari na password nova.",
+       "resetpass_announce": "Pi cumplitari la trasuta, hai a mpustari na password nova.",
        "resetpass_text": "<!-- Agghiunci lu testu ccà -->",
        "resetpass_header": "Canciamentu dâ password",
        "oldpassword": "Password vecchia:",
        "newpassword": "Password nova:",
        "retypenew": "Scrivi n'àutra vota la password:",
        "resetpass_submit": "Mposta la password e trasi",
-       "changepassword-success": "La to password fu canciata!",
-       "changepassword-throttled": "Hai fattu troppi tintativi di trasuta.\nPi' favuri spetta $1 prima di pruvari n'autra vota.",
+       "changepassword-success": "La tò password fu canciata!",
+       "changepassword-throttled": "Facisti troppi tintativi di trasuta.\nPi favuri aspetta $1 prima di pruvari n'àutra vota.",
        "resetpass_forbidden": "Li password nun si ponnu canciari",
-       "resetpass-no-info": "Pi tràsiri nta sta pàggina hà' èssiri riggistratu.",
+       "resetpass-no-info": "Pi tràsiri nta sta pàggina hai a èssiri riggistratu.",
        "resetpass-submit-loggedin": "Cancia la password",
        "resetpass-submit-cancel": "Annulla",
-       "resetpass-wrong-oldpass": "La password timpurania o attuali nun è giusta.\nPo' èssiri ca già riniscisti a' canciari la tò password, o puru ca già nn'addumannasti n'autra timpurania ancora.",
-       "resetpass-recycled": "Pi' favuri cancia a to password a' na cosa diffirenti dâ to password attuali.",
-       "resetpass-temp-emailed": "Trasisti cûn codici timpuraniu mannatu pi' posta elittrònica.\nPi' cumplitari a trasuta, hâ' mpustari na password nova cca:",
-       "resetpass-temp-password": "Password timpurania:",
-       "resetpass-abort-generic": "U canciu dâ password fu' annullatu di n'estinsioni.",
-       "resetpass-expired": "A to password scadìu. Pi' favuri mposta na password nova pi' trasiri.",
-       "resetpass-expired-soft": "A to password scadìu e s'havi a' azzirari. Pi' favuri scegghî na password nova ora, o puru clicca \"{{int:resetpass-submit-cancel}}\" p'azziràrila n'autra vota.",
-       "resetpass-validity-soft": "A to password nun è vàlida: $1\n\nPi' favuri scegghî na password nova ora, o puru clicca \"{{int:resetpass-submit-cancel}}\" p'azziràrila n'autra vota.",
+       "resetpass-wrong-oldpass": "La password timpurània o attuali nun è giusta.\nPo èssiri ca già arriniscisti a canciari la tò password, o puru ca già nn'addumannasti n'àutra timpurània ancora.",
+       "resetpass-recycled": "Pi favuri cancia la tò password a na cosa diffirenti dâ tò password attuali.",
+       "resetpass-temp-emailed": "Trasisti cûn codici timpuràniu mannatu pi posta elittrònica.\nPi cumplitari la trasuta, hai a mpustari na password nova ccà:",
+       "resetpass-temp-password": "Password timpurània:",
+       "resetpass-abort-generic": "Lu canciu dâ password fu annullatu di n'estinzioni.",
+       "resetpass-expired": "La tò password scadìu. Pi favuri mposta na password nova pi tràsiri.",
+       "resetpass-expired-soft": "La tò password scadìu e s'havi a azzirari. Pi favuri scegghi na password nova ora, o puru clicca \"{{int:resetpass-submit-cancel}}\" p'azziràrila n'àutra vota.",
+       "resetpass-validity-soft": "La tò password nun è vàlida: $1\n\nPi favuri scegghi na password nova ora, o puru clicca \"{{int:resetpass-submit-cancel}}\" p'azziràrila n'àutra vota.",
        "passwordreset": "Azziramentu dâ password",
-       "passwordreset-text-one": "Jinchi stu mòdulu pi' ricèviri na password timpurania pi' posta elittrònica.",
-       "passwordreset-text-many": "{{PLURAL:$1|Jinchi unu dî campi pi' ricèviri na password timpurania pi' posta elittrònica.}}",
+       "passwordreset-text-one": "Jinchi stu mòdulu p'arricèviri na password timpurània pi posta elittrònica.",
+       "passwordreset-text-many": "{{PLURAL:$1|Jinchi unu dî campi p'arricèviri na password timpurània pi posta elittrònica.}}",
        "passwordreset-disabled": "L'azziramentu dî password fu disattivatu nta sta wiki.",
-       "passwordreset-emaildisabled": "Li funzionalità di e-mail furu disattivati nta sta wiki.",
+       "passwordreset-emaildisabled": "Li funziunalità di e-mail foru disattivati nta sta wiki.",
        "passwordreset-username": "Nomu utenti:",
        "passwordreset-domain": "Duminiu:",
-       "passwordreset-capture": "Ammustrari u missaggiu e-mail chi' veni cumpostu?",
-       "passwordreset-capture-help": "Si attivi sta casedda, u missaggiu e-mail (câ password timpurania) veni ammustratu a' tia sparti chi' veni mannatu a' l'utenti.",
+       "passwordreset-capture": "Ammustrari lu missaggiu e-mail chi veni cumpostu?",
+       "passwordreset-capture-help": "Si attivi sta casedda, lu missaggiu e-mail (câ password timpurània) veni ammustratu a tìa sparti chi veni mannatu a l'utenti.",
        "passwordreset-email": "Nnirizzu di posta elittrònica:",
-       "passwordreset-emailtitle": "Dittagghî dû cuntu supra a' {{SITENAME}}",
-       "passwordreset-emailtext-ip": "Quarchidunu (prubbabilmenti tu, di l'innirizzu IP $1) fici dumanna pi' l'azziramentu dâ to password pi' {{SITENAME}} ($4). {{PLURAL:$3|U siguenti cuntu utenti è assuciatu|I siguenti cunti utenti su' assuciati}} cu' stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurania|Sti password timpuranii}} scàdunu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a' tràsiri e scègghîri na password nova. Si' fu' quarchidun'autru a' fari sta richiesta e nun tu, o si' ti ricurdasti a to password origginali e nâ voi canciari cchiu', poi gnurari stu missaggiu e cuntinuari a' adupirari a to password vecchia.",
-       "passwordreset-emailtext-user": "L'utenti $1 supra a' {{SITENAME}} fici dumanna pi' l'azziramentu dâ to password pi' {{SITENAME}} ($4). {{PLURAL:$3|U siguenti cuntu utenti è assuciatu|I siguenti cunti utenti su' assuciati}} cu' stu nnirizzu di posta elittrònica:\n\n$2\n\n{{PLURAL:$3|Sta password timpurania|Sti password timpuranii}} scàdunu tra {{PLURAL:$5|un jornu|$5 jorna}}.\nOra tu avissi a' tràsiri e scègghîri na password nova. Si' fu' quarchidun'autru a' fari sta richiesta e nun tu, o si' ti ricurdasti a to password origginali e nâ voi canciari cchiu', poi gnurari stu missaggiu e cuntinuari a' adupirari a to password vecchia.",
-       "passwordreset-emailelement": "Nomu utenti: \n$1\n\nPassword timpurania: \n$2",
-       "passwordreset-emailsent": "Nu missaggiu di posta elittrònica d'azziramentu dâ password fu' mannatu.",
+       "passwordreset-emailtitle": "Dittagghî dû cuntu supra a {{SITENAME}}",
+       "passwordreset-emailtext-ip": "Quarchidunu (prubbabbilmenti tu, dô nnirizzu IP $1) 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-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-emailsent": "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-text": "Jinchi stu mòdulu pi' canciari u to nnirizzu di posta elittrònica. Hâ' nziriri a to password pi' cunfirmari stu canciamentu.",
-       "changeemail-no-info": "Hâ' jèssiri trasutu p'aviri accessu direttu a' sta pàggina.",
+       "changeemail-text": "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.",
        "changeemail-oldemail": "Nnirizzu di posta elittrònica attuali:",
        "changeemail-newemail": "Nnirizzu di posta elittrònica novu:",
        "changeemail-none": "(nuddu)",
-       "changeemail-password": "A to password di {{SITENAME}}:",
+       "changeemail-password": "La tò password di {{SITENAME}}:",
        "changeemail-submit": "Cancia nnirizzu",
-       "changeemail-throttled": "Hai fattu troppi tintativi di trasuta.\nPi' favuri spetta $1 prima di pruvari n'autra vota.",
+       "changeemail-throttled": "Facisti troppi tintativi di trasuta.\nPi favuri aspetta $1 prima di pruvari n'àutra vota.",
        "resettokens": "Azziramentu dî token",
-       "resettokens-text": "Cca poi azzirari i ''token'' chi' dùnunu accessu a' certi dati risirvati assuciati ô to cuntu.\n\nSta cosa s'avissi a' fari si' pi' sbagghiu i facisti sapiri a' quarchidunu o si' u to cuntu fu' cumprumisu.",
-       "resettokens-no-tokens": "Nun ci su' token di azzirari.",
+       "resettokens-text": "Ccà poi azzirari li ''token'' chi dùnanu accessu a certi dati risirvati assuciati ô tò cuntu.\n\nSta cosa s'avissi a fari si pi sbagghiu li facisti sapiri a quarchidunu o si lu tò cuntu fu cumprumisu.",
+       "resettokens-no-tokens": "Nun ci sunnu token d'azzirari.",
        "resettokens-tokens": "Token:",
        "resettokens-token-label": "$1 (valuri attuali: $2)",
        "resettokens-watchlist-token": "Token pû feed web (Atom/RSS) dî [[Special:Watchlist|canciamenti ê pàggini ntâ tò lista taliata]]",
-       "resettokens-done": "I token furu azzirati.",
-       "resettokens-resetbutton": "Azzera i token scigghiuti",
+       "resettokens-done": "Li token foru azzirati.",
+       "resettokens-resetbutton": "Azzera li token scigghiuti",
        "bold_sample": "Grassettu",
        "bold_tip": "Grassettu",
        "italic_sample": "Cursivu",
        "image_tip": "File ncurpuratu",
        "media_sample": "Asempiu.ogg",
        "media_tip": "Lijami a file",
-       "sig_tip": "A to firma cu' data e ura",
-       "hr_tip": "Linia urizzuntali (usari cu' giudizziu)",
+       "sig_tip": "La tò firma cu data e ura",
+       "hr_tip": "Lìnia urizzuntali (usari cu giudizziu)",
        "summary": "Riassuntu:",
        "subject": "Oggettu/ntistazzioni:",
        "minoredit": "Chistu è nu canciamentu nicu",
        "showpreview": "Ammustra l'antiprima",
        "showdiff": "Ammustra li canciamenti",
        "blankarticle": "<strong>Accura:</strong> La pàggina chi stai criannu è vacanti.\nSi clicchi \"{{int:savearticle}}\" n'àutra vota, la pàggina veni criata senza nuddu cuntinutu.",
-       "anoneditwarning": "<strong>Accura:</strong> Nun si' trasutu. Lu to nnirizzu IP diventa visìbbili pubblicamenti quannu fai nu canciamentu. Si' <strong>[$1 trasi]</strong> o puru <strong>[$2 crei nu cuntu]</strong>, li canciamenti chi' fai vènunu attribbuiti ô to nomu utenti, sparti di autri vantaggi.",
+       "anoneditwarning": "<strong>Accura:</strong> Nun trasisti. Lu tò nnirizzu IP addiventa visìbbili pubblicamenti quannu fai nu canciamentu. Si <strong>[$1 trasi]</strong> o puru <strong>[$2 crei nu cuntu]</strong>, li canciamenti chi fai vèninu attribbuiti ô tò nomu utenti, sparti d'àutri vantaggi.",
        "anonpreviewwarning": "''Nun trasisti comu utiliggaturi loggatu. Sarbannu, lu tò nnirizzu IP veni arriggistratu ntâ storia dî canciamenti.''",
        "missingsummary": "'''Accura:''' Nun hà statu spicificatu l'uggettu di stu canciamentu. Primennu di novu '''Sarva''' lu canciamentu veni sarvatu cu l'uggettu vacanti.",
-       "selfredirect": "<strong>Accura:</strong> Stai rimannannu sta pàggina a' idda stissa.\nPo' èssiri chi' spicificasti na distinazzioni sbagghiata pû rimannu, o puru chi' stai canciannu a pàggina sbagghiata.\nSi' clicchi \"{{int:savearticle}}\" n'autra vota, u rimannu veni criatu u stissu.",
+       "selfredirect": "<strong>Accura:</strong> Stai rimannannu sta pàggina a idda stissa.\nPo èssiri chi spicificasti na distinazzioni sbagghiata pû rimannu, o puru chi stai canciannu la pàggina sbagghiata.\nSi clicchi \"{{int:savearticle}}\" n'àutra vota, lu rimannu veni criatu lu stissu.",
        "missingcommenttext": "Nziriri un cummentu ccà sutta.",
-       "missingcommentheader": "<strong>Accura:</strong> Nun havi statu spicificatu l'oggettu/ntistazzioni di stu cummentu. Primennu di novu \"{{int:savearticle}}\", lu canciamentu veni sarvatu senza avìrinni.",
+       "missingcommentheader": "<strong>Accura:</strong> Nun fu spicificatu l'oggettu/ntistazzioni di stu cummentu. Primennu di novu \"{{int:savearticle}}\", lu canciamentu veni sarvatu senza avìrinni.",
        "summary-preview": "Antiprima dû riassuntu:",
        "subject-preview": "Antiprima di l'oggettu/ntistazzioni:",
        "previewerrortext": "Ammattìu n'erruri nta l'ammustrari li tò canciamenti.",
        "blockedtext": "'''Stu nomu d'utenti o nnirizzu IP havi statu bluccatu.'''\n\nLu bloccu fu fattu di $1. Lu mutivu dû bloccu è: ''$2''.\n\n* Accuminzata dû bloccu: $8\n* Fini dû bloccu: $6\n* Ntirvallu dû bloccu: $7\n\nPoi cuntattari a $1 o a n'àutru [[{{MediaWiki:Grouppage-sysop}}|amministraturi]] pi discùtiri dû bloccu.\n\nNun poi usari la carattirìstica 'manna n'email a st'utenti' siddu nun è spicificatu nu nnirizzu email vàlidu nta li toi [[Special:Preferences|prifirenzi]] e siddu nun hai statu bluccatu di l'usari.\n\nLu tò nnirizzu IP attuali è $3, e lu nùmmiru ID dû bloccu è #$5.\n\nSpicìfica tutti li dittagghi pricidenti nta quarsiasi addumannata di chiarimenti.",
        "autoblockedtext": "Lu tò nnirizzu IP hà statu bluccatu automaticamenti pirchì fu usatu di n'àutru utenti, chi fu bluccatu di $1.\nLu mutivu è chistu:\n\n:''$2''\n\n* Accuminzata dû bloccu: $8\n* Fini dû bloccu: $6\n* Ntirvallu dû bloccu: $7\n\nPoi cuntattari a $1 o a n'àutru [[{{MediaWiki:Grouppage-sysop}}|amministraturi]] pi discùtiri dû bloccu.\n\nNun poi usari la carattirìstica 'manna n'email a st'utenti' siddu nun è spicificatu nu nnirizzu email vàlidu ntra li tòi [[Special:Preferences|prifirenzi]] e siddu nun fusti bluccatu di l'usari.\n\nLu tò nnirizzu IP attuali è $3, e l'ID dû bloccu è $5.\nPi favuri nclùdilu nta tutti li dumanni chi fai.",
        "blockednoreason": "nuddu mutivu datu",
-       "whitelistedittext": "Pi' favuri $1 pi' canciari li pàggini.",
-       "confirmedittext": "Hâ' cunvalidari lu to nnirizzu di posta elittrònica avanti di putiri canciari li pàggini.\nPi' favuri mposta e cunvàlida lu nnirizzu passannu dî [[Special:Preferences|to prifirenzi]].",
-       "nosuchsectiontitle": "La sizzioni nun fu truvata",
+       "whitelistedittext": "Pi favuri $1 pi canciari li pàggini.",
+       "confirmedittext": "Hai a cunvalidari lu tò nnirizzu di posta elittrònica avanti di putiri canciari li pàggini.\nPi favuri mposta e cunvàlida lu nnirizzu passannu dî [[Special:Preferences|tò prifirenzi]].",
+       "nosuchsectiontitle": "La sizzioni nun fu attruvata",
        "nosuchsectiontext": "Pruvasti a canciari na sizzioni chi nun esisti.\nForsi ca fu spustata o cancillata ntô mentri ca stàvitu taliannu la pàggina.",
-       "loginreqtitle": "S'havi a' tràsiri",
+       "loginreqtitle": "S'havi a tràsiri",
        "loginreqlink": "trasi",
        "loginreqpagetext": "Pi favuri $1 pi taliari àutri pàggini.",
        "accmailtitle": "Password mannata",
-       "accmailtext": "Na password ginirata casualmenti pi' [[User talk:$1|$1]] fu' spiduta a $2. Si po' canciari di la pàggina di <em>[[Special:ChangePassword|canciamentu dâ password]]</em> comu unu trasi.",
+       "accmailtext": "Na password ginirata casualmenti pi [[User talk:$1|$1]] fu spiduta a $2. Si pò canciari dâ pàggina di <em>[[Special:ChangePassword|canciamentu dâ password]]</em> comu unu trasi.",
        "newarticle": "(Novu)",
        "newarticletext": "Siguisti na lijami a na pàggina c'ancora nun esisti.\nPi criari sta pàggina, accumenza a scrìviri ccassutta (talìa la [$1 pàggina d'aiutu] p'aviri maiuri nfurmazzioni).\nSi agghicasti ccà pi sbagghiu, carca lu buttuni <strong>n arreri</strong> dû tò browser.",
        "anontalkpagetext": "----''Chista è la pàggina di discussioni di n’utenti anònimu, ca nun criau ancora n’accessu o ca nun l’usa.\nP’idintificàrilu è pirciò nicissariu usari lu nùmmiru di lu sò nnirizzu IP.\nLi nnirizzi IP ponnu pirò èssiri spartuti di cchiù utenti.\nSiddu sî n’utenti anònimu e riteni ca li cummenti prisenti nta sta pàggina nun si rifirìscinu a tia, [[Special:UserLogin/signup|crea n’accessu novu]] o [[Special:UserLogin|trasi]] cu chiddu ca già hai p’evitari d’èssiri cunfusu cu àutri utenti anònimi ‘n futuru.''",
        "noarticletext": "Nta stu mumentu la pàggina addumannata è vacanti. È pussìbbili [[Special:Search/{{PAGENAME}}|circari stu tìtulu]] nta l'àutri pàggini dû situ oppuru <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|action=edit}} circari ntê riggistra culligati] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} canciari la pàggina ora]</span>.",
        "noarticletext-nopermission": "Nta stu mumentu la pàggina addumannata è vacanti. È pussibbili [[Special:Search/{{PAGENAME}}|circari stu titulu]] nti àutri pàggini dû situ o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} circari ntê riggistra culligati]</span>, ma nun hai li pirmissa pi criari sta pàggina.",
-       "missing-revision": "A virsioni #$1 dâ paggina ntitulata \"{{FULLPAGENAME}}\" nun esisti.\n\nStu fattu di sòlitu succedi quannu si segui na lijami di crunuluggìa versu na pàggina chi fu cancillata.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
+       "missing-revision": "La virsioni #$1 dâ paggina ntitulata \"{{FULLPAGENAME}}\" nun esisti.\n\nStu fattu di sòlitu succedi quannu si segui nu lijami di crunuluggìa versu na pàggina chi fu cancillata.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
        "userpage-userdoesnotexist": "L'account \"<nowiki>$1</nowiki>\" nun currispunni a n'utenti riggistratu. Virificari si si voli criari o canciari sta pàggina.",
-       "userpage-userdoesnotexist-view": "U cuntu utenti \"$1\" nun è riggistratu.",
-       "blocked-notice-logextract": "St'utenti pi' com'ora è bluccatu.\nComu rifirimentu ccassutta cc'è l'ùltima vuci dû riggìstru dî blocchi:",
-       "clearyourcache": "<strong>Nota:</strong> Doppu aviri sarvatu, po' giuvari cancillari la ''cache'' dû propiu browser pi' vìdiri li canciamenti.\n* <strong>Firefox / Safari:</strong> Cliccari <em>Ricarica</em> mantinnennu primutu lu tastu dî majùsculi, o puru prèmiri o <em>Ctrl-F5</em> o <em>Ctrl-R</em> (<em>⌘-R</em> ntôn Mac)\n* <strong>Google Chrome:</strong> Prèmiri <em>Ctrl-Maiusc-R</em> (<em>⌘-Maiusc-R</em> ntôn Mac)\n* <strong>Internet Explorer:</strong> Cliccari <em>Aggiorna</em> mantinennu primutu lu tastu <em>Ctrl</em>, o puru prèmiri <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Svacantari la ''cache'' dû menù <em>Strumenti → Preferenze</em>",
-       "usercssyoucanpreview": "<strong>Cunsigghiu:</strong> Adòpira u buttuni \"{{int:showpreview}}\" pi' pruvari u to CSS novu prima di sarvàrilu.",
-       "userjsyoucanpreview": "<strong>Cunsigghiu:</strong> Adòpira u buttuni \"{{int:showpreview}}\" pi' pruvari u to JavaScript novu prima di sarvàrilu.",
+       "userpage-userdoesnotexist-view": "Lu cuntu utenti \"$1\" nun è riggistratu.",
+       "blocked-notice-logextract": "St'utenti pi com'ora è bluccatu.\nComu rifirimentu ccassutta c'è l'ùrtima vuci dû riggistru dî blocchi:",
+       "clearyourcache": "<strong>Nota:</strong> Doppu aviri sarvatu, pò aggiuvari cancillari la ''cache'' dû propiu browser pi vìdiri li canciamenti.\n* <strong>Firefox / Safari:</strong> Cliccari <em>Ricarica</em> mantinnennu primutu lu tastu dî maiùsculi, o puru prèmiri o <em>Ctrl-F5</em> o <em>Ctrl-R</em> (<em>⌘-R</em> ntôn Mac)\n* <strong>Google Chrome:</strong> Prèmiri <em>Ctrl-Maiusc-R</em> (<em>⌘-Maiusc-R</em> ntôn Mac)\n* <strong>Internet Explorer:</strong> Cliccari <em>Aggiorna</em> mantinennu primutu lu tastu <em>Ctrl</em>, o puru prèmiri <em>Ctrl-F5</em>\n* <strong>Opera:</strong> Svacantari la ''cache'' dû menù <em>Strumenti → Preferenze</em>",
+       "usercssyoucanpreview": "<strong>Cunzigghiu:</strong> Adòpira lu buttuni \"{{int:showpreview}}\" pi pruvari lu tò CSS novu prima di sarvàrilu.",
+       "userjsyoucanpreview": "<strong>Cunzigghiu:</strong> Adòpira lu buttuni \"{{int:showpreview}}\" pi pruvari lu tò JavaScript novu prima di sarvàrilu.",
        "usercsspreview": "'''Arricorda ca stai sulu visualizzannu n'antiprima dû tò CSS pirsunali.'''\n'''Nun hà ancora statu sarvatu!'''",
        "userjspreview": "'''Arricorda ca stai sulu tistanno/vidennu 'n antiprima lu tò javascript pirsunali, nun hà statu ancora sarvatu!'''",
-       "sitecsspreview": "<strong>Ricòrditi chi' chista è sulu n'antiprima di stu CSS. Ancora nun havi statu sarvatu!</strong>",
-       "sitejspreview": "<strong>Ricòrditi chi' chista è sulu n'antiprima di stu còdici JavaScript. Ancora nun havi statu sarvatu!</strong>",
+       "sitecsspreview": "<strong>Arricòrdati chi chista è sulu n'antiprima di stu CSS. Ancora nun fu sarvatu!</strong>",
+       "sitejspreview": "<strong>Arricòrdati chi chista è sulu n'antiprima di stu còdici JavaScript. Ancora nun fu sarvatu!</strong>",
        "userinvalidcssjstitle": "'''Accura:''' Nun esisti arcuna skin cu nomu \"$1\". S'arricorda ca li pàggini pi li .css e .js pirsunalizzati hannu la nizziali dû tìtulu minùscula, p'asempiu {{ns:user}}:Asempiu/vector.js e nun {{ns:user}}:Asempiu/Vector.css.",
        "updated": "(Aggiurnatu)",
        "note": "<strong>Nota:</strong>",
-       "previewnote": "<strong>Ricòrditi ca chista è sulu n'antiprima.</strong>\nLi to canciamenti ancora nun foru sarvati!",
-       "continue-editing": "Vai a' l'aria di mudìfica",
-       "previewconflict": "St'antiprima currispunni a lu testu prisenti ntâ casedda di canciamentu cchiu' supra e rapprisenta la pàggina comu cumpariravi siddu scegghî di sarvàrila.",
-       "session_fail_preview": "<strong>Purtroppu nun hà statu pussìbbili sarvari li tò canciamenti pirchì li dati dâ sissioni hannu jutu pirduti.</strong>\nPi' favuri prova n'autra vota.\nSiddu ancora nun funziona, prova a' [[Special:UserLogout|nèsciri]] e tràsiri n'autra vota.",
+       "previewnote": "<strong>Arricòrdati ca chista è sulu n'antiprima.</strong>\nLi tò canciamenti ancora nun foru sarvati!",
+       "continue-editing": "Vai a l'ària di canciamentu",
+       "previewconflict": "St'antiprima currispunni a lu testu prisenti ntâ casedda di canciamentu cchiù supra e rapprisenta la pàggina comu cumparisci siddu scegghi di sarvàrila.",
+       "session_fail_preview": "<strong>Purtroppu nun fu pussìbbili sarvari li tò canciamenti pirchì li dati dâ sissioni foru pirduti.</strong>\nPi favuri prova n'àutra vota.\nSiddu ancora nun funziona, prova a [[Special:UserLogout|nèsciri]] e tràsiri n'àutra vota.",
        "session_fail_preview_html": "'''Semu spiacenti, nun hà statu pussìbbili elabburari lu canciamentu pirchì hannu jutu pirduti li dati rilativi â sissioni.'''\n\n''Poichì nta stu situ è abbilitatu l'usu di HTML senza limitazzioni, l'antiprima nun veni visualizzata; si tratta di na misura di sicurizza contra l'attacchi JavaScript.''\n\n'''Siddu chistu è nu tintativu liggìttimu di canciamentu, arriprova. Siddu lu prubbrema pirsisti, si pò pruvari a [[Special:UserLogout|sculligàrisi]] e effittuari n'accessu novu.'''",
        "token_suffix_mismatch": "'''Lu canciamentu nun fu sarvatu pirchì lu client ammustrau di gèstiri 'n modu sbagghiatu li caràttiri di puntiggiatura nta lu token assuciatu a iddu. P'evitari na curruzzioni pussìbbili dô testu dâ pàggina, fu rifiutatu tuttu lu canciamentu. Sta situazzioni pò virificàrisi, certi voti, quannu s'adòpiranu arcuni sirvizza di proxy anònimi via web chi prisèntanu bug.'''",
-       "edit_form_incomplete": "<strong>Quarchi' parti dû mòdulu pâ mudìfica nun arrivau ô ''server''; cuntrolla bonu chi' tutti i to canciamenti su' ntatti e prova n'autra vota.</strong>",
+       "edit_form_incomplete": "<strong>Quarchi parti dû mòdulu pô canciamentu nun arrivau ô ''server''; cuntrolla bonu chi tutti li tò canciamenti sunnu ntatti e prova n'àutra vota.</strong>",
        "editing": "Canciamentu di $1",
        "creating": "Criazzioni di $1",
        "editingsection": "Canciamentu di $1 (sizzioni)",
-       "editingcomment": "Canciamentu di $1 (nova sizzioni)",
+       "editingcomment": "Canciamentu di $1 (sizzioni nova)",
        "editconflict": "Cunflittu d'edizzioni: $1",
        "explainconflict": "N'àutru utenti havi sarvatu na virsioni nova dâ pàggina mentri stavi effittuannu li canciamenti.\nLa casella di canciamentu supiriuri cunteni lu testu dâ pàggina attuarmenti online, accussì comu hà statu aggiurnatu di l'àutru utenti.\nLa virsioni cu li tò canciamenti è mmeci ripurtata ntâ casella di canciamentu nfiriuri.\nSiddu addisìi cunfirmàrili, hai a ripurtari li tò canciamenti ntô testu asistenti (casella supiriuri).\nPrimennu lu pulsanti '{{int:savearticle}}', veni sarvatu '''sulu''' lu testu cuntinutu ntâ casella di canciamentu supiriuri.",
        "yourtext": "Lu tò testu",
        "storedversion": "La virsioni mimurizzata",
-       "nonunicodebrowser": "<strong>Accura: Lu to browser nun supporta bonu l'Unicode.</strong>\nFu' attivata na contramisura pi' cunsintìriti di canciari li pàggini in sicurizza: li caràttiri nun-ASCII spuntirannu nta la casedda di mudìfica comu còdici esadicimali.",
+       "nonunicodebrowser": "<strong>Accura: Lu tò browser nun supporta bonu l'Unicode.</strong>\nFu attivata na contramisura pi cunzintìriti di canciari li pàggini n sicurizza: li caràttiri nun-ASCII spùntanu nta la casedda di canciamentu comu còdici esadicimali.",
        "editingold": "'''Accura: si sta canciannu na virsioni nun aggiurnata dâ pàggina.<br /> Siddu si scegghi di sarvàrila, tutti li canciamenti appurtati doppu sta rivisioni vannu pirduti.'''",
        "yourdiff": "Diffirenzi",
-       "copyrightwarning": "Pi' favuri nota ca tutti li cuntribbuti mannati a' {{SITENAME}} s'hannu a' cunsiddirari sutta â licenza d'usu $2 (talìa $1 pî dittagghî).\nSi' nun voi ca li to testi vènunu mudificati senza nuddu riguardu e ridistribbuùti a' vogghia, allura nê mannari cca.<br />\nMannannu lu to testu nni dichiari sparti chi' lu scrivisti tu pirsunalmenti, o puru ca lu cupiasti di na fonti di pùbblicu duminiu o analugamenti lìbbira.\n<strong>Nun mannari matiriali cupertu di drittu d'auturi senza auturizzazzioni!</strong>",
-       "copyrightwarning2": "Pi' favuri nota ca tutti li cuntribbuti mannati a' {{SITENAME}} ponnu vèniri canciati, altirati o cancillati di l'autri participanti.\nSi' nun voi ca li to testi vènunu mudificati senza nuddu riguardu, allura nê mannari cca.<br />\nMannannu lu to testu nni dichiari sparti ca lu scrivisti tu pirsunalmenti, o puru ca lu cupiasti di na fonti di pùbblicu duminiu o analugamenti lìbbira (talìa $1 pi' majuri dittagghî).\n<strong>Nun mannari matiriali cupertu di drittu d'auturi senza auturizzazzioni!</strong>",
+       "copyrightwarning": "Pi favuri nota ca tutti li cuntribbuti mannati a {{SITENAME}} s'hannu a cunziddirari sutta â licenza d'usu $2 (talìa $1 pî dittagghî).\nSi nun voi ca li tò testi vèninu canciati senza nuddu riguardu e ridistribbuuti a vogghia, allura nun li mannari ccà.<br />\nMannannu lu tò testu dichiari chi lu scrivisti tu pirsunalmenti, o puru ca lu cupiasti di na fonti di pùbblicu duminiu o analugamenti lìbbira.\n<strong>Nun mannari matiriali cupertu di drittu d'auturi senza auturizzazzioni!</strong>",
+       "copyrightwarning2": "Pi favuri nota ca tutti li cuntribbuti mannati a {{SITENAME}} ponnu vèniri canciati, altirati o cancillati di l'àutri participanti.\nSi nun voi ca li tò testi vèninu canciati senza nuddu riguardu, allura nun li mannari ccà.<br />\nMannannu lu tò testu dichiari ca lu scrivisti tu pirsunalmenti, o puru ca lu cupiasti di na fonti di pùbblicu duminiu o analugamenti lìbbira (talìa $1 pi maiuri dittagghî).\n<strong>Nun mannari matiriali cupertu di drittu d'auturi senza auturizzazzioni!</strong>",
        "editpage-cannot-use-custom-model": "Lu mudellu dû cuntinutu di sta pàggina nun si pò canciari.",
-       "longpageerror": "<strong>Erruri: Lu testu ca hai suttamisu è longu {{PLURAL:$1|un kilobyte|$1 kilobyte}}, cchiù' ssai dû màssimu ca è di {{PLURAL:$2|un kilobyte|$2 kilobyte}}.</strong>\nNun si po' sarvari.",
-       "readonlywarning": "<strong>Accura: Lu database è fermu pi manutinzioni, pirciò nun poi sarvari li tò canciamenti nta stu mumentu.</strong>\nLa cosa megghia è fari un copia e ncodda dû testu nta n'àutru prugramma e sarvàrilu pi quannu lu database torna accissìbbili.\n\nL'amministraturi ca bluccau lu database desi sta spiegazzioni: $1",
-       "protectedpagewarning": "<strong>Accura: Sta pàggina fu' prutetta a' manera chi' sulu l'utenti cu' privileggi d'amministraturi a ponnu canciari.</strong>\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
-       "semiprotectedpagewarning": "<strong>Nota:</strong> Sta pàggina fu' prutetta a' manera chi' sulu l'utenti riggistrati la ponnu canciari.\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
+       "longpageerror": "<strong>Erruri: Lu testu ca suttamittisti è longu {{PLURAL:$1|un kilobyte|$1 kilobyte}}, cchiossai dû màssimu chi è di {{PLURAL:$2|un kilobyte|$2 kilobyte}}.</strong>\nNun si pò sarvari.",
+       "readonlywarning": "<strong>Accura: Lu database è fermu pi manutinzioni, pirciò nun poi sarvari li tò canciamenti nta stu mumentu.</strong>\nLa cosa megghia è fari un copia e ncodda dû testu nta n'àutru prugramma e sarvàrilu pi quannu lu database torna accissìbbili.\n\nL'amministraturi ca bluccau lu database desi sta spigazzioni: $1",
+       "protectedpagewarning": "<strong>Accura: Sta pàggina fu prutetta di manera chi sulu l'utenti cu privileggi d'amministraturi la ponnu canciari.</strong>\nPi rifirimentu, ccassutta è arripurtata l'ùrtima vuci dû riggistru:",
+       "semiprotectedpagewarning": "<strong>Nota:</strong> Sta pàggina fu prutetta di manera chi sulu l'utenti riggistrati la ponnu canciari.\nPi rifirimentu, ccassutta è arripurtata l'ùrtima vuci dû riggistru:",
        "cascadeprotectedwarning": "<strong>Accura:</strong> Sta pàggina fu bluccata di manera ca sulu l'utenti cu privileggi di amministraturi la ponnu canciari, pirchì veni nclusa {{PLURAL:$1|ntâ pàggina  siquenti ca è prutiggiuta|ntê pàggini siquenti ca sunnu prutiggiuti}} a cascata:",
        "titleprotectedwarning": "<strong>Accura: Sta pàggina fu prutetta di manera c'aggiùvanu [[Special:ListGroupRights|privileggi spicìfici]] pi criàrila.</strong>\nPi rifirimentu, ccassutta è ripurtata l'ùrtima vuci dû riggistru:",
        "templatesused": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta sta pàggina:",
        "templatesusedsection": "{{PLURAL:$1|Template adupiratu|Template adupirati}} nta sta sizzioni:",
        "template-protected": "(prutettu)",
        "template-semiprotected": "(semiprutettu)",
-       "hiddencategories": "Sta pàggina apparteni a' {{PLURAL:$1|na catigurìa ammucciata|$1 catigurìi ammucciati}}:",
+       "hiddencategories": "Sta pàggina apparteni a {{PLURAL:$1|na catigurìa ammucciata|$1 catigurìi ammucciati}}:",
        "edittools": "<!-- Chistu testu cumpari sutta li moduli di canciu e carricamentu. -->",
        "nocreatetext": "{{SITENAME}} limitau la pussibbilitati di criari pàggini novi.\nPoi turnari n arreri e canciari na pàggina già esistenti, o puru [[Special:UserLogin|tràsiri o criari nu cuntu novu]].",
        "nocreate-loggedin": "Nun hai lu pirmissu pi criari pàggini novi.",
-       "sectioneditnotsupported-title": "Nun è suppurtatu lu canciamentu pi' sizzioni",
-       "sectioneditnotsupported-text": "Nta sta pàggina nun è suppurtatu lu canciamentu pi' sizzioni.",
+       "sectioneditnotsupported-title": "Nun è suppurtatu lu canciamentu pi sizzioni",
+       "sectioneditnotsupported-text": "Nta sta pàggina nun è suppurtatu lu canciamentu pi sizzioni.",
        "permissionserrors": "Erruri di pirmissu",
-       "permissionserrorstext": "Nun hai lu pirmissu di fari sta cosa, pi' {{PLURAL:$1|chistu motivu|chisti mutivi}}:",
-       "permissionserrorstext-withaction": "Nun hai lu pirmissu di $2, pi' {{PLURAL:$1|chistu mutivu|chisti mutivi}}:",
+       "permissionserrorstext": "Nun hai lu pirmissu di fari sta cosa, pi {{PLURAL:$1|stu mutivu|sti mutivi}}:",
+       "permissionserrorstext-withaction": "Nun hai lu pirmissu di $2, pi {{PLURAL:$1|stu mutivu|sti mutivi}}:",
        "recreate-moveddeleted-warn": "'''Accura: stai pi criari na pàggina chi fu cancillata 'n passatu.'''\n\nAccuràtivi ch'è uppurtunu cuntinuari a canciari sta pàggina.\nL'alencu dî cancillazzioni e spustamenti rilativi veni ripurtatu ccà pi cummudità:",
        "moveddeleted-notice": "Sta pàggina fu scancillata. La lista di li scancillazzioni e spustamenti veni ammustrata di sècutu pi nfurmazzioni.",
-       "log-fulllog": "Talìa lu riggìstru cumpletu",
-       "edit-hook-aborted": "Canciamentu annullatu di n'hook.\nNun desi nudda spiegazzioni.",
-       "edit-gone-missing": "Nun si po' aggiurnari la pàggina.\nPari ca fu cancillata.",
+       "log-fulllog": "Talìa lu riggistru cumpletu",
+       "edit-hook-aborted": "Canciamentu annullatu di n'hook.\nNun desi nudda spigazzioni.",
+       "edit-gone-missing": "Nun si pò aggiurnari la pàggina.\nPari ca fu cancillata.",
        "edit-conflict": "Cunflittu d'edizzioni.",
-       "edit-no-change": "La to mudìfica fu' gnurata pirchì nun foru appurtati canciamenti ntô testu.",
+       "edit-no-change": "Lu tò canciamentu fu gnuratu pirchì nun foru appurtati canciamenti ntô testu.",
        "postedit-confirmation-created": "La pàggina fu criata.",
        "postedit-confirmation-restored": "La pàggina fu ripristinata.",
-       "postedit-confirmation-saved": "Lu to canciamentu fu sarvatu.",
+       "postedit-confirmation-saved": "Lu tò canciamentu fu sarvatu.",
        "edit-already-exists": "Nun fu pussìbbili criari na pàggina nova.\nGià esisti.",
        "defaultmessagetext": "Testu dû missaggiu pridifinutu",
-       "content-failed-to-parse": "Anàlisi sintàttica dû cuntinutu $2 pû mudellu $1 nun rinisciuta: $3",
+       "content-failed-to-parse": "Anàlisi sintàttica dû cuntinutu $2 pû mudellu $1 nun arrinisciuta: $3",
        "invalid-content-data": "Dati nun vàlidi ntô cuntinutu",
-       "content-not-allowed-here": "U cuntinutu \"$1\" nun è cunsintutu ntâ pàggina [[$2]]",
-       "editwarning-warning": "Annannutìnni di sta pàggina poi pèrdiri i canciamenti ch'hai fattu.\nSi' si' trasutu, poi disattivari st'avvisu ntâ sizzioni \"{{int:prefs-editing}}\" dî to prifirenzi.",
+       "content-not-allowed-here": "Lu cuntinutu \"$1\" nun è cunzintutu ntâ pàggina [[$2]]",
+       "editwarning-warning": "Lassannu sta pàggina poi pèrdiri li canciamenti ca facisti.\nSi trasisti, poi disattivari st'avvisu ntâ sizzioni \"{{int:prefs-editing}}\" dî tò prifirenzi.",
        "editpage-notsupportedcontentformat-title": "Furmatu di cuntinutu nun suppurtatu",
-       "editpage-notsupportedcontentformat-text": "U furmatu di cuntinutu $1 non è suppurtatu dû mudellu di cuntinutu $2.",
+       "editpage-notsupportedcontentformat-text": "Lu furmatu di cuntinutu $1 nun è suppurtatu dû mudellu di cuntinutu $2.",
        "content-model-wikitext": "wikitestu",
        "content-model-text": "testu sìmplici",
        "content-model-javascript": "JavaScript",
        "content-json-empty-object": "Oggettu vacanti",
        "content-json-empty-array": "Vitturi vacanti",
        "duplicate-args-warning": "<strong>Accura:</strong> [[:$1]] sta chiamannu [[:$2]] cu cchiossai dûn valuri comu paràmitru \"$3\". E' adupiratu sulu l'ùrtimu valuri spicificatu.",
-       "duplicate-args-category": "Pàggini chi' cuntènunu chiamati a' template cu' argumenti duplicati",
-       "duplicate-args-category-desc": "A pàggina cunteni chiamati a' template chi' adòpirunu argumenti duplicati, comu <code><nowiki>{{pippu|plutu=1|plutu=2}}</nowiki></code> o <code><nowiki>{{pippu|plutu|1=papirinu}}</nowiki></code>.",
+       "duplicate-args-category": "Pàggini chi cuntèninu chiamati a template cu argumenti duplicati",
+       "duplicate-args-category-desc": "La pàggina cunteni chiamati a template chi adòpiranu argumenti duplicati, comu <code><nowiki>{{cicciu|plutu=1|plutu=2}}</nowiki></code> o <code><nowiki>{{cicciu|plutu|1=papirinu}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Accura: Sta pàggina cunteni troppi chiamati ê parser functions.\n\nAvissi a èssiri menu di $2, ô mumentu ci {{PLURAL:$1|nn'è $1|nni sunnu $1}}.",
        "expensive-parserfunction-category": "Pàggini cu troppi chiamati ê parser functions",
        "post-expand-template-inclusion-warning": "Accura: la diminzioni di li template nziriti è troppu granni.\nArcuni template non vènunu nziriti.",
        "post-expand-template-inclusion-category": "Pàggini unni la diminsioni dê template nclusi supira lu limiti cunsintutu",
        "post-expand-template-argument-warning": "Attenzioni: Sta pàggina cunteni almenu n'argomentu di nu template ca havi na diminsioni troppu rossa pi essiri espansu. St'argomenti verrannu omessi.",
        "post-expand-template-argument-category": "Pàggini ca cuntèninu template cu argumenti mancanti",
-       "parser-template-loop-warning": "Rilivatu un cìrculu di di Template: [[$1]]",
-       "parser-template-recursion-depth-warning": "Passatu u lìmiti di funnu pâ ricursioni di template ($1)",
-       "language-converter-depth-warning": "Passatu u lìmiti di funnu dû cunvirtituri di lingua ($1)",
-       "node-count-exceeded-category": "Pàggini unni fu' passatu u nùmmiru màssimu di gruppi",
-       "node-count-exceeded-category-desc": "A pàggina passa u nùmmiru massimu di gruppi.",
-       "node-count-exceeded-warning": "Sta pàggina passau u nùmmiru màssimu di gruppi",
-       "expansion-depth-exceeded-category": "Pàggini unni fu' passatu u funnu màssimu di espansioni",
-       "expansion-depth-exceeded-category-desc": "A pàggina passa u funnu màssimu di espansioni.",
-       "expansion-depth-exceeded-warning": "Sta pàggina passau u funnu màssimu di espansioni",
+       "parser-template-loop-warning": "Rilivatu un cìrculu di lu Template: [[$1]]",
+       "parser-template-recursion-depth-warning": "Passatu lu lìmiti di funnu pâ ricursioni di template ($1)",
+       "language-converter-depth-warning": "Passatu lu lìmiti di funnu dû cunvirtituri di lingua ($1)",
+       "node-count-exceeded-category": "Pàggini unni fu passatu lu nùmmiru di gruppa màssimu",
+       "node-count-exceeded-category-desc": "La pàggina passa lu nùmmiru di gruppa màssimu.",
+       "node-count-exceeded-warning": "Sta pàggina passau lu nùmmiru di gruppa màssimu",
+       "expansion-depth-exceeded-category": "Pàggini unni fu passatu lu funnu d'espanzioni màssimu",
+       "expansion-depth-exceeded-category-desc": "La pàggina passa lu funnu d'espanzioni màssimu.",
+       "expansion-depth-exceeded-warning": "Sta pàggina passau lu funnu d'espanzioni màssimu",
        "parser-unstrip-loop-warning": "Rilivatu un cìrculu di Unstrip",
-       "parser-unstrip-recursion-limit": "Passatu u lìmiti di ricursioni di Unstrip ($1)",
+       "parser-unstrip-recursion-limit": "Passatu lu lìmiti di ricursioni di Unstrip ($1)",
        "converter-manual-rule-error": "Rilivatu n'erruri nta na règula manuali di cunvirsioni di lingua",
        "undo-success": "Lu canciamentu pò essiri annullatu.\nVirificati lu paraguni ccà sutta p'accuràrivi ca lu cuntinutu è chiddu addisiatu e doppu sarvati la pàggina pi cumplitari l'annullamentu.",
        "undo-failure": "Lu canciamentu nun pò èssiri annullatu a càusa d'un cunflittu cu li canciamenti ntirmedi.",
        "undo-norev": "Lu canciamentu nun pò essiri annullatu pirchì nun esisti o fù cancillato.",
-       "undo-nochange": "Pari chi' lu canciamentu già fu annullatu.",
+       "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 a virsioni $1 fatta di n'utenti ammucciatu",
+       "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 '''$1''', chi cumprenni lu tò nnirizzu IP ('''$4'''), fu bluccata di [[User:$3|$3]].\n\nLa spigazzioni data di $3 è ''$2''",
-       "viewpagelogs": "Talìa li riggìstra di sta pàggina",
-       "nohistory": "Nun cc'è crunuluggìa dî canciamenti pi' sta pàggina.",
+       "viewpagelogs": "Talìa li riggistri di sta pàggina",
+       "nohistory": "Nun c'è crunuluggìa dî canciamenti pi sta pàggina.",
        "currentrev": "Virsioni currenti",
        "currentrev-asof": "Virsioni currenti ô $1",
        "revisionasof": "Virsioni dû $1",
        "revision-info": "Virsioni dû $1 di {{GENDER:$6|$2}}$7",
-       "previousrevision": "← Virsioni cchiu' vecchia",
-       "nextrevision": "Virsioni cchiu' nova →",
-       "currentrevisionlink": "Ùltima virsioni",
+       "previousrevision": "← Virsioni cchiù vecchia",
+       "nextrevision": "Virsioni cchiù nova →",
+       "currentrevisionlink": "Ùrtima virsioni",
        "cur": "curr",
        "next": "pròssimu",
        "last": "pric",
        "histlegend": "Pû cunfruntu tra virsioni: scègghiri li caseddi currispunnenti ê virsioni di cunfruntari e carcari Invio o lu buttuni ô funnu.<br />\nLiggenna: <strong>({{int:cur}})</strong> = cunfruntari cu la virsioni currenti, <strong>({{int:last}})</strong> = cunfruntari cu la virsioni avanti d'idda, <strong>{{int:minoreditletter}}</strong> = canciamentu nicu",
        "history-fieldset-title": "Scurri ntâ crunuluggìa",
        "history-show-deleted": "Sulu chiddi cancillati",
-       "histfirst": "i cchiu' vecchî",
-       "histlast": "i cchiu' novi",
+       "histfirst": "li cchiù vecchî",
+       "histlast": "li cchiù novi",
        "historysize": "({{PLURAL:$1|1 byte|$1 byte}})",
        "historyempty": "(vacanti)",
        "history-feed-title": "Crunuluggìa dî canciamenti",
-       "history-feed-description": "Crunuluggìa dî canciamenti a' sta pàggina nta sta wiki",
+       "history-feed-description": "Crunuluggìa dî canciamenti a sta pàggina nta sta wiki",
        "history-feed-item-nocomment": "$1 lu $2",
-       "history-feed-empty": "La pàggina chi' dumannasti nun esisti.\nPo' aviri statu cancillata dâ wiki, o puru canciata di nomu.\nProva a' [[Special:Search|circari ntâ wiki]] siddu cci sunnu pàggini novi chi' ti ponnu ntirissari.",
+       "history-feed-empty": "La pàggina chi addumannasti nun esisti.\nPò aviri statu cancillata dâ wiki, o puru canciatu lu sò nomu.\nProva a [[Special:Search|circari ntâ wiki]] siddu ci sunnu pàggini novi chi ti ponnu ntirissari.",
        "history-edit-tags": "Cancia l'etichetti dî virsioni scigghiuti",
-       "rev-deleted-comment": "(riassuntu dû canciamentu rimossu)",
-       "rev-deleted-user": "(nomu utenti rimossu)",
-       "rev-deleted-event": "(dittagghî dû riggistru rimossi)",
-       "rev-deleted-user-contribs": "[nomu utenti o nnirizzu IP rimossi - canciamentu ammucciatu ntê cuntribbuti]",
+       "rev-deleted-comment": "(riassuntu dû canciamentu cancillatu)",
+       "rev-deleted-user": "(nomu utenti cancillatu)",
+       "rev-deleted-event": "(dittagghî dû riggistru cancillati)",
+       "rev-deleted-user-contribs": "[nomu utenti o nnirizzu IP cancillati - canciamentu ammucciatu ntê cuntribbuti]",
        "rev-deleted-text-permission": "Sta virsioni dâ pàggina hà statu '''cancillata'''.\nCunzurtari lu [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log di cancillazzioni] pi ultiriuri dittagghi.",
-       "rev-suppressed-text-permission": "Sta virsioni dâ pàggina fu' <strong>supprimuta</strong>.\nSi ponnu a' vìdiri i dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
+       "rev-suppressed-text-permission": "Sta virsioni dâ pàggina fu <strong>supprimuta</strong>.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].",
        "rev-deleted-text-unhide": "Sta virsioni dâ pàggina fu <strong>cancillata</strong>.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].\nAncora poi [$1 taliari sta virsioni] si voi prucèdiri.",
        "rev-suppressed-text-unhide": "Sta virsioni dâ pàggina fu <strong>supprimuta</strong>.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} riggistru dî supprissioni].\nAncora poi [$1 taliari sta virsioni] si voi prucèdiri.",
        "rev-deleted-text-view": "Sta virsioni dâ pàggina fu <strong>cancillata</strong>.\nTu ancora la poi taliari; si ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
        "revdelete-nooldid-title": "Virsioni oggettu nun vàlida",
        "revdelete-nooldid-text": "O nun spicificasti nudda virsioni comu oggettu di sta funzioni, o la virsioni chi spicificasti nun esisti, o puru stai pruvannu a ammucciari la virsioni currenti.",
        "revdelete-no-file": "Lu file spicificatu nun esisti.",
-       "revdelete-show-file-confirm": "Si' sicuru chi' voi talìari na virsioni cancillata dû file \"<nowiki>$1</nowiki>\" dû $2 ê $3?",
+       "revdelete-show-file-confirm": "Sî sicuru chi voi talìari na virsioni cancillata dû file \"<nowiki>$1</nowiki>\" dû $2 ê $3?",
        "revdelete-show-file-submit": "Sì",
        "revdelete-selected-text": "{{PLURAL:$1|Virsioni scigghiuta|Virsioni scigghiuti}} di [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Virsioni dû file scigghiuta|Virsioni dû file scigghiuti}} di [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Eventu dû riggistru silizziunatu|Eventi dû riggistru silizziunati}}:",
-       "revdelete-text-text": "I virsioni cancillati spuntirannu ancora ntâ crunuluggìa dâ pàggina, però parti dû so cuntinutu sarannu inaccissìbbili ô pùbblicu.",
-       "revdelete-text-file": "I virsioni di file cancillati spuntirannu ancora ntâ crunuluggìa dû file, però parti dû so cuntinutu sarannu inaccissìbbili ô pùbblicu.",
-       "logdelete-text": "L'eventi cancillati spuntirannu ancora ntê riggistra, però parti dû so cuntinutu sarannu inaccissìbbili ô pùbblicu.",
-       "revdelete-text-others": "L'autri amministratura purrannu ancora aviri accessu ô cuntinutu ammucciatu e annullàrinni la cancillazzioni, a' menu chi' nun si pònunu autri ristrizzioni ancora.",
-       "revdelete-confirm": "Pi' favuri cunfirma chi' hai ntinzioni di fari sta cosa, chi' capisci quali su' i so cunsiguenzi, e chi' stai prucidennu ntô rispettu dî [[{{MediaWiki:Policy-url}}|linî guida]].",
-       "revdelete-suppress-text": "A supprissioni s'avissi a' adupirari <strong>sulu</strong> nta sti casi:\n* nfurmazzioni putenzialmenti diffamatorî\n* nfurmazzioni pirsunali inuppurtuni\n*: <em>nnirizzi di casa, nùmmira di tilèfunu, còdici fiscali, etc.</em>",
+       "revdelete-text-text": "Li virsioni cancillati spùntanu ancora ntâ crunuluggìa dâ pàggina, pirò parti dû sò cuntinutu nun sunnu accissìbbili ô pùbblicu.",
+       "revdelete-text-file": "Li virsioni di file cancillati spùntanu ancora ntâ crunuluggìa dû file, pirò parti dû sò cuntinutu nun sunnu accissìbbili ô pùbblicu.",
+       "logdelete-text": "L'eventi cancillati spùntanu ancora ntê riggistri, pirò parti dû sò cuntinutu nun sunnu accissìbbili ô pùbblicu.",
+       "revdelete-text-others": "L'àutri amministratura ponnu ancora aviri accessu ô cuntinutu ammucciatu e annullàrinni la cancillazzioni, a menu chi nun si pòninu àutri ristrizzioni ancora.",
+       "revdelete-confirm": "Pi favuri cunferma chi hai ntinzioni di fari sta cosa, chi capisci quali sù li sò cunziguenzi, e chi stai prucidennu ntô rispettu dî [[{{MediaWiki:Policy-url}}|lìnii guida]].",
+       "revdelete-suppress-text": "La supprissioni s'avissi a adupirari <strong>sulu</strong> nta sti casi:\n* nfurmazzioni putinzialmenti diffamatorî\n* nfurmazzioni pirsunali nun oppurtuni\n*: <em>nnirizzi di casa, nùmmira di telèfunu, còdici fiscali, ecc.</em>",
        "revdelete-legend": "Mposta li limitazzioni siquenti supra li virsioni cancillati:",
        "revdelete-hide-text": "Testu dâ virsioni",
        "revdelete-hide-image": "Ammuccia lu cuntinutu dû file",
        "revdelete-unsuppress": "Elìmina le limitazzioni su li rivisioni ripristinati",
        "revdelete-log": "Mutivu:",
        "revdelete-submit": "Àpplica {{PLURAL:$1|â virsioni scigghiuta|ê virsioni scigghiuti}}",
-       "revdelete-success": "Visibbilitati dâ virsioni mpustata currittamenti.",
-       "revdelete-failure": "A visibbilitati dâ virsioni nun potti èssiri mpustata:\n$1",
-       "logdelete-success": "Visibbilitati di l'eventu mpustata currittamenti.",
+       "revdelete-success": "Visibbilità dâ virsioni mpustata currettamenti.",
+       "revdelete-failure": "La visibbilità dâ virsioni nun potti èssiri mpustata:\n$1",
+       "logdelete-success": "Visibbilità di l'eventu mpustata currettamenti.",
        "logdelete-failure": "'''La visibilità dû eventu nun po essiri impustata:'''\n$1",
        "revdel-restore": "cancia la visibbilità",
        "pagehist": "Crunuluggìa dâ pàggina",
        "deletedhist": "Crunuluggìa cancillata",
-       "revdelete-hide-current": "Erruri ammucciannu l'elimentu a' data $1 $2: È la virsioni currenti.\nNun si po' ammucciari.",
+       "revdelete-hide-current": "Erruri ammucciannu l'elimentu a data $1 $2: È la virsioni currenti.\nNun si pò ammucciari.",
        "revdelete-show-no-access": "Impussibili ammustrari l'oggettu cu data $1 $2 in quantu fu identificatu comu \"riservatu\" e nun si disponi di lu rilativu accessu.",
        "revdelete-modify-no-access": "Impussibili canciari l'oggettu cu data $1 $2 in quantu fu identificatu comu \"riservatu\" e nun si disponi di lu rilativu accessu.",
        "revdelete-modify-missing": "Impossibili canciari l'oggettu cu ID $1 in quantu nun è presenti nô database.",
        "revdelete-no-change": "'''Attenzioni:''' l'oggettu cu data $1 $2 aveva già l'impostazioni di visibilità richiesti.",
        "revdelete-concurrent-change": "Impussibili canciari l'oggettu cu data $1 $2 in quantu lu sò statu fu canciatu da n'autru utenti mentri si tintava lu canciamentu.\nCuntrolla lu log.",
-       "revdelete-only-restricted": "Erruri ntô mmucciamentu di l'elimentu datatu $2,$1: Non si ponnu livari elimenti dâ vista di l'amministratura senza puru scègghîri una di l'autri opzioni di visibbilitati.",
-       "revdelete-reason-dropdown": "* Mutivi cchiu' cumuni pâ cancillazzioni\n** Viulazzioni dû drittu d'auturi\n** Cummenti o nfurmazzioni pirsunali inuppurtuni\n** Nomu utenti inuppurtunu\n** Nfurmazzioni putenzialmenti diffamatorî",
-       "revdelete-otherreason": "Autru/ultiriuri mutivu:",
+       "revdelete-only-restricted": "Erruri nta l'ammucciamentu di l'elimentu datatu $2,$1: Nun si ponnu livari elimenti dâ vista di l'amministratura senza puru scègghiri una di l'àutri opzioni di visibbilità.",
+       "revdelete-reason-dropdown": "* Mutivi cchiù cumuni pâ cancillazzioni\n** Viulazzioni dû drittu d'auturi\n** Cummenti o nfurmazzioni pirsunali nun oppurtuni\n** Nomu utenti nun oppurtunu\n** Nfurmazzioni putinzialmenti diffamatorî",
+       "revdelete-otherreason": "Àutru/ultiriuri mutivu:",
        "revdelete-reasonotherlist": "Àutru mutivu",
        "revdelete-edit-reasonlist": "Cancia li mutivazioni pi la cancillazzioni",
        "revdelete-offender": "Auturi dâ virsioni:",
        "suppressionlog": "Riggistru dî supprissioni",
        "suppressionlogtext": "Ccassutta c'è n'elencu dî cancillazzioni e dî blocchi chi cumpòrtanu l'ammucciata di cuntinutu a l'occhî di l'amministratura.\nSi pò cunzurtari la [[Special:BlockList|lista dî blocchi]] pi canùsciri li furbanna e li blocchi n viguri pi com'ora.",
        "mergehistory": "Junciuta dî crunuluggìi",
-       "mergehistory-header": "Sta pàggina fa' jùnciri li crunuluggìi di du pàggini, abbuccannu li virsioni di na pàggina surgenti nta na pàggina cchiu' nova.\nAssicùriti ca stu canciamentu mantiniràvi la cuntinuità storica di la pàggina.",
+       "mergehistory-header": "Sta pàggina fa jùnciri li crunuluggìi di dui pàggini, abbuccannu li virsioni di na pàggina surgenti nta na pàggina cchiù nova.\nAssicùrati ca stu canciamentu manteni la cuntinuità stòrica dâ pàggina.",
        "mergehistory-box": "Junci li storii di dui pàggini:",
        "mergehistory-from": "Pàggina d'orìggini:",
        "mergehistory-into": "Pàggina di distinazioni:",
-       "mergehistory-list": "Crunuluggìa chi' si po' jùnciri",
+       "mergehistory-list": "Crunuluggìa chi si pò jùnciri",
        "mergehistory-merge": "Si ponnu jùnciri li virsioni di [[:$1]] nnicati ccassutta â crunuluggìa di [[:$2]].\nAdòpira la culonna chî buttuna d'opzioni pi jùnciri sulu li virsioni fatti nfina â data e l'ura spicificati.\nGuàrdati ca s'adòpiri lijami di navigazzioni la culonna veni azzirata.",
        "mergehistory-go": "Vidi li canciamenti ca ponnu èssiri junciuti",
        "mergehistory-submit": "Junci li virsioni",
        "mergehistory-empty": "Nudda virsioni di jùnciri.",
-       "mergehistory-success": "$3 {{PLURAL:$3|virsioni di [[:$1]] fu' junciuta|$3 virsioni di [[:$1]] furu junciuti}} â crunuluggìa di [[:$2]].",
-       "mergehistory-fail": "Nun fu' pussìbbili jùnciri li crunuluggìi, pi' favuri cuntrolla n'autra vota li paràmitri chi' spicìficunu li pàggini e li dati.",
-       "mergehistory-fail-toobig": "Nun fu' pussìbbili jùnciri li crunuluggìi picchì s'avìssuru a' spustari cchiu' ssai virsioni dû limiti chi' è $1.",
+       "mergehistory-success": "$3 {{PLURAL:$3|virsioni di [[:$1]] fu junciuta|$3 virsioni di [[:$1]] foru junciuti}} â crunuluggìa di [[:$2]].",
+       "mergehistory-fail": "Nun fu pussìbbili jùnciri li crunuluggìi, pi favuri cuntrolla n'àutra vota li paràmitri chi spicìficanu li pàggini e li dati.",
+       "mergehistory-fail-toobig": "Nun fu pussìbbili jùnciri li crunuluggìi pirchì s'avìssiru a spustari cchiossai virsioni dû lìmiti chi è $1.",
        "mergehistory-no-source": "La pàggina d'orìggini $1 nun esisti.",
        "mergehistory-no-destination": "La pàggina di distinazzioni $1 nun esisti.",
-       "mergehistory-invalid-source": "La pàggina d'orìggini havi a' aviri nu tìtulu vàlidu.",
-       "mergehistory-invalid-destination": "La pàggina di distinazzioni havi a' aviri nu tìtulu vàlidu.",
-       "mergehistory-autocomment": "Junciuta la crunuluggìa di [[:$1]] a' chidda di [[:$2]]",
-       "mergehistory-comment": "Junciuta la crunuluggìa di [[:$1]] a' chidda di [[:$2]]: $3",
+       "mergehistory-invalid-source": "La pàggina d'orìggini havi a aviri nu tìtulu vàlidu.",
+       "mergehistory-invalid-destination": "La pàggina di distinazzioni havi a aviri nu tìtulu vàlidu.",
+       "mergehistory-autocomment": "Junciuta la crunuluggìa di [[:$1]] a chidda di [[:$2]]",
+       "mergehistory-comment": "Junciuta la crunuluggìa di [[:$1]] a chidda di [[:$2]]: $3",
        "mergehistory-same-destination": "Li pàggini d'orìggini e di distinazioni nun ponnu èssiri la stissa",
        "mergehistory-reason": "Mutivu:",
-       "mergelog": "Riggìstru dî junciuti",
+       "mergelog": "Riggistru dî junciuti",
        "revertmerge": "Annulla la junciuta",
-       "mergelogpagetext": "Appressu veni ammustrata na lista dî junciuti cchiu' ricenti dâ crunuluggìa di na pàggina cu' chidda di n'autra.",
+       "mergelogpagetext": "Appressu veni ammustrata na lista dî junciuti cchiù ricenti dâ crunuluggìa di na pàggina cu chidda di n'àutra.",
        "history-title": "Crunuluggìa dî canciamenti di \"$1\"",
        "difference-title": "Cunfruntu tra virsioni di \"$1\"",
        "difference-title-multipage": "Cunfruntu tra dî pàggini \"$1\" e \"$2\"",
        "showhideselectedversions": "Cancia la visibbilità dî virsioni scigghiuti",
        "editundo": "annulla",
        "diff-empty": "(Nudda diffirenza)",
-       "diff-multi-sameuser": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} dû stissu utenti nun {{PLURAL:$1|mustrata|mustrati}})",
-       "diff-multi-otherusers": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} di {{PLURAL:$2|n'autru utenti|autri $2 utenti}} nun {{PLURAL:$1|mustrata|mustrati}})",
-       "diff-multi-manyusers": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} di cchiu' ssai di {{PLURAL:$2|n'autru utenti|autri $2 utenti}} nun {{PLURAL:$1|mustrata|mustrati}})",
+       "diff-multi-sameuser": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} dû stissu utenti nun {{PLURAL:$1|ammustrata|ammustrati}})",
+       "diff-multi-otherusers": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} di {{PLURAL:$2|n'àutru utenti|àutri $2 utenti}} nun {{PLURAL:$1|ammustrata|ammustrati}})",
+       "diff-multi-manyusers": "({{PLURAL:$1|Na diffirenza minzana|$1 diffirenzi minzani}} di cchiossai di {{PLURAL:$2|n'àutru utenti|àutri $2 utenti}} nun {{PLURAL:$1|ammustrata|ammustrati}})",
        "difference-missing-revision": "{{PLURAL:$2|Na virsioni|$2 virsioni}} di sta diffirenza ($1) {{PLURAL:$2|nun fu attruvata|nun foru attruvati}}.\n\nStu fattu di sòlitu succedi quannu si segui nu lijami di diffirenza versu na pàggina chi fu cancillata.\nSi ponnu vìdiri li dittagghî ntô [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} riggistru dî cancillazzioni].",
-       "searchresults": "Risurtati dâ risciduta",
-       "searchresults-title": "Risurtati dâ risciduta di \"$1\"",
+       "searchresults": "Risurtati di l'arricerca",
+       "searchresults-title": "Risurtati di l'arricerca di \"$1\"",
        "titlematches": "Currispunnenzi ntê tìtuli dî pàggini",
        "textmatches": "Currispunnenzi ntô testu dî pàggini",
        "notextmatches": "Nudda currispunnenza ntô testu dî pàggini",
        "shown-title": "Ammustra {{PLURAL:$1|nu risultatu|$1 risultati}} pi pàggina",
        "viewprevnext": "Talìa ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "* Pàggina '''[[$1]]'''",
-       "searchmenu-new": "<strong>Crea la pàggina \"[[:$1]]\" supra a' sta wiki!<strong> {{PLURAL:$2|0=|Talìa macari la pàggina truvata câ to risciduta.|Talìa macari li risultati dâ to risciduta.}}",
+       "searchmenu-new": "<strong>Crea la pàggina \"[[:$1]]\" supra a sta wiki!<strong> {{PLURAL:$2|0=|Talìa macari la pàggina attruvata câ tò arricerca.|Talìa macari li pàggini attruvati câ tò arricerca.}}",
        "searchprofile-articles": "Pàggini di cuntinutu",
        "searchprofile-images": "File Multimidiali",
        "searchprofile-everything": "Tuttu",
        "searchprofile-advanced": "Avanzata",
-       "searchprofile-articles-tooltip": "Cerca nta $1",
+       "searchprofile-articles-tooltip": "Arricerca nta $1",
        "searchprofile-images-tooltip": "Cerca file",
        "searchprofile-everything-tooltip": "Cerca unnegghiè (puru ntî pàggini di discussioni)",
        "searchprofile-advanced-tooltip": "Cerca ntê namespace pirsunalizzati",
        "search-suggest": "Forsi circavutu: $1",
        "search-rewritten": "Sunnu ammustrati li risurtati pi $1. Mmeci cerca $2.",
        "search-interwiki-caption": "Pruggetti frati",
-       "search-interwiki-default": "Risultati di $1:",
+       "search-interwiki-default": "Risurtati di $1:",
        "search-interwiki-more": "(cchiù)",
        "search-relatedarticle": "Risultati currilati",
        "searchrelated": "currilati",
        "searchall": "tutti",
        "showingresults": "Ammustra nzinu a {{PLURAL:$1|'''1''' risurtatu|'''$1''' risurtati}} a pàrtiri dô nùmmuru '''$2'''.",
-       "showingresultsinrange": "Ccassutta {{PLURAL:$1|è ammustratu <strong>1</strong> risultatu|sunnu ammustrati <strong>$1</strong> risultati}} nta l'intirvallu di #<strong>$2</strong> a' #<strong>$3</strong>.",
-       "search-showingresults": "{{PLURAL:$4|Risultatu <strong>$1</strong> di <strong>$3</strong>|Risultati <strong>$1 - $2</strong> di <strong>$3</strong>}}",
+       "showingresultsinrange": "Ccassutta {{PLURAL:$1|è ammustratu <strong>1</strong> risultatu|sunnu ammustrati <strong>$1</strong> risurtati}} nta lu ntirvallu di #<strong>$2</strong> a #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|Risurtatu <strong>$1</strong> di <strong>$3</strong>|Risurtati <strong>$1 - $2</strong> di <strong>$3</strong>}}",
        "search-nonefound": "La circata nun desi nuddu risurtatu.",
        "powersearch-legend": "Ricerca avanzata",
        "powersearch-ns": "Cerca ntê namespace:",
-       "powersearch-togglelabel": "Scègghîli:",
+       "powersearch-togglelabel": "Scegghi:",
        "powersearch-toggleall": "Tutti",
        "powersearch-togglenone": "Nuddu",
-       "powersearch-remember": "Ricòrditi la scelta pî risciduti futuri",
+       "powersearch-remember": "Arricòrdati la scigghiuta pi l'arricerchi futuri",
        "search-external": "Ricerca sterna",
        "searchdisabled": "La circata nterna di {{SITENAME}} hà statu disabbilitata. Nta stu mentri, poi usari la circata supra Google o supra àutri muturi di circata. Accura ca li sò ìnnici dê cuntinuti di {{SITENAME}} ponnu nun èssiri aggiurnati.",
-       "search-error": "Mmattìu n'erruri duranti a risciduta: $1",
+       "search-error": "Ammattìu n'erruri duranti l'arricerca: $1",
        "preferences": "Prifirenzi",
-       "mypreferences": "Li me prifirenzi",
+       "mypreferences": "Li mè prifirenzi",
        "prefs-edits": "Nùmmiru di canciamenti:",
-       "prefsnologintext2": "Hâ' tràsiri pi' canciari i to prifirenzi.",
+       "prefsnologintext2": "Hai a tràsiri pi canciari li tò prifirenzi.",
        "prefs-skin": "Peddi",
        "skin-preview": "Antiprima",
        "datedefault": "Nudda prifirenza",
        "prefs-editing": "Canciamentu",
        "rows": "Righi:",
        "columns": "Culonni:",
-       "searchresultshead": "Risciduta",
+       "searchresultshead": "Arricerca",
        "stub-threshold": "Sogghia pi furmattari na liami comu bozza ($1):",
        "stub-threshold-sample-link": "esempiu",
        "stub-threshold-disabled": "Disattivatu",
-       "recentchangesdays": "Nùmmiru di jorna a' ammustrari nta l'ùrtimi cancaiamenti:",
+       "recentchangesdays": "Nùmmiru di jorna a ammustrari nta l'ùrtimi canciamenti:",
        "recentchangesdays-max": "(màssimu $1 {{PLURAL:$1|jornu|jorna}})",
-       "recentchangescount": "Nùmmiru di canciamenti a' ammustrari comu mpustazzioni pridifinuta:",
-       "prefs-help-recentchangescount": "Si rifirisci a' l'ùrtimi canciamenti, li crunuluggìi e li riggistra.",
+       "recentchangescount": "Nùmmiru di canciamenti a ammustrari comu mpustazzioni pridifinuta:",
+       "prefs-help-recentchangescount": "S'arrifirisci a l'ùrtimi canciamenti, li crunuluggìi e li riggistri.",
        "prefs-help-watchlist-token2": "Chista è la chiavi sigreta pû feed web dâ tò lista taliata.\nCuegghiè chi la canusci pò lèggiri la tò lista taliata, dunca nun la diffùnniri.\nSi t'aggiuva, [[Special:ResetTokens|la poi azzirari]].",
-       "savedprefs": "Li to prifirenzi foru sarvati.",
+       "savedprefs": "Li tò prifirenzi foru sarvati.",
        "timezonelegend": "Fusu urariu:",
        "localtime": "Ura lucali:",
        "timezoneuseserverdefault": "Adòpira l'ura pridifinuta dâ wiki ($1)",
        "timezoneuseoffset": "Àutru (spicificari diffirenza)",
        "servertime": "Ura dû server:",
-       "guesstimezone": "Pigghia chidda dû to browser",
+       "guesstimezone": "Pigghia chidda dû tò browser",
        "timezoneregion-africa": "Àfrica",
        "timezoneregion-america": "Amèrica",
        "timezoneregion-antarctica": "Antàrtidi",
        "timezoneregion-europe": "Europa",
        "timezoneregion-indian": "Ocèanu Innianu",
        "timezoneregion-pacific": "Ocèanu Pacìficu",
-       "allowemail": "Cunzenti la ricizzioni di posta elittrònica di l'autri utenti",
-       "prefs-searchoptions": "Risciduta",
+       "allowemail": "Cunzenti la ricizzioni di posta elittrònica di l'àutri utenti",
+       "prefs-searchoptions": "Arricerca",
        "prefs-namespaces": "Namespace",
        "default": "pridifinutu",
        "prefs-files": "File",
        "prefs-custom-css": "CSS pirsunalizzatu",
        "prefs-custom-js": "JavaScript pirsunalizzatu",
        "prefs-common-css-js": "CSS/JavaScript cunnivisu tra tutti li peddi:",
-       "prefs-reset-intro": "Poi adupirari sta pàggina pi' azzirari li to prifirenzi a' chiddi pridifinuti dû situ.\nSt'opirazzioni nun si po' annullari doppu ch'è fatta.",
+       "prefs-reset-intro": "Poi adupirari sta pàggina p'azzirari li tò prifirenzi a chiddi pridifinuti dû situ.\nSt'opirazzioni nun si pò annullari doppu ch'è fatta.",
        "prefs-emailconfirm-label": "Cunvàlida dâ posta elittrònica:",
        "youremail": "Nnirizzu di posta elittrònica:",
        "username": "{{GENDER:$1|Nomu utenti}}:",
        "prefs-memberingroups": "{{GENDER:$2|Membru|Membra}} {{PLURAL:$1|dû gruppu|dî gruppi}}:",
-       "prefs-registration": "Data dâ riggistrazioni:",
+       "prefs-registration": "Data dâ riggistrazzioni:",
        "yourrealname": "Nomu veru:",
        "yourlanguage": "Lingua:",
        "yourvariant": "Varianti dâ lingua pû cuntinutu:",
-       "prefs-help-variant": "L'ortugrafìa o varianti dâ lingua chi' prifirisci pi' mmustrari lu cuntinutu dî pàggini di sta wiki.",
+       "prefs-help-variant": "L'ortugrafìa o varianti dâ lingua chi prifirisci p'ammustrari lu cuntinutu dî pàggini di sta wiki.",
        "yournick": "Firma nova:",
-       "prefs-help-signature": "Li cummenta ntê pàggini di discussioni s'avìssiru a' firmari cu' \"<nowiki>~~~~</nowiki>\", ca veni cunvirtutu ntâ to firma cu' appressu la data.",
+       "prefs-help-signature": "Li cummenti ntê pàggini di discussioni s'avìssiru a firmari cu \"<nowiki>~~~~</nowiki>\", ca veni cunvirtutu ntâ tò firma cu appressu la data.",
        "badsig": "Firma grezza nun vàlida.\nCuntrolla l'etichetti HTML.",
-       "badsiglength": "La to firma è troppu longa.\nNun havi a' èssiri cchiu' longa di $1 {{PLURAL:$1|caràttiri|caràttiri}}.",
+       "badsiglength": "La tò firma è troppu longa.\nNun havi a èssiri cchiù longa di $1 {{PLURAL:$1|caràttiri|caràttiri}}.",
        "yourgender": "Comu prifirisci èssiri discrivutu?",
        "gender-unknown": "Quannu t'ammintua, si pò, lu prugramma adòpira lu gèniri grammaticali nèutru",
-       "gender-male": "N'auturi di pàggini dâ wiki",
-       "gender-female": "N'autrici di pàggini dâ wiki",
-       "prefs-help-gender": "Mpustari sta prifirenza è facultativu.\nU software adòpira u so valuri pi' parrari cu' tia, e di tia a' l'autri, facennu usu dû gèniri grammaticali currettu.\nSta nfurmazzioni sarravi pùbblica.",
+       "gender-male": "È riggistratu supra {{SITENAME}}",
+       "gender-female": "È riggistrata supra {{SITENAME}}",
+       "prefs-help-gender": "Mpustari sta prifirenza è facultativu.\nLu software adòpira lu sò valuri pi parrari cu tìa, e di tìa a l'àutri, facennu usu dû gèniri grammaticali currettu.\nSta nfurmazzioni è pùbblica.",
        "email": "Nnirizzu di posta elittrònica",
-       "prefs-help-realname": "Lu nomu veru è facultativu.\nSiddu scegghî di furnìrilu, veni adupiratu pi' dàriti crèditu dû tò travagghiu.",
-       "prefs-help-email": "Lu nnirizzu di posta elittrònica è facultativu, ma po' giuvari p'azzirari la password, ntô casu chi' tâ scordi.",
+       "prefs-help-realname": "Lu nomu veru è facultativu\nSiddu scegghi di furnìrilu, veni adupiratu pi' dàriti crèditu dû tò travagghiu.",
+       "prefs-help-email": "Lu nnirizzu di posta elittrònica è facultativu, ma pò aggiuvari p'azzirari la password, ntô casu chi ti la scordi.",
        "prefs-help-email-others": "Poi videmma scègghiri di pirmèttiri ca l'àutri ti cuntàttanu pi posta elittrònica a pàrtiri dî lijami chi s'attròvanu ntê tò pàggini d'utenti o di discussioni.\nLu tò nnirizzu nun veni rivilatu quannu l'àutri utenti ti cuntàttanu.",
        "prefs-help-email-required": "Lu nnirizzu di posta elittrònica è obbligatoriu.",
        "prefs-info": "Nfurmazzioni essinziali",
-       "prefs-i18n": "Intirnazziunalizzazioni",
+       "prefs-i18n": "Ntirnazziunalizzazzioni",
        "prefs-signature": "Firma",
        "prefs-dateformat": "Furmatu dâ data",
        "prefs-timeoffset": "Diffirenza d'urariu",
        "prefs-displaywatchlist": "Opzioni di visualizzazzioni",
        "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Diffirenzi",
-       "prefs-help-prefershttps": "Sta prifirenza faravi effettu â to pròssima trasuta.",
-       "prefswarning-warning": "Hai fattu canciamenti ê to prifirenzi chi' ancora nun furu sarvati.\nSi' ti nni vai di sta pàggina senza carcari \"$1\" i to prifirenzi nun sarannu sarvati.",
-       "prefs-tabs-navigation-hint": "Cunsigghiu: Poi adupirari i buttuni fileccia manca e' dritta pi' navigari tra dî linguetti ntâ lista.",
-       "email-address-validity-valid": "U nnirizzu e-mail pari bonu",
-       "email-address-validity-invalid": "Nsirisci nu nnirizzu e-mail bonu",
+       "prefs-help-prefershttps": "Sta prifirenza fa effettu â tò pròssima trasuta.",
+       "prefswarning-warning": "Facisti canciamenti ê tò prifirenzi chi ancora nun foru sarvati.\nSi ti nni vai di sta pàggina senza carcari \"$1\" li tò prifirenzi nun sunnu sarvati.",
+       "prefs-tabs-navigation-hint": "Cunzigghiu: Poi adupirari li buttuna fileccia a manu manca e a manu dritta pi navigari tra dî linguetti ntâ lista.",
+       "email-address-validity-valid": "Lu nnirizzu e-mail pari bonu",
+       "email-address-validity-invalid": "Nzirisci nu nnirizzu e-mail bonu",
        "userrights": "Gistioni dî dritti di l'utenti",
        "userrights-lookup-user": "Gistisci li gruppi di l'utenti",
        "userrights-user-editname": "Metti nu nomu utenti:",
        "userrights-editusergroup": "Cancia li gruppi di l'utenti",
        "saveusergroups": "Sarva li gruppi di l'utenti",
        "userrights-groupsmember": "Membru di:",
-       "userrights-groupsmember-auto": "Membru implìcitu di:",
-       "userrights-groups-help": "Poi canciari li gruppi unni è assignatu l'utenti:\n* Na casedda scigghiuta voli diri chi' l'utenti fa' parti dû gruppu.\n* Na casedda nun scigghiuta voli diri chi' l'utenti nun fa' parti dû gruppu.\n* Lu sìmmulu * voli diri chi' nun si po' cchiu' luvari l'utenti dûn gruppu na vota chi' fu' agghiunciutu, o vici versa.",
+       "userrights-groupsmember-auto": "Membru mplìcitu di:",
+       "userrights-groups-help": "Poi canciari li gruppi unni è assignatu l'utenti:\n* Na casedda scigghiuta voli diri chi l'utenti fa parti dû gruppu.\n* Na casedda nun scigghiuta voli diri chi l'utenti nun fa parti dû gruppu.\n* Lu sìmmulu * voli diri chi nun si pò cchiù livari l'utenti dûn gruppu na vota chi fu agghiunciutu, o vici versa.",
        "userrights-reason": "Mutivu:",
-       "userrights-no-interwiki": "Nun hai lu pirmissu di canciari li dritti di l'utenti nta l'autri wiki.",
+       "userrights-no-interwiki": "Nun hai lu pirmissu di canciari li dritti di l'utenti nta l'àutri wiki.",
        "userrights-nodatabase": "La basi di dati $1 nun esisti o nun è lucali.",
-       "userrights-nologin": "Hâ' [[Special:UserLogin|tràsiri]] cûn cuntu d'amministraturi pi' putiri assignari li dritti di l'utenti.",
-       "userrights-notallowed": "Nun hai lu pirmissu di agghiùnciri o livàri diritti a' l'utenti.",
-       "userrights-changeable-col": "Gruppi chi' si ponnu canciari",
-       "userrights-unchangeable-col": "Gruppi chi' nun si ponnu canciari",
-       "userrights-conflict": "Cunflittu di canciamentu dî dritti di l'utenti! Pi' favuri cuntrolla e cunfirma li to canciamenti.",
-       "userrights-removed-self": "Riniscisti a' livàriti li to stissi dritti. Pi' chistu, nun hai cchiu' l'accessu a' sta pàggina.",
+       "userrights-nologin": "Hai a [[Special:UserLogin|tràsiri]] cûn cuntu d'amministraturi pi putiri assignari li dritti di l'utenti.",
+       "userrights-notallowed": "Nun hai lu pirmissu di agghiùnciri o livari dritti a l'utenti.",
+       "userrights-changeable-col": "Gruppi chi si ponnu canciari",
+       "userrights-unchangeable-col": "Gruppi chi nun si ponnu canciari",
+       "userrights-conflict": "Cunflittu di canciamentu dî dritti di l'utenti! Pi favuri cuntrolla e cunferma li tò canciamenti.",
+       "userrights-removed-self": "Arriniscisti a livàriti li tò stissi dritti. Pi chistu, nun hai cchiù l'accessu a sta pàggina.",
        "group": "Gruppu:",
        "group-user": "Utenti",
        "group-autoconfirmed": "Utenti autu-cunfirmati",
        "right-createaccount": "Criari cunti novi di l'utenti",
        "right-minoredit": "Marcari canciamenti comu nichi",
        "right-move": "Spustari pàggini",
-       "right-move-subpages": "Spustari pàggini chî so suttapàggini",
+       "right-move-subpages": "Spustari pàggini chî sò suttapàggini",
        "right-move-rootuserpages": "Spustari pàggini ràdica di l'utenti",
        "right-move-categorypages": "Spustari pàggini di catigurìa",
        "right-movefile": "Spustari file",
        "right-reupload-own": "Suprascrìviri file esistenti carricati dû stissu utenti",
        "right-reupload-shared": "Suprascrìviri lucalmenti file prisenti ntô dipòsitu cunnivisu",
        "right-upload_by_url": "Carricari file partennu di n'URL",
-       "right-purge": "Svacantari la cache dû situ di na pàggina senza cunfirma",
-       "right-autoconfirmed": "Nun èssiri suggettu ê lìmiti basati supra a' l'IP",
+       "right-purge": "Svacantari la cache dû situ di na pàggina senza cunferma",
+       "right-autoconfirmed": "Nun èssiri suggettu ê lìmiti basati supra a l'IP",
        "right-bot": "Èssiri trattatu comu nu prucessu autumàticu",
        "right-nominornewtalk": "Nun fari pàrtiri l'avvisu di misaggiu novu quannu si fannu canciamenti nichi ntê pàggini di discussioni",
-       "right-apihighlimits": "Avìri limiti cchiu' auti pi' li ntirrugazzioni a' menzu API",
-       "right-writeapi": "Aduprirari l'API in scrittura",
+       "right-apihighlimits": "Aviri lìmiti cchiù àuti pi li ntirrugazzioni a menzu API",
+       "right-writeapi": "Adupirari l'API n scrittura",
        "right-delete": "Cancillari pàggini",
        "right-bigdelete": "Cancillari pàggini cu la crunuluggìa longa",
        "right-deletelogentry": "Cancillari e annullari la cancillazzioni di vuci di riggistru spicìfichi",
        "right-deleterevision": "Cancillari e annullari la cancillazzioni di virsioni spicìfichi dî pàggini",
-       "right-deletedhistory": "Vìdiri vuci dâ crunuluggìa cancillati, senza dû so testu assuciatu",
+       "right-deletedhistory": "Vìdiri vuci dâ crunuluggìa cancillati, senza dû sò testu assuciatu",
        "right-deletedtext": "Vìdiri lu testu cancillatu e li canciamenti tra dî virsioni cancillati",
        "right-browsearchive": "Circari pàggini cancillati",
        "right-undelete": "Annullari la cancillazzioni di pàggini",
-       "right-suppressrevision": "Vìdiri, ammucciari e ammustrari virsioni spicìfichi di pàggini di quali utenti è jè",
-       "right-viewsuppressed": "Vìdiri virsioni ammucciati a' quali utenti è jè",
+       "right-suppressrevision": "Vìdiri, ammucciari e ammustrari virsioni spicìfichi di pàggini d'utenti qualegghiè",
+       "right-viewsuppressed": "Vìdiri virsioni ammucciati a utenti qualegghiè",
        "right-suppressionlog": "Taliari li riggistri privati",
-       "right-block": "Bluccari autri utenti pi' nun fàricci fari canciamenti",
-       "right-blockemail": "Bluccari n'utenti pi' nun fàricci mannari posta elittrònica",
-       "right-hideuser": "Bluccari nu nomu utenti, ammucciannulu ô pùbblicu",
+       "right-block": "Bluccari àutri utenti pi nun fàricci fari canciamenti",
+       "right-blockemail": "Bluccari n'utenti pi nun fàricci mannari posta elittrònica",
+       "right-hideuser": "Bluccari nu nomu utenti, ammucciànnulu ô pùbblicu",
        "right-ipblock-exempt": "Sautari li blocchi di IP, autumàtici e di ntirvalli di IP",
        "right-proxyunbannable": "Sautari li blocchi autumàtici dî proxy",
        "right-unblockself": "Sbluccàrisi iddu stissu",
-       "right-protect": "Canciari li liveddi di prutizzioni e mudificari pàggini prutetti a' cascata",
-       "right-editprotected": "Canciari pàggini cu' prutizzioni \"{{int:protect-level-sysop}}\"",
-       "right-editsemiprotected": "Canciari pàggini cu' prutizzioni \"{{int:protect-level-autoconfirmed}}\"",
-       "right-editcontentmodel": "Canciari u mudellu di cuntinutu di na pàggina",
+       "right-protect": "Canciari li liveddi di prutizzioni e canciari pàggini prutetti a cascata",
+       "right-editprotected": "Canciari pàggini cu prutizzioni \"{{int:protect-level-sysop}}\"",
+       "right-editsemiprotected": "Canciari pàggini cu prutizzioni \"{{int:protect-level-autoconfirmed}}\"",
+       "right-editcontentmodel": "Canciari lu mudellu di cuntinutu di na pàggina",
        "right-editinterface": "Canciari la ntirfaccia utenti",
-       "right-editusercssjs": "Canciari li file CSS e JavaScript di l'autri utenti",
+       "right-editusercssjs": "Canciari li file CSS e JavaScript di l'àutri utenti",
        "right-editusercss": "Canciari li file CSS di l'àutri utenti",
        "right-edituserjs": "Canciari li file JavaScript di l'àutri utenti",
        "right-editmyusercss": "Canciari li file CSS dû propiu utenti",
        "right-viewmywatchlist": "Taliari la propia lista taliata",
        "right-editmywatchlist": "Canciari la propia lista taliata. Nota chi certi azzioni ci ponnu agghiùnciri pàggini macari senza di stu drittu.",
        "right-viewmyprivateinfo": "Taliari li propî dati risirvati (p'esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
-       "right-editmyprivateinfo": "Canciari li propî dati risirvati (ad esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
+       "right-editmyprivateinfo": "Canciari li propî dati risirvati (p'esempiu lu nnirizzu di posta elittrònica e lu nomu veru)",
        "right-editmyoptions": "Canciari li propî prifirenzi",
-       "right-rollback": "Canciari lestu n'arreri li mudìfichi di l'ùltimu utenti chi' canciau na certa pàggina",
+       "right-rollback": "Canciari lestu n'arreri li canciamenti di l'ùrtimu utenti chi canciau na certa pàggina",
        "right-markbotedits": "Marcari li canciamenti n'arreri comu fatti dî bot",
-       "right-noratelimit": "Nun èssiri suggettu ô limiti di azzioni",
-       "right-import": "Mpùrtari pàggini di autri wiki",
-       "right-importupload": "Mpùrtari pàggini di nu carricamentu di file",
-       "right-patrol": "Marcari li canciamenti di l'autri utenti comu battugghiati",
-       "right-autopatrol": "Marcari autumaticamenti li propî canciamenti comu battugghiati",
-       "right-patrolmarks": "Vìdiri li marcaturi di battugghia nta l'ùrtimi canciamenti",
-       "right-unwatchedpages": "Vìdiri na lista dî pàggini chi' nuddu talìa",
+       "right-noratelimit": "Nun èssiri suggettu ô lìmiti d'azzioni",
+       "right-import": "Mpurtari pàggini d'àutri wiki",
+       "right-importupload": "Mporta pàggini di nu carricamentu di file",
+       "right-patrol": "Marcari li canciamenti di l'àutri utenti comu virificati",
+       "right-autopatrol": "Marcari autumaticamenti li propî canciamenti comu virificati",
+       "right-patrolmarks": "Vìdiri li marcaturi di virìfica nta l'ùrtimi canciamenti",
+       "right-unwatchedpages": "Vìdiri na lista dî pàggini chi nuddu talìa",
        "right-mergehistory": "Jùnciri la crunuluggìa dî pàggini",
        "right-userrights": "Canciari tutti li dritti di l'utenti",
-       "right-userrights-interwiki": "Canciari li dritti di l'utenti di autri wiki",
+       "right-userrights-interwiki": "Canciari li dritti di l'utenti dutri wiki",
        "right-siteadmin": "Bluccari e sbluccari la basi di dati",
        "right-override-export-depth": "Espurtari pàggini cu li pàggini culligati nfina ô quintu liveddu",
-       "right-sendemail": "Mannari missaggi di posta elittrònica a' l'autri utenti",
+       "right-sendemail": "Mannari missaggi di posta elittrònica a l'àutri utenti",
        "right-passwordreset": "Taliari li missaggi di posta elittrònica d'azziramentu dî password",
        "right-managechangetags": "Criari e cancillari [[Special:Tags|etichetti]] dâ basi di dati",
        "right-applychangetags": "Appizzari [[Special:Tags|etichetti]] ntê propî canciamenti",
        "action-history": "taliari la crunuluggìa di sta pàggina",
        "action-minoredit": "marcari stu canciamentu comu nicu",
        "action-move": "spustari sta pàggina",
-       "action-move-subpages": "spustari sta pàggina e li so suttapàggini",
+       "action-move-subpages": "spustari sta pàggina e li sò suttapàggini",
        "action-move-rootuserpages": "spustari li pàggini ràdica di l'utenti",
        "action-move-categorypages": "spustari pàggini di catigurìa",
        "action-movefile": "spustari stu file",
        "action-reupload": "suprascrìviri stu file esistenti",
        "action-reupload-shared": "suprascrivìri stu file prisenti ntô dipòsitu cunnivisu",
        "action-upload_by_url": "carricari stu file di n'URL",
-       "action-writeapi": "adupirari l'API pi' scrìviri",
+       "action-writeapi": "adupirari l'API pi scrìviri",
        "action-delete": "cancillari sta pàggina",
        "action-deleterevision": "cancillari sta virsioni",
        "action-deletedhistory": "taliari la crunuluggìa cancillata di sta pàggina",
        "action-browsearchive": "circari pàggini cancillati",
        "action-undelete": "annullari la cancillazzioni di sta pàggina",
        "action-suppressrevision": "rivìdiri e ripristinari sta virsioni ammucciata",
-       "action-suppressionlog": "vìdiri stu riggìstru privatu",
-       "action-block": "bluccari st'utenti pi' nun fàricci fari canciamenti",
-       "action-protect": "canciari li livedda di prutizzioni di sta pàggina",
-       "action-rollback": "canciari lestu n'arreri li mudìfichi di l'ùltimu utenti chi' canciau na certa pàggina",
+       "action-suppressionlog": "vìdiri stu riggistru privatu",
+       "action-block": "bluccari st'utenti pi nun fàricci fari canciamenti",
+       "action-protect": "canciari li liveddi di prutizzioni di sta pàggina",
+       "action-rollback": "canciari lestu n'arreri li canciamenti di l'ùrtimu utenti chi canciau na certa pàggina",
        "action-import": "mpurtari pàggini di n'àutra wiki",
        "action-importupload": "mpurtari pàggini di nu carricamentu di file",
-       "action-patrol": "marcari li canciamenti di l'autri utenti comu battugghiati",
-       "action-autopatrol": "marcari li tò canci comu battugghiati",
-       "action-unwatchedpages": "vìdiri la lista dî pàggini chi' nuddu talìa",
+       "action-patrol": "marcari li canciamenti di l'àutri utenti comu virificati",
+       "action-autopatrol": "marcari li tò canci comu virificati",
+       "action-unwatchedpages": "vìdiri la lista dî pàggini chi nuddu talìa",
        "action-mergehistory": "jùnciri la crunuluggìa di sta pàggina",
        "action-userrights": "canciari tutti li dritti di l'utenti",
-       "action-userrights-interwiki": "canciari li dritti di l'utenti supra a autri wiki",
+       "action-userrights-interwiki": "canciari li dritti di l'utenti supra a àutri wiki",
        "action-siteadmin": "bluccari e sbluccari la basi di dati",
        "action-sendemail": "mannari missaggi di posta elittrònica",
        "action-editmywatchlist": "canciari la tò lista taliata",
        "action-viewmywatchlist": "taliari la tò lista taliata",
        "action-viewmyprivateinfo": "taliari li tò nfurmazzioni risirvati",
-       "action-editmyprivateinfo": "canciari li to nfurmazzioni risirvati",
+       "action-editmyprivateinfo": "canciari li tò nfurmazzioni risirvati",
        "action-editcontentmodel": "canciari lu mudellu di cuntinutu di na pàggina",
        "action-managechangetags": "criari e cancillari etichetti dâ basi di dati",
        "action-applychangetags": "appizzari etichetti ntê tò canciamenti",
        "action-changetags": "agghiùnciri e livari a piaciri etichetti dî virsioni e dî vuci di riggistru",
        "nchanges": "$1 {{PLURAL:$1|canciamentu|canciamenti}}",
-       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|di l'ùltima vìsita}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|di l'ùrtima vìsita}}",
        "enhancedrc-history": "crunuluggìa",
        "recentchanges": "Ùrtimi canciamenti",
-       "recentchanges-legend": "Opzioni pi' l'ùrtimi canciamenti",
-       "recentchanges-summary": "Sta pàggina prisenta li canciamenti cchiu' ricenti ê cuntinuti dâ wiki.",
-       "recentchanges-noresult": "Nuddu canciamentu ntô pirìudu spicificatu currispunni a' sti criteria.",
-       "recentchanges-feed-description": "Stu feed prisenta li canciamenti cchiu' ricenti ê cuntinuti dâ wiki.",
+       "recentchanges-legend": "Opzioni pi l'ùrtimi canciamenti",
+       "recentchanges-summary": "Sta pàggina prisenta li canciamenti cchiù ricenti ê cuntinuti dâ wiki.",
+       "recentchanges-noresult": "Nuddu canciamentu ntô pirìudu spicificatu currispunni a sti criteri.",
+       "recentchanges-feed-description": "Stu feed prisenta li canciamenti cchiù ricenti ê cuntinuti dâ wiki.",
        "recentchanges-label-newpage": "Stu canciamentu criau na pàggina nova",
        "recentchanges-label-minor": "Chistu è nu canciamentu nicu",
        "recentchanges-label-bot": "Stu canciamentu fu fattu di nu bot",
-       "recentchanges-label-unpatrolled": "Stu canciamentu ancora nun havi statu battugghiatu",
+       "recentchanges-label-unpatrolled": "Stu canciamentu ancora nun fu virificatu",
        "recentchanges-label-plusminus": "La grannizza dâ pàggina canciau di stu nùmmiru di byte",
-       "recentchanges-legend-heading": "'''Legenda:'''",
+       "recentchanges-legend-heading": "'''Ligenda:'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (talìa puru [[Special:NewPages|la lista dî pàggini novi]])",
-       "rcnotefrom": "Ccassutta {{PLURAL:$5|cc'è lu canciamentu|cci su' li canciamenti}} a' pàrtiri dû <strong>$3, $4</strong> (nn'havi ammustrati nfina a' <strong>$1</strong>).",
-       "rclistfrom": "Ammustra li canciamenti novi a' pàrtiri dû $3 $2",
+       "rcnotefrom": "Ccassutta {{PLURAL:$5|c'è lu canciamentu|ci sù li canciamenti}} a pàrtiri dû <strong>$3, $4</strong> (nn'havi ammustrati nfina a <strong>$1</strong>).",
+       "rclistfrom": "Ammustra li canciamenti novi a pàrtiri dû $3 $2",
        "rcshowhideminor": "$1 li canciamenti nichi",
        "rcshowhideminor-show": "Ammustra",
        "rcshowhideminor-hide": "Ammuccia",
        "rcshowhideanons": "$1 l'utenti anònimi",
        "rcshowhideanons-show": "Ammustra",
        "rcshowhideanons-hide": "Ammuccia",
-       "rcshowhidepatr": "$1 li canciamenti battugghiati",
+       "rcshowhidepatr": "$1 li canciamenti virificati",
        "rcshowhidepatr-show": "Ammustra",
        "rcshowhidepatr-hide": "Ammuccia",
-       "rcshowhidemine": "$1 li me canciamenti",
+       "rcshowhidemine": "$1 li mè canciamenti",
        "rcshowhidemine-show": "Ammustra",
        "rcshowhidemine-hide": "Ammuccia",
        "rclinks": "Ammustra l'ùrtimi $1 canciamenti nta l'ùrtimi $2 jorna <br />$3",
        "recentchangeslinked-title": "Canciamenti culligati a \"$1\"",
        "recentchangeslinked-summary": "Chista pàggina spiciali ammustra li canciamenti cchiù ricenti ê pàggini culligati a chidda spicificata. Li pàggini taliati ni la tou [[Special:Watchlist|lista taliata]] sunu evidenziati 'n '''grassettu'''.",
        "recentchangeslinked-page": "Nomu dâ pàggina:",
-       "recentchangeslinked-to": "Ammustra sulu li canciamenti ê pàggini culligati a' chidda spicificata",
+       "recentchangeslinked-to": "Ammustra sulu li canciamenti ê pàggini culligati a chidda spicificata",
        "upload": "Càrrica nu file",
        "uploadbtn": "Càrrica",
        "reuploaddesc": "Annulla lu carricamentu e torna a lu mòdulu dî carricamenti",
        "upload-tryagain": "Manna la discrizzioni canciata dû file",
        "uploadnologin": "Nun trasutu",
-       "uploadnologintext": "Hâ' $1 pi' putiri carricari file.",
+       "uploadnologintext": "È nicissariu $1 pi putiri carricari file.",
        "upload_directory_missing": "La cartella dî carricamenti ($1) nun esisti lu server web nun arriniscìu a criàrila.",
        "upload_directory_read_only": "La cartella dî carricamenti ($1) nun è scrivìbbili dû server web.",
        "uploaderror": "Erruri ntô carricamentu",
-       "upload-recreate-warning": "<strong>Accura: Nu file cu' ddu nomu fu' cancillatu o spustatu.</strong>\n\nPi' cummudità ccassutta cci su' li riggistra dî cancillazzioni e dî spustamenti di sta pàggina:",
+       "upload-recreate-warning": "<strong>Accura: Nu file cu ddu nomu fu cancillatu o spustatu.</strong>\n\nPi cummudità ccassutta ci sù li riggistri dî cancillazzioni e dî spustamenti di sta pàggina:",
        "uploadtext": "Usa lu mòdulu ccà sutta pi carricari file novi. Pi vìdiri o circari li file già carricati, talìa lu [[Special:FileList|log dî file carricati]]. Carricamenti di file e di virsioni novi di file sunnu riggistrati ntô [[Special:Log/upload|log di l'upload]], li cancillazzioni di file sunnu\nriggistrati [[Special:Log/delete|ccà]].\n\nPi nziriri nu file nta na pàggina, fai nu lijami accussì:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' p'usari la virsioni ntera dû file\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|testu altirnativu]]</nowiki></code>''' p'usari na virsioni làrica 200 pixel nziruta nta nu box, alliniata a manu manca e cu 'testu altirnativu' comu didascalìa\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' pi culligari direttamenti a lu file senza vidìrilu.",
        "upload-permitted": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|cunzintutu|cunzintuti}}: $1.",
        "upload-preferred": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|cunzigghiatu|cunzigghiati}}: $1.",
        "upload-prohibited": "{{PLURAL:$2|Tipu|tipi}} di file {{PLURAL:$2|pruibbutu|pruibbuti}}: $1.",
        "uploadlogpage": "Riggistru dî file carricati",
-       "uploadlogpagetext": "Ccà sutta cc'è la lista di l'ùrtimi file carricati.\nTalìa la [[Special:NewFiles|gallarìa dî file novi]] pûn risucuntu cchiu' visuali.",
+       "uploadlogpagetext": "Ccà sutta c'è la lista di l'ùrtimi file carricati.\nTalìa la [[Special:NewFiles|jallarìa dî file novi]] pûn risucuntu cchiù visuali.",
        "filename": "Nomu dû file",
        "filedesc": "Discrizzioni",
        "fileuploadsummary": "Discrizzioni:",
        "filestatus": "Statu dû drittu d'auturi:",
        "filesource": "Fonti:",
        "ignorewarning": "Gnora l'avvisu e sarva lu file lu stissu",
-       "ignorewarnings": "Gnora l'avvirtimenti eventuali",
-       "minlength1": "Li nomi dî file hannu a' èssiri fatti di almenu na lìttra.",
-       "illegalfilename": "Lu nomu dû file \"$1\" cunteni caràttiri chi' nun su' cunsintuti ntê tìtuli dî pàggini.\nPi' favuri cancia nomu ô file e prova e càrriculu n'autra vota.",
-       "filename-toolong": "Li nomi dî file nun ponnu èssiri cchiù' longhi di 240 byte.",
-       "badfilename": "Lu nomu dû file fu' canciatu nta \"$1\".",
-       "filetype-mime-mismatch": "L'estinsioni dû file, \".$1\", nun currispunni ô tipu MIME rilivatu ntô file ($2).",
+       "ignorewarnings": "Gnora l'avvirtimenti evintuali",
+       "minlength1": "Li nomi dî file hannu a èssiri fatti d'armenu na littra.",
+       "illegalfilename": "Lu nomu dû file \"$1\" cunteni caràttiri chi nun sù cunzintuti ntê tìtuli dî pàggini.\nPi favuri cancia nomu ô file e prova e càrricalu n'àutra vota.",
+       "filename-toolong": "Li nomi dî file nun ponnu èssiri cchiù longhi di 240 byte.",
+       "badfilename": "Lu nomu dû file fu canciatu nta \"$1\".",
+       "filetype-mime-mismatch": "L'estinzioni dû file, \".$1\", nun currispunni ô tipu MIME rilivatu ntô file ($2).",
        "filetype-badmime": "Nun è cunzintutu di carricari file di tipu MIME \"$1\".",
-       "filetype-bad-ie-mime": "Nun si po' carricari stu file pirchì Internet Explorer lu canuscissi comu \"$1\", ca è nu tipu di file nun cunsintutu e ca putissi èssiri piriculusu.",
-       "filetype-unwanted-type": "<strong>\".$1\"</strong> è nu tipu di file nun vulutu.\n{{PLURAL:$3|Lu tipu di file cunsigghiatu è|Li tipi di file cunsigghiati sunnu}} $2.",
-       "filetype-banned-type": "<strong>\".$1\"</strong> {{PLURAL:$4|nun è un tipu di file cunsintutu|nun su' tipi di file cunsintuti}}.\n{{PLURAL:$3|U tipu di file cunsintutu è|I tipi di file cunsintuti su'}} $2.",
-       "filetype-missing": "Lu file nun havi estinsioni (ad esempiu \".jpg\").",
-       "empty-file": "Lu file chi' mannasti era vacanti.",
-       "file-too-large": "Lu file chi' mannasti era troppu grossu.",
+       "filetype-bad-ie-mime": "Nun si pò carricari stu file pirchì Internet Explorer lu canuscissi comu \"$1\", ca è nu tipu di file nun cunzintutu e ca putissi èssiri piriculusu.",
+       "filetype-unwanted-type": "<strong>\".$1\"</strong> è nu tipu di file nun vulutu.\n{{PLURAL:$3|Lu tipu di file cunzigghiatu è|Li tipi di file cunzigghiati sunnu}} $2.",
+       "filetype-banned-type": "<strong>\".$1\"</strong> {{PLURAL:$4|nun è un tipu di file cunzintutu|nun sunnu tipi di file cunzintuti}}.\n{{PLURAL:$3|Lu tipu di file cunzintutu è|Li tipi di file cunzintuti sunnu}} $2.",
+       "filetype-missing": "Lu file nun havi stinzioni (p'esempiu \".jpg\").",
+       "empty-file": "Lu file chi mannasti era vacanti.",
+       "file-too-large": "Lu file chi mannasti era troppu grossu.",
        "filename-tooshort": "Lu nomu dû file è troppu curtu.",
        "filetype-banned": "Stu tipu di file è sbannutu.",
        "verification-error": "Stu file nun passau â virìfica.",
-       "hookaborted": "Lu canciamentu chi' stavi pruvannu a' fari fu' annullatu di n'estinsioni.",
-       "illegal-filename": "Stu nomu dû file nun è cunsintutu.",
-       "overwrite": "Suprascrìviri nu file chi' già esisti nun è cunsintutu.",
-       "unknown-error": "Mmattìu n'erruri scanusciutu.",
-       "tmp-create-error": "Nun fu pussìbbili criari u file timpuraniu.",
-       "tmp-write-error": "Erruri ntâ scrittura dû file timpuraniu.",
-       "large-file": "Si raccumanna di nun passari la grannizza di $1 p'ognin file; stu file è granni $2.",
-       "largefileserver": "Stu file è cchiu' grossu di quantu lu server è cunfiguratu a' accittari.",
-       "emptyfile": "Lu file chi' carricasti pari vacanti.\nChistu putissi èssiri pruvucatu di nu sbagghiu ntô nomu dû file.\nCuntrolla ca pi' davera voi carricari stu file.",
-       "windows-nonascii-filename": "Sta wiki nun supporta i nomi di file cu' caràttiri spiciali.",
-       "fileexists": "Nu file cu' stu nomu già esisti, pi' favuri cuntrolla <strong>[[:$1]]</strong> si' nun si' {{GENDER:|sicuru|sicura}} ch'u voi canciari.\n[[$1|thumb]]",
+       "hookaborted": "Lu canciamentu chi stavi pruvannu a fari fu annullatu di n'estinzioni.",
+       "illegal-filename": "Stu nomu dû file nun è cunzintutu.",
+       "overwrite": "Suprascrìviri nu file chi già esisti nun è cunzintutu.",
+       "unknown-error": "Ammattìu n'erruri scanusciutu.",
+       "tmp-create-error": "Nun fu pussìbbili criari lu file timpuràniu.",
+       "tmp-write-error": "Erruri ntâ scrittura dû file timpuràniu.",
+       "large-file": "Si raccumanna di nun passari la grannizza di $1 p'ogni file; stu file è granni $2.",
+       "largefileserver": "Stu file è cchiù grossu di quantu lu server è cunfiguratu a accittari.",
+       "emptyfile": "Lu file chi carricasti pari vacanti.\nChistu putissi èssiri pruvucatu di nu sbagghiu ntô nomu dû file.\nCuntrolla ca pi daveru voi carricari stu file.",
+       "windows-nonascii-filename": "Sta wiki nun supporta li nomi di file cu caràttiri spiciali.",
+       "fileexists": "Nu file cu stu nomu già esisti, pi favuri cuntrolla <strong>[[:$1]]</strong> si nun sî {{GENDER:|sicuru|sicura}} chi lu voi canciari.\n[[$1|thumb]]",
        "filepageexists": "La pàggina dâ discrizzioni di stu file fu già criata ô nnirizzu <strong>[[:$1]]</strong>, ma pi com'ora nun c'è nuddu file cu stu nomu.\nLu riassuntu chi nzirisci nun cumpari ntâ pàggina dâ discrizzioni.\nPi fàrilu cumpàriri, hai a canciari a manu dda pàggina.\n[[$1|thumb]]",
-       "fileexists-extension": "Nu file cûn nomu simili già esisti: [[$2|thumb]]\n* Nomu dû file carricannu: <strong>[[:$1]]</strong>\n* Nomu dû file esistenti: <strong>[[:$2]]</strong>\nForsi voi scègghîri un nomu cchiù' distintivu?",
+       "fileexists-extension": "Nu file cûn nomu sìmili già esisti: [[$2|thumb]]\n* Nomu dû file carricatu: <strong>[[:$1]]</strong>\n* Nomu dû file esistenti: <strong>[[:$2]]</strong>\nForsi voi scègghiri un nomu cchiù carattirìsticu?",
        "fileexists-thumbnail-yes": "Lu file carricato sembra èssiri lu risurtatu di n'antiprima ''(thumbnail)''. [[$1|thumb]]\nVirificari, pi cunfruntu, lu file <strong>[[:$1]]</strong>.\nSiduu si tratta dâ stissa mmagini, nte dimenzioni urigginali, nun è nicissariu carricara àutri antiprimi.",
        "file-thumbnail-no": "Lu nomu dô file accumenza cu <strong>$1</strong>.\nPari quinni èssiri lu risurtatu di n'antiprima ''(thumbnail)''.\nSiddu si disponi dâ mmàggini ntâ risuluzzioni urigginali, si prega di carricàrila. 'N casu cuntrariu, si prega di canciari lu nomu dô file.",
        "fileexists-forbidden": "Nu file cu stu nomu asisti già e nun pò essiri sovrascrittu. Turnari n'arreri e canciari lu nomu cu lu quali carricari lu file. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Nu file cu stu nomu asisti già nta l'archiviu dî risursi multimidiali cundivisi. Siddu voi ancora carricari lu file, pi favuri torna n'arreri e cancia lu nomu ca voi dari a lu file. [[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Stu file è na copia duppiuni {{PLURAL:$1|dû|dî}} file ccà di sècutu:",
        "file-deleted-duplicate": "Nu file lu stissu comu a chistu file ([[:$1]]) vinni scanciallatu prima di ora. S'aviss'a cuntrullari la stòria e lu picchì dâ scancillazzioni dû file prima di ri-caricàrilu.",
-       "file-deleted-duplicate-notitle": "Nu file idènticu a' chistu hâ statu cancillatu, e u tìtulu fu supprimutu.\nTu avissi a' dumannari a' quarchidunu chi' havi a pussibbilità di vìdiri u cuntinutu dû file suppressu di valutari a situazzioni, prima di prucèdiri a' carricàrilu n'autra vota.",
-       "uploadwarning": "Avvirtimentu pû carricamentu",
-       "uploadwarning-text": "Cancia ccassutta la discrizzioni dû file e prova n'autra vota.",
+       "file-deleted-duplicate-notitle": "Nu file idènticu a chistu fu cancillatu, e lu tìtulu fu supprimutu.\nTu avissi a addumannari a quarchidunu chi havi la pussibbilità di vìdiri lu cuntinutu dû file suppressu di valutari la situazzioni, prima di prucèdiri a carricàrilu n'àutra vota.",
+       "uploadwarning": "Avvisu pû carricamentu",
+       "uploadwarning-text": "Cancia ccassutta la discrizzioni dû file e prova n'àutra vota.",
        "savefile": "Sarva lu file",
        "uploaddisabled": "Li carricamenti sunnu disattivati.",
-       "copyuploaddisabled": "Lu carricamentu pi' menzu di URL è disattivatu.",
+       "copyuploaddisabled": "Lu carricamentu pi menzu d'URL è disattivatu.",
        "uploaddisabledtext": "Li carricamenti dî file sunnu disattivati.",
-       "php-uploaddisabledtext": "Li carricamenti dî file sunnu disattivati ntô PHP.\nPi' favuri cuntrolla la mpustazzioni file_uploads.",
-       "uploadscripted": "Stu file cunteni còdici HTML o di script, ca putissi èssiri ntirpitratu erruniamenti d'un browser web.",
+       "php-uploaddisabledtext": "Li carricamenti dî file sunnu disattivati ntô PHP.\nPi favuri cuntrolla la mpustazzioni file_uploads.",
+       "uploadscripted": "Stu file cunteni còdici HTML o di script, ca putissi èssiri ntirpitratu erroniamenti d'un browser web.",
        "upload-scripted-pi-callback": "Nun si ponnu carricari file ca cuntèninu li struzzioni di prucessu xml-stylesheet.",
        "uploaded-script-svg": "Fu attruvatu n'elimentu prugrammàbbili \"$1\" ntô file SVG carricatu.",
        "uploaded-hostile-svg": "Fu attruvatu còdici CSS risicusu nta l'elimentu style dû file SVG carricatu.",
        "uploaded-setting-handler-svg": "Lu còdici SVG ca mposta l'attribbutu \"handler\" a na distinazzioni rimota/data/script veni bluccatu. Fu attruvatu <code>$1=\"$2\"</code> ntô file SVG carricatu.",
        "uploaded-remote-url-svg": "Lu còdici SVG ca mposta n'attribbutu style qualegghiè versu di n'URL rimota veni bluccatu. Fu attruvatu <code>$1=\"$2\"</code> ntô file SVG carricatu.",
        "uploaded-image-filter-svg": "Fu attruvatu nu filtru di mmàggini cu URL <code>&lt;$1 $2=\"$3\"&gt;</code> ntô file SVG carricatu.",
-       "uploadscriptednamespace": "Stu file SVG cunteni nu namespace nun cunsintutu, \"$1\".",
+       "uploadscriptednamespace": "Stu file SVG cunteni nu namespace nun cunzintutu, \"$1\".",
        "uploadinvalidxml": "L'XML ntô file carricatu nun potti èssiri analizzatu sintatticamenti.",
        "uploadvirus": "Lu file cunteni un virus!\nDittagghî: $1",
-       "uploadjava": "Stu file è n'archiviu ZIP chi' cunteni nu file .class Java.\nCarricari file Java nun è cunsintutu picchì pirmèttunu d'aggirari li ristrizzioni di sicurezza.",
+       "uploadjava": "Stu file è n'archiviu ZIP chi cunteni nu file .class Java.\nCarricari file Java nun è cunzintutu pirchì pirmèttinu d'aggirari li ristrizzioni di sicurizza.",
        "upload-source": "File surgenti",
        "sourcefilename": "Nomu dû file surgenti:",
        "sourceurl": "URL surgenti:",
        "filewasdeleted": "Nu file cu stu nomu hà statu già carricatu e cancillatu n passatu. Virificari $1 prima di carricàrilu di novu.",
        "filename-bad-prefix": "Lu nomu dô file chi stai carricannu ncigna cu '''\"$1\"''', chi è nu nomu non descrittivu assignatu, di solitu, automaticamenti dê màchini fotugràfici diggitali. Pi favuri scegghia nu nomu cchiù descrtittivu pi lu tò file.",
        "filename-prefix-blacklist": " #<!-- dassa sta lìnia comu è già --> <pre>\n# Chista di sèquitu è la sintassi:\n#   * Tutti li scritti a pàrtiri dô carattiri \"#\" sugnu commenti\n#   * Tutti li lìnii non vacanti sugnu prefissi pi tipici nomi di file assignati automaticamenti dê màchini fotugràfici diggitali\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # arcuni cellulari\nIMG # genericu\nJD # Jenoptik\nMGP # Pentax\nPICT # arcuni\n #</pre> <!-- dassa sta lìnia comu è già -->",
-       "upload-success-subj": "Carricamentu rinisciutu",
-       "upload-success-msg": "Lu to carricamentu di [$2] riniscìu. Ccà cc'è lu file carricatu: [[:{{ns:file}}:$1]]",
+       "upload-success-subj": "Carricamentu arrinisciutu",
+       "upload-success-msg": "Lu tò carricamentu di [$2] arriniscìu. Ccà c'è lu file carricatu: [[:{{ns:file}}:$1]]",
        "upload-failure-subj": "Prubblema ntô carricamentu",
-       "upload-failure-msg": "Mmattìu un prubblema ntô to carricamentu di [$2]:\n\n$1",
-       "upload-warning-subj": "Avvirtimentu pû carricamentu",
-       "upload-warning-msg": "Mmattìu un prubblema ntô to carricamentu di [$2]. Poi turnari ô [[Special:Upload/stash/$1|mòdulu di carricamentu]] pi' currèggiri stu prubblema.",
+       "upload-failure-msg": "Ammattìu un prubblema ntô tò carricamentu di [$2]:\n\n$1",
+       "upload-warning-subj": "Avvisu pû carricamentu",
+       "upload-warning-msg": "Ammattìu un prubblema ntô tò carricamentu di [$2]. Poi turnari ô [[Special:Upload/stash/$1|mòdulu di carricamentu]] pi currèggiri stu prubblema.",
        "upload-proto-error": "Protucollu erratu",
        "upload-proto-error-text": "Pi l'upload rimotu è nicissariu spicificari URL ca nìzzianu cu <code>http://</code> oppuru <code>ftp://</code>.",
        "upload-file-error": "Erruri nternu",
        "upload-misc-error": "Erruri nun idintificatu pi l'upload",
        "upload-misc-error-text": "S'hà virificatu un erruri nun idintificatu duranti lu carricamentu dû file. Virificari ca la URL è curretta e accissìbbili e pruvari di novu. Siddu lu prubbrema pirsisti, cuntattari un amministraturi di sistema.",
        "upload-too-many-redirects": "L'URL cuntineva troppi redirect",
-       "upload-http-error": "Mmattìu n'erruri HTTP: $1",
-       "upload-copy-upload-invalid-domain": "Lu carricamentu di copî nun è cunsintutu di stu duminiu.",
+       "upload-http-error": "Ammattìu n'erruri HTTP: $1",
+       "upload-copy-upload-invalid-domain": "Lu carricamentu di copî nun è cunzintutu di stu duminiu.",
        "upload-dialog-title": "Carricamentu dûn file",
        "upload-dialog-error": "Ammattìu n'erruri",
        "upload-dialog-warning": "Ammattìu n'avvisu",
        "upload-dialog-label-usage-title": "Usu",
        "upload-dialog-label-usage-filename": "Nomu dû file",
        "backend-fail-stream": "Nun fu pussìbbili trasmèttiri lu file \"$1\".",
-       "backend-fail-backup": "Nun fu' pussìbbili fari na copia di riserva dû file \"$1\".",
+       "backend-fail-backup": "Nun fu pussìbbili fari na copia di riserva dû file \"$1\".",
        "backend-fail-notexists": "Lu file $1 nun esisti.",
        "backend-fail-hashes": "Nun fu pussìbbili ottèniri l'hash dî file pi fari lu cunfruntu.",
-       "backend-fail-notsame": "Già esisti un file nun idènticu a' \"$1\".",
+       "backend-fail-notsame": "Già esisti un file nun idènticu a \"$1\".",
        "backend-fail-invalidpath": "\"$1\" nun è un caminu d'archiviazzioni vàlidu.",
        "backend-fail-delete": "Nun fu pussìbbili cancillari lu file \"$1\".",
-       "backend-fail-describe": "Nun fu' pussìbbili canciari li metadati dû file \"$1\".",
+       "backend-fail-describe": "Nun fu pussìbbili canciari li metadati dû file \"$1\".",
        "backend-fail-alreadyexists": "Lu file \"$1\" già esisti.",
-       "backend-fail-store": "Nun fu' pussìbbili mimurizzari lu file \"$1\" nta \"$2\".",
-       "backend-fail-copy": "Nun fu' pussìbbili cupiari lu file \"$1\" nta \"$2\".",
-       "backend-fail-move": "Nun fu' pussìbbili spustari lu file \"$1\" nta \"$2\".",
-       "backend-fail-opentemp": "Nun fu pussìbbili àpriri lu file timpuraniu.",
-       "backend-fail-writetemp": "Nun fu' pussìbbili scrìviri ntô file timpuraniu.",
-       "backend-fail-closetemp": "Nun fu pussìbbili chiùdiri lu file timpuraniu.",
-       "backend-fail-read": "Nun fu' pussìbbili lèggiri lu file \"$1\".",
+       "backend-fail-store": "Nun fu pussìbbili mimurizzari lu file \"$1\" nta \"$2\".",
+       "backend-fail-copy": "Nun fu pussìbbili cupiari lu file \"$1\" nta \"$2\".",
+       "backend-fail-move": "Nun fu pussìbbili spustari lu file \"$1\" nta \"$2\".",
+       "backend-fail-opentemp": "Nun fu pussìbbili gràpiri lu file timpuràniu.",
+       "backend-fail-writetemp": "Nun fu pussìbbili scrìviri ntô file timpuràniu.",
+       "backend-fail-closetemp": "Nun fu pussìbbili chiùdiri lu file timpuràniu.",
+       "backend-fail-read": "Nun fu pussìbbili lèggiri lu file \"$1\".",
        "backend-fail-create": "Nun fu pussìbbili scrìviri lu file \"$1\".",
-       "backend-fail-maxsize": "Nun fu' pussìbbili scrìviri lu file \"$1\" picchì è cchiu' grossu di {{PLURAL:$2|un byte|$2 byte}}.",
-       "backend-fail-readonly": "U backend di mimurizzazzioni \"$1\" pi' com'ora è a' sula littura. La spiegazzioni data è: \"<em>$2</em>\"",
-       "backend-fail-synced": "Lu file \"$1\" si trova nta nu statu incoerenti tra dî backend di mimurizzazzioni interni.",
+       "backend-fail-maxsize": "Nun fu pussìbbili scrìviri lu file \"$1\" pirchì è cchiù grossu di {{PLURAL:$2|un byte|$2 byte}}.",
+       "backend-fail-readonly": "Lu backend di mimurizzazzioni \"$1\" pi com'ora è n littura sula. La spigazzioni data è: \"<em>$2</em>\"",
+       "backend-fail-synced": "Lu file \"$1\" s'attrova nta nu statu nun cuerenti tra dî backend di mimurizzazzioni nterni.",
        "backend-fail-connect": "Nun fu pussìbbili culligàrisi ô supportu di mimurizzazzioni \"$1\".",
        "backend-fail-internal": "Si virificau n'erruri scanusciutu ntô supportu di mimurizzazzioni \"$1\".",
        "backend-fail-contenttype": "Nun fu pussìbbili ditirminari lu tipu di cuntinutu dû file di mimurizzari nti \"$1\".",
-       "backend-fail-batchsize": "U backend di mimurizzazzioni ricivìu na nfurnata di {{PLURAL:$1|una opirazzioni|$1 opirazzioni}} tra file; però lu so lìmiti è di {{PLURAL:$2|na sula opirazzioni|$2 opirazzioni}}.",
-       "backend-fail-usable": "Nun fu' pussìbbili lèggiri o scrìviri lu file \"$1\" pi' causa di pirmissi nsufficienti o cartelli/cuntinituri mancanti.",
-       "filejournal-fail-dbconnect": "Nun fu' pussìbbili culligàrisi â basi di dati giurnali dû backend di mimurizzazzioni \"$1\".",
-       "filejournal-fail-dbquery": "Nun fu' pussìbbili aggiurnari la basi di dati giurnali dû backend di mimurizzazzioni \"$1\".",
-       "lockmanager-notlocked": "Nun fu' pussìbbili sbluccari \"$1\"; nun è bluccatu.",
-       "lockmanager-fail-closelock": "Nun fu' pussìbbili chiùdiri lu file di bloccu di \"$1\".",
-       "lockmanager-fail-deletelock": "Nun fu' pussìbbili cancillari lu file di bloccu di \"$1\".",
-       "lockmanager-fail-acquirelock": "Nun fu' pussìbbili pigghiari pussèssu dû bloccu di \"$1\".",
-       "lockmanager-fail-openlock": "Nun fu' pussìbbili àpriri lu file di bloccu di \"$1\".",
-       "lockmanager-fail-releaselock": "Nun fu' pussibbili arrènniri lu bloccu di \"$1\".",
-       "lockmanager-fail-db-bucket": "Nun fu' pussìbbili cuntattàri abbastanza basi di dati di bloccu ntô bucket $1.",
-       "lockmanager-fail-db-release": "Nun fu' pussìbbili arrènniri li blocchi dâ basi di dati $1.",
-       "lockmanager-fail-svr-acquire": "Nun fu' pussìbbili pigghiari pussessu dî blocchi dû server $1.",
-       "lockmanager-fail-svr-release": "Nun fu' pussìbbili arrènniri li blocchi dû server $1.",
-       "zip-file-open-error": "Mmattìu n'erruri nta l'apirtura dû file pî cuntrolli di ZIP.",
+       "backend-fail-batchsize": "Lu backend di mimurizzazzioni arricivìu na nfurnata di {{PLURAL:$1|una opirazzioni|$1 opirazzioni}} tra file; pirò lu sò lìmiti è di {{PLURAL:$2|na sula opirazzioni|$2 opirazzioni}}.",
+       "backend-fail-usable": "Nun fu pussìbbili lèggiri o scrìviri lu file \"$1\" a càusa di pirmissi nzufficienti o cartelli/cuntinituri ammancanti.",
+       "filejournal-fail-dbconnect": "Nun fu pussìbbili culligàrisi â basi di dati giurnali dû backend di mimurizzazzioni \"$1\".",
+       "filejournal-fail-dbquery": "Nun fu pussìbbili aggiurnari la basi di dati giurnali dû backend di mimurizzazzioni \"$1\".",
+       "lockmanager-notlocked": "Nun fu pussìbbili sbluccari \"$1\"; nun è bluccatu.",
+       "lockmanager-fail-closelock": "Nun fu pussìbbili chiùdiri lu file di bloccu di \"$1\".",
+       "lockmanager-fail-deletelock": "Nun fu pussìbbili cancillari lu file di bloccu di \"$1\".",
+       "lockmanager-fail-acquirelock": "Nun fu pussìbbili pigghiari pussessu dû bloccu di \"$1\".",
+       "lockmanager-fail-openlock": "Nun fu pussìbbili gràpiri lu file di bloccu di \"$1\".",
+       "lockmanager-fail-releaselock": "Nun fu pussibbili arrènniri lu bloccu di \"$1\".",
+       "lockmanager-fail-db-bucket": "Nun fu pussìbbili cuntattari abbastanti basi di dati di bloccu ntô bucket $1.",
+       "lockmanager-fail-db-release": "Nun fu pussìbbili arrènniri li blocchi dâ basi di dati $1.",
+       "lockmanager-fail-svr-acquire": "Nun fu pussìbbili pigghiari pussessu dî blocchi dû server $1.",
+       "lockmanager-fail-svr-release": "Nun fu pussìbbili arrènniri li blocchi dû server $1.",
+       "zip-file-open-error": "Ammattìu n'erruri ntâ grapitura dû file pî cuntrolli di ZIP.",
        "zip-wrong-format": "Lu file spicificatu nun era nu file ZIP.",
        "zip-bad": "Lu file è nu file ZIP chi è ruinatu o nun è liggìbbili pi quarchi n'àutru mutivu.\nNun si pò cuntrullari bona la sò sicurizza.",
-       "zip-unsupported": "Lu file è nu file ZIP chi' cunteni carattirìstichi ZIP chi' nun su' suppurtati dâ MediaWiki.\nNun si po' cuntrullari bona la so sicurizza.",
-       "uploadstash": "Ammucciàgghia dî carricamenti",
-       "uploadstash-summary": "Sta pàggina duna accessu ê file chi' furu carricati, o si stannu carricannu, però ancora nun hannu statu pubblicati ntâ wiki. Sti file nun su' visìbbili a' nuddu sparti di cu li carricau.",
+       "zip-unsupported": "Lu file è nu file ZIP chi cunteni carattirìstichi ZIP chi nun sù suppurtati dâ MediaWiki.\nNun si pò cuntrullari bona la sò sicurizza.",
+       "uploadstash": "Ammucciagghia dî carricamenti",
+       "uploadstash-summary": "Sta pàggina duna accessu ê file chi foru carricati, o si stannu carricannu, pirò ancora nun foru pubblicati ntâ wiki. Sti file nun sù visìbbili a nuddu sparti di cui li carricau.",
        "uploadstash-clear": "Cancella li file nta l'ammucciagghia",
        "uploadstash-nofiles": "Nun hai nuddu file nta l'ammucciagghia.",
-       "uploadstash-badtoken": "St'azzioni nun riniscìu, forsi picchì li to cridinziali di mudìfica scaderu. Prova n'autra vota.",
-       "uploadstash-errclear": "La cancillazzioni dî file nun riniscìu.",
+       "uploadstash-badtoken": "St'azzioni nun arriniscìu, forsi pirchì li tò cridinziali di canciamentu scaderu. Prova n'àutra vota.",
+       "uploadstash-errclear": "La cancillazzioni dî file nun arriniscìu.",
        "uploadstash-refresh": "Aggiorna la lista dî file",
        "invalid-chunk-offset": "Offset ntô chunk nun vàlidu",
        "img-auth-accessdenied": "Accessu nigatu",
-       "img-auth-nopathinfo": "Variàbbili PATH_INFO mancanti.\nLu to server nun è mpustatu pi' passari sta nfurmazzioni.\nPurrìa èssiri basatu supra a' CGI e nun po' suppurtari img_auth.\nTalìa https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
-       "img-auth-notindir": "Lu caminu dumannatu nun è ntâ cartella cunfigurata pî carricamenti.",
+       "img-auth-nopathinfo": "Variàbbili PATH_INFO ammancanti.\nLu tò server nun è mpustatu pi passari sta nfurmazzioni.\nPurrìa èssiri basatu supra a CGI e nun pò suppurtari img_auth.\nTalìa https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization.",
+       "img-auth-notindir": "Lu caminu addumannatu nun è ntâ cartella cunfigurata pî carricamenti.",
        "img-auth-badtitle": "Nun fu pussìbbili custruiri nu tìtulu vàlidu a pàrtiri di \"$1\".",
-       "img-auth-nologinnWL": "Nun si' trasutu e \"$1\" nun è ntâ lista janca.",
+       "img-auth-nologinnWL": "Nun trasisti e \"$1\" nun è ntâ lista janca.",
        "img-auth-nofile": "Lu file \"$1\" nun esisti.",
-       "img-auth-isdir": "Stai pruvannu a' accèdiri a' na cartella, \"$1\".\nE' cunsintutu l'accessu sulu ê file.",
+       "img-auth-isdir": "Stai pruvannu a accèdiri a na cartella, \"$1\".\nÈ cunzintutu l'accessu sulu ê file.",
        "img-auth-streaming": "Trasmissioni di \"$1\".",
-       "img-auth-public": "U prupòsitu di img_auth.php è di emèttiri file di na wiki privata.\nSta wiki è cunfigurata comu wiki pùbblica.\nPi' sicurezza, img_auth.php fu' disattivatu.",
+       "img-auth-public": "Lu prupòsitu di img_auth.php è di emèttiri file di na wiki privata.\nSta wiki è cunfigurata comu wiki pùbblica.\nPi sicurizza, img_auth.php fu disattivatu.",
        "img-auth-noread": "L'utenti nun havi pirmissu di lèggiri \"$1\".",
-       "http-invalid-url": "URL nun validu: $1",
-       "http-invalid-scheme": "L'URL cu' schema \"$1\" nun su' suppurtati.",
-       "http-request-error": "A richiesta HTTP fallìu pi' causa di n'erruri scanusciutu.",
+       "http-invalid-url": "URL nun vàlidu: $1",
+       "http-invalid-scheme": "L'URL cu schema \"$1\" nun sunnu suppurtati.",
+       "http-request-error": "L'addumannata HTTP fallìu a càusa di n'erruri scanusciutu.",
        "http-read-error": "Erruri di littura HTTP.",
-       "http-timed-out": "La richiesta HTTP scadìu.",
+       "http-timed-out": "L'addumannata HTTP scadìu.",
        "http-curl-error": "Erruri ntô scarricamentu di l'URL: $1",
-       "http-bad-status": "Mmattìu nu prubblema duranti la richiesta HTTP: $1 $2",
-       "upload-curl-error6": "Nun fu pussìbbili ragghiùnciri l'URL",
-       "upload-curl-error6-text": "Nun fu' pussìbbili ragghiùnciri l'URL ca spicificasti.\nCuntrolla megghiu ca l'URL è scritta bona e ca lu situ chi' la servi funziona.",
+       "http-bad-status": "Ammattìu nu prubblema duranti l'addumannata HTTP: $1 $2",
+       "upload-curl-error6": "Nun fu pussìbbili jùnciri l'URL",
+       "upload-curl-error6-text": "Nun fù pussìbbili jùnciri l'URL ca spicificasti.\nCuntrolla megghiu ca l'URL è scritta bona e ca lu situ chi la servi funziona.",
        "upload-curl-error28": "Tempu scadutu pû carricamentu",
-       "upload-curl-error28-text": "Lu situ rimotu cci stesi troppu tempu a' rispùnniri.\nPi' favuri cuntrolla ca lu situ funziona, aspetta un pocu e ppoi prova n'autra vota.\nPoi cunsiddirari di pruvari ntôn mumentu quannu c'è cchiu' picca tràficu.",
+       "upload-curl-error28-text": "Lu situ rimotu ci stesi troppu tempu a arrispùnniri.\nPi favuri cuntrolla ca lu situ funziona, aspetta un pocu e appoi prova n'àutra vota.\nPoi cunziddirari di pruvari ntôn mumentu quannu c'è cchiù picca tràficu.",
        "license": "Licenza d'usu:",
        "license-header": "Licenza",
        "nolicense": "Nudda spicificata",
        "licenses-edit": "Cancia l'opzioni dâ licenza",
        "license-nopreview": "(Antiprima nun dispunìbbili)",
-       "upload_source_url": "(lu file chi' scigghîsti di n'URL vàlida e pubblicamenti accissìbbili)",
-       "upload_source_file": "(lu file chi' scigghîsti supra ô to computer)",
+       "upload_source_url": "(lu file chi scigghisti di n'URL vàlida e pubblicamenti accissìbbili)",
+       "upload_source_file": "(lu file chi scigghisti supra ô tò computer)",
        "listfiles-delete": "cancella",
        "listfiles-summary": "Sta pàggina spiciali ammustra tutti li file carricati.",
        "listfiles_search_for": "Ricerca dâ mmàggini di nomu:",
        "listfiles_size": "Grannizza",
        "listfiles_description": "Discrizzioni",
        "listfiles_count": "Virsioni",
-       "listfiles-show-all": "Includi li virsioni vecchî dî mmàggini",
+       "listfiles-show-all": "Ncludi li virsioni vecchî dî mmàggini",
        "listfiles-latestversion": "Virsioni attuali",
        "listfiles-latestversion-yes": "Sì",
        "listfiles-latestversion-no": "No",
        "file-anchor-link": "File",
        "filehist": "Crunuluggìa dû file",
-       "filehist-help": "Clicca na data/ura pi' vìdiri lu file comu si prisintava tannu.",
+       "filehist-help": "Clicca na data/ura pi vìdiri lu file comu si prisintava tannu.",
        "filehist-deleteall": "cancella tuttu",
        "filehist-deleteone": "cancella",
        "filehist-revert": "riprìstina",
        "filehist-comment": "Cummentu",
        "imagelinks": "Usu dû file",
        "linkstoimage": "{{PLURAL:$1|La pàggina siquenti richiàma|Li $1 pàggini siquenti richiàmanu}} stu file:",
-       "linkstoimage-more": "Cci su' cchiu' ssai di $1 {{PLURAL:$1|pàggina|pàggini}} ca richiàmunu stu file.\nLa lista ccassutta ammustra sulu {{PLURAL:$1|la prima pàggina|li primi $1 pàggini}}.\nSi po' puru a' vìdiri [[Special:WhatLinksHere/$2|na lista cumpleta]].",
+       "linkstoimage-more": "Ci sù cchiossai di $1 {{PLURAL:$1|pàggina|pàggini}} ca richiàmanu stu file.\nLa lista ccassutta ammustra sulu {{PLURAL:$1|la prima pàggina|li primi $1 pàggini}}.\nSi pò puru vìdiri [[Special:WhatLinksHere/$2|na lista cumpleta]].",
        "nolinkstoimage": "Nudda pàggina richiama stu file.",
        "morelinkstoimage": "Ammustra [[Special:WhatLinksHere/$1|àutri lijami]] versu di stu file.",
        "linkstoimage-redirect": "$1 (rimannu ô file) $2",
-       "duplicatesoffile": "{{PLURAL:$1|Stu|Sti $1}} file {{PLURAL:$1|è nu dupppiuni|sunnu duppiuni}} di st'autru file ([[Special:FileDuplicateSearch/$2|cchiù dittagli]]):",
-       "sharedupload": "Stu file veni di $1 e purrìa èssiri adupiratu di autri pruggetti.",
-       "sharedupload-desc-there": "Stu file veni di $1 e purrìa èssiri adupiratu di autri pruggetti.\nTalìari la so [$2 pàggina di discrizzioni] pi' autri nfurmazzioni.",
-       "sharedupload-desc-here": "Stu file veni di $1 e purrìa èssiri adupiratu di autri pruggetti.\nAppressu veni ammustrata la discrizioni prisenti ntâ so [$2 pàggina di discrizzioni].",
+       "duplicatesoffile": "{{PLURAL:$1|Stu|Sti $1}} file {{PLURAL:$1|è nu dupppiuni|sunnu duppiuni}} di st'àutru file ([[Special:FileDuplicateSearch/$2|cchiù dittagghi]]):",
+       "sharedupload": "Stu file veni di $1 e purrìa èssiri adupiratu di àutri pruggetti.",
+       "sharedupload-desc-there": "Stu file veni di $1 e purrìa èssiri adupiratu di àutri pruggetti.\nTalìari la sò [$2 pàggina di discrizzioni] p'àutri nfurmazzioni.",
+       "sharedupload-desc-here": "Stu file veni di $1 e purrìa èssiri adupiratu di àutri pruggetti.\nAppressu veni ammustrata la discrizioni prisenti ntâ sò [$2 pàggina di discrizzioni].",
        "sharedupload-desc-edit": "Stu file veni di $1 e purrìa èssiri adupiratu di àutri pruggetti.\nForsi ti cunveni canciari la sò discrizzioni ntâ sò [$2 pàggina di discrizzioni] ddà.",
        "sharedupload-desc-create": "Stu file veni di $1 e purrìa èssiri adupiratu di àutri pruggetti.\nForsi ti cunveni canciari la sò discrizzioni ntâ sò [$2 pàggina di discrizzioni] ddà.",
        "filepage-nofile": "Nun esisti nuddu file cu stu nomu.",
-       "filepage-nofile-link": "Nun esisti nuddu file cu' stu nomu, però [$1 lu poi carricari].",
+       "filepage-nofile-link": "Nun esisti nuddu file cu stu nomu, pirò [$1 lu poi carricari].",
        "uploadnewversion-linktext": "Càrrica na virsioni nova di stu file",
        "shared-repo-from": "di $1",
        "shared-repo": "nu dipòsitu cunnivisu",
        "filerevert-badversion": "Nun esistanu virsiona locali pricidenti dô file cû timestamp richiestu.",
        "filedelete": "Cancella $1",
        "filedelete-legend": "Cancella lu file",
-       "filedelete-intro": "Stai cancillannu lu file <strong>[[Media:$1|$1]]</strong> cu' tutta la so crunuluggìa.",
+       "filedelete-intro": "Stai cancillannu lu file <strong>[[Media:$1|$1]]</strong> cu tutta la sò crunuluggìa.",
        "filedelete-intro-old": "Stai cancillannu la virsioni di <strong>[[Media:$1|$1]]</strong> dû [$4 $2 ê $2].",
        "filedelete-comment": "Mutivu:",
        "filedelete-submit": "Cancella",
        "filedelete-success": "Lu file <strong>$1</strong> fu cancillatu.",
-       "filedelete-success-old": "La virsioni dû file <strong>[[Media:$1|$1]]</strong> dû $2 ê $3 fu' cancillata.",
+       "filedelete-success-old": "La virsioni dû file <strong>[[Media:$1|$1]]</strong> dû $2 ê $3 fu cancillata.",
        "filedelete-nofile": "<strong>$1</strong> nun esisti.",
-       "filedelete-nofile-old": "Nun cc'è archiviata nudda virsioni di <strong>$1</strong> chi' havi l'attribbuta spicificati.",
-       "filedelete-otherreason": "Autru o ultiriuri mutivu:",
-       "filedelete-reason-otherlist": "Autru mutivu",
-       "filedelete-reason-dropdown": "*Mutivi cchiu' cumuni pâ cancillazzioni\n** Viulazzioni dû drittu d'auturi\n** File duppiuni",
+       "filedelete-nofile-old": "Nun c'è archiviata nudda virsioni di <strong>$1</strong> chi havi l'attribbuti spicificati.",
+       "filedelete-otherreason": "Àutru o ultiriuri mutivu:",
+       "filedelete-reason-otherlist": "Àutru mutivu",
+       "filedelete-reason-dropdown": "*Mutivi cchiù cumuni pâ cancillazzioni\n** Viulazzioni dû drittu d'auturi\n** File duppiuni",
        "filedelete-edit-reasonlist": "Cancia li mutivi dâ cancillazzioni",
-       "filedelete-maintenance": "La cancillazzioni e lu riprìstinu dî file su' timpuraniamenti disattivati duranti la manutinzioni.",
-       "filedelete-maintenance-title": "Impussìbbili cancillari lu file",
-       "mimesearch": "Risciduta pi' tipu MIME",
-       "mimesearch-summary": "Sta pàggina cunzenti di filtrari li file 'n basi a lu tipu MIME. Nziriri la stringa di ricerca ntâ forma tipu/suttatipu o tipu/*, p'asempiu <code>image/jpeg</code>.",
+       "filedelete-maintenance": "La cancillazzioni e lu riprìstinu dî file sù timpuraniamenti disattivati duranti la manutinzioni.",
+       "filedelete-maintenance-title": "Mpussìbbili cancillari lu file",
+       "mimesearch": "Arricerca pi tipu MIME",
+       "mimesearch-summary": "Sta pàggina cunzenti di filtrari li file n basi a lu tipu MIME. Nziriri la stringa d'arricerca ntâ forma tipu/suttatipu o tipu/*, p'esempiu <code>image/jpeg</code>.",
        "mimetype": "Tipu MIME:",
        "download": "scàrrica",
        "unwatchedpages": "Pàggini nun taliati",
-       "listredirects": "Alencu di tutti li rimanni",
-       "listduplicatedfiles": "Lista dî file cu' duppiuni",
-       "listduplicatedfiles-summary": "Chista è na lista dî file unni la virsioni cchiu' nova è nu duppiuni dâ virsioni cchiu' nova di quarchi' autru file. Sulu li file lucali su' pigghiati a' cunsiddirazzioni.",
+       "listredirects": "Elencu di tutti li rimanni",
+       "listduplicatedfiles": "Lista dî file cu duppiuni",
+       "listduplicatedfiles-summary": "Chista è na lista dî file unni la virsioni cchiù nova è nu duppiuni dâ virsioni cchiù nova di quarchi àutru file. Sulu li file lucali sù pigghiati a cunziddirazzioni.",
        "listduplicatedfiles-entry": "[[:File:$1|$1]] havi [[$3|{{PLURAL:$2|nu duppiuni|$2 duppiuna}}]].",
        "unusedtemplates": "Template nun usati",
        "unusedtemplatestext": "Sta pàggina elenca tutti li pàggini ntô namespace {{ns:template}} ca nun sunnu nclusi nta nudda àutra pàggina.\nPrima di cancillàrili è megghiu cuntrullari ca nun hannu àutri lijami ca ci tràsinu.",
        "unusedtemplateswlh": "àutri lijami",
-       "randompage": "Na pàggina a' muzzu",
-       "randompage-nopages": "Nun cci su' pàggini {{PLURAL:$2|nta stu namespace|nta sti namespace}}: $1.",
-       "randomincategory": "Na pàggina a' muzzu nta na catigurìa",
+       "randompage": "Na pàggina a muzzu",
+       "randompage-nopages": "Nun ci sunnu pàggini {{PLURAL:$2|nta stu namespace|nta sti namespace}}: $1.",
+       "randomincategory": "Na pàggina a muzzu nta na catigurìa",
        "randomincategory-invalidcategory": "\"$1\" nun è nu nomu di catigurìa vàlidu.",
-       "randomincategory-nopages": "Nun cci su' pàggini ntâ catigurìa [[:Category:$1|$1]].",
+       "randomincategory-nopages": "Nun ci sunnu pàggini ntâ catigurìa [[:Category:$1|$1]].",
        "randomincategory-category": "Catigurìa:",
-       "randomincategory-legend": "Pàggina a' muzzu nta na catigurìa",
+       "randomincategory-legend": "Pàggina a muzzu nta na catigurìa",
        "randomincategory-submit": "Vai",
-       "randomredirect": "Nu rimannu a' muzzu",
-       "randomredirect-nopages": "Nun cc'è nuddu rimannu ntô namespace \"$1\".",
+       "randomredirect": "Nu rimannu a muzzu",
+       "randomredirect-nopages": "Nun c'è nuddu rimannu ntô namespace \"$1\".",
        "statistics": "Statìstichi",
        "statistics-header-pages": "Statìstichi dî pàggini",
        "statistics-header-edits": "Statìstichi dî canciamenti",
        "statistics-header-users": "Statìstichi di l'utenti",
-       "statistics-header-hooks": "Autri statìstichi",
+       "statistics-header-hooks": "Àutri statìstichi",
        "statistics-articles": "Pàggini di cuntinutu",
        "statistics-pages": "Pàggini",
-       "statistics-pages-desc": "Tutti li pàggini dâ wiki, cu' puru chiddi di discussioni, li rimanni, etc.",
+       "statistics-pages-desc": "Tutti li pàggini dâ wiki, cu puru chiddi di discussioni, li rimanni, ecc.",
        "statistics-files": "File carricati",
        "statistics-edits": "Pàggini canciati di quannu {{SITENAME}} fu armatu",
-       "statistics-edits-average": "Media dî canciamenti pi' pàggina",
+       "statistics-edits-average": "Media dî canciamenti pi pàggina",
        "statistics-users": "[[Special:ListUsers|Utenti]] riggistrati",
        "statistics-users-active": "Utenti attivi",
-       "statistics-users-active-desc": "Utenti ch'hannu fattu quarchi' azzioni {{PLURAL:$1|nta l'ùltimu jornu|nta l'ùltimi $1 jorna}}",
-       "pageswithprop": "Pàggini cu na prupietà di pàggina",
-       "pageswithprop-legend": "Pàggini cu na prupietà di pàggina",
-       "pageswithprop-text": "Sta pàggina elenca li pàggini chi' adòpirunu na particulari prupietà di pàggina.",
-       "pageswithprop-prop": "Nomu dâ prupietà:",
+       "statistics-users-active-desc": "Utenti ca fìciru quarchi azzioni {{PLURAL:$1|nta l'ùrtimu jornu|nta l'ùrtimi $1 jorna}}",
+       "pageswithprop": "Pàggini cu na prupità di pàggina",
+       "pageswithprop-legend": "Pàggini cu na prupità di pàggina",
+       "pageswithprop-text": "Sta pàggina elenca li pàggini chi adòpiranu na particulari prupità di pàggina.",
+       "pageswithprop-prop": "Nomu dâ prupità:",
        "pageswithprop-submit": "Vai",
-       "pageswithprop-prophidden-long": "valuri tistuali longu dâ prupietà ammucciatu ($1)",
-       "pageswithprop-prophidden-binary": "valuri binariu dâ prupietà ammucciatu ($1)",
+       "pageswithprop-prophidden-long": "valuri tistuali longu dâ prupità ammucciatu ($1)",
+       "pageswithprop-prophidden-binary": "valuri binariu dâ prupità ammucciatu ($1)",
        "doubleredirects": "Rimanni duppî",
-       "doubleredirectstext": "Sta pàggina alenca li pàggini chi rimànnanu a àutri pàggini di rimannu.\nOgni riga cunteni lijami versu lu primu e versu lu secunnu rimannu, sparti dâ distinazzioni dû secunnu rimannu, ca di sòlitu è la pàggina \"giusta\" unni avissi a puntari macari lu primu rimannu.\nLi rimanni <del>sbarrati</del> foru cunzati.",
+       "doubleredirectstext": "Sta pàggina elenca li pàggini chi rimànnanu a àutri pàggini di rimannu.\nOgni riga cunteni lijami versu lu primu e versu lu secunnu rimannu, sparti dâ distinazzioni dû secunnu rimannu, ca di sòlitu è la pàggina \"giusta\" unni avissi a puntari macari lu primu rimannu.\nLi rimanni <del>sbarrati</del> foru cunzati.",
        "double-redirect-fixed-move": "[[$1]] fu spustata.\nFu aggiurnata autumaticamenti e ora rimanna a [[$2]].",
-       "double-redirect-fixed-maintenance": "Cunsatu autumaticamenti nu rimannu duppiu di [[$1]] a' [[$2]] ntôn sirvizzu di manutinzioni.",
-       "double-redirect-fixer": "Cunsaturi dî rimanni",
+       "double-redirect-fixed-maintenance": "Cunzatu autumaticamenti nu rimannu duppiu di [[$1]] a [[$2]] ntôn sirvizzu di manutinzioni.",
+       "double-redirect-fixer": "Cunzaturi dî rimanni",
        "brokenredirects": "Rimanni rutti",
-       "brokenredirectstext": "Li rimanni siguenti pùntanu a' pàggini ca nun esìstinu:",
+       "brokenredirectstext": "Li rimanni siguenti pùntanu a pàggini ca nun esìstinu:",
        "brokenredirects-edit": "cancia",
        "brokenredirects-delete": "cancella",
        "withoutinterwiki": "Pàggini senza lijami nterlinguìstici",
        "withoutinterwiki-summary": "Li pàggini siguenti nun hannu lijami versu dî virsioni nta l'àutri lingui.",
        "withoutinterwiki-legend": "Prifissu",
        "withoutinterwiki-submit": "Ammustra",
-       "fewestrevisions": "Pàggini cu' cchiu' picca virsioni",
+       "fewestrevisions": "Pàggini cu cchiù picca virsioni",
        "nbytes": "$1 {{PLURAL:$1|byte|byte}}",
        "ncategories": "$1 {{PLURAL:$1|catigurìa|catigurìi}}",
        "ninterwikis": "$1 {{PLURAL:$1|interwiki}}",
        "nrevisions": "$1 {{PLURAL:$1|rivisioni|rivisioni}}",
        "nimagelinks": "Adupiratu nta $1 {{PLURAL:$1|pàggina|pàggini}}",
        "ntransclusions": "adupiratu nta $1 {{PLURAL:$1|pàggina|pàggini}}",
-       "specialpage-empty": "Nun cci su' risultati pi' stu rennicuntu.",
+       "specialpage-empty": "Nun ci sù risurtati pi stu rennicuntu.",
        "lonelypages": "Pàggini òrfani",
        "lonelypagestext": "Li pàggini ccassutta nun hannu lijami ca vèninu d'àutri pàggini e nun sù nclusi nta àutri pàggini di {{SITENAME}}.",
        "uncategorizedpages": "Pàggini nun catigurizzati",
        "wantedcategories": "Catigurìi addumannati",
        "wantedpages": "Pàggini addumannati",
        "wantedpages-summary": "Elencu dî pàggini ca nun esìstinu pirò hannu lu maiuri nùmmiru di ligami versu d'iddi, lassannu stari li pàggini chi comu ligami versu d'iddi hannu sulu rimanni. P'aviri n'elencu dî pàggini ca nun esìstinu pirò hannu rimanni versu d'iddi, talìa [[{{#special:BrokenRedirects}}|l'elencu dî rimanni rutti]].",
-       "wantedpages-badtitle": "Tìtulu nun vàlidu ntô gruppu di risultati: $1",
+       "wantedpages-badtitle": "Tìtulu nun vàlidu ntô gruppu di risurtati: $1",
        "wantedfiles": "File addumannati",
-       "wantedfiletext-cat": "Li file ccassutta su' richiamati però nun esìstunu. Ntâ lista cci ponnu èssiri macari li file chi' stannu nta dipòsiti esterni, cu' tuttu chi' esìstunu. Sti fausi pusitivi sarrannu <del>sbarrati</del>. Sparti, li pàggini chi' nclùdunu file chi' nun esìstunu su' elincati nta [[:$1]].",
-       "wantedfiletext-cat-noforeign": "Li file ccassutta su' richiamati però nun esìstunu. Sparti, li pàggini chi' nclùdunu file chi' nun esìstunu su' elincati nta [[:$1]].",
-       "wantedfiletext-nocat": "Li file ccassutta su' richiamati però nun esìstunu. Ntâ lista cci ponnu èssiri macari li file chi' stannu nta dipòsiti esterni, cu' tuttu chi' esìstunu. Sti fausi pusitivi sarrannu <del>sbarrati</del>.",
-       "wantedfiletext-nocat-noforeign": "Li file ccassutta su' richiamati però nun esìstunu.",
+       "wantedfiletext-cat": "Li file ccassutta sù richiamati pirò nun esìstinu. Ntâ lista ci ponnu èssiri macari li file chi stannu nta dipòsiti esterni, cu tuttu chi esìstinu. Sti fàusi pusitivi sunnu <del>sbarrati</del>. Sparti, li pàggini chi nclùdinu file chi nun esìstinu sù elincati nta [[:$1]].",
+       "wantedfiletext-cat-noforeign": "Li file ccassutta sù richiamati pirò nun esìstinu. Sparti, li pàggini chi nclùdinu file chi nun esìstinu sù elincati nta [[:$1]].",
+       "wantedfiletext-nocat": "Li file ccassutta sù richiamati pirò nun esìstinu. Ntâ lista ci ponnu èssiri macari li file chi stannu nta dipòsiti esterni, cu tuttu chi esìstinu. Sti fàusi pusitivi sunnu <del>sbarrati</del>.",
+       "wantedfiletext-nocat-noforeign": "Li file ccassutta sù richiamati pirò nun esìstinu.",
        "wantedtemplates": "Template addumannati",
-       "mostlinked": "Pàggini cchiu' culligati",
-       "mostlinkedcategories": "Catigurìi Pcchiu' culligati",
-       "mostlinkedtemplates": "Pàggini cchiu' trasclusi",
-       "mostcategories": "Pàggini cu' cchiu' ssai catigurìi",
-       "mostimages": "File cchiu' culligati",
-       "mostinterwikis": "Pàggini cu' cchiu' ssai interwiki",
-       "mostrevisions": "Pàggini cu' cchiu' ssai virsioni",
+       "mostlinked": "Pàggini cchiù culligati",
+       "mostlinkedcategories": "Catigurìi cchiù culligati",
+       "mostlinkedtemplates": "Pàggini cchiù nclusi",
+       "mostcategories": "Pàggini cu cchiossai catigurìi",
+       "mostimages": "File cchiù culligati",
+       "mostinterwikis": "Pàggini cu cchiossai interwiki",
+       "mostrevisions": "Pàggini cu cchiossai virsioni",
        "prefixindex": "Ìnnici secunnu un prifissu",
        "prefixindex-namespace": "Tutti li pàggini cûn prifissu (namespace $1)",
        "prefixindex-strip": "Leva li prifissi nta l'elencu",
        "deadendpages": "Pàggini senza nisciuta",
        "deadendpagestext": "Li pàggini siguenti sunnu privi di lijami versu àutri pàggini di {{SITENAME}}.",
        "protectedpages": "Pàggini prutetti",
-       "protectedpages-indef": "Sulu prutizzioni a' tempu innitirminatu",
+       "protectedpages-indef": "Sulu prutizzioni nfiniti",
        "protectedpages-summary": "Sta pàggina elenca li pàggini già esistenti chi comu a ora sù prutetti. Pi na lista dî tìtuli prutetti, chî quali vèni pruibbutu criari pàggini novi, talìa [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
-       "protectedpages-cascade": "Sulu prutizzioni a' cascata",
+       "protectedpages-cascade": "Sulu prutizzioni a cascata",
        "protectedpages-noredirect": "Ammuccia li rimanni",
-       "protectedpagesempty": "Pi' com'ora nun cc'è nudda pàggina prutetta cu' sti paràmitri.",
+       "protectedpagesempty": "Pi com'ora nun c'è nudda pàggina prutetta cu sti paràmitri.",
        "protectedpages-timestamp": "Data e ura",
        "protectedpages-page": "Pàggina",
        "protectedpages-expiry": "Scadenza",
        "protectedpages-unknown-performer": "Utenti scanusciutu",
        "protectedtitles": "Tìtuli prutetti",
        "protectedtitles-summary": "Sta pàggina elenca li tìtuli prutetti, chî quali vèni pruibbutu criari pàggini novi. Pi na lista dî pàggini già esistenti chi sù prutetti, talìa [[{{#special:ProtectedPages}}|{{int:protectedpages}}]].",
-       "protectedtitlesempty": "Pi' com'ora nun cc'è nuddu tìtulu prutettu cu' sti paràmitri.",
+       "protectedtitlesempty": "Pi com'ora nun c'è nuddu tìtulu prutettu cu sti paràmitri.",
        "listusers": "Lista di l'utenti",
        "listusers-editsonly": "Ammustra sulu l'utenti ca hannu cuntribbuti",
        "listusers-creationsort": "Òrdina pi data di criazzioni",
-       "listusers-desc": "Òrdina a' scìnniri",
-       "usereditcount": "$1 {{PLURAL:$1|cuntribbutu|cuntribbuta}}",
+       "listusers-desc": "Òrdina a scìnniri",
+       "usereditcount": "$1 {{PLURAL:$1|cuntribbutu|cuntribbuti}}",
        "usercreated": "{{GENDER:$3|Criatu}} lu $1 ê $2",
        "newpages": "Pàggini novi",
        "newpages-username": "Utenti:",
-       "ancientpages": "Pàggini cchiu' vecchî",
+       "ancientpages": "Pàggini cchiù vecchî",
        "move": "Sposta",
        "movethispage": "Sposta sta pàggina",
        "unusedimagestext": "Li file ccassutta esìstinu pirò nun sunnu ncurpurati nta nudda pàggina.\nAccura: àutri siti web ponnu aviri lijami versu dûn file pi menzu di URL diretti; li file addupirati a sta manera putìssiru èssiri elincati ccassutta macari si si nni fa usu.",
-       "unusedcategoriestext": "Li siguenti pàggini di catigurìi esìstunu, però nudda autra pàggina o catigurìa nni fa' usu.",
+       "unusedcategoriestext": "Li pàggini di catigurìi siguenti esìstinu, pirò nudda àutra pàggina o catigurìa nni fa usu.",
        "notargettitle": "Nudda distinazzioni",
        "notargettext": "Nun spicificasti na pàggina o puru n'utenti comu distinazzioni di st'opirazzioni.",
        "nopagetitle": "La pàggina di distinazzioni nun esisti",
        "nopagetext": "La pàggina ca spicificasti comu distinazzioni nun esisti.",
-       "pager-newer-n": "{{PLURAL:$1|1 cchiu' novu|$1 cchiu' novi}}",
-       "pager-older-n": "{{PLURAL:$1|1 cchiu' vecchî|$1 cchiu' vecchî}}",
+       "pager-newer-n": "{{PLURAL:$1|1 cchiù novu|$1 cchiù novi}}",
+       "pager-older-n": "{{PLURAL:$1|1 cchiù vecchî|$1 cchiù vecchî}}",
        "suppress": "Supravisuri",
-       "querypage-disabled": "Sta pàggina spiciali fu' disattivata pi' mutivi di pristazzioni.",
-       "apihelp": "Guida a' l'API",
-       "apihelp-no-such-module": "Mòdulu \"$\" nun truvatu.",
+       "querypage-disabled": "Sta pàggina spiciali fu disattivata pi mutivi di pristazzioni.",
+       "apihelp": "Guida a l'API",
+       "apihelp-no-such-module": "Mòdulu \"$\" nun attruvatu.",
        "booksources": "Fonti libbrarî",
-       "booksources-search-legend": "Ricerca di fonti libbrarî",
+       "booksources-search-legend": "Arricerca di fonti libbrarî",
        "booksources-isbn": "Còdici ISBN:",
-       "booksources-search": "Va cerca",
+       "booksources-search": "Va arricerca",
        "booksources-text": "Ccassutta c'è n'elencu di lijami versu àutri siti ca vìnninu libbra novi e usati, e ponnu aviri maiuri nfurmazzioni a prupòsitu dî libbra ca stai circannu:",
-       "booksources-invalid-isbn": "Lu còdici ISBN chi' spicificasti nun pari bonu; cuntrolla si' nun cci furu sbagghî di ricupiatura.",
+       "booksources-invalid-isbn": "Lu còdici ISBN chi spicificasti nun pari bonu; cuntrolla si nun ci foru sbagghî di ricupiatura.",
        "specialloguserlabel": "Fattu di l'utenti:",
        "speciallogtitlelabel": "Oggettu (tìtulu o {{ns:user}}:nomuutenti):",
-       "log": "Riggistra",
-       "all-logs-page": "Tutti li riggistra pubblici",
-       "alllogstext": "Prisintazzioni cumminata di tutti li riggistra dispunìbbili di {{SITENAME}}.\nPoi ristrìnciri la visuali silizziunannu nu tipu di riggistru, l'utenti ca fici l'azzioni (cuntunu majusculi e minusculi), o la pàggina ntirissata (cuntunu majusculi e minusculi puru).",
+       "log": "Riggistri",
+       "all-logs-page": "Tutti li riggistri pùbblici",
+       "alllogstext": "Prisintazzioni cumminata di tutti li riggistri dispunìbbili di {{SITENAME}}.\nPoi ristrìnciri la visuali silizziunannu nu tipu di riggistru, l'utenti ca fici l'azzioni (cùntanu maiùsculi e minùsculi), o la pàggina ntirissata (cùntanu maiùsculi e minùsculi puru).",
        "logempty": "Nudda vuci currispunnenti ntô riggistru.",
        "log-title-wildcard": "Attrova tituli chi ncignanu cu",
        "showhideselectedlogentries": "Cancia la visibbilità dî vuci di riggistru scigghiuti",
        "allarticles": "Tutti li pàggini",
        "allinnamespace": "Tutti li pàggini dû namespace $1",
        "allpagessubmit": "Vai",
-       "allpagesprefix": "Ammustra li pàggini chi' accumènzanu cu':",
-       "allpagesbadtitle": "Lu tìtulu di pàggina spicificatu nun era vàlidu o avìa nu prifissu intir-linguìsticu o intir-wiki.\nPutissi cuntèniri unu o cchiu' ssai caràttiri chi' nun su' cunsintuti ntê tìtula.",
-       "allpages-bad-ns": "Lu namespace \"$1\" nun asisti supra a' {{SITENAME}}.",
+       "allpagesprefix": "Ammustra li pàggini chi accumènzanu cu:",
+       "allpagesbadtitle": "Lu tìtulu di pàggina spicificatu nun era vàlidu o avìa nu prifissu nterlinguìsticu o inter-wiki.\nPutissi cuntèniri unu o cchiossai caràttiri chi nun sù cunzintuti ntê tìtuli.",
+       "allpages-bad-ns": "Lu namespace \"$1\" nun esisti supra a {{SITENAME}}.",
        "allpages-hide-redirects": "Ammuccia li rimanni",
        "cachedspecial-viewing-cached-ttl": "Stai taliannu na virsioni ntâ ''cache'' di sta pàggina, chi pò èssiri vecchia nfinu a $1.",
        "cachedspecial-viewing-cached-ts": "Stai taliannu na virsioni ntâ ''cache'' di sta pàggina, chi purrìa nun èssiri pirfettamenti aggiurnata.",
-       "cachedspecial-refresh-now": "Va talìa la cchiu' nova.",
+       "cachedspecial-refresh-now": "Va talìa la cchiù nova.",
        "categories": "Catigurìi",
        "categoriespagetext": "{{PLURAL:$1|La catigurìa ccassutta cunteni|Li catigurìi ccassutta cuntèninu}} pàggini o file multimidiali.\nLi [[Special:UnusedCategories|catigurìi vacanti]] nun sunnu ammustrati ccà.\nTalìa macari li [[Special:WantedCategories|catigurìi addumannati]].",
-       "categoriesfrom": "Ammustra li catigurìi a' pàrtiri di:",
-       "special-categories-sort-count": "òrdina pi' cuntìggiu",
+       "categoriesfrom": "Ammustra li catigurìi a pàrtiri di:",
+       "special-categories-sort-count": "òrdina pi cuntiggiu",
        "special-categories-sort-abc": "ordina alfabbeticamenti",
-       "deletedcontributions": "Cuntribbuta di l'utenti cancillati",
-       "deletedcontributions-title": "Cuntribbuta di l'utenti cancillati",
-       "sp-deletedcontributions-contribs": "cuntribbuta",
+       "deletedcontributions": "Cuntribbuti di l'utenti cancillati",
+       "deletedcontributions-title": "Cuntribbuti di l'utenti cancillati",
+       "sp-deletedcontributions-contribs": "cuntribbuti",
        "linksearch": "Arricerca dî lijami di fora",
-       "linksearch-pat": "Esprissioni di risciduta:",
+       "linksearch-pat": "Sprissioni d'arricerca:",
        "linksearch-ns": "Namespace:",
        "linksearch-ok": "Arricerca",
-       "linksearch-text": "Si ponnu adupirari li caràttiri matta, ad esempiu \"*.wikipedia.org\".\nCci voli almenu nu duminiu di primu liveddu, ad esempiu \"*.org\".<br />\n{{PLURAL:$2|Protucollu suppurtatu|Protucolli suppurtati}}: $1 (è pridifinutu http:// si' nun si nni spicìfica)",
+       "linksearch-text": "Si ponnu adupirari li metacaràttiri, p'esempiu \"*.wikipedia.org\".\nCi voli armenu nu duminiu di primu liveddu, p'esempiu \"*.org\".<br />\n{{PLURAL:$2|Protucollu suppurtatu|Protucolli suppurtati}}: $1 (è pridifinutu http:// si nun si nni spicìfica)",
        "linksearch-line": "$1 è culligatu dâ pàggina $2",
-       "linksearch-error": "Li caràttiri matta ponnu appariri sulu ô principiu dû nomu host.",
-       "listusersfrom": "Ammustra l'utenti a' pàrtiri di:",
+       "linksearch-error": "Li metacaràttiri ponnu appariri sulu ô principiu dû nomu host.",
+       "listusersfrom": "Ammustra l'utenti a pàrtiri di:",
        "listusers-submit": "Ammustra",
        "listusers-noresult": "Nuddu utenti attruvatu.",
        "listusers-blocked": "(bluccatu)",
        "activeusers": "Lista di l'utenti attivi",
-       "activeusers-intro": "Chista è na lista di l'utenti chi' fìciru na quarchi' attività {{PLURAL:$1|nta l'ùltimu jornu|nta l'ùltimi $1 jorna}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|azziòni|azziòna}} nta {{PLURAL:$3|l'ùltimu jornu|l'ùltimi $3 jorna}}",
-       "activeusers-from": "Ammustra l'utenti a' pàrtiri di:",
+       "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|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 so dritti d'accessu.\nCci ponnu èssiri [[{{MediaWiki:Listgrouprights-helppage}}|autri nfurmazzioni]] a' prupòsitu di ciascunu drittu.",
-       "listgrouprights-key": "Legenda:\n* <span class=\"listgrouprights-granted\">Drittu cuncidutu</span>\n* <span class=\"listgrouprights-revoked\">Drittu rivucatu</span>",
+       "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.",
+       "listgrouprights-key": "Liggenna:\n* <span class=\"listgrouprights-granted\">Drittu cuncidutu</span>\n* <span class=\"listgrouprights-revoked\">Drittu rivucatu</span>",
        "listgrouprights-group": "Gruppu",
        "listgrouprights-rights": "Dritti",
        "listgrouprights-helppage": "Help:Diritti dô gruppu",
-       "listgrouprights-members": "(elencu di cu nni fa' parti)",
+       "listgrouprights-members": "(elencu di cui nni fa parti)",
        "listgrouprights-addgroup": "Agghiùnciri {{PLURAL:$2|ô gruppu|ê gruppa}}: $1",
-       "listgrouprights-removegroup": "Livari{{PLURAL:$2|dû gruppu|dî gruppa}}: $1",
-       "listgrouprights-addgroup-all": "Agghiùnciri a' tutti li gruppa",
+       "listgrouprights-removegroup": "Livari {{PLURAL:$2|dû gruppu|dî gruppa}}: $1",
+       "listgrouprights-addgroup-all": "Agghiùnciri a tutti li gruppa",
        "listgrouprights-removegroup-all": "Livari di tutti li gruppa",
        "listgrouprights-addgroup-self": "Agghiùncirisi {{PLURAL:$2|ô gruppu|ê gruppa}}: $1",
        "listgrouprights-removegroup-self": "Livàrisi {{PLURAL:$2|dû gruppu|dî gruppa}}: $1",
-       "listgrouprights-addgroup-self-all": "Agghiùncirisi a' tutti li gruppa",
+       "listgrouprights-addgroup-self-all": "Agghiùncirisi a tutti li gruppa",
        "listgrouprights-removegroup-self-all": "Livàrisi di tutti li gruppa",
-       "listgrouprights-namespaceprotection-header": "Ristrizzioni pi' namespace",
+       "listgrouprights-namespaceprotection-header": "Ristrizzioni pi namespace",
        "listgrouprights-namespaceprotection-namespace": "Namespace",
-       "listgrouprights-namespaceprotection-restrictedto": "Dritti chi' cunsentunu a' l'utenti di fari canciamenti",
+       "listgrouprights-namespaceprotection-restrictedto": "Dritti chi cunzèntinu a l'utenti di fari canciamenti",
        "trackingcategories": "Catigurìi di tracciamentu",
-       "trackingcategories-summary": "Sta pàggina elenca i catigurìi di tracciamèntu chi' vènunu jincuti autumaticamenti dû software MediaWiki. I so nomi si ponnu canciari mudificannu i missaggi di sistema currispunnenti ntô namespace {{ns:8}}.",
+       "trackingcategories-summary": "Sta pàggina elenca li catigurìi di tracciamentu chi vèninu jincuti autumaticamenti dû software MediaWiki. Li sò nomi si ponnu canciari canciannu li missaggi di sistema currispunnenti ntô namespace {{ns:8}}.",
        "trackingcategories-msg": "Catigurìa di tracciamentu",
        "trackingcategories-name": "Nomu dû missaggiu",
        "trackingcategories-desc": "Criterî pâ nclusioni ntâ catigurìa",
-       "noindex-category-desc": "Sta pàggina nun veni innicizzata dî robot picchì cunteni la palora màggica <code><nowiki>__NOINDEX__</nowiki></code> e sta nta nu namespace unni sta marcatura è cunsintuta.",
-       "index-category-desc": "Sta pàggina cunteni la palora màggica <code><nowiki>__INDEX__</nowiki></code> (e sta nta nu namespace unni sta marcatura è cunsintuta), e pi' chistu veni innicizzata dî robot quannu nurmalmenti nô sarrìa.",
-       "post-expand-template-inclusion-category-desc": "La grannizza di sta pàggina passa <code>$wgMaxArticleSize</code> appressu a' l'espansioni di tutti li template, dunca certi template nun furu espannuti.",
-       "post-expand-template-argument-category-desc": "Sta pàggina veni cchiu' granni di <code>$wgMaxArticleSize</code> appressu chi' s'espànni l'argumentu dûn template (quarchi' cosa nta parèntisi graffi tripli, comu <code>{{{Pippu}}}</code>).",
-       "expensive-parserfunction-category-desc": "Sta pàggina adòpira troppi funzioni di l'analizzaturi sintatticu custusi (comu <code>#ifexist</code>). Talìa [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
+       "noindex-category-desc": "Sta pàggina nun veni nnicizzata dî robot pirchì cunteni la palora màggica <code><nowiki>__NOINDEX__</nowiki></code> e sta nta nu namespace unni sta marcatura è cunzintuta.",
+       "index-category-desc": "Sta pàggina cunteni la palora màggica <code><nowiki>__INDEX__</nowiki></code> (e sta nta nu namespace unni sta marcatura è cunzintuta), e pi chistu veni nnicizzata dî robot quannu nurmalmenti nun lu fussi.",
+       "post-expand-template-inclusion-category-desc": "La grannizza di sta pàggina passa <code>$wgMaxArticleSize</code> appressu a l'espanzioni di tutti li template, dunca certi template nun foru espannuti.",
+       "post-expand-template-argument-category-desc": "Sta pàggina veni cchiù granni di <code>$wgMaxArticleSize</code> appressu chi s'espanni l'argumentu dûn template (quarchi cosa ntra parèntisi graffi tripli, comu <code>{{{Cicciu}}}</code>).",
+       "expensive-parserfunction-category-desc": "Sta pàggina adòpira troppi funzioni di l'analizzaturi sintàtticu custusi (comu <code>#ifexist</code>). Talìa [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Sta pàggina cunteni nu lijami a file ruttu (nu lijami pi ncurpurari nu file chi nun esisti).",
        "hidden-category-category-desc": "Sta catigurìa cunteni <code><nowiki>__HIDDENCAT__</nowiki></code> ntô corpu dâ sò pàggina, cosa chi nun la fa spuntari comu mpustazzioni pridifinuta dintra dû riquatru dî lijami ê catigurìi ntê pàggini.",
        "trackingcategories-nodesc": "Nudda discrizzioni dispunìbbili.",
        "trackingcategories-disabled": "Sta catigurìa è disattivata",
        "mailnologin": "Nuddu nnirizzu pi mannari",
-       "mailnologintext": "Hâ' [[Special:UserLogin|tràsiri]] e aviri riggistratu nu nnirizzu di posta elittrònica vàlidu ntê to [[Special:Preferences|prifirenzi]] pi' putiri mannari posta elittrònica a' l'àutri utenti.",
-       "emailuser": "Manna nu missaggiu di posta elittrònica a' st'utenti",
-       "emailuser-title-target": "Mannari nu missaggiu di posta elittrònica a' {{GENDER:$1|stu utenti|sta utenti}}",
-       "emailuser-title-notarget": "Mannari nu missaggiu di posta elittrònica a' n'utenti",
-       "emailpagetext": "Poi adupirari lu mòdulu ccassutta pi' mannari nu missaggiu di posta elittrònica a' {{GENDER:$1|stu utenti|sta utenti}}.\nLu nnirizzu di posta elittrònica ca mittisti ntê [[Special:Preferences|prifirenzi dû to utenti]] và a' cumpàriri comu mittenti dû missaggiu, di manera ca lu distinatariu ti pò arrispùnniri dirittamenti.",
+       "mailnologintext": "Hai a [[Special:UserLogin|tràsiri]] e aviri riggistratu nu nnirizzu di posta elittrònica vàlidu ntê tò [[Special:Preferences|prifirenzi]] pi putiri mannari posta elittrònica a l'àutri utenti.",
+       "emailuser": "Manna nu missaggiu di posta elittrònica a st'utenti",
+       "emailuser-title-target": "Mannari nu missaggiu di posta elittrònica a {{GENDER:$1|st'utenti|st'utenti}}",
+       "emailuser-title-notarget": "Mannari nu missaggiu di posta elittrònica a n'utenti",
+       "emailpagetext": "Poi adupirari lu mòdulu ccassutta pi mannari nu missaggiu di posta elittrònica a {{GENDER:$1|st'utenti|st'utenti}}.\nLu nnirizzu di posta elittrònica ca mittisti ntê [[Special:Preferences|prifirenzi dû tò utenti]] va a cumpàriri comu mittenti dû missaggiu, di manera ca lu distinatariu ti pò arrispùnniri direttamenti.",
        "defemailsubject": "Missaggiu di {{SITENAME}} di l'utenti \"$1\"",
-       "usermaildisabled": "Missaggi di posta elittrònica a' l'utenti disattivati",
-       "usermaildisabledtext": "Nta sta wiki nun si ponnu mannari missaggi di posta elittrònica a' l'autri utenti",
+       "usermaildisabled": "Missaggi di posta elittrònica a l'utenti disattivati",
+       "usermaildisabledtext": "Nta sta wiki nun si ponnu mannari missaggi di posta elittrònica a l'àutri utenti",
        "noemailtitle": "Nuddu nnirizzu di posta elittrònica",
-       "noemailtext": "St'utenti nun havi spicificatu nu nnirizzu di posta elittrònica vàlidu.",
-       "nowikiemailtext": "St'utenti scigghìu di nun ricèviri missaggi di posta elittrònica di l'autri utenti.",
+       "noemailtext": "St'utenti nun spicificau nu nnirizzu di posta elittrònica vàlidu.",
+       "nowikiemailtext": "St'utenti scigghìu di nun arricèviri missaggi di posta elittrònica di l'àutri utenti.",
        "emailnotarget": "Spicificatu comu distinatariu un nomu utenti nun esistenti o nun vàlidu.",
        "emailtarget": "Metti lu nomu utenti dû distinatariu",
        "emailusername": "Nomu utenti:",
        "emailusernamesubmit": "Manna",
-       "email-legend": "Manna posta elittrònica a n'autru utenti di {{SITENAME}}",
+       "email-legend": "Manna posta elittrònica a n'àutru utenti di {{SITENAME}}",
        "emailfrom": "Di:",
        "emailto": "A:",
        "emailsubject": "Uggettu:",
        "emailmessage": "Missaggiu:",
        "emailsend": "Manna",
        "emailccme": "Mànnami na copia dû missaggiu.",
-       "emailccsubject": "Copia dû missaggiu ca mannasti a' $1: $2",
+       "emailccsubject": "Copia dû missaggiu ca mannasti a $1: $2",
        "emailsent": "Missaggiu di posta elittrònica mannatu",
-       "emailsenttext": "Lu to missaggiu di posta elittrònica fu' mannatu.",
+       "emailsenttext": "Lu tò missaggiu di posta elittrònica fu mannatu.",
        "emailuserfooter": "Stu missaggiu fu mannatu di $1 a $2 pi menzu dâ funzioni \"{{int:emailuser}}\" supra a {{SITENAME}}.",
        "usermessage-summary": "Lassatu nu missaggiu di sistema.",
        "usermessage-editor": "Missaggeri di sistema",
        "watchlistfor2": "Di $1, $2",
        "nowatchlist": "Nun hai nudda vuci ntâ tò lista taliata.",
        "watchlistanontext": "Pi vìdiri e canciari li vuci dâ tò lista taliata hai a tràsiri.",
-       "watchnologin": "Nun hai trasutu",
+       "watchnologin": "Nun trasisti",
        "addwatch": "Agghiunci â lista taliata",
        "addedwatchtext": "La pàggina «[[:$1]]» e la sò pàggina di discussioni foru agghiunciuti â tò [[Special:Watchlist|lista taliata]].",
        "addedwatchtext-short": "La pàggina \"$1\" fu agghiunciuta â tò lista taliata.",
        "unwatch": "Nun taliari cchiù",
        "unwatchthispage": "Finisci di taliari",
        "notanarticle": "Nun è na pàggina di cuntinutu",
-       "notvisiblerev": "L'ùltima virsioni fatta di n'utenti diffirenti fu' cancillata",
+       "notvisiblerev": "L'ùrtima virsioni fatta di n'utenti diffirenti fu cancillata",
        "watchlist-details": "{{PLURAL:$1|C'è na pàggina|Ci sù $1 pàggini}} ntâ tò lista taliata, senza cuntari sparti li pàggini di discussioni.",
        "wlheader-enotif": "La nutìfica via posta elittrònica è attivata.",
-       "wlheader-showupdated": "Li pàggini ca hannu statu canciati dâ tò ùrtima vìsita sunnu evidinziati 'n <strong>grassettu</strong>.",
+       "wlheader-showupdated": "Li pàggini ca foru canciati dâ tò ùrtima vìsita sunnu evidinziati n <strong>grassettu</strong>.",
        "wlnote": "Sutta attrovi l'ùrtim{{PLURAL:$1|u canciamentu|i <strong>$1</strong> canciamenti}} fatti nta l'ùrtim{{PLURAL:$1|a ura|i <strong>$2</strong> uri}}, aggiurnati ê $4 dû $3.",
        "wlshowlast": "Ammustra l'ùrtimi $1 uri $2 jorna",
        "watchlist-options": "Opzioni dâ lista taliata",
        "enotif_impersonal_salutation": "Utenti di {{SITENAME}}",
        "enotif_subject_deleted": "La pàggina $1 supra a {{SITENAME}} fu cancillata di $2",
        "enotif_subject_created": "La pàggina $1 supra a {{SITENAME}} fu criata di $2",
-       "enotif_subject_moved": "La pàggina $1 supra a' {{SITENAME}} fu' spustata di $2",
-       "enotif_subject_restored": "La pàggina $1 supra a' {{SITENAME}} fu' ripristinata di $2",
-       "enotif_subject_changed": "La pàggina $1 supra a' {{SITENAME}} fu' canciata di $2",
-       "enotif_body_intro_deleted": "La pàggina $1 supra a' {{SITENAME}} fu' cancillata lu $PAGEEDITDATE di $2, talìa $3.",
+       "enotif_subject_moved": "La pàggina $1 supra a {{SITENAME}} fu spustata di $2",
+       "enotif_subject_restored": "La pàggina $1 supra a {{SITENAME}} fu ripristinata di $2",
+       "enotif_subject_changed": "La pàggina $1 supra a {{SITENAME}} fu canciata di $2",
+       "enotif_body_intro_deleted": "La pàggina $1 supra a {{SITENAME}} fu cancillata lu $PAGEEDITDATE di $2, talìa $3.",
        "enotif_body_intro_created": "La pàggina $1 supra a {{SITENAME}} fu criata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
-       "enotif_body_intro_moved": "La pàggina $1 supra a' {{SITENAME}} fu' spustata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
-       "enotif_body_intro_restored": "La pàggina $1 supra a' {{SITENAME}} fu' ripristinata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
-       "enotif_body_intro_changed": "La pàggina $1 supra a' {{SITENAME}} fu' canciata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
+       "enotif_body_intro_moved": "La pàggina $1 supra a {{SITENAME}} fu spustata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
+       "enotif_body_intro_restored": "La pàggina $1 supra a {{SITENAME}} fu ripristinata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
+       "enotif_body_intro_changed": "La pàggina $1 supra a {{SITENAME}} fu canciata lu $PAGEEDITDATE di $2, talìa la virsioni attuali nta $3.",
        "enotif_lastvisited": "Cunzurta $1 pi vìdiri tutti li canciamenti dâ tò ùrtima vìsita.",
        "enotif_lastdiff": "Vidi $1 pi taliari lu canciamentu.",
        "enotif_anon_editor": "utenti anonimu $1",
        "created": "criatu",
        "changed": "canciatu",
        "deletepage": "Cancella la pàggina",
-       "confirm": "Cunfirma",
+       "confirm": "Cunferma",
        "excontent": "lu cuntinutu era: \"$1\"",
        "excontentauthor": "lu cuntinutu era: \"$1\" (e lu sulu cuntribbuturi era \"[[Special:Contributions/$2|$2]]\")",
        "exbeforeblank": "lu cuntinutu prima dû svacantamentu era: \"$1\"",
        "delete-confirm": "Cancella \"$1\"",
        "delete-legend": "Cancella",
-       "historywarning": "<strong>Accura:</strong> La pàggina ca stai pi' cancillari havi na crunuluggìa cu' $1 virsioni:",
-       "confirmdeletetext": "Stai cancillannu na pàggina cu' tutta la so crunuluggìa.\nPi' favuri, cunfirma ca ntenni fari sta cosa, ca hai caputu li cunsiguenzi, e chi' lu fai secunnu [[{{MediaWiki:Policy-url}}|li linî guida]].",
+       "historywarning": "<strong>Accura:</strong> La pàggina ca stai pi cancillari havi na crunuluggìa cu $1 virsioni:",
+       "confirmdeletetext": "Stai cancillannu na pàggina cu tutta la sò crunuluggìa.\nPi favuri, cunferma ca ntenni fari sta cosa, ca capisti li cunziguenzi, e chi lu fai secunnu [[{{MediaWiki:Policy-url}}|li lìnii guida]].",
        "actioncomplete": "Azzioni cumpritata",
        "actionfailed": "Azioni fallita",
        "deletedtext": "\"$1\" ha statu cancillatu.\nTalìa $2 pi na lista di cancillazzioni ricenti.",
        "deletionlog": "riggistru dî cancillazzioni",
        "reverted": "Ripristinata la virsioni pricidenti",
        "deletecomment": "Mutivu:",
-       "deleteotherreason": "Autru o ultiriuri mutivu:",
-       "deletereasonotherlist": "Autru mutivu",
-       "deletereason-dropdown": "* Mutivi cchiu' cumuni pâ cancillazzioni\n** Spam\n** Vannalismu\n** Viulazzioni di lu drittu d'auturi\n** Dumanna di l'auturi\n** Rimannu scassatu",
+       "deleteotherreason": "Àutru o ultiriuri mutivu:",
+       "deletereasonotherlist": "Àutru mutivu",
+       "deletereason-dropdown": "* Mutivi cchiù cumuni pâ cancillazzioni\n** Spam\n** Vannalismu\n** Viulazzioni di lu drittu d'auturi\n** Dumanna di l'auturi\n** Rimannu scassatu",
        "delete-edit-reasonlist": "Cancia li mutivi dâ cancillazzioni",
-       "delete-toobig": "Sta pàggina havi na crunuluggìa dî canciamenti assai longa, cchiu' ssai di $1 {{PLURAL:$1|virsioni|virsioni}}).\nLa cancillazzioni dî pàggini comu a' chista è risirvata, pi' scansari la pussibbilitati di pruvucari senza vulìrilu prubblemi a' {{SITENAME}}.",
-       "delete-warning-toobig": "Sta pàggina havi na crunuluggìa dî canciamenti assai longa, cchiu' ssai di $1 {{PLURAL:$1|virsioni|virsioni}}).\nLa so cancillazzioni po' disturbari lu funziunamentu di  {{SITENAME}}; prucedi cu' cautela.",
+       "delete-toobig": "Sta pàggina havi na crunuluggìa dî canciamenti assai longa, cchiossai di $1 {{PLURAL:$1|virsioni|virsioni}}).\nLa cancillazzioni dî pàggini comu a chista è risirvata, pi scanzari la pussibbilitati di pruvucari senza vulìrilu prubblemi a {{SITENAME}}.",
+       "delete-warning-toobig": "Sta pàggina havi na crunuluggìa dî canciamenti assai longa, cchiossai di $1 {{PLURAL:$1|virsioni|virsioni}}).\nLa sò cancillazzioni pò disturbari lu funziunamentu di  {{SITENAME}}; prucedi cu cautela.",
        "deleteprotected": "Nun poi cancillari sta pàggina pirchì fu prutiggiuta.",
-       "deleting-backlinks-warning": "'''Accura:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Autri pàggini]] su' culligati o trascludunu la pàggina chi' stai cancillannu.",
+       "deleting-backlinks-warning": "'''Accura:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Àutri pàggini]] sunnu culligati o nclùdinu la pàggina chi stai cancillannu.",
        "rollback": "Annullamentu di canciamenti",
        "rollbacklink": "canciu n'arreri",
-       "rollbacklinkcount": "cancia n'arreri $1 {{PLURAL:$1|mudìfica|mudìfichi}}",
-       "rollbacklinkcount-morethan": "cancia n'arreri cchiu' ssai di $1 {{PLURAL:$1|mudìfica|mudìfichi}}",
-       "rollbackfailed": "Lu canciu 'n arreri nun riniscìu",
-       "cantrollback": "Nun si po' annullari lu canciamentu;\nl'ùltimu cuntribbuturi è l'ùnicu auturi di sta pàggina.",
-       "alreadyrolled": "Nun si po' annullari l'ùltimu canciamentu â pàggina [[:$1]] fattu di [[User:$2|$2]] ([[User talk:$2|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nquarchidun'autru già hâ canciatu la pàggina o puru hâ fattu nu canciu n'arreri.\n\nL'ùltimu canciamentu â pàggina fu' fattu di [[User:$3|$3]] ([[User talk:$3|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+       "rollbacklinkcount": "cancia n'arreri $1 {{PLURAL:$1|canciamentu|canciamenti}}",
+       "rollbacklinkcount-morethan": "cancia n'arreri cchiossai di $1 {{PLURAL:$1|canciamentu|canciamenti}}",
+       "rollbackfailed": "Lu canciu n arreri nun arriniscìu",
+       "cantrollback": "Nun si pò annullari lu canciamentu;\nl'ùrtimu cuntribbuturi è l'ùnicu auturi di sta pàggina.",
+       "alreadyrolled": "Nun si pò annullari l'ùrtimu canciamentu â pàggina [[:$1]] fattu di [[User:$2|$2]] ([[User talk:$2|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nquarchidun'àutru già canciau la pàggina o puru fici nu canciu n'arreri.\n\nL'ùrtimu canciamentu â pàggina fu fattu di [[User:$3|$3]] ([[User talk:$3|discussioni]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Lu riassuntu dû canciamentu era: \"''$1''\".",
-       "revertpage": "Annullati li canciamenti fatti di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussioni]]) nfina a' l'ùltima virsioni di [[User:$1|$1]]",
-       "revertpage-nouser": "Annullati li canciamenti fatti di n'utenti ammucciatu nfina a' l'ùltima virsioni di {{GENDER:$1|[[User:$1|$1]]}}",
-       "rollback-success": "Annullati li canciamenti di $1;\nsi turnau a' l'ùltima virsioni di $2.",
+       "revertpage": "Annullati li canciamenti fatti di [[Special:Contributions/$2|$2]] ([[User talk:$2|discussioni]]) nfina a l'ùrtima virsioni di [[User:$1|$1]]",
+       "revertpage-nouser": "Annullati li canciamenti fatti di n'utenti ammucciatu nfina a l'ùrtima virsioni di {{GENDER:$1|[[User:$1|$1]]}}",
+       "rollback-success": "Annullati li canciamenti di $1;\nsi turnau a l'ùrtima virsioni di $2.",
        "sessionfailure-title": "Erruri dâ sissioni",
-       "sessionfailure": "Pari chi' cc'è quarchi' prubblema câ to sissioni di trasuta;\nst'azzioni fu' annullata comu pricauzzioni contra dû furtu di sissioni.\nTorna â pàggina pricidenti, ricàrricala e prova n'autra vota.",
+       "sessionfailure": "Pari chi c'è quarchi prubblema câ tò sissioni di trasuta;\nst'azzioni fu annullata comu pricauzzioni contra dû furtu di sissioni.\nTorna â pàggina pricidenti, arricàrricala e prova n'àutra vota.",
        "changecontentmodel": "Canciamentu dû mudellu dû cuntinutu di na pàggina",
        "changecontentmodel-legend": "Canciamentu dû mudellu dû cuntinutu",
        "changecontentmodel-title-label": "Tìtulu dâ pàggina",
        "logentry-contentmodel-change-revertlink": "annulla",
        "logentry-contentmodel-change-revert": "annullamentu",
        "protectlogpage": "Riggistru dî prutizzioni",
-       "protectlogtext": "Ccassutta c'è nu riggistru dî canciamenti â prutizzioni dî pàggini.\nVidi la [[Special:ProtectedPages|lista dî pàggini prutetti]] pi' canùsciri tutti i prutizzioni di pàggini chi' su' in viguri.",
+       "protectlogtext": "Ccassutta c'è nu riggistru dî canciamenti â prutizzioni dî pàggini.\nVidi la [[Special:ProtectedPages|lista dî pàggini prutetti]] pi canùsciri tutti li prutizzioni di pàggini chi sù n viguri.",
        "protectedarticle": "prutiggìu [[$1]]",
        "modifiedarticleprotection": "canciau lu liveddu di prutizzioni di \"[[$1]]\"",
        "unprotectedarticle": "livau la prutizzioni di \"[[$1]]\"",
        "protect-title": "Canciamentu dû liveddu di prutizzioni di \"$1\"",
        "protect-title-notallowed": "Vista dû liveddu di prutizzioni di \"$1\"",
        "prot_1movedto2": "spustau [[$1]] nta [[$2]]",
-       "protect-badnamespace-title": "Namespace unni nun si po' prutèggiri",
+       "protect-badnamespace-title": "Namespace unni nun si pò prutèggiri",
        "protect-badnamespace-text": "Li pàggini nta stu namespace nun si ponnu prutèggiri.",
-       "protect-norestrictiontypes-text": "Sta pàggina nun si po' prutèggiri picchì nun cc'è nudda sorta di ristrizzioni dispunìbbili.",
-       "protect-norestrictiontypes-title": "Pàggina chi' nun si po' prutèggiri",
-       "protect-legend": "Cunfirma la prutizzioni",
+       "protect-norestrictiontypes-text": "Sta pàggina nun si pò prutèggiri pirchì nun c'è nudda sorta di ristrizzioni dispunìbbili.",
+       "protect-norestrictiontypes-title": "Pàggina chi nun si pò prutèggiri",
+       "protect-legend": "Cunferma la prutizzioni",
        "protectcomment": "Mutivu:",
        "protectexpiry": "Scadenza",
        "protect_expiry_invalid": "L'ura di scadenza nun è vàlida.",
-       "protect_expiry_old": "L'ura di scadenza già havi passatu.",
-       "protect-unchain-permissions": "Sblocca autri opzioni di prutizzioni",
-       "protect-text": "Cca poi a' vìdiri e canciari lu liveddu di prutizzioni dâ pàggina <strong>$1</strong>.",
-       "protect-locked-blocked": "Nun si ponnu canciari li livedda di prutizzioni quannu unu è bluccatu.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
-       "protect-locked-dblock": "Nun si ponnu canciari li livedda di prutizzioni picchì cc'è attivatu un bloccu dâ basi di dati.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
-       "protect-locked-access": "Lu to cuntu nun havi lu pirmissu di canciari li livedda di prutizzioni.\nCca cci su' li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
+       "protect_expiry_old": "L'ura di scadenza già passau.",
+       "protect-unchain-permissions": "Sblocca àutri opzioni di prutizzioni",
+       "protect-text": "Ccà poi vìdiri e canciari lu liveddu di prutizzioni dâ pàggina <strong>$1</strong>.",
+       "protect-locked-blocked": "Nun si ponnu canciari li liveddi di prutizzioni quannu unu è bluccatu.\nCcà ci sù li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
+       "protect-locked-dblock": "Nun si ponnu canciari li liveddi di prutizzioni pirchì c'è attivatu un bloccu dâ basi di dati.\nCcà ci sù li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
+       "protect-locked-access": "Lu tò cuntu nun havi lu pirmissu di canciari li liveddi di prutizzioni.\nCcà ci sù li mpustazzioni attuali dâ pàggina <strong>$1</strong>:",
        "protect-cascadeon": "Com'a ora sta pàggina è prutetta pirchì veni nclusa {{PLURAL:$1|ntâ pàggina siquenti, ca havi|ntê pàggini siquenti, ca hannu}} la prutizzioni a cascata attivata.\nLi canciamenti ca si fannu ô liveddu di prutizzioni di sta pàggina nun vannu a canciari la prutizzioni a cascata.",
-       "protect-default": "Cunsenti a' tutti l'utenti",
-       "protect-fallback": "Cunsenti sulu a' l'utenti cû pirmissu \"$1\"",
-       "protect-level-autoconfirmed": "Cunsenti sulu a' l'utenti autu-cunfirmati",
-       "protect-level-sysop": "Cunsenti sulu a' l'amministratura",
-       "protect-summary-cascade": "a' cascata",
+       "protect-default": "Cunzenti a tutti l'utenti",
+       "protect-fallback": "Cunzenti sulu a l'utenti cû pirmissu \"$1\"",
+       "protect-level-autoconfirmed": "Cunzenti sulu a l'utenti autu-cunfirmati",
+       "protect-level-sysop": "Cunzenti sulu a l'amministratura",
+       "protect-summary-cascade": "a cascata",
        "protect-expiring": "scadi lu $1 (UTC)",
        "protect-expiring-local": "scadi lu $1",
-       "protect-expiry-indefinite": "a' tempu nditirminatu",
-       "protect-cascade": "Pruteggi li pàggini nclusi nta chista (prutizzioni a' cascata)",
-       "protect-cantedit": "Nun poi canciari li livedda di prutizzioni di sta pàggina picchì nun hai lu pirmissu di canciàrila.",
-       "protect-othertime": "Autra scadenza:",
-       "protect-othertime-op": "autra scadenza",
+       "protect-expiry-indefinite": "a tempu nditirminatu",
+       "protect-cascade": "Pruteggi li pàggini nclusi nta chista (prutizzioni a cascata)",
+       "protect-cantedit": "Nun poi canciari li liveddi di prutizzioni di sta pàggina pirchì nun hai lu pirmissu di canciàrila.",
+       "protect-othertime": "Àutra scadenza:",
+       "protect-othertime-op": "àutra scadenza",
        "protect-existing-expiry": "Scadenza attuali: $3 dû $3",
-       "protect-existing-expiry-infinity": "Scadenza attuali: infinitu",
-       "protect-otherreason": "Autru o ultiriuri mutivu:",
-       "protect-otherreason-op": "Autru mutivu",
-       "protect-dropdown": "*Mutivi cumuni pâ prutizzioni\n** Vannalìsimi ripituti\n** Spam ripitutu\n** Guerra di canciamenti cuntrapruduttiva\n** Pàggina di autu tràficu",
+       "protect-existing-expiry-infinity": "Scadenza attuali: nfinitu",
+       "protect-otherreason": "Àutru o ultiriuri mutivu:",
+       "protect-otherreason-op": "Àutru mutivu",
+       "protect-dropdown": "*Mutivi cumuni pâ prutizzioni\n** Vannalismi ripituti\n** Spam ripitutu\n** Guerra di canciamenti contrapruduttiva\n** Pàggina d'àutu tràficu",
        "protect-edit-reasonlist": "Cancia li mutivi pâ prutizzioni",
-       "protect-expiry-options": "1 ura:1 hour,1 jornu:1 day,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,infinitu:infinite",
+       "protect-expiry-options": "1 ura:1 hour,1 jornu:1 day,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite",
        "restriction-type": "Pirmissu:",
        "restriction-level": "Liveddu di ristrizzioni:",
        "minimum-size": "Grannizza mìnima",
        "undeletepage": "Talìa e ricùpira li pàggini cancillati",
        "undeletepagetitle": "<strong>Quantu segui è cumpostu di virsioni cancillati di [[:$1|$1]]</strong>.",
        "viewdeletedpage": "Talìa li pàggini cancillati",
-       "undeletepagetext": "{{PLURAL:$1|La siguenti pàggina fu' cancillata|Li siguenti $1 pàggini foru cancillati}}, però {{PLURAL:$1|è|sunnu}} ancora nta l'archiviu e pi' chistu si {{PLURAL:$1|po|ponnu}} ancora ricupirari.\nPiriudicamenti l'archìviu po' vèniri svacantatu.",
+       "undeletepagetext": "{{PLURAL:$1|La pàggina siguenti fu cancillata|Li $1 pàggini siguenti foru cancillati}}, pirò {{PLURAL:$1|è|sunnu}} ancora nta l'archiviu e pi chistu si {{PLURAL:$1|pò|ponnu}} ancora ricupirari.\nPiriodicamenti l'archiviu pò vèniri svacantatu.",
        "undelete-fieldset-title": "Ricùpira virsioni",
        "undeleteextrahelp": "Pi ricupirari la storia sana dâ pàggina, cliccari <strong><em>{{int:undeletebtn}}</em></strong> senza scègghiri nudda casedda.\nPi fari nu ricùpiru silittivu, scègghiri li caseddi currispunnenti ê virsioni di ripigghiari, e cliccari <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "$1 {{PLURAL:$1|virsioni}} cancillati",
        "undeletehistory": "Siddu ricùpiri sta pàggina, tutti li sò virsioni vèninu ricupirati ntâ crunuluggìa.\nSiddu na pàggina nova fu criata cû stissu tìtulu di chidda di ricupirari doppu dâ sò cancillazzioni, li virsioni ricupirati vannu a finiri ntâ crunuluggìa passata.",
-       "undeleterevdel": "Lu ricùpiru nun veni fattu siddu pròvuca la cancillazzioni parziali dâ virsioni currenti dâ pàggina o dû file.\nNta stu casu, hai a' livari lu signu di spunta o l'ammucciamentu dâ virsioni cancillata cchiu' ricenti.",
-       "undeletehistorynoadmin": "Sta pàggina fu' cancillata.\nLu mutivu dâ cancillazzioni è ammustratu ccà sutta, nzèmmula ê dittagghî di l'utenti ca canciaru sta pàggina prima dâ so cancillazzioni.\nLu testu cuntinutu ntê virsioni cancillati è dispunìbbili sulu a' l'amministratura.",
+       "undeleterevdel": "Lu ricùpiru nun veni fattu siddu pròvuca la cancillazzioni parziali dâ virsioni currenti dâ pàggina o dû file.\nNta stu casu, hai a livari lu signu di spunta o l'ammucciamentu dâ virsioni cancillata cchiù ricenti.",
+       "undeletehistorynoadmin": "Sta pàggina fu cancillata.\nLu mutivu dâ cancillazzioni è ammustratu ccà sutta, nzèmmula ê dittagghî di l'utenti ca canciaru sta pàggina prima dâ sò cancillazzioni.\nLu testu cuntinutu ntê virsioni cancillati è dispunìbbili sulu a l'amministratura.",
        "undelete-revision": "Virsioni cancillata di $1 (dû $4 ê $5) di $3:",
        "undeleterevision-missing": "Virsioni nun vàlida o ammancanti.\nPò èssiri chi hai na lijami sbagghiata, o puru la virsioni fu già ricupirata o livata di l'archiviu.",
        "undelete-nodiff": "Nun fu attruvata nudda virsioni passata.",
        "undeletebtn": "Ricùpira",
        "undeletelink": "talìa/ricùpira",
        "undeleteviewlink": "talìa",
-       "undeleteinvert": "Inverti la silizzioni",
+       "undeleteinvert": "Nverti la silizzioni",
        "undeletecomment": "Mutivu:",
        "undeletedrevisions": "$1 {{PLURAL:$1|virsioni ricupirata|virsioni ricupirati}}",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|virsioni ricupirata|virsioni ricupirati}} e $2 {{PLURAL:$2|file ricupiratu|file ricupirati}}",
        "undeletedfiles": "$1 {{PLURAL:$1|file ricupiratu|file ricupirati}}",
-       "cannotundelete": "L'annullamentu dâ cancillazzioni nun riniscìu:\n$1",
-       "undeletedpage": "<strong>La pàggina $1 fu' ricupirata</strong>\n\nCunzulta lu [[Special:Log/delete|riggistru dî cancillazzioni]] pi' vìdiri li cancillazzioni e li ricùpiri cchiu' ricenti.",
+       "cannotundelete": "L'annullamentu dâ cancillazzioni nun arriniscìu:\n$1",
+       "undeletedpage": "<strong>La pàggina $1 fu ricupirata</strong>\n\nCunzurta lu [[Special:Log/delete|riggistru dî cancillazzioni]] pi vìdiri li cancillazzioni e li ricùpiri cchiù ricenti.",
        "undelete-header": "Talìa lu [[Special:Log/delete|riggistru dî cancillazzioni]] pî pàggini cancillati di ricenti.",
-       "undelete-search-title": "Cerca li pàggini cancillati",
+       "undelete-search-title": "Arricerca li pàggini cancillati",
        "undelete-search-box": "Cerca li pàggini cancillati",
-       "undelete-search-prefix": "Ammustra li pàggini unni lu tìtulu accumènza cu':",
+       "undelete-search-prefix": "Ammustra li pàggini unni lu tìtulu accumenza cu:",
        "undelete-search-submit": "Cerca",
-       "undelete-no-results": "Nudda pàggina currispunnentu fu' attruvata nta l'archiviu dî pàggini cancillati.",
-       "undelete-filename-mismatch": "Nun si po' annullari la cancillazzioni dâ virsioni dû file cu' data e ura $1: Nomu di file nun currispunnenti.",
-       "undelete-bad-store-key": "Nun si po' annullari la cancillazzioni dâ virsioni dû file cu' data e ura $1: Lu file mancava avanti dâ cancillazzioni.",
+       "undelete-no-results": "Nudda pàggina currispunnenti fu attruvata nta l'archiviu dî pàggini cancillati.",
+       "undelete-filename-mismatch": "Nun si pò annullari la cancillazzioni dâ virsioni dû file cu data e ura $1: Nomu di file nun currispunnenti.",
+       "undelete-bad-store-key": "Nun si pò annullari la cancillazzioni dâ virsioni dû file cu data e ura $1: Lu file ammancava avanti dâ cancillazzioni.",
        "undelete-cleanup-error": "Erruri ntâ cancillazzioni dû file d'archiviu nun adupiratu \"$1\".",
-       "undelete-missing-filearchive": "Nun si po' ricupirari l'ID $1 di l'archiviu dî file picchì nun è ntâ basi di dati. Po' già avìri statu ricupiratu.",
+       "undelete-missing-filearchive": "Nun si pò ricupirari l'ID $1 di l'archiviu dî file pirchì nun è ntâ basi di dati. Pò già aviri statu ricupiratu.",
        "undelete-error": "Erruri nta l'annullamentu dâ cancillazzioni dâ pàggina",
        "undelete-error-short": "Erruri nta l'annullamentu dâ cancillazzioni dû file: $1",
        "undelete-error-long": "Si virificaru erruri ntô tentativu di annullari la cancillazzioni dô file:\n\n$1",
-       "undelete-show-file-confirm": "Si' sicuru chi' voi talìari la virsioni cancillata dû file \"<nowiki>$1</nowiki>\" dû $2 ê $3?",
+       "undelete-show-file-confirm": "Sî sicuru chi voi taliari la virsioni cancillata dû file \"<nowiki>$1</nowiki>\" dû $2 ê $3?",
        "undelete-show-file-submit": "Si",
        "namespace": "Namespace:",
-       "invert": "Inverti la silizzioni",
-       "tooltip-invert": "Scègghî sta casedda p'ammucciari li canciamenti chi' su' fatti a' pàggini dû namespace silizzunatu (e macari dû so namespace assuciatu, si' la casedda rilativa è scigghiuta)",
+       "invert": "Nverti la silizzioni",
+       "tooltip-invert": "Scegghi sta casedda p'ammucciari li canciamenti chi sù fatti a pàggini dû namespace silizzunatu (e macari dû sò namespace assuciatu, si la casedda rilativa è scigghiuta)",
        "tooltip-whatlinkshere-invert": "Signa sta casedda p'ammucciari li ligami chi vèninu di pàggini dû namespace scigghiutu.",
        "namespace_association": "Namespace assuciatu",
-       "tooltip-namespace_association": "Scègghî sta casedda pi' nclùdiri macari u namespace di discussioni o principali assuciatu ô namespace silizzunatu",
+       "tooltip-namespace_association": "Scegghi sta casedda pi nclùdiri macari lu namespace di discussioni o chiddu principali assuciatu ô namespace silizzunatu",
        "blanknamespace": "(Principali)",
-       "contributions": "Cuntribbuta di l'{{GENDER:$1|utenti}}",
-       "contributions-title": "Cuntribbuta di l'utenti $1",
-       "mycontris": "Li me cuntribbuta",
+       "contributions": "Cuntribbuti di l'{{GENDER:$1|utenti}}",
+       "contributions-title": "Cuntribbuti di l'utenti $1",
+       "mycontris": "Li mè cuntribbuti",
        "contribsub2": "Di {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Lu cuntu utenti \"$1\" nun è riggistratu.",
-       "nocontribs": "Nuddu canciamentu fu' truvatu chi' currispunni a' sti criterî.",
+       "nocontribs": "Nuddu canciamentu fu attruvatu chi currispunni a sti criterî.",
        "uctop": "(attuali)",
-       "month": "A' pàrtiri dû misi (e pricidenti):",
-       "year": "A' pàrtiri di l'annu (e pricidenti):",
-       "sp-contributions-newbies": "Ammustra sulu li cuntribbuta di l'utenti novi",
+       "month": "A pàrtiri dû misi (e pricidenti):",
+       "year": "A pàrtiri di l'annu (e pricidenti):",
+       "sp-contributions-newbies": "Ammustra sulu li cuntribbuti di l'utenti novi",
        "sp-contributions-newbies-sub": "Di l'utenti novi",
-       "sp-contributions-newbies-title": "Cuntribbuta di l'utenti novi",
+       "sp-contributions-newbies-title": "Cuntribbuti di l'utenti novi",
        "sp-contributions-blocklog": "riggistru dî blocchi",
-       "sp-contributions-suppresslog": "cuntribbuta suppressi di l'utenti",
-       "sp-contributions-deleted": "cuntribbuta cancillati di l'utenti",
+       "sp-contributions-suppresslog": "cuntribbuti suppressi di l'utenti",
+       "sp-contributions-deleted": "cuntribbuti cancillati di l'utenti",
        "sp-contributions-uploads": "file carricati",
-       "sp-contributions-logs": "riggistra",
+       "sp-contributions-logs": "riggistri",
        "sp-contributions-talk": "discussioni",
        "sp-contributions-userrights": "gistioni dî dritti di l'utenti",
-       "sp-contributions-blocked-notice": "St'utenti pi' com'ora è bluccatu.\nComu rifirimentu ccassutta cc'è l'ùltima vuci dû riggistru dî blocchi:",
-       "sp-contributions-blocked-notice-anon": "Stu nnirizzu IP pi' com'ora è bluccatu.\nComu rifirimentu ccassutta cc'è l'ùltima vuci dû riggistru dî blocchi:",
+       "sp-contributions-blocked-notice": "St'utenti pi com'ora è bluccatu.\nComu rifirimentu ccassutta c'è l'ùrtima vuci dû riggistru dî blocchi:",
+       "sp-contributions-blocked-notice-anon": "Stu nnirizzu IP pi com'ora è bluccatu.\nComu rifirimentu ccassutta c'è l'ùrtima vuci dû riggistru dî blocchi:",
        "sp-contributions-search": "Ricerca cuntribbuti",
        "sp-contributions-username": "Nnirizzu IP o nomu utenti:",
        "sp-contributions-toponly": "Ammustra sulu li canciamenti ca sunnu l'ùrtimi virsioni pâ pàggina",
        "sp-contributions-newonly": "Ammustra sulu li canciamenti ca sunnu criazzioni di pàggini novi",
        "sp-contributions-submit": "Arricerca",
-       "whatlinkshere": "Chi' punta cca",
+       "whatlinkshere": "Chi punta ccà",
        "whatlinkshere-title": "Pàggini ca pùntanu a \"$1\"",
        "whatlinkshere-page": "Pàggina:",
        "linkshere": "Sti pàggini hannu nu liami a '''[[:$1]]''':",
        "nolinkshere": "Nudda pàggina havi nu liami a '''[[:$1]]'''.",
        "nolinkshere-ns": "Nun ci sugnu pàggini chi puntano a '''[[:$1]]''' ntô namespace silizziunatu.",
        "isredirect": "pàggina di rinnirizzamentu",
-       "istemplate": "trasclusioni",
+       "istemplate": "nclusioni",
        "isimage": "lijami ô file",
        "whatlinkshere-prev": "{{PLURAL:$1|pricidenti|pricidenti $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|succissivu|succissivi $1}}",
        "whatlinkshere-links": "← liami",
        "whatlinkshere-hideredirs": "$1 li rimanni",
-       "whatlinkshere-hidetrans": "$1 li trasclusioni",
+       "whatlinkshere-hidetrans": "$1 li nclusioni",
        "whatlinkshere-hidelinks": "$1 li lijami",
        "whatlinkshere-hideimages": "$1 li lijami a file",
        "whatlinkshere-filters": "Filtri",
        "autoblockid": "Bloccu autumàticu #$1",
-       "block": "Bluccari a' n'utenti",
-       "unblock": "Sbluccari a' n'utenti",
-       "blockip": "Blocca a' {{GENDER:$1|stu utenti|sta utenti}}",
-       "blockip-legend": "Blocca a' l'utenti",
+       "block": "Bluccari a n'utenti",
+       "unblock": "Sbluccari a n'utenti",
+       "blockip": "Blocca a {{GENDER:$1|st'utenti|st'utenti}}",
+       "blockip-legend": "Blocca a l'utenti",
        "blockiptext": "Usa lu mòdulu cassutta pi bluccari la pussibbilità di scrìviri pi n'utenti o pi nu ndirizzu IP spicìficu. Chistu s'havi a fari sulu pi privèniri lu vannalismu e secunnu la [[{{MediaWiki:Policy-url}}|pulìtica di {{SITENAME}}]]. Scrivi na raggiùni valida ccà sutta (pi asempiu, cita li pàggini chi foru vannalizzati).",
        "ipaddressorusername": "Nnirizzu IP o nomu utenti:",
        "ipbexpiry": "Durata dû bloccu:",
        "ipbreason": "Mutivu:",
        "ipbreason-dropdown": "*Mutivi cchiù cumuni pî blocchi\n** Nzerimentu di nformazziuni falsi\n** Cancillazzioni di cuntinuti dê pàggini\n** Liami prumozziunalu a siti sterni\n** Nzserimentu di cuntinuti privi di sensu\n** Cumportamenti ntimidatori o molestie\n** Usu ndebitu di cchiù cunti\n** Nomu utenti nun accittabbili",
-       "ipb-hardblock": "Mpidisci a' l'utenti trasuti di fari canciamenti di stu nnirizzu IP",
+       "ipb-hardblock": "Mpidisci a l'utenti trasuti di fari canciamenti di stu nnirizzu IP",
        "ipbcreateaccount": "Mpidisci la criazzioni di cunti",
-       "ipbemailban": "Mpidisci a' l'utenti di mannari posta elittrònica",
-       "ipbenableautoblock": "Blocca autumaticamenti l'ùltimu nnirizzu IP adupiratu di st'utenti, e li succissivi d'unni prova a' fari canciamenti",
-       "ipbsubmit": "Blocca a' st'utenti",
-       "ipbother": "Autra scadenza:",
-       "ipboptions": "2 uri:2 hours,1 jornu:1 day,3 jorna:3 days,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,infinitu:infinite",
+       "ipbemailban": "Mpidisci a l'utenti di mannari posta elittrònica",
+       "ipbenableautoblock": "Blocca autumaticamenti l'ùrtimu nnirizzu IP adupiratu di st'utenti, e li succissivi d'unni prova a fari canciamenti",
+       "ipbsubmit": "Blocca a st'utenti",
+       "ipbother": "Àutra scadenza:",
+       "ipboptions": "2 uri:2 hours,1 jornu:1 day,3 jorna:3 days,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite",
        "ipbhidename": "Ammuccia lu nomu utenti ntê canciamenti e ntê listi",
        "ipbwatchuser": "Talìa li pàggini e li discussioni di st'utenti",
-       "ipb-disableusertalk": "Mpidisci a' st'utenti di canciari la sò pàggina di discussioni nta mentri ca è bluccatu",
-       "ipb-change-block": "Blocca di novu l'utenti cu' sti mpustazzioni",
-       "ipb-confirm": "Cunfirma lu bloccu",
+       "ipb-disableusertalk": "Mpidisci a st'utenti di canciari la sò pàggina di discussioni ntô mentri ch'è bluccatu",
+       "ipb-change-block": "Blocca di novu l'utenti cu sti mpustazzioni",
+       "ipb-confirm": "Cunferma lu bloccu",
        "badipaddress": "Nnirizzu IP nun vàlidu",
-       "blockipsuccesssub": "Bloccu rinisciutu",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] fu' bluccatu.<br />\nTalìa la [[Special:BlockList|lista dî blocchi]] pi' rivìdiri li blocchi.",
-       "ipb-blockingself": "Stai bluccannu a' tia stissu! Si' sicuru chi' voi fari sta cosa?",
-       "ipb-confirmhideuser": "Stai bluccannu n'utenti chi' havi l'opzioni \"ammuccia utenti\" attivata. A' sta manera u nomu di st'utenti veni supprimutu nta tutti i listi e tutti i riggìstri. Si' sicuru chi' voi fari sta cosa?",
+       "blockipsuccesssub": "Bloccu arrinisciutu",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] fu bluccatu.<br />\nTalìa la [[Special:BlockList|lista dî blocchi]] pi rivìdiri li blocchi.",
+       "ipb-blockingself": "Stai bluccannu a tìa stissu! Sî sicuru chi voi fari sta cosa?",
+       "ipb-confirmhideuser": "Stai bluccannu n'utenti chi havi l'opzioni \"ammuccia utenti\" attivata. Di sta manera lu nomu di st'utenti veni supprimutu nta tutti li listi e tutti li riggistri. Sî sicuru chi voi fari sta cosa?",
        "ipb-confirmaction": "Si sî pi daveru sicuru chi voi fari sta cosa, scegghi la casedda \"{{int:ipb-confirm}}\" ccassutta.",
        "ipb-edit-dropdown": "Cancia li mutivi dû bloccu",
-       "ipb-unblock-addr": "Sblocca a' $1",
-       "ipb-unblock": "Sblocca a' n'utenti o nu nnirizzu IP",
-       "ipb-blocklist": "Talìa li blocchi in viguri",
-       "ipb-blocklist-contribs": "Cuntribbuta di {{GENDER:$1|$1}}",
-       "unblockip": "Sblocca a' l'utenti",
+       "ipb-unblock-addr": "Sblocca a $1",
+       "ipb-unblock": "Sblocca a n'utenti o nu nnirizzu IP",
+       "ipb-blocklist": "Talìa li blocchi n viguri",
+       "ipb-blocklist-contribs": "Cuntribbuti di {{GENDER:$1|$1}}",
+       "unblockip": "Sblocca a l'utenti",
        "unblockiptext": "Adupirari lu mòdulu suttastanti pi'arristituiri l'accessu n scrittura a nu nnirizzu IP o nomu utenti ca fu bluccatu.",
        "ipusubmit": "Leva stu bloccu",
        "unblocked": "L'utenti [[User:$1|$1]] fu sbluccatu.",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] fu sbluccatu.",
        "blocklist": "Utenti bluccati",
        "ipblocklist": "Utenti bluccati",
-       "ipblocklist-legend": "Trova n'utenti bluccatu",
+       "ipblocklist-legend": "Arricerca n'utenti bluccatu",
        "blocklist-userblocks": "Ammuccia li blocchi di cunti",
-       "blocklist-tempblocks": "Ammuccia li blocchi timpuranii",
-       "blocklist-addressblocks": "Ammuccia li blocchi di IP singuli",
+       "blocklist-tempblocks": "Ammuccia li blocchi timpurànii",
+       "blocklist-addressblocks": "Ammuccia li blocchi di IP sìnguli",
        "blocklist-rangeblocks": "Ammuccia li blocchi di ntirvalli di IP",
        "blocklist-timestamp": "Data e ura",
        "blocklist-target": "Oggettu",
        "blocklist-expiry": "Scadenza",
-       "blocklist-by": "Amministraturi chi' bluccau",
+       "blocklist-by": "Amministraturi chi bluccau",
        "blocklist-params": "Paràmitri dû bloccu",
        "blocklist-reason": "Mutivu",
        "ipblocklist-submit": "Arricerca",
        "ipblocklist-localblock": "Bloccu lucali",
-       "ipblocklist-otherblocks": "{{PLURAL:$1|Autru bloccu|Autri blocchi}}",
-       "infiniteblock": "infinitu",
+       "ipblocklist-otherblocks": "{{PLURAL:$1|Àutru bloccu|Àutri blocchi}}",
+       "infiniteblock": "nfinitu",
        "expiringblock": "scadi lu $1 ê $2",
        "anononlyblock": "sulu anònimi",
        "noautoblockblock": "bloccu autumàticu disattivatu",
        "createaccountblock": "criazzioni di cunti bluccata",
        "emailblock": "posta elittrònica bluccata",
-       "blocklist-nousertalk": "nun po' canciari la so stissa pàggina di discussioni",
+       "blocklist-nousertalk": "nun pò canciari la sò stissa pàggina di discussioni",
        "ipblocklist-empty": "L'alencu dî blocchi è vacanti.",
        "ipblocklist-no-results": "Lu nnirizzu IP o nomu utenti richiestu nun è bluccatu.",
        "blocklink": "blocca",
        "unblocklink": "sblocca",
        "change-blocklink": "cancia bloccu",
-       "contribslink": "cuntribbuta",
+       "contribslink": "cuntribbuti",
        "emaillink": "manna posta elittrònica",
-       "autoblocker": "Bluccatu autumaticamenti pirchì lu to nnirizzu IP havi statu adupiratu di picca tempu di l'utenti \"[[User:$1|$1]]\".\nLu mutivu datu pû bloccu di $1 è \"$2\"",
+       "autoblocker": "Bluccatu autumaticamenti pirchì lu tò nnirizzu IP fu adupiratu di picca tempu di l'utenti \"[[User:$1|$1]]\".\nLu mutivu datu pû bloccu di $1 è \"$2\"",
        "blocklogpage": "Riggistru dî blocchi",
-       "blocklog-showlog": "St'utenti havi statu bluccatu ntô passatu.\nComu rifirimentu ccassutta cc'è lu riggìstru dî blocchi:",
-       "blocklog-showsuppresslog": "St'utenti havi statu bluccatu e ammucciatu ntô passatu.\nComu rifirimentu ccassutta cc'è lu riggistru dî supprissioni:",
+       "blocklog-showlog": "St'utenti fu bluccatu ntô passatu.\nComu rifirimentu ccassutta c'è lu riggistru dî blocchi:",
+       "blocklog-showsuppresslog": "St'utenti fu bluccatu e ammucciatu ntô passatu.\nComu rifirimentu ccassutta c'è lu riggistru dî supprissioni:",
        "blocklogentry": "hà bluccatu [[$1]]; scadenza $2 $3",
        "reblock-logentry": "Canciau li mpustazzioni dû bloccu pi [[$1]] cu na scadenza di $2 $3",
-       "blocklogtext": "Chistu è l'alencu di l'azzioni di bloccu e sbloccu di l'utenti.\nLi nnirizzi IP bluccati autumaticamenti nun sunnu alincati.\nCunzurtari l'[[Special:BlockList|alencu dî blocchi]] pi vìdiri li furbanna e li blocchi chi sunnu n viguri pi com'ora.",
-       "unblocklogentry": "sbluccau a' \"$1\"",
+       "blocklogtext": "Chistu è l'elencu di l'azzioni di bloccu e sbloccu di l'utenti.\nLi nnirizzi IP bluccati autumaticamenti nun sunnu elincati.\nCunzurtari l'[[Special:BlockList|elencu dî blocchi]] pi vìdiri li furbanna e li blocchi chi sunnu n viguri pi com'ora.",
+       "unblocklogentry": "sbluccau a \"$1\"",
        "block-log-flags-anononly": "sulu utenti anònimi",
        "block-log-flags-nocreate": "criazzioni account bluccata",
        "block-log-flags-noautoblock": "bloccu automàticu disattivatu",
        "range_block_disabled": "La pussibbilitati di bluccari ntervalli di ndirizzi IP è disattiva a lu mumentu.",
        "ipb_expiry_invalid": "Durata o scadenza dû bloccu nun vàlida.",
        "ipb_expiry_temp": "Li blocchi dê nomi utenti ammucciati avìssiru èssiri nfiniti",
-       "ipb_hide_invalid": "Nun si po' supprìmiri stu cuntu: havi cchiu' ssai di {{PLURAL:$1|nu canciamentu|$1 canciamenti}}.",
+       "ipb_hide_invalid": "Nun si pò supprìmiri stu cuntu: havi cchiossai di {{PLURAL:$1|nu canciamentu|$1 canciamenti}}.",
        "ipb_already_blocked": "L'utenti \"$1\" è già bluccatu",
        "ipb-needreblock": "$1 è già bluccatu. Vòi caciari li mpustazzioni?",
-       "ipb-otherblocks-header": "{{PLURAL:$1|Autru bloccu|Autri blocchi}}",
-       "unblock-hideuser": "Nun poi sbluccari st'utenti, picchì u so nomu utenti fu' ammucciatu.",
+       "ipb-otherblocks-header": "{{PLURAL:$1|Àutru bloccu|Àutri blocchi}}",
+       "unblock-hideuser": "Nun poi sbluccari st'utenti, pirchì lu sò nomu utenti fu ammucciatu.",
        "ipb_cant_unblock": "Erruri: Mpussìbbili attruvari lu bloccu cu ID $1. Putissi aviri già statu sbluccatu.",
        "ipb_blocked_as_range": "Sbagghiu: Lu ndirizzu IP $1 nun è suggettu a bloccu ndividuali e non pò èssiri sbloccatu. Lu bloccu è attivu mmeci a liveddu dû ntirvallu $2, ca pò èssiri sbluccatu.",
        "ip_range_invalid": "Ntervallu di ndirizzi IP nun vàlidu.",
-       "ip_range_toolarge": "I blocchi di ntirvalli IP cchiu' granni di /$1 nun sunnu cunsintuti.",
+       "ip_range_toolarge": "Li blocchi di ntirvalli IP cchiù granni di /$1 nun sunnu cunzintuti.",
        "proxyblocker": "Blocca proxy",
        "proxyblockreason": "Lu tò ndirizzu IP hà statu bluccatu pirchì è un open proxy. Pi favuri cuntatta lu tò furnituri d'accessu a Internet o lu supportu tècnicu e nfòrmali di stu gravi prubbrema di sicurizza.",
        "sorbsreason": "Lu tò ndirizzu IP è alincatu comu proxy apertu ntâ lista DNSBL.",
        "sorbs_create_account_reason": "Lu tò ndirizzu IP è alincatu comu open proxy ntâ DNSBL. Nun poi criari un utenti.",
-       "xffblockreason": "Nu nnirizzu IP chi' si trova nta na ntistazzioni X-Forwarded-For, o a toi o dûn server proxy chi' stai adupirannu, fu' bluccatu. U mutivu dû bloccu origginali era: $1",
-       "cant-see-hidden-user": "L'utenti chi' stai pruvannu a' bluccari già fu' bluccatu e ammucciatu.\nComu chi' tu nun hai u drittu \"hideuser\", nun poi ne' vìdiri ne' canciari u bloccu di st'utenti.",
-       "ipbblocked": "Nun poi bluccari o sbluccari a' autri utenti picchì tu stissu si' bluccatu.",
-       "ipbnounblockself": "Nun hai u pirmissu di sbluccari a' tia stissu.",
+       "xffblockreason": "Nu nnirizzu IP chi s'attrova nta na ntistazzioni X-Forwarded-For, o la tò o dûn server proxy chi stai adupirannu, fu bluccatu. Lu mutivu dû bloccu origginali era: $1",
+       "cant-see-hidden-user": "L'utenti chi stai pruvannu a bluccari già fu bluccatu e ammucciatu.\nComu chi tu nun hai lu drittu \"hideuser\", nun poi nè vìdiri nè canciari lu bloccu di st'utenti.",
+       "ipbblocked": "Nun poi bluccari o sbluccari a àutri utenti pichì tu stissu sî bluccatu.",
+       "ipbnounblockself": "Nun hai lu pirmissu di sbluccari a tìa stissu.",
        "lockdb": "Blocca lu database",
        "unlockdb": "Sblocca lu database",
        "lockdbtext": "Lu bloccu dû database cumporta la suspinzioni pi tutti l'utenti dâ pussibbilitati di canciari li pàggini, mpustari li sò prifirenzi, canciari li sò listi taliati, e n ginirali di cùmpiri tutti l'opirazzioni c'addumànnanu canciamenti a lu database.\nPi favuri cunferma ca chistu è zocchi hai ntinzioni di fari, e ca a lu tèrmini dâ manutinzioni pruvidi a lu sbloccu dû database.",
        "unlockconfirm": "Sì, effittivamenti ntennu, sutta la mè rispunzabbilitati, sbluccari lu database.",
        "lockbtn": "Blocca lu database",
        "unlockbtn": "Sblocca lu database",
-       "locknoconfirm": "Nun scigghîsti a casedda di cunfirma.",
+       "locknoconfirm": "Nun scigghisti la casedda di cunferma.",
        "lockdbsuccesssub": "Bloccu dû database esiquitu",
        "unlockdbsuccesssub": "Sbloccu dû database esiquitu",
        "lockdbsuccesstext": "Lu database hà statu bluccatu.\n<br />Arricorda di [[Special:UnlockDB|rimòviri lu bloccu]] doppu aviri accabbatu l'upirazzioni di manutinzioni.",
        "unlockdbsuccesstext": "Lu database hà statu sbluccatu.",
        "lockfilenotwritable": "Mpussìbbili scrìviri supra lu file di ''lock'' dû database. L'accessu n scrittura a tali file di parti dû server web è nicissariu pi bluccari e sbluccari lu database.",
        "databasenotlocked": "Lu database nun è bluccatu.",
-       "lockedbyandtime": "(di {{GENDER:$1|$1}} u $2 ê $3)",
+       "lockedbyandtime": "(di {{GENDER:$1|$1}} lu $2 ê $3)",
        "move-page": "Spustamentu di $1",
        "move-page-legend": "Sposta la pàggina",
        "movepagetext": "Adupirannu lu mòdulu ccassutta si cancia lu nomu dâ pàggina, spustannu tutta la sò crunuluggìa nta la pàggina nova.\nLu tìtulu vecchiu addiventa nu rimannu versu lu tìtulu novu.\nSi ponnu aggiurnari autumaticamenti li rimanni chi puntàvanu ô tìtulu origginali.\nMa si scegghi di nun fàrilu, t'hai a assicurari ca lu spustamentu nun crea [[Special:DoubleRedirects|rimanni duppî]] o puru [[Special:BrokenRedirects|rimanni rutti]].\nÈ tò rispunzabbilità chi li liami cuntìnuanu a puntari â pàggina bona.\n\nVidi chi la pàggina <strong>nun veni spustata</strong> siddu c'è già na pàggina chi havi lu tìtulu novu, tranni siddu la pàggina n quistioni è nu rimannu e nun havi crunuluggìa di canciamenti passati.\nChistu voli diri chi si pò canciari n'àutra vota lu nomu di la pàggina a chiddu c'avìa prima siddu si fa nu sbagghiu, e chi nun si pò suprascrìviri na pàggina chi già esisti.\n\n<strong>Accura!</strong>\nChistu pò èssiri nu canciamentu dràsticu pi na pàggina friquintata; aviti a èssiri sicuri di capiri li cunziquenzi prima di cuntinuari.",
        "movepagetext-noredirectfixer": "Usannu lu mòdulu ccà sutta vui canciati lu nomu dâ pàggina, e spustati tutta la sò storia versu la pàggina nova. Lu tìtulu vecchiu addiventa na pàggina di rinnirizzamentu versu lu tìtulu novu. \nAssicuràtivi ca lu spustamentu nun criau [[Special:DoubleRedirects|redirect duppi]] o [[Special:BrokenRedirects|redirect rumputi]]. Vui siti rispunzàbbili dî liami chi avìssiru a puntari â pàggina giusta.\n\nLa pàggina '''nun''' è spustata siddu cc'è già na pàggina cu lu tìtulu novu, tranni chi la pàggina 'n chistioni è vacanti o è na pàggina di ''redirect'' e nun havi n'archiviu di canciamenti.\nChistu signìfica chi vui putiti rinuminari la pàggina cu lu nomu vecchiu si aviti sbagghiatu, e chi nun putiti suprascrìviri nta na pàggina chi esisti già.\n\n'''Accura!'''\nChistu pò èssiri nu canciamentu dràsticu pi na pàggina pupulari; aviti a èssiri sicuri di capiri li cunziquenzi prima di cuntinuari.",
        "movepagetalktext": "La pàggina di discussioni è autumaticamenti spustata cu idda <strong>a menu chi:</strong>\n*Na pàggina di discussioni nun vacanti già esisti cu lu nomu novu, o puru\n*Nun scegghi la casedda ccassutta.\n\nNta sti casi, si voi, hai a spustari o jùnciri la pàggina di discussioni a manu.",
        "movearticle": "Sposta la pàggina",
-       "moveuserpage-warning": "<strong>Accura:</strong> Stai spustannu a pàggina di n'utenti. Hâ' sapìri chi' sulu a pàggina sarravi spustata, l'utenti <em>nun sarravi</em> canciatu di nomu.",
-       "movecategorypage-warning": "<strong>Accura:</strong> Stai spustannu a pàggina di na catigurìa. Hâ' sapìri chi' sulu a pàggina sarravi spustata, i pàggini chi' si tròvunu ntâ catigurìa vecchia <em>nun sarrannu</em> catigurizzati nta chidda nova.",
+       "moveuserpage-warning": "<strong>Accura:</strong> Stai spustannu la pàggina di n'utenti. Hai a sapìri chi sulu la pàggina è spustata e lu nomu d'utenti <em>nun cancia</em>.",
+       "movecategorypage-warning": "<strong>Accura:</strong> Stai spustannu la pàggina di na catigurìa. Hai a sapìri chi sulu la pàggina è spustata, li pàggini chi s'attròvanu ntâ catigurìa vecchia <em>nun sunnu</em> catigurizzati nta chidda nova.",
        "movenologintext": "Lu spustamentu dî pàggini è cunzintitu sulu a l'utenti riggistrati c'hannu esiquitu l'[[Special:UserLogin|accessu]] a lu situ.",
        "movenotallowed": "Nun hai li pirmessi nicissari a lu spustamentu dê pàggini.",
        "movenotallowedfile": "Nun ci su' li pirmessi nicissàrii pi spustari file.",
        "cant-move-user-page": "Nun aviti lu pirmissu nicissàriu pi spustari li pàggini utenti.",
        "cant-move-to-user-page": "Nun aviti li pirmessi nicessàrii pô spustamentu dâ pàggina supra na pàggina utenti (cu eccizzioni di na suttapàggina utenti).",
-       "cant-move-category-page": "Nun hai u pirmissu di spustari i pàggini dî catigurìi.",
-       "cant-move-to-category-page": "Nun hai u pirmissu di spustari pàggini facènnuli divintari pàggini di catigurìi.",
+       "cant-move-category-page": "Nun hai lu pirmissu di spustari li pàggini dî catigurìi.",
+       "cant-move-to-category-page": "Nun hai lu pirmissu di spustari pàggini facènnuli addivintari pàggini di catigurìi.",
        "newtitle": "Cu lu tìtulu novu di",
        "move-watch": "Talìa sta pàggina",
        "movepagebtn": "Sposta la pàggina",
        "delete_and_move": "Cancella e sposta",
        "delete_and_move_text": "==Richiesta di cancillazzioni==\n\nLa pàggina di distinazzioni \"[[:$1]]\" asisti già. S'addisìa cancillàrila pi rènniri pussìbbili lu spustamentu?",
        "delete_and_move_confirm": "Sì, suvrascrivi la pàggina asistenti",
-       "delete_and_move_reason": "Cancillata pi' fari largu ô spustamentu di \"[[$1]]\"",
+       "delete_and_move_reason": "Cancillata pi fari largu ô spustamentu di \"[[$1]]\"",
        "selfmove": "Lu tìtulu di distinazzioni nziritu è agguali a chiddu di pruvinenza; mpossibbili spustari la pàggina su idda stissa.",
        "immobile-source-namespace": "Non pòi spustari li pàggini nto namespace \"$1\"",
        "immobile-target-namespace": "Nun pòi spustari li pàggini ntô namespace \"$1\"",
        "immobile-target-namespace-iw": "L'interwiki link nun è n'ubbiettivu bonu pi spustari la pòggina.",
        "immobile-source-page": "Sta pàggina nun pò èssiri spustata.",
        "immobile-target-page": "Nun pòi spustari nti stu tìtulu.",
-       "bad-target-model": "A distinazzioni vuluta adòpira nu mudellu di cuntinutu diffirenti. Nun si po' cunvèrtiri dû $1 ô $2.",
+       "bad-target-model": "La distinazzioni vuluta adòpira nu mudellu di cuntinutu diffirenti. Nun si pò cunvèrtiri dû $1 ô $2.",
        "imagenocrossnamespace": "Nun pòi spustari na mmàggini fora dû namespace Mmàggini.",
-       "nonfile-cannot-move-to-file": "Nun si po' spustari ntô namespace file chiddu chi' nun è nu file.",
+       "nonfile-cannot-move-to-file": "Nun si pò spustari ntô namespace file zocchi nun è nu file.",
        "imagetypemismatch": "La estensioni nova dû file cun currispunni â sò estensioni riali",
        "imageinvalidfilename": "Lu nomu dû file di distinazzioni nun è validu",
        "fix-double-redirects": "Aggiorna tutti li redirect chi puntanu ô titulu urigginali",
        "move-leave-redirect": "Lassa darreri nu redirect",
-       "protectedpagemovewarning": "<strong>Accura:</strong> Sta pàggina fu' prutiggiuta a' manera chi' sulu l'utenti cu' privileggi d'amministraturi la ponnu spustari.\nPi' rifirimentu, ccassutta è ripurtata l'ùltima vuci dû riggistru:",
-       "semiprotectedpagemovewarning": "<strong>Nota:</strong> Sta pàggina fu' prutiggiuta a' manera chi' sulu l'utenti riggistrati la ponnu spustari.\nPi' rifirimentu, ccassutta è ripurtata l'ultima vuci dû riggistru:",
-       "move-over-sharedrepo": "== U file già esisti ==\n[[:$1]] già esisti ntôn dipòsitu cunnivisu. Spustari nu file nta chistu titulu suprascriviravi u file cunnivisu.",
-       "file-exists-sharedrepo": "U nomu di file scigghiutu già è adupiratu ntôn dipòsitu cunnivisu.\nPi' favuri scegghî n'autru nomu.",
+       "protectedpagemovewarning": "<strong>Accura:</strong> Sta pàggina fu prutiggiuta di manera chi sulu l'utenti cu privileggi d'amministraturi la ponnu spustari.\nPi rifirimentu, ccassutta è arripurtata l'ùrtima vuci dû riggistru:",
+       "semiprotectedpagemovewarning": "<strong>Nota:</strong> Sta pàggina fu prutiggiuta di manera chi sulu l'utenti riggistrati la ponnu spustari.\nPi rifirimentu, ccassutta è arripurtata l'ùrtima vuci dû riggistru:",
+       "move-over-sharedrepo": "== Lu file già esisti ==\n[[:$1]] già esisti ntôn dipòsitu cunnivisu. Spustari nu file nta stu titulu suprascrivi lu file cunnivisu.",
+       "file-exists-sharedrepo": "Lu nomu di file scigghiutu già è adupiratu ntôn dipòsitu cunnivisu.\nPi favuri scegghi n'àutru nomu.",
        "export": "Esporta pàggini",
        "exporttext": "È pussìbbili spurtari lu testu e la cronoluggìa dî canciamenti di na pàggina o d'un gruppu di pàggini n furmatu XML pi mpurtàrili n àutri siti ca utilìzzanu lu software MediaWiki, attraversu la pàggina [[Special:Import|di mportu]].\n\nPi spurtari li pàggini innicari li tìtuli ntâ casella di testu suttastanti, unu pi riga, e spicificari siddu s'addisìa ottèniri la virsioni currenti e tutti li virsioni pricidenti, cu li dati dâ cronuluggìa dâ pàggina, oppuru surtantu l'ùrtima virsioni e li dati currispunnenti a l'ùrtimu canciamentu.\n\nNta st'ùrtimu casu si pò macari utilizzari na lijami, p'asempiu [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pi spurtari \"[[{{MediaWiki:Mainpage}}]]\".",
-       "exportall": "Esporta tutti i pàggini",
+       "exportall": "Esporta tutti li pàggini",
        "exportcuronly": "Ncludi sulu la rivisioni attuali, nun la ntera cronoluggìa",
        "exportnohistory": "---- '''Nota:''' l'espurtazzioni dâ ntera cronoluggìa dî pàggini attraversu sta nterfaccia hà stata disattivata pi mutivi ligati a li pristazzioni dû sistema.",
-       "exportlistauthors": "Includi n'elencu cumpletu dî cuntribbuturi p'ognin pàggina",
+       "exportlistauthors": "Ncludi n'elencu cumpletu dî cuntribbuturi p'ogni pàggina",
        "export-submit": "Espurtazzioni",
        "export-addcattext": "Agghiunci pàggini dâ catigurìa:",
        "export-addcat": "Agghiunci",
        "thumbnail-more": "Ngrannisci",
        "filemissing": "File mancanti",
        "thumbnail_error": "Erruri ntâ criazzioni dâ miniatura: $1",
-       "thumbnail_error_remote": "Messaggiu d'erruri di $1:\n$2",
+       "thumbnail_error_remote": "Missaggiu d'erruri di $1:\n$2",
        "djvu_page_error": "Nùmmuru di pàggina DjVu erratu",
        "djvu_no_xml": "Mpussibbili òtteniri lu XML pô file DjVu",
        "thumbnail-temp-create": "Nun fu pussìbbili criari nu file timpuràniu pâ miniatura",
-       "thumbnail-dest-create": "Nun fu' pussìbbili sarvari a miniatura ntâ distinazzioni",
+       "thumbnail-dest-create": "Nun fu pussìbbili sarvari la miniatura ntâ distinazzioni",
        "thumbnail_invalid_params": "Parametri antiprima nun validi",
-       "thumbnail_toobigimagearea": "U file è cchiu' granni di $1",
+       "thumbnail_toobigimagearea": "Lu file è cchiù granni di $1",
        "thumbnail_dest_directory": "Mpussibbili criari la directory di distinazzioni",
        "thumbnail_image-type": "Tipu di mmàggini nun supputtatu",
        "thumbnail_gd-library": "Cunfigurazioni ncumpleta da libreria GD: funzioni $1 mancanti",
        "thumbnail_image-missing": "Pari èssiri mancanti lu file: $1",
-       "thumbnail_image-failure-limit": "Cc'hannu statu troppu tintativi ($1 o cchiu' ssai) di ginirari sta miniatura. Pi' favuri prova n'autra vota cchiu' tardu.",
+       "thumbnail_image-failure-limit": "Ci foru troppu tintativi ($1 o cchiossai) di ginirari sta miniatura. Pi favuri prova n'àutra vota cchiù tardu.",
        "import": "Mporta pàggini",
        "importinterwiki": "Mpurtazzioni di n'àutra wiki",
        "import-interwiki-text": "Silizziunari na wiki e lu tìtulu di na pàggina a mpurtari.\nLi dati dî virsioni e li noma di l'autura sunnu mantinuti.\nTutti li mpurtazzioni d'àutri wiki vèninu riggistrati ntô [[Special:Log/import|riggistru dî mpurtazzioni]].",
        "import-mapping-subpage": "Mporta comu suttapàggini di sta pàggina:",
        "import-upload-filename": "Nomu file:",
        "import-comment": "Oggettu:",
-       "importtext": "Pi favuri, esporta lu file dâ wiki surgenti adupirannu [[Special:Export|a funziunalità d'espurtazzioni]].\nSàrvalu supra a' lu tò computer e carrìcalu ccà.",
+       "importtext": "Pi favuri, esporta lu file dâ wiki surgenti adupirannu [[Special:Export|la funziunalità d'espurtazzioni]].\nSàrvalu supra a lu tò computer e carrìcalu ccà.",
        "importstart": "Mpurtazzioni dî pàggini n cursu...",
        "import-revision-count": "{{PLURAL:$1|na rivisioni mpurtata|$1 rivisioni mpurtati}}",
        "importnopages": "Nudda pàggina a mpurtari.",
        "importuploaderrortemp": "Caricamentu dû file pi la mpurtazzioni non arrinisciutu. Manca na cartedda timpurània.",
        "import-parse-failure": "Sbagghiu d'anàlisi ntâ mpurtazzioni XML",
        "import-noarticle": "Nudda pàggina di mpurtari.",
-       "import-nonewrevisions": "Nudda virsioni fu' mpurtata (o già c'èrunu tutti, o furu sautati tutti picchì mmatteru erruri).",
+       "import-nonewrevisions": "Nudda virsioni fu mpurtata (o già c'èranu tutti, o foru sautati tutti pirchì ammatteru erruri).",
        "xml-error-string": "$1 a riga $2, culonna $3 (byte $4): $5",
        "import-upload": "Càrrica dati XML",
        "import-token-mismatch": "Si pèrsiru li dati rilativi a la sissioni. Pi piaciri, prova n'àutra vota.",
        "import-invalid-interwiki": "E' mpussìbbili mpurtari dû pruggettu wiki nnicatu.",
-       "import-error-edit": "A pàggina \"$1\" nun fu' mpurtata picchì nun hai u pirmissu di canciàrila.",
+       "import-error-edit": "La pàggina \"$1\" nun fu mpurtata pirchì nun hai lu pirmissu di canciàrila.",
        "import-error-create": "La pàggina \"$1\" nun fu mpurtata pirchì nun hai lu pirmissu di criàrila.",
-       "import-error-interwiki": "La pàggina \"$1\" nun fu mpurtata picchì lu sò nomu è risirvatu pî lijami di fora (inter-wiki).",
-       "import-error-special": "A pàggina \"$1\" nun fu' mpurtata picchì apparteni a' nu namespace spiciali chi' nun cunsenti pàggini.",
-       "import-error-invalid": "A pàggina \"$1\" nun fu' mpurtata picchì u nomu unni sarrìa mpurtata nun è vàlidu supra a' sta wiki.",
-       "import-error-unserialize": "A virsioni $2 dâ pàggina \"$1\" nun si potti di-sirializzari. Era signatu chi' sta virsioni adupirava u mudellu di cuntinutu $3 sirializzatu comu $4.",
-       "import-error-bad-location": "A virsioni $2 chi' adòpira u mudellu di cuntinutu $3 nun si po' mimurizzari nta \"$1\" supra a' sta wiki, picchì ddu mudellu nun è suppurtatu nta dda pàggina.",
+       "import-error-interwiki": "La pàggina \"$1\" nun fu mpurtata pirchì lu sò nomu è risirvatu pî lijami di fora (inter-wiki).",
+       "import-error-special": "La pàggina \"$1\" nun fu mpurtata pirchì apparteni a nu namespace spiciali chi nun cunzenti pàggini.",
+       "import-error-invalid": "La pàggina \"$1\" nun fu mpurtata pirchì lu nomu unni fussi mpurtata nun è vàlidu supra a sta wiki.",
+       "import-error-unserialize": "La virsioni $2 dâ pàggina \"$1\" nun si potti di-sirializzari. Era signatu chi sta virsioni adupirava lu mudellu di cuntinutu $3 sirializzatu comu $4.",
+       "import-error-bad-location": "La virsioni $2 chi adòpira lu mudellu di cuntinutu $3 nun si pò mimurizzari nta \"$1\" supra a sta wiki, pirchì ddu mudellu nun è suppurtatu nta dda pàggina.",
        "import-options-wrong": "{{PLURAL:$2|Opzioni sbagghiata|Opzioni sbagghiati}}: <nowiki>$1</nowiki>",
-       "import-rootpage-invalid": "A pàggina ràdica spicificata nun è vàlida comu tìtulu.",
-       "import-rootpage-nosubpage": "U namespace \"$1\" dâ pàggina ràdica nun cunsenti suttapàggini.",
+       "import-rootpage-invalid": "La pàggina ràdica spicificata nun è vàlida comu tìtulu.",
+       "import-rootpage-nosubpage": "Lu namespace \"$1\" dâ pàggina ràdica nun cunzenti suttapàggini.",
        "importlogpage": "Riggistru dî mpurtazzioni",
        "importlogpagetext": "Riggistru dî mpurtazzioni d'ufficiu di pàggini pruvinenti d'àutri wiki, cumpleti di cronoluggìa.",
        "import-logentry-upload-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}}",
        "import-logentry-interwiki-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}} di $2",
        "javascripttest": "Virìfichi JavaScript",
-       "javascripttest-pagetext-noframework": "Sta pàggina è risirvata pi' l'esicuzzioni dî virìfichi JavaScript.",
+       "javascripttest-pagetext-noframework": "Sta pàggina è risirvata pi l'esicuzzioni dî virìfichi JavaScript.",
        "javascripttest-pagetext-unknownframework": "Framework di virìfica \"$1\" scanusciutu.",
        "javascripttest-pagetext-unknownaction": "Azzioni scanusciuta \"$1\".",
-       "javascripttest-pagetext-frameworks": "Pi' favuri scegghî unu dî siguenti framework di virìfica: $1",
-       "javascripttest-pagetext-skins": "Scegghî na peddi câ quali esiguìri i virìfichi:",
-       "javascripttest-qunit-intro": "Talìa [$1 a ducumintazzioni a' prupositu dî virìfichi] supra a' mediawiki.org.",
+       "javascripttest-pagetext-frameworks": "Pi favuri scegghi unu dî framework siguenti di virìfica: $1",
+       "javascripttest-pagetext-skins": "Scegghi na peddi câ quali esiguiri li virìfichi:",
+       "javascripttest-qunit-intro": "Talìa [$1 la ducumintazzioni a prupositu dî virìfichi] supra a mediawiki.org.",
        "tooltip-pt-userpage": "La tò pàggina utenti",
        "tooltip-pt-anonuserpage": "La pàggina utenti di stu ndirizzu IP",
        "tooltip-pt-mytalk": "La to' pàggina di discussioni",
        "tooltip-pt-anontalk": "Discussioni supra li canciamenti fatti di stu ndirizzu IP",
        "tooltip-pt-preferences": "Li mè prifirenzi",
        "tooltip-pt-watchlist": "La lista dî pàggini ca stai tinennu sutta ossirvazzioni",
-       "tooltip-pt-mycontris": "La lista dî to cuntribbuti",
+       "tooltip-pt-mycontris": "La lista dî tò cuntribbuti",
        "tooltip-pt-login": "La riggistrazzioni è cunzigghiata, puru siddu nun obbrigatoria.",
        "tooltip-pt-logout": "Nisciuta",
        "tooltip-pt-createaccount": "Sî nvitatu a criari nu cuntu e tràsiri; pirò nun è obbligatoriu",
        "tooltip-ca-viewsource": "Sta pàggina è prutetta, ma poi vìdiri lu sò còdici surgenti.",
        "tooltip-ca-history": "Virsioni pricidenti di sta pàggina.",
        "tooltip-ca-protect": "Pruteggi sta pàggina",
-       "tooltip-ca-unprotect": "Cancia a prutizzioni di sta pàggina",
+       "tooltip-ca-unprotect": "Cancia la prutizzioni di sta pàggina",
        "tooltip-ca-delete": "Cancella sta pàggina",
        "tooltip-ca-undelete": "Riprìstina la pàggina com'era prima dâ cancillazzioni",
        "tooltip-ca-move": "Sposta sta pàggina (cancia tìtulu)",
        "tooltip-n-portal": "Discrizzioni dû pruggettu, zoccu poi fari, unni attruvari li cosi",
        "tooltip-n-currentevents": "Nfurmazzioni supra l'avvinimenti d'attualitati",
        "tooltip-n-recentchanges": "Alencu di l'ùrtimi canciamenti dû situ.",
-       "tooltip-n-randompage": "Carrica na pàggina a' muzzu",
+       "tooltip-n-randompage": "Carrica na pàggina a muzzu",
        "tooltip-n-help": "Pàggini d'aiutu.",
        "tooltip-t-whatlinkshere": "Alencu di tutti li pàggini ca sunnu culligati a chista",
        "tooltip-t-recentchangeslinked": "Alencu di l'ùrtimi canciamenti a li pàggini culligati a chista",
        "tooltip-feed-rss": "Feed RSS pi sta pàggina",
        "tooltip-feed-atom": "Feed Atom pi sta pàggina",
-       "tooltip-t-contributions": "La lista dî cuntribbuti di stutenti",
+       "tooltip-t-contributions": "La lista dî cuntribbuti di st'utenti",
        "tooltip-t-emailuser": "Manna un missaggiu e-mail a stu utenti",
-       "tooltip-t-info": "Autri nfurmazzioni a' prupòsitu di sta pàggina",
+       "tooltip-t-info": "Àutri nfurmazzioni a prupòsitu di sta pàggina",
        "tooltip-t-upload": "Càrrica mmàggini o file multimidiali",
        "tooltip-t-specialpages": "Lista di tutti li pàggini spiciali",
        "tooltip-t-print": "Virsioni stampabbili di chista pàggina",
        "tooltip-diff": "Talìa (mudalitati diff) li canciamenti c'hai fattu.",
        "tooltip-compareselectedversions": "Talìa li diffirenzi tra li dui virsioni silizziunati di sta pàggina.",
        "tooltip-watch": "Agghiunci sta pàggina â tò lista taliata",
-       "tooltip-watchlistedit-normal-submit": "Leva i tìtuli",
+       "tooltip-watchlistedit-normal-submit": "Leva li tìtuli",
        "tooltip-watchlistedit-raw-submit": "Aggiorna la lista taliata",
        "tooltip-recreate": "Ricrea la pàggina puru siddu hà statu cancillata",
        "tooltip-upload": "Ncigna carricamentu",
        "siteusers": "$1, {{PLURAL:$2|utenti|utenti}} di {{SITENAME}}",
        "anonusers": "{{PLURAL:$2|utenti anònimu|utenti anònimi}} di {{SITENAME}} $1",
        "creditspage": "Autura dâ pàggina",
-       "nocredits": "Nun cc'è nudda nfurmazzioni supra a' l'autura di sta pàggina.",
+       "nocredits": "Nun c'è nudda nfurmazzioni supra a l'autura di sta pàggina.",
        "spamprotectiontitle": "Filtru anti-spam",
        "spamprotectiontext": "La pàggina ca vulevi sarvari hà statu bluccata dû filtru anti-spam. Chistu è prubbabbirmenti duvutu â prisenza di nu liami a nu situ sternu bluccatu.",
        "spamprotectionmatch": "Lu nostru filtru anti-spam hà ndividuatu lu testu siquenti: $1",
        "spam_blanking": "Pàggina svacantata, tutti li virsioni cuntinìanu lijami versu $1",
        "spam_deleting": "Pàggina cancillata, tutti li virsioni cuntinìanu lijami versu $1",
        "simpleantispam-label": "Cuntrollu anti-spam.\n<strong>NUN JÌNCHIRI</strong> stu campu!",
-       "pageinfo-title": "Nfurmazzioni supra a' \"$1\"",
-       "pageinfo-not-current": "Sfurtunatamenti, nun è pussìbbili furnìri sti nfurmazzioni pî virsioni vecchî.",
+       "pageinfo-title": "Nfurmazzioni supra a \"$1\"",
+       "pageinfo-not-current": "Sfurtunatamenti, nun è pussìbbili furniri sti nfurmazzioni pî virsioni vecchî.",
        "pageinfo-header-basic": "Nfurmazzioni essinziali",
        "pageinfo-header-edits": "Crunuluggìa dî canciamenti",
        "pageinfo-header-restrictions": "Prutizzioni dâ pàggina",
-       "pageinfo-header-properties": "Prupietà dâ pàggina",
+       "pageinfo-header-properties": "Prupità dâ pàggina",
        "pageinfo-display-title": "Tìtulu ammustratu",
        "pageinfo-default-sort": "Criteriu d'ordinamentu pridifinutu",
-       "pageinfo-length": "Lunghizza dâ pàggina (in byte)",
+       "pageinfo-length": "Lunghizza dâ pàggina (n byte)",
        "pageinfo-article-id": "ID dâ pàggina",
        "pageinfo-language": "Lingua dû cuntinutu dâ pàggina",
        "pageinfo-content-model": "Mudellu dû cuntinutu dâ pàggina",
-       "pageinfo-robot-policy": "Innicizzazzioni pi' menzu di robot",
-       "pageinfo-robot-index": "Cunsintuta",
+       "pageinfo-robot-policy": "Nnicizzazzioni pi menzu di robot",
+       "pageinfo-robot-index": "Cunzintuta",
        "pageinfo-robot-noindex": "Pruibbuta",
-       "pageinfo-watchers": "Quanti talìunu sta pàggina",
+       "pageinfo-watchers": "Quantu talìanu sta pàggina",
        "pageinfo-visiting-watchers": "Nùmmiru d'utenti ntirissati a sta pàggina ca hannu taliatu li canciamenti chiù ricenti",
        "pageinfo-few-watchers": "Cchiù picca di $1 {{PLURAL:$1|taliaturi|taliatura}}",
        "pageinfo-few-visiting-watchers": "Forsi c'è quarchi utenti ntirissatu ca talìa li canciamenti ricenti, forsi no",
-       "pageinfo-redirects-name": "Nùmmiru di rimanni a' sta pàggina",
+       "pageinfo-redirects-name": "Nùmmiru di rimanni a sta pàggina",
        "pageinfo-subpages-name": "Nùmmiru di suttapàggini di sta pàggina",
-       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|chi' è un rimannu|chi' su' rimanni}}; $3 {{PLURAL:$3|chi' nun è un rimannu|chi' nun su' rimanni}})",
+       "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|chi è un rimannu|chi sù rimanni}}; $3 {{PLURAL:$3|chi nun è un rimannu|chi nun sù rimanni}})",
        "pageinfo-firstuser": "Criaturi dâ pàggina",
        "pageinfo-firsttime": "Data dâ criazzioni dâ pàggina",
-       "pageinfo-lastuser": "Ùltimu cuntribbuturi",
-       "pageinfo-lasttime": "Data di l'ùltimu canciamentu",
+       "pageinfo-lastuser": "Ùrtimu cuntribbuturi",
+       "pageinfo-lasttime": "Data di l'ùrtimu canciamentu",
        "pageinfo-edits": "Nùmmiru tutali di canciamenti",
-       "pageinfo-authors": "Nùmmiru tutali dautura distinti",
-       "pageinfo-recent-edits": "Nùmmiru di canciamenti ricenti (nta l'ultimu pirìudu di $1)",
+       "pageinfo-authors": "Nùmmiru tutali d'autura distinti",
+       "pageinfo-recent-edits": "Nùmmiru di canciamenti ricenti (nta l'ùrtimu pirìudu di $1)",
        "pageinfo-recent-authors": "Nùmmiru di cuntribbutura ricenti distinti",
        "pageinfo-magic-words": "{{PLURAL:$1|Palora màggica|Palori màggichi}} ($1)",
        "pageinfo-hidden-categories": "{{PLURAL:$1|Catigurìa ammucciata|Catigurìi ammucciati}} ($1)",
-       "pageinfo-templates": "{{PLURAL:$1|Template trasclusu|Template trasclusi}} ($1)",
-       "pageinfo-transclusions": "{{PLURAL:$1|Pàggina|Pàggini}} unni chista è trasclusa ($1)",
-       "pageinfo-toolboxlink": "Nfurmazzioni ncapu la pàggina",
-       "pageinfo-redirectsto": "Rimanna a'",
+       "pageinfo-templates": "{{PLURAL:$1|Template nclusu|Template nclusi}} ($1)",
+       "pageinfo-transclusions": "{{PLURAL:$1|Pàggina|Pàggini}} unni chista è nclusa ($1)",
+       "pageinfo-toolboxlink": "Nfurmazzioni supra la pàggina",
+       "pageinfo-redirectsto": "Rimanna a",
        "pageinfo-redirectsto-info": "nfurmazzioni",
        "pageinfo-contentpage": "Cuntata comu pàggina di cuntinutu",
        "pageinfo-contentpage-yes": "Sì",
-       "pageinfo-protect-cascading": "Di cca pàrtunu prutizzioni a' cascata",
+       "pageinfo-protect-cascading": "Di ccà pàrtinu prutizzioni a cascata",
        "pageinfo-protect-cascading-yes": "Sì",
-       "pageinfo-protect-cascading-from": "Pìgghia prutizzioni a' cascata di",
+       "pageinfo-protect-cascading-from": "Pigghia prutizzioni a cascata di",
        "pageinfo-category-info": "Nfurmazzioni supra â catigurìa",
        "pageinfo-category-total": "Nùmmiru tutali di membri",
        "pageinfo-category-pages": "Nùmmiru di pàggini",
        "pageinfo-category-subcats": "Nùmmiru di suttacatigurìi",
        "pageinfo-category-files": "Nùmmiru di file",
-       "markaspatrolleddiff": "Marca comu battugghiatu",
-       "markaspatrolledtext": "Marca sta pàggina comu battugghiata",
-       "markedaspatrolled": "Marcata comu battugghiata",
-       "markedaspatrolledtext": "La virsioni scigghiuta di [[:$1]] fu' marcata comu battugghiata.",
-       "rcpatroldisabled": "Lu battugghiamentu di l'ùrtimi canciamenti è disattivatu",
-       "rcpatroldisabledtext": "La funzioni di battugghiamentu di l'ùrtimi canciamenti com'ad ora è disattivata.",
-       "markedaspatrollederror": "Nun si po' marcari comu battugghiatu",
-       "markedaspatrollederrortext": "Hâ' spicificari na virsioni di marcari comu battugghiata.",
-       "markedaspatrollederror-noautopatrol": "Nun hai lu pirmissu di marcari li to canciamenti comu battugghiati.",
-       "markedaspatrollednotify": "Stu canciamentu a' $1 fu' marcatu comu battugghiatu.",
-       "markedaspatrollederrornotify": "La marcatura comu battugghiatu nun riniscìu.",
-       "patrol-log-page": "Riggìstru dî battugghî",
-       "patrol-log-header": "Chistu è nu riggìstru dî virsioni battugghiati.",
-       "log-show-hide-patrol": "$1 lu riggistru dî battugghî",
+       "markaspatrolleddiff": "Marca comu virificatu",
+       "markaspatrolledtext": "Marca sta pàggina comu virificata",
+       "markedaspatrolled": "Marcata comu virificata",
+       "markedaspatrolledtext": "La virsioni scigghiuta di [[:$1]] fu marcata comu virificata.",
+       "rcpatroldisabled": "La virìfica di l'ùrtimi canciamenti è disattivata",
+       "rcpatroldisabledtext": "La funzioni di virìfica di l'ùrtimi canciamenti com'a ora è disattivata.",
+       "markedaspatrollederror": "Nun si pò marcari comu virificatu",
+       "markedaspatrollederrortext": "Hai a spicificari na virsioni di marcari comu virificata.",
+       "markedaspatrollederror-noautopatrol": "Nun hai lu pirmissu di marcari li tò canciamenti comu virificati.",
+       "markedaspatrollednotify": "Stu canciamentu a $1 fu marcatu comu virificatu.",
+       "markedaspatrollederrornotify": "La marcatura comu virificatu nun arriniscìu.",
+       "patrol-log-page": "Riggistru dî canciamenti virificati",
+       "patrol-log-header": "Chistu è nu riggistru dî virsioni virificati.",
+       "log-show-hide-patrol": "$1 lu riggistru dî canciamenti virificati",
        "log-show-hide-tag": "$1 lu riggistru di l'etichetti",
        "deletedrevision": "Cancillata na virsioni vecchia di $1",
        "filedeleteerror-short": "Erruri ntâ cancillazzioni dû file: $1",
-       "filedeleteerror-long": "Mmatteru erruri ntô tintativu di cancillari lu file:\n\n$1",
-       "filedelete-missing": "Lu file \"$1\" nun si po' cancillari pirchì nun esisti.",
+       "filedeleteerror-long": "Ammatteru erruri ntô tintativu di cancillari lu file:\n\n$1",
+       "filedelete-missing": "Lu file \"$1\" nun si pò cancillari pirchì nun esisti.",
        "filedelete-old-unregistered": "La virsioni spicificata dû file, \"$1\", nun è cuntinuta ntâ basi di dati.",
        "filedelete-current-unregistered": "Lu file spicificatu, \"$1\", nun è cuntinutu ntâ basi di dati.",
        "filedelete-archive-read-only": "La cartella d'archiviu \"$1\" nun è scrivìbbili dû server web.",
        "previousdiff": "← Canciamentu avanti",
        "nextdiff": "Canciamentu appressu →",
-       "mediawarning": "<strong>Accura:</strong>Stu gèniri di file po' cuntèniri còdici malignu.\nEsiquènnulu, lu vostru sistema putissi vèniri cumprumissu.",
+       "mediawarning": "<strong>Accura: </strong>Stu gèniri di file pò cuntèniri còdici malignu.\nEsiquènnulu, lu vostru sistema putissi vèniri cumprumissu.",
        "imagemaxsize": "Diminzioni màssima dî mmàggini:<br />''(pi li pàggini di discrizzioni dô file)''",
        "thumbsize": "Grannizza dî miniaturi:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|pàggina|pàggini}}",
        "file-info": "Grannizza: $1, tipu MIME: $2",
        "file-info-size": "$1 × $2 pixel, grannizza dû file: $3, tipu MIME: $4",
        "file-info-size-pages": "$1 × $2 pixel, grannizza dû file: $3, tipu MIME: $4, $5 {{PLURAL:$5|pàggina|pàggini}}",
-       "file-nohires": "Risuluzzioni cchiù auta nun nn'havi.",
-       "svg-long-desc": "File SVG, diminsioni nominali $1 × $2 pixel, grannizza dû file: $3",
-       "svg-long-desc-animated": "File SVG animatu, diminsioni numinali $1 × $2 pixel, grannizza dû file: $3",
+       "file-nohires": "Risuluzzioni cchiù àuta nun nn'havi.",
+       "svg-long-desc": "File SVG, diminzioni numinali $1 × $2 pixel, grannizza dû file: $3",
+       "svg-long-desc-animated": "File SVG animatu, diminzioni numinali $1 × $2 pixel, grannizza dû file: $3",
        "svg-long-error": "File SVG nun vàlidu: $1",
        "show-big-image": "File origginali",
-       "show-big-image-preview": "Diminsioni di st'antiprima: $1.",
-       "show-big-image-other": "{{PLURAL:$2|Autra risuluzzioni|Autri risuluzzioni}}: $1.",
+       "show-big-image-preview": "Diminzioni di st'antiprima: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Àutra risuluzzioni|Àutri risuluzzioni}}: $1.",
        "show-big-image-size": "$1 × $2 pixel",
-       "file-info-gif-looped": "a' ripitizzioni",
+       "file-info-gif-looped": "a ripitizzioni",
        "file-info-gif-frames": "$1 {{PLURAL:$1|futugramma|futugrammi}}",
-       "file-info-png-looped": "a' ripitizzioni",
+       "file-info-png-looped": "a ripitizzioni",
        "file-info-png-repeat": "ripitutu {{PLURAL:$1|na vota|$1 voti}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|futugramma|futugrammi}}",
-       "file-no-thumb-animation": "<strong>Nota: pi' causa di limitazzioni tècnichi, li miniaturi di stu file nun vènunu animati.</strong>",
-       "file-no-thumb-animation-gif": "<strong>Nota: pi' causa di limitazzioni tècnichi, li miniaturi di na mmàggini GIF a' risuluzzioni auta comu a' chista nun vènunu animati.</strong>",
+       "file-no-thumb-animation": "<strong>Nota: a càusa di limitazzioni tècnichi, li miniaturi di stu file nun vèninu animati.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Nota: a càusa di limitazzioni tècnichi, li miniaturi di na mmàggini GIF a risuluzzioni àuta comu chista nun vèninu animati.</strong>",
        "newimages": "Gallarìa dî file novi",
-       "imagelisttext": "Ccassutta cc'è na lista di <strong>$1</strong> {{PLURAL:$1|file ordinatu|file ordinati}} $2.",
-       "newimages-summary": "Sta pàggina spiciali ammustra li file carricati di cchiu' picca tempu.",
+       "imagelisttext": "Ccassutta c'è na lista di <strong>$1</strong> {{PLURAL:$1|file ordinatu|file ordinati}} $2.",
+       "newimages-summary": "Sta pàggina spiciali ammustra li file carricati di cchiù picca tempu.",
        "newimages-legend": "Filtru",
-       "newimages-label": "Nomu dû file (o na so parti):",
+       "newimages-label": "Nomu dû file (o na sò parti):",
        "newimages-showbots": "Ammustra li carricamenti dî bot",
-       "noimages": "Nenti a' vìdiri.",
-       "ilsubmit": "Va cerca",
-       "bydate": "pi' data",
-       "sp-newimages-showfrom": "Ammustra li file cchiu' novi a' pàrtiri dî $2 dû $1",
+       "noimages": "Nenti a vìdiri.",
+       "ilsubmit": "Va arricerca",
+       "bydate": "pi data",
+       "sp-newimages-showfrom": "Ammustra li file cchiù novi a pàrtiri dî $2 dû $1",
        "seconds": "{{PLURAL:$1|un sicunnu|$1 sicunni}}",
        "minutes": "{{PLURAL:$1|un minutu|$1 minuti}}",
        "hours": "{{PLURAL:$1|un'ura|$1 uri}}",
        "weeks": "{{PLURAL:$1|na simana|$1 simani}}",
        "months": "{{PLURAL:$1|un misi|$1 misi}}",
        "years": "{{PLURAL:$1|un annu|$1 anni}}",
-       "ago": "$1 fa'",
+       "ago": "$1 fa",
        "just-now": "propia ora",
-       "hours-ago": "{{PLURAL:$1|un'ura|$1 uri}} fa'",
-       "minutes-ago": "{{PLURAL:$1|un minutu|$1 minuti}} fa'",
-       "seconds-ago": "{{PLURAL:$1|un sicunnu|$1 sicunni}} fa'",
-       "monday-at": "Lùniri ê $1",
-       "tuesday-at": "Màrtiri ê $1",
-       "wednesday-at": "Mèrcuri ê $1",
-       "thursday-at": "Jòviri ê $1",
-       "friday-at": "Vènniri ê $1",
-       "saturday-at": "Sàbbatu ê $1",
-       "sunday-at": "Dumìnica ê $1",
-       "yesterday-at": "Ajeri ê $1",
+       "hours-ago": "{{PLURAL:$1|un'ura|$1 uri}} fa",
+       "minutes-ago": "{{PLURAL:$1|un minutu|$1 minuti}} fa",
+       "seconds-ago": "{{PLURAL:$1|un sicunnu|$1 sicunni}} fa",
+       "monday-at": "Lunidìa ê $1",
+       "tuesday-at": "Martidìa ê $1",
+       "wednesday-at": "Mercuridìa ê $1",
+       "thursday-at": "Jovidìa ê $1",
+       "friday-at": "Venniridìa ê $1",
+       "saturday-at": "Sabbatudìa ê $1",
+       "sunday-at": "Duminicadìa ê $1",
+       "yesterday-at": "Aieri ê $1",
        "bad_image_list": "Lu furmatu è lu siguenti:\n\nSù pigghiati a cunziddirazzioni sulu li vuci d'elenchi puntati (li righi c'accumènzanu cû sìmmulu *).\nLa prima lijami nta ogni riga havi a puntari ôn file nun addisiatu.\nSi ci sù àutri lijami ntâ stissa riga, sù cunziddirati comu eccizzioni, vali a diri pàggini unni lu file pò èssiri ncurpuratu.",
        "metadata": "Metadati",
        "metadata-help": "Stu file cunteni àutri nfurmazzioni, prubbabbirmenti agghiunciuti dâ màchina futugràfica o dû scanner adupirati pi criàrilu o diggitalizzàrilu.\nSiddu lu file fu canciatu dâ sò cunnizzioni origginali, certi dittagghî putìssiru nun currispùnniri ô statu novu dû file.",
        "metadata-expand": "Ammustra li nfurmazzioni dittagghiati",
        "metadata-collapse": "Ammuccia li nfurmazzioni dittagghiati",
-       "metadata-fields": "Li campi dî metadati dâ mmàggini elincati nta stu missaggiu sarrannu ammustrati ntâ pàggina dâ mmàggini quannu la tavula dî metadati è strinciuta.\nL'àutri campi comu mpustazzioni pridifinuta sarrannu ammucciati.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+       "metadata-fields": "Li campi dî metadati dâ mmàggini elincati nta stu missaggiu sunnu ammustrati ntâ pàggina dâ mmàggini quannu la tàvula dî metadati è strinciuta.\nL'àutri campi comu mpustazzioni pridifinuta sunnu ammucciati.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Larghizza",
        "exif-imagelength": "Autizza",
-       "exif-bitspersample": "Bit pi' cumpunenti",
+       "exif-bitspersample": "Bit pi cumpunenti",
        "exif-compression": "Miccanismu di cumprissioni",
        "exif-photometricinterpretation": "Cumpusizzioni dû pixel",
        "exif-orientation": "Orientamentu",
        "exif-spectralsensitivity": "Sinzibbilitati spittrali",
        "exif-isospeedratings": "Sinzibbilitati ISO",
        "exif-shutterspeedvalue": "Tempu d'espusizzioni APEX",
-       "exif-aperturevalue": "Apirtura APEX",
-       "exif-brightnessvalue": "Luminusitati APEX",
+       "exif-aperturevalue": "Grapitura APEX",
+       "exif-brightnessvalue": "Luminusità APEX",
        "exif-exposurebiasvalue": "Currezzioni espusizzioni",
        "exif-maxaperturevalue": "Apirtura màssima",
        "exif-subjectdistance": "Distanza dû suggettu",
        "exif-gpsdifferential": "Currezzioni diffirinziali GPS",
        "exif-jpegfilecomment": "Cummentu dû file JPEG",
        "exif-keywords": "Palori chiavi",
-       "exif-worldregioncreated": "Parti dû munnu unni sta fotu fu' pigghiata",
-       "exif-countrycreated": "Paìsi dû munnu unni sta fotu fu' pigghiata",
-       "exif-countrycodecreated": "Còdici dû paìsi unni sta fotu fu' pigghiata",
-       "exif-provinceorstatecreated": "Riggioni o pruvincia unni sta fòtu fu' pigghiata",
-       "exif-citycreated": "Citati unni sta fotu fu' pigghiata",
-       "exif-sublocationcreated": "Parti dâ citati unni sta fotu fu' pigghiata",
+       "exif-worldregioncreated": "Parti dû munnu unni sta fotu fu pigghiata",
+       "exif-countrycreated": "Paisi dû munnu unni sta fotu fu pigghiata",
+       "exif-countrycodecreated": "Còdici dû paisi unni sta fotu fu pigghiata",
+       "exif-provinceorstatecreated": "Riggiuni o pruvincia unni sta fòtu fu pigghiata",
+       "exif-citycreated": "Cità unni sta fotu fu pigghiata",
+       "exif-sublocationcreated": "Parti dâ cità unni sta fotu fu pigghiata",
        "exif-worldregiondest": "Parti dû munnu raffigurata",
-       "exif-countrydest": "Paìsi dû munnu raffiguratu",
-       "exif-countrycodedest": "Còdici dû paìsi raffiguratu",
-       "exif-provinceorstatedest": "Riggioni o pruvincia raffigurata",
-       "exif-citydest": "Citati raffigurata",
-       "exif-sublocationdest": "Parti dâ citati raffigurata",
+       "exif-countrydest": "Paisi dû munnu raffiguratu",
+       "exif-countrycodedest": "Còdici dû paisi raffiguratu",
+       "exif-provinceorstatedest": "Riggiuni o pruvincia raffigurata",
+       "exif-citydest": "Cità raffigurata",
+       "exif-sublocationdest": "Parti dâ cità raffigurata",
        "exif-objectname": "Tìtulu curtu",
-       "exif-specialinstructions": "Istruzzioni spiciali",
+       "exif-specialinstructions": "Struzzioni spiciali",
        "exif-headline": "Tìtulu",
        "exif-credit": "Orìggini/Furnituri",
        "exif-source": "Fonti",
        "exif-languagecode": "Lingua",
        "exif-iimversion": "Virsioni di IIM",
        "exif-iimcategory": "Catigurìa",
-       "exif-iimsupplementalcategory": "Catigurìi aggiuntivi",
+       "exif-iimsupplementalcategory": "Catigurìi agghiuntivi",
        "exif-datetimeexpires": "Di nun adupiràri doppu",
        "exif-datetimereleased": "Data di rilassu",
        "exif-originaltransmissionref": "Còdici dû locu di trasmissioni origginali",
        "exif-identifier": "Idintificaturi",
        "exif-lens": "Lenti adupirata",
-       "exif-serialnumber": "Nummiru di serî dâ màchina futugràfica",
-       "exif-cameraownername": "Prupietariu dâ màchina futugràfica",
+       "exif-serialnumber": "Nùmmiru di serî dâ màchina futugràfica",
+       "exif-cameraownername": "Prupitariu dâ màchina futugràfica",
        "exif-label": "Etichetta",
-       "exif-datetimemetadata": "Data di l'ùltimu canciamentu dî metadati",
-       "exif-nickname": "Nomu infurmali dâ mmàggini",
-       "exif-rating": "Votu (supra a' 5)",
+       "exif-datetimemetadata": "Data di l'ùrtimu canciamentu dî metadati",
+       "exif-nickname": "Nomu nfurmali dâ mmàggini",
+       "exif-rating": "Votu (supra a 5)",
        "exif-rightscertificate": "Cirtificatu pâ gistioni dî dritti",
        "exif-copyrighted": "Cupertu di drittu d'auturi",
        "exif-copyrightowner": "Ditinturi dû drittu d'auturi",
        "exif-usageterms": "Tèrmini pi l'usu",
-       "exif-webstatement": "Dichiarazzioni di drittu d'auturi in linia",
+       "exif-webstatement": "Dichiarazzioni di drittu d'auturi n lìnia",
        "exif-originaldocumentid": "Idintificaturi unìvucu dû ducumentu origginali",
        "exif-licenseurl": "URL dâ licenza di drittu d'auturi",
-       "exif-morepermissionsurl": "Nfurmazzioni pâ cuncissioni di autri licenzi",
-       "exif-attributionurl": "Quannu si fa usu di st'òpira, si prega di mèttiri na lijami versu",
-       "exif-preferredattributionname": "Quannu si fa' usu di st'òpira, si prega di attribuìrinni a patirnità a'",
+       "exif-morepermissionsurl": "Nfurmazzioni pâ cuncissioni dutri licenzi",
+       "exif-attributionurl": "Quannu si fa usu di st'òpira, si prega di mèttiri nu lijami versu",
+       "exif-preferredattributionname": "Quannu si fa usu di st'òpira, si prega d'attribuìrinni la patirnità a",
        "exif-pngfilecomment": "Cummentu dû file PNG",
-       "exif-disclaimer": "Dichiarazzioni di esclusioni di rispunsabbilità",
-       "exif-contentwarning": "Avvirtimentu supra ô cuntinutu",
+       "exif-disclaimer": "Dichiarazzioni d'esclusioni di rispunzabbilità",
+       "exif-contentwarning": "Avvisu supra ô cuntinutu",
        "exif-giffilecomment": "Cummentu dû file GIF",
-       "exif-intellectualgenre": "Gèniri delimentu",
+       "exif-intellectualgenre": "Gèniri d'elimentu",
        "exif-subjectnewscode": "Còdici di l'oggettu",
        "exif-scenecode": "Còdici IPTC dâ nquatratura",
        "exif-event": "Eventu raffiguratu",
        "exif-originalimageheight": "Autizza dâ mmàggini avanti dû ritagghiu",
        "exif-originalimagewidth": "Larghizza dâ mmàggini avanti dû ritagghiu",
        "exif-compression-1": "Nuddu",
-       "exif-compression-2": "cudìfica unidiminsiunali run-length encoding mudificata di Huffman dû Gruppu 3 CCITT",
+       "exif-compression-2": "cudìfica unidiminziunali run-length encoding canciata di Huffman dû Gruppu 3 CCITT",
        "exif-compression-3": "cudìfica di fax dû Gruppu 3 CCITT",
        "exif-compression-4": "cudìfica di fax dû Gruppu 4 CCITT",
        "exif-copyrighted-true": "Prutettu di drittu d'auturi",
        "exif-orientation-3": "Rutatu di 180°",
        "exif-orientation-4": "Capuvortu virticarmenti",
        "exif-orientation-5": "Rotatu 90° 'n sensu antiurariu e capuvortu virticarmenti",
-       "exif-orientation-6": "Vutatu di 90° 'n senzu antiurariu",
+       "exif-orientation-6": "Vutatu di 90° n senzu antiurariu",
        "exif-orientation-7": "Rotatu 90° 'n sensu urariu e capuvortu virticarmenti",
-       "exif-orientation-8": "Vutatu di 90° 'n senzu urariu",
+       "exif-orientation-8": "Vutatu di 90° n senzu urariu",
        "exif-planarconfiguration-1": "a blocchi (chunky)",
        "exif-planarconfiguration-2": "liniari (planar)",
        "exif-xyresolution-i": "$1 punti pi puseri (dpi)",
        "exif-gpsdop-poor": "Pèssima ($1)",
        "exif-objectcycle-a": "Sulu pâ matina",
        "exif-objectcycle-p": "Sulu pâ sira",
-       "exif-objectcycle-b": "Pi' matina e sira",
+       "exif-objectcycle-b": "Pi matina e sira",
        "exif-gpsdirection-t": "Direzzioni riali",
        "exif-gpsdirection-m": "Direzzioni magnètica",
        "exif-ycbcrpositioning-1": "Cintrati",
        "exif-dc-source": "File surgenti",
        "exif-dc-type": "Sorta di file",
        "exif-rating-rejected": "Riggittatu",
-       "exif-isospeedratings-overflow": "Maggiuri di 65535",
-       "exif-iimcategory-ace": "Arti, cultura e' spittàculu",
+       "exif-isospeedratings-overflow": "Maiuri di 65535",
+       "exif-iimcategory-ace": "Arti, cultura e spittàculu",
        "exif-iimcategory-clj": "Crìmini e giustizzia",
-       "exif-iimcategory-dis": "Disastri e incidenti",
+       "exif-iimcategory-dis": "Disastri e ncidenti",
        "exif-iimcategory-fin": "Ecunumìa e affari",
-       "exif-iimcategory-edu": "Istruzzioni",
+       "exif-iimcategory-edu": "Struzzioni",
        "exif-iimcategory-evn": "Ammienti",
        "exif-iimcategory-hth": "Saluti",
        "exif-iimcategory-hum": "Casi umani",
        "exif-iimcategory-lab": "Travagghiu",
-       "exif-iimcategory-lif": "Stili di vita e' arricrìu",
+       "exif-iimcategory-lif": "Stili di vita e arricrìu",
        "exif-iimcategory-pol": "Pulìtica",
-       "exif-iimcategory-rel": "Riliggioni e fidi",
-       "exif-iimcategory-sci": "Scienza e ticnuluggìa",
-       "exif-iimcategory-soi": "Quistioni suciali",
+       "exif-iimcategory-rel": "Riliggiuni e fidi",
+       "exif-iimcategory-sci": "Scienza e ticnoluggìa",
+       "exif-iimcategory-soi": "Chistioni suciali",
        "exif-iimcategory-spo": "Sport",
        "exif-iimcategory-war": "Guerra, cunflitti e disòrdini",
        "exif-iimcategory-wea": "Tempu atmusfèricu",
        "exif-urgency-normal": "Nurmali ($1)",
-       "exif-urgency-low": "Auta ($1)",
-       "exif-urgency-high": "Bascia ($1)",
+       "exif-urgency-low": "Vascia ($1)",
+       "exif-urgency-high": "Àuta ($1)",
        "exif-urgency-other": "Difinuta di l'utenti ($1)",
        "namespacesall": "Tutti",
        "monthsall": "tutti",
-       "confirmemail": "Cunfirma dû nnirizzu di posta elittrònica",
+       "confirmemail": "Cunferma dû nnirizzu di posta elittrònica",
        "confirmemail_noemail": "Nun hà statu ndicatu un ndirizzu e-mail vàlidu ntê propi [[Special:Preferences|prifirenzi]].",
        "confirmemail_text": "{{SITENAME}} addumanna la cunvàlida dû tò nnirizzu di posta elittrònica pi putiri adupirari li funziunalità assuciati.\nCarca lu buttuni ccassutta pi mannari nu missaggiu e-mail di cunferma a lu tò nnirizzu.\nNtô missaggiu c'è un lijami ca cunteni un còdici;\ncàrrica ddu lijami cô tò browser pi cunfirmari ca lu tò nnirizzu di posta elittrònica è vàlidu.",
        "confirmemail_pending": "Già nu còdici di cunferma ti fu mannatu via posta elittrònica;\nsiddu criasti lu tò cuntu di picca tempu, è megghiu c'aspetti l'arrivu dû còdici pi quarchi minutu prima di pruvari a addumannàrinni unu novu.",
-       "confirmemail_send": "Manna un còdici di cunfirma via e-mail",
-       "confirmemail_sent": "Missaggiu e-mail di cunfirma mannatu.",
-       "confirmemail_oncreate": "Un còdici di cunfirma fu' spidutu a lu to nnirizzu di posta elittrònica.\nLu còdici nun servi pi' tràsiri nta lu situ, ma ll'hâ' prisintari pi' putiri attivari tutti li funzioni dâ wiki ca fannu usu dâ posta elittrònica.",
-       "confirmemail_sendfailed": "{{SITENAME}} nun potti mannari lu to missaggiu e-mail di cunfirma.\nVirificari ca lu nnirizzu nun cunteni caràttiri nun vàlidi.\n\nMissaggiu d'erruri dû sirvizziu di posta: $1",
-       "confirmemail_invalid": "Còdici di cunfirma nun vàlidu.\nLu còdici putissi èssiri scadutu.",
-       "confirmemail_needlogin": "Pi' favuri $1 pi' cunvalidari lu to nnirizzu di posta elittrònica.",
+       "confirmemail_send": "Manna un còdici di cunferma via e-mail",
+       "confirmemail_sent": "Missaggiu e-mail di cunferma mannatu.",
+       "confirmemail_oncreate": "Un còdici di cunferma fu spidutu a lu tò nnirizzu di posta elittrònica.\nLu còdici nun servi pi tràsiri nta lu situ, ma l'hai a prisintari pi putiri attivari tutti li funzioni dâ wiki ca fannu usu dâ posta elittrònica.",
+       "confirmemail_sendfailed": "{{SITENAME}} nun potti mannari lu tò missaggiu e-mail di cunferma.\nVirificari ca lu nnirizzu nun cunteni caràttiri nun vàlidi.\n\nMissaggiu d'erruri dû sirvizziu di posta: $1",
+       "confirmemail_invalid": "Còdici di cunferma nun vàlidu.\nLu còdici putissi èssiri scadutu.",
+       "confirmemail_needlogin": "Pi favuri $1 pi cunvalidari lu tò nnirizzu di posta elittrònica.",
        "confirmemail_success": "Lu ndirizzu e-mail è cunfirmatu. Ora è pussìbbili esèquiri l'accessu e fari chinu usu dû situ.",
        "confirmemail_loggedin": "Lu tò nnirizzu email fu ora cunfirmatu.",
-       "confirmemail_subject": "Cunfirma dû nnirizzu di posta elittronica pi' {{SITENAME}}",
-       "confirmemail_body": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\nriggistrau un cuntu \"$2\" cu stu nnirizzu di posta elittrònica supra a {{SITENAME}}.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi sta lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca sta lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
-       "confirmemail_body_changed": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\ncanciau lu nnirizzu di posta elittrònica dû cuntu \"$2\" supra a {{SITENAME}} mpustànnulu a chistu.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari n'àutra vota li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi sta lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca sta lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
-       "confirmemail_body_set": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\nmpustau stu nnirizzu di posta elittrònica pû cuntu \"$2\" supra a {{SITENAME}}.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi sta lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca sta lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
-       "confirmemail_invalidated": "Cunvàlida dû nnirizzu di posta elittronica nigata",
+       "confirmemail_subject": "Cunferma dû nnirizzu di posta elittronica pi {{SITENAME}}",
+       "confirmemail_body": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\nriggistrau un cuntu \"$2\" cu stu nnirizzu di posta elittrònica supra a {{SITENAME}}.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi stu lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca stu lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
+       "confirmemail_body_changed": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\ncanciau lu nnirizzu di posta elittrònica dû cuntu \"$2\" supra a {{SITENAME}} mpustànnulu a chistu.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari n'àutra vota li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi stu lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca stu lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
+       "confirmemail_body_set": "Quarchidunu, prubbabbilmenti tu stissu, dû nnirizzu IP $1,\nmpustau stu nnirizzu di posta elittrònica pû cuntu \"$2\" supra a {{SITENAME}}.\n\nPi cunfirmari ca stu cuntu apparteni pi daveru a tìa,\ne attivari li funziunalità di posta elittrònica supra a {{SITENAME}},\ngrapi stu lijami cû tò browser:\n\n$3\n\nSi mmeci stu cuntu *nun t'apparteni*, clicca stu lijami\npi nigari la cunferma dû nnirizzu di posta elittrònica:\n\n$5\n\nStu còdici di cunferma scadi lu $4.",
+       "confirmemail_invalidated": "Cunvàlida dû nnirizzu di posta elittrònica nigata",
        "invalidateemail": "Nigazzioni dâ cunvàlida dâ posta elittrònica",
        "scarytranscludedisabled": "[La nchiusioni di pàggini tra siti wiki nun è attiva]",
        "scarytranscludefailed": "[Erruri: Mpussìbbili uttèniri lu template $1]",
-       "scarytranscludefailed-httpstatus": "[Carricamentu dû template nun rinisciutu di $1: HTTP $2]",
+       "scarytranscludefailed-httpstatus": "[Carricamentu dû template nun arrinisciutu di $1: HTTP $2]",
        "scarytranscludetoolong": "[URL troppu longu]",
        "deletedwhileediting": "'''Accura''': Sta pàggina vinni scancillata doppu c'hai accuminzatu a scanciàrila!",
        "confirmrecreate": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi tu avivi accuminzatu a canciàrila, dannu sta spigazzioni:\n: <em>$2</em>\nPi favuri cunferma chi voi criari n'àutra vota sta pàggina pi daveru.",
        "confirmrecreate-noreason": "L'utenti [[User:$1|$1]] ([[User talk:$1|discussioni]]) cancillau sta pàggina appressu chi tu avivi accuminzatu a canciàrila. Pi favuri cunferma chi voi criari n'àutra vota sta pàggina pi daveru.",
        "recreate": "Ricrìa",
        "unit-pixel": "px",
-       "confirm_purge_button": "Cunfirma",
+       "confirm_purge_button": "Cunferma",
        "confirm-purge-top": "S'addisìa puliri la cache di sta pàggina?",
        "confirm-purge-bottom": "Pulizziari la cache di na pàggina pirmetti d'ammustrari la sô virsioni cchiù nova.",
-       "confirm-watch-button": "Cunfirma",
+       "confirm-watch-button": "Cunferma",
        "confirm-watch-top": "Agghiùnciri sta pàggina â tò lista taliata?",
-       "confirm-unwatch-button": "Cunfirma",
+       "confirm-unwatch-button": "Cunferma",
        "confirm-unwatch-top": "Livari sta pàggina dâ tò lista taliata?",
        "quotation-marks": "«$1»",
        "imgmultipageprev": "← pàggina pricidenti",
        "imgmultigo": "Va'",
        "imgmultigoto": "Vai a pàggina $1",
        "img-lang-default": "(lingua pridifinuta)",
-       "img-lang-info": "Gènira sta mmàggini in $1. $2",
+       "img-lang-info": "Gènira sta mmàggini n $1. $2",
        "img-lang-go": "Vai",
        "ascending_abbrev": "crisc",
        "descending_abbrev": "dicrisc",
        "table_pager_first": "Prima pàggina",
        "table_pager_last": "Ùrtima pàggina",
        "table_pager_limit": "Ammustra $1 file pi pàggina",
-       "table_pager_limit_label": "Elimenti pi' pàggina:",
+       "table_pager_limit_label": "Elimenti pi pàggina:",
        "table_pager_limit_submit": "Va'",
        "table_pager_empty": "Nuddu risurtatu",
        "autosumm-blank": "Pàggina svacantata",
        "watchlistedit-clear-titles": "Tìtuli:",
        "watchlistedit-clear-submit": "Svacanta la lista taliata (Sta cosa è difinitiva!)",
        "watchlistedit-clear-done": "La tò lista taliata fu svacantata.",
-       "watchlistedit-clear-removed": "{{PLURAL:$1|Un tìtulu fu'|$1 tìtuli furu}} livati:",
-       "watchlistedit-too-many": "Cci su' troppu pàggini p'ammustràrili cca.",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|Un tìtulu fu|$1 tìtuli foru}} livati:",
+       "watchlistedit-too-many": "Ci sù troppu pàggini p'ammustràrili ccà.",
        "watchlisttools-clear": "Svacanta la lista taliata",
        "watchlisttools-view": "Talìa li canciamenti rilivanti",
        "watchlisttools-edit": "Talìa e cancia la lista taliata",
        "iranian-calendar-m3": "Khordad",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussioni]])",
        "duplicate-defaultsort": "Accura: la chiavi priddifinuta d'urdinamentu \"$2\" si sciarrìa cu chidda d'antura \"$1\".",
-       "duplicate-displaytitle": "<strong>Accura:</strong> U tìtulu a' ammustrari \"$2\" va' e rimpiazza u tìtulu a' ammustrari pricidenti \"$1\".",
-       "invalid-indicator-name": "<strong>Erruri:</strong> L'attribbutu <code>name</code> di l'innicaturi di statu dâ pàggina nun havi a' èssiri vacanti.",
+       "duplicate-displaytitle": "<strong>Accura:</strong> Lu tìtulu a ammustrari \"$2\" va e rimpiazza lu tìtulu a ammustrari pricidenti \"$1\".",
+       "invalid-indicator-name": "<strong>Erruri:</strong> L'attribbutu <code>name</code> dô nnicaturi di statu dâ pàggina nun havi a èssiri vacanti.",
        "version": "Virsioni",
        "version-extensions": "Estenzioni nstallati",
        "version-skins": "Peddi nstallati",
        "version-no-ext-name": "[nuddu nomu]",
        "version-license": "Licenza di MediaWiki",
        "version-ext-license": "Licenza",
-       "version-ext-colheader-name": "Estinsioni",
+       "version-ext-colheader-name": "Estinzioni",
        "version-skin-colheader-name": "Peddi",
        "version-ext-colheader-version": "Virsioni",
        "version-ext-colheader-license": "Licenza",
        "version-ext-colheader-credits": "Auturi",
        "version-license-title": "Licenza di $1",
        "version-license-not-found": "Pi sta stinzioni nun fu attruvata nudda nfurmazzioni a prupòsitu dâ licenza.",
-       "version-credits-title": "Ricanuscimenti pi' $1",
+       "version-credits-title": "Arricanuscimenti pi $1",
        "version-credits-not-found": "Pi sta stinzioni nun fu attruvata nudda nfurmazzioni a prupòsitu di l'arricanuscimenti.",
-       "version-poweredby-credits": "Sta wiki funziona cu' <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
-       "version-poweredby-others": "autri",
-       "version-poweredby-translators": "i tradutturi di translatewiki.net",
-       "version-credits-summary": "Vulemu ricanusciri u cuntribbutu di sti pirsuni a' [[Special:Version|MediaWiki]].",
+       "version-poweredby-credits": "Sta wiki funziona cu <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
+       "version-poweredby-others": "àutri",
+       "version-poweredby-translators": "li tradutturi di translatewiki.net",
+       "version-credits-summary": "Vulemu arricanùsciri lu cuntribbutu di sti pirsuni a [[Special:Version|MediaWiki]].",
        "version-license-info": "MediaWiki è nu software lìbbiru; si pò ridistribbuiri e/o canciari sutta ê tèrmini dâ GNU General Public License comu pubblicata dâ Free Software Foundation; o la virsioni 2 dâ Licenza, o (a scigghiuta propia) na virsioni succissiva qualegghiè.\n\nMediaWiki veni distribuutu ntâ spiranza chi sia ùtili, pirò SENZA NUDDA GARANZÌA; mancu chidda mplìcita di NIGUZZIABBILITÀ o d'APPLICABBILITÀ PI NU SCOPU PARTICULARI. Si taliassi la GNU General Public License pi maiuri dittagghî.\n\nS'avissi a aviri arricivutu [{{SERVER}}{{SCRIPTPATH}}/COPYING na copia dâ GNU General Public License] nzèmmula a stu prugramma; si no, si pò scrìviri â Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html la si pò lèggiri n lìnia].",
        "version-software": "Software nstallatu",
        "version-software-product": "Prodottu",
        "version-entrypoints": "URL dî punti d'accessu",
        "version-entrypoints-header-entrypoint": "Puntu d'accessu",
        "version-entrypoints-header-url": "URL",
-       "version-libraries": "Libbrarìi installati",
+       "version-libraries": "Libbrarìi nstallati",
        "version-libraries-library": "Libbrarìa",
        "version-libraries-version": "Virsioni",
        "version-libraries-license": "Licenza",
        "version-libraries-description": "Discrizzioni",
        "version-libraries-authors": "Autura",
-       "redirect": "Rimannu pi' nomu di file o còdici di utenti, di pàggina o di virsioni",
-       "redirect-legend": "Rimannari a' nu file o na pàggina",
-       "redirect-summary": "Sta pàggina spiciali rimanna a' nu file (datu u nomu dû file), a' na pàggina (datu n'ID di virsioni o n'ID di pàggina), o puru â pàggina di n'utenti (datu n'ID nummèricu di utenti). Esempî di usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
-       "redirect-submit": "Vacci",
-       "redirect-lookup": "Cerca pi':",
-       "redirect-value": "Cu' valuri:",
+       "redirect": "Rimannu pi nomu di file o còdici di utenti, di pàggina o di virsioni",
+       "redirect-legend": "Rimannari a nu file o na pàggina",
+       "redirect-summary": "Sta pàggina spiciali rimanna a nu file (datu lu nomu dû file), a na pàggina (datu n'ID di virsioni o n'ID di pàggina), o puru â pàggina di n'utenti (datu n'ID nummèricu d'utenti). Esempî d'usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+       "redirect-submit": "Vai",
+       "redirect-lookup": "Arricerca:",
+       "redirect-value": "Cu valuri:",
        "redirect-user": "ID d'utenti",
        "redirect-page": "ID di pàggina",
        "redirect-revision": "ID di virsioni di pàggina",
        "redirect-file": "Nomu di file",
-       "redirect-not-exists": "Valuri nun truvatu",
+       "redirect-not-exists": "Valuri nun attruvatu",
        "fileduplicatesearch": "Circata dê file duppiuni",
        "fileduplicatesearch-summary": "Circata di pussìbbili dupppiuni dû file 'n basi ô valuri di ''hash''.",
        "fileduplicatesearch-legend": "Circata di nu duppiuni",
        "fileduplicatesearch-result-n": "{{PLURAL:$2|C'è ggià nu duppiuni lu stissu|Ci sunnu ggià $2 duppiuni li stissi}} dû file \"$1\".",
        "fileduplicatesearch-noresults": "Nuddu file chiamatu \"$1\" fu attruvatu.",
        "specialpages": "Pàggini spiciali",
-       "specialpages-note-top": "Legenda",
+       "specialpages-note-top": "Liggenna",
        "specialpages-note": "* Pàggini spiciali nurmali.\n* <span class=\"mw-specialpagerestricted\">Pàggini spiciali risirvati.</strong>",
        "specialpages-group-maintenance": "Resocunti di manutinzioni",
        "specialpages-group-other": "Autri pàggini spiciali",
        "specialpages-group-login": "Trasuta / criazzioni di cunti",
-       "specialpages-group-changes": "Ùrtimi canciamenti e riggistra",
+       "specialpages-group-changes": "Ùrtimi canciamenti e riggistri",
        "specialpages-group-media": "File multimidiali - caricamentu e rennicunti",
        "specialpages-group-users": "Utenti e diritti",
        "specialpages-group-highuse": "Pàggini cchiù usati",
        "specialpages-group-pages": "Listi di pàggini",
        "specialpages-group-pagetools": "Strumenti ùtili pi li pàggini",
-       "specialpages-group-wiki": "Dati e strumenti",
-       "specialpages-group-redirects": "Pàggini spiciali chi' rimànnunu",
+       "specialpages-group-wiki": "Dati e strummenti",
+       "specialpages-group-redirects": "Pàggini spiciali chi rimànnanu",
        "specialpages-group-spam": "Strumenti contr'a lu spam",
        "specialpages-group-developer": "Stigghi dû sviluppaturi",
        "blankpage": "Pàggina vacanti",
        "compare-rev1": "Virsioni 1",
        "compare-rev2": "Virsioni 2",
        "compare-submit": "Cunfrunta",
-       "compare-invalid-title": "U tìtulu ca spicificasti nun è vàlidu.",
-       "compare-title-not-exists": "U tìtulu ca spicificasti nun esisti.",
-       "compare-revision-not-exists": "A virsioni ca spicificasti nun esisti.",
+       "compare-invalid-title": "Lu tìtulu ca spicificasti nun è vàlidu.",
+       "compare-title-not-exists": "Lu tìtulu ca spicificasti nun esisti.",
+       "compare-revision-not-exists": "La virsioni ca spicificasti nun esisti.",
        "dberr-problems": "Spiacenti! Stu situ sta havennu prublema tecnici.",
        "dberr-again": "Prova a aspittari na para di minuti e ricaricari.",
-       "dberr-info": "(Impussìbbili accèdiri â basi di dati: $1)",
-       "dberr-info-hidden": "(Impussìbbili accèdiri â basi di dati)",
+       "dberr-info": "(Mpussìbbili accèdiri â basi di dati: $1)",
+       "dberr-info-hidden": "(Mpussìbbili accèdiri â basi di dati)",
        "dberr-usegoogle": "Poi pruvari a circari supra Google ammentri.",
        "dberr-outofdate": "Nota ca la sò nnicizzazioni dû nostru cuntinutu pò nun èssiri aggiurnata.",
        "dberr-cachederror": "Chista ca segui è na copia cache da pàggina richiesta, e putissi essiri nun aggiurnata.",
        "htmlform-no": "No",
        "htmlform-yes": "Sì",
        "htmlform-chosen-placeholder": "Silizziona na opzioni",
-       "htmlform-cloner-create": "Agghiunci autru",
+       "htmlform-cloner-create": "Agghiunci àutru",
        "htmlform-cloner-delete": "Leva",
-       "htmlform-cloner-required": "Cci voli almenu nu valuri.",
+       "htmlform-cloner-required": "Ci voli armenu nu valuri.",
        "htmlform-title-badnamespace": "[[:$1]] nun sta ntô namespace «{{ns:$2}}».",
        "htmlform-title-not-creatable": "«$1» nun è lu tìtulu di na pàggina ca si pò criari",
        "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à di risciduta a' tuttu testu",
-       "sqlite-no-fts": "$1 senza capacità di risciduta a' tuttu testu",
+       "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}} a visibbilità di {{PLURAL:$5|n'eventu dû riggistru|$5 eventi dû riggistru}} di $3: $4",
-       "logentry-delete-revision": "$1 {{GENDER:$2|canciau}} a visibbilità di {{PLURAL:$5|na virsioni|$5 virsioni}} dâ pàggina $3: $4",
-       "logentry-delete-event-legacy": "$1 {{GENDER:$2|canciau}} a visibbilità di eventi dû riggistru di $3",
-       "logentry-delete-revision-legacy": "$1 {{GENDER:$2|canciau}} a visibbilità di virsioni dâ pàggina $3",
-       "logentry-suppress-delete": "$1 {{GENDER:$2|supprimìu}} a pàggina $3",
-       "logentry-suppress-event": "$1 {{GENDER:$2|canciau}} a' mmucciuni a' visibbilità di {{PLURAL:$5|n'eventu dû riggistru|$5 eventi dû riggistru}} di $3: $4",
-       "logentry-suppress-revision": "$1 {{GENDER:$2|canciau}} a' mmucciuni a visibbilità di {{PLURAL:$5|na virsioni|$5 virsioni}} dâ pàggina $3: $4",
-       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|canciau}} a' mmucciuni a visibbilità di eventi dû riggistru di $3",
-       "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|canciau}} a' mmucciuni a visibbilità di virsioni dâ 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",
+       "logentry-delete-revision": "$1 {{GENDER:$2|canciau}} la visibbilità di {{PLURAL:$5|na virsioni|$5 virsioni}} dâ pàggina $3: $4",
+       "logentry-delete-event-legacy": "$1 {{GENDER:$2|canciau}} la visibbilità d'eventi dû riggistru di $3",
+       "logentry-delete-revision-legacy": "$1 {{GENDER:$2|canciau}} la visibbilità di virsioni dâ pàggina $3",
+       "logentry-suppress-delete": "$1 {{GENDER:$2|supprimìu}} la pàggina $3",
+       "logentry-suppress-event": "$1 {{GENDER:$2|canciau}} ammucciuni la visibbilità di {{PLURAL:$5|n'eventu dû riggistru|$5 eventi dû riggistru}} di $3: $4",
+       "logentry-suppress-revision": "$1 {{GENDER:$2|canciau}} ammucciuni la visibbilità di {{PLURAL:$5|na virsioni|$5 virsioni}} dâ pàggina $3: $4",
+       "logentry-suppress-event-legacy": "$1 {{GENDER:$2|canciau}} ammucciuni la visibbilità d'eventi dû riggistru di $3",
+       "logentry-suppress-revision-legacy": "$1 {{GENDER:$2|canciau}} ammucciuni la visibbilità di virsioni dâ pàggina $3",
        "revdelete-content-hid": "cuntinutu ammucciatu",
        "revdelete-summary-hid": "riassuntu dû canciamentu ammucciatu",
        "revdelete-uname-hid": "nomu utenti ammucciatu",
        "revdelete-content-unhid": "cuntinutu ammustratu",
        "revdelete-summary-unhid": "riassuntu dû canciamentu ammustratu",
        "revdelete-uname-unhid": "nomu utenti ammustratu",
-       "revdelete-restricted": "misi ristrizzioni pi' l'amministratura",
-       "revdelete-unrestricted": "livati ristrizzioni pi' l'amministratura",
+       "revdelete-restricted": "misi ristrizzioni pi l'amministratura",
+       "revdelete-unrestricted": "livati ristrizzioni pi l'amministratura",
        "logentry-block-block": "$1 {{GENDER:$2|bluccau}} a {{GENDER:$4|$3}} cûn tempu di scadenza di $5 $6",
        "logentry-block-unblock": "$1 {{GENDER:$2|sbluccau}} a {{GENDER:$4|$3}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|canciau}} li mpustazzioni dû bloccu di {{GENDER:$4|$3}} cûn tempu di scadenza di $5 $6",
        "logentry-import-interwiki": "$1 {{GENDER:$2|mpurtau}} $3 di n'àutra wiki",
        "logentry-merge-merge": "$1 {{GENDER:$2|juncìu}} $3 nta $4 (virsioni nfina ô $5)",
        "logentry-move-move": "$1 {{GENDER:$2|spustau}} la pàggina $3 nti $4",
-       "logentry-move-move-noredirect": "$1 {{GENDER:$2|spustau}} a pàggina $3 nta $4 senza lassari nu rimannu",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|spustau}} la pàggina $3 nta $4 senza lassari nu rimannu",
        "logentry-move-move_redir": "$1 {{GENDER:$2|spustau}} la pàggina $3 nti $4 cu nu rinnirizzamentu",
-       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|spustau}} a pàggina $3 nta $4 ô postu dûn rimannu senza lassari nu rimannu",
-       "logentry-patrol-patrol": "$1 {{GENDER:$2|marcau}} a virsioni $4 dâ pàggina $3 comu battugghiata",
-       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|marcau}} di manera autumàtica a virsioni $4 dâ pàggina $3 comu battugghiata",
-       "logentry-newusers-newusers": "U cuntu di l'utenti $1 fu {{GENDER:$2|criatu}}",
-       "logentry-newusers-create": "U cuntu di l'utenti $1 fu' {{GENDER:$2|criatu}}",
-       "logentry-newusers-create2": "U cuntu di l'utenti $3 fu' {{GENDER:$2|criatu}} di $1",
-       "logentry-newusers-byemail": "U cuntu di l'utenti $3 fu' {{GENDER:$2|criatu}} di $1 e a password fu' mannata via posta elittrònica",
-       "logentry-newusers-autocreate": "U cuntu di l'utenti $1 fu' {{GENDER:$2|criatu}} di manera autumàtica",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|spustau}} la pàggina $3 nta $4 ô postu dûn rimannu senza lassari nu rimannu",
+       "logentry-patrol-patrol": "$1 {{GENDER:$2|marcau}} la virsioni $4 dâ pàggina $3 comu virificata",
+       "logentry-patrol-patrol-auto": "$1 {{GENDER:$2|marcau}} di manera autumàtica la virsioni $4 dâ pàggina $3 comu virificata",
+       "logentry-newusers-newusers": "Lu cuntu di l'utenti $1 fu {{GENDER:$2|criatu}}",
+       "logentry-newusers-create": "Lu cuntu di l'utenti $1 fu {{GENDER:$2|criatu}}",
+       "logentry-newusers-create2": "Lu cuntu di l'utenti $3 fu {{GENDER:$2|criatu}} di $1",
+       "logentry-newusers-byemail": "Lu cuntu di l'utenti $3 fu {{GENDER:$2|criatu}} di $1 e la password fu mannata via posta elittrònica",
+       "logentry-newusers-autocreate": "Lu cuntu di l'utenti $1 fu {{GENDER:$2|criatu}} di manera autumàtica",
        "logentry-protect-move_prot": "$1 {{GENDER:$2|spustau}} li mpustazzioni di prutizzioni di $4 a’ $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|canciau}} l'appartinenza di $3 dû gruppu $4 ô gruppu $5",
-       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|canciau}} l'appartinenza a' gruppi di $3",
-       "logentry-rights-autopromote": "$1 fu' {{GENDER:$2|prumuvutu|prumuvuta}} di manera autumatica di $4 a' $5",
+       "logentry-rights-rights-legacy": "$1 {{GENDER:$2|canciau}} l'appartinenza a gruppi di $3",
+       "logentry-rights-autopromote": "$1 fu {{GENDER:$2|prumuvutu|prumuvuta}} di manera autumàtica di $4 a $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|carricau}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|carricau}} na virsioni nova di $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|carricau}} $3",
        "revdelete-summary": "riassuntu dô canciamentu",
        "feedback-adding": "Agghiuncimentu dû cummentu â pàggina...",
        "feedback-back": "N'arreri",
-       "feedback-bugcheck": "Bonu! Sulu cuntrolla chi' nun è unu dî [$1 bug già canusciuti].",
-       "feedback-bugnew": "Cuntrullai. Signala nu bug novu",
-       "feedback-bugornote": "Si' si' bonu a' discrìviri un prubblema tècnicu di manera dittagghiata, pi' favuri [$1 signala nu bug].\nSi' no, poi adupirari u mòdulu facilitatu ccassutta. U to cummentu sarravi agghiunciutu â pàggina \"[$3 $2]\", nsemmula ô to nomu utenti.",
+       "feedback-bugcheck": "Bonu! Sulu cuntrolla chi nun è unu dî [$1 bug già canusciuti].",
+       "feedback-bugnew": "Cuntrullai. Assignala nu bug novu",
+       "feedback-bugornote": "Si sî bonu a discrìviri un prubblema tècnicu di manera dittagghiata, pi favuri [$1 signala nu bug].\nSi no, poi adupirari lu mòdulu facilitatu ccassutta. Lu tò cummentu è agghiunciutu â pàggina \"[$3 $2]\", nzèmmula ô tò nomu utenti.",
        "feedback-cancel": "Annulla",
        "feedback-close": "Finutu",
        "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: Risultatu di l'API nun ricanusciutu",
-       "feedback-error2": "Erruri: A mudìfica nun riniscìu",
+       "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",
        "feedback-error4": "Erruri: Nun fu pussìbbili pubblicari ntô tìtulu dû cummentu spicificatu",
        "feedback-message": "Missaggiu:",
        "feedback-submit": "Manna",
        "feedback-terms": "Capisciu ca li nfurmazzioni dû mè aggenti di l'utenti cuntèninu li virsioni pricisi dû mè browser e dû mè sistema opirativu, e ca sti nfurmazzioni sunnu cunnivisi pubblicamenti a latu dû mè cummentu.",
        "feedback-termsofuse": "Accunzentu a lassari lu mè cummentu n cuncurdanza cu li Cunnizzioni d'Usu.",
-       "feedback-thanks": "Grazzî! U to cummentu fu' affissu ntâ pàggina \"[$2 $1]\".",
+       "feedback-thanks": "Grazzî! Lu tò cummentu fu affissu ntâ pàggina \"[$2 $1]\".",
        "feedback-thanks-title": "Ti ringrazziamu!",
        "feedback-useragent": "Aggenti di l'utenti:",
        "searchsuggest-search": "Arricerca",
-       "searchsuggest-containing": "chi' cunteni...",
-       "api-error-badaccess-groups": "Nun hai u pirmissu di carricari file nta sta wiki.",
+       "searchsuggest-containing": "chi cunteni...",
+       "api-error-badaccess-groups": "Nun hai lu pirmissu di carricari file nta sta wiki.",
        "api-error-badtoken": "Erruri nternu: Token sbagghiatu",
-       "api-error-copyuploaddisabled": "U carricamentu a' partiri di URL è disattivatu nta stu server.",
-       "api-error-duplicate": "Già {{PLURAL:$1|cc'è [$2 n'autru file]|cci sunnu [$2 autri file]}} supra ô situ chi' {{PLURAL:$1|havi|hannu}} u stissu cuntinutu.",
-       "api-error-duplicate-archive": "{{PLURAL:$1|Cc'era [$2 n'autru file]|Cc' èrunu [$2 autri file]}} supra ô situ ch'{{PLURAL:$1|avìa|avìunu}} u stissu cuntinutu, ma {{PLURAL:$1|fu' cancillatu|furu cancillati}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|File duppiuni|File duppiuni}} chi' già {{PLURAL:$1|havi statu cancillatu|hannu statu cancillati}}.",
-       "api-error-duplicate-popup-title": "File {{PLURAL:$1|duppiuni}}.",
-       "api-error-empty-file": "U file chi' mannasti era vacanti.",
+       "api-error-copyuploaddisabled": "Lu carricamentu a pàrtiri d'URL è disattivatu nta stu server.",
+       "api-error-duplicate": "Già {{PLURAL:$1|c'è [$2 n'àutru file]|ci sunnu [$2 àutri file]}} supra ô situ chi {{PLURAL:$1|havi|hannu}} lu stissu cuntinutu.",
+       "api-error-duplicate-archive": "{{PLURAL:$1|C'era [$2 n'àutru file]|C'èranu [$2 àutri file]}} supra ô situ c'{{PLURAL:$1|avìa|avìanu}} lu stissu cuntinutu, ma {{PLURAL:$1|fu cancillatu|foru cancillati}}.",
+       "api-error-empty-file": "Lu file chi mannasti era vacanti.",
        "api-error-emptypage": "Criari pàggini novi e vacanti nun è cunzintutu.",
-       "api-error-fetchfileerror": "Erruri nternu: Quarchi' cosa nun funziunau mentri chi' si carricava u file.",
-       "api-error-fileexists-forbidden": "Nu file chi' si chiama \"$1\" già esisti, e nun si po' suprascrìviri.",
-       "api-error-fileexists-shared-forbidden": "Nu file chi' si chiama \"$1\" già esisti ntô dipòsitu cunnivisu, e nun si po' suprascrìviri.",
-       "api-error-file-too-large": "U file chi' mannasti era troppu rossu.",
-       "api-error-filename-tooshort": "U nomu dû file è troppu curtu.",
+       "api-error-fetchfileerror": "Erruri nternu: Quarchi cosa nun funziunau mentri chi si carricava lu file.",
+       "api-error-fileexists-forbidden": "Nu file chi si chiama \"$1\" già esisti, e nun si pò suprascrìviri.",
+       "api-error-fileexists-shared-forbidden": "Nu file chi si chiama \"$1\" già esisti ntô dipòsitu cunnivisu, e nun si pò suprascrìviri.",
+       "api-error-file-too-large": "Lu file chi mannasti era troppu grossu.",
+       "api-error-filename-tooshort": "Lu nomu dû file è troppu curtu.",
        "api-error-filetype-banned": "Stu tipu di file è sbannutu.",
-       "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nun è un tipu di file cunsintutu|nun su' tipi di file cunsintuti}}. {{PLURAL:$3|U tipu di file cunsintutu è|I tipi di file cunsintuti sunnu}} $2.",
-       "api-error-filetype-missing": "Ô nomu dû file cci manca l'estinsioni.",
-       "api-error-hookaborted": "U canciamentu chi' stavi pruvannu a' fari fu' annullatu di n'estinsioni.",
-       "api-error-http": "Erruri nternu: Impussìbbili culligàrisi ô server.",
-       "api-error-illegal-filename": "U nomu dû file nun è cunsintutu.",
-       "api-error-internal-error": "Erruri nternu: Quarchi' cosa nun funziunau mentri chi' si stava travagghiannu u to carricamentu supra â wiki.",
-       "api-error-invalid-file-key": "Erruri nternu: U file nun fu' truvatu ntâ mimorizzazzioni timpurania.",
-       "api-error-missingparam": "Erruri nternu: Màncunu paràmitri ntâ richiesta.",
-       "api-error-missingresult": "Erruri nternu: Nun fu' pussìbbili capiri s'a copia riniscìu.",
-       "api-error-mustbeloggedin": "Hâ' jèssiri trasutu pi' carricari file.",
-       "api-error-mustbeposted": "Erruri nternu: A richiesta havi bisognu di POST HTTP.",
-       "api-error-noimageinfo": "U carricamentu riniscìu, però u server nun nni desi nudda nfurmazzioni a' prupòsitu dû file.",
+       "api-error-filetype-banned-type": "$1 {{PLURAL:$4|nun è un tipu di file cunzintutu|nun sù tipi di file cunzintuti}}. {{PLURAL:$3|Lu tipu di file cunzintutu è|Li tipi di file cunzintuti sunnu}} $2.",
+       "api-error-filetype-missing": "Ô nomu dû file ci ammanca l'estinzioni.",
+       "api-error-hookaborted": "Lu canciamentu chi stavi pruvannu a fari fu annullatu di n'estinzioni.",
+       "api-error-http": "Erruri nternu: Mpussìbbili culligàrisi ô server.",
+       "api-error-illegal-filename": "Lu nomu dû file nun è cunzintutu.",
+       "api-error-internal-error": "Erruri nternu: Quarchi cosa nun funziunau mentri chi si stava travagghiannu lu tò carricamentu supra â wiki.",
+       "api-error-invalid-file-key": "Erruri nternu: Lu file nun fu attruvatu ntâ mimurizzazzioni timpurània.",
+       "api-error-missingparam": "Erruri nternu: Ammàncanu paràmitri nta l'addumannata.",
+       "api-error-missingresult": "Erruri nternu: Nun fu pussìbbili capiri si la copia arriniscìu.",
+       "api-error-mustbeloggedin": "Hai a aviri trasutu pi carricari file.",
+       "api-error-mustbeposted": "Erruri nternu: L'addumannata havi bisognu di POST HTTP.",
+       "api-error-noimageinfo": "Lu carricamentu arriniscìu, pirò lu server nun ni desi nudda nfurmazzioni a prupòsitu dû file.",
        "api-error-nomodule": "Erruri nternu: nun fu mpustatu lu mòdulu di carricamentu",
        "api-error-ok-but-empty": "Erruri ntenru: nudda risposta dû server",
        "api-error-overwrite": "Suprascriviri nu file ca nun esisti nun è cunsitutu",
        "api-error-stashfailed": "Erruri nternu: lu server nun arrinisciu a mimurizzari lu ducumentu timpuraniu",
-       "api-error-publishfailed": "Erruri nternu: U server nun riniscìu a' pubblicari u file timpuraniu.",
-       "api-error-stasherror": "Cci fu' n'erruri ntô carricari u file nta l'ammucciagghia.",
-       "api-error-stashedfilenotfound": "U file nun fu' truvatu nta l'ammucciagghia duranti u tintativu di carricamentu a' partiri di l'ammucciagghia.",
-       "api-error-stashpathinvalid": "U caminu unni avissi avutu a' jèssiri u file nta l'ammucciagghia nun era vàlidu.",
-       "api-error-stashfilestorage": "Cci fu' n'erruri ntô mimurizzari u file nta l'ammucciagghia.",
-       "api-error-stashzerolength": "U server nun potti mèttiri u file nta l'ammucciagghia, picchì avìa lunghizza zeru.",
-       "api-error-stashnotloggedin": "Hâ' èssiri trasutu pi' sarvari file nta l'ammucciagghia.",
-       "api-error-stashwrongowner": "U file nta l'ammucciagghia chi' pruvasti a' pigghiari nun t'apparteni.",
-       "api-error-stashnosuchfilekey": "U file nta l'ammucciagghia chi' pruvasti a' pigghiari nun esisti.",
+       "api-error-publishfailed": "Erruri nternu: Lu server nun arriniscìu a pubblicari lu file timpuràniu.",
+       "api-error-stasherror": "Ci fu n'erruri ntô carricari lu file nta l'ammucciagghia.",
+       "api-error-stashedfilenotfound": "Lu file nun fu attruvatu nta l'ammucciagghia duranti lu tintativu di carricamentu a pàrtiri di l'ammucciagghia.",
+       "api-error-stashpathinvalid": "Lu caminu unni avissi avutu a èssiri lu file nta l'ammucciagghia nun era vàlidu.",
+       "api-error-stashfilestorage": "Ci fu n'erruri ntô mimurizzari lu file nta l'ammucciagghia.",
+       "api-error-stashzerolength": "Lu server nun potti mèttiri lu file nta l'ammucciagghia, pirchì avìa lunghizza zeru.",
+       "api-error-stashnotloggedin": "Hai a aviri trasutu pi sarvari file nta l'ammucciagghia.",
+       "api-error-stashwrongowner": "Lu file nta l'ammucciagghia chi pruvasti a pigghiari nun t'apparteni.",
+       "api-error-stashnosuchfilekey": "Lu file nta l'ammucciagghia chi pruvasti a pigghiari nun esisti.",
        "api-error-timeout": "Lu server nun arrispunniu ntô tempu privistu",
        "api-error-unclassified": "S'avvirificau n'erruri scanusciutu",
        "api-error-unknown-code": "Erruri scanusciuti: \"$1$\".",
-       "api-error-unknown-error": "Erruri nternu: Quarchi' cosa nun funziunau ntô tintativu di carricari u to file.",
-       "api-error-unknown-warning": "Avvirtimentu scanusciutu: \"$1\".",
+       "api-error-unknown-error": "Erruri nternu: Quarchi cosa nun funziunau ntô tintativu di carricari lu tò file.",
+       "api-error-unknown-warning": "Avvisu scanusciutu: \"$1\".",
        "api-error-unknownerror": "Erruri scanusciutu: \"$1\".",
-       "api-error-uploaddisabled": "U carricamentu è disattivatu nta sta wiki.",
+       "api-error-uploaddisabled": "Lu carricamentu è disattivatu nta sta wiki.",
        "api-error-verification-error": "Lu file purrìa èssiri ruinatu, o puru aviri la stinzioni sbagghiata.",
        "duration-seconds": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
        "duration-minutes": "$1 {{PLURAL:$1|minutu|minuti}}",
        "duration-weeks": "$1 {{PLURAL:$1|simana|simani}}",
        "duration-years": "$1 {{PLURAL:$1|annu|anni}}",
        "duration-decades": "$1 {{PLURAL:$1|dicenniu|dicennî}}",
-       "duration-centuries": "$1 {{PLURAL:$1|sèculu|sècula}}",
+       "duration-centuries": "$1 {{PLURAL:$1|sèculu|sèculi}}",
        "duration-millennia": "$1 {{PLURAL:$1|millenniu|millennî}}",
-       "rotate-comment": "Mmàggini vutata di $1 {{PLURAL:$1|gradu|gradi}} ntô sensu urariu",
-       "limitreport-title": "Dati di prufilazzioni di l'analizzaturi sintatticu:",
+       "rotate-comment": "Mmàggini vutata di $1 {{PLURAL:$1|gradu|gradi}} ntô senzu urariu",
+       "limitreport-title": "Dati di prufilazzioni di l'analizzaturi sintàtticu:",
        "limitreport-cputime": "Usu di tempu dâ CPU",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
        "limitreport-walltime": "Tempu d'usu riali",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|sicunnu|sicunni}}",
        "limitreport-ppvisitednodes": "Cuntiggiu dî gruppi visitati dû priprucissuri",
        "limitreport-ppgeneratednodes": "Cuntiggiu dî gruppi ginirati dû priprucissuri",
-       "limitreport-postexpandincludesize": "Grannizza di nclusioni appressu a' l'espansioni",
+       "limitreport-postexpandincludesize": "Grannizza di nclusioni appressu a l'espanzioni",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|byte}}",
        "limitreport-templateargumentsize": "Grannizza di l'argumenti di template",
        "limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|byte}}",
-       "limitreport-expansiondepth": "Màssimu funnu d'espansioni",
-       "limitreport-expensivefunctioncount": "Cuntìggiu dî funzioni di l'analizzaturi sintatticu spisusi",
-       "expandtemplates": "Espansioni dî template",
-       "expand_templates_intro": "Sta pàggina spiciali pigghia un testu e espanni tutti i template chi' cunteni, di manera ricursiva.\nEspanni macari i funzioni di l'analizzaturi sintatticu chi' su suppurtati, comu <code><nowiki>{{</nowiki>#language:…}}</code>, e i variàbbili, comu <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nIn pratica, espanni cchiu' o menu tuttu chiddu chi' si trova mmenzu a' duppî parèntisi graffi.",
-       "expand_templates_title": "Tìtulu dû cuntestu, pi' {{FULLPAGENAME}} etc.:",
-       "expand_templates_input": "Testu a' espànniri:",
-       "expand_templates_output": "Risultatu",
+       "limitreport-expansiondepth": "Funnu d'espanzioni màssimu",
+       "limitreport-expensivefunctioncount": "Cuntiggiu dî funzioni di l'analizzaturi sintàtticu spisusi",
+       "expandtemplates": "Espanzioni dî template",
+       "expand_templates_intro": "Sta pàggina spiciali pigghia un testu e espanni tutti li template chi cunteni, di manera ricursiva.\nEspanni macari li funzioni di l'analizzaturi sintàtticu chi sù suppurtati, comu <code><nowiki>{{</nowiki>#language:…}}</code>, e li variàbbili, comu <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nN pràttica, espanni cchiù o menu tuttu zocchi s'attrova ammenzu a duppî parèntisi graffi.",
+       "expand_templates_title": "Tìtulu dû cuntestu, pi {{FULLPAGENAME}} ecc.:",
+       "expand_templates_input": "Testu a espànniri:",
+       "expand_templates_output": "Risurtatu",
        "expand_templates_xml_output": "Output XML",
        "expand_templates_html_output": "Output HTML grezzu",
        "expand_templates_ok": "Espanni",
-       "expand_templates_remove_comments": "Leva i cummenti",
-       "expand_templates_remove_nowiki": "Leva l'etichetti <nowiki> dû risultatu",
+       "expand_templates_remove_comments": "Leva li cummenti",
+       "expand_templates_remove_nowiki": "Leva l'etichetti <nowiki> dû risurtatu",
        "expand_templates_generate_xml": "Ammustra l'àrvulu di l'anàlisi sintàttica XML",
        "expand_templates_generate_rawhtml": "Ammustra l'HTML grezzu",
        "expand_templates_preview": "Antiprima",
-       "expand_templates_preview_fail_html": "<em>Comu chi' {{SITENAME}} havi l'HTML grezzu attivatu, e cci fu' na pèrdita dî dati di sissioni, l'antiprima vinni ammucciata, pi' pricauzzioni contra di l'attacchi JavaScript.</em>\n\n<strong>Si' chistu è nu tintativu onestu d'aviri n'antiprima, pi' favuri prova n'autra vota.</strong>\nS'ancora nun funziona, prova a' [[Special:UserLogout|nèsciri]] e tràsiri n'autra vota.",
-       "expand_templates_preview_fail_html_anon": "<em>Comu chi' {{SITENAME}} havi l'HTML grezzu attivatu, e tu nun si' trasutu, l'antiprima vinni ammucciata, pi' pricauzzioni contra di l'attacchi JavaScript.</em>\n\n<strong>Si' chistu è nu tintativu onestu d'aviri n'antiprima, pi' favuri [[Special:UserLogin|trasi]] e prova n'autra vota.",
-       "pagelanguage": "Scelta dâ lingua dâ pàggina",
+       "expand_templates_preview_fail_html": "<em>Comu chi {{SITENAME}} havi l'HTML grezzu attivatu, e ci fu na pèrdita dî dati di sissioni, l'antiprima vinni ammucciata, pi pricauzzioni contra di l'attacchi JavaScript.</em>\n\n<strong>Si chistu è nu tintativu nurmali d'aviri n'antiprima, pi favuri prova n'àutra vota.</strong>\nSi ancora nun funziona, prova a [[Special:UserLogout|nèsciri]] e tràsiri n'àutra vota.",
+       "expand_templates_preview_fail_html_anon": "<em>Comu chi {{SITENAME}} havi l'HTML grezzu attivatu, e tu nun trasisti, l'antiprima vinni ammucciata, pi pricauzzioni contra di l'attacchi JavaScript.</em>\n\n<strong>Si chistu è nu tintativu nurmali d'aviri n'antiprima, pi favuri [[Special:UserLogin|trasi]] e prova n'àutra vota.",
+       "pagelanguage": "Scigghiuta dâ lingua dâ pàggina",
        "pagelang-name": "Pàggina",
        "pagelang-language": "Lingua",
-       "pagelang-use-default": "Usa a lingua pridifinuta",
-       "pagelang-select-lang": "Scegghî na lingua",
-       "right-pagelang": "Canciari a lingua dî pàggini",
-       "action-pagelang": "canciari a lingua dî pàggini",
+       "pagelang-use-default": "Usa la lingua pridifinuta",
+       "pagelang-select-lang": "Scegghi na lingua",
+       "right-pagelang": "Canciari la lingua dî pàggini",
+       "action-pagelang": "canciari la lingua dî pàggini",
        "log-name-pagelang": "Riggistru dî canci di lingua",
        "log-description-pagelang": "Chistu è nu riggistru dî canciamenti â lingua dî pàggini.",
-       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|canciau}} a lingua dâ pàggina $3 di $4 a' $5.",
+       "logentry-pagelang-pagelang": "$1 {{GENDER:$2|canciau}} la lingua dâ pàggina $3 di $4 a $5.",
        "default-skin-not-found": "Whoops! La peddi pridifinuta dâ tò wiki, mpustata nta <code dir=\"ltr\">$wgDefaultSkin</code> comu <code>$1</code>, nun è dispunìbbili.\n\nA quantu pari la tò stallazzioni ncludi {{PLURAL:$4|la peddi|li peddi}} ccassutta. Talìa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuali: Cunfigurazzioni dî peddi] pi struzzioni supra a comu {{PLURAL:$4|s'attiva|s'attìvanu e comu si scegghî chidda pridifinuta}}.\n\n$2\n\n; Si stallasti MediaWiki ora ora:\n: E' prubbàbbili ca la stallasti dû git, o direttamenti dû còdici surgenti nta quarchi n'àutra manera. Allura sta cosa è privista. Prova e stalla quarchi peddi di [https://www.mediawiki.org/wiki/Category:All_skins l'archiviu dî peddi di mediawiki.org], a na manera di chisti:\n:* Scàrrica [https://www.mediawiki.org/wiki/Download lu prugramma di stallazzioni n furmatu tar], ca cunteni tanti peddi e stinzioni. Poi cupiari e ncuddari la cartella <code>skins/</code> di ddà dintra.\n:* Scàrrica a una a una quarchi peddi ntô furmatu tar di [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Adòpira Git pi scarricari peddi].\n: Lu fari accussì nun avissi a ntirfiriri cû tò dipòsitu git si sî nu sviluppaturi di MediaWiki.\n\n; Si aggiurnasti MediaWiki ora ora:\n: MediaWiki virsioni 1.24 e succissivi nun attìvanu cchiù di manera autumàtica li peddi stallati (talìa [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuali: Scuperta autumàtica dî peddi]). Poi cupiari e ncuddari {{PLURAL:$5|sta riga|sti righi}} nta <code>LocalSettings.php</code> p'attivari {{PLURAL:$5|la peddi ch'è stallata pi com'ora|tutti li peddi ca sunnu stallati pi com'ora}}:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si canciasti <code>LocalSettings.php</code> ora ora:\n: Cuntrolla ca nun sbagghiasti a scrìviri li noma dî peddi.",
        "default-skin-not-found-no-skins": "Whoops! La peddi pridifinuta dâ tò wiki, mpustata nta <code dir=\"ltr\">$wgDefaultSkin</code> comu <code>$1</code>, nun è dispunìbbili.\n\nNun hai nudda peddi nstallata.\n\n; Si nstallasti o puru aggiurnasti MediaWiki ora ora:\n: È prubbàbbili chi lu nstallasti dû git, o direttamenti dû còdici surgenti nta quarchi àutra manera. Allura sta cosa è privista. MediaWiki virsioni 1.24 e succissivi nun cuntèninu nudda peddi ntô dipòsitu principali. Prova e nstalla quarchi peddi di [https://www.mediawiki.org/wiki/Category:All_skins l'archiviu dî peddi di mediawiki.org], a na manera di chisti:\n:* Scàrrica [https://www.mediawiki.org/wiki/Download lu prugramma di nstallazzioni n furmatu tar], chi cunteni tanti peddi e stinzioni. Poi cupiari e ncuddari la cartella <code>skins/</code> di ddà dintra.\n:* Scàrrica a una a una quarchi peddi n furmatu tar di [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Adòpira Git pi scarricari peddi].\n: Fari accussì nun avissi a ntirfiriri cû tò dipòsitu git si sî nu sviluppaturi di MediaWiki. Talìa [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuali: Cunfigurazzioni dî peddi] pi struzzioni supra a comu s'attìvanu li peddi e comu si scegghî chidda pridifinuta.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (attivata)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disattivata''')",
        "mediastatistics": "Statìstichi supra ê file multimidiali",
-       "mediastatistics-summary": "Statìstichi supra ê tipi di file carricati. Si cùntunu sulu i virsioni cchiu' novi dî file. I virsioni vecchî o cancillati vènunu escluduti.",
+       "mediastatistics-summary": "Statìstichi supra ê tipi di file carricati. Si cùntanu sulu li virsioni cchiù novi dî file. Li virsioni vecchî o cancillati vèninu escluduti.",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte}} ($2; $3%)",
        "mediastatistics-table-mimetype": "Tipu MIME",
-       "mediastatistics-table-extensions": "Estinsioni pussìbbili",
+       "mediastatistics-table-extensions": "Estinzioni pussìbbili",
        "mediastatistics-table-count": "Nùmmiru di file",
-       "mediastatistics-table-totalbytes": "Rannizza cumplissiva",
+       "mediastatistics-table-totalbytes": "Diminzioni cumminata",
        "mediastatistics-header-unknown": "Scanusciuti",
        "mediastatistics-header-bitmap": "Mmàggini bitmap",
        "mediastatistics-header-drawing": "Disigni (mmàggini vitturiali)",
-       "mediastatistics-header-audio": "Audiu",
-       "mediastatistics-header-video": "Vidiu",
+       "mediastatistics-header-audio": "Àudiu",
+       "mediastatistics-header-video": "Vìdiu",
        "mediastatistics-header-multimedia": "File multimidiali cumplessi",
        "mediastatistics-header-office": "Ufficiu",
        "mediastatistics-header-text": "Tistuali",
        "mediastatistics-header-executable": "Esiguìbbili",
        "mediastatistics-header-archive": "Furmati cumpressi",
-       "json-warn-trailing-comma": "$1 {{PLURAL:$1|vìrgula finali fu' livata|vìrguli finali furu livati}} dû JSON",
-       "json-error-unknown": "Mmattìu un prubblema cû JSON. Erruri: $1",
-       "json-error-depth": "Fu passatu lu massimu funnu dû stack",
+       "json-warn-trailing-comma": "$1 {{PLURAL:$1|vìrgula finali fu livata|vìrguli finali foru livati}} dû JSON",
+       "json-error-unknown": "Ammattìu un prubblema cû JSON. Erruri: $1",
+       "json-error-depth": "Fu passatu lu funnu màssimu dû stack",
        "json-error-state-mismatch": "JSON nun vàlidu o malfurmatu",
        "json-error-ctrl-char": "Caràttiri di cuntrollu nun privistu, forsi cudificatu mali",
        "json-error-syntax": "Erruri di sintassi",
        "json-error-utf8": "Caràttiri UTF-8 nun vàlidi, forsi cudificati mali",
-       "json-error-recursion": "U valuri di cudificari havi unu o cchiu' ssai rifirimenti ricursivi",
-       "json-error-inf-or-nan": "U valuri di cudificari havi unu o cchiu' ssai valuri NAN o INF",
-       "json-error-unsupported-type": "Fu' passatu nu valuri dûn tipu chi' nun si po' cudificari",
+       "json-error-recursion": "Lu valuri di cudificari havi unu o cchiossai rifirimenti ricursivi",
+       "json-error-inf-or-nan": "Lu valuri di cudificari havi unu o cchiossai valuri NAN o INF",
+       "json-error-unsupported-type": "Fu passatu nu valuri dûn tipu chi nun si pò cudificari",
        "headline-anchor-title": "Ligami versu sta sizzioni",
        "special-characters-group-latin": "Latinu",
        "special-characters-group-latinextended": "Latinu estinnutu",
index 3a5ad0a..450af83 100644 (file)
        "api-error-copyuploaddisabled": "Uplaidin bi URL is disabled oan this server.",
        "api-error-duplicate": "Thaur {{PLURAL:$1|is [$2 anither file]|ar [$2 some ither files]}} awreadie oan the site wi the same content.",
        "api-error-duplicate-archive": "Thaur {{PLURAL:$1|wis [$2 anither file]|were [$2 some ither files]}} awreadie oan the site wi the same content, but {{PLURAL:$1|it wis|thay were}} delytit.",
-       "api-error-duplicate-archive-popup-title": "Dupleecate {{PLURAL:$1|file that haes|files that hae}} awreadie been delytit.",
-       "api-error-duplicate-popup-title": "Dupleecate {{PLURAL:$1|file|files}}.",
        "api-error-empty-file": "The file that ye haunnit in wis tuim.",
        "api-error-emptypage": "Cræftin new, tuim pages isna permittit.",
        "api-error-fetchfileerror": "Internal mistak: Sommit went wrang while fetchin the file.",
index 523b5de..f4f5a2f 100644 (file)
        "api-error-copyuploaddisabled": "URL zijandiyan n' ka kay feršikaa woo ga.",
        "api-error-duplicate": "{{PLURAL:$1|ti [ti tuku tana $2]}} kaŋ ga bara interneti nungoo ga ka ben nda gundakuna follokaa da.",
        "api-error-duplicate-archive": "{{PLURAL:$1|ti [ti tuku tana $2]}} kaŋ ga bara interneti nungoo ga ka ben nda gundakuna follokaa da, amma {{PLURAL:$1|an' ka|in' ka}} tuusandi.",
-       "api-error-duplicate-archive-popup-title": "Fillayan {{PLURAL:$1|tukoo kaŋ n' ka|tukey kaŋ n' ka}} tuusandi ka ben.",
-       "api-error-duplicate-popup-title": "Fillayan {{PLURAL:$1|tukoo|tukey}}.",
        "api-error-empty-file": "Tukoo kaŋ war n'a sanba mma koonu.",
        "api-error-emptypage": "Boro ši hin ka moo taaga, koonuyaŋ tee.",
        "api-error-fetchfileerror": "Kunahere firka: Haya foo mana boori tuku zaayan waate.",
index 9623c23..47b4076 100644 (file)
        "api-error-copyuploaddisabled": "Postavljanja putem URL-a su onemogućena na ovom serveru.",
        "api-error-duplicate": "Već postoji {{PLURAL:$1|[$2 druga datoteka]|[$2 druge datoteke]}} na ovoj stranici sa istim sadržajem",
        "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 neke druge datoteke]}} na sajtu sa istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Dupla datoteka|Duple datoteke}} koje su već obrisane",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Dvojna datoteka|Dvojne datoteke}}",
        "api-error-empty-file": "Datoteka koju ste poslali je bila prazna.",
        "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.",
        "api-error-fetchfileerror": "Unutrašnja greška: pojavio se neki problem pri dobijanju podataka o datoteci.",
index b17e15b..c263031 100644 (file)
        "api-error-copyuploaddisabled": "URL මඟින් උඩුගතකිරීම මෙම සර්වරයේදී අක්‍රීය කොට තිබේ.",
        "api-error-duplicate": "එකම අන්තර්ගතය සමඟ මෙවැනිම {{PLURAL:$1|[වෙනත් ගොනු $2 ක්]|[වෙනත් ගොනු $2 ක්]}} අඩවිය තුල දැනටමත් පවතියි.",
        "api-error-duplicate-archive": "එකම අන්තර්ගතය සමඟ මෙවැනිම {{PLURAL:$1|[වෙනත් ගොනු $2 ක්]|[වෙනත් ගොනු $2 ක්]}} අඩවිය තුල දැනටමත් තිබුනා, නමුත්  {{PLURAL:$1|ඒක|ඒවා}} මකා දමා ඇත.",
-       "api-error-duplicate-archive-popup-title": "දැනටමත් මකා දමා ඇති එක වගේ {{PLURAL:$1|ගොනුවක්|ගොනු}}",
-       "api-error-duplicate-popup-title": "අනුපිටපත් {{PLURAL:$1|ගොනු|ගොනුව}}",
        "api-error-empty-file": "ඔබ ඉදිරිපත්කල ගොනුව හිස් එකකි.",
        "api-error-emptypage": "නවතම එකක් තනමින්, හිස් පිටුවලට ඉඩ නොදේ.",
        "api-error-fetchfileerror": "අභ්‍යන්තර දෝෂය: ගොනුව පැමිණවීම අතරතුරදී කුමක්දෝ වැරදුණා.",
index a3f4f5d..15b17d7 100644 (file)
        "api-error-copyuploaddisabled": "Nahrávanie z URL je na tomto serveri zakázané.",
        "api-error-duplicate": "{{PLURAL:$1|[$2 ďalší súbor]|[$2 ďalšie súbory]}} s rovnakým obsahom už na tejto wiki existujú",
        "api-error-duplicate-archive": "{{PLURAL:$1|[$2 ďalší súbor]|[$2 ďalšie súbory]}} s rovnakým obsahom už na tejto wiki existoval, ale {{PLURAL:$1|bol zmazaný|boli zmazané}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplicitný súbor, ktorý už bol zmazaný|Duplicitné súbory, ktoré už boli zmazané}}",
-       "api-error-duplicate-popup-title": "Duplikovať {{PLURAL:$1|súbor|súbory}}",
        "api-error-empty-file": "Súbor, ktorý ste poslali bol prázdny.",
        "api-error-emptypage": "Vytváranie nových, prázdnych stránok nie je dovolené.",
        "api-error-fetchfileerror": "Vnútorná chyba: Niečo pokazilo počas sťahovania súboru.",
index 6baa78e..be35f72 100644 (file)
        "nstab-template": "Predloga",
        "nstab-help": "Pomoč",
        "nstab-category": "Kategorija",
+       "mainpage-nstab": "Glavna stran",
        "nosuchaction": "Tako dejanje ne obstaja",
        "nosuchactiontext": "Dejanje, ki ga označuje spletni naslov, je napačno.\nMorda ste se pri naslovu zatipkali ali pa ste sledili napačni povezavi.\nMorda ste odkrili hrošča v programski opremi {{GRAMMAR:genitive|{{SITENAME}}}}.",
        "nosuchspecialpage": "Zahtevana posebna stran ne obstaja",
        "permissionserrorstext-withaction": "Za $2 zaradi {{PLURAL:$1|naslednjega razloga|naslednjih razlogov}} nimate dovoljenja:",
        "recreate-moveddeleted-warn": "'''Opozorilo: Pišete stran, ki je bila nekoč že izbrisana.'''\n\nPremislite preden nadaljujete s pisanjem, morda bo stran zaradi istih razlogov ponovno odstranjena.\nSpodaj je prikazan dnevnik brisanja in prestavljanja:",
        "moveddeleted-notice": "Stran je bila izbrisana.\nSpodaj sta za sklicevanje na razpolago dnevnik brisanja in dnevnik prestavljanja strani.",
+       "moveddeleted-notice-recent": "Oprostite, stran je bila nedavno izbrisana (v zadnjih 24 urah).\nDnevnik brisanja in prestavljanj strani je naveden spodaj.",
        "log-fulllog": "Ogled celotnih dnevniških zapiskov",
        "edit-hook-aborted": "Urejanje je bilo brez obrazložitve prekinjeno zaradi neznane napake.",
        "edit-gone-missing": "Strani ni mogoče posodobiti.\nIzgleda, da je bila izbrisana.",
        "api-error-badaccess-groups": "Nalaganje datotek na ta wiki vam ni dovoljeno.",
        "api-error-badtoken": "Notranja napaka: slab žeton.",
        "api-error-copyuploaddisabled": "Nalaganje preko URL je na tem strežniku onemogočeno.",
-       "api-error-duplicate": "Na strani že {{PLURAL:$1|obstaja [$2 druga datoteka]|obstajata [$2 drugi datoteki]|obstajajo [$2 druge datoteke]|obstaja [$2 drugih datotek]}} z enako vsebino",
-       "api-error-duplicate-archive": "Na strani {{PLURAL:$1|je že bila [$2 druga datoteka]|sta že bili [$2 drugi datoteki]|so že bile [$2 nekatere druge datoteke]}} z enako vsebino, vendar {{PLURAL:$1|je bila izbrisana|sta bili izbrisani|so bile izbrisane}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Podvojena datoteka, ki je že bila izbrisana|Podvojeni datoteki, ki sta že bili izbrisani|Podvojene datoteke, ki so že bile izbrisane}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Podvojena datoteka|Podvojeni datoteki|Podvojene datoteke}}",
+       "api-error-duplicate": "Na strani že {{PLURAL:$1|obstaja druga datoteka|obstajata drugi datoteki|obstajajo druge datoteke}} z enako vsebino.",
+       "api-error-duplicate-archive": "Na strani {{PLURAL:$1|je že bila druga datoteka|sta že bili drugi datoteki|so že bile nekatere druge datoteke}} z enako vsebino, vendar {{PLURAL:$1|je bila izbrisana|sta bili izbrisani|so bile izbrisane}}.",
        "api-error-empty-file": "Poslana datoteka je prazna.",
        "api-error-emptypage": "Ustvarjanje novih, praznih strani ni dovoljeno.",
        "api-error-fetchfileerror": "Notranja napaka: pri pridobivanju datoteke je nekaj šlo narobe.",
index cb5de48..7655509 100644 (file)
        "api-error-copyuploaddisabled": "Ngarkimi nga URL-ja është çaktivizuar në këtë server.",
        "api-error-duplicate": "{{PLURAL:$1|Ekziston [$2 një skedë tjetër]|Ekzistojnë [$2 disa skeda të tjera]}} me të njëjtën përmbajtje.",
        "api-error-duplicate-archive": "{{Ekzistonte [$2 një skedë tjetër]|Ekzistonin [$2 disa skeda të tjera]}} me të njëjtën përmbajtje, por {{PLURAL:$1|u gris|u grisën}}.",
-       "api-error-duplicate-archive-popup-title": "Dublo {{PLURAL:$1|skedë|skeda}} që janë grisur tashmë",
-       "api-error-duplicate-popup-title": "Dublo {{PLURAL:$1|skedë|skeda}}",
        "api-error-empty-file": "Skeda që paraqitët ishte bosh.",
        "api-error-emptypage": "Nuk lejohet krijimi i faqeve të reja bosh.",
        "api-error-fetchfileerror": "Gabim i brendshëm: Diçka shkoi keq gjatë marrjes së skedës.",
index 88033d5..d5162a7 100644 (file)
        "api-error-copyuploaddisabled": "Отпремање путем адресе је онемогућено на овом серверу.",
        "api-error-duplicate": "Већ {{PLURAL:$1|постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|је обрисана|су обрисане}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Дуплирана датотека|Дуплиране датотеке}}",
        "api-error-empty-file": "Послата датотека је празна.",
        "api-error-emptypage": "Стварање нових празних страница није дозвољено.",
        "api-error-fetchfileerror": "Унутрашња грешка: дошло је до грешке при добављању датотеке.",
index c59d881..14c8669 100644 (file)
        "api-error-copyuploaddisabled": "Otpremanje putem adrese je onemogućeno na ovom serveru.",
        "api-error-duplicate": "Već {{PLURAL:$1|postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Duplirana datoteka|Duplirane datoteke}}",
        "api-error-empty-file": "Poslata datoteka je prazna.",
        "api-error-emptypage": "Stvaranje novih praznih stranica nije dozvoljeno.",
        "api-error-fetchfileerror": "Unutrašnja greška: došlo je do greške pri dobavljanju datoteke.",
index 7d454fd..a8e5900 100644 (file)
        "api-error-copyuploaddisabled": "Uppladdning via URL är inaktiverad på den här servern.",
        "api-error-duplicate": "Det finns redan {{PLURAL:$1|[$2 en annan fil]|[$2 andra filer]}} på webbplatsen med samma innehåll.",
        "api-error-duplicate-archive": "Det fanns redan {{PLURAL:$1|[$2 en annan fil]|[$2 några andra filer]}} på webbplatsen med samma innehåll, men {{PLURAL:$1|den har|de har}} raderats.",
-       "api-error-duplicate-archive-popup-title": "Dubblett av {{PLURAL:$1|fil|filer}} som redan har tagits bort",
-       "api-error-duplicate-popup-title": "Dubblett{{PLURAL:$1|fil|filer}}",
        "api-error-empty-file": "Filen du skickade var tom.",
        "api-error-emptypage": "Det är inte tillåtet att skapa nya, tomma sidor.",
        "api-error-fetchfileerror": "Internt fel: något gick fel vid hämtningen av filen.",
index ab74dad..e14d59d 100644 (file)
        "api-error-copyuploaddisabled": "உரலி மூலம் பதிவேற்றுவது இந்த வழங்கியில் செயலிழக்கச் செய்யப்பட்டுள்ளது.",
        "api-error-duplicate": "There {{PLURAL:$1|is [$2 another file]|are [$2 some other files]}} already on the site with the same content.",
        "api-error-duplicate-archive": "ஏற்கனவே இத்தளத்தில் இதே உள்ளடக்கத்தைக் கொண்ட {{PLURAL:$1|கோப்பு [$2 இருந்தது]|[$2 கோப்புகள் இருந்தன]}}, ஆனால் {{PLURAL:$1|அது நீக்கப்பட்டுவிட்டது|அவை நீக்கப்பட்டுவிட்டன.}}",
-       "api-error-duplicate-archive-popup-title": "Duplicate {{PLURAL:$1|file|files}} that have already been deleted",
-       "api-error-duplicate-popup-title": "போலி {{PLURAL:$1|கோப்பு|கோப்புகள்}}",
        "api-error-empty-file": "நீங்கள் அளித்த கோப்பு காலியாக உள்ளது.",
        "api-error-emptypage": "புதிய, காலி பக்கங்கள் உருவாக்கல் அனுமதிக்கப்படவில்லை.",
        "api-error-fetchfileerror": "உள்ளகப் பிழை: கோப்பைப் பெறுகையில் ஏதோ தவறு நேர்ந்துவிட்டது.",
index 886f757..ee53ac7 100644 (file)
        "api-error-copyuploaddisabled": "URL ద్వారా ఎక్కించడం ఈ సర్వరులో అశక్తం చెయ్యబడింది.",
        "api-error-duplicate": "ఇదే విషయ పాఠ్యంతో ఈ సైటులో ఈసరికే {{PLURAL:$1|[$2 మరో ఫైలు] ఉంది|[$2 ఇతర ఫైళ్ళు] ఉన్నాయి}}.",
        "api-error-duplicate-archive": "ఇదే విషయ పాఠ్యంతో ఈ సైటులో ఈసరికే {{PLURAL:$1|[$2 మరో ఫైలు] ఉండేది|[$2 ఇతర ఫైళ్ళు] ఉండేవి}}. అయితే {{PLURAL:$1|అది తొలగించబడింది|అవి తొలగించబడ్డాయి}}.",
-       "api-error-duplicate-archive-popup-title": "నకిలీ {{PLURAL:$1|దస్త్రాన్ని|దస్త్రాలను}} ఇప్పటికే తొలగించారు.",
-       "api-error-duplicate-popup-title": "నకిలీ {{PLURAL:$1|దస్త్రం|దస్త్రాలు}}.",
        "api-error-empty-file": "మీరు దాఖలుచేసిన ఫైల్ ఖాళీది.",
        "api-error-emptypage": "కొత్త మరియు ఖాళీ పేజీలను సృష్టించడానికి అనుమతి లేదు.",
        "api-error-fetchfileerror": "అంతర్గత లోపం: ఈ ఫైలును తేవడంలో ఏదో తప్పు జరిగింది.",
index f3cb696..4245da2 100644 (file)
        "api-error-copyuploaddisabled": "Ang pagkakarga ng URL ay hindi pinagagana sa tagapaghaing ito.",
        "api-error-duplicate": "May {{PLURAL:$1|[$2 ibang talaksan]g|[$2 ibang ilang mga talaksan]g}} nasa wiki na na may katulad na nilalaman",
        "api-error-duplicate-archive": "Nagkaroon {{PLURAL:$1|dati ng [$2 iba pang talaksan]|dati ng mga [$2 ilang iba pang mga talaksan]}} na umiiral na sa sityo na may katulad na nilalaman, ngunit {{PLURAL:$1|ito ay|ito ay mga}} nabura na.",
-       "api-error-duplicate-archive-popup-title": "Nabura nang kakambal na {{PLURAL:$1|talaksan|mga talaksan}}",
-       "api-error-duplicate-popup-title": "Kagayang {{PLURAL:$1|talaksan|mga talaksan}}",
        "api-error-empty-file": "Walang laman ang ipinasa mong talaksan.",
        "api-error-emptypage": "Lumilikha ng bago, hindi pinapayagan ang mga pahinang walang laman.",
        "api-error-fetchfileerror": "Panloob na kamalian: may naganap na pagkakamali habang kinukuha ang talaksan.",
index 8e6b2a2..f768935 100644 (file)
        "actionthrottled": "Eylem kısılmıştır",
        "actionthrottledtext": "Spam'e karşı alınan önlemler dahilinde belirli bir süre aralığında bu eylemin gerçekleştirilmesine izin verilen miktarı aştınız.\nLütfen birkaç dakika sonra yeniden deneyin.",
        "protectedpagetext": "Bu sayfa değişiklik ya da diğer eylemlerin yapılmasını engellemek için koruma altına alınmıştır.",
-       "viewsourcetext": "Bu sayfanın kaynağını görebilir ve kopyalayabilirsiniz:",
-       "viewyourtext": "Bu sayfada <strong>yaptığınız değişikliklerin</strong> kaynağını görünteleyip kopyalayabilirsiniz:",
+       "viewsourcetext": "Bu sayfanın kaynağını görebilir ve kopyalayabilirsiniz.",
+       "viewyourtext": "Bu sayfada <strong>yaptığınız değişikliklerin</strong> kaynağını görünteleyip kopyalayabilirsiniz.",
        "protectedinterface": "Bu sayfa yazılım için arayüz metni sağlamaktadır ve kötüye kullanımı önlemek için korumaya alınmıştır.\nBütün vikilere dair çeviri eklemek veya bunları değiştirmek için lütfen MediaWiki yerelleştirme projesi [//translatewiki.net/ translatewiki.net]'i kullanın.",
        "editinginterface": "<strong>Uyarı:</strong> Yazılım için arayüz metni sağlayan bir sayfayı değiştiriyorsunuz.\nBu sayfada yapılacak değişiklikler diğer kullanıcıların vikilerindeki kullanıcı arayüzlerinin görünümünü de etkileyecektir.",
        "translateinterface": "Tüm vikilerde çeviri eklemek veya çevirileri değiştirmek için lütfen MediaWiki yerelleştirme projesini [//translatewiki.net/] kullanın.",
        "api-error-copyuploaddisabled": "URL ile yükleme bu sunucuda devre dışı bırakılmıştır.",
        "api-error-duplicate": "Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} var.",
        "api-error-duplicate-archive": "Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} vardı, ama {{PLURAL:$1|silindi|silindiler}}.",
-       "api-error-duplicate-archive-popup-title": "Zaten silinmiş çift {{PLURAL:$1|sayfa|sayfalar}}.",
-       "api-error-duplicate-popup-title": "Çift {{PLURAL:$1|dosya|dosya}}",
        "api-error-empty-file": "Gönderdiğiniz dosya boş.",
        "api-error-emptypage": "Yeni, boş bir sayfa oluşturmaya izin verilmez.",
        "api-error-fetchfileerror": "İç hata: Dosya alınırken bir hata oluştu.",
index b12e304..ff33f5b 100644 (file)
        "api-error-copyuploaddisabled": "URL-адрес буенча йөкләү бу серверда сүндерелгән.",
        "api-error-duplicate": "Мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} да бар.",
        "api-error-duplicate-archive": "Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|1=аны бетерделәр|аларны бетерделәр}}.",
-       "api-error-duplicate-archive-popup-title": "Кайчандыр бетерелгән {{PLURAL:$1|1=файлның|файлларның}} дубликатлары.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|файлның}} дубликаты",
        "api-error-empty-file": "Сезнең тарафтан җибәрелгән файл буш.",
        "api-error-emptypage": "Яңа буш сәхифәләр төзү рөхсәт ителми",
        "api-error-unknown-code": "Билгесез хата: \"$1\"",
index 0342666..fee0f7c 100644 (file)
        "api-error-copyuploaddisabled": "URL ئارقىلىق يوللايدىغان ئىقتىدارنى بۇ مۇلازىمېتىر چەكلىگەن.",
        "api-error-duplicate": "تورتۇرادا ئوخشاش مەزمۇندىكى {{PLURAL:$1|is [$2 باشقا ھۆججەت]|[$2 بەزى باشقا ھۆججەتلەر]}} مەۋجۇت.",
        "api-error-duplicate-archive": "تورتۇرادا ئىلگىرى ئوخشاش مەزمۇن بار {{PLURAL:$1|was [$2 باشقا بىر ھۆججەت]|were [$2 باشقا ھۆججەتلەر]}} مەۋجۇت ئەمما ئۆچۈرۈلگەن.",
-       "api-error-duplicate-archive-popup-title": "تەكرار {{PLURAL:$1|ھۆججەت}} ئۆچۈرۈلدى.",
-       "api-error-duplicate-popup-title": "تەكرار {{PLURAL:$1|ھۆججەت}}.",
        "api-error-empty-file": "يوللىغان ھۆججىتىڭىز بوش.",
        "api-error-emptypage": "يېڭىدىن قۇرۇش، قۇرۇق بەت يول قۇيۇلمايدۇ.",
        "api-error-fetchfileerror": "ئىچكى خاتالىق: ھۆججەتكە ئېرىشىۋاتقاندا خاتالىق كۆرۈلدى.",
index 20f84ea..82a8497 100644 (file)
        "api-error-copyuploaddisabled": "На цьому сервері вимкнене завантаження за URL-адресою.",
        "api-error-duplicate": "Вже {{PLURAL:$1|1=існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.",
        "api-error-duplicate-archive": "Раніше на сайті вже {{PLURAL:$1|1=був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|1=його|їх}} вилучили.",
-       "api-error-duplicate-archive-popup-title": "Дублікати {{PLURAL:$1|1=файла|файлів}}, які вже були вилучені",
-       "api-error-duplicate-popup-title": "Дублікат {{PLURAL:$1|1=файлу|файлів}}",
        "api-error-empty-file": "Файл, який ви надіслали, порожній.",
        "api-error-emptypage": "Створення нової порожньої сторінки неприпустиме.",
        "api-error-fetchfileerror": "Внутрішня помилка: щось пішло не так під час отримання файлу.",
index 482b472..dd9ed60 100644 (file)
        "api-error-copyuploaddisabled": "El cargamento tramite URL el xe dixabiłità so sto server.",
        "api-error-duplicate": "So'l sito {{PLURAL:$1|ghe xe xà [$2 'n altro documento]|ghe xe xà [$2 altri documenti]}} có 'l steso contegnuo.",
        "api-error-duplicate-archive": "{{PLURAL:$1|Ghe xera [$2 'n altro file]|Ghe xera [$2 altri file]}} xà inte'l sito có 'l steso contegnuo, ma {{PLURAL:$1|el xe sta scansełà|i xe stai scansełai}}.",
-       "api-error-duplicate-archive-popup-title": "File duplic{{PLURAL:$1|à che xe xà sta scansełà|ai che i xe xà stai scansełai}}",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|documento duplicà|documenti duplicai}}",
        "api-error-empty-file": "El file sełesionà el gera vodo.",
        "api-error-emptypage": "Ła creasion de nove pàjine vode nó ła xe consentia.",
        "api-error-fetchfileerror": "Eror interno: ghe xe sta un problema durante el recupero del documento.",
index bbe7617..1d1c08c 100644 (file)
        "api-error-copyuploaddisabled": "Chức năng tải lên từ URL đã bị tắt trên máy chủ này.",
        "api-error-duplicate": "Wiki này đã có [$2 {{PLURAL:$1|tập tin|$1 tập tin}} cùng nội dung] có tên khác",
        "api-error-duplicate-archive": "{{PLURAL:$1|Một|Các}} [$2 tập tin khác] cùng nội dung đã tồn tại trên website, nhưng {{PLURAL:$1|nó|chúng}} đã bị xóa.",
-       "api-error-duplicate-archive-popup-title": "Mang lại {{PLURAL:$1|tập tin|các tập tin}} đã bị xóa",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Tập tin|Các tập tin}} cùng nội dung",
        "api-error-empty-file": "Bạn đã gửi tập tin rỗng.",
        "api-error-emptypage": "Không cho phép tạo mới các trang rỗng.",
        "api-error-fetchfileerror": "Lỗi nội bộ: Việc tải tập tin bị thất bại.",
index 2f5afa2..ed375ff 100644 (file)
        "filehist-deleteall": "Paraa ngatanan",
        "filehist-deleteone": "paraa",
        "filehist-revert": "igbalik",
-       "filehist-current": "yana",
+       "filehist-current": "pagkayana",
        "filehist-datetime": "Pitsa/Oras",
        "filehist-thumb": "Thumbnail",
        "filehist-thumbtext": "Bersyon han thumbnail han $1",
        "contributions-title": "Mga amot han gumaramit para ha $1",
        "mycontris": "Mga ámot nakon",
        "contribsub2": "Para {{HENERO:$3|$1}} ($2)",
-       "uctop": "(yana)",
+       "uctop": "(pagkayana)",
        "month": "Tikang ha bulan (ngan uruunhan):",
        "year": "Tikang ha tuig (ngan uruunhan):",
        "sp-contributions-newbies": "Igpakita an mga amot hin mga bag-o nga akawnt la",
        "api-error-badaccess-groups": "Diri ka gintutugotan pagkarga paigbaw ha dinhi nga wiki.",
        "api-error-badtoken": "Sayop ha sulod: Maraot nga token.",
        "api-error-copyuploaddisabled": "Pagkarga paigbaw pinaagi han URL in diri mahihimo ha dinhi nga serbidor.",
-       "api-error-duplicate-archive-popup-title": "An nagdodoble {{PLURAL:$1|nga paypay|nga mga paypay}} in napara na.",
-       "api-error-duplicate-popup-title": "Nadoble {{PLURAL:$1|nga paypay|nga mga paypay}}.",
        "api-error-empty-file": "An paypay nga isinumite nimo in waray sulod.",
        "api-error-emptypage": "Naghihimo hin bag-o, diri gintutugotan an waray sulod nga mga pakli.",
        "api-error-filename-tooshort": "An ngaran han paypay in halipot hin duro.",
index ed6581e..b200503 100644 (file)
        "userlogin-yourname-ph": "Duggalal sa turu jëfandikukat",
        "yourpassword": "Sa baatujàll",
        "userlogin-yourpassword": "Baatujàll",
+       "userlogin-yourpassword-ph": "Duggalal sa baatujàll",
        "createacct-yourpassword-ph": "Duggalal ab baatujàll",
        "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.",
        "login": "xammeeku",
        "logout": "Génnu",
        "userlogout": "Génnu",
        "notloggedin": "Duggoo de",
+       "userlogin-noaccount": "Amagoo am sàq?",
+       "userlogin-joinproject": "Bindu ci {{SITENAME}}",
        "nologin": "Sosagoo am sàq ? '''$1'''.",
        "nologinlink": "Sos ko leegi",
        "createaccount": "Sos am sàq",
        "gotaccount": "Sos nga am sàq? '''$1'''.",
        "gotaccountlink": "Dugg",
+       "userlogin-resetpassword-link": "Danga fàtte sa baatujàll?",
+       "userlogin-helplink2": "Ndimbal ñeel dugg gi",
+       "createacct-emailoptional": "Màkkaanu m-bataaxal (mu-neex-la)",
        "createacct-email-ph": "Duggalal sa màkkaanu m-bataaxal",
        "createaccountmail": "Jaare ko ci m-bataaxal",
        "createacct-captcha": "Caytug kaaraange",
        "createacct-imgcaptcha-ph": "Duggalal mbind  miy toftal mi ngay gis",
        "createacct-submit": "Sos sa sàq",
+       "createacct-benefit-heading": "{{SITENAME}} ñu mel ni yaw a koy toppatoo.",
+       "createacct-benefit-body1": "{{PLURAL:$1|Coppite}}",
+       "createacct-benefit-body2": "$1 {{PLURAL:$1|xët}}",
+       "createacct-benefit-body3": "recent {{PLURAL:$1|aji-cëru bi mujj|aji-cëru yi mujj}}",
        "badretype": "Baatujàll yi nga bind yemuñu.",
        "userexists": "Turu jëfandikukat bi nga bind am na boroom ba noppi. Tànnal weneen.",
        "loginerror": "Njuumte ci dugg gi",
        "login-throttled": "Jéem ngaa dugg ay yoon te jàllul.\n\nNgalla néggandikul ab diir door a jéemaat.",
        "loginlanguagelabel": "Làkk : $1",
        "pt-login": "Dugg",
+       "pt-login-button": "Dugg",
        "pt-createaccount": "Sos am sàq",
        "pt-userlogout": "Génn",
        "changepassword": "Coppiteg baatujàll bi",
        "resetpass-submit-loggedin": "Soppi baatujàll bi",
        "resetpass-wrong-oldpass": "Baatujall bu diiru walla bi teew baaxul.\nXèj-na baatujàll bi soppi nga ko ba noppi, walla xéj-na it dangaa laaj beneen baatujàll bu diiru.",
        "resetpass-temp-password": "Baatujàll bu diiru :",
+       "passwordreset": "Neenal baatujàll bi",
        "bold_sample": "Duufal mbind mi",
        "bold_tip": "Duufal mbind mi",
        "italic_sample": "Wengal mbind mi",
        "revertmerge": "Neenal boole yi",
        "mergelogpagetext": "Lii ci suuf ab lim la ci boole yu mujj yu jaar-jaaru aw xët ak weneen .",
        "history-title": "Jaar-jaaru sumbi « $1 »",
+       "difference-title": "$1 wuute gi ci sumb yi",
        "lineno": "Rëdd $1 :",
        "compareselectedversions": "Méngale sumb yi nga fal",
        "editundo": "neenal",
+       "diff-multi-sameuser": "({{PLURAL:$1|Genn coppite gi ci diggante bi bu|$1 coppite yi ci diggante bi yu}} jëfandikukat bi ci-boppam {{PLURAL:$1|wonewuñu ko|wonewuñu leen}} )",
        "searchresults": "Ngértey ceet gi",
        "searchresults-title": "Ngértey ceet gu \"$1\"",
        "titlematches": "Koju xët yi ñoo yam",
        "rcshowhideliu": "$1 jëfandikukat yi bindu",
        "rcshowhideliu-hide": "Nëbb",
        "rcshowhideanons": "$1 jëfandikukat yu binduwul",
+       "rcshowhideanons-show": "Wone",
        "rcshowhideanons-hide": "Nëbb",
        "rcshowhidepatr": "$1 coppite bees fuglu",
        "rcshowhidemine": "$1 samay cëru",
        "booksources": "Téereb delluwaay",
        "booksources-search-legend": "Seet ab téereb delluwaay",
        "booksources-isbn": "ISBN :",
+       "booksources-search": "Seet",
        "booksources-text": "Lii ab lima ay lëkkalekaay la yu jëme ciy dal yu biti yuy jaayi téere yu yees ak yu magget, man nga faa ami xibaar ñeel téere yi ngay seet:",
        "booksources-invalid-isbn": "ISBN bi nga joxe mel na ni baaxul; xoolal bu baax ndax defoo ag njuumte ci bi nga koy duppi ca gongikuwaayam.",
        "specialloguserlabel": "Jëfandikukat :",
        "exif-imagewidth": "Yaatuwaay",
        "exif-imagelength": "Kawewaay",
        "exif-orientation": "Jubluwaay",
+       "exif-xresolution": "Ñawaay gu tëdd",
+       "exif-yresolution": "Ñawaay gu taxaw",
        "exif-datetime": "Taariix ak waxtu coppiteg dencukaay bi",
        "exif-make": "Defarkatu nataalukaay bi",
        "exif-software": "Jëfekaay bees jëfandikoo",
        "logentry-delete-delete": "$1 {{GENDER:$2|moo far}} xët wi $3",
        "revdelete-restricted": "doxalub digal ngir yorkat yi",
        "revdelete-unrestricted": "digal ngir yorkat yi deñ na",
+       "logentry-move-move": "$1 {{GENDER:$2|moo toppale}} xët wii di $3 jëmale ko ci $4",
        "logentry-newusers-create": "Sàqum jëfandikukat $1 sos nañu ko",
        "rightsnone": "(menn)",
        "revdelete-summary": "soppi tënk gi",
index 044793e..064e619 100644 (file)
        "api-error-copyuploaddisabled": "אַרויפֿלאָדן דורך URL איז אומאַקטיווירט אויף דעם סערווירער.",
        "api-error-duplicate": "שוין דאָ אין דער וויקי {{PLURAL:$1|[$2 ָאַן אַנדער טעקע]|[$2 אַנדערע טעקעס]}} מיטן זעלבן תוכן.",
        "api-error-duplicate-archive": "ס'איז שוין געווען {{PLURAL:$1| [$2 אַן אַנדער טעקע] | [$1 עטלעכע אַנדערע טעקעס]}} אויף דעם פּלאַץ מיט דעם זעלביקן תוכן, אָבער {{PLURAL:$1| עס איז | זיי זענען}}  געווארן אויסגעמעקט.",
-       "api-error-duplicate-archive-popup-title": "פֿאַרטאפלטע {{PLURAL:$1| טעקע וואָס איז| טעקעס וואָס זענען}}  שוין געווארן אויסגעמעקט",
-       "api-error-duplicate-popup-title": "פֿאַרטאפלטע {{PLURAL:$1| טעקע | טעקעס}}",
        "api-error-empty-file": "די טעקע וואָס איר האט אײַנגעגעבן איז ליידיג.",
        "api-error-emptypage": "שאפן נייע ליידיקע בלעטער איז נישט ערלויבט.",
        "api-error-fetchfileerror": "אינערלעכער גרײַז: עפעס איז קאַליע געווארן בײַם ברענגען די טעקע.",
index 36384e4..4e59491 100644 (file)
        "api-error-copyuploaddisabled": "Ìrùsókè pẹ̀lú URL jẹ́ dídálẹ́kun lórí ẹ̀rọ-ìpèsè yìí.",
        "api-error-duplicate": "{{PLURAL:$1|[$2 Fáìlì míràn]|[$2 Àwọn fáìlì míràn]}} kan tilẹ̀ wà lórí ibiìtàkùn pẹ̀lú àkóónú kannáà.",
        "api-error-duplicate-archive": "{{PLURAL:$1|[$2 Fáìlì míràn]|[$2 Àwọn fáìlì míràn]}} kan tilẹ̀ wà lórí ibiìtàkùn pẹ̀lú àkóónú kannáà, sùgbọ́n {{PLURAL:$1|ó|wọ́n}} ti jẹ́ píparẹ́.",
-       "api-error-duplicate-archive-popup-title": "{{PLURAL:$1|Fáìlì àdáwòkọ tó ti|Àwọn fáìlì àdáwòkọ tí wọ́n ti}} jẹ́ píparẹ́.",
-       "api-error-duplicate-popup-title": "{{PLURAL:$1|Fáìlì|Àwọn fáìlì}} àdáwòkọ.",
        "api-error-empty-file": "Fáílì tí ẹ fisílẹ̀ jẹ́ òfo.",
        "api-error-emptypage": "Ẹ kò ní àyè láti dá ojúewé tuntun tó jẹ́ òfo.",
        "api-error-fetchfileerror": "Àsìṣe inú: Kò le mú fáìlì ná jáde nítorí àsìṣe.",
index c48a976..547d498 100644 (file)
        "api-error-copyuploaddisabled": "通过URL上传的功能已被此服务器禁用。",
        "api-error-duplicate": "在网站上已经具有相同内容的{{PLURAL:$1|[$2 另一个文件]|[$2 另一些文件]}}。",
        "api-error-duplicate-archive": "在网站上曾经具有相同内容的{{PLURAL:$1|[$2 另一个文件]|[$2 另一些文件]}},但已被删除。",
-       "api-error-duplicate-archive-popup-title": "已被删的除重复{{PLURAL:$1|文件}}。",
-       "api-error-duplicate-popup-title": "重复的 {{PLURAL:$1|文件}}。",
        "api-error-empty-file": "您提交的文件是空的。",
        "api-error-emptypage": "不能创建没有内容的新页面。",
        "api-error-fetchfileerror": "内部错误:获取文件时发生错误。",
index 738b896..d267a69 100644 (file)
        "api-error-copyuploaddisabled": "此伺服器已停用使用 URL 上傳檔案的功能。",
        "api-error-duplicate": "在網站上已有相同內容的{{PLURAL:$1|[$2 其他檔案]|[$2 其他檔案]}}。",
        "api-error-duplicate-archive": "在網站上曾有相同內容的{{PLURAL:$1|[$2 其他檔案]|[$2 其他檔案]}},但已被刪除。",
-       "api-error-duplicate-archive-popup-title": "重複的{{PLURAL:$1|檔案}}已經被刪除。",
-       "api-error-duplicate-popup-title": "重複的{{PLURAL:$1|檔案}}。",
        "api-error-empty-file": "您送出的檔案是空的。",
        "api-error-emptypage": "不允許建立空白的頁面。",
        "api-error-fetchfileerror": "內部錯誤:取得檔案時發生錯誤。",
index 2c42364..5434735 100644 (file)
@@ -34,6 +34,9 @@
                };
        </script>
        <script>
+               // Emulate startup.js
+               var mwPerformance = { mark: function () {} };
+
                function startUp() {
                        mw.config = new mw.Map();
                }
        <script src="modules/src/mediawiki/mediawiki.js"></script>
        <script src="modules/src/mediawiki/mediawiki.errorLogger.js"></script>
        <script src="modules/src/mediawiki/mediawiki.startUp.js"></script>
+       <script src="modules/lib/oojs/oojs.jquery.js"></script>
+       <script src="modules/lib/oojs-ui/oojs-ui.js"></script>
+       <script src="modules/lib/oojs-ui/oojs-ui-mediawiki.js"></script>
        <style>
+               body {
+                       font-size: 0.8em;
+                       font-family: sans-serif;
+               }
+
                .mw-jsduck-log {
                        position: relative;
                        min-height: 3em;
@@ -74,6 +85,8 @@
                        background: #fff;
                }
        </style>
+       <link rel="stylesheet" href="modules/lib/oojs-ui/oojs-ui-local.css">
+       <link rel="stylesheet" href="modules/lib/oojs-ui/oojs-ui-mediawiki-noimages.css">
 </head>
 <body>
 <script>
                mw.log = log;
        }
 
-       window.onerror = function ( error, filePath, linerNr ) {
-               log( filePath + ':' + linerNr  );
-       };
-
        /**
         * Method called by jsduck to execute the example code.
         */
index ad905c6..caf6dab 100644 (file)
@@ -62,6 +62,10 @@ return call_user_func( function () {
                        'ooui-outline-control-move-down',
                        'ooui-outline-control-move-up',
                        'ooui-outline-control-remove',
+                       'ooui-selectfile-button-select',
+                       'ooui-selectfile-dragdrop-placeholder',
+                       'ooui-selectfile-not-supported',
+                       'ooui-selectfile-placeholder',
                        'ooui-toolbar-more',
                        'ooui-toolgroup-collapse',
                        'ooui-toolgroup-expand',
index 33b0ce0..3077b60 100644 (file)
@@ -12,7 +12,8 @@
                        "Edustus",
                        "Davidpar",
                        "Maceleiro",
-                       "Kippelboy"
+                       "Kippelboy",
+                       "Macofe"
                ]
        },
        "ooui-outline-control-move-down": "Baixa l'element",
@@ -27,6 +28,7 @@
        "ooui-dialog-process-dismiss": "Descarta",
        "ooui-dialog-process-retry": "Torneu-ho a provar",
        "ooui-dialog-process-continue": "Continua",
+       "ooui-selectfile-button-select": "Seleccioneu un fitxer",
        "ooui-selectfile-not-supported": "El tipus de fitxer no és compatible",
        "ooui-selectfile-placeholder": "No s'ha seleccionat cap fitxer",
        "ooui-selectfile-dragdrop-placeholder": "Deixeu-hi anar el fitxer (o feu clic a navega)"
index b3c4845..8538417 100644 (file)
@@ -26,5 +26,5 @@
        "ooui-dialog-process-continue": "Συνέχεια",
        "ooui-selectfile-not-supported": "Επιλογή αρχείου δεν υποστηρίζεται",
        "ooui-selectfile-placeholder": "Κανένα αρχείο δεν είναι επιλεγμένο",
-       "ooui-selectfile-dragdrop-placeholder": "Σύρετε ένα αρχείο εδώ (ή κάντε κλικ για αναζήτηση)"
+       "ooui-selectfile-dragdrop-placeholder": "Σύρετε το αρχείο εδώ"
 }
index 218ece2..1a8e31b 100644 (file)
@@ -18,6 +18,5 @@
        "ooui-dialog-process-continue": "Continue",
        "ooui-selectfile-not-supported": "File(s) not supported",
        "ooui-selectfile-placeholder": "No file selected",
-       "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse your computer)",
-       "ooui-semicolon-separator": ";"
+       "ooui-selectfile-dragdrop-placeholder": "Drop file here (or click to browse your computer)"
 }
index 7cf2eb1..be00832 100644 (file)
@@ -31,6 +31,5 @@
        "ooui-selectfile-button-select": "Select a file",
        "ooui-selectfile-not-supported": "File selection is not supported",
        "ooui-selectfile-placeholder": "No file is selected",
-       "ooui-selectfile-dragdrop-placeholder": "Drop file here",
-       "ooui-semicolon-separator": "; "
+       "ooui-selectfile-dragdrop-placeholder": "Drop file here"
 }
index 11bd4b8..0375c8e 100644 (file)
@@ -29,7 +29,8 @@
        "ooui-dialog-process-dismiss": "رد",
        "ooui-dialog-process-retry": "دوباره امتحان کنید",
        "ooui-dialog-process-continue": "ادامه",
+       "ooui-selectfile-button-select": "یک فایل انتخاب کنید",
        "ooui-selectfile-not-supported": "انتخاب پرونده پشتیبانی نمی‌شود",
        "ooui-selectfile-placeholder": "هیچ پرونده‌ای انتخاب نشده است",
-       "ooui-selectfile-dragdrop-placeholder": "رها کردن فایل در اینجا (و یا کلیک کنید به فهرست)"
+       "ooui-selectfile-dragdrop-placeholder": "فایل را اینجا رها کنید"
 }
index 387d736..68a25b5 100644 (file)
                        "Raoli",
                        "Una giornata uggiosa '94",
                        "Ontsed",
-                       "Alexmar983"
+                       "Alexmar983",
+                       "Nemo bis",
+                       "Jdforrester"
                ]
        },
        "ooui-outline-control-move-down": "Sposta in basso",
        "ooui-outline-control-move-up": "Sposta in alto",
        "ooui-outline-control-remove": "Rimuovi elemento",
        "ooui-toolbar-more": "Altro",
-       "ooui-toolgroup-expand": "Più",
+       "ooui-toolgroup-expand": "Altro",
        "ooui-toolgroup-collapse": "Meno",
        "ooui-dialog-message-accept": "OK",
        "ooui-dialog-message-reject": "Annulla",
@@ -28,6 +30,8 @@
        "ooui-dialog-process-dismiss": "Nascondi",
        "ooui-dialog-process-retry": "Riprova",
        "ooui-dialog-process-continue": "Continua",
+       "ooui-selectfile-button-select": "Seleziona un file",
        "ooui-selectfile-not-supported": "La selezione del file non è supportata",
-       "ooui-selectfile-placeholder": "Nessun file è selezionato"
+       "ooui-selectfile-placeholder": "Nessun file è selezionato",
+       "ooui-selectfile-dragdrop-placeholder": "Posiziona i files qui"
 }
index efacb63..f1a1a47 100644 (file)
@@ -24,6 +24,5 @@
        "ooui-dialog-process-retry": "კიდევ სცადეთ",
        "ooui-dialog-process-continue": "გაგრძელება",
        "ooui-selectfile-not-supported": "ფაილის არჩევა არ არის მხარდაჭერილი",
-       "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული",
-       "ooui-semicolon-separator": ";"
+       "ooui-selectfile-placeholder": "ფაილი არ არის არჩეული"
 }
index bc3cf0b..d4068c8 100644 (file)
@@ -17,6 +17,5 @@
        "ooui-dialog-process-retry": "Энтда сынаб кёр",
        "ooui-dialog-process-continue": "Бардыр",
        "ooui-selectfile-not-supported": "Файл сайлау тутулмайды",
-       "ooui-selectfile-placeholder": "Бир файл да сайланмагъанды",
-       "ooui-semicolon-separator": ";"
+       "ooui-selectfile-placeholder": "Бир файл да сайланмагъанды"
 }
diff --git a/resources/lib/oojs-ui/i18n/krl.json b/resources/lib/oojs-ui/i18n/krl.json
new file mode 100644 (file)
index 0000000..6ff25eb
--- /dev/null
@@ -0,0 +1,10 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mashoi7"
+               ]
+       },
+       "ooui-toolbar-more": "Enämpi",
+       "ooui-toolgroup-expand": "Enämpi",
+       "ooui-toolgroup-collapse": "Vähempi"
+}
diff --git a/resources/lib/oojs-ui/i18n/olo.json b/resources/lib/oojs-ui/i18n/olo.json
new file mode 100644 (file)
index 0000000..855b0ea
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Mashoi7"
+               ]
+       },
+       "ooui-toolbar-more": "Enämbi",
+       "ooui-toolgroup-expand": "Enämbi",
+       "ooui-toolgroup-collapse": "Vähembi",
+       "ooui-dialog-process-retry": "Opi vie",
+       "ooui-dialog-process-continue": "Jatka",
+       "ooui-selectfile-button-select": "Valliče failu"
+}
index 8379cac..8d9071a 100644 (file)
@@ -10,7 +10,8 @@
                        "Jdforrester",
                        "Luckas",
                        "Vitorvicentevalente",
-                       "SandroHc"
+                       "SandroHc",
+                       "Jkb8"
                ]
        },
        "ooui-outline-control-move-down": "Mover item para baixo",
@@ -27,5 +28,5 @@
        "ooui-dialog-process-continue": "Continuar",
        "ooui-selectfile-not-supported": "A seleção de ficheiros não é suportada",
        "ooui-selectfile-placeholder": "Nenhum ficheiro selecionado",
-       "ooui-selectfile-dragdrop-placeholder": "Soltar ficheiro aqui (ou clicar para navegar)"
+       "ooui-selectfile-dragdrop-placeholder": "Soltar ficheiro aqui"
 }
index cd9c0c2..1a096ef 100644 (file)
@@ -35,6 +35,5 @@
        "ooui-selectfile-button-select": "Label for the file selection widget's select file button",
        "ooui-selectfile-not-supported": "Label for the file selection widget if file selection is not supported",
        "ooui-selectfile-placeholder": "Label for the file selection widget when no file is currently selected",
-       "ooui-selectfile-dragdrop-placeholder": "Label for the file selection widget's drop target",
-       "ooui-semicolon-separator": "{{optional}} Semicolon used as a separator"
+       "ooui-selectfile-dragdrop-placeholder": "Label for the file selection widget's drop target"
 }
index 1ccc67b..ddd27c5 100644 (file)
@@ -9,9 +9,14 @@
        "ooui-outline-control-move-down": "Sposta in baso",
        "ooui-outline-control-move-up": "Sposta in sima",
        "ooui-toolbar-more": "Altro",
+       "ooui-toolgroup-expand": "Piassè",
+       "ooui-toolgroup-collapse": "Manco",
        "ooui-dialog-message-accept": "Va ben",
+       "ooui-dialog-message-reject": "Fa gnente",
        "ooui-dialog-process-error": "Xe 'ndà storto calcossa",
        "ooui-dialog-process-dismiss": "Scondi",
        "ooui-dialog-process-retry": "Proa da novo",
-       "ooui-dialog-process-continue": "Và vanti"
+       "ooui-dialog-process-continue": "Và vanti",
+       "ooui-selectfile-button-select": "Siegli un file",
+       "ooui-selectfile-dragdrop-placeholder": "Mola zo el file chì rento"
 }
index ff14801..27cef23 100644 (file)
@@ -22,5 +22,5 @@
        "ooui-dialog-process-continue": "Tiếp tục",
        "ooui-selectfile-not-supported": "Không hỗ trợ việc chọn tập tin",
        "ooui-selectfile-placeholder": "Không có tập tin nào được chọn",
-       "ooui-selectfile-dragdrop-placeholder": "Thả tập tin vào đây (hoặc nhấn chuột để duyệt)"
+       "ooui-selectfile-dragdrop-placeholder": "Thả tập tin vào đây"
 }
index ede6ea9..2db4bdb 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.8
+ * OOjs UI v0.12.9
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-09-08T20:56:08Z
+ * Date: 2015-09-22T20:09:59Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
        right: 18em;
        bottom: 18em;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
        width: 0 !important;
        height: 0 !important;
        overflow: hidden;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
        width: auto !important;
        left: 0;
        top: 0;
        right: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
        height: auto !important;
        top: 0;
        right: 0;
        bottom: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
        bottom: 0 !important;
        left: 0 !important;
        top: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
        width: auto !important;
        right: 0;
        bottom: 0;
        left: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
        left: 0 !important;
        top: 0 !important;
        right: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
        height: auto !important;
        bottom: 0;
        left: 0;
        top: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        display: inline;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link {
+       outline: 0;
        cursor: default;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool {
 .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);
 }
+.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;
+}
 .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: #cccccc;
 }
 .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;
 }
+.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool:focus {
+       outline: 0;
+}
+.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link:focus {
+       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: #cccccc;
 }
        position: absolute;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+       outline: 0;
        cursor: default;
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
        border-color: #dddddd;
        background-color: #f3f3f3;
 }
+.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus {
+       outline: 0;
+}
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
        opacity: 0.2;
 }
        right: 0;
        text-overflow: ellipsis;
 }
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
+       float: right;
+}
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        left: 0.25em;
 }
-.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
        line-height: 2.3em;
        margin: 0;
        overflow: hidden;
        left: 0.5em;
        right: 0.5em;
 }
-.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
+       color: #888888;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
        top: 0;
        width: 1.875em;
        height: 1.875em;
index 83452d0..5909cd1 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.8
+ * OOjs UI v0.12.9
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-09-08T20:55:55Z
+ * Date: 2015-09-22T20:09:51Z
  */
 /**
  * @class
index 87ae9a5..f1f1831 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.8
+ * OOjs UI v0.12.9
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-09-08T20:56:08Z
+ * Date: 2015-09-22T20:09:59Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
 }
 .oo-ui-buttonElement > .oo-ui-buttonElement-button {
        font-weight: bold;
+       text-decoration: none;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        margin-left: 0;
 .oo-ui-buttonElement.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
        width: 0.9375em;
        height: 0.9375em;
-       margin: 0.46875em;
 }
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
        margin-left: 0.46875em;
 .oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
        color: #cccccc;
 }
+.oo-ui-buttonElement-frameless.oo-ui-widget-disabled > .oo-ui-buttonElement-button:focus {
+       box-shadow: none;
+}
 .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.2;
 }
+.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;
+}
 .oo-ui-buttonElement-framed > .oo-ui-buttonElement-button {
        margin: 0.1em 0;
-       padding: 0.2em 0.8em;
+       padding: 0.5em 1em;
+       min-height: 1.2em;
+       min-width: 1em;
        border-radius: 2px;
+       position: relative;
        -webkit-transition: background 100ms ease, color 100ms ease, box-shadow 100ms ease;
           -moz-transition: background 100ms ease, color 100ms ease, box-shadow 100ms ease;
            -ms-transition: background 100ms ease, color 100ms ease, box-shadow 100ms ease;
 }
 .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.2em;
+       display: inline-block;
 }
 .oo-ui-buttonElement-framed.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-left: -0.5em;
-       margin-right: -0.5em;
+       position: absolute;
+       top: 0.2em;
+       left: 0.5625em;
 }
-.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
-       margin-right: 0.3em;
+.oo-ui-buttonElement-framed.oo-ui-iconElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
+       margin-left: 0.3em;
 }
 .oo-ui-buttonElement-framed.oo-ui-indicatorElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
-       /* -0.5 - 0.475 */
-       margin-left: -0.005em;
-       margin-right: -0.005em;
+       display: inline-block;
 }
 .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;
 }
+.oo-ui-buttonElement-framed.oo-ui-indicatorElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-indicatorElement-indicator {
+       position: relative;
+       left: 0.2em;
+}
 .oo-ui-buttonElement-framed.oo-ui-widget-disabled > .oo-ui-buttonElement-button {
        color: #ffffff;
        background: #dddddd;
 .oo-ui-indexLayout-stackLayout > .oo-ui-panelLayout {
        padding: 1.5em;
 }
+.oo-ui-indexLayout > .oo-ui-menuLayout-menu {
+       height: 2.75em;
+}
+.oo-ui-indexLayout > .oo-ui-menuLayout-content {
+       top: 2.75em;
+}
 .oo-ui-fieldLayout {
        display: block;
        margin-bottom: 1em;
        right: 18em;
        bottom: 18em;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-menu {
        width: 0 !important;
        height: 0 !important;
        overflow: hidden;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-hideMenu .oo-ui-menuLayout-content {
        top: 0 !important;
        left: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-menu {
        width: auto !important;
        left: 0;
        top: 0;
        right: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-top .oo-ui-menuLayout-content {
        right: 0 !important;
        bottom: 0 !important;
        left: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-menu {
        height: auto !important;
        top: 0;
        right: 0;
        bottom: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-after .oo-ui-menuLayout-content {
        bottom: 0 !important;
        left: 0 !important;
        top: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-menu {
        width: auto !important;
        right: 0;
        bottom: 0;
        left: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-bottom .oo-ui-menuLayout-content {
        left: 0 !important;
        top: 0 !important;
        right: 0 !important;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-menu {
        height: auto !important;
        bottom: 0;
        left: 0;
        top: 0;
 }
-.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
+.oo-ui-menuLayout.oo-ui-menuLayout-showMenu.oo-ui-menuLayout-before .oo-ui-menuLayout-content {
        top: 0 !important;
        right: 0 !important;
        bottom: 0 !important;
        display: inline;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link {
+       outline: 0;
        cursor: default;
 }
 .oo-ui-barToolGroup > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link {
        position: absolute;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
+       outline: 0;
        cursor: default;
 }
 .oo-ui-popupToolGroup .oo-ui-toolGroup-tools {
        display: inline-block;
        vertical-align: middle;
 }
-.oo-ui-buttonOptionWidget .oo-ui-buttonElement-button {
-       height: 1.875em;
-}
 .oo-ui-buttonOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon {
        margin-top: 0;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
        background: #dddddd;
        border-color: #dddddd;
+       outline: 0;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled .oo-ui-toggleSwitchWidget-grip {
        background: #ffffff;
        border: 1px solid #aaaaaa;
        border-radius: 0.2em;
        background-color: #ffffff;
-       box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2);
+       box-shadow: 0 0.15em 0 0 rgba(204, 204, 204, 0.5);
 }
 .oo-ui-popupWidget-anchored .oo-ui-popupWidget-popup {
        margin-top: 9px;
        margin-top: -1px;
        border: 1px solid #aaaaaa;
        border-radius: 0 0 0.2em 0.2em;
-       padding-bottom: 0.25em;
-       box-shadow: inset 0 -0.2em 0 0 rgba(0, 0, 0, 0.2), 0 0.1em 0 0 rgba(0, 0, 0, 0.2);
+       box-shadow: 0 0.15em 0 0 rgba(204, 204, 204, 0.5);
 }
 .oo-ui-menuSelectWidget input {
        position: absolute;
        border-color: #dddddd;
        background-color: #f3f3f3;
 }
+.oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-dropdownWidget-handle:focus {
+       outline: 0;
+}
 .oo-ui-dropdownWidget.oo-ui-widget-disabled .oo-ui-indicatorElement-indicator {
        opacity: 0.2;
 }
        right: 0;
        text-overflow: ellipsis;
 }
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
+       float: right;
+}
 .oo-ui-selectFileWidget-info > .oo-ui-indicatorElement-indicator,
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
 .oo-ui-selectFileWidget-info > .oo-ui-iconElement-icon {
        left: 0.25em;
 }
-.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
+.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-label {
        line-height: 2.3em;
        margin: 0;
        overflow: hidden;
        left: 1em;
        right: 1em;
 }
-.oo-ui-selectFileWidget-info .oo-ui-selectFileWidget-clearButton {
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-label > .oo-ui-selectFileWidget-fileType {
+       color: #888888;
+}
+.oo-ui-selectFileWidget-info > .oo-ui-selectFileWidget-clearButton {
        top: 0;
        width: 1.875em;
        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;
-}
-.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;
-}
-.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;
-}
 .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;
-}
-.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;
-       /* Adjust for border so text aligns with title */
-       margin: -1px;
+       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,
        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 {
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label,
+.oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement-frameless .oo-ui-labelElement-label {
+       line-height: 1.875em;
+}
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless:hover {
        background-color: rgba(0, 0, 0, 0.05);
 }
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget:active {
+.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-flaggedElement-progressive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:hover {
+.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-flaggedElement-progressive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive:active {
+.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-flaggedElement-progressive .oo-ui-labelElement-label,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-progressive .oo-ui-labelElement-label {
+.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-flaggedElement-constructive:hover,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-constructive:hover {
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-constructive:hover {
        background-color: rgba(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 {
+.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);
 }
-.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 {
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:hover {
        background-color: rgba(212, 83, 83, 0.05);
 }
-.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active,
-.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-flaggedElement-destructive:active {
+.oo-ui-processDialog-actions-safe .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active,
+.oo-ui-processDialog-actions-primary .oo-ui-actionWidget.oo-ui-buttonElement-frameless.oo-ui-flaggedElement-destructive:active {
        background-color: rgba(212, 83, 83, 0.1);
 }
 .oo-ui-processDialog-actions-other .oo-ui-actionWidget.oo-ui-buttonElement {
index a291570..c2f6dc5 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.8
+ * OOjs UI v0.12.9
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-09-08T20:55:55Z
+ * Date: 2015-09-22T20:09:51Z
  */
 /**
  * @class
index 81677ed..42bf821 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.8
+ * OOjs UI v0.12.9
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-09-08T20:55:55Z
+ * Date: 2015-09-22T20:09:51Z
  */
 ( function ( OO ) {
 
@@ -67,30 +67,79 @@ OO.ui.generateElementId = function () {
  * @return {boolean}
  */
 OO.ui.isFocusableElement = function ( $element ) {
-       var node = $element[ 0 ],
-               nodeName = node.nodeName.toLowerCase(),
-               // Check if the element have tabindex set
-               isInElementGroup = /^(input|select|textarea|button|object)$/.test( nodeName ),
-               // Check if the element is a link with href or if it has tabindex
-               isOtherElement = (
-                       ( nodeName === 'a' && node.href ) ||
-                       !isNaN( $element.attr( 'tabindex' ) )
-               ),
-               // Check if the element is visible
-               isVisible = (
-                       // This is quicker than calling $element.is( ':visible' )
-                       $.expr.filters.visible( node ) &&
-                       // Check that all parents are visible
-                       !$element.parents().addBack().filter( function () {
-                               return $.css( this, 'visibility' ) === 'hidden';
-                       } ).length
-               ),
-               isTabOk = isNaN( $element.attr( 'tabindex' ) ) || +$element.attr( 'tabindex' ) >= 0;
+       var nodeName,
+               element = $element[ 0 ];
 
-       return (
-               ( isInElementGroup ? !node.disabled : isOtherElement ) &&
-               isVisible && isTabOk
-       );
+       // Anything disabled is not focusable
+       if ( element.disabled ) {
+               return false;
+       }
+
+       // Check if the element is visible
+       if ( !(
+               // This is quicker than calling $element.is( ':visible' )
+               $.expr.filters.visible( element ) &&
+               // Check that all parents are visible
+               !$element.parents().addBack().filter( function () {
+                       return $.css( this, 'visibility' ) === 'hidden';
+               } ).length
+       ) ) {
+               return false;
+       }
+
+       // Check if the element is ContentEditable, which is the string 'true'
+       if ( element.contentEditable === 'true' ) {
+               return true;
+       }
+
+       // Anything with a non-negative numeric tabIndex is focusable.
+       // Use .prop to avoid browser bugs
+       if ( $element.prop( 'tabIndex' ) >= 0 ) {
+               return true;
+       }
+
+       // Some element types are naturally focusable
+       // (indexOf is much faster than regex in Chrome and about the
+       // same in FF: https://jsperf.com/regex-vs-indexof-array2)
+       nodeName = element.nodeName.toLowerCase();
+       if ( [ 'input', 'select', 'textarea', 'button', 'object' ].indexOf( nodeName ) !== -1 ) {
+               return true;
+       }
+
+       // Links and areas are focusable if they have an href
+       if ( ( nodeName === 'a' || nodeName === 'area' ) && $element.attr( 'href' ) !== undefined ) {
+               return true;
+       }
+
+       return false;
+};
+
+/**
+ * Find a focusable child
+ *
+ * @param {jQuery} $container Container to search in
+ * @param {boolean} [backwards] Search backwards
+ * @return {jQuery} Focusable child, an empty jQuery object if none found
+ */
+OO.ui.findFocusable = function ( $container, backwards ) {
+       var $focusable = $( [] ),
+               // $focusableCandidates is a superset of things that
+               // could get matched by isFocusableElement
+               $focusableCandidates = $container
+                       .find( 'input, select, textarea, button, object, a, area, [contenteditable], [tabindex]' );
+
+       if ( backwards ) {
+               $focusableCandidates = Array.prototype.reverse.call( $focusableCandidates );
+       }
+
+       $focusableCandidates.each( function () {
+               var $this = $( this );
+               if ( OO.ui.isFocusableElement( $this ) ) {
+                       $focusable = $this;
+                       return false;
+               }
+       } );
+       return $focusable;
 };
 
 /**
@@ -286,9 +335,7 @@ OO.ui.infuse = function ( idOrNode ) {
                // Label for the file selection widget when no file is currently selected
                'ooui-selectfile-placeholder': 'No file is selected',
                // Label for the file selection widget's drop target
-               'ooui-selectfile-dragdrop-placeholder': 'Drop file here',
-               // Semicolon separator
-               'ooui-semicolon-separator': '; '
+               'ooui-selectfile-dragdrop-placeholder': 'Drop file here'
        };
 
        /**
@@ -1960,7 +2007,8 @@ OO.ui.Widget.static.supportsSimpleLabel = false;
 /**
  * @event disable
  *
- * A 'disable' event is emitted when a widget is disabled.
+ * A 'disable' event is emitted when the disabled state of the widget changes
+ * (i.e. on disable **and** enable).
  *
  * @param {boolean} disabled Widget is disabled
  */
@@ -2081,6 +2129,10 @@ OO.ui.Window = function OoUiWindow( config ) {
        this.$overlay = $( '<div>' );
        this.$content = $( '<div>' );
 
+       this.$focusTrapBefore = $( '<div>' ).prop( 'tabIndex', 0 );
+       this.$focusTrapAfter = $( '<div>' ).prop( 'tabIndex', 0 );
+       this.$focusTraps = this.$focusTrapBefore.add( this.$focusTrapAfter );
+
        // Initialization
        this.$overlay.addClass( 'oo-ui-window-overlay' );
        this.$content
@@ -2088,7 +2140,7 @@ OO.ui.Window = function OoUiWindow( config ) {
                .attr( 'tabindex', 0 );
        this.$frame
                .addClass( 'oo-ui-window-frame' )
-               .append( this.$content );
+               .append( this.$focusTrapBefore, this.$content, this.$focusTrapAfter );
 
        this.$element
                .addClass( 'oo-ui-window' )
@@ -2521,6 +2573,21 @@ OO.ui.Window.prototype.initialize = function () {
        return this;
 };
 
+/**
+ * Called when someone tries to focus the hidden element at the end of the dialog.
+ * Sends focus back to the start of the dialog.
+ *
+ * @param {jQuery.Event} event Focus event
+ */
+OO.ui.Window.prototype.onFocusTrapFocused = function ( event ) {
+       if ( this.$focusTrapBefore.is( event.target ) ) {
+               OO.ui.findFocusable( this.$content, true ).focus();
+       } else {
+               // this.$content is the part of the focus cycle, and is the first focusable element
+               this.$content.focus();
+       }
+};
+
 /**
  * Open the window.
  *
@@ -2581,6 +2648,9 @@ OO.ui.Window.prototype.setup = function ( data ) {
 
        this.toggle( true );
 
+       this.focusTrapHandler = OO.ui.bind( this.onFocusTrapFocused, this );
+       this.$focusTraps.on( 'focus', this.focusTrapHandler );
+
        this.getSetupProcess( data ).execute().done( function () {
                // Force redraw by asking the browser to measure the elements' widths
                win.$element.addClass( 'oo-ui-window-active oo-ui-window-setup' ).width();
@@ -2663,6 +2733,7 @@ OO.ui.Window.prototype.teardown = function ( data ) {
                        // Force redraw by asking the browser to measure the elements' widths
                        win.$element.removeClass( 'oo-ui-window-active oo-ui-window-setup' ).width();
                        win.$content.removeClass( 'oo-ui-window-content-setup' ).width();
+                       win.$focusTraps.off( 'focus', win.focusTrapHandler );
                        win.toggle( false );
                } );
 };
@@ -6754,6 +6825,161 @@ OO.ui.mixin.ClippableElement.prototype.clip = function () {
        return this;
 };
 
+/**
+ * Element that will stick under a specified container, even when it is inserted elsewhere in the
+ * document (for example, in a OO.ui.Window's $overlay).
+ *
+ * The elements's position is automatically calculated and maintained when window is resized or the
+ * page is scrolled. If you reposition the container manually, you have to call #position to make
+ * sure the element is still placed correctly.
+ *
+ * As positioning is only possible when both the element and the container are attached to the DOM
+ * and visible, it's only done after you call #togglePositioning. You might want to do this inside
+ * the #toggle method to display a floating popup, for example.
+ *
+ * @abstract
+ * @class
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {jQuery} [$floatable] Node to position, assigned to #$floatable, omit to use #$element
+ * @cfg {jQuery} [$floatableContainer] Node to position below
+ */
+OO.ui.mixin.FloatableElement = function OoUiMixinFloatableElement( config ) {
+       // Configuration initialization
+       config = config || {};
+
+       // Properties
+       this.$floatable = null;
+       this.$floatableContainer = null;
+       this.$floatableWindow = null;
+       this.$floatableClosestScrollable = null;
+       this.onFloatableScrollHandler = this.position.bind( this );
+       this.onFloatableWindowResizeHandler = this.position.bind( this );
+
+       // Initialization
+       this.setFloatableContainer( config.$floatableContainer );
+       this.setFloatableElement( config.$floatable || this.$element );
+};
+
+/* Methods */
+
+/**
+ * Set floatable element.
+ *
+ * If an element is already set, it will be cleaned up before setting up the new element.
+ *
+ * @param {jQuery} $floatable Element to make floatable
+ */
+OO.ui.mixin.FloatableElement.prototype.setFloatableElement = function ( $floatable ) {
+       if ( this.$floatable ) {
+               this.$floatable.removeClass( 'oo-ui-floatableElement-floatable' );
+               this.$floatable.css( { left: '', top: '' } );
+       }
+
+       this.$floatable = $floatable.addClass( 'oo-ui-floatableElement-floatable' );
+       this.position();
+};
+
+/**
+ * Set floatable container.
+ *
+ * The element will be always positioned under the specified container.
+ *
+ * @param {jQuery|null} $floatableContainer Container to keep visible, or null to unset
+ */
+OO.ui.mixin.FloatableElement.prototype.setFloatableContainer = function ( $floatableContainer ) {
+       this.$floatableContainer = $floatableContainer;
+       if ( this.$floatable ) {
+               this.position();
+       }
+};
+
+/**
+ * Toggle positioning.
+ *
+ * Do not turn positioning on until after the element is attached to the DOM and visible.
+ *
+ * @param {boolean} [positioning] Enable positioning, omit to toggle
+ * @chainable
+ */
+OO.ui.mixin.FloatableElement.prototype.togglePositioning = function ( positioning ) {
+       var closestScrollableOfContainer, closestScrollableOfFloatable;
+
+       positioning = positioning === undefined ? !this.positioning : !!positioning;
+
+       if ( this.positioning !== positioning ) {
+               this.positioning = positioning;
+
+               closestScrollableOfContainer = OO.ui.Element.static.getClosestScrollableContainer( this.$floatableContainer[ 0 ] );
+               closestScrollableOfFloatable = OO.ui.Element.static.getClosestScrollableContainer( this.$floatable[ 0 ] );
+               if ( closestScrollableOfContainer !== closestScrollableOfFloatable ) {
+                       // If the scrollable is the root, we have to listen to scroll events
+                       // on the window because of browser inconsistencies (or do we? someone should verify this)
+                       if ( $( closestScrollableOfContainer ).is( 'html, body' ) ) {
+                               closestScrollableOfContainer = OO.ui.Element.static.getWindow( closestScrollableOfContainer );
+                       }
+               }
+
+               if ( positioning ) {
+                       this.$floatableWindow = $( this.getElementWindow() );
+                       this.$floatableWindow.on( 'resize', this.onFloatableWindowResizeHandler );
+
+                       if ( closestScrollableOfContainer !== closestScrollableOfFloatable ) {
+                               this.$floatableClosestScrollable = $( closestScrollableOfContainer );
+                               this.$floatableClosestScrollable.on( 'scroll', this.onFloatableScrollHandler );
+                       }
+
+                       // Initial position after visible
+                       this.position();
+               } else {
+                       this.$floatableWindow.off( 'resize', this.onFloatableWindowResizeHandler );
+                       this.$floatableWindow = null;
+
+                       if ( this.$floatableClosestScrollable ) {
+                               this.$floatableClosestScrollable.off( 'scroll', this.onFloatableScrollHandler );
+                               this.$floatableClosestScrollable = null;
+                       }
+
+                       this.$floatable.css( { left: '', top: '' } );
+               }
+       }
+
+       return this;
+};
+
+/**
+ * Position the floatable below its container.
+ *
+ * This should only be done when both of them are attached to the DOM and visible.
+ *
+ * @chainable
+ */
+OO.ui.mixin.FloatableElement.prototype.position = function () {
+       var pos;
+
+       if ( !this.positioning ) {
+               return this;
+       }
+
+       pos = OO.ui.Element.static.getRelativePosition( this.$floatableContainer, this.$floatable.offsetParent() );
+
+       // Position under container
+       pos.top += this.$floatableContainer.height();
+       this.$floatable.css( pos );
+
+       // We updated the position, so re-evaluate the clipping state.
+       // (ClippableElement does not listen to 'scroll' events on $floatableContainer's parent, and so
+       // will not notice the need to update itself.)
+       // TODO: This is terrible, we shouldn't need to know about ClippableElement at all here. Why does
+       // it not listen to the right events in the right places?
+       if ( this.clip ) {
+               this.clip();
+       }
+
+       return this;
+};
+
 /**
  * AccessKeyedElement is mixed into other classes to provide an `accesskey` attribute.
  * Accesskeys allow an user to go to a specific element by using
@@ -8182,7 +8408,6 @@ OO.ui.MessageDialog.prototype.onResize = function () {
 /**
  * Toggle action layout between vertical and horizontal.
  *
- *
  * @private
  * @param {boolean} [value] Layout actions vertically, omit to toggle
  * @chainable
@@ -8998,7 +9223,6 @@ OO.ui.FieldLayout.prototype.setAlignment = function ( value ) {
  *
  *     $( 'body' ).append( actionFieldLayout.$element );
  *
- *
  * @class
  * @extends OO.ui.FieldLayout
  *
@@ -9589,7 +9813,7 @@ OO.ui.BookletLayout.prototype.onStackLayoutSet = function ( page ) {
  * @param {number} [itemIndex] A specific item to focus on
  */
 OO.ui.BookletLayout.prototype.focus = function ( itemIndex ) {
-       var $input, page,
+       var page,
                items = this.stackLayout.getItems();
 
        if ( itemIndex !== undefined && items[ itemIndex ] ) {
@@ -9607,10 +9831,7 @@ OO.ui.BookletLayout.prototype.focus = function ( itemIndex ) {
        }
        // Only change the focus if is not already in the current page
        if ( !page.$element.find( ':focus' ).length ) {
-               $input = page.$element.find( ':input:first' );
-               if ( $input.length ) {
-                       $input[ 0 ].focus();
-               }
+               OO.ui.findFocusable( page.$element ).focus();
        }
 };
 
@@ -9619,28 +9840,7 @@ OO.ui.BookletLayout.prototype.focus = function ( itemIndex ) {
  * on it.
  */
 OO.ui.BookletLayout.prototype.focusFirstFocusable = function () {
-       var i, len,
-               found = false,
-               items = this.stackLayout.getItems(),
-               checkAndFocus = function () {
-                       if ( OO.ui.isFocusableElement( $( this ) ) ) {
-                               $( this ).focus();
-                               found = true;
-                               return false;
-                       }
-               };
-
-       for ( i = 0, len = items.length; i < len; i++ ) {
-               if ( found ) {
-                       break;
-               }
-               // Find all potentially focusable elements in the item
-               // and check if they are focusable
-               items[ i ].$element
-                       .find( 'input, select, textarea, button, object' )
-                       /* jshint loopfunc:true */
-                       .each( checkAndFocus );
-       }
+       OO.ui.findFocusable( this.stackLayout.$element ).focus();
 };
 
 /**
@@ -9908,7 +10108,8 @@ OO.ui.BookletLayout.prototype.clearPages = function () {
 OO.ui.BookletLayout.prototype.setPage = function ( name ) {
        var selectedItem,
                $focused,
-               page = this.pages[ name ];
+               page = this.pages[ name ],
+               previousPage = this.currentPageName && this.pages[ this.currentPageName ];
 
        if ( name !== this.currentPageName ) {
                if ( this.outlined ) {
@@ -9918,21 +10119,34 @@ OO.ui.BookletLayout.prototype.setPage = function ( name ) {
                        }
                }
                if ( page ) {
-                       if ( this.currentPageName && this.pages[ this.currentPageName ] ) {
-                               this.pages[ this.currentPageName ].setActive( false );
-                               // Blur anything focused if the next page doesn't have anything focusable - this
-                               // is not needed if the next page has something focusable because once it is focused
-                               // this blur happens automatically
-                               if ( this.autoFocus && !page.$element.find( ':input' ).length ) {
-                                       $focused = this.pages[ this.currentPageName ].$element.find( ':focus' );
+                       if ( previousPage ) {
+                               previousPage.setActive( false );
+                               // Blur anything focused if the next page doesn't have anything focusable.
+                               // This is not needed if the next page has something focusable (because once it is focused
+                               // this blur happens automatically). If the layout is non-continuous, this check is
+                               // meaningless because the next page is not visible yet and thus can't hold focus.
+                               if (
+                                       this.autoFocus &&
+                                       this.stackLayout.continuous &&
+                                       OO.ui.findFocusable( page.$element ).length !== 0
+                               ) {
+                                       $focused = previousPage.$element.find( ':focus' );
                                        if ( $focused.length ) {
                                                $focused[ 0 ].blur();
                                        }
                                }
                        }
                        this.currentPageName = name;
-                       this.stackLayout.setItem( page );
                        page.setActive( true );
+                       this.stackLayout.setItem( page );
+                       if ( !this.stackLayout.continuous && previousPage ) {
+                               // This should not be necessary, since any inputs on the previous page should have been
+                               // blurred when it was hidden, but browsers are not very consistent about this.
+                               $focused = previousPage.$element.find( ':focus' );
+                               if ( $focused.length ) {
+                                       $focused[ 0 ].blur();
+                               }
+                       }
                        this.emit( 'set', page );
                }
        }
@@ -9969,20 +10183,13 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
  *     }
  *     OO.inheritClass( CardOneLayout, OO.ui.CardLayout );
  *     CardOneLayout.prototype.setupTabItem = function () {
- *         this.tabItem.setLabel( 'Card One' );
- *     };
- *
- *     function CardTwoLayout( name, config ) {
- *         CardTwoLayout.parent.call( this, name, config );
- *         this.$element.append( '<p>Second card</p>' );
- *     }
- *     OO.inheritClass( CardTwoLayout, OO.ui.CardLayout );
- *     CardTwoLayout.prototype.setupTabItem = function () {
- *         this.tabItem.setLabel( 'Card Two' );
+ *         this.tabItem.setLabel( 'Card one' );
  *     };
  *
  *     var card1 = new CardOneLayout( 'one' ),
- *         card2 = new CardTwoLayout( 'two' );
+ *         card2 = new CardLayout( 'two', { label: 'Card two' } );
+ *
+ *     card2.$element.append( '<p>Second card</p>' );
  *
  *     var index = new OO.ui.IndexLayout();
  *
@@ -9995,6 +10202,7 @@ OO.ui.BookletLayout.prototype.selectFirstSelectablePage = function () {
  * @constructor
  * @param {Object} [config] Configuration options
  * @cfg {boolean} [continuous=false] Show all cards, one after another
+ * @cfg {boolean} [expanded=true] Expand the content panel to fill the entire parent element.
  * @cfg {boolean} [autoFocus=true] Focus on the first focusable element when a new card is displayed.
  */
 OO.ui.IndexLayout = function OoUiIndexLayout( config ) {
@@ -10008,7 +10216,10 @@ OO.ui.IndexLayout = function OoUiIndexLayout( config ) {
        this.currentCardName = null;
        this.cards = {};
        this.ignoreFocus = false;
-       this.stackLayout = new OO.ui.StackLayout( { continuous: !!config.continuous } );
+       this.stackLayout = new OO.ui.StackLayout( {
+               continuous: !!config.continuous,
+               expanded: config.expanded
+       } );
        this.$content.append( this.stackLayout.$element );
        this.autoFocus = config.autoFocus === undefined || !!config.autoFocus;
 
@@ -10109,7 +10320,7 @@ OO.ui.IndexLayout.prototype.onStackLayoutSet = function ( card ) {
  * @param {number} [itemIndex] A specific item to focus on
  */
 OO.ui.IndexLayout.prototype.focus = function ( itemIndex ) {
-       var $input, card,
+       var card,
                items = this.stackLayout.getItems();
 
        if ( itemIndex !== undefined && items[ itemIndex ] ) {
@@ -10127,10 +10338,7 @@ OO.ui.IndexLayout.prototype.focus = function ( itemIndex ) {
        }
        // Only change the focus if is not already in the current card
        if ( !card.$element.find( ':focus' ).length ) {
-               $input = card.$element.find( ':input:first' );
-               if ( $input.length ) {
-                       $input[ 0 ].focus();
-               }
+               OO.ui.findFocusable( card.$element ).focus();
        }
 };
 
@@ -10139,27 +10347,7 @@ OO.ui.IndexLayout.prototype.focus = function ( itemIndex ) {
  * on it.
  */
 OO.ui.IndexLayout.prototype.focusFirstFocusable = function () {
-       var i, len,
-               found = false,
-               items = this.stackLayout.getItems(),
-               checkAndFocus = function () {
-                       if ( OO.ui.isFocusableElement( $( this ) ) ) {
-                               $( this ).focus();
-                               found = true;
-                               return false;
-                       }
-               };
-
-       for ( i = 0, len = items.length; i < len; i++ ) {
-               if ( found ) {
-                       break;
-               }
-               // Find all potentially focusable elements in the item
-               // and check if they are focusable
-               items[ i ].$element
-                       .find( 'input, select, textarea, button, object' )
-                       .each( checkAndFocus );
-       }
+       OO.ui.findFocusable( this.stackLayout.$element ).focus();
 };
 
 /**
@@ -10363,7 +10551,8 @@ OO.ui.IndexLayout.prototype.clearCards = function () {
 OO.ui.IndexLayout.prototype.setCard = function ( name ) {
        var selectedItem,
                $focused,
-               card = this.cards[ name ];
+               card = this.cards[ name ],
+               previousCard = this.currentCardName && this.cards[ this.currentCardName ];
 
        if ( name !== this.currentCardName ) {
                selectedItem = this.tabSelectWidget.getSelectedItem();
@@ -10371,21 +10560,34 @@ OO.ui.IndexLayout.prototype.setCard = function ( name ) {
                        this.tabSelectWidget.selectItemByData( name );
                }
                if ( card ) {
-                       if ( this.currentCardName && this.cards[ this.currentCardName ] ) {
-                               this.cards[ this.currentCardName ].setActive( false );
-                               // Blur anything focused if the next card doesn't have anything focusable - this
-                               // is not needed if the next card has something focusable because once it is focused
-                               // this blur happens automatically
-                               if ( this.autoFocus && !card.$element.find( ':input' ).length ) {
-                                       $focused = this.cards[ this.currentCardName ].$element.find( ':focus' );
+                       if ( previousCard ) {
+                               previousCard.setActive( false );
+                               // Blur anything focused if the next card doesn't have anything focusable.
+                               // This is not needed if the next card has something focusable (because once it is focused
+                               // this blur happens automatically). If the layout is non-continuous, this check is
+                               // meaningless because the next card is not visible yet and thus can't hold focus.
+                               if (
+                                       this.autoFocus &&
+                                       this.stackLayout.continuous &&
+                                       OO.ui.findFocusable( card.$element ).length !== 0
+                               ) {
+                                       $focused = previousCard.$element.find( ':focus' );
                                        if ( $focused.length ) {
                                                $focused[ 0 ].blur();
                                        }
                                }
                        }
                        this.currentCardName = name;
-                       this.stackLayout.setItem( card );
                        card.setActive( true );
+                       this.stackLayout.setItem( card );
+                       if ( !this.stackLayout.continuous && previousCard ) {
+                               // This should not be necessary, since any inputs on the previous card should have been
+                               // blurred when it was hidden, but browsers are not very consistent about this.
+                               $focused = previousCard.$element.find( ':focus' );
+                               if ( $focused.length ) {
+                                       $focused[ 0 ].blur();
+                               }
+                       }
                        this.emit( 'set', card );
                }
        }
@@ -10475,6 +10677,7 @@ OO.inheritClass( OO.ui.PanelLayout, OO.ui.Layout );
  * @constructor
  * @param {string} name Unique symbolic name of card
  * @param {Object} [config] Configuration options
+ * @cfg {jQuery|string|Function|OO.ui.HtmlSnippet} [label] Label for card's tab
  */
 OO.ui.CardLayout = function OoUiCardLayout( name, config ) {
        // Allow passing positional parameters inside the config object
@@ -10491,6 +10694,7 @@ OO.ui.CardLayout = function OoUiCardLayout( name, config ) {
 
        // Properties
        this.name = name;
+       this.label = config.label;
        this.tabItem = null;
        this.active = false;
 
@@ -10576,6 +10780,9 @@ OO.ui.CardLayout.prototype.setTabItem = function ( tabItem ) {
  * @chainable
  */
 OO.ui.CardLayout.prototype.setupTabItem = function () {
+       if ( this.label ) {
+               this.tabItem.setLabel( this.label );
+       }
        return this;
 };
 
@@ -11310,8 +11517,8 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                        }
                        if ( this.isClippedHorizontally() ) {
                                // Anchoring to the right also caused the popup to clip, so just make it fill the container
-                               containerWidth = this.$clippableContainer.width();
-                               containerLeft = this.$clippableContainer.offset().left;
+                               containerWidth = this.$clippableScrollableContainer.width();
+                               containerLeft = this.$clippableScrollableContainer.offset().left;
 
                                this.toggleClipping( false );
                                this.$element.removeClass( 'oo-ui-popupToolGroup-right' );
@@ -12119,7 +12326,6 @@ OO.ui.OutlineControlsWidget.prototype.setAbilities = function ( abilities ) {
 };
 
 /**
- *
  * @private
  * Handle outline change events.
  */
@@ -13031,6 +13237,18 @@ OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.IconElement );
 
 /* Methods */
 
+/**
+ * Construct a OO.ui.CapsuleItemWidget (or a subclass thereof) from given label and data.
+ *
+ * @protected
+ * @param {Mixed} data Custom data of any type.
+ * @param {string} label The label text.
+ * @return {OO.ui.CapsuleItemWidget}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.createItemWidget = function ( data, label ) {
+       return new OO.ui.CapsuleItemWidget( { data: data, label: label } );
+};
+
 /**
  * Get the data of the items in the capsule
  * @return {Mixed[]}
@@ -13071,7 +13289,7 @@ OO.ui.CapsuleMultiSelectWidget.prototype.setItemsFromData = function ( datas ) {
                        }
                }
                if ( !item ) {
-                       item = new OO.ui.CapsuleItemWidget( { data: data, label: label } );
+                       item = widget.createItemWidget( data, label );
                }
                widget.addItems( [ item ], i );
        } );
@@ -13100,9 +13318,9 @@ OO.ui.CapsuleMultiSelectWidget.prototype.addItemsFromData = function ( datas ) {
                if ( !widget.getItemFromData( data ) ) {
                        item = menu.getItemFromData( data );
                        if ( item ) {
-                               items.push( new OO.ui.CapsuleItemWidget( { data: data, label: item.label } ) );
+                               items.push( widget.createItemWidget( data, item.label ) );
                        } else if ( widget.allowArbitrary ) {
-                               items.push( new OO.ui.CapsuleItemWidget( { data: data, label: String( data ) } ) );
+                               items.push( widget.createItemWidget( data, String( data ) ) );
                        }
                }
        } );
@@ -13549,6 +13767,10 @@ OO.ui.CapsuleItemWidget.prototype.onCloseKeyDown = function ( e ) {
  *
  *     $( 'body' ).append( dropDown.$element );
  *
+ *     dropDown.getMenu().selectItemByData( 'b' );
+ *
+ *     dropDown.getMenu().getSelectedItem().getData(); // returns 'b'
+ *
  * For more information, please see the [OOjs UI documentation on MediaWiki] [1].
  *
  * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options
@@ -13870,6 +14092,7 @@ OO.ui.SelectFileWidget.prototype.setValue = function ( file ) {
  * @protected
  */
 OO.ui.SelectFileWidget.prototype.updateUI = function () {
+       var $label;
        if ( !this.isSupported ) {
                this.$element.addClass( 'oo-ui-selectFileWidget-notsupported' );
                this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
@@ -13878,9 +14101,12 @@ OO.ui.SelectFileWidget.prototype.updateUI = function () {
                this.$element.addClass( 'oo-ui-selectFileWidget-supported' );
                if ( this.currentFile ) {
                        this.$element.removeClass( 'oo-ui-selectFileWidget-empty' );
-                       this.setLabel( this.currentFile.name +
-                               ( this.currentFile.type !== '' ? OO.ui.msg( 'ooui-semicolon-separator' ) + this.currentFile.type : '' )
-                       );
+                       $label = $( [] );
+                       if ( this.currentFile.type !== '' ) {
+                               $label = $label.add( $( '<span>' ).addClass( 'oo-ui-selectFileWidget-fileType' ).text( this.currentFile.type ) );
+                       }
+                       $label = $label.add( $( '<span>' ).text( this.currentFile.name ) );
+                       this.setLabel( $label );
                } else {
                        this.$element.addClass( 'oo-ui-selectFileWidget-empty' );
                        this.setLabel( this.placeholder );
@@ -16026,7 +16252,6 @@ OO.ui.ComboBoxWidget.prototype.onInputChange = function ( value ) {
 /**
  * Handle mouse click events.
  *
- *
  * @private
  * @param {jQuery.Event} e Mouse click event
  */
@@ -16041,7 +16266,6 @@ OO.ui.ComboBoxWidget.prototype.onClick = function ( e ) {
 /**
  * Handle key press events.
  *
- *
  * @private
  * @param {jQuery.Event} e Key press event
  */
@@ -16134,7 +16358,6 @@ OO.ui.ComboBoxWidget.prototype.setDisabled = function ( disabled ) {
  *     ] );
  *     $( 'body' ).append( fieldset.$element );
  *
- *
  * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.mixin.LabelElement
@@ -16644,7 +16867,6 @@ OO.ui.MenuOptionWidget.static.scrollIntoViewOnSelect = true;
  *     } );
  *     $( 'body' ).append( myDropdown.$element );
  *
- *
  * @class
  * @extends OO.ui.DecoratedOptionWidget
  *
@@ -16854,6 +17076,7 @@ OO.ui.TabOptionWidget.static.highlightable = false;
  * @class
  * @extends OO.ui.Widget
  * @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.ClippableElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -18748,6 +18971,7 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
  *
  * @class
  * @extends OO.ui.MenuSelectWidget
+ * @mixins OO.ui.mixin.FloatableElement
  *
  * @constructor
  * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for.
@@ -18768,10 +18992,12 @@ OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWid
        // Parent constructor
        OO.ui.FloatingMenuSelectWidget.parent.call( this, config );
 
-       // Properties
+       // Properties (must be set before mixin constructors)
        this.inputWidget = inputWidget; // For backwards compatibility
        this.$container = config.$container || this.inputWidget.$element;
-       this.onWindowResizeHandler = this.onWindowResize.bind( this );
+
+       // Mixins constructors
+       OO.ui.mixin.FloatableElement.call( this, $.extend( {}, config, { $floatableContainer: this.$container } ) );
 
        // Initialization
        this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' );
@@ -18782,75 +19008,37 @@ OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWid
 /* Setup */
 
 OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget );
+OO.mixinClass( OO.ui.FloatingMenuSelectWidget, OO.ui.mixin.FloatableElement );
 
 // For backwards compatibility
 OO.ui.TextInputMenuSelectWidget = OO.ui.FloatingMenuSelectWidget;
 
 /* Methods */
 
-/**
- * Handle window resize event.
- *
- * @private
- * @param {jQuery.Event} e Window resize event
- */
-OO.ui.FloatingMenuSelectWidget.prototype.onWindowResize = function () {
-       this.position();
-};
-
 /**
  * @inheritdoc
  */
 OO.ui.FloatingMenuSelectWidget.prototype.toggle = function ( visible ) {
        var change;
        visible = visible === undefined ? !this.isVisible() : !!visible;
-
        change = visible !== this.isVisible();
 
        if ( change && visible ) {
                // Make sure the width is set before the parent method runs.
-               // After this we have to call this.position(); again to actually
-               // position ourselves correctly.
-               this.position();
+               this.setIdealSize( this.$container.width() );
        }
 
        // Parent method
+       // This will call this.clip(), which is nonsensical since we're not positioned yet...
        OO.ui.FloatingMenuSelectWidget.parent.prototype.toggle.call( this, visible );
 
        if ( change ) {
-               if ( this.isVisible() ) {
-                       this.position();
-                       $( this.getElementWindow() ).on( 'resize', this.onWindowResizeHandler );
-               } else {
-                       $( this.getElementWindow() ).off( 'resize', this.onWindowResizeHandler );
-               }
+               this.togglePositioning( this.isVisible() );
        }
 
        return this;
 };
 
-/**
- * Position the menu.
- *
- * @private
- * @chainable
- */
-OO.ui.FloatingMenuSelectWidget.prototype.position = function () {
-       var $container = this.$container,
-               pos = OO.ui.Element.static.getRelativePosition( $container, this.$element.offsetParent() );
-
-       // Position under input
-       pos.top += $container.height();
-       this.$element.css( pos );
-
-       // Set width
-       this.setIdealSize( $container.width() );
-       // We updated the position, so re-evaluate the clipping state
-       this.clip();
-
-       return this;
-};
-
 /**
  * OutlineSelectWidget is a structured list that contains {@link OO.ui.OutlineOptionWidget outline options}
  * A set of controls can be provided with an {@link OO.ui.OutlineControlsWidget outline controls} widget.
@@ -19235,7 +19423,6 @@ OO.ui.NumberInputWidget.prototype.onWheel = function ( event ) {
 /**
  * Handle key down events.
  *
- *
  * @private
  * @param {jQuery.Event} e Key down event
  */
index 2043424..d680396 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/picture.png and b/resources/lib/oojs-ui/themes/apex/images/icons/picture.png differ
index 24d7315..246e130 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="picture">
-        <path id="frame" d="M18 4H6c-2-.007-3 .993-3 2.993L3.014 16C3 18 4 18.988 6 19h12c2-.012 2.994-1 3-3.006v-9c-.006-2-1-3-3-2.994zm1 13H5V6h14v11z"/>
-        <path id="mountains" d="M6 13.5L9.5 10l2.328 2.312-1.312 1.094.875 1.032L15.5 11l2.5 2v3H6z"/>
-        <path id="sky" d="M6 12l3.516-4.156 3.046 3.172L15.5 9l2.5 2V7H6z"/>
+        <path id="frame" d="M4 5v13h16v-13zm15 12h-14v-11h14z"/>
+        <path id="mountains" d="M9.5 10l2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12v-2.5z"/>
+        <path id="sky" d="M9.516 7.844l3.046 3.172 2.938-2.016 2.5 2v-4h-12v5z"/>
     </g>
 </svg>
index fb6b985..2eedd1e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/apex/images/icons/table.png and b/resources/lib/oojs-ui/themes/apex/images/icons/table.png differ
index 3c901f7..b5733fb 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="table-insert">
-        <path id="table" d="M4 5v13h16V5zm2 2h5v4H6zm7 0h5v4h-5zm-7 5h5v4H6zm7 0h5v4h-5z"/>
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
     </g>
 </svg>
index d6dc62c..f63756b 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture-invert.png differ
index be2c66d..a969967 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
     <g id="picture">
-        <path id="frame" d="M18 4H6c-2-.007-3 .993-3 2.993L3.014 16C3 18 4 18.988 6 19h12c2-.012 2.994-1 3-3.006v-9c-.006-2-1-3-3-2.994zm1 13H5V6h14v11z"/>
-        <path id="mountains" d="M6 13.5L9.5 10l2.328 2.312-1.312 1.094.875 1.032L15.5 11l2.5 2v3H6z"/>
-        <path id="sky" d="M6 12l3.516-4.156 3.046 3.172L15.5 9l2.5 2V7H6z"/>
+        <path id="frame" d="M4 5v13h16v-13zm15 12h-14v-11h14z"/>
+        <path id="mountains" d="M9.5 10l2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12v-2.5z"/>
+        <path id="sky" d="M9.516 7.844l3.046 3.172 2.938-2.016 2.5 2v-4h-12v5z"/>
     </g>
 </svg>
index 2043424..d680396 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/picture.png differ
index 24d7315..246e130 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="picture">
-        <path id="frame" d="M18 4H6c-2-.007-3 .993-3 2.993L3.014 16C3 18 4 18.988 6 19h12c2-.012 2.994-1 3-3.006v-9c-.006-2-1-3-3-2.994zm1 13H5V6h14v11z"/>
-        <path id="mountains" d="M6 13.5L9.5 10l2.328 2.312-1.312 1.094.875 1.032L15.5 11l2.5 2v3H6z"/>
-        <path id="sky" d="M6 12l3.516-4.156 3.046 3.172L15.5 9l2.5 2V7H6z"/>
+        <path id="frame" d="M4 5v13h16v-13zm15 12h-14v-11h14z"/>
+        <path id="mountains" d="M9.5 10l2.328 2.312-1.312 1.094.875 1.032 4.109-3.438 2.5 2v3h-12v-2.5z"/>
+        <path id="sky" d="M9.516 7.844l3.046 3.172 2.938-2.016 2.5 2v-4h-12v5z"/>
     </g>
 </svg>
index 9cc620a..ee9885f 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table-invert.png differ
index 246be85..808d8d8 100644 (file)
@@ -1,6 +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: #FFFFFF }</style>
     <g id="table-insert">
-        <path id="table" d="M4 5v13h16V5zm2 2h5v4H6zm7 0h5v4h-5zm-7 5h5v4H6zm7 0h5v4h-5z"/>
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
     </g>
 </svg>
index fb6b985..2eedd1e 100644 (file)
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/table.png differ
index 3c901f7..b5733fb 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
     <g id="table-insert">
-        <path id="table" d="M4 5v13h16V5zm2 2h5v4H6zm7 0h5v4h-5zm-7 5h5v4H6zm7 0h5v4h-5z"/>
+        <path id="table" d="M4 6v11h15V6zm1 3h6v3H5zm7 0h6v3h-6zm-7 4h6v3H5zm7 0h6v3h-6z"/>
     </g>
 </svg>
index 6203239..dd71a2b 100644 (file)
                        }
                }
 
-               newVal = inpParts.join( '' );
-
                return {
-                       newVal: newVal,
-                       trimmed: true
+                       newVal: inpParts.join( '' ),
+                       // For pathological fn() that always returns a value longer than the limit, we might have
+                       // ended up not trimming - check for this case to avoid infinite loops
+                       trimmed: newVal !== inpParts.join( '' )
                };
        };
 
                                // This is a side-effect of limiting after the fact.
                                if ( res.trimmed === true ) {
                                        this.value = res.newVal;
+                                       // Trigger a 'change' event to let other scripts attached to this node know that the value
+                                       // was changed. This will also call ourselves again, but that's okay, it'll be a no-op.
+                                       $el.trigger( 'change' );
                                }
                                // Always adjust prevSafeVal to reflect the input value. Not doing this could cause
                                // trimByteLength to compare the new value to an empty string instead of the
index dc1c779..4d53546 100644 (file)
  *
  * @class jQuery.plugin.suggestions
  */
+
 /**
  * @method suggestions
- * @return {jQuery}
  * @chainable
+ * @return {jQuery}
  *
  * @param {Object} options
  *
@@ -92,6 +93,7 @@
  * @param {boolean} [options.highlightInput=false] Whether to highlight matched portions of the
  *  input or not.
  */
+
 ( function ( $ ) {
 
 var hasOwn = Object.hasOwnProperty;
index b0f86e6..66161ed 100644 (file)
@@ -256,14 +256,6 @@ div.htmlform-tip {
        color: #666;
 }
 
-fieldset.prefsection {
-       margin-top: 1em;
-}
-
-fieldset.operaprefsection {
-       margin-left: 15em;
-}
-
 /* emulate center */
 .center {
        width: 100%;
index 9045e4c..961c02b 100644 (file)
@@ -206,18 +206,6 @@ td.mw-label {
        vertical-align: middle;
 }
 
-.prefsection td.mw-label {
-       width: 20%;
-}
-
-.prefsection table {
-       width: 100%;
-}
-
-.prefsection table.mw-htmlform-matrix {
-       width: auto;
-}
-
 td.mw-submit {
        white-space: nowrap;
 }
index 91366ff..113fb00 100644 (file)
@@ -16,6 +16,7 @@
        /**
         * Post a message (with subject and body) to a talk page.
         *
+        * @abstract
         * @param {string} subject Subject/topic title; plaintext only (no wikitext or HTML)
         * @param {string} body Body, as wikitext.  Signature code will automatically be added
         *   by MessagePosters that require one, unless the message already contains the string
index d245726..a13ec3c 100644 (file)
@@ -84,13 +84,10 @@ td#mw-prefixindex-nav-form {
        font-weight: bold;
 }
 
-.mw-specialpages-table {
-       margin-top: -1em;
-       margin-bottom: 1em;
-}
-
-.mw-specialpages-table td {
-       vertical-align: top;
+.mw-specialpages-list {
+       -webkit-columns: 16em 2;
+       -moz-columns: 16em 2;
+       columns: 16em 2;
 }
 
 /* Special:Statistics */
index 8fb9a47..9e5efd3 100644 (file)
 .mw-preferences-messagebox {
        display: none;
 }
+
+.prefsection td.mw-label {
+       width: 20%;
+}
+
+.prefsection table {
+       width: 100%;
+}
+
+.prefsection table.mw-htmlform-matrix {
+       width: auto;
+}
index 8f845df..b869314 100644 (file)
@@ -27,6 +27,7 @@ div.searchresult {
 }
 .mw-search-results {
        margin-left: 0.4em;
+       float: left;
 }
 .mw-search-results li {
        padding-bottom: 1.2em;
index 49acfef..9535481 100644 (file)
         * @param {string|null} [fade=null] Direction in which to fade out current calendar contents,
         *     'previous', 'next', 'up' or 'down'; or 'auto', which has the same result as 'previous' or
         *     'next' depending on whether the current date is later or earlier than the previous.
-        * @returns {string} Format
         */
        mw.widgets.CalendarWidget.prototype.updateUI = function ( fade ) {
                var items, today, selected, currentMonth, currentYear, currentDay, i, needsFade,
index fe8520b..3a70a66 100644 (file)
@@ -11,8 +11,8 @@
         * See <https://commons.wikimedia.org/wiki/Commons:Structured_data> for
         * a more detailed description of how that system works.
         *
-        * TODO this currently only supports uploads under CC-BY-SA 4.0,
-        *     and should really have support for more licenses.
+        * **TODO: This currently only supports uploads under CC-BY-SA 4.0,
+        * and should really have support for more licenses.**
         *
         * @inheritdoc
         */
index 79628de..aafc37a 100644 (file)
                                comment: upload.getComment(),
                                filename: upload.getFilename(),
                                text: upload.getText()
-                       } ).then( function () {
+                       } ).then( function ( result ) {
                                upload.state = Upload.State.UPLOADED;
+                               upload.imageinfo = result.upload.imageinfo;
+                               return result;
                        }, function () {
                                upload.state = Upload.State.ERROR;
                        } );
index 8c6f3ab..c323e8d 100644 (file)
         * @param {Function} callback
         * @param {boolean|jQuery.Event} callback.immediate True when the event is called immediately,
         *  an event object when triggered from an event.
-        * @return {jQuery}
         * @chainable
+        * @return {jQuery}
         */
        mw.log.deprecate( $.fn, 'liveAndTestAtStart', function ( callback ) {
-               this
+               return this
                        // Can't really migrate to .on() generically, needs knowledge of
                        // calling code to know the correct selector. Fix callers and
                        // get rid of this .liveAndTestAtStart() hack.
index e10b561..3958392 100644 (file)
@@ -1,69 +1,58 @@
 ( function ( mw ) {
        'use strict';
-       var storage;
 
        /**
         * Library for storing device specific information. It should be used for storing simple
         * strings and is not suitable for storing large chunks of data.
+        *
         * @class mw.storage
         * @singleton
         */
-       storage = {
-               isLocalStorageSupported: false,
+       mw.storage = {
+
+               localStorage: window.localStorage,
+
                /**
                 * Retrieve value from device storage.
                 *
-                * @param {String} key of item to retrieve
-                * @returns {String|Boolean} false when localStorage not available, otherwise string
+                * @param {string} key Key of item to retrieve
+                * @return {string|boolean} False when localStorage not available, otherwise string
                 */
                get: function ( key ) {
-                       if ( this.isLocalStorageSupported ) {
-                               return localStorage.getItem( key );
-                       } else {
-                               return false;
-                       }
+                       try {
+                               return mw.storage.localStorage.getItem( key );
+                       } catch ( e ) {}
+                       return false;
                },
 
                /**
-                * Set a value in device storage.
-                *
-                * @param {String} key key name to store under.
-                * @param {String} value to be stored.
-                * @returns {Boolean} whether the save succeeded or not.
-                */
+                 * Set a value in device storage.
+                 *
+                 * @param {string} key Key name to store under
+                 * @param {string} value Value to be stored
+                 * @returns {boolean} Whether the save succeeded or not
+                 */
                set: function ( key, value ) {
                        try {
-                               localStorage.setItem( key, value );
+                               mw.storage.localStorage.setItem( key, value );
                                return true;
-                       } catch ( e ) {
-                               return false;
-                       }
+                       } catch ( e ) {}
+                       return false;
                },
 
                /**
-                * Remove a value from device storage.
-                *
-                * @param {String} key of item to remove.
-                * @returns {Boolean} whether the save succeeded or not.
-                */
+                 * Remove a value from device storage.
+                 *
+                 * @param {string} key Key of item to remove
+                 * @returns {boolean} Whether the save succeeded or not
+                 */
                remove: function ( key ) {
-                       if ( this.isLocalStorageSupported ) {
-                               localStorage.removeItem( key );
+                       try {
+                               mw.storage.localStorage.removeItem( key );
                                return true;
-                       } else {
-                               return false;
-                       }
+                       } catch ( e ) {}
+                       return false;
                }
        };
 
-       mw.storage = storage;
-       // See if local storage is supported
-       try {
-               localStorage.setItem( 'localStorageTest', 'localStorageTest' );
-               localStorage.removeItem( 'localStorageTest' );
-               storage.isLocalStorageSupported = true;
-       } catch ( e ) {
-               // Already set. No body needed.
-       }
-
 }( mediaWiki ) );
diff --git a/tests/phpunit/includes/ConsecutiveParametersMatcher.php b/tests/phpunit/includes/ConsecutiveParametersMatcher.php
new file mode 100644 (file)
index 0000000..adf74bb
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+/*
+ * This file is part of the PHPUnit_MockObject package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Invocation matcher which looks for sets of specific parameters in the invocations.
+ *
+ * Checks the parameters of the incoming invocations, the parameter list is
+ * checked against the defined constraints in $parameters. If the constraint
+ * is met it will return true in matches().
+ *
+ * It takes a list of match groups and and increases a call index after each invocation.
+ * So the first invocation uses the first group of constraints, the second the next and so on.
+ */
+class PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
+{
+    /**
+     * @var array
+     */
+    private $_parameterGroups = array();
+
+    /**
+     * @var array
+     */
+    private $_invocations = array();
+
+    /**
+     * @param array $parameterGroups
+     */
+    public function __construct(array $parameterGroups)
+    {
+        foreach ($parameterGroups as $index => $parameters) {
+            foreach ($parameters as $parameter) {
+                if (!($parameter instanceof \PHPUnit_Framework_Constraint)) {
+                    $parameter = new \PHPUnit_Framework_Constraint_IsEqual($parameter);
+                }
+                $this->_parameterGroups[$index][] = $parameter;
+            }
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function toString()
+    {
+        $text = 'with consecutive parameters';
+
+        return $text;
+    }
+
+    /**
+     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
+     * @return bool
+     */
+    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
+    {
+        $this->_invocations[] = $invocation;
+        $callIndex            = count($this->_invocations) - 1;
+        $this->verifyInvocation($invocation, $callIndex);
+
+        return false;
+    }
+
+    public function verify()
+    {
+        foreach ($this->_invocations as $callIndex => $invocation) {
+            $this->verifyInvocation($invocation, $callIndex);
+        }
+    }
+
+    /**
+     * Verify a single invocation
+     *
+     * @param  PHPUnit_Framework_MockObject_Invocation      $invocation
+     * @param  int                                          $callIndex
+     * @throws PHPUnit_Framework_ExpectationFailedException
+     */
+    private function verifyInvocation(PHPUnit_Framework_MockObject_Invocation $invocation, $callIndex)
+    {
+
+        if (isset($this->_parameterGroups[$callIndex])) {
+            $parameters = $this->_parameterGroups[$callIndex];
+        } else {
+          // no parameter assertion for this call index
+            return;
+        }
+
+        if ($invocation === null) {
+            throw new PHPUnit_Framework_ExpectationFailedException(
+                'Mocked method does not exist.'
+            );
+        }
+
+        if (count($invocation->parameters) < count($parameters)) {
+            throw new PHPUnit_Framework_ExpectationFailedException(
+                sprintf(
+                    'Parameter count for invocation %s is too low.',
+                    $invocation->toString()
+                )
+            );
+        }
+
+        foreach ($parameters as $i => $parameter) {
+            $parameter->evaluate(
+                $invocation->parameters[$i],
+                sprintf(
+                    'Parameter %s for invocation #%d %s does not match expected ' .
+                    'value.',
+                    $i,
+                    $callIndex,
+                    $invocation->toString()
+                )
+            );
+        }
+    }
+}
index 60235b8..4d1a936 100644 (file)
@@ -10,8 +10,8 @@ class RecentChangeTest extends MediaWikiTestCase {
        protected $user_comment;
        protected $context;
 
-       public function __construct() {
-               parent::__construct();
+       public function setUp() {
+               parent::setUp();
 
                $this->title = Title::newFromText( 'SomeTitle' );
                $this->target = Title::newFromText( 'TestTarget' );
@@ -21,6 +21,26 @@ class RecentChangeTest extends MediaWikiTestCase {
                $this->context = RequestContext::newExtraneousContext( $this->title );
        }
 
+       /**
+        * @covers RecentChange::newFromRow
+        * @covers RecentChange::loadFromRow
+        */
+       public function testNewFromRow() {
+               $row = new stdClass();
+               $row->rc_foo = 'AAA';
+               $row->rc_timestamp = '20150921134808';
+               $row->rc_deleted = 'bar';
+
+               $rc = RecentChange::newFromRow( $row );
+
+               $expected = array(
+                       'rc_foo' => 'AAA',
+                       'rc_timestamp' => '20150921134808',
+                       'rc_deleted' => 'bar',
+               );
+               $this->assertEquals( $expected, $rc->getAttributes() );
+       }
+
        /**
         * The testIrcMsgForAction* tests are supposed to cover the hacky
         * LogFormatter::getIRCActionText / bug 34508
@@ -59,291 +79,6 @@ class RecentChangeTest extends MediaWikiTestCase {
         * - undo
         */
 
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeBlock() {
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # block/block
-               $this->assertIRCComment(
-                       $this->context->msg( 'blocklogentry', 'SomeTitle', 'duration', '(flags)' )->plain()
-                               . $sep . $this->user_comment,
-                       'block', 'block',
-                       array(
-                               '5::duration' => 'duration',
-                               '6::flags' => 'flags',
-                       ),
-                       $this->user_comment
-               );
-               # block/block - legacy
-               $this->assertIRCComment(
-                       $this->context->msg( 'blocklogentry', 'SomeTitle', 'duration', '(flags)' )->plain()
-                               . $sep . $this->user_comment,
-                       'block', 'block',
-                       array(
-                               'duration',
-                               'flags',
-                       ),
-                       $this->user_comment,
-                       '',
-                       true
-               );
-               # block/unblock
-               $this->assertIRCComment(
-                       $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'block', 'unblock',
-                       array(),
-                       $this->user_comment
-               );
-               # block/reblock
-               $this->assertIRCComment(
-                       $this->context->msg( 'reblock-logentry', 'SomeTitle', 'duration', '(flags)' )->plain()
-                               . $sep . $this->user_comment,
-                       'block', 'reblock',
-                       array(
-                               '5::duration' => 'duration',
-                               '6::flags' => 'flags',
-                       ),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeDelete() {
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # delete/delete
-               $this->assertIRCComment(
-                       $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'delete', 'delete',
-                       array(),
-                       $this->user_comment
-               );
-
-               # delete/restore
-               $this->assertIRCComment(
-                       $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'delete', 'restore',
-                       array(),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeNewusers() {
-               $this->assertIRCComment(
-                       'New user account',
-                       'newusers', 'newusers',
-                       array()
-               );
-               $this->assertIRCComment(
-                       'New user account',
-                       'newusers', 'create',
-                       array()
-               );
-               $this->assertIRCComment(
-                       'created new account SomeTitle',
-                       'newusers', 'create2',
-                       array()
-               );
-               $this->assertIRCComment(
-                       'Account created automatically',
-                       'newusers', 'autocreate',
-                       array()
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeMove() {
-               $move_params = array(
-                       '4::target' => $this->target->getPrefixedText(),
-                       '5::noredir' => 0,
-               );
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # move/move
-               $this->assertIRCComment(
-                       $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )
-                               ->plain() . $sep . $this->user_comment,
-                       'move', 'move',
-                       $move_params,
-                       $this->user_comment
-               );
-
-               # move/move_redir
-               $this->assertIRCComment(
-                       $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )
-                               ->plain() . $sep . $this->user_comment,
-                       'move', 'move_redir',
-                       $move_params,
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypePatrol() {
-               # patrol/patrol
-               $this->assertIRCComment(
-                       $this->context->msg( 'patrol-log-line', 'revision 777', '[[SomeTitle]]', '' )->plain(),
-                       'patrol', 'patrol',
-                       array(
-                               '4::curid' => '777',
-                               '5::previd' => '666',
-                               '6::auto' => 0,
-                       )
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeProtect() {
-               $protectParams = array(
-                       '[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)'
-               );
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # protect/protect
-               $this->assertIRCComment(
-                       $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )
-                               ->plain() . $sep . $this->user_comment,
-                       'protect', 'protect',
-                       $protectParams,
-                       $this->user_comment
-               );
-
-               # protect/unprotect
-               $this->assertIRCComment(
-                       $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'protect', 'unprotect',
-                       array(),
-                       $this->user_comment
-               );
-
-               # protect/modify
-               $this->assertIRCComment(
-                       $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )
-                               ->plain() . $sep . $this->user_comment,
-                       'protect', 'modify',
-                       $protectParams,
-                       $this->user_comment
-               );
-
-               # protect/move_prot
-               $this->assertIRCComment(
-                       $this->context->msg( 'movedarticleprotection', 'SomeTitle', 'OldTitle' )
-                               ->plain() . $sep . $this->user_comment,
-                       'protect', 'move_prot',
-                       array(
-                               '4::oldtitle' => 'OldTitle'
-                       ),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeUpload() {
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # upload/upload
-               $this->assertIRCComment(
-                       $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'upload', 'upload',
-                       array(),
-                       $this->user_comment
-               );
-
-               # upload/overwrite
-               $this->assertIRCComment(
-                       $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
-                       'upload', 'overwrite',
-                       array(),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeMerge() {
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # merge/merge
-               $this->assertIRCComment(
-                       $this->context->msg( 'pagemerge-logentry', 'SomeTitle', 'Dest', 'timestamp' )->plain()
-                               . $sep . $this->user_comment,
-                       'merge', 'merge',
-                       array(
-                               '4::dest' => 'Dest',
-                               '5::mergepoint' => 'timestamp',
-                       ),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @covers LogFormatter::getIRCActionText
-        */
-       public function testIrcMsgForLogTypeImport() {
-               $sep = $this->context->msg( 'colon-separator' )->text();
-
-               # import/upload
-               $msg = $this->context->msg( 'import-logentry-upload', 'SomeTitle' )->plain() .
-                       $sep .
-                       $this->user_comment;
-               $this->assertIRCComment(
-                       $msg,
-                       'import', 'upload',
-                       array(),
-                       $this->user_comment
-               );
-
-               # import/interwiki
-               $msg = $this->context->msg( 'import-logentry-interwiki', 'SomeTitle' )->plain() .
-                       $sep .
-                       $this->user_comment;
-               $this->assertIRCComment(
-                       $msg,
-                       'import', 'interwiki',
-                       array(),
-                       $this->user_comment
-               );
-       }
-
-       /**
-        * @todo Emulate these edits somehow and extract
-        * raw edit summary from RecentChange object
-        * --
-        */
-       /*
-       public function testIrcMsgForBlankingAES() {
-               // $this->context->msg( 'autosumm-blank', .. );
-       }
-
-       public function testIrcMsgForReplaceAES() {
-               // $this->context->msg( 'autosumm-replace', .. );
-       }
-
-       public function testIrcMsgForRollbackAES() {
-               // $this->context->msg( 'revertpage', .. );
-       }
-
-       public function testIrcMsgForUndoAES() {
-               // $this->context->msg( 'undo-summary', .. );
-       }
-       */
-
        /**
         * @covers RecentChange::parseParams
         */
@@ -390,35 +125,50 @@ class RecentChangeTest extends MediaWikiTestCase {
        }
 
        /**
-        * @param string $expected Expected IRC text without colors codes
-        * @param string $type Log type (move, delete, suppress, patrol ...)
-        * @param string $action A log type action
-        * @param array $params
-        * @param string $comment (optional) A comment for the log action
-        * @param string $msg (optional) A message for PHPUnit :-)
+        * 50 mins and 100 mins are used here as the tests never take that long!
+        * @return array
         */
-       protected function assertIRCComment( $expected, $type, $action, $params,
-               $comment = null, $msg = '', $legacy = false
-       ) {
-               $logEntry = new ManualLogEntry( $type, $action );
-               $logEntry->setPerformer( $this->user );
-               $logEntry->setTarget( $this->title );
-               if ( $comment !== null ) {
-                       $logEntry->setComment( $comment );
-               }
-               $logEntry->setParameters( $params );
-               $logEntry->setLegacy( $legacy );
-
-               $formatter = LogFormatter::newFromEntry( $logEntry );
-               $formatter->setContext( $this->context );
+       public function provideIsInRCLifespan() {
+               return array(
+                       array( 6000, time() - 3000, 0, true ),
+                       array( 3000, time() - 6000, 0, false ),
+                       array( 6000, time() - 3000, 6000, true ),
+                       array( 3000, time() - 6000, 6000, true ),
+               );
+       }
 
-               // Apply the same transformation as done in IRCColourfulRCFeedFormatter::getLine for rc_comment
-               $ircRcComment = IRCColourfulRCFeedFormatter::cleanupForIRC( $formatter->getIRCActionComment() );
+       /**
+        * @covers RecentChange::isInRCLifespan
+        * @dataProvider provideIsInRCLifespan
+        */
+       public function testIsInRCLifespan( $maxAge, $timestamp, $tolerance, $expected ) {
+               $this->setMwGlobals( 'wgRCMaxAge', $maxAge );
+               $this->assertEquals( $expected, RecentChange::isInRCLifespan( $timestamp, $tolerance ) );
+       }
 
-               $this->assertEquals(
-                       $expected,
-                       $ircRcComment,
-                       $msg
+       public function provideRCTypes() {
+               return array(
+                       array( RC_EDIT, 'edit' ),
+                       array( RC_NEW, 'new' ),
+                       array( RC_LOG, 'log' ),
+                       array( RC_EXTERNAL, 'external' ),
                );
        }
+
+       /**
+        * @dataProvider provideRCTypes
+        * @covers RecentChange::parseFromRCType
+        */
+       public function testParseFromRCType( $rcType, $type ) {
+               $this->assertEquals( $type, RecentChange::parseFromRCType( $rcType ) );
+       }
+
+       /**
+        * @dataProvider provideRCTypes
+        * @covers RecentChange::parseToRCType
+        */
+       public function testParseToRCType( $rcType, $type ) {
+               $this->assertEquals( $rcType, RecentChange::parseToRCType( $type ) );
+       }
+
 }
diff --git a/tests/phpunit/includes/debug/logger/monolog/AvroFormatterTest.php b/tests/phpunit/includes/debug/logger/monolog/AvroFormatterTest.php
new file mode 100644 (file)
index 0000000..44242ed
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use MediaWikiTestCase;
+use PHPUnit_Framework_Error_Notice;
+
+class AvroFormatterTest extends MediaWikiTestCase {
+
+       protected function setUp() {
+               if ( !class_exists( 'AvroStringIO' ) ) {
+                       $this->markTestSkipped( 'Avro is required for the AvroFormatterTest' );
+               }
+               parent::setUp();
+       }
+
+       public function testSchemaNotAvailable() {
+               $formatter = new AvroFormatter( array() );
+               $this->setExpectedException( 'PHPUnit_Framework_Error_Notice', "The schema for channel 'marty' is not available" );
+               $formatter->format( array( 'channel' => 'marty' ) );
+       }
+
+       public function testSchemaNotAvailableReturnValue() {
+               $formatter = new AvroFormatter( array() );
+               $noticeEnabled = PHPUnit_Framework_Error_Notice::$enabled;
+               // disable conversion of notices
+               PHPUnit_Framework_Error_Notice::$enabled = false;
+               // have to keep the user notice from being output
+               wfSuppressWarnings();
+               $res = $formatter->format( array( 'channel' => 'marty' ) );
+               wfRestoreWarnings();
+               PHPUnit_Framework_Error_Notice::$enabled = $noticeEnabled;
+               $this->assertNull( $res );
+       }
+
+       public function testDoesSomethingWhenSchemaAvailable() {
+               $formatter = new AvroFormatter( array( 'string' => array( 'type' => 'string' ) ) );
+               $res = $formatter->format( array(
+                       'channel' => 'string',
+                       'context' => 'better to be',
+               ) );
+               $this->assertNotNull( $res );
+               // basically just tell us if avro changes its string encoding
+               $this->assertEquals( base64_decode( 'GGJldHRlciB0byBiZQ==' ), $res );
+       }
+}
diff --git a/tests/phpunit/includes/debug/logger/monolog/KafkaHandlerTest.php b/tests/phpunit/includes/debug/logger/monolog/KafkaHandlerTest.php
new file mode 100644 (file)
index 0000000..090f439
--- /dev/null
@@ -0,0 +1,207 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use MediaWikiTestCase;
+use Monolog\Logger;
+
+// not available in the version of phpunit mw uses, so copied into repo
+require_once __DIR__ . '/../../../ConsecutiveParametersMatcher.php';
+
+class KafkaHandlerTest extends MediaWikiTestCase {
+
+       protected function setUp() {
+               if ( !class_exists( 'Monolog\Handler\AbstractProcessingHandler' )
+                       || !class_exists( 'Kafka\Produce' )
+               ) {
+                       $this->markTestSkipped( 'Monolog and Kafka are required for the KafkaHandlerTest' );
+               }
+
+               parent::setUp();
+       }
+
+       public function topicNamingProvider() {
+               return array(
+                       array( array(), 'monolog_foo' ),
+                       array( array( 'alias' => array( 'foo' => 'bar' ) ), 'bar' )
+               );
+       }
+
+       /**
+        * @dataProvider topicNamingProvider
+        */
+       public function testTopicNaming( $options, $expect ) {
+               $produce = $this->getMockBuilder( 'Kafka\Produce' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $produce->expects($this->any())
+                       ->method('getAvailablePartitions')
+                       ->will($this->returnValue( array( 'A' ) ) );
+               $produce->expects($this->once())
+                       ->method( 'setMessages' )
+                       ->with( $expect, $this->anything(), $this->anything() );
+
+               $handler = new KafkaHandler( $produce, $options );
+               $handler->handle( array(
+                       'channel' => 'foo',
+                       'level' => Logger::EMERGENCY,
+                       'extra' => array(),
+               ) );
+       }
+
+       public function swallowsExceptionsWhenRequested() {
+               return array(
+                       // defaults to false
+                       array( array(), true ),
+                       // also try false explicitly
+                       array( array( 'swallowExceptions' => false ), true ),
+                       // turn it on
+                       array( array( 'swallowExceptions' => true ), false ),
+               );
+       }
+
+       /**
+        * @dataProvider swallowsExceptionsWhenRequested
+        */
+       public function testGetAvailablePartitionsException( $options, $expectException ) {
+               $produce = $this->getMockBuilder( 'Kafka\Produce' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $produce->expects( $this->any() )
+                       ->method( 'getAvailablePartitions' )
+                       ->will( $this->throwException( new \Kafka\Exception ) );
+
+               if ( $expectException ) {
+                       $this->setExpectedException( 'Kafka\Exception' );
+               }
+
+               $handler = new KafkaHandler( $produce, $options );
+               $handler->handle( array(
+                       'channel' => 'foo',
+                       'level' => Logger::EMERGENCY,
+                       'extra' => array(),
+               ) );
+
+               if ( !$expectException ) {
+                       $this->assertTrue( true, 'no exception was thrown' );
+               }
+       }
+
+       /**
+        * @dataProvider swallowsExceptionsWhenRequested
+        */
+       public function testSendException( $options, $expectException ) {
+               $produce = $this->getMockBuilder( 'Kafka\Produce' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $produce->expects( $this->any() )
+                       ->method( 'getAvailablePartitions' )
+                       ->will( $this->returnValue( array( 'A' ) ) );
+               $produce->expects( $this->any() )
+                       ->method( 'send' )
+                       ->will( $this->throwException( new \Kafka\Exception ) );
+
+               if ( $expectException ) {
+                       $this->setExpectedException( 'Kafka\Exception' );
+               }
+
+               $handler = new KafkaHandler( $produce, $options );
+               $handler->handle( array(
+                       'channel' => 'foo',
+                       'level' => Logger::EMERGENCY,
+                       'extra' => array(),
+               ) );
+
+               if ( !$expectException ) {
+                       $this->assertTrue( true, 'no exception was thrown' );
+               }
+       }
+
+       public function testHandlesNullFormatterResult() {
+               $produce = $this->getMockBuilder( 'Kafka\Produce' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $produce->expects( $this->any() )
+                       ->method( 'getAvailablePartitions' )
+                       ->will( $this->returnValue( array( 'A' ) ) );
+               $mockMethod = $produce->expects( $this->exactly( 2 ) )
+                       ->method( 'setMessages' );
+               // evil hax
+               \TestingAccessWrapper::newFromObject( $mockMethod )->matcher->parametersMatcher =
+                       new \PHPUnit_Framework_MockObject_Matcher_ConsecutiveParameters( array(
+                               array( $this->anything(), $this->anything(), array( 'words' ) ),
+                               array( $this->anything(), $this->anything(), array( 'lines' ) )
+                       ) );
+
+               $formatter = $this->getMock( 'Monolog\Formatter\FormatterInterface' );
+               $formatter->expects( $this->any() )
+                       ->method( 'format' )
+                       ->will( $this->onConsecutiveCalls( 'words', null, 'lines' ) );
+
+               $handler = new KafkaHandler( $produce, array() );
+               $handler->setFormatter( $formatter );
+               for ( $i = 0; $i < 3; ++$i ) {
+                       $handler->handle( array(
+                               'channel' => 'foo',
+                               'level' => Logger::EMERGENCY,
+                               'extra' => array(),
+                       ) );
+               }
+       }
+
+
+       public function testBatchHandlesNullFormatterResult() {
+               $produce = $this->getMockBuilder( 'Kafka\Produce' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $produce->expects( $this->any() )
+                       ->method( 'getAvailablePartitions' )
+                       ->will( $this->returnValue( array( 'A' ) ) );
+               $produce->expects( $this->once() )
+                       ->method( 'setMessages' )
+                       ->with( $this->anything(), $this->anything(), array( 'words', 'lines' ) );
+
+               $formatter = $this->getMock( 'Monolog\Formatter\FormatterInterface' );
+               $formatter->expects( $this->any() )
+                       ->method( 'format' )
+                       ->will( $this->onConsecutiveCalls( 'words', null, 'lines' ) );
+
+               $handler = new KafkaHandler( $produce, array() );
+               $handler->setFormatter( $formatter );
+               $handler->handleBatch( array(
+                       array(
+                               'channel' => 'foo',
+                               'level' => Logger::EMERGENCY,
+                               'extra' => array(),
+                       ),
+                       array(
+                               'channel' => 'foo',
+                               'level' => Logger::EMERGENCY,
+                               'extra' => array(),
+                       ),
+                       array(
+                               'channel' => 'foo',
+                               'level' => Logger::EMERGENCY,
+                               'extra' => array(),
+                       ),
+               ) );
+       }
+}
index 6ee54d3..be23c4a 100644 (file)
@@ -28,7 +28,7 @@ use TestingAccessWrapper;
 
 class LineFormatterTest extends MediaWikiTestCase {
 
-       public function setUp() {
+       protected function setUp() {
                if ( !class_exists( 'Monolog\Formatter\LineFormatter' ) ) {
                        $this->markTestSkipped( 'This test requires monolog to be installed' );
                }
index aaa93ef..2e4942f 100644 (file)
@@ -2392,6 +2392,56 @@ class FileBackendTest extends MediaWikiTestCase {
                        "Scoped unlocking of files succeeded with OK status ($backendName)." );
        }
 
+       public function testReadAffinity() {
+               $be = TestingAccessWrapper::newFromObject(
+                       new FileBackendMultiWrite( array(
+                               'name' => 'localtesting',
+                               'wikiId' => wfWikiId() . mt_rand(),
+                               'backends' => array(
+                                       array( // backend 0
+                                               'name' => 'multitesting0',
+                                               'class' => 'MemoryFileBackend',
+                                               'isMultiMaster' => false,
+                                               'readAffinity' => true
+                                       ),
+                                       array( // backend 1
+                                               'name' => 'multitesting1',
+                                               'class' => 'MemoryFileBackend',
+                                               'isMultiMaster' => true
+                                       )
+                               )
+                       ) )
+               );
+
+               $this->assertEquals(
+                       1,
+                       $be->getReadIndexFromParams( array( 'latest' => 1 ) ),
+                       'Reads with "latest" flag use backend 1'
+               );
+               $this->assertEquals(
+                       0,
+                       $be->getReadIndexFromParams( array( 'latest' => 0 ) ),
+                       'Reads without "latest" flag use backend 0'
+               );
+
+               $p = 'container/test-cont/file.txt';
+               $be->backends[0]->quickCreate( array(
+                       'dst' => "mwstore://multitesting0/$p", 'content' => 'cattitude' ) );
+               $be->backends[1]->quickCreate( array(
+                       'dst' => "mwstore://multitesting1/$p", 'content' => 'princess of power' ) );
+
+               $this->assertEquals(
+                       'cattitude',
+                       $be->getFileContents( array( 'src' => "mwstore://localtesting/$p" ) ),
+                       "Non-latest read came from backend 0"
+               );
+               $this->assertEquals(
+                       'princess of power',
+                       $be->getFileContents( array( 'src' => "mwstore://localtesting/$p", 'latest' => 1 ) ),
+                       "Latest read came from backend1"
+               );
+       }
+
        // helper function
        private function listToArray( $iter ) {
                return is_array( $iter ) ? $iter : iterator_to_array( $iter );
index 515990e..844c9af 100644 (file)
@@ -1,4 +1,5 @@
 <?php
+
 /**
  * @group Database
  */
@@ -19,6 +20,16 @@ class LogFormatterTest extends MediaWikiLangTestCase {
         */
        protected $context;
 
+       /**
+        * @var Title
+        */
+       protected $target;
+
+       /**
+        * @var string
+        */
+       protected $user_comment;
+
        protected function setUp() {
                parent::setUp();
 
@@ -35,12 +46,15 @@ class LogFormatterTest extends MediaWikiLangTestCase {
                Language::getLocalisationCache()->recache( $wgLang->getCode() );
 
                $this->user = User::newFromName( 'Testuser' );
-               $this->title = Title::newMainPage();
+               $this->title = Title::newFromText( 'SomeTitle' );
+               $this->target = Title::newFromText( 'TestTarget' );
 
                $this->context = new RequestContext();
                $this->context->setUser( $this->user );
                $this->context->setTitle( $this->title );
                $this->context->setLanguage( $wgLang );
+
+               $this->user_comment = '<User comment about action>';
        }
 
        protected function tearDown() {
@@ -292,4 +306,309 @@ class LogFormatterTest extends MediaWikiLangTestCase {
                        array( '4:user-link:key', 'foo', array( 'key' => 'Foo' ) ),
                );
        }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeBlock() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # block/block
+               $this->assertIRCComment(
+                       $this->context->msg( 'blocklogentry', 'SomeTitle', 'duration', '(flags)' )->plain()
+                       . $sep . $this->user_comment,
+                       'block', 'block',
+                       array(
+                               '5::duration' => 'duration',
+                               '6::flags' => 'flags',
+                       ),
+                       $this->user_comment
+               );
+               # block/block - legacy
+               $this->assertIRCComment(
+                       $this->context->msg( 'blocklogentry', 'SomeTitle', 'duration', '(flags)' )->plain()
+                       . $sep . $this->user_comment,
+                       'block', 'block',
+                       array(
+                               'duration',
+                               'flags',
+                       ),
+                       $this->user_comment,
+                       '',
+                       true
+               );
+               # block/unblock
+               $this->assertIRCComment(
+                       $this->context->msg( 'unblocklogentry', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'block', 'unblock',
+                       array(),
+                       $this->user_comment
+               );
+               # block/reblock
+               $this->assertIRCComment(
+                       $this->context->msg( 'reblock-logentry', 'SomeTitle', 'duration', '(flags)' )->plain()
+                       . $sep . $this->user_comment,
+                       'block', 'reblock',
+                       array(
+                               '5::duration' => 'duration',
+                               '6::flags' => 'flags',
+                       ),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeDelete() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # delete/delete
+               $this->assertIRCComment(
+                       $this->context->msg( 'deletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'delete', 'delete',
+                       array(),
+                       $this->user_comment
+               );
+
+               # delete/restore
+               $this->assertIRCComment(
+                       $this->context->msg( 'undeletedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'delete', 'restore',
+                       array(),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeNewusers() {
+               $this->assertIRCComment(
+                       'New user account',
+                       'newusers', 'newusers',
+                       array()
+               );
+               $this->assertIRCComment(
+                       'New user account',
+                       'newusers', 'create',
+                       array()
+               );
+               $this->assertIRCComment(
+                       'created new account SomeTitle',
+                       'newusers', 'create2',
+                       array()
+               );
+               $this->assertIRCComment(
+                       'Account created automatically',
+                       'newusers', 'autocreate',
+                       array()
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeMove() {
+               $move_params = array(
+                       '4::target' => $this->target->getPrefixedText(),
+                       '5::noredir' => 0,
+               );
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # move/move
+               $this->assertIRCComment(
+                       $this->context->msg( '1movedto2', 'SomeTitle', 'TestTarget' )
+                               ->plain() . $sep . $this->user_comment,
+                       'move', 'move',
+                       $move_params,
+                       $this->user_comment
+               );
+
+               # move/move_redir
+               $this->assertIRCComment(
+                       $this->context->msg( '1movedto2_redir', 'SomeTitle', 'TestTarget' )
+                               ->plain() . $sep . $this->user_comment,
+                       'move', 'move_redir',
+                       $move_params,
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypePatrol() {
+               # patrol/patrol
+               $this->assertIRCComment(
+                       $this->context->msg( 'patrol-log-line', 'revision 777', '[[SomeTitle]]', '' )->plain(),
+                       'patrol', 'patrol',
+                       array(
+                               '4::curid' => '777',
+                               '5::previd' => '666',
+                               '6::auto' => 0,
+                       )
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeProtect() {
+               $protectParams = array(
+                       '[edit=sysop] (indefinite) ‎[move=sysop] (indefinite)'
+               );
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # protect/protect
+               $this->assertIRCComment(
+                       $this->context->msg( 'protectedarticle', 'SomeTitle ' . $protectParams[0] )
+                               ->plain() . $sep . $this->user_comment,
+                       'protect', 'protect',
+                       $protectParams,
+                       $this->user_comment
+               );
+
+               # protect/unprotect
+               $this->assertIRCComment(
+                       $this->context->msg( 'unprotectedarticle', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'protect', 'unprotect',
+                       array(),
+                       $this->user_comment
+               );
+
+               # protect/modify
+               $this->assertIRCComment(
+                       $this->context->msg( 'modifiedarticleprotection', 'SomeTitle ' . $protectParams[0] )
+                               ->plain() . $sep . $this->user_comment,
+                       'protect', 'modify',
+                       $protectParams,
+                       $this->user_comment
+               );
+
+               # protect/move_prot
+               $this->assertIRCComment(
+                       $this->context->msg( 'movedarticleprotection', 'SomeTitle', 'OldTitle' )
+                               ->plain() . $sep . $this->user_comment,
+                       'protect', 'move_prot',
+                       array(
+                               '4::oldtitle' => 'OldTitle'
+                       ),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeUpload() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # upload/upload
+               $this->assertIRCComment(
+                       $this->context->msg( 'uploadedimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'upload', 'upload',
+                       array(),
+                       $this->user_comment
+               );
+
+               # upload/overwrite
+               $this->assertIRCComment(
+                       $this->context->msg( 'overwroteimage', 'SomeTitle' )->plain() . $sep . $this->user_comment,
+                       'upload', 'overwrite',
+                       array(),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeMerge() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # merge/merge
+               $this->assertIRCComment(
+                       $this->context->msg( 'pagemerge-logentry', 'SomeTitle', 'Dest', 'timestamp' )->plain()
+                       . $sep . $this->user_comment,
+                       'merge', 'merge',
+                       array(
+                               '4::dest' => 'Dest',
+                               '5::mergepoint' => 'timestamp',
+                       ),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @covers LogFormatter::getIRCActionComment
+        * @covers LogFormatter::getIRCActionText
+        */
+       public function testIrcMsgForLogTypeImport() {
+               $sep = $this->context->msg( 'colon-separator' )->text();
+
+               # import/upload
+               $msg = $this->context->msg( 'import-logentry-upload', 'SomeTitle' )->plain() .
+                       $sep .
+                       $this->user_comment;
+               $this->assertIRCComment(
+                       $msg,
+                       'import', 'upload',
+                       array(),
+                       $this->user_comment
+               );
+
+               # import/interwiki
+               $msg = $this->context->msg( 'import-logentry-interwiki', 'SomeTitle' )->plain() .
+                       $sep .
+                       $this->user_comment;
+               $this->assertIRCComment(
+                       $msg,
+                       'import', 'interwiki',
+                       array(),
+                       $this->user_comment
+               );
+       }
+
+       /**
+        * @param string $expected Expected IRC text without colors codes
+        * @param string $type Log type (move, delete, suppress, patrol ...)
+        * @param string $action A log type action
+        * @param array $params
+        * @param string $comment (optional) A comment for the log action
+        * @param string $msg (optional) A message for PHPUnit :-)
+        */
+       protected function assertIRCComment( $expected, $type, $action, $params,
+               $comment = null, $msg = '', $legacy = false
+       ) {
+               $logEntry = new ManualLogEntry( $type, $action );
+               $logEntry->setPerformer( $this->user );
+               $logEntry->setTarget( $this->title );
+               if ( $comment !== null ) {
+                       $logEntry->setComment( $comment );
+               }
+               $logEntry->setParameters( $params );
+               $logEntry->setLegacy( $legacy );
+
+               $formatter = LogFormatter::newFromEntry( $logEntry );
+               $formatter->setContext( $this->context );
+
+               // Apply the same transformation as done in IRCColourfulRCFeedFormatter::getLine for rc_comment
+               $ircRcComment = IRCColourfulRCFeedFormatter::cleanupForIRC( $formatter->getIRCActionComment() );
+
+               $this->assertEquals(
+                       $expected,
+                       $ircRcComment,
+                       $msg
+               );
+       }
+
 }
index 0d2129b..df7da98 100644 (file)
@@ -106,7 +106,6 @@ class NewParserTest extends MediaWikiTestCase {
                $tmpGlobals['wgAdaptiveMessageCache'] = true;
                $tmpGlobals['wgUseDatabaseMessages'] = true;
                $tmpGlobals['wgLocaltimezone'] = 'UTC';
-               $tmpGlobals['wgDeferredUpdateList'] = array();
                $tmpGlobals['wgGroupPermissions'] = array(
                        '*' => array(
                                'createaccount' => true,
diff --git a/tests/phpunit/includes/registration/CoreVersionCheckerTest.php b/tests/phpunit/includes/registration/CoreVersionCheckerTest.php
new file mode 100644 (file)
index 0000000..bc154b3
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+/**
+ * @covers CoreVersionChecker
+ */
+class CoreVersionCheckerTest extends PHPUnit_Framework_TestCase {
+       /**
+        * @dataProvider provideCheck
+        */
+       public function testCheck( $coreVersion, $constraint, $expected ) {
+               $checker = new CoreVersionChecker( $coreVersion );
+               $this->assertEquals( $expected, $checker->check( $constraint ) );
+       }
+
+       public static function provideCheck() {
+               return array(
+                       // array( $wgVersion, constraint, expected )
+                       array( '1.25alpha', '>= 1.26', false ),
+                       array( '1.25.0', '>= 1.26', false ),
+                       array( '1.26alpha', '>= 1.26', true ),
+                       array( '1.26alpha', '>= 1.26.0', true ),
+                       array( '1.26alpha', '>= 1.26.0-stable', false ),
+                       array( '1.26.0', '>= 1.26.0-stable', true ),
+                       array( '1.26.1', '>= 1.26.0-stable', true ),
+                       array( '1.27.1', '>= 1.26.0-stable', true ),
+                       array( '1.26alpha', '>= 1.26.1', false ),
+                       array( '1.26alpha', '>= 1.26alpha', true ),
+                       array( '1.26alpha', '>= 1.25', true ),
+                       array( '1.26.0-alpha.14', '>= 1.26.0-alpha.15', false ),
+                       array( '1.26.0-alpha.14', '>= 1.26.0-alpha.10', true ),
+                       array( '1.26.1', '>= 1.26.2, <=1.26.0', false ),
+                       array( '1.26.1', '^1.26.2', false ),
+                       // Accept anything for un-parsable version strings
+                       array( '1.26mwf14', '== 1.25alpha', true ),
+                       array( 'totallyinvalid', '== 1.0', true ),
+               );
+       }
+}
diff --git a/tests/phpunit/includes/utils/AvroValidatorTest.php b/tests/phpunit/includes/utils/AvroValidatorTest.php
new file mode 100644 (file)
index 0000000..52c242c
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+/**
+ * Tests for IP validity functions.
+ *
+ * Ported from /t/inc/IP.t by avar.
+ *
+ * @group IP
+ * @todo Test methods in this call should be split into a method and a
+ * dataprovider.
+ */
+
+class AvroValidatorTest extends PHPUnit_Framework_TestCase {
+       public function setUp() {
+               if ( !class_exists( 'AvroSchema' ) ) {
+                       $this->markTestSkipped( 'Avro is required to run the AvroValidatorTest' );
+               }
+               parent::setUp();
+       }
+
+       public function getErrorsProvider() {
+               $stringSchema = AvroSchema::parse( json_encode( array( 'type' => 'string' ) ) );
+               $recordSchema = AvroSchema::parse( json_encode( array(
+                       'type' => 'record',
+                       'name' => 'ut',
+                       'fields' => array(
+                               array( 'name' => 'id', 'type' => 'int', 'required' => true ),
+                       ),
+               ) ) );
+               $enumSchema = AvroSchema::parse( json_encode( array(
+                       'type' => 'record',
+                       'name' => 'ut',
+                       'fields' => array(
+                               array( 'name' => 'count', 'type' => array( 'int', 'null' ) ),
+                       ),
+               ) ) );
+
+               return array(
+                       array(
+                               'No errors with a simple string serialization',
+                               $stringSchema, 'foobar', array(),
+                       ),
+
+                       array(
+                               'Cannot serialize integer into string',
+                               $stringSchema, 5, 'Expected string, but recieved integer',
+                       ),
+
+                       array(
+                               'Cannot serialize array into string',
+                               $stringSchema, array(), 'Expected string, but recieved array',
+                       ),
+
+                       array(
+                               'allows and ignores extra fields',
+                               $recordSchema, array( 'id' => 4, 'foo' => 'bar' ), array(),
+                       ),
+
+                       array(
+                               'detects missing fields',
+                               $recordSchema, array(), array( 'id' => 'Missing expected field' ),
+                       ),
+
+                       array(
+                               'handles first element in enum',
+                               $enumSchema, array( 'count' => 4 ), array(),
+                       ),
+
+                       array(
+                               'handles second element in enum',
+                               $enumSchema, array( 'count' => null ), array(),
+                       ),
+
+                       array(
+                               'rejects element not in union',
+                               $enumSchema, array( 'count' => 'invalid' ), array( 'count' => array(
+                                       'Expected any one of these to be true',
+                                       array(
+                                               'Expected integer, but recieved string',
+                                               'Expected null, but recieved string',
+                                       )
+                               ) )
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider getErrorsProvider
+        */
+       public function testGetErrors( $message, $schema, $datum, $expected ) {
+               $this->assertEquals(
+                       $expected,
+                       AvroValidator::getErrors( $schema, $datum ),
+                       $message
+               );
+       }
+}
index c25641d..6cef4a7 100644 (file)
@@ -1,53 +1,36 @@
 ( function ( mw ) {
-       QUnit.module( 'mediawiki.storage: normal case.', {
-               setup: function () {
-                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', true );
-                       this.spy = this.sandbox.spy( localStorage, 'setItem' );
-                       this.sandbox.stub( localStorage, 'getItem' )
-                               .withArgs( 'foo' ).returns( 'test' )
-                               .withArgs( 'bar' ).returns( null );
-               }
-       } );
+       QUnit.module( 'mediawiki.storage' );
+
+       QUnit.test( 'set/get with localStorage', 3, function ( assert ) {
+               this.sandbox.stub( mw.storage, 'localStorage', {
+                       setItem: this.sandbox.spy(),
+                       getItem: this.sandbox.stub()
+               } );
 
-       QUnit.test( 'set/get with localStorage', 4, function ( assert ) {
                mw.storage.set( 'foo', 'test' );
-               assert.strictEqual( this.spy.calledOnce, true, 'Check localStorage called.' );
-               assert.strictEqual( this.spy.calledWith( 'foo', 'test' ), true,
-                       'Check prefixed.' );
+               assert.ok( mw.storage.localStorage.setItem.calledOnce );
+
+               mw.storage.localStorage.getItem.withArgs( 'foo' ).returns( 'test' );
+               mw.storage.localStorage.getItem.returns( null );
                assert.strictEqual( mw.storage.get( 'foo' ), 'test', 'Check value gets stored.' );
                assert.strictEqual( mw.storage.get( 'bar' ), null, 'Unset values are null.' );
        } );
 
-       QUnit.module( 'mediawiki.storage: localStorage does not exist', {
-               setup: function () {
-                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', false );
-                       this.sandbox.stub( localStorage, 'setItem' ).throws();
-               }
-       } );
-
        QUnit.test( 'set/get without localStorage', 3, function ( assert ) {
-               assert.strictEqual( mw.storage.set( 'foo', 'test' ), false,
-                       'When localStorage not available save fails.' );
-
-               assert.strictEqual( mw.storage.remove( 'foo', 'test' ), false,
-                       'When localStorage not available remove fails.' );
+               this.sandbox.stub( mw.storage, 'localStorage', {
+                       getItem: this.sandbox.stub(),
+                       removeItem: this.sandbox.stub(),
+                       setItem: this.sandbox.stub()
+               } );
 
-               assert.strictEqual( mw.storage.get( 'foo' ), false,
-                               'Inability to retrieve values return false to differentiate from null (not set).' );
-       } );
+               mw.storage.localStorage.getItem.throws();
+               assert.strictEqual( mw.storage.get( 'foo' ), false );
 
-       QUnit.module( 'mediawiki.storage: localStorage exhausted', {
-               setup: function () {
-                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', true );
-                       this.sandbox.stub( localStorage, 'setItem' ).throws();
-                       this.sandbox.stub( localStorage, 'getItem' ).returns( null );
-               }
-       } );
+               mw.storage.localStorage.setItem.throws();
+               assert.strictEqual( mw.storage.set( 'foo', 'test' ), false );
 
-       QUnit.test( 'set/get without localStorage', 2, function ( assert ) {
-               assert.strictEqual( mw.storage.set( 'foo', 'test' ), false,
-                       'When localStorage not available inform user with false.' );
-               assert.strictEqual( mw.storage.get( 'foo' ), null, 'No value registered.' );
+               mw.storage.localStorage.removeItem.throws();
+               assert.strictEqual( mw.storage.remove( 'foo', 'test' ), false );
        } );
 
 }( mediaWiki ) );