Merge "Added SSL verification to PHPHttpRequest."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 26 Jun 2013 21:56:40 +0000 (21:56 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 26 Jun 2013 21:56:40 +0000 (21:56 +0000)
494 files changed:
RELEASE-NOTES-1.22
docs/hooks.txt
includes/Article.php
includes/AutoLoader.php
includes/Block.php
includes/ChangesList.php
includes/DefaultSettings.php
includes/Export.php
includes/GitInfo.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/Html.php
includes/HttpFunctions.php
includes/ImageGallery.php
includes/ImagePage.php
includes/LinksUpdate.php
includes/OutputPage.php
includes/Revision.php
includes/Sanitizer.php
includes/SeleniumWebSettings.php [deleted file]
includes/Title.php
includes/User.php
includes/UserMailer.php
includes/WebStart.php
includes/Wiki.php
includes/WikiPage.php
includes/XmlTypeCheck.php
includes/actions/InfoAction.php
includes/actions/WatchAction.php
includes/api/ApiBase.php
includes/api/ApiCreateAccount.php
includes/api/ApiDelete.php
includes/api/ApiImport.php
includes/api/ApiParse.php
includes/api/ApiPatrol.php
includes/api/ApiProtect.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryExternalLinks.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryRevisions.php
includes/api/ApiUpload.php
includes/api/ApiUserrights.php
includes/api/ApiWatch.php
includes/cache/LocalisationCache.php
includes/cache/MessageCache.php
includes/cache/UserCache.php
includes/content/AbstractContent.php
includes/content/CssContent.php
includes/content/JavaScriptContent.php
includes/content/TextContent.php
includes/content/WikitextContent.php
includes/db/Database.php
includes/db/DatabaseMysql.php
includes/db/DatabaseMysqlBase.php [new file with mode: 0644]
includes/db/IORMRow.php
includes/db/LoadMonitor.php
includes/db/ORMRow.php
includes/db/ORMTable.php
includes/debug/Debug.php
includes/diff/DifferenceEngine.php
includes/filebackend/FSFile.php
includes/filebackend/FSFileBackend.php
includes/filebackend/FileBackend.php
includes/filebackend/FileBackendGroup.php
includes/filebackend/FileBackendMultiWrite.php
includes/filebackend/FileBackendStore.php
includes/filebackend/FileOp.php
includes/filebackend/FileOpBatch.php
includes/filebackend/README
includes/filebackend/SwiftFileBackend.php
includes/filebackend/TempFSFile.php
includes/filebackend/lockmanager/LockManager.php
includes/filebackend/lockmanager/ScopedLock.php
includes/filerepo/file/LocalFile.php
includes/installer/Installer.i18n.php
includes/json/FormatJson.php
includes/libs/CSSJanus.php
includes/libs/HttpStatus.php
includes/logging/DeleteLogFormatter.php
includes/logging/MoveLogFormatter.php
includes/logging/NewUsersLogFormatter.php
includes/logging/PatrolLogFormatter.php
includes/logging/RightsLogFormatter.php
includes/media/MediaHandler.php
includes/media/MediaTransformOutput.php
includes/media/SVG.php
includes/normal/README
includes/objectcache/MemcachedPeclBagOStuff.php
includes/parser/CoreParserFunctions.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/search/SearchEngine.php
includes/search/SearchMySQL.php
includes/search/SearchUpdate.php
includes/specials/SpecialContributions.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialNewpages.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialSearch.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/templates/Usercreate.php
includes/templates/UsercreateVForm.php [deleted file]
includes/templates/Userlogin.php
includes/templates/UserloginVForm.php [deleted file]
includes/upload/UploadStash.php
languages/Language.php
languages/LanguageConverter.php
languages/messages/MessagesAce.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArn.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAvk.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBbc_latn.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBho.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBn.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBr.php
languages/messages/MessagesBs.php
languages/messages/MessagesBxr.php
languages/messages/MessagesCa.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCh.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesDv.php
languages/messages/MessagesEl.php
languages/messages/MessagesEn.php
languages/messages/MessagesEo.php
languages/messages/MessagesEs.php
languages/messages/MessagesEt.php
languages/messages/MessagesEu.php
languages/messages/MessagesExt.php
languages/messages/MessagesFa.php
languages/messages/MessagesFi.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGrc.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesGv.php
languages/messages/MessagesHak.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKg.php
languages/messages/MessagesKhw.php
languages/messages/MessagesKiu.php
languages/messages/MessagesKk_arab.php
languages/messages/MessagesKk_cyrl.php
languages/messages/MessagesKk_latn.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKoi.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKw.php
languages/messages/MessagesKy.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLez.php
languages/messages/MessagesLfn.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLij.php
languages/messages/MessagesLiv.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLo.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLt.php
languages/messages/MessagesLtg.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMr.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNah.php
languages/messages/MessagesNan.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNl.php
languages/messages/MessagesNn.php
languages/messages/MessagesNso.php
languages/messages/MessagesOc.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPam.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPnt.php
languages/messages/MessagesPrg.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRm.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSd.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSei.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesStq.php
languages/messages/MessagesSu.php
languages/messages/MessagesSv.php
languages/messages/MessagesSw.php
languages/messages/MessagesSzl.php
languages/messages/MessagesTa.php
languages/messages/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTg_latn.php
languages/messages/MessagesTh.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTru.php
languages/messages/MessagesTs.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUdm.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesUz.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVmf.php
languages/messages/MessagesVo.php
languages/messages/MessagesVot.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesXmf.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
maintenance/Doxyfile
maintenance/Maintenance.php
maintenance/backupTextPass.inc
maintenance/dictionary/mediawiki.dic
maintenance/doMaintenance.php
maintenance/edit.php
maintenance/jsduck/categories.json
maintenance/jsduck/config.json
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/mwdocgen.php
maintenance/purgeDeletedFiles.php
maintenance/rebuildall.php
maintenance/rebuildtextindex.php
maintenance/runJobs.php
maintenance/sql.php
maintenance/tables.sql
resources/Resources.php
resources/jquery/jquery.client.js
resources/jquery/jquery.makeCollapsible.js
resources/jquery/jquery.tablesorter.js
resources/mediawiki.action/mediawiki.action.edit.js
resources/mediawiki.action/mediawiki.action.view.postEdit.css
resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js
resources/mediawiki.api/mediawiki.api.login.js [new file with mode: 0644]
resources/mediawiki.api/mediawiki.api.parse.js
resources/mediawiki.special/mediawiki.special.createAccount.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.createAccount.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.createAccount.vform.css [deleted file]
resources/mediawiki.special/mediawiki.special.createAccount.vform.js [deleted file]
resources/mediawiki.special/mediawiki.special.userLogin.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userLogin.signup.js [deleted file]
resources/mediawiki.special/mediawiki.special.userLogin.vform.css [deleted file]
resources/mediawiki/mediawiki.htmlform.js
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.user.js
skins/CologneBlue.php
skins/cologneblue/screen.css
skins/common/commonElements.css
skins/common/commonPrint.css
skins/common/oldshared.css
skins/common/shared.css
skins/common/wikiprintable.css
skins/modern/main.css
skins/modern/print.css
skins/vector/collapsibleTabs.js [new file with mode: 0644]
skins/vector/images/arrow-down-focus-icon.svg [new file with mode: 0644]
skins/vector/images/arrow-down-icon.svg [new file with mode: 0644]
skins/vector/screen.css
skins/vector/vector.js
tests/RunSeleniumTests.php [deleted file]
tests/TestsAutoLoader.php
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/includes/SeleniumConfigurationTest.php [deleted file]
tests/phpunit/includes/TitlePermissionTest.php
tests/phpunit/includes/XmlTypeCheckTest.php [new file with mode: 0644]
tests/phpunit/includes/content/ContentHandlerTest.php
tests/phpunit/includes/content/CssContentTest.php
tests/phpunit/includes/content/TextContentTest.php
tests/phpunit/includes/libs/CSSJanusTest.php
tests/phpunit/includes/parser/MediaWikiParserTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/search/SearchUpdateTest.php
tests/phpunit/languages/LanguageTest.php
tests/phpunit/mocks/filebackend/MockFSFile.php
tests/phpunit/mocks/media/MockBitmapHandler.php
tests/phpunit/phpunit.php
tests/phpunit/suite.xml
tests/phpunit/suites/ExtensionsParserTestSuite.php [new file with mode: 0644]
tests/qunit/suites/resources/jquery/jquery.client.test.js
tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
tests/selenium/Selenium.php [deleted file]
tests/selenium/SeleniumConfig.php [deleted file]
tests/selenium/SeleniumLoader.php [deleted file]
tests/selenium/SeleniumServerManager.php [deleted file]
tests/selenium/SeleniumTestCase.php [deleted file]
tests/selenium/SeleniumTestConsoleLogger.php [deleted file]
tests/selenium/SeleniumTestConstants.php [deleted file]
tests/selenium/SeleniumTestHTMLLogger.php [deleted file]
tests/selenium/SeleniumTestListener.php [deleted file]
tests/selenium/SeleniumTestSuite.php [deleted file]
tests/selenium/data/SimpleSeleniumTestDB.sql [deleted file]
tests/selenium/data/SimpleSeleniumTestImages.zip [deleted file]
tests/selenium/data/Wikipedia-logo-v2-de.png [deleted file]
tests/selenium/data/mediawiki118_fresh_installation.sql [deleted file]
tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php [deleted file]
tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php [deleted file]
tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php [deleted file]
tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php [deleted file]
tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php [deleted file]
tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php [deleted file]
tests/selenium/installer/MediaWikiInstallationCommonFunction.php [deleted file]
tests/selenium/installer/MediaWikiInstallationConfig.php [deleted file]
tests/selenium/installer/MediaWikiInstallationMessage.php [deleted file]
tests/selenium/installer/MediaWikiInstallationVariables.php [deleted file]
tests/selenium/installer/MediaWikiInstallerTestSuite.php [deleted file]
tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php [deleted file]
tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php [deleted file]
tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php [deleted file]
tests/selenium/installer/MediaWikiRestartInstallationTestCase.php [deleted file]
tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php [deleted file]
tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php [deleted file]
tests/selenium/installer/MediaWikiUserInterfaceTestCase.php [deleted file]
tests/selenium/installer/README.txt [deleted file]
tests/selenium/selenium_settings.ini.sample [deleted file]
tests/selenium/selenium_settings_grid.ini.sample [deleted file]
tests/selenium/suites/AddContentToNewPageTestCase.php [deleted file]
tests/selenium/suites/AddNewPageTestCase.php [deleted file]
tests/selenium/suites/CreateAccountTestCase.php [deleted file]
tests/selenium/suites/DeletePageAdminTestCase.php [deleted file]
tests/selenium/suites/EmailPasswordTestCase.php [deleted file]
tests/selenium/suites/MediaWikiEditorConfig.php [deleted file]
tests/selenium/suites/MediaWikiEditorTestSuite.php [deleted file]
tests/selenium/suites/MediaWikiExtraTestSuite.php [deleted file]
tests/selenium/suites/MediawikiCoreSmokeTestCase.php [deleted file]
tests/selenium/suites/MediawikiCoreSmokeTestSuite.php [deleted file]
tests/selenium/suites/MovePageTestCase.php [deleted file]
tests/selenium/suites/MyContributionsTestCase.php [deleted file]
tests/selenium/suites/MyWatchListTestCase.php [deleted file]
tests/selenium/suites/PageDeleteTestSuite.php [deleted file]
tests/selenium/suites/PageSearchTestCase.php [deleted file]
tests/selenium/suites/PreviewPageTestCase.php [deleted file]
tests/selenium/suites/SavePageTestCase.php [deleted file]
tests/selenium/suites/SimpleSeleniumConfig.php [deleted file]
tests/selenium/suites/SimpleSeleniumTestCase.php [deleted file]
tests/selenium/suites/SimpleSeleniumTestSuite.php [deleted file]
tests/selenium/suites/UserPreferencesTestCase.php [deleted file]

index c46d327..997dbc6 100644 (file)
@@ -11,9 +11,6 @@ production.
 === Configuration changes in 1.22 ===
 * $wgRedirectScript was removed. It was unused.
 * Removed $wgLocalMessageCacheSerialized, it is now always true.
-* When $wgUseVFormUserLogin is true, the redesign of Special:UserLogin is
-  activated; when $wgUseVFormCreateAccount is true, the redesign of
-  Special:UserLogin/signup is activated.
 * $wgVectorUseIconWatch is now enabled by default.
 * $wgCascadingRestrictionLevels was added.
 * ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
@@ -30,6 +27,10 @@ production.
 * $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
 * $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
   default for $wgLogAutopatrol is true.
+* The 'edit' right no longer allows for editing a user's own CSS and JS.
+* New rights 'editmyusercss' and 'editmyuserjs' restrict actions that were
+  formerly allowed by default. They have been added to the default for
+  $wgGroupPermissions['*'].
 
 === New features in 1.22 ===
 * (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
@@ -43,9 +44,11 @@ production.
 * New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
   compact vertical form layout.
 * New versions of login (Special:UserLogin) and create account
-  (Special:UserLogin/signup) forms. They are opt-in for now, controlled by
-  the $wgUseVFormUserLogin and $wgUseVFormCreateAccount settings or a 'useNew'
-  URL parameter trigger.
+  (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
+  These forms use new messages that assume a "Help logging in" link, see
+  https://www.mediawiki.org/wiki/Manual:Page_customizations;
+  https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
+  message key changes.
 * (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
   by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
 * The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
@@ -100,6 +103,16 @@ production.
   handlers can take further action based on the status of the patrol footer
 * LinkCache singleton can now be altered or cleared, letting one to specify
   another instance that does not rely on a database backend.
+* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
+* New user rights have been added to increase granularity in rights management
+  for extensions such as OAuth:
+** editmyusercss controls whether a user may edit their own CSS subpages.
+** editmyuserjs controls whether a user may edit their own JS subpages.
+* Add new hook AbortTalkPageEmailNotification, this will be used to determine
+  whether to send the regular talk page email notification
+* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
+* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
+  watchlists.
 
 === Bug fixes in 1.22 ===
 * Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
@@ -130,8 +143,22 @@ production.
   is disabled, and AJAX patrolling and watching are now disabled when use of
   the write API is not allowed.
 * (bug 48294) API: Fix chunk upload async mode.
+* (bug 46749) Broken files tracking category removed from pages if an image
+  with that name is uploaded.
+* (bug 14176) System messages that are empty were previously incorrectly treated
+  as non-existent, causing a fallback to the default. This stopped users from
+  overriding system messages to make them blank.
+* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
+  'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
+  warning will instead be issued if 'title' is non-default, unless no props are
+  requested.
+* Special:Recentchangeslinked will now include upload log entries
 
 === API changes in 1.22 ===
+* (bug 25553) The JSON output formatter now leaves forward slashes unescaped
+  to improve human readability of URLs and similar strings. Also, a "utf8"
+  option is now provided to use UTF-8 encoding instead of hex escape codes
+  for most non-ASCII characters.
 * (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
   parameter has had no effect since MediaWiki 1.16, and so its removal is
   unlikely to impact existing clients.
@@ -154,8 +181,17 @@ production.
 * (bug 47219) Allow specifying change type of Wikipedia feed items
 * prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
 * prop=info now adds the content model and page language of the title.
-* New upload log entries will now contain information on the relavent
+* New upload log entries will now contain information on the relevant
   image (sha1 and timestamp).
+* (bug 49239) action=parse now can parse in preview and section preview modes.
+* (bug 49259) action=patrol now accepts revision ids.
+* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
+  honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
+  will now receive an error, rather than the previous behavior listing all
+  user blocks.
+* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
+  rather than using the content model of the page "API".
+* action=watch may now return errors.
 
 === Languages updated in 1.22===
 
@@ -167,6 +203,17 @@ changes to languages because of Bugzilla reports.
 * (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
 
 === Other changes in 1.22 ===
+* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
+  has changed:
+** MediaWiki no longer supports PHP installations in which the native JSON
+   extension is missing or disabled.
+** XmlJsCode objects can no longer be nested inside objects or arrays.
+   (For Xml::encodeJsCall(), this individually applies to each argument.)
+** The sets of characters escaped by default, along with the precise escape
+   sequences used, have changed (except for the Xml::escapeJsString()
+   function, which is now deprecated).
+* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
+  be sure to upgrade affected extensions at the same time (e.g. Collection).
 * redirect.php was removed. It was unused.
 * ClickTracking integration was dropped from the mediaWiki.user.bucket
   JavaScript function. The 'tracked' option is now ignored.
@@ -205,6 +252,15 @@ changes to languages because of Bugzilla reports.
 * (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
   properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
   sajax_do_call and wfSupportsAjax.
+* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
+  will no longer be output and OutputPage::addKeyword no longer exists.
+* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
+  deprecated since 1.19, have been removed.
+* (bug 50134) Hook functions are no longer required to return a value. When a
+  hook function does not return a value (or when it returns an explicit null),
+  processing continues. To abort the hook, a hook function must return an
+  explicit, boolean false or a string error message. Other falsey values are
+  tantamount to a 'return true' in earlier versions of MediaWiki.
 
 == Compatibility ==
 
index 02c9fad..f2c10ce 100644 (file)
@@ -270,6 +270,10 @@ $reason: the reason for the move (added in 1.13)
 $user: the User object about to be created (read-only, incomplete)
 &$msg: out parameter: HTML to display on abort
 
+'AbortTalkPageEmailNotification': Return false to cancel talk page email notification
+$targetUser: the user whom to send talk page email notification
+$title: the page title
+
 'AbortChangePassword': Return false to cancel password change.
 $user: the User object to which the password change is occuring
 $mOldpass: the old password provided by the user
@@ -801,19 +805,6 @@ content model name, but no entry for that model exists in $wgContentHandlers.
 $modeName: the requested content model name
 &$handler: set this to a ContentHandler object, if desired.
 
-'ContentGetParserOutput': Customize parser output for a given content object,
-called by AbstractContent::getParserOutput. May be used to override the normal
-model-specific rendering of page content.
-$content: The Content to render
-$title: Title of the page, as context
-$revId: The revision ID, as context
-$options: ParserOptions for rendering. To avoid confusing the parser cache,
-the output can only depend on parameters provided to this hook function, not on global state.
-$generateHtml: boolean, indicating whether full HTML should be generated. If false,
-generation of HTML may be skipped, but other information should still be present in the
-ParserOutput object.
-&$output: ParserOutput, to manipulate or replace
-
 'ConvertContent': Called by AbstractContent::convert when a conversion to another
 content model is requested.
 $content: The Content object to be converted.
@@ -1958,11 +1949,12 @@ $data: the data stored in old_text.  The meaning depends on $flags: if external
 $flags: a comma-delimited list of strings representing the options used.  May
   include: utf8 (this will always be set for new revisions); gzip; external.
 
-'SearchUpdate': Prior to search update completion.
+'SearchUpdate': Prior to search update completion. Return false to stop any
+further text/content processing
 $id : Page id
-$namespace : Page namespace
-$title : Page title
+$title : Title object
 $text : Current text being indexed
+$content : Content object for text being indexed.
 
 'SearchGetNearMatchBefore': Perform exact-title-matches in "go" searches before
 the normal operations.
@@ -1999,15 +1991,13 @@ $title : Current Title object being displayed in search results.
 'SearchableNamespaces': An option to modify which namespaces are searchable.
 &$arr : Array of namespaces ($nsId => $name) which will be used.
 
-'SeleniumSettings': TODO
-
 'SetupAfterCache': Called in Setup.php, after cache objects are set
 
 'ShowMissingArticle': Called when generating the output for a non-existent page.
 $article: The article object corresponding to the page
 
 'ShowRawCssJs': Customise the output of raw CSS and JavaScript in page views.
-DEPRECATED, use the ContentGetParserOutput hook instead!
+DEPRECATED, use the ContentHandler facility to handle CSS and JavaScript!
 $text: Text being shown
 $title: Title of the custom script/stylesheet page
 $output: Current OutputPage object
@@ -2436,6 +2426,7 @@ $article: article "acted on"
 'UnwatchArticle': Before a watch is removed from an article.
 $user: user watching
 $page: WikiPage object to be removed
+&$status: Status object to be returned if the hook returns false
 
 'UnwatchArticleComplete': After a watch is removed from an article.
 $user: user that watched
@@ -2685,6 +2676,7 @@ used to alter the SQL query which gets the list of wanted pages.
 'WatchArticle': Before a watch is added to an article.
 $user: user that will watch
 $page: WikiPage object to be watched
+&$status: Status object to be returned if the hook returns false
 
 'WatchArticleComplete': After a watch is added to an article.
 $user: user that watched
index f0eb568..ba922a4 100644 (file)
@@ -1054,87 +1054,49 @@ class Article implements Page {
         * @return bool
         */
        public function showPatrolFooter() {
-               global $wgUseRCPatrol, $wgUseNPPatrol, $wgRCMaxAge, $wgEnableAPI, $wgEnableWriteAPI;
+               global $wgUseNPPatrol, $wgUseRCPatrol, $wgEnableAPI, $wgEnableWriteAPI;
 
-               $request = $this->getContext()->getRequest();
                $outputPage = $this->getContext()->getOutput();
                $user = $this->getContext()->getUser();
                $cache = wfGetMainCache();
+               $rc = false;
 
-               // Normally this makes a link to patrol the revision being viewed.
-               // Sometimes, the 'patrolpage' flag is set in case we want to patrol the first
-               // revision and not the one being viewed by the user (set in Special:NewPages).
-               $useRCPatrol = $wgUseRCPatrol && !$request->getBool( 'patrolpage' );
-
-               if ( !$this->getTitle()->quickUserCan( 'patrol', $user ) || ( !$wgUseNPPatrol && !$wgUseRCPatrol ) ) {
-                       // Patrolling is fully disabled or the user isn't allowed to
+               if ( !$this->getTitle()->quickUserCan( 'patrol', $user ) || !( $wgUseRCPatrol || $wgUseNPPatrol ) ) {
+                       // Patrolling is disabled or the user isn't allowed to
                        return false;
                }
 
                wfProfileIn( __METHOD__ );
 
-               if ( $useRCPatrol ) {
-                       // Check for cached results
-                       if ( $cache->get( wfMemcKey( 'NotPatrollableRevId', $this->getRevIdFetched() ) ) ) {
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-
-                       // We make use of a little index trick over here:
-                       // First we get the timestamp of the last revision and then
-                       // we look up the RC row by that as the timestamp is indexed
-                       // and usually very few rows exist for one timestamp
-                       // (While several thousand can exists for a single page)
-                       if ( !$this->mRevision ) {
-                               $this->mRevision = Revision::newFromId( $this->getRevIdFetched() );
-                       }
+               // New page patrol: Get the timestamp of the oldest revison which
+               // the revision table holds for the given page. Then we look
+               // whether it's within the RC lifespan and if it is, we try
+               // to get the recentchanges row belonging to that entry
+               // (with rc_new = 1).
 
-                       if ( !$this->mRevision || !RecentChange::isInRCLifespan( $this->mRevision->getTimestamp(), 21600 )  ) {
-                               // The revision is more than 6 hours older than the Max RC age
-                               // no need to torture the DB any further (6h because the RC might not be cleaned out regularly)
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       $rc = RecentChange::newFromConds(
-                               array(
-                                       'rc_this_oldid' => $this->getRevIdFetched(),
-                                       'rc_timestamp' => $this->mRevision->getTimestamp(),
-                                       'rc_cur_id' => $this->getTitle()->getArticleID(),
-                                       'rc_patrolled' => 0
-                               ),
-                               __METHOD__,
-                               array( 'USE INDEX' => 'rc_timestamp' )
-                       );
-               } else {
-                       // RC patrol is disabled so we have to patrol the first
-                       // revision (new page patrol) in case it's in the RC table.
-                       // To achieve this we get the timestamp of the oldest revison
-                       // the revision table holds for the given page. Then we look
-                       // whether it's within the RC lifespan and if it is, we try
-                       // to get the recentchanges row belonging to that entry
-                       // (with rc_new = 1).
-
-                       // Check for cached results
-                       if ( $cache->get( wfMemcKey( 'NotPatrollablePage', $this->getTitle()->getArticleID() ) ) ) {
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
+               // Check for cached results
+               if ( $cache->get( wfMemcKey( 'NotPatrollablePage', $this->getTitle()->getArticleID() ) ) ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
 
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $oldestRevisionTimestamp = $dbr->selectField(
-                               'revision',
-                               'MIN( rev_timestamp )',
-                               array( 'rev_page' => $this->getTitle()->getArticleID() ),
-                               __METHOD__
-                       );
+               if ( $this->mRevision && !RecentChange::isInRCLifespan( $this->mRevision->getTimestamp(), 21600 ) ) {
+                       // The current revision is already older than what could be in the RC table
+                       // 6h tolerance because the RC might not be cleaned out regularly
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
 
-                       if ( !$oldestRevisionTimestamp || !RecentChange::isInRCLifespan( $oldestRevisionTimestamp, 21600 ) ) {
-                               // We either didn't find the oldest revision for the given page
-                               // or it's to old for the RC table (with 6h tolerance)
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
+               $dbr = wfGetDB( DB_SLAVE );
+               $oldestRevisionTimestamp = $dbr->selectField(
+                       'revision',
+                       'MIN( rev_timestamp )',
+                       array( 'rev_page' => $this->getTitle()->getArticleID() ),
+                       __METHOD__
+               );
 
+               if ( $oldestRevisionTimestamp && RecentChange::isInRCLifespan( $oldestRevisionTimestamp, 21600 ) ) {
+                       // 6h tolerance because the RC might not be cleaned out regularly
                        $rc = RecentChange::newFromConds(
                                array(
                                        'rc_new' => 1,
@@ -1148,19 +1110,14 @@ class Article implements Page {
                        );
                }
 
-               wfProfileOut( __METHOD__ );
-
                if ( !$rc ) {
                        // No RC entry around
 
                        // Cache the information we gathered above in case we can't patrol
                        // Don't cache in case we can patrol as this could change
-                       if( $useRCPatrol ) {
-                               $cache->set( wfMemcKey( 'NotPatrollableRevId', $this->getRevIdFetched() ), '1', $wgRCMaxAge );
-                       } else {
-                               $cache->set( wfMemcKey( 'NotPatrollablePage', $this->getTitle()->getArticleID() ), '1', $wgRCMaxAge );
-                       }
+                       $cache->set( wfMemcKey( 'NotPatrollablePage', $this->getTitle()->getArticleID() ), '1' );
 
+                       wfProfileOut( __METHOD__ );
                        return false;
                }
 
@@ -1190,6 +1147,7 @@ class Article implements Page {
                        '</div>'
                );
 
+               wfProfileOut( __METHOD__ );
                return true;
        }
 
index e92b67d..6f8cd4b 100644 (file)
@@ -475,6 +475,7 @@ $wgAutoloadLocalClasses = array(
        'DatabaseBase' => 'includes/db/Database.php',
        'DatabaseMssql' => 'includes/db/DatabaseMssql.php',
        'DatabaseMysql' => 'includes/db/DatabaseMysql.php',
+       'DatabaseMysqlBase' => 'includes/db/DatabaseMysqlBase.php',
        'DatabaseOracle' => 'includes/db/DatabaseOracle.php',
        'DatabasePostgres' => 'includes/db/DatabasePostgres.php',
        'DatabaseSqlite' => 'includes/db/DatabaseSqlite.php',
@@ -504,8 +505,8 @@ $wgAutoloadLocalClasses = array(
        'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
        'MssqlField' => 'includes/db/DatabaseMssql.php',
        'MssqlResult' => 'includes/db/DatabaseMssql.php',
-       'MySQLField' => 'includes/db/DatabaseMysql.php',
-       'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
+       'MySQLField' => 'includes/db/DatabaseMysqlBase.php',
+       'MySQLMasterPos' => 'includes/db/DatabaseMysqlBase.php',
        'ORAField' => 'includes/db/DatabaseOracle.php',
        'ORAResult' => 'includes/db/DatabaseOracle.php',
        'ORMIterator' => 'includes/db/ORMIterator.php',
@@ -550,6 +551,7 @@ $wgAutoloadLocalClasses = array(
        # includes/filebackend
        'FileBackendGroup' => 'includes/filebackend/FileBackendGroup.php',
        'FileBackend' => 'includes/filebackend/FileBackend.php',
+       'FileBackendError' => 'includes/filebackend/FileBackend.php',
        'FileBackendStore' => 'includes/filebackend/FileBackendStore.php',
        'FileBackendStoreShardListIterator' => 'includes/filebackend/FileBackendStore.php',
        'FileBackendStoreShardDirIterator' => 'includes/filebackend/FileBackendStore.php',
@@ -872,7 +874,6 @@ $wgAutoloadLocalClasses = array(
        'SearchResultTooMany' => 'includes/search/SearchEngine.php',
        'SearchSqlite' => 'includes/search/SearchSqlite.php',
        'SearchUpdate' => 'includes/search/SearchUpdate.php',
-       'SearchUpdateMyISAM' => 'includes/search/SearchUpdate.php',
        'SqliteSearchResultSet' => 'includes/search/SearchSqlite.php',
        'SqlSearchResultSet' => 'includes/search/SearchEngine.php',
 
@@ -1010,9 +1011,7 @@ $wgAutoloadLocalClasses = array(
 
        # includes/templates
        'UserloginTemplate' => 'includes/templates/Userlogin.php',
-       'UserloginTemplateVForm' => 'includes/templates/UserloginVForm.php',
        'UsercreateTemplate' => 'includes/templates/Usercreate.php',
-       'UsercreateTemplateVForm' => 'includes/templates/UsercreateVForm.php',
 
        # includes/upload
        'UploadBase' => 'includes/upload/UploadBase.php',
@@ -1022,6 +1021,7 @@ $wgAutoloadLocalClasses = array(
        'UploadFromUrl' => 'includes/upload/UploadFromUrl.php',
        'UploadStash' => 'includes/upload/UploadStash.php',
        'UploadStashBadPathException' => 'includes/upload/UploadStash.php',
+       'UploadStashException' => 'includes/upload/UploadStash.php',
        'UploadStashFile' => 'includes/upload/UploadStash.php',
        'UploadStashFileException' => 'includes/upload/UploadStash.php',
        'UploadStashFileNotFoundException' => 'includes/upload/UploadStash.php',
@@ -1169,12 +1169,4 @@ class AutoLoader {
        }
 }
 
-if ( function_exists( 'spl_autoload_register' ) ) {
-       spl_autoload_register( array( 'AutoLoader', 'autoload' ) );
-} else {
-       function __autoload( $class ) {
-               AutoLoader::autoload( $class );
-       }
-
-       ini_set( 'unserialize_callback_func', '__autoload' );
-}
+spl_autoload_register( array( 'AutoLoader', 'autoload' ) );
index d2f430e..f4c5b79 100644 (file)
@@ -1092,7 +1092,7 @@ class Block {
         * @param Bool $isAnon Exclude anonymous-only blocks if false
         * @param Bool $fromMaster Whether to query the master or slave database
         * @return Array of Blocks
-        * @since 1.21
+        * @since 1.22
         */
        public static function getBlocksForIPList( array $ipChain, $isAnon, $fromMaster = false ) {
                if ( !count( $ipChain ) ) {
index b1bb82e..d54e7f0 100644 (file)
@@ -136,9 +136,10 @@ class ChangesList extends ContextSource {
         * @param string $nothing to use for empty space
         * @return String
         */
-       protected function recentChangesFlags( $flags, $nothing = '&#160;' ) {
+       public function recentChangesFlags( $flags, $nothing = '&#160;' ) {
+               global $wgRecentChangesFlags;
                $f = '';
-               foreach ( array( 'newpage', 'minor', 'bot', 'unpatrolled' ) as $flag ) {
+               foreach ( array_keys( $wgRecentChangesFlags ) as $flag ) {
                        $f .= isset( $flags[$flag] ) && $flags[$flag]
                                ? self::flag( $flag )
                                : $nothing;
@@ -152,36 +153,35 @@ class ChangesList extends ContextSource {
         * unpatrolled edit.  By default in English it will contain "N", "m", "b",
         * "!" respectively, plus it will have an appropriate title and class.
         *
-        * @param string $flag 'newpage', 'unpatrolled', 'minor', or 'bot'
+        * @param string $flag One key of $wgRecentChangesFlags
         * @return String: Raw HTML
         */
        public static function flag( $flag ) {
-               static $messages = null;
-               if ( is_null( $messages ) ) {
-                       $messages = array(
-                               'newpage' => array( 'newpageletter', 'recentchanges-label-newpage' ),
-                               'minoredit' => array( 'minoreditletter', 'recentchanges-label-minor' ),
-                               'botedit' => array( 'boteditletter', 'recentchanges-label-bot' ),
-                               'unpatrolled' => array( 'unpatrolledletter', 'recentchanges-label-unpatrolled' ),
-                       );
-                       foreach ( $messages as &$value ) {
-                               $value[0] = wfMessage( $value[0] )->escaped();
-                               $value[1] = wfMessage( $value[1] )->escaped();
+               static $flagInfos = null;
+               if ( is_null( $flagInfos ) ) {
+                       global $wgRecentChangesFlags;
+                       $flagInfos = array();
+                       foreach ( $wgRecentChangesFlags as $key => $value ) {
+                               $flagInfos[$key]['letter'] = wfMessage( $value['letter'] )->escaped();
+                               $flagInfos[$key]['title'] = wfMessage( $value['title'] )->escaped();
+                               // Allow customized class name, fall back to flag name
+                               $flagInfos[$key]['class'] = Sanitizer::escapeClass(
+                                       isset( $value['class'] ) ? $value['class'] : $key );
                        }
                }
 
-               # Inconsistent naming, bleh
+               // Inconsistent naming, bleh, kepted for b/c
                $map = array(
-                       'newpage' => 'newpage',
-                       'minor' => 'minoredit',
-                       'bot' => 'botedit',
-                       'unpatrolled' => 'unpatrolled',
-                       'minoredit' => 'minoredit',
-                       'botedit' => 'botedit',
+                       'minoredit' => 'minor',
+                       'botedit' => 'bot',
                );
-               $flag = $map[$flag];
+               if ( isset( $map[$flag] ) ) {
+                       $flag = $map[$flag];
+               }
 
-               return "<abbr class='$flag' title='" . $messages[$flag][1] . "'>" . $messages[$flag][0] . '</abbr>';
+               return "<abbr class='" . $flagInfos[$flag]['class'] . "' title='" . $flagInfos[$flag]['title'] . "'>" .
+                       $flagInfos[$flag]['letter'] .
+                       '</abbr>';
        }
 
        /**
@@ -366,14 +366,6 @@ class ChangesList extends ContextSource {
 
                $params = array();
 
-               // In case we got a page creation which is yet unpatrolled and
-               // recent changes patrolling is enabled, the user probably rather
-               // wants to patrol the whole page (first revision) instead of seeing
-               // a patrollink for the current revision.
-               if ( $wgUseRCPatrol && $unpatrolled && $rc->getAttribute( 'rc_type' ) == RC_NEW ) {
-                       $params['patrolpage'] = 1;
-               }
-
                $articlelink = Linker::linkKnown(
                        $rc->getTitle(),
                        null,
@@ -532,7 +524,7 @@ class ChangesList extends ContextSource {
         * @param $rc RecentChange
         */
        public function insertRollback( &$s, &$rc ) {
-               if ( $rc->mAttribs['rc_type'] != RC_NEW && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) {
+               if ( $rc->mAttribs['rc_type'] == RC_EDIT && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) {
                        $page = $rc->getTitle();
                        /** Check for rollback and edit permissions, disallow special pages, and only
                          * show a link on the top-most revision */
@@ -1206,7 +1198,7 @@ class EnhancedChangesList extends ChangesList {
                $r .= '<td class="mw-enhanced-rc"><span class="mw-enhancedchanges-arrow-space"></span>';
                # Flag and Timestamp
                if ( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
-                       $r .= '&#160;&#160;&#160;&#160;'; // 4 flags -> 4 spaces
+                       $r .= $this->recentChangesFlags( array() ); // no flags, but need the placeholders
                } else {
                        $r .= $this->recentChangesFlags( array(
                                'newpage' => $type == RC_NEW,
index 58eb3d7..65f2477 100644 (file)
@@ -2820,23 +2820,6 @@ $wgVectorUseSimpleSearch = true;
  */
 $wgVectorUseIconWatch = true;
 
-/**
- * Use compact vertical form ("VForm") design for Special:Userlogin.  This can
- * be overridden by a useNew bool in the query string.  For instance, if it is
- * globally false, you can try it with useNew=1.
- *
- * @since 1.22
- */
-$wgUseVFormUserLogin = false;
-
-/**
- * Use compact vertical form ("VForm") design for account creation
- * (Special:Userlogin?type=signup).
- *
- * @since 1.22
- */
-$wgUseVFormCreateAccount = false;
-
 /**
  * Display user edit counts in various prominent places.
  */
@@ -3888,6 +3871,8 @@ $wgGroupPermissions['*']['edit'] = true;
 $wgGroupPermissions['*']['createpage'] = true;
 $wgGroupPermissions['*']['createtalk'] = true;
 $wgGroupPermissions['*']['writeapi'] = true;
+$wgGroupPermissions['*']['editmyusercss'] = true;
+$wgGroupPermissions['*']['editmyuserjs'] = true;
 #$wgGroupPermissions['*']['patrolmarks'] = false; // let anons see what was patrolled
 
 // Implicit group for all logged-in accounts
@@ -5053,12 +5038,13 @@ $wgGitBin = '/usr/bin/git';
  * The value is the replacement for the key (it can contain $1, etc.)
  * %h will be replaced by the short SHA-1 (7 first chars) and %H by the
  * full SHA-1 of the HEAD revision.
+ * %r will be replaced with a URL-encoded version of $1.
  *
  * @since 1.20
  */
 $wgGitRepositoryViewers = array(
-       'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
-       'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://gerrit.wikimedia.org/r/gitweb?p=$1;h=%H',
+       'https://gerrit.wikimedia.org/r/p/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
+       'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' => 'https://git.wikimedia.org/commit/%r/%H',
 );
 
 /** @} */ # End of maintenance }
@@ -5232,6 +5218,26 @@ $wgUseTagFilter = true;
  */
 $wgUnwatchedPageThreshold = false;
 
+/**
+ * Recent changes flag, shown in Recentchanges and watchlist
+ *
+ * Adding a new one:
+ *   $wgRecentChangesFlags['flag'] => array( 'letter-msg', 'tooltip-msg' );
+ * 'class' allows to set a css class different than the flag name
+ *
+ * @since 1.22
+ */
+$wgRecentChangesFlags = array(
+       'newpage' => array( 'letter' => 'newpageletter',
+               'title' => 'recentchanges-label-newpage' ),
+       'minor' => array( 'letter' => 'minoreditletter',
+               'title' => 'recentchanges-label-minor', 'class' => 'minoredit' ),
+       'bot' => array( 'letter' => 'boteditletter',
+               'title' => 'recentchanges-label-bot', 'class' => 'botedit' ),
+       'unpatrolled' => array( 'letter' => 'unpatrolledletter',
+               'title' => 'recentchanges-label-unpatrolled' ),
+);
+
 /** @} */ # end RC/watchlist }
 
 /************************************************************************//**
@@ -6284,15 +6290,6 @@ $wgPoolCounterConf = null;
  */
 $wgUploadMaintenance = false;
 
-/**
- * Allows running of selenium tests via maintenance/tests/RunSeleniumTests.php
- */
-$wgEnableSelenium = false;
-$wgSeleniumTestConfigs = array();
-$wgSeleniumConfigFile = null;
-$wgDBtestuser = ''; //db user that has permission to create and drop the test databases only
-$wgDBtestpassword = '';
-
 /**
  * Associative array mapping namespace IDs to the name of the content model pages in that namespace should have by
  * default (use the CONTENT_MODEL_XXX constants). If no special content type is defined for a given namespace,
index a26e853..98de4c0 100644 (file)
@@ -824,10 +824,13 @@ class XmlDumpWriter {
                        $archiveName = '';
                }
                if ( $dumpContents ) {
+                       $be = $file->getRepo()->getBackend();
                        # Dump file as base64
                        # Uses only XML-safe characters, so does not need escaping
+                       # @TODO: too bad this loads the contents into memory (script might swap)
                        $contents = '      <contents encoding="base64">' .
-                               chunk_split( base64_encode( file_get_contents( $file->getPath() ) ) ) .
+                               chunk_split( base64_encode(
+                                       $be->getFileContents( array( 'src' => $file->getPath() ) ) ) ) .
                                "      </contents>\n";
                } else {
                        $contents = '';
index a54b807..407b3cb 100644 (file)
@@ -194,12 +194,13 @@ class GitInfo {
                }
                foreach ( self::getViewers() as $repo => $viewer ) {
                        $pattern = '#^' . $repo . '$#';
-                       if ( preg_match( $pattern, $url ) ) {
+                       if ( preg_match( $pattern, $url, $matches ) ) {
                                $viewerUrl = preg_replace( $pattern, $viewer, $url );
                                $headSHA1 = $this->getHeadSHA1();
                                $replacements = array(
                                        '%h' => substr( $headSHA1, 0, 7 ),
-                                       '%H' => $headSHA1
+                                       '%H' => $headSHA1,
+                                       '%r' => urlencode( $matches[1] ),
                                );
                                return strtr( $viewerUrl, $replacements );
                        }
index 1c6f642..a44e45b 100644 (file)
@@ -1001,7 +1001,7 @@ function wfDebugLog( $logGroup, $text, $public = true ) {
                        wfErrorLog( "$time $host $wiki: $text", $wgDebugLogGroups[$logGroup] );
                }
        } elseif ( $public === true ) {
-               wfDebug( "[$logGroup] $text", true );
+               wfDebug( "[$logGroup] $text", false );
        }
 }
 
index ed8b3ed..396e360 100644 (file)
@@ -126,6 +126,9 @@ class Hooks {
         * @param array $args  Array of parameters passed to hook functions
         * @return bool True if no handler aborted the hook
         *
+        * @since 1.22 A hook function is not required to return a value for
+        *   processing to continue. Not returning a value (or explicitly
+        *   returning null) is equivalent to returning true.
         * @throws MWException
         * @throws FatalError
         */
@@ -210,14 +213,7 @@ class Hooks {
                                        'Detected bug in an extension! ' .
                                        "Hook $func has invalid call signature; " . $badhookmsg
                                );
-                       } elseif ( $retval === null ) {
-                               // Null was returned. Error.
-                               throw new MWException(
-                                       'Detected bug in an extension! ' .
-                                       "Hook $func failed to return a value; " .
-                                       'should return true to continue hook processing or false to abort.'
-                               );
-                       } elseif ( !$retval ) {
+                       } elseif ( $retval === false ) {
                                wfProfileOut( 'hook: ' . $event );
                                // False was returned. Stop processing, but no error.
                                return false;
index e7455b7..1d45e6a 100644 (file)
@@ -172,7 +172,7 @@ class Html {
 
                // In text/html, initial <html> and <head> tags can be omitted under
                // pretty much any sane circumstances, if they have no attributes.  See:
-               // <http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#optional-tags>
+               // <http://www.whatwg.org/html/syntax.html#optional-tags>
                if ( !$wgWellFormedXml && !$attribs
                && in_array( $element, array( 'html', 'head' ) ) ) {
                        return '';
@@ -238,7 +238,7 @@ class Html {
                $element = strtolower( $element );
 
                // Reference:
-               // http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#optional-tags
+               // http://www.whatwg.org/html/syntax.html#optional-tags
                if ( !$wgWellFormedXml && in_array( $element, array(
                        'html',
                        'head',
@@ -842,7 +842,7 @@ class Html {
         * @return Boolean
         */
        public static function isXmlMimeType( $mimetype ) {
-               # http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#xml-mime-type
+               # http://www.whatwg.org/html/infrastructure.html#xml-mime-type
                # * text/xml
                # * application/xml
                # * Any mimetype with a subtype ending in +xml (this implicitly includes application/xhtml+xml)
@@ -902,7 +902,7 @@ class Html {
                $candidates = array();
                foreach ( $urls as $density => $url ) {
                        // Image candidate syntax per current whatwg live spec, 2012-09-23:
-                       // http://www.whatwg.org/specs/web-apps/current-work/multipage/embedded-content-1.html#attr-img-srcset
+                       // http://www.whatwg.org/html/embedded-content-1.html#attr-img-srcset
                        $candidates[] = "{$url} {$density}x";
                }
                return implode( ", ", $candidates );
index a6ef99a..444857a 100644 (file)
@@ -220,7 +220,7 @@ class MWHttpRequest {
         * @param array $options (optional) extra params to pass (see Http::request())
         */
        protected function __construct( $url, $options = array() ) {
-               global $wgHTTPTimeout;
+               global $wgHTTPTimeout, $wgHTTPConnectTimeout;
 
                $this->url = wfExpandUrl( $url, PROTO_HTTP );
                $this->parsedUrl = wfParseUrl( $this->url );
index 43cf7f6..5b45404 100644 (file)
@@ -286,6 +286,10 @@ class ImageGallery {
                                # We're dealing with a non-image, spit out the name and be done with it.
                                $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">'
                                        . htmlspecialchars( $nt->getText() ) . '</div>';
+
+                               if ( $this->mParser instanceof Parser ) {
+                                       $this->mParser->addTrackingCategory( 'broken-file-category' );
+                               }
                        } elseif ( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
                                # The image is blacklisted, just show it as a text link.
                                $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">' .
index a5beb5d..8cfbc73 100644 (file)
@@ -311,6 +311,12 @@ class ImagePage extends Article {
                        } else {
                                $params = array( 'page' => $page );
                        }
+
+                       $renderLang = $request->getVal( 'lang' );
+                       if ( !is_null( $renderLang ) ) {
+                               $params['lang'] = $renderLang;
+                       }
+
                        $width_orig = $this->displayImg->getWidth( $page );
                        $width = $width_orig;
                        $height_orig = $this->displayImg->getHeight( $page );
index 4b1b5b8..0b7393a 100644 (file)
@@ -237,22 +237,36 @@ class LinksUpdate extends SqlDataUpdate {
                wfProfileOut( __METHOD__ );
        }
 
+       /**
+        * Queue recursive jobs for this page
+        *
+        * Which means do LinksUpdate on all templates
+        * that include the current page, using the job queue.
+        */
        function queueRecursiveJobs() {
-               wfProfileIn( __METHOD__ );
+               self::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
+       }
 
-               if ( $this->mTitle->getBacklinkCache()->hasLinks( 'templatelinks' ) ) {
+       /**
+        * Queue a RefreshLinks job for any table.
+        *
+        * @param Title $title Title to do job for
+        * @param String $table Table to use (e.g. 'templatelinks')
+        */
+       public static function queueRecursiveJobsForTable( Title $title, $table ) {
+               wfProfileIn( __METHOD__ );
+               if ( $title->getBacklinkCache()->hasLinks( $table ) ) {
                        $job = new RefreshLinksJob2(
-                               $this->mTitle,
+                               $title,
                                array(
-                                       'table' => 'templatelinks',
+                                       'table' => $table,
                                ) + Job::newRootJobParams( // "overall" refresh links job info
-                                       "refreshlinks:templatelinks:{$this->mTitle->getPrefixedText()}"
+                                       "refreshlinks:{$table}:{$title->getPrefixedText()}"
                                )
                        );
                        JobQueueGroup::singleton()->push( $job );
                        JobQueueGroup::singleton()->deduplicateRootJob( $job );
                }
-
                wfProfileOut( __METHOD__ );
        }
 
index 0849afd..3657ac3 100644 (file)
@@ -39,9 +39,6 @@ class OutputPage extends ContextSource {
        /// Should be private. Used with addMeta() which adds "<meta>"
        var $mMetatags = array();
 
-       /// "<meta keywords='stuff'>" most of the time the first 10 links to an article
-       var $mKeywords = array();
-
        var $mLinktags = array();
        var $mCanonicalUrl = false;
 
@@ -313,19 +310,6 @@ class OutputPage extends ContextSource {
                array_push( $this->mMetatags, array( $name, $val ) );
        }
 
-       /**
-        * Add a keyword or a list of keywords in the page header
-        *
-        * @param string $text or array of strings
-        */
-       function addKeyword( $text ) {
-               if ( is_array( $text ) ) {
-                       $this->mKeywords = array_merge( $this->mKeywords, $text );
-               } else {
-                       array_push( $this->mKeywords, $text );
-               }
-       }
-
        /**
         * Add a new \<link\> tag to the page header.
         *
@@ -2102,7 +2086,7 @@ class OutputPage extends ContextSource {
         * Actually output something with print.
         *
         * @param string $ins the string to output
-        * @deprecated since 1.20 Use echo yourself.
+        * @deprecated since 1.22 Use echo yourself.
         */
        public function out( $ins ) {
                wfDeprecated( __METHOD__, '1.22' );
@@ -2528,8 +2512,8 @@ $templates
                        // The spec recommends defining XHTML5's charset using the XML declaration
                        // instead of meta.
                        // Our XML declaration is output by Html::htmlHeader.
-                       // http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#attr-meta-http-equiv-content-type
-                       // http://www.whatwg.org/specs/web-apps/current-work/multipage/semantics.html#charset
+                       // http://www.whatwg.org/html/semantics.html#attr-meta-http-equiv-content-type
+                       // http://www.whatwg.org/html/semantics.html#charset
                        $ret .= Html::element( 'meta', array( 'charset' => 'UTF-8' ) );
                }
 
@@ -3140,21 +3124,6 @@ $templates
                        ) );
                }
 
-               if ( count( $this->mKeywords ) > 0 ) {
-                       $strip = array(
-                               "/<.*?" . ">/" => '',
-                               "/_/" => ' '
-                       );
-                       $tags['meta-keywords'] = Html::element( 'meta', array(
-                               'name' => 'keywords',
-                               'content' => preg_replace(
-                                       array_keys( $strip ),
-                                       array_values( $strip ),
-                                       implode( ',', $this->mKeywords )
-                               )
-                       ) );
-               }
-
                foreach ( $this->mMetatags as $tag ) {
                        if ( 0 == strcasecmp( 'http:', substr( $tag[0], 0, 5 ) ) ) {
                                $a = 'http-equiv';
index 47626a2..b3b971b 100644 (file)
@@ -867,24 +867,37 @@ class Revision implements IDBAccessObject {
        }
 
        /**
-        * @return Integer rcid of the unpatrolled row, zero if there isn't one
+        * @return integer rcid of the unpatrolled row, zero if there isn't one
         */
        public function isUnpatrolled() {
                if ( $this->mUnpatrolled !== null ) {
                        return $this->mUnpatrolled;
                }
+               $rc = $this->getRecentChange();
+               if ( $rc && $rc->getAttribute( 'rc_patrolled' ) == 0 ) {
+                       $this->mUnpatrolled = $rc->getAttribute( 'rc_id' );
+               } else {
+                       $this->mUnpatrolled = 0;
+               }
+               return $this->mUnpatrolled;
+       }
+
+       /**
+        * Get the RC object belonging to the current revision, if there's one
+        *
+        * @since 1.22
+        * @return RecentChange|null
+        */
+       public function getRecentChange() {
                $dbr = wfGetDB( DB_SLAVE );
-               $this->mUnpatrolled = $dbr->selectField( 'recentchanges',
-                       'rc_id',
-                       array( // Add redundant user,timestamp condition so we can use the existing index
+               return RecentChange::newFromConds(
+                       array(
                                'rc_user_text' => $this->getRawUserText(),
                                'rc_timestamp' => $dbr->timestamp( $this->getTimestamp() ),
-                               'rc_this_oldid' => $this->getId(),
-                               'rc_patrolled' => 0
+                               'rc_this_oldid' => $this->getId()
                        ),
                        __METHOD__
                );
-               return (int)$this->mUnpatrolled;
        }
 
        /**
index b4a1c62..7400a5a 100644 (file)
@@ -740,7 +740,7 @@ class Sanitizer {
 
                        # WAI-ARIA
                        # http://www.w3.org/TR/wai-aria/
-                       # http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#wai-aria
+                       # http://www.whatwg.org/html/elements.html#wai-aria
                        # For now we only support role="presentation" until we work out what roles should be
                        # usable by content and we ensure that our code explicitly rejects patterns that
                        # violate HTML5's ARIA restrictions.
@@ -1011,7 +1011,7 @@ class Sanitizer {
         *                                                          in the id and
         *                                                          name attributes
         * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with the id attribute
-        * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#the-id-attribute
+        * @see http://www.whatwg.org/html/elements.html#the-id-attribute
         *   HTML5 definition of id attribute
         *
         * @param string $id id to escape
@@ -1467,7 +1467,7 @@ class Sanitizer {
                }
 
                if ( $wgAllowMicrodataAttributes ) {
-                       # add HTML5 microdata tags as specified by http://www.whatwg.org/specs/web-apps/current-work/multipage/microdata.html#the-microdata-model
+                       # add HTML5 microdata tags as specified by http://www.whatwg.org/html/microdata.html#the-microdata-model
                        $common = array_merge( $common, array(
                                'itemid', 'itemprop', 'itemref', 'itemscope', 'itemtype'
                        ) );
@@ -1606,7 +1606,7 @@ class Sanitizer {
                        'hr'         => array_merge( $common, array( 'noshade', 'size', 'width' ) ),
 
                        # HTML Ruby annotation text module, simple ruby only.
-                       # http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-ruby-element
+                       # http://www.whatwg.org/html/text-level-semantics.html#the-ruby-element
                        'ruby'       => $common,
                        # rbc
                        # rtc
@@ -1623,7 +1623,7 @@ class Sanitizer {
                        'bdi' => $common,
 
                        # HTML5 elements, defined by:
-                       # http://www.whatwg.org/specs/web-apps/current-work/multipage/
+                       # http://www.whatwg.org/html/
                        'data' => array_merge( $common, array( 'value' ) ),
                        'time' => array_merge( $common, array( 'datetime' ) ),
                        'mark' => $common,
@@ -1740,7 +1740,7 @@ class Sanitizer {
         * Does a string look like an e-mail address?
         *
         * This validates an email address using an HTML5 specification found at:
-        * http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+        * http://www.whatwg.org/html/states-of-the-type-attribute.html#valid-e-mail-address
         * Which as of 2011-01-24 says:
         *
         *   A valid e-mail address is a string that matches the ABNF production
diff --git a/includes/SeleniumWebSettings.php b/includes/SeleniumWebSettings.php
deleted file mode 100644 (file)
index 2fcbe65..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-<?php
-/**
- * Dynamically change configuration variables based on the test suite name and a cookie value.
- *
- * For details on how to configure a wiki for a Selenium test, see:
- * http://www.mediawiki.org/wiki/SeleniumFramework#Test_Wiki_configuration
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( 1 );
-}
-
-require_once "$IP/includes/GlobalFunctions.php";
-
-$fname = 'SeleniumWebSettings.php';
-wfProfileIn( $fname );
-
-$cookiePrefix = $wgSitename . '-';
-$cookieName = $cookiePrefix . 'Selenium';
-
-// this is a fallback SQL file
-$testSqlFile = false;
-$testImageZip = false;
-
-// if we find a request parameter containing the test name, set a cookie with the test name
-if ( isset( $_GET['setupTestSuite'] ) ) {
-       $setupTestSuiteName = $_GET['setupTestSuite'];
-
-       if (
-               preg_match( '/[^a-zA-Z0-9_-]/', $setupTestSuiteName ) ||
-               !isset( $wgSeleniumTestConfigs[$setupTestSuiteName] )
-       )
-       {
-               return;
-       }
-       if ( strlen( $setupTestSuiteName ) > 0 ) {
-               $expire = time() + 600;
-               setcookie(
-                       $cookieName,
-                       $setupTestSuiteName,
-                       $expire,
-                       $wgCookiePath,
-                       $wgCookieDomain,
-                       $wgCookieSecure,
-                       true
-               );
-       }
-
-       $testIncludes = array(); // array containing all the includes needed for this test
-       $testGlobalConfigs = array(); // an array containing all the global configs needed for this test
-       $testResourceFiles = array(); // an array containing all the resource files needed for this test
-       $callback = $wgSeleniumTestConfigs[$setupTestSuiteName];
-       call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles ) );
-
-       if ( isset( $testResourceFiles['images'] ) ) {
-               $testImageZip = $testResourceFiles['images'];
-       }
-
-       if ( isset( $testResourceFiles['db'] ) ) {
-               $testSqlFile = $testResourceFiles['db'];
-               $testResourceName = getTestResourceNameFromTestSuiteName( $setupTestSuiteName );
-
-               switchToTestResources( $testResourceName, false ); // false means do not switch database yet
-               setupTestResources( $testResourceName, $testSqlFile, $testImageZip );
-       }
-}
-
-// clear the cookie based on a request param
-if ( isset( $_GET['clearTestSuite'] ) ) {
-       $testSuiteName = getTestSuiteNameFromCookie( $cookieName );
-
-       $expire = time() - 600;
-       setcookie(
-               $cookieName,
-               '',
-               $expire,
-               $wgCookiePath,
-               $wgCookieDomain,
-               $wgCookieSecure,
-               true
-       );
-
-       $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName );
-       teardownTestResources( $testResourceName );
-}
-
-// if a cookie is found, run the appropriate callback to get the config params.
-if ( isset( $_COOKIE[$cookieName] ) ) {
-       $testSuiteName = getTestSuiteNameFromCookie( $cookieName );
-       if ( !isset( $wgSeleniumTestConfigs[$testSuiteName] ) ) {
-               return;
-       }
-
-       $testIncludes = array(); // array containing all the includes needed for this test
-       $testGlobalConfigs = array(); // an array containing all the global configs needed for this test
-       $testResourceFiles = array(); // an array containing all the resource files needed for this test
-       $callback = $wgSeleniumTestConfigs[$testSuiteName];
-       call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles ) );
-
-       if ( isset( $testResourceFiles['db'] ) ) {
-               $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName );
-               switchToTestResources( $testResourceName );
-       }
-       foreach ( $testIncludes as $includeFile ) {
-               $file = $IP . '/' . $includeFile;
-               require_once $file;
-       }
-       foreach ( $testGlobalConfigs as $key => $value ) {
-               if ( is_array( $value ) ) {
-                       $GLOBALS[$key] = array_merge( $GLOBALS[$key], $value );
-               } else {
-                       $GLOBALS[$key] = $value;
-               }
-       }
-}
-
-wfProfileOut( $fname );
-
-function getTestSuiteNameFromCookie( $cookieName ) {
-       $testSuiteName = null;
-       if ( isset( $_COOKIE[$cookieName] ) ) {
-               $testSuiteName = $_COOKIE[$cookieName];
-       }
-       return $testSuiteName;
-}
-
-function getTestResourceNameFromTestSuiteName( $testSuiteName ) {
-       $testResourceName = null;
-       if ( isset( $testSuiteName ) ) {
-               $testResourceName = $testSuiteName;
-       }
-       return $testResourceName;
-}
-
-function getTestUploadPathFromResourceName( $testResourceName ) {
-       global $IP;
-       $testUploadPath = "$IP/images/$testResourceName";
-       return $testUploadPath;
-}
-
-function setupTestResources( $testResourceName, $testSqlFile, $testImageZip ) {
-       global $wgDBname;
-
-       // Basic security. Do not allow to drop productive database.
-       if ( $testResourceName == $wgDBname ) {
-               die( 'Cannot override productive database.' );
-       }
-       if ( $testResourceName == '' ) {
-               die( 'Cannot identify a test the resources should be installed for.' );
-       }
-
-       // create tables
-       $dbw = wfGetDB( DB_MASTER );
-       $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName );
-       $dbw->query( 'CREATE DATABASE ' . $testResourceName );
-
-       // do not set the new DB name before database is setup
-       $wgDBname = $testResourceName;
-       $dbw->selectDB( $testResourceName );
-       // populate from SQL file
-       if ( $testSqlFile ) {
-               $dbw->sourceFile( $testSqlFile );
-       }
-
-       // create test image dir
-       $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
-       if ( !file_exists( $testUploadPath ) ) {
-               mkdir( $testUploadPath );
-       }
-
-       if ( $testImageZip ) {
-               $zip = new ZipArchive();
-               $zip->open( $testImageZip );
-               $zip->extractTo( $testUploadPath );
-               $zip->close();
-       }
-}
-
-function teardownTestResources( $testResourceName ) {
-       // remove test database
-       $dbw = wfGetDB( DB_MASTER );
-       $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName );
-
-       $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
-       // remove test image dir
-       if ( file_exists( $testUploadPath ) ) {
-               wfRecursiveRemoveDir( $testUploadPath );
-       }
-}
-
-function switchToTestResources( $testResourceName, $switchDB = true ) {
-       global $wgDBuser, $wgDBpassword, $wgDBname;
-       global $wgDBtestuser, $wgDBtestpassword;
-       global $wgUploadPath;
-
-       if ( $switchDB ) {
-               $wgDBname = $testResourceName;
-       }
-       $wgDBuser = $wgDBtestuser;
-       $wgDBpassword = $wgDBtestpassword;
-
-       $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
-       $wgUploadPath = $testUploadPath;
-}
index a543126..9d42b2f 100644 (file)
@@ -1891,12 +1891,19 @@ class Title {
                # Protect css/js subpages of user pages
                # XXX: this might be better using restrictions
                # XXX: right 'editusercssjs' is deprecated, for backward compatibility only
-               if ( $action != 'patrol' && !$user->isAllowed( 'editusercssjs' )
-                               && !preg_match( '/^' . preg_quote( $user->getName(), '/' ) . '\//', $this->mTextform ) ) {
-                       if ( $this->isCssSubpage() && !$user->isAllowed( 'editusercss' ) ) {
-                               $errors[] = array( 'customcssprotected' );
-                       } elseif ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
-                               $errors[] = array( 'customjsprotected' );
+               if ( $action != 'patrol' && !$user->isAllowed( 'editusercssjs' ) ) {
+                       if ( preg_match( '/^' . preg_quote( $user->getName(), '/' ) . '\//', $this->mTextform ) ) {
+                               if ( $this->isCssSubpage() && !$user->isAllowedAny( 'editmyusercss', 'editusercss' ) ) {
+                                       $errors[] = array( 'mycustomcssprotected' );
+                               } elseif ( $this->isJsSubpage() && !$user->isAllowedAny( 'editmyuserjs', 'edituserjs' ) ) {
+                                       $errors[] = array( 'mycustomjsprotected' );
+                               }
+                       } else {
+                               if ( $this->isCssSubpage() && !$user->isAllowed( 'editusercss' ) ) {
+                                       $errors[] = array( 'customcssprotected' );
+                               } elseif ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
+                                       $errors[] = array( 'customjsprotected' );
+                               }
                        }
                }
 
@@ -2242,36 +2249,6 @@ class Title {
                return $errors;
        }
 
-       /**
-        * Protect css subpages of user pages: can $wgUser edit
-        * this page?
-        *
-        * @deprecated in 1.19; use getUserPermissionsErrors() instead.
-        * @return Bool
-        */
-       public function userCanEditCssSubpage() {
-               global $wgUser;
-               wfDeprecated( __METHOD__, '1.19' );
-               return ( ( $wgUser->isAllowedAll( 'editusercssjs', 'editusercss' ) )
-                       || preg_match( '/^' . preg_quote( $wgUser->getName(), '/' ) . '\//', $this->mTextform ) );
-       }
-
-       /**
-        * Protect js subpages of user pages: can $wgUser edit
-        * this page?
-        *
-        * @deprecated in 1.19; use getUserPermissionsErrors() instead.
-        * @return Bool
-        */
-       public function userCanEditJsSubpage() {
-               global $wgUser;
-               wfDeprecated( __METHOD__, '1.19' );
-               return (
-                       ( $wgUser->isAllowedAll( 'editusercssjs', 'edituserjs' ) )
-                       || preg_match( '/^' . preg_quote( $wgUser->getName(), '/' ) . '\//', $this->mTextform )
-               );
-       }
-
        /**
         * Get a filtered list of all restriction types supported by this wiki.
         * @param bool $exists True to get all restriction types that apply to
@@ -2945,11 +2922,13 @@ class Title {
                $linkCache = LinkCache::singleton();
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'redirect' );
                if ( $cached === null ) {
-                       // TODO: check the assumption that the cache actually knows about this title
-                       // and handle this, such as get the title from the database.
-                       // See https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       wfDebug( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
-                       wfDebug( wfBacktrace() );
+                       # Trust LinkCache's state over our own
+                       # LinkCache is telling us that the page doesn't exist, despite there being cached
+                       # data relating to an existing page in $this->mArticleID. Updaters should clear
+                       # LinkCache as appropriate, or use $flags = Title::GAID_FOR_UPDATE. If that flag is
+                       # set, then LinkCache will definitely be up to date here, since getArticleID() forces
+                       # LinkCache to refresh its data from the master.
+                       return $this->mRedirect = false;
                }
 
                $this->mRedirect = (bool)$cached;
@@ -2974,11 +2953,9 @@ class Title {
                }
                $linkCache = LinkCache::singleton();
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
-               if ( $cached === null ) { # check the assumption that the cache actually knows about this title
-                       # XXX: this does apparently happen, see https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       #      as a stop gap, perhaps log this, but don't throw an exception?
-                       wfDebug( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
-                       wfDebug( wfBacktrace() );
+               if ( $cached === null ) {
+                       # Trust LinkCache's state over our own, as for isRedirect()
+                       return $this->mLength = 0;
                }
 
                $this->mLength = intval( $cached );
@@ -2990,7 +2967,6 @@ class Title {
         * What is the page_latest field for this page?
         *
         * @param int $flags a bit field; may be Title::GAID_FOR_UPDATE to select for update
-        * @throws MWException
         * @return Int or 0 if the page doesn't exist
         */
        public function getLatestRevID( $flags = 0 ) {
@@ -3004,10 +2980,9 @@ class Title {
                $linkCache = LinkCache::singleton();
                $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
-               if ( $cached === null ) { # check the assumption that the cache actually knows about this title
-                       # XXX: this does apparently happen, see https://bugzilla.wikimedia.org/show_bug.cgi?id=37209
-                       #      as a stop gap, perhaps log this, but don't throw an exception?
-                       throw new MWException( "LinkCache doesn't currently know about this title: " . $this->getPrefixedDBkey() );
+               if ( $cached === null ) {
+                       # Trust LinkCache's state over our own, as for isRedirect()
+                       return $this->mLatestID = 0;
                }
 
                $this->mLatestID = intval( $cached );
index 699ea67..b6d2377 100644 (file)
@@ -124,6 +124,8 @@ class User {
                'edit',
                'editinterface',
                'editprotected',
+               'editmyusercss',
+               'editmyuserjs',
                'editusercssjs', #deprecated
                'editusercss',
                'edituserjs',
@@ -731,7 +733,7 @@ class User {
         * Does a string look like an e-mail address?
         *
         * This validates an email address using an HTML5 specification found at:
-        * http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+        * http://www.whatwg.org/html/states-of-the-type-attribute.html#valid-e-mail-address
         * Which as of 2011-01-24 says:
         *
         *     A valid e-mail address is a string that matches the ABNF production
@@ -3270,6 +3272,7 @@ class User {
                $this->mTouched = self::newTouchedTimestamp();
 
                $dbw = wfGetDB( DB_MASTER );
+               $inWrite = $dbw->writesOrCallbacksPending();
                $seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' );
                $dbw->insert( 'user',
                        array(
@@ -3289,6 +3292,12 @@ class User {
                        array( 'IGNORE' )
                );
                if ( !$dbw->affectedRows() ) {
+                       if ( !$inWrite ) {
+                               // XXX: Get out of REPEATABLE-READ so the SELECT below works.
+                               // Often this case happens early in views before any writes.
+                               // This shows up at least with CentralAuth.
+                               $dbw->commit( __METHOD__, 'flush' );
+                       }
                        $this->mId = $dbw->selectField( 'user', 'user_id',
                                array( 'user_name' => $this->mName ), __METHOD__ );
                        $loaded = false;
index e48070a..8e3f048 100644 (file)
@@ -258,6 +258,8 @@ class UserMailer {
                        wfDebug( "Assembling multipart mime email\n" );
                        if ( !stream_resolve_include_path( 'Mail/mime.php' ) ) {
                                wfDebug( "PEAR Mail_Mime package is not installed. Falling back to text email.\n" );
+                               // remove the html body for text email fall back
+                               $body = $body['text'];
                        }
                        else {
                                require_once 'Mail/mime.php';
@@ -668,11 +670,13 @@ class EmailNotification {
                        } elseif ( $targetUser->getOption( 'enotifusertalkpages' ) &&
                                ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) ) )
                        {
-                               if ( $targetUser->isEmailConfirmed() ) {
+                               if ( !$targetUser->isEmailConfirmed() ) {
+                                       wfDebug( __METHOD__ . ": talk page owner doesn't have validated email\n" );
+                               } elseif ( !wfRunHooks( 'AbortTalkPageEmailNotification', array( $targetUser, $title ) ) ) {
+                                       wfDebug( __METHOD__ . ": talk page update notification is aborted for this user\n" );
+                               } else {
                                        wfDebug( __METHOD__ . ": sending talk page update notification\n" );
                                        return true;
-                               } else {
-                                       wfDebug( __METHOD__ . ": talk page owner doesn't have validated email\n" );
                                }
                        } else {
                                wfDebug( __METHOD__ . ": talk page owner doesn't want notifications\n" );
index ead6d77..901b1e8 100644 (file)
@@ -91,6 +91,11 @@ if ( $IP === false ) {
        }
 }
 
+# Load composer's autoloader if present
+if ( is_readable( "$IP/vendor/autoload.php" ) ) {
+       require_once "$IP/vendor/autoload.php";
+}
+
 # Get MWInit class
 require_once "$IP/includes/Init.php";
 
@@ -134,10 +139,6 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
        require_once MW_CONFIG_FILE;
 }
 
-if ( $wgEnableSelenium ) {
-       require_once "$IP/includes/SeleniumWebSettings.php";
-}
-
 wfProfileOut( 'WebStart.php-conf' );
 
 wfProfileIn( 'WebStart.php-ob_start' );
index 3f7e19c..cb0f60a 100644 (file)
@@ -624,27 +624,34 @@ class MediaWiki {
                        wfShellExec( "$cmd &", $retVal );
                        wfProfileOut( __METHOD__ . '-exec' );
                } else {
-                       // Fallback to running the jobs here while the user waits
-                       $group = JobQueueGroup::singleton();
-                       do {
-                               $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
-                               if ( $job ) {
-                                       $output = $job->toString() . "\n";
-                                       $t = - microtime( true );
-                                       wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
-                                       $success = $job->run();
-                                       wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
-                                       $group->ack( $job ); // done
-                                       $t += microtime( true );
-                                       $t = round( $t * 1000 );
-                                       if ( $success === false ) {
-                                               $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
-                                       } else {
-                                               $output .= "Success, Time: $t ms\n";
+                       try {
+                               // Fallback to running the jobs here while the user waits
+                               $group = JobQueueGroup::singleton();
+                               do {
+                                       $job = $group->pop( JobQueueGroup::USE_CACHE ); // job from any queue
+                                       if ( $job ) {
+                                               $output = $job->toString() . "\n";
+                                               $t = - microtime( true );
+                                               wfProfileIn( __METHOD__ . '-' . get_class( $job ) );
+                                               $success = $job->run();
+                                               wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
+                                               $group->ack( $job ); // done
+                                               $t += microtime( true );
+                                               $t = round( $t * 1000 );
+                                               if ( $success === false ) {
+                                                       $output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
+                                               } else {
+                                                       $output .= "Success, Time: $t ms\n";
+                                               }
+                                               wfDebugLog( 'jobqueue', $output );
                                        }
-                                       wfDebugLog( 'jobqueue', $output );
-                               }
-                       } while ( --$n && $job );
+                               } while ( --$n && $job );
+                       } catch ( MWException $e ) {
+                               // We don't want exceptions thrown during job execution to
+                               // be reported to the user since the output is already sent.
+                               // Instead we just log them.
+                               wfDebugLog( 'exception', $e->getLogMessage() );
+                       }
                }
        }
 }
index a3cb4b5..398a424 100644 (file)
@@ -2109,8 +2109,7 @@ class WikiPage implements Page, IDBAccessObject {
                }
 
                DeferredUpdates::addUpdate( new SiteStatsUpdate( 0, 1, $good, $total ) );
-               DeferredUpdates::addUpdate( new SearchUpdate( $id, $title, $content->getTextForSearchIndex() ) );
-               // @todo let the search engine decide what to do with the content object
+               DeferredUpdates::addUpdate( new SearchUpdate( $id, $title, $content ) );
 
                // If this is another user's talk page, update newtalk.
                // Don't do this if $options['changed'] = false (null-edits) nor if
@@ -2648,7 +2647,7 @@ class WikiPage implements Page, IDBAccessObject {
        /**
         * Do some database updates after deletion
         *
-        * @param int $id page_id value of the page being deleted (B/C, currently unused)
+        * @param int $id page_id value of the page being deleted
         * @param $content Content: optional page content to be used when determining the required updates.
         *        This may be needed because $this->getContent() may already return null when the page proper was deleted.
         */
@@ -2665,6 +2664,9 @@ class WikiPage implements Page, IDBAccessObject {
 
                // Reset this object and the Title object
                $this->loadFromRow( false, self::READ_LATEST );
+
+               // Search engine
+               DeferredUpdates::addUpdate( new SearchUpdate( $id, $this->mTitle ) );
        }
 
        /**
@@ -3041,30 +3043,8 @@ class WikiPage implements Page, IDBAccessObject {
                        function() use ( $dbw, $that, $method, $added, $deleted ) {
                                $ns = $that->getTitle()->getNamespace();
 
-                               // First make sure the rows exist.  If one of the "deleted" ones didn't
-                               // exist, we might legitimately not create it, but it's simpler to just
-                               // create it and then give it a negative value, since the value is bogus
-                               // anyway.
-                               //
-                               // Sometimes I wish we had INSERT ... ON DUPLICATE KEY UPDATE.
-                               $insertCats = array_merge( $added, $deleted );
-                               if ( !$insertCats ) {
-                                       // Okay, nothing to do
-                                       return;
-                               }
-
-                               $insertRows = array();
-                               foreach ( $insertCats as $cat ) {
-                                       $insertRows[] = array(
-                                               'cat_id' => $dbw->nextSequenceValue( 'category_cat_id_seq' ),
-                                               'cat_title' => $cat
-                                       );
-                               }
-                               $dbw->insert( 'category', $insertRows, $method, 'IGNORE' );
-
                                $addFields = array( 'cat_pages = cat_pages + 1' );
                                $removeFields = array( 'cat_pages = cat_pages - 1' );
-
                                if ( $ns == NS_CATEGORY ) {
                                        $addFields[] = 'cat_subcats = cat_subcats + 1';
                                        $removeFields[] = 'cat_subcats = cat_subcats - 1';
@@ -3073,16 +3053,26 @@ class WikiPage implements Page, IDBAccessObject {
                                        $removeFields[] = 'cat_files = cat_files - 1';
                                }
 
-                               if ( $added ) {
-                                       $dbw->update(
+                               if ( count( $added ) ) {
+                                       $insertRows = array();
+                                       foreach ( $added as $cat ) {
+                                               $insertRows[] = array(
+                                                       'cat_title'   => $cat,
+                                                       'cat_pages'   => 1,
+                                                       'cat_subcats' => ( $ns == NS_CATEGORY ) ? 1 : 0,
+                                                       'cat_files'   => ( $ns == NS_FILE ) ? 1 : 0,
+                                               );
+                                       }
+                                       $dbw->upsert(
                                                'category',
+                                               $insertRows,
+                                               array( 'cat_title' ),
                                                $addFields,
-                                               array( 'cat_title' => $added ),
                                                $method
                                        );
                                }
 
-                               if ( $deleted ) {
+                               if ( count( $deleted ) ) {
                                        $dbw->update(
                                                'category',
                                                $removeFields,
@@ -3095,6 +3085,7 @@ class WikiPage implements Page, IDBAccessObject {
                                        $cat = Category::newFromName( $catName );
                                        wfRunHooks( 'CategoryAfterPageAdded', array( $cat, $that ) );
                                }
+
                                foreach ( $deleted as $catName ) {
                                        $cat = Category::newFromName( $catName );
                                        wfRunHooks( 'CategoryAfterPageRemoved', array( $cat, $that ) );
index 25dde7d..92ca7d8 100644 (file)
@@ -40,16 +40,52 @@ class XmlTypeCheck {
        public $rootElement = '';
 
        /**
-        * @param string $file filename
-        * @param $filterCallback callable (optional)
+        * @param string $input a filename or string containing the XML element
+        * @param callable $filterCallback (optional)
         *        Function to call to do additional custom validity checks from the
         *        SAX element handler event. This gives you access to the element
         *        namespace, name, and attributes, but not to text contents.
         *        Filter should return 'true' to toggle on $this->filterMatch
+        * @param boolean $isFile (optional) indicates if the first parameter is a
+        *        filename (default, true) or if it is a string (false)
         */
-       function __construct( $file, $filterCallback = null ) {
+       function __construct( $input, $filterCallback = null, $isFile = true ) {
                $this->filterCallback = $filterCallback;
-               $this->run( $file );
+               if ( $isFile ) {
+                       $this->validateFromFile( $input );
+               } else {
+                       $this->validateFromString( $input );
+               }
+       }
+
+       /**
+        * Alternative constructor: from filename
+        *
+        * @param string $fname the filename of an XML document
+        * @param callable $filterCallback (optional)
+        *        Function to call to do additional custom validity checks from the
+        *        SAX element handler event. This gives you access to the element
+        *        namespace, name, and attributes, but not to text contents.
+        *        Filter should return 'true' to toggle on $this->filterMatch
+        * @return XmlTypeCheck
+        */
+       public static function newFromFilename( $fname, $filterCallback = null ) {
+               return new self( $fname, $filterCallback, true );
+       }
+
+       /**
+        * Alternative constructor: from string
+        *
+        * @param string $string a string containing an XML element
+        * @param callable $filterCallback (optional)
+        *        Function to call to do additional custom validity checks from the
+        *        SAX element handler event. This gives you access to the element
+        *        namespace, name, and attributes, but not to text contents.
+        *        Filter should return 'true' to toggle on $this->filterMatch
+        * @return XmlTypeCheck
+        */
+       public static function newFromString( $string, $filterCallback = null ) {
+               return new self( $string, $filterCallback, false );
        }
 
        /**
@@ -62,15 +98,23 @@ class XmlTypeCheck {
        }
 
        /**
-        * @param $fname
+        * Get an XML parser with the root element handler.
+        * @see XmlTypeCheck::rootElementOpen()
+        * @return resource a resource handle for the XML parser
         */
-       private function run( $fname ) {
+       private function getParser() {
                $parser = xml_parser_create_ns( 'UTF-8' );
-
                // case folding violates XML standard, turn it off
                xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
-
                xml_set_element_handler( $parser, array( $this, 'rootElementOpen' ), false );
+               return $parser;
+       }
+
+       /**
+        * @param string $fname the filename
+        */
+       private function validateFromFile( $fname ) {
+               $parser = $this->getParser();
 
                if ( file_exists( $fname ) ) {
                        $file = fopen( $fname, "rb" );
@@ -79,7 +123,7 @@ class XmlTypeCheck {
                                        $chunk = fread( $file, 32768 );
                                        $ret = xml_parse( $parser, $chunk, feof( $file ) );
                                        if ( $ret == 0 ) {
-                                               // XML isn't well-formed!
+                                               $this->wellFormed = false;
                                                fclose( $file );
                                                xml_parser_free( $parser );
                                                return;
@@ -89,12 +133,26 @@ class XmlTypeCheck {
                                fclose( $file );
                        }
                }
-
                $this->wellFormed = true;
 
                xml_parser_free( $parser );
        }
 
+       /**
+        *
+        * @param string $string the XML-input-string to be checked.
+        */
+       private function validateFromString( $string ) {
+               $parser = $this->getParser();
+               $ret = xml_parse( $parser, $string, true );
+               xml_parser_free( $parser );
+               if ( $ret == 0 ) {
+                       $this->wellFormed = false;
+                       return;
+               }
+               $this->wellFormed = true;
+       }
+
        /**
         * @param $parser
         * @param $name
index 7cd1f72..e3ea6fc 100644 (file)
@@ -66,8 +66,8 @@ class InfoAction extends FormlessAction {
                // Clear page info.
                $revision = WikiPage::factory( $title )->getRevision();
                if ( $revision !== null ) {
-                       $memcKey = wfMemcKey( 'infoaction', $title->getPrefixedText(), $revision->getId() );
-                       $wgMemc->delete( $memcKey );
+                       $key = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $revision->getId() );
+                       $wgMemc->delete( $key );
                }
        }
 
@@ -185,14 +185,16 @@ class InfoAction extends FormlessAction {
         * @return array
         */
        protected function pageInfo() {
-               global $wgContLang, $wgRCMaxAge, $wgMemc, $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
+               global $wgContLang, $wgRCMaxAge, $wgMemc,
+                       $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
 
                $user = $this->getUser();
                $lang = $this->getLanguage();
                $title = $this->getTitle();
                $id = $title->getArticleID();
 
-               $memcKey = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $this->page->getLatest() );
+               $memcKey = wfMemcKey( 'infoaction',
+                       sha1( $title->getPrefixedText() ), $this->page->getLatest() );
                $pageCounts = $wgMemc->get( $memcKey );
                if ( $pageCounts === false ) {
                        // Get page information that would be too "expensive" to retrieve by normal means
index de9e1d6..b1c4811 100644 (file)
@@ -87,24 +87,42 @@ class WatchAction extends FormAction {
                return parent::checkCanExecute( $user );
        }
 
+       /**
+        * Watch a page
+        * @since 1.22 Returns Status object
+        * @param Title $title Page to watch/unwatch
+        * @param User $user User who is watching/unwatching
+        * @return Status
+        */
        public static function doWatch( Title $title, User $user ) {
                $page = WikiPage::factory( $title );
 
-               if ( wfRunHooks( 'WatchArticle', array( &$user, &$page ) ) ) {
+               $status = Status::newFatal( 'hookaborted' );
+               if ( wfRunHooks( 'WatchArticle', array( &$user, &$page, &$status ) ) ) {
+                       $status = Status::newGood();
                        $user->addWatch( $title );
                        wfRunHooks( 'WatchArticleComplete', array( &$user, &$page ) );
                }
-               return true;
+               return $status;
        }
 
+       /**
+        * Unwatch a page
+        * @since 1.22 Returns Status
+        * @param Title $title Page to watch/unwatch
+        * @param User $user User who is watching/unwatching
+        * @return Status
+        */
        public static function doUnwatch( Title $title, User $user ) {
                $page = WikiPage::factory( $title );
 
-               if ( wfRunHooks( 'UnwatchArticle', array( &$user, &$page ) ) ) {
+               $status = Status::newFatal( 'hookaborted' );
+               if ( wfRunHooks( 'UnwatchArticle', array( &$user, &$page, &$status ) ) ) {
+                       $status = Status::newGood();
                        $user->removeWatch( $title );
                        wfRunHooks( 'UnwatchArticleComplete', array( &$user, &$page ) );
                }
-               return true;
+               return $status;
        }
 
        /**
index fdf3b76..e6e784f 100644 (file)
@@ -1221,6 +1221,44 @@ abstract class ApiBase extends ContextSource {
                throw new UsageException( $description, $this->encodeParamName( $errorCode ), $httpRespCode, $extradata );
        }
 
+       /**
+        * Throw a UsageException based on the errors in the Status object.
+        *
+        * @since 1.22
+        * @param Status $status Status object
+        * @throws UsageException
+        */
+       public function dieStatus( $status ) {
+               if ( $status->isGood() ) {
+                       throw new MWException( 'Successful status passed to ApiBase::dieStatus' );
+               }
+
+               $errors = $status->getErrorsArray();
+               if ( !$errors ) {
+                       // No errors? Assume the warnings should be treated as errors
+                       $errors = $status->getWarningsArray();
+               }
+               if ( !$errors ) {
+                       // Still no errors? Punt
+                       $errors = array( array( 'unknownerror-nocode' ) );
+               }
+
+               // Cannot use dieUsageMsg() because extensions might return custom
+               // error messages.
+               if ( $errors[0] instanceof Message ) {
+                       $msg = $errors[0];
+                       $code = $msg->getKey();
+               } else {
+                       $code = array_shift( $errors[0] );
+                       $msg = wfMessage( $code, $errors[0] );
+               }
+               if ( isset( ApiBase::$messageMap[$code] ) ) {
+                       // Translate message to code, for backwards compatability
+                       $code = ApiBase::$messageMap[$code]['code'];
+               }
+               $this->dieUsage( $msg->inLanguage( 'en' )->useDatabase( false )->plain(), $code );
+       }
+
        /**
         * Array that maps message keys to error messages. $1 and friends are replaced.
         */
@@ -1597,7 +1635,12 @@ abstract class ApiBase extends ContextSource {
                }
 
                if ( $this->needsToken() ) {
-                       $ret[] = array( 'missingparam', 'token' );
+                       if ( !isset( $params['token'][ApiBase::PARAM_REQUIRED] )
+                               || !$params['token'][ApiBase::PARAM_REQUIRED]
+                       ) {
+                               // Add token as possible missing parameter, if not already done
+                               $ret[] = array( 'missingparam', 'token' );
+                       }
                        $ret[] = array( 'sessionfailure' );
                }
 
index 59ff324..9464d49 100644 (file)
@@ -128,17 +128,7 @@ class ApiCreateAccount extends ApiBase {
                        $result['result'] = 'needtoken';
                } elseif ( !$status->isOK() ) {
                        // There was an error. Die now.
-                       // Cannot use dieUsageMsg() directly because extensions
-                       // might return custom error messages.
-                       $errors = $status->getErrorsArray();
-                       if ( $errors[0] instanceof Message ) {
-                               $code = 'aborted';
-                               $desc = $errors[0];
-                       } else {
-                               $code = array_shift( $errors[0] );
-                               $desc = wfMessage( $code, $errors[0] );
-                       }
-                       $this->dieUsage( $desc, $code );
+                       $this->dieStatus( $status );
                } elseif ( !$status->isGood() ) {
                        // Status is not good, but OK. This means warnings.
                        $result['result'] = 'warning';
index d1f0806..aea1048 100644 (file)
@@ -61,8 +61,7 @@ class ApiDelete extends ApiBase {
                        $this->dieUsageMsg( $status[0] );
                }
                if ( !$status->isGood() ) {
-                       $errors = $status->getErrorsArray();
-                       $this->dieUsageMsg( $errors[0] ); // We don't care about multiple errors, just report one of them
+                       $this->dieStatus( $status );
                }
 
                // Deprecated parameters
index 56af76f..f48a822 100644 (file)
@@ -57,7 +57,7 @@ class ApiImport extends ApiBase {
                        $source = ImportStreamSource::newFromUpload( 'xml' );
                }
                if ( !$source->isOK() ) {
-                       $this->dieUsageMsg( $source->getErrorsArray() );
+                       $this->dieStatus( $source );
                }
 
                $importer = new WikiImporter( $source->value );
@@ -67,7 +67,7 @@ class ApiImport extends ApiBase {
                if ( isset( $params['rootpage'] ) ) {
                        $statusRootPage = $importer->setTargetRootPage( $params['rootpage'] );
                        if ( !$statusRootPage->isGood() ) {
-                               $this->dieUsageMsg( $statusRootPage->getErrorsArray() );
+                               $this->dieStatus( $statusRootPage );
                        }
                }
                $reporter = new ApiImportReporter(
index bde1d99..a369994 100644 (file)
@@ -44,6 +44,14 @@ class ApiParse extends ApiBase {
                $params = $this->extractRequestParams();
                $text = $params['text'];
                $title = $params['title'];
+               if ( $title === null ) {
+                       $titleProvided = false;
+                       // A title is needed for parsing, so arbitrarily choose one
+                       $title = 'API';
+               } else {
+                       $titleProvided = true;
+               }
+
                $page = $params['page'];
                $pageid = $params['pageid'];
                $oldid = $params['oldid'];
@@ -51,7 +59,7 @@ class ApiParse extends ApiBase {
                $model = $params['contentmodel'];
                $format = $params['contentformat'];
 
-               if ( !is_null( $page ) && ( !is_null( $text ) || $title != 'API' ) ) {
+               if ( !is_null( $page ) && ( !is_null( $text ) || $titleProvided ) ) {
                        $this->dieUsage( 'The page parameter cannot be used together with the text and title parameters', 'params' );
                }
 
@@ -94,8 +102,7 @@ class ApiParse extends ApiBase {
                                $titleObj = $rev->getTitle();
                                $wgTitle = $titleObj;
                                $pageObj = WikiPage::factory( $titleObj );
-                               $popts = $pageObj->makeParserOptions( $this->getContext() );
-                               $popts->enableLimitReport( !$params['disablepp'] );
+                               $popts = $this->makeParserOptions( $pageObj, $params );
 
                                // If for some reason the "oldid" is actually the current revision, it may be cached
                                if ( $rev->isCurrent() ) {
@@ -152,8 +159,7 @@ class ApiParse extends ApiBase {
                                        $oldid = $pageObj->getLatest();
                                }
 
-                               $popts = $pageObj->makeParserOptions( $this->getContext() );
-                               $popts->enableLimitReport( !$params['disablepp'] );
+                               $popts = $this->makeParserOptions( $pageObj, $params );
 
                                // Potentially cached
                                $p_result = $this->getParsedContent( $pageObj, $popts, $pageid,
@@ -170,11 +176,24 @@ class ApiParse extends ApiBase {
                        $wgTitle = $titleObj;
                        $pageObj = WikiPage::factory( $titleObj );
 
-                       $popts = $pageObj->makeParserOptions( $this->getContext() );
-                       $popts->enableLimitReport( !$params['disablepp'] );
+                       $popts = $this->makeParserOptions( $pageObj, $params );
 
                        if ( is_null( $text ) ) {
-                               $this->dieUsage( 'The text parameter should be passed with the title parameter. Should you be using the "page" parameter instead?', 'params' );
+                               if ( $titleProvided && ( $prop || $params['generatexml'] ) ) {
+                                       $this->setWarning(
+                                               "'title' used without 'text', and parsed page properties were requested " .
+                                               "(did you mean to use 'page' instead of 'title'?)"
+                                       );
+                               }
+                               // Prevent warning from ContentHandler::makeContent()
+                               $text = '';
+                       }
+
+                       // If we are parsing text, do not use the content model of the default
+                       // API title, but default to wikitext to keep BC.
+                       if ( !$titleProvided && is_null( $model ) ) {
+                               $model = CONTENT_MODEL_WIKITEXT;
+                               $this->setWarning( "No 'title' or 'contentmodel' was given, assuming $model." );
                        }
 
                        try {
@@ -359,6 +378,26 @@ class ApiParse extends ApiBase {
                }
        }
 
+       /**
+        * Constructs a ParserOptions object
+        *
+        * @param WikiPage $pageObj
+        * @param array $params
+        *
+        * @return ParserOptions
+        */
+       protected function makeParserOptions( WikiPage $pageObj, array $params ) {
+               wfProfileIn( __METHOD__ );
+
+               $popts = $pageObj->makeParserOptions( $this->getContext() );
+               $popts->enableLimitReport( !$params['disablepp'] );
+               $popts->setIsPreview( $params['preview'] || $params['sectionpreview'] );
+               $popts->setIsSectionPreview( $params['sectionpreview'] );
+
+               wfProfileOut( __METHOD__ );
+               return $popts;
+       }
+
        /**
         * @param $page WikiPage
         * @param $popts ParserOptions
@@ -551,9 +590,7 @@ class ApiParse extends ApiBase {
 
        public function getAllowedParams() {
                return array(
-                       'title' => array(
-                               ApiBase::PARAM_DFLT => 'API',
-                       ),
+                       'title' => null,
                        'text' => null,
                        'summary' => null,
                        'page' => null,
@@ -594,6 +631,8 @@ class ApiParse extends ApiBase {
                        'section' => null,
                        'disablepp' => false,
                        'generatexml' => false,
+                       'preview' => false,
+                       'sectionpreview' => false,
                        'contentformat' => array(
                                ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
                        ),
@@ -605,11 +644,13 @@ class ApiParse extends ApiBase {
 
        public function getParamDescription() {
                $p = $this->getModulePrefix();
+               $wikitext = CONTENT_MODEL_WIKITEXT;
                return array(
-                       'text' => 'Wikitext to parse',
+                       'text' => "Text to parse. Use {$p}title or {$p}contentmodel to control the content model",
                        'summary' => 'Summary to parse',
                        'redirects' => "If the {$p}page or the {$p}pageid parameter is set to a redirect, resolve it",
-                       'title' => 'Title of page the text belongs to',
+                       'title' => "Title of page the text belongs to. " .
+                               "If omitted, \"API\" is used as the title with content model $wikitext",
                        'page' => "Parse the content of this page. Cannot be used together with {$p}text and {$p}title",
                        'pageid' => "Parse the content of this page. Overrides {$p}page",
                        'oldid' => "Parse the content of this revision. Overrides {$p}page and {$p}pageid",
@@ -639,32 +680,46 @@ class ApiParse extends ApiBase {
                        ),
                        'pst' => array(
                                'Do a pre-save transform on the input before parsing it',
-                               'Ignored if page, pageid or oldid is used'
+                               "Only valid when used with {$p}text",
                        ),
                        'onlypst' => array(
                                'Do a pre-save transform (PST) on the input, but don\'t parse it',
-                               'Returns the same wikitext, after a PST has been applied. Ignored if page, pageid or oldid is used'
+                               'Returns the same wikitext, after a PST has been applied.',
+                               "Only valid when used with {$p}text",
                        ),
                        'uselang' => 'Which language to parse the request in',
                        'section' => 'Only retrieve the content of this section number',
                        'disablepp' => 'Disable the PP Report from the parser output',
-                       'generatexml' => 'Generate XML parse tree (requires prop=wikitext)',
-                       'contentformat' => 'Content serialization format used for the input text',
-                       'contentmodel' => 'Content model of the new content',
+                       'generatexml' => "Generate XML parse tree (requires contentmodel=$wikitext)",
+                       'preview' => 'Parse in preview mode',
+                       'sectionpreview' => 'Parse in section preview mode (enables preview mode too)',
+                       'contentformat' => array(
+                               'Content serialization format used for the input text',
+                               "Only valid when used with {$p}text",
+                       ),
+                       'contentmodel' => array(
+                               "Content model of the input text. Default is the model of the " .
+                               "specified ${p}title, or $wikitext if ${p}title is not specified",
+                               "Only valid when used with {$p}text",
+                       ),
                );
        }
 
        public function getDescription() {
+               $p = $this->getModulePrefix();
                return array(
-                       'Parses wikitext and returns parser output',
+                       'Parses content and returns parser output',
                        'See the various prop-Modules of action=query to get information from the current version of a page',
+                       'There are several ways to specify the text to parse:',
+                       "1) Specify a page or revision, using {$p}page, {$p}pageid, or {$p}oldid.",
+                       "2) Specify content explicitly, using {$p}text, {$p}title, and {$p}contentmodel.",
+                       "3) Specify only a summary to parse. {$p}prop should be given an empty value.",
                );
        }
 
        public function getPossibleErrors() {
                return array_merge( parent::getPossibleErrors(), array(
                        array( 'code' => 'params', 'info' => 'The page parameter cannot be used together with the text and title parameters' ),
-                       array( 'code' => 'params', 'info' => 'The text parameter should be passed with the title parameter. Should you be using the "page" parameter instead?' ),
                        array( 'code' => 'missingrev', 'info' => 'There is no revision ID oldid' ),
                        array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted revisions' ),
                        array( 'code' => 'missingtitle', 'info' => 'The page you specified doesn\'t exist' ),
@@ -679,7 +734,10 @@ class ApiParse extends ApiBase {
 
        public function getExamples() {
                return array(
-                       'api.php?action=parse&text={{Project:Sandbox}}'
+                       'api.php?action=parse&page=Project:Sandbox' => 'Parse a page',
+                       'api.php?action=parse&text={{Project:Sandbox}}' => 'Parse wikitext',
+                       'api.php?action=parse&text={{PAGENAME}}&title=Test' => 'Parse wikitext, specifying the page title',
+                       'api.php?action=parse&summary=Some+[[link]]&prop=' => 'Parse a summary',
                );
        }
 
index 4d4fbba..bd2fde2 100644 (file)
@@ -35,11 +35,27 @@ class ApiPatrol extends ApiBase {
         */
        public function execute() {
                $params = $this->extractRequestParams();
-
-               $rc = RecentChange::newFromID( $params['rcid'] );
-               if ( !$rc instanceof RecentChange ) {
-                       $this->dieUsageMsg( array( 'nosuchrcid', $params['rcid'] ) );
+               $this->requireOnlyOneParameter( $params, 'rcid', 'revid' );
+
+               if ( isset( $params['rcid'] ) ) {
+                       $rc = RecentChange::newFromID( $params['rcid'] );
+                       if ( !$rc ) {
+                               $this->dieUsageMsg( array( 'nosuchrcid', $params['rcid'] ) );
+                       }
+               } else {
+                       $rev = Revision::newFromId( $params['revid'] );
+                       if ( !$rev ) {
+                               $this->dieUsageMsg( array( 'nosuchrevid', $params['revid'] ) );
+                       }
+                       $rc = $rev->getRecentChange();
+                       if ( !$rc ) {
+                               $this->dieUsage(
+                                       'The revision ' . $params['revid'] . " can't be patrolled as it's too old",
+                                       'notpatrollable'
+                               );
+                       }
                }
+
                $retval = $rc->doMarkPatrolled( $this->getUser() );
 
                if ( $retval ) {
@@ -66,8 +82,10 @@ class ApiPatrol extends ApiBase {
                                ApiBase::PARAM_REQUIRED => true
                        ),
                        'rcid' => array(
-                               ApiBase::PARAM_TYPE => 'integer',
-                               ApiBase::PARAM_REQUIRED => true
+                               ApiBase::PARAM_TYPE => 'integer'
+                       ),
+                       'revid' => array(
+                               ApiBase::PARAM_TYPE => 'integer'
                        ),
                );
        }
@@ -76,6 +94,7 @@ class ApiPatrol extends ApiBase {
                return array(
                        'token' => 'Patrol token obtained from list=recentchanges',
                        'rcid' => 'Recentchanges ID to patrol',
+                       'revid' => 'Revision ID to patrol',
                );
        }
 
@@ -94,8 +113,16 @@ class ApiPatrol extends ApiBase {
        }
 
        public function getPossibleErrors() {
-               return array_merge( parent::getPossibleErrors(), array(
-                       array( 'nosuchrcid', 'rcid' ),
+               return array_merge(
+                       parent::getPossibleErrors(),
+                       parent::getRequireOnlyOneParameterErrorMessages( array( 'rcid', 'revid' ) ),
+                       array(
+                               array( 'nosuchrcid', 'rcid' ),
+                               array( 'nosuchrevid', 'revid' ),
+                               array(
+                                       'code' => 'notpatrollable',
+                                       'info' => "The revision can't be patrolled as it's too old"
+                               )
                ) );
        }
 
@@ -109,7 +136,8 @@ class ApiPatrol extends ApiBase {
 
        public function getExamples() {
                return array(
-                       'api.php?action=patrol&token=123abc&rcid=230672766'
+                       'api.php?action=patrol&token=123abc&rcid=230672766',
+                       'api.php?action=patrol&token=123abc&revid=230672766'
                );
        }
 
index 503c692..7830c8b 100644 (file)
@@ -103,8 +103,7 @@ class ApiProtect extends ApiBase {
                $status = $pageObj->doUpdateRestrictions( $protections, $expiryarray, $cascade, $params['reason'], $this->getUser() );
 
                if ( !$status->isOK() ) {
-                       $errors = $status->getErrorsArray();
-                       $this->dieUsageMsg( $errors[0] );
+                       $this->dieStatus( $status );
                }
                $res = array(
                        'title' => $titleObj->getPrefixedText(),
index e355f8b..3744e3c 100644 (file)
@@ -40,8 +40,8 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                $this->dfltNamespace = NS_MAIN;
                                $this->indexTag = 'l';
                                $this->description = 'Enumerate all links that point to a given namespace';
-                               $this->descriptionLink = 'link';
-                               $this->descriptionLinked = 'linked';
+                               $this->descriptionWhat = 'link';
+                               $this->descriptionTargets = 'linked titles';
                                $this->descriptionLinking = 'linking';
                                break;
                        case 'alltransclusions':
@@ -51,8 +51,8 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                $this->dfltNamespace = NS_TEMPLATE;
                                $this->indexTag = 't';
                                $this->description = 'List all transclusions (pages embedded using {{x}}), including non-existing';
-                               $this->descriptionLink = 'transclusion';
-                               $this->descriptionLinked = 'transcluded';
+                               $this->descriptionWhat = 'transclusion';
+                               $this->descriptionTargets = 'transcluded titles';
                                $this->descriptionLinking = 'transcluding';
                                break;
                        default:
@@ -90,7 +90,7 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                if ( $params['unique'] ) {
                        if ( $fld_ids ) {
                                $this->dieUsage(
-                                       "{$this->getModuleName()} cannot return corresponding page ids in unique {$this->descriptionLink}s mode",
+                                       "{$this->getModuleName()} cannot return corresponding page ids in unique {$this->descriptionWhat}s mode",
                                        'params' );
                        }
                        $this->addOption( 'DISTINCT' );
@@ -232,23 +232,24 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
 
        public function getParamDescription() {
                $p = $this->getModulePrefix();
-               $link = $this->descriptionLink;
+               $what = $this->descriptionWhat;
+               $targets = $this->descriptionTargets;
                $linking = $this->descriptionLinking;
                return array(
-                       'from' => "The title of the $link to start enumerating from",
-                       'to' => "The title of the $link to stop enumerating at",
-                       'prefix' => "Search for all $link titles that begin with this value",
+                       'from' => "The title of the $what to start enumerating from",
+                       'to' => "The title of the $what to stop enumerating at",
+                       'prefix' => "Search for all $targets that begin with this value",
                        'unique' => array(
-                                       "Only show distinct $link titles. Cannot be used with {$p}prop=ids.",
-                                       'When used as a generator, yields target pages instead of source pages.',
+                               "Only show distinct $targets. Cannot be used with {$p}prop=ids.",
+                               'When used as a generator, yields target pages instead of source pages.',
                        ),
                        'prop' => array(
                                'What pieces of information to include',
                                " ids    - Adds the pageid of the $linking page (Cannot be used with {$p}unique)",
-                               " title  - Adds the title of the $link",
+                               " title  - Adds the title of the $what",
                        ),
                        'namespace' => 'The namespace to enumerate',
-                       'limit' => "How many total items to return",
+                       'limit' => 'How many total items to return',
                        'continue' => 'When more results are available, use this to continue',
                        'dir' => 'The direction in which to list',
                );
@@ -272,29 +273,31 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
 
        public function getPossibleErrors() {
                $m = $this->getModuleName();
-               $link = $this->descriptionLink;
+               $what = $this->descriptionWhat;
                return array_merge( parent::getPossibleErrors(), array(
-                       array( 'code' => 'params', 'info' => "{$m} cannot return corresponding page ids in unique {$link}s mode" ),
+                       array( 'code' => 'params', 'info' => "{$m} cannot return corresponding page ids in unique {$what}s mode" ),
                ) );
        }
 
        public function getExamples() {
                $p = $this->getModulePrefix();
-               $link = $this->descriptionLink;
-               $linked = $this->descriptionLinked;
+               $name = $this->getModuleName();
+               $what = $this->descriptionWhat;
+               $targets = $this->descriptionTargets;
                return array(
-                       "api.php?action=query&list=all{$link}s&{$p}from=B&{$p}prop=ids|title"
-                                       => "List $linked titles with page ids they are from, including missing ones. Start at B",
-                       "api.php?action=query&list=all{$link}s&{$p}unique=&{$p}from=B"
-                                       => "List unique $linked titles",
-                       "api.php?action=query&generator=all{$link}s&g{$p}unique=&g{$p}from=B"
-                                       => "Gets all $link targets, marking the missing ones",
-                       "api.php?action=query&generator=all{$link}s&g{$p}from=B"
-                                       => "Gets pages containing the {$link}s",
+                       "api.php?action=query&list={$name}&{$p}from=B&{$p}prop=ids|title"
+                                       => "List $targets with page ids they are from, including missing ones. Start at B",
+                       "api.php?action=query&list={$name}&{$p}unique=&{$p}from=B"
+                                       => "List unique $targets",
+                       "api.php?action=query&generator={$name}&g{$p}unique=&g{$p}from=B"
+                                       => "Gets all $targets, marking the missing ones",
+                       "api.php?action=query&generator={$name}&g{$p}from=B"
+                                       => "Gets pages containing the {$what}s",
                );
        }
 
        public function getHelpUrls() {
-               return "https://www.mediawiki.org/wiki/API:All{$this->descriptionLink}s";
+               $name = ucfirst( $this->getModuleName() );
+               return "https://www.mediawiki.org/wiki/API:{$name}";
        }
 }
index 881269f..e3c27f5 100644 (file)
@@ -91,18 +91,30 @@ class ApiQueryBlocks extends ApiQueryBase {
                        $this->addWhereFld( 'ipb_auto', 0 );
                }
                if ( isset( $params['ip'] ) ) {
-                       list( $ip, $range ) = IP::parseCIDR( $params['ip'] );
-                       if ( $ip && $range ) {
-                               // We got a CIDR range
-                               if ( $range < 16 ) {
-                                       $this->dieUsage( 'CIDR ranges broader than /16 are not accepted', 'cidrtoobroad' );
-                               }
-                               $lower = wfBaseConvert( $ip, 10, 16, 8, false );
-                               $upper = wfBaseConvert( $ip + pow( 2, 32 - $range ) - 1, 10, 16, 8, false );
+                       global $wgBlockCIDRLimit;
+                       if ( IP::isIPv4( $params['ip'] ) ) {
+                               $type = 'IPv4';
+                               $cidrLimit = $wgBlockCIDRLimit['IPv4'];
+                               $prefixLen = 0;
+                       } elseif ( IP::isIPv6( $params['ip'] ) ) {
+                               $type = 'IPv6';
+                               $cidrLimit = $wgBlockCIDRLimit['IPv6'];
+                               $prefixLen = 3; // IP::toHex output is prefixed with "v6-"
                        } else {
-                               $lower = $upper = IP::toHex( $params['ip'] );
+                               $this->dieUsage( 'IP parameter is not valid', 'param_ip' );
+                       }
+
+                       # Check range validity, if it's a CIDR
+                       list( $ip, $range ) = IP::parseCIDR( $params['ip'] );
+                       if ( $ip !== false && $range !== false && $range < $cidrLimit ) {
+                               $this->dieUsage( "$type CIDR ranges broader than /$cidrLimit are not accepted", 'cidrtoobroad' );
                        }
-                       $prefix = substr( $lower, 0, 4 );
+
+                       # Let IP::parseRange handle calculating $upper, instead of duplicating the logic here.
+                       list( $lower, $upper ) = IP::parseRange( $params['ip'] );
+
+                       # Extract the common prefix to any rangeblock affecting this IP/CIDR
+                       $prefix = substr( $lower, 0, $prefixLen + floor( $cidrLimit / 4 ) );
 
                        # Fairly hard to make a malicious SQL statement out of hex characters,
                        # but it is good practice to add quotes
@@ -295,6 +307,7 @@ class ApiQueryBlocks extends ApiQueryBase {
        }
 
        public function getParamDescription() {
+               global $wgBlockCIDRLimit;
                $p = $this->getModulePrefix();
                return array(
                        'start' => 'The timestamp to start enumerating from',
@@ -302,8 +315,12 @@ class ApiQueryBlocks extends ApiQueryBase {
                        'dir' => $this->getDirectionDescription( $p ),
                        'ids' => 'List of block IDs to list (optional)',
                        'users' => 'List of users to search for (optional)',
-                       'ip' => array( 'Get all blocks applying to this IP or CIDR range, including range blocks.',
-                                       'Cannot be used together with bkusers. CIDR ranges broader than /16 are not accepted' ),
+                       'ip' => array(
+                               'Get all blocks applying to this IP or CIDR range, including range blocks.',
+                               "Cannot be used together with bkusers. CIDR ranges broader than " .
+                                       "IPv4/{$wgBlockCIDRLimit['IPv4']} or IPv6/{$wgBlockCIDRLimit['IPv6']} " .
+                                       "are not accepted"
+                       ),
                        'limit' => 'The maximum amount of blocks to list',
                        'prop' => array(
                                'Which properties to get',
@@ -384,10 +401,19 @@ class ApiQueryBlocks extends ApiQueryBase {
        }
 
        public function getPossibleErrors() {
+               global $wgBlockCIDRLimit;
                return array_merge( parent::getPossibleErrors(),
                        $this->getRequireOnlyOneParameterErrorMessages( array( 'users', 'ip' ) ),
                        array(
-                               array( 'code' => 'cidrtoobroad', 'info' => 'CIDR ranges broader than /16 are not accepted' ),
+                               array(
+                                       'code' => 'cidrtoobroad',
+                                       'info' => "IPv4 CIDR ranges broader than /{$wgBlockCIDRLimit['IPv4']} are not accepted"
+                               ),
+                               array(
+                                       'code' => 'cidrtoobroad',
+                                       'info' => "IPv6 CIDR ranges broader than /{$wgBlockCIDRLimit['IPv6']} are not accepted"
+                               ),
+                               array( 'code' => 'param_ip', 'info' => 'IP parameter is not valid' ),
                                array( 'code' => 'param_user', 'info' => 'User parameter may not be empty' ),
                                array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
                                array( 'show' ),
index 124d273..456e87b 100644 (file)
@@ -218,13 +218,13 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                        ),
                        'offset' => 'Used for paging. Use the value returned for "continue"',
                        'protocol' => array(
-                               "Protocol of the url. If empty and {$p}query set, the protocol is http.",
+                               "Protocol of the URL. If empty and {$p}query set, the protocol is http.",
                                "Leave both this and {$p}query empty to list all external links"
                        ),
                        'query' => 'Search string without protocol. See [[Special:LinkSearch]]. Leave empty to list all external links',
                        'namespace' => 'The page namespace(s) to enumerate.',
                        'limit' => 'How many pages to return.',
-                       'expandurl' => 'Expand protocol-relative urls with the canonical protocol',
+                       'expandurl' => 'Expand protocol-relative URLs with the canonical protocol',
                );
 
                if ( $wgMiserMode ) {
index 56ee268..583ef69 100644 (file)
@@ -131,11 +131,11 @@ class ApiQueryExternalLinks extends ApiQueryBase {
                        'limit' => 'How many links to return',
                        'offset' => 'When more results are available, use this to continue',
                        'protocol' => array(
-                               "Protocol of the url. If empty and {$p}query set, the protocol is http.",
+                               "Protocol of the URL. If empty and {$p}query set, the protocol is http.",
                                "Leave both this and {$p}query empty to list all external links"
                        ),
                        'query' => 'Search string without protocol. Useful for checking whether a certain page contains a certain external url',
-                       'expandurl' => 'Expand protocol-relative urls with the canonical protocol',
+                       'expandurl' => 'Expand protocol-relative URLs with the canonical protocol',
                );
        }
 
@@ -148,7 +148,7 @@ class ApiQueryExternalLinks extends ApiQueryBase {
        }
 
        public function getDescription() {
-               return 'Returns all external urls (not interwikis) from the given page(s)';
+               return 'Returns all external URLs (not interwikis) from the given page(s)';
        }
 
        public function getPossibleErrors() {
index 4849f40..fedf860 100644 (file)
@@ -231,10 +231,18 @@ class ApiQueryImageInfo extends ApiQueryBase {
         * @return Array of parameters for transform.
         */
        protected function mergeThumbParams( $image, $thumbParams, $otherParams ) {
+               global $wgThumbLimits;
 
                if ( !isset( $thumbParams['width'] ) && isset( $thumbParams['height'] ) ) {
-                       // Populate the width with the image's width, so only the height restriction applies
-                       $thumbParams['width'] = $image->getWidth();
+                       // We want to limit only by height in this situation, so pass the
+                       // image's full width as the limiting width. But some file types
+                       // don't have a width of their own, so pick something arbitrary so
+                       // thumbnailing the default icon works.
+                       if ( $image->getWidth() <= 0 ) {
+                               $thumbParams['width'] = max( $wgThumbLimits );
+                       } else {
+                               $thumbParams['width'] = $image->getWidth();
+                       }
                }
 
                if ( !$otherParams ) {
index 1d86c97..5a22311 100644 (file)
@@ -520,7 +520,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                                } else {
                                        $this->setWarning( "Conversion to XML is supported for wikitext only, " .
                                                                                $title->getPrefixedDBkey() .
-                                                                               " uses content model " . $content->getModel() . ")" );
+                                                                               " uses content model " . $content->getModel() );
                                }
                        }
 
@@ -533,7 +533,7 @@ class ApiQueryRevisions extends ApiQueryBase {
                                } else {
                                        $this->setWarning( "Template expansion is supported for wikitext only, " .
                                                $title->getPrefixedDBkey() .
-                                               " uses content model " . $content->getModel() . ")" );
+                                               " uses content model " . $content->getModel() );
 
                                        $text = false;
                                }
index 8f71fbe..34741b5 100644 (file)
@@ -61,10 +61,14 @@ class ApiUpload extends ApiBase {
                }
 
                // Select an upload module
-               if ( !$this->selectUploadModule() ) {
-                       return; // not a true upload, but a status request or similar
-               } elseif ( !isset( $this->mUpload ) ) {
-                       $this->dieUsage( 'No upload module set', 'nomodule' );
+               try {
+                       if ( !$this->selectUploadModule() ) {
+                               return; // not a true upload, but a status request or similar
+                       } elseif ( !isset( $this->mUpload ) ) {
+                               $this->dieUsage( 'No upload module set', 'nomodule' );
+                       }
+               } catch ( UploadStashException $e ) { // XXX: don't spam exception log
+                       $this->dieUsage( get_class( $e ) . ": " . $e->getMessage(), 'stasherror' );
                }
 
                // First check permission to upload
@@ -106,9 +110,13 @@ class ApiUpload extends ApiBase {
                }
 
                // Get the result based on the current upload context:
-               $result = $this->getContextResult();
-               if ( $result['result'] === 'Success' ) {
-                       $result['imageinfo'] = $this->mUpload->getImageInfo( $this->getResult() );
+               try {
+                       $result = $this->getContextResult();
+                       if ( $result['result'] === 'Success' ) {
+                               $result['imageinfo'] = $this->mUpload->getImageInfo( $this->getResult() );
+                       }
+               } catch ( UploadStashException $e ) { // XXX: don't spam exception log
+                       $this->dieUsage( get_class( $e ) . ": " . $e->getMessage(), 'stasherror' );
                }
 
                $this->getResult()->addValue( null, $this->getModuleName(), $result );
@@ -807,6 +815,7 @@ class ApiUpload extends ApiBase {
                                array( 'code' => 'publishfailed', 'info' => 'Publishing of stashed file failed' ),
                                array( 'code' => 'internal-error', 'info' => 'An internal error occurred' ),
                                array( 'code' => 'asynccopyuploaddisabled', 'info' => 'Asynchronous copy uploads disabled' ),
+                               array( 'code' => 'stasherror', 'info' => 'An upload stash error occurred' ),
                                array( 'fileexists-forbidden' ),
                                array( 'fileexists-shared-forbidden' ),
                        )
index 870201e..7d30828 100644 (file)
@@ -66,8 +66,7 @@ class ApiUserrights extends ApiBase {
                $form->setContext( $this->getContext() );
                $status = $form->fetchUser( $params['user'] );
                if ( !$status->isOK() ) {
-                       $errors = $status->getErrorsArray();
-                       $this->dieUsageMsg( $errors[0] );
+                       $this->dieStatus( $status );
                } else {
                        $user = $status->value;
                }
index 3e51299..e001be3 100644 (file)
@@ -57,19 +57,19 @@ class ApiWatch extends ApiBase {
                if ( $params['unwatch'] ) {
                        $res['unwatched'] = '';
                        $res['message'] = $this->msg( 'removedwatchtext', $title->getPrefixedText() )->title( $title )->parseAsBlock();
-                       $success = UnwatchAction::doUnwatch( $title, $user );
+                       $status = UnwatchAction::doUnwatch( $title, $user );
                } else {
                        $res['watched'] = '';
                        $res['message'] = $this->msg( 'addedwatchtext', $title->getPrefixedText() )->title( $title )->parseAsBlock();
-                       $success = WatchAction::doWatch( $title, $user );
+                       $status = WatchAction::doWatch( $title, $user );
                }
 
                if ( !is_null( $oldLang ) ) {
                        $this->getContext()->setLanguage( $oldLang ); // Reset language to $oldLang
                }
 
-               if ( !$success ) {
-                       $this->dieUsageMsg( 'hookaborted' );
+               if ( !$status->isOK() ) {
+                       $this->dieStatus( $status );
                }
                $this->getResult()->addValue( null, $this->getModuleName(), $res );
        }
index 0f229f9..bdc2d78 100644 (file)
@@ -551,7 +551,7 @@ class LocalisationCache {
        /**
         * Get the plural rule types for a given language from the XML files.
         * Cached.
-        * @since 1.21
+        * @since 1.22
         */
        public function getPluralRuleTypes( $code ) {
                if ( $this->pluralRuleTypes === null ) {
index 7dc8d05..fcefc06 100644 (file)
@@ -865,14 +865,16 @@ class MessageCache {
         *
         * @param string $title Message cache key with initial uppercase letter.
         * @param string $code Code denoting the language to try.
-        * @return string|bool False on failure
+        * @return string|bool The message, or false iff it does not exist or on error
         */
        function getMsgFromNamespace( $title, $code ) {
                $this->load( $code );
                if ( isset( $this->mCache[$code][$title] ) ) {
                        $entry = $this->mCache[$code][$title];
                        if ( substr( $entry, 0, 1 ) === ' ' ) {
-                               return substr( $entry, 1 );
+                               // The message exists, so make sure a string
+                               // is returned.
+                               return (string)substr( $entry, 1 );
                        } elseif ( $entry === '!NONEXISTENT' ) {
                                return false;
                        } elseif ( $entry === '!TOO BIG' ) {
@@ -895,7 +897,9 @@ class MessageCache {
                if ( $entry ) {
                        if ( substr( $entry, 0, 1 ) === ' ' ) {
                                $this->mCache[$code][$title] = $entry;
-                               return substr( $entry, 1 );
+                               // The message exists, so make sure a string
+                               // is returned.
+                               return (string)substr( $entry, 1 );
                        } elseif ( $entry === '!NONEXISTENT' ) {
                                $this->mCache[$code][$title] = '!NONEXISTENT';
                                return false;
index 63d4141..6085f58 100644 (file)
@@ -63,7 +63,7 @@ class UserCache {
         *
         * @param integer $userId
         * @param string $ip
-        * @since 1.21
+        * @since 1.22
         */
        public function getUserName( $userId, $ip ) {
                return $userId > 0 ? $this->getProp( $userId, 'name' ) : $ip;
index 8c6e24a..137efb8 100644 (file)
@@ -441,57 +441,4 @@ abstract class AbstractContent implements Content {
                wfRunHooks( 'ConvertContent', array( $this, $toModel, $lossy, &$result ) );
                return $result;
        }
-
-       /**
-        * Returns a ParserOutput object, filled by a call to fillParserOutput().
-        * Subclasses that want to control the parser output may override this, or
-        * they can override fillParserOutput(). If they override getParserOutput(),
-        * itself, they should take care to call the ContentGetParserOutput hook.
-        *
-        * @param $title Title Context title for parsing
-        * @param $revId int|null Revision ID (for {{REVISIONID}})
-        * @param $options ParserOptions|null Parser options
-        * @param $generateHtml bool Whether or not to generate HTML
-        *
-        * @return ParserOutput representing the HTML form of the text
-        */
-       public function getParserOutput( Title $title, $revId = null,
-               ParserOptions $options = null, $generateHtml = true
-       ) {
-               # Generic implementation, relying on $this->getHtml()
-
-               if ( $options === null ) {
-                       $options = $this->getContentHandler()->makeParserOptions( 'canonical' );
-               }
-
-               $po = new ParserOutput();
-
-               if ( wfRunHooks( 'ContentGetParserOutput',
-                       array( $this, $title, $revId, $options, $generateHtml, &$po ) ) ) {
-
-                       $this->fillParserOutput( $title, $revId, $options, $generateHtml, $po );
-               }
-
-               return $po;
-       }
-
-       /**
-        * Fills the provided ParserOutput object with the HTML returned by getHtml().
-        * Subclasses should override this (or getParserOutput) appropriately.
-        * This placeholder implementation always throws an exception.
-        *
-        * @param $title        Title Context title for parsing
-        * @param $revId        int|null Revision ID (for {{REVISIONID}})
-        * @param $options      ParserOptions|null Parser options
-        * @param $generateHtml bool Whether or not to generate HTML
-        * @param &$output      ParserOutput The output object to fill (reference).
-        *
-        * @throws MWException
-        */
-       protected function fillParserOutput( Title $title, $revId,
-               ParserOptions $options, $generateHtml, ParserOutput &$output
-       ) {
-               // Don't make abstract, so subclasses that override getParserOutput() directly don't fail.
-               throw new MWException( 'Subclasses of AbstractContent must override fillParserOutput!' );
-       }
 }
index a25bd76..03cc2d0 100644 (file)
@@ -57,7 +57,7 @@ class CssContent extends TextContent {
        protected function getHtml() {
                $html = "";
                $html .= "<pre class=\"mw-code mw-css\" dir=\"ltr\">\n";
-               $html .= htmlspecialchars( $this->getNativeData() );
+               $html .= $this->getHighlightHtml();
                $html .= "\n</pre>\n";
 
                return $html;
index 247de6d..2ae572b 100644 (file)
@@ -58,7 +58,7 @@ class JavaScriptContent extends TextContent {
        protected function getHtml() {
                $html = "";
                $html .= "<pre class=\"mw-code mw-js\" dir=\"ltr\">\n";
-               $html .= htmlspecialchars( $this->getNativeData() );
+               $html .= $this->getHighlightHtml();
                $html .= "\n</pre>\n";
 
                return $html;
index a6ee7b0..f66dacd 100644 (file)
@@ -189,27 +189,32 @@ class TextContent extends AbstractContent {
        }
 
        /**
-        * Fills the provided ParserOutput object with the HTML returned by getHtml().
-        *
-        * Content models in $wgTextModelsToParse will be parsed as wikitext to process links,
-        * magic words, etc.
-        *
-        * Subclasses may override this to provide custom rendering.
+        * Returns a generic ParserOutput object, wrapping the HTML returned by
+        * getHtml().
         *
         * @param $title Title Context title for parsing
         * @param int|null $revId Revision ID (for {{REVISIONID}})
         * @param $options ParserOptions|null Parser options
         * @param bool $generateHtml Whether or not to generate HTML
-        * @param $output ParserOutput The output object to fill (reference).
+        *
+        * @return ParserOutput representing the HTML form of the text
         */
-       protected function fillParserOutput( Title $title, $revId,
-               ParserOptions $options, $generateHtml, ParserOutput &$output
+       public function getParserOutput( Title $title,
+               $revId = null,
+               ParserOptions $options = null, $generateHtml = true
        ) {
                global $wgParser, $wgTextModelsToParse;
 
+               if ( !$options ) {
+                       //NOTE: use canonical options per default to produce cacheable output
+                       $options = $this->getContentHandler()->makeParserOptions( 'canonical' );
+               }
+
                if ( in_array( $this->getModel(), $wgTextModelsToParse ) ) {
-                       // parse just to get links etc into the database, HTML is replaced below.
-                       $output = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+                       // parse just to get links etc into the database
+                       $po = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+               } else {
+                       $po = new ParserOutput();
                }
 
                if ( $generateHtml ) {
@@ -218,25 +223,34 @@ class TextContent extends AbstractContent {
                        $html = '';
                }
 
-               $output->setText( $html );
+               $po->setText( $html );
+               return $po;
        }
 
        /**
         * Generates an HTML version of the content, for display. Used by
         * getParserOutput() to construct a ParserOutput object.
         *
-        * This default implementation runs the text returned by $this->getNativeData()
-        * through htmlspecialchars and tried to convert line breaks and indentation to HTML..
+        * This default implementation just calls getHighlightHtml(). Content
+        * models that have another mapping to HTML (as is the case for markup
+        * languages like wikitext) should override this method to generate the
+        * appropriate HTML.
         *
         * @return string An HTML representation of the content
         */
-       public static function convertWhiteSpaceToHTML( $msg ) {
-               $msg = htmlspecialchars( $msg );
-               $msg = preg_replace( '/^ /m', '&#160;', $msg );
-               $msg = preg_replace( '/ $/m', '&#160;', $msg );
-               $msg = preg_replace( '/  /', '&#160; ', $msg );
-               $msg = str_replace( "\n", '<br />', $msg );
-               return $msg;
+       protected function getHtml() {
+               return $this->getHighlightHtml();
+       }
+
+       /**
+        * Generates a syntax-highlighted version of the content, as HTML.
+        * Used by the default implementation of getHtml().
+        *
+        * @return string an HTML representation of the content's markup
+        */
+       protected function getHighlightHtml() {
+               # TODO: make Highlighter interface, use highlighter here, if available
+               return htmlspecialchars( $this->getNativeData() );
        }
 
        /**
index d821d9d..26337db 100644 (file)
@@ -277,21 +277,28 @@ class WikitextContent extends TextContent {
         * using $wgParser.
         *
         * @since    1.21
-        * @see AbstractContent::fillParserOutput().
         *
         * @param $title Title
         * @param int $revId Revision to pass to the parser (default: null)
         * @param $options ParserOptions (default: null)
         * @param bool $generateHtml (default: false)
-        * @param &$output ParserOutput representing the HTML form of the text,
-        *           may be manipulated or replaced.
+        *
+        * @internal param \IContextSource|null $context
+        * @return ParserOutput representing the HTML form of the text
         */
-       protected function fillParserOutput( Title $title, $revId,
-                       ParserOptions $options, $generateHtml, ParserOutput &$output
+       public function getParserOutput( Title $title,
+               $revId = null,
+               ParserOptions $options = null, $generateHtml = true
        ) {
                global $wgParser;
 
-               $output = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+               if ( !$options ) {
+                       //NOTE: use canonical options per default to produce cacheable output
+                       $options = $this->getContentHandler()->makeParserOptions( 'canonical' );
+               }
+
+               $po = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+               return $po;
        }
 
        protected function getHtml() {
index 4b2eae7..a86d6be 100644 (file)
@@ -1239,7 +1239,7 @@ abstract class DatabaseBase implements DatabaseType {
                        $startOpts .= ' SQL_NO_CACHE';
                }
 
-               if ( isset( $options['USE INDEX'] ) && ! is_array( $options['USE INDEX'] ) ) {
+               if ( isset( $options['USE INDEX'] ) && is_string( $options['USE INDEX'] ) ) {
                        $useIndex = $this->useIndexClause( $options['USE INDEX'] );
                } else {
                        $useIndex = '';
@@ -1461,28 +1461,26 @@ abstract class DatabaseBase implements DatabaseType {
                }
 
                $options = (array)$options;
+               $useIndexes = ( isset( $options['USE INDEX'] ) && is_array( $options['USE INDEX'] ) )
+                       ? $options['USE INDEX']
+                       : array();
 
                if ( is_array( $table ) ) {
-                       $useIndex = ( isset( $options['USE INDEX'] ) && is_array( $options['USE INDEX'] ) )
-                               ? $options['USE INDEX']
-                               : array();
-                       if ( count( $join_conds ) || count( $useIndex ) ) {
-                               $from = ' FROM ' .
-                                       $this->tableNamesWithUseIndexOrJOIN( $table, $useIndex, $join_conds );
-                       } else {
-                               $from = ' FROM ' . implode( ',', $this->tableNamesWithAlias( $table ) );
-                       }
+                       $from = ' FROM ' .
+                               $this->tableNamesWithUseIndexOrJOIN( $table, $useIndexes, $join_conds );
                } elseif ( $table != '' ) {
                        if ( $table[0] == ' ' ) {
                                $from = ' FROM ' . $table;
                        } else {
-                               $from = ' FROM ' . $this->tableName( $table );
+                               $from = ' FROM ' .
+                                       $this->tableNamesWithUseIndexOrJOIN( array( $table ), $useIndexes, array() );
                        }
                } else {
                        $from = '';
                }
 
-               list( $startOpts, $useIndex, $preLimitTail, $postLimitTail ) = $this->makeSelectOptions( $options );
+               list( $startOpts, $useIndex, $preLimitTail, $postLimitTail ) =
+                       $this->makeSelectOptions( $options );
 
                if ( !empty( $conds ) ) {
                        if ( is_array( $conds ) ) {
@@ -2260,11 +2258,11 @@ abstract class DatabaseBase implements DatabaseType {
                }
 
                // We can't separate explicit JOIN clauses with ',', use ' ' for those
-               $straightJoins = !empty( $ret ) ? implode( ',', $ret ) : "";
-               $otherJoins = !empty( $retJOIN ) ? implode( ' ', $retJOIN ) : "";
+               $implicitJoins = !empty( $ret ) ? implode( ',', $ret ) : "";
+               $explicitJoins = !empty( $retJOIN ) ? implode( ' ', $retJOIN ) : "";
 
                // Compile our final table clause
-               return implode( ' ', array( $straightJoins, $otherJoins ) );
+               return implode( ' ', array( $implicitJoins, $explicitJoins ) );
        }
 
        /**
@@ -2712,7 +2710,10 @@ abstract class DatabaseBase implements DatabaseType {
                $sql = "DELETE FROM $table";
 
                if ( $conds != '*' ) {
-                       $sql .= ' WHERE ' . $this->makeList( $conds, LIST_AND );
+                       if ( is_array( $conds ) ) {
+                               $conds = $this->makeList( $conds, LIST_AND );
+                       }
+                       $sql .= ' WHERE ' . $conds;
                }
 
                return $this->query( $sql, $fname );
index 3eb8c44..b75d615 100644 (file)
  */
 
 /**
- * Database abstraction object for mySQL
- * Inherit all methods and properties of Database::Database()
+ * Database abstraction object for PHP extension mysql.
  *
  * @ingroup Database
  * @see Database
  */
-class DatabaseMysql extends DatabaseBase {
-
-       /**
-        * @return string
-        */
-       function getType() {
-               return 'mysql';
-       }
+class DatabaseMysql extends DatabaseMysqlBase {
 
        /**
         * @param $sql string
@@ -50,40 +42,16 @@ class DatabaseMysql extends DatabaseBase {
                return $ret;
        }
 
-       /**
-        * @param $server string
-        * @param $user string
-        * @param $password string
-        * @param $dbName string
-        * @return bool
-        * @throws DBConnectionError
-        */
-       function open( $server, $user, $password, $dbName ) {
-               global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
-               wfProfileIn( __METHOD__ );
-
+       protected function mysqlConnect( $realServer ) {
                # Load mysql.so if we don't have it
                wfDl( 'mysql' );
 
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
                if ( !function_exists( 'mysql_connect' ) ) {
-                       wfProfileOut( __METHOD__ );
                        throw new DBConnectionError( $this, "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
                }
 
-               # Debugging hack -- fake cluster
-               if ( $wgAllDBsAreLocalhost ) {
-                       $realServer = 'localhost';
-               } else {
-                       $realServer = $server;
-               }
-               $this->close();
-               $this->mServer = $server;
-               $this->mUser = $user;
-               $this->mPassword = $password;
-               $this->mDBname = $dbName;
-
                $connFlags = 0;
                if ( $this->mFlags & DBO_SSL ) {
                        $connFlags |= MYSQL_CLIENT_SSL;
@@ -92,81 +60,27 @@ class DatabaseMysql extends DatabaseBase {
                        $connFlags |= MYSQL_CLIENT_COMPRESS;
                }
 
-               wfProfileIn( "dbconnect-$server" );
-
-               # The kernel's default SYN retransmission period is far too slow for us,
-               # so we use a short timeout plus a manual retry. Retrying means that a small
-               # but finite rate of SYN packet loss won't cause user-visible errors.
-               $this->mConn = false;
                if ( ini_get( 'mysql.connect_timeout' ) <= 3 ) {
                        $numAttempts = 2;
                } else {
                        $numAttempts = 1;
                }
-               $this->installErrorHandler();
-               for ( $i = 0; $i < $numAttempts && !$this->mConn; $i++ ) {
+
+               $conn = false;
+
+               for ( $i = 0; $i < $numAttempts && !$conn; $i++ ) {
                        if ( $i > 1 ) {
                                usleep( 1000 );
                        }
                        if ( $this->mFlags & DBO_PERSISTENT ) {
-                               $this->mConn = mysql_pconnect( $realServer, $user, $password, $connFlags );
+                               $conn = mysql_pconnect( $realServer, $this->mUser, $this->mPassword, $connFlags );
                        } else {
                                # Create a new connection...
-                               $this->mConn = mysql_connect( $realServer, $user, $password, true, $connFlags );
+                               $conn = mysql_connect( $realServer, $this->mUser, $this->mPassword, true, $connFlags );
                        }
-                       #if ( $this->mConn === false ) {
-                               #$iplus = $i + 1;
-                               #wfLogDBError("Connect loop error $iplus of $max ($server): " . mysql_errno() . " - " . mysql_error()."\n");
-                       #}
                }
-               $error = $this->restoreErrorHandler();
-
-               wfProfileOut( "dbconnect-$server" );
-
-               # Always log connection errors
-               if ( !$this->mConn ) {
-                       if ( !$error ) {
-                               $error = $this->lastError();
-                       }
-                       wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
-                       wfDebug( "DB connection error\n" .
-                               "Server: $server, User: $user, Password: " .
-                               substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
 
-                       wfProfileOut( __METHOD__ );
-                       return $this->reportConnectionError( $error );
-               }
-
-               if ( $dbName != '' ) {
-                       wfSuppressWarnings();
-                       $success = mysql_select_db( $dbName, $this->mConn );
-                       wfRestoreWarnings();
-                       if ( !$success ) {
-                               wfLogDBError( "Error selecting database $dbName on server {$this->mServer}\n" );
-                               wfDebug( "Error selecting database $dbName on server {$this->mServer} " .
-                                       "from client host " . wfHostname() . "\n" );
-
-                               wfProfileOut( __METHOD__ );
-                               return $this->reportConnectionError( "Error selecting database $dbName" );
-                       }
-               }
-
-               // Tell the server we're communicating with it in UTF-8.
-               // This may engage various charset conversions.
-               if ( $wgDBmysql5 ) {
-                       $this->query( 'SET NAMES utf8', __METHOD__ );
-               } else {
-                       $this->query( 'SET NAMES binary', __METHOD__ );
-               }
-               // Set SQL mode, default is turning them all off, can be overridden or skipped with null
-               if ( is_string( $wgSQLMode ) ) {
-                       $mode = $this->addQuotes( $wgSQLMode );
-                       $this->query( "SET sql_mode = $mode", __METHOD__ );
-               }
-
-               $this->mOpened = true;
-               wfProfileOut( __METHOD__ );
-               return true;
+               return $conn;
        }
 
        /**
@@ -176,113 +90,6 @@ class DatabaseMysql extends DatabaseBase {
                return mysql_close( $this->mConn );
        }
 
-       /**
-        * @param $res ResultWrapper
-        * @throws DBUnexpectedError
-        */
-       function freeResult( $res ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               wfSuppressWarnings();
-               $ok = mysql_free_result( $res );
-               wfRestoreWarnings();
-               if ( !$ok ) {
-                       throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
-               }
-       }
-
-       /**
-        * @param $res ResultWrapper
-        * @return object|bool
-        * @throws DBUnexpectedError
-        */
-       function fetchObject( $res ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               wfSuppressWarnings();
-               $row = mysql_fetch_object( $res );
-               wfRestoreWarnings();
-
-               $errno = $this->lastErrno();
-               // Unfortunately, mysql_fetch_object does not reset the last errno.
-               // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
-               // these are the only errors mysql_fetch_object can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
-               if ( $errno == 2000 || $errno == 2013 ) {
-                       throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
-               }
-               return $row;
-       }
-
-       /**
-        * @param $res ResultWrapper
-        * @return array|bool
-        * @throws DBUnexpectedError
-        */
-       function fetchRow( $res ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               wfSuppressWarnings();
-               $row = mysql_fetch_array( $res );
-               wfRestoreWarnings();
-
-               $errno = $this->lastErrno();
-               // Unfortunately, mysql_fetch_array does not reset the last errno.
-               // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
-               // these are the only errors mysql_fetch_object can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
-               if ( $errno == 2000 || $errno == 2013 ) {
-                       throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
-               }
-               return $row;
-       }
-
-       /**
-        * @throws DBUnexpectedError
-        * @param $res ResultWrapper
-        * @return int
-        */
-       function numRows( $res ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               wfSuppressWarnings();
-               $n = mysql_num_rows( $res );
-               wfRestoreWarnings();
-               // Unfortunately, mysql_num_rows does not reset the last errno.
-               // We are not checking for any errors here, since
-               // these are no errors mysql_num_rows can cause.
-               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
-               // See https://bugzilla.wikimedia.org/42430
-               return $n;
-       }
-
-       /**
-        * @param $res ResultWrapper
-        * @return int
-        */
-       function numFields( $res ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               return mysql_num_fields( $res );
-       }
-
-       /**
-        * @param $res ResultWrapper
-        * @param $n string
-        * @return string
-        */
-       function fieldName( $res, $n ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               return mysql_field_name( $res, $n );
-       }
-
        /**
         * @return int
         */
@@ -290,18 +97,6 @@ class DatabaseMysql extends DatabaseBase {
                return mysql_insert_id( $this->mConn );
        }
 
-       /**
-        * @param $res ResultWrapper
-        * @param $row
-        * @return bool
-        */
-       function dataSeek( $res, $row ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-               return mysql_data_seek( $res, $row );
-       }
-
        /**
         * @return int
         */
@@ -313,27 +108,6 @@ class DatabaseMysql extends DatabaseBase {
                }
        }
 
-       /**
-        * @return string
-        */
-       function lastError() {
-               if ( $this->mConn ) {
-                       # Even if it's non-zero, it can still be invalid
-                       wfSuppressWarnings();
-                       $error = mysql_error( $this->mConn );
-                       if ( !$error ) {
-                               $error = mysql_error();
-                       }
-                       wfRestoreWarnings();
-               } else {
-                       $error = mysql_error();
-               }
-               if ( $error ) {
-                       $error .= ' (' . $this->mServer . ')';
-               }
-               return $error;
-       }
-
        /**
         * @return int
         */
@@ -341,131 +115,6 @@ class DatabaseMysql extends DatabaseBase {
                return mysql_affected_rows( $this->mConn );
        }
 
-       /**
-        * @param $table string
-        * @param $uniqueIndexes
-        * @param $rows array
-        * @param $fname string
-        * @return ResultWrapper
-        */
-       function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
-               return $this->nativeReplace( $table, $rows, $fname );
-       }
-
-       /**
-        * @param string $table
-        * @param array $rows
-        * @param array $uniqueIndexes
-        * @param array $set
-        * @param string $fname
-        * @param array $options
-        * @return bool
-        */
-       public function upsert(
-               $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
-       ) {
-               if ( !count( $rows ) ) {
-                       return true; // nothing to do
-               }
-               $rows = is_array( reset( $rows ) ) ? $rows : array( $rows );
-
-               $table = $this->tableName( $table );
-               $columns = array_keys( $rows[0] );
-
-               $sql = "INSERT INTO $table (" . implode( ',', $columns ) . ') VALUES ';
-               $rowTuples = array();
-               foreach ( $rows as $row ) {
-                       $rowTuples[] = '(' . $this->makeList( $row ) . ')';
-               }
-               $sql .= implode( ',', $rowTuples );
-               $sql .= " ON DUPLICATE KEY UPDATE " . $this->makeList( $set, LIST_SET );
-
-               return (bool)$this->query( $sql, $fname );
-       }
-
-       /**
-        * Estimate rows in dataset
-        * Returns estimated count, based on EXPLAIN output
-        * Takes same arguments as Database::select()
-        *
-        * @param $table string|array
-        * @param $vars string|array
-        * @param $conds string|array
-        * @param $fname string
-        * @param $options string|array
-        * @return int
-        */
-       public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
-               $options['EXPLAIN'] = true;
-               $res = $this->select( $table, $vars, $conds, $fname, $options );
-               if ( $res === false ) {
-                       return false;
-               }
-               if ( !$this->numRows( $res ) ) {
-                       return 0;
-               }
-
-               $rows = 1;
-               foreach ( $res as $plan ) {
-                       $rows *= $plan->rows > 0 ? $plan->rows : 1; // avoid resetting to zero
-               }
-               return $rows;
-       }
-
-       /**
-        * @param $table string
-        * @param $field string
-        * @return bool|MySQLField
-        */
-       function fieldInfo( $table, $field ) {
-               $table = $this->tableName( $table );
-               $res = $this->query( "SELECT * FROM $table LIMIT 1", __METHOD__, true );
-               if ( !$res ) {
-                       return false;
-               }
-               $n = mysql_num_fields( $res->result );
-               for ( $i = 0; $i < $n; $i++ ) {
-                       $meta = mysql_fetch_field( $res->result, $i );
-                       if ( $field == $meta->name ) {
-                               return new MySQLField( $meta );
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Get information about an index into an object
-        * Returns false if the index does not exist
-        *
-        * @param $table string
-        * @param $index string
-        * @param $fname string
-        * @return bool|array|null False or null on failure
-        */
-       function indexInfo( $table, $index, $fname = __METHOD__ ) {
-               # SHOW INDEX works in MySQL 3.23.58, but SHOW INDEXES does not.
-               # SHOW INDEX should work for 3.x and up:
-               # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
-               $table = $this->tableName( $table );
-               $index = $this->indexName( $index );
-
-               $sql = 'SHOW INDEX FROM ' . $table;
-               $res = $this->query( $sql, $fname );
-
-               if ( !$res ) {
-                       return null;
-               }
-
-               $result = array();
-
-               foreach ( $res as $row ) {
-                       if ( $row->Key_name == $index ) {
-                               $result[] = $row;
-                       }
-               }
-               return empty( $result ) ? false : $result;
-       }
-
        /**
         * @param $db
         * @return bool
@@ -475,208 +124,6 @@ class DatabaseMysql extends DatabaseBase {
                return mysql_select_db( $db, $this->mConn );
        }
 
-       /**
-        * @param $s string
-        *
-        * @return string
-        */
-       function strencode( $s ) {
-               $sQuoted = mysql_real_escape_string( $s, $this->mConn );
-
-               if ( $sQuoted === false ) {
-                       $this->ping();
-                       $sQuoted = mysql_real_escape_string( $s, $this->mConn );
-               }
-               return $sQuoted;
-       }
-
-       /**
-        * MySQL uses `backticks` for identifier quoting instead of the sql standard "double quotes".
-        *
-        * @param $s string
-        *
-        * @return string
-        */
-       public function addIdentifierQuotes( $s ) {
-               return "`" . $this->strencode( $s ) . "`";
-       }
-
-       /**
-        * @param $name string
-        * @return bool
-        */
-       public function isQuotedIdentifier( $name ) {
-               return strlen( $name ) && $name[0] == '`' && substr( $name, -1, 1 ) == '`';
-       }
-
-       /**
-        * @return bool
-        */
-       function ping() {
-               $ping = mysql_ping( $this->mConn );
-               if ( $ping ) {
-                       return true;
-               }
-
-               mysql_close( $this->mConn );
-               $this->mOpened = false;
-               $this->mConn = false;
-               $this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
-               return true;
-       }
-
-       /**
-        * Returns slave lag.
-        *
-        * This will do a SHOW SLAVE STATUS
-        *
-        * @return int
-        */
-       function getLag() {
-               if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
-                       return $this->mFakeSlaveLag;
-               }
-
-               return $this->getLagFromSlaveStatus();
-       }
-
-       /**
-        * @return bool|int
-        */
-       function getLagFromSlaveStatus() {
-               $res = $this->query( 'SHOW SLAVE STATUS', __METHOD__ );
-               if ( !$res ) {
-                       return false;
-               }
-               $row = $res->fetchObject();
-               if ( !$row ) {
-                       return false;
-               }
-               if ( strval( $row->Seconds_Behind_Master ) === '' ) {
-                       return false;
-               } else {
-                       return intval( $row->Seconds_Behind_Master );
-               }
-       }
-
-       /**
-        * @deprecated in 1.19, use getLagFromSlaveStatus
-        *
-        * @return bool|int
-        */
-       function getLagFromProcesslist() {
-               wfDeprecated( __METHOD__, '1.19' );
-               $res = $this->query( 'SHOW PROCESSLIST', __METHOD__ );
-               if ( !$res ) {
-                       return false;
-               }
-               # Find slave SQL thread
-               foreach ( $res as $row ) {
-                       /* This should work for most situations - when default db
-                        * for thread is not specified, it had no events executed,
-                        * and therefore it doesn't know yet how lagged it is.
-                        *
-                        * Relay log I/O thread does not select databases.
-                        */
-                       if ( $row->User == 'system user' &&
-                               $row->State != 'Waiting for master to send event' &&
-                               $row->State != 'Connecting to master' &&
-                               $row->State != 'Queueing master event to the relay log' &&
-                               $row->State != 'Waiting for master update' &&
-                               $row->State != 'Requesting binlog dump' &&
-                               $row->State != 'Waiting to reconnect after a failed master event read' &&
-                               $row->State != 'Reconnecting after a failed master event read' &&
-                               $row->State != 'Registering slave on master'
-                               ) {
-                               # This is it, return the time (except -ve)
-                               if ( $row->Time > 0x7fffffff ) {
-                                       return false;
-                               } else {
-                                       return $row->Time;
-                               }
-                       }
-               }
-               return false;
-       }
-
-       /**
-        * Wait for the slave to catch up to a given master position.
-        *
-        * @param $pos DBMasterPos object
-        * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
-        * @return bool|string
-        */
-       function masterPosWait( DBMasterPos $pos, $timeout ) {
-               $fname = __METHOD__;
-               wfProfileIn( $fname );
-
-               # Commit any open transactions
-               if ( $this->mTrxLevel ) {
-                       $this->commit( $fname );
-               }
-
-               if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       $status = parent::masterPosWait( $pos, $timeout );
-                       wfProfileOut( $fname );
-                       return $status;
-               }
-
-               # Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
-               $encFile = $this->addQuotes( $pos->file );
-               $encPos = intval( $pos->pos );
-               $sql = "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)";
-               $res = $this->doQuery( $sql );
-
-               if ( $res && $row = $this->fetchRow( $res ) ) {
-                       wfProfileOut( $fname );
-                       return $row[0];
-               }
-               wfProfileOut( $fname );
-               return false;
-       }
-
-       /**
-        * Get the position of the master from SHOW SLAVE STATUS
-        *
-        * @return MySQLMasterPos|bool
-        */
-       function getSlavePos() {
-               if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       return parent::getSlavePos();
-               }
-
-               $res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
-               $row = $this->fetchObject( $res );
-
-               if ( $row ) {
-                       $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
-                       return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
-               } else {
-                       return false;
-               }
-       }
-
-       /**
-        * Get the position of the master from SHOW MASTER STATUS
-        *
-        * @return MySQLMasterPos|bool
-        */
-       function getMasterPos() {
-               if ( $this->mFakeMaster ) {
-                       return parent::getMasterPos();
-               }
-
-               $res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
-               $row = $this->fetchObject( $res );
-
-               if ( $row ) {
-                       return new MySQLMasterPos( $row->File, $row->Position );
-               } else {
-                       return false;
-               }
-       }
-
        /**
         * @return string
         */
@@ -684,388 +131,47 @@ class DatabaseMysql extends DatabaseBase {
                return mysql_get_server_info( $this->mConn );
        }
 
-       /**
-        * @param $index
-        * @return string
-        */
-       function useIndexClause( $index ) {
-               return "FORCE INDEX (" . $this->indexName( $index ) . ")";
-       }
-
-       /**
-        * @return string
-        */
-       function lowPriorityOption() {
-               return 'LOW_PRIORITY';
-       }
-
-       /**
-        * @return string
-        */
-       public function getSoftwareLink() {
-               return '[http://www.mysql.com/ MySQL]';
-       }
-
-       /**
-        * @param $options array
-        */
-       public function setSessionOptions( array $options ) {
-               if ( isset( $options['connTimeout'] ) ) {
-                       $timeout = (int)$options['connTimeout'];
-                       $this->query( "SET net_read_timeout=$timeout" );
-                       $this->query( "SET net_write_timeout=$timeout" );
-               }
-       }
-
-       public function streamStatementEnd( &$sql, &$newLine ) {
-               if ( strtoupper( substr( $newLine, 0, 9 ) ) == 'DELIMITER' ) {
-                       preg_match( '/^DELIMITER\s+(\S+)/', $newLine, $m );
-                       $this->delimiter = $m[1];
-                       $newLine = '';
-               }
-               return parent::streamStatementEnd( $sql, $newLine );
-       }
-
-       /**
-        * Check to see if a named lock is available. This is non-blocking.
-        *
-        * @param string $lockName name of lock to poll
-        * @param string $method name of method calling us
-        * @return Boolean
-        * @since 1.20
-        */
-       public function lockIsFree( $lockName, $method ) {
-               $lockName = $this->addQuotes( $lockName );
-               $result = $this->query( "SELECT IS_FREE_LOCK($lockName) AS lockstatus", $method );
-               $row = $this->fetchObject( $result );
-               return ( $row->lockstatus == 1 );
-       }
-
-       /**
-        * @param $lockName string
-        * @param $method string
-        * @param $timeout int
-        * @return bool
-        */
-       public function lock( $lockName, $method, $timeout = 5 ) {
-               $lockName = $this->addQuotes( $lockName );
-               $result = $this->query( "SELECT GET_LOCK($lockName, $timeout) AS lockstatus", $method );
-               $row = $this->fetchObject( $result );
-
-               if ( $row->lockstatus == 1 ) {
-                       return true;
-               } else {
-                       wfDebug( __METHOD__ . " failed to acquire lock\n" );
-                       return false;
-               }
-       }
-
-       /**
-        * FROM MYSQL DOCS: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
-        * @param $lockName string
-        * @param $method string
-        * @return bool
-        */
-       public function unlock( $lockName, $method ) {
-               $lockName = $this->addQuotes( $lockName );
-               $result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
-               $row = $this->fetchObject( $result );
-               return ( $row->lockstatus == 1 );
-       }
-
-       /**
-        * @param $read array
-        * @param $write array
-        * @param $method string
-        * @param $lowPriority bool
-        * @return bool
-        */
-       public function lockTables( $read, $write, $method, $lowPriority = true ) {
-               $items = array();
-
-               foreach ( $write as $table ) {
-                       $tbl = $this->tableName( $table ) .
-                                       ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
-                                       ' WRITE';
-                       $items[] = $tbl;
-               }
-               foreach ( $read as $table ) {
-                       $items[] = $this->tableName( $table ) . ' READ';
-               }
-               $sql = "LOCK TABLES " . implode( ',', $items );
-               $this->query( $sql, $method );
-               return true;
-       }
-
-       /**
-        * @param $method string
-        * @return bool
-        */
-       public function unlockTables( $method ) {
-               $this->query( "UNLOCK TABLES", $method );
-               return true;
-       }
-
-       /**
-        * Get search engine class. All subclasses of this
-        * need to implement this if they wish to use searching.
-        *
-        * @return String
-        */
-       public function getSearchEngine() {
-               return 'SearchMySQL';
-       }
-
-       /**
-        * @param bool $value
-        * @return mixed
-        */
-       public function setBigSelects( $value = true ) {
-               if ( $value === 'default' ) {
-                       if ( $this->mDefaultBigSelects === null ) {
-                               # Function hasn't been called before so it must already be set to the default
-                               return;
-                       } else {
-                               $value = $this->mDefaultBigSelects;
-                       }
-               } elseif ( $this->mDefaultBigSelects === null ) {
-                       $this->mDefaultBigSelects = (bool)$this->selectField( false, '@@sql_big_selects' );
-               }
-               $encValue = $value ? '1' : '0';
-               $this->query( "SET sql_big_selects=$encValue", __METHOD__ );
-       }
-
-       /**
-        * DELETE where the condition is a join. MySql uses multi-table deletes.
-        * @param $delTable string
-        * @param $joinTable string
-        * @param $delVar string
-        * @param $joinVar string
-        * @param $conds array|string
-        * @param bool|string $fname bool
-        * @throws DBUnexpectedError
-        * @return bool|ResultWrapper
-        */
-       function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = __METHOD__ ) {
-               if ( !$conds ) {
-                       throw new DBUnexpectedError( $this, 'DatabaseBase::deleteJoin() called with empty $conds' );
-               }
-
-               $delTable = $this->tableName( $delTable );
-               $joinTable = $this->tableName( $joinTable );
-               $sql = "DELETE $delTable FROM $delTable, $joinTable WHERE $delVar=$joinVar ";
-
-               if ( $conds != '*' ) {
-                       $sql .= ' AND ' . $this->makeList( $conds, LIST_AND );
-               }
-
-               return $this->query( $sql, $fname );
-       }
-
-       /**
-        * Determines how long the server has been up
-        *
-        * @return int
-        */
-       function getServerUptime() {
-               $vars = $this->getMysqlStatus( 'Uptime' );
-               return (int)$vars['Uptime'];
+       protected function mysqlFreeResult( $res ) {
+               return mysql_free_result( $res );
        }
 
-       /**
-        * Determines if the last failure was due to a deadlock
-        *
-        * @return bool
-        */
-       function wasDeadlock() {
-               return $this->lastErrno() == 1213;
+       protected function mysqlFetchObject( $res ) {
+               return mysql_fetch_object( $res );
        }
 
-       /**
-        * Determines if the last failure was due to a lock timeout
-        *
-        * @return bool
-        */
-       function wasLockTimeout() {
-               return $this->lastErrno() == 1205;
+       protected function mysqlFetchArray( $res ) {
+               return mysql_fetch_array( $res );
        }
 
-       /**
-        * Determines if the last query error was something that should be dealt
-        * with by pinging the connection and reissuing the query
-        *
-        * @return bool
-        */
-       function wasErrorReissuable() {
-               return $this->lastErrno() == 2013 || $this->lastErrno() == 2006;
+       protected function mysqlNumRows( $res ) {
+               return mysql_num_rows( $res );
        }
 
-       /**
-        * Determines if the last failure was due to the database being read-only.
-        *
-        * @return bool
-        */
-       function wasReadOnlyError() {
-               return $this->lastErrno() == 1223 ||
-                       ( $this->lastErrno() == 1290 && strpos( $this->lastError(), '--read-only' ) !== false );
-       }
-
-       /**
-        * @param $oldName
-        * @param $newName
-        * @param $temporary bool
-        * @param $fname string
-        */
-       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
-               $tmp = $temporary ? 'TEMPORARY ' : '';
-               $newName = $this->addIdentifierQuotes( $newName );
-               $oldName = $this->addIdentifierQuotes( $oldName );
-               $query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
-               $this->query( $query, $fname );
-       }
-
-       /**
-        * List all tables on the database
-        *
-        * @param string $prefix Only show tables with this prefix, e.g. mw_
-        * @param string $fname calling function name
-        * @return array
-        */
-       function listTables( $prefix = null, $fname = __METHOD__ ) {
-               $result = $this->query( "SHOW TABLES", $fname );
-
-               $endArray = array();
-
-               foreach ( $result as $table ) {
-                       $vars = get_object_vars( $table );
-                       $table = array_pop( $vars );
-
-                       if ( !$prefix || strpos( $table, $prefix ) === 0 ) {
-                               $endArray[] = $table;
-                       }
-               }
-
-               return $endArray;
-       }
-
-       /**
-        * @param $tableName
-        * @param $fName string
-        * @return bool|ResultWrapper
-        */
-       public function dropTable( $tableName, $fName = __METHOD__ ) {
-               if ( !$this->tableExists( $tableName, $fName ) ) {
-                       return false;
-               }
-               return $this->query( "DROP TABLE IF EXISTS " . $this->tableName( $tableName ), $fName );
-       }
-
-       /**
-        * @return array
-        */
-       protected function getDefaultSchemaVars() {
-               $vars = parent::getDefaultSchemaVars();
-               $vars['wgDBTableOptions'] = str_replace( 'TYPE', 'ENGINE', $GLOBALS['wgDBTableOptions'] );
-               $vars['wgDBTableOptions'] = str_replace( 'CHARSET=mysql4', 'CHARSET=binary', $vars['wgDBTableOptions'] );
-               return $vars;
-       }
-
-       /**
-        * Get status information from SHOW STATUS in an associative array
-        *
-        * @param $which string
-        * @return array
-        */
-       function getMysqlStatus( $which = "%" ) {
-               $res = $this->query( "SHOW STATUS LIKE '{$which}'" );
-               $status = array();
-
-               foreach ( $res as $row ) {
-                       $status[$row->Variable_name] = $row->Value;
-               }
-
-               return $status;
-       }
-
-}
-
-/**
- * Utility class.
- * @ingroup Database
- */
-class MySQLField implements Field {
-       private $name, $tablename, $default, $max_length, $nullable,
-               $is_pk, $is_unique, $is_multiple, $is_key, $type;
-
-       function __construct( $info ) {
-               $this->name = $info->name;
-               $this->tablename = $info->table;
-               $this->default = $info->def;
-               $this->max_length = $info->max_length;
-               $this->nullable = !$info->not_null;
-               $this->is_pk = $info->primary_key;
-               $this->is_unique = $info->unique_key;
-               $this->is_multiple = $info->multiple_key;
-               $this->is_key = ( $this->is_pk || $this->is_unique || $this->is_multiple );
-               $this->type = $info->type;
-       }
-
-       /**
-        * @return string
-        */
-       function name() {
-               return $this->name;
-       }
-
-       /**
-        * @return string
-        */
-       function tableName() {
-               return $this->tableName;
-       }
-
-       /**
-        * @return string
-        */
-       function type() {
-               return $this->type;
+       protected function mysqlNumFields( $res ) {
+               return mysql_num_fields( $res );
        }
 
-       /**
-        * @return bool
-        */
-       function isNullable() {
-               return $this->nullable;
+       protected function mysqlFetchField( $res, $n ) {
+               return mysql_fetch_field( $res, $n );
        }
 
-       function defaultValue() {
-               return $this->default;
+       protected function mysqlFieldName( $res, $n ) {
+               return mysql_field_name( $res, $n );
        }
 
-       /**
-        * @return bool
-        */
-       function isKey() {
-               return $this->is_key;
+       protected function mysqlDataSeek( $res, $row ) {
+               return mysql_data_seek( $res, $row );
        }
 
-       /**
-        * @return bool
-        */
-       function isMultipleKey() {
-               return $this->is_multiple;
+       protected function mysqlError( $conn = null ) {
+               return ( $conn !== null ) ? mysql_error( $conn ) : mysql_error(); // avoid warning
        }
-}
-
-class MySQLMasterPos implements DBMasterPos {
-       var $file, $pos;
 
-       function __construct( $file, $pos ) {
-               $this->file = $file;
-               $this->pos = $pos;
+       protected function mysqlRealEscapeString( $s ) {
+               return mysql_real_escape_string( $s, $this->mConn );
        }
 
-       function __toString() {
-               return "{$this->file}/{$this->pos}";
+       protected function mysqlPing() {
+               return mysql_ping( $this->mConn );
        }
 }
diff --git a/includes/db/DatabaseMysqlBase.php b/includes/db/DatabaseMysqlBase.php
new file mode 100644 (file)
index 0000000..84930c8
--- /dev/null
@@ -0,0 +1,1073 @@
+<?php
+/**
+ * This is the MySQL database abstraction layer.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Database
+ */
+
+/**
+ * Database abstraction object for MySQL.
+ * Defines methods independent on used MySQL extension.
+ *
+ * @ingroup Database
+ * @since 1.22
+ * @see Database
+ */
+abstract class DatabaseMysqlBase extends DatabaseBase {
+
+       /**
+        * @return string
+        */
+       function getType() {
+               return 'mysql';
+       }
+
+       /**
+        * @param $server string
+        * @param $user string
+        * @param $password string
+        * @param $dbName string
+        * @return bool
+        * @throws DBConnectionError
+        */
+       function open( $server, $user, $password, $dbName ) {
+               global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
+               wfProfileIn( __METHOD__ );
+
+               # Debugging hack -- fake cluster
+               if ( $wgAllDBsAreLocalhost ) {
+                       $realServer = 'localhost';
+               } else {
+                       $realServer = $server;
+               }
+               $this->close();
+               $this->mServer = $server;
+               $this->mUser = $user;
+               $this->mPassword = $password;
+               $this->mDBname = $dbName;
+
+               wfProfileIn( "dbconnect-$server" );
+
+               # The kernel's default SYN retransmission period is far too slow for us,
+               # so we use a short timeout plus a manual retry. Retrying means that a small
+               # but finite rate of SYN packet loss won't cause user-visible errors.
+               $this->mConn = false;
+               $this->installErrorHandler();
+               try {
+                       $this->mConn = $this->mysqlConnect( $realServer );
+               } catch (Exception $ex) {
+                       wfProfileOut( "dbconnect-$server" );
+                       wfProfileOut( __METHOD__ );
+                       throw $ex;
+               }
+               $error = $this->restoreErrorHandler();
+
+               wfProfileOut( "dbconnect-$server" );
+
+               # Always log connection errors
+               if ( !$this->mConn ) {
+                       if ( !$error ) {
+                               $error = $this->lastError();
+                       }
+                       wfLogDBError( "Error connecting to {$this->mServer}: $error\n" );
+                       wfDebug( "DB connection error\n" .
+                               "Server: $server, User: $user, Password: " .
+                               substr( $password, 0, 3 ) . "..., error: " . $error . "\n" );
+
+                       wfProfileOut( __METHOD__ );
+                       return $this->reportConnectionError( $error );
+               }
+
+               if ( $dbName != '' ) {
+                       wfSuppressWarnings();
+                       $success = $this->selectDB( $dbName );
+                       wfRestoreWarnings();
+                       if ( !$success ) {
+                               wfLogDBError( "Error selecting database $dbName on server {$this->mServer}\n" );
+                               wfDebug( "Error selecting database $dbName on server {$this->mServer} " .
+                                       "from client host " . wfHostname() . "\n" );
+
+                               wfProfileOut( __METHOD__ );
+                               return $this->reportConnectionError( "Error selecting database $dbName" );
+                       }
+               }
+
+               // Tell the server we're communicating with it in UTF-8.
+               // This may engage various charset conversions.
+               if ( $wgDBmysql5 ) {
+                       $this->query( 'SET NAMES utf8', __METHOD__ );
+               } else {
+                       $this->query( 'SET NAMES binary', __METHOD__ );
+               }
+               // Set SQL mode, default is turning them all off, can be overridden or skipped with null
+               if ( is_string( $wgSQLMode ) ) {
+                       $mode = $this->addQuotes( $wgSQLMode );
+                       $this->query( "SET sql_mode = $mode", __METHOD__ );
+               }
+
+               $this->mOpened = true;
+               wfProfileOut( __METHOD__ );
+               return true;
+       }
+
+       /**
+        * Open a connection to a MySQL server
+        *
+        * @param $realServer string
+        * @return mixed Raw connection
+        * @throws DBConnectionError
+        */
+       abstract protected function mysqlConnect( $realServer );
+
+       /**
+        * @param $res ResultWrapper
+        * @throws DBUnexpectedError
+        */
+       function freeResult( $res ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               wfSuppressWarnings();
+               $ok = $this->mysqlFreeResult( $res );
+               wfRestoreWarnings();
+               if ( !$ok ) {
+                       throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
+               }
+       }
+
+       /**
+        * Free result memory
+        *
+        * @param $res Raw result
+        * @return bool
+        */
+       abstract protected function mysqlFreeResult( $res );
+
+       /**
+        * @param $res ResultWrapper
+        * @return object|bool
+        * @throws DBUnexpectedError
+        */
+       function fetchObject( $res ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               wfSuppressWarnings();
+               $row = $this->mysqlFetchObject( $res );
+               wfRestoreWarnings();
+
+               $errno = $this->lastErrno();
+               // Unfortunately, mysql_fetch_object does not reset the last errno.
+               // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
+               // these are the only errors mysql_fetch_object can cause.
+               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               if ( $errno == 2000 || $errno == 2013 ) {
+                       throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
+               }
+               return $row;
+       }
+
+       /**
+        * Fetch a result row as an object
+        *
+        * @param $res Raw result
+        * @return stdClass
+        */
+       abstract protected function mysqlFetchObject( $res );
+
+       /**
+        * @param $res ResultWrapper
+        * @return array|bool
+        * @throws DBUnexpectedError
+        */
+       function fetchRow( $res ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               wfSuppressWarnings();
+               $row = $this->mysqlFetchArray( $res );
+               wfRestoreWarnings();
+
+               $errno = $this->lastErrno();
+               // Unfortunately, mysql_fetch_array does not reset the last errno.
+               // Only check for CR_SERVER_LOST and CR_UNKNOWN_ERROR, as
+               // these are the only errors mysql_fetch_array can cause.
+               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               if ( $errno == 2000 || $errno == 2013 ) {
+                       throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
+               }
+               return $row;
+       }
+
+       /**
+        * Fetch a result row as an associative and numeric array
+        *
+        * @param $res Raw result
+        * @return array
+        */
+       abstract protected function mysqlFetchArray( $res );
+
+       /**
+        * @throws DBUnexpectedError
+        * @param $res ResultWrapper
+        * @return int
+        */
+       function numRows( $res ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               wfSuppressWarnings();
+               $n = $this->mysqlNumRows( $res );
+               wfRestoreWarnings();
+               // Unfortunately, mysql_num_rows does not reset the last errno.
+               // We are not checking for any errors here, since
+               // these are no errors mysql_num_rows can cause.
+               // See http://dev.mysql.com/doc/refman/5.0/en/mysql-fetch-row.html.
+               // See https://bugzilla.wikimedia.org/42430
+               return $n;
+       }
+
+       /**
+        * Get number of rows in result
+        *
+        * @param $res Raw result
+        * @return int
+        */
+       abstract protected function mysqlNumRows( $res );
+
+       /**
+        * @param $res ResultWrapper
+        * @return int
+        */
+       function numFields( $res ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               return $this->mysqlNumFields( $res );
+       }
+
+       /**
+        * Get number of fields in result
+        *
+        * @param $res Raw result
+        * @return int
+        */
+       abstract protected function mysqlNumFields( $res );
+
+       /**
+        * @param $res ResultWrapper
+        * @param $n string
+        * @return string
+        */
+       function fieldName( $res, $n ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               return $this->mysqlFieldName( $res, $n );
+       }
+
+       /**
+        * Get the name of the specified field in a result
+        *
+        * @param $res Raw result
+        * @param $n int
+        * @return string
+        */
+       abstract protected function mysqlFieldName( $res, $n );
+
+       /**
+        * @param $res ResultWrapper
+        * @param $row
+        * @return bool
+        */
+       function dataSeek( $res, $row ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+               return $this->mysqlDataSeek( $res, $row );
+       }
+
+       /**
+        * Move internal result pointer
+        *
+        * @param $res Raw result
+        * @param $row int
+        * @return bool
+        */
+       abstract protected function mysqlDataSeek( $res, $row );
+
+       /**
+        * @return string
+        */
+       function lastError() {
+               if ( $this->mConn ) {
+                       # Even if it's non-zero, it can still be invalid
+                       wfSuppressWarnings();
+                       $error = $this->mysqlError( $this->mConn );
+                       if ( !$error ) {
+                               $error = $this->mysqlError();
+                       }
+                       wfRestoreWarnings();
+               } else {
+                       $error = $this->mysqlError();
+               }
+               if ( $error ) {
+                       $error .= ' (' . $this->mServer . ')';
+               }
+               return $error;
+       }
+
+       /**
+        * Returns the text of the error message from previous MySQL operation
+        *
+        * @param $conn Raw connection
+        * @return string
+        */
+       abstract protected function mysqlError( $conn = null );
+
+       /**
+        * @param $table string
+        * @param $uniqueIndexes
+        * @param $rows array
+        * @param $fname string
+        * @return ResultWrapper
+        */
+       function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
+               return $this->nativeReplace( $table, $rows, $fname );
+       }
+
+       /**
+        * Estimate rows in dataset
+        * Returns estimated count, based on EXPLAIN output
+        * Takes same arguments as Database::select()
+        *
+        * @param $table string|array
+        * @param $vars string|array
+        * @param $conds string|array
+        * @param $fname string
+        * @param $options string|array
+        * @return int
+        */
+       public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = __METHOD__, $options = array() ) {
+               $options['EXPLAIN'] = true;
+               $res = $this->select( $table, $vars, $conds, $fname, $options );
+               if ( $res === false ) {
+                       return false;
+               }
+               if ( !$this->numRows( $res ) ) {
+                       return 0;
+               }
+
+               $rows = 1;
+               foreach ( $res as $plan ) {
+                       $rows *= $plan->rows > 0 ? $plan->rows : 1; // avoid resetting to zero
+               }
+               return $rows;
+       }
+
+       /**
+        * @param $table string
+        * @param $field string
+        * @return bool|MySQLField
+        */
+       function fieldInfo( $table, $field ) {
+               $table = $this->tableName( $table );
+               $res = $this->query( "SELECT * FROM $table LIMIT 1", __METHOD__, true );
+               if ( !$res ) {
+                       return false;
+               }
+               $n = $this->mysqlNumFields( $res->result );
+               for ( $i = 0; $i < $n; $i++ ) {
+                       $meta = $this->mysqlFetchField( $res->result, $i );
+                       if ( $field == $meta->name ) {
+                               return new MySQLField( $meta );
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Get column information from a result
+        *
+        * @param $res Raw result
+        * @param $n int
+        * @return stdClass
+        */
+       abstract protected function mysqlFetchField( $res, $n );
+
+       /**
+        * Get information about an index into an object
+        * Returns false if the index does not exist
+        *
+        * @param $table string
+        * @param $index string
+        * @param $fname string
+        * @return bool|array|null False or null on failure
+        */
+       function indexInfo( $table, $index, $fname = __METHOD__ ) {
+               # SHOW INDEX works in MySQL 3.23.58, but SHOW INDEXES does not.
+               # SHOW INDEX should work for 3.x and up:
+               # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
+               $table = $this->tableName( $table );
+               $index = $this->indexName( $index );
+
+               $sql = 'SHOW INDEX FROM ' . $table;
+               $res = $this->query( $sql, $fname );
+
+               if ( !$res ) {
+                       return null;
+               }
+
+               $result = array();
+
+               foreach ( $res as $row ) {
+                       if ( $row->Key_name == $index ) {
+                               $result[] = $row;
+                       }
+               }
+               return empty( $result ) ? false : $result;
+       }
+
+       /**
+        * @param $s string
+        *
+        * @return string
+        */
+       function strencode( $s ) {
+               $sQuoted = $this->mysqlRealEscapeString( $s );
+
+               if ( $sQuoted === false ) {
+                       $this->ping();
+                       $sQuoted = $this->mysqlRealEscapeString( $s );
+               }
+               return $sQuoted;
+       }
+
+       /**
+        * MySQL uses `backticks` for identifier quoting instead of the sql standard "double quotes".
+        *
+        * @param $s string
+        *
+        * @return string
+        */
+       public function addIdentifierQuotes( $s ) {
+               return "`" . $this->strencode( $s ) . "`";
+       }
+
+       /**
+        * @param $name string
+        * @return bool
+        */
+       public function isQuotedIdentifier( $name ) {
+               return strlen( $name ) && $name[0] == '`' && substr( $name, -1, 1 ) == '`';
+       }
+
+       /**
+        * @return bool
+        */
+       function ping() {
+               $ping = $this->mysqlPing();
+               if ( $ping ) {
+                       return true;
+               }
+
+               $this->closeConnection();
+               $this->mOpened = false;
+               $this->mConn = false;
+               $this->open( $this->mServer, $this->mUser, $this->mPassword, $this->mDBname );
+               return true;
+       }
+
+       /**
+        * Ping a server connection or reconnect if there is no connection
+        *
+        * @return bool
+        */
+       abstract protected function mysqlPing();
+
+       /**
+        * Returns slave lag.
+        *
+        * This will do a SHOW SLAVE STATUS
+        *
+        * @return int
+        */
+       function getLag() {
+               if ( !is_null( $this->mFakeSlaveLag ) ) {
+                       wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
+                       return $this->mFakeSlaveLag;
+               }
+
+               return $this->getLagFromSlaveStatus();
+       }
+
+       /**
+        * @return bool|int
+        */
+       function getLagFromSlaveStatus() {
+               $res = $this->query( 'SHOW SLAVE STATUS', __METHOD__ );
+               if ( !$res ) {
+                       return false;
+               }
+               $row = $res->fetchObject();
+               if ( !$row ) {
+                       return false;
+               }
+               if ( strval( $row->Seconds_Behind_Master ) === '' ) {
+                       return false;
+               } else {
+                       return intval( $row->Seconds_Behind_Master );
+               }
+       }
+
+       /**
+        * @deprecated in 1.19, use getLagFromSlaveStatus
+        *
+        * @return bool|int
+        */
+       function getLagFromProcesslist() {
+               wfDeprecated( __METHOD__, '1.19' );
+               $res = $this->query( 'SHOW PROCESSLIST', __METHOD__ );
+               if ( !$res ) {
+                       return false;
+               }
+               # Find slave SQL thread
+               foreach ( $res as $row ) {
+                       /* This should work for most situations - when default db
+                        * for thread is not specified, it had no events executed,
+                        * and therefore it doesn't know yet how lagged it is.
+                        *
+                        * Relay log I/O thread does not select databases.
+                        */
+                       if ( $row->User == 'system user' &&
+                               $row->State != 'Waiting for master to send event' &&
+                               $row->State != 'Connecting to master' &&
+                               $row->State != 'Queueing master event to the relay log' &&
+                               $row->State != 'Waiting for master update' &&
+                               $row->State != 'Requesting binlog dump' &&
+                               $row->State != 'Waiting to reconnect after a failed master event read' &&
+                               $row->State != 'Reconnecting after a failed master event read' &&
+                               $row->State != 'Registering slave on master'
+                               ) {
+                               # This is it, return the time (except -ve)
+                               if ( $row->Time > 0x7fffffff ) {
+                                       return false;
+                               } else {
+                                       return $row->Time;
+                               }
+                       }
+               }
+               return false;
+       }
+
+       /**
+        * Wait for the slave to catch up to a given master position.
+        *
+        * @param $pos DBMasterPos object
+        * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
+        * @return bool|string
+        */
+       function masterPosWait( DBMasterPos $pos, $timeout ) {
+               $fname = __METHOD__;
+               wfProfileIn( $fname );
+
+               # Commit any open transactions
+               if ( $this->mTrxLevel ) {
+                       $this->commit( $fname );
+               }
+
+               if ( !is_null( $this->mFakeSlaveLag ) ) {
+                       $status = parent::masterPosWait( $pos, $timeout );
+                       wfProfileOut( $fname );
+                       return $status;
+               }
+
+               # Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
+               $encFile = $this->addQuotes( $pos->file );
+               $encPos = intval( $pos->pos );
+               $sql = "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)";
+               $res = $this->doQuery( $sql );
+
+               if ( $res && $row = $this->fetchRow( $res ) ) {
+                       wfProfileOut( $fname );
+                       return $row[0];
+               }
+               wfProfileOut( $fname );
+               return false;
+       }
+
+       /**
+        * Get the position of the master from SHOW SLAVE STATUS
+        *
+        * @return MySQLMasterPos|bool
+        */
+       function getSlavePos() {
+               if ( !is_null( $this->mFakeSlaveLag ) ) {
+                       return parent::getSlavePos();
+               }
+
+               $res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
+               $row = $this->fetchObject( $res );
+
+               if ( $row ) {
+                       $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
+                       return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * Get the position of the master from SHOW MASTER STATUS
+        *
+        * @return MySQLMasterPos|bool
+        */
+       function getMasterPos() {
+               if ( $this->mFakeMaster ) {
+                       return parent::getMasterPos();
+               }
+
+               $res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
+               $row = $this->fetchObject( $res );
+
+               if ( $row ) {
+                       return new MySQLMasterPos( $row->File, $row->Position );
+               } else {
+                       return false;
+               }
+       }
+
+       /**
+        * @param $index
+        * @return string
+        */
+       function useIndexClause( $index ) {
+               return "FORCE INDEX (" . $this->indexName( $index ) . ")";
+       }
+
+       /**
+        * @return string
+        */
+       function lowPriorityOption() {
+               return 'LOW_PRIORITY';
+       }
+
+       /**
+        * @return string
+        */
+       public function getSoftwareLink() {
+               return '[http://www.mysql.com/ MySQL]';
+       }
+
+       /**
+        * @param $options array
+        */
+       public function setSessionOptions( array $options ) {
+               if ( isset( $options['connTimeout'] ) ) {
+                       $timeout = (int)$options['connTimeout'];
+                       $this->query( "SET net_read_timeout=$timeout" );
+                       $this->query( "SET net_write_timeout=$timeout" );
+               }
+       }
+
+       public function streamStatementEnd( &$sql, &$newLine ) {
+               if ( strtoupper( substr( $newLine, 0, 9 ) ) == 'DELIMITER' ) {
+                       preg_match( '/^DELIMITER\s+(\S+)/', $newLine, $m );
+                       $this->delimiter = $m[1];
+                       $newLine = '';
+               }
+               return parent::streamStatementEnd( $sql, $newLine );
+       }
+
+       /**
+        * Check to see if a named lock is available. This is non-blocking.
+        *
+        * @param string $lockName name of lock to poll
+        * @param string $method name of method calling us
+        * @return Boolean
+        * @since 1.20
+        */
+       public function lockIsFree( $lockName, $method ) {
+               $lockName = $this->addQuotes( $lockName );
+               $result = $this->query( "SELECT IS_FREE_LOCK($lockName) AS lockstatus", $method );
+               $row = $this->fetchObject( $result );
+               return ( $row->lockstatus == 1 );
+       }
+
+       /**
+        * @param $lockName string
+        * @param $method string
+        * @param $timeout int
+        * @return bool
+        */
+       public function lock( $lockName, $method, $timeout = 5 ) {
+               $lockName = $this->addQuotes( $lockName );
+               $result = $this->query( "SELECT GET_LOCK($lockName, $timeout) AS lockstatus", $method );
+               $row = $this->fetchObject( $result );
+
+               if ( $row->lockstatus == 1 ) {
+                       return true;
+               } else {
+                       wfDebug( __METHOD__ . " failed to acquire lock\n" );
+                       return false;
+               }
+       }
+
+       /**
+        * FROM MYSQL DOCS: http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
+        * @param $lockName string
+        * @param $method string
+        * @return bool
+        */
+       public function unlock( $lockName, $method ) {
+               $lockName = $this->addQuotes( $lockName );
+               $result = $this->query( "SELECT RELEASE_LOCK($lockName) as lockstatus", $method );
+               $row = $this->fetchObject( $result );
+               return ( $row->lockstatus == 1 );
+       }
+
+       /**
+        * @param $read array
+        * @param $write array
+        * @param $method string
+        * @param $lowPriority bool
+        * @return bool
+        */
+       public function lockTables( $read, $write, $method, $lowPriority = true ) {
+               $items = array();
+
+               foreach ( $write as $table ) {
+                       $tbl = $this->tableName( $table ) .
+                                       ( $lowPriority ? ' LOW_PRIORITY' : '' ) .
+                                       ' WRITE';
+                       $items[] = $tbl;
+               }
+               foreach ( $read as $table ) {
+                       $items[] = $this->tableName( $table ) . ' READ';
+               }
+               $sql = "LOCK TABLES " . implode( ',', $items );
+               $this->query( $sql, $method );
+               return true;
+       }
+
+       /**
+        * @param $method string
+        * @return bool
+        */
+       public function unlockTables( $method ) {
+               $this->query( "UNLOCK TABLES", $method );
+               return true;
+       }
+
+       /**
+        * Get search engine class. All subclasses of this
+        * need to implement this if they wish to use searching.
+        *
+        * @return String
+        */
+       public function getSearchEngine() {
+               return 'SearchMySQL';
+       }
+
+       /**
+        * @param bool $value
+        * @return mixed
+        */
+       public function setBigSelects( $value = true ) {
+               if ( $value === 'default' ) {
+                       if ( $this->mDefaultBigSelects === null ) {
+                               # Function hasn't been called before so it must already be set to the default
+                               return;
+                       } else {
+                               $value = $this->mDefaultBigSelects;
+                       }
+               } elseif ( $this->mDefaultBigSelects === null ) {
+                       $this->mDefaultBigSelects = (bool)$this->selectField( false, '@@sql_big_selects' );
+               }
+               $encValue = $value ? '1' : '0';
+               $this->query( "SET sql_big_selects=$encValue", __METHOD__ );
+       }
+
+       /**
+        * DELETE where the condition is a join. MySql uses multi-table deletes.
+        * @param $delTable string
+        * @param $joinTable string
+        * @param $delVar string
+        * @param $joinVar string
+        * @param $conds array|string
+        * @param bool|string $fname bool
+        * @throws DBUnexpectedError
+        * @return bool|ResultWrapper
+        */
+       function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = __METHOD__ ) {
+               if ( !$conds ) {
+                       throw new DBUnexpectedError( $this, 'DatabaseBase::deleteJoin() called with empty $conds' );
+               }
+
+               $delTable = $this->tableName( $delTable );
+               $joinTable = $this->tableName( $joinTable );
+               $sql = "DELETE $delTable FROM $delTable, $joinTable WHERE $delVar=$joinVar ";
+
+               if ( $conds != '*' ) {
+                       $sql .= ' AND ' . $this->makeList( $conds, LIST_AND );
+               }
+
+               return $this->query( $sql, $fname );
+       }
+
+       /**
+        * @param string $table
+        * @param array $rows
+        * @param array $uniqueIndexes
+        * @param array $set
+        * @param string $fname
+        * @param array $options
+        * @return bool
+        */
+       public function upsert(
+               $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
+       ) {
+               if ( !count( $rows ) ) {
+                       return true; // nothing to do
+               }
+               $rows = is_array( reset( $rows ) ) ? $rows : array( $rows );
+
+               $table = $this->tableName( $table );
+               $columns = array_keys( $rows[0] );
+
+               $sql = "INSERT INTO $table (" . implode( ',', $columns ) . ') VALUES ';
+               $rowTuples = array();
+               foreach ( $rows as $row ) {
+                       $rowTuples[] = '(' . $this->makeList( $row ) . ')';
+               }
+               $sql .= implode( ',', $rowTuples );
+               $sql .= " ON DUPLICATE KEY UPDATE " . $this->makeList( $set, LIST_SET );
+
+               return (bool)$this->query( $sql, $fname );
+       }
+
+       /**
+        * Determines how long the server has been up
+        *
+        * @return int
+        */
+       function getServerUptime() {
+               $vars = $this->getMysqlStatus( 'Uptime' );
+               return (int)$vars['Uptime'];
+       }
+
+       /**
+        * Determines if the last failure was due to a deadlock
+        *
+        * @return bool
+        */
+       function wasDeadlock() {
+               return $this->lastErrno() == 1213;
+       }
+
+       /**
+        * Determines if the last failure was due to a lock timeout
+        *
+        * @return bool
+        */
+       function wasLockTimeout() {
+               return $this->lastErrno() == 1205;
+       }
+
+       /**
+        * Determines if the last query error was something that should be dealt
+        * with by pinging the connection and reissuing the query
+        *
+        * @return bool
+        */
+       function wasErrorReissuable() {
+               return $this->lastErrno() == 2013 || $this->lastErrno() == 2006;
+       }
+
+       /**
+        * Determines if the last failure was due to the database being read-only.
+        *
+        * @return bool
+        */
+       function wasReadOnlyError() {
+               return $this->lastErrno() == 1223 ||
+                       ( $this->lastErrno() == 1290 && strpos( $this->lastError(), '--read-only' ) !== false );
+       }
+
+       /**
+        * @param $oldName
+        * @param $newName
+        * @param $temporary bool
+        * @param $fname string
+        */
+       function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
+               $tmp = $temporary ? 'TEMPORARY ' : '';
+               $newName = $this->addIdentifierQuotes( $newName );
+               $oldName = $this->addIdentifierQuotes( $oldName );
+               $query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
+               $this->query( $query, $fname );
+       }
+
+       /**
+        * List all tables on the database
+        *
+        * @param string $prefix Only show tables with this prefix, e.g. mw_
+        * @param string $fname calling function name
+        * @return array
+        */
+       function listTables( $prefix = null, $fname = __METHOD__ ) {
+               $result = $this->query( "SHOW TABLES", $fname );
+
+               $endArray = array();
+
+               foreach ( $result as $table ) {
+                       $vars = get_object_vars( $table );
+                       $table = array_pop( $vars );
+
+                       if ( !$prefix || strpos( $table, $prefix ) === 0 ) {
+                               $endArray[] = $table;
+                       }
+               }
+
+               return $endArray;
+       }
+
+       /**
+        * @param $tableName
+        * @param $fName string
+        * @return bool|ResultWrapper
+        */
+       public function dropTable( $tableName, $fName = __METHOD__ ) {
+               if ( !$this->tableExists( $tableName, $fName ) ) {
+                       return false;
+               }
+               return $this->query( "DROP TABLE IF EXISTS " . $this->tableName( $tableName ), $fName );
+       }
+
+       /**
+        * @return array
+        */
+       protected function getDefaultSchemaVars() {
+               $vars = parent::getDefaultSchemaVars();
+               $vars['wgDBTableOptions'] = str_replace( 'TYPE', 'ENGINE', $GLOBALS['wgDBTableOptions'] );
+               $vars['wgDBTableOptions'] = str_replace( 'CHARSET=mysql4', 'CHARSET=binary', $vars['wgDBTableOptions'] );
+               return $vars;
+       }
+
+       /**
+        * Get status information from SHOW STATUS in an associative array
+        *
+        * @param $which string
+        * @return array
+        */
+       function getMysqlStatus( $which = "%" ) {
+               $res = $this->query( "SHOW STATUS LIKE '{$which}'" );
+               $status = array();
+
+               foreach ( $res as $row ) {
+                       $status[$row->Variable_name] = $row->Value;
+               }
+
+               return $status;
+       }
+
+}
+
+
+
+/**
+ * Utility class.
+ * @ingroup Database
+ */
+class MySQLField implements Field {
+       private $name, $tablename, $default, $max_length, $nullable,
+               $is_pk, $is_unique, $is_multiple, $is_key, $type;
+
+       function __construct( $info ) {
+               $this->name = $info->name;
+               $this->tablename = $info->table;
+               $this->default = $info->def;
+               $this->max_length = $info->max_length;
+               $this->nullable = !$info->not_null;
+               $this->is_pk = $info->primary_key;
+               $this->is_unique = $info->unique_key;
+               $this->is_multiple = $info->multiple_key;
+               $this->is_key = ( $this->is_pk || $this->is_unique || $this->is_multiple );
+               $this->type = $info->type;
+       }
+
+       /**
+        * @return string
+        */
+       function name() {
+               return $this->name;
+       }
+
+       /**
+        * @return string
+        */
+       function tableName() {
+               return $this->tableName;
+       }
+
+       /**
+        * @return string
+        */
+       function type() {
+               return $this->type;
+       }
+
+       /**
+        * @return bool
+        */
+       function isNullable() {
+               return $this->nullable;
+       }
+
+       function defaultValue() {
+               return $this->default;
+       }
+
+       /**
+        * @return bool
+        */
+       function isKey() {
+               return $this->is_key;
+       }
+
+       /**
+        * @return bool
+        */
+       function isMultipleKey() {
+               return $this->is_multiple;
+       }
+}
+
+class MySQLMasterPos implements DBMasterPos {
+       var $file, $pos;
+
+       function __construct( $file, $pos ) {
+               $this->file = $file;
+               $this->pos = $pos;
+       }
+
+       function __toString() {
+               return "{$this->file}/{$this->pos}";
+       }
+}
index f8833f5..3941179 100644 (file)
@@ -37,7 +37,7 @@ interface IORMRow {
         * Load the specified fields from the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param array|null $fields
         * @param boolean $override
@@ -64,9 +64,9 @@ interface IORMRow {
         * Gets the value of a field but first loads it if not done so already.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
-        * @param string$name
+        * @param string $name
         *
         * @return mixed
         */
@@ -146,7 +146,7 @@ interface IORMRow {
         * Load the default values, via getDefaults.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $override
         */
@@ -159,7 +159,7 @@ interface IORMRow {
         * @since 1.20
         *
         * @param string|null $functionName
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return boolean Success indicator
         */
@@ -169,7 +169,7 @@ interface IORMRow {
         * Removes the object from the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return boolean Success indicator
         */
@@ -211,7 +211,7 @@ interface IORMRow {
         * Add an amount (can be negative) to the specified field (needs to be numeric).
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param string $field
         * @param integer $amount
@@ -233,7 +233,7 @@ interface IORMRow {
         * Computes and updates the values of the summary fields.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param array|string|null $summaryFields
         */
@@ -243,7 +243,7 @@ interface IORMRow {
         * Sets the value for the @see $updateSummaries field.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $update
         */
@@ -253,7 +253,7 @@ interface IORMRow {
         * Sets the value for the @see $inSummaryMode field.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $summaryMode
         */
@@ -263,7 +263,7 @@ interface IORMRow {
         * Returns the table this IORMRow is a row in.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return IORMTable
         */
index 4b9ecce..519e2df 100644 (file)
@@ -142,12 +142,12 @@ class LoadMonitor_MySQL implements LoadMonitor {
                $masterName = $this->parent->getServerName( 0 );
                $memcKey = wfMemcKey( 'lag_times', $masterName );
                $times = $wgMemc->get( $memcKey );
-               if ( $times ) {
+               if ( is_array( $times ) ) {
                        # Randomly recache with probability rising over $expiry
                        $elapsed = time() - $times['timestamp'];
                        $chance = max( 0, ( $expiry - $elapsed ) * $requestRate );
                        if ( mt_rand( 0, $chance ) != 0 ) {
-                               unset( $times['timestamp'] );
+                               unset( $times['timestamp'] ); // hide from caller
                                wfProfileOut( __METHOD__ );
                                return $times;
                        }
@@ -157,6 +157,17 @@ class LoadMonitor_MySQL implements LoadMonitor {
                }
 
                # Cache key missing or expired
+               if ( $wgMemc->add( "$memcKey:lock", 1, 10 ) ) {
+                       # Let this process alone update the cache value
+                       $unlocker = new ScopedCallback( function() use ( $wgMemc, $memcKey ) {
+                               $wgMemc->delete( $memcKey );
+                       } );
+               } elseif ( is_array( $times ) ) {
+                       # Could not acquire lock but an old cache exists, so use it
+                       unset( $times['timestamp'] ); // hide from caller
+                       wfProfileOut( __METHOD__ );
+                       return $times;
+               }
 
                $times = array();
                foreach ( $serverIndexes as $i ) {
@@ -171,14 +182,11 @@ class LoadMonitor_MySQL implements LoadMonitor {
 
                # Add a timestamp key so we know when it was cached
                $times['timestamp'] = time();
-               $wgMemc->set( $memcKey, $times, $expiry );
-
-               # But don't give the timestamp to the caller
-               unset( $times['timestamp'] );
-               $lagTimes = $times;
+               $wgMemc->set( $memcKey, $times, $expiry + 10 );
+               unset( $times['timestamp'] ); // hide from caller
 
                wfProfileOut( __METHOD__ );
-               return $lagTimes;
+               return $times;
        }
 
        /**
index ea6ff63..5ce3794 100644 (file)
@@ -48,7 +48,7 @@ class ORMRow implements IORMRow {
         * Settings this to false can prevent needless updating work in situations
         * such as deleting a university, which will then delete all it's courses.
         *
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         * @since 1.20
         * @var bool
         */
@@ -59,14 +59,14 @@ class ORMRow implements IORMRow {
         * This mode indicates that only summary fields got updated,
         * which allows for optimizations.
         *
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         * @since 1.20
         * @var bool
         */
        protected $inSummaryMode = false;
 
        /**
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         * @since 1.20
         * @var ORMTable|null
         */
@@ -77,9 +77,9 @@ class ORMRow implements IORMRow {
         *
         * @since 1.20
         *
-        * @param IORMTable|null $table Deprecated since 1.21
+        * @param IORMTable|null $table Deprecated since 1.22
         * @param array|null $fields
-        * @param boolean $loadDefaults Deprecated since 1.21
+        * @param boolean $loadDefaults Deprecated since 1.22
         */
        public function __construct( IORMTable $table = null, $fields = null, $loadDefaults = false ) {
                $this->table = $table;
@@ -99,7 +99,7 @@ class ORMRow implements IORMRow {
         * Load the specified fields from the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param array|null $fields
         * @param boolean $override
@@ -164,7 +164,7 @@ class ORMRow implements IORMRow {
         * Gets the value of a field but first loads it if not done so already.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param $name string
         *
@@ -240,7 +240,7 @@ class ORMRow implements IORMRow {
         * Gets the fields => values to write to the table.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return array
         */
@@ -326,7 +326,7 @@ class ORMRow implements IORMRow {
         * Load the default values, via getDefaults.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $override
         */
@@ -339,7 +339,7 @@ class ORMRow implements IORMRow {
         * when it already exists, or inserting it when it doesn't.
         *
         * @since 1.20
-        * @deprecated since 1.21 Use IORMTable->updateRow or ->insertRow
+        * @deprecated since 1.22 Use IORMTable->updateRow or ->insertRow
         *
         * @param string|null $functionName
         *
@@ -357,7 +357,7 @@ class ORMRow implements IORMRow {
         * Updates the object in the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param string|null $functionName
         *
@@ -369,7 +369,7 @@ class ORMRow implements IORMRow {
                $success = $dbw->update(
                        $this->table->getName(),
                        $this->getWriteValues(),
-                       $this->table->getPrefixedValues( $this->getWriteValues() ),
+                       $this->table->getPrefixedValues( $this->getUpdateConditions() ),
                        is_null( $functionName ) ? __METHOD__ : $functionName
                );
 
@@ -395,7 +395,7 @@ class ORMRow implements IORMRow {
         * Inserts the object into the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param string|null $functionName
         * @param array|null $options
@@ -428,7 +428,7 @@ class ORMRow implements IORMRow {
         * Removes the object from the database.
         *
         * @since 1.20
-        * @deprecated since 1.21, use IROMtable->removeRow
+        * @deprecated since 1.22, use IORMTable->removeRow
         *
         * @return boolean Success indicator
         */
@@ -448,7 +448,7 @@ class ORMRow implements IORMRow {
         * Gets called before an object is removed from the database.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         */
        protected function beforeRemove() {
                $this->loadFields( $this->getBeforeRemoveFields(), false, true );
@@ -472,7 +472,7 @@ class ORMRow implements IORMRow {
         * Can be overridden to get rid of linked data.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         */
        protected function onRemoved() {
                $this->setField( 'id', null );
@@ -520,7 +520,7 @@ class ORMRow implements IORMRow {
         * Add an amount (can be negative) to the specified field (needs to be numeric).
         *
         * @since 1.20
-        * @deprecated since 1.21, use IORMTable->addToField
+        * @deprecated since 1.22, use IORMTable->addToField
         *
         * @param string $field
         * @param integer $amount
@@ -535,7 +535,7 @@ class ORMRow implements IORMRow {
         * Return the names of the fields.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return array
         */
@@ -547,7 +547,7 @@ class ORMRow implements IORMRow {
         * Computes and updates the values of the summary fields.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param array|string|null $summaryFields
         */
@@ -559,7 +559,7 @@ class ORMRow implements IORMRow {
         * Sets the value for the @see $updateSummaries field.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $update
         */
@@ -571,7 +571,7 @@ class ORMRow implements IORMRow {
         * Sets the value for the @see $inSummaryMode field.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @param boolean $summaryMode
         */
@@ -583,7 +583,7 @@ class ORMRow implements IORMRow {
         * Returns the table this IORMRow is a row in.
         *
         * @since 1.20
-        * @deprecated since 1.21
+        * @deprecated since 1.22
         *
         * @return IORMTable
         */
index 3a432cd..5f6723b 100644 (file)
@@ -952,9 +952,9 @@ class ORMTable extends DBAccessBase implements IORMTable {
        }
 
        /**
-        * Updated the provided row in the database.
+        * Updates the provided row in the database.
         *
-        * @since 1.21
+        * @since 1.22
         *
         * @param IORMRow $row The row to save
         * @param string|null $functionName
@@ -980,7 +980,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
        /**
         * Inserts the provided row into the database.
         *
-        * @since 1.21
+        * @since 1.22
         *
         * @param IORMRow $row
         * @param string|null $functionName
@@ -1013,7 +1013,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
        /**
         * Gets the fields => values to write to the table.
         *
-        * @since 1.20
+        * @since 1.22
         *
         * @param IORMRow $row
         *
@@ -1047,7 +1047,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
        /**
         * Removes the provided row from the database.
         *
-        * @since 1.21
+        * @since 1.22
         *
         * @param IORMRow $row
         * @param string|null $functionName
@@ -1067,7 +1067,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
        /**
         * Add an amount (can be negative) to the specified field (needs to be numeric).
         *
-        * @since 1.21
+        * @since 1.22
         *
         * @param array $conditions
         * @param string $field
index ec9a62a..e2cfa98 100644 (file)
@@ -310,7 +310,7 @@ class MWDebug {
                global $wgDebugComments, $wgShowDebug;
 
                if ( self::$enabled || $wgDebugComments || $wgShowDebug ) {
-                       self::$debug[] = rtrim( $str );
+                       self::$debug[] = rtrim( UtfNormal::cleanUp( $str ) );
                }
        }
 
index 4ee066e..916ab38 100644 (file)
@@ -410,8 +410,7 @@ class DifferenceEngine extends ContextSource {
         * @return String
         */
        protected function markPatrolledLink() {
-               global $wgUseRCPatrol, $wgRCMaxAge, $wgEnableAPI, $wgEnableWriteAPI;
-               $cache = wfGetMainCache();
+               global $wgUseRCPatrol, $wgEnableAPI, $wgEnableWriteAPI;
 
                if ( $this->mMarkPatrolledLink === null ) {
                        // Prepare a change patrol link, if applicable
@@ -420,9 +419,7 @@ class DifferenceEngine extends ContextSource {
                                $wgUseRCPatrol && $this->mNewPage->quickUserCan( 'patrol', $this->getUser() ) &&
                                // Only do this if the revision isn't more than 6 hours older
                                // than the Max RC age (6h because the RC might not be cleaned out regularly)
-                               RecentChange::isInRCLifespan( $this->mNewRev->getTimestamp(), 21600 ) &&
-                               // Maybe the result is cached
-                               !$cache->get( wfMemcKey( 'NotPatrollableRevId', $this->mNewid ) )
+                               RecentChange::isInRCLifespan( $this->mNewRev->getTimestamp(), 21600 )
                        ) {
                                // Look for an unpatrolled change corresponding to this diff
 
@@ -464,7 +461,6 @@ class DifferenceEngine extends ContextSource {
                                                )
                                        ) . ']</span>';
                                } else {
-                                       $cache->set( wfMemcKey( 'NotPatrollableRevId', $this->mNewid ), '1', $wgRCMaxAge );
                                        $this->mMarkPatrolledLink = '';
                                }
                        } else {
index 7d0dbd5..8f0a133 100644 (file)
@@ -28,7 +28,7 @@
  */
 class FSFile {
        protected $path; // path to file
-       private $sha1Base36 = null; // File Sha1Base36
+       protected $sha1Base36; // file SHA-1 in base 36
 
        /**
         * Sets up the file object
@@ -98,7 +98,7 @@ class FSFile {
         * Get an associative array containing information about
         * a file with the given storage path.
         *
-        * @param $ext Mixed: the file extension, or true to extract it from the filename.
+        * @param Mixed $ext: the file extension, or true to extract it from the filename.
         *             Set it to false to ignore the extension.
         *
         * @return array
@@ -171,7 +171,7 @@ class FSFile {
        /**
         * Exract image size information
         *
-        * @param $gis array
+        * @param array $gis
         * @return Array
         */
        protected function extractImageSizeInfo( array $gis ) {
@@ -194,7 +194,7 @@ class FSFile {
         * 160 log 2 / log 36 = 30.95, so the 160-bit hash fills 31 digits in base 36
         * fairly neatly.
         *
-        * @param $recache bool
+        * @param bool $recache
         * @return bool|string False on failure
         */
        public function getSha1Base36( $recache = false ) {
@@ -220,7 +220,7 @@ class FSFile {
        /**
         * Get the final file extension from a file system path
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        public static function extensionFromPath( $path ) {
@@ -232,9 +232,8 @@ class FSFile {
         * Get an associative array containing information about a file in the local filesystem.
         *
         * @param string $path absolute local filesystem path
-        * @param $ext Mixed: the file extension, or true to extract it from the filename.
+        * @param Mixed $ext: the file extension, or true to extract it from the filename.
         *             Set it to false to ignore the extension.
-        *
         * @return array
         */
        public static function getPropsFromPath( $path, $ext = true ) {
@@ -249,19 +248,11 @@ class FSFile {
         * 160 log 2 / log 36 = 30.95, so the 160-bit hash fills 31 digits in base 36
         * fairly neatly.
         *
-        * @param $path string
-        * @param $recache bool
-        *
+        * @param string $path
         * @return bool|string False on failure
         */
-       public static function getSha1Base36FromPath( $path, $recache = false ) {
-               static $sha1Base36 = array();
-
-               if ( !isset( $sha1Base36[$path] ) || $recache ) {
-                       $fsFile = new self( $path );
-                       $sha1Base36[$path] = $fsFile->getSha1Base36();
-               }
-
-               return $sha1Base36[$path];
+       public static function getSha1Base36FromPath( $path ) {
+               $fsFile = new self( $path );
+               return $fsFile->getSha1Base36();
        }
 }
index 11a5ac9..6d64216 100644 (file)
@@ -82,12 +82,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::resolveContainerPath()
-        * @param $container string
-        * @param $relStoragePath string
-        * @return null|string
-        */
        protected function resolveContainerPath( $container, $relStoragePath ) {
                // Check that container has a root directory
                if ( isset( $this->containerPaths[$container] ) || isset( $this->basePath ) ) {
@@ -121,8 +115,8 @@ class FSFileBackend extends FileBackendStore {
         * Given the short (unresolved) and full (resolved) name of
         * a container, return the file system path of the container.
         *
-        * @param $shortCont string
-        * @param $fullCont string
+        * @param string $shortCont
+        * @param string $fullCont
         * @return string|null
         */
        protected function containerFSRoot( $shortCont, $fullCont ) {
@@ -153,10 +147,6 @@ class FSFileBackend extends FileBackendStore {
                return $fsPath;
        }
 
-       /**
-        * @see FileBackendStore::isPathUsableInternal()
-        * @return bool
-        */
        public function isPathUsableInternal( $storagePath ) {
                $fsPath = $this->resolveToFSPath( $storagePath );
                if ( $fsPath === null ) {
@@ -178,10 +168,6 @@ class FSFileBackend extends FileBackendStore {
                return $ok;
        }
 
-       /**
-        * @see FileBackendStore::doCreateInternal()
-        * @return Status
-        */
        protected function doCreateInternal( array $params ) {
                $status = Status::newGood();
 
@@ -235,10 +221,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doStoreInternal()
-        * @return Status
-        */
        protected function doStoreInternal( array $params ) {
                $status = Status::newGood();
 
@@ -284,10 +266,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doCopyInternal()
-        * @return Status
-        */
        protected function doCopyInternal( array $params ) {
                $status = Status::newGood();
 
@@ -348,10 +326,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doMoveInternal()
-        * @return Status
-        */
        protected function doMoveInternal( array $params ) {
                $status = Status::newGood();
 
@@ -405,10 +379,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doDeleteInternal()
-        * @return Status
-        */
        protected function doDeleteInternal( array $params ) {
                $status = Status::newGood();
 
@@ -454,10 +424,6 @@ class FSFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doPrepareInternal()
-        * @return Status
-        */
        protected function doPrepareInternal( $fullCont, $dirRel, array $params ) {
                $status = Status::newGood();
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -481,10 +447,6 @@ class FSFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doSecureInternal()
-        * @return Status
-        */
        protected function doSecureInternal( $fullCont, $dirRel, array $params ) {
                $status = Status::newGood();
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -512,10 +474,6 @@ class FSFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doPublishInternal()
-        * @return Status
-        */
        protected function doPublishInternal( $fullCont, $dirRel, array $params ) {
                $status = Status::newGood();
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -543,10 +501,6 @@ class FSFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doCleanInternal()
-        * @return Status
-        */
        protected function doCleanInternal( $fullCont, $dirRel, array $params ) {
                $status = Status::newGood();
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
@@ -560,10 +514,6 @@ class FSFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doFileExists()
-        * @return array|bool|null
-        */
        protected function doGetFileStat( array $params ) {
                $source = $this->resolveToFSPath( $params['src'] );
                if ( $source === null ) {
@@ -593,10 +543,6 @@ class FSFileBackend extends FileBackendStore {
                clearstatcache(); // clear the PHP file stat cache
        }
 
-       /**
-        * @see FileBackendStore::doDirectoryExists()
-        * @return bool|null
-        */
        protected function doDirectoryExists( $fullCont, $dirRel, array $params ) {
                list( , $shortCont, ) = FileBackend::splitStoragePath( $params['dir'] );
                $contRoot = $this->containerFSRoot( $shortCont, $fullCont ); // must be valid
@@ -647,10 +593,6 @@ class FSFileBackend extends FileBackendStore {
                return new FSFileBackendFileList( $dir, $params );
        }
 
-       /**
-        * @see FileBackendStore::doGetLocalReferenceMulti()
-        * @return Array
-        */
        protected function doGetLocalReferenceMulti( array $params ) {
                $fsFiles = array(); // (path => FSFile)
 
@@ -666,10 +608,6 @@ class FSFileBackend extends FileBackendStore {
                return $fsFiles;
        }
 
-       /**
-        * @see FileBackendStore::doGetLocalCopyMulti()
-        * @return Array
-        */
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array(); // (path => TempFSFile)
 
@@ -702,18 +640,10 @@ class FSFileBackend extends FileBackendStore {
                return $tmpFiles;
        }
 
-       /**
-        * @see FileBackendStore::directoriesAreVirtual()
-        * @return bool
-        */
        protected function directoriesAreVirtual() {
                return false;
        }
 
-       /**
-        * @see FileBackendStore::doExecuteOpHandlesInternal()
-        * @return Array List of corresponding Status objects
-        */
        protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
                $statuses = array();
 
@@ -807,8 +737,8 @@ class FSFileBackend extends FileBackendStore {
        }
 
        /**
-        * @param $errno integer
-        * @param $errstr string
+        * @param integer $errno
+        * @param string $errstr
         * @return bool
         * @access private
         */
@@ -827,13 +757,15 @@ class FSFileOpHandle extends FileBackendStoreOpHandle {
        public $chmodPath; // string; file to chmod
 
        /**
-        * @param $backend
-        * @param $params array
-        * @param $call
-        * @param $cmd
-        * @param $chmodPath null
+        * @param FSFileBackend $backend
+        * @param array $params
+        * @param string $call
+        * @param string $cmd
+        * @param integer|null $chmodPath
         */
-       public function __construct( $backend, array $params, $call, $cmd, $chmodPath = null ) {
+       public function __construct(
+               FSFileBackend $backend, array $params, $call, $cmd, $chmodPath = null
+       ) {
                $this->backend = $backend;
                $this->params = $params;
                $this->call = $call;
@@ -859,7 +791,7 @@ abstract class FSFileBackendList implements Iterator {
 
        /**
         * @param string $dir file system directory
-        * @param $params array
+        * @param array $params
         */
        public function __construct( $dir, array $params ) {
                $path = realpath( $dir ); // normalize
@@ -922,8 +854,8 @@ abstract class FSFileBackendList implements Iterator {
                try {
                        $this->iter->next();
                        $this->filterViaNext();
-               } catch ( UnexpectedValueException $e ) {
-                       $this->iter = null;
+               } catch ( UnexpectedValueException $e ) { // bad permissions? deleted?
+                       throw new FileBackendError( "File iterator gave UnexpectedValueException." );
                }
                ++$this->pos;
        }
@@ -937,8 +869,8 @@ abstract class FSFileBackendList implements Iterator {
                try {
                        $this->iter->rewind();
                        $this->filterViaNext();
-               } catch ( UnexpectedValueException $e ) {
-                       $this->iter = null;
+               } catch ( UnexpectedValueException $e ) { // bad permissions? deleted?
+                       throw new FileBackendError( "File iterator gave UnexpectedValueException." );
                }
        }
 
@@ -959,7 +891,7 @@ abstract class FSFileBackendList implements Iterator {
         * Return only the relative path and normalize slashes to FileBackend-style.
         * Uses the "real path" since the suffix is based upon that.
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        protected function getRelPath( $dir ) {
index ab30d30..9b4760a 100644 (file)
@@ -94,7 +94,7 @@ abstract class FileBackend {
         *                   Allowed values are "implicit", "explicit" and "off".
         *   - concurrency : How many file operations can be done in parallel.
         *
-        * @param $config Array
+        * @param array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -1043,7 +1043,7 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param $params array
+        * @param array $params
         * $params include:
         *   - dir : storage directory
         * @return bool|null Returns null on failure
@@ -1061,7 +1061,9 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param $params array
+        * Failures during iteration can result in FileBackendError exceptions (since 1.22).
+        *
+        * @param array $params
         * $params include:
         *   - dir     : storage directory
         *   - topOnly : only return direct child dirs of the directory
@@ -1076,7 +1078,9 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param $params array
+        * Failures during iteration can result in FileBackendError exceptions (since 1.22).
+        *
+        * @param array $params
         * $params include:
         *   - dir : storage directory
         * @return Traversable|Array|null Returns null on failure
@@ -1096,7 +1100,9 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param $params array
+        * Failures during iteration can result in FileBackendError exceptions (since 1.22).
+        *
+        * @param array $params
         * $params include:
         *   - dir        : storage directory
         *   - topOnly    : only return direct child files of the directory (since 1.20)
@@ -1111,7 +1117,9 @@ abstract class FileBackend {
         *
         * Storage backends with eventual consistency might return stale data.
         *
-        * @param $params array
+        * Failures during iteration can result in FileBackendError exceptions (since 1.22).
+        *
+        * @param array $params
         * $params include:
         *   - dir        : storage directory
         *   - adviseStat : set to true if stat requests will be made on the files (since 1.22)
@@ -1147,7 +1155,7 @@ abstract class FileBackend {
         * Callers should consider using getScopedFileLocks() instead.
         *
         * @param array $paths Storage paths
-        * @param $type integer LockManager::LOCK_* constant
+        * @param integer $type LockManager::LOCK_* constant
         * @return Status
         */
        final public function lockFiles( array $paths, $type ) {
@@ -1158,7 +1166,7 @@ abstract class FileBackend {
         * Unlock the files at the given storage paths in the backend.
         *
         * @param array $paths Storage paths
-        * @param $type integer LockManager::LOCK_* constant
+        * @param integer $type LockManager::LOCK_* constant
         * @return Status
         */
        final public function unlockFiles( array $paths, $type ) {
@@ -1174,8 +1182,8 @@ abstract class FileBackend {
         * the status updated. Unlock fatals will not change the status "OK" value.
         *
         * @param array $paths Storage paths
-        * @param $type integer LockManager::LOCK_* constant
-        * @param $status Status Status to update on lock/unlock
+        * @param integer $type LockManager::LOCK_* constant
+        * @param Status $status Status to update on lock/unlock
         * @return ScopedLock|null Returns null on failure
         */
        final public function getScopedFileLocks( array $paths, $type, Status $status ) {
@@ -1194,7 +1202,7 @@ abstract class FileBackend {
         * @see FileBackend::doOperations()
         *
         * @param array $ops List of file operations to FileBackend::doOperations()
-        * @param $status Status Status to update on lock/unlock
+        * @param Status $status Status to update on lock/unlock
         * @return Array List of ScopedFileLocks or null values
         * @since 1.20
         */
@@ -1235,7 +1243,7 @@ abstract class FileBackend {
         * Check if a given path is a "mwstore://" path.
         * This does not do any further validation or any existence checks.
         *
-        * @param $path string
+        * @param string $path
         * @return bool
         */
        final public static function isStoragePath( $path ) {
@@ -1247,7 +1255,7 @@ abstract class FileBackend {
         * and a relative file path. The relative path may be the empty string.
         * This does not do any path normalization or traversal checks.
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return Array (backend, container, rel object) or (null, null, null)
         */
        final public static function splitStoragePath( $storagePath ) {
@@ -1269,7 +1277,7 @@ abstract class FileBackend {
         * Normalize a storage path by cleaning up directory separators.
         * Returns null if the path is not of the format of a valid storage path.
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return string|null
         */
        final public static function normalizeStoragePath( $storagePath ) {
@@ -1290,7 +1298,7 @@ abstract class FileBackend {
         * This returns a path like "mwstore://backend/container",
         * "mwstore://backend/container/...", or null if there is no parent.
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return string|null
         */
        final public static function parentStoragePath( $storagePath ) {
@@ -1302,7 +1310,7 @@ abstract class FileBackend {
        /**
         * Get the final extension from a storage or FS path
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        final public static function extensionFromPath( $path ) {
@@ -1313,7 +1321,7 @@ abstract class FileBackend {
        /**
         * Check if a relative path has no directory traversals
         *
-        * @param $path string
+        * @param string $path
         * @return bool
         * @since 1.20
         */
@@ -1379,3 +1387,9 @@ abstract class FileBackend {
                return $path;
        }
 }
+
+/**
+ * @ingroup FileBackend
+ * @since 1.22
+ */
+class FileBackendError extends MWException {}
index 672e437..be8a207 100644 (file)
@@ -116,7 +116,7 @@ class FileBackendGroup {
        /**
         * Register an array of file backend configurations
         *
-        * @param $configs Array
+        * @param Array $configs
         * @return void
         * @throws MWException
         */
@@ -145,7 +145,7 @@ class FileBackendGroup {
        /**
         * Get the backend object with a given name
         *
-        * @param $name string
+        * @param string $name
         * @return FileBackend
         * @throws MWException
         */
@@ -165,7 +165,7 @@ class FileBackendGroup {
        /**
         * Get the config array for a backend object with a given name
         *
-        * @param $name string
+        * @param string $name
         * @return Array
         * @throws MWException
         */
@@ -180,7 +180,7 @@ class FileBackendGroup {
        /**
         * Get an appropriate backend object from a storage path
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return FileBackend|null Backend or null on failure
         */
        public function backendFromPath( $storagePath ) {
index 60c813b..7d35487 100644 (file)
@@ -81,7 +81,7 @@ class FileBackendMultiWrite extends FileBackend {
         *   - noPushQuickOps : (hack) Only apply doQuickOperations() to the master backend.
         *   - noPushDirConts : (hack) Only apply directory functions to the master backend.
         *
-        * @param $config Array
+        * @param Array $config
         * @throws MWException
         */
        public function __construct( array $config ) {
@@ -136,10 +136,6 @@ class FileBackendMultiWrite extends FileBackend {
                }
        }
 
-       /**
-        * @see FileBackend::doOperationsInternal()
-        * @return Status
-        */
        final protected function doOperationsInternal( array $ops, array $opts ) {
                $status = Status::newGood();
 
@@ -387,7 +383,7 @@ class FileBackendMultiWrite extends FileBackend {
         * for a set of operations with that of a given internal backend.
         *
         * @param array $ops List of file operation arrays
-        * @param $backend FileBackendStore
+        * @param FileBackendStore $backend
         * @return Array
         */
        protected function substOpBatchPaths( array $ops, FileBackendStore $backend ) {
@@ -408,7 +404,7 @@ class FileBackendMultiWrite extends FileBackend {
         * Same as substOpBatchPaths() but for a single operation
         *
         * @param array $ops File operation array
-        * @param $backend FileBackendStore
+        * @param FileBackendStore $backend
         * @return Array
         */
        protected function substOpPaths( array $ops, FileBackendStore $backend ) {
@@ -420,7 +416,7 @@ class FileBackendMultiWrite extends FileBackend {
         * Substitute the backend of storage paths with an internal backend's name
         *
         * @param array|string $paths List of paths or single string path
-        * @param $backend FileBackendStore
+        * @param FileBackendStore $backend
         * @return Array|string
         */
        protected function substPaths( $paths, FileBackendStore $backend ) {
@@ -445,10 +441,6 @@ class FileBackendMultiWrite extends FileBackend {
                );
        }
 
-       /**
-        * @see FileBackend::doQuickOperationsInternal()
-        * @return Status
-        */
        protected function doQuickOperationsInternal( array $ops ) {
                $status = Status::newGood();
                // Do the operations on the master backend; setting Status fields...
@@ -482,10 +474,6 @@ class FileBackendMultiWrite extends FileBackend {
                return !in_array( $shortCont, $this->noPushDirConts );
        }
 
-       /**
-        * @see FileBackend::doPrepare()
-        * @return Status
-        */
        protected function doPrepare( array $params ) {
                $status = Status::newGood();
                $replicate = $this->replicateContainerDirChanges( $params['dir'] );
@@ -498,11 +486,6 @@ class FileBackendMultiWrite extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::doSecure()
-        * @param $params array
-        * @return Status
-        */
        protected function doSecure( array $params ) {
                $status = Status::newGood();
                $replicate = $this->replicateContainerDirChanges( $params['dir'] );
@@ -515,11 +498,6 @@ class FileBackendMultiWrite extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::doPublish()
-        * @param $params array
-        * @return Status
-        */
        protected function doPublish( array $params ) {
                $status = Status::newGood();
                $replicate = $this->replicateContainerDirChanges( $params['dir'] );
@@ -532,11 +510,6 @@ class FileBackendMultiWrite extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::doClean()
-        * @param $params array
-        * @return Status
-        */
        protected function doClean( array $params ) {
                $status = Status::newGood();
                $replicate = $this->replicateContainerDirChanges( $params['dir'] );
@@ -549,62 +522,32 @@ class FileBackendMultiWrite extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::concatenate()
-        * @param $params array
-        * @return Status
-        */
        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] );
                return $this->backends[$this->masterIndex]->concatenate( $realParams );
        }
 
-       /**
-        * @see FileBackend::fileExists()
-        * @param $params array
-        * @return bool|null
-        */
        public function fileExists( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->fileExists( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileTimestamp()
-        * @param $params array
-        * @return bool|string
-        */
        public function getFileTimestamp( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileTimestamp( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileSize()
-        * @param $params array
-        * @return bool|int
-        */
        public function getFileSize( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileSize( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileStat()
-        * @param $params array
-        * @return Array|bool|null
-        */
        public function getFileStat( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileStat( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileContentsMulti()
-        * @param $params array
-        * @return bool|string
-        */
        public function getFileContentsMulti( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                $contentsM = $this->backends[$this->masterIndex]->getFileContentsMulti( $realParams );
@@ -616,41 +559,21 @@ class FileBackendMultiWrite extends FileBackend {
                return $contents;
        }
 
-       /**
-        * @see FileBackend::getFileSha1Base36()
-        * @param $params array
-        * @return bool|string
-        */
        public function getFileSha1Base36( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileSha1Base36( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileProps()
-        * @param $params array
-        * @return Array
-        */
        public function getFileProps( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileProps( $realParams );
        }
 
-       /**
-        * @see FileBackend::streamFile()
-        * @param $params array
-        * @return \Status
-        */
        public function streamFile( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->streamFile( $realParams );
        }
 
-       /**
-        * @see FileBackend::getLocalReferenceMulti()
-        * @param $params array
-        * @return FSFile|null
-        */
        public function getLocalReferenceMulti( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                $fsFilesM = $this->backends[$this->masterIndex]->getLocalReferenceMulti( $realParams );
@@ -662,11 +585,6 @@ class FileBackendMultiWrite extends FileBackend {
                return $fsFiles;
        }
 
-       /**
-        * @see FileBackend::getLocalCopyMulti()
-        * @param $params array
-        * @return null|TempFSFile
-        */
        public function getLocalCopyMulti( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                $tempFilesM = $this->backends[$this->masterIndex]->getLocalCopyMulti( $realParams );
@@ -678,48 +596,26 @@ class FileBackendMultiWrite extends FileBackend {
                return $tempFiles;
        }
 
-       /**
-        * @see FileBackend::getFileHttpUrl()
-        * @return string|null
-        */
        public function getFileHttpUrl( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileHttpUrl( $realParams );
        }
 
-       /**
-        * @see FileBackend::directoryExists()
-        * @param $params array
-        * @return bool|null
-        */
        public function directoryExists( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->directoryExists( $realParams );
        }
 
-       /**
-        * @see FileBackend::getSubdirectoryList()
-        * @param $params array
-        * @return Array|null|Traversable
-        */
        public function getDirectoryList( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getDirectoryList( $realParams );
        }
 
-       /**
-        * @see FileBackend::getFileList()
-        * @param $params array
-        * @return Array|null|\Traversable
-        */
        public function getFileList( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                return $this->backends[$this->masterIndex]->getFileList( $realParams );
        }
 
-       /**
-        * @see FileBackend::clearCache()
-        */
        public function clearCache( array $paths = null ) {
                foreach ( $this->backends as $backend ) {
                        $realPaths = is_array( $paths ) ? $this->substPaths( $paths, $backend ) : null;
@@ -727,9 +623,6 @@ class FileBackendMultiWrite extends FileBackend {
                }
        }
 
-       /**
-        * @see FileBackend::getScopedLocksForOps()
-        */
        public function getScopedLocksForOps( array $ops, Status $status ) {
                $fileOps = $this->backends[$this->masterIndex]->getOperationsInternal( $ops );
                // Get the paths to lock from the master backend
index 8b365b5..e976a7a 100644 (file)
@@ -55,7 +55,7 @@ abstract class FileBackendStore extends FileBackend {
        /**
         * @see FileBackend::__construct()
         *
-        * @param $config Array
+        * @param array $config
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -81,7 +81,7 @@ abstract class FileBackendStore extends FileBackend {
         * written under it, and that any file already there is writable.
         * Backends using key/value stores should check if the container exists.
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return bool
         */
        abstract public function isPathUsableInternal( $storagePath );
@@ -105,8 +105,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function createInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                if ( strlen( $params['content'] ) > $this->maxFileSizeInternal() ) {
                        $status = Status::newFatal( 'backend-fail-maxsize',
                                $params['dst'], $this->maxFileSizeInternal() );
@@ -117,8 +116,6 @@ abstract class FileBackendStore extends FileBackend {
                                $this->deleteFileCache( $params['dst'] ); // persistent cache
                        }
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -147,8 +144,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function storeInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                if ( filesize( $params['src'] ) > $this->maxFileSizeInternal() ) {
                        $status = Status::newFatal( 'backend-fail-maxsize',
                                $params['dst'], $this->maxFileSizeInternal() );
@@ -159,8 +155,6 @@ abstract class FileBackendStore extends FileBackend {
                                $this->deleteFileCache( $params['dst'] ); // persistent cache
                        }
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -190,15 +184,12 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function copyInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = $this->doCopyInternal( $params );
                $this->clearCache( array( $params['dst'] ) );
                if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
                        $this->deleteFileCache( $params['dst'] ); // persistent cache
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -223,13 +214,10 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function deleteInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = $this->doDeleteInternal( $params );
                $this->clearCache( array( $params['src'] ) );
                $this->deleteFileCache( $params['src'] ); // persistent cache
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -259,16 +247,13 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function moveInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = $this->doMoveInternal( $params );
                $this->clearCache( array( $params['src'], $params['dst'] ) );
                $this->deleteFileCache( $params['src'] ); // persistent cache
                if ( !isset( $params['dstExists'] ) || $params['dstExists'] ) {
                        $this->deleteFileCache( $params['dst'] ); // persistent cache
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -305,8 +290,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return Status
         */
        final public function describeInternal( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                if ( count( $params['headers'] ) ) {
                        $status = $this->doDescribeInternal( $params );
                        $this->clearCache( array( $params['src'] ) );
@@ -314,8 +298,6 @@ abstract class FileBackendStore extends FileBackend {
                } else {
                        $status = Status::newGood(); // nothing to do
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -338,13 +320,8 @@ abstract class FileBackendStore extends FileBackend {
                return Status::newGood();
        }
 
-       /**
-        * @see FileBackend::concatenate()
-        * @return Status
-        */
        final public function concatenate( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                // Try to lock the source files for the scope of this function
@@ -360,8 +337,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -431,20 +406,13 @@ abstract class FileBackendStore extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::doPrepare()
-        * @return Status
-        */
        final protected function doPrepare( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
-
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
+
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return $status; // invalid storage path
                }
 
@@ -458,8 +426,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -471,20 +437,13 @@ abstract class FileBackendStore extends FileBackend {
                return Status::newGood();
        }
 
-       /**
-        * @see FileBackend::doSecure()
-        * @return Status
-        */
        final protected function doSecure( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return $status; // invalid storage path
                }
 
@@ -498,8 +457,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -511,20 +468,13 @@ abstract class FileBackendStore extends FileBackend {
                return Status::newGood();
        }
 
-       /**
-        * @see FileBackend::doPublish()
-        * @return Status
-        */
        final protected function doPublish( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return $status; // invalid storage path
                }
 
@@ -538,8 +488,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -551,13 +499,8 @@ abstract class FileBackendStore extends FileBackend {
                return Status::newGood();
        }
 
-       /**
-        * @see FileBackend::doClean()
-        * @return Status
-        */
        final protected function doClean( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                // Recursive: first delete all empty subdirs recursively
@@ -575,8 +518,6 @@ abstract class FileBackendStore extends FileBackend {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
                        $status->fatal( 'backend-fail-invalidpath', $params['dir'] );
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return $status; // invalid storage path
                }
 
@@ -584,8 +525,6 @@ abstract class FileBackendStore extends FileBackend {
                $filesLockEx = array( $params['dir'] );
                $scopedLockE = $this->getScopedFileLocks( $filesLockEx, LockManager::LOCK_EX, $status );
                if ( !$status->isOK() ) {
-                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                       wfProfileOut( __METHOD__ );
                        return $status; // abort
                }
 
@@ -601,8 +540,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -614,56 +551,30 @@ abstract class FileBackendStore extends FileBackend {
                return Status::newGood();
        }
 
-       /**
-        * @see FileBackend::fileExists()
-        * @return bool|null
-        */
        final public function fileExists( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return ( $stat === null ) ? null : (bool)$stat; // null => failure
        }
 
-       /**
-        * @see FileBackend::getFileTimestamp()
-        * @return bool
-        */
        final public function getFileTimestamp( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $stat ? $stat['mtime'] : false;
        }
 
-       /**
-        * @see FileBackend::getFileSize()
-        * @return bool
-        */
        final public function getFileSize( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $stat = $this->getFileStat( $params );
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $stat ? $stat['size'] : false;
        }
 
-       /**
-        * @see FileBackend::getFileStat()
-        * @return bool
-        */
        final public function getFileStat( array $params ) {
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
                        return false; // invalid storage path
                }
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $latest = !empty( $params['latest'] ); // use latest data?
                if ( !$this->cheapCache->has( $path, 'stat', self::CACHE_TTL ) ) {
                        $this->primeFileCache( array( $path ) ); // check persistent cache
@@ -674,14 +585,10 @@ abstract class FileBackendStore extends FileBackend {
                        // value was in fact fetched with the latest available data.
                        if ( is_array( $stat ) ) {
                                if ( !$latest || $stat['latest'] ) {
-                                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                                       wfProfileOut( __METHOD__ );
                                        return $stat;
                                }
                        } elseif ( in_array( $stat, array( 'NOT_EXIST', 'NOT_EXIST_LATEST' ) ) ) {
                                if ( !$latest || $stat === 'NOT_EXIST_LATEST' ) {
-                                       wfProfileOut( __METHOD__ . '-' . $this->name );
-                                       wfProfileOut( __METHOD__ );
                                        return false;
                                }
                        }
@@ -707,8 +614,6 @@ abstract class FileBackendStore extends FileBackend {
                } else { // an error occurred
                        wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $stat;
        }
 
@@ -717,19 +622,12 @@ abstract class FileBackendStore extends FileBackend {
         */
        abstract protected function doGetFileStat( array $params );
 
-       /**
-        * @see FileBackend::getFileContentsMulti()
-        * @return Array
-        */
        public function getFileContentsMulti( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
 
                $params = $this->setConcurrencyFlags( $params );
                $contents = $this->doGetFileContentsMulti( $params );
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $contents;
        }
 
@@ -747,25 +645,18 @@ abstract class FileBackendStore extends FileBackend {
                return $contents;
        }
 
-       /**
-        * @see FileBackend::getFileSha1Base36()
-        * @return bool|string
-        */
        final public function getFileSha1Base36( array $params ) {
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
                        return false; // invalid storage path
                }
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $latest = !empty( $params['latest'] ); // use latest data?
                if ( $this->cheapCache->has( $path, 'sha1', self::CACHE_TTL ) ) {
                        $stat = $this->cheapCache->get( $path, 'sha1' );
                        // If we want the latest data, check that this cached
                        // value was in fact fetched with the latest available data.
                        if ( !$latest || $stat['latest'] ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
                                return $stat['hash'];
                        }
                }
@@ -775,8 +666,6 @@ abstract class FileBackendStore extends FileBackend {
                wfProfileOut( __METHOD__ . '-miss-' . $this->name );
                wfProfileOut( __METHOD__ . '-miss' );
                $this->cheapCache->set( $path, 'sha1', array( 'hash' => $hash, 'latest' => $latest ) );
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $hash;
        }
 
@@ -793,27 +682,15 @@ abstract class FileBackendStore extends FileBackend {
                }
        }
 
-       /**
-        * @see FileBackend::getFileProps()
-        * @return Array
-        */
        final public function getFileProps( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $fsFile = $this->getLocalReference( $params );
                $props = $fsFile ? $fsFile->getProps() : FSFile::placeholderProps();
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $props;
        }
 
-       /**
-        * @see FileBackend::getLocalReferenceMulti()
-        * @return Array
-        */
        final public function getLocalReferenceMulti( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
 
                $params = $this->setConcurrencyFlags( $params );
 
@@ -843,8 +720,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $fsFiles;
        }
 
@@ -856,19 +731,12 @@ abstract class FileBackendStore extends FileBackend {
                return $this->doGetLocalCopyMulti( $params );
        }
 
-       /**
-        * @see FileBackend::getLocalCopyMulti()
-        * @return Array
-        */
        final public function getLocalCopyMulti( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
 
                $params = $this->setConcurrencyFlags( $params );
                $tmpFiles = $this->doGetLocalCopyMulti( $params );
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $tmpFiles;
        }
 
@@ -886,13 +754,8 @@ abstract class FileBackendStore extends FileBackend {
                return null; // not supported
        }
 
-       /**
-        * @see FileBackend::streamFile()
-        * @return Status
-        */
        final public function streamFile( array $params ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                $info = $this->getFileStat( $params );
@@ -923,8 +786,6 @@ abstract class FileBackendStore extends FileBackend {
                        $status->fatal( 'backend-fail-stream', $params['src'] );
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -945,10 +806,6 @@ abstract class FileBackendStore extends FileBackend {
                return $status;
        }
 
-       /**
-        * @see FileBackend::directoryExists()
-        * @return bool|null
-        */
        final public function directoryExists( array $params ) {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) {
@@ -983,10 +840,6 @@ abstract class FileBackendStore extends FileBackend {
         */
        abstract protected function doDirectoryExists( $container, $dir, array $params );
 
-       /**
-        * @see FileBackend::getDirectoryList()
-        * @return Traversable|Array|null Returns null on failure
-        */
        final public function getDirectoryList( array $params ) {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) { // invalid storage path
@@ -1016,10 +869,6 @@ abstract class FileBackendStore extends FileBackend {
         */
        abstract public function getDirectoryListInternal( $container, $dir, array $params );
 
-       /**
-        * @see FileBackend::getFileList()
-        * @return Traversable|Array|null Returns null on failure
-        */
        final public function getFileList( array $params ) {
                list( $fullCont, $dir, $shard ) = $this->resolveStoragePath( $params['dir'] );
                if ( $dir === null ) { // invalid storage path
@@ -1113,10 +962,6 @@ abstract class FileBackendStore extends FileBackend {
                return $paths;
        }
 
-       /**
-        * @see FileBackend::getScopedLocksForOps()
-        * @return Array
-        */
        public function getScopedLocksForOps( array $ops, Status $status ) {
                $paths = $this->getPathsToLockForOpsInternal( $this->getOperationsInternal( $ops ) );
                return array(
@@ -1125,13 +970,8 @@ abstract class FileBackendStore extends FileBackend {
                );
        }
 
-       /**
-        * @see FileBackend::doOperationsInternal()
-        * @return Status
-        */
        final protected function doOperationsInternal( array $ops, array $opts ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                // Fix up custom header name/value pairs...
@@ -1148,8 +988,6 @@ abstract class FileBackendStore extends FileBackend {
                        $scopeLockS = $this->getScopedFileLocks( $paths['sh'], LockManager::LOCK_UW, $status );
                        $scopeLockE = $this->getScopedFileLocks( $paths['ex'], LockManager::LOCK_EX, $status );
                        if ( !$status->isOK() ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
                                return $status; // abort
                        }
                }
@@ -1171,19 +1009,11 @@ abstract class FileBackendStore extends FileBackend {
                $status->merge( $subStatus );
                $status->success = $subStatus->success; // not done in merge()
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
-       /**
-        * @see FileBackend::doQuickOperationsInternal()
-        * @return Status
-        * @throws MWException
-        */
        final protected function doQuickOperationsInternal( array $ops ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                $status = Status::newGood();
 
                // Fix up custom header name/value pairs...
@@ -1202,8 +1032,6 @@ abstract class FileBackendStore extends FileBackend {
                // Perform the sync-only ops and build up op handles for the async ops...
                foreach ( $ops as $index => $params ) {
                        if ( !in_array( $params['op'], $supportedOps ) ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Operation '{$params['op']}' is not supported." );
                        }
                        $method = $params['op'] . 'Internal'; // e.g. "storeInternal"
@@ -1237,8 +1065,6 @@ abstract class FileBackendStore extends FileBackend {
                        }
                }
 
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $status;
        }
 
@@ -1252,16 +1078,11 @@ abstract class FileBackendStore extends FileBackend {
         * @throws MWException
         */
        final public function executeOpHandlesInternal( array $fileOpHandles ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
                foreach ( $fileOpHandles as $fileOpHandle ) {
                        if ( !( $fileOpHandle instanceof FileBackendStoreOpHandle ) ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Given a non-FileBackendStoreOpHandle object." );
                        } elseif ( $fileOpHandle->backend->getName() !== $this->getName() ) {
-                               wfProfileOut( __METHOD__ . '-' . $this->name );
-                               wfProfileOut( __METHOD__ );
                                throw new MWException( "Given a FileBackendStoreOpHandle for the wrong backend." );
                        }
                }
@@ -1269,8 +1090,6 @@ abstract class FileBackendStore extends FileBackend {
                foreach ( $fileOpHandles as $fileOpHandle ) {
                        $fileOpHandle->closeResources();
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
                return $res;
        }
 
@@ -1312,9 +1131,6 @@ abstract class FileBackendStore extends FileBackend {
                return $op;
        }
 
-       /**
-        * @see FileBackend::preloadCache()
-        */
        final public function preloadCache( array $paths ) {
                $fullConts = array(); // full container names
                foreach ( $paths as $path ) {
@@ -1326,9 +1142,6 @@ abstract class FileBackendStore extends FileBackend {
                $this->primeFileCache( $paths );
        }
 
-       /**
-        * @see FileBackend::clearCache()
-        */
        final public function clearCache( array $paths = null ) {
                if ( is_array( $paths ) ) {
                        $paths = array_map( 'FileBackend::normalizeStoragePath', $paths );
@@ -1369,7 +1182,7 @@ abstract class FileBackendStore extends FileBackend {
         * Check if a container name is valid.
         * This checks for for length and illegal characters.
         *
-        * @param $container string
+        * @param string $container
         * @return bool
         */
        final protected static function isValidContainerName( $container ) {
@@ -1391,7 +1204,7 @@ abstract class FileBackendStore extends FileBackend {
         * this means that the path can only refer to a directory and can only
         * be scanned by looking in all the container shards.
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return Array (container, path, container suffix) or (null, null, null) if invalid
         */
        final protected function resolveStoragePath( $storagePath ) {
@@ -1431,7 +1244,7 @@ abstract class FileBackendStore extends FileBackend {
         *
         * @see FileBackendStore::resolveStoragePath()
         *
-        * @param $storagePath string
+        * @param string $storagePath
         * @return Array (container, path) or (null, null) if invalid
         */
        final protected function resolveStoragePathReal( $storagePath ) {
@@ -1496,7 +1309,7 @@ abstract class FileBackendStore extends FileBackend {
         * If greater than 0, then all file storage paths within
         * the container are required to be hashed accordingly.
         *
-        * @param $container string
+        * @param string $container
         * @return Array (integer levels, integer base, repeat flag) or (0, 0, false)
         */
        final protected function getContainerHashLevels( $container ) {
@@ -1516,7 +1329,7 @@ abstract class FileBackendStore extends FileBackend {
        /**
         * Get a list of full container shard suffixes for a container
         *
-        * @param $container string
+        * @param string $container
         * @return Array
         */
        final protected function getContainerSuffixes( $container ) {
@@ -1534,7 +1347,7 @@ abstract class FileBackendStore extends FileBackend {
        /**
         * Get the full container name, including the wiki ID prefix
         *
-        * @param $container string
+        * @param string $container
         * @return string
         */
        final protected function fullContainerName( $container ) {
@@ -1550,7 +1363,7 @@ abstract class FileBackendStore extends FileBackend {
         * This is intended for internal use, such as encoding illegal chars.
         * Subclasses can override this to be more restrictive.
         *
-        * @param $container string
+        * @param string $container
         * @return string|null
         */
        protected function resolveContainerName( $container ) {
@@ -1610,12 +1423,11 @@ abstract class FileBackendStore extends FileBackend {
         * used in a list of container names, storage paths, or FileOp objects.
         * This loads the persistent cache values into the process cache.
         *
-        * @param $items Array
+        * @param Array $items
         * @return void
         */
        final protected function primeContainerCache( array $items ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
 
                $paths = array(); // list of storage paths
                $contNames = array(); // (cache key => resolved container name)
@@ -1647,9 +1459,6 @@ abstract class FileBackendStore extends FileBackend {
 
                // Populate the container process cache for the backend...
                $this->doPrimeContainerCache( array_filter( $contInfo, 'is_array' ) );
-
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
        }
 
        /**
@@ -1719,8 +1528,7 @@ abstract class FileBackendStore extends FileBackend {
         * @return void
         */
        final protected function primeFileCache( array $items ) {
-               wfProfileIn( __METHOD__ );
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
 
                $paths = array(); // list of storage paths
                $pathNames = array(); // (cache key => storage path)
@@ -1754,9 +1562,6 @@ abstract class FileBackendStore extends FileBackend {
                                }
                        }
                }
-
-               wfProfileOut( __METHOD__ . '-' . $this->name );
-               wfProfileOut( __METHOD__ );
        }
 
        /**
@@ -1827,7 +1632,7 @@ abstract class FileBackendStoreShardListIterator extends FilterIterator {
        protected $multiShardPaths = array(); // (rel path => 1)
 
        /**
-        * @param $backend FileBackendStore
+        * @param FileBackendStore $backend
         * @param string $container Full storage container name
         * @param string $dir Storage directory relative to container
         * @param array $suffixes List of container shard suffixes
index e4059d7..33a5c9e 100644 (file)
@@ -57,8 +57,8 @@ abstract class FileOp {
        /**
         * Build a new batch file operation transaction
         *
-        * @param $backend FileBackendStore
-        * @param $params Array
+        * @param FileBackendStore $backend
+        * @param Array $params
         * @throws MWException
         */
        final public function __construct( FileBackendStore $backend, array $params ) {
@@ -85,7 +85,7 @@ abstract class FileOp {
        /**
         * Normalize $item or anything in $item that is a valid storage path
         *
-        * @param $item string|array
+        * @param string $item|array
         * @return string|Array
         */
        protected function normalizeAnyStoragePaths( $item ) {
@@ -105,7 +105,7 @@ abstract class FileOp {
        /**
         * Normalize a string if it is a valid storage path
         *
-        * @param $path string
+        * @param string $path
         * @return string
         */
        protected static function normalizeIfValidStoragePath( $path ) {
@@ -119,7 +119,7 @@ abstract class FileOp {
        /**
         * Set the batch UUID this operation belongs to
         *
-        * @param $batchId string
+        * @param string $batchId
         * @return void
         */
        final public function setBatchId( $batchId ) {
@@ -129,7 +129,7 @@ abstract class FileOp {
        /**
         * Get the value of the parameter with the given name
         *
-        * @param $name string
+        * @param string $name
         * @return mixed Returns null if the parameter is not set
         */
        final public function getParam( $name ) {
@@ -240,7 +240,7 @@ abstract class FileOp {
         * This must update $predicates for each path that the op can change
         * except when a failing status object is returned.
         *
-        * @param $predicates Array
+        * @param Array $predicates
         * @return Status
         */
        final public function precheck( array &$predicates ) {
@@ -317,7 +317,7 @@ abstract class FileOp {
        /**
         * Adjust params to FileBackendStore internal file calls
         *
-        * @param $params Array
+        * @param Array $params
         * @return Array (required params list, optional params list)
         */
        protected function setFlags( array $params ) {
@@ -347,7 +347,7 @@ abstract class FileOp {
         * Also set the destExists, overwriteSameCase and sourceSha1 member variables.
         * A bad status will be returned if there is no chance it can be overwritten.
         *
-        * @param $predicates Array
+        * @param Array $predicates
         * @return Status
         */
        protected function precheckDestExistence( array $predicates ) {
@@ -396,7 +396,7 @@ abstract class FileOp {
         * Check if a file will exist in storage when this operation is attempted
         *
         * @param string $source Storage path
-        * @param $predicates Array
+        * @param Array $predicates
         * @return bool
         */
        final protected function fileExists( $source, array $predicates ) {
@@ -412,7 +412,7 @@ abstract class FileOp {
         * Get the SHA-1 of a file in storage when this operation is attempted
         *
         * @param string $source Storage path
-        * @param $predicates Array
+        * @param Array $predicates
         * @return string|bool False on failure
         */
        final protected function fileSha1( $source, array $predicates ) {
@@ -438,7 +438,7 @@ abstract class FileOp {
        /**
         * Log a file operation failure and preserve any temp files
         *
-        * @param $action string
+        * @param string $action
         * @return void
         */
        final public function logFailure( $action ) {
@@ -488,9 +488,6 @@ class CreateFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                if ( !$this->overwriteSameCase ) {
                        // Create the file at the destination
@@ -499,16 +496,10 @@ class CreateFileOp extends FileOp {
                return Status::newGood();
        }
 
-       /**
-        * @return bool|String
-        */
        protected function getSourceSha1Base36() {
                return wfBaseConvert( sha1( $this->params['content'] ), 16, 36, 31 );
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['dst'] );
        }
@@ -519,18 +510,11 @@ class CreateFileOp extends FileOp {
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
 class StoreFileOp extends FileOp {
-       /**
-        * @return array
-        */
        protected function allowedParams() {
                return array( array( 'src', 'dst' ),
                        array( 'overwrite', 'overwriteSame', 'headers' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
                // Check if the source file exists on the file system
@@ -560,9 +544,6 @@ class StoreFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                if ( !$this->overwriteSameCase ) {
                        // Store the file at the destination
@@ -571,9 +552,6 @@ class StoreFileOp extends FileOp {
                return Status::newGood();
        }
 
-       /**
-        * @return bool|string
-        */
        protected function getSourceSha1Base36() {
                wfSuppressWarnings();
                $hash = sha1_file( $this->params['src'] );
@@ -594,18 +572,11 @@ class StoreFileOp extends FileOp {
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
 class CopyFileOp extends FileOp {
-       /**
-        * @return array
-        */
        protected function allowedParams() {
                return array( array( 'src', 'dst' ),
                        array( 'overwrite', 'overwriteSame', 'ignoreMissingSource', 'headers' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
                // Check if the source file exists
@@ -637,9 +608,6 @@ class CopyFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                if ( $this->overwriteSameCase ) {
                        $status = Status::newGood(); // nothing to do
@@ -656,16 +624,10 @@ class CopyFileOp extends FileOp {
                return $status;
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsRead() {
                return array( $this->params['src'] );
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['dst'] );
        }
@@ -676,18 +638,11 @@ class CopyFileOp extends FileOp {
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
 class MoveFileOp extends FileOp {
-       /**
-        * @return array
-        */
        protected function allowedParams() {
                return array( array( 'src', 'dst' ),
                        array( 'overwrite', 'overwriteSame', 'ignoreMissingSource', 'headers' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
                // Check if the source file exists
@@ -721,9 +676,6 @@ class MoveFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                if ( $this->overwriteSameCase ) {
                        if ( $this->params['src'] === $this->params['dst'] ) {
@@ -748,16 +700,10 @@ class MoveFileOp extends FileOp {
                return $status;
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsRead() {
                return array( $this->params['src'] );
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['src'], $this->params['dst'] );
        }
@@ -768,17 +714,10 @@ class MoveFileOp extends FileOp {
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
 class DeleteFileOp extends FileOp {
-       /**
-        * @return array
-        */
        protected function allowedParams() {
                return array( array( 'src' ), array( 'ignoreMissingSource' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
                // Check if the source file exists
@@ -805,17 +744,11 @@ class DeleteFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                // Delete the source file
                return $this->backend->deleteInternal( $this->setFlags( $this->params ) );
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['src'] );
        }
@@ -826,17 +759,10 @@ class DeleteFileOp extends FileOp {
  * Parameters for this operation are outlined in FileBackend::doOperations().
  */
 class DescribeFileOp extends FileOp {
-       /**
-        * @return array
-        */
        protected function allowedParams() {
                return array( array( 'src' ), array( 'headers' ) );
        }
 
-       /**
-        * @param $predicates array
-        * @return Status
-        */
        protected function doPrecheck( array &$predicates ) {
                $status = Status::newGood();
                // Check if the source file exists
@@ -857,17 +783,11 @@ class DescribeFileOp extends FileOp {
                return $status; // safe to call attempt()
        }
 
-       /**
-        * @return Status
-        */
        protected function doAttempt() {
                // Update the source file's metadata
                return $this->backend->describeInternal( $this->setFlags( $this->params ) );
        }
 
-       /**
-        * @return array
-        */
        public function storagePathsChanged() {
                return array( $this->params['src'] );
        }
index fc51d78..785c0bc 100644 (file)
@@ -51,7 +51,7 @@ class FileOpBatch {
         *
         * @param array $performOps List of FileOp operations
         * @param array $opts Batch operation options
-        * @param $journal FileJournal Journal to log operations to
+        * @param FileJournal $journal Journal to log operations to
         * @return Status
         */
        public static function attempt( array $performOps, array $opts, FileJournal $journal ) {
@@ -145,8 +145,8 @@ class FileOpBatch {
         * within any given sub-batch do not depend on each other.
         * This will abort remaining ops on failure.
         *
-        * @param $pPerformOps Array
-        * @param $status Status
+        * @param Array $pPerformOps
+        * @param Status $status
         * @return bool Success
         */
        protected static function runParallelBatches( array $pPerformOps, Status $status ) {
index 6ab5481..569f337 100644 (file)
@@ -47,7 +47,7 @@ directories. See FileBackend.php for full documentation for each function.
 The following basic operations are supported for reading from a backend:
 
 On files:
-* state a file for basic information (timestamp, size)
+* stat a file for basic information (timestamp, size)
 * read a file into a string or  several files into a map of path names to strings
 * download a file or set of files to a temporary file (on a mounted file system)
 * get the SHA1 hash of a file
index f9e2ce4..f3aa145 100644 (file)
@@ -172,10 +172,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $relStoragePath;
        }
 
-       /**
-        * @see FileBackendStore::isPathUsableInternal()
-        * @return bool
-        */
        public function isPathUsableInternal( $storagePath ) {
                list( $container, $rel ) = $this->resolveStoragePathReal( $storagePath );
                if ( $rel === null ) {
@@ -194,7 +190,7 @@ class SwiftFileBackend extends FileBackendStore {
        }
 
        /**
-        * @param $headers array
+        * @param array $headers
         * @return array
         */
        protected function sanitizeHdrs( array $headers ) {
@@ -206,7 +202,7 @@ class SwiftFileBackend extends FileBackendStore {
        }
 
        /**
-        * @param $disposition string Content-Disposition header value
+        * @param string $disposition Content-Disposition header value
         * @return string Truncated Content-Disposition header value to meet Swift limits
         */
        protected function truncDisp( $disposition ) {
@@ -223,10 +219,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $res;
        }
 
-       /**
-        * @see FileBackendStore::doCreateInternal()
-        * @return Status
-        */
        protected function doCreateInternal( array $params ) {
                $status = Status::newGood();
 
@@ -298,10 +290,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doStoreInternal()
-        * @return Status
-        */
        protected function doStoreInternal( array $params ) {
                $status = Status::newGood();
 
@@ -391,10 +379,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doCopyInternal()
-        * @return Status
-        */
        protected function doCopyInternal( array $params ) {
                $status = Status::newGood();
 
@@ -464,10 +448,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doMoveInternal()
-        * @return Status
-        */
        protected function doMoveInternal( array $params ) {
                $status = Status::newGood();
 
@@ -540,10 +520,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doDeleteInternal()
-        * @return Status
-        */
        protected function doDeleteInternal( array $params ) {
                $status = Status::newGood();
 
@@ -596,10 +572,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doDescribeInternal()
-        * @return Status
-        */
        protected function doDescribeInternal( array $params ) {
                $status = Status::newGood();
 
@@ -633,10 +605,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doPrepareInternal()
-        * @return Status
-        */
        protected function doPrepareInternal( $fullCont, $dir, array $params ) {
                $status = Status::newGood();
 
@@ -750,10 +718,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doCleanInternal()
-        * @return Status
-        */
        protected function doCleanInternal( $fullCont, $dir, array $params ) {
                $status = Status::newGood();
 
@@ -789,10 +753,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doFileExists()
-        * @return array|bool|null
-        */
        protected function doGetFileStat( array $params ) {
                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $params['src'] );
                if ( $srcRel === null ) {
@@ -823,7 +783,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * Fill in any missing object metadata and save it to Swift
         *
-        * @param $obj CF_Object
+        * @param CF_Object $obj
         * @param string $path Storage path to object
         * @return bool Success
         * @throws Exception cloudfiles exceptions
@@ -854,10 +814,6 @@ class SwiftFileBackend extends FileBackendStore {
                return false; // failed
        }
 
-       /**
-        * @see FileBackendStore::doGetFileContentsMulti()
-        * @return Array
-        */
        protected function doGetFileContentsMulti( array $params ) {
                $contents = array();
 
@@ -967,9 +923,10 @@ class SwiftFileBackend extends FileBackendStore {
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
         * @param string|null $after Storage path of file to list items after
-        * @param $limit integer Max number of items to list
+        * @param integer $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
         * @return Array List of resolved paths of directories directly under $dir
+        * @throws FileBackendError
         */
        public function getDirListPageInternal( $fullCont, $dir, &$after, $limit, array $params ) {
                $dirs = array();
@@ -977,7 +934,7 @@ class SwiftFileBackend extends FileBackendStore {
                        return $dirs; // nothing more
                }
 
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . '-' . $this->name );
                try {
                        $container = $this->getContainer( $fullCont );
                        $prefix = ( $dir == '' ) ? null : "{$dir}/";
@@ -1025,8 +982,8 @@ class SwiftFileBackend extends FileBackendStore {
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, null, __METHOD__,
                                array( 'cont' => $fullCont, 'dir' => $dir ) );
+                       throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
 
                return $dirs;
        }
@@ -1041,9 +998,10 @@ class SwiftFileBackend extends FileBackendStore {
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved storage directory with no trailing slash
         * @param string|null $after Storage path of file to list items after
-        * @param $limit integer Max number of items to list
+        * @param integer $limit Max number of items to list
         * @param array $params Parameters for getDirectoryList()
         * @return Array List of resolved paths of files under $dir
+        * @throws FileBackendError
         */
        public function getFileListPageInternal( $fullCont, $dir, &$after, $limit, array $params ) {
                $files = array();
@@ -1051,7 +1009,7 @@ class SwiftFileBackend extends FileBackendStore {
                        return $files; // nothing more
                }
 
-               wfProfileIn( __METHOD__ . '-' . $this->name );
+               $section = new ProfileSection( __METHOD__ . '-' . $this->name );
                try {
                        $container = $this->getContainer( $fullCont );
                        $prefix = ( $dir == '' ) ? null : "{$dir}/";
@@ -1092,8 +1050,8 @@ class SwiftFileBackend extends FileBackendStore {
                } catch ( CloudFilesException $e ) { // some other exception?
                        $this->handleException( $e, null, __METHOD__,
                                array( 'cont' => $fullCont, 'dir' => $dir ) );
+                       throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
                }
-               wfProfileOut( __METHOD__ . '-' . $this->name );
 
                return $files;
        }
@@ -1111,7 +1069,11 @@ class SwiftFileBackend extends FileBackendStore {
                $names = array();
                $storageDir = rtrim( $params['dir'], '/' );
                $suffixStart = ( $dir === '' ) ? 0 : strlen( $dir ) + 1; // size of "path/to/dir/"
-               foreach ( $cfObjects as $object ) {
+               // Iterate over the list *backwards* as this primes the stat cache, which is LRU.
+               // If this fills the cache and the caller stats an uncached file before stating
+               // the ones on the listing, there would be zero cache hits if this went forwards.
+               for ( end( $cfObjects ); key( $cfObjects ) !== null; prev( $cfObjects ) ) {
+                       $object = current( $cfObjects );
                        $path = "{$storageDir}/" . substr( $object->name, $suffixStart );
                        $val = array(
                                // Convert dates like "Tue, 03 Jan 2012 22:01:04 GMT" to TS_MW
@@ -1122,13 +1084,9 @@ class SwiftFileBackend extends FileBackendStore {
                        $this->cheapCache->set( $path, 'stat', $val );
                        $names[] = $object->name;
                }
-               return $names;
+               return array_reverse( $names ); // keep the paths in original order
        }
 
-       /**
-        * @see FileBackendStore::doGetFileSha1base36()
-        * @return bool
-        */
        protected function doGetFileSha1base36( array $params ) {
                $stat = $this->getFileStat( $params );
                if ( $stat ) {
@@ -1143,10 +1101,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
        }
 
-       /**
-        * @see FileBackendStore::doStreamFile()
-        * @return Status
-        */
        protected function doStreamFile( array $params ) {
                $status = Status::newGood();
 
@@ -1178,10 +1132,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doGetLocalCopyMulti()
-        * @return null|TempFSFile
-        */
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array();
 
@@ -1251,10 +1201,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $tmpFiles;
        }
 
-       /**
-        * @see FileBackendStore::getFileHttpUrl()
-        * @return string|null
-        */
        public function getFileHttpUrl( array $params ) {
                if ( $this->swiftTempUrlKey != '' ||
                        ( $this->rgwS3AccessKey != '' && $this->rgwS3SecretKey != '' ) )
@@ -1300,10 +1246,6 @@ class SwiftFileBackend extends FileBackendStore {
                return null;
        }
 
-       /**
-        * @see FileBackendStore::directoriesAreVirtual()
-        * @return bool
-        */
        protected function directoriesAreVirtual() {
                return true;
        }
@@ -1324,10 +1266,6 @@ class SwiftFileBackend extends FileBackendStore {
                return $hdrs;
        }
 
-       /**
-        * @see FileBackendStore::doExecuteOpHandlesInternal()
-        * @return Array List of corresponding Status objects
-        */
        protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
                $statuses = array();
 
@@ -1375,7 +1313,7 @@ class SwiftFileBackend extends FileBackendStore {
         * In general, we don't allow listings to end-users. It's not useful, isn't well-defined
         * (lists are truncated to 10000 item with no way to page), and is just a performance risk.
         *
-        * @param $contObj CF_Container Swift container
+        * @param CF_Container $contObj Swift container
         * @param array $readGrps List of read access routes
         * @param array $writeGrps List of write access routes
         * @return Status
@@ -1483,7 +1421,7 @@ class SwiftFileBackend extends FileBackendStore {
        /**
         * Get the cache key for a container
         *
-        * @param $username string
+        * @param string $username
         * @return string
         */
        private function getCredsCacheKey( $username ) {
@@ -1546,10 +1484,6 @@ class SwiftFileBackend extends FileBackendStore {
                $conn->delete_container( $container );
        }
 
-       /**
-        * @see FileBackendStore::doPrimeContainerCache()
-        * @return void
-        */
        protected function doPrimeContainerCache( array $containerInfo ) {
                try {
                        $conn = $this->getConnection(); // Swift proxy connection
@@ -1567,9 +1501,9 @@ class SwiftFileBackend extends FileBackendStore {
         * Log an unexpected exception for this backend.
         * This also sets the Status object to have a fatal error.
         *
-        * @param $e Exception
-        * @param $status Status|null
-        * @param $func string
+        * @param Exception $e
+        * @param Status $status|null
+        * @param string $func
         * @param array $params
         * @return void
         */
@@ -1604,7 +1538,15 @@ class SwiftFileOpHandle extends FileBackendStoreOpHandle {
        /** @var Array */
        public $affectedObjects = array();
 
-       public function __construct( $backend, array $params, $call, CF_Async_Op $cfOp ) {
+       /**
+        * @param SwiftFileBackend $backend
+        * @param array $params
+        * @param string $call
+        * @param CF_Async_Op $cfOp
+        */
+       public function __construct(
+               SwiftFileBackend $backend, array $params, $call, CF_Async_Op $cfOp
+       ) {
                $this->backend = $backend;
                $this->params = $params;
                $this->call = $call;
@@ -1636,7 +1578,7 @@ abstract class SwiftFileBackendList implements Iterator {
        const PAGE_SIZE = 9000; // file listing buffer size
 
        /**
-        * @param $backend SwiftFileBackend
+        * @param SwiftFileBackend $backend
         * @param string $fullCont Resolved container name
         * @param string $dir Resolved directory relative to container
         * @param array $params
@@ -1710,10 +1652,10 @@ abstract class SwiftFileBackendList implements Iterator {
         *
         * @param string $container Resolved container name
         * @param string $dir Resolved path relative to container
-        * @param $after string|null
-        * @param $limit integer
+        * @param string $after|null
+        * @param integer $limit
         * @param array $params
-        * @return Traversable|Array|null Returns null on failure
+        * @return Traversable|Array
         */
        abstract protected function pageFromList( $container, $dir, &$after, $limit, array $params );
 }
@@ -1732,7 +1674,7 @@ class SwiftFileBackendDirList extends SwiftFileBackendList {
 
        /**
         * @see SwiftFileBackendList::pageFromList()
-        * @return Array|null
+        * @return Array
         */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getDirListPageInternal( $container, $dir, $after, $limit, $params );
@@ -1753,7 +1695,7 @@ class SwiftFileBackendFileList extends SwiftFileBackendList {
 
        /**
         * @see SwiftFileBackendList::pageFromList()
-        * @return Array|null
+        * @return Array
         */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getFileListPageInternal( $container, $dir, $after, $limit, $params );
index 11e125c..8266e42 100644 (file)
@@ -37,8 +37,8 @@ class TempFSFile extends FSFile {
         * Make a new temporary file on the file system.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param $prefix string
-        * @param $extension string
+        * @param string $prefix
+        * @param string $extension
         * @return TempFSFile|null
         */
        public static function factory( $prefix, $extension = '' ) {
@@ -81,7 +81,7 @@ class TempFSFile extends FSFile {
        /**
         * Clean up the temporary file only after an object goes out of scope
         *
-        * @param $object Object
+        * @param Object $object
         * @return TempFSFile This object
         */
        public function bind( $object ) {
index 9c778c7..f0e54ec 100644 (file)
@@ -56,7 +56,7 @@ abstract class LockManager {
        protected $domain; // string; domain (usually wiki ID)
        protected $lockTTL; // integer; maximum time locks can be held
 
-       /* Lock types; stronger locks have higher values */
+       /** Lock types; stronger locks have higher values */
        const LOCK_SH = 1; // shared lock (for reads)
        const LOCK_UW = 2; // shared lock (for reads used to write elsewhere)
        const LOCK_EX = 3; // exclusive lock (for writes)
@@ -92,11 +92,25 @@ abstract class LockManager {
         * @return Status
         */
        final public function lock( array $paths, $type = self::LOCK_EX, $timeout = 0 ) {
+               return $this->lockByType( array( $type => $paths ), $timeout );
+       }
+
+       /**
+        * Lock the resources at the given abstract paths
+        *
+        * @param array $paths Map of LockManager::LOCK_* constants to lists of storage paths
+        * @param integer $timeout Timeout in seconds (0 means non-blocking) (since 1.21)
+        * @return Status
+        * @since 1.22
+        */
+       final public function lockByType( array $pathsByType, $timeout = 0 ) {
                wfProfileIn( __METHOD__ );
+               $status = Status::newGood();
+               $pathsByType = $this->normalizePathsByType( $pathsByType );
                $msleep = array( 0, 50, 100, 300, 500 ); // retry backoff times
                $start = microtime( true );
                do {
-                       $status = $this->doLock( array_unique( $paths ), $this->lockTypeMap[$type] );
+                       $status = $this->doLockByType( $pathsByType );
                        $elapsed = microtime( true ) - $start;
                        if ( $status->isOK() || $elapsed >= $timeout || $elapsed < 0 ) {
                                break; // success, timeout, or clock set back
@@ -116,8 +130,20 @@ abstract class LockManager {
         * @return Status
         */
        final public function unlock( array $paths, $type = self::LOCK_EX ) {
+               return $this->unlockByType( array( $type => $paths ) );
+       }
+
+       /**
+        * Unlock the resources at the given abstract paths
+        *
+        * @param array $paths Map of LockManager::LOCK_* constants to lists of storage paths
+        * @return Status
+        * @since 1.22
+        */
+       final public function unlockByType( array $pathsByType ) {
                wfProfileIn( __METHOD__ );
-               $status = $this->doUnlock( array_unique( $paths ), $this->lockTypeMap[$type] );
+               $pathsByType = $this->normalizePathsByType( $pathsByType );
+               $status = $this->doUnlockByType( $pathsByType );
                wfProfileOut( __METHOD__ );
                return $status;
        }
@@ -146,6 +172,46 @@ abstract class LockManager {
                return sha1( "{$this->domain}:{$path}" );
        }
 
+       /**
+        * Normalize the $paths array by converting LOCK_UW locks into the
+        * appropriate type and removing any duplicated paths for each lock type.
+        *
+        * @param array $paths Map of LockManager::LOCK_* constants to lists of storage paths
+        * @return Array
+        * @since 1.22
+        */
+       final protected function normalizePathsByType( array $pathsByType ) {
+               $res = array();
+               foreach ( $pathsByType as $type => $paths ) {
+                       $res[$this->lockTypeMap[$type]] = array_unique( $paths );
+               }
+               return $res;
+       }
+
+       /**
+        * @see LockManager::lockByType()
+        * @param array $paths Map of LockManager::LOCK_* constants to lists of storage paths
+        * @return Status
+        * @since 1.22
+        */
+       protected function doLockByType( array $pathsByType ) {
+               $status = Status::newGood();
+               $lockedByType = array(); // map of (type => paths)
+               foreach ( $pathsByType as $type => $paths ) {
+                       $status->merge( $this->doLock( $paths, $type ) );
+                       if ( $status->isOK() ) {
+                               $lockedByType[$type] = $paths;
+                       } else {
+                               // Release the subset of locks that were acquired
+                               foreach ( $lockedByType as $type => $paths ) {
+                                       $status->merge( $this->doUnlock( $paths, $type ) );
+                               }
+                               break;
+                       }
+               }
+               return $status;
+       }
+
        /**
         * Lock resources with the given keys and lock type
         *
@@ -155,6 +221,20 @@ abstract class LockManager {
         */
        abstract protected function doLock( array $paths, $type );
 
+       /**
+        * @see LockManager::unlockByType()
+        * @param array $paths Map of LockManager::LOCK_* constants to lists of storage paths
+        * @return Status
+        * @since 1.22
+        */
+       protected function doUnlockByType( array $pathsByType ) {
+               $status = Status::newGood();
+               foreach ( $pathsByType as $type => $paths ) {
+                       $status->merge( $this->doUnlock( $paths, $type ) );
+               }
+               return $status;
+       }
+
        /**
         * Unlock resources with the given keys and lock type
         *
index edcb1d6..5faad4a 100644 (file)
@@ -36,24 +36,18 @@ class ScopedLock {
        protected $manager;
        /** @var Status */
        protected $status;
-       /** @var Array List of resource paths*/
-       protected $paths;
-
-       protected $type; // integer lock type
+       /** @var Array Map of lock types to resource paths */
+       protected $pathsByType;
 
        /**
-        * @param $manager LockManager
-        * @param array $paths List of storage paths
-        * @param $type integer LockManager::LOCK_* constant
-        * @param $status Status
+        * @param LockManager $manager
+        * @param array $pathsByType Map of lock types to path lists
+        * @param Status $status
         */
-       protected function __construct(
-               LockManager $manager, array $paths, $type, Status $status
-       ) {
+       protected function __construct( LockManager $manager, array $pathsByType, Status $status ) {
                $this->manager = $manager;
-               $this->paths = $paths;
+               $this->pathsByType = $pathsByType;
                $this->status = $status;
-               $this->type = $type;
        }
 
        /**
@@ -61,19 +55,24 @@ class ScopedLock {
         * Any locks are released once this object goes out of scope.
         * The status object is updated with any errors or warnings.
         *
-        * @param $manager LockManager
-        * @param array $paths List of storage paths
-        * @param $type integer LockManager::LOCK_* constant
-        * @param $status Status
+        * $type can be "mixed" and $paths can be a map of types to paths (since 1.22).
+        * Otherwise $type should be an integer and $paths should be a list of paths.
+        *
+        * @param LockManager $manager
+        * @param array $paths List of storage paths or map of lock types to path lists
+        * @param integer|string $type LockManager::LOCK_* constant or "mixed"
+        * @param Status $status
+        * @param integer $timeout Timeout in seconds (0 means non-blocking) (since 1.22)
         * @return ScopedLock|null Returns null on failure
         */
        public static function factory(
-               LockManager $manager, array $paths, $type, Status $status
+               LockManager $manager, array $paths, $type, Status $status, $timeout = 0
        ) {
-               $lockStatus = $manager->lock( $paths, $type );
+               $pathsByType = is_integer( $type ) ? array( $type => $paths ) : $paths;
+               $lockStatus = $manager->lockByType( $pathsByType, $timeout );
                $status->merge( $lockStatus );
                if ( $lockStatus->isOK() ) {
-                       return new self( $manager, $paths, $type, $status );
+                       return new self( $manager, $pathsByType, $status );
                }
                return null;
        }
@@ -91,9 +90,12 @@ class ScopedLock {
                $lock = null;
        }
 
+       /**
+        * Release the locks when this goes out of scope
+        */
        function __destruct() {
                $wasOk = $this->status->isOK();
-               $this->status->merge( $this->manager->unlock( $this->paths, $this->type ) );
+               $this->status->merge( $this->manager->unlockByType( $this->pathsByType ) );
                if ( $wasOk ) {
                        // Make sure status is OK, despite any unlockFiles() fatals
                        $this->status->setResult( true, $this->status->value );
index 3cb1f41..12f24c5 100644 (file)
@@ -1294,11 +1294,16 @@ class LocalFile extends File {
                // creation, page doesn't exist yet, so log_page = 0
                // but we want it to point to the page we're making,
                // so we later modify the log entry.
+               // For a similar reason, we avoid making an RC entry
+               // now and wait until the page exists.
                $logId = $logEntry->insert();
-               $logEntry->publish( $logId );
 
-               wfProfileIn( __METHOD__ . '-edit' );
                $exists = $descTitle->exists();
+               if ( $exists ) {
+                       // Page exists, do RC entry now (otherwise we wait for later).
+                       $logEntry->publish( $logId );
+               }
+               wfProfileIn( __METHOD__ . '-edit' );
 
                if ( $exists ) {
                        # Create a null revision
@@ -1336,16 +1341,20 @@ class LocalFile extends File {
                        $content = ContentHandler::makeContent( $pageText, $descTitle );
                        $status = $wikiPage->doEditContent( $content, $comment, EDIT_NEW | EDIT_SUPPRESS_RC, false, $user );
 
-                       if ( isset( $status->value['revision'] ) ) { // XXX; doEdit() uses a transaction
-                               $dbw->begin( __METHOD__ );
+                       $dbw->begin( __METHOD__ ); // XXX; doEdit() uses a transaction
+                       // Now that the page exists, make an RC entry.
+                       $logEntry->publish( $logId );
+                       if ( isset( $status->value['revision'] ) ) {
                                $dbw->update( 'logging',
                                        array( 'log_page' => $status->value['revision']->getPage() ),
                                        array( 'log_id' => $logId ),
                                        __METHOD__
                                );
-                               $dbw->commit( __METHOD__ ); // commit before anything bad can happen
                        }
+                       $dbw->commit( __METHOD__ ); // commit before anything bad can happen
                }
+
+
                wfProfileOut( __METHOD__ . '-edit' );
 
                # Save to cache and purge the squid
@@ -1372,11 +1381,17 @@ class LocalFile extends File {
                # Invalidate cache for all pages using this file
                $update = new HTMLCacheUpdate( $this->getTitle(), 'imagelinks' );
                $update->doUpdate();
+               if ( !$reupload ) {
+                       LinksUpdate::queueRecursiveJobsForTable( $this->getTitle(), 'imagelinks' );
+               }
 
                # Invalidate cache for all pages that redirects on this page
                $redirs = $this->getTitle()->getRedirectsHere();
 
                foreach ( $redirs as $redir ) {
+                       if ( !$reupload && $redir->getNamespace() === NS_FILE ) {
+                               LinksUpdate::queueRecursiveJobsForTable( $redir, 'imagelinks' );
+                       }
                        $update = new HTMLCacheUpdate( $redir, 'imagelinks' );
                        $update->doUpdate();
                }
index 868e4da..a51afb2 100644 (file)
@@ -1620,6 +1620,8 @@ MediaWiki патрабуе падтрымкі UTF-8 для слушнай пра
        'config-mod-security' => "'''Папярэджаньне''': на Вашым ўэб-сэрверы ўключаны [http://modsecurity.org/ mod_security]. У выпадку няслушнай наладцы, ён можа стаць прычынай праблемаў для MediaWiki ці іншага праграмнага забесьпячэньня, якое дазваляе ўдзельнікам дасылаць на сэрвэр любы зьмест.
 Глядзіце [http://modsecurity.org/documentation/ дакумэнтацыю mod_security] ці зьвярніцеся ў падтрымку Вашага хосту, калі ў Вас узьнікаюць выпадковыя праблемы.",
        'config-diff3-bad' => 'GNU diff3 ня знойдзены.',
+       'config-git' => 'Знойдзеная сыстэма канстролю вэрсіяў Git: <code>$1</code>',
+       'config-git-bad' => 'Сыстэма кантролю вэрсіяў Git ня знойдзеная.',
        'config-imagemagick' => 'Знойдзены ImageMagick: <code>$1</code>.
 Пасьля ўключэньня загрузак будзе ўключанае маштабаваньне выяваў.',
        'config-gd' => 'GD падтрымліваецца ўбудавана.
@@ -1735,7 +1737,7 @@ $1
        'config-missing-db-host' => 'Вы павінны ўвесьці значэньне парамэтру «Хост базы зьвестак»',
        'config-missing-db-server-oracle' => 'Вы павінны ўвесьці значэньне парамэтру «TNS базы зьвестак»',
        'config-invalid-db-server-oracle' => 'Няслушнае TNS базы зьвестак «$1».
-Назва можа ўтрымліваць толькі ASCII-літары (a-z, A-Z), лічбы (0-9), сымбалі падкрэсьліваньня(_) і кропкі (.).',
+Назва можа ўтрымліваць толькі ASCII-літары (a-z, A-Z), лічбы (0-9), сымбалі падкрэсьліваньня(_) і кропкі (.).', # Fuzzy
        'config-invalid-db-name' => 'Няслушная назва базы зьвестак «$1».
 Назва можа ўтрымліваць толькі ASCII-літары (a-z, A-Z), лічбы (0-9), сымбалі падкрэсьліваньня(_) і працяжнікі (-).',
        'config-invalid-db-prefix' => 'Няслушны прэфікс базы зьвестак «$1».
@@ -3852,17 +3854,19 @@ $messages['cv'] = array(
 );
 
 /** Welsh (Cymraeg)
+ * @author Lloffiwr
  * @author Xxglennxx
  */
 $messages['cy'] = array(
        'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
-       'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [//meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
+       'mainpagedocfooter' => "Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [//meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
 
 ==Cychwyn arni==
 
 * [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr osodiadau wrth gyflunio]
 * [//www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]', # Fuzzy
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Cyfieithu MediaWici i'ch iaith chi]",
 );
 
 /** Danish (dansk)
@@ -4136,7 +4140,7 @@ Sofern nicht das Datenbanksystem angezeigt wird, das verwendet werden soll, gibt
        'config-missing-db-host' => 'Bei „Datenbankhost“ muss ein Wert angegeben werden.',
        'config-missing-db-server-oracle' => 'Für das „Datenbank-TNS“ muss ein Wert eingegeben werden',
        'config-invalid-db-server-oracle' => 'Ungültiges Datenbank-TNS „$1“.
-Es dürfen nur ASCII-codierte Buchstaben (a-z, A-Z), Zahlen (0-9) und Unterstriche (_) und Punkte (.) verwendet werden.',
+Entweder „TNS Name“ oder eine „Easy Connect“-Zeichenfolge verwenden ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle-Benennungsmethoden])',
        'config-invalid-db-name' => 'Ungültiger Datenbankname „$1“.
 Es dürfen nur ASCII-codierte Buchstaben (a-z, A-Z), Zahlen (0-9), Unter- (_) sowie Bindestriche (-) verwendet werden.',
        'config-invalid-db-prefix' => 'Ungültiger Datenbanktabellenpräfix „$1“.
@@ -5944,7 +5948,7 @@ Si vous ne voyez pas le système de base de données que vous essayez d'utiliser
        'config-missing-db-host' => "Vous devez entrer une valeur pour « l'hôte de la base de données »",
        'config-missing-db-server-oracle' => 'Vous devez saisir une valeur pour le « Nom TNS de la base de données »',
        'config-invalid-db-server-oracle' => 'Le nom TNS de la base de données (« $1 ») est invalide.
-Il ne peut contenir que des lettres latines de base (a-z, A-Z), des chiffres (0-9), des caractères de soulignement (_) et des points (.).',
+Utilisez uniquement la chaîne "TNS Name" ou "Easy Connect" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Méthodes de nommage Oracle])',
        'config-invalid-db-name' => 'Nom de la base de données invalide (« $1 »).
 Il ne peut contenir que des lettres latines (a-z, A-Z), des chiffres (0-9), des caractères de soulignement (_) et des tirets (-).',
        'config-invalid-db-prefix' => 'Préfixe de la base de données non valide « $1 ».
@@ -6769,7 +6773,7 @@ Se non ve listado a continuación o sistema de base de datos que intenta usar, s
        'config-missing-db-host' => 'Debe escribir un valor "Servidor da base de datos"',
        'config-missing-db-server-oracle' => 'Debe escribir un valor "TNS da base de datos"',
        'config-invalid-db-server-oracle' => 'O TNS da base de datos, "$1", é incorrecto.
-Só pode conter letras ASCII (a-z, A-Z), números (0-9), guións baixos (_) e puntos (.).',
+Utilice só "TNS Name" ou unha cadea de texto "Easy Connect" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm métodos de nomeamento de Oracle])',
        'config-invalid-db-name' => 'O nome da base de datos, "$1", é incorrecto.
 Só pode conter letras ASCII (a-z, A-Z), números (0-9), guións baixos (_) e guións (-).',
        'config-invalid-db-prefix' => 'O prefixo da base de datos, "$1", é incorrecto.
@@ -10031,6 +10035,8 @@ L'installazione potrebbe non riuscire!",
        'config-no-cache' => "'''Attenzione:''' [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache] non sono stati trovati.
 La caching degli oggetti non è attivata.",
        'config-diff3-bad' => 'GNU diff3 non trovato.',
+       'config-git' => 'Trovato software di controllo della versione Git: <code>$1</code>.',
+       'config-git-bad' => 'Software di controllo della versione Git non trovato.',
        'config-imagemagick' => 'Trovato ImageMagick: <code>$1</code>.
 Le miniature delle immagini saranno presenti se gli upload vengono abilitati.',
        'config-gd' => 'Trovata la GD Graphics Library built-in.
@@ -10043,13 +10049,25 @@ Installazione interrotta.",
        'config-using-server' => 'Nome server in uso "<nowiki>$1</nowiki>".',
        'config-using-uri' => 'URL del server in uso "<nowiki>$1$2</nowiki>".',
        'config-db-type' => 'Tipo di database:',
+       'config-db-host' => 'Host del database:',
+       'config-db-host-oracle' => 'TNS del database:',
        'config-db-wiki-settings' => 'Identifica questo wiki',
        'config-db-name' => 'Nome del database:',
        'config-db-name-oracle' => 'Schema del database:',
+       'config-db-install-account' => "Account utente per l'installazione",
        'config-db-username' => 'Nome utente del database:',
+       'config-db-password' => 'Password del database:',
        'config-db-password-empty' => 'Inserire una password per il nuovo utente del database: $1.
 Anche se può essere possibile creare utenti senza password, questo non è sicuro.',
+       'config-db-install-username' => "Inserisci il nome utente che verrà utilizzato per connettersi al database durante il processo di installazione.
+Questo non è il nome utente dell'account MediaWiki; ma quello per il tuo database.",
+       'config-db-install-password' => "Inserisci la password che verrà utilizzato per connettersi al database durante il processo di installazione.
+Questa non è la password dell'account MediaWiki; ma quella per il tuo database.",
        'config-db-install-help' => "Inserire il nome utente e la password che verranno usate per la connessione al database durante il processo d'installazione.",
+       'config-db-account-lock' => 'Utilizza lo stesso nome utente e password durante il normale funzionamento',
+       'config-db-wiki-account' => 'Account utente per il normale funzionamento',
+       'config-db-wiki-help' => "Inserisci il nome utente e la password che verrà utilizzato per connettersi al database durante il normale funzionamento del wiki.
+Se l'account non esiste, e l'account di installazione dispone di privilegi sufficienti, verrà creato con privilegi minimi necessari per operare sul wiki.",
        'config-db-prefix' => 'Prefisso tabella del database:',
        'config-db-charset' => 'Set di caratteri del database',
        'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
@@ -10061,22 +10079,51 @@ Anche se può essere possibile creare utenti senza password, questo non è sicur
 Da cambiare solamente se si è sicuri di averne bisogno.',
        'config-pg-test-error' => "Impossibile connettersi al database '''$1''': $2",
        'config-sqlite-dir' => 'Directory data di SQLite:',
+       'config-oracle-def-ts' => 'Tablespace di default:',
+       'config-oracle-temp-ts' => 'Tablespace temporaneo:',
        'config-header-mysql' => 'Impostazioni MySQL',
        'config-header-postgres' => 'Impostazioni PostgreSQL',
        'config-header-sqlite' => 'Impostazioni SQLite',
        'config-header-oracle' => 'Impostazioni Oracle',
        'config-invalid-db-type' => 'Tipo di database non valido',
        'config-missing-db-name' => 'È necessario immettere un valore per "Nome del database"',
+       'config-missing-db-host' => 'È necessario immettere un valore per "Host del database"',
+       'config-missing-db-server-oracle' => 'È necessario immettere un valore per "TNS del database"',
+       'config-connection-error' => '$1.
+
+Controlla host, nome utente e password e prova ancora.',
+       'config-postgres-old' => 'PostgreSQL $1 o una versione successiva è necessaria, rilevata la $2.',
+       'config-sqlite-cant-create-db' => 'Impossibile creare il file di database <code>$1</code> .',
+       'config-can-upgrade' => "Ci sono tabelle di MediaWiki in questo database.
+Per aggiornarle a MediaWiki $1, fai clic su '''continua'''.",
+       'config-upgrade-done' => "Aggiornamento completo.
+
+Puoi [$1 iniziare ad usare il tuo wiki].
+
+Se vuoi rigenerare il tuo file <code>LocalSettings.php</code>, clicca sul pulsante sotto. Questa operazione '''non è raccomandata''', a meno che non hai problemi con il tuo wiki.",
+       'config-upgrade-done-no-regenerate' => 'Aggiornamento completo.
+
+Puoi [$1 iniziare ad usare il tuo wiki].',
+       'config-regenerate' => 'Rigenera LocalSettings.php →',
        'config-db-web-account' => "Account del database per l'accesso web",
+       'config-db-web-help' => 'Seleziona il nome utente e la password che il server web utilizzerà per connettersi al server di database, durante il normale funzionamento del wiki.',
+       'config-db-web-account-same' => "Utilizza lo stesso account dell'installazione",
        'config-db-web-create' => "Crea l'account se non esiste già",
+       'config-db-web-no-create-privs' => "L'account usato per l'installazione non dispone dei privilegi necessari per creare un altro account.
+L'account indicato qui deve già esistere.",
        'config-mysql-engine' => 'Storage engine:',
        'config-mysql-innodb' => 'InnoDB',
        'config-mysql-myisam' => 'MyISAM',
        'config-mysql-charset' => 'Set di caratteri del database:',
        'config-mysql-binary' => 'Binario',
        'config-mysql-utf8' => 'UTF-8',
+       'config-site-name' => 'Nome del wiki:',
+       'config-site-name-help' => 'Questo verrà visualizzato nella barra del titolo del browser e in vari altri posti.',
+       'config-site-name-blank' => 'Inserisci il nome del sito.',
+       'config-project-namespace' => 'Namespace del progetto:',
        'config-ns-generic' => 'Progetto',
-       'config-ns-site-name' => 'Stesso nome wiki: $1',
+       'config-ns-site-name' => 'Stesso nome del wiki: $1',
+       'config-ns-other' => 'Altro (specificare)',
        'config-ns-other-default' => 'MyWiki',
        'config-admin-box' => 'Account amministratore',
        'config-admin-name' => 'Tuo nome:',
@@ -10099,6 +10146,8 @@ Inserire un indirizzo email se si desidera effettuare l'iscrizione alla mailing
        'config-almost-done' => 'Hai quasi finito!
 Adesso puoi saltare la rimanente parte della configurazione e semplicemente installare la wiki.',
        'config-optional-continue' => 'Fammi altre domande.',
+       'config-optional-skip' => 'Sono già stanco, installa solo il wiki.',
+       'config-profile' => 'Profilo dei diritti utente:',
        'config-profile-wiki' => 'Wiki aperto',
        'config-profile-no-anon' => 'Creazione utenza obbligatoria',
        'config-profile-fishbowl' => 'Solo editori autorizzati',
@@ -10118,8 +10167,13 @@ Se vuoi usare testi da Wikipedia, o desideri che Wikipedia possa essere in grado
 
 In precedenza Wikipedia ha utilizzato la GNU Free Documentation License. La GFDL è una licenza valida, ma è di difficile comprensione e complica il riutilizzo dei contenuti.",
        'config-email-settings' => 'Impostazioni email',
+       'config-enable-email' => 'Abilita la posta elettronica in uscita',
        'config-email-user' => 'Abilita invio email fra utenti',
+       'config-email-usertalk' => 'Abilita le notifiche per le pagine di discussione utente',
+       'config-email-watchlist' => 'Abilita le notifiche per gli osservati speciali',
        'config-email-auth' => 'Abilita autenticazione via email',
+       'config-email-sender' => 'Indirizzo email di ritorno:',
+       'config-upload-settings' => 'Caricamenti di immagini e file',
        'config-upload-enable' => 'Consentire il caricamento di file',
        'config-upload-deleted' => 'Directory per i file cancellati:',
        'config-logo' => 'URL del logo:',
@@ -10127,16 +10181,20 @@ In precedenza Wikipedia ha utilizzato la GNU Free Documentation License. La GFDL
        'config-cc-again' => 'Seleziona di nuovo...',
        'config-cc-not-chosen' => 'Scegliere quale licenza Creative Commons si desidera e cliccare su "procedi".',
        'config-advanced-settings' => 'Configurazione avanzata',
+       'config-memcached-servers' => 'Server di memcached:',
        'config-memcache-needservers' => 'È stato selezionato il tipo di caching Memcached, ma non è stato impostato alcun server.',
        'config-memcache-badip' => 'È stato inserito un indirizzo IP non valido per Memcached: $1.',
+       'config-memcache-badport' => 'I numeri di porta per memcached dovrebbero essere tra $1 e $2.',
        'config-extensions' => 'Estensioni',
        'config-install-step-done' => 'fatto',
        'config-install-step-failed' => 'non riuscito',
+       'config-install-database' => 'Configurazione database',
        'config-install-schema' => 'Creazione dello schema',
        'config-install-user' => 'Creazione di utente del database',
        'config-install-user-alreadyexists' => 'L\'utente "$1" è già presente',
        'config-install-user-create-failed' => 'Creazione dell\'utente "$1" non riuscita: $2',
        'config-install-user-missing' => 'L\'utente indicato "$1" non esiste.',
+       'config-install-tables' => 'Creazione tabelle',
        'config-install-tables-failed' => "'''Errore''': La creazione della tabella non è riuscita: $1",
        'config-install-interwiki' => 'Riempimento della tabella interwiki predefinita',
        'config-install-interwiki-list' => 'Impossibile leggere il file <code>interwiki.list</code>.',
@@ -10146,6 +10204,7 @@ In precedenza Wikipedia ha utilizzato la GNU Free Documentation License. La GFDL
        'config-install-subscribe-fail' => 'Impossibile sottoscrivere mediawiki-announce: $1',
        'config-install-subscribe-notpossible' => 'cURL non è installato e allow_url_fopen non è disponibile.',
        'config-install-mainpage' => 'Creazione della pagina principale con contenuto predefinito',
+       'config-install-extension-tables' => 'Creazione delle tabelle per le estensioni attivate',
        'config-install-mainpage-failed' => 'Impossibile inserire la pagina principale: $1',
        'config-download-localsettings' => 'Scarica <code>LocalSettings.php</code>',
        'config-help' => 'aiuto',
@@ -10266,7 +10325,7 @@ Unicode を少しでも利用する可能性がある場合は、[//www.mediawik
 共有サーバーを使用している場合は、適切なデータベース ドライバーのインストールを、サーバーの管理者に依頼してください。
 PHP を自分でコンパイルした場合は、例えば <code>./configure --with-mysql</code> を実行して、データベース クライアントを使用できるように再設定してください。
 Debian または Ubuntu のパッケージから PHP をインストールした場合は、php5-mysql モジュールもインストールする必要があります。',
-       'config-outdated-sqlite' => "'''警告:''' あなたは SQLite $1 を使っていますが、最低限要求されるバージョンである $2 未満となっています。SQLite は利用できません。",
+       'config-outdated-sqlite' => "'''警告:''' あなたは SQLite $1 を使用していますが、最低限必要なバージョン $2 より古いバージョンです。SQLite は利用できません。",
        'config-no-fts3' => "'''警告:''' SQLite は [//sqlite.org/fts3.html FTS3] モジュールなしでコンパイルされており、このバックエンドでは検索機能は利用できなくなります。",
        'config-register-globals' => "'''警告: PHP の <code>[http://php.net/register_globals register_globals]</code> オプションが有効になっています。'''
 '''可能なら無効化してください。'''
        'config-missing-db-host' => '「データベースのホスト」を入力してください',
        'config-missing-db-server-oracle' => '「データベース TNS」の値を入力してください',
        'config-invalid-db-server-oracle' => '「$1」は無効なデータベース TNS です。
\82¢ã\82¹ã\82­ã\83¼è\8b±å­\97(a-zã\80\81A-Z)ã\80\81æ\95°å­\97(0-9)ã\80\81ã\82¢ã\83³ã\83\80ã\83¼ã\83\90ã\83¼(_)ã\80\81ã\83\89ã\83\83ã\83\88(.)ã\81®ã\81¿ã\82\92使ç\94¨ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84ã\80\82',
\80\8cTNS å\90\8dã\80\8dã\80\8cEasy Connectã\80\8dæ\96\87å­\97å\88\97ã\81®ã\81\84ã\81\9aã\82\8cã\81\8bã\82\92使ç\94¨ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84 ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods])',
        'config-invalid-db-name' => '「$1」は無効なデータベース名です。
-アスキー英字(a-z、A-Z)、数字(0-9)、アンダーバー(_)、ハイフン(-)のみを使用してください。',
-       'config-invalid-db-prefix' => 'ã\80\8c$1ã\80\8dã\81¯ç\84¡å\8a¹ã\81ªã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹æ\8e¥é ­èª\9eã\81§ã\81\99ã\80\82
-アスキー英字(a-z, A-Z)、数字(0-9)、下線(_)、ハイフン(-)のみを使用してください。',
+半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_)、ハイフン (-) のみを使用してください。',
+       'config-invalid-db-prefix' => 'ã\80\8c$1ã\80\8dã\81¯ç\84¡å\8a¹ã\81ªã\83\87ã\83¼ã\82¿ã\83\99ã\83¼ã\82¹æ\8e¥é ­è¾\9eã\81§ã\81\99ã\80\82
+半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_)、ハイフン (-) のみを使用してください。',
        'config-connection-error' => '$1。
 
 以下のホスト名、ユーザー名、パスワードを確認してから再度試してください。',
        'config-invalid-schema' => '「$1」は MediaWiki のスキーマとして無効です。
-ASCII の英数字 (a-z、A-Z、0-9)、下線 (_) のみを使用してください。',
+半角の英数字 (a-z、A-Z、0-9)、アンダースコア (_) のみを使用してください。',
        'config-postgres-old' => 'PostgreSQL $1 以降が必要です。ご使用中の PostgreSQL は $2 です。',
        'config-sqlite-name-help' => 'あなたのウェキと同一性のある名前を選んでください。
 空白およびハイフンは使用しないでください。
@@ -11171,7 +11230,7 @@ MySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전
 예를 들어 <code>/var/lib/mediawiki/yourwiki</code>와 같이 다른 곳에 데이터베이스를 넣는 것이 좋습니다.",
        'config-oracle-def-ts' => '기본 테이블공간:',
        'config-oracle-temp-ts' => '임시 테이블공간:',
-       'config-type-oracle' => '오라클',
+       'config-type-oracle' => 'Oracle',
        'config-support-info' => '미디어위키는 다음의 데이터베이스 시스템을 지원합니다:
 
 $1
        'config-header-mysql' => 'MySQL 설정',
        'config-header-postgres' => 'PostgreSQL 설정',
        'config-header-sqlite' => 'SQLite 설정',
-       'config-header-oracle' => '오라클 설정',
+       'config-header-oracle' => 'Oracle 설정',
        'config-invalid-db-type' => '잘못된 데이터베이스 종류',
        'config-missing-db-name' => '"데이터베이스 이름"에 대한 값을 입력해야 합니다',
        'config-missing-db-host' => '"데이터베이스 호스트"에 대한 값을 입력해야 합니다',
        'config-missing-db-server-oracle' => '"데이터베이스 TNS"에 대한 값을 입력해야 합니다',
        'config-invalid-db-server-oracle' => '"$1" 데이터베이스 TNS가 잘못됐습니다.
-ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
+ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.', # Fuzzy
        'config-invalid-db-name' => '"$1" 데이터베이스 이름이 잘못되었습니다.
 ASCII 글자 (a-z, A-Z), 숫자 (0-9), 밑줄 (_)과 하이픈 (-)만 사용하세요.',
        'config-invalid-db-prefix' => '"$1" 데이터베이스 접두어가 잘못됐습니다.
@@ -12122,6 +12181,8 @@ $messages['lb'] = array(
        'config-localsettings-upgrade' => "'''Opgepasst''': E Fichier <code>LocalSettings.php</code> gouf fonnt.
 Är Software kann aktualiséiert ginn, setzt w.e.g. de Wäert vum <code>\$wgUpgradeKey</code> an d'Këscht.
 Dir fannt en am <code>LocalSettings.php</code>.",
+       'config-localsettings-cli-upgrade' => "E Fichier <code>LocalSettings.php</code> gouf fonnt.
+Fir dës Installatioun z'aktuaéliséieren start w.e.g. <code>update.php</code>",
        'config-localsettings-key' => 'Aktualisatiounsschlëssel:',
        'config-localsettings-badkey' => 'De Schlëssel deen Dir aginn hutt ass net korrekt',
        'config-localsettings-incomplete' => 'De Fichier <code>LocalSettings.php</code> schéngt net komplett ze sinn.
@@ -12312,6 +12373,7 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
        'config-install-stats' => 'Initialisatioun vun de Statistiken',
        'config-install-keys' => 'Generéiere vum Geheimschlëssel',
        'config-install-sysop' => 'Administrateur Benotzerkont gëtt ugeluecht',
+       'config-install-mainpage' => 'Haaptsäit mat Standard-Inhalt gëtt ugeluecht',
        'config-install-extension-tables' => "D'Tabelle fir déi aktivéiert Erweiderunge ginn ugeluecht",
        'config-install-mainpage-failed' => "D'Haaptsäit konnt net dragesat ginn: $1",
        'config-download-localsettings' => '<code>LocalSettings.php</code> eroflueden',
@@ -12846,8 +12908,8 @@ $1
        'config-missing-db-name' => 'Мора да внесете значење за параметарот „Име на базата“',
        'config-missing-db-host' => 'Мора да внесете вредност за „Домаќин на базата на податоци“',
        'config-missing-db-server-oracle' => 'Мора да внесете вредност за „TNS на базата“',
-       'config-invalid-db-server-oracle' => 'Неважечки TNS „$1“ за базата.
-Користете само знаци по ASCII - букви (a-z, A-Z), бројки (0-9), долни црти (_) и точки (.).',
+       'config-invalid-db-server-oracle' => 'Неважечки TNS „$1“.
+Користете или „TNS Name“ или низата „Easy Connect“ ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Методи на именување за Oracle])',
        'config-invalid-db-name' => 'Неважечко име на базата „$1“.
 Користете само ASCII-букви (a-z, A-Z), бројки (0-9), долни црти (_) и цртички (-).',
        'config-invalid-db-prefix' => 'Неважечки префикс за базата „$1“.
@@ -13420,11 +13482,12 @@ Bagaimanapun, MediaWiki memerlukan PHP $2 ke atas.',
        'mainpagetext' => "'''MediaWiki telah berjaya dipasang.'''",
        'mainpagedocfooter' => 'Sila rujuk [//meta.wikimedia.org/wiki/Help:Contents Panduan Penggunaan] untuk maklumat mengenai penggunaan perisian wiki ini.
 
-== Untuk bermula ==
+== Permulaan ==
 
 * [//www.mediawiki.org/wiki/Manual:Configuration_settings Senarai tetapan konfigurasi]
 * [//www.mediawiki.org/wiki/Manual:FAQ Soalan Lazim MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai mel bagi keluaran MediaWiki]', # Fuzzy
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai surat keluaran MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Terjemahkan MediaWiki ke dalam bahasa anda]',
 );
 
 /** Maltese (Malti)
@@ -14331,8 +14394,8 @@ Als u het databasesysteem dat u wilt gebruiken niet in de lijst terugvindt, volg
        'config-missing-db-name' => 'U moet een waarde opgeven voor "Databasenaam"',
        'config-missing-db-host' => 'U moet een waarde invoeren voor "Databaseserver"',
        'config-missing-db-server-oracle' => 'U moet een waarde opgeven voor "Database-TNS"',
-       'config-invalid-db-server-oracle' => 'Ongeldige database-TMS "$1".
-Gebruik alleen letters (a-z, A-Z), cijfers (0-9) en liggende streepjes (_).',
+       'config-invalid-db-server-oracle' => 'Ongeldige database-TNS "$1".
+Gebruik "TNS Names" of een "Easy Connect" tekst ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle naamgevingsmethoden])',
        'config-invalid-db-name' => 'Ongeldige databasenaam "$1".
 Gebruik alleen letters (a-z, A-Z), cijfers (0-9) en liggende streepjes (_) en streepjes (-).',
        'config-invalid-db-prefix' => 'Ongeldig databasevoorvoegsel "$1".
@@ -15163,6 +15226,8 @@ Instalacja może się nie udać!",
        'config-mod-security' => "''' Ostrzeżenie ''': Serwer sieci web ma włączone [http://modsecurity.org/ mod_security]. Jeśli niepoprawnie skonfigurowane, może być przyczyną problemów MediaWiki lub innego oprogramowania, które pozwala użytkownikom na wysyłanie dowolnej zawartości.
 Sprawdź w [http://modsecurity.org/documentation/ dokumentacji mod_security] lub skontaktuj się z obsługa hosta, jeśli wystąpią losowe błędy.",
        'config-diff3-bad' => 'Nie znaleziono GNU diff3.',
+       'config-git' => 'Znaleziono oprogramowanie kontroli wersji Git: <code>$1</code>.',
+       'config-git-bad' => 'Oprogramowanie systemu kontroli wersji Git nie zostało znalezione.',
        'config-imagemagick' => 'Mamy zainstalowany ImageMagick <code>$1</code>, dzięki czemu będzie można pomniejszać załadowane grafiki.',
        'config-gd' => 'Mamy wbudowaną bibliotekę graficzną GD, dzięki ceymu będzie można pomniejszać załadowane grafiki.',
        'config-no-scaling' => 'Nie można odnaleźć biblioteki GD lub ImageMagick. Nie będzie działać pomniejszanie załadowane grafiki.',
@@ -15181,7 +15246,8 @@ Instalacja została przerwana.',
        'config-using531' => 'MediaWiki nie może być używane z PHP $1 z powodu błędu dotyczącego referencyjnych argumentów funkcji <code>__call()</code>.
 Uaktualnij do PHP 5.3.2 lub nowszego. Możesz również cofnąć wersję do PHP 5.3.0, aby naprawić ten błąd.
 Instalacja została przerwana.',
-       'config-suhosin-max-value-length' => 'Jest zainstalowany Suhosin i ogranicza długość parametru GET do $1  bajtów. Komponent ResourceLoader w MediaWiki  wykona obejście tego ograniczenia, ale kosztem wydajności. Jeśli to możliwe należy ustawić <code>suhosin.get.max_value_length</code> na 1024 lub wyższej w <code>php.ini</code> oraz ustawić <code>$wgResourceLoaderMaxQueryLength</code> w LocalSettings.php na tę samą wartość.', # Fuzzy
+       'config-suhosin-max-value-length' => 'Jest zainstalowany Suhosin i ogranicza długość parametru GET <code>length</code> do $1 bajtów. Komponent ResourceLoader w MediaWiki wykona obejście tego ograniczenia, ale kosztem wydajności.
+Jeśli to możliwe, należy ustawić <code>suhosin.get.max_value_length</code> na 1024 lub wyżej w <code>php.ini</code> oraz ustawić <code>$wgResourceLoaderMaxQueryLength</code> w <code>LocalSettings.php</code> na tę samą wartość.',
        'config-db-type' => 'Typ bazy danych',
        'config-db-host' => 'Adres serwera bazy danych',
        'config-db-host-help' => 'Jeśli serwer bazy danych jest na innej maszynie, wprowadź jej nazwę domenową lub adres IP.
@@ -15271,7 +15337,7 @@ Poniżej wyświetlone są systemy baz danych gotowe do użycia. Jeżeli poniżej
        'config-missing-db-host' => 'Musisz wpisać wartość w polu „Serwer bazy danych”',
        'config-missing-db-server-oracle' => 'Należy wpisać wartość w polu „Nazwa instancji bazy danych (TNS)”',
        'config-invalid-db-server-oracle' => 'Nieprawidłowa nazwa instancji bazy danych (TNS) „$1”.
-W nazwie można użyć wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) i kropek (.).',
+Użyj "TNS Name" lub "Easy Connect" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle Naming Methods])',
        'config-invalid-db-name' => 'Nieprawidłowa nazwa bazy danych „$1”.
 Używaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) lub znaku odejmowania (-).',
        'config-invalid-db-prefix' => 'Nieprawidłowy prefiks bazy danych „$1”.
@@ -15346,6 +15412,12 @@ Konto, które wskazałeś tutaj musi już istnieć.',
 
 Jeśli instalacja MySQL obsługuje InnoDB, jest wysoce zalecane, by to je wybrać.
 Jeśli instalacja MySQL nie obsługuje InnoDB, być może nadszedł czas na jej uaktualnienie.",
+       'config-mysql-only-myisam-dep' => "'''Ostrzeżenie:''' MyISAM jest jedynym dostępnym mechanizmem składowania dla MySQL, który nie jest zalecany do używania z MediaWiki, ponieważ:
+* słabo obsługuje współbieżność z powodu blokowania tabel
+* jest bardziej skłonny do uszkodzeń niż inne silniki
+* kod MediaWiki nie zawsze traktuje MyISAM jak powinien
+
+Twoja instalacja MySQL nie obsługuje InnoDB, być może jest to czas na aktualizację.",
        'config-mysql-engine-help' => "'''InnoDB''' jest prawie zawsze najlepszą opcją, ponieważ posiada dobrą obsługę współbieżności.
 
 '''MyISAM''' może być szybsze w instalacjach pojedynczego użytkownika lub tylko do odczytu.
@@ -15389,7 +15461,7 @@ Podaj inną nazwę.',
        'config-admin-error-user' => 'Błąd wewnętrzny podczas tworzenia konta administratora o nazwie „<nowiki>$1</nowiki>”.',
        'config-admin-error-password' => 'Wewnętrzny błąd podczas ustawiania hasła dla administratora „<nowiki>$1</nowiki>”: <pre>$2</pre>',
        'config-admin-error-bademail' => 'Wpisałeś nieprawidłowy adres e‐mail',
-       'config-subscribe' => 'Zapisz się na [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce listę pocztową z ogłaszaniami o nowych wersjach].',
+       'config-subscribe' => 'Zapisz się na [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce listę pocztową z ogłoszeniami o nowych wersjach].',
        'config-subscribe-help' => 'Jest to lista o małej liczbie wiadomości, wykorzystywana do przesyłania informacji o udostępnieniu nowej wersji oraz istotnych sprawach dotyczących bezpieczeństwa.
 Powinieneś zapisać się na tę listę i aktualizować zainstalowane oprogramowanie MediaWiki gdy pojawia się nowa wersja.',
        'config-subscribe-noemail' => 'Próbowano subskrybować listę mailingową ogłoszeń wersji bez podania adresu e-mail.
@@ -15404,17 +15476,17 @@ Możesz pominąć pozostałe czynności konfiguracyjne i zainstalować wiki.',
        'config-profile-fishbowl' => 'Wyłącznie zatwierdzeni edytorzy',
        'config-profile-private' => 'Prywatna wiki',
        'config-profile-help' => "Strony typu wiki działają najlepiej, gdy pozwolisz je edytować tak wielu osobom, jak to możliwie.
-W MediaWiki, jest łatwe sprawdzenie ostatnich zmian i wycofać szkody, które są spowodowane przez naiwnych lub złośliwych użytkowników.
+W MediaWiki, można łatwo sprawdzić ostatnie zmiany i wycofać szkody, które są spowodowane przez naiwnych lub złośliwych użytkowników.
 
-Jednakże wielu uznało MediaWiki użytecznymi w różnorodnych rolach, a czasami nie jest łatwo przekonać wszystkich do korzyści ze sposobu działania wiki.
+Jednakże wielu uznało MediaWiki użytecznym w różnorodnych rolach, a czasami nie jest łatwo przekonać wszystkich do korzyści ze sposobu działania wiki. Masz więc wybór.
 
-Ustawienie '''{{int:config-profil-wiki}}''' pozwala każdemu na edycję, nawet bez logowania się.
-Wiki z '''{{int:config-profile-no-anon}}''' zawiera dodatkowe funkcje rozliczania się, ale może powstrzymać dorywczych współpracowników.
+Ustawienie '''{{int:config-profile-wiki}}''' pozwala każdemu na edycję, nawet bez logowania się.
+Wiki z '''{{int:config-profile-no-anon}}''' zawiera dodatkowe możliwości ale może powstrzymywać potencjalnych edytorów.
 
 Scenariusz '''{{int:config-profile-fishbowl}}''' umożliwia zatwierdzonym użytkownikom edycję, ale wyświetlanie stron jest powszechnie dostępne, włącznie z historią.
-Ustawienie '''{{int:config-profile-private}}'' ' pozwala na wyświetlanie stron tylko zatwierdzonym użytkownikom, ta sama grupa może edytować.
+Ustawienie '''{{int:config-profile-private}}'' ' pozwala na wyświetlanie stron tylko zatwierdzonym użytkownikom, ta sama grupa może je edytować.
 
-Bardziej skomplikowane konfiguracje uprawnień użytkowników są dostępne po zakończeniu instalacji, zobacz [//www.mediawiki.org/wiki/Manual:User_rights odpowiednią część podręcznika].", # Fuzzy
+Bardziej skomplikowane konfiguracje uprawnień użytkowników są dostępne po zakończeniu instalacji, zobacz [//www.mediawiki.org/wiki/Manual:User_rights odpowiednią część podręcznika].",
        'config-license' => 'Prawa autorskie i licencja',
        'config-license-none' => 'Brak stopki z licencją',
        'config-license-cc-by-sa' => 'Creative Commons – za uznaniem autora, na tych samych zasadach',
@@ -15465,7 +15537,9 @@ Najlepiej, aby nie był on dostępny z internetu.',
        'config-logo-help' => 'Domyślny motyw MediaWiki zawiera miejsce na logo wielkości 135 x 160 pikseli powyżej menu na pasku bocznym.
 Prześlij obrazek o odpowiednim rozmiarze, a następnie wpisz jego URL tutaj.
 
-Jeśli nie chcesz logo, pozostaw to pole puste.', # Fuzzy
+Możesz użyć <code>$wgStylePath</code> lub <code>$wgScriptPath</code> jeżeli twoje logo jest relatywne do tych ścieżek.
+
+Jeśli nie chcesz logo, pozostaw to pole puste.',
        'config-instantcommons' => 'Włącz Instant Commons',
        'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] jest funkcją, która pozwala wiki używać obrazów, dźwięków i innych mediów znalezionych na  witrynie [//commons.wikimedia.org/ Wikimedia Commons].
 Aby to zrobić, MediaWiki wymaga dostępu do internetu.
@@ -15498,8 +15572,8 @@ Jeśli nie znasz numeru portu, wartością domyślną jest 11211.',
 Mogą one wymagać dodatkowych czynności konfiguracyjnych, ale można je teraz włączyć',
        'config-install-alreadydone' => "'''Uwaga''' – wydaje się, że MediaWiki jest już zainstalowane, a obecnie próbujesz zainstalować je ponownie.
 Przejdź do następnej strony.",
-       'config-install-begin' => 'Po naciśnięciu "{{int:config-continue}}", rozpocznie się instalacji MediaWiki.
-Jeśli nadal chcesz dokonać zmian, naciśnij wstecz.', # Fuzzy
+       'config-install-begin' => 'Po naciśnięciu "{{int:config-continue}}", rozpocznie się instalacja MediaWiki.
+Jeśli nadal chcesz dokonać zmian, naciśnij "{{int:config-back}}".',
        'config-install-step-done' => 'gotowe',
        'config-install-step-failed' => 'nieudane',
        'config-install-extensions' => 'Włącznie z rozszerzeniami',
@@ -15557,13 +15631,17 @@ Po załadowaniu pliku konfiguracyjnego możesz '''[ $2  wejść na wiki]'''.",
        'config-download-localsettings' => 'Pobierz <code>LocalSettings.php</code>',
        'config-help' => 'pomoc',
        'config-nofile' => 'Nie udało się odnaleźć pliku "$1". Czy nie został usunięty?',
+       'config-extension-link' => 'Czy wiesz, że twoja wiki obsługuje [//www.mediawiki.org/wiki/Manual:Extensions/pl rozszerzenia]?
+
+Możesz przejrzeć [//www.mediawiki.org/wiki/Category:Extensions_by_category rozszerzenia według kategorii] lub [//www.mediawiki.org/wiki/Extension_Matrix Extension Matrix] aby zobaczyć pełną listę rozszerzeń.',
        'mainpagetext' => "'''Instalacja MediaWiki powiodła się.'''",
        'mainpagedocfooter' => 'Zobacz [//meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] w celu uzyskania informacji o działaniu oprogramowania wiki.
 
 == Na początek ==
-* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista ustawień konfiguracyjnych]
-* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki]', # Fuzzy
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings/pl Lista ustawień konfiguracyjnych]
+* [//www.mediawiki.org/wiki/Manual:FAQ/pl MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki]
+* [//www.mediawiki.org/wiki/Localisation#Translation_resources Przetłumacz MediaWiki na swój język]',
 );
 
 /** Piedmontese (Piemontèis)
@@ -16192,7 +16270,7 @@ $messages['pt'] = array(
        'config-title' => 'Instalação MediaWiki $1',
        'config-information' => 'Informação',
        'config-localsettings-upgrade' => 'Foi detectado um ficheiro <code>LocalSettings.php</code>.
-Para actualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.
+Para atualizar esta instalação, por favor introduza o valor de <code>$wgUpgradeKey</code> na caixa abaixo.
 Encontra este valor no <code>LocalSettings.php</code>.',
        'config-localsettings-cli-upgrade' => 'Foi detectada a existência de um ficheiro <code>LocalSettings.php</code>.
 Para actualizar esta instalação execute o <code>update.php</code>, por favor.',
@@ -16224,7 +16302,7 @@ Verifique o seu php.ini e certifique-se de que em <code>session.save_path</code>
        'config-page-language' => 'Língua',
        'config-page-welcome' => 'Bem-vindo(a) ao MediaWiki!',
        'config-page-dbconnect' => 'Ligar à base de dados',
-       'config-page-upgrade' => 'Actualizar a instalação existente',
+       'config-page-upgrade' => 'Atualizar a instalação existente',
        'config-page-dbsettings' => 'Configurações da base de dados',
        'config-page-name' => 'Nome',
        'config-page-options' => 'Opções',
@@ -16234,7 +16312,7 @@ Verifique o seu php.ini e certifique-se de que em <code>session.save_path</code>
        'config-page-readme' => 'Leia-me',
        'config-page-releasenotes' => 'Notas de lançamento',
        'config-page-copying' => 'A copiar',
-       'config-page-upgradedoc' => 'A actualizar',
+       'config-page-upgradedoc' => 'Atualizando',
        'config-page-existingwiki' => 'Wiki existente',
        'config-help-restart' => 'Deseja limpar todos os dados gravados que introduziu e reiniciar o processo de instalação?',
        'config-restart' => 'Sim, reiniciar',
@@ -16429,7 +16507,7 @@ Se a plataforma que pretende usar não está listada abaixo, siga as instruçõe
        'config-missing-db-host' => 'Tem de introduzir um valor para "Servidor da base de dados"',
        'config-missing-db-server-oracle' => 'Tem de introduzir um valor para "TNS da base de dados"',
        'config-invalid-db-server-oracle' => 'O TNS da base de dados, "$1", é inválido.
-Use só letras (a-z, A-Z), algarismos (0-9), sublinhados (_) e pontos (.) dos caracteres ASCII.',
+Use só letras (a-z, A-Z), algarismos (0-9), sublinhados (_) e pontos (.) dos caracteres ASCII.', # Fuzzy
        'config-invalid-db-name' => 'O nome da base de dados, "$1",  é inválido.
 Use só letras (a-z, A-Z), algarismos (0-9), sublinhados (_) e hífens (-) dos caracteres ASCII.',
        'config-invalid-db-prefix' => 'O prefixo da base de dados, "$1",  é inválido.
@@ -16550,7 +16628,7 @@ Introduza um nome de utilizador diferente.',
        'config-admin-error-bademail' => 'Introduziu um correio electrónico inválido',
        'config-subscribe' => 'Subscreva a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de divulgação de anúncios de lançamento].',
        'config-subscribe-help' => 'Esta é uma lista de divulgação de baixo volume para anúncios de lançamento de versões novas, incluindo anúncios de segurança importantes.
-Deve subscrevê-la e actualizar a sua instalação MediaWiki quando são lançadas versões novas.',
+Deve subscrevê-la e atualizar a sua instalação MediaWiki quando são lançadas versões novas.',
        'config-subscribe-noemail' => 'Tentou subscrever a lista de divulgação dos anúncios de novas versões, sem fornecer um endereço de correio electrónico.
 Para subscrever esta lista de divulgação tem de fornecer um endereço de correio electrónico.',
        'config-almost-done' => 'Está quase a terminar!
@@ -18023,7 +18101,7 @@ $1
        'config-missing-db-host' => 'Vnesti morate vrednost za »Gostitelj zbirke podatkov«',
        'config-missing-db-server-oracle' => 'Vnesti morate vrednost za »TNS zbirke podatkov«',
        'config-invalid-db-server-oracle' => 'Neveljaven TNS zbirke podatkov »$1«.
-Uporabljajte samo črke ASCII (a-z, A-Z), številke (0-9), podčrtaje (_) in pike (.).',
+Uporabite ali "ime TNS" ali niz "Easy Connect" ([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Načini poimenovanja Oracle])',
        'config-invalid-db-name' => 'Neveljavno ime zbirke podatkov »$1«.
 Uporabljajte samo črke ASCII (a-z, A-Z), številke (0-9), podčrtaje (_) in vezaje (-).',
        'config-invalid-db-prefix' => 'Neveljavna predpona zbirke podatkov »$1«.
@@ -18295,6 +18373,7 @@ $messages['su'] = array(
 );
 
 /** Swedish (svenska)
+ * @author Jopparn
  * @author Skalman
  * @author WikiPhoenix
  */
@@ -18302,8 +18381,20 @@ $messages['sv'] = array(
        'config-desc' => 'Installationsprogram för MediaWiki',
        'config-title' => 'Installation av MediaWiki $1',
        'config-information' => 'Information',
+       'config-localsettings-upgrade' => 'A <code>LocalSettings.php</code>-fil har upptäckts.
+För att uppgradera den här installationen, vänligen ange värdet för <code>$wgUpgradeKey</code> i rutan nedan.
+Du hittar den i <code>LocalSettings.php</code>.',
+       'config-localsettings-cli-upgrade' => 'En <code>LocalSettings.php</code>-fil har upptäckts.
+För att uppgradera denna installation, kör <code>update.php</code> istället',
        'config-localsettings-key' => 'Uppgraderingsnyckel:',
        'config-localsettings-badkey' => 'Nyckeln du angav är inkorrekt.',
+       'config-upgrade-key-missing' => 'En nuvarande installerade av MediaWiki har upptäckts.
+För att uppgradera installationen, lägg till följande rad i slutet av din <code>LocalSettings.php</code>:
+
+$1',
+       'config-localsettings-incomplete' => 'De befintliga <code>LocalSettings.php</code> verkar vara ofullständig.
+Variabeln $1 är inte inställd.
+Ändra <code>LocalSettings.php</code> så att denna variabel är inställd och klicka på "{{int:Config-continue}}".',
        'config-session-error' => 'Fel vid uppstart av session: $1',
        'config-your-language' => 'Ditt språk:',
        'config-your-language-help' => 'Välj ett språk som ska användas under installationen.',
@@ -18344,21 +18435,43 @@ Du kan inte installera MediaWiki.',
        'config-env-php' => 'PHP $1 är installerad.',
        'config-env-php-toolow' => 'PHP $1 är installerad.
 MediaWiki kräver PHP $2 eller högre.',
+       'config-outdated-sqlite' => "'''Varning:''' du har SQLite $1, vilket är lägre än minimikravet version $2. SQLite kommer inte att vara tillgänglig.",
+       'config-register-globals' => "'''Varning: PHP:s <code>[http://php.net/register_globals register_globals]</code> tillval är aktiverat.'''
+'''Inaktivera den om du kan.'''
+MediaWiki kommer att fungera, men din server exponeras för potentiella säkerhetsluckor.",
+       'config-safe-mode' => "''' Varning:''' PHP:s [http://www.php.net/features.safe-mode felsäkert läge] är aktivt.
+Det kan orsaka problem, särskilt om du använder filöverföringar och <code>math</code>-stöd.",
+       'config-xml-bad' => 'PHP:s XML-modul saknas.
+MediaWiki kräver funktioner i denna modul och kommer inte att fungera i den här konfigurationen.
+Om du kör Mandrake, installera php-xml-paketet.',
+       'config-memory-bad' => "''' Varning:''' PHP:s <code>memory_limit</code> är $1.
+Detta är förmodligen för lågt.
+Installationen kan misslyckas!",
        'config-xcache' => '[http://xcache.lighttpd.net/ XCache] är installerad',
        'config-apc' => '[http://www.php.net/apc APC] är installerad',
        'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] är installerad',
        'config-diff3-bad' => 'GNU diff3 hittades inte.',
+       'config-git-bad' => 'Git-versionen av kontrollmjukvaran hittades inte.',
+       'config-no-uri' => "'''Fel:''' Kunde inte fastställa det nuvarande URI:et.
+Installationen avbröts.",
+       'config-no-cli-uri' => "'''Varning:''' inget --scriptpath är anget, med standarden: <code>$1</code> .",
        'config-using-server' => 'Använder servernamn "<nowiki>$1</nowiki>".',
        'config-using-uri' => 'Använder server-URL "<nowiki>$1$2</nowiki>".',
+       'config-no-cli-uploads-check' => "'''Varning:''' Din standardkatalog för uppladdningar (<code>$1</code>) inte är kontrollerad för sårbarhet från godtyckliga skriptkörning under CLI-installationen.",
        'config-db-type' => 'Databastyp:',
+       'config-db-host' => 'Databasvärd:',
        'config-db-wiki-settings' => 'Identifiera denna wiki',
        'config-db-name' => 'Databasnamn:',
        'config-db-name-oracle' => 'Databasschema:',
        'config-db-install-account' => 'Användarkonto för installation',
        'config-db-username' => 'Databas-användarnamn:',
        'config-db-password' => 'Databas-lösenord:',
+       'config-db-wiki-account' => 'Användarkonto för normal drift',
+       'config-db-prefix' => 'Prefix för tabellerna i databasen:',
        'config-db-port' => 'Databasport:',
        'config-db-schema' => 'Schema för MediaWiki',
+       'config-pg-test-error' => "Kan inte ansluta till databas '''$1''': $2",
+       'config-sqlite-dir' => 'SQLite data-katalog:',
        'config-header-mysql' => 'MySQL-inställningar',
        'config-header-postgres' => 'PostgreSQL-inställningar',
        'config-header-sqlite' => 'SQLite-inställningar',
@@ -18366,6 +18479,7 @@ MediaWiki kräver PHP $2 eller högre.',
        'config-invalid-db-type' => 'Ogiltig databastyp',
        'config-missing-db-name' => 'Du måste ange ett värde för "Databasnamn"',
        'config-missing-db-host' => 'Du måste ange ett värde för "Databasvärd"',
+       'config-missing-db-server-oracle' => 'Du måste ange ett värde för "Databas TNS"',
        'config-invalid-db-name' => '"$1" är ett ogiltigt databasnamn.
 Använd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).',
        'config-invalid-db-prefix' => '"$1" är ett ogiltigt databasprefix.
@@ -18375,8 +18489,14 @@ Använd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bin
 Kontrollera värden, användarnamnet och lösenordet nedan och försök igen',
        'config-invalid-schema' => '"$1" är ett ogiltigt schema för MediaWiki.
 Använd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).',
+       'config-db-sys-create-oracle' => 'Installationsprogrammet stöder endast med ett SYSDBA-konto för att skapa ett nytt konto.',
        'config-db-sys-user-exists-oracle' => 'Användarkontot "$1" finns redan. SYSDBA kan endast användas för att skapa ett nytt konto!',
        'config-postgres-old' => 'PostgreSQL $1 eller senare krävs, du har $2.',
+       'config-sqlite-readonly' => 'Filen <code>$1</code> är inte skrivbar.',
+       'config-sqlite-cant-create-db' => 'Kunde inte skapa databasfilen <code>$1</code>.',
+       'config-sqlite-fts3-downgrade' => 'PHP saknar stöd för FTS3, nedgraderar tabeller',
+       'config-can-upgrade' => "Det finns MediaWiki-tabeller i den här databasen.
+För att uppgradera dem till MediaWiki $1, klicka på '''Fortsätt'''.",
        'config-upgrade-done' => "Uppgraderingen slutfördes.
 
 Du kan nu [$1 börja använda din wiki].
@@ -18386,6 +18506,8 @@ Detta '''rekommenderas inte''' om du har problem med din wiki.",
        'config-upgrade-done-no-regenerate' => 'Uppgraderingen slutfördes.
 
 Du kan nu [$1 börja använda din wiki].',
+       'config-regenerate' => 'Återskapa LocalSettings.php →',
+       'config-db-web-account' => 'Databaskonto för webbaccess',
        'config-db-web-account-same' => 'Använd samma konto som för installation',
        'config-db-web-create' => 'Skapa kontot om det inte redan finns',
        'config-mysql-engine' => 'Lagringsmotor:',
@@ -18394,6 +18516,7 @@ Du kan nu [$1 börja använda din wiki].',
        'config-site-name' => 'Namnet på wikin:',
        'config-site-name-blank' => 'Ange ett sidnamn.',
        'config-ns-generic' => 'Projekt',
+       'config-ns-other' => 'Annan (specificera)',
        'config-ns-invalid' => 'Den angivna namnrymden "<nowiki>$1</nowiki>" är ogiltig.
 Ange ett annat namnrymd för projektet.',
        'config-ns-conflict' => 'Den angivna namnrymden "<nowiki>$1</nowiki>" står i konflikt med en standardnamnrymd för MediaWiki.
@@ -18417,6 +18540,7 @@ Du kan nu hoppa över återstående konfigurationer och installera wikin nu.',
        'config-optional-continue' => 'Ställ fler frågor till mig.',
        'config-optional-skip' => 'Jag är redan uttråkad, bara installera wiki.',
        'config-profile-wiki' => 'Öppen wiki',
+       'config-profile-no-anon' => 'Kontoskapande krävs',
        'config-profile-fishbowl' => 'Endast auktoriserade redigerare',
        'config-profile-private' => 'Privat wiki',
        'config-license' => 'Upphovsrätt och licens:',
@@ -18429,7 +18553,12 @@ Du kan nu hoppa över återstående konfigurationer och installera wikin nu.',
        'config-license-pd' => 'Allmän egendom',
        'config-license-cc-choose' => 'Välj en anpassad Creative Commons-licens',
        'config-email-settings' => 'E-postinställningar',
+       'config-enable-email' => 'Aktivera utgående e-post',
+       'config-email-user' => 'Aktivera e-post mellan användare',
+       'config-email-user-help' => 'Tillåta alla användare att skicka mail till varandra om de har aktiverat det i deras preferenser.',
+       'config-email-usertalk' => 'Aktivera underrättelse för användardiskussionssidan',
        'config-email-watchlist' => 'Aktivera meddelanden för bevakningslistan',
+       'config-email-auth' => 'Aktivera autentisering via e-post',
        'config-upload-settings' => 'Bild- och filuppladdningar',
        'config-upload-enable' => 'Aktivera filöverföringar',
        'config-upload-deleted' => 'Mapp för raderade filer:',
@@ -19937,8 +20066,10 @@ $messages['ur'] = array(
 );
 
 /** Uzbek (oʻzbekcha)
+ * @author Sociologist
  */
 $messages['uz'] = array(
+       'config-admin-password-blank' => 'Administrator hisob yozuvi uchun maxfiy soʻz kiriting.',
        'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
        'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun  [//meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
 
@@ -20618,6 +20749,7 @@ $3
 /** Traditional Chinese (中文(繁體)‎)
  * @author Anthony Fok
  * @author Hzy980512
+ * @author Justincheng12345
  * @author Liangent
  * @author Mark85296341
  * @author Simon Shek
@@ -20720,6 +20852,8 @@ $1',
 Object caching is not enabled.",
        'config-mod-security' => "'''警告''':您的服務器已啟動[http://modsecurity.org/ mod_security]。若其配置錯誤, 會導致MediaWiki和其他軟件的錯誤並允許用戶任意發布內容。如果您遇到任何錯誤,請查閱[http://modsecurity.org/documentation/ mod_security文檔]或聯繫您的客服。",
        'config-diff3-bad' => '找不到GNU diff3。',
+       'config-git' => '發現Git版本控制軟件:<code>$1</code>。',
+       'config-git-bad' => '無法找到Git版本控制軟件。',
        'config-imagemagick' => '已找到ImageMagick:<code>$1</code>。如果你啟用了上傳功能,縮略圖功能也將被啟用。',
        'config-gd' => '已找到內建的GD圖形庫。如果你啟用了上傳功能,縮略圖功能也將被啟用。',
        'config-no-scaling' => '找不到GD庫或ImageMagick。縮略圖功能將不可用。',
@@ -20811,7 +20945,8 @@ $1
        'config-missing-db-name' => '您必須為“數據庫名稱”輸入內容',
        'config-missing-db-host' => '您必須為“數據庫主機”輸入內容',
        'config-missing-db-server-oracle' => '您必須為“數據庫透明網絡底層(TNS)”輸入內容',
-       'config-invalid-db-server-oracle' => '無效的數據庫TNS“$1”。請只使用ASCII字母(a-z、A-Z)、數字(0-9)、下劃線(_)和點號(.)。',
+       'config-invalid-db-server-oracle' => '無效的數據庫TNS「$1」。
+請只使用「TNS Name」或「Easy Connect」 字串([http://docs.oracle.com/cd/E11882_01/network.112/e10836/naming.htm Oracle命名法])',
        'config-invalid-db-name' => '無效的數據庫名稱“$1”。請只使用ASCII字母(a-z、A-Z)、數字(0-9)、下劃線(_)和連字號(-)。',
        'config-invalid-db-prefix' => '無效的數據庫前綴“$1”。請只使用ASCII字母(a-z、A-Z)、數字(0-9)、下劃線(_)和連字號(-)。',
        'config-connection-error' => '$1。
index f17a1a1..91e1e87 100644 (file)
@@ -30,7 +30,7 @@ class FormatJson {
         * This encoding option saves 3 to 8 bytes (uncompressed) for each such character;
         * however, it could break compatibility with systems that incorrectly handle UTF-8.
         *
-        * @since 1.21
+        * @since 1.22
         */
        const UTF8_OK = 1;
 
@@ -42,7 +42,7 @@ class FormatJson {
         * - HTML5, §4.3.1.2 Restrictions for contents of script elements
         * - XML 1.0 (5th Ed.), §2.4 Character Data and Markup
         *
-        * @since 1.21
+        * @since 1.22
         */
        const XMLMETA_OK = 2;
 
@@ -51,7 +51,7 @@ class FormatJson {
         *
         * @warning When generating inline script blocks, use FormatJson::UTF8_OK instead.
         *
-        * @since 1.21
+        * @since 1.22
         */
        const ALL_OK = 3;
 
@@ -80,7 +80,7 @@ class FormatJson {
         * @note Empty arrays are encoded as numeric arrays, not as objects, so cast any associative
         *       array that might be empty to an object before encoding it.
         *
-        * @note In pre-1.21 versions of MediaWiki, using this function for generating inline script
+        * @note In pre-1.22 versions of MediaWiki, using this function for generating inline script
         *       blocks may result in an XSS vulnerability, and quite likely will in XML documents
         *       (cf. FormatJson::XMLMETA_OK). Use Xml::encodeJsVar() instead in such cases.
         *
index fb1e9a4..ac33448 100644 (file)
@@ -113,8 +113,8 @@ class CSSJanus {
                $patterns['rtl_in_url'] = "/{$patterns['lookbehind_not_letter']}(rtl){$patterns['lookahead_for_closing_paren']}/i";
                $patterns['cursor_east'] = "/{$patterns['lookbehind_not_letter']}([ns]?)e-resize/";
                $patterns['cursor_west'] = "/{$patterns['lookbehind_not_letter']}([ns]?)w-resize/";
-               $patterns['four_notation_quantity'] = "/{$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}/i";
-               $patterns['four_notation_color'] = "/(-color\s*:\s*){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}/i";
+               $patterns['four_notation_quantity'] = "/(:\s*){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s+){$patterns['possibly_negative_quantity']}(\s*[;}])/i";
+               $patterns['four_notation_color'] = "/(-color\s*:\s*){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s+){$patterns['color']}(\s*[;}])/i";
                // The two regexes below are parenthesized differently then in the original implementation to make the
                // callback's job more straightforward
                $patterns['bg_horizontal_percentage'] = "/(background(?:-position)?\s*:\s*[^%]*?)(-?{$patterns['num']})(%\s*(?:{$patterns['quantity']}|{$patterns['ident']}))/";
@@ -257,8 +257,8 @@ class CSSJanus {
         * @return string
         */
        private static function fixFourPartNotation( $css ) {
-               $css = preg_replace( self::$patterns['four_notation_quantity'], '$1$2$7$4$5$6$3', $css );
-               $css = preg_replace( self::$patterns['four_notation_color'], '$1$2$3$8$5$6$7$4', $css );
+               $css = preg_replace( self::$patterns['four_notation_quantity'], '$1$2$3$8$5$6$7$4$9', $css );
+               $css = preg_replace( self::$patterns['four_notation_color'], '$1$2$3$8$5$6$7$4$9', $css );
 
                return $css;
        }
index 78d8180..4f626b2 100644 (file)
@@ -26,7 +26,7 @@
 class HttpStatus {
 
        /**
-        * Get the message associed with the HTTP response code $code
+        * Get the message associated with HTTP response code $code
         *
         * Replace OutputPage::getStatusMessage( $code )
         *
index ef9a2d4..44334ba 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @author Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @since 1.21
+ * @since 1.22
  */
 
 /**
index 589b1ba..0978f97 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @author Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @since 1.21
+ * @since 1.22
  */
 
 /**
index ed37b6a..602728b 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @author Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @since 1.21
+ * @since 1.22
  */
 
 /**
index 74ab196..507039b 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @author Niklas Laxström
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @since 1.21
+ * @since 1.22
  */
 
 /**
index 67bd4d0..d3daf6e 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @author Alexandre Emsenhuber
  * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
- * @since 1.21
+ * @since 1.22
  */
 
 /**
index b368906..3204fd7 100644 (file)
@@ -78,7 +78,7 @@ abstract class MediaHandler {
        /**
         * Merge a parameter array into a string appropriate for inclusion in filenames
         *
-        * @param $params array
+        * @param $params array Array of parameters that have been through normaliseParams.
         */
        abstract function makeParamString( $params );
 
@@ -220,6 +220,7 @@ abstract class MediaHandler {
         * @param string $dstPath filesystem destination path
         * @param string $dstUrl destination URL to use in output HTML
         * @param array $params arbitrary set of parameters validated by $this->validateParam()
+        *   Note: These parameters have *not* gone through $this->normaliseParams()
         * @param $flags Integer: a bitfield, may contain self::TRANSFORM_LATER
         *
         * @return MediaTransformOutput
@@ -228,6 +229,10 @@ abstract class MediaHandler {
 
        /**
         * Get the thumbnail extension and MIME type for a given source MIME type
+        *
+        * @param String $ext Extension of original file
+        * @param String $mime Mime type of original file
+        * @param Array $params Handler specific rendering parameters
         * @return array thumbnail extension and MIME type
         */
        function getThumbType( $ext, $mime, $params = null ) {
@@ -475,6 +480,8 @@ abstract class MediaHandler {
        }
 
        /**
+        * Used instead of getLongDesc if there is no handler registered for file.
+        *
         * @param $file File
         * @return string
         */
@@ -484,6 +491,8 @@ abstract class MediaHandler {
        }
 
        /**
+        * Short description. Shown on Special:Search results.
+        *
         * @param $file File
         * @return string
         */
@@ -494,6 +503,8 @@ abstract class MediaHandler {
        }
 
        /**
+        * Long description. Shown under image on image description page surounded by ().
+        *
         * @param $file File
         * @return string
         */
@@ -503,6 +514,8 @@ abstract class MediaHandler {
        }
 
        /**
+        * Used instead of getShortDesc if there is no handler registered for file.
+        *
         * @param $file File
         * @return string
         */
@@ -530,12 +543,25 @@ abstract class MediaHandler {
                }
        }
 
+       /**
+        * Shown in file history box on image description page.
+        *
+        * @param File $file
+        * @return String Dimensions
+        */
        function getDimensionsString( $file ) {
                return '';
        }
 
        /**
-        * Modify the parser object post-transform
+        * Modify the parser object post-transform.
+        *
+        * This is often used to do $parser->addOutputHook(),
+        * in order to add some javascript to render a viewer.
+        * See TimedMediaHandler or OggHandler for an example.
+        *
+        * @param Parser $parser
+        * @param File $file
         */
        function parserTransformHook( $parser, $file ) {}
 
@@ -583,10 +609,17 @@ abstract class MediaHandler {
        }
 
        /**
-        * Remove files from the purge list
+        * Remove files from the purge list.
+        *
+        * This is used by some video handlers to prevent ?action=purge
+        * from removing a transcoded video, which is expensive to
+        * regenerate.
+        *
+        * @see LocalFile::purgeThumbnails
         *
         * @param array $files
-        * @param array $options
+        * @param array $options Purge options. Currently will always be
+        *  an array with a single key 'forThumbRefresh' set to true.
         */
        public function filterThumbnailPurgeList( &$files, $options ) {
                // Do nothing
index 1d197b1..8632399 100644 (file)
@@ -32,7 +32,7 @@ abstract class MediaTransformOutput {
         */
        var $file;
 
-       var $width, $height, $url, $page, $path;
+       var $width, $height, $url, $page, $path, $lang;
 
        /**
         * @var array Associative array mapping optional supplementary image files
@@ -197,17 +197,26 @@ abstract class MediaTransformOutput {
 
        /**
         * @param $title string
-        * @param $params array
+        * @param $params string|array Query parameters to add
         * @return array
         */
-       public function getDescLinkAttribs( $title = null, $params = '' ) {
-               $query = '';
+       public function getDescLinkAttribs( $title = null, $params = array() ) {
+               if ( is_array( $params ) ) {
+                       $query = $params;
+               } else {
+                       $query = array();
+               }
                if ( $this->page && $this->page !== 1 ) {
-                       $query = 'page=' . urlencode( $this->page );
+                       $query['page'] = $this->page;
                }
-               if ( $params ) {
-                       $query .= $query ? '&' . $params : $params;
+               if( $this->lang ) {
+                       $query['lang'] = $this->lang;
                }
+
+               if ( is_string( $params ) && $params !== '' ) {
+                       $query = $params . '&' . wfArrayToCgi( $query );
+               }
+
                $attribs = array(
                        'href' => $this->file->getTitle()->getLocalURL( $query ),
                        'class' => 'image',
@@ -242,10 +251,12 @@ class ThumbnailImage extends MediaTransformOutput {
                # Previous parameters:
                #   $file, $url, $width, $height, $path = false, $page = false
 
+               $defaults = array(
+                       'page' => false,
+                       'lang' => false
+               );
+
                if ( is_array( $parameters ) ) {
-                       $defaults = array(
-                               'page' => false
-                       );
                        $actualParams = $parameters + $defaults;
                } else {
                        # Using old format, should convert. Later a warning could be added here.
@@ -254,7 +265,7 @@ class ThumbnailImage extends MediaTransformOutput {
                                'width' => $path,
                                'height' => $parameters,
                                'page' => ( $numArgs > 5 ) ? func_get_arg( 5 ) : false
-                       );
+                       ) + $defaults;
                        $path = ( $numArgs > 4 ) ? func_get_arg( 4 ) : false;
                }
 
@@ -269,6 +280,7 @@ class ThumbnailImage extends MediaTransformOutput {
                $this->height = round( $actualParams['height'] );
 
                $this->page = $actualParams['page'];
+               $this->lang = $actualParams['lang'];
        }
 
        /**
index a133f6f..f0356f5 100644 (file)
@@ -115,6 +115,7 @@ class SvgHandler extends ImageHandler {
                $clientHeight = $params['height'];
                $physicalWidth = $params['physicalWidth'];
                $physicalHeight = $params['physicalHeight'];
+               $lang = isset( $params['lang'] ) ? $params['lang'] : 'en';
 
                if ( $flags & self::TRANSFORM_LATER ) {
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
@@ -132,7 +133,7 @@ class SvgHandler extends ImageHandler {
                }
 
                $srcPath = $image->getLocalRefPath();
-               $status = $this->rasterize( $srcPath, $dstPath, $physicalWidth, $physicalHeight );
+               $status = $this->rasterize( $srcPath, $dstPath, $physicalWidth, $physicalHeight, $lang );
                if ( $status === true ) {
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                } else {
@@ -147,10 +148,11 @@ class SvgHandler extends ImageHandler {
         * @param string $dstPath
         * @param string $width
         * @param string $height
+        * @param string $lang Language code of the language to render the SVG in
         * @throws MWException
         * @return bool|MediaTransformError
         */
-       public function rasterize( $srcPath, $dstPath, $width, $height ) {
+       public function rasterize( $srcPath, $dstPath, $width, $height, $lang = false ) {
                global $wgSVGConverters, $wgSVGConverter, $wgSVGConverterPath;
                $err = false;
                $retval = '';
@@ -158,7 +160,7 @@ class SvgHandler extends ImageHandler {
                        if ( is_array( $wgSVGConverters[$wgSVGConverter] ) ) {
                                // This is a PHP callable
                                $func = $wgSVGConverters[$wgSVGConverter][0];
-                               $args = array_merge( array( $srcPath, $dstPath, $width, $height ),
+                               $args = array_merge( array( $srcPath, $dstPath, $width, $height, $lang ),
                                        array_slice( $wgSVGConverters[$wgSVGConverter], 1 ) );
                                if ( !is_callable( $func ) ) {
                                        throw new MWException( "$func is not callable" );
@@ -176,9 +178,15 @@ class SvgHandler extends ImageHandler {
                                                wfEscapeShellArg( $dstPath ) ),
                                        $wgSVGConverters[$wgSVGConverter]
                                ) . " 2>&1";
+
+                               $env = array();
+                               if( $lang !== false ) {
+                                       $env['LANG'] = $lang;
+                               }
+
                                wfProfileIn( 'rsvg' );
                                wfDebug( __METHOD__ . ": $cmd\n" );
-                               $err = wfShellExec( $cmd, $retval );
+                               $err = wfShellExec( $cmd, $retval, $env );
                                wfProfileOut( 'rsvg' );
                        }
                }
@@ -357,4 +365,68 @@ class SvgHandler extends ImageHandler {
                }
                return $result;
        }
+
+
+       /**
+        * @param string $name Parameter name
+        * @param $string $value Parameter value
+        * @return bool Validity
+        */
+       function validateParam( $name, $value ) {
+               if ( in_array( $name, array( 'width', 'height' ) ) ) {
+                       // Reject negative heights, widths
+                       return ( $value > 0 );
+               } elseif( $name == 'lang' ) {
+                       // Validate $code
+                       if( !Language::isValidBuiltinCode( $value ) ) {
+                               wfDebug( "Invalid user language code\n" );
+                               return false;
+                       }
+                       return true;
+               }
+               // Only lang, width and height are acceptable keys
+               return false;
+       }
+
+       /**
+        * @param array $params name=>value pairs of parameters
+        * @return string Filename to use
+        */
+       function makeParamString( $params ) {
+               $lang = '';
+               if( isset( $params['lang'] ) && $params['lang'] !== 'en' ) {
+                       $params['lang'] = mb_strtolower( $params['lang'] );
+                       $lang = "lang{$params['lang']}-";
+               }
+               if ( !isset( $params['width'] ) ) {
+                       return false;
+               }
+               return "$lang{$params['width']}px";
+       }
+
+       function parseParamString( $str ) {
+               $m = false;
+               if ( preg_match( '/^lang([a-z]+(?:-[a-z]+)*)-(\d+)px$/', $str, $m ) ) {
+                       return array( 'width' => array_pop( $m ), 'lang' => $m[1] );
+               } elseif( preg_match( '/^(\d+)px$/', $str, $m ) ) {
+                       return array( 'width' => $m[1], 'lang' => 'en' );
+               } else {
+                       return false;
+               }
+       }
+
+       function getParamMap() {
+               return array( 'img_lang' => 'lang', 'img_width' => 'width' );
+       }
+
+       /**
+        * @param $params
+        * @return array
+        */
+       function getScriptParams( $params ) {
+               return array(
+                       'width' => $params['width'],
+                       'lang' => $params['lang'],
+               );
+       }
 }
index 993642e..0f718d2 100644 (file)
@@ -48,7 +48,7 @@ grains of salt.
 
 There's an experimental PHP extension module which wraps the ICU library's
 normalization functions. This is *MUCH* faster than doing this work in pure
-PHP code. This is at https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/normal.git;a=summary.
+PHP code. This is at https://git.wikimedia.org/summary/mediawiki%2Fextensions%2Fnormal.git.
 It is used by the WMF, which currently runs PHP 5.3.10 on Linux.  It hasn't been
 thoroughly tested on other configurations, but may work.
 
index 748c423..f962162 100644 (file)
@@ -37,6 +37,8 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
         *   - compress_threshold:  The minimum size an object must be before it is compressed
         *   - timeout:             The read timeout in microseconds
         *   - connect_timeout:     The connect timeout in seconds
+        *   - retry_timeout:       Time in seconds to wait before retrying a failed connect attempt
+        *   - server_failure_limit:  Limit for server connect failures before it is removed
         *   - serializer:          May be either "php" or "igbinary". Igbinary produces more compact
         *                          values, but serialization is much slower unless the php.ini option
         *                          igbinary.compact_strings is off.
@@ -61,6 +63,14 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                        $params['serializer'] = 'php';
                }
 
+               if ( isset( $params['retry_timeout'] ) ) {
+                       $this->client->setOption( Memcached::OPT_RETRY_TIMEOUT, $params['retry_timeout'] );
+               }
+
+               if ( isset ( $params['server_failure_limit'] ) ) {
+                       $this->client->setOption( Memcached::OPT_SERVER_FAILURE_LIMIT, $params['server_failure_limit'] );
+               }
+
                // The compression threshold is an undocumented php.ini option for some
                // reason. There's probably not much harm in setting it globally, for
                // compatibility with the settings for the PHP client.
index 375ff2b..8b513a6 100644 (file)
@@ -377,7 +377,7 @@ class CoreParserFunctions {
 
                // disallow some styles that could be used to bypass $wgRestrictDisplayTitle
                if ( $wgRestrictDisplayTitle ) {
-                       $htmlTagsCallback = function ( $params ) {
+                       $htmlTagsCallback = function ( &$params ) {
                                $decoded = Sanitizer::decodeTagAttributes( $params );
 
                                if ( isset( $decoded['style'] ) ) {
@@ -456,7 +456,8 @@ class CoreParserFunctions {
                return self::formatRaw( SiteStats::edits(), $raw );
        }
        static function numberofviews( $parser, $raw = null ) {
-               return self::formatRaw( SiteStats::views(), $raw );
+               global $wgDisableCounters;
+               return !$wgDisableCounters ? self::formatRaw( SiteStats::views(), $raw ) : '';
        }
        static function pagesinnamespace( $parser, $namespace = 0, $raw = null ) {
                return self::formatRaw( SiteStats::pagesInNs( intval( $namespace ) ), $raw );
@@ -824,7 +825,9 @@ class CoreParserFunctions {
                        $title = SpecialPage::getTitleFor( $page, $subpage );
                        return $title->getPrefixedText();
                } else {
-                       return wfMessage( 'nosuchspecialpage' )->inContentLanguage()->text();
+                       // unknown special page, just use the given text as its title, if at all possible
+                       $title = Title::makeTitleSafe( NS_SPECIAL, $text );
+                       return $title ? $title->getPrefixedText() : self::special( $parser, 'Badtitle' );
                }
        }
 
index 840e174..28cde7f 100644 (file)
@@ -3323,7 +3323,7 @@ class Parser {
                if ( !$found && $title ) {
                        if ( !Profiler::instance()->isPersistent() ) {
                                # Too many unique items can kill profiling DBs/collectors
-                               $titleProfileIn = __METHOD__ . "-title-" . $title->getDBkey();
+                               $titleProfileIn = __METHOD__ . "-title-" . $title->getPrefixedDBkey();
                                wfProfileIn( $titleProfileIn ); // template in
                        }
                        wfProfileIn( __METHOD__ . '-loadtpl' );
index 29b3500..c5e42a4 100644 (file)
@@ -67,22 +67,8 @@ class ParserOutput extends CacheTime {
 
        function getText() {
                if ( $this->mEditSectionTokens ) {
-                       $text = $this->mText;
-
-                       // If there's old output with misplaced editsections links cached, mangle it to put them in
-                       // the right position. We can assume that there is no '</hN>' inside header tags, making this
-                       // possible to do with a regex.
-                       $text = preg_replace(
-                               //            [ this part is like EDITSECTION_REGEX, but with non-capturing groups                           ]
-                               //                                                                                  note the space here ------v
-                               '#(<[hH](\d)>)(<(?:mw:)?editsection page="(?:.*?)" section="(?:.*?)"(?:/>|>(?:.*?)(?:</(?:mw:)?editsection>))) ([\s\S]*?)(</[hH]\2>)#',
-                               // swap the order of content and editsection link - $2 is ignored since it's the number in hN's tag name
-                               '$1$4 $3$5',
-                               $text
-                       );
-
                        return preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
-                               array( &$this, 'replaceEditSectionLinksCallback' ), $text );
+                               array( &$this, 'replaceEditSectionLinksCallback' ), $this->mText );
                }
                return preg_replace( ParserOutput::EDITSECTION_REGEX, '', $this->mText );
        }
index 543bd1d..d2ddea3 100644 (file)
@@ -563,6 +563,7 @@ class ResourceLoader {
                }
                if ( $context->getOnly() === 'styles' ) {
                        header( 'Content-Type: text/css; charset=utf-8' );
+                       header( 'Access-Control-Allow-Origin: *' );
                } else {
                        header( 'Content-Type: text/javascript; charset=utf-8' );
                }
index 61e6e15..7b4b668 100644 (file)
@@ -81,7 +81,7 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
                        $rules[] = "#toc { display: none; }\n";
                }
                if ( !$options['editsection'] ) {
-                       $rules[] = ".mw-editsection, .editsection { display: none; }\n";
+                       $rules[] = ".mw-editsection { display: none; }\n";
                }
                if ( $options['editfont'] !== 'default' ) {
                        // Double-check that $options['editfont'] consists of safe characters only
index a975b03..4f4e31d 100644 (file)
@@ -494,6 +494,18 @@ class SearchEngine {
                // no-op
        }
 
+       /**
+        * Delete an indexed page
+        * Title should be pre-processed.
+        * STUB
+        *
+        * @param Integer $id Page id that was deleted
+        * @param String $title Title of page that was deleted
+        */
+       function delete( $id, $title ) {
+               // no-op
+       }
+
        /**
         * Get OpenSearch suggestion template
         *
@@ -511,6 +523,20 @@ class SearchEngine {
                        return $wgCanonicalServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace=' . $ns;
                }
        }
+
+       /**
+        * Get the raw text for updating the index from a content object
+        * Nicer search backends could possibly do something cooler than
+        * just returning raw text
+        *
+        * @todo This isn't ideal, we'd really like to have content-specific handling here
+        * @param Title $t Title we're indexing
+        * @param Content $c Content of the page to index
+        * @return string
+        */
+       public function getTextFromContent( Title $t, Content $c = null ) {
+               return $c ? $c->getTextForSearchIndex() : '';
+       }
 }
 
 /**
@@ -803,10 +829,8 @@ class SearchResult {
        protected function initText() {
                if ( !isset( $this->mText ) ) {
                        if ( $this->mRevision != null ) {
-                               //TODO: if we could plug in some code that knows about special content models *and* about
-                               //      special features of the search engine, the search could benefit.
-                               $content = $this->mRevision->getContent();
-                               $this->mText = $content ? $content->getTextForSearchIndex() : '';
+                               $this->mText = SearchEngine::create()
+                                       ->getTextFromContent( $this->mTitle, $this->mRevision->getContent() );
                        } else { // TODO: can we fetch raw wikitext for commons images?
                                $this->mText = '';
                        }
index c219b92..d8c638e 100644 (file)
@@ -369,6 +369,19 @@ class SearchMySQL extends SearchEngine {
                        array( $dbw->lowPriorityOption() ) );
        }
 
+       /**
+        * Delete an indexed page
+        * Title should be pre-processed.
+        *
+        * @param Integer $id Page id that was deleted
+        * @param String $title Title of page that was deleted
+        */
+       function delete( $id, $title ) {
+               $dbw = wfGetDB( DB_MASTER );
+
+               $dbw->delete( 'searchindex', array( 'si_page' => $id ), __METHOD__ );
+       }
+
        /**
         * Converts some characters for MySQL's indexing to grok it correctly,
         * and pads short words to overcome limitations.
index 8c1bda2..7146917 100644 (file)
  * @ingroup Search
  */
 class SearchUpdate implements DeferrableUpdate {
-
-       private $mId = 0, $mNamespace, $mTitle, $mText;
-       private $mTitleWords;
-
-       function __construct( $id, $title, $text = false ) {
+       /**
+        * Page id being updated
+        * @var int
+        */
+       private $id = 0;
+
+       /**
+        * Title we're updating
+        * @var Title
+        */
+       private $title;
+
+       /**
+        * Content of the page (not text)
+        * @var Content|false
+        */
+       private $content;
+
+       /**
+        * Constructor
+        *
+        * @param int $id Page id to update
+        * @param Title|string $title Title of page to update
+        * @param Content|string|false $c Content of the page to update.
+        *  If a Content object, text will be gotten from it. String is for back-compat.
+        *  Passing false tells the backend to just update the title, not the content
+        */
+       public function __construct( $id, $title, $c = false ) {
                if ( is_string( $title ) ) {
                        $nt = Title::newFromText( $title );
                } else {
@@ -41,39 +64,67 @@ class SearchUpdate implements DeferrableUpdate {
                }
 
                if ( $nt ) {
-                       $this->mId = $id;
-                       $this->mText = $text;
-
-                       $this->mNamespace = $nt->getNamespace();
-                       $this->mTitle = $nt->getText(); # Discard namespace
-
-                       $this->mTitleWords = $this->mTextWords = array();
+                       $this->id = $id;
+                       // is_string() check is back-compat for ApprovedRevs
+                       if( is_string( $c ) ) {
+                               $this->content = new TextContent( $c );
+                       } else {
+                               $this->content = $c ?: false;
+                       }
+                       $this->title = $nt;
                } else {
                        wfDebug( "SearchUpdate object created with invalid title '$title'\n" );
                }
        }
 
-       function doUpdate() {
-               global $wgContLang, $wgDisableSearchUpdate;
+       /**
+        * Perform actual update for the entry
+        */
+       public function doUpdate() {
+               global $wgDisableSearchUpdate;
 
-               if ( $wgDisableSearchUpdate || !$this->mId ) {
+               if ( $wgDisableSearchUpdate || !$this->id ) {
                        return;
                }
 
                wfProfileIn( __METHOD__ );
 
                $search = SearchEngine::create();
-               $lc = SearchEngine::legalSearchChars() . '&#;';
+               $normalTitle = $search->normalizeText(
+                       Title::indexTitle( $this->title->getNamespace(), $this->title->getText() ) );
 
-               if ( $this->mText === false ) {
-                       $search->updateTitle( $this->mId,
-                               $search->normalizeText( Title::indexTitle( $this->mNamespace, $this->mTitle ) ) );
+               if ( WikiPage::newFromId( $this->id ) === null ) {
+                       $search->delete( $this->id, $normalTitle );
+                       wfProfileOut( __METHOD__ );
+                       return;
+               } elseif ( $this->content === false ) {
+                       $search->updateTitle( $this->id, $normalTitle );
                        wfProfileOut( __METHOD__ );
                        return;
                }
 
+               $text = $search->getTextFromContent( $this->title, $this->content );
+               if( wfRunHooks( 'SearchUpdate', array( $this->id, $this->title, &$text, $this->content ) ) ) {
+                       $text = self::updateText( $text );
+               }
+
+               # Perform the actual update
+               $search->update( $this->id, $normalTitle, $search->normalizeText( $text ) );
+
+               wfProfileOut( __METHOD__ );
+       }
+
+       /**
+        * Clean text for indexing. Only really suitable for indexing in databases.
+        * If you're using a real search engine, you'll probably want to override
+        * this behavior and do something nicer with the original wikitext.
+        */
+       public static function updateText( $text ) {
+               global $wgContLang;
+
                # Language-specific strip/conversion
-               $text = $wgContLang->normalizeForSearch( $this->mText );
+               $text = $wgContLang->normalizeForSearch( $text );
+               $lc = SearchEngine::legalSearchChars() . '&#;';
 
                wfProfileIn( __METHOD__ . '-regexps' );
                $text = preg_replace( "/<\\/?\\s*[A-Za-z][^>]*?>/",
@@ -123,22 +174,6 @@ class SearchUpdate implements DeferrableUpdate {
                # Strip wiki '' and '''
                $text = preg_replace( "/''[']*/", " ", $text );
                wfProfileOut( __METHOD__ . '-regexps' );
-
-               wfRunHooks( 'SearchUpdate', array( $this->mId, $this->mNamespace, $this->mTitle, &$text ) );
-
-               # Perform the actual update
-               $search->update( $this->mId, $search->normalizeText( Title::indexTitle( $this->mNamespace, $this->mTitle ) ),
-                               $search->normalizeText( $text ) );
-
-               wfProfileOut( __METHOD__ );
+               return $text;
        }
 }
-
-/**
- * Placeholder class
- *
- * @ingroup Search
- */
-class SearchUpdateMyISAM extends SearchUpdate {
-       # Inherits everything
-}
index 21becd6..2f37cb4 100644 (file)
@@ -175,6 +175,7 @@ class SpecialContributions extends SpecialPage {
                                'target' => $target,
                                'contribs' => $this->opts['contribs'],
                                'namespace' => $this->opts['namespace'],
+                               'tagfilter' => $this->opts['tagfilter'],
                                'year' => $this->opts['year'],
                                'month' => $this->opts['month'],
                                'deletedOnly' => $this->opts['deletedOnly'],
index 2ba3c06..ccc2bf2 100644 (file)
@@ -624,7 +624,7 @@ class MovePageForm extends UnlistedSpecialPage {
                $extraOutput = array();
                $count = 1;
                foreach ( $extraPages as $oldSubpage ) {
-                       if ( $ot->equals( $oldSubpage ) ) {
+                       if ( $ot->equals( $oldSubpage ) || $nt->equals( $oldSubpage ) ) {
                                # Already did this one.
                                continue;
                        }
index ae04061..43d4855 100644 (file)
@@ -334,13 +334,6 @@ class SpecialNewpages extends IncludableSpecialPage {
 
                $query = array( 'redirect' => 'no' );
 
-               if( $this->patrollable( $result ) ) {
-                       // Tell Article.php that we want to patrol the first revision
-                       // and not the current one. Has effect if both recentchages and new page
-                       // patrolling are enabled, we set it everytime for link consistency though.
-                       $query['patrolpage'] = 1;
-               }
-
                // Linker::linkKnown() uses 'known' and 'noclasses' options.
                // This breaks the colouration for stubs.
                $plink = Linker::link(
index 1b406d1..6a35aa0 100644 (file)
@@ -592,10 +592,6 @@ class SpecialRecentChanges extends IncludableSpecialPage {
 
                $defaults = $opts->getAllValues();
                $nondefaults = $opts->getChangedValues();
-               $opts->consumeValues( array(
-                       'namespace', 'invert', 'associated', 'tagfilter',
-                       'categories', 'categories_any'
-               ) );
 
                $panel = array();
                $panel[] = $this->optionsPanel( $defaults, $nondefaults );
@@ -664,6 +660,10 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         * @return array
         */
        function getExtraOptions( $opts ) {
+               $opts->consumeValues( array(
+                       'namespace', 'invert', 'associated', 'tagfilter', 'categories', 'categories_any'
+               ) );
+
                $extraOpts = array();
                $extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
 
@@ -677,7 +677,10 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $extraOpts['tagfilter'] = $tagFilter;
                }
 
-               wfRunHooks( 'SpecialRecentChangesPanel', array( &$extraOpts, $opts ) );
+               // Don't fire the hook for subclasses. (Or should we?)
+               if ( $this->getName() === 'Recentchanges' ) {
+                       wfRunHooks( 'SpecialRecentChangesPanel', array( &$extraOpts, $opts ) );
+               }
 
                return $extraOpts;
        }
index 062e09d..4773c4a 100644 (file)
@@ -226,21 +226,21 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
        }
 
        /**
-        * @param $opts FormOptions
+        * Get options to be displayed in a form
+        *
+        * @param FormOptions $opts
         * @return array
         */
        function getExtraOptions( $opts ) {
-               $opts->consumeValues( array( 'showlinkedto', 'target', 'tagfilter' ) );
-               $extraOpts = array();
-               $extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
+               $extraOpts = parent::getExtraOptions( $opts );
+
+               $opts->consumeValues( array( 'showlinkedto', 'target' ) );
+
                $extraOpts['target'] = array( $this->msg( 'recentchangeslinked-page' )->escaped(),
                        Xml::input( 'target', 40, str_replace( '_', ' ', $opts['target'] ) ) .
                        Xml::check( 'showlinkedto', $opts['showlinkedto'], array( 'id' => 'showlinkedto' ) ) . ' ' .
                        Xml::label( $this->msg( 'recentchangeslinked-to' )->text(), 'showlinkedto' ) );
-               $tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
-               if ( $tagFilter ) {
-                       $extraOpts['tagfilter'] = $tagFilter;
-               }
+
                return $extraOpts;
        }
 
index 94995db..8a2163b 100644 (file)
@@ -1183,6 +1183,6 @@ class SpecialSearch extends SpecialPage {
        }
 
        protected function getGroupName() {
-               return 'redirects';
+               return 'pages';
        }
 }
index b147b83..71efefa 100644 (file)
@@ -51,9 +51,6 @@ class LoginForm extends SpecialPage {
        var $mAbortLoginErrorMsg = 'login-abort-generic';
        private $mLoaded = false;
        private $mSecureLoginUrl;
-       // TODO Remove old forms and mShowVForm gating after all WMF wikis have
-       // adapted messages and help links to new versions.
-       private $mShowVForm;
 
        /**
         * @ var WebRequest
@@ -144,17 +141,10 @@ class LoginForm extends SpecialPage {
        }
 
        function getDescription() {
-               if ( !$this->getUser()->isAllowed( 'createaccount' ) ) {
-                       return $this->msg( 'userloginnocreate' )->text();
-               }
-               if ( $this->mShowVForm ) {
-                       if ( $this->mType === 'signup' ) {
-                               return $this->msg( 'createaccount' )->text();
-                       } else {
-                               return $this->msg( 'login' )->text();
-                       }
+               if ( $this->mType === 'signup' ) {
+                       return $this->msg( 'createaccount' )->text();
                } else {
-                       return $this->msg( 'userlogin' )->text();
+                       return $this->msg( 'login' )->text();
                }
        }
 
@@ -173,8 +163,6 @@ class LoginForm extends SpecialPage {
                if ( $subPage == 'signup' ) {
                        $this->mType = 'signup';
                }
-               $this->mShowVForm = $this->shouldShowVForm();
-
                $this->setHeaders();
 
                // If logging in and not on HTTPS, either redirect to it or offer a link.
@@ -1039,22 +1027,6 @@ class LoginForm extends SpecialPage {
                }
        }
 
-       /**
-        * Whether to show new vertically laid out login form.
-        * ?useNew=1 forces new style, ?useNew=0 forces old style,
-        * otherwise consult $wgUseVFormUserLogin.
-        * @return Boolean
-        */
-       private function shouldShowVForm() {
-               global $wgUseVFormCreateAccount, $wgUseVFormUserLogin;
-
-               if ( $this->mType == 'signup' ) {
-                       return $this->mRequest->getBool( 'useNew', $wgUseVFormCreateAccount );
-               } else {
-                       return $this->mRequest->getBool( 'useNew', $wgUseVFormUserLogin );
-               }
-       }
-
        /**
         * @private
         */
@@ -1093,39 +1065,34 @@ class LoginForm extends SpecialPage {
                }
 
                if ( $this->mType == 'signup' ) {
-                       $out->addModules( 'mediawiki.special.userlogin.signup' );
-                       if ( $this->mShowVForm ) {
-                               $template = new UsercreateTemplateVForm();
-                               $out->addModuleStyles( array(
-                                       'mediawiki.ui',
-                                       'mediawiki.special.createaccount.vform'
-                               ) );
-                               // XXX hack pending RL or JS parse() support for complex content messages
-                               // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349
-                               $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
-                                       $this->msg( 'createacct-imgcaptcha-help' )->parse() );
-                               $out->addModules( 'mediawiki.special.createaccount.vform.js' );
-                               // Must match number of benefits defined in messages
-                               $template->set( 'benefitCount', 3 );
-                       } else {
-                               $template = new UsercreateTemplate();
-                       }
+                       $template = new UsercreateTemplate();
+
+                       $out->addModuleStyles( array(
+                               'mediawiki.ui',
+                               'mediawiki.special.createaccount'
+                       ) );
+                       // XXX hack pending RL or JS parse() support for complex content messages
+                       // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349
+                       $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
+                               $this->msg( 'createacct-imgcaptcha-help' )->parse() );
+                       $out->addModules( array(
+                               'mediawiki.special.createaccount.js'
+                       ) );
+                       // Must match number of benefits defined in messages
+                       $template->set( 'benefitCount', 3 );
+
                        $q = 'action=submitlogin&type=signup';
                        $linkq = 'type=login';
-                       $linkmsg = 'gotaccount';
                } else {
-                       if ( $this->mShowVForm ) {
-                               $template = new UserloginTemplateVForm();
-                               $out->addModuleStyles( array(
-                                       'mediawiki.ui',
-                                       'mediawiki.special.userlogin.vform'
-                               ) );
-                       } else {
-                               $template = new UserloginTemplate();
-                       }
+                       $template = new UserloginTemplate();
+
+                       $out->addModuleStyles( array(
+                               'mediawiki.ui',
+                               'mediawiki.special.userlogin'
+                       ) );
+
                        $q = 'action=submitlogin&type=login';
                        $linkq = 'type=signup';
-                       $linkmsg = 'nologin';
                }
 
                if ( $this->mReturnTo !== '' ) {
@@ -1144,17 +1111,8 @@ class LoginForm extends SpecialPage {
                        if ( $wgLoginLanguageSelector && $this->mLanguage ) {
                                $linkq .= '&uselang=' . $this->mLanguage;
                        }
-                       if ( !$this->mShowVForm ) {
-                               $link = Html::element( 'a', array( 'href' => $titleObj->getLocalURL( $linkq ) ),
-                                       $this->msg( $linkmsg . 'link' )->text() ); # Calling either 'gotaccountlink' or 'nologinlink'
-
-                                       $template->set( 'link', $this->msg( $linkmsg )->rawParams( $link )->parse() );
-
-                       } else {
-                               // Supply URL, login template creates the button.
-                               // (The template 'link' key, passed above, is obsolete in the VForm design.)
-                               $template->set( 'createOrLoginHref', $titleObj->getLocalURL( $linkq ) );
-                       }
+                       // Supply URL, login template creates the button.
+                       $template->set( 'createOrLoginHref', $titleObj->getLocalURL( $linkq ) );
                } else {
                        $template->set( 'link', '' );
                }
index f23bc2d..8b24372 100644 (file)
@@ -110,6 +110,17 @@ class UserrightsPage extends SpecialPage {
                }
 
                if ( !$this->userCanChangeRights( $user, true ) ) {
+                       if ( $this->isself && $request->getCheck( 'success' ) ) {
+                               // bug 48609: if the user just removed its own rights, this would
+                               // leads it in a "permissions error" page. In that case, show a
+                               // message that it can't anymore use this page instead of an error
+                               $this->setHeaders();
+                               $out = $this->getOutput();
+                               $out->wrapWikiMsg( "<div class=\"successbox\">\n$1\n</div>", 'userrights-removed-self' );
+                               $out->returnToMain();
+                               return;
+                       }
+
                        // @todo FIXME: There may be intermediate groups we can mention.
                        $msg = $user->isAnon() ? 'userrights-nologin' : 'userrights-notallowed';
                        throw new PermissionsError( null, array( array( $msg ) ) );
@@ -163,7 +174,7 @@ class UserrightsPage extends SpecialPage {
        }
 
        function getSuccessURL() {
-               return $this->getTitle( $this->mTarget )->getFullURL();
+               return $this->getTitle( $this->mTarget )->getFullURL( array( 'success' => 1 ) );
        }
 
        /**
index 28b5d79..c066da9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Html form for account creation.
+ * Html form for account creation (since 1.22 with VForm appearance).
  *
  * 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
  * @ingroup Templates
  */
 
-/**
- * @defgroup Templates Templates
- */
-
 if ( !defined( 'MEDIAWIKI' ) ) {
        die( -1 );
 }
 
-/**
- * @ingroup Templates
- */
-class UsercreateTemplate extends QuickTemplate {
+class UsercreateTemplate extends BaseTemplate {
+
+       /**
+        * Extensions (AntiSpoof and TitleBlacklist) call this in response to
+        * UserCreateForm hook to add checkboxes to the create account form.
+        */
        function addInputItem( $name, $value, $type, $msg, $helptext = false ) {
                $this->data['extraInput'][] = array(
                        'name' => $name,
@@ -44,254 +42,233 @@ class UsercreateTemplate extends QuickTemplate {
        }
 
        function execute() {
-               if ( $this->data['message'] ) {
-?>
-       <div class="<?php $this->text( 'messagetype' ); ?>box">
-<?php
-                       if ( $this->data['messagetype'] == 'error' ) {
-                               ?><strong><?php $this->msg( 'loginerror' ); ?></strong><br /><?php
-                       }
-                       $this->html( 'message' );
-?>
-       </div>
-       <div class="visualClear"></div>
-<?php
-               }
+               global $wgCookieExpiration;
+               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
 ?>
-
-<div id="signupstart"><?php $this->msgWiki( 'signupstart' ); ?></div>
-<div id="userlogin">
-
-<form name="userlogin2" id="userlogin2" method="post" action="<?php $this->text( 'action' ); ?>">
-       <h2><?php $this->msg( 'createaccount' ); ?></h2>
-       <p id="userloginlink"><?php $this->html( 'link' ); ?></p>
-       <?php $this->html( 'header' ); /* pre-table point for form plugins... */ ?>
-<?php
+<div class="mw-ui-container">
+       <?php
        if ( $this->haveData( 'languages' ) ) {
-               ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php
+       ?>
+               <div id="languagelinks">
+                       <p><?php $this->html( 'languages' ); ?></p>
+               </div>
+       <?php
        }
+       ?>
+<div id="userloginForm">
+<h2 class="createaccount-join"><?php $this->msg( 'createacct-join' ); ?></h2>
+<form name="userlogin2" id="userlogin2" class="mw-ui-vform" method="post" action="<?php $this->text( 'action' ); ?>">
+       <section class="mw-form-header">
+               <?php $this->html( 'header' ); /* extensions such as ConfirmEdit add form HTML here */ ?>
+       </section>
+       <?php
+       if ( $this->data['message'] ) {
 ?>
-       <table>
-               <tr>
-                       <td class="mw-label"><label for='wpName2'><?php $this->msg( 'yourname' ); ?></label></td>
-                       <td class="mw-input">
-                               <?php
-                       echo Html::input( 'wpName', $this->data['name'], 'text', array(
-                               'class' => 'loginText',
+               <div class="<?php $this->text( 'messagetype' ); ?>box">
+               <?php if ( $this->data['messagetype'] == 'error' ) { ?>
+                       <strong><?php $this->msg( 'createacct-error' ); ?></strong><br />
+               <?php } ?>
+               <?php $this->html( 'message' ); ?>
+               </div>
+       <?php } ?>
+               <div>
+                       <label for='wpName2'>
+                               <?php $this->msg( 'userlogin-yourname' ); ?>
+
+                               <span class="mw-ui-flush-right"><?php echo $this->getMsg( 'createacct-helpusername' )->parse(); ?></span>
+                       </label>
+                       <?php echo Html::input( 'wpName', $this->data['name'], 'text', array(
+                               'class' => 'mw-input loginText',
                                'id' => 'wpName2',
                                'tabindex' => '1',
                                'size' => '20',
                                'required',
+                               'placeholder' => $this->getMsg( 'userlogin-yourname-ph' )->text(),
                                'autofocus'
                        ) ); ?>
-                       </td>
-               </tr>
-               <tr>
-                       <td></td>
-                       <td class="mw-input">
-<?php
-                               if ( $this->data['createemail'] ) {
-                                       echo Xml::checkLabel(
-                                               wfMessage( 'createaccountmail' )->text(),
-                                               'wpCreateaccountMail',
-                                               'wpCreateaccountMail',
-                                               $this->data['createemailset'],
-                                               array( 'tabindex' => '2' )
-                                       );
-                               }
-?>
-                       </td>
-               </tr>
-               <tr class="mw-row-password">
-                       <td class="mw-label"><label for='wpPassword2'><?php $this->msg( 'yourpassword' ); ?></label></td>
-                       <td class="mw-input">
-<?php
-                       echo Html::input( 'wpPassword', null, 'password', array(
-                               'class' => 'loginPassword',
+               </div>
+               <div>
+               <?php if ( $this->data['createemail'] ) { ?>
+                       <label class="mw-ui-checkbox-label">
+                               <input name="wpCreateaccountMail" type="checkbox" value="1" id="wpCreateaccountMail" tabindex="2"
+                                       <?php if ( $this->data['createemailset'] ) {
+                                               echo 'checked="checked"';
+                                       } ?>
+                               >
+                               <?php $this->msg( 'createaccountmail' ); ?>
+                       </label>
+               <?php } ?>
+               </div>
+               <div class="mw-row-password">
+                       <label for='wpPassword2'><?php $this->msg( 'userlogin-yourpassword' ); ?></label>
+                       <?php echo Html::input( 'wpPassword', null, 'password', array(
+                               'class' => 'mw-input loginPassword',
                                'id' => 'wpPassword2',
                                'tabindex' => '3',
-                               'size' => '20'
+                               'size' => '20',
+                               'required',
+                               'placeholder' => $this->getMsg( 'createacct-yourpassword-ph' )->text()
                        ) + User::passwordChangeInputAttribs() ); ?>
-                       </td>
-               </tr>
-<?php
-               if ( $this->data['usedomain'] ) {
+               </div>
+       <?php if ( $this->data['usedomain'] ) {
                $doms = "";
                foreach ( $this->data['domainnames'] as $dom ) {
                        $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
                }
-?>
-               <tr id="mw-user-domain-section">
-                       <td class="mw-label"><?php $this->msg( 'yourdomainname' ); ?></td>
-                       <td class="mw-input">
+       ?>
+               <div id="mw-user-domain-section">
+                       <label for="wpDomain"><?php $this->msg( 'yourdomainname' ); ?></label>
+                       <div class="mw-input">
                                <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>"
                                        tabindex="4">
                                        <?php echo $doms ?>
                                </select>
-                       </td>
-               </tr>
-<?php
-               }
-?>
-               <tr class="mw-row-password">
-                       <td class="mw-label"><label for='wpRetype'><?php $this->msg( 'yourpasswordagain' ); ?></label></td>
-                       <td class="mw-input">
-                               <?php
-               echo Html::input( 'wpRetype', null, 'password', array(
-                       'class' => 'loginPassword',
-                       'id' => 'wpRetype',
-                       'tabindex' => '5',
-                       'size' => '20'
-               ) + User::passwordChangeInputAttribs() ); ?>
-                       </td>
-               </tr>
-               <tr>
-<?php
-               if ( $this->data['useemail'] ) {
-?>
-                               <td class="mw-label"><label for='wpEmail'><?php $this->msg( 'youremail' ); ?></label></td>
-                               <td class="mw-input">
-                                       <?php
-               echo Html::input( 'wpEmail', $this->data['email'], 'email', array(
-                       'class' => 'loginText',
-                       'id' => 'wpEmail',
-                       'tabindex' => '6',
-                       'size' => '20'
-               ) ); ?>
-                                       <div class="prefsectiontip">
-                                               <?php  // duplicated in Preferences.php profilePreferences()
-                                                       if ( $this->data['emailrequired'] ) {
-                                                               $this->msgWiki( 'prefs-help-email-required' );
-                                                       } else {
-                                                               $this->msgWiki( 'prefs-help-email' );
-                                                       }
-                                                       if ( $this->data['emailothers'] ) {
-                                                               $this->msgWiki( 'prefs-help-email-others' );
-                                                       } ?>
-                                       </div>
-                               </td>
-<?php
-               }
-
-               if ( $this->data['userealname'] ) {
-?>
-                               </tr>
-                               <tr>
-                                       <td class="mw-label"><label for='wpRealName'><?php $this->msg( 'yourrealname' ); ?></label></td>
-                                       <td class="mw-input">
-                                               <input type='text' class='loginText' name="wpRealName" id="wpRealName"
-                                                       tabindex="7"
-                                                       value="<?php $this->text( 'realname' ); ?>" size='20' />
-                                               <div class="prefsectiontip">
-                                                       <?php $this->msgWiki( 'prefs-help-realname' ); ?>
-                                               </div>
-                                       </td>
-<?php
-               }
-
-               if ( $this->data['usereason'] ) {
-?>
-                               </tr>
-                               <tr>
-                                       <td class="mw-label"><label for='wpReason'><?php $this->msg( 'createaccountreason' ); ?></label></td>
-                                       <td class="mw-input">
-                                               <input type='text' class='loginText' name="wpReason" id="wpReason"
-                                                       tabindex="8"
-                                                       value="<?php $this->text( 'reason' ); ?>" size='20' />
-                                       </td>
-<?php
-               }
-?>
-               </tr>
-<?php
-               if ( $this->data['canremember'] ) {
-?>
-               <tr>
-                       <td></td>
-                       <td class="mw-input">
+                       </div>
+               </div>
+       <?php } ?>
+               <div class="mw-row-password">
+                       <label for='wpRetype'><?php $this->msg( 'createacct-yourpasswordagain' ); ?></label>
+                       <?php
+                       echo Html::input( 'wpRetype', null, 'password', array(
+                               'class' => 'mw-input loginPassword',
+                               'id' => 'wpRetype',
+                               'tabindex' => '5',
+                               'size' => '20',
+                               'required',
+                               'placeholder' => $this->getMsg( 'createacct-yourpasswordagain-ph' )->text()
+                               ) + User::passwordChangeInputAttribs() );
+                       ?>
+               </div>
+               <div>
+               <?php if ( $this->data['useemail'] ) { ?>
+                       <label for='wpEmail'>
                                <?php
-                               global $wgCookieExpiration;
-                               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
-                               echo Xml::checkLabel(
-                                       wfMessage( 'remembermypassword' )->numParams( $expirationDays )->text(),
-                                       'wpRemember',
-                                       'wpRemember',
-                                       $this->data['remember'],
-                                       array( 'tabindex' => '9' )
-                               )
+                                       $this->msg( $this->data['emailrequired'] ?
+                                               'createacct-emailrequired' :
+                                               'createacct-emailoptional'
+                                       );
                                ?>
-                       </td>
-               </tr>
-<?php
-               }
-
-               $tabIndex = 10;
+                       </label>
+                       <?php
+                               echo Html::input( 'wpEmail', $this->data['email'], 'email', array(
+                                       'class' => 'mw-input loginText',
+                                       'id' => 'wpEmail',
+                                       'tabindex' => '6',
+                                       'size' => '20',
+                                       'placeholder' => $this->getMsg( 'createacct-email-ph' )->text()
+                               ) + ( $this->data['emailrequired'] ? array() : array( 'required' => '' ) ) );
+                       ?>
+               <?php } ?>
+               </div>
+               <?php if ( $this->data['userealname'] ) { ?>
+                       <div>
+                               <label for='wpRealName'><?php $this->msg( 'createacct-realname' ); ?></label>
+                               <input type='text' class='mw-input loginText' name="wpRealName" id="wpRealName"
+                                       tabindex="7"
+                                       value="<?php $this->text( 'realname' ); ?>" size='20' />
+                               <div class="prefsectiontip">
+                                       <?php $this->msgWiki( 'prefs-help-realname' ); ?>
+                               </div>
+                       </div>
+               <?php }
+               if ( $this->data['usereason'] ) { ?>
+                       <div>
+                               <label for='wpReason'><?php $this->msg( 'createacct-reason' ); ?></label>
+                               <?php echo Html::input( 'wpReason', $this->data['reason'], 'text', array(
+                                       'class' => 'mw-input loginText',
+                                       'id' => 'wpReason',
+                                       'tabindex' => '8',
+                                       'size' => '20',
+                                       'placeholder' => $this->getMsg( 'createacct-reason-ph' )->text()
+                               ) ); ?>
+                       </div>
+               <?php }
+               $tabIndex = 9;
                if ( isset( $this->data['extraInput'] ) && is_array( $this->data['extraInput'] ) ) {
                        foreach ( $this->data['extraInput'] as $inputItem ) { ?>
-               <tr>
-                       <?php
-                               if ( !empty( $inputItem['msg'] ) && $inputItem['type'] != 'checkbox' ) {
-                                       ?><td class="mw-label"><label for="<?php
-                                       echo htmlspecialchars( $inputItem['name'] ); ?>"><?php
-                                       $this->msgWiki( $inputItem['msg'] ); ?></label><?php
-                               } else {
-                                       ?><td><?php
-                               }
-                       ?></td>
-                       <td class="mw-input">
-                               <input type="<?php echo htmlspecialchars( $inputItem['type'] ); ?>" name="<?php
-                               echo htmlspecialchars( $inputItem['name'] ); ?>"
-                                       tabindex="<?php echo $tabIndex++; ?>"
-                                       value="<?php
-                               if ( $inputItem['type'] != 'checkbox' ) {
-                                       echo htmlspecialchars( $inputItem['value'] );
+                       <div>
+                               <?php
+                               // If it's a checkbox, output the whole thing (assume it has a msg).
+                               if ( $inputItem['type'] == 'checkbox' ) {
+                               ?>
+                                       <label class="mw-ui-checkbox-label">
+                                               <input
+                                                       name="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
+                                                       id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
+                                                       type="checkbox" value="1"
+                                                       tabindex="<?php echo $tabIndex++; ?>"
+                                                       <?php if ( !empty( $inputItem['value'] ) ) {
+                                                               echo 'checked="checked"';
+                                                       } ?>
+                                               >
+                                               <?php $this->msg( $inputItem['msg'] ); ?>
+                                       </label>
+                               <?php
                                } else {
-                                       echo '1';
-                               }
-                                       ?>" id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
+                                       // Not a checkbox.
+                                       // TODO (bug 31909) support other input types, e.g. select boxes.
+                                       if ( !empty( $inputItem['msg'] ) ) {
+                                               // Output the message label
+                                       ?>
+                                               <label for="<?php echo htmlspecialchars( $inputItem['name'] ); ?>">
+                                                       <?php $this->msgWiki( $inputItem['msg'] ); ?>
+                                               </label>
                                        <?php
-                               if ( $inputItem['type'] == 'checkbox' && !empty( $inputItem['value'] ) ) {
-                                       echo 'checked="checked"';
-                               }
-                                       ?> /> <?php
-                                       if ( $inputItem['type'] == 'checkbox' && !empty( $inputItem['msg'] ) ) {
-                                               ?>
-                               <label for="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"><?php
-                                       $this->msgHtml( $inputItem['msg'] ); ?></label><?php
                                        }
+                                       ?>
+                                       <input
+                                               type="<?php echo htmlspecialchars( $inputItem['type'] ); ?>"
+                                               class="mw-input"
+                                               name="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
+                                               tabindex="<?php echo $tabIndex++; ?>"
+                                               value="<?php echo htmlspecialchars( $inputItem['value'] ); ?>"
+                                               id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
+                                       />
+                               <?php
+                               }
                                if ( $inputItem['helptext'] !== false ) {
                                ?>
-                               <div class="prefsectiontip">
-                                       <?php $this->msgWiki( $inputItem['helptext'] ); ?>
-                               </div><?php
+                                       <div class="prefsectiontip">
+                                               <?php $this->msgWiki( $inputItem['helptext'] ); ?>
+                                       </div>
+                               <?php
                                }
                                ?>
-                       </td>
-               </tr>
-<?php
+                               </div>
+                       <?php
                        }
                }
-?>
-               <tr>
-                       <td></td>
-                       <td class="mw-submit">
-                               <input type='submit' name="wpCreateaccount" id="wpCreateaccount"
-                                       tabindex="<?php echo $tabIndex++; ?>"
-                                       value="<?php $this->msg( 'createaccount' ); ?>" />
-                       </td>
-               </tr>
-       </table>
-<?php
-       if ( $this->haveData( 'uselang' ) ) {
-               ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php
-       }
-       if ( $this->haveData( 'token' ) ) {
-               ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php
-       }
-?>
+               // JS attempts to move the image CAPTCHA below this part of the form,
+               // so skip one index.
+               $tabIndex++;
+               ?>
+               <div class="mw-submit">
+                       <input type='submit' class="mw-ui-button mw-ui-big mw-ui-block mw-ui-primary" name="wpCreateaccount" id="wpCreateaccount"
+                               tabindex="<?php echo $tabIndex++; ?>"
+                               value="<?php $this->msg( 'createacct-submit' ); ?>" />
+               </div>
+<?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
+<?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
 </form>
 </div>
-<div id="signupend"><?php $this->html( 'signupend' ); ?></div>
+<div class="mw-createacct-benefits-container">
+       <h2><?php $this->msg( 'createacct-benefit-heading' ); ?></h2>
+       <div class="mw-createacct-benefits-list">
+       <?php
+       for ( $benefitIdx = 1; $benefitIdx <= $this->data['benefitCount']; $benefitIdx++ ) {
+               // Pass each benefit's head text (by default a number) as a parameter to the body's message for PLURAL handling.
+               $headUnescaped = $this->getMsg( "createacct-benefit-head$benefitIdx" )->text();
+       ?>
+               <div class="mw-number-text <?php $this->msg( "createacct-benefit-icon$benefitIdx" ); ?>">
+                       <h3><?php $this->msg( "createacct-benefit-head$benefitIdx" ); ?></h3>
+                       <p><?php echo $this->getMsg( "createacct-benefit-body$benefitIdx" )->params( $headUnescaped )->escaped(); ?></p>
+               </div>
+       <?php
+       }
+       ?>
+       </div>
+</div>
+</div>
 <?php
 
        }
diff --git a/includes/templates/UsercreateVForm.php b/includes/templates/UsercreateVForm.php
deleted file mode 100644 (file)
index 2f90d3c..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-<?php
-/**
- * Html form for account creation with new VForm appearance.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Templates
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
-       die( -1 );
-}
-
-/**
- * Html form for create account with new VForm appearance.
- *
- * @since 1.22
- */
-class UsercreateTemplateVForm extends BaseTemplate {
-
-       /**
-        * Extensions (AntiSpoof and TitleBlacklist) call this in response to
-        * UserCreateForm hook to add checkboxes to the create account form.
-        */
-       function addInputItem( $name, $value, $type, $msg, $helptext = false ) {
-               $this->data['extraInput'][] = array(
-                       'name' => $name,
-                       'value' => $value,
-                       'type' => $type,
-                       'msg' => $msg,
-                       'helptext' => $helptext,
-               );
-       }
-
-       function execute() {
-               global $wgCookieExpiration;
-               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
-?>
-<div class="mw-ui-container">
-       <?php
-       if ( $this->haveData( 'languages' ) ) {
-       ?>
-               <div id="languagelinks">
-                       <p><?php $this->html( 'languages' ); ?></p>
-               </div>
-       <?php
-       }
-       ?>
-<div id="userloginForm">
-<h2 class="createaccount-join"><?php $this->msg( 'createacct-join' ); ?></h2>
-<form name="userlogin2" id="userlogin2" class="mw-ui-vform" method="post" action="<?php $this->text( 'action' ); ?>">
-       <section class="mw-form-header">
-               <?php $this->html( 'header' ); /* extensions such as ConfirmEdit add form HTML here */ ?>
-       </section>
-       <?php
-       if ( $this->data['message'] ) {
-?>
-               <div class="<?php $this->text( 'messagetype' ); ?>box">
-               <?php if ( $this->data['messagetype'] == 'error' ) { ?>
-                       <strong><?php $this->msg( 'createacct-error' ); ?></strong><br />
-               <?php } ?>
-               <?php $this->html( 'message' ); ?>
-               </div>
-       <?php } ?>
-               <div>
-                       <label for='wpName2'>
-                               <?php $this->msg( 'userlogin-yourname' ); ?>
-
-                               <span class="mw-ui-flush-right"><?php echo $this->getMsg( 'createacct-helpusername' )->parse(); ?></span>
-                       </label>
-                       <?php echo Html::input( 'wpName', $this->data['name'], 'text', array(
-                               'class' => 'mw-input loginText',
-                               'id' => 'wpName2',
-                               'tabindex' => '1',
-                               'size' => '20',
-                               'required',
-                               'placeholder' => $this->getMsg( 'userlogin-yourname-ph' )->text(),
-                               'autofocus'
-                       ) ); ?>
-               </div>
-               <div>
-               <?php if ( $this->data['createemail'] ) { ?>
-                       <label class="mw-ui-checkbox-label">
-                               <input name="wpCreateaccountMail" type="checkbox" value="1" id="wpCreateaccountMail" tabindex="2"
-                                       <?php if ( $this->data['createemailset'] ) {
-                                               echo 'checked="checked"';
-                                       } ?>
-                               >
-                               <?php $this->msg( 'createaccountmail' ); ?>
-                       </label>
-               <?php } ?>
-               </div>
-               <div class="mw-row-password">
-                       <label for='wpPassword2'><?php $this->msg( 'userlogin-yourpassword' ); ?></label>
-                       <?php echo Html::input( 'wpPassword', null, 'password', array(
-                               'class' => 'mw-input loginPassword',
-                               'id' => 'wpPassword2',
-                               'tabindex' => '3',
-                               'size' => '20',
-                               'required',
-                               'placeholder' => $this->getMsg( 'createacct-yourpassword-ph' )->text()
-                       ) + User::passwordChangeInputAttribs() ); ?>
-               </div>
-       <?php if ( $this->data['usedomain'] ) {
-               $doms = "";
-               foreach ( $this->data['domainnames'] as $dom ) {
-                       $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
-               }
-       ?>
-               <div>
-                       <label><?php $this->msg( 'yourdomainname' ); ?></label>
-                       <div class="mw-input">
-                               <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>"
-                                       tabindex="4">
-                                       <?php echo $doms ?>
-                               </select>
-                       </div>
-               </div>
-       <?php } ?>
-               <div class="mw-row-password">
-                       <label for='wpRetype'><?php $this->msg( 'createacct-yourpasswordagain' ); ?></label>
-                       <?php
-                       echo Html::input( 'wpRetype', null, 'password', array(
-                               'class' => 'mw-input loginPassword',
-                               'id' => 'wpRetype',
-                               'tabindex' => '5',
-                               'size' => '20',
-                               'required',
-                               'placeholder' => $this->getMsg( 'createacct-yourpasswordagain-ph' )->text()
-                               ) + User::passwordChangeInputAttribs() );
-                       ?>
-               </div>
-               <div>
-               <?php if ( $this->data['useemail'] ) { ?>
-                       <label for='wpEmail'>
-                               <?php
-                                       $this->msg( $this->data['emailrequired'] ?
-                                               'createacct-emailrequired' :
-                                               'createacct-emailoptional'
-                                       );
-                               ?>
-                       </label>
-                       <?php
-                               echo Html::input( 'wpEmail', $this->data['email'], 'email', array(
-                                       'class' => 'mw-input loginText',
-                                       'id' => 'wpEmail',
-                                       'tabindex' => '6',
-                                       'size' => '20',
-                                       'placeholder' => $this->getMsg( 'createacct-email-ph' )->text()
-                               ) + ( $this->data['emailrequired'] ? array() : array( 'required' => '' ) ) );
-                       ?>
-                       <?php
-                       // VForm eliminates the prefsectiontip div tip:
-                       // prefs-help-email-required is redundant with the placeholder text
-                       // Doesn't show the wordy prefs-help-email
-                       // Doesn't show the wordy prefs-help-email-others
-                       ?>
-               <?php } ?>
-               </div>
-               <?php if ( $this->data['userealname'] ) { ?>
-                       <div>
-                               <label for='wpRealName'><?php $this->msg( 'createacct-realname' ); ?></label>
-                               <input type='text' class='mw-input loginText' name="wpRealName" id="wpRealName"
-                                       tabindex="7"
-                                       value="<?php $this->text( 'realname' ); ?>" size='20' />
-                               <div class="prefsectiontip">
-                                       <?php $this->msgWiki( 'prefs-help-realname' ); ?>
-                               </div>
-                       </div>
-               <?php }
-               if ( $this->data['usereason'] ) { ?>
-                       <div>
-                               <label for='wpReason'><?php $this->msg( 'createacct-reason' ); ?></label>
-                               <?php echo Html::input( 'wpReason', $this->data['reason'], 'text', array(
-                                       'class' => 'mw-input loginText',
-                                       'id' => 'wpReason',
-                                       'tabindex' => '8',
-                                       'size' => '20',
-                                       'placeholder' => $this->getMsg( 'createacct-reason-ph' )->text()
-                               ) ); ?>
-                       </div>
-               <?php }
-               $tabIndex = 9;
-               if ( isset( $this->data['extraInput'] ) && is_array( $this->data['extraInput'] ) ) {
-                       foreach ( $this->data['extraInput'] as $inputItem ) { ?>
-                       <div>
-                               <?php
-                               // If it's a checkbox, output the whole thing (assume it has a msg).
-                               if ( $inputItem['type'] == 'checkbox' ) {
-                               ?>
-                                       <label class="mw-ui-checkbox-label">
-                                               <input
-                                                       name="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
-                                                       id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
-                                                       type="checkbox" value="1"
-                                                       tabindex="<?php echo $tabIndex++; ?>"
-                                                       <?php if ( !empty( $inputItem['value'] ) ) {
-                                                               echo 'checked="checked"';
-                                                       } ?>
-                                               >
-                                               <?php $this->msg( $inputItem['msg'] ); ?>
-                                       </label>
-                               <?php
-                               } else {
-                                       // Not a checkbox.
-                                       if ( !empty( $inputItem['msg'] ) ) {
-                                               // Output the message label
-                                       ?>
-                                               <label for="<?php echo htmlspecialchars( $inputItem['name'] ); ?>">
-                                                       <?php $this->msgWiki( $inputItem['msg'] ); ?>
-                                               </label>
-                                       <?php
-                                       }
-                                       ?>
-                                       <input
-                                               type="<?php echo htmlspecialchars( $inputItem['type'] ); ?>"
-                                               class="mw-input"
-                                               name="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
-                                               tabindex="<?php echo $tabIndex++; ?>"
-                                               value="<?php echo htmlspecialchars( $inputItem['value'] ); ?>"
-                                               id="<?php echo htmlspecialchars( $inputItem['name'] ); ?>"
-                                       />
-                               <?php
-                               }
-                               if ( $inputItem['helptext'] !== false ) {
-                               ?>
-                                       <div class="prefsectiontip">
-                                               <?php $this->msgWiki( $inputItem['helptext'] ); ?>
-                                       </div>
-                               <?php
-                               }
-                               ?>
-                               </div>
-                       <?php
-                       }
-               }
-               // JS attempts to move the image CAPTCHA below this part of the form,
-               // so skip one index.
-               $tabIndex++;
-               ?>
-               <div class="mw-submit">
-                       <input type='submit' class="mw-ui-button mw-ui-big mw-ui-block mw-ui-primary" name="wpCreateaccount" id="wpCreateaccount"
-                               tabindex="<?php echo $tabIndex++; ?>"
-                               value="<?php $this->msg( 'createacct-submit' ); ?>" />
-               </div>
-       <input type="hidden" id="useNew" name="useNew" value="1" />
-<?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
-<?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
-</form>
-</div>
-<div class="mw-createacct-benefits-container">
-       <h2><?php $this->msg( 'createacct-benefit-heading' ); ?></h2>
-       <div class="mw-createacct-benefits-list">
-       <?php
-       for ( $benefitIdx = 1; $benefitIdx <= $this->data['benefitCount']; $benefitIdx++ ) {
-               // Pass each benefit's head text (by default a number) as a parameter to the body's message for PLURAL handling.
-               $headUnescaped = $this->getMsg( "createacct-benefit-head$benefitIdx" )->text();
-       ?>
-               <div class="mw-number-text <?php $this->msg( "createacct-benefit-icon$benefitIdx" ); ?>">
-                       <h3><?php $this->msg( "createacct-benefit-head$benefitIdx" ); ?></h3>
-                       <p><?php echo $this->getMsg( "createacct-benefit-body$benefitIdx" )->params( $headUnescaped )->escaped(); ?></p>
-               </div>
-       <?php
-       }
-       ?>
-       </div>
-</div>
-</div>
-<?php
-
-       }
-}
index 8c937a7..b9825a6 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Html form for user login.
+ * Html form for user login (since 1.22 with VForm appearance).
  *
  * 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
  * @ingroup Templates
  */
 
-/**
- * @defgroup Templates Templates
- */
+class UserloginTemplate extends BaseTemplate {
 
-/**
- * HTML template for Special:Userlogin form
- * @ingroup Templates
- */
-class UserloginTemplate extends QuickTemplate {
        function execute() {
-               if ( $this->data['message'] ) {
+               global $wgCookieExpiration;
+               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
 ?>
-       <div class="<?php $this->text( 'messagetype' ); ?>box">
+<div class="mw-ui-container">
+       <?php
+       if ( $this->haveData( 'languages' ) ) {
+       ?>
+               <div id="languagelinks">
+                       <p><?php $this->html( 'languages' ); ?></p>
+               </div>
+       <?php
+       }
+       ?>
+<div id="userloginForm">
+<form name="userlogin" class="mw-ui-vform" method="post" action="<?php $this->text( 'action' ); ?>">
+       <section class="mw-form-header">
+               <?php $this->html( 'header' ); /* extensions such as ConfirmEdit add form HTML here */ ?>
+       </section>
+       <?php
+
+       if ( $this->data['message'] ) {
+       ?>
+               <div class="<?php $this->text( 'messagetype' ); ?>box">
                <?php
                if ( $this->data['messagetype'] == 'error' ) {
-                       ?><strong><?php $this->msg( 'loginerror' ); ?></strong><br /><?php
-               }
                ?>
-               <?php $this->html( 'message' ); ?>
-       </div>
-       <div class="visualClear"></div><?php
-
-               }
-?>
-<div id="loginstart"><?php $this->msgWiki( 'loginstart' ); ?></div>
-<div id="userloginForm">
-<form name="userlogin" method="post" action="<?php $this->text( 'action' ); ?>">
-       <h2><?php $this->msg( 'login' ); ?></h2>
-       <p id="userloginlink"><?php $this->html( 'link' ); ?></p>
-       <?php $this->html( 'header' ); /* pre-table point for form plugins... */ ?>
-       <div id="userloginprompt"><?php  $this->msgWiki( 'loginprompt' ); ?></div>
-<?php
-               if ( $this->haveData( 'languages' ) ) {
-                       ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php
+                       <strong><?php $this->msg( 'loginerror' ) ?></strong><br />
+               <?php
                }
-?>
-       <table>
-               <tr>
-                       <td class="mw-label"><label for='wpName1'><?php $this->msg( 'yourname' ); ?></label></td>
-                       <td class="mw-input">
+               $this->html( 'message' );
+               ?>
+               </div>
+       <?php
+       }
+       ?>
+               <div>
+                       <label for='wpName1'>
                                <?php
+                               $this->msg( 'userlogin-yourname' );
+                               if ( $this->data['secureLoginUrl'] ) {
+                                       echo Html::element( 'a', array(
+                                                       'href' => $this->data['secureLoginUrl'],
+                                                       'class' => 'mw-ui-flush-right mw-secure',
+                                               ), $this->getMsg( 'userlogin-signwithsecure' )->text() );
+                               } ?>
+                       </label>
+                       <?php
+                       $extraAttrs = array();
+                       // Set focus to this field if its blank.
+                       if ( !$this->data['name'] ) {
+                               $extraAttrs['autofocus'] = '';
+                       }
                        echo Html::input( 'wpName', $this->data['name'], 'text', array(
                                'class' => 'loginText',
                                'id' => 'wpName1',
                                'tabindex' => '1',
                                'size' => '20',
-                               'required'
-                               # Can't do + array( 'autofocus' ) because + for arrays in PHP
-                               # only works right for associative arrays!  Thanks, PHP.
-                       ) + ( $this->data['name'] ? array() : array( 'autofocus' => '' ) ) ); ?>
+                               // 'required' is blacklisted for now in Html.php due to browser issues.
+                               // Keeping here in case that changes
+                               'required',
+                               'placeholder' => $this->getMsg( 'userlogin-yourname-ph' )->text()
+                       ) + $extraAttrs );
+                       ?>
+               </div>
+               <div>
+                       <label for='wpPassword1'>
+                       <?php
+                       $this->msg( 'userlogin-yourpassword' );
 
-                       </td>
-               </tr>
-               <tr>
-                       <td class="mw-label"><label for='wpPassword1'><?php $this->msg( 'yourpassword' ); ?></label></td>
-                       <td class="mw-input">
-                               <?php
+                       if ( $this->data['useemail'] && $this->data['canreset'] && $this->data['resetlink'] === true ) {
+                               echo Linker::link(
+                                       SpecialPage::getTitleFor( 'PasswordReset' ),
+                                       $this->getMsg( 'userlogin-resetpassword-link' )->parse(),
+                                       array( 'class' => 'mw-ui-flush-right' )
+                                       );
+                       }
+                       ?>
+                       </label>
+                       <?php
+                       $extraAttrs = array();
+                       // Set focus to this field if username is filled in.
+                       if ( $this->data['name'] ) {
+                               $extraAttrs['autofocus'] = '';
+                       }
                        echo Html::input( 'wpPassword', null, 'password', array(
                                'class' => 'loginPassword',
                                'id' => 'wpPassword1',
                                'tabindex' => '2',
-                               'size' => '20'
-                       ) + ( $this->data['name'] ? array( 'autofocus' ) : array() ) ); ?>
-
-                       </td>
-               </tr>
-<?php
-               if ( isset( $this->data['usedomain'] ) && $this->data['usedomain'] ) {
+                               'size' => '20',
+                               'placeholder' => $this->getMsg( 'userlogin-yourpassword-ph' )->text()
+                       ) + $extraAttrs );
+                       ?>
+               </div>
+       <?php
+       if ( isset( $this->data['usedomain'] ) && $this->data['usedomain'] ) {
                $doms = "";
                foreach ( $this->data['domainnames'] as $dom ) {
                        $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
                }
-?>
-               <tr id="mw-user-domain-section">
-                       <td class="mw-label"><?php $this->msg( 'yourdomainname' ) ?></td>
-                       <td class="mw-input">
-                               <select name="wpDomain" value="<?php $this->text( 'domain' ) ?>"
+       ?>
+               <div id="mw-user-domain-section">
+                       <label for='wpDomain'><?php $this->msg( 'yourdomainname' ); ?></label>
+                               <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>"
                                        tabindex="3">
                                        <?php echo $doms ?>
                                </select>
-                       </td>
-               </tr>
-<?php
-               }
+               </div>
+       <?php }
 
-               if ( $this->haveData( 'extrafields' ) ) {
-                       echo $this->data['extrafields'];
-               }
+       if ( $this->haveData( 'extrafields' ) ) {
+               echo $this->data['extrafields'];
+       } ?>
 
-               if ( $this->data['canremember'] ) {
-?>
-               <tr>
-                       <td></td>
-                       <td class="mw-input">
-                               <?php
-                               global $wgCookieExpiration;
-                               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
-                               echo Xml::checkLabel(
-                                       wfMessage( 'remembermypassword' )->numParams( $expirationDays )->text(),
-                                       'wpRemember',
-                                       'wpRemember',
-                                       $this->data['remember'],
-                                       array( 'tabindex' => '8' )
-                               )
-                               ?>
-                       </td>
-               </tr>
-<?php
-               }
+               <div>
 
-               if ( $this->data['cansecurelogin'] ) {
-?>
-               <tr>
-                       <td></td>
-                       <td class="mw-input">
-                       <?php
-                       echo Xml::checkLabel(
-                               wfMessage( 'securelogin-stick-https' )->text(),
-                               'wpStickHTTPS',
-                               'wpStickHTTPS',
-                               $this->data['stickHTTPS'],
-                               array( 'tabindex' => '9' )
-                       );
-?>
-                       </td>
-               </tr>
-<?php
-               }
-?>
-               <tr>
-                       <td></td>
-                       <td class="mw-submit">
+       <?php if ( $this->data['canremember'] ) { ?>
+               <label class="mw-ui-checkbox-label">
+                       <input name="wpRemember" type="checkbox" value="1" id="wpRemember" tabindex="4"
+                               <?php if ( $this->data['remember'] ) {
+                                       echo 'checked="checked"';
+                               } ?>
+                       >
+                       <?php echo $this->getMsg( 'userlogin-remembermypassword' )->numParams( $expirationDays )->escaped(); ?>
+               </label>
+       <?php } ?>
+               </div>
+
+       <?php if ( $this->data['cansecurelogin'] ) { ?>
+               <div>
+                       <label class="mw-ui-checkbox-label">
+                               <input name="wpStickHTTPS" type="checkbox" value="1" id="wpStickHTTPS" tabindex="5"
+                                       <?php if ( $this->data['stickHTTPS'] ) {
+                                               echo 'checked="checked"';
+                                       } ?>
+                               >
+                               <?php $this->msg( 'securelogin-stick-https' ); ?>
+                       </label>
+               </div>
+       <?php } ?>
+               <div>
                        <?php
-                       echo Html::input( 'wpLoginAttempt', wfMessage( 'login' )->text(), 'submit', array(
+                       echo Html::input( 'wpLoginAttempt', $this->getMsg( 'login' )->text(), 'submit', array(
                                'id' => 'wpLoginAttempt',
-                               'tabindex' => '9'
+                               'tabindex' => '6',
+                               'class' => 'mw-ui-button mw-ui-big mw-ui-block mw-ui-primary'
                        ) );
-               if ( $this->data['useemail'] && $this->data['canreset'] ) {
-                       if ( $this->data['resetlink'] === true ) {
-                               echo '&#160;';
-                               echo Linker::link(
-                                       SpecialPage::getTitleFor( 'PasswordReset' ),
-                                       wfMessage( 'userlogin-resetlink' )
-                               );
-                       } elseif ( $this->data['resetlink'] === null ) {
-                               echo '&#160;';
-                               echo Html::input(
-                                       'wpMailmypassword',
-                                       wfMessage( 'mailmypassword' )->text(),
-                                       'submit', array(
-                                               'id' => 'wpMailmypassword',
-                                               'tabindex' => '10'
-                                       )
-                               );
-                       }
-               }
-?>
-                       </td>
-               </tr>
-       </table>
-<?php
-       if ( $this->haveData( 'uselang' ) ) {
-               ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php
-       }
-
-       if ( $this->haveData( 'token' ) ) {
-               ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php
-       }
-?>
+                       ?>
+               </div>
+               <div id="mw-userlogin-help">
+                       <?php echo $this->getMsg( 'userlogin-helplink' )->parse(); ?>
+               </div>
+               <?php if ( $this->haveData( 'createOrLoginHref' ) ) { ?>
+                       <div id="mw-createaccount-cta">
+                               <h3 id="mw-userloginlink"><?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7"  class="mw-ui-button mw-ui-constructive"><?php $this->msg( 'userlogin-joinproject' ); ?></a></h3>
+                       </div>
+               <?php } ?>
+<?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
+<?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
 </form>
 </div>
-<div id="loginend"><?php $this->html( 'loginend' ); ?></div>
+</div>
 <?php
-
        }
 }
diff --git a/includes/templates/UserloginVForm.php b/includes/templates/UserloginVForm.php
deleted file mode 100644 (file)
index 4f44209..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-<?php
-/**
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Templates
- */
-
-
-/**
- * Html form for user login with new VForm appearance.
- */
-class UserloginTemplateVForm extends BaseTemplate {
-
-       function execute() {
-               global $wgCookieExpiration;
-               $expirationDays = ceil( $wgCookieExpiration / ( 3600 * 24 ) );
-?>
-<div class="mw-ui-container">
-       <?php
-       if ( $this->haveData( 'languages' ) ) {
-       ?>
-               <div id="languagelinks">
-                       <p><?php $this->html( 'languages' ); ?></p>
-               </div>
-       <?php
-       }
-       ?>
-<div id="userloginForm">
-<form name="userlogin" class="mw-ui-vform" method="post" action="<?php $this->text( 'action' ); ?>">
-       <section class="mw-form-header">
-               <?php $this->html( 'header' ); /* extensions such as ConfirmEdit add form HTML here */ ?>
-       </section>
-       <?php
-
-       if ( $this->data['message'] ) {
-       ?>
-               <div class="<?php $this->text( 'messagetype' ); ?>box">
-               <?php
-               if ( $this->data['messagetype'] == 'error' ) {
-               ?>
-                       <strong><?php $this->msg( 'loginerror' ) ?></strong><br />
-               <?php
-               }
-               $this->html( 'message' );
-               ?>
-               </div>
-       <?php
-       }
-       ?>
-               <div>
-                       <label for='wpName1'>
-                               <?php
-                               $this->msg( 'userlogin-yourname' );
-                               if ( $this->data['secureLoginUrl'] ) {
-                                       echo Html::element( 'a', array(
-                                                       'href' => $this->data['secureLoginUrl'],
-                                                       'class' => 'mw-ui-flush-right mw-secure',
-                                               ), $this->getMsg( 'userlogin-signwithsecure' )->text() );
-                               } ?>
-                       </label>
-                       <?php
-                       $extraAttrs = array();
-                       // Set focus to this field if its blank.
-                       if ( !$this->data['name'] ) {
-                               $extraAttrs['autofocus'] = '';
-                       }
-                       echo Html::input( 'wpName', $this->data['name'], 'text', array(
-                               'class' => 'loginText',
-                               'id' => 'wpName1',
-                               'tabindex' => '1',
-                               'size' => '20',
-                               // 'required' is blacklisted for now in Html.php due to browser issues.
-                               // Keeping here in case that changes
-                               'required',
-                               'placeholder' => $this->getMsg( 'userlogin-yourname-ph' )->text()
-                       ) + $extraAttrs );
-                       ?>
-               </div>
-               <div>
-                       <label for='wpPassword1'>
-                       <?php
-                       $this->msg( 'userlogin-yourpassword' );
-
-                       if ( $this->data['useemail'] && $this->data['canreset'] && $this->data['resetlink'] === true ) {
-                               echo Linker::link(
-                                       SpecialPage::getTitleFor( 'PasswordReset' ),
-                                       $this->getMsg( 'userlogin-resetpassword-link' )->parse(),
-                                       array( 'class' => 'mw-ui-flush-right' )
-                                       );
-                               // TODO: remove the wpMailmypassword code branch from
-                               // templates/Userlogin.php as well; it is never executed and
-                               // doesn't work.
-                       }
-                       ?>
-                       </label>
-                       <?php
-                       $extraAttrs = array();
-                       // Set focus to this field if username is filled in.
-                       if ( $this->data['name'] ) {
-                               $extraAttrs['autofocus'] = '';
-                       }
-                       echo Html::input( 'wpPassword', null, 'password', array(
-                               'class' => 'loginPassword',
-                               'id' => 'wpPassword1',
-                               'tabindex' => '2',
-                               'size' => '20',
-                               'placeholder' => $this->getMsg( 'userlogin-yourpassword-ph' )->text()
-                       ) + $extraAttrs );
-                       ?>
-               </div>
-       <?php
-       if ( isset( $this->data['usedomain'] ) && $this->data['usedomain'] ) {
-               $doms = "";
-               foreach ( $this->data['domainnames'] as $dom ) {
-                       $doms .= "<option>" . htmlspecialchars( $dom ) . "</option>";
-               }
-       ?>
-               <div id="mw-user-domain-section">
-                       <label for='wpDomain' class="pos-above"><?php $this->msg( 'yourdomain' ); ?></label>
-                               <select name="wpDomain" value="<?php $this->text( 'domain' ); ?>"
-                                       tabindex="3">
-                                       <?php echo $doms ?>
-                               </select>
-               </div>
-       <?php }
-
-       if ( $this->haveData( 'extrafields' ) ) {
-               echo $this->data['extrafields'];
-       } ?>
-
-               <div>
-
-       <?php if ( $this->data['canremember'] ) { ?>
-               <label class="mw-ui-checkbox-label">
-                       <input name="wpRemember" type="checkbox" value="1" id="wpRemember" tabindex="4"
-                               <?php if ( $this->data['remember'] ) {
-                                       echo 'checked="checked"';
-                               } ?>
-                       >
-                       <?php echo $this->getMsg( 'userlogin-remembermypassword' )->numParams( $expirationDays )->escaped(); ?>
-               </label>
-       <?php } ?>
-               </div>
-
-       <?php if ( $this->data['cansecurelogin'] ) { ?>
-               <div>
-                       <label class="mw-ui-checkbox-label">
-                               <input name="wpStickHTTPS" type="checkbox" value="1" id="wpStickHTTPS" tabindex="5"
-                                       <?php if ( $this->data['stickHTTPS'] ) {
-                                               echo 'checked="checked"';
-                                       } ?>
-                               >
-                               <?php $this->msg( 'securelogin-stick-https' ); ?>
-                       </label>
-               </div>
-       <?php } ?>
-               <div>
-                       <?php
-                       echo Html::input( 'wpLoginAttempt', $this->getMsg( 'login' )->text(), 'submit', array(
-                               'id' => 'wpLoginAttempt',
-                               'tabindex' => '6',
-                               'class' => 'mw-ui-button mw-ui-big mw-ui-block mw-ui-primary'
-                       ) );
-                       ?>
-               </div>
-               <div id="mw-userlogin-help">
-                       <?php echo $this->getMsg( 'userlogin-helplink' )->parse(); ?>
-               </div>
-               <?php if ( $this->haveData( 'createOrLoginHref' ) ) { ?>
-                       <div id="mw-createaccount-cta">
-                               <h3 id="mw-userloginlink"><?php $this->msg( 'userlogin-noaccount' ); ?><a href="<?php $this->text( 'createOrLoginHref' ); ?>" id="mw-createaccount-join" tabindex="7"  class="mw-ui-button mw-ui-constructive"><?php $this->msg( 'userlogin-joinproject' ); ?></a></h3>
-                       </div>
-               <?php } ?>
-       <input type="hidden" id="mw-useNew" name="useNew" value="1" />
-<?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
-<?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
-</form>
-</div>
-</div>
-<?php
-       }
-}
index 8a6d766..ebeb9c1 100644 (file)
@@ -675,11 +675,12 @@ class UploadStashFile extends UnregisteredLocalFile {
 
 }
 
-class UploadStashNotAvailableException extends MWException {};
-class UploadStashFileNotFoundException extends MWException {};
-class UploadStashBadPathException extends MWException {};
-class UploadStashFileException extends MWException {};
-class UploadStashZeroLengthFileException extends MWException {};
-class UploadStashNotLoggedInException extends MWException {};
-class UploadStashWrongOwnerException extends MWException {};
-class UploadStashNoSuchKeyException extends MWException {};
+class UploadStashException extends MWException {};
+class UploadStashNotAvailableException extends UploadStashException {};
+class UploadStashFileNotFoundException extends UploadStashException {};
+class UploadStashBadPathException extends UploadStashException {};
+class UploadStashFileException extends UploadStashException {};
+class UploadStashZeroLengthFileException extends UploadStashException {};
+class UploadStashNotLoggedInException extends UploadStashException {};
+class UploadStashWrongOwnerException extends UploadStashException {};
+class UploadStashNoSuchKeyException extends UploadStashException {};
index 92ea75c..50cb7f7 100644 (file)
@@ -385,6 +385,12 @@ class Language {
        public static function isKnownLanguageTag( $tag ) {
                static $coreLanguageNames;
 
+               // Quick escape for invalid input to avoid exceptions down the line
+               // when code tries to process tags which are not valid at all.
+               if ( !self::isValidBuiltInCode( $tag ) ) {
+                       return false;
+               }
+
                if ( $coreLanguageNames === null ) {
                        include MWInit::compiledPath( 'languages/Names.php' );
                }
@@ -2245,7 +2251,7 @@ class Language {
         * @param MWTimestamp $relativeTo Base timestamp
         * @param User $user User preferences to use
         * @return string Human timestamp
-        * @since 1.21
+        * @since 1.22
         */
        public function getHumanTimestamp( MWTimestamp $ts, MWTimestamp $relativeTo, User $user ) {
                $diff = $ts->diff( $relativeTo );
@@ -4498,7 +4504,7 @@ class Language {
 
        /**
         * Get the plural rule types for the language
-        * @since 1.21
+        * @since 1.22
         * @return array Associative array with plural form number and plural rule type as key-value pairs
         */
        public function getPluralRuleTypes() {
@@ -4529,7 +4535,7 @@ class Language {
         * Find the plural rule type appropriate for the given number
         * For example, if the language is set to Arabic, getPluralType(5) should
         * return 'few'.
-        * @since 1.21
+        * @since 1.22
         * @return string The name of the plural rule type, e.g. one, two, few, many
         */
        public function getPluralRuleType( $number ) {
index e13cb59..a02fc8a 100644 (file)
@@ -1363,7 +1363,7 @@ class ConverterRule {
         * and may return false in this case (so this title conversion rule
         * will be ignored and the original title is shown).
         *
-        * @since 1.21
+        * @since 1.22
         * @param $variant The variant code to display page title in
         * @return String|false The converted title or false if just page name
         */
index 3d8be91..3062073 100644 (file)
@@ -396,7 +396,6 @@ $1",
 'disclaimers' => 'Beunantah',
 'disclaimerpage' => 'Project:Beunantah umom',
 'edithelp' => 'Bantu andam',
-'edithelppage' => 'Help:Andam',
 'helppage' => 'Help:Asoë',
 'mainpage' => 'Ôn Keuë',
 'mainpage-description' => 'Ôn Keuë',
@@ -704,7 +703,6 @@ Alasan-alasan nyan hana geupeureumeuen.",
 'viewprevnext' => 'Eu ($1 {{int:pipe-separator}} $2)($3)',
 'searchmenu-exists' => "'''Na on ngon nan \"[[:\$1]]\" bak wiki nyoe.'''",
 'searchmenu-new' => "'''Peugöt ôn \"[[:\$1]]\" bak wiki nyoë!'''",
-'searchhelp-url' => 'Help:Asoë',
 'searchprofile-articles' => 'Ôn asoë',
 'searchprofile-project' => 'Ôn Beunantu ngön Buët',
 'searchprofile-images' => 'Multimedia',
index 580e52f..7e624bb 100644 (file)
@@ -254,7 +254,6 @@ $1',
 'disclaimers' => 'عدم مسؤولية',
 'disclaimerpage' => 'Project:عدم مسؤولية عام',
 'edithelp' => 'مساعدة التحرير',
-'edithelppage' => 'Help:تحرير',
 'helppage' => 'Help:محتويات',
 'mainpage' => 'الصفحة الرئيسية',
 'mainpage-description' => 'الصفحة الرئيسية',
@@ -541,10 +540,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'إعادة ضبط كلمة السر',
-'passwordreset-text' => 'أكمل هذا النموذج لتتلقى بريدا إلكترونيا يذكر بتفاصيل حسابك.',
 'passwordreset-legend' => 'إعادة تعيين كلمة السر',
 'passwordreset-disabled' => 'عُطّلت إعادة تعيين كلمة السر على هذه الويكي.',
-'passwordreset-pretext' => '{{PLURAL:$1||أدخل أحد أجزاء البيانات أدناه}}',
 'passwordreset-username' => 'اسم المستخدم:',
 'passwordreset-domain' => 'النطاق:',
 'passwordreset-capture' => 'أأعرض البريد الإلكتروني الناتج؟',
index 66875a6..33ba63b 100644 (file)
@@ -315,6 +315,18 @@ $messages = array(
 'oct' => 'Okt',
 'nov' => 'Nov',
 'dec' => 'Des',
+'january-date' => '$1 Januarie',
+'february-date' => '$1 Februarie',
+'march-date' => '$1 Maart',
+'april-date' => '$1 April',
+'may-date' => '$1 Mei',
+'june-date' => '$1 Junie',
+'july-date' => '$1 Julie',
+'august-date' => '$1 Augustus',
+'september-date' => '$1 September',
+'october-date' => '$1 Oktober',
+'november-date' => '$1 November',
+'december-date' => '$1 Desember',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorie|Kategorieë}}',
@@ -449,7 +461,6 @@ $1",
 'disclaimers' => 'Voorbehoud',
 'disclaimerpage' => 'Project:Voorwaardes',
 'edithelp' => 'Wysigingshulp',
-'edithelppage' => 'Help:Wysig',
 'helppage' => 'Help:Inhoud',
 'mainpage' => 'Tuisblad',
 'mainpage-description' => 'Tuisblad',
@@ -688,7 +699,7 @@ Skakel dit asseblief aan en probeer weer.',
 'nocookiesfornew' => 'Die gebruiker is nie geskep nie omdat die oorsprong nie bevestig kon word nie.
 Maak seker dat u koekies aangeskakel het, herlaai die bladsy en probeer dan weer.',
 'noname' => 'Ongeldige gebruikersnaam.',
-'loginsuccesstitle' => 'Suksesvolle intekening',
+'loginsuccesstitle' => 'Suksesvolle aanmelding',
 'loginsuccess' => 'U is nou by {{SITENAME}} as "$1" ingeteken.',
 'nosuchuser' => 'Die gebruiker "$1" bestaan nie.
 Gebruikersname is gevoelig vir hoofletters.
@@ -770,6 +781,8 @@ U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
 
 # Special:PasswordReset
 'passwordreset' => 'Wagwoord herstel',
+'passwordreset-text-one' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
+'passwordreset-text-many' => '{{PLURAL:$1|Vul een van die velde in om u wagwoord te herstel.}}',
 'passwordreset-legend' => 'Kry nuwe wagwoord',
 'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
 'passwordreset-emaildisabled' => 'E-posfunksies is afgeskakel op hierdie wiki.',
@@ -1010,6 +1023,7 @@ Geen verduideliking is verskaf nie.",
 Dit lyk of dit verwyder is.',
 'edit-conflict' => 'Wysigingskonflik',
 'edit-no-change' => 'U wysiging was geignoreer omdat die teks nie verander is nie.',
+'postedit-confirmation' => 'U wysigings is gestoor.',
 'edit-already-exists' => 'Die bladsy is nie geskep nie.
 Dit bestaan alreeds.',
 'defaultmessagetext' => 'Verstekteks',
@@ -1017,7 +1031,7 @@ Dit bestaan alreeds.',
 '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.
-Indien u aangemeld is, kan u hierdie waarskuwing in die "{{int:prefs-editing}}"-afdeling van u voorkeure afskakel.',
+Indien u aangemeld is, kan u hierdie waarskuwing in die "Wysigings"-afdeling van u voorkeure afskakel.',
 
 # Content models
 'content-model-wikitext' => 'Wikiteks',
@@ -1259,7 +1273,6 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'searchmenu-legend' => 'Soekopsies',
 'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
 'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
-'searchhelp-url' => 'Help:Inhoud',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wys bladsye wat met die voorvoegsel begin]]',
 'searchprofile-articles' => 'Inhoudelike bladsye',
 'searchprofile-project' => 'Hulp- en projekbladsye',
@@ -2276,8 +2289,8 @@ Toekomstige wysigings aan hierdie bladsy en sy bybehorende besprekingsblad sal h
 'notvisiblerev' => 'Weergawe is verwyder',
 'watchnochange' => 'Geen item op die dophoulys is geredigeer in die gekose periode nie.',
 'watchlist-details' => '{{PLURAL:$1|$1 bladsy|$1 bladsye}} in u dophoulys, besprekingsbladsye uitgesluit.',
-'wlheader-enotif' => 'E-pos notifikasie is aangeskakel.',
-'wlheader-showupdated' => "Bladsye wat verander is sedert u hulle laas besoek het word in '''vetdruk''' uitgewys",
+'wlheader-enotif' => 'E-pos kennisgewings is aangeskakel.',
+'wlheader-showupdated' => "Bladsye wat verander is sedert u hulle laas besoek het word in '''vetdruk''' uitgewys.",
 'watchmethod-recent' => 'Kontroleer onlangse wysigings aan bladsye op dophoulys',
 'watchmethod-list' => 'kontroleer bladsye op dophoulys vir wysigings',
 'watchlistcontains' => 'Jou dophoulys bevat $1 {{PLURAL:$1|bladsy|bladsye}}.',
index e9c406d..8c15418 100644 (file)
@@ -301,7 +301,6 @@ $1',
 'disclaimers' => 'Shfajsime',
 'disclaimerpage' => 'Project:Shfajsimet e përgjithshme',
 'edithelp' => 'Ndihmë për redaktim',
-'edithelppage' => 'Help:Redaktimi',
 'helppage' => 'Help:Përmbajtja',
 'mainpage' => 'Faqja kryesore',
 'mainpage-description' => 'Faqja Kryesore',
@@ -903,7 +902,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'searchmenu-legend' => 'Opcionet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki âsht nji faqe me titullin \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Krijo faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchhelp-url' => 'Help:Përmbajtja',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfleto faqet me këtë prefiks]]',
 'searchprofile-articles' => 'Faqet me përmbajtje',
 'searchprofile-project' => 'Faqet e ndihmës dhe projekteve',
@@ -1500,7 +1498,6 @@ Lejon dhânien e arsyes në përmbledhje.',
 'modern.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Modern */',
 'vector.css' => '/* CSSi i vednosun këtu ka me i prekë shfrytëzuesit e dukjes Vector */',
 'print.css' => '/* CSSi i vednosun këtu ka me e prekë pamjen e shtypjes */',
-'handheld.css' => '/* CSSi i vednosun këtu ka me i prekë shfletuesit mobil (të dorës) në dukje e konfigurueme në $wgHandheldStyle */',
 
 # Scripts
 'common.js' => '/* Çdo JavaScript këtu ka me u ngarkue për të gjithë përdoruesit në secilën thirrje të faqes. */',
index fb8e17b..bf6cabe 100644 (file)
@@ -274,7 +274,6 @@ $1',
 'disclaimers' => 'የኃላፊነት ማስታወቂያ',
 'disclaimerpage' => 'Project:አጠቃላይ የሕግ ነጥቦች',
 'edithelp' => 'የማረም መመሪያ',
-'edithelppage' => 'Help:የማዘጋጀት እርዳታ',
 'helppage' => 'Help:ይዞታ',
 'mainpage' => 'ዋናው ገጽ',
 'mainpage-description' => 'ዋና ገጽ',
@@ -806,7 +805,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'searchmenu-legend' => 'የፍለጋ ምርጫዎች',
 'searchmenu-exists' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ በዚሁ ዊኪ ላይ አለ።'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ ይፈጠር?'''",
-'searchhelp-url' => 'Help:ይዞታ',
 'searchprofile-articles' => 'ይዞታ ያላቸው መጣጥፎች',
 'searchprofile-project' => 'የመርሃግብሩ ገጾች',
 'searchprofile-images' => 'ፋይሎች',
index d2512f9..f9fb9b0 100644 (file)
@@ -371,7 +371,6 @@ $1",
 'disclaimers' => 'Alvertencias chenerals',
 'disclaimerpage' => 'Project:Alvertencias chenerals',
 'edithelp' => 'Aduya ta editar pachinas',
-'edithelppage' => "Help:Cómo s'edita una pachina",
 'helppage' => 'Help:Aduya',
 'mainpage' => 'Portalada',
 'mainpage-description' => 'Portalada',
@@ -625,10 +624,8 @@ Talment ya ha cambiato a suya clau u ha demandato una nueva clau temporal.',
 
 # Special:PasswordReset
 'passwordreset' => "Restablir a clau d'acceso",
-'passwordreset-text' => "Completar ista forma ta recibir un recordatorio por correu con os detalles d'a suya cuenta.",
 'passwordreset-legend' => "Restablir a clau d'acceso",
 'passwordreset-disabled' => "S'ha desactivau o restablimiento de claus en ista wiki.",
-'passwordreset-pretext' => "{{PLURAL:$1||Introduzca uno d'os siguients datos}}",
 'passwordreset-username' => "Nombre d'usuario:",
 'passwordreset-domain' => 'Dominio:',
 'passwordreset-capture' => 'Veyer o mensache resultant?',
@@ -1059,7 +1056,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'searchmenu-legend' => 'Opcions de busca',
 'searchmenu-exists' => "'''Bi ha una pachina clamada \"[[\$1]]\" en ista wiki'''",
 'searchmenu-new' => "'''Creyar a pachina \"[[:\$1]]\" en ista wiki!'''",
-'searchhelp-url' => 'Help:Aduya',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Veyer pachinas con iste prefixo]]',
 'searchprofile-articles' => 'Pachinas de conteniu',
 'searchprofile-project' => "Pachinas d'aduya y d'o prochecto",
index bc7d44c..43e83c9 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Altai uul
  * @author Gott wisst
  * @author JJohnson
  * @author Omnipaedista
@@ -268,7 +269,6 @@ $1',
 'disclaimers' => 'Ætsacunga',
 'disclaimerpage' => 'Project:Gemǣne ætsacung',
 'edithelp' => 'Help on adihtunge',
-'edithelppage' => 'Help:Adihtung',
 'helppage' => 'Help:Innung',
 'mainpage' => 'Hēafodtramet',
 'mainpage-description' => 'Hēafodtramet',
@@ -362,25 +362,44 @@ Cȳþþuhord ageaf wōh "<code>$3: $4</code>"',
 'viewsource' => 'Sēon fruman',
 'cascadeprotected' => 'Þes trament wæs geborgen wiþ adihtunge, for þǣm þe hē is befangen in þissum {{PLURAL:$1|tramente, þe is| tramentum, þe sind}} geborgen settum wyrcende þǣm cyre "cascading": $2',
 
+# Virus scanner
+'virus-badscanner' => "Јастыра конфигурация: Јарты јок сканер ''$1''",
+'virus-unknownscanner' => 'Јарты јок антивирус:',
+
 # Login and logout pages
 'logouttext' => "'''Þū eart nū ūtmeldod.'''
 
 Þū canst ætfeolan þǣre nytte {{SITENAME}} tō ungecūðum, oþþe þū canst <span class='plainlinks'>[$1 inmeldian eft]</span> tō þǣm ylcan oþþe ōðrum brūcende.
 Cnāw þæt sume trametas mihten gīet wesan geīwde swā þū wǣre gīet inmeldod, oþ þæt þū clǣnsie þīnes sēcendtōles hord.",
+'welcomeuser' => 'Кӱӱнзеп кирер, $1!',
 'yourname' => 'Þīn brūcendnama:',
+'userlogin-yourname' => 'Эдинчиниҥ ады:',
+'userlogin-yourname-ph' => 'Эдинчиниҥ адын кийдирер:',
 'yourpassword' => 'Þafungword:',
+'userlogin-yourpassword' => 'Јажытту сӧс',
+'userlogin-yourpassword-ph' => 'Јажытту сӧсӧзрди кийдирер',
+'createacct-yourpassword-ph' => 'Јажытту сӧсти кийдирер',
 'yourpasswordagain' => 'Wrītan þafungword eft:',
+'createacct-yourpasswordagain' => 'Јажытту сӧсти јӧпсинер',
+'createacct-yourpasswordagain-ph' => 'Јажытту сӧсти јаҥынаҥ кийдирер',
 'remembermypassword' => 'Gemynan mīne inmeldunge on þissum webbsēcende (oþ $1 {{PLURAL:$1|dæg|daga}} lengest)',
+'userlogin-remembermypassword' => 'Артырар кирип алганымды',
 'yourdomainname' => 'Þīn geweald:',
+'password-change-forbidden' => 'Бу викиде, слерде јажытту сӧстӧрди солыыр арга јок.',
 'login' => 'Inmeldian',
 'nav-login-createaccount' => 'Inmeldian / wyrcan reccinge',
+'loginprompt' => 'Слер кукиларды јарадар учурлу {{SITENAME}} сайтка турган болзор.',
 'userlogin' => 'Inmeldian / wyrcan reccinge',
 'userloginnocreate' => 'Inmeldian',
 'logout' => 'Ūtmeldian',
 'userlogout' => 'Ūtmeldian',
 'notloggedin' => 'Nā ingemeldod',
+'userlogin-noaccount' => 'Слерде аккаунт јок по?',
+'userlogin-joinproject' => '{{SITENAME}} кирер',
+'nologin' => 'Слерде аккаунт јок по? $1.',
 'nologinlink' => 'Scieppan reccinge',
 'createaccount' => 'Scieppan reccinge',
+'gotaccount' => 'Белен аккаунт бар ба? $1.',
 'gotaccountlink' => 'Inmeldian',
 'createaccountmail' => 'Notian sceortne tīman hlētlic þafungword and sendan hit to þǣm spearcǣrenda naman þe is niðer',
 'createaccountreason' => 'Racu:',
@@ -554,7 +573,6 @@ folcliċum āgnunge oþþe ȝelīċum frēom horde (sēo $1 for āscungum).
 'nextn' => 'nīehst {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Sēon ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-new' => "'''Scieppan þone tramet \"[[:\$1]]\" on þissum wiki!'''",
-'searchhelp-url' => 'Help:Innung',
 'searchprofile-articles' => 'Innunge trametas',
 'searchprofile-project' => 'Helpes and Weorca trametas',
 'searchprofile-images' => 'Missenendebyrdness',
index 14e12f3..ef59a3e 100644 (file)
@@ -610,7 +610,7 @@ $messages = array(
 'listingcontinuesabbrev' => 'يُتبع',
 'index-category' => 'صفحات مفهرسة',
 'noindex-category' => 'صفحات غير مفهرسة',
-'broken-file-category' => 'صفحات تحتوي روابط ملفات معطوبة',
+'broken-file-category' => 'صفحات تحوي روابط ملفات معطوبة',
 
 'about' => 'عن هذه الويكي',
 'article' => 'صفحة محتوى',
@@ -726,7 +726,6 @@ $1',
 'disclaimers' => 'إخلاء مسؤولية',
 'disclaimerpage' => 'Project:إخلاء مسؤولية عام',
 'edithelp' => 'مساعدة التحرير',
-'edithelppage' => 'Help:تحرير',
 'helppage' => 'Help:محتويات',
 'mainpage' => 'الصفحة الرئيسية',
 'mainpage-description' => 'الصفحة الرئيسية',
@@ -1302,6 +1301,7 @@ $2
 يبدو أنه تم حذفها.',
 'edit-conflict' => 'تضارب تحريري.',
 'edit-no-change' => 'تعديلك تم تجاهله، لأنه لم يحدث أي تعديل للنص.',
+'postedit-confirmation' => 'تعديلك حفظ.',
 'edit-already-exists' => 'لم يمكن إنشاء صفحة جديدة.
 هي موجودة بالفعل.',
 'defaultmessagetext' => 'نص الرسالة الافتراضي',
@@ -1554,7 +1554,6 @@ $1",
 'searchmenu-legend' => 'خيارات البحث',
 'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
 'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
-'searchhelp-url' => 'Help:محتويات',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|تصفح الصفحات بهذه البادئة]]',
 'searchprofile-articles' => 'صفحات المحتوى',
 'searchprofile-project' => 'صفحات المساعدة والمشروع',
index 28619a6..87a308d 100644 (file)
@@ -344,7 +344,6 @@ $1',
 'disclaimers' => 'ܠܐ ܡܫܬܐܠܢܘܬܐ',
 'disclaimerpage' => 'Project:ܠܐ ܡܫܬܐܠܢܘܬܐ ܓܘܢܝܬܐ',
 'edithelp' => 'ܥܘܕܪܢܐ ܠܫܚܠܦܬܐ',
-'edithelppage' => 'Help:ܫܚܠܦܬܐ',
 'helppage' => 'Help:ܚܒܝܫܬ̈ܐ',
 'mainpage' => 'ܦܐܬܐ ܪܝܫܝܬܐ',
 'mainpage-description' => 'ܦܐܬܐ ܪܝܫܝܬܐ',
@@ -435,9 +434,14 @@ $1',
 ܚܕ ܟܡܐ ܡܢ ܦܐܬܬ̈ܐ ܡܬܚܙܝܢ ܐܝܟ ܕܗܘ ܐܢܬ ܥܠܝܠܐ ܐܝܬܝܟ ܥܕܡܐ ܕܐܣܦܩܬ ܠܦܐܬܬ̈ܐ ܠܒܝܟܬ̈ܐ ܕܡܦܐܬܢܐ ܕܝܠܟ.",
 'welcomeuser' => 'ܒܫܝܢܐ $1!',
 'yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ:',
+'userlogin-yourname' => 'ܫܡܐ ܕܡܦܠܚܢܐ',
+'userlogin-yourname-ph' => 'ܐܥܠ ܫܡܐ ܕܡܦܠܚܢܐ ܕܝܠܟ',
 'yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ:',
+'userlogin-yourpassword' => 'ܡܠܬܐ ܕܥܠܠܐ',
+'userlogin-yourpassword-ph' => 'ܐܥܠ ܡܠܬܐ ܕܥܠܠܐ ܕܝܠܟ',
 'yourpasswordagain' => 'ܟܬܘܒ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܬܐ ܐܚܪܬܐ:',
 'remembermypassword' => 'ܕܟܘܪ ܥܠܠܬܝ ܥܠ ܡܦܐܬܢܐ ܗܢܐ (ܠܡܬܚܐ ܥܠܝܐ ܕ $1 {{PLURAL:$1|ܝܘܡܐ|ܝܘܡܬ̈ܐ}})',
+'userlogin-remembermypassword' => 'ܫܒܘܩ ܠܝ ܥܠܝܠܐ ܒܚܘܫܒܢܝ',
 'login' => 'ܥܘܠ',
 'nav-login-createaccount' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
 'loginprompt' => 'ܐܠܨܐ ܠܡܦܐܬܢܐ ܕܝܠܟ ܕܣܡܟ ܠܩܘܩܝܙ (cookies) ܠܥܠܠܬܐ ܒ {{SITENAME}}.',
@@ -446,14 +450,21 @@ $1',
 'logout' => 'ܦܠܘܛ',
 'userlogout' => 'ܦܠܘܛ',
 'notloggedin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
+'userlogin-noaccount' => 'ܠܝܬ ܠܟ ܚܘܫܒܢܐ؟',
+'userlogin-joinproject' => 'ܢܩܦ ܥܡ {{SITENAME}}',
 'nologin' => "ܠܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
 'nologinlink' => 'ܒܪܝ ܚܘܫܒܢܐ',
 'createaccount' => 'ܒܪܝ ܚܘܫܒܢܐ',
 'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
 'gotaccountlink' => 'ܥܘܠ',
 'userlogin-resetlink' => 'ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟',
+'userlogin-resetpassword-link' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ܥܘܕܪܢܐ ܒܥܠܠܐ ܠܚܘܫܒܢܐ]]',
+'createacct-join' => 'ܐܥܠ ܝܕ̈ܥܬܐ ܕܝܠܟ ܠܬܚܬ',
+'createacct-emailrequired' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 'createaccountmail' => 'ܐܦܠܚ ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܘܫܕܪ ܠܗ ܥܠ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܬܘܚܡܐ ܠܬܚܬ',
 'createaccountreason' => 'ܥܠܬܐ',
+'createacct-benefit-heading' => 'ܝܬܒܐ ܕ{{SITENAME}} ܐܣܬܝܡ ܒܝܕ ܐܢܫ̈ܐ ܐܟܘܬܟ.',
 'badretype' => 'ܡܠܬܐ ܕܥܠܠܐ ܟܬܒܬ ܐܢܬ ܠܐ ܐܘܝܢܬܐ.',
 'userexists' => 'ܫܡܐ ܕܡܦܠܚܢܐ ܕܐܥܠܬ ܫܩܝܠܐ ܐܝܬܘܗܝ.
 ܫܦܝܪܐܝܬ ܓܒܝ ܫܡܐ ܐܚܪܢܐ.',
@@ -670,7 +681,6 @@ $1',
 'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
 'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
-'searchhelp-url' => 'Help:ܚܒܝܫܬ̈ܐ',
 'searchprofile-articles' => 'ܦܐܬܬ̈ܐ ܕܚܒܝܫܬ̈ܐ',
 'searchprofile-project' => 'ܦܐܬܬ̈ܐ ܕܬܪ̈ܡܝܬܐ ܘܕܥܘܕܪܢܐ',
 'searchprofile-images' => 'ܡܝܕ̈ܝܐ ܣܓܝܐ̈ܐ (Multimedia)',
index fd69d9e..b965f8c 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'disclaimers' => 'Tukuldungun ñi pin ley',
 'disclaimerpage' => 'Project:Katrütuwün ñi llowdüngun',
 'edithelp' => 'Kellü wirin',
-'edithelppage' => 'Help:Chum wiringekey pakina',
 'helppage' => 'Help:Trokiñdungu',
 'mainpage' => 'Ñidol Wülngiñ',
 'mainpage-description' => 'Ñidol Wülngiñ',
@@ -407,7 +406,6 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'viewprevnext' => 'Pen ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Müley kiñe wülngiñ «[[:$1]]» pingelu feychi wiki mew'''",
 'searchmenu-new' => "'''¡Llitun pakina «[[:$1]]» tüfachi wiki mew!'''",
-'searchhelp-url' => 'Help:Trokiñdungu',
 'searchprofile-articles' => 'Trokiñdungu wülngiñ',
 'searchprofile-project' => 'Kellu wülngiñ ka Deumandungu wülngiñ',
 'searchprofile-images' => 'Fill dungu (adentun, dungun, fidew)',
index 73fb16f..b0d0406 100644 (file)
@@ -257,7 +257,6 @@ $1',
 'disclaimers' => 'Inḍaraṫ',
 'disclaimerpage' => 'Project:Inḍaraṫ ĝammin',
 'edithelp' => 'Mosaĝada',
-'edithelppage' => 'Help:Kifaċ tṣayeb ċi ṣ-ṣefḫa',
 'helppage' => 'Help:Meḍmon',
 'mainpage' => 'Ṣ-Ṣefḫa l-owla',
 'mainpage-description' => 'Ṣ-Ṣefḫa l-owla',
@@ -541,10 +540,8 @@ ymkn ṫkon bddalṫiha bĝda wlla ṫlbti klmṫ srr mo'qaṫa jdida.",
 
 # Special:PasswordReset
 'passwordreset' => 'ĝawd klmṫ s-srr',
-'passwordreset-text' => 'ĝmmer had l-istimara baċ iwṣlek email ṫaĝ ṫdkir b-ṫṫafaṣil dl-ḫisab ṫaĝk.',
 'passwordreset-legend' => 'ĝawd klmṫ s-srr',
 'passwordreset-disabled' => 'maymkn-ċ ṫĝawd klmṫ s-srr f-had l-wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||kṫb wḫda mn l-bayanaṫ l-ṫḫṫ}}',
 'passwordreset-username' => 'smiṫ l-mosṫĥdim:',
 'passwordreset-email' => 'ĝonwan l-email:',
 'passwordreset-emailtitle' => 'ṫafaṣil l-ḫisab f-{{SITENAME}}',
@@ -929,7 +926,6 @@ $1",
 'searchmenu-legend' => 'khiyarat lbaht',
 'searchmenu-exists' => "'''ḫṫṫa ṣfḫa f-had l-wiki ma smiṫha \"[[:\$1]]\".'''",
 'searchmenu-new' => "'''ṣayb f-had l-wiki ṣfḫṫ \"[[:\$1]]\"!'''",
-'searchhelp-url' => 'Help:Meḍmon',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ṫṣffeh ṣfaḫi b-had ṣ-ṣabiqa]]',
 'searchprofile-articles' => 'sfht mohtawa',
 'searchprofile-project' => 'sfhai dyal lmossada ol mchroa',
index 46bf2f8..83c3767 100644 (file)
@@ -539,7 +539,6 @@ $1',
 'disclaimers' => 'تنازل عن مسئوليه',
 'disclaimerpage' => 'Project:تنازل عن مسئوليه عمومى',
 'edithelp' => 'مساعده فى التعديل',
-'edithelppage' => 'Help:تعديل',
 'helppage' => 'Help:محتويات',
 'mainpage' => 'الصفحه الرئيسيه',
 'mainpage-description' => 'الصفحه الرئيسيه',
@@ -1201,7 +1200,6 @@ $1",
 'searchmenu-legend' => 'اختيارات التدوير',
 'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
 'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
-'searchhelp-url' => 'Help:محتويات',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|استعرض الصفحات اللى بتبتدى بالبريفيكس دا]]',
 'searchprofile-articles' => 'صفحات محتوى',
 'searchprofile-project' => 'صفحات  المساعده و المشروع',
index bcd7646..e5c7c0c 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Bishnu Saikia
+ * @author Britul
  * @author Chaipau
  * @author Gahori
  * @author Gitartha.bordoloi
@@ -435,7 +436,6 @@ $1',
 'disclaimers' => 'দায়লুপ্তি',
 'disclaimerpage' => 'Project:সাধাৰণ দায়লুপ্তি',
 'edithelp' => 'সম্পাদনাৰ বাবে সহায়',
-'edithelppage' => 'Help:সম্পাদনা',
 'helppage' => 'Help:সমল',
 'mainpage' => 'বেটুপাত',
 'mainpage-description' => 'বেটুপাত',
@@ -1000,6 +1000,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে ।',
 'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব ।',
 'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
+'postedit-confirmation' => "আপোনাৰ সম্পাদনা সংৰক্ষিত কৰা হ'ল ।",
 'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল ।
 পৃষ্ঠাখন ইতিমধ্যে আছেই ।",
 'defaultmessagetext' => 'সাধাৰণ বাৰ্তা পাঠ্য',
@@ -1252,7 +1253,6 @@ $1",
 'searchmenu-legend' => 'সন্ধান বিকল্পসমূহ',
 'searchmenu-exists' => 'এই ৱিকিত "[[:$1]]" নামৰ পৃষ্ঠা এখন আছে ।',
 'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
-'searchhelp-url' => 'Help:সমল',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই উপসৰ্গ থকা পৃষ্ঠাসমূহ ব্ৰাউজ কৰক]]',
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
@@ -3062,6 +3062,7 @@ $2',
 'pageinfo-magic-words' => 'যাদুকৰী {{PLURAL:$1|শব্দ|শব্দবোৰ}} ($1)',
 'pageinfo-hidden-categories' => 'অদৃশ্য {{PLURAL:$1|শ্ৰেণী|শ্ৰেণীসমূহ}} ($1)',
 'pageinfo-templates' => 'সংযুক্ত {{PLURAL:$1|সাঁচ|সাঁচসমূহ}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|পৃষ্ঠা|পৃষ্ঠাসমূহ}} ট্রান্সক্লুড কৰাৰ সময় ($1)',
 'pageinfo-toolboxlink' => 'পৃষ্ঠাখনৰ বিষয়ে তথ্য',
 'pageinfo-redirectsto' => 'পুনৰ্নিৰ্দেশ কৰা হৈছে',
 'pageinfo-redirectsto-info' => 'তথ্য',
@@ -3799,6 +3800,7 @@ $5
 # Special:Redirect
 'redirect' => 'ফাইল, সদস্য, বা সংশোধন আই ডিৰে পুনঃনিৰ্দেশ',
 'redirect-legend' => 'এটা ফাইল বা এখন এখন পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
+'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
 'redirect-submit' => 'যাওক',
 'redirect-lookup' => 'চাওক:',
 'redirect-value' => 'মূল্য:',
index d540b12..64a178d 100644 (file)
  */
 
 $namespaceNames = array(
-       NS_MEDIA            => 'Media',
+       NS_MEDIA            => 'Medios',
        NS_SPECIAL          => 'Especial',
        NS_TALK             => 'Alderique',
        NS_USER             => 'Usuariu',
        NS_USER_TALK        => 'Usuariu_alderique',
        NS_PROJECT_TALK     => '$1_alderique',
-       NS_FILE             => 'Archivu',
-       NS_FILE_TALK        => 'Archivu_alderique',
+       NS_FILE             => 'Ficheru',
+       NS_FILE_TALK        => 'Ficheru_alderique',
        NS_MEDIAWIKI        => 'MediaWiki',
        NS_MEDIAWIKI_TALK   => 'MediaWiki_alderique',
        NS_TEMPLATE         => 'Plantía',
        NS_TEMPLATE_TALK    => 'Plantía_alderique',
-       NS_HELP             => 'Aida',
-       NS_HELP_TALK        => 'Aida_alderique',
+       NS_HELP             => 'Ayuda',
+       NS_HELP_TALK        => 'Ayuda_alderique',
        NS_CATEGORY         => 'Categoría',
        NS_CATEGORY_TALK    => 'Categoría_alderique',
 );
 
 $namespaceAliases = array(
-       'Imaxe' => NS_FILE,
-       'Imaxe alderique' => NS_FILE_TALK,
+       'Imaxe'               => NS_FILE,
+       'Imaxe alderique'     => NS_FILE_TALK,
        'Discusión'           => NS_TALK,
        'Usuariu_discusión'   => NS_USER_TALK,
        '$1_discusión'        => NS_PROJECT_TALK,
        'Imaxen'              => NS_FILE,
        'Imaxen_discusión'    => NS_FILE_TALK,
+       'Archivu'             => NS_FILE,
+       'Archivu_alderique'   => NS_FILE_TALK,
        'MediaWiki_discusión' => NS_MEDIAWIKI_TALK,
        'Plantilla'           => NS_TEMPLATE,
        'Plantilla_discusión' => NS_TEMPLATE_TALK,
-       'Ayuda'               => NS_HELP,
        'Ayuda_discusión'     => NS_HELP_TALK,
+       'Aida'                => NS_HELP,
+       'Aida_alderique'      => NS_HELP_TALK,
        'Categoría_discusión' => NS_CATEGORY_TALK,
 );
 
@@ -228,7 +231,7 @@ $messages = array(
 'vector-action-protect' => 'Protexer',
 'vector-action-undelete' => 'Restaurar',
 'vector-action-unprotect' => 'Camudar la proteición',
-'vector-simplesearch-preference' => 'Activar la barra de gueta simplificada (namái apariencia Vector)',
+'vector-simplesearch-preference' => 'Activar la barra de búsqueda simplificada (namái tema Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Editar',
 'vector-view-history' => 'Ver historial',
@@ -243,8 +246,8 @@ $messages = array(
 'returnto' => 'Tornar a $1.',
 'tagline' => 'De {{SITENAME}}',
 'help' => 'Ayuda',
-'search' => 'Guetar',
-'searchbutton' => 'Guetar',
+'search' => 'Buscar',
+'searchbutton' => 'Buscar',
 'go' => 'Dir',
 'searcharticle' => 'Dir',
 'history' => 'Historial de la páxina',
@@ -260,6 +263,7 @@ $messages = array(
 'create-this-page' => 'Crear esta páxina',
 'delete' => 'Desaniciar',
 'deletethispage' => 'Desaniciar esta páxina',
+'undeletethispage' => 'Restaurar esta páxina',
 'undelete_short' => 'Restaurar {{PLURAL:$1|una edición|$1 ediciones}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}',
 'protect' => 'Protexer',
@@ -293,7 +297,7 @@ $messages = array(
 'protectedpage' => 'Páxina protexida',
 'jumpto' => 'Saltar a:',
 'jumptonavigation' => 'navegación',
-'jumptosearch' => 'guetar',
+'jumptosearch' => 'buscar',
 'view-pool-error' => "Sentímoslo, los sirvidores tán sobrecargaos nestos momentos.
 Hai demasiaos usuarios intentando ver esta páxina.
 Por favor espera un ratu enantes d'intentar otra vuelta entrar a esta páxina.
@@ -313,7 +317,6 @@ $1",
 'disclaimers' => 'Avisu llegal',
 'disclaimerpage' => 'Project:Avisu xeneral',
 'edithelp' => "Ayuda d'edición",
-'edithelppage' => 'Help:Cómo editar una páxina',
 'helppage' => 'Help:Conteníu',
 'mainpage' => 'Portada',
 'mainpage-description' => 'Portada',
@@ -463,6 +466,8 @@ $2",
 'namespaceprotected' => "Nun tienes permisu pa editar páxines nel espaciu de nomes '''$1'''.",
 'customcssprotected' => "Nun tienes permisu pa editar esta páxina CSS porque contién preferencies personales d'otru usuariu.",
 'customjsprotected' => "Nun tienes permisu pa editar esta páxina de JavaScript porque contién preferencies personales d'otru usuariu.",
+'mycustomcssprotected' => 'Nun tien permisu pa editar esta páxina CSS.',
+'mycustomjsprotected' => 'Nun tien permisu pa editar esta páxina JavaScript.',
 'ns-specialprotected' => 'Les páxines especiales nun se puen editar.',
 'titleprotected' => "Esti títulu ta protexíu escontra creación por [[User:$1|$1]].
 El motivu conseñáu ye «''$2''».",
@@ -471,7 +476,7 @@ El motivu conseñáu ye «''$2''».",
 L'alministrador que lu bloquió dio esti motivu: «$3».",
 'invalidtitle-knownnamespace' => "Títulu inválidu col espaciu de nomes «$2» ya'l testu «$3»",
 'invalidtitle-unknownnamespace' => "Títulu inválidu col númberu $1 d'espaciu de nomes desconocíu ya'l testu «$2»",
-'exception-nologin' => 'Non identificáu',
+'exception-nologin' => 'Nun anició sesión',
 'exception-nologin-text' => "Esta páxina o aición necesita qu'anicies sesión nesta wiki.",
 
 # Virus scanner
@@ -504,22 +509,22 @@ Nun t'escaezas de camudar les tos [[Special:Preferences|preferencies de {{SITENA
 'yourdomainname' => 'El to dominiu:',
 'password-change-forbidden' => 'Nun se pueden camudar les contraseñes nesta wiki.',
 'externaldberror' => "O hebo un fallu d'autenticación de la base de datos o nun tienes permisu p'anovar la to cuenta esterna.",
-'login' => 'Identificase',
-'nav-login-createaccount' => 'Identificase / crear una cuenta',
-'loginprompt' => 'Has tener les «cookies» activaes pa identificate en {{SITENAME}}.',
-'userlogin' => 'Identificase / crear una cuenta',
+'login' => 'Entrar',
+'nav-login-createaccount' => 'Entrar / crear cuenta',
+'loginprompt' => "Ha de tener les «cookies» activaes p'aniciar sesión en {{SITENAME}}.",
+'userlogin' => 'Entrar / crear cuenta',
 'userloginnocreate' => 'Aniciar sesión',
-'logout' => 'Colar',
-'userlogout' => 'Colar',
-'notloggedin' => 'Non identificáu',
+'logout' => 'Salir',
+'userlogout' => 'Salir',
+'notloggedin' => 'Nun anició sesión',
 'userlogin-noaccount' => '¿Nun tien una cuenta?',
 'userlogin-joinproject' => 'Xunise a {{SITENAME}}',
 'nologin' => '¿Nun tienes una cuenta? $1.',
 'nologinlink' => 'Crear una cuenta',
 'createaccount' => 'Crear una cuenta',
-'gotaccount' => '¿Ya tienes una cuenta? $1.',
-'gotaccountlink' => 'Identificase',
-'userlogin-resetlink' => "¿Escaecisti los datos d'identificación?",
+'gotaccount' => '¿Yá tienes una cuenta? $1.',
+'gotaccountlink' => 'Entrar',
+'userlogin-resetlink' => "¿Escaeció los datos d'accesu?",
 'userlogin-resetpassword-link' => 'Reaniciar la contraseña',
 'helplogin-url' => 'Help:Aniciar sesión',
 'userlogin-helplink' => "[[{{MediaWiki:helplogin-url}}|Ayuda p'aniciar sesión]]",
@@ -545,13 +550,13 @@ Por favor escueyi un nome diferente.",
 'loginerror' => "Error d'aniciu de sesión",
 'createacct-error' => 'Error de creación de cuenta',
 'createaccounterror' => 'Nun se pudo crear la cuenta: $1',
-'nocookiesnew' => "La cuenta d'usuariu ta creada, pero nun aniciasti sesión.
+'nocookiesnew' => "La cuenta d'usuariu ta creada, pero nun anició sesión.
 {{SITENAME}} usa «cookies» pa identificar a los usuarios.
-Tienes les «cookies» desactivaes.
-Por favor activales y depués entra col to nome d'usuariu y clave nuevos.",
+Tien les «cookies» desactivaes.
+Por favor activeles y anicie sesión col nuevu nome d'usuariu y contraseña.",
 'nocookieslogin' => '{{SITENAME}} usa «cookies» pa identificar a los usuarios.
-Tienes les «cookies» desactivaes.
-Por favor activales y vuelvi a intentalo.',
+Tien les «cookies» desactivaes.
+Por favor activeles y vuelva a intentalo.',
 'nocookiesfornew' => "La cuenta nun se creó porque nun pudimos confirmar l'orixe.
 Comprueba que tienes activaes les «cookies», recarga esta páxina y vuelvi a intentalo.",
 'noname' => "Nun conseñasti un nome d'usuariu válidu.",
@@ -604,7 +609,7 @@ Por favor conseña una direición con formatu afayadizu o dexa baleru'l campu.",
 'cannotchangeemail' => 'Les direiciones de corréu electrónicu de la cuenta nun puen camudase nesta wiki.',
 'emaildisabled' => 'Esti sitiu nun pue unviar correos electrónicos.',
 'accountcreated' => 'Cuenta creada',
-'accountcreatedtext' => "Creóse la cuenta d'usuariu de $1.",
+'accountcreatedtext' => "Creóse la cuenta d'usuariu pa [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|alderique]]).",
 'createaccount-title' => 'Creación de cuenta pa {{SITENAME}}',
 'createaccount-text' => "Daquién creó una cuenta cola to direición de corréu electrónicu en {{SITENAME}} ($4) col nome «$2», y cola contraseña «$3».
 Agora tendríes d'aniciar sesión y camudar la contraseña.
@@ -613,7 +618,7 @@ Pues escaecer esti mensaxe si esta cuenta creóse por error.",
 'usernamehasherror' => "El nome d'usuariu nun pue contener caráuteres «hash»",
 'login-throttled' => "Ficisti demasiaos intentos d'aniciu de sesión recientes.
 Por favor espera enantes d'intentalo otra vuelta.",
-'login-abort-generic' => 'Falló la to identificación - Encaboxao',
+'login-abort-generic' => 'Falló la identificación - Encaboxao',
 'loginlanguagelabel' => 'Llingua: $1',
 'suspicious-userlogout' => "La to solicitú de zarrar sesión refugose porque paez qu'unvióla un restolador frañíu o un proxy de caché.",
 
@@ -682,7 +687,7 @@ Contraseña temporal: $2",
 'changeemail' => 'Camudar la direición de corréu electrónicu',
 'changeemail-header' => 'Camudar la direición de corréu electrónicu de la cuenta',
 'changeemail-text' => "Rellena esti formulariu pa camudar la to direición de corréu electrónicu. Tendrás d'escribir la contraseña pa confirmar esti cambéu.",
-'changeemail-no-info' => "Has tar identificáu p'acceder direutamente a esta páxina.",
+'changeemail-no-info' => "Tien d'aniciar sesión pa entrar direutamente a esta páxina.",
 'changeemail-oldemail' => 'Direición de corréu electrónicu actual:',
 'changeemail-newemail' => 'Direición de corréu electrónicu nueva:',
 'changeemail-none' => '(nengún)',
@@ -720,8 +725,8 @@ Contraseña temporal: $2",
 'showpreview' => 'Amosar previsualización',
 'showlivepreview' => 'Vista rápida',
 'showdiff' => 'Amosar cambeos',
-'anoneditwarning' => "'''Avisu:''' Nun tas identificáu.
-La to direición IP va quedar grabada nel historial d'edición d'esta páxina.",
+'anoneditwarning' => "'''Avisu:''' Nun anició sesión.
+La direición IP quedará grabada nel historial d'edición d'esta páxina.",
 'anonpreviewwarning' => "''Nun aniciasti sesión. Al guardar quedará rexistrada la to direición IP nel historial d'edición d'esta páxina.''",
 'missingsummary' => "'''Recordatoriu:''' Nun conseñasti un resume d'edición.
 Si calques nuevamente \"{{int:savearticle}}\", la to edición guardaráse ensin nengún resume.",
@@ -780,15 +785,15 @@ Pa crear la páxina, empecipia a escribir nel cuadru d'embaxo (mira la [[{{Media
 Si llegasti equí por enquivocu, calca nel botón '''atrás''' del to restolador.",
 'anontalkpagetext' => "----
 ''Esta ye la páxina d'alderique pa un usuariu anónimu qu'inda nun creó una cuenta o que nun la usa.''
-Pola mor d'ello ha usase la direición numbérica IP pa identificalu/la.
-Tala IP pue ser compartida por varios usuarios.
-Si yes un usuariu anónimu y notes qu'hai comentarios irrelevantes empobinaos pa ti, por favor [[Special:UserLogin/signup|crea una cuenta]] o [[Special:UserLogin/signup|identifícate]] pa torgar futures confusiones con otros usuarios anónimos.",
+Poro, tenemos qu'usar la direición numbérica IP pa identificalu/la.
+Esa IP pue tar compartida por varios usuarios.
+Si ye un usuariu anónimu y cree qu'hai comentarios irrelevantes empobinaos a vusté, por favor, [[Special:UserLogin/signup|cree una cuenta]] o [[Special:UserLogin/signup|anicie sesión]] pa torgar futures confusiones con otros usuarios anónimos.",
 'noarticletext' => 'Nestos momentos nun hai testu nesta páxina.
-Pues [[Special:Search/{{PAGENAME}}|guetar esti títulu de páxina]] n\'otres páxines,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} guetar los rexistros rellacionaos],
+Pue [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n\'otres páxines,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos],
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta páxina]</span>.',
 'noarticletext-nopermission' => 'Nestos momentos nun hai testu nesta páxina.
-Pues [[Special:Search/{{PAGENAME}}|guetar esti títulu de páxina]] n\'otres páxines o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} guetar los rexistros rellacionaos]</span>, pero nun tienes permisu pa crear esta páxina.',
+Pue [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n\'otres páxines o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos]</span>, pero nun tiene permisu pa crear esta páxina.',
 'missing-revision' => 'La revisión #$1 de la páxina llamada "{{PAGENAME}}" nun esiste.
 
 De vezu la causa d\'esto ye siguir un enllaz antiguu del historial a una páxina que se desanició.
@@ -1126,8 +1131,8 @@ De vezu la causa d'esto ye siguir un enllaz de diferencia antiguu a una páxina
 Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistru de desanicios].",
 
 # Search results
-'searchresults' => 'Resultaos de la gueta',
-'searchresults-title' => 'Resultaos de guetar "$1"',
+'searchresults' => 'Resultaos de la busca',
+'searchresults-title' => 'Resultaos de buscar "$1"',
 'searchresulttext' => 'Pa más información tocante a busques en {{SITENAME}}, vete a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => 'Buscasti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toles páxines qu\'emprimen con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toles páxines qu\'enllacien a "$1"]])',
 'searchsubtitleinvalid' => "Buscasti '''$1'''",
@@ -1145,7 +1150,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'searchmenu-legend' => 'Opciones de busca',
 'searchmenu-exists' => "'''Hai una páxina nomada \"[[\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''¡Crear la páxina \"[[:\$1]]\" nesta wiki!'''",
-'searchhelp-url' => 'Help:Conteníos',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Restolar páxines con esti prefixu]]',
 'searchprofile-articles' => 'Páxines de conteníu',
 'searchprofile-project' => 'Páxines de proyeutu y ayuda',
@@ -1156,7 +1160,7 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'searchprofile-project-tooltip' => 'Buscar en $1',
 'searchprofile-images-tooltip' => 'Buscar ficheros',
 'searchprofile-everything-tooltip' => "Buscar tol conteníu (incluyendo páxines d'alderique)",
-'searchprofile-advanced-tooltip' => 'Guetar nos espacios de nomes personalizaos',
+'searchprofile-advanced-tooltip' => 'Buscar nos espacios de nomes personalizaos',
 'search-result-size' => '$1 ({{PLURAL:$2|1 pallabra|$2 pallabres}})',
 'search-result-category-size' => '{{PLURAL:$1|1 miembru|$1 miembros}} ({{PLURAL:$2|1 subcategoría|$2 subcategories}}, {{PLURAL:$3|1 ficheru|$3 ficheros}})',
 'search-result-score' => 'Relevancia: $1%',
@@ -1167,7 +1171,7 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'search-interwiki-default' => '$1 resultaos:',
 'search-interwiki-more' => '(más)',
 'search-relatedarticle' => 'Rellacionáu',
-'mwsuggest-disable' => 'Desactivar les suxerencies de gueta',
+'mwsuggest-disable' => 'Desactivar les suxerencies de busca',
 'searcheverything-enable' => 'Buscar en tolos espacios de nome',
 'searchrelated' => 'rellacionáu',
 'searchall' => 'toos',
@@ -1176,8 +1180,8 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'showingresultsheader' => "{{PLURAL:$5|Resultáu '''$1''' de '''$3'''|Resultaos '''$1 - $2''' de '''$3'''}} pa '''$4'''",
 'nonefound' => "'''Nota''': De mou predetermináu namái se busca en dellos espacios de nomes. Prueba a poner delantre de la to consulta ''all:'' pa buscar en tol conteníu (inxiriendo páxines d'alderique, plantíes, etc.), o usa como prefixu l'espaciu de nome deseáu.",
 'search-nonefound' => 'Nun hebo resultaos que casaren cola consulta.',
-'powersearch' => 'Gueta avanzada',
-'powersearch-legend' => 'Gueta avanzada',
+'powersearch' => 'Busca avanzada',
+'powersearch-legend' => 'Busca avanzada',
 'powersearch-ns' => 'Buscar nos espacios de nome:',
 'powersearch-redir' => 'Llistar redireiciones',
 'powersearch-field' => 'Buscar',
@@ -1186,14 +1190,14 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'powersearch-togglenone' => 'Dengún',
 'search-external' => 'Busca esterna',
 'searchdisabled' => "La busca en {{SITENAME}} ta desactivada. Mentanto, pues buscar en Google. Has fixate en que'l conteníu de los sos índices de {{SITENAME}} pue tar desfasáu.",
-'search-error' => 'Hebo un error al guetar: $1',
+'search-error' => 'Hebo un error al buscar: $1',
 
 # Preferences page
 'preferences' => 'Preferencies',
 'mypreferences' => 'Preferencies',
 'prefs-edits' => "Númberu d'ediciones:",
-'prefsnologin' => 'Non identificáu',
-'prefsnologintext' => 'Necesites tar <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} identificáu]</span> pa camudar les preferencies d\'usuariu.',
+'prefsnologin' => 'Nun anició sesión',
+'prefsnologintext' => 'Necesita <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aniciar sesión]</span> pa camudar la configuración d\'usuariu.',
 'changepassword' => 'Camudar la clave',
 'prefs-skin' => 'Apariencia',
 'skin-preview' => 'Vista previa',
@@ -1223,7 +1227,7 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'prefs-edit-boxsize' => "Tamañu de la ventana d'edición.",
 'rows' => 'Fileres:',
 'columns' => 'Columnes:',
-'searchresultshead' => 'Guetar',
+'searchresultshead' => 'Buscar',
 'resultsperpage' => 'Resultaos por páxina:',
 'stub-threshold' => 'Llímite superior pa considerar como <a href="#" class="stub">enllaz a entamu</a> (bytes):',
 'stub-threshold-disabled' => 'Desactivao',
@@ -1253,7 +1257,7 @@ Equí tienes un valor al debalu que pues usar: $1",
 'timezoneregion-indian' => 'Océanu Índicu',
 'timezoneregion-pacific' => 'Océanu Pacíficu',
 'allowemail' => 'Dexar a los otros usuarios mandate correos',
-'prefs-searchoptions' => 'Guetar',
+'prefs-searchoptions' => 'Buscar',
 'prefs-namespaces' => 'Espacios de nome',
 'defaultns' => 'Sinón, buscar nestos espacios de nome:',
 'default' => 'predetermináu',
@@ -1326,11 +1330,12 @@ Esta información sedrá pública.",
 'userrights-reason' => 'Motivu:',
 'userrights-no-interwiki' => "Nun tienes permisu pa editar los derechos d'usuariu n'otres wikis.",
 'userrights-nodatabase' => 'La base de datos $1 nun esiste o nun ye llocal.',
-'userrights-nologin' => "Has tar [[Special:UserLogin|identificáu]] con una cuenta d'alministrador p'asignar derechos d'usuariu.",
+'userrights-nologin' => "Tien d'[[Special:UserLogin|aniciar sesión]] con una cuenta d'alministrador pa dar permisos d'usuariu.",
 'userrights-notallowed' => "La to cuenta nun tien permisu p'amestar o desaniciar permisos d'usuariu.",
 'userrights-changeable-col' => 'Grupos que pues camudar',
 'userrights-unchangeable-col' => 'Grupos que nun pues camudar',
 'userrights-conflict' => "¡Hai un conflictu de permisos d'usuariu! Por favor, vuelva a aplicar los cambios.",
+'userrights-removed-self' => 'Retiró correutamente los sos propios drechos. Poro, yá nun tendrá accesu a esta páxina.',
 
 # Groups
 'group' => 'Grupu:',
@@ -1401,6 +1406,8 @@ Esta información sedrá pública.",
 'right-editusercssjs' => "Editar los archivos CSS y JS d'otros usuarios",
 'right-editusercss' => "Editar los archivos CSS d'otros usuarios",
 'right-edituserjs' => "Editar los archivos JS d'otros usuarios",
+'right-editmyusercss' => "Editar los propios ficheros CSS d'usuariu",
+'right-editmyuserjs' => "Editar los propios ficheros JavaScript d'usuariu",
 'right-rollback' => "Revertir rápido a un usuariu qu'editó una páxina determinada",
 'right-markbotedits' => 'Marcar les ediciones revertíes como ediciones de bot',
 'right-noratelimit' => 'Nun tar afeutáu polos llímites de tasa',
@@ -1514,7 +1521,7 @@ Esta información sedrá pública.",
 'uploadbtn' => 'Xubir ficheru',
 'reuploaddesc' => 'Cancelar la xubida y tornar al formulariu de xubíes',
 'upload-tryagain' => 'Unviar descripción camudada del ficheru',
-'uploadnologin' => 'Non identificáu',
+'uploadnologin' => 'Nun anició sesión',
 'uploadnologintext' => 'Tienes que tar [[Special:UserLogin|identificáu]] pa poder xubir archivos.',
 'upload_directory_missing' => 'El direutoriu de xubida ($1) nun esiste y nun pudo ser creáu pol sirvidor de web.',
 'upload_directory_read_only' => "El sirvidor nun pue modificar el direutoriu de xubida d'archivos ($1).",
@@ -1808,15 +1815,15 @@ Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
 'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|más enllaces]] a esti archivu.',
 'linkstoimage-redirect' => '$1 (redireición de ficheru) $2',
 'duplicatesoffile' => "{{PLURAL:$1|El siguiente archivu ye un duplicáu|Los siguientes $1 archivos son duplicaos}} d'esti archivu ([[Special:FileDuplicateSearch/$2|más detalles]]):",
-'sharedupload' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.",
+'sharedupload' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.',
 'sharedupload-desc-there' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
 Llea la [páxina de descripción del ficheru $2] pa más información.',
 'sharedupload-desc-here' => "Esti ficheru ye de $1 y puen usalu otros proyeutos.
 La descripción de la [$2 páxina de descripción del ficheru] s'amuesa darréu.",
-'sharedupload-desc-edit' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
-Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.",
-'sharedupload-desc-create' => "Esti ficheru ye de $1 y se pue usar n'otros proyeutos.
-Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.",
+'sharedupload-desc-edit' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
+Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.',
+'sharedupload-desc-create' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
+Seique quieras camudar la descripción de la so [páxina de descripción de ficheru $2] allí.',
 'filepage-nofile' => 'Nun esiste dengún ficheru con esti nome.',
 'filepage-nofile-link' => 'Nun esiste ficheru dalu con esti nome, pero pues [$1 xubilu].',
 'uploadnewversion-linktext' => "Xubir una nueva versión d'esta imaxe",
@@ -2007,7 +2014,7 @@ Date cuenta de qu'otros sitios web puen enllazar a un ficheru con una URL direut
 'booksources' => 'Fontes de llibros',
 'booksources-search-legend' => 'Busca de fontes de llibros',
 'booksources-go' => 'Dir',
-'booksources-text' => "Esta ye una llista d'enllaces a otros sitios que vienden llibros nuevos y usaos, y que puen tener más información sobre llibros que pueas tar guetando:",
+'booksources-text' => "Esta ye una llista d'enllaces a otros sitios que vienden llibros nuevos y usaos, y que puen tener más información sobre los llibros que ta buscando:",
 'booksources-invalid-isbn' => 'El códigu ISBN que puxisti nun paez que valga; mira que te vien copiáu de la fonte orixinal.',
 
 # Special:Log
@@ -2059,10 +2066,10 @@ Ver tamién les [[Special:WantedCategories|categoríes más buscaes]].",
 'sp-deletedcontributions-contribs' => 'collaboraciones',
 
 # Special:LinkSearch
-'linksearch' => "Gueta d'enllaces esternos",
+'linksearch' => "Busca d'enllaces esternos",
 'linksearch-pat' => 'Patrón de busca:',
 'linksearch-ns' => 'Espaciu de nomes:',
-'linksearch-ok' => 'Guetar',
+'linksearch-ok' => 'Buscar',
 'linksearch-text' => 'Se puen usar comodinos como "*.wikipedia.org".
 Necesita polo menos un dominiu de primer nivel, como "*.org".<br />
 {{PLURAL:$2|Protocolu almitíu|Protocolos almitíos}}: <code>$1</code> (el predetermináu ye http:// si nun se conseña dengún protocolu).',
@@ -2385,7 +2392,7 @@ Consulta'l [[Special:Log/delete|rexistru d'esborraos]] pa ver los esborraos y re
 'undelete-search-title' => 'Buscar páxines desaniciaes',
 'undelete-search-box' => 'Buscar páxines desaniciaes',
 'undelete-search-prefix' => "Amosar páxines qu'empecipien por:",
-'undelete-search-submit' => 'Guetar',
+'undelete-search-submit' => 'Buscar',
 'undelete-no-results' => "Nun s'atoparon páxines afechisques a la busca nel archivu d'esborraos.",
 'undelete-filename-mismatch' => "Nun se pue restaurar la revisión del archivu con fecha $1: el nome d'archivu nun concuaya",
 'undelete-bad-store-key' => "Nun se pue restaurar la revisión del archivu con fecha $1: yá nun esistía l'archivu nel momentu d'esborralu.",
@@ -2433,7 +2440,7 @@ La cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
 'sp-contributions-search' => 'Buscar contribuciones',
 'sp-contributions-username' => "Direición IP o nome d'usuariu:",
 'sp-contributions-toponly' => 'Amosar namái les ediciones que son les caberes revisiones',
-'sp-contributions-submit' => 'Guetar',
+'sp-contributions-submit' => 'Buscar',
 
 # What links here
 'whatlinkshere' => "Lo qu'enllaza equí",
@@ -2519,7 +2526,7 @@ Mira na [[Special:BlockList|llista de bloqueos]] pa revisar los bloqueos.',
 'blocklist-by' => 'Alministración de bloqueos',
 'blocklist-params' => 'Parámetros de bloquéu',
 'blocklist-reason' => 'Motivu',
-'ipblocklist-submit' => 'Guetar',
+'ipblocklist-submit' => 'Buscar',
 'ipblocklist-localblock' => 'Bloquéu llocal',
 'ipblocklist-otherblocks' => '{{PLURAL:$1|Otru bloquéu|Otros bloqueos}}',
 'infiniteblock' => 'pa siempre',
@@ -2827,7 +2834,7 @@ Guárdalu nel ordenador y xúbilu equí.",
 'tooltip-pt-mycontris' => 'Llista de les tos collaboraciones',
 'tooltip-pt-login' => "T'encamentamos que t'identifiques, anque nun ye obligatorio",
 'tooltip-pt-anonlogin' => "T'encamentamos que t'identifiques, anque nun ye obligatorio.",
-'tooltip-pt-logout' => 'Colar',
+'tooltip-pt-logout' => 'Salir',
 'tooltip-ca-talk' => 'Alderique tocante al conteníu de la páxina',
 'tooltip-ca-edit' => "Pues editar esta páxina. Por favor usa'l botón de vista previa enantes de guardar los cambios.",
 'tooltip-ca-addsection' => 'Emprima una seición nueva',
@@ -2948,7 +2955,7 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
 'pageinfo-length' => 'Llonxitú de la páxina (en bytes)',
 'pageinfo-article-id' => 'ID de la páxina',
 'pageinfo-language' => 'Llingua del conteníu de la páxina',
-'pageinfo-robot-policy' => 'Estáu del motor de gueta',
+'pageinfo-robot-policy' => 'Estáu del motor de busca',
 'pageinfo-robot-index' => 'Pue ser índiz',
 'pageinfo-robot-noindex' => 'Nun pue ser índiz',
 'pageinfo-views' => 'Númberu de visites',
@@ -3052,7 +3059,7 @@ Al executalu pues comprometer el to sistema.",
 'newimages-label' => "Nome d'archivu (o una parte d'él):",
 'showhidebots' => '($1 bots)',
 'noimages' => 'Nun hai nada que ver.',
-'ilsubmit' => 'Guetar',
+'ilsubmit' => 'Buscar',
 'bydate' => 'por fecha',
 'sp-newimages-showfrom' => "Amosar los archivos nuevos emprimando dende'l $1 a les $2",
 
@@ -3724,7 +3731,7 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 'fileduplicatesearch-summary' => 'Busca archivos duplicaos basándose nos sos valores fragmentarios.',
 'fileduplicatesearch-legend' => 'Buscar duplicaos',
 'fileduplicatesearch-filename' => 'Nome del ficheru:',
-'fileduplicatesearch-submit' => 'Guetar',
+'fileduplicatesearch-submit' => 'Buscar',
 'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamañu del archivu: $3<br />Triba MIME: $4',
 'fileduplicatesearch-result-1' => 'L\'archivu "$1" nun tien duplicáu idénticu.',
 'fileduplicatesearch-result-n' => 'L\'archivu "$1" tien {{PLURAL:$2|un duplicáu idénticu|$2 duplicaos idénticos}}.',
@@ -3738,7 +3745,7 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 * <span class="mw-specialpagecached">Páxines especiales en caché (seique nun tean actualizaes).</span>',
 'specialpages-group-maintenance' => 'Informes de mantenimientu',
 'specialpages-group-other' => 'Otres páxines especiales',
-'specialpages-group-login' => 'Identificase / crear cuenta',
+'specialpages-group-login' => 'Entrar / crear cuenta',
 'specialpages-group-changes' => 'Cambeos recientes y rexistros',
 'specialpages-group-media' => 'Informes multimedia y xubíes',
 'specialpages-group-users' => 'Usuarios y drechos',
@@ -3793,7 +3800,7 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 'dberr-problems' => '¡Sentímoslo! Esti sitiu ta esperimentando dificultaes téuniques.',
 'dberr-again' => 'Tenta esperar dellos minutos y recargar.',
 'dberr-info' => '(Nun se pue contautar cola base de datos del sirvidor: $1)',
-'dberr-usegoogle' => 'Pues probar a guetar con Google mentanto.',
+'dberr-usegoogle' => 'Pue probar a buscar con Google mentanto.',
 'dberr-outofdate' => 'Atalanta que los sos índices del nuesu conteníu seique nun tean actualizaos.',
 'dberr-cachederror' => 'Esta ye una copia na caché de la páxina que se pidiera, y pue que nun tea actualizada.',
 
@@ -3813,8 +3820,8 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 'htmlform-chosen-placeholder' => 'Seleicione una opción',
 
 # SQLite database support
-'sqlite-has-fts' => '$1 con sofitu pa gueta en testu completu',
-'sqlite-no-fts' => '$1 ensin sofitu pa gueta en testu completu',
+'sqlite-has-fts' => '$1 con sofitu pa busca de testu completu',
+'sqlite-no-fts' => '$1 ensin sofitu pa busca de testu completu',
 
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|desanició}} la páxina $3',
@@ -3869,7 +3876,7 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'feedback-bugnew' => "Yá lo comprobé. Informar d'esti fallu nuevu",
 
 # Search suggestions
-'searchsuggest-search' => 'Guetar',
+'searchsuggest-search' => 'Buscar',
 'searchsuggest-containing' => 'que contién...',
 
 # API errors
index fb2aa4d..a9643d8 100644 (file)
@@ -311,7 +311,6 @@ $messages = array(
 'disclaimers' => 'Walzera',
 'disclaimerpage' => 'Project:Jadif walzereem',
 'edithelp' => 'Pomara',
-'edithelppage' => 'Help:Tokinde bubetat',
 'helppage' => 'Help:Pomara',
 'mainpage' => 'Emudexo',
 'mainpage-description' => 'Emudexo',
@@ -821,7 +820,6 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'viewprevnext' => 'Va ($1 {{int:pipe-separator}} $2) ik ($3) disukel.',
 'searchmenu-exists' => "'''Ixam bu yoltkirafu gu \"[[:\$1]]\" dene bati wiki.'''",
 'searchmenu-new' => "'''Redura va bu \"[[:\$1]]\" den bati wiki!'''",
-'searchhelp-url' => 'Help:Pomara',
 'searchprofile-articles' => 'Teliz',
 'searchprofile-project' => 'Pomarabu ik abdumimaksbu',
 'searchprofile-images' => 'Jonkanaca',
index 3e90308..10f43a0 100644 (file)
@@ -322,7 +322,6 @@ $1',
 'disclaimers' => 'Məsuliyyətdən imtina',
 'disclaimerpage' => 'Project:Məsuliyyətdən imtina',
 'edithelp' => 'Redaktə kömək',
-'edithelppage' => 'Help:Redaktə',
 'helppage' => 'Help:Mündəricat',
 'mainpage' => 'Ana Səhifə',
 'mainpage-description' => 'Ana Səhifə',
@@ -583,10 +582,8 @@ Ola bilər siz parolu müvəffəqiyyətlə dəyişmisiniz yaxud müvəqqəti par
 
 # Special:PasswordReset
 'passwordreset' => 'Parolu yenilə',
-'passwordreset-text' => 'Akkauntunuz haqqında xatırlatmanı elektron poçt vasitəsilə ala bilməniz üçün bu formanı doldurun.',
 'passwordreset-legend' => 'Parolu yenilə',
 'passwordreset-disabled' => 'Yenidən qurulma parolu bu vikidə işləmir',
-'passwordreset-pretext' => '{{PLURAL:$1||Enter one of the pieces of data below}}',
 'passwordreset-username' => 'İstifadəçi adı:',
 'passwordreset-domain' => 'Domen:',
 'passwordreset-email' => 'E-mail ünvanı:',
@@ -731,6 +728,7 @@ Məlumat üçün aşağıda bu səhifənin tarixçəsindən müvafiq silmə qeyd
 Çox güman ki, səhifə silinmişdir.',
 'edit-conflict' => 'Düzəlişlər münaqişəsi',
 'edit-no-change' => 'Sizin redaktələr qeydə alınmamışdır. Belə ki, mətndə heç bir düzəliş edilməmişdir.',
+'postedit-confirmation' => 'Redaktəniz qeyd edildi.',
 'edit-already-exists' => 'Yeni səhifəni yaratmaq mümkün deyil.
 Belə ki, bu adda səhifə artıq mövcuddur.',
 
@@ -909,7 +907,6 @@ $1",
 'searchmenu-legend' => 'Axtarış kriteriyaları',
 'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcuddur'''",
 'searchmenu-new' => "'''Bu vikidə \"[[:\$1]]\" səhifəsini yarat!'''",
-'searchhelp-url' => 'Help:Mündəricət',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu cür prefiksli səhifələri göstər]]',
 'searchprofile-articles' => 'Məqalələr',
 'searchprofile-project' => 'Kömək və Layihə səhifələri',
index 31e7d99..b11b106 100644 (file)
@@ -326,7 +326,6 @@ $1',
 'disclaimers' => 'رد ائتمک',
 'disclaimerpage' => 'Project:عمومی رد ائتمک',
 'edithelp' => 'ديَیشیکلیک‌لر اوچون یاردیم',
-'edithelppage' => 'Help:دَییشدیرمه',
 'helppage' => 'Help:ایچینده‌کیلر',
 'mainpage' => 'آنا صحیفه',
 'mainpage-description' => 'آنا صحیفه',
@@ -618,10 +617,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'رمزی یئنی‌له',
-'passwordreset-text' => 'رمزینیزی یئنیله‌مک اوچون بو فورمو دولدورون.',
 'passwordreset-legend' => 'رمزی یئنی‌له',
 'passwordreset-disabled' => 'بو ویکی‌ده رمزی یئنی‌له‌مک باغلانیب‌دیر.',
-'passwordreset-pretext' => '{{PLURAL:$1|آشاغیداکی وئری پارچالارینین بیرینی وئرین}}',
 'passwordreset-username' => 'ایستیفاده‌چی آدی:',
 'passwordreset-domain' => 'دامنه:',
 'passwordreset-capture' => 'سون نتیجه ایمیل گؤستریلسین؟',
@@ -1093,7 +1090,6 @@ $1",
 'searchmenu-legend' => 'آختارماق تنظیملری',
 'searchmenu-exists' => "'''بو ویکی‌ده «[[:$1]]» آدلی صحیفه واردیر.'''",
 'searchmenu-new' => "'''بو ویکی‌ده «[[:$1]]» صحیفه‌‌سینی يارات!'''",
-'searchhelp-url' => 'Help:ایچینده‌کیلر',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بو اؤن‌اک ایله اولان صحیفه‌لری آختار]]',
 'searchprofile-articles' => 'مقاله‌لر',
 'searchprofile-project' => 'یاردیم و پروژه صحیفه‌لری',
index ba1bc8d..8ce0fcd 100644 (file)
@@ -254,6 +254,18 @@ $messages = array(
 'oct' => 'окт',
 'nov' => 'ноя',
 'dec' => 'дек',
+'january-date' => 'Ғинуар $1',
+'february-date' => 'Февраль $1',
+'march-date' => 'Март $1',
+'april-date' => 'Апрель $1',
+'may-date' => 'Май $1',
+'june-date' => 'Июнь $1',
+'july-date' => 'Июль $1',
+'august-date' => 'Август $1',
+'september-date' => 'Сентябрь $1',
+'october-date' => 'Октябрь $1',
+'november-date' => 'Ноябрь $1',
+'december-date' => 'Сентябрь $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
@@ -279,6 +291,7 @@ $messages = array(
 'newwindow' => '(яңы биттә)',
 'cancel' => 'Бөтөрөргә',
 'moredotdotdot' => 'Дауамы...',
+'morenotlisted' => 'Башҡа бер нимә лә юҡ...',
 'mypage' => 'Бит',
 'mytalk' => 'Әңгәмә',
 'anontalk' => 'Был IP-адресының фекер алышыу бите',
@@ -387,7 +400,6 @@ $1',
 'disclaimers' => 'Яуаплылыҡтан баш тартыу',
 'disclaimerpage' => 'Project:Яуаплылыҡтан баш тартыу',
 'edithelp' => 'Төҙәтеү белешмәһе',
-'edithelppage' => 'Help:Төҙәтеү белешмәһе',
 'helppage' => 'Help:Белешмә',
 'mainpage' => 'Баш бит',
 'mainpage-description' => 'Баш бит',
@@ -481,7 +493,7 @@ $1
 'enterlockreason' => 'Ябылыу сәбәбен һәм ваҡытын белдерегеҙ.',
 'readonlytext' => 'Яңы мәҡәләләр өҫтәү һәм мәғлүмәттәр базаһындағы башҡа үҙгәртеүҙәр хәҙер ябылған. Был планлы хеҙмәтләндереү сәбәпле булыуы мөмкин, аҙаҡтан нормаль хәлгә ҡайтасаҡ.
 
-Ябыусы хәким ҡалдырған аңлатма:
+Ябыусы хаким ҡалдырған аңлатма:
 $1',
 'missing-article' => 'Мәғлүмәттәр базаһында «$1» $2 битенең һоралған тексты табылманы.
 
@@ -563,15 +575,15 @@ $2',
 Шәхси [[Special:Preferences|{{SITENAME}} көйләүҙәрен]] үҙегеҙгә уңайлы итеп үҙгәртергә онотмағыҙ.',
 'yourname' => 'Ҡатнашыусы исеме',
 'userlogin-yourname' => 'Ҡулланыусы исеме',
-'yourpassword' => 'Һеҙҙең пароль',
-'userlogin-yourpassword' => 'Ð\9fаÑ\80олÑ\8c',
-'userlogin-yourpassword-ph' => 'Яңы паролде яҙығыҙ',
-'yourpasswordagain' => 'Ð\9fаÑ\80олде ҡабаттан яҙыу',
-'remembermypassword' => 'Был компьютерҙа паролемде иҫләргә ($1 {{PLURAL:$1|көндән|көндән}} күп түгел)',
-'userlogin-remembermypassword' => 'Ð¥Ó\99Ñ\82еÑ\80Ò\99Ó\99 Ò¡Ð°Ð»Ð´Ñ\8bÑ\80ырға',
+'yourpassword' => 'Серһүҙ',
+'userlogin-yourpassword' => 'СеÑ\80Ò»Ò¯Ò\99',
+'userlogin-yourpassword-ph' => 'Яңы серһүҙҙе яҙығыҙ',
+'yourpasswordagain' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е ҡабаттан яҙыу',
+'remembermypassword' => 'Был компьютерҙа серһүҙемде иҫләргә ($1 {{PLURAL:$1|көндән|көндән}} күп түгел)',
+'userlogin-remembermypassword' => 'СиÑ\81Ñ\82емала Ò¡Ð°Ð»ырға',
 'securelogin-stick-https' => 'Танылғандан һуң HTTPS менән бәйләнеште ҡалдырырға',
 'yourdomainname' => 'Һеҙҙең домен',
-'password-change-forbidden' => 'Был викила паролегеҙҙе үҙгәртә алмайһығыҙ.',
+'password-change-forbidden' => 'Был викила серһүҙегеҙҙе үҙгәртә алмайһығыҙ.',
 'externaldberror' => 'Тышҡы мәғлүмәт базаһы менән танылғанда хата барлыҡҡа килде йәки тышҡы үҙ көйләүҙәрегеҙҙе үҙгәртер өсөн хоҡуҡтарығыҙ етәрле түгел.',
 'login' => 'Танышыу йәки теркәлеү',
 'nav-login-createaccount' => 'Танышыу йәки теркәлеү',
@@ -589,12 +601,12 @@ $2',
 'userlogin-resetlink' => 'Танылыу мәғлүмәттәрен оноттоғоҙмо?',
 'createaccountmail' => 'эл. почта буйынса',
 'createaccountreason' => 'Сәбәп:',
-'badretype' => 'Һеҙ кереткән паролдәр тап килмәйҙәр.',
+'badretype' => 'Һеҙ кереткән серһүҙҙәр тап килмәй.',
 'userexists' => 'Керетелгән исем ҡулланыла инде.
 Зинһар, башҡа исем һайлағыҙ.',
 'loginerror' => 'Танылыу хатаһы',
 'createaccounterror' => 'Иҫәп яҙыуын яһап булмай: $1',
-'nocookiesnew' => 'Иҫәп яҙыуы яһалды, ләкин һеҙ танылмағанһығыҙ. {{SITENAME}} ҡатнашыусыны таныу өсөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уларға рөхсәт бирегеҙ, шунан яңы ҡатнашыусы исеме һәм пароль менән танылығыҙ.',
+'nocookiesnew' => 'Иҫәп яҙыуы яһалды, ләкин һеҙ танылмағанһығыҙ. {{SITENAME}} ҡатнашыусыны таныу өсөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уларға рөхсәт бирегеҙ, шунан яңынан ҡатнашыусы исеме һәм серһүҙ менән танылығыҙ.',
 'nocookieslogin' => '{{SITENAME}} ҡатнашыусыны таныу өсөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уға рөхсәт бирегеҙ һәм яңынан керегеҙ.',
 'nocookiesfornew' => 'Иҫәп яҙмаһы булдырылманы, сөнки уның сығанағын тикшереү мөмкин түгел.
 "Сookies" эшләй икәнлеген тикшерегеҙ, битте яңыртығыҙ  һәм яңынан ҡабатлап ҡарағыҙ.',
@@ -607,25 +619,25 @@ $2',
 'nosuchusershort' => '$1 исемле ҡулланыусы юҡ. Исемде тикшерегеҙ.',
 'nouserspecified' => 'Һеҙ ҡатнашыусы исемен күрһәтергә тейеш.',
 'login-userblocked' => 'Был ҡатнашыусыға рөхсәт юҡ.  Исеме тыйылған.',
-'wrongpassword' => 'Һеҙ ҡулланған пароль ҡабул ителмәй. Яңынан яҙып ҡарағыҙ.',
-'wrongpasswordempty' => 'Зинһар, буш булмаған пароль керетегеҙ.',
-'passwordtooshort' => 'Ð\9fаÑ\80олÑ\8c кәмендә $1 {{PLURAL:$1|символдан}} торорға тейеш.',
-'password-name-match' => 'Керетелгән пароль ҡулланыусы исеменән айырылырға тейеш.',
-'password-login-forbidden' => 'Был ҡатнашыусы исемен һәм паролде ҡулланыу тыйылған',
-'mailmypassword' => 'Яңы пароль ебәрергә',
-'passwordremindertitle' => '{{SITENAME}} өсөн яңы ваҡытлыса пароль',
-'passwordremindertext' => 'Кемдер (бәлки, һеҙ, IP-адресы: $1) {{SITENAME}} ($4) өсөн яңы пароль һоратты. $2 ҡатнашыусыһы өсөн ваҡытлыса яңы пароль яһалды: $3. Әгәр был һеҙ булһағыҙ, системага керегеҙ һәм паролде алмаштырығыҙ. Яңы пароль $5 {{PLURAL:$5|көн}} ғәмәлдә буласаҡ.
-
-Әгәр һеҙ паролде алмаштырыуҙы һоратмаған йәки онотоп кире иҫләгән булһағыҙ һәм үҙгәртергә теләмәһәгеҙ, был хәбәргә иғтибар итмәгеҙ һәм элекке паролегеҙҙе ҡулланыуығыҙҙы дауам итегеҙ.',
+'wrongpassword' => 'Һеҙ ҡулланған серһүҙ ҡабул ителмәй. Яңынан яҙып ҡарағыҙ.',
+'wrongpasswordempty' => 'Зинһар, буш булмаған серһүҙ керетегеҙ.',
+'passwordtooshort' => 'СеÑ\80Ò»Ò¯Ò\99 кәмендә $1 {{PLURAL:$1|символдан}} торорға тейеш.',
+'password-name-match' => 'Керетелгән серһүҙ ҡулланыусы исеменән айырылырға тейеш.',
+'password-login-forbidden' => 'Был ҡатнашыусы исемен һәм серһүҙҙе ҡулланыу тыйылған',
+'mailmypassword' => 'Яңы серһүҙ ебәрергә',
+'passwordremindertitle' => '{{SITENAME}} өсөн яңы ваҡытлыса серһүҙ',
+'passwordremindertext' => 'Кемдер (бәлки, һеҙ, IP-адресы: $1) {{SITENAME}} ($4) өсөн яңы серһүҙ һоратты. $2 ҡатнашыусыһы өсөн ваҡытлыса яңы серһүҙ яһалды: $3. Әгәр был һеҙ булһағыҙ, системага керегеҙ һәм серһүҙ алмаштырығыҙ. Яңы серһүҙ $5 {{PLURAL:$5|көн}} ғәмәлдә буласаҡ.
+
+Әгәр һеҙ серһүҙҙе алмаштырыуҙы һоратмаған йәки онотоп кире иҫләгән булһағыҙ һәм үҙгәртергә теләмәһәгеҙ, был хәбәргә иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуығыҙҙы дауам итегеҙ.',
 'noemail' => '$1 исемле ҡулланыусы өсөн электрон почта адресы белдерелмәгән.',
 'noemailcreate' => 'Дөрөҫ электрон почта адресы күрһәтеү кәрәк',
-'passwordsent' => 'Яңы пароль $1 исемле ҡатнашыусының электрон почта адресына ебәрелде.
+'passwordsent' => 'Яңы серһүҙ $1 исемле ҡатнашыусының электрон почта адресына ебәрелде.
 
-Зинһар, паролде алғас, системаға яңынан керегеҙ.',
-'blocked-mailpassword' => 'Һеҙҙең IP-адресығыҙҙан мөхәррирләү тыйылған, шул сәбәпле пароль тергеҙеү ғәмәле лә блокланған.',
+Зинһар, серһүҙҙе алғас, системаға яңынан керегеҙ.',
+'blocked-mailpassword' => 'Һеҙҙең IP-адресығыҙҙан мөхәррирләү тыйылған, шул сәбәпле серһүҙ тергеҙеү ғәмәле лә блокланған.',
 'eauthentsent' => 'Күрһәтелгән электрон почта адресына адресты үҙгәртеүҙе раҫлауығыҙ өсөн хат ебәрелде. Хатта, был адрес һеҙҙеке булғанын раҫлау өсөн ниндәй ғәмәлдәрҙе үтәү кәрәкле икәне тураһында мәғлүмәт бар.',
-'throttled-mailpassword' => 'Ð\9fаÑ\80олде иҫләтеү ғәмәле {{PLURAL:$1|һуңғы $1 сәғәт}} эсенде ҡулланылды инде.
\9dаÑ\81аÑ\80 Ð½Ð¸Ó\99Ñ\82ле Ò¡Ñ\83лланÑ\8bÑ\83Ò\99аÑ\80Ò\93а Ò¡Ð°Ñ\80Ñ\88Ñ\8b, Ð¿Ð°Ñ\80олде иҫләтеү ғәмәлен {{PLURAL:$1|сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
+'throttled-mailpassword' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е иҫләтеү ғәмәле {{PLURAL:$1|һуңғы $1 сәғәт}} эсенде ҡулланылды инде.
\9dаÑ\81аÑ\80 Ð½Ð¸Ó\99Ñ\82ле Ò¡Ñ\83лланÑ\8bÑ\83Ò\99аÑ\80Ò\93а Ò¡Ð°Ñ\80Ñ\88Ñ\8b, Ð¡ÐµÑ\80Ò»Ò¯Ò\99 иҫләтеү ғәмәлен {{PLURAL:$1|сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
 'mailerror' => 'Хат ебәреү хатаһы: $1',
 'acct_creation_throttle_hit' => 'Һеҙҙең IP-адрестан бер тәүлек эсендә {{PLURAL:$1|$1 иҫәп яҙыуы}} яһалды инде, был һан был ваҡыт аралығы өсөн максимум һан. Шул сәбәпле, был IP-адресына эйә ҡулланыусылар, хәҙерге ваҡытта яңы иҫәп яҙыуы яһай алмайҙар.',
 'emailauthenticated' => 'Электрон почта адресығыҙ раҫланды: $3, $2.',
@@ -639,9 +651,9 @@ $2',
 'accountcreated' => 'Иҫәп яҙыуы яһалды',
 'accountcreatedtext' => '$1 исемле ҡулланыусы өсөн исәп яҙыуы яһалды.',
 'createaccount-title' => '{{SITENAME}}: теркәлеү',
-'createaccount-text' => 'Кемдер, электрон почта адресығыҙҙы күрһәтеп, {{SITENAME}} ($4) проектында «$3» пароле менән «$2» исемле иҫәп яҙыуы теркәне. Һеҙҙең кереүегеҙ һәм паролегеҙҙе алмаштырыуығыҙ кәрәк.
+'createaccount-text' => 'Кемдер, электрон почта адресығыҙҙы күрһәтеп, {{SITENAME}} ($4) проектында «$3» пароле менән «$2» исемле иҫәп яҙыуы теркәне. Һеҙҙең кереүегеҙ һәм серһүҙегеҙҙе алмаштырыуығыҙ кәрәк.
 
-Иҫәп яҙыуы яңылыш яһалһа был хатҡа иғтибар итмәгеҙ.',
+Иҫәп яҙыуы яңылыш яһалһа, был хатҡа иғтибар итмәгеҙ.',
 'usernamehasherror' => 'Ҡулланыусы исемендә "#" символы була алмай',
 'login-throttled' => 'Һеҙ системала артыҡ күп танылырға тырыштығыҙ.
 Зинһар, ҡабатламаҫтан алда бераҙ көтөгөҙ.',
@@ -654,30 +666,30 @@ $2',
 'user-mail-no-addy' => 'Электрон почта адресы булмайынса электрон хәбәр ебәреп ҡараны',
 
 # Change password dialog
-'resetpass' => 'Ð\9fаÑ\80олде үҙгәртеү',
-'resetpass_announce' => 'Һеҙ системала электрон почта аша алынған ваҡытлыса пароль менән танылдығыҙ. Системаға кереүҙә тамалау өсөн яңы пароль булдырығыҙ.',
-'resetpass_header' => 'Иҫәп яҙыуы паролен үҙгәртеү',
-'oldpassword' => 'Иҫке пароль:',
-'newpassword' => 'Яңы пароль:',
-'retypenew' => 'Ð\9fаÑ\80олде яңынан керетегеҙ:',
-'resetpass_submit' => 'Ð\9fаÑ\80олÑ\8c ҡуйырға һәм танышырға',
-'resetpass_success' => 'Ð\9fаÑ\80олегеҙ уңышлы үҙгәртелде! Системала танышыу бара...',
-'resetpass_forbidden' => 'Ð\9fаÑ\80олде үҙгәртеп булмай',
+'resetpass' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е үҙгәртеү',
+'resetpass_announce' => 'Һеҙ системала электрон почта аша алынған ваҡытлыса серһүҙ менән танылдығыҙ. Системаға кереүҙә тамалау өсөн яңы серһүҙ булдырығыҙ.',
+'resetpass_header' => 'Иҫәп яҙыуы серһүҙен үҙгәртеү',
+'oldpassword' => 'Иҫке серһүҙ:',
+'newpassword' => 'Яңы серһүҙ:',
+'retypenew' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е яңынан керетегеҙ:',
+'resetpass_submit' => 'СеÑ\80Ò»Ò¯Ò\99 ҡуйырға һәм танышырға',
+'resetpass_success' => 'СеÑ\80Ò»Ò¯Ò\99егеҙ уңышлы үҙгәртелде! Системала танышыу бара...',
+'resetpass_forbidden' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е үҙгәртеп булмай',
 'resetpass-no-info' => 'Был битте туранан ҡарау өсөн һеҙгә системала танылырға кәрәк.',
-'resetpass-submit-loggedin' => 'Ð\9fаÑ\80олде үҙгәртергә',
+'resetpass-submit-loggedin' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е үҙгәртергә',
 'resetpass-submit-cancel' => 'Бөтөрөргә',
-'resetpass-wrong-oldpass' => 'Хаталы ваҡытлыса йәки ағымдағы пароль.
-Һеҙ, бәлки, паролегеҙҙе алмаштырғанһығыҙ йәки яңы пароль һоратҡанһығыҙ.',
-'resetpass-temp-password' => 'Ваҡытлыса пароль',
+'resetpass-wrong-oldpass' => 'Хаталы ваҡытлыса йәки ағымдағы серһүҙ.
+Һеҙ, бәлки, серһүҙегеҙҙе алмаштырғанһығыҙ йәки яңы серһүҙ һоратҡанһығыҙ.',
+'resetpass-temp-password' => 'Ваҡытлыса серһүҙ',
 
 # Special:PasswordReset
-'passwordreset' => 'Ð\9fаÑ\80олде ташлатыу',
-'passwordreset-legend' => 'Ð\9fаÑ\80олде ташлатыу',
-'passwordreset-disabled' => 'Был викила паролде ташлатыу ғәмәлдә түгел',
+'passwordreset' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е ташлатыу',
+'passwordreset-legend' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е ташлатыу',
+'passwordreset-disabled' => 'Был викила серһүҙҙе ташлатыу ғәмәлдә түгел',
 'passwordreset-username' => 'Ҡулланыусы исеме:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Хәбәрҙең һуңғы хәлен ҡарарғамы?',
-'passwordreset-capture-help' => 'Әгәр был билдәне ҡуйһағыҙ, ҡулланыусыға ебәрелгән ваҡытлыса пароль һеҙгә күрһәтеләсәк.',
+'passwordreset-capture-help' => 'Әгәр был билдәне ҡуйһағыҙ, ҡулланыусыға ебәрелгән ваҡытлыса серһүҙ һеҙгә күрһәтеләсәк.',
 'passwordreset-email' => 'Электрон почта адресы:',
 'passwordreset-emailtitle' => '{{SITENAME}} иҫәп яҙыуы мәғлүмәттәре',
 'passwordreset-emailtext-ip' => 'Берәү (бәлки һәҙ, $1 IP-адресынан ) {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты.
@@ -685,18 +697,18 @@ $2',
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|пароль|паролдәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
-Һеҙ системала танылырға һәм яңы пароль һайларға тейешһегеҙ.
-Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке паролегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке паролегеҙҙе ҡулланыуҙы дауам итегеҙ.',
+Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
+Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуҙы дауам итегеҙ.',
 'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|пароль|паролдәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
-Һеҙ системала танылырға һәм яңы пароль һайларға тейешһегеҙ.
-Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке паролегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке паролегеҙҙе ҡулланыуҙы дауам итегеҙ.',
+Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
+Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙеҙҙе ҡулланыуҙы дауам итегеҙ.',
 'passwordreset-emailelement' => 'Ҡулланыусы исеме: $1
-Ваҡытлыса пароль: $2',
+Ваҡытлыса серһүҙ: $2',
 'passwordreset-emailsent' => 'Электрон почта аша иҫләтеү хаты ебәрелде.',
 'passwordreset-emailsent-capture' => 'Ебәрелгән хәтерләтеү хәбәре түбәндә күрһәлгән.',
 'passwordreset-emailerror-capture' => 'Килеп сыҡҡан хәтерләтеү хәбәре түбәндә күрһәтелгән, тик уны ебәреү уңышһыҙ тамамланды. Сәбәбе:$1',
@@ -704,12 +716,12 @@ $2
 # Special:ChangeEmail
 'changeemail' => 'Электрон почта адресын үҙгәртергә',
 'changeemail-header' => 'Электрон почта адресын үҙгәртеү',
-'changeemail-text' => 'Электрон почта адресығыҙҙы үҙгәртеү өсөн түбәндәге форманы тултырығыҙ. Үҙгәртеүҙәрҙе раҫлау өсөн паролегеҙҙе керетеү кәрәк буласаҡ.',
+'changeemail-text' => 'Электрон почта адресығыҙҙы үҙгәртеү өсөн түбәндәге форманы тултырығыҙ. Үҙгәртеүҙәрҙе раҫлау өсөн серһүҙегеҙҙе керетеү кәрәк буласаҡ.',
 'changeemail-no-info' => 'Был биткә туранан ирешеү өсөн һеҙгә системала танылыу кәрәк.',
 'changeemail-oldemail' => 'Хәҙерге электрон почта адресы:',
 'changeemail-newemail' => 'Яңы электрон почта адресы:',
 'changeemail-none' => '(юҡ)',
-'changeemail-password' => '{{SITENAME}} прокты өсөн паролегеҙ:',
+'changeemail-password' => '{{SITENAME}} прокты өсөн серһүҙегеҙ:',
 'changeemail-submit' => 'Адресты үҙгәртергә',
 'changeemail-cancel' => 'Кире алырға',
 
@@ -752,30 +764,30 @@ $2
 'blockedtitle' => 'Ҡулланыусы блокланған',
 'blockedtext' => "'''Иҫәп яҙыуығыҙ йәки IP-адресығыҙ блокланған.'''
 
-Блоклаусы хәким: $1.
+Блоклаусы хаким: $1.
 Белдерелгән сәбәп: ''$2''.
 
 * Блоклау башланған ваҡыт: $8
 * Блоклау  аҙағы: $6
 * Блоклауҙар һаны: $7
 
-Һеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хәкимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.
-Иҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хәкимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.
+Һеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хакимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.
+Иҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хакимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.
 Һеҙҙең IP-адрес — $3, блоклау идентификаторы — #$5.
 Хаттарҙа был мәғлүмәттәрҙе күрһәтергә онотмағыҙ.",
-'autoblockedtext' => "Һеҙҙең IP-адресығыҙ автоматик рәүештә блокланған. Сәбәбе, был адрес элек блокланған ҡулланыусыларҙың береһе тарафынан ҡулланылған. Блоклаусы хәким ($1) киләһе сәбәпте белдергән:
+'autoblockedtext' => "Һеҙҙең IP-адресығыҙ автоматик рәүештә блокланған. Сәбәбе, был адрес элек блокланған ҡулланыусыларҙың береһе тарафынан ҡулланылған. Блоклаусы хаким ($1) киләһе сәбәпте белдергән:
 
 :«$2»
 
-Блоклаусы хәким: $1.
+Блоклаусы хаким: $1.
 Белдерелгән сәбәп: ''$2''.
 
 * Блоклау башланған ваҡыт: $8
 * Блоклау  аҙағы: $6
 * Блоклауҙар һаны: $7
 
-Һеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хәкимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.
-Иҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хәкимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.
+Һеҙ $1 йәки башҡа [[{{MediaWiki:Grouppage-sysop}}|хакимгә]] блоклау буйынса һорауҙарығыҙҙы ебәрә алаһығыҙ.
+Иҫегеҙҙе тотоғоҙ: әгәр һеҙ теркәлмәгән һәм электрон почта адресығыҙҙы раҫламаған булһағыҙ ([[Special:Preferences|көйләүҙәрем битендә]]), хакимгә хат ебәрә алмайһығыҙ. Шулай ук блоклау ваҡытында һеҙҙең хат ебәреү мөмкинлегегеҙ сикләгән булырға ла мөмкин.
 Һеҙҙең IP-адрес — $3, блоклау идентификаторы — #$5.
 Хаттарҙа был мәғлүмәттәрҙе күрһәтергә онотмағыҙ.",
 'blockednoreason' => 'сәбәп белдерелмәгән',
@@ -788,10 +800,10 @@ $2
 'loginreqtitle' => 'Танылыу кәрәк',
 'loginreqlink' => 'танылыу',
 'loginreqpagetext' => 'Башҡа биттәрҙе ҡарау өсөн $1 кәрәк.',
-'accmailtitle' => 'Ð\9fаÑ\80олÑ\8c ебәрелде.',
-'accmailtext' => "[[User talk:$1|$1]] ҡулланыусыһы өсөн яһалған пароль $2 адресына ебәрелде.
+'accmailtitle' => 'СеÑ\80Ò»Ò¯Ò\99 ебәрелде.',
+'accmailtext' => "[[User talk:$1|$1]] ҡулланыусыһы өсөн яһалған серһүҙ $2 адресына ебәрелде.
 
-Системала танылғандан һуң ''[[Special:ChangePassword|паролегеҙҙе үҙгәртә алаһығыҙ]]''.",
+Системала танылғандан һуң ''[[Special:ChangePassword|серһүҙегеҙҙе үҙгәртә алаһығыҙ]]''.",
 'newarticle' => '(Яңы)',
 'newarticletext' => "Һеҙ һылтанма буйынса әлегә яһалмаған биткә күстегеҙ.
 Яңы бит яһар өсөн аҫтағы тәҙрәгә текст керетегеҙ (тулыраҡ мәғлүмәт өсөн [[{{MediaWiki:Helppage}}|ярҙам битен]] ҡарағыҙ).
@@ -845,9 +857,9 @@ $2
 Мәҡәлә текстын боҙолоуҙан һаҡлау өсөн үҙгәртеүегеҙ кире алынды.
 Бындай хәлдәр хаталы аноним web-проксилар ҡулланғанда килеп сығырға мөмкин.",
 'edit_form_incomplete' => "'''Мөхәррирләү формаһының ҡайһы өлөштәре серверға барып етмәне. Төҙәтеүҙәрегеҙҙе яҡшы итеп тикшерегеҙ һәм яңынан ҡабатлағыҙ.'''",
-'editing' => 'Мөхәрирләү  $1',
+'editing' => 'Мөхәррирләү  $1',
 'creating' => 'Төҙөү $1',
-'editingsection' => 'Мөхәрирләү  $1 (секция)',
+'editingsection' => 'Мөхәррирләү  $1 (секция)',
 'editingcomment' => '$1 мөхәррирләнә (яңы бүлек)',
 'editconflict' => 'Мөхәррирләү конфликты: $1',
 'explainconflict' => 'Һеҙ был битте мөхәррирләгән ваҡытта кемдер яңы үҙгәрештәр керетте.
@@ -872,12 +884,12 @@ $2
 'readonlywarning' => "'''КИҪӘТЕҮ: Техник хеҙмәтләндереү сәбәпле мәғлүмәттәр базаһы блокланған, шунлыҡтан үҙгәртеүҙәрегеҙҙе хәҙер һаҡлай алмайһығыҙ.'''
 Тексты аҙаҡтан ҡулланыу өсөн файлда һаҡлап тора алаһығыҙ.
 
әким белдергән сәбәп: $1",
аким белдергән сәбәп: $1",
 'protectedpagewarning' => "'''КИҪӘТЕҮ: Һеҙ был битте үҙгәртә алмайһығыҙ, был хоҡуҡҡа хакимдәр генә эйә.'''
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
 'semiprotectedpagewarning' => "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хәкимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} керә:",
+'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} керә:",
 'titleprotectedwarning' => "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
 'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
@@ -1033,7 +1045,7 @@ $3 белдергән сәбәп: ''$2''",
 'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
 'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
 'revdelete-text' => "'''Биттәрҙең юйылған версиялары һәм ваҡиғалар, бит тарихында һәм яҙмаларҙа күрһәтеләсәк, ләкин уларҙың эстәлектәренең бер өлөшө ябай ҡулланыусыларға асыҡ булмаясаҡ.'''
-{{SITENAME}} проектының хәкимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
+{{SITENAME}} проектының хакимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
 'revdelete-confirm' => 'Зинһар, был ғәмәлде үтәргә теләүегеҙҙе, буласаҡ һөҙөмтәләрҙә аңлауығыҙҙы, [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса эшләүегеҙҙе раҫлағыҙ.',
 'revdelete-suppress-text' => "Йәшереү '''тик''' киләһе осраҡтарҙа ғына башҡарыла:
 
@@ -1045,11 +1057,11 @@ $3 белдергән сәбәп: ''$2''",
 'revdelete-hide-name' => 'Ғәмәлде һәм маҡсатын йәшерергә',
 'revdelete-hide-comment' => 'Үҙгәртеү тасуирламаларын йәшерергә',
 'revdelete-hide-user' => 'Мөхәррирләүсенең исемен/IP-адресын йәшерергә',
-'revdelete-hide-restricted' => 'Мәғлүмәттәрҙе хәкимдәрҙән дә йәшерергә',
+'revdelete-hide-restricted' => 'Мәғлүмәттәрҙе хакимдәрҙән дә йәшерергә',
 'revdelete-radio-same' => '(үҙгәртмәҫкә)',
 'revdelete-radio-set' => 'Эйе',
 'revdelete-radio-unset' => 'Юҡ',
-'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хәкимдәрҙән дә йәшерергә',
+'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хакимдәрҙән дә йәшерергә',
 'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
 'revdelete-log' => 'Сәбәп:',
 'revdelete-submit' => 'Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға',
@@ -1074,7 +1086,7 @@ $1",
 'revdelete-no-change' => "'''Иғтибар:'''  $2 $1 ваҡытлы яҙыу, һоратылған күренеүсәнлек көйләүҙәренә эйә.",
 'revdelete-concurrent-change' => '$2, $1 ваҡытлы яҙманы үҙгәртеүҙә хата: һеҙ уны үҙгәртергә тырышҡан ваҡытта уның статусын башҡа берәү үҙгәрткән.
 Зинһар, яҙмаларҙы ҡарағыҙ.',
-'revdelete-only-restricted' => '$2, $1 ваҡытлы яҙманы йәшереүҙә хата: башҡа йәшереү көйләүҙәренең береһен һайламайынса яҙманы хәкимдәрҙән йәшерә алмайһығыҙ.',
+'revdelete-only-restricted' => '$2, $1 ваҡытлы яҙманы йәшереүҙә хата: башҡа йәшереү көйләүҙәренең береһен һайламайынса яҙманы хакимдәрҙән йәшерә алмайһығыҙ.',
 'revdelete-reason-dropdown' => '* Ғәҙәттәге юйыу сәбәптәре
 ** Авторлыҡ хоҡуҡтарын боҙоу
 ** Урынһыҙ комментарий йәки шәхси мәғлүмәт
@@ -1092,8 +1104,8 @@ $1",
 
 # History merging
 'mergehistory' => 'Үҙгәртеүҙәр тарихын берләштерергә',
-'mergehistory-header' => 'Был бит, ике биттең үҙгәртеүҙәр тарихын берләштерергә мөмкинселек бирә.
ыл үҙгәртеүҙең, бит тарихын, боҙмайынса, дауам иттерәсәген тикшерегеҙ.',
+'mergehistory-header' => 'Был бит, ике биттең үҙгәртеүҙәр тарихын берләштереү мөмкинлеген бирә.
ерләштереүҙең үҙгәртеүҙәр тарихын боҙмауын тикшерегеҙ.',
 'mergehistory-box' => 'Ике биттең үҙгәртеүҙәр тарихын берләштерергә',
 'mergehistory-from' => 'Сығанаҡ бит:',
 'mergehistory-into' => 'Маҡсат бит:',
@@ -1155,17 +1167,16 @@ $1",
 'searchmenu-legend' => 'Эҙләү көйләүҙәре',
 'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
 'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
-'searchhelp-url' => 'Help:Эстәлек',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Был префикслы биттәрҙе күрһәтергә]]',
 'searchprofile-articles' => 'Эстәлек биттәре',
-'searchprofile-project' => 'Ярҙам һәм проект биттәре',
+'searchprofile-project' => 'Ярҙамсы һәм проект биттәре',
 'searchprofile-images' => 'Мультимедиа',
 'searchprofile-everything' => 'Барыһы',
 'searchprofile-advanced' => 'Киңәйтелгән',
 'searchprofile-articles-tooltip' => '$1 эсендә эҙлә',
 'searchprofile-project-tooltip' => '$1 эсендә эҙлә',
 'searchprofile-images-tooltip' => 'Файлдар эҙләү',
-'searchprofile-everything-tooltip' => 'Бар биттәрҙә эҙләү (фекер алышыу биттәрендә лә)',
+'searchprofile-everything-tooltip' => 'Барлыҡ биттәрҙә эҙләү (фекерләшеү биттәрендә лә)',
 'searchprofile-advanced-tooltip' => 'Махсус исем арауыҡтарында эҙләргә',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 һүҙ|$2 һүҙ}})',
 'search-result-category-size' => '{{PLURAL:$1|$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
@@ -1205,7 +1216,7 @@ $1",
 'prefs-edits' => 'Төҙәтеүҙәр һаны:',
 'prefsnologin' => 'Танылмағанһығыҙ',
 'prefsnologintext' => 'Ҡатнашыусы көйләүҙәрен үҙгәртеү өсөн, һеҙ <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}}танылырға]</span> тейешһегеҙ.',
-'changepassword' => 'Ð\9fаÑ\80олде үҙгәртергә',
+'changepassword' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е үҙгәртергә',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан байҡау',
 'datedefault' => 'Ғәҙәттәге',
@@ -1222,7 +1233,7 @@ $1",
 'prefs-watchlist-edits-max' => 'Иң күбе: 1000',
 'prefs-watchlist-token' => 'Күҙәтеү исемлеге токены:',
 'prefs-misc' => 'Башҡа көйләүҙәр',
-'prefs-resetpass' => 'Ð\9fаÑ\80олде үҙгәртергә',
+'prefs-resetpass' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е үҙгәртергә',
 'prefs-changeemail' => 'Электрон почта адресын үҙгәртергә',
 'prefs-setemail' => 'Электрон почта адресын көйләү',
 'prefs-email' => 'Электрон почта көйләүҙәре',
@@ -1298,8 +1309,8 @@ $1",
 'email' => 'Электрон почта',
 'prefs-help-realname' => 'Ысын исемегеҙ (теләк буйынса).
 Әгәр уны күрһәтһәгеҙ, битте кемдең төҙәткәнен күрһәткәндә ҡулланыласаҡ.',
-'prefs-help-email' => 'Электрон почта (теләк буйынса). Күрһәтелгән булһа, ғәмәлдә булған паролегеҙҙе онотҡан осраҡта адресығыҙға яңы пароль ебәреләсәк.
-Шулай уҡ башҡа ҡатнашыусылар менән үҙ битегеҙ аша, электрон почтағыҙҙың адресын күрһәтмәйенсә, тура бәйләнешкә инергә мөмкинселек бирә.',
+'prefs-help-email' => 'Электрон почта (теләк буйынса). Күрһәтелгән булһа, ғәмәлдә булған серһүҙегеҙҙе онотҡан осраҡта адресығыҙға яңы серһүҙ ебәреләсәк.
+Шулай уҡ башҡа ҡатнашыусылар менән үҙ битегеҙ аша, электрон почтағыҙҙың адресын күрһәтмәйенсә, тура бәйләнешкә инергә мөмкинлек бирә.',
 'prefs-help-email-others' => 'Ул шулай уҡ башҡа ҡулланыусыларға, шәхси битегеҙҙәге һылтанма аша, һеҙҙән менән бәйләнешкә инергә рөхсәт бирәсәк.
 Һеҙҙең почта адресығыҙ уларға күрһәтелмәйәсәк.',
 'prefs-help-email-required' => 'Электрон почта адресы кәрәк.',
@@ -1339,7 +1350,7 @@ $1",
 'userrights-reason' => 'Сәбәп:',
 'userrights-no-interwiki' => 'Һеҙҙең башҡа вики-проекттарҙа ҡатнашыусыларҙың хоҡуҡтарын үҙгәртергә хоҡуҡтарығыҙ юҡ.',
 'userrights-nodatabase' => '$1 базаһы юҡ йәки урындағы (локаль) база түгел.',
-'userrights-nologin' => 'Ҡатнашыусыларҙың хоҡуҡтарын билдәләр өсөн, һеҙ хәким хоҡуҡтары менән [[Special:UserLogin|танылырға]] тейешһегеҙ.',
+'userrights-nologin' => 'Ҡатнашыусыларҙың хоҡуҡтарын билдәләр өсөн, һеҙ хаким хоҡуҡтары менән [[Special:UserLogin|танылырға]] тейешһегеҙ.',
 'userrights-notallowed' => 'Һеҙҙең иҫәп яҙыуығыҙҙан ҡатнашыусыларҙың хоҡуҡтарын өҫтәү йәки алыу рөхсәт ителмәгән.',
 'userrights-changeable-col' => 'Һеҙ үҙгәртә алған төркөмдәр',
 'userrights-unchangeable-col' => 'Һеҙ үҙгәртә алмаған төркөмдәр',
@@ -1349,7 +1360,7 @@ $1",
 'group-user' => 'Ҡулланыусылар',
 'group-autoconfirmed' => 'Автоматик раҫланған ҡулланыусылар',
 'group-bot' => 'Боттар',
-'group-sysop' => 'Хәкимдәр',
+'group-sysop' => 'Хакимдәр',
 'group-bureaucrat' => 'Бюрократтар',
 'group-suppress' => 'Тикшереүселәр',
 'group-all' => '(бөтә)',
@@ -1399,7 +1410,7 @@ $1",
 'right-deletedtext' => 'Биттең юйылған өлгөләре араһындағы юйылған текстты һәм үҙгәртеүҙәрҙе ҡарау',
 'right-browsearchive' => 'Юйылған биттәрҙе эҙләү',
 'right-undelete' => 'Юйылған биттәрҙе кире ҡайтарыу',
-'right-suppressrevision' => 'Биттәрҙең хәкимдәрҙән йәшерелгән өлгөләрен ҡарау һәм тергеҙеү',
+'right-suppressrevision' => 'Биттәрҙең хакимдәрҙән йәшерелгән өлгөләрен ҡарау һәм тергеҙеү',
 'right-suppressionlog' => 'Шәхси журналдарҙы ҡарау',
 'right-block' => 'Башҡа ҡатнашыусыларға мөхәррирләүҙе тыйыу',
 'right-blockemail' => 'Электрон почтаға хат ебәреүҙе тыйыу',
@@ -1428,7 +1439,7 @@ $1",
 'right-siteadmin' => 'Мәғлүмәттәр базаһын асыу һәм ябыу',
 'right-override-export-depth' => '5-се тәрәнлеккә тиклем бәйле биттәре менән бергә биттәрҙе сығарыу',
 'right-sendemail' => 'Башҡа ҡатнашыусыларға электрон почта аша хат ебәреү',
-'right-passwordreset' => 'Ð\9fаÑ\80олде Ñ\8fÒ£Ñ\8bÑ\80Ñ\82Ñ\8bÑ\83 Ñ\85Ó\99бÓ\99Ñ\80Ò\99Ó\99Ñ\80ен ҡарау',
+'right-passwordreset' => 'СеÑ\80Ò»Ò¯Ò\99Ò\99е Ñ\8fÒ£Ñ\8bÑ\80Ñ\82Ñ\8bÑ\83 Ð¾Ñ\81Ñ\80аҡÑ\82аÑ\80Ñ\8bн ҡарау',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Яңы ҡулланыусы яҙмалары',
@@ -1760,7 +1771,7 @@ $1',
 Бәлки, һеҙгә сайт бушыраҡ саҡта ҡабатлап ҡарарға кәрәктер.',
 
 'license' => 'Рөхсәтнамә:',
-'license-header' => 'Рөхсәтнамә',
+'license-header' => 'Рөхсәтнәмә',
 'nolicense' => 'Бер нимә лә һайланмаған',
 'license-nopreview' => '(Ҡарап сығыу мөмкин түгел)',
 'upload_source_url' => '(Дөрөҫ, дөйөм ҡулланыу өсөн асыҡ URL-адрес)',
@@ -2021,7 +2032,7 @@ $1',
 'prevpage' => 'Алдағы бит ($1)',
 'allpagesfrom' => 'Ошондай хәрефтәрҙән башланған биттәрҙе күрһәтергә:',
 'allpagesto' => 'Ошоға бөткән биттәрҙе күрһәтергә:',
-'allarticles' => 'Бөтә мәҡәләләр',
+'allarticles' => 'Барлыҡ мәҡәләләр',
 'allinnamespace' => 'Бөтә биттәр (Исемдәре «$1» арауығында)',
 'allnotinnamespace' => 'Бөтә биттәр («$1» исемдәр арауығынан башҡа)',
 'allpagesprev' => 'Алдағы',
@@ -2075,7 +2086,7 @@ $1',
 'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендә $1 {{PLURAL:$1|үҙгәртеү}}',
 'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
 'activeusers-hidebots' => 'Боттарҙы йәшерергә',
-'activeusers-hidesysops' => 'Хәкимдәрҙе йәшерергә',
+'activeusers-hidesysops' => 'Хакимдәрҙе йәшерергә',
 'activeusers-noresult' => 'Ҡатнашыусылар табылманы',
 
 # Special:ListGroupRights
@@ -2154,7 +2165,7 @@ $1',
 'notanarticle' => 'Мәҡәлә түгел',
 'notvisiblerev' => 'Башҡа ҡатнашыусы тарафынан керетелгән һуңғы өлгө юйылған',
 'watchnochange' => 'Күрһәтелгән арауыҡта күҙәтеүҙәр исемлегенән бер ни ҙә үҙгәрмәгән.',
-'watchlist-details' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә, фекер алышыу биттәрен һанамағанда, {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlist-details' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә, фекерләшеү биттәрен һанамағанда, {{PLURAL:$1|$1 бит|$1 бит}} бар.',
 'wlheader-enotif' => 'Электрон почта аша белдереү һайланған',
 'wlheader-showupdated' => "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
 'watchmethod-recent' => 'күҙәтелгән биттәр өсөн аҙаҡҡы үҙгәртеүҙәрҙе ҡарау',
@@ -2301,7 +2312,7 @@ $2 өлгөһөнә ҡайтыу.',
 'protect-default' => 'Бар ҡулланыусыларға рөхсәт бирергә',
 'protect-fallback' => '«$1» рөхсәте кәрәк',
 'protect-level-autoconfirmed' => 'Яңы һәм теркәлмәгән ҡулланыусыларҙан һаҡларға',
-'protect-level-sysop' => 'Хәкимдәр генә',
+'protect-level-sysop' => 'Хакимдәр генә',
 'protect-summary-cascade' => 'эҙмә-эҙлекле',
 'protect-expiring' => '$1 бөтә (UTC)',
 'protect-expiring-local' => '$1 тамамлана',
@@ -2354,7 +2365,7 @@ $2 өлгөһөнә ҡайтыу.',
 Бындай ваҡытта һеҙ һуңғы юйылған өлгөләрҙе һайлауҙы алырға йәки күрһәтергә тейешһегеҙ.',
 'undeletehistorynoadmin' => 'Мәҡәлә юйылған.
 Түбәндә юйыу сәбәптәре һәм мәҡәләне юйғанға тиклем мөхәррирләүсе ҡатнашыусылар исемлеге килтерелгән. 
-Юйылған мәҡәләне хәкимдәр генә ҡарай ала.',
+Юйылған мәҡәләне хакимдәр генә ҡарай ала.',
 'undelete-revision' => '$1 битенең $3 ҡатнашыусыһының ($4 $5 мөхәррирләгән) юйылған өлгөһө:',
 'undeleterevision-missing' => 'Был өлгө дөрөҫ түгел йәки бөтөнләй юҡ.
 Һеҙ дөрөҫ булмаған һылтанма аша кергәнһегеҙ йәки был өлгө архивтан юйылған, булырға тейеш.',
@@ -2417,7 +2428,7 @@ $1',
 'sp-contributions-deleted' => 'ҡулланыусының юйылған өлөшө',
 'sp-contributions-uploads' => 'тейәүҙәр',
 'sp-contributions-logs' => 'журналдар',
-'sp-contributions-talk' => 'фекер алышыу',
+'sp-contributions-talk' => 'фекерләшеү',
 'sp-contributions-userrights' => 'ҡатнашыусы хоҡуҡтарын идаралау',
 'sp-contributions-blocked-notice' => 'Әлеге ваҡытта был ҡатнашыусы бикле.
 Түбәндә бикләү яҙмаларынан һуңғы ҡатнашыусыны бикләү яҙмаһы килтерелгән:',
@@ -2550,7 +2561,7 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'block-log-flags-nousertalk' => 'үҙенең фекер алышыу битен мөхәррирләй алмай',
 'block-log-flags-angry-autoblock' => 'киңәйтелгән авто бикләү һайланған',
 'block-log-flags-hiddenname' => 'ҡатнашыусы исеме йәшерелгән',
-'range_block_disabled' => 'Хәкимдәргә бикләү арауыҡтарын булдырыу тыйылған.',
+'range_block_disabled' => 'Хакимдәргә бикләү арауыҡтарын булдырыу тыйылған.',
 'ipb_expiry_invalid' => 'Тамамланыу ваҡыты дөрөҫ түгел.',
 'ipb_expiry_temp' => 'Бикләү ваҡытында ҡатнашыусы исеме йәшерелһә, бикләү ваҡыты сикһеҙ булырға тейеш.',
 'ipb_hide_invalid' => 'Иҫәп яҙмаһын йәшереү мөмкин түгел, ул бигерәк күп үҙгәртеүҙәр яһаған, булырға тейеш.',
@@ -2686,9 +2697,9 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'imageinvalidfilename' => 'Файл исеме дөрөҫ түгел',
 'fix-double-redirects' => 'Элекке исемгә һылтанған йүнәлтеүҙәрҙе төҙәтергә',
 'move-leave-redirect' => 'Йүнәлтеүҙе ҡалдырырға',
-'protectedpagemovewarning' => "'''Киҫәтеү: ''' Һеҙ был биттең исемен үҙгәртә алмайһығыҙ, был хоҡуҡҡа хәкимдәр генә эйә. 
+'protectedpagemovewarning' => "'''Киҫәтеү: ''' Һеҙ был биттең исемен үҙгәртә алмайһығыҙ, был хоҡуҡҡа хакимдәр генә эйә. 
 Белешмә өсөн түбәндә журналдағы һуңғы яҙма килтерелгән:",
-'semiprotectedpagemovewarning' => "'''Киҫәтеү: ''' Был бит һаҡланған. Һеҙ уның исемен үҙгәртә алмайһығыҙ, был хоҡуҡҡа хәкимдәр генә эйә. 
+'semiprotectedpagemovewarning' => "'''Киҫәтеү: ''' Был бит һаҡланған. Һеҙ уның исемен үҙгәртә алмайһығыҙ, был хоҡуҡҡа хакимдәр генә эйә. 
 Белешмә өсөн түбәндә журналдағы һуңғы яҙма килтерелгән:",
 'move-over-sharedrepo' => '[[:$1]] файлы дөйөм һаҡлағыста бар. Файлдың исемен бындай исемгә үҙгәртеү дөйөм һаҡлағыстағы файлдың өҫтөнә яҙҙырылыуына килтерәсәк.',
 'file-exists-sharedrepo' => 'Һайланған файл исеме дөйөм һаҡлағыста ҡулланыла инде. 
@@ -2799,7 +2810,7 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 
 # Import log
 'importlogpage' => 'Тейәү яҙмалары журналы',
-'importlogpagetext' => 'Хәкимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.',
+'importlogpagetext' => 'Хакимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.',
 'import-logentry-upload' => '[[$1]] битен файлдан тейәгән',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
 'import-logentry-interwiki' => '$1 битен вики проекттары-ара тейәгән',
@@ -2819,7 +2830,7 @@ JavaScript тикшереү',
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Ҡулланыусы битегеҙ',
 'tooltip-pt-anonuserpage' => 'IP адресығыҙ өсөн ҡатнашыусы бите',
-'tooltip-pt-mytalk' => 'Фекер алышыу битегеҙ',
+'tooltip-pt-mytalk' => 'Фекерләшеү битегеҙ',
 'tooltip-pt-anontalk' => 'IP адресығыҙ өсөн фекер алышыу бите',
 'tooltip-pt-preferences' => 'Көйләүҙәрегеҙ',
 'tooltip-pt-watchlist' => 'Һеҙ күҙәткән биттәр исемлеге',
@@ -2827,7 +2838,7 @@ JavaScript тикшереү',
 'tooltip-pt-login' => 'Бында теркәлеү үтергә була, әммә был эш мәжбүри түгел.',
 'tooltip-pt-anonlogin' => 'Бында танылыу үтергә була, әммә был эш мәжбүри түгел.',
 'tooltip-pt-logout' => 'Сығырға',
-'tooltip-ca-talk' => 'Биттең эстәлеге тураһында фекер алышыу',
+'tooltip-ca-talk' => 'Биттең эстәлеге тураһында фекерләшеү',
 'tooltip-ca-edit' => 'Һеҙ был битте үҙгәртә алаһығыҙ. Зинһар, яҙып ҡуйыр алдынан ҡарап сығығыҙ',
 'tooltip-ca-addsection' => 'Яңы бүлек эшләргә',
 'tooltip-ca-viewsource' => 'Был бит үҙгәртеүҙән һаҡланған.
@@ -3769,8 +3780,8 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'revdelete-content-unhid' => 'эстәлек күрһәтелде',
 'revdelete-summary-unhid' => 'төҙәтеү аңлатмаһы асылды',
 'revdelete-uname-unhid' => 'ҡатнашыусы исеме күрһәтелде',
-'revdelete-restricted' => 'хәкимдәргә ҡаршы ҡулланылған сикләүҙәр',
-'revdelete-unrestricted' => 'хәкимдәрҙән алынған сикләүҙәр',
+'revdelete-restricted' => 'хакимдәргә ҡаршы ҡулланылған сикләүҙәр',
+'revdelete-unrestricted' => 'хакимдәрҙән алынған сикләүҙәр',
 'logentry-move-move' => '$1 $3 битенең исемен үҙгәртте. Яңы исеме: $4',
 'logentry-move-move-noredirect' => '$1 $3 битенең исемен йүнәлтеү ҡуймайынса үҙгәртте. Яңы исеме: $4',
 'logentry-move-move_redir' => '$1 $3 битенең исемен йүнәлтеү өҫтөнән үҙгәртте. Яңы исеме: $4',
index 50a9e92..84315ca 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Als-Holder
  * @author Bua333
+ * @author Geitost
  * @author Malafaya
  * @author Man77
  * @author Merlissimo
@@ -297,7 +298,6 @@ $1",
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Huif fias Werkln',
-'edithelppage' => 'Help:Werkln',
 'helppage' => 'Help:Inhoidsvazeichnis',
 'mainpage' => 'Hoamseitn',
 'mainpage-description' => 'Hoamseitn',
@@ -464,7 +464,7 @@ Beochtt ower, daas oanige Seiten noh åzoang kennern, daas du ågmödt bist, só
 'logout' => 'Obmöden',
 'userlogout' => 'Auslogga',
 'notloggedin' => 'Ned ågmödt',
-'nologin' => "Du host koa Nutzakonto? '''$1'''.",
+'nologin' => 'Du host koa Nutzakonto? $1.',
 'nologinlink' => 'A neichs Nutzakonto olegn',
 'createaccount' => 'Nutzakonto olegn',
 'gotaccount' => "Hosd scho a Nutzakonto? '''$1'''.",
index da966b2..87978dc 100644 (file)
@@ -199,7 +199,6 @@ $messages = array(
 'disclaimers' => 'Panyakalon',
 'disclaimerpage' => 'Project:Pamorsoon umum',
 'edithelp' => 'Pangurupion laho patotahon',
-'edithelppage' => 'Help:Panotaan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Pogu ni Alaman',
 'mainpage-description' => 'Pogu ni alaman',
index b4747a5..04ea2b0 100644 (file)
@@ -363,7 +363,6 @@ $1',
 'disclaimers' => 'بی میاری گیان',
 'disclaimerpage' => 'Project:عمومی بی میاریگان',
 'edithelp' => 'کمک اصلاح',
-'edithelppage' => 'Help:اصلاح',
 'helppage' => 'Help:محتوا',
 'mainpage' => 'صفحه اصلی',
 'mainpage-description' => 'صفحه اصلی',
@@ -956,7 +955,6 @@ $1",
 'searchmenu-legend' => 'گزینه یان گردگ',
 'searchmenu-exists' => "'''صفحه گون نام \"[[\$1]]\" ته ای ویکی نیستن'''",
 'searchmenu-new' => "'''شر کن صفحه ای \"[[:\$1]]\" ته ای ویکی!'''",
-'searchhelp-url' => 'Help:محتوا',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|بروز صفحات گون پیش وند]]',
 'searchprofile-articles' => 'صفحات محتوا',
 'searchprofile-project' => 'کمک و صفحات پروژه ای',
index 9d4f761..15e8731 100644 (file)
@@ -296,6 +296,7 @@ $messages = array(
 'create-this-page' => 'Muknaon ining pahina',
 'delete' => 'Puraon',
 'deletethispage' => 'Puraon ining pahina',
+'undeletethispage' => 'Balikon sa pagkapura ining pahina',
 'undelete_short' => 'Bawia an pagpurà kan {{PLURAL:$1|sarong pagliwat|$1 mga pagliwat}}',
 'viewdeleted_short' => 'Hilngon {{PLURAL:$1|sarong pinara na pagliwat|$1 mga pinara na pagliwat}}',
 'protect' => 'Protektari',
@@ -322,13 +323,13 @@ $messages = array(
 'categorypage' => 'Tanawon an pahina nin kategorya',
 'viewtalkpage' => 'Tanawon an orolayan',
 'otherlanguages' => 'Sa ibang mga lengguwahe',
-'redirectedfrom' => '(Piglikay halì sa $1)',
-'redirectpagesub' => 'Ilikáy an pahina',
-'lastmodifiedat' => 'Huring pigbàgo an pahinang iní $2 kan $1.',
-'viewcount' => 'Binukasán ining pahina nin {{PLURAL:$1|sarong beses|nin $1 beses}}.',
+'redirectedfrom' => '(Redirektado gikan sa $1)',
+'redirectpagesub' => 'Redirektang pahina',
+'lastmodifiedat' => 'Ining pahina huring pinagbago kan $1, mga alas $2.',
+'viewcount' => 'Ining pahina pinaglaog nin {{PLURAL:$1|sarong beses|nin $1 beses}}.',
 'protectedpage' => 'Protektadong pahina',
 'jumpto' => 'Magluksó sa:',
-'jumptonavigation' => 'paglibotlibot',
+'jumptonavigation' => 'nabigasyon',
 'jumptosearch' => 'hanapon',
 'view-pool-error' => 'Sori tabi, an mga server kargado sa oras na ini.
 Grabe kadakol an mga paragamit na pinagprubaran mahiling an pahinang ini.
@@ -341,25 +342,24 @@ $1',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'Dapít sa {{SITENAME}}',
-'aboutpage' => 'Project:Manonongód',
-'copyright' => 'Makukua an laog sa $1.',
-'copyrightpage' => '{{ns:project}}:Mga derechos nin parásurat',
-'currentevents' => 'Mga pangyayari sa ngunyán',
+'aboutpage' => 'Project:Mapanonongód',
+'copyright' => 'An kalamnan manunumpungan sa laog kan $1.',
+'copyrightpage' => '{{ns:project}}:Mga Katanosang pansurat',
+'currentevents' => 'Sa ngunyan na mga pangyayari',
 'currentevents-url' => 'Project:Mga pangyayari sa ngunyán',
-'disclaimers' => 'Mga pagpabayà',
-'disclaimerpage' => 'Project:Pangkagabsán na pagpabayà',
-'edithelp' => 'Paghirá kan pagtabang',
-'edithelppage' => 'Help:Pagliwát',
-'helppage' => 'Help:Mga laóg',
+'disclaimers' => 'Mga Pangindahan',
+'disclaimerpage' => 'Project:Pangkagabsán na pangindahan',
+'edithelp' => 'Pantabang sa pagliliwat',
+'helppage' => 'Help:Mga Kalamnan',
 'mainpage' => 'Panginot na Pahina',
 'mainpage-description' => 'Panginot na Pahina',
-'policy-url' => 'Project:Palakáw',
+'policy-url' => 'Project:Kalakawan',
 'portal' => 'Portal kan komunidad',
 'portal-url' => 'Project:Portal kan Komunidad',
-'privacy' => 'Palakáw nin pribasidad',
-'privacypage' => 'Project:Palakaw nin pribasidad',
+'privacy' => 'Kalakawan nin pribasidad',
+'privacypage' => 'Project:Kalakawan nin Pribasidad',
 
-'badaccess' => 'Salang permiso',
+'badaccess' => 'Kasalaan sa permiso',
 'badaccess-group0' => 'Dai ka tinotogotan na gibohon an aksyon na saimong hinahagad.',
 'badaccess-groups' => 'An aksyon na saimong pinaghahagad limitado sa mga parágamit na {{PLURAL:$2|an grupo|saro sa mga grupo}}: $1.',
 
@@ -380,7 +380,7 @@ $1',
 'editold' => 'Liwatón',
 'viewsourceold' => 'hilingón an ginikánan',
 'editlink' => 'liwatón',
-'viewsourcelink' => 'hilingón an toltólan',
+'viewsourcelink' => 'tanawon an ginikanan',
 'editsectionhint' => 'Liwatón an seksyon: $1',
 'toc' => 'Mga laóg',
 'showtoc' => 'ipahilíng',
@@ -389,9 +389,9 @@ $1',
 'collapsible-expand' => 'Pinahalawig',
 'thisisdeleted' => 'Hilingón o isulít an $1?',
 'viewdeleted' => 'Hilingón an $1?',
-'restorelink' => '{{PLURAL:$1|sarong pinarang paghirá|$1 na pinarang paghirá}}',
+'restorelink' => '{{PLURAL:$1|sarong pinagpurang pagliwat|$1 na pinagpurang mga pagliwat}}',
 'feedlinks' => 'Hungit:',
-'feed-invalid' => 'Bawal na tipo nin hungit na subkripsyon.',
+'feed-invalid' => 'Imbalidong tipo nin hungit sa subkripsyon.',
 'feed-unavailable' => 'Mayò an mga sindikasyon na hungit',
 'site-rss-feed' => '$1 Hungit nin RSS',
 'site-atom-feed' => '$1 Hungit nin Atomo',
@@ -498,6 +498,8 @@ $2',
 'namespaceprotected' => "Mayô kang permisong maghirá kan mga páhina sa '''$1''' ngaran-espacio.",
 'customcssprotected' => 'Ika mayong permiso sa pagliwat kaining pahinang CSS, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.',
 'customjsprotected' => 'Ika mayong permiso sa pagliwat kaining pahinang JavaScript, nin huli ta ini naglalaman kan personal na panuytoy (settings) kan ibang paragamit.',
+'mycustomcssprotected' => 'Ika mayo nin permiso sa pagliwat kaining CSS na pahina.',
+'mycustomjsprotected' => 'Ika mayo nin permiso sa pagliwat kaining JavaScript na pahina.',
 'ns-specialprotected' => 'An mga pahinang nasa {{ns:special}} na liang-liang dai pwedeng hirahón.',
 'titleprotected' => 'Ining titulo pinagprotektaran poon pagkamukna ni [[User:$1|$1]].
 An rason na pinagtao iyo na "\'\'$2\'\'".',
@@ -634,7 +636,7 @@ Pakilaog sana tabi nin sarong tugmadong koreo o pabayae na mayong laman an surat
 'cannotchangeemail' => 'An panindog na address sa e-surat dati mariribayan sa Wiki na ini.',
 'emaildisabled' => 'Ining sayt dae makakapagpadara nin mga e-surat.',
 'accountcreated' => 'Panindog pinagmukna na',
-'accountcreatedtext' => 'An paragamit na panindog para sa $1 pinagmukna na.',
+'accountcreatedtext' => 'An paragamit na panindog para sa [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) pinagmukna na.',
 'createaccount-title' => 'Panindog na pagmukna para sa {{SITENAME}}',
 'createaccount-text' => 'May tawong nagmukna nin sarong panindog na gamit an saimong address na e-surat sa {{SITENAME}} ($4) na may ngaran na "$2, na may sikretong panlaog na "$3".',
 'usernamehasherror' => 'Paragamit na ngaran dae puwede na igwang simbolikong mga kabtang',
@@ -670,6 +672,8 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
 
 # Special:PasswordReset
 'passwordreset' => 'Pakibago kan sekretong panlaog',
+'passwordreset-text-one' => 'Kumpletuhon ining porma sa pagliwat otro kan saimong pasa-taramon.',
+'passwordreset-text-many' => '{{PLURAL:$1|Ikaag an saro sa mga pedaso nin datos sa pagliwat otro kan saimong pasa-taramon.}}',
 'passwordreset-legend' => 'Pakibago kan sekretong panlaog',
 'passwordreset-disabled' => 'An pagbago kan sekretong panlaog pinagpundo sa wiking ini.',
 'passwordreset-emaildisabled' => 'E-surat na mga estima pinag-uruntok sa wiking ini.',
@@ -911,6 +915,7 @@ Ini dae tabi nagtao nin kapaliwanagan.',
 Ini minapahiwatig tabi na pinagpura na.',
 'edit-conflict' => 'Igwang iregularidad sa pagliwat.',
 'edit-no-change' => 'An saimong pagliwat pinagbalewala, nin huli ta mayong pagbabago an pinaghimo sa teksto.',
+'postedit-confirmation' => 'An saimong niliwat ipinagtagama na.',
 'edit-already-exists' => 'Dai maggibo an bàgong pahina.
 Igwa na kaini.',
 'defaultmessagetext' => 'Tugmadong mensahe sa teksto',
@@ -1161,7 +1166,6 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'searchmenu-legend' => 'Opsyon sa paghahanap',
 'searchmenu-exists' => "'''Igwa nin sarong pahina na pinagngaranan na \"[[:\$1]]\" sa wiking ini.'''",
 'searchmenu-new' => "'''Muknaon an pahina \"[[:\$1]]\" sa wiking ini!'''",
-'searchhelp-url' => 'Help:Mga laog',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kilyawon an mga pahina sa paagi kainin enotang panigmit]]',
 'searchprofile-articles' => 'Mga pahina nin laog',
 'searchprofile-project' => 'Mga pahina nin Tabang asin Proyekto',
@@ -1349,6 +1353,7 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'userrights-changeable-col' => 'Mga grupo na mapuwede mong baguhon',
 'userrights-unchangeable-col' => 'Mga grupo na dae mo mapuwedeng baguhon',
 'userrights-conflict' => 'Kumplikto sa katanosan nin paragamit! Pakigibo giraray kan saimong mga kaliwatan.',
+'userrights-removed-self' => 'Saimong matrayumpong pinagtangkas an sadire mong mga katanosan. Sa siring, ika dae na tabi makakalaog sa pahinang ini.',
 
 # Groups
 'group' => 'Grupo:',
@@ -1419,6 +1424,8 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'right-editusercssjs' => 'Liwaton an CSS asin JavaScript na mga sagunson kan ibang mga paragamit',
 'right-editusercss' => 'Liwaton an CSS na mga sagunson kan ibang mga paragamit',
 'right-edituserjs' => 'Liwaton an JavaScript na mga sagunson kan ibang mga paragamit',
+'right-editmyusercss' => 'Liwaton an saimong sadireng paragamit na sagunson sa CSS',
+'right-editmyuserjs' => 'Liwaton an saimong sadireng paragamit na sagunson sa JavaScript',
 'right-rollback' => 'Hidaling ibalik an mga niliwat kan huring paragamit na nagliwat nin sarong partikular na pahina',
 'right-markbotedits' => 'Markahan an pinagbalik na mga niliwat bilang bot na panliwat',
 'right-noratelimit' => 'Dae magin apektado sa paagi kan rata nin mga sagkodan',
@@ -2413,7 +2420,7 @@ $1",
 'mycontris' => 'Mga Kaarambagan',
 'contribsub2' => 'Para sa $1 ($2)',
 'nocontribs' => 'Mayong mga pagbabago na nahanap na kapadis sa ining mga criteria.',
-'uctop' => '(alituktok)',
+'uctop' => '(sa ngunyan)',
 'month' => 'Poon bulan (asin mas amay):',
 'year' => 'Poon taon (asin mas amay):',
 
index 1ba82be..ea6f66a 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Cesco
+ * @author Geitost
  * @author Jim-by
  * @author Kaganer
  * @author LexArt
@@ -196,6 +197,18 @@ $messages = array(
 'oct' => 'Кас',
 'nov' => 'Ліс',
 'dec' => 'Сне',
+'january-date' => '$1 студзеня',
+'february-date' => '$1 лютага',
+'march-date' => '$1 сакавіка',
+'april-date' => '$1 красавіка',
+'may-date' => '$1 мая',
+'june-date' => '$1 чэрвеня',
+'july-date' => '$1 ліпеня',
+'august-date' => '$1 жніўня',
+'september-date' => '$1 верасня',
+'october-date' => '$1 кастрычніка',
+'november-date' => '$1 лістапада',
+'december-date' => '$1 снежня',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Катэгорыя|Катэгорыі}}',
@@ -221,6 +234,7 @@ $messages = array(
 'newwindow' => '(адкрыецца ў новым акне)',
 'cancel' => 'Нічога',
 'moredotdotdot' => 'Яшчэ...',
+'morenotlisted' => 'Больш нічога няма...',
 'mypage' => 'Уласная старонка',
 'mytalk' => 'Размовы',
 'anontalk' => 'Размова для гэтага IP',
@@ -254,6 +268,7 @@ $messages = array(
 'namespaces' => 'Прасторы імёнаў',
 'variants' => 'Варыянты',
 
+'navigation-heading' => 'Навігацыя',
 'errorpagetitle' => 'Памылка',
 'returnto' => 'Вярнуцца да $1.',
 'tagline' => 'З пляцоўкі {{SITENAME}}.',
@@ -275,6 +290,7 @@ $messages = array(
 'create-this-page' => 'Стварыць старонку',
 'delete' => 'сцерці',
 'deletethispage' => 'Сцерці гэту старонку',
+'undeletethispage' => 'Аднавіць гэту старонку',
 'undelete_short' => 'Аднавіць {{PLURAL:$1|адну праўку|$1 правак}}',
 'viewdeleted_short' => 'Паказаць {{PLURAL:$1|адну сцёртую праўку|$1 сцёртыя праўкі}}',
 'protect' => 'Ахова',
@@ -328,7 +344,6 @@ $1',
 'disclaimers' => 'Адмова ад адказнасці',
 'disclaimerpage' => 'Project:Агульная адмова ад адказнасці',
 'edithelp' => 'Даведка рэдактарскага акна',
-'edithelppage' => 'Help:Праўка',
 'helppage' => 'Help:Змест',
 'mainpage' => 'Галоўная старонка',
 'mainpage-description' => 'Першая старонка',
@@ -351,6 +366,8 @@ $1',
 'youhavenewmessages' => 'Вы маеце $1 ($2).',
 'newmessageslink' => 'новыя паведамленні',
 'newmessagesdifflink' => 'розн. з найноўшай версіяй',
+'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|$3 ўдзельніка|$3 удзельнікаў}} ($2).',
+'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад мноства карыстальнікаў ($2).',
 'youhavenewmessagesmulti' => 'У вас ёсць новыя паведамленні на $1',
 'editsection' => 'правіць',
 'editold' => 'правіць',
@@ -486,9 +503,18 @@ $2',
 'welcomecreation-msg' => 'Ваш рахунак быў створаны.
 Не забудзьцеся дапасаваць [[Special:Preferences|персанальныя настаўленні]] для {{SITENAME}}.',
 'yourname' => 'Імя ўдзельніка',
+'userlogin-yourname' => 'Імя ўліковага запісу',
+'userlogin-yourname-ph' => 'Увядзіце імя вашага ўліковага запісу',
 'yourpassword' => 'Пароль',
+'userlogin-yourpassword' => 'Пароль',
+'userlogin-yourpassword-ph' => 'Увядзіце ваш пароль',
+'createacct-yourpassword-ph' => 'Увядзіце пароль',
 'yourpasswordagain' => 'Паўтарыце пароль',
+'createacct-yourpasswordagain' => 'Пацвердзіце пароль',
+'createacct-yourpasswordagain-ph' => 'Увядзіце пароль яшчэ раз',
 'remembermypassword' => "Памятаць мяне на гэтым камп'ютары (не даўжэй за $1 {{PLURAL:$1|дзень|дзён}})",
+'userlogin-remembermypassword' => 'Заставацца ў сістэме',
+'userlogin-signwithsecure' => 'Выкарыстоўваць абароненае злучэнне',
 'securelogin-stick-https' => 'Працягваць злучэнне па HTTPS пасля ўвахода',
 'yourdomainname' => 'Ваш дамен',
 'externaldberror' => 'Або памылка вонкавай аўтэнтыкацыі ў базе дадзеных, або вам не дазволена абнаўляць свой вонкавы рахунак.',
@@ -500,7 +526,7 @@ $2',
 'logout' => 'Выйсці з сістэмы',
 'userlogout' => 'Выйсці з сістэмы',
 'notloggedin' => 'Не ўвайшоў',
-'nologin' => "Не маеце рахунку? '''$1'''.",
+'nologin' => 'Не маеце рахунку? $1.',
 'nologinlink' => 'Завесці рахунак',
 'createaccount' => 'Стварыць рахунак',
 'gotaccount' => "Ужо маеце рахунак? '''$1'''.",
@@ -740,6 +766,7 @@ $2
 'updated' => '(абноўлена)',
 'note' => "'''Заўвага:'''",
 'previewnote' => "'''Памятайце, гэта папярэдні паказ; праўкі яшчэ не замацаваныя!'''",
+'continue-editing' => 'Працягнуць рэдагаванне',
 'previewconflict' => 'Гэта папярэдні паказ магчымага выніку замацоўвання актуальнага стану крынічнага тэксту ў верхнім тэкставым полі.',
 'session_fail_preview' => "'''Не ўдалося апрацаваць вашую праўку, таму што сервер згубіў звесткі аб вашым сеансе.
 Паспрабуйце, калі ласка, ізноў. Калі і тады не атрымаецца, паспрабуйце [[Special:UserLogout|выйсці з сістэмы]] і зайсці ізноў.'''",
@@ -816,6 +843,12 @@ $2
 'editwarning-warning' => 'Выхад з гэтай старонкі прывядзе да страты правак, якія вы зрабілі. 
 Калі Вы зарэгістраваныя ў сістэме, Вы можаце адключыць гэта папярэджанне ў закладцы "Праца" Вашых настаўленняў.',
 
+# Content models
+'content-model-wikitext' => 'вікі-тэкст',
+'content-model-text' => 'звычайны тэкст',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => "Увага: На старонцы занадта шмат працаёмістых зваротаў да парсера.
 
@@ -1033,7 +1066,6 @@ $1",
 'searchmenu-legend' => 'Настаўленні пошуку',
 'searchmenu-exists' => "'''На вікі ёсць старонка \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Стварыць на гэтай вікі старонку \"[[:\$1]]\"'''",
-'searchhelp-url' => 'Help:Змест',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Паказаць старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Артыкулы',
 'searchprofile-project' => 'Старонкі даведкі і праекта',
@@ -1363,7 +1395,7 @@ $1",
 'rcshowhideliu' => '$1 пазнаных удзельнікаў',
 'rcshowhideanons' => '$1 ананімных удзельнікаў',
 'rcshowhidepatr' => '$1 ухваленых правак',
-'rcshowhidemine' => '$1 Ñ\83ласных правак',
+'rcshowhidemine' => '$1 Ñ\9eласных правак',
 'rclinks' => 'Паказаць апошнія $1 зменаў за мінулыя $2 дзён<br />$3',
 'diff' => 'розн.',
 'hist' => 'гіст.',
@@ -1507,9 +1539,9 @@ $1',
 'upload-proto-error' => 'Няправільны пратакол',
 'upload-proto-error-text' => 'Укладанне файла зводдаль патрабуе URL, які пачынаецца з <code>http://</code> або <code>ftp://</code>.',
 'upload-file-error' => 'Унутраная памылка',
-'upload-file-error-text' => 'Унутраная памылка пры спробе стварыць на серверы тымчасовы файл. Звярніцеся да аднаго з [[Special:ListUsers/sysop|сістэмных адміністратараў]].',
+'upload-file-error-text' => 'Унутраная памылка пры спробе стварыць на серверы тымчасовы файл. Звярніцеся да аднаго з [[Special:ListUsers/sysop|адміністратараў]].',
 'upload-misc-error' => 'Нявызначаная памылка пры ўкладанні',
-'upload-misc-error-text' => 'Нявызначаная памылка пры ўкладанні. Праверце правільнасць і даступнасць URL і паспрабуйце ізноў. Калі праблема трывалая, звярніцеся да аднаго з [[Special:ListUsers/sysop|сістэмных адміністратараў]].',
+'upload-misc-error-text' => 'Нявызначаная памылка пры ўкладанні. Праверце правільнасць і даступнасць URL і паспрабуйце ізноў. Калі праблема трывалая, звярніцеся да аднаго з [[Special:ListUsers/sysop|адміністратараў]].',
 'upload-too-many-redirects' => 'Занадта шмат перасылак за гэтым адрасам (URL)',
 'upload-unknown-size' => 'Невядомы памер',
 'upload-http-error' => 'Памылка HTTP: $1',
@@ -1923,6 +1955,7 @@ $1',
 'mailnologin' => 'Няма эл.адрасу',
 'mailnologintext' => 'Трэба [[Special:UserLogin|ўвайсці ў сістэму]] і мець пацверджаны адрас эл.пошты ў сваіх [[Special:Preferences|настáўленнях]], каб слаць эл.пошту іншым удзельнікам.',
 'emailuser' => 'Эл.пошта ўдзельніка',
+'emailuser-title-notarget' => 'Напісанне электроннага ліста ўдзельніку',
 'emailpage' => 'Зварот да ўдзельніка праз эл.пошту',
 'emailpagetext' => 'Тут можна выслаць эл.пошту гэтаму ўдзельніку.
 Адрас эл.пошты, уведзены вамі ў [[Special:Preferences|сваіх настаўленнях]], з\'явіцца ў полі "From" вашага ліста, і атрымальнік зможа адказаць на ваш ліст.',
@@ -2700,11 +2733,16 @@ $1',
 
 # Info page
 'pageinfo-title' => 'Інфармацыя для "$1"',
-'pageinfo-header-edits' => 'Змены',
+'pageinfo-header-basic' => 'Агульныя звесткі',
+'pageinfo-header-edits' => 'Гісторыя правак',
+'pageinfo-robot-index' => 'Індэксуюцца',
+'pageinfo-robot-noindex' => 'Не індэксуюцца',
 'pageinfo-views' => 'Колькасць праглядаў',
 'pageinfo-watchers' => 'Колькасць назіральнікаў',
-'pageinfo-edits' => 'Колькасць правак:',
-'pageinfo-authors' => 'Колькасць розных аўтараў',
+'pageinfo-lastuser' => 'Апошні рэдактар',
+'pageinfo-lasttime' => 'Дата апошняй праўкі',
+'pageinfo-edits' => 'Агульная колькасць правак',
+'pageinfo-authors' => 'Агульная колькасць розных аўтараў',
 
 # Skin names
 'skinname-cologneblue' => 'Сіні Кёльн',
@@ -3380,6 +3418,8 @@ MediaWiki распаўсюджваецца, спадзеючыся на прыд
 'version-software' => 'Устаноўленыя праграмныя прадукты',
 'version-software-product' => 'Прадукт',
 'version-software-version' => 'Версія',
+'version-entrypoints-header-entrypoint' => 'Кропка ўваходу',
+'version-entrypoints-header-url' => 'URL',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Пошук дублікатных файлаў',
index ad817a5..a210883 100644 (file)
@@ -10,6 +10,7 @@
  * @author Cesco
  * @author Crt
  * @author EugeneZelenko
+ * @author Geitost
  * @author Jim-by
  * @author Kaganer
  * @author Nemo bis
@@ -461,6 +462,7 @@ $messages = array(
 'create-this-page' => 'Стварыць гэтую старонку',
 'delete' => 'Выдаліць',
 'deletethispage' => 'Выдаліць гэтую старонку',
+'undeletethispage' => 'Аднавіць гэту старонку',
 'undelete_short' => 'Аднавіць $1 {{PLURAL:$1|рэдагаваньне|рэдагаваньні|рэдагаваньняў}}',
 'viewdeleted_short' => 'Паказаць $1 {{PLURAL:$1|выдаленае рэдагаваньне|выдаленыя рэдагаваньні|выдаленых рэдагаваньняў}}',
 'protect' => 'Абараніць',
@@ -514,7 +516,6 @@ $1',
 'disclaimers' => 'Адмова ад адказнасьці',
 'disclaimerpage' => 'Project:Адмова ад адказнасьці',
 'edithelp' => 'Дапамога ў рэдагаваньні',
-'edithelppage' => 'Help:Рэдагаваньне',
 'helppage' => 'Help:Зьмест',
 'mainpage' => 'Галоўная старонка',
 'mainpage-description' => 'Галоўная старонка',
@@ -661,6 +662,8 @@ $2',
 'namespaceprotected' => "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў '''$1'''.",
 'customcssprotected' => 'Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.',
 'customjsprotected' => 'Вы ня маеце правоў на рэдагаваньне гэтай старонкі JavaScript, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.',
+'mycustomcssprotected' => 'Вы ня маеце дазволу рэдагаваць гэтую CSS-старонку.',
+'mycustomjsprotected' => 'Вы ня маеце дазволу рэдагаваць гэтую JavaScript-старонку.',
 'ns-specialprotected' => 'Немагчыма рэдагаваць спэцыяльныя старонкі.',
 'titleprotected' => "Стварэньне старонкі з такой назвай было забароненае ўдзельнікам [[User:$1|$1]].
 Прычына забароны: ''$2''.",
@@ -696,7 +699,7 @@ $2',
 'createacct-yourpasswordagain' => 'Пацьвердзіце пароль',
 'createacct-yourpasswordagain-ph' => 'Увядзіце пароль зноў',
 'remembermypassword' => 'Запомніць мяне на гэтым кампутары (ня больш за $1 {{PLURAL:$1|дзень|дні|дзён}})',
-'userlogin-remembermypassword' => 'Ð\97апамÑ\8fÑ\82аць мяне',
+'userlogin-remembermypassword' => 'Ð\97апомнÑ\96ць мяне',
 'userlogin-signwithsecure' => 'Скарыстацца бясьпечным злучэньнем',
 'securelogin-stick-https' => 'Утрымліваць злучэньне праз HTTPS пасьля ўваходу ў сыстэму',
 'yourdomainname' => 'Ваш дамэн:',
@@ -793,7 +796,7 @@ $2',
 'cannotchangeemail' => 'Электронная пошта рахунку ня можа быць зьмененая ў {{GRAMMAR:месны|{{SITENAME}}}}.',
 'emaildisabled' => 'Гэты сайт ня можа адсылаць электронныя лісты.',
 'accountcreated' => 'Рахунак створаны',
-'accountcreatedtext' => 'Рахунак удзельніка для $1 быў створаны.',
+'accountcreatedtext' => 'Рахунак {{GENDER:$1|удзельніка|удзельніцы}} [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|гутаркі]]) быў створаны.',
 'createaccount-title' => 'Стварэньне рахунку ў {{GRAMMAR:месны|{{SITENAME}}}}',
 'createaccount-text' => 'Нехта стварыў рахунак «$2» у {{GRAMMAR:месны|{{SITENAME}}}} ($4) для Вашага адрасу электроннай пошты. Пароль для гэтага рахунку — «$3». Вам трэба ўвайсьці і зьмяніць Ваш пароль зараз.
 
@@ -1320,7 +1323,6 @@ $1",
 'searchmenu-legend' => 'Налады пошуку',
 'searchmenu-exists' => "* Старонка '''[[$1]]'''",
 'searchmenu-new' => "'''Стварыць старонку «[[:$1|$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!'''",
-'searchhelp-url' => 'Help:Зьмест',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Праглядзець старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Старонкі са зьместам',
 'searchprofile-project' => 'Старонкі дапамогі і праекту',
@@ -1507,6 +1509,7 @@ $1",
 'userrights-changeable-col' => 'Групы, якія Вы можаце мяняць',
 'userrights-unchangeable-col' => 'Групы, якія Вы ня можаце мяняць',
 'userrights-conflict' => 'Канфлікт правоў удзельнікаў! Калі ласка, захавайце зьмены яшчэ раз.',
+'userrights-removed-self' => 'Вы пасьпяхова пазбавілі сябе ўласных правоў. З гэтай прычыны вы больш ня маеце доступу да гэтай старонкі.',
 
 # Groups
 'group' => 'Група:',
@@ -1577,6 +1580,8 @@ $1",
 'right-editusercssjs' => 'рэдагаваньне CSS і JS файлаў іншых удзельнікаў',
 'right-editusercss' => 'рэдагаваньне CSS файлаў іншых удзельнікаў',
 'right-edituserjs' => 'рэдагаваньне JS файлаў іншых удзельнікаў',
+'right-editmyusercss' => 'рэдагаваць уласныя карыстальніцкія CSS-файлы',
+'right-editmyuserjs' => 'рэдагаваць уласныя карыстальніцкія JavaScript-файлы',
 'right-rollback' => 'хуткі адкат правак апошняга ўдзельніка, які рэдагаваў старонку',
 'right-markbotedits' => 'пазначэньне адкатаў як рэдагаваньне робатам',
 'right-noratelimit' => 'няма абмежаваньняў па хуткасьці',
@@ -1809,11 +1814,11 @@ $1',
 'upload-proto-error-text' => 'Аддаленая загрузка файлаў патрабуе URL-адрас, які пачынаецца з <code>http://</code> альбо <code>ftp://</code>.',
 'upload-file-error' => 'Унутраная памылка',
 'upload-file-error-text' => 'Адбылася ўнутраная памылка пад час спробы стварыць часовы файл на сэрвэры.
-Калі ласка, зьвярніцеся да [[Special:ListUsers/sysop|сыстэмнага адміністратара]].',
+Калі ласка, зьвярніцеся да [[Special:ListUsers/sysop|адміністратара]].',
 'upload-misc-error' => 'Невядомая памылка загрузкі',
 'upload-misc-error-text' => 'Адбылася невядомая памылка пад час загрузкі.
 Калі ласка, упэўніцеся, што URL-адрас слушны, і паспрабуйце ізноў.
-Калі памылка паўтарыцца, зьвярніцеся да [[Special:ListUsers/sysop|сыстэмнага адміністратара]].',
+Калі памылка паўтарыцца, зьвярніцеся да [[Special:ListUsers/sysop|адміністратара]].',
 'upload-too-many-redirects' => 'URL-адрас утрымлівае зашмат перанакіраваньняў',
 'upload-unknown-size' => 'Невядомы памер',
 'upload-http-error' => 'Узьнікла памылка HTTP: $1',
@@ -2573,7 +2578,7 @@ $1',
 'mycontris' => 'Унёсак',
 'contribsub2' => 'Для $1 ($2)',
 'nocontribs' => 'Ня знойдзена зьменаў, якія адпавядаюць гэтым крытэрыям.',
-'uctop' => ' (апошняя)',
+'uctop' => '(апошняя)',
 'month' => 'Ад месяца (і раней):',
 'year' => 'Ад году (і раней):',
 
index 9e10dd4..ba53d21 100644 (file)
@@ -12,6 +12,7 @@
  * @author DCLXVI
  * @author Daggerstab
  * @author Dimi z
+ * @author Geitost
  * @author Kaganer
  * @author Simona
  * @author Spiritia
@@ -490,7 +491,6 @@ $1',
 'disclaimers' => 'Условия за ползване',
 'disclaimerpage' => 'Project:Условия за ползване',
 'edithelp' => 'Помощ при редактиране',
-'edithelppage' => 'Help:Редактиране',
 'helppage' => 'Help:Съдържание',
 'mainpage' => 'Начална страница',
 'mainpage-description' => 'Начална страница',
@@ -634,6 +634,8 @@ $2',
 'namespaceprotected' => "Нямате права за редактиране на страници в именно пространство '''$1'''.",
 'customcssprotected' => 'Нямате права за редактиране на тази CSS страница, защото тя съдържа чужди потребителски настройки.',
 'customjsprotected' => 'Нямате права за редактиране на тази Джаваскрипт страница, защото тя съдържа чужди потребителски настройки.',
+'mycustomcssprotected' => 'Нямате права за редактиране на тази CSS страница.',
+'mycustomjsprotected' => 'Нямате права за редактиране на тази JavaScript страница.',
 'ns-specialprotected' => 'Специалните страници не могат да бъдат редактирани.',
 'titleprotected' => "Тази страница е била защитена срещу създаване от [[User:$1|$1]].
 Посочената причина е ''$2''.",
@@ -679,18 +681,24 @@ $2',
 'logout' => 'Излизане',
 'userlogout' => 'Излизане',
 'notloggedin' => 'Не сте влезли',
+'userlogin-noaccount' => 'Нямате сметка?',
 'userlogin-joinproject' => 'Присъединяване към {{SITENAME}}',
-'nologin' => "Нямате потребителско име? '''$1'''.",
+'nologin' => 'Нямате потребителско име? $1.',
 'nologinlink' => 'Създаване на сметка',
 'createaccount' => 'Регистриране',
 'gotaccount' => "Имате ли вече сметка? '''$1'''.",
 'gotaccountlink' => 'Влизане',
 'userlogin-resetlink' => 'Забравени данни за влизане в системата?',
+'userlogin-resetpassword-link' => 'Възстановяване на паролата',
 'createacct-emailrequired' => 'Адрес за електронна поща',
+'createacct-emailoptional' => 'Адрес за електронна поща (незадължително)',
 'createaccountmail' => 'Използване на временна парола, която се изпраща по електронната поща, посочена по-долу',
 'createaccountreason' => 'Причина:',
 'createacct-reason' => 'Причина',
 'createacct-imgcaptcha-ph' => 'Въведете текста, който виждате по-горе',
+'createacct-submit' => 'Създаване на сметката',
+'createacct-benefit-heading' => '{{SITENAME}} се създава от хора като вас.',
+'createacct-benefit-body2' => '{{PLURAL:$1|страница|страници}}',
 'badretype' => 'Въведените пароли не съвпадат.',
 'userexists' => 'Въведеното потребителско име вече се използва.
 Изберете друго име.',
@@ -741,7 +749,7 @@ $2',
 'cannotchangeemail' => 'Адресите за електронна поща на сметките не могат да бъдат променяни в това уики.',
 'emaildisabled' => 'Този сайт не може да изпраща е-поща.',
 'accountcreated' => 'Потребителската сметка беше създадена',
-'accountcreatedtext' => 'Потребителската сметка за $1 беше създадена.',
+'accountcreatedtext' => 'Потребителската сметка [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|беседа]]) беше създадена.',
 'createaccount-title' => 'Създаване на сметка за {{SITENAME}}',
 'createaccount-text' => 'Някой е създал сметка за $2 в {{SITENAME}} ($4) и е посочил този адрес за електронна поща. Паролата за „$2“ е „$3“. Необходимо е да влезете в системата и да смените паролата си.
 
@@ -1252,7 +1260,6 @@ $1",
 'searchmenu-legend' => 'Настройки на търсенето',
 'searchmenu-exists' => "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
 'searchmenu-new' => "'''Създаване на страницата „[[:$1]]“ в това уики!'''",
-'searchhelp-url' => 'Help:Съдържание',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Преглеждане на страниците с тази представка]]',
 'searchprofile-articles' => 'Съдържателни страници',
 'searchprofile-project' => 'Помощни и проектни страници',
index 3775f4c..66f8c79 100644 (file)
@@ -236,7 +236,6 @@ $1',
 'disclaimers' => 'अस्विकरण',
 'disclaimerpage' => 'Project:सामान्य अस्विकरण',
 'edithelp' => 'मदद सम्पादन',
-'edithelppage' => 'Help:सम्पादन',
 'helppage' => 'Help:सामग्री',
 'mainpage' => 'मुख्य पन्ना',
 'mainpage-description' => 'पहिलका पन्ना',
@@ -473,7 +472,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इ विकि पर ''[[:$1]]'' नाम से एगो पन्ना उपलब्ध बा'''",
 'searchmenu-new' => "'''इ विकि पर ''[[:$1]]'' नाम से पन्ना बनाईं'''",
-'searchhelp-url' => 'Help:सामग्री',
 'searchmenu-prefix' => '[[विशेष:उपसर्ग सूची/$1|इ उपसर्ग साथे पन्ना ब्राउज करीं]]',
 'searchprofile-articles' => 'सामग्री पन्ना',
 'searchprofile-project' => 'मदद आ परियोजना पन्ना',
index 83cebd4..64744a9 100644 (file)
@@ -384,7 +384,6 @@ $1",
 'disclaimers' => 'Panyangkalan',
 'disclaimerpage' => 'Project:Panyangkalan umum',
 'edithelp' => 'Patulung mambabak',
-'edithelppage' => 'Help:Pambabakan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Tungkaran Tatambaian',
 'mainpage-description' => 'Tungkaran Tatambaian',
@@ -674,10 +673,8 @@ Pian pinanya sudah barhasil maubah katasunduk Pian atawa maminta sabuting katasu
 
 # Special:PasswordReset
 'passwordreset' => 'Bulikakan setelan katasunduk',
-'passwordreset-text' => 'Tuntungakan purmulir ngini gasan manarima sabuting suril pangingat rarincian akun Pian.',
 'passwordreset-legend' => 'Bulikakan setelan katasunduk',
 'passwordreset-disabled' => 'Mambulikakan setelan katasunduk dipajahakan hagan wiki ngini.',
-'passwordreset-pretext' => '{{PLURAL:$1||Buati asa data di bawah ngini}}',
 'passwordreset-username' => 'Ngaran pamakai:',
 'passwordreset-domain' => 'Dumain:',
 'passwordreset-capture' => 'Tiringikah kulihan suril?',
@@ -1148,7 +1145,6 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'searchmenu-legend' => 'Papilihan manggagai',
 'searchmenu-exists' => "'''Ada tungkaran bangaran \"[[:\$1]]\" dalam wiki ini.'''",
 'searchmenu-new' => "'''Maulah tungkaran \"[[:\$1]]\" dalam wiki ngini!'''",
-'searchhelp-url' => 'Help:Isi',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Janaki daptar tungkaran lawan awalan ngini]]',
 'searchprofile-articles' => 'Tungkaran isi',
 'searchprofile-project' => 'Tutungkaran Patulung wan Rangka gawian',
index f1ae1a5..022836f 100644 (file)
@@ -271,6 +271,7 @@ $messages = array(
 'create-this-page' => 'পাতাটি তৈরি করো',
 'delete' => 'অপসারণ',
 'deletethispage' => 'এই পাতাটি মুছে ফেলুন',
+'undeletethispage' => 'এই পাতাটি মুছো না',
 'undelete_short' => 'পুনঃস্থাপন {{PLURAL:$1|১টি সম্পাদনা|$1টি সম্পাদনাসমূহ}}',
 'viewdeleted_short' => '{{PLURAL:$1| টি অপসারিত সম্পাদনা|$1 টি অপসারিত সম্পাদনা}} দেখাও',
 'protect' => 'সুরক্ষা',
@@ -282,7 +283,7 @@ $messages = array(
 'talkpage' => 'আলোচনা করুন',
 'talkpagelinktext' => 'আলোচনা',
 'specialpage' => 'বিশেষ পাতা',
-'personaltools' => 'নিà¦\9cসà§\8dব à¦¹à¦¾à¦¤à¦¿à¦¯à¦¼à¦¾à¦°সমূহ',
+'personaltools' => 'নিà¦\9cসà§\8dব à¦¸à¦°à¦\9eà§\8dà¦\9cামসমূহ',
 'postcomment' => 'নতুন অনুচ্ছেদ',
 'articlepage' => 'নিবন্ধ দেখুন',
 'talk' => 'আলোচনা',
@@ -324,7 +325,6 @@ $1',
 'disclaimers' => 'দাবিত্যাগ',
 'disclaimerpage' => 'Project:সাধারণ দাবিত্যাগ',
 'edithelp' => 'সম্পাদনা সহায়িকা',
-'edithelppage' => 'Help:কিভাবে একটি পাতা সম্পাদনা করবেন',
 'helppage' => 'Help:সূচী',
 'mainpage' => 'প্রধান পাতা',
 'mainpage-description' => 'প্রধান পাতা',
@@ -472,6 +472,8 @@ $2',
 'namespaceprotected' => "'''$1''' নামস্থানে কোন পাতা আপনার সম্পাদনা করার অনুমতি নেই।",
 'customcssprotected' => 'আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।',
 'customjsprotected' => 'আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই, কারণ এ পাতায় অন্য ব্যবহারকারীর নিজস্ব সেটিংস রয়েছে।',
+'mycustomcssprotected' => 'আপনার এই সিএসএস পাতাটি সম্পাদনা করার অনুমতি নেই।',
+'mycustomjsprotected' => 'আপনার এই জাভাস্ক্রিপ্ট পাতাটি সম্পাদনা করার অনুমতি নেই।',
 'ns-specialprotected' => '{{ns:special}} নামস্থানে পাতাসমূহ সম্পাদনা করা যাবে না।',
 'titleprotected' => "[[User:$1|$1]]-কে এই শিরোনামের পাতা সৃষ্টি করতে বাধা দেয়া হচ্ছে। কারণ: ''$2''।",
 'filereadonlyerror' => '"$1" ফাইলটিকে পরিবর্তন করা সম্ভব হচ্ছে না কারন "$2" ফাইল রিপোসিটোরি রিড-অনলি-মোডে আছে।
@@ -521,7 +523,7 @@ $2',
 'userlogout' => 'প্রস্থান',
 'notloggedin' => 'আপনি সংযুক্ত নন',
 'userlogin-noaccount' => 'কোনও অ্যাকাউন্ট নেই?',
-'userlogin-joinproject' => '{{SITENAME}}-à¦\8f à¦\85à¦\82শà¦\97à§\8dরহন à¦\95রà§\81ন',
+'userlogin-joinproject' => '{{SITENAME}}-à¦\8f à¦¯à§\8bà¦\97 à¦¦à¦¿ন',
 'nologin' => "আপনার কি উইকিপিডিয়াতে অ্যাকাউন্ট নেই? তাহলে '''$1'''।",
 'nologinlink' => 'অ্যাকাউন্ট তৈরি করুন',
 'createaccount' => 'নতুন অ্যাকাউন্ট খুলুন',
@@ -544,9 +546,9 @@ $2',
 'createacct-imgcaptcha-ph' => 'উপরে যে লেখা দেখতে পাচ্ছেন তা লিখুন',
 'createacct-submit' => 'আপনার অ্যাকাউন্ট তৈরি করুন',
 'createacct-benefit-heading' => '{{SITENAME}} আপনার মত লোকেরই তৈরি।',
-'createacct-benefit-body1' => '{{PLURAL:$1|সম্পাদনা}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|পাতা|পাতাসমà§\82হ}}',
-'createacct-benefit-body3' => 'সাম্প্রতিক {{PLURAL:$1|অবদানকারী|অবদানকারীগণ}}',
+'createacct-benefit-body1' => '{{PLURAL:$1|à¦\9fি à¦¸à¦®à§\8dপাদনা}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|à¦\9fি à¦ªà¦¾à¦¤à¦¾}}',
+'createacct-benefit-body3' => 'সাম্প্রতিক {{PLURAL:$1|অবদানকারী}}',
 'badretype' => "আপনার প্রবেশ করানো শব্দচাবি'টি মিলছেনা।",
 'userexists' => 'এই ব্যবহারকারী নামটি ইতমধ্যে ব্যবহার করা হয়েছে।
 অনুগ্রহ করে অন্য নাম বেছে নিন।',
@@ -596,7 +598,7 @@ $2',
 'cannotchangeemail' => 'একাউন্ট ইমেইল ঠিকানা এই উইকিতে পরিবর্তন করা যাবে না।',
 'emaildisabled' => 'এই সাইটটিতে ই-মেইল প্রদানের সুবিধা নেই।',
 'accountcreated' => 'অ্যাকাউন্ট তৈরি করা হয়েছে',
-'accountcreatedtext' => '$1 এর জন্য ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয়েছে।',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|আলাপ]]) এর জন্য ব্যবহারকারী অ্যাকাউন্ট তৈরি করা হয়েছে।',
 'createaccount-title' => '{{SITENAME}}-এর জন্য অ্যাকাউন্ট সৃষ্টি',
 'createaccount-text' => 'কেউ $2-এর জন্য {{SITENAME}}-এ একটি অ্যাকাউন্ট সৃষ্টি করেছেন ($4)। "$2"-এর জন্য শব্দচাবি হল "$3"। আপনার এখন অ্যাকাউন্টে প্রবেশ করে শব্দচাবি পরিবর্তন করা উচিত।
 
@@ -634,6 +636,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
+'passwordreset-text-one' => 'আপনার পাসওয়ার্ড পুনরায় সেট করতে এই ফর্মটি পূরণ করুন।',
+'passwordreset-text-many' => '{{PLURAL:$1|আপনার পাসওয়ার্ড রিসেট করতে এই তথ্যগুলোর যেকোন একটা প্রবেশ করান।}}',
 'passwordreset-legend' => 'শব্দচাবি রিসেট',
 'passwordreset-disabled' => 'এই উইকিতে শব্দচাবি রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।',
 'passwordreset-emaildisabled' => 'এই উইকিতে ইমেইল অপশনটি বন্ধ করা হয়েছে।',
@@ -767,7 +771,9 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
 একাধিক ব্যবহারকারী এরকম একটি আইপি ঠিকানা ব্যবহার করতে পারেন।
 আপনি যদি একজন বেনামী ব্যবহারকারী হয়ে থাকেন এবং যদি অনুভব করেন যে আপনার প্রতি অপ্রাসঙ্গিক মন্তব্য করা হয়েছে, তাহলে অন্যান্য বেনামী ব্যবহারকারীর সাথে ভবিষ্যতে বিভ্রান্তি এড়াতে অনুগ্রহ করে [[Special:UserLogin/signup|একটি অ্যাকাউন্ট তৈরি করুন]] অথবা  [[Special:UserLogin|অ্যাকাউন্টে প্রবেশ করুন]]।''",
 'noarticletext' => 'বর্তমানে এই পাতায় কোন লেখা নেই।
-আপনি চাইলে অন্যান্য পাতায় [[Special:Search/{{PAGENAME}}| এই শিরোনামটি অনুসন্ধান করতে পারেন]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} এ সম্পর্কিত লগ অনুসন্ধান করতে পারেন], কিংবা [{{fullurl:{{FULLPAGENAME}}|action=edit}} এই পাতাটি সম্পাদনা করতে পারেন]</span>।',
+আপনি চাইলে অন্যান্য পাতায় [[Special:Search/{{PAGENAME}}| এই শিরোনামটি অনুসন্ধান করতে পারেন]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} এ সম্পর্কিত লগ অনুসন্ধান করতে পারেন], 
+কিংবা [{{fullurl:{{FULLPAGENAME}}|action=edit}} এই পাতাটি সম্পাদনা করতে পারেন]</span>।',
 'noarticletext-nopermission' => 'বর্তমানে এই পাতায় কোন লেখা নেই।
 আপনি চাইলে অন্য পাতায় [[Special:Search/{{PAGENAME}}| শিরোনামটি অনুসন্ধান করতে পারেন]], অথবা <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} সম্পর্কিত লগ অনুসন্ধান করতে পারেন]</span>, কিন্তু আপনার এই পাতাটি তৈরী করার অনুমতি নেই।',
 'missing-revision' => '"{{PAGENAME}}" এর #$1তম সংস্করণটি প্রদর্শন সম্ভব নয়।
@@ -840,9 +846,9 @@ $1 নিষেধাজ্ঞা আরোপ করেছেন। নিষ
 'cascadeprotectedwarning' => "'''সতর্কীকরণ:''' এই পাতাটি বন্ধ করা হয়েছে, যাতে কেবল প্রশাসকের ক্ষমতাবিশিষ্ট ব্যবহারকারীরা এটি সম্পাদনা করতে পারেন, কারণ এই পাতাটি নিচের প্রপাতাকারে সুরক্ষিত (cascade-protected) {{PLURAL:$1|টি পাতায়|টি পাতায়}} অন্তর্ভুক্ত আছে:",
 'titleprotectedwarning' => "'''সতর্কীকরণ: এই পাতাটির ব্যবহার সীমিত করা হয়েছে, যাতে কেবলমাত্র [[Special:ListGroupRights|এই নির্দিষ্ট অনুমতিপ্রাপ্ত]] ব্যবহারকারী এটি তৈরি করতে পারেন।'''
 আপনার সুবিধার্থে পাতাটির সাম্প্রতিক সংরক্ষণ লগের বিবরণ নিচে দেওয়া হলো।",
-'templatesused' => 'à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦¬à§\8dযবহà§\83ত {{PLURAL:$1|à¦\9fà§\87মà§\8dপলà§\87à¦\9f|à¦\9fà§\87মà§\8dপলেটসমূহ}}:',
+'templatesused' => 'à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦¬à§\8dযবহà§\83ত {{PLURAL:$1|à¦\9fà§\87মপà§\8dলà§\87à¦\9f|à¦\9fà§\87মপà§\8dলেটসমূহ}}:',
 'templatesusedpreview' => 'এই প্রাকদর্শনে ব্যবহৃত {{PLURAL:$1|টেম্পলেট| টেম্পলেটসমূহ}}:',
-'templatesusedsection' => 'à¦\8fà¦\87 à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87 à¦¬à§\8dযবহà§\83ত {{PLURAL:$1|à¦\9fà§\87মà§\8dপলà§\87à¦\9f|à¦\9fà§\87মà§\8dপলেটসমূহ}}:',
+'templatesusedsection' => 'à¦\8fà¦\87 à¦\85নà§\81à¦\9aà§\8dà¦\9bà§\87দà§\87 à¦¬à§\8dযবহà§\83ত {{PLURAL:$1|à¦\9fà§\87মপà§\8dলà§\87à¦\9f|à¦\9fà§\87মপà§\8dলেটসমূহ}}:',
 'template-protected' => '(সুরক্ষিত)',
 'template-semiprotected' => '(অর্ধ-সুরক্ষিত)',
 'hiddencategories' => 'এ পাতাটি যে {{PLURAL:$1|1 লুকায়িত বিষয়শ্রেণীর|$1 লুকায়িত বিষয়শ্রেণীসমূহের}} সদস্য:',
@@ -1118,7 +1124,6 @@ $1",
 'searchmenu-legend' => 'অনুসন্ধান অপশন',
 'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
-'searchhelp-url' => 'Help:সহায়িকা',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই প্রিফিক্স রয়েছে এমন পাতা দেখুন]]',
 'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
 'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
@@ -1373,6 +1378,8 @@ $1",
 'right-editusercssjs' => 'অন্য ব্যবহারকারীগণের CSS এবং JS ফাইল সম্পাদনা',
 'right-editusercss' => 'অন্য ব্যবহারকারীগণের CSS ফাইল সম্পাদনা',
 'right-edituserjs' => 'অন্য ব্যবহারকারীগণের JS ফাইল সম্পাদনা',
+'right-editmyusercss' => 'আপনার নিজস্ব ব্যবহারকারী সিএসএস ফাইল সম্পাদনা করুন',
+'right-editmyuserjs' => 'আপনার নিজস্ব ব্যবহারকারী জাভাস্ক্রিপ্ট ফাইল সম্পাদনা করুন',
 'right-rollback' => 'একটি নির্দিষ্ট পাতার সর্বশেষ ব্যবহারকারীর সম্পদনা পূর্বাবস্থায় ফিরিয়ে আনুন',
 'right-markbotedits' => 'রোলড-ব্যাক সম্পাদনাসমূহকে বট সম্পাদনা হিসেবে চিহ্নিত করো',
 'right-noratelimit' => 'রেট লিমিটের ভিত্তিতে পরিবর্তন হবে না',
@@ -2361,7 +2368,7 @@ $1',
 'mycontris' => 'অবদান',
 'contribsub2' => '$1 ($2)-এর জন্য',
 'nocontribs' => 'এই শর্তগুলির সাথে মিলে যায়, এমন কোন পরিবর্তন খুঁজে পাওয়া যায়নি।',
-'uctop' => '(শà§\80রà§\8dষ)',
+'uctop' => '(বরà§\8dতমান)',
 'month' => 'এই মাস (বা তার আগে) থেকে:',
 'year' => 'এই বছর (এবং তার আগে) থেকে:',
 
@@ -2659,7 +2666,7 @@ $1',
 'export-addnstext' => 'নামস্থান থেকে পাতা যুক্ত করুন:',
 'export-addns' => 'যোগ',
 'export-download' => 'ফাইল হিসেবে সংরক্ষণ করা হোক',
-'export-templates' => 'à¦\9fà§\87মà§\8dপলেট অন্তর্ভুক্তি',
+'export-templates' => 'à¦\9fà§\87মপà§\8dলেট অন্তর্ভুক্তি',
 'export-pagelinks' => 'সম্পর্কিত পাতাগুলো এই ধাপ পর্যন্ত যুক্ত করো:',
 
 # Namespace 8 related
@@ -3619,6 +3626,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 
 # Signatures
 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|আলাপ]])',
+'timezone-utc' => 'ইউটিসি',
 
 # Core parser functions
 'unknown_extension_tag' => 'অজানা এক্সটেনশন ট্যাগ "$1"',
index f5b2db4..6f14682 100644 (file)
@@ -285,7 +285,6 @@ $1',
 'disclaimers' => 'দাবি বেলানি',
 'disclaimerpage' => 'Project:ইজ্জু দাবি বেলানি',
 'edithelp' => 'পতানি পাংলাক',
-'edithelppage' => 'Help:কিসাদে_পাতা_আহান_পতানি',
 'helppage' => 'Help:পাংলাক',
 'mainpage' => 'পয়লা পাতা',
 'mainpage-description' => 'পয়লা পাতা',
@@ -841,7 +840,6 @@ $2',
 'searchmenu-legend' => 'বিসারানির অপশনহানি',
 'searchmenu-exists' => "'''উইকি এহাত \"[[:\$1]]\" নাঙে পাতা আহান আসে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" নাঙর পাতাহান এরে উইকিত হঙকর!'''",
-'searchhelp-url' => 'Help:পাংলাক',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এরে prefix এতাল আসে পাতাহানি]]',
 'searchprofile-articles' => 'কন্টেন্টর পাতাহানি',
 'searchprofile-project' => 'পাঙলাক বারো প্রকল্পর পাতা',
index 1f4f430..82f8325 100644 (file)
@@ -11,6 +11,7 @@
  * @author Candalua
  * @author Fohanno
  * @author Fulup
+ * @author Geitost
  * @author Gwendal
  * @author Gwenn-Ael
  * @author Kaganer
@@ -421,7 +422,6 @@ $1',
 'disclaimers' => 'Kemennoù',
 'disclaimerpage' => 'Project:Kemenn hollek',
 'edithelp' => 'Skoazell',
-'edithelppage' => 'Help:Penaos kemmañ traoù er pennadoù',
 'helppage' => 'Help:Skoazell',
 'mainpage' => 'Degemer',
 'mainpage-description' => 'Degemer',
@@ -613,7 +613,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
 'notloggedin' => 'Digevreet',
 'userlogin-noaccount' => "Kont ebet ganeoc'h c'hoazh ?",
 'userlogin-joinproject' => 'Kemer perzh e {{SITENAME}}',
-'nologin' => "N'hoc'h eus kont ebet ? '''$1'''.",
+'nologin' => "N'hoc'h eus kont ebet ? $1.",
 'nologinlink' => 'Krouiñ ur gont',
 'createaccount' => 'Krouiñ ur gont nevez',
 'gotaccount' => "Ur gont zo ganeoc'h dija ? '''$1'''.",
@@ -1193,7 +1193,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchmenu-legend' => 'Dibarzhioù klask',
 'searchmenu-exists' => "'''Ur bajenn anvet\"[[:\$1]]\" zo war ar wiki-mañ'''",
 'searchmenu-new' => "'''Krouiñ ar bajenn \"[[:\$1]]\" war ar wiki-mañ !'''",
-'searchhelp-url' => 'Help:Skoazell',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Furchal er pajennoù a grog gant ar rakger-mañ]]',
 'searchprofile-articles' => 'Pajennoù gant boued',
 'searchprofile-project' => 'Pajennoù skoazell ha pajennoù ar raktres',
@@ -1692,11 +1691,11 @@ $1",
 'upload-proto-error-text' => 'Rekis eo an URLoù a grog gant <code>http://</code> pe <code>ftp://</code> evit enporzhiañ.',
 'upload-file-error' => 'Fazi diabarzh',
 'upload-file-error-text' => "Ur fazi diabarzh zo c'hoarvezet en ur grouiñ ur restr da c'hortoz war ar servijer.
-Kit e darempred gant [[Special:ListUsers/sysop|unan eus merourien ar reizhiad]].",
+Kit e darempred gant [[Special:ListUsers/sysop|unan eus merourien]].",
 'upload-misc-error' => 'Fazi kargañ dianav',
 'upload-misc-error-text' => "Ur fazi dianav zo bet e-ser kargañ.
 Gwiriit eo reizh an URL hag e c'hall bezañ tizhet ha klaskit en-dro.
-Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar reizhiad]].",
+Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien]].",
 'upload-too-many-redirects' => 'Re a adkasoù zo en URL-mañ.',
 'upload-unknown-size' => 'Ment dianav',
 'upload-http-error' => 'Ur fazi HTTP zo bet : $1',
index 00f2f32..24475d9 100644 (file)
@@ -13,6 +13,7 @@
  * @author DzWiki
  * @author Edinwiki
  * @author Fulup
+ * @author Geitost
  * @author Kaganer
  * @author Kal-El
  * @author Malafaya
@@ -387,6 +388,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'dec',
+'january-date' => '$1. januar',
+'february-date' => '$1. februar',
+'march-date' => '$1. mart',
+'april-date' => '$1. april',
+'may-date' => '$1. maj',
+'june-date' => '$1. juni',
+'july-date' => '$1. juli',
+'august-date' => '$1. august',
+'september-date' => '$1. septembar',
+'october-date' => '$1. oktobar',
+'november-date' => '$1. novembar',
+'december-date' => '$1. decembar',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorije}}',
@@ -412,6 +425,7 @@ $messages = array(
 'newwindow' => '(otvara se u novom prozoru)',
 'cancel' => 'Poništite',
 'moredotdotdot' => 'Još...',
+'morenotlisted' => 'Više nije prikazano...',
 'mypage' => 'Korisnička stranica',
 'mytalk' => 'Razgovor',
 'anontalk' => 'Razgovor za ovu IP adresu',
@@ -492,7 +506,7 @@ $messages = array(
 'viewhelppage' => 'Pogledajte stranicu za pomoć',
 'categorypage' => 'Pogledaj stranicu kategorije',
 'viewtalkpage' => 'Pogledaj raspravu',
-'otherlanguages' => 'Ostali jezici',
+'otherlanguages' => 'Na drugim jezicima',
 'redirectedfrom' => '(Preusmjereno sa $1)',
 'redirectpagesub' => 'Preusmjeri stranicu',
 'lastmodifiedat' => 'Ova stranica je posljednji put izmijenjena $2, $1',
@@ -520,7 +534,6 @@ $1',
 'disclaimers' => 'Odricanje odgovornosti',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju stranice',
-'edithelppage' => 'Help:Uređivanje',
 'helppage' => 'Help:Sadržaj',
 'mainpage' => 'Početna strana',
 'mainpage-description' => 'Početna strana',
@@ -650,7 +663,7 @@ Podaci koji se ovdje nalaze ne moraju biti aktuelni.',
 'wrong_wfQuery_params' => 'Netačni parametri za wfQuery()<br />
 Funkcija: $1<br />
 Pretraga: $2',
-'viewsource' => 'pogledaj kod',
+'viewsource' => 'Pogledaj izvor',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Akcija je usporena',
 'actionthrottledtext' => 'Kao anti-spam mjera, ograničene su vam izmjene u određenom vremenu, i trenutačno ste dostigli to ograničenje. Pokušajte ponovo poslije nekoliko minuta.',
@@ -697,8 +710,10 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
 'userlogin-yourpassword-ph' => 'Unesite Vašu šifru/lozinku',
 'createacct-yourpassword-ph' => 'Unesite šifru/lozinku',
 'yourpasswordagain' => 'Ponovite šifru:',
+'createacct-yourpasswordagain' => 'Potvrdite šifru/lozinku',
 'createacct-yourpasswordagain-ph' => 'Unesite šifru/lozinku opet',
 'remembermypassword' => 'Zapamti moju šifru na ovom računaru (najviše $1 {{PLURAL:$1|dan|dana|dana}})',
+'userlogin-remembermypassword' => 'Ostavi me prijavljen',
 'userlogin-signwithsecure' => 'Koristite sigurnu konekciju',
 'securelogin-stick-https' => 'Ostani povezan na HTTPS nakon prijave',
 'yourdomainname' => 'Vaš domen:',
@@ -712,25 +727,33 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} pode
 'logout' => 'Odjavi me',
 'userlogout' => 'Odjavi me',
 'notloggedin' => 'Niste prijavljeni',
-'userlogin-noaccount' => 'Nemate korisničko ime?',
+'userlogin-noaccount' => 'Nemate korisnički račun?',
 'userlogin-joinproject' => 'Pridružite se {{SITENAME}}',
-'nologin' => "Nemate korisničko ime? '''$1'''.",
+'nologin' => 'Nemate korisničko ime? $1.',
 'nologinlink' => 'Napravite nalog',
-'createaccount' => 'Napravi nalog',
+'createaccount' => 'Napravi korisnički račun',
 'gotaccount' => "Imate nalog? '''$1'''.",
 'gotaccountlink' => 'Prijavi se',
 'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
+'userlogin-resetpassword-link' => 'Resetirajte svoju šifru/lozinku',
+'helplogin-url' => 'Help:Prijavljivanje',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoć pri prijavljivanju]]',
 'createacct-join' => 'Unesite svoje podatke ispod.',
 'createacct-emailrequired' => 'Adresa e-pošte',
 'createacct-emailoptional' => 'Adresa e-pošte (opcionalno)',
+'createacct-email-ph' => 'Unesite Vašu adresu e-pоšte',
 'createaccountmail' => 'Koristite privremenu, slučajno stvorenu šifru/lozinku i pošaljite na dole navedenu adrеsu e-pošte',
 'createacct-realname' => 'Pravo ime (opcionalno)',
 'createaccountreason' => 'Razlog:',
 'createacct-reason' => 'Razlog',
+'createacct-reason-ph' => 'Zašto pravite još jedan korisnički račun?',
 'createacct-captcha' => 'Sigurnosna provjera',
 'createacct-imgcaptcha-ph' => 'Unesite tekst koji vidite iznad',
 'createacct-submit' => 'Napravite svoj korisnički račun',
+'createacct-benefit-heading' => '{{SITENAME}} je napravljen od strane ljudi kao što ste Vi.',
+'createacct-benefit-body1' => '{{PLURAL:$1|izmjena|izmjene}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|stranica|stranice|stranica}}',
+'createacct-benefit-body3' => 'nedavni {{PLURAL:$1|doprinosa}}',
 'badretype' => 'Šifre koje ste unijeli se ne poklapaju.',
 'userexists' => 'Korisničko ime koje ste unijeli je već u upotrebi.
 Molimo Vas da izaberete drugo ime.',
@@ -785,7 +808,7 @@ Molimo vas da unesete ispravnu adresu ili ostavite prazno polje.',
 'cannotchangeemail' => 'Na ovom wikiju ne možete promijeniti e-mail adresu računa.',
 'emaildisabled' => 'Ova web-stranica ne može da šalje e-poruke.',
 'accountcreated' => 'Korisnički račun je napravljen',
-'accountcreatedtext' => 'Korisnički račun za $1 je napravljen.',
+'accountcreatedtext' => 'Korisnički račun za [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|razgovor]]) je napravljen.',
 'createaccount-title' => 'Pravljenje korisničkog računa za {{SITENAME}}',
 'createaccount-text' => 'Neko je napravio korisnički račun za vašu e-mail adresu na {{SITENAME}} ($4) sa imenom "$2", i sa šifrom "$3".
 Trebali biste se prijaviti i promjeniti šifru.
@@ -810,7 +833,7 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
 'resetpass_header' => 'Obnovi šifru za račun',
 'oldpassword' => 'Stara šifra:',
 'newpassword' => 'Nova šifra:',
-'retypenew' => 'Ukucajte ponovo novu šifru:',
+'retypenew' => 'Unesite ponovo novu šifru:',
 'resetpass_submit' => 'Odredi šifru i prijavi se',
 'resetpass_success' => 'Vaša šifra je uspiješno promjenjena! Prijava u toku...',
 'resetpass_forbidden' => 'Šifre ne mogu biti promjenjene',
@@ -823,13 +846,14 @@ Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privrem
 
 # Special:PasswordReset
 'passwordreset' => 'Poništavanje šifre',
+'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
 'passwordreset-legend' => 'Poništi šifru',
 'passwordreset-disabled' => 'Poništavanje šifre  je onemogućeno na ovoj wiki.',
 'passwordreset-username' => 'Korisničko ime:',
 'passwordreset-domain' => 'Domen:',
 'passwordreset-capture' => 'Pogledati krajnji e-mail?',
 'passwordreset-capture-help' => 'Ako označite ovu kućicu, e-poruka (s privremenom lozinkom) će biti prikazana i poslata korisniku.',
-'passwordreset-email' => 'E-mail adresa:',
+'passwordreset-email' => 'Adresa e-pošte:',
 'passwordreset-emailtitle' => 'Detalji računa na {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Neko (vjerovatno Vi, s IP adrese $1) je zatražio podsjetnik Vaših detalja računa za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|račun korisnika je|računi korisnika su}} povezani s ovom e-mail adresom:
 
@@ -837,15 +861,12 @@ $2
 
 {{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
 Trebate se prijaviti i odabrati novu šifru. Ako je neko drugi napravio ovaj zahtjev, ili ako ste se sjetili Vaše početne šifre, a ne želite je promijeniti, možete zanemariti ovu poruku i nastaviti koristiti staru šifru.',
-'passwordreset-emailtext-user' => 'Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima Vašeg računa za {{SITENAME}}
-($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:
+'passwordreset-emailtext-user' => 'Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima Vašeg računa za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|korisnički račun je|korisnički računi su}} povezani s ovom e-mail adresom:
 
 $2
 
 {{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
-Trebate se prijaviti i odabrati novu šifru. Ako je neko drugi napravio ovaj
-zahtjev, ili ako ste se sjetili Vaše originalne šifre, a ne želite je više promijeniti, 
-možete zanemariti ovu poruku i nastaviti koristiti staru šifru.',
+Trebate se prijaviti i odabrati novu šifru. Ako je neko drugi napravio ovaj zahtjev, ili ako ste se sjetili Vaše originalne šifre, a ne želite je više promijeniti, možete zanemariti ovu poruku i nastaviti koristiti staru šifru.',
 'passwordreset-emailelement' => 'Korisničko ime: $1
 Privremena šifra: $2',
 'passwordreset-emailsent' => 'E-mail podsjetnik je poslan.',
@@ -1071,14 +1092,17 @@ Nije ponuđeno nikakvo objašnjenje.',
 Izgleda da je obrisana.',
 'edit-conflict' => 'Sukob izmjena.',
 'edit-no-change' => 'Vaša izmjena je ignorirana, jer nije bilo promjena teksta stranice.',
+'postedit-confirmation' => 'Vaša izmjena je sačuvana.',
 'edit-already-exists' => 'Stranica nije mogla biti kreirana.
 Izgleda da već postoji.',
 'defaultmessagetext' => 'Uobičajeni tekst poruke',
+'content-not-allowed-here' => 'Sadržaj napisan u obliku "$1" nije dozvoljen na stranici [[$2]]',
 'editwarning-warning' => 'Napuštanje ove stranice može dovesti do gubitka svih promjena koje ste načinili.
 Ako ste prijavljeni, možete isključiti ovo upozorenje u "{{int:prefs-editing}}" dijelu vaših opcija.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
+'content-model-text' => 'obični tekst',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
 
@@ -1292,6 +1316,10 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'editundo' => 'ukloni ovu izmjenu',
 'diff-multi' => '({{plural:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije|Nije prikazano $1 međurevizija}} od {{PLURAL:$2|jednog korisnika|$2 korisnika}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od više od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})',
+'difference-missing-revision' => '{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.
+
+Ovo se obično dešava kada pratite zastarjelu vezu na stranice koja je obrisana.
+Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokol brisanja].',
 
 # Search results
 'searchresults' => 'Rezultati pretrage',
@@ -1313,7 +1341,6 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchhelp-url' => 'Help:Sadržaj',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
@@ -1499,6 +1526,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'userrights-notallowed' => 'Vaš račun nema privilegije da dodaje ili oduzima prava korisnika.',
 'userrights-changeable-col' => 'Grupe koje možete mijenjati',
 'userrights-unchangeable-col' => 'Grupe koje ne možete mijenjati',
+'userrights-conflict' => 'Sukob u korisničkim pravima! Molimo pošaljite Vaše promjene ponovno.',
 
 # Groups
 'group' => 'Grupa:',
@@ -1843,6 +1871,9 @@ Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administrator
 'backend-fail-closetemp' => 'Ne mogu zatvoriti privremenu datoteku.',
 'backend-fail-read' => 'Ne mogu čitati datoteku $1.',
 'backend-fail-create' => 'Ne mogu napraviti datoteku $1.',
+'backend-fail-readonly' => 'Skladišna osnova "$1" je trenutno samo za čitanje. Navedeni razlog je: "$2"',
+'backend-fail-synced' => 'Datoteka "$1" je u nekonzistentnom stanju u internom skladištu',
+'backend-fail-internal' => 'Došlo je do nepoznate greške u skladišnoj osnovi "$1".',
 'backend-fail-contenttype' => 'Ne mogu da utvrdim kakav sadržaj ima datoteka koju treba da smjestim u "$1".',
 
 # Lock manager
@@ -2225,7 +2256,7 @@ Podržani protokoli: <code>$1</code> (ne dodavajte bilo koji od ovih u vašu pre
 # Special:ActiveUsers
 'activeusers' => 'Spisak aktivnih korisnika',
 'activeusers-intro' => 'Ovo je spisak korisnika koji su napravili neku aktivnost u {{PLURAL:$1|zadnji $1 dan|zadnja $1 dana|zadnjih $1 dana}}.',
-'activeusers-count' => '{{PLURAL:$1|nedavna $1 izmjena|nedavne $1 izmjene|nedavnih $1 izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
+'activeusers-count' => '$1 {{PLURAL:$1|izmjena|izmjene|izmjena}} u {{PLURAL:$3|posljednji $3 dan|posljednja $3 dana|posljednjih $3 dana}}',
 'activeusers-from' => 'Prikaži korisnike koji počinju sa:',
 'activeusers-hidebots' => 'Sakrij botove',
 'activeusers-hidesysops' => 'Sakrij administratore',
@@ -2454,8 +2485,8 @@ Slijede trenutne postavke stranice '''$1''':",
 'protect-cascadeon' => 'Ova stranica je tenutno zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju|stranice, koje imaju}} uključenu prenosnu zaštitu.
 Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenosnu zaštitu.',
 'protect-default' => 'Dopusti svim korisnicima',
-'protect-fallback' => 'Potrebno je imati "$1" ovlasti',
-'protect-level-autoconfirmed' => 'Blokiraj nove i neregistrovane korisnike',
+'protect-fallback' => 'Dozvolite samo korisnicima sa "$1" ovlastima/privilegijama',
+'protect-level-autoconfirmed' => 'Dopustite samo automatski potvrđenim korisnicima',
 'protect-level-sysop' => 'Dozvoli samo administratorima',
 'protect-summary-cascade' => 'prenosna zaštita',
 'protect-expiring' => 'ističe $1 (UTC)',
@@ -3089,6 +3120,7 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
 'pageinfo-language' => 'Jezik sadržaja stranice',
 'pageinfo-views' => 'Broj pogleda',
 'pageinfo-watchers' => 'Broj pratitelja stranice',
+'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
 'pageinfo-redirects-name' => 'Preusmjeravanja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmjerenje|preusmjerenja}}; $3 {{PLURAL:$3|nepreusmjerenje|nepreusmjerenja}})',
@@ -3108,7 +3140,9 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
 'pageinfo-contentpage' => 'Broji se kao stranica sa sadržajem',
 'pageinfo-contentpage-yes' => 'Da',
 'pageinfo-protect-cascading-yes' => 'Da',
+'pageinfo-category-info' => 'Informacije o kategoriji',
 'pageinfo-category-pages' => 'Broj stranica',
+'pageinfo-category-subcats' => 'Broj podkategorija',
 'pageinfo-category-files' => 'Broj datoteka',
 
 # Skin names
@@ -3160,6 +3194,7 @@ $1',
 'file-nohires' => 'Veća rezolucija nije dostupna.',
 'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3',
 'svg-long-desc-animated' => 'Animirana SVG datoteka, nominalno: $1 × $2 piksela, veličina datoteke: $3',
+'svg-long-error' => 'Nevaljana SVG datoteka: $1',
 'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
 'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Ostale rezolucije}}: $1.',
@@ -3189,9 +3224,24 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuta|$1 minute|$1 minuta}}',
 'hours' => '{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}',
 'days' => '{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}',
+'weeks' => '{{PLURAL:$1|$1 sedmica}}',
 'months' => '{{PLURAL:$1|$1 mjesec|$1 mjeseci}}',
 'years' => '{{PLURAL:$1|$1 godina|$1 godine|$1 godina}}',
 'ago' => 'prije $1',
+'just-now' => 'upravo sad',
+
+# Human-readable timestamps
+'hours-ago' => 'prije $1 {{PLURAL:$1|sat|sata|sati}}',
+'minutes-ago' => 'prije $1 {{PLURAL:$1|minute|minute|minuta}}',
+'seconds-ago' => 'prije $1 {{PLURAL:$1|sekunde|sekunde|sekundi}}',
+'monday-at' => 'Ponedeljak u $1',
+'tuesday-at' => 'Utorak u $1',
+'wednesday-at' => 'Srijeda u $1',
+'thursday-at' => 'Četvrtak u $1',
+'friday-at' => 'Petak u $1',
+'saturday-at' => 'Subota u $1',
+'sunday-at' => 'Nedjelja u $1',
+'yesterday-at' => 'Jučer u $1',
 
 # Bad image list
 'bad_image_list' => "Koristi se sljedeći format:
@@ -3683,6 +3733,7 @@ Ovaj kod za potvrdu će isteći u $4.',
 # Scary transclusion
 'scarytranscludedisabled' => '[Međuwiki umetanje je isključeno]',
 'scarytranscludefailed' => '[Neuspješno preusmjerenje šablona na $1]',
+'scarytranscludefailed-httpstatus' => '[Preuzimanje šablona nije uspjelo za $1: HTTP $2]',
 'scarytranscludetoolong' => '[URL je predugačak]',
 
 # Delete conflict
@@ -3860,6 +3911,7 @@ Također možete [[Special:EditWatchlist|koristiti standardni uređivač]].',
 'version-license' => 'Licenca',
 'version-poweredby-credits' => "Ova wiki je zasnovana na '''[//www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
 'version-poweredby-others' => 'ostali',
+'version-credits-summary' => 'Željeli bismo se zahvaliti sljedećim ljudima na njihovom doprinosu [[Special:Version|MediaWikiju]].',
 'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
 
 Mediawiki se distriburia u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, čak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREĐENU SVRHU. Pogledajte GNU opću javnu licencu za više detalja.
@@ -3871,6 +3923,14 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'version-entrypoints-header-entrypoint' => 'Ulazna tačka',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-submit' => 'Idi',
+'redirect-value' => 'Vrijednost:',
+'redirect-user' => 'Korisnički ID',
+'redirect-revision' => 'Verzija stranice',
+'redirect-file' => 'Naziv datoteke',
+'redirect-not-exists' => 'Vrijednost nije pronađena',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Pretraga za duplim datotekama',
 'fileduplicatesearch-summary' => 'Pretraga za duplim datotekama na bazi njihove haš vrijednosti.',
@@ -3959,6 +4019,9 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'htmlform-submit' => 'Pošalji',
 'htmlform-reset' => 'Vrati izmjene',
 'htmlform-selectorother-other' => 'Ostalo',
+'htmlform-no' => 'Ne',
+'htmlform-yes' => 'Da',
+'htmlform-chosen-placeholder' => 'Izaberite opciju',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 sa podrškom pretrage cijelog teksta',
@@ -3992,7 +4055,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'logentry-patrol-patrol-auto' => '$1 je automatski {{GENDER:$2|označio|označila}} izmjenu $4 stranice $3 pregledanim',
 'logentry-newusers-newusers' => 'Korisnički račun $1 je {{GENDER:$2|napravljen}}',
 'logentry-newusers-create' => 'Korisnički račun $1 je {{GENDER:$2|napravljen}}',
-'logentry-newusers-create2' => '$3 je {{GENDER:$2|napravio|napravila}} korisnički račun $1',
+'logentry-newusers-create2' => '$1 je {{GENDER:$2|napravio|napravila}} korisnički račun $3',
 'logentry-newusers-byemail' => 'Korisnički račun $3 je {{GENDER:$2|napravio|napravila}} $1 i lozinka/šifra je poslana putem e-maila',
 'logentry-newusers-autocreate' => 'Korisnički račun $1 je automatski {{GENDER:$2|napravljen}}',
 'logentry-rights-rights' => '$1 je {{GENDER:$2|promijenio|promijenila|promijenio}} članstvo grupe za $3 iz $4 u $5',
@@ -4073,4 +4136,7 @@ Inače, možete ispuniti jednostavan obrazac ispod. Vaš komentar biti će dodan
 'duration-centuries' => '$1 {{PLURAL:$1|vijek|vijeka|vijekova}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenij|milenija}}',
 
+# Image rotation
+'rotate-comment' => 'Slika rotirana za $1 {{PLURAL:$1|stepen|stepeni}} u smjeru kazaljke na satu',
+
 );
index 215061c..fa32955 100644 (file)
  *
  */
 
-$fallback = 'ru';
\ No newline at end of file
+$fallback = 'ru';
+
+$namespaceNames = array(
+       NS_MEDIA            => 'Меди',
+       NS_SPECIAL          => 'Тусхай',
+       NS_TALK             => 'Хэлэлсэхэ',
+       NS_USER             => 'Хэрэглэгшэ',
+       NS_USER_TALK        => 'Хэрэглэгшые_хэлэлсэхэ',
+       NS_PROJECT_TALK     => '$1_тухай_хэлэлсэхэ',
+       NS_FILE             => 'Файл',
+       NS_FILE_TALK        => 'Файл_хэлэлсэхэ',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_хэлэлсэхэ',
+       NS_TEMPLATE         => 'Загбар',
+       NS_TEMPLATE_TALK    => 'Загбар_хэлэлсэхэ',
+       NS_HELP             => 'Туһаламжа',
+       NS_HELP_TALK        => 'Туһаламжа_хэлэлсэл',
+       NS_CATEGORY         => 'Категори',
+       NS_CATEGORY_TALK    => 'Категори_хэлэлсэхэ',
+);
+
+$namespaceAliases = array(
+       # Russian namespaces
+       'Обсуждение'                         => NS_TALK,
+       'Участник'                           => NS_USER,
+       'Обсуждение_участника'               => NS_USER_TALK,
+       'Обсуждение_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
+       'Обсуждение_файла'                   => NS_FILE_TALK,
+       'Обсуждение_MediaWiki'               => NS_MEDIAWIKI_TALK,
+       'Обсуждение_шаблона'                 => NS_TEMPLATE_TALK,
+       'Справка'                            => NS_HELP,
+       'Обсуждение_справки'                 => NS_HELP_TALK,
+       'Категория'                          => NS_CATEGORY,
+       'Обсуждение_категории'               => NS_CATEGORY_TALK,
+);
+
+// Remove Russian gender aliases
+$namespaceGenderAliases = array();
+
index d6431ac..68abc4a 100644 (file)
@@ -443,13 +443,12 @@ $1",
 'disclaimers' => 'Avís general',
 'disclaimerpage' => 'Project:Avís general',
 'edithelp' => 'Ajuda',
-'edithelppage' => "Help:Com s'edita una pàgina",
 'helppage' => 'Help:Índex',
 'mainpage' => 'Pàgina principal',
 'mainpage-description' => 'Pàgina principal',
 'policy-url' => 'Project:Polítiques',
-'portal' => 'Portal comunitari',
-'portal-url' => 'Project:Portal',
+'portal' => 'Portal de la comunitat',
+'portal-url' => 'Project:Portal de la comunitat',
 'privacy' => 'Política de privadesa',
 'privacypage' => 'Project:Política de privadesa',
 
@@ -714,7 +713,7 @@ Introduïu una adreça amb un format adequat o bé buideu el camp.",
 'cannotchangeemail' => 'No podeu canviar adreces de correu electrònic en aquest wiki.',
 'emaildisabled' => 'El lloc no pot enviar correus electrònics.',
 'accountcreated' => "S'ha creat el compte",
-'accountcreatedtext' => "S'ha creat el compte d'usuari de $1.",
+'accountcreatedtext' => "S'ha creat el compte d'usuari de [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discussió]]).",
 'createaccount-title' => "Creació d'un compte a {{SITENAME}}",
 'createaccount-text' => "Algú ha creat un compte d'usuari anomenat $2 al projecte {{SITENAME}}
 ($4) amb la vostra adreça de correu electrònic. La contrasenya per a l'usuari «$2» és «$3». Hauríeu d'accedir al compte i canviar-vos aquesta contrasenya quan abans millor.
@@ -1235,7 +1234,6 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Opcions de cerca',
 'searchmenu-exists' => "'''Hi ha una pàgina anomenada «[[:$1]]» en aquest wiki'''",
 'searchmenu-new' => "'''Creeu la pàgina «[[:$1]]» en aquest wiki!'''",
-'searchhelp-url' => 'Help:Ajuda',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mostra pàgines amb aquest prefix]]',
 'searchprofile-articles' => 'Pàgines de contingut',
 'searchprofile-project' => "Pàgines d'ajuda i de projecte",
@@ -2883,10 +2881,10 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 'tooltip-pt-preferences' => 'Les vostres preferències.',
 'tooltip-pt-watchlist' => 'La llista de pàgines de les que estau vigilant els canvis.',
 'tooltip-pt-mycontris' => 'Llista de les vostres contribucions.',
-'tooltip-pt-login' => 'Us animem a registrar-vos, però no és obligatori.',
+'tooltip-pt-login' => 'Us animem a registrar-vos, però no és obligatori',
 'tooltip-pt-anonlogin' => 'Us animem a registrar-vos, però no és obligatori.',
 'tooltip-pt-logout' => "Finalitza la sessió d'usuari",
-'tooltip-ca-talk' => "Discussió sobre el contingut d'aquesta pàgina.",
+'tooltip-ca-talk' => "Discussió sobre el contingut d'aquesta pàgina",
 'tooltip-ca-edit' => 'Podeu modificar aquesta pàgina. Si us plau, previsualitzeu-la abans de desar.',
 'tooltip-ca-addsection' => 'Comença una nova secció',
 'tooltip-ca-viewsource' => 'Aquesta pàgina està protegida. Podeu veure el seu codi font.',
@@ -2900,16 +2898,16 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 'tooltip-ca-unwatch' => 'Suprimiu aquesta pàgina de la vostra llista de seguiment',
 'tooltip-search' => 'Cerca a {{SITENAME}}',
 'tooltip-search-go' => 'Vés a una pàgina amb aquest nom exacte si existeix',
-'tooltip-search-fulltext' => 'Cerca a les pàgines aquest text',
-'tooltip-p-logo' => 'Pàgina principal',
+'tooltip-search-fulltext' => 'Cerca aquest text a les pàgines',
+'tooltip-p-logo' => 'Visiteu la pàgina principal',
 'tooltip-n-mainpage' => 'Visiteu la pàgina principal.',
 'tooltip-n-mainpage-description' => 'Vegeu la pàgina principal',
-'tooltip-n-portal' => 'Sobre el projecte, què podeu fer, on podeu trobar coses.',
+'tooltip-n-portal' => 'Sobre el projecte, què podeu fer, on podeu trobar coses',
 'tooltip-n-currentevents' => "Per trobar informació general sobre l'actualitat.",
-'tooltip-n-recentchanges' => 'La llista de canvis recents a la wiki.',
-'tooltip-n-randompage' => 'Vés a una pàgina aleatòria.',
-'tooltip-n-help' => 'El lloc per esbrinar.',
-'tooltip-t-whatlinkshere' => 'Llista de totes les pàgines viqui que enllacen ací.',
+'tooltip-n-recentchanges' => 'Llista de canvis recents al wiki',
+'tooltip-n-randompage' => "Pàgina a l'atzar",
+'tooltip-n-help' => 'El lloc per saber més coses',
+'tooltip-t-whatlinkshere' => 'Llista de totes les pàgines wiki que enllacen aquí',
 'tooltip-t-recentchangeslinked' => 'Canvis recents a pàgines que enllacen amb aquesta pàgina.',
 'tooltip-feed-rss' => "Canal RSS d'aquesta pàgina",
 'tooltip-feed-atom' => "Canal Atom d'aquesta pàgina",
index f3dc6a5..d9b8610 100644 (file)
@@ -156,7 +156,6 @@ $messages = array(
 'disclaimers' => 'Mò̤ hô-cáik sĭng-mìng',
 'disclaimerpage' => 'Project:Mò̤ hô-cáik sĭng-mìng',
 'edithelp' => 'Siŭ-gāi bŏng-cô',
-'edithelppage' => 'Help:Siŭ-gāi',
 'helppage' => 'Help:Mŭk-liŏh',
 'mainpage' => 'Tàu Hiĕk',
 'mainpage-description' => 'Tàu Hiĕk',
@@ -359,7 +358,6 @@ Siók-mìng: (dāng) = gâe̤ng dék sĭng bēng-buōng bī-piâng, (sèng) = g
 'prevn' => 'sèng {{PLURAL:$1|$1}} hâung',
 'nextn' => 'â {{PLURAL:$1|$1}} hâung',
 'viewprevnext' => 'Káng ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:Mŭk-liŏh',
 'showingresults' => "Hiēng-sê téng #<b>$2</b> kăi-sṳ̄ gì {{PLURAL:$1|'''1'''|'''$1'''}} bĭk giék-guō.",
 'showingresultsnum' => "Hiēng-sê téng #<b>$2</b> kăi-sṳ̄ gì {{PLURAL:$3|'''1'''|'''$3'''}} bĭk giék-guō.",
 
index 4fc6e46..11d7861 100644 (file)
@@ -24,16 +24,16 @@ $namespaceNames = array(
        NS_USER             => 'Декъашхо',
        NS_USER_TALK        => 'Декъашхон_дийцаре',
        NS_PROJECT_TALK     => '{{GRAMMAR:genitive|$1}}_дийцаре',
-       NS_FILE             => 'Ð¥lÑ\83м',
-       NS_FILE_TALK        => 'Ð¥lÑ\83ман_дийцаре',
+       NS_FILE             => 'Файл',
+       NS_FILE_TALK        => 'Файлан_дийцаре',
        NS_MEDIAWIKI        => 'MediaWiki',
        NS_MEDIAWIKI_TALK   => 'MediaWiki_дийцаре',
-       NS_TEMPLATE         => 'Куцкеп',
-       NS_TEMPLATE_TALK    => 'Куцкеп_дийцаре',
-       NS_HELP             => 'Гlо',
-       NS_HELP_TALK        => 'Гlон_дийцаре',
-       NS_CATEGORY         => 'Кадегар',
-       NS_CATEGORY_TALK    => 'Кадегар_дийцаре',
+       NS_TEMPLATE         => 'Кеп',
+       NS_TEMPLATE_TALK    => 'Кепан_дийцаре',
+       NS_HELP             => 'ГӀо',
+       NS_HELP_TALK        => 'ГӀо_дийцаре',
+       NS_CATEGORY         => 'Категори',
+       NS_CATEGORY_TALK    => 'Категорин_дийцаре',
 );
 
 $namespaceAliases = array(
@@ -47,16 +47,24 @@ $namespaceAliases = array(
        'Дийцаре_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
        'Сурт'             => NS_FILE,
        'Сурти_дийца'      => NS_FILE_TALK,
+       'Хlум'             => NS_FILE,
+       'Хlуман_дийцаре'   => NS_FILE_TALK,
        'Дийцаре_хlуман'   => NS_FILE_TALK,
        'МедйаВики'        => NS_MEDIAWIKI,
        'МедйаВики_дийца'  => NS_MEDIAWIKI_TALK,
        'MediaWiki_Дийцаре' => NS_MEDIAWIKI_TALK,
        'Дакъан'           => NS_TEMPLATE,
        'Дакъан_дийца'     => NS_TEMPLATE_TALK,
+       'Куцкеп'           => NS_TEMPLATE,
+       'Куцкеп_дийцаре'   => NS_TEMPLATE_TALK,
        'ГІо'              => NS_HELP,
        'ГІодан_дийца'     => NS_HELP_TALK,
+       'Гlо'              => NS_HELP,
+       'Гlон_дийцаре'     => NS_HELP_TALK,
        'Тоба'             => NS_CATEGORY,
-       'Тобан_дийца'      => NS_CATEGORY_TALK
+       'Тобан_дийца'      => NS_CATEGORY_TALK,
+       'Кадегар'          => NS_CATEGORY,
+       'Кадегар_дийцаре'  => NS_CATEGORY_TALK,
 );
 
 // Remove Russian aliases
@@ -227,7 +235,7 @@ $messages = array(
 'tog-watchcreations' => 'Тlетоха ас кхоллина агlонаш тергаме могlам чу',
 'tog-watchdefault' => 'Тlетоха ас нисйина агlонаш тергаме могlам чу',
 'tog-watchmoves' => 'Тlетоха ас цlераш хийцина агlонаш тергаме могlам чу',
-'tog-watchdeletion' => 'Тlетоха ас дlайайина агlонаш тергаме могlам чу',
+'tog-watchdeletion' => 'Тlетоха ас дӀаяхина агlонаш тергаме могlам чу',
 'tog-minordefault' => 'Къастам бе нисйиначарн хlумцадеш кегийра долушсанна',
 'tog-previewontop' => 'Чуяккха хьалххьажар рéдоккхучу кора хьалха',
 'tog-previewonfirst' => 'Гайта хьалххьажар рéдоккхуче дехьа волуш',
@@ -257,7 +265,7 @@ $messages = array(
 
 'underline-always' => 'Даимна',
 'underline-never' => 'Цкъа а',
-'underline-default' => 'Лелайа хьажгlодириг нисйарца',
+'underline-default' => 'Лелайа браузеран нисйарца',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Тадар чохь долу йозан тайп:',
@@ -334,7 +342,7 @@ $messages = array(
 'pagecategories' => '{{PLURAL:$1|Категори|Категореш}}',
 'category_header' => 'Агlонаш оц категоречохь «$1»',
 'subcategories' => 'Бухаркатегореш',
-'category-media-header' => 'Ð¥Ó\80Ñ\83мнаш оцу категори чохь «$1»',
+'category-media-header' => 'Файлаш оцу категори чохь «$1»',
 'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
 'hidden-categories' => '{{PLURAL:$1|Къайлаха категори|Къайлаха йолу категореш}}',
 'hidden-category-category' => 'Къайлаха йолу категореш',
@@ -412,6 +420,7 @@ $messages = array(
 'create-this-page' => 'Кхолла хlара агlо',
 'delete' => 'ДӀаяккха',
 'deletethispage' => 'ДӀаяккха хӀара агӀо',
+'undeletethispage' => 'ХӀара агӀо меттахӀоттор',
 'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш|нисйинарш}}',
 'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийсдар|$1 дlадаьхна нийсдарш|$1 дlадаьхна нийсдарш}}',
 'protect' => 'Гlаролла дé',
@@ -431,7 +440,7 @@ $messages = array(
 'toolbox' => 'Гlирсаш',
 'userpage' => 'Хьажа декъашхочуьна агlоне',
 'projectpage' => 'Хьажа кхолламан агlоне',
-'imagepage' => 'Ð¥Ñ\8cажа Ñ\85\83ман агlоне',
+'imagepage' => 'Ð¥Ñ\8cажа Ñ\84айлан агlоне',
 'mediawikipage' => 'Хьагайта хааман агlо',
 'templatepage' => 'Хьажа куцкепа агlоне',
 'viewhelppage' => 'Схьаэца нийсвохаам',
@@ -443,7 +452,7 @@ $messages = array(
 'lastmodifiedat' => 'Хlокху агlон тlаьххьаралера хийцам: $2, $1.',
 'viewcount' => 'Хlокху агlонга хьойсина $1 {{PLURAL:$1|за|за|за}}.',
 'protectedpage' => 'Гlароллийца йолу агlо',
-'jumpto' => 'Дехьавала оцу:',
+'jumpto' => 'Дехьавала/яла оцу:',
 'jumptonavigation' => 'навигаци',
 'jumptosearch' => 'лаха',
 'view-pool-error' => 'Бехк цабиллар доьха, хlинц гlулкхдириг йоьттина йу.
@@ -451,7 +460,7 @@ $messages = array(
 Дехар до, собардеш а йуха хьажа хlокху агlонтlе жим тlаьхьо.
 
 $1',
-'pool-timeout' => 'СаÑ\86о Ð²еза хан тlех йаьлла',
+'pool-timeout' => 'Ð\91локÑ\82оÑ\85а еза хан тlех йаьлла',
 'pool-queuefull' => 'Дехаршан чоь йуззина йу',
 'pool-errorunknown' => 'Дойзаш доцу гlалат',
 
@@ -465,7 +474,6 @@ $1',
 'disclaimers' => 'Бехк тlе ца эцар',
 'disclaimerpage' => 'Project:Бяхк тlецалацар',
 'edithelp' => 'Нийсвохаам оцу тадарна',
-'edithelppage' => '{{ns:project}}:Нийсвохаам_оцу_тадарна',
 'helppage' => 'Help:Чулацам',
 'mainpage' => 'Коьрта агӀо',
 'mainpage-description' => 'Коьрта агlо',
@@ -490,6 +498,8 @@ $1',
 'newmessageslink' => 'керла хаамаш',
 'newmessagesdifflink' => 'тlаьххьара хийцамаш',
 'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|$3 декъашхочунгара|$3 декъашхошкара|$3 декъашхошкара}} ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|керла хаам}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцамаш}}',
 'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
 'editsection' => 'нисйé',
 'editsection-brackets' => '[$1]',
@@ -516,6 +526,8 @@ $1',
 'feed-atom' => 'Атом',
 'feed-rss' => 'RSS',
 'red-link-title' => '$1 (ишта агlо йоцуш йу)',
+'sort-descending' => 'Ма хийла нисяр',
+'sort-ascending' => 'Ма хила нисяр',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Яззам',
@@ -532,22 +544,32 @@ $1',
 # Main script and global functions
 'nosuchaction' => 'Ишта дийриг дац',
 'nosuchspecialpage' => 'Ишта белха агlо йац',
+'nospecialpagetext' => '<strong>Ишта белхан агӀо яц.</strong>
+
+Белхан агӀонашан могӀам: [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Гlалат',
 'databaseerror' => 'Гlалат хаамийн бухера',
+'laggedslavemode' => 'Тергам бе: агӀона чохь керла йаьхинарш ца хила мега.',
 'readonly' => 'Блоктоьхна дӀайаздар хаамийн бухе',
+'enterlockreason' => 'Билгал де блоктохаран бахьна а и чекх йолу хан а.',
 'missing-article' => 'Хlокху чохь кароезаш йолу хьан дехарца йозан агlонаш цакарийна «$1» $2.
 
 Иштнарг наггахь хуьлу хьажориг дlайаьккхина йалхь йа хийцам бина тиша хьажоригца дехьа вала гlоьртича.
 
 Нагахьсан гlулкх цуьнах доьзна дацахь, хьуна карийна гlирс латточехь гlалат.
\94еÑ\85аÑ\80 Ð´Ð¾, Ñ\85аам Ð±Ðµ Ð¾Ñ\86Ñ\83Ñ\8cнаÑ\85 [[Special:ListUsers/sysop|адаманкÑ\83Ñ\8cйгалÑ\85ога]], Ð³Ð¾Ð¹Ñ\82Ñ\83Ñ\88 URL.',
+Дехар до, хаам бе оцуьнах [[Special:ListUsers/sysop|куьйгалхога]], гойтуш URL.',
 'missingarticle-rev' => '(верси № $1)',
 'missingarticle-diff' => '(тейп тайпнара: $1, $2)',
 'internalerror' => 'Чоьхьара гlалат',
 'internalerror_info' => 'Чоьхьара гlалат: $1',
+'fileappenderrorread' => 'Тар ца дели еша «$1» тӀетухучу хенахь.',
+'fileappenderror' => 'Тар ца дели тӀетоха «$1» оцунах «$2».',
+'filerenameerror' => 'Файлан «$1» цӀе хийца «$2» йиш яц.',
 'filedeleteerror' => 'ДӀаяккха цатарло файл «$1».',
+'filenotfound' => 'Файл «$1» каро йиш яц.',
+'fileexistserror' => 'Файл «$1» дӀаязяан йиш яц: файл йолуш ю.',
 'cannotdelete' => 'Цатарло дӀаяккха я цӀе хийца «$1».
 АгӀо хьалхо дӀаяккхина хила тарло',
 'cannotdelete-title' => 'Цатарло агӀо дӀаяккха «$1»',
@@ -555,12 +577,19 @@ $1',
 'badtitletext' => 'Дехарца йолу агlонан цlе нийса яц, йаьсса ю, хила мега нийса ца хlоттийна меттаюкъар йа юкъарвики цlе. Хила мега, цlарца цамагош йолу саберг.',
 'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара цӀинялла $1. Кэша чохь латтаё оцул $4 кӀезиг {{PLURAL:$4|дӀаяздарш|дӀаяздарш|дӀаяздарш}}.',
 'viewsource' => 'Хьажар',
+'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
 'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
 'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
-'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо йу. Адаманкуьйгалхошна бен иза хийца цало.',
+'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо ю. Куьйгалхошна бен иза хийца цало.',
 'exception-nologin' => 'Ахьа хӀой вовзийтина/йовзийтина вац/яц',
 
+# Virus scanner
+'virus-unknownscanner' => 'йозуш йоцу антивирус:',
+
 # Login and logout pages
+'logouttext' => "'''Хьо аравела/ела.'''
+Хьан йиш ю {{grammar:genitive|{{SITENAME}}}} чохь хьой ца вовзийташ/йовзийташ болх бан я <span class='plainlinks'>[$1 кхин чувала/яла ]</span> хьой чохь хила цӀарца я кхин цӀарца.
+Цхьа йолу агӀонаш чохь хьо хьай цӀарца болх беш сана хила тарло ишта ца хилийта керлаякха браузеран кэш.",
 'welcomeuser' => 'Марша ДогӀийла, $1!',
 'yourname' => 'Декъашхон цlе:',
 'userlogin-yourname' => 'Декъашхон цӀе',
@@ -573,26 +602,40 @@ $1',
 'createacct-yourpasswordagain' => 'Бакъе ишар',
 'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе ишар',
 'remembermypassword' => 'Даглаца сан дlавазвалар/ялар хlокху гlулкхдечу гlирса тlяхь (цхьан $1 {{PLURAL:$1|ден|динахь|динахь}})',
-'userlogin-remembermypassword' => 'Дагахь латт ве со',
+'userlogin-remembermypassword' => 'Дагахь латт ве со',
 'yourdomainname' => 'Хьан машан меттиг:',
-'login' => 'Чу валар/ялар',
+'login' => 'Чувалар/ялар',
 'nav-login-createaccount' => 'Вовзийта/Йовзийта хьой / дӀавазло/дӀаязло',
 'loginprompt' => 'Ахьа бакъо йала йеза оцу «cookies» хьайна вовзийта лаахь гlирсан.',
-'userlogin' => 'Чу валар/ялар я декъашхон дӀаяздар кхоллар',
+'userlogin' => 'Чувалар/ялар я декъашхон дӀаяздар кхоллар',
 'userloginnocreate' => 'Чувалар/ялар',
 'logout' => 'Аравалар/ялар',
 'userlogout' => 'Аравалар/ялар',
 'notloggedin' => 'Хьо вовзийта/йовзийта гlирсан',
+'userlogin-noaccount' => 'Хlинца дlа вазвина/язйина вац/яц?',
 'nologin' => "Хlинца дlа вазвина/язйина вац/яц? '''$1'''.",
 'nologinlink' => 'Кхолла декъашхон дӀаяздар',
 'createaccount' => 'Кхолла декъашхон дӀаяздар',
 'gotaccount' => "Дlавазвелла вуй хьо? '''$1'''.",
 'gotaccountlink' => 'Чувалар/ялар',
+'userlogin-resetlink' => 'Чуволу/йолу хаам биц бела?',
+'createacct-join' => 'ДӀаязбе лахахь хай хаам.',
+'createacct-emailrequired' => 'Электронни почтан адрес',
+'createacct-emailoptional' => 'Электронни почтан адрес (ца яздича мега)',
+'createacct-email-ph' => 'ДӀаязде электронни почтан адрес',
 'createaccountmail' => 'хааман зlене хула',
+'createacct-realname' => 'Хьан цӀе (ца язйича мега)',
 'createaccountreason' => 'Бахьан:',
 'createacct-reason' => 'Бахьна',
 'createacct-reason-ph' => '{{PLURAL:$1|агӀо|агӀонаш}}‎',
+'createacct-imgcaptcha-ph' => 'ДӀаязде хьайна лакхахь гуш долу йоза',
+'createacct-submit' => 'Кхолла декъашхон дӀаяздар',
+'createacct-benefit-heading' => '{{SITENAME}} кхолийна хьо санначу наха.',
+'createacct-benefit-body1' => '{{PLURAL:$1|нисдар|нисдарш}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|яззам|яззамаш}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|декъашхо|декъашхой}} тӀаьхьарачу хенахь',
 'loginerror' => 'Гlалат ду декъашхо вовзарехь/йовзарехь',
+'createaccounterror' => 'Декъашхон дӀаяздар кхолла йиш яц: $1',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
 'loginsuccesstitle' => 'Хьо вовзар хаз чакхдели',
 'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
@@ -685,11 +728,18 @@ $1',
 'note' => "'''Билгалдаккхар:'''",
 'previewnote' => "'''Хlара хьалх хьажар ду, йоза хlинца язданза ду!'''",
 'continue-editing' => 'Кхин дӀа тадар',
+'session_fail_preview' => 'Сервер лара ца йира ахьа бина хийцамаш дӀаязба. Кхиъ цкъа а гӀортахь.
+Нагахь санна хӀара гӀалат юха а далахь, [[Special:UserLogout|сеанс дӀа а къоьвлин]], юха а системин чувала/яла хьажа.',
 'editing' => 'Тадар: $1',
 'creating' => 'АгӀо кхоллар «$1»',
 'editingsection' => 'Тадар $1 (даакъа)',
 'editingcomment' => 'Тадар $1 (керла даакъа)',
 'editconflict' => 'Тадарна дойнаш: $1',
+'explainconflict' => 'Хьо хӏара агӏо тоеш волчу хенахь, цхьам хийцамаш бина.
+Лакхарчу таяран корехь хьона гуш ду хӏинца агӏона чохь долу йоза.
+Лахарчу корехь ахь бина хийцам бу.
+Хьой бина хийцам лахарчу корера лакхарчу коре баккха.
+Кнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.',
 'yourtext' => 'Хьан йоза',
 'yourdiff' => 'Башхаллаш',
 'copyrightwarning' => "Тергаме хьажа, массо яззаман чутухуш долу йозан хийцам хьажарехь бу, арахоьцушсанна оцу бакъойалар хьоляхь $2 (хьаж. $1).
@@ -720,6 +770,7 @@ $1',
 'moveddeleted-notice' => 'Иза агlо дlайайина йара.
 Хаийтарна лахахьа гойту, цуьнца долу дlаяздарш кху дlадайина тептар чура а цlе хийцарш а.',
 'log-fulllog' => 'Хьажа деригге тептаре',
+'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
 
 # Content models
 'content-model-javascript' => 'JavaScript',
@@ -758,6 +809,7 @@ $1',
 'history-feed-item-nocomment' => '$1 оцу $2',
 
 # Revision deletion
+'rev-deleted-user' => '(авторан цӏе дӏаяйина)',
 'rev-delundel' => 'гайта/къайла',
 'rev-showdeleted' => 'гайта',
 'revdelete-show-file-submit' => 'Хlаъ',
@@ -777,6 +829,7 @@ $1',
 
 # Diffs
 'history-title' => '$1 — хийцаман истори',
+'difference-title' => '$1 — Версешан башхалла',
 'lineno' => 'Могlа $1:',
 'compareselectedversions' => 'Хаьржиначуьна башхо муха ю хьажа',
 'showhideselectedversions' => 'Гайта/къайлайаха хаьржина башхонаш',
@@ -796,11 +849,10 @@ $1',
 'searchmenu-legend' => 'Лахарна гlирс нисба',
 'searchmenu-exists' => "'''Хlокху вики-кхолламашца йолуш ю ишта агlо «[[:$1]]»'''",
 'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
-'searchhelp-url' => 'Help:Чулацам',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Гайта агlонаш ишта хlоттам болуш]]',
 'searchprofile-articles' => 'Къаьстина агlонаш',
 'searchprofile-project' => 'Нисвохааман агlонаш а кхолламаш',
-'searchprofile-images' => 'Ð\9cÑ\8fлÑ\82омÑ\88Ñ\85гl',
+'searchprofile-images' => 'Ð\9cÑ\83лÑ\8cÑ\82имедиа',
 'searchprofile-everything' => 'Массанхьа',
 'searchprofile-advanced' => 'Шуьйра',
 'searchprofile-articles-tooltip' => 'Лаха оцу $1',
@@ -841,7 +893,7 @@ $1',
 'skin-preview' => 'Хьалха муха ю хьажа',
 'datedefault' => 'Хьан гlирс нисбар',
 'prefs-beta' => 'Гlоле таронаш',
-'prefs-datetime' => 'Терахь а хан',
+'prefs-datetime' => 'Терахь а хан а',
 'prefs-labs' => 'Муха ю хьажарна таронаш',
 'prefs-user-pages' => 'Декъашхочун агӀо',
 'prefs-personal' => 'Долахь болу хаамаш',
@@ -896,11 +948,18 @@ $1',
 
 # User rights
 'userrights' => 'Декъашхочуьн бакъона урхалладар',
+'userrights-lookup-user' => 'Декъашхошан бакъонашан урхалладар',
 'userrights-user-editname' => 'Язъе цӀе:',
 'editusergroup' => 'Хийца декъашхон бакъо',
 'editinguser' => "Хийца декъашхочуьна бакъо '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
 'userrights-editusergroup' => 'Хийца декъашхон бакъо',
+'saveusergroups' => 'Декъашхон бакъонаш ӏалашян',
 'userrights-groupsmember' => 'Декъашхо:',
+'userrights-groupsmember-auto' => 'Бакъонашан тоба:',
+'userrights-groups-help' => 'Хьона хийца ло декъашхочуьн бакъонаш.
+* Бакъона цӏера юххехь билгало елахь, цуна и бакъо йолуш ю.
+* Билгало яцахь — декъашхон и бакъо яц.
+* Знако * билгала до ахьа бакъо еллачул тӏхьа хьона и дӏаяккха лур цахилар.',
 'userrights-reason' => 'Бахьан:',
 'userrights-no-interwiki' => 'Хьан бакъо яц декъашхой бакъо хийца кхечу википеди чохь.',
 'userrights-nologin' => 'Куьйгалхочунна бакъо йолу [[Special:UserLogin|д1аяздарца]] ло декъашхон бакъо.',
@@ -1006,8 +1065,17 @@ $1',
 'filedesc' => 'Файлах лаьцна',
 'fileuploadsummary' => 'Файлах лаьцна:',
 'filereuploadsummary' => 'Файлан хийцамаш:',
+'filesource' => 'Хьост:',
+'ignorewarnings' => 'ДӀахедар тергал ца дан',
 'uploadwarning' => 'Дlахьедар',
 'uploadedimage' => 'чуяккхина «[[$1]]»',
+'overwroteimage' => 'Чуяккхина файлан керла верси «[[$1]]»',
+'upload-source' => 'ДIайолалун файл',
+'sourcefilename' => 'ДIайолалун файл:',
+'destfilename' => 'Файлан керла цӀе:',
+'upload-description' => 'Файлах лаьцна',
+'upload-options' => 'Чуякхаран параметраш',
+'watchthisupload' => 'Латайе хlара файл тергаме могlам юкъа',
 'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
 # Бухасиз шолгlа:
 #  * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
@@ -1024,6 +1092,8 @@ PICT # тайп тайпан
  #</pre> <!-- битийша хlара могlа ша мабарра -->',
 
 'license' => 'Бакъойалар:',
+'license-header' => 'Бакъойалар',
+'nolicense' => 'Яц',
 
 # Special:ListFiles
 'listfiles-summary' => 'Лахахь гойтуш ю ерриг файлаш.
@@ -1042,25 +1112,32 @@ PICT # тайп тайпан
 'filehist-help' => 'Тlетаlаде терахь/хан, муха хилла хьажарна и файл.',
 'filehist-deleteall' => 'массо дӀаяккха',
 'filehist-deleteone' => 'дӀаяккха',
+'filehist-revert' => 'файл юхаерзо',
 'filehist-current' => 'карара',
 'filehist-datetime' => 'Терахь/Хан',
 'filehist-thumb' => 'Жима',
 'filehist-thumbtext' => 'Жимо башхо оцу $1',
 'filehist-user' => 'Декъашхо',
 'filehist-dimensions' => 'Файлан барам',
+'filehist-filesize' => 'Файлан барам',
 'filehist-comment' => 'Билгалдаккхар',
 'imagelinks' => 'Хьажоригаш оцу файлан',
 'linkstoimage' => '{{PLURAL:$1|Тlаьхьайогlу $1 агlо тlетойжина|Тlаьхьайогlу $1 агlонаш тlетойжина|Тlаьхьайогlу $1 агlонаш тlетойжина}} хlокху файлан:',
 'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
 'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
-'sharedupload-desc-here' => 'Ð¥Ó\80аÑ\80а Ñ\84айл $1 Ñ\87Ñ\83Ñ\80а Ñ\8e Ð¸ Ð»ÐµÐ»Ð¾ Ð¹Ð¸Ñ\88 Ñ\8e Ð¼Ð°Ñ\81Ñ\81о Ð¿Ñ\80оекÑ\82аÑ\88и.
-Цунна хаам гайтина лахахь. [$2 Файл ВикидӀайуьллуче чохь]',
+'sharedupload-desc-here' => 'Ð¥Ó\80аÑ\80а Ñ\84айл $1 Ñ\87Ñ\83Ñ\80а Ñ\8e Ð¸ Ð»ÐµÐ»Ð¾ Ð¹Ð¸Ñ\88 Ñ\8e Ð¼Ð°Ñ\81Ñ\81о Ð¿Ñ\80оекÑ\82аÑ\88каÑ\85Ñ\8c.
+Цунна хаам гайтина лахахь. [$2 Файл ВикидӀайуьллучехь]',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
 # File reversion
+'filerevert' => 'Тохарлера верси юхаерзор $1',
+'filerevert-legend' => 'Файлан верси юхаерзо',
+'filerevert-intro' => '<span class="plainlinks">Файл юхаерзош ю \'\'\'[[Media:$1|$1]]\'\'\' оцу [$4 верси $3, $2].</span>',
 'filerevert-comment' => 'Бахьан:',
+'filerevert-defaultcomment' => 'Юхаерзош ю оцу $2, $1 хенахь хила верси',
 'filerevert-submit' => 'Юхаяккха',
+'filerevert-success' => "Юхаерзина файл '''[[Media:$1|$1]]''' оцу [$4 верси $3, $2].",
 
 # File deletion
 'filedelete-legend' => 'ДӀаяккха и файл',
@@ -1137,12 +1214,13 @@ PICT # тайп тайпан
 'lonelypages' => 'Байлахь йисина агIонаш',
 'uncategorizedpages' => 'Категори йоцу агIонаш',
 'uncategorizedcategories' => 'Категори йоцу категореш',
-'uncategorizedimages' => 'Ð\9aаÑ\82егоÑ\80и Ð¹Ð¾Ñ\86Ñ\83 Ñ\85\83мнаш',
+'uncategorizedimages' => 'Ð\9aаÑ\82егоÑ\80еÑ\88 Ð¹Ð¾Ñ\86Ñ\83 Ñ\84айлаш',
 'uncategorizedtemplates' => 'Категори йоцу кепаш',
 'unusedcategories' => 'Йаьсса категореш',
+'unusedimages' => 'Лелош доцу файлаш',
 'wantedcategories' => 'Оьшуш йолу категореш',
 'wantedpages' => 'Оьшуш йолу агIонаш',
-'wantedfiles' => 'Ð\9eÑ\8cÑ\88Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83 Ñ\85\83мнаш',
+'wantedfiles' => 'Ð\9eÑ\8cÑ\88Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83 Ñ\84айлаш',
 'wantedtemplates' => 'Оьшуш долу кепаш',
 'mostlinked' => 'Дуккха хьажоригаш тIе тоьхна йолу агIонаш',
 'mostlinkedcategories' => 'Дуккха тӀе хьажораш йолу категореш',
@@ -1167,6 +1245,7 @@ PICT # тайп тайпан
 'move' => 'Цlе хийца',
 'movethispage' => 'Хlокху агlон цlе хийца',
 'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нисса йогlу хьажориг (URL) хlокху хlуман, хlокху могlаме йогlуш ялахь яцахь а иза хила мега жигара лелош.',
+'notargettitle' => 'Ӏалашо билгал йина яц',
 'nopagetitle' => 'Ишта агӀо яц',
 'nopagetext' => 'Ишта агӀо яц.',
 'pager-newer-n' => '{{PLURAL:$1|алсамо керла|алсамо керланаш|алсамо керлачарех}} $1',
@@ -1179,7 +1258,7 @@ PICT # тайп тайпан
 
 # Special:Log
 'specialloguserlabel' => 'Декъашхо:',
-'speciallogtitlelabel' => 'Корта:',
+'speciallogtitlelabel' => 'Ӏалашо (цӀе я декъашхо):',
 'log' => 'Тéптарш',
 'all-logs-page' => 'Деригге тléкхочучéхь долу тéптарш',
 'alllogstext' => 'Массо тéптар могlам. {{SITENAME}}.
@@ -1204,6 +1283,10 @@ PICT # тайп тайпан
 
 # Special:Categories
 'categories' => 'Категореш',
+'categoriespagetext' => '{{PLURAL:$1|Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
+Кхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].
+Кхин дӀа [[Special:WantedCategories| хийла еза категореш]].',
+'categoriesfrom' => 'Гучé яха категореш, оцу:',
 
 # Special:DeletedContributions
 'deletedcontributions' => 'Декъашхочуьн дlабайина къинхьегам',
@@ -1218,10 +1301,12 @@ PICT # тайп тайпан
 # Special:ListUsers
 'listusersfrom' => 'ТӀера волавелла декъашхой гайта:',
 'listusers-submit' => 'Гайта',
+'listusers-noresult' => 'Декъашхой цакарий.',
 
 # Special:ActiveUsers
 'activeusers' => 'Жигар декъашхой могlам',
-'activeusers-from' => 'ТӀера волавелла декъашхой гайта:',
+'activeusers-from' => 'Гучé баха декъашхой, болалуш болу оцу:',
+'activeusers-noresult' => 'Декъашхой цакарий.',
 
 # Special:ListGroupRights
 'listgrouprights' => 'Декъашхойн тобанаши бакъонаш',
@@ -1231,8 +1316,16 @@ PICT # тайп тайпан
 
 # Email user
 'emailuser' => 'Декъашхочун хааман кехат',
+'emailuser-title-target' => 'Декъашхочунга кехат яздар',
+'emailuser-title-notarget' => 'Декъашхочунга кехат яздар',
 'defemailsubject' => 'Хаам {{grammar:genitive|{{SITENAME}}}} чура бу',
+'emailusernamesubmit' => 'ДӀадахьийта',
+'email-legend' => '{{grammar:genitive|{{SITENAME}}}} кхечу декъашхочунга кехат дахьийтар',
+'emailfrom' => 'Хьаьнгара',
+'emailto' => 'Хьаьнга:',
 'emailmessage' => 'Хаам:',
+'emailsent' => 'Кехат дӏадахьийтина',
+'emailsenttext' => 'Хьан электроннан хаам дӏабахьийтина.',
 
 # Watchlist
 'watchlist' => 'Тергаме могlам',
@@ -1307,6 +1400,7 @@ PICT # тайп тайпан
 'protect-level-sysop' => 'Куьйгалхошна бé цамагдо',
 'protect-summary-cascade' => 'чахчареца',
 'protect-expiring' => 'чакхйолу $1 (UTC)',
+'protect-expiring-local' => 'чекхйолу $1',
 'protect-expiry-indefinite' => 'хан чаккхе йоцуш',
 'protect-cascade' => 'Гlаролла йé агlонаш, хlокху агlонца хlоттайелларш (чахчарé гlаролла)',
 'protect-cantedit' => 'Хьéга хийцам цабало хlокху агlон гlаролли локхалан, хlуд аьлча хьан бакъо яц оцун рéдаккха.',
@@ -1315,6 +1409,7 @@ PICT # тайп тайпан
 'protect-otherreason' => 'Кхин бахьна/тӀетохар:',
 'protect-otherreason-op' => 'Кхин бахьан',
 'protect-edit-reasonlist' => 'Бахьанин список нисяр',
+'protect-expiry-options' => '1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
 'restriction-type' => 'Бакъо:',
 'restriction-level' => 'Тlевитарна локхалла:',
 
@@ -1333,6 +1428,8 @@ PICT # тайп тайпан
 'undelete-fieldset-title' => 'МеттахӀоттае версеш',
 'undeleteextrahelp' => "Ерриге агӀонан истори меттахӀоттая массо а билгалонаш еса а йити '''«{{int:undeletebtn}}»''' тӀетаӀае.
 ЦхӀайолу агӀонан версиш меттахӀоттая цкъахьалха меттахӀоттош йолу версиш билгалъяхна тӀетагӀе '''«{{int:undeletebtn}}»'''.",
+'undeletehistory' => 'Агӏо меттахӏотта йича цуьнан хийцаман истори меттахӏотта ло.
+Агӏо дӏаяккхинчул тӏяха юху кхолийна елахь меттахӏоттина йолу версеш гучуер ю керлачу версешна хьалха',
 'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
 Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
 'undeletebtn' => 'МеттахӀоттае',
@@ -1355,7 +1452,7 @@ PICT # тайп тайпан
 
 # Contributions
 'contributions' => 'Декъашхон къинхьегам',
-'contributions-title' => 'Декъашхочуьна къинхьегам $1',
+'contributions-title' => 'Декъашхон къинхьегам $1',
 'mycontris' => 'Сан къинхьегам',
 'contribsub2' => 'Къинхьегам $1 ($2)',
 'uctop' => ' (тlаьхьара)',
@@ -1396,6 +1493,9 @@ PICT # тайп тайпан
 'block' => 'Декъашхон блоктохар',
 'blockip' => 'Блоктоха',
 'blockip-legend' => 'Декъашхон блоктохар',
+'blockiptext' => 'Бухахь йолу форманца блоктоха IP-адресна цунтӏера дӏаяздарш ца дайта.
+Блоктоха магийна цо зенаш деш делахь кхин хӏокху [[{{MediaWiki:Policy-url}}|низам ца]].
+Лахахь билгалде блоктохарна бахьна.',
 'ipadressorusername' => 'IP-долу меттиг йа декъашхон цlе:',
 'ipbexpiry' => 'Хан чекхйолу:',
 'ipbreason' => 'Бахьан:',
@@ -1408,19 +1508,21 @@ PICT # тайп тайпан
 ** Декъашхой хьийзабар, кхерамаш тиссар
 ** Масийтта лараман яздар зуламан лелаяр
 ** Магитина йоцу декъашхон цӀе',
-'ipbcreateaccount' => 'Цамагдо дӀаязвалар',
+'ipb-hardblock' => 'Шаш довзийтина болу декъашхошна бехкам бе хӀокху IP-адресца тадарш дан',
+'ipbcreateaccount' => 'Цамагдо дӀаязвалар/ялар',
 'ipbemailban' => 'Цамагдо декъашхошка хааман кехаташ кхехьийта',
-'ipbenableautoblock' => 'СаÑ\86ае Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87о Ð»ÐµÐ»Ð¾Ñ\88 Ð¹Ð¾Ð»Ñ\83 IP-адÑ\80еÑ\81аÑ\88',
+'ipbenableautoblock' => 'Ð\91локÑ\82оÑ\85а Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87о Ð»ÐµÐ»Ð¾Ñ\88 Ð¹Ð¾Ð»Ñ\83 IP-адÑ\80еÑ\81аÑ\88на',
 'ipbsubmit' => 'Блоктоха декъашхон',
 'ipbother' => 'Кхин хан:',
 'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
 'ipbwatchuser' => 'ТӀетоха тергаме могӀам юкъа цуьнан долахь йолу агӀо а цуьнан дийцаре агӀо а',
 'ipb-disableusertalk' => 'Цамагдо шин дийцаре агӀо та я блоктоьхна волучу хенахь',
+'ipb-change-block' => 'Юхаблоктоха декъашхон оьцу хийцамашца',
 'ipb-confirm' => 'Бакъде блоктохар',
 'blockipsuccesssub' => 'Блоктохар чакхдели',
-'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] блоктоьхна ву.<br />
-Ð¥Ñ\8cажа. [[Special:BlockList|могlам Ð±Ð»Ð¾ÐºÑ\82оÑ\8cÑ\85на IP-долÑ\83 Ð¼ÐµÑ\82Ñ\82игаÑ\88]].',
-'ipb-blockingself' => 'Хьо хьайна блоктухуш ву (ю)! Лууш вуй (йуй) хьо и кхочуш дан?',
+'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}.<br />
+Ð¥Ñ\8cажа. [[Special:BlockList|блокÑ\82оÑ\8cÑ\85на IP-адÑ\80еÑ\81аÑ\88ан Ð¼Ð¾Ð³Ó\80ам]].',
+'ipb-blockingself' => 'Хьо хьайна блоктухуш ву/ю! Лууш вуй/юй хьо и кхочушдан?',
 'ipb-edit-dropdown' => 'Бахьанин список нисяр',
 'ipb-unblock-addr' => 'ДӀаякхаблок $1',
 'ipb-unblock' => 'дӀаякхаблок декъашхонтӀера я IP-адрес тӀера',
@@ -1428,19 +1530,35 @@ PICT # тайп тайпан
 'ipb-blocklist-contribs' => 'Декъашхон къинхьегам $1',
 'unblockip' => 'ДӀаякхаблок декъашхонтӀера',
 'unblocked' => '[[User:$1|$1]] хьайаьстина.',
-'ipblocklist' => 'Блоктоьхна IP-долу меттиг а дlалаьрра язбаларш',
+'ipblocklist' => 'Блоктоьхна декъашхой',
+'ipblocklist-legend' => 'Блоктоьхна декъашхо лахар',
+'blocklist-userblocks' => 'ДӀахьулян дӀаяздаршан блоктохарш',
+'blocklist-tempblocks' => 'ДӀахьулян цхьан ханна йолу блоктохарш',
+'blocklist-addressblocks' => 'ДӀахулдан цхьайолу IP адресан блоктохарш',
+'blocklist-rangeblocks' => 'ДӀахьулян блоктоьхна йолу диапазонаш',
+'blocklist-timestamp' => 'Терахь/хан',
+'blocklist-target' => 'Ӏалашо',
+'blocklist-expiry' => 'Чекхйолу',
+'blocklist-by' => 'Цунна блоктоьхана куьйгалхо',
+'blocklist-params' => 'Блоктохаран параметрш',
 'blocklist-reason' => 'Бахьан:',
 'ipblocklist-submit' => 'Лаха',
 'infiniteblock' => 'хан чаккхе йоцуш',
+'noautoblockblock' => 'ша блоктухарг дӏаяйина',
 'blocklink' => 'блоктоха',
 'unblocklink' => 'дӀаякхаблок',
 'change-blocklink' => 'хийцам бе блоктохарна',
 'contribslink' => 'къинхьегам',
 'blocklogpage' => 'Блоктоьхарш болу тептар',
+'blocklog-showlog' => '{{GENDER:$1|ХӀокху декъашхон хьалхо блоктоьхна хила}}.
+Лахахь гойту блоктохарш долу тептар:',
 'blocklogentry' => 'блоктоьхна [[$1]] цхьана ханна $2 $3',
 'reblock-logentry' => 'Хийцина  блоктоьхна хан [[$1]] $2 $3',
+'blocklogtext' => 'Блоктохаршна а блокдӀаякхаршна а тептар. Ша блоккхеташ долу IP-адресаш кхузахь гойтуш дац. Кхин. [[Special:BlockList|хӀийнца блоктоьха берш]].',
 'unblocklogentry' => 'дӀаякхинаблок $1',
-'block-log-flags-nocreate' => 'цамагдо дlаязвалар дlаязбаларшца',
+'block-log-flags-nocreate' => 'цамагдо керла дӏаяздарш кхоллар',
+'block-log-flags-noautoblock' => 'ша блоктухарг дӏаяйина',
+'ipb-needreblock' => 'ХӀара $1 {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметрш хийца?',
 
 # Move page
 'move-page' => '$1 — цlе хийцар',
@@ -1491,6 +1609,7 @@ PICT # тайп тайпан
 'movetalk' => 'Цуьнца йогlуш йолу дийцаре агlон цlе хийцар',
 'move-subpages' => 'ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)',
 'move-talk-subpages' => 'ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1  кхаччалц)',
+'movepage-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.',
 'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
 'movelogpage' => 'Цlераш хийцаран тептар',
 'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
@@ -1503,6 +1622,8 @@ PICT # тайп тайпан
 Лаьий хьуна и дӀаяккха, цӀе хийца таро хилийта?',
 'delete_and_move_confirm' => 'Хlаъ, дӀаяккха хlара агlо',
 'delete_and_move_reason' => 'ДӀаяккхина цӀе хийца я таро хилийта  «[[$1]]»',
+'selfmove' => 'АгӀона цӏе хийца йиш яц: и цӏе хӏокху агӏона йолуш ю.',
+'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
 'move-leave-redirect' => 'Ӏадйита дӀасахьажориг',
 'protectedpagemovewarning' => "'''Дlахьедар.''' Хlара агlо гlаролла йина йу; цlе хийца йа нисйа а бакъо йолуш адаманкуьйгалхой бе бац.
 Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
@@ -1621,6 +1742,10 @@ PICT # тайп тайпан
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
 
+# Patrolling
+'markaspatrolledtext' => 'Пайден агӏо хилар билгало ян',
+'markedaspatrollednotify' => 'АгӀо «$1» пайдане хилар билгалдина',
+
 # Browsing diffs
 'previousdiff' => '← Хьалхдоьда нисдинарг',
 'nextdiff' => 'Тlяхьа догlа нисдинарг →',
@@ -1629,9 +1754,12 @@ PICT # тайп тайпан
 'imagemaxsize' => "Суьртан бараман доза тохар:<br />''(Файла агӀона куц дийцар)''",
 'thumbsize' => 'Жима дина суьртан барам:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
+'file-info' => 'файлан барам: $1, MIME-тайп: $2',
 'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}, файлан барам: $3, MIME-тайп: $4',
+'file-info-size-pages' => '$1 × $2 пикселш, файлан барам: $3, MIME-тайп: $4, $5 {{PLURAL:$5|агӀо|агӀонаш}}',
 'file-nohires' => 'Кхи йоккха гlоле башхо яц.',
 'svg-long-desc' => 'SVG-файл, лартӀахь ю $1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}, файлан барам: $3',
+'svg-long-desc-animated' => 'Анимироват йина SVG-файл, номинальни $1 × $2 {{PLURAL:$2|пиксель|пикселш}}, файлан барам: $3',
 'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
 'show-big-image-preview' => 'Барам хьажале: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Кхин шоралла|Кхин шоралла}}: $1.',
@@ -1673,12 +1801,38 @@ PICT # тайп тайпан
 * gpsaltitude',
 
 # Exif tags
-'exif-datetime' => 'Хlума хийцина терахь а хан',
+'exif-imagewidth' => 'Шоралла',
+'exif-imagelength' => 'Локхалла',
+'exif-orientation' => 'Суьртан хьал',
+'exif-xresolution' => 'Шоралла',
+'exif-yresolution' => 'Локхалла',
+'exif-datetime' => 'Файл хийцина терахь а хан',
+'exif-imagedescription' => 'Суьртан цӏе',
+'exif-software' => 'Лелина программа',
+'exif-colorspace' => 'Беснашан хьал',
+'exif-pixelxdimension' => 'Суьртан локхалла',
 'exif-datetimeoriginal' => 'Дуьххьарлера терахь а хан',
+'exif-datetimedigitized' => 'Оцифровк йина терахь а хан а',
+'exif-gpsaltitude' => 'Локхалла',
+'exif-gpsdestlatitude' => 'Объектан дохалла',
+'exif-gpsdatestamp' => 'Терахь',
+'exif-source' => 'Хьост',
 'exif-languagecode' => 'Мотт',
 
+'exif-orientation-1' => 'Лартӏахь',
+
+'exif-xyresolution-i' => '$1 тӏадамаш дюйман',
+
 'exif-scenetype-1' => 'Сурт даьккхина нис дуьххьал',
 
+'exif-contrast-0' => 'Лартӏахь',
+
+'exif-saturation-0' => 'Лартӏахь',
+
+'exif-sharpness-0' => 'Лартӏахь',
+
+'exif-dc-date' => 'Терахь(ш)',
+
 # External editor support
 'edit-externally' => 'Рéдаккха хlокху хlуман, арахьара диллагlарам лелош',
 'edit-externally-help' => '(мадарра хьажа. оцу [//www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
@@ -1711,8 +1865,9 @@ PICT # тайп тайпан
 'table_pager_empty' => 'Цакарийна',
 
 # Auto-summaries
-'autosumm-blank' => 'Агlон чулацам дlабайина',
+'autosumm-blank' => 'Агӏон чулацам дӏабяккхина',
 'autosumm-replace' => 'АгӀона чуьраниг хийцина оцу «$1»',
+'autoredircomment' => 'ДӀасахьажийна цуна [[$1]] тӏе',
 'autosumm-new' => 'Керла агlо: «$1»',
 
 # Live preview
@@ -1733,9 +1888,11 @@ PICT # тайп тайпан
 # Special:Version
 'version' => 'Верси MediaWiki',
 'version-other' => 'Кхин',
+'version-license' => 'Бакъо',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Лаха цхьатера йолу хIумнаш',
+'fileduplicatesearch-filename' => 'Файлан цӀе:',
 'fileduplicatesearch-submit' => 'Лаха',
 'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}<br />Файлан барам: $3<br />MIME-тайп: $4',
 
@@ -1777,6 +1934,7 @@ PICT # тайп тайпан
 'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
 
 # HTML forms
+'htmlform-submit' => 'ДӀадахьийта',
 'htmlform-selectorother-other' => 'Кхин',
 
 # New logging system
@@ -1788,6 +1946,10 @@ PICT # тайп тайпан
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул а дӀасахьажийнарг цаюьтуш а',
 'logentry-newusers-newusers' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-create' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|хийцина}} хӏокхуна $3 бакъо',
+
+# Feedback
+'feedback-cancel' => 'Цаоьшу',
 
 # Search suggestions
 'searchsuggest-search' => 'Лаха',
index a217035..1fdea44 100644 (file)
@@ -296,7 +296,6 @@ $1',
 'disclaimers' => 'Mga pagpasabot',
 'disclaimerpage' => 'Project:Mga pagpasabot',
 'edithelp' => 'Tabang sa pag-usab',
-'edithelppage' => 'Help:Pag-usab',
 'helppage' => 'Help:Mga sulod',
 'mainpage' => 'Unang Panid',
 'mainpage-description' => 'Unang Panid',
@@ -709,7 +708,6 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 'prevn' => 'miaging {{PLURAL:$1|$1}}',
 'nextn' => 'sunod {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Tan-awa sa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Mga sulod',
 'searchprofile-everything' => 'Tanan ng bagay',
 'search-result-size' => '$1 ({{PLURAL:$2|1 pulong|$2 ka mga pulong}})',
 'search-redirect' => '(redirek $1)',
index 0305638..61328dd 100644 (file)
@@ -213,7 +213,6 @@ $messages = array(
 'disclaimers' => 'Diklarasion Inadahi',
 'disclaimerpage' => 'Project:Diklarasion inadahi henerat',
 'edithelp' => 'Ayudo tumulaika',
-'edithelppage' => 'Help:Tumulaika',
 'helppage' => 'Help:Guinaha',
 'mainpage' => 'Fanhaluman',
 'mainpage-description' => 'Fanhaluman',
@@ -631,7 +630,6 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 'prevn' => "{{PLURAL:$1|$1}} ni manmå'pos",
 'nextn' => "{{PLURAL:$1|$1}} ni manmamaila'",
 'viewprevnext' => 'Atan i ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Guinaha',
 'search-result-size' => '$1 ({{PLURAL:$2|1 na palabra|$2 na palabra siha}})',
 'search-result-score' => 'Prinisisu: $1%',
 'search-redirect' => "(na'dirihi $1)",
index 45accad..974046e 100644 (file)
@@ -387,7 +387,6 @@ $1',
 'disclaimers' => 'نابەرپرسییەکان',
 'disclaimerpage' => 'Project:بەرپرسنەبوون',
 'edithelp' => 'ڕێنوێنیی دەستکاریکردن',
-'edithelppage' => 'Help:دەستکاریکردن',
 'helppage' => 'Help:ناوەرۆک',
 'mainpage' => 'دەستپێک',
 'mainpage-description' => 'دەستپێک',
@@ -558,10 +557,20 @@ $2',
 'welcomecreation-msg' => 'ھەژمارەکەت دروست کرا.
 لە بیرت نەچێت [[Special:Preferences|ھەڵبژاردەکانی {{SITENAME}}]]ت بگۆڕی.',
 'yourname' => 'ناوی بەکارھێنەری:',
+'userlogin-yourname' => 'ناوی بەکارھێنەر',
+'userlogin-yourname-ph' => 'ناوی بەکارھێنەریت بنووسە',
 'yourpassword' => 'تێپەڕوشە:',
+'userlogin-yourpassword' => 'تێپەڕوشە',
+'userlogin-yourpassword-ph' => 'تێپەڕوشەکەت بنووسە',
+'createacct-yourpassword-ph' => 'تێپەروشەیەک بنووسە',
 'yourpasswordagain' => 'دیسان تێپەڕوشەکە بنووسەوە:',
+'createacct-yourpasswordagain' => 'تێپەروشە پشتڕاست بکەرەوە',
+'createacct-yourpasswordagain-ph' => 'تێپەروشە دیسان بنووسەوە',
 'remembermypassword' => 'چوونە ژوورەوەم لەسەر ئەم کۆمپیوتەرە پاشەکەوت بکە (ئەو پەڕی $1 {{PLURAL:$1|ڕۆژ}}ە)',
-'yourdomainname' => 'ناوی دۆمه‌ینی خۆت',
+'userlogin-remembermypassword' => 'چوونەژوورەوەکەم ڕابگرە',
+'userlogin-signwithsecure' => 'پەیوەندیی دڵنیا بەکاربھێنە',
+'securelogin-stick-https' => 'پاش چوونەژوورەوە پەیوەندیی لەگەڵ HTTPS بھێڵەوە',
+'yourdomainname' => 'دۆمەینەکەت:',
 'password-change-forbidden' => 'ناتوانیت تێپەڕوشەکانت لەم ویکییەدا بگۆڕیت.',
 'externaldberror' => 'یان هەڵەی ڕێگەپێدانی بنکەدراو هەیە یان ڕێگات پێ نادرێت بۆ نوێ کردنی هەژماری دەرەکیت.',
 'login' => 'بچۆ ژوورەوە',
@@ -571,19 +580,39 @@ $2',
 'userloginnocreate' => 'بچۆ ژوورەوە',
 'logout' => 'بچۆ دەرەوە',
 'userlogout' => 'بچۆ دەرەوە',
-'notloggedin' => 'له‌ ژووره‌وه‌ نیت',
-'nologin' => "ھەژمارت نییە؟  '''$1'''.",
+'notloggedin' => 'لە ژوورەوە نیت',
+'userlogin-noaccount' => 'ھەژمارت نییە؟',
+'userlogin-joinproject' => 'ڕەگەڵ {{SITENAME}} کەون',
+'nologin' => 'ھەژمارت نییە؟  $1.',
 'nologinlink' => 'ھەژمارێک دروست بکە',
 'createaccount' => 'ھەژمار دروست بکە',
 'gotaccount' => 'ھەژمارت ھەیە لێرە؟ $1.',
 'gotaccountlink' => 'بچۆ ژوورەوە',
 'userlogin-resetlink' => 'وردەکارییەکانی چوونەژوورەوەتت لە بیر کردووە؟',
-'createaccountmail' => 'بە ئیمەیل',
+'userlogin-resetpassword-link' => 'تێپەڕوشە ڕیسێت بکەوە',
+'helplogin-url' => 'Help:چوونەژوورەوە',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|یارمەتی بۆ چوونەژوورەوە]]',
+'createacct-join' => 'زانیارییەکت لە ژێرەوە بنووسە.',
+'createacct-emailrequired' => 'ناونیشانی ئیمەیل',
+'createacct-emailoptional' => 'ناونیشانی ئیمەیل (دڵخوازانە)',
+'createacct-email-ph' => 'ناونیشانی ئیمەیلەکەت بنووسە',
+'createaccountmail' => 'تێپەڕوشەیەکی ڕەمەکیی کاتی بەکاربھێنە و بینێرە بۆ ناونیشانی ئیمەیلی دیاری‌کراوی ژێرەوە',
+'createacct-realname' => 'ناوی ڕاستی (دڵخوازانە)',
 'createaccountreason' => 'هۆکار:',
+'createacct-reason' => 'ھۆکار',
+'createacct-reason-ph' => 'بۆ ھەژمارێکی تر دروست دەکەی',
+'createacct-captcha' => 'تاوتوێی ئاسایشی',
+'createacct-imgcaptcha-ph' => 'دەقەکەی لە ژێرەوە دەیبینی بینووسە',
+'createacct-submit' => 'ھەژمارەکەت دروست بکە',
+'createacct-benefit-heading' => '{{SITENAME}} لە لایەن کەسانێک وەکوو خۆت دروست کراوە.',
+'createacct-benefit-body1' => '{{PLURAL:$1|دەستکاری}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|پەڕە}}',
+'createacct-benefit-body3' => 'دوایین {{PLURAL:$1|بەشداربوو|بەشداربووان}}',
 'badretype' => 'تێپەڕوشەکان لەیەک ناچن.',
 'userexists' => 'ئەو ناوەی تۆ داوتە پێشتر بەکارھێنراوە.
 ناوێکی دیکە ھەڵبژێرە.',
 'loginerror' => 'ھەڵەی چوونەژوورەوە',
+'createacct-error' => 'ھەڵە لە دروستکردنی ھەژمار',
 'createaccounterror' => 'ناتوانیت هەژماری بەکارهێنەر دروست بکەیت: $1',
 'nocookiesnew' => 'ھەژماری بەکارھێنەر دروست‌کرا، بەڵام بە سەرکەوتوویی نەچوویتەوە ژوورەوە.
 {{SITENAME}} بۆ چوونەوە ژوورەوەی بەکارھێنەر لە شەکرۆکە کەڵک وەردەگرێت.
@@ -592,6 +621,8 @@ $2',
 'nocookieslogin' => '{{SITENAME}} بۆ چوونەژوورەوە لە کووکی‌یەکان کەڵک وەرئەگرێت.
 ڕێگەت نەداوە بە کووکی‌یەکان.
 ڕێگەیان پێ بدەو و دیسان تێبکۆشە.',
+'nocookiesfornew' => 'ھەژماری بەکارھێنەری دروست نەکرا، چون ناتوانین سەرچاوەکەی پشتڕاست بکەینەوە.
+دڵنیا بە کوکییەکانت چالاک کردووە، پەڕەکە بار بکەوە و دیسان ھەوڵ بدە.',
 'noname' => 'ناوی بەکارهێنەرییەکی گۆنجاوت دیاری نەکردووه.',
 'loginsuccesstitle' => 'سەرکەوتی بۆ چوونە ژوورەوە',
 'loginsuccess' => "'''ئێستا بە ناوی «$1»ەوە لە {{SITENAME}} چوویتەتەژوورەوە.'''",
@@ -904,6 +935,7 @@ $2
 لەوە دەچی سڕدرابێتەوه.‌',
 'edit-conflict' => 'کێشەی دەستکاری.',
 'edit-no-change' => 'دەستکاریەکەت بەرچاو نەخرا، لەبەر ئەوەی هیچ گۆڕانکارییەکت لەسەر دەقەکە نەکردووە.',
+'postedit-confirmation' => 'دەستکارییەکەت پاشەکەوت کرا.',
 'edit-already-exists' => 'تواناییی دروستکردنی پەڕەی نوێ نییە.
 ئەمە پەڕەیە پێشتر هەبووە.',
 'defaultmessagetext' => 'دەقی پەیامی هەمیشەیی',
@@ -1136,7 +1168,6 @@ $1",
 'searchmenu-legend' => 'ھەڵبژاردەکانی گەڕان',
 'searchmenu-exists' => "'''پەڕەیەک بە ناوی «[[:$1]]» لەم ویکییەدا ھەیە.'''",
 'searchmenu-new' => "'''لەم ویکییەدا پەڕەی « [[:$1]] » دروست بکە!'''",
-'searchhelp-url' => 'Help:پێرست',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|گەڕیان لە پەڕەکانی بەم پێشگرەوە]]',
 'searchprofile-articles' => 'پەڕە بە ناوەڕۆکەکان',
 'searchprofile-project' => 'پەڕەکانی یارمەتی و پڕۆژە',
@@ -2780,6 +2811,7 @@ $1',
 'pageinfo-contentpage' => 'ھەژمارکراو وەک پەڕەی بەناوەرۆک',
 'pageinfo-contentpage-yes' => 'بەڵێ',
 'pageinfo-protect-cascading-yes' => 'بەڵێ',
+'pageinfo-category-info' => 'زانیاریی پۆل',
 'pageinfo-category-pages' => 'ژمارەی پەڕەکان',
 'pageinfo-category-subcats' => 'ژمارەی ژێرپەڕەکان',
 'pageinfo-category-files' => 'ژمارەی پەڕگەکان',
index 0bfb361..8010958 100644 (file)
@@ -251,7 +251,6 @@ $1',
 'disclaimers' => 'Mga pagpangindi',
 'disclaimerpage' => 'Project:Pangkabilugan nga pagpangindi',
 'edithelp' => 'Bulig sa pag-ilis',
-'edithelppage' => 'Help:Pag-ilis',
 'helppage' => 'Help:Mga ka-undan',
 'mainpage' => 'Panguna nga pahina',
 'mainpage-description' => 'Panguna nga pahina',
index 3d20866..c863d15 100644 (file)
@@ -344,7 +344,6 @@ $1',
 'disclaimers' => 'Джевапкярлыкъ реди',
 'disclaimerpage' => 'Project:Умумий Малюмат Мукъавелеси',
 'edithelp' => 'Саифелер насыл денъиштирилир?',
-'edithelppage' => 'Help:Саифе насыл денъиштирилир',
 'helppage' => 'Help:Мундеридже',
 'mainpage' => 'Баш Саифе',
 'mainpage-description' => 'Баш Саифе',
@@ -851,7 +850,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searchmenu-legend' => 'Къыдырув сазламалары',
 'searchmenu-exists' => "'''Бу викиде \"[[:\$1]]\" адлы бир саифе бар'''",
 'searchmenu-new' => "'''Бу викиде \"[[:\$1]]\" саифесини ярат!'''",
-'searchhelp-url' => 'Help:Мундеридже',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префиксли саифелерни косьтер]]',
 'searchprofile-articles' => 'Малюмат саифелери',
 'searchprofile-project' => 'Ярдым ве лейха саифелери',
index 8791d0f..557ec86 100644 (file)
@@ -339,7 +339,6 @@ $1',
 'disclaimers' => 'Cevapkârlıq redi',
 'disclaimerpage' => 'Project:Umumiy Malümat Muqavelesi',
 'edithelp' => 'Saifeler nasıl deñiştirilir?',
-'edithelppage' => 'Help:Saife nasıl deñiştirilir',
 'helppage' => 'Help:Münderice',
 'mainpage' => 'Baş Saife',
 'mainpage-description' => 'Baş Saife',
@@ -847,7 +846,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'searchmenu-legend' => 'Qıdıruv sazlamaları',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adlı bir saife bar'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" saifesini yarat!'''",
-'searchhelp-url' => 'Help:Münderice',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefiksli saifelerni köster]]',
 'searchprofile-articles' => 'Malümat saifeleri',
 'searchprofile-project' => 'Yardım ve leyha saifeleri',
index 2d908af..1fbffaa 100644 (file)
@@ -10,6 +10,7 @@
  * @author Chmee2
  * @author Danny B.
  * @author Dontlietome7
+ * @author Geitost
  * @author Helix84
  * @author Jachym
  * @author Jezevec
@@ -562,6 +563,7 @@ $messages = array(
 'create-this-page' => 'Vytvořit tuto stránku',
 'delete' => 'Smazat',
 'deletethispage' => 'Smazat stránku',
+'undeletethispage' => 'Obnovit tuto stránku',
 'undelete_short' => 'Obnovit $1 {{PLURAL:$1|verzi|verze|verzí}}',
 'viewdeleted_short' => 'Zobrazit {{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}',
 'protect' => 'Zamknout',
@@ -615,7 +617,6 @@ $1',
 'disclaimers' => 'Vyloučení odpovědnosti',
 'disclaimerpage' => 'Project:Vyloučení odpovědnosti',
 'edithelp' => 'Pomoc při editování',
-'edithelppage' => 'Help:Jak editovat stránku',
 'helppage' => 'Help:Obsah',
 'mainpage' => 'Hlavní strana',
 'mainpage-description' => 'Hlavní strana',
@@ -761,6 +762,8 @@ $2',
 'namespaceprotected' => "Nemáte povoleno editovat stránky ve jmenném prostoru '''$1'''.",
 'customcssprotected' => 'Nemáte povoleno editovat tuto stránku s CSS, protože obsahuje osobní nastavení jiného uživatele.',
 'customjsprotected' => 'Nemáte povoleno editovat tuto stránku s JavaScriptem, protože obsahuje osobní nastavení jiného uživatele.',
+'mycustomcssprotected' => 'Nemáte oprávnění editovat tuto stránku s CSS.',
+'mycustomjsprotected' => 'Nemáte oprávnění editovat tuto stránku s JavaScriptem.',
 'ns-specialprotected' => 'Stránky ve jmenném prostoru {{ns:special}} nelze editovat.',
 'titleprotected' => "Stránku s tímto názvem nelze založit, protože název zamknul uživatel [[User:$1|$1]] s odůvodněním: ''$2''.",
 'filereadonlyerror' => "Nelze změnit soubor „$1“, protože úložiště souborů „$2“ je momentálně pouze pro čtení.
@@ -811,7 +814,7 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
 'notloggedin' => 'Nejste přihlášen(a)',
 'userlogin-noaccount' => 'Nemáte účet?',
 'userlogin-joinproject' => 'Přidejte se k {{grammar:3sg|{{SITENAME}}}}',
-'nologin' => "Dosud nemáte účet? '''$1'''.",
+'nologin' => 'Dosud nemáte účet? $1.',
 'nologinlink' => 'Zaregistrujte se',
 'createaccount' => 'Vytvořit účet',
 'gotaccount' => "Už jste registrováni? '''$1'''.",
@@ -887,7 +890,7 @@ Kvůli prevenci zneužívání lze heslo zaslat jen jednou za $1 {{PLURAL:$1|hod
 'cannotchangeemail' => 'U uživatelských účtů na této wiki nelze měnit e-mailové adresy.',
 'emaildisabled' => 'Tento server nemůže odesílat e-maily.',
 'accountcreated' => 'Účet vytvořen',
-'accountcreatedtext' => 'Uživatelský účet $1 byl vytvořen.',
+'accountcreatedtext' => 'Uživatelský účet [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskuse]]) byl vytvořen.',
 'createaccount-title' => 'Vytvoření účtu na {{grammar:6sg|{{SITENAME}}}}',
 'createaccount-text' => 'Někdo vytvořil na {{grammar:6sg|{{SITENAME}}}} ($4) účet s vaší e-mailovou adresou.
 Jméno účtu: „$2“
@@ -928,6 +931,8 @@ Možná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové d
 
 # Special:PasswordReset
 'passwordreset' => 'Reset hesla',
+'passwordreset-text-one' => 'Pro získání nového hesla vyplňte tento formulář.',
+'passwordreset-text-many' => '{{PLURAL:$1|Pro získání nového hesla zadejte jeden z údajů.}}',
 'passwordreset-legend' => 'Znovu nastavit heslo',
 'passwordreset-disabled' => 'Znovunastavení hesla je na této wiki zakázáno.',
 'passwordreset-emaildisabled' => 'E-mailové funkce byly na této wiki vypnuty.',
@@ -1169,7 +1174,7 @@ Zřejmě byla smazána.',
 'invalid-content-data' => 'Obsažená data jsou chybná',
 'content-not-allowed-here' => 'Obsah typu $1 není na stránce [[$2]] dovolen.',
 'editwarning-warning' => 'Opuštěním této stránky se mohou veškeré provedené změny ztratit.
-Pokud jste {{GENDER:|přihlášen|přihlášena|přihlášeni}}, můžete si toto varování vypnout na záložce „Editace“ v uživatelském nastavení.',
+Přihlášení uživatelé si mohou toto varování vypnout na záložce „Editace“ v uživatelském nastavení.',
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1410,7 +1415,6 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchmenu-legend' => 'Možnosti hledání',
 'searchmenu-exists' => "'''Na této wiki existuje stránka nazvaná „[[:$1]]“.'''",
 'searchmenu-new' => "'''Vytvořte na této wiki stránku „[[:$1]]“!'''",
-'searchhelp-url' => 'Help:Obsah',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zobrazit stránky, jejichž název začíná „$1“]]',
 'searchprofile-articles' => 'Články',
 'searchprofile-project' => 'Nápověda a projektové stránky',
@@ -1596,6 +1600,7 @@ Vaše adresa v takovém případě není prozrazena.',
 'userrights-changeable-col' => 'Skupiny, které můžete měnit',
 'userrights-unchangeable-col' => 'Skupiny, které nemůžete měnit',
 'userrights-conflict' => 'Konflikt uživatelských práv! Proveďte požadované změny ještě jednou.',
+'userrights-removed-self' => 'Úspěšně jste si odebrali vlastní práva. Tudíž už nemáte k této stránce přístup.',
 
 # Groups
 'group' => 'Skupina:',
@@ -1665,7 +1670,9 @@ Vaše adresa v takovém případě není prozrazena.',
 'right-editinterface' => 'Editace zpráv uživatelského rozhraní',
 'right-editusercssjs' => 'Editace CSS a JS souborů jiných uživatelů',
 'right-editusercss' => 'Editace CSS souborů jiných uživatelů',
-'right-edituserjs' => 'Editace JS souborů jiných uživatelů',
+'right-edituserjs' => 'Editace JavaScriptových souborů jiných uživatelů',
+'right-editmyusercss' => 'Editace vašich uživatelských CSS souborů',
+'right-editmyuserjs' => 'Editace vašich uživatelských JavaScriptových souborů',
 'right-rollback' => 'Rychlý revert úprav posledního uživatele editujícího danou stránku',
 'right-markbotedits' => 'Označování revertů jako editace bota',
 'right-noratelimit' => 'Imunita vůči rychlostním limitům',
@@ -1909,7 +1916,7 @@ $1',
 'upload-file-error-text' => 'Při vytváření dočasného souboru na serveru nastala vnitřní chyba.
 Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
 'upload-misc-error' => 'Neznámá chyba',
-'upload-misc-error-text' => 'Neznámá chyba se vyskytla během nahrávání souboru.  Zkontrolujte zda je URL platná a přístupné a zkuste to znovu.  Pokud se chyba znovu objeví, kontaktuje administrátora systému.',
+'upload-misc-error-text' => 'Neznámá chyba se vyskytla během nahrávání souboru.  Zkontrolujte zda je URL platná a přístupné a zkuste to znovu.  Pokud se chyba znovu objeví, kontaktuje [[Special:ListUsers/sysop|správce]].',
 'upload-too-many-redirects' => 'URL obsahovalo příliš mnoho přesměrování',
 'upload-unknown-size' => 'Neznámá velikost',
 'upload-http-error' => 'Došlo k chybě HTTP: $1',
@@ -2653,7 +2660,7 @@ $1',
 'mycontris' => 'Příspěvky',
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'Nenalezeny žádné změny vyhovující kritériím.',
-'uctop' => ' (aktuální)',
+'uctop' => '(aktuální)',
 'month' => 'Do měsíce:',
 'year' => 'Do roku:',
 
@@ -3754,19 +3761,23 @@ Poštovní program hlásí: $1',
 'confirmemail_loggedin' => 'Vaše e-mailová adresa byla potvrzena.',
 'confirmemail_error' => 'Nepodařilo se uložit vaše potvrzení.',
 'confirmemail_subject' => 'Potvrzení e-mailové adresy pro {{grammar:4sg|{{SITENAME}}}}',
-'confirmemail_body' => 'Někdo (patrně vy, z IP adresy $1) si registroval účet se jménem "$2" a touto e-mailovou adresou na {{grammar:6sg|{{SITENAME}}}}.
+'confirmemail_body' => 'Někdo (patrně vy, z IP adresy $1) si na {{grammar:6sg|{{SITENAME}}}}
+zaregistroval účet se jménem „$2“ a touto e-mailovou adresou.
 
-Pokud si přejete aktivovat e-mailové funkce na {{grammar:6sg|{{SITENAME}}}}, tak pro potvrzení, že tato adresa opravdu patří vám, přejděte svým internetovým prohlížečem na následující adresu:
+Pokud si přejete aktivovat e-mailové funkce na {{grammar:6sg|{{SITENAME}}}},
+tak pro potvrzení, že tato adresa opravdu patří vám, přejděte svým internetovým
+prohlížečem na následující adresu:
 
 $3
 
-Pokud jste o toto potvrzení *nežádali*, klikněte na následující odkaz, čímž potvrzení zrušíte:
+Pokud jste si tento účet *neregistrovali*, klikněte na následující odkaz,
+čímž potvrzení zrušíte:
 
 $5
 
 Platnost tohoto potvrzovacího kódu vyprší $4.',
-'confirmemail_body_changed' => 'Někdo (patrně vy, z IP adresy $1)
-změnil e-mailovou adresu k účtu "$2" na {{grammar:6sg|{{SITENAME}}}} na tuto adresu.
+'confirmemail_body_changed' => 'Někdo (patrně vy, z IP adresy $1) změnil e-mailovou adresu
+k účtu „$2“ na {{grammar:6sg|{{SITENAME}}}} na tuto adresu.
 
 Pokud si přejete aktivovat e-mailové funkce na {{grammar:6sg|{{SITENAME}}}},
 tak pro potvrzení, že tato adresa opravdu patří vám, přejděte svým
@@ -3774,7 +3785,7 @@ internetovým prohlížečem na následující adresu:
 
 $3
 
-Pokud jste o toto potvrzení *nežádali*, klikněte na následující odkaz,
+Pokud jste si tento účet *neregistrovali*, klikněte na následující odkaz,
 čímž potvrzení zrušíte:
 
 $5
index ef63944..1826e8e 100644 (file)
@@ -261,7 +261,6 @@ $messages = array(
 'disclaimers' => 'Prawné zastrzedżi',
 'disclaimerpage' => 'Project:Prawné zastrzedżi',
 'edithelp' => 'Pòmòc do edicëji',
-'edithelppage' => 'Help:Editowanié starnë',
 'helppage' => 'Help:Spisënk zamkłoscë',
 'mainpage' => 'Przédnô starna',
 'mainpage-description' => 'Przédnô starna',
index 0be8a21..57412c8 100644 (file)
@@ -251,7 +251,6 @@ $messages = array(
 'disclaimers' => 'Яваплăха тивĕçтерменни',
 'disclaimerpage' => 'Project:Яваплăха тивĕçтерменни',
 'edithelp' => 'Улшăнусене кĕртме пулăшакан пулăшу',
-'edithelppage' => 'Help:Улшăнусене кĕртме пулăшакан пулăшу',
 'helppage' => 'Help:Пулăшу',
 'mainpage' => 'Тĕп страница',
 'mainpage-description' => 'Тĕп страницă',
@@ -578,7 +577,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
 'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
 'nextn' => 'малалли {{PLURAL:$1|$1}}',
-'searchhelp-url' => 'Help:Пулăшу',
 'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
 'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
 'showingresultsheader' => "{{PLURAL:$5|Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
index a7e2343..75d9dc1 100644 (file)
@@ -317,6 +317,7 @@ $messages = array(
 'create-this-page' => "Creu'r dudalen",
 'delete' => 'Dileu',
 'deletethispage' => 'Dileer y dudalen hon',
+'undeletethispage' => 'Adfer y dudalen hon',
 'undelete_short' => 'Adfer $1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad}}',
 'viewdeleted_short' => "Edrych ar y {{PLURAL:$1|golygiad sydd wedi'i ddileu|golygiad sydd wedi'i ddileu|$1 olygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu}}",
 'protect' => 'Diogelu',
@@ -370,7 +371,6 @@ $1',
 'disclaimers' => 'Gwadiadau',
 'disclaimerpage' => 'Project:Gwadiad Cyffredinol',
 'edithelp' => 'Help gyda golygu',
-'edithelppage' => 'Help:Golygu',
 'helppage' => 'Help:Cymorth',
 'mainpage' => 'Hafan',
 'mainpage-description' => 'Hafan',
@@ -515,6 +515,8 @@ $2",
 'namespaceprotected' => "Nid oes caniatâd gennych i olygu tudalennau yn y parth '''$1'''.",
 'customcssprotected' => "Nid oes caniatâd ganddoch i olygu'r dudalen CSS hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
 'customjsprotected' => "Nid oes caniatâd ganddoch i olygu'r dudalen JavaScript hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
+'mycustomcssprotected' => "Does dim caniatad gennych i olygu'r dudalen CSS hon.",
+'mycustomjsprotected' => "Does dim caniatad gennych i olygu'r dudalen JavaScript hon.",
 'ns-specialprotected' => 'Ni ellir golygu tudalennau arbennig.',
 'titleprotected' => "Diogelwyd y teitl hwn rhag ei greu gan [[User:$1|$1]].
 Rhoddwyd y rheswm hwn - ''$2''.",
@@ -639,7 +641,7 @@ Felly ni chaiff defnyddwyr sy'n defnyddio'r cyfeiriad IP hwn greu rhagor o gyfri
 'cannotchangeemail' => 'Ni ellir newid cyfeiriadau e-bost i gyfrifon ar y wici hwn.',
 'emaildisabled' => 'Ni all y wefan hon anfon e-byst.',
 'accountcreated' => 'Crëwyd y cyfrif',
-'accountcreatedtext' => 'Crëwyd cyfrif defnyddiwr ar gyfer $1.',
+'accountcreatedtext' => 'Gosodwyd cyfrif defnyddiwr ar gyfer [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|sgwrs]]).',
 'createaccount-title' => 'Creu cyfrif ar {{SITENAME}}',
 'createaccount-text' => 'Creodd rhywun gyfrif o\'r enw $2 ar {{SITENAME}} ($4) ar gyfer y cyfeiriad e-bost hwn. "$3" yw\'r cyfrinair ar gyfer "$2". Dylech fewngofnodi a newid eich cyfrinair yn syth.
 
@@ -1159,7 +1161,6 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchmenu-legend' => 'Dewisiadau chwilio',
 'searchmenu-exists' => "'''Mae tudalen o'r enw \"[[\$1]]\" ar y wici hwn'''",
 'searchmenu-new' => "'''Creu'r dudalen \"[[:\$1]]\" ar y wici hwn!'''",
-'searchhelp-url' => 'Help:Cymorth',
 'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Chwilio drwy tudalennau gyda'r rhagddodiad hwn]]",
 'searchprofile-articles' => 'Tudalennau pwnc (erthyglau/ffeiliau)',
 'searchprofile-project' => 'Tudalennau Cymorth a Phrosiect',
@@ -1347,6 +1348,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'userrights-changeable-col' => 'Grwpiau y gallwch eu newid',
 'userrights-unchangeable-col' => 'Grwpiau na allwch eu newid',
 'userrights-conflict' => 'Gwrthdaro gyda hawliau defnyddiwr! Gwnewch eich newidiadau eto.',
+'userrights-removed-self' => "Rydych wedi llwyddo rhoi'r gorau i'ch galluoedd. Gan hynny, nid ydych yn cael myned i'r dudalen hon bellach.",
 
 # Groups
 'group' => 'Grŵp:',
@@ -1417,6 +1419,8 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'right-editusercssjs' => 'Golygu ffeiliau CSS a JS yn perthyn i ddefnyddwyr eraill',
 'right-editusercss' => 'Golygu ffeiliau CSS yn perthyn i ddefnyddwyr eraill',
 'right-edituserjs' => 'Golygu ffeiliau JS yn perthyn i ddefnyddwyr eraill',
+'right-editmyusercss' => 'Golygu eich ffeiliau defnyddiwr CSS eich hunan.',
+'right-editmyuserjs' => 'Golygu eich ffeiliau defnyddiwr JavaScript eich hunan.',
 'right-rollback' => 'Gwrthdroi golygiadau defnyddiwr diwethaf rhyw dudalen yn sydyn',
 'right-markbotedits' => 'Marcio golygiadau wedi eu gwrthdroi yn olygiadau bot',
 'right-noratelimit' => 'Bod heb gyfyngiad ar gyflymder eich gweithredoedd',
index eadb9ac..e151c99 100644 (file)
@@ -16,6 +16,7 @@
  * @author EPO
  * @author Emilkris33
  * @author Froztbyte
+ * @author Geitost
  * @author Gorbi
  * @author H92
  * @author HenrikKbh
@@ -391,6 +392,7 @@ $messages = array(
 'create-this-page' => 'Opret denne side',
 'delete' => 'Slet',
 'deletethispage' => 'Slet side',
+'undeletethispage' => 'Gendan denne side',
 'undelete_short' => 'Fortryd sletning af {{PLURAL:$1|én version|$1 versioner}}',
 'viewdeleted_short' => 'Vis {{PLURAL:$1|en slettet redigering|$1 slettede redigeringer}}',
 'protect' => 'Beskyt',
@@ -444,7 +446,6 @@ $1',
 'disclaimers' => 'Forbehold',
 'disclaimerpage' => 'Project:Generelle forbehold',
 'edithelp' => 'Hjælp til redigering',
-'edithelppage' => 'Help:Hvordan redigerer jeg en side',
 'helppage' => 'Help:Hjælp',
 'mainpage' => 'Forside',
 'mainpage-description' => 'Forside',
@@ -590,6 +591,8 @@ $2',
 'namespaceprotected' => 'Du har ikke rettigheder til at redigere sider i $1-navnerummet.',
 'customcssprotected' => 'Du har ikke tilladelse til at redigere denne CSS-side, da den indeholder en anden brugers personlige indstillinger.',
 'customjsprotected' => 'Du har ikke tilladelse til at redigere denne JavaScript-side, da den indeholder en anden brugers personlige indstillinger.',
+'mycustomcssprotected' => 'Du har ikke rettigheder til at redigere denne CSS-side.',
+'mycustomjsprotected' => 'Du har ikke rettigheder til at redigere denne JavaScript-side.',
 'ns-specialprotected' => 'Sider i navnerummet {{ns:special}} kan ikke redigeres.',
 'titleprotected' => "Dette sidenavn er beskyttet mod oprettelse af [[User:$1|$1]]. Begrundelsen for beskyttelsen er ''$2''.",
 'filereadonlyerror' => 'Ude af stand til at redigere filen "$1", fordi fildatabasen "$2" er skrivebeskyttet.
@@ -720,7 +723,7 @@ Derfor kan besøgende ikke oprette flere kontoer fra denne IP-adresse i øjeblik
 'cannotchangeemail' => 'De email-adresser, der er tilknyttet brugerkontoer, kan ikke ændres på denne wiki.',
 'emaildisabled' => 'Denne hjemmeside kan ikke sende emails.',
 'accountcreated' => 'Brugerkonto oprettet',
-'accountcreatedtext' => 'Brugerkontoen $1 er oprettet.',
+'accountcreatedtext' => 'Brugerkontoen for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskussion]]) er oprettet.',
 'createaccount-title' => 'Opret brugerkonto på {{SITENAME}}',
 'createaccount-text' => 'Nogen har oprettet en konto for din e-post-adresse på {{SITENAME}} ($4) med navnet "$2". Adgangskoden er "$3".
 Du opfordres til at logge ind og ændre adgangskoden med det samme.
@@ -759,6 +762,8 @@ Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlerti
 
 # Special:PasswordReset
 'passwordreset' => 'Nulstil adgangskode',
+'passwordreset-text-one' => 'Udfyld denne formular for at nulstille din adgangskode.',
+'passwordreset-text-many' => '{{PLURAL:$1|Udfyld en af oplysningerne nedenfor for at nulstille din adgangskode.}}',
 'passwordreset-legend' => 'Nulstil adgangskode',
 'passwordreset-disabled' => 'Nulstilling af kodeord er slået fra på denne wiki.',
 'passwordreset-emaildisabled' => 'E-mailfunktioner er slået fra på denne wiki.',
@@ -996,6 +1001,7 @@ Sletnings- og flytteloggerne for siden er vist nedenfor.',
 Den ser du til at være slettet.',
 'edit-conflict' => 'Redigeringskonflikt.',
 'edit-no-change' => 'Din ændring ignoreredes, fordi der ikke var ændring af teksten.',
+'postedit-confirmation' => 'Din redigering er gemt.',
 'edit-already-exists' => 'En ny side kunne ikke oprettes, fordi den allerede findes.',
 'defaultmessagetext' => 'Standardtekst',
 'content-failed-to-parse' => 'Kunne ikke fortolke $2-indholdet af $1-modellen: $3',
@@ -1239,7 +1245,6 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Søgemuligheder',
 'searchmenu-exists' => "'''Der er en side med navnet \"[[:\$1]]\" på denne wiki'''",
 'searchmenu-new' => "'''Opret siden \"[[:\$1]]\" i denne wiki'''",
-'searchhelp-url' => 'Help:Hjælp',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynder med dette præfiks]]',
 'searchprofile-articles' => 'Indholdssider',
 'searchprofile-project' => 'Hjælpe- og projektsider',
@@ -1425,6 +1430,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'userrights-changeable-col' => 'Redigerbare grupper',
 'userrights-unchangeable-col' => 'Uredigerbare grupper',
 'userrights-conflict' => 'Brugerrettighedskonflikt. Tilføj venligst dine ændringer påny.',
+'userrights-removed-self' => 'Du har fjernet dine egne rettigheder. Du har derfor ikke længere adgang til denne side.',
 
 # Groups
 'group' => 'Gruppe:',
@@ -1495,6 +1501,8 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'right-editusercssjs' => 'Ændre andre brugeres JS og CSS filer',
 'right-editusercss' => 'Ændre andre brugeres CSS filer',
 'right-edituserjs' => 'Ændre andre brugeres JS filer',
+'right-editmyusercss' => 'Redigere dine egne CSS-filer',
+'right-editmyuserjs' => 'Redigere dine egne JavaScript-filer',
 'right-rollback' => 'Hurtig gendannelse af alle redigeringer foretaget af den seneste bruger',
 'right-markbotedits' => 'Markere gendannelser som ændringer foretaget af en robot',
 'right-noratelimit' => 'Upåvirket af hastighedsgrænser',
@@ -1739,9 +1747,9 @@ $1',
 'upload-proto-error-text' => 'Adressen skal begynde med <code>http://</code> eller <code>ftp://</code>.',
 'upload-file-error' => 'Intern fejl',
 'upload-file-error-text' => 'Ved oprettelse af en midlertidig fil på serveren, er der sket en fejl.
-Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
+Informer venligst en [[Special:ListUsers/sysop|administrator]].',
 'upload-misc-error' => 'Ukendt fejl ved upload',
-'upload-misc-error-text' => 'Ved upload er der sket en ukendt fejl. Kontroller adressen for fejl, sidens onlinestatus og forsøg igen. Hvis problemet fortsætter, informeres en system-administrator.',
+'upload-misc-error-text' => 'Ved upload er der sket en ukendt fejl. Kontroller adressen for fejl, sidens onlinestatus og forsøg igen. Hvis problemet fortsætter, informeres en [[Special:ListUsers/sysop|administrator]].',
 'upload-too-many-redirects' => "URL'en indeholdt for mange omdirigeringer",
 'upload-unknown-size' => 'Ukendt størrelse',
 'upload-http-error' => 'Der opstod en HTTP-fejl: $1',
@@ -2490,7 +2498,7 @@ $1',
 'mycontris' => 'Bidrag',
 'contribsub2' => 'For $1 ($2)',
 'nocontribs' => 'Ingen ændringer er fundet som opfylder disse kriterier.',
-'uctop' => ' (seneste)',
+'uctop' => '(seneste)',
 'month' => 'Måned:',
 'year' => 'År:',
 
index 99c2da5..9157564 100644 (file)
@@ -44,6 +44,7 @@
  * @author MichaelFrey
  * @author MtaÄ
  * @author Omnipaedista
+ * @author Patrick87
  * @author Pill
  * @author Purodha
  * @author Raimond Spekking (Raymond) <raimond.spekking@gmail.com> since January 2007
@@ -550,8 +551,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Diese Kategorie enthält folgende Datei:|{{PLURAL:$1|Folgende Datei ist eine von insgesamt $2 Dateien in dieser Kategorie:|Es werden $1 von insgesamt $2 Dateien in dieser Kategorie angezeigt:}}}}',
 'category-file-count-limited' => 'Folgende {{PLURAL:$1|Datei ist|$1 Dateien sind}} in dieser Kategorie enthalten:',
 'listingcontinuesabbrev' => '(Fortsetzung)',
-'index-category' => 'Indizierte Seiten',
-'noindex-category' => 'Nichtindizierte Seiten',
+'index-category' => 'Indexierte Seiten',
+'noindex-category' => 'Nichtindexierte Seiten',
 'broken-file-category' => 'Seiten mit defekten Dateilinks',
 
 'about' => 'Über',
@@ -603,7 +604,7 @@ $messages = array(
 'go' => 'Ausführen',
 'searcharticle' => 'Seite',
 'history' => 'Versionen',
-'history_short' => 'Versionen/Autoren',
+'history_short' => 'Versionsgeschichte',
 'updatedmarker' => 'Änderung seit meinem letzten Besuch',
 'printableversion' => 'Druckversion',
 'permalink' => 'Permanenter Link',
@@ -615,6 +616,7 @@ $messages = array(
 'create-this-page' => 'Seite erstellen',
 'delete' => 'Löschen',
 'deletethispage' => 'Diese Seite löschen',
+'undeletethispage' => 'Diese Seite wiederherstellen',
 'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen',
 'viewdeleted_short' => '{{PLURAL:$1|Eine gelöschte Version|$1 gelöschte Versionen}} ansehen',
 'protect' => 'Schützen',
@@ -668,7 +670,6 @@ $1',
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Bearbeitungshilfe',
-'edithelppage' => 'Help:Bearbeiten',
 'helppage' => 'Help:Inhaltsverzeichnis',
 'mainpage' => 'Hauptseite',
 'mainpage-description' => 'Hauptseite',
@@ -816,6 +817,8 @@ $2',
 'namespaceprotected' => "Du hast nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
 'customcssprotected' => 'Du hast nicht die Berechtigung, diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
 'customjsprotected' => 'Du hast nicht die Berechtigung, diese JavaScript enthaltende Seite zu bearbeiten, da es sich hierbei um die persönlichen Einstellungen eines anderen Benutzers handelt.',
+'mycustomcssprotected' => 'Du hast keine Berechtigung, diese CSS-Seite zu bearbeiten.',
+'mycustomjsprotected' => 'Du hast keine Berechtigung, diese JavaScript-Seite zu bearbeiten.',
 'ns-specialprotected' => 'Spezialseiten können nicht bearbeitet werden.',
 'titleprotected' => "Eine Seite mit diesem Namen kann nicht angelegt werden.
 Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerichtet.",
@@ -867,7 +870,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 'notloggedin' => 'Nicht angemeldet',
 'userlogin-noaccount' => 'Du hast noch kein Benutzerkonto?',
 'userlogin-joinproject' => '{{SITENAME}} beitreten',
-'nologin' => "Du hast kein Benutzerkonto? '''$1'''.",
+'nologin' => 'Du hast kein Benutzerkonto? $1.',
 'nologinlink' => 'Neues Benutzerkonto anlegen',
 'createaccount' => 'Benutzerkonto anlegen',
 'gotaccount' => "Du hast bereits ein Benutzerkonto? '''$1'''.",
@@ -946,7 +949,7 @@ Besucher, die diese IP-Adresse verwenden, können momentan keine Benutzerkonten
 'cannotchangeemail' => 'E-Mail-Adressen können in diesem Wiki nicht geändert werden.',
 'emaildisabled' => 'Über diese Website können keine E-Mails versandt werden.',
 'accountcreated' => 'Benutzerkonto erstellt',
-'accountcreatedtext' => 'Das Benutzerkonto $1 wurde eingerichtet.',
+'accountcreatedtext' => 'Das Benutzerkonto für [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|Diskussion]]) wurde eingerichtet.',
 'createaccount-title' => 'Erstellung eines Benutzerkontos für {{SITENAME}}',
 'createaccount-text' => 'Es wurde für dich ein Benutzerkonto „$2“ auf {{SITENAME}} ($4) erstellt. Das automatisch generierte Passwort für „$2“ ist „$3“. Du solltest dich nun anmelden und das Passwort ändern.
 
@@ -1110,7 +1113,7 @@ Vermutlich wurde er verschoben oder gelöscht, nachdem du die Seite aufgerufen h
 Das Passwort für dieses neue Benutzerkonto kann auf der Spezialseite „[[Special:ChangePassword|Passwort ändern]]“ geändert werden.',
 'newarticle' => '(Neu)',
 'newarticletext' => "Du bist einem Link zu einer Seite gefolgt, die nicht vorhanden ist.
-Um diese Seite anzulegen, trage deinen Text in das untenstehende Bearbeitungsfeld ein (siehe die [[{{MediaWiki:Helppage}}|Hilfeseite]] für weitere Informationen).
+Um diese Seite anzulegen, trage deinen Text in das untenstehende Bearbeitungsfeld ein (weitere Informationen auf der [[{{MediaWiki:Helppage}}|Hilfeseite]]).
 Sofern du fälschlicherweise hier bist, klicke auf die Schaltfläche '''Zurück''' deines Browsers.",
 'anontalkpagetext' => "----''Diese Seite dient dazu, einem nicht angemeldeten Benutzer Nachrichten zu hinterlassen. Es wird seine IP-Adresse zur Identifizierung verwendet. IP-Adressen können von mehreren Benutzern gemeinsam verwendet werden. Wenn du mit den Kommentaren auf dieser Seite nichts anfangen kannst, richten sie sich vermutlich an einen früheren Inhaber deiner IP-Adresse und du kannst sie ignorieren. Du kannst dir auch ein [[Special:UserLogin/signup|Benutzerkonto erstellen]] oder dich [[Special:UserLogin|anmelden]], um künftig Verwechslungen mit anderen anonymen Benutzern zu vermeiden.''",
 'noarticletext' => 'Diese Seite enthält momentan noch keinen Text.
@@ -1136,7 +1139,7 @@ Zur Information folgt ein aktueller Auszug aus dem Benutzersperr-Logbuch:',
 'userjsyoucanpreview' => "'''Tipp:''' Benutze den „{{int:showpreview}}“-Button, um dein neues JavaScript vor dem Speichern zu testen.",
 'usercsspreview' => "'''Beachte, dass du nur eine Vorschau deines Benutzer-CSS betrachtest.'''
 '''Es wurde noch nicht gespeichert!'''",
-'userjspreview' => "'''Beachte, dass du nur eine Vorschau deines Benutzer-JavaScript betrachtest.'''
+'userjspreview' => "'''Beachte, dass du nur eine Vorschau deines Benutzer-JavaScripts betrachtest.'''
 '''Es wurde noch nicht gespeichert!'''",
 'sitecsspreview' => "'''Beachte, dass du nur eine Vorschau dieses CSS betrachtest.'''
 '''Es wurde noch nicht gespeichert!'''",
@@ -1173,7 +1176,7 @@ Bitte füge deine Änderungen in das obere Textfeld ein.
 '''Nur''' der Inhalt des oberen Textfeldes wird gespeichert, wenn du auf „{{int:savearticle}}“ klickst.",
 'yourtext' => 'Dein Text',
 'storedversion' => 'Gespeicherte Version',
-'nonunicodebrowser' => "'''Achtung:''' Dein Browser kann Unicode-Zeichen nicht richtig verarbeiten. Bitte verwende einen anderen Browser um Seiten zu bearbeiten.",
+'nonunicodebrowser' => "'''Achtung: Dein Browser kann Unicode-Zeichen nicht richtig verarbeiten.''' Es wird eine Hilfsroutine eingesetzt, um dir zu erlauben, Seiten sicher zu bearbeiten: Nicht-ASCII-Zeichen werden dabei im Bearbeitungsfenster als hexadezimale Codes angezeigt.",
 'editingold' => "'''Achtung: Du bearbeitest eine alte Version dieser Seite. Sofern du sie speicherst, werden alle neueren Versionen überschrieben.'''",
 'yourdiff' => 'Unterschiede',
 'copyrightwarning' => "'''Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!'''<br />
@@ -1183,7 +1186,7 @@ Du gibst uns hiermit deine Zusage, dass du den Text '''selbst verfasst''' hast,
 Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.
 
 Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast
-(siehe $1 für weitere Einzelheiten). '''ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
+(weitere Einzelheiten unter $1). '''ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
 'longpageerror' => "'''Fehler: Der Text, den du zu speichern versuchst, ist {{PLURAL:$1|ein Kilobyte|$1 Kilobyte}} groß. Dies ist größer als das erlaubte Maximum von {{PLURAL:$2|ein Kilobyte|$2 Kilobyte}}.'''
 Er kann nicht gespeichert werden.",
 'readonlywarning' => "'''Achtung: Die Datenbank wurde für Wartungsarbeiten gesperrt, so dass deine Änderungen derzeit nicht gespeichert werden können.
@@ -1451,8 +1454,8 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Suchergebnisse',
 'searchresults-title' => 'Suchergebnisse für „$1“',
-'searchresulttext' => 'Für mehr Informationen zur Suche siehe die [[{{MediaWiki:Helppage}}|Hilfeseite]].',
-'searchsubtitle' => 'Deine Suchanfrage: „[[:$1]]“ ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
+'searchresulttext' => 'Mehr Informationen zur Suche sind auf der [[{{MediaWiki:Helppage}}|Hilfeseite]] zu finden.',
+'searchsubtitle' => 'Du hast nach „[[:$1]]“ gesucht ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
 'searchsubtitleinvalid' => 'Deine Suchanfrage: „$1“.',
 'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu groß, bitte versuche eine andere Abfrage.',
 'titlematches' => 'Übereinstimmungen mit Seitentiteln',
@@ -1468,7 +1471,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'searchmenu-legend' => 'Suchoptionen',
 'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat.'''",
 'searchmenu-new' => "'''Erstelle die Seite „[[:$1]]“ in diesem Wiki.'''",
-'searchhelp-url' => 'Help:Hilfe',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alle Seiten, die mit dem Suchbegriff anfangen]]',
 'searchprofile-articles' => 'Inhaltsseiten',
 'searchprofile-project' => 'Hilfe- und Projektseiten',
@@ -1498,7 +1500,7 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
 'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
-'search-nonefound' => 'Für deine Suchanfrage wurden keine Ergebnisse gefunden.',
+'search-nonefound' => 'Zu deiner Suchanfrage wurden keine Ergebnisse gefunden.',
 'powersearch' => 'Erweiterte Suche',
 'powersearch-legend' => 'Erweiterte Suche',
 'powersearch-ns' => 'Suche in Namensräumen:',
@@ -1655,6 +1657,7 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 'userrights-changeable-col' => 'Gruppenzugehörigkeit, die du ändern kannst',
 'userrights-unchangeable-col' => 'Gruppenzugehörigkeit, die du nicht ändern kannst',
 'userrights-conflict' => 'Benutzerrechtekonflikt! Bitte führe deine Änderungen erneut durch.',
+'userrights-removed-self' => 'Du hast deine eigenen Rechte erfolgreich entfernt. Du kannst nicht länger auf diese Seite zugreifen.',
 
 # Groups
 'group' => 'Gruppe:',
@@ -1725,6 +1728,8 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 'right-editusercssjs' => 'Fremde CSS- und JavaScript-Dateien bearbeiten',
 'right-editusercss' => 'Fremde CSS-Dateien bearbeiten',
 'right-edituserjs' => 'Fremde JavaScript-Dateien bearbeiten',
+'right-editmyusercss' => 'Eigene Benutzer-CSS-Dateien bearbeiten',
+'right-editmyuserjs' => 'Eigene Benutzer-JavaScript-Dateien bearbeiten',
 'right-rollback' => 'Schnelles Zurücksetzen',
 'right-markbotedits' => 'Schnell zurückgesetzte Bearbeitungen als Bot-Bearbeitung markieren',
 'right-noratelimit' => 'Keine Beschränkung durch Limits',
@@ -1971,11 +1976,11 @@ $1',
 'upload-proto-error-text' => 'Die URL muss mit <code>http://</code> oder <code>ftp://</code> beginnen.',
 'upload-file-error' => 'Interner Fehler',
 'upload-file-error-text' => 'Bei der Erstellung einer temporären Datei auf dem Server ist ein interner Fehler aufgetreten.
-Bitte informiere einen [[Special:ListUsers/sysop|System-Administrator]].',
+Bitte informiere einen [[Special:ListUsers/sysop|Administrator]].',
 'upload-misc-error' => 'Unbekannter Fehler beim Hochladen',
 'upload-misc-error-text' => 'Beim Hochladen ist ein unbekannter Fehler aufgetreten.
 Prüfe die URL auf Fehler, den Online-Status der Seite und versuche es erneut.
-Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|System-Administrator]].',
+Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Administrator]].',
 'upload-too-many-redirects' => 'Die URL beinhaltete zu viele Weiterleitungen',
 'upload-unknown-size' => 'Unbekannte Größe',
 'upload-http-error' => 'Ein HTTP-Fehler ist aufgetreten: $1',
@@ -2047,7 +2052,7 @@ Sie kann daher keiner ordnungsgemäßen Sicherheitsüberprüfung unterzogen werd
 'img-auth-nopathinfo' => 'Die Angabe PATH_INFO fehlt.
 Der Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
 Sie könnte CGI-gestützt sein und kann daher „img_auth“ (Authentifizierung des Dateiaufrufs) nicht unterstützen.
-Siehe hierzu die Seite https://www.mediawiki.org/wiki/Manual:Image_Authorization (englisch) für weitere Informationen.',
+Siehe auch https://www.mediawiki.org/wiki/Manual:Image_Authorization (englisch).',
 'img-auth-notindir' => 'Der gewünschte Pfad ist nicht im konfigurierten Uploadverzeichnis.',
 'img-auth-badtitle' => 'Aus „$1“ kann kein gültiger Titel erstellt werden.',
 'img-auth-nologinnWL' => 'Du bist nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
@@ -3003,7 +3008,7 @@ Alternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:
 'exportall' => 'Alle Seiten exportieren',
 'exportcuronly' => 'Nur die aktuelle Version der Seite exportieren',
 'exportnohistory' => "----
-'''Hinweis:''' Der Export kompletter Versionsgeschichten ist aus Performancegründen bis auf weiteres nicht möglich.",
+'''Hinweis:''' Der Export kompletter Versionsgeschichten ist aus Gründen der Systemleistung bis auf Weiteres nicht möglich.",
 'exportlistauthors' => 'Für jede Seite die jeweils vollständige Liste der Bearbeiter einbeziehen',
 'export-submit' => 'Seiten exportieren',
 'export-addcattext' => 'Seiten aus folgender Kategorie hinzufügen:',
@@ -3199,7 +3204,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 # Scripts
 'common.js' => '/* Das folgende JavaScript wird für alle Benutzer geladen. */',
 'cologneblue.js' => '/* Das folgende JavaScript wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'monobook.js' => '/* Das folgende JavaScript wird für Benutzer der MonoBook-Benutzeroberfläche geladen */',
+'monobook.js' => '/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. */',
 'modern.js' => '/* Das folgende JavaScript wird für Benutzer der Modern-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
 'vector.js' => '/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
 'group-autoconfirmed.js' => '/* Das folgende JavaScript wird nur für automatisch bestätigte Benutzer geladen. */',
@@ -3797,7 +3802,7 @@ Weitere werden standardmäßig nicht angezeigt.
 
 # External editor support
 'edit-externally' => 'Diese Datei mit einem externen Programm bearbeiten',
-'edit-externally-help' => '(Siehe die [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] für weitere Informationen)',
+'edit-externally-help' => '(weitere Informationen in den [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen])',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
index 07d224b..d8cccef 100644 (file)
@@ -16,6 +16,7 @@
  * @author Kaganer
  * @author Mirzali
  * @author Nemo bis
+ * @author Neribij
  * @author Olvörg
  * @author Reedy
  * @author Sahim
 $namespaceNames = array(
        NS_MEDIA            => 'Medya',
        NS_SPECIAL          => 'Xısusi',
-       NS_TALK             => 'Werênayış',
+       NS_TALK             => 'Mesac',
        NS_USER             => 'Karber',
-       NS_USER_TALK        => 'Karber_werênayış',
-       NS_PROJECT_TALK     => '$1_werênayış',
+       NS_USER_TALK        => 'Karber_mesac',
+       NS_PROJECT_TALK     => '$1_mesac',
        NS_FILE             => 'Dosya',
-       NS_FILE_TALK        => 'Dosya_werênayış',
+       NS_FILE_TALK        => 'Dosya_mesac',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_werênayış',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_mesac',
        NS_TEMPLATE         => 'Şablon',
-       NS_TEMPLATE_TALK    => 'Şablon_werênayış',
+       NS_TEMPLATE_TALK    => 'Şablon_mesac',
        NS_HELP             => 'Peşti',
-       NS_HELP_TALK        => 'Peşti_werênayış',
+       NS_HELP_TALK        => 'Peşti_mesac',
        NS_CATEGORY         => 'Kategoriye',
-       NS_CATEGORY_TALK    => 'Kategoriye_werênayış',
+       NS_CATEGORY_TALK    => 'Kategoriye_mesac',
 );
 
 $namespaceAliases = array(
-       'Karber_mesac'       => NS_USER_TALK,
-       'Desteg'             => NS_HELP,
-       'Desteg_werênayış'   => NS_HELP_TALK,
-       'Kategori'           => NS_CATEGORY,
-       'Kategori_werênayış' => NS_CATEGORY_TALK,
+       'Werênayış'            => NS_TALK,
+       'Karber_werênayış'     => NS_USER_TALK,
+       '$1_werênayış'         => NS_PROJECT_TALK,
+       'Dosya_werênayış'      => NS_FILE_TALK,
+       'MediaWiki_werênayış'  => NS_MEDIAWIKI_TALK,
+       'Şablon_werênayış'     => NS_TEMPLATE_TALK,
+       'Desteg'               => NS_HELP,
+       'Desteg_werênayış'     => NS_HELP_TALK,
+       'Peşti_werênayış'      => NS_HELP_TALK,
+       'Kategori'             => NS_CATEGORY,
+       'Kategori_werênayış'   => NS_CATEGORY_TALK,
+       'Kategoriye_werênayış' => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
@@ -416,6 +424,16 @@ $messages = array(
 'oct' => 'Tşv',
 'nov' => 'Tşp',
 'dec' => 'Kan',
+'january-date' => 'Çele  $1',
+'february-date' => 'Şıbate $1',
+'march-date' => 'Adar $1',
+'april-date' => 'Nisane $1',
+'may-date' => 'Gulane $1',
+'june-date' => 'Hezirane $1',
+'july-date' => 'Temuze $1',
+'august-date' => 'Tebaxe $1',
+'september-date' => 'Keşkelun $1',
+'december-date' => 'Kanun $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
@@ -501,6 +519,7 @@ $messages = array(
 'create-this-page' => 'Na pele bınuse',
 'delete' => 'Bestere',
 'deletethispage' => 'Ena perer besternê',
+'undeletethispage' => 'Na perer mebesterne',
 'undelete_short' => '{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere',
 'viewdeleted_short' => '{{PLURAL:$1|Yew vurnayışo esterıte|$1 Vurnayışanê esterıtan}} bımocne',
 'protect' => 'Bıpawe',
@@ -554,9 +573,8 @@ $1',
 'disclaimers' => 'Redê mesuliyeti',
 'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
 'edithelp' => 'Peştdariya vurnayışi',
-'edithelppage' => 'Help:Vurnayış',
 'helppage' => 'Help:Estêni',
-'mainpage' => 'Pera Seri',
+'mainpage' => 'Pela Seri',
 'mainpage-description' => 'Pela Seri',
 'policy-url' => 'Project:Terzê hereketi',
 'portal' => 'Portalê cemaeti',
@@ -706,6 +724,8 @@ $2',
 'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
 'customcssprotected' => 'Mısadeyê şıma çıniyo ke na pela CSSi bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
 'customjsprotected' => 'Mısadeyê şıma çıniyo ke na pela Java Scripti bıvurnên, çıke na pela xısusiye eyaranê karberan muhtewa kena.',
+'mycustomcssprotected' => "Na pera CSS'i re tenya idarekari şene bıvurne",
+'mycustomjsprotected' => "Na pera JavaScript'i re tenya idarekari şene bıvurne",
 'ns-specialprotected' => 'Pelê xısusiy nênê vurnayış.',
 'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
 Sebeb: "\'\'$2\'\'".',
@@ -778,6 +798,7 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'createacct-captcha' => 'Qontrolê asayişi',
 'createacct-imgcaptcha-ph' => 'Nuşteyo ke cor aseno ey cı ke',
 'createacct-submit' => 'Hesabê xo vıraze',
+'createacct-benefit-heading' => '{{SITENAME}} meş de merduman şi',
 'createacct-benefit-body1' => '{{PLURAL:$1|vurnayış|vurnayışi}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|pele|peli}}',
 'createacct-benefit-body3' => '{{PLURAL:$1|iştıraqkerdoğo nıkayên|iştıraqkerdoğê nıkayêni}}',
@@ -836,7 +857,7 @@ Yew formato meqbul de adresê e-posta bınuse ya zi veng bıverde.',
 'cannotchangeemail' => 'E-postay hesabi ena wiki sera nêvurneyêno.',
 'emaildisabled' => 'Na site ra e-posta nêrışêno.',
 'accountcreated' => 'Hesab vıraciya',
-'accountcreatedtext' => 'Qandê $1 hesabê karberi vıraziyayo.',
+'accountcreatedtext' => 'Qandê [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) hesabê karberi vıraziyayo.',
 'createaccount-title' => 'Qey {{SITENAME}} newe yew heab vıraştış',
 'createaccount-text' => 'Kesê, be e-posteyê şıma ra {{SITENAME}} ($4) de, ebe nameyê "$2" u parola "$3" ra yew hesab vıraşto.
 Şıma gani cı kewê u parola xo nıka bıvurnê.',
@@ -872,6 +893,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 
 # Special:PasswordReset
 'passwordreset' => 'Parola reset ke',
+'passwordreset-text-one' => 'Na form de parola reset kerdış temamiye',
 'passwordreset-legend' => 'Parola reset ke',
 'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
 'passwordreset-username' => 'Nameyê karberi:',
@@ -1100,6 +1122,7 @@ Yew sebeb beyan nibı.',
 Hewna kerde aseno.',
 'edit-conflict' => 'Vurnayişê pêverdiyaye .',
 'edit-no-change' => 'Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.',
+'postedit-confirmation' => 'Vurnayış qeyd be',
 'edit-already-exists' => 'Pelo newe nêvıraziyeno.
 Pel ca ra esto.',
 'defaultmessagetext' => 'Hesıbyaye metne mesaci',
@@ -1348,7 +1371,6 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searchmenu-legend' => 'bıgeyre tercihan (sae bıke)',
 'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
 'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
-'searchhelp-url' => 'Help:Tedeestey',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
 'searchprofile-articles' => 'Pelê tedeestey',
 'searchprofile-project' => 'Pelê yardım u procey',
@@ -2357,7 +2379,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.',
 'notvisiblerev' => 'Revizyon esteriyayo',
 'watchnochange' => 'pelê listeya temaşakerdışê şıma ye wextê nişane biyaye de rocane nêbiyo.',
 'watchlist-details' => '{{PLURAL:$1|$1 pele|$1 peleyan}} listeyê seyr-kerdışi şıma dı, peleyanê vurnayışi dahil niyo.',
-'wlheader-enotif' => 'pê E-mail xeber dayiş biyo a.',
+'wlheader-enotif' => 'E-mail xeber dayiş abiyo.',
 'wlheader-showupdated' => "ziyaretê şıma ye peyini de vuryayişê peli pê '''nuşteyo qalıni''' mocyayo.",
 'watchmethod-recent' => 'pel ê ke şıma temaşa kenî vuryayişê peyinê ey konrol beno',
 'watchmethod-list' => 'pel ê ke şıma temaşa kenî vuryayişê peyinê ey konrol beno',
index 33f3516..bffb0d6 100644 (file)
@@ -11,6 +11,7 @@
  * @author Derbeth
  * @author Dunak
  * @author Dundak
+ * @author Geitost
  * @author Kaganer
  * @author Michawiki
  * @author Murjarik
@@ -400,7 +401,6 @@ $1',
 'disclaimers' => 'Impresum',
 'disclaimerpage' => 'Project:impresum',
 'edithelp' => 'Pomoc pśi wobźěłanju',
-'edithelppage' => 'Help:Pomoc pśi wobźěłanju',
 'helppage' => 'Help:Pomoc',
 'mainpage' => 'Głowny bok',
 'mainpage-description' => 'Głowny bok',
@@ -567,9 +567,18 @@ Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš <span class='plainl
 'welcomeuser' => 'Witaj $1',
 'welcomecreation-msg' => 'Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences|nastajenja za {{SITENAME}}]].',
 'yourname' => 'mě wužywarja',
+'userlogin-yourname' => 'Wužywarske mě',
+'userlogin-yourname-ph' => 'Zapódaj swójo wužywarske mě',
 'yourpassword' => 'šćitne gronidło:',
+'userlogin-yourpassword' => 'Gronidło',
+'userlogin-yourpassword-ph' => 'Zapódaj swójo gronidło',
+'createacct-yourpassword-ph' => 'Zapódaj gronidło',
 'yourpasswordagain' => 'Šćitne gronidło hyšći raz zapódaś:',
+'createacct-yourpasswordagain' => 'Gronidło wobkšuśiś',
+'createacct-yourpasswordagain-ph' => 'Zapódaj gronidło hyšći raz',
 'remembermypassword' => 'Na toś tom licadle pśizjawjony wóstaś (za maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
+'userlogin-remembermypassword' => 'Pśizjawjony wóstaś',
+'userlogin-signwithsecure' => 'Wěsty zwisk wužywaś',
 'securelogin-stick-https' => 'Pó pśizjawjenju z HTTPS zwězany wóstaś',
 'yourdomainname' => 'Twója domejna',
 'password-change-forbidden' => 'Njamóžoš gronidła w toś tom wikiju změniś.',
@@ -582,12 +591,17 @@ Móžoš {{SITENAME}} anomymnje dalej wužywaś abo móžoš <span class='plainl
 'logout' => 'wótzjawiś se',
 'userlogout' => 'wótzjawiś se',
 'notloggedin' => 'Njepśizjawjony(a)',
-'nologin' => "Njamaš wužywarske konto? '''$1'''.",
+'userlogin-noaccount' => 'Njamaš wužywarske konto?',
+'userlogin-joinproject' => 'Konto za {{GRAMMAR:akuzatiw|{{SITENAME}}}} załožyś',
+'nologin' => 'Njamaš wužywarske konto? $1.',
 'nologinlink' => 'Nowe wužywarske konto załožyś',
 'createaccount' => 'Wužywarske konto załožyś',
 'gotaccount' => "Maš južo wužywarske konto? '''$1'''.",
 'gotaccountlink' => 'Pśizjawiś se',
 'userlogin-resetlink' => 'Sy pśizjawjeńske daty zabył?',
+'userlogin-resetpassword-link' => 'Gronidło anulěrowaś',
+'helplogin-url' => 'Help:Pśizjawiś',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za pśizjawjenje]]',
 'createaccountmail' => 'Nachylne pśidatne gronidło wužywaś a jo na slědujucu e-mailowu adresu pósłaś',
 'createaccountreason' => 'Pśicyna:',
 'badretype' => 'Šćitnej gronidle, kótarejž sy zapódał, se njemakajotej.',
@@ -638,7 +652,7 @@ Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne ko
 'cannotchangeemail' => 'Kontowe e-mailowe adrese njedaju se změniś na toś tom wikiju.',
 'emaildisabled' => 'Toś to sedło njamóžo e-maile pósłaś.',
 'accountcreated' => 'Wužywarske konto jo se wutwóriło.',
-'accountcreatedtext' => 'Wužywarske konto $1 jo se wutwóriło.',
+'accountcreatedtext' => 'Wužywarske konto [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskusiju]]) jo se załožyło.',
 'createaccount-title' => 'Wužywarske konto za {{SITENAME}} nawarjone',
 'createaccount-text' => 'Něchten jo konto za twóje e-mailowu adresu na {{GRAMMAR:lokatiw|{{SITENAME}}}} ($4) z mjenim "$2", z pótajmnym słowom "$3", wutwórił. Dejš se pśizjawiś a swóje pótajmne słowo něnt změniś.
 
@@ -1140,7 +1154,6 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Pytańske opcije',
 'searchmenu-exists' => "'''Jo bok z mjenim \"[[\$1]]\" na toś tom wikiju'''",
 'searchmenu-new' => "'''Napóraj bok \"[[:\$1|\$1]]\" na toś tom wikiju!'''",
-'searchhelp-url' => 'Help:Pomoc',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Boki z toś tym prefiksom pśepytaś]]',
 'searchprofile-articles' => 'Wopśimjeśowe boki',
 'searchprofile-project' => 'Pomoc a projektowe boki',
@@ -1635,7 +1648,7 @@ $1',
 'upload-proto-error' => 'Njekorektny protokol',
 'upload-proto-error-text' => 'URL musy zachopiś z <code>http://</code> abo <code>ftp://</code>.',
 'upload-file-error' => 'Interna zmólka',
-'upload-file-error-text' => 'Pśi napóranju temporarneje dataje na serwerje jo nastała interna zmólka. Pšosym staj se ze [[Special:ListUsers/sysop|systemowym administratorom]] do zwiska.',
+'upload-file-error-text' => 'Pśi napóranju temporarneje dataje na serwerje jo nastała interna zmólka. Pšosym staj se ze [[Special:ListUsers/sysop|administratorom]] do zwiska.',
 'upload-misc-error' => 'Njeznata zmólka pśi nagrawanju.',
 'upload-misc-error-text' => 'Pśi nagrawanju jo nastała njeznata zmólka. Kontrolěruj pšosym, lěc URL jo płaśiwy a pśistupny a wopytaj hyšći raz. Jolic problem dalej eksistěrujo, staj se z [[Special:ListUsers/sysop|administratorom]] do zwiska.',
 'upload-too-many-redirects' => 'URL jo pśewjele dalejpósrědnjenja wopśimjeł',
index 5cd073a..9d904a8 100644 (file)
@@ -254,7 +254,6 @@ $1',
 'disclaimers' => 'Pogoliman',
 'disclaimerpage' => 'Project:Pogoliman kosoruan',
 'edithelp' => 'Sokodung mongidit',
-'edithelppage' => 'Help:Mongidit',
 'helppage' => 'Help:Susuang',
 'mainpage' => 'Natad tagayo',
 'mainpage-description' => 'Natad tagayo',
@@ -552,10 +551,8 @@ Naalanannu noh kaatalib toi nokopokianu koh no do kaatalib daamot.',
 
 # Special:PasswordReset
 'passwordreset' => 'Pudoliai kawagu kaatalib',
-'passwordreset-text' => 'Gonopo poom diti do mangaramit tongosurat-i ponorou do nokomoi id akaun.',
 'passwordreset-legend' => 'Pudoliai kawagu kaatalib',
 'passwordreset-disabled' => 'Pomudolian kawagu do kaatalib kitaantob id wiki diti.',
-'passwordreset-pretext' => '{{PLURAL:$1||Posuango iso data id siriba}}',
 'passwordreset-username' => 'Ngarandait:',
 'passwordreset-domain' => 'Sumanganu:',
 'passwordreset-capture' => 'Intaai surat-i dii nowonsoi?',
@@ -951,7 +948,6 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'searchmenu-legend' => 'Pilion ihum-ihumon',
 'searchmenu-exists' => "'''Haro no bolikon pinungaranan do \"[[:\$1]]\" hiti id wiki.'''",
 'searchmenu-new' => "'''Pomonsoi do bolikon \"[[:\$1]]\"hiti id wiki!'''",
-'searchhelp-url' => 'Help:Susuang',
 'searchprofile-articles' => 'Suang bobolikon',
 'searchprofile-project' => 'Tatabang om Tongobolikon purujik',
 'searchprofile-images' => 'Multimodia',
index 233963f..5c08f46 100644 (file)
@@ -19,21 +19,32 @@ $rtl = true;
 
 $namespaceNames = array(
        NS_MEDIA            => 'މީޑިއާ',
-       NS_SPECIAL          => 'Þ\80Þ§Þ\87Þ°Þ\9eަ',
+       NS_SPECIAL          => 'Þ\9aÞ§Þ\87Þ°Þ\90ަ',
        NS_MAIN             => '',
        NS_TALK             => 'ޚިޔާލު',
        NS_USER             => 'މެމްބަރު',
        NS_USER_TALK        => 'މެމްބަރުގެ_ވާހަކަ',
-       NS_FILE             => 'ފައިލް',
-       NS_FILE_TALK        => 'ފައިލް_ޚިޔާލު',
+       NS_PROJECT_TALK     => '$1ގެ_ވާހަކަ',
+       NS_FILE             => 'ފައިލު',
+       NS_FILE_TALK        => 'ފައިލުގެ_ޚިޔާލު',
        NS_MEDIAWIKI        => 'މީޑިއާވިކީ',
-       NS_MEDIAWIKI_TALK   => 'Þ\89Þ©Þ\91Þ¨Þ\94Þ§Þ\88Þ¨Þ\86Þ¨_ޚިޔާލު',
+       NS_MEDIAWIKI_TALK   => 'Þ\89Þ¨Þ\91Þ¨Þ\87Þ§Þ\88Þ¨Þ\86Þ©_ޚިޔާލު',
        NS_TEMPLATE         => 'ފަންވަތް',
-       NS_TEMPLATE_TALK    => 'Þ\8aÞ¦Þ\82Þ°Þ\88Þ¦Þ\8cÞ°_ޚިޔާލު',
+       NS_TEMPLATE_TALK    => 'Þ\8aÞ¦Þ\82Þ°Þ\88Þ¦Þ\8cÞªÞ\8eÞ¬_ޚިޔާލު',
        NS_HELP             => 'އެހީ',
-       NS_HELP_TALK        => 'އެހީ_ޚިޔާލު',
+       NS_HELP_TALK        => 'އެހީގެ_ޚިޔާލު',
        NS_CATEGORY         => 'ޤިސްމު',
-       NS_CATEGORY_TALK    => 'ޤިސްމު_ޚިޔާލު',
+       NS_CATEGORY_TALK    => 'ޤިސްމުގެ_ޚިޔާލު',
+);
+
+$namespaceAliases = array(
+       'ހާއްޞަ'          => NS_SPECIAL,
+       'ފައިލް'           => NS_FILE,
+       'ފައިލް_ޚިޔާލު'    => NS_FILE_TALK,
+       'މީޑިޔާވިކި_ޚިޔާލު' => NS_MEDIAWIKI_TALK,
+       'ފަންވަތް_ޚިޔާލު'  => NS_TEMPLATE_TALK,
+       'އެހީ_ޚިޔާލު'      => NS_HELP_TALK,
+       'ޤިސްމު_ޚިޔާލު'   => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
index a4f2da1..186a7cc 100644 (file)
@@ -31,6 +31,7 @@
  * @author Lou
  * @author MF-Warburg
  * @author Malafaya
+ * @author Nikosguard
  * @author Omnipaedista
  * @author Protnet
  * @author Reedy
@@ -357,7 +358,7 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Υπογράμμιση συνδέσμων:',
 'tog-justify' => 'Στοίχιση παραγράφων',
-'tog-hideminor' => 'Î\91Ï\80Ï\8cκÏ\81Ï\85Ï\88η Î±Î»Î»Î±Î³Ï\8eν Î¼Î¹ÎºÏ\81ήÏ\82 ÎºÎ»Î¯Î¼Î±ÎºÎ±ς',
+'tog-hideminor' => 'Î\91Ï\80Ï\8cκÏ\81Ï\85Ï\88η Î¼Î¹ÎºÏ\81οεÏ\80εξεÏ\81γαÏ\83ιÏ\8eν Ï\83Ï\84ιÏ\82 Ï\80Ï\81Ï\8cÏ\83Ï\86αÏ\84εÏ\82 Î±Î»Î»Î±Î³Î­ς',
 'tog-hidepatrolled' => 'Απόκρυψη ελεγμένων επεξεργασιών στις πρόσφατες αλλαγές',
 'tog-newpageshidepatrolled' => 'Απόκρυψη ελεγμένων σελίδων από τον κατάλογο νέων σελίδων',
 'tog-extendwatchlist' => 'Επέκταση της λίστας παρακολούθησης ώστε να δείχνει όλες τις αλλαγές, όχι μόνο τις πιο πρόσφατες',
@@ -374,7 +375,7 @@ $messages = array(
 'tog-watchmoves' => 'Προσθήκη σελίδων που μετακινώ στη λίστα παρακολούθησής μου',
 'tog-watchdeletion' => 'Προσθήκη σελίδων και αρχείων που διαγράφω στη λίστα παρακολούθησής μου',
 'tog-minordefault' => 'Σήμανση εκ προεπιλογής όλων των αλλαγών ως μικρής κλίμακας',
-'tog-previewontop' => 'Εμφάνιση προεπισκόπησης πριν από το πλαίσιο επεξεργασίας και όχι μετά',
+'tog-previewontop' => 'Εμφάνιση προεπισκόπησης πριν από το πλαίσιο επεξεργασίας',
 'tog-previewonfirst' => 'Εμφάνιση προεπισκόπησης κατά την πρώτη επεξεργασία',
 'tog-nocache' => 'Απενεργοποίηση κρυφής μνήμης',
 'tog-enotifwatchlistpages' => 'Να μου αποστέλλεται μήνυμα ηλεκτρονικού ταχυδρομείου όταν αλλάζει μια σελίδα ή ένα αρχείο που βρίσκεται στη λίστα παρακολούθησής μου',
@@ -384,7 +385,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Εμφάνιση του αριθμού των συνδεδεμένων χρηστών',
 'tog-oldsig' => 'Υπάρχουσα υπογραφή:',
 'tog-fancysig' => 'Μεταχείριση υπογραφής ως κώδικα wiki (χωρίς αυτόματο σύνδεσμο)',
-'tog-showjumplinks' => 'Î\95νεÏ\81γοÏ\80οίηÏ\83ε Ï\84οÏ\85Ï\82 Ï\83Ï\85νδέÏ\83μοÏ\85Ï\82 Ï\80Ï\81οÏ\83βαÏ\83ιμÏ\8cÏ\84ηÏ\84αÏ\82 Ï\84οÏ\85 Ï\84Ï\8dÏ\80οÏ\85 "μεÏ\84άβαÏ\83η Ï\83ε"',
+'tog-showjumplinks' => 'Î\95νεÏ\81γοÏ\80οίηÏ\83η Ï\84Ï\89ν Ï\83Ï\85νδέÏ\83μÏ\89ν Ï\80Ï\81οÏ\83βαÏ\83ιμÏ\8cÏ\84ηÏ\84αÏ\82 Ï\84οÏ\85 Ï\84Ï\8dÏ\80οÏ\85 Â«Î¼ÎµÏ\84άβαÏ\83η Ï\83ε»',
 'tog-uselivepreview' => 'Χρήση ζωντανής προεπισκόπησης (απαιτεί JavaScript) (πειραματικό)',
 'tog-forceeditsummary' => 'Να ειδοποιούμαι κατά την εισαγωγή κενής σύνοψης επεξεργασίας',
 'tog-watchlisthideown' => 'Απόκρυψη των επεξεργασιών μου από τη λίστα παρακολούθησης',
@@ -402,7 +403,7 @@ $messages = array(
 
 'underline-always' => 'Πάντα',
 'underline-never' => 'Ποτέ',
-'underline-default' => 'ΠÏ\81οεÏ\80ιλεγμένο Ï\80Ï\81Ï\8cγÏ\81αμμα Ï\80εÏ\81ιήγηÏ\83ηÏ\82',
+'underline-default' => 'ΠÏ\81οεÏ\80ιλογή Î±Ï\80Ï\8c Ï\84ο skin Î® Î±Ï\80Ï\8c Ï\84ον Ï\80εÏ\81ιηγηÏ\84ή',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Τύπος γραμματοσειράς της περιοχής επεξεργασίας:',
@@ -608,7 +609,6 @@ $1',
 'disclaimers' => 'Αποποίηση ευθυνών',
 'disclaimerpage' => 'Project:Γενική αποποίηση',
 'edithelp' => 'Βοήθεια σχετικά με την επεξεργασία',
-'edithelppage' => 'Help:Επεξεργασία',
 'helppage' => 'Help:Περιεχόμενα',
 'mainpage' => 'Αρχική σελίδα',
 'mainpage-description' => 'Αρχική σελίδα',
@@ -917,6 +917,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Κωδικός επαναφοράς',
+'passwordreset-text-one' => 'Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.',
+'passwordreset-text-many' => '{{PLURAL:$1|Εισαγάγετε ένα από τα κομμάτια των δεδομένων για να επαναφέρετε τον κωδικό πρόσβασής σας.}}',
 'passwordreset-legend' => 'Επαναφορά κωδικού πρόσβασης',
 'passwordreset-disabled' => 'Η επαναφορά κωδικού πρόσβασης έχει απενεργοποιηθεί σε αυτό το wiki',
 'passwordreset-emaildisabled' => "Τα χαρακτηριστικά ηλεκτρονικού ταχυδρομείου έχουν απενεργοποιηθεί σ' αυτό το wiki.",
@@ -1146,6 +1148,7 @@ $2
 Φαίνεται πως έχει διαγραφεί.',
 'edit-conflict' => 'Σύγκρουση επεξεργασιών.',
 'edit-no-change' => 'Η επεξεργασία σας αγνοήθηκε, επειδή δεν έγινε καμία αλλαγή στο κείμενο.',
+'postedit-confirmation' => 'H επεξεργασία σας αποθηκεύτηκε.',
 'edit-already-exists' => 'Δεν ήταν εφικτό να δημιουργηθεί η νέα σελίδα.
 Υπάρχει ήδη.',
 'defaultmessagetext' => 'Προεπιλεγμένο κείμενο μηνύματος',
@@ -1391,7 +1394,6 @@ $1",
 'searchmenu-legend' => 'Επιλογές αναζήτησης',
 'searchmenu-exists' => "'''Υπάρχει μια σελίδα που ονομάζεται \"[[:\$1]]\" σε αυτό το wiki'''",
 'searchmenu-new' => "'''Δημιουργήστε τη σελίδα «[[:$1]]» σε αυτό το wiki!'''",
-'searchhelp-url' => 'Help:Περιεχόμενα',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Πλοηγηθείτε σε σελίδες με αυτό το πρόθεμα]]',
 'searchprofile-articles' => 'Σελίδες περιεχομένων',
 'searchprofile-project' => 'Βοήθεια και σελίδες εγχειρημάτων',
@@ -1574,6 +1576,7 @@ $1",
 'userrights-notallowed' => 'Ο λογαριασμός σας δεν έχει άδεια για να προσθέσει ή να αφαιρέσει  δικαιώματα χρηστών.',
 'userrights-changeable-col' => 'Ομάδες που μπορείτε να αλλάξετε',
 'userrights-unchangeable-col' => 'Ομάδες που δεν μπορείτε να αλλάξετε',
+'userrights-conflict' => 'Σύγκρουση δικαιωμάτων χρήστη! Παρακαλώ κάντε πάλι εφαρμογή των αλλαγών σας.',
 
 # Groups
 'group' => 'Ομάδα:',
@@ -2632,7 +2635,7 @@ $1',
 'mycontris' => 'Συνεισφορές',
 'contribsub2' => 'Για τον/την $1 ($2)',
 'nocontribs' => 'Δεν βρέθηκαν αλλαγές με αυτά τα κριτήρια.',
-'uctop' => '(τελευταία)',
+'uctop' => '(κορυφή)',
 'month' => 'Από τον μήνα (και νωρίτερα):',
 'year' => 'Από τη χρονιά (και νωρίτερα):',
 
@@ -2954,6 +2957,8 @@ $1',
 'thumbnail-more' => 'Μεγέθυνση',
 'filemissing' => 'Αγνοούμενο αρχείο',
 'thumbnail_error' => 'Σφάλμα στη δημιουργία μικρογραφίας: $1',
+'thumbnail_error_remote' => 'Μήνυμα σφάλματος από  $1:
+$2',
 'djvu_page_error' => 'Σελίδα DjVu εκτός ορίων',
 'djvu_no_xml' => 'Αδυναμία προσκόμισης XML για το αρχείο DjVu',
 'thumbnail-temp-create' => 'Αδύνατη η δημιουργία προσωρινού αρχείου μικρογραφίας',
@@ -3904,6 +3909,7 @@ $5
 # Special:Redirect
 'redirect-legend' => 'Ανακατεύθυνση σε ένα αρχείο ή μια σελίδα',
 'redirect-submit' => 'Μετάβαση',
+'redirect-lookup' => 'Αναζήτηση:',
 'redirect-value' => 'Τιμή:',
 'redirect-user' => 'Αναγνωριστικό χρήση',
 'redirect-revision' => 'Αναθεώρηση σελίδας',
@@ -4000,6 +4006,7 @@ $5
 'htmlform-selectorother-other' => 'Άλλο',
 'htmlform-no' => 'Όχι',
 'htmlform-yes' => 'Ναι',
+'htmlform-chosen-placeholder' => 'Κάντε μια επιλογή',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 με υποστήριξη αναζήτησης πλήρους κειμένου',
@@ -4009,14 +4016,14 @@ $5
 'logentry-delete-delete' => '{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3',
 'logentry-delete-restore' => 'Ο/Η $1 αποκατέστησε τη σελίδα $3',
 'logentry-delete-event' => ' $1 {{GENDER:$1|άλλαξε}} την ορατότητα σε {{PLURAL:$5|ένα γεγονός καταγραφής|$5 γεγονότα καταγραφής}} στο $3: $4',
-'logentry-delete-revision' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ορατότητα {{PLURAL:$5|μιας έκδοσης|$5 εκδόσεων}} στη σελίδα $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|άλλαξε}} άλλαξε την ορατότητα {{PLURAL:$5|μια έκδοση|$5 εκδόσεις}} στη σελίδα $3: $4',
 'logentry-delete-event-legacy' => '{{GENDER:$2|Ο|Η}} $1 άλλαξε την ορατότητα των καταγραφόμενων συμβάντων στη σελίδα $3',
-'logentry-delete-revision-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την  ορατότητα των αναθεωρήσεων στη σελίδα $3',
-'logentry-suppress-delete' => '{{GENDER:$1|Ο|Η}} $1 διέγραψε τη σελίδα $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|άλλαξε}} την  ορατότητα των αναθεωρήσεων στη σελίδα $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|διέγραψε}} τη σελίδα $3',
 'logentry-suppress-event' => '{{Gender:$2|Ο|Η}} $1 άλλαξε μυστικά την ορατότητα {{PLURAL:$5|ενός καταγραφόμενου συμβάντος|$5 καταγραφόμενων συμβάντων}} στη σελίδα $3: $4',
 'logentry-suppress-revision' => '{{Gender:$2|Ο|Η}} $1 άλλαξε μυστικά την ορατότητα {{PLURAL:$5|μίας αναθεώρησης|$5 αναθεωρήσεων}} στη σελίδα $3: $4',
 'logentry-suppress-event-legacy' => '{{Gender:$2|Ο|Η}} $1 άλλαξε μυστικά την ορατότητα των καταγραφόμενων συμβάντων στη σελίδα $3',
-'logentry-suppress-revision-legacy' => '$1 κρυφά άλλαξαν την  ορατότητα των αναθεωρήσεων στη σελίδα $3',
+'logentry-suppress-revision-legacy' => '{{Gender:$2|Ο|Η}} $1 άλλαξε μυστικά την ορατότητα των αναθεωρήσεων στη σελίδα $3',
 'revdelete-content-hid' => 'το περιεχόμενο αποκρύφθηκε',
 'revdelete-summary-hid' => 'Η σύνοψη επεξεργασίας αποκρύφθηκε',
 'revdelete-uname-hid' => 'Το όνομα χρήστη αποκρύφθηκε',
@@ -4025,7 +4032,7 @@ $5
 'revdelete-uname-unhid' => 'το όνομα χρήστη έπαψε να είναι κρυφό',
 'revdelete-restricted' => 'εφάρμοσε περιορισμούς στους sysops',
 'revdelete-unrestricted' => 'αφαίρεσε περιορισμούς στους sysops',
-'logentry-move-move' => '{{GENDER:$1|Ο|Η}} $1 μετακίνησε τη σελίδα $3 στη $4',
+'logentry-move-move' => '{{GENDER:$2|Ο|Η}} $1 μετακίνησε τη σελίδα $3 στη $4',
 'logentry-move-move-noredirect' => '{{GENDER:$1|Ο|Η}} $1 μετακίνησε τη σελίδα $3 στη $4 χωρίς να αφήσει ανακατεύθυνση',
 'logentry-move-move_redir' => '{{GENDER:$1|Ο|Η}} $1 μετακίνησε τη σελίδα $3 στη $4 πάνω από την ανανακατεύθυνση',
 'logentry-move-move_redir-noredirect' => '{{GENDER:$2|Ο|Η}} $1 μετακίνησε την σελίδα $3 στην $4 πάνω από μια ανακατεύθυνση χωρίς να αφήσει ανακατεύθυνση',
@@ -4034,8 +4041,8 @@ $5
 'logentry-newusers-newusers' => 'Ο λογαριασμός χρήστη $1 {{GENDER:$2|δημιουργήθηκε}}',
 'logentry-newusers-create' => 'Ο λογαριασμός χρήστη $1 {{GENDER:$2|δημιουργήθηκε}}',
 'logentry-newusers-create2' => 'Ο λογαριασμός χρήστη $3 δημιουργήθηκε από {{GENDER:$2|τον|την}} $1',
-'logentry-newusers-byemail' => 'Ο λογαριασμός χρήστη $3 δημιουργήθηκε από τον $1  και ο κωδικός πρόσβασης εστάλη μέσω ηλεκτρονικού ταχυδρομείου',
-'logentry-newusers-autocreate' => 'Ο λογαριασμός $1 δημιουργήθηκε αυτόματα',
+'logentry-newusers-byemail' => 'Ο λογαριασμός χρήστη $3 δημιουργήθηκε από {{GENDER:$2|τον|την}} $1 και ο κωδικός πρόσβασης εστάλη μέσω ηλεκτρονικού ταχυδρομείου',
+'logentry-newusers-autocreate' => 'Ο λογαριασμός χρήστη $1 δημιουργήθηκε αυτόματα',
 'logentry-rights-rights' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ιδιότητα μέλους ομάδας για {{GENDER:$3|τον|την}} $3 από $4 σε $5',
 'logentry-rights-rights-legacy' => '{{GENDER:$1|Ο|Η}} $1 άλλαξε την ιδιότητα μέλους ομάδας {{GENDER:$1|του|της}} $3',
 'logentry-rights-autopromote' => '$1 {{GENDER:$2|προωθήθηκε}} αυτόματα από το $4 στο $5',
index ee4a533..b94b2e7 100644 (file)
@@ -274,6 +274,7 @@ $magicWords = array(
        'img_center'              => array( 1,    'center', 'centre' ),
        'img_framed'              => array( 1,    'framed', 'enframed', 'frame' ),
        'img_frameless'           => array( 1,    'frameless' ),
+       'img_lang'                => array( 1,    'lang=$1' ),
        'img_page'                => array( 1,    'page=$1', 'page $1' ),
        'img_upright'             => array( 1,    'upright', 'upright=$1', 'upright $1' ),
        'img_border'              => array( 1,    'border' ),
@@ -907,7 +908,7 @@ $1',
 'disclaimers'          => 'Disclaimers',
 'disclaimerpage'       => 'Project:General disclaimer',
 'edithelp'             => 'Editing help',
-'edithelppage'         => 'Help:Editing',
+'edithelppage'         => '//www.mediawiki.org/wiki/Special:MyLanguage/Help:Editing_pages', # do not translate or duplicate this message to other languages
 'helppage'             => 'Help:Contents',
 'mainpage'             => 'Main Page',
 'mainpage-description' => 'Main page',
@@ -1069,6 +1070,8 @@ $2',
 'namespaceprotected'            => "You do not have permission to edit pages in the '''$1''' namespace.",
 'customcssprotected'            => "You do not have permission to edit this CSS page because it contains another user's personal settings.",
 'customjsprotected'             => "You do not have permission to edit this JavaScript page because it contains another user's personal settings.",
+'mycustomcssprotected'          => 'You do not have permission to edit this CSS page.',
+'mycustomjsprotected'           => 'You do not have permission to edit this JavaScript page.',
 'ns-specialprotected'           => 'Special pages cannot be edited.',
 'titleprotected'                => 'This title has been protected from creation by [[User:$1|$1]].
 The reason given is "\'\'$2\'\'".',
@@ -1226,7 +1229,7 @@ Please enter a well-formatted address or empty that field.',
 'cannotchangeemail'               => 'Account email addresses cannot be changed on this wiki.',
 'emaildisabled'                   => 'This site cannot send emails.',
 'accountcreated'                  => 'Account created',
-'accountcreatedtext'              => 'The user account for $1 has been created.',
+'accountcreatedtext'              => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
 'createaccount-title'             => 'Account creation for {{SITENAME}}',
 'createaccount-text'              => 'Someone created an account for your email address on {{SITENAME}} ($4) named "$2", with password "$3".
 You should log in and change your password now.
@@ -1804,9 +1807,7 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.'''",
 'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!'''",
 'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
-'searchhelp-url'                   => 'Help:Contents',
 'searchmenu-prefix'                => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]',
-'searchmenu-help'                  => '[[{{MediaWiki:Searchhelp-url}}|{{int:help}}]]?', # do not translate or duplicate this message to other languages
 'searchprofile-articles'           => 'Content pages',
 'searchprofile-project'            => 'Help and Project pages',
 'searchprofile-images'             => 'Multimedia',
@@ -2021,6 +2022,7 @@ Your email address is not revealed when other users contact you.',
 'userrights-unchangeable-col'    => 'Groups you cannot change',
 'userrights-irreversible-marker' => '$1*', # only translate this message to other languages if you have to change it
 'userrights-conflict'            => 'User rights conflict! Please apply your changes again.',
+'userrights-removed-self'        => 'You successfully removed your own rights. As such, you are no longer able to access this page.',
 
 # Groups
 'group'               => 'Group:',
@@ -2091,6 +2093,8 @@ Your email address is not revealed when other users contact you.',
 'right-editusercssjs'         => "Edit other users' CSS and JavaScript files",
 'right-editusercss'           => "Edit other users' CSS files",
 'right-edituserjs'            => "Edit other users' JavaScript files",
+'right-editmyusercss'         => 'Edit your own user CSS files',
+'right-editmyuserjs'          => 'Edit your own user JavaScript files',
 'right-rollback'              => 'Quickly rollback the edits of the last user who edited a particular page',
 'right-markbotedits'          => 'Mark rolled-back edits as bot edits',
 'right-noratelimit'           => 'Not be affected by rate limits',
@@ -3186,7 +3190,7 @@ $1',
 'mycontris'             => 'Contributions',
 'contribsub2'           => 'For $1 ($2)',
 'nocontribs'            => 'No changes were found matching these criteria.',
-'uctop'                 => '(top)',
+'uctop'                 => '(current)',
 'month'                 => 'From month (and earlier):',
 'year'                  => 'From year (and earlier):',
 
index eb6a385..5879e3c 100644 (file)
@@ -16,6 +16,7 @@
  * @author Blahma
  * @author Castelobranco
  * @author Eliovir
+ * @author Geitost
  * @author Iketsi
  * @author Jens Liebenau
  * @author Kaganer
@@ -564,7 +565,6 @@ $1',
 'disclaimers' => 'Malgarantio',
 'disclaimerpage' => 'Project:Malgarantia paĝo',
 'edithelp' => 'Helpo pri redaktado',
-'edithelppage' => 'Help:Kiel redakti paĝon',
 'helppage' => 'Help:Enhavo',
 'mainpage' => 'Ĉefpaĝo',
 'mainpage-description' => 'Ĉefpaĝo',
@@ -761,7 +761,7 @@ Ne forgesu ŝanĝi viajn [[Special:Preferences|{{SITENAME}}-preferojn]]',
 'userlogout' => 'Elsaluti',
 'notloggedin' => 'Ne ensalutinta',
 'userlogin-noaccount' => 'Ĉu vi ne havas konton?',
-'nologin' => "Ĉu vi ne havas konton? '''$1'''.",
+'nologin' => 'Ĉu vi ne havas konton? $1.',
 'nologinlink' => 'Krei konton',
 'createaccount' => 'Krei novan konton',
 'gotaccount' => "Ĉu vi jam havas konton? '''$1'''.",
@@ -1356,7 +1356,6 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'searchmenu-legend' => 'Serĉaj opcioj',
 'searchmenu-exists' => "'''Estas paĝo nomita \"[[:\$1]]\" en ĉi tiu vikio'''",
 'searchmenu-new' => "'''Krei la paĝon \"[[:\$1]]\" en ĉi tiu vikio!'''",
-'searchhelp-url' => 'Help:Enhavo',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Traserĉi paĝojn kun ĉi tiu prefikso]]',
 'searchprofile-articles' => 'Enhavaj paĝoj',
 'searchprofile-project' => 'Paĝoj pri Helpo kaj Projektoj',
@@ -1844,11 +1843,11 @@ $1',
 'upload-proto-error' => 'Malvalida protokolo',
 'upload-proto-error-text' => 'Fora alŝuto devas URL-on komence de <code>http://</code> aŭ <code>ftp://</code>.',
 'upload-file-error' => 'Interna eraro',
-'upload-file-error-text' => 'Interna eraro okazis provante krei labordosieron ĉe la servilo. Bonvolu kontakti [[Special:ListUsers/sysop|sistem-administranton]].',
+'upload-file-error-text' => 'Interna eraro okazis provante krei labordosieron ĉe la servilo. Bonvolu kontakti [[Special:ListUsers/sysop|administranton]].',
 'upload-misc-error' => 'Nekonata eraro pri alŝutado.',
 'upload-misc-error-text' => 'Nekonata eraro okazis dum la alŝuto.
 Bonvolu kontroli ke la URL-o estas valida kaj atingebla tiam reprovu.
-Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|sisteman administranton]].',
+Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|administranton]].',
 'upload-too-many-redirects' => 'La URL-o enhavis tro multajn alidirektilojn',
 'upload-unknown-size' => 'Nekonata grandeco',
 'upload-http-error' => 'HTTP-eraro okazis: $1',
@@ -2095,6 +2094,8 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
 Ili devus anstataŭe alligi la ĝustan temon.<br />
 Paĝo estas traktata kiel apartigilo se ĝi uzas ŝablonon kiu estas ligita de [[MediaWiki:Disambiguationspage]]",
 
+'pageswithprop' => 'Paĝoj kun paĝa atributo',
+'pageswithprop-legend' => 'Paĝoj kun paĝa atributo',
 'pageswithprop-prop' => 'Nomo de la atributo:',
 'pageswithprop-submit' => 'Ek',
 
@@ -2613,7 +2614,7 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'Ĉi tiu IP-adreso estas nune forbarita.
 Jen la lasta ero de la forbara protokolo:',
 'sp-contributions-search' => 'Serĉado de kontribuoj',
-'sp-contributions-username' => 'IP-adreso aŭ salutnomo:',
+'sp-contributions-username' => 'IP-adreso aŭ uzantonomo:',
 'sp-contributions-toponly' => 'Montru nur ŝanĝojn kiuj estas la plej lastaj revizioj',
 'sp-contributions-submit' => 'Serĉi',
 
index 9404ffb..58f8956 100644 (file)
@@ -42,6 +42,7 @@
  * @author Fitoschido
  * @author Fluence
  * @author Fortega
+ * @author Geitost
  * @author Gustronico
  * @author Gwickwire
  * @author Hahc21
@@ -65,6 +66,7 @@
  * @author Maor X
  * @author MarcoAurelio
  * @author McDutchie
+ * @author Miguel2706
  * @author Muro de Aguas
  * @author Omnipaedista
  * @author Orgullomoore
@@ -469,7 +471,7 @@ $messages = array(
 'feb' => 'feb',
 'mar' => 'mar',
 'apr' => 'abr',
-'may' => 'may',
+'may' => 'mayo',
 'jun' => 'jun',
 'jul' => 'jul',
 'aug' => 'ago',
@@ -570,6 +572,7 @@ $messages = array(
 'create-this-page' => 'Crear esta página',
 'delete' => 'Borrar',
 'deletethispage' => 'Borrar esta página',
+'undeletethispage' => 'Restaurar esta página',
 'undelete_short' => 'Restaurar {{PLURAL:$1|una edición|$1 ediciones}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|una edición borrada|$1 ediciones borradas}}',
 'protect' => 'Proteger',
@@ -623,7 +626,6 @@ $1',
 'disclaimers' => 'Aviso legal',
 'disclaimerpage' => 'Project:Limitación general de responsabilidad',
 'edithelp' => 'Ayuda de edición',
-'edithelppage' => 'Help:Cómo se edita una página',
 'helppage' => 'Help:Contenidos',
 'mainpage' => 'Página principal',
 'mainpage-description' => 'Página principal',
@@ -770,6 +772,8 @@ $2',
 'namespaceprotected' => "No tienes permiso para editar las páginas del espacio de nombres '''$1'''.",
 'customcssprotected' => 'No tienes permiso para editar esta página CSS, porque contiene configuraciones personales de otro usuario.',
 'customjsprotected' => 'No tienes permiso para editar esta página JavaScript, porque contiene configuraciones personales de otro usuario.',
+'mycustomcssprotected' => 'No tienes permiso para editar esta página CSS.',
+'mycustomjsprotected' => 'No tienes permiso para editar esta página JavaScript.',
 'ns-specialprotected' => 'Las páginas especiales no se pueden editar',
 'titleprotected' => 'Esta página ha sido protegida contra creación por [[User:$1|$1]].
 El motivo dado fue: "\'\'$2\'\'".',
@@ -903,7 +907,7 @@ Por favor, escribe una dirección en el formato adecuado o deja el campo en blan
 'cannotchangeemail' => 'Las direcciones de la correo electrónico de las cuentas de usuario no puedes cambiarse en esta wiki.',
 'emaildisabled' => 'Este sitio no puede enviar mensajes de correo electrónico.',
 'accountcreated' => 'Cuenta creada',
-'accountcreatedtext' => 'La cuenta de usuario para $1 ha sido creada.',
+'accountcreatedtext' => 'La cuenta de usuario [[{{ns:User}}: $1 | $1 ]] ([[{{ns:User talk}}: $1 |talk]]) ha sido creada.',
 'createaccount-title' => 'Creación de cuenta para {{SITENAME}}',
 'createaccount-text' => 'Alguien creó en {{SITENAME}} ($4) una cuenta asociada a este correo electrónico con el nombre «$2».
 La contraseña asignada automáticamente es «$3». Por favor entra ahora y cambia tu contraseña.
@@ -943,6 +947,8 @@ Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
 
 # Special:PasswordReset
 'passwordreset' => 'Restablecimiento de contraseña',
+'passwordreset-text-one' => 'Completa este formulario para restablecer tu contraseña.',
+'passwordreset-text-many' => '{{PLURAL:$1|Introducir uno de los datos para restablecer la contraseña.}}',
 'passwordreset-legend' => 'Restablecer contraseña',
 'passwordreset-disabled' => 'Se ha desactivado el restablecimiento de contraseñas en este wiki.',
 'passwordreset-emaildisabled' => 'Las funciones de correo electrónico han sido desactivadas en esta wiki.',
@@ -1434,7 +1440,6 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'searchmenu-legend' => 'Opciones de búsqueda',
 'searchmenu-exists' => "'''Hay una página llamada \"[[:\$1]]\" en esta wiki.'''",
 'searchmenu-new' => "'''¡Crea la página «[[:$1]]» en este wiki!'''",
-'searchhelp-url' => 'Help:Ayuda',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Otras páginas con este prefijo]]',
 'searchprofile-articles' => 'Páginas de contenido',
 'searchprofile-project' => 'Páginas de ayuda y de proyecto',
@@ -1690,6 +1695,8 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'right-editusercssjs' => 'Editar las páginas de CSS y JS de otros usuarios',
 'right-editusercss' => 'Editar las páginas de CSS de otros usuarios',
 'right-edituserjs' => 'Editar las páginas de JS de otros usuarios',
+'right-editmyusercss' => 'Editar tus archivos de usuario CSS',
+'right-editmyuserjs' => 'Editar tus propios archivos JavaScript de usuario',
 'right-rollback' => 'Revertir rápidamente las ediciones del último usuario que modificó una página en particular',
 'right-markbotedits' => 'Marcar ediciones deshechas como ediciones de un bot',
 'right-noratelimit' => 'No afectado por límites de frecuencia',
@@ -1935,9 +1942,9 @@ $1',
 '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-text' => 'Ha ocurrido un error interno mientras se intentaba crear un fichero temporal en el servidor. Por favor, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
+'upload-file-error-text' => 'Ha ocurrido un error interno mientras se intentaba crear un fichero temporal en el servidor. Por favor, 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. Por favor verifica que la URL es válida y accesible e inténtalo de nuevo. Si el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador del sistema]].',
+'upload-misc-error-text' => 'Ha ocurrido un error durante la subida. Por favor verifica que la URL es válida y accesible e inténtalo de nuevo. Si el problema persiste, contacta con un [[Special:ListUsers/sysop|administrador]].',
 'upload-too-many-redirects' => 'La URL contenía demasiadas redirecciones',
 'upload-unknown-size' => 'Tamaño desconocido',
 'upload-http-error' => 'Ha ocurrido un error HTTP: $1',
@@ -3007,6 +3014,8 @@ Por favor visita [//www.mediawiki.org/wiki/Localisation Localización MediaWiki]
 'thumbnail-more' => 'Aumentar',
 'filemissing' => 'Falta archivo',
 'thumbnail_error' => 'Error al crear miniatura: $1',
+'thumbnail_error_remote' => 'Mensaje de error de  $1 :
+$2',
 'djvu_page_error' => 'Página DjVu fuera de rango',
 'djvu_no_xml' => 'Imposible obtener XML para el archivo DjVu',
 'thumbnail-temp-create' => 'No se ha podido crear el archivo temporal de la miniatura',
@@ -4090,14 +4099,14 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-delete-delete' => '$1 {{GENDER:$2|borró}} la página «$3»',
 'logentry-delete-restore' => '$1 restauró la página «$3»',
 'logentry-delete-event' => '$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|un evento|$5 eventos}} del registro en $3: $4',
-'logentry-delete-revision' => '$1 modificó la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
-'logentry-delete-event-legacy' => '$1 modificó la visibilidad de los eventos del registro en $3',
-'logentry-delete-revision-legacy' => '$1 modificó la visibilidad de varias ediciones en la página $3',
+'logentry-delete-revision' => '$1 {{GENDER:$2|modificó}} la visibilidad de {{PLURAL:$5|una revisión |$5 revisiones}} en la página  $3: $4',
+'logentry-delete-event-legacy' => '$1 ha {{GENDER:$2|cambiado}} la visibilidad de registro de eventos en $3',
+'logentry-delete-revision-legacy' => '$1 ha {{GENDER:$2|cambiado}} la visibilidad de las revisiones en la página $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|borró}}, con restricciones para administradores aplicadas, la página $3',
-'logentry-suppress-event' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|un evento del registro|$5 eventos del registro}} en $3: $4',
+'logentry-suppress-event' => '$1 {{GENDER:$2|modificó}} secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
 'logentry-suppress-revision' => '$1 modificó secretamente la visibilidad de {{PLURAL:$5|una edición|$5 ediciones}} en la página $3: $4',
-'logentry-suppress-event-legacy' => '$1 modificó secretamente la visibilidad de los eventos del registro en $3',
-'logentry-suppress-revision-legacy' => '$1 modificó secretamente la visibilidad de varias ediciones en la página $3',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|modificó}} secretamente la visibilidad de los eventos del registro en $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|modificó}} secretamente la visibilidad de varias ediciones en la página $3',
 'revdelete-content-hid' => 'contenido ocultado',
 'revdelete-summary-hid' => 'resumen de edición oculto',
 'revdelete-uname-hid' => 'nombre de usuario ocultado',
@@ -4110,8 +4119,8 @@ Este sitio está experimentando dificultades técnicas.',
 'logentry-move-move-noredirect' => '$1 movió la página $3 a $4 sin dejar una redirección',
 'logentry-move-move_redir' => '$1 movió la página $3 a $4 sobre una redirección',
 'logentry-move-move_redir-noredirect' => '$1 movió la página $3 a $4 sobre una redirección y sin dejar una redirección',
-'logentry-patrol-patrol' => '$1 marcó como patrullada la edición $4 de la página $3',
-'logentry-patrol-patrol-auto' => '$1 marcó automáticamente la edición $4 de la página $3 como patrullada',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|marcó}} como patrullada la edición $4 de la página $3',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|marcó}} automáticamente la edición $4 de la página $3 como patrullada',
 'logentry-newusers-newusers' => 'La cuenta de usuario $1 ha sido {{GENDER:$2|creada}}',
 'logentry-newusers-create' => 'La cuenta de usuario $1 ha sido creada',
 'logentry-newusers-create2' => 'La cuenta de usuario $3 ha sido creada por $1',
index 9e98e47..97001cb 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Avjoska
  * @author Cylly1512
+ * @author Geitost
  * @author Hendrik
  * @author Hendrix
  * @author Jaan513
@@ -398,6 +399,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'dets',
+'january-date' => '$1. jaanuar',
+'february-date' => '$1. veebruar',
+'march-date' => '$1. märts',
+'april-date' => '$1. aprill',
+'may-date' => '$1. mai',
+'june-date' => '$1. juuni',
+'july-date' => '$1. juuli',
+'august-date' => '$1. august',
+'september-date' => '$1. september',
+'october-date' => '$1. oktoober',
+'november-date' => '$1. november',
+'december-date' => '$1. detsember',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategooria|Kategooriad}}',
@@ -478,6 +491,7 @@ $messages = array(
 'create-this-page' => 'Loo see lehekülg',
 'delete' => 'Kustuta',
 'deletethispage' => 'Kustuta see lehekülg',
+'undeletethispage' => 'Taasta see lehekülg',
 'undelete_short' => 'Taasta {{PLURAL:$1|üks muudatus|$1 muudatust}}',
 'viewdeleted_short' => 'Vaata {{PLURAL:$1|üht|$1}} kustutatud redaktsiooni',
 'protect' => 'Kaitse',
@@ -529,7 +543,6 @@ $1',
 'disclaimers' => 'Hoiatused',
 'disclaimerpage' => 'Project:Hoiatused',
 'edithelp' => 'Redigeerimisjuhend',
-'edithelppage' => 'Help:Kuidas_lehte_redigeerida',
 'helppage' => 'Help:Sisukord',
 'mainpage' => 'Esileht',
 'mainpage-description' => 'Esileht',
@@ -679,6 +692,8 @@ $2',
 'namespaceprotected' => "Sul pole õigust redigeerida lehekülgi nimeruumis '''$1'''.",
 'customcssprotected' => 'Sul pole õigust seda CSS-lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.',
 'customjsprotected' => 'Sul pole õigust seda JavaScripti lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.',
+'mycustomcssprotected' => 'Sul pole õigust redigeerida seda CSS-lehekülge.',
+'mycustomjsprotected' => 'Sul pole õigust redigeerida seda JavaScript-lehekülge.',
 'ns-specialprotected' => 'Erilehekülgi ei saa redigeerida.',
 'titleprotected' => "Kasutaja [[User:$1|$1]] on selle pealkirjaga lehe loomise keelanud esitades järgmise põhjenduse: ''$2''.",
 'filereadonlyerror' => 'Faili "$1" ei saa muuta, sest hoidla "$2" on kirjutuskaitstud.
@@ -714,7 +729,7 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
 'createacct-yourpasswordagain-ph' => 'Sisesta uuesti parool',
 'remembermypassword' => 'Jäta parool meelde (kuni $1 {{PLURAL:$1|päevaks|päevaks}})',
 'userlogin-remembermypassword' => 'Jää sisseloginuks',
-'userlogin-signwithsecure' => 'Logi sisse turvaserveri kaudu',
+'userlogin-signwithsecure' => 'Kasuta turvalist ühendust',
 'securelogin-stick-https' => 'Jätka pärast sisselogimist HTTPS-ühenduse kasutamist',
 'yourdomainname' => 'Sinu domeen:',
 'password-change-forbidden' => 'Selles vikis ei saa paroole muuta.',
@@ -729,12 +744,13 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
 'notloggedin' => 'Sisse logimata',
 'userlogin-noaccount' => 'Kas sul pole kontot?',
 'userlogin-joinproject' => 'Ühine projektiga {{SITENAME}}',
-'nologin' => "Sul pole kontot? '''$1'''.",
+'nologin' => 'Sul pole kontot? $1.',
 'nologinlink' => 'Registreeru siin',
 'createaccount' => 'Loo uus konto',
 'gotaccount' => "Kui sul on juba konto, '''$1'''.",
 'gotaccountlink' => 'logi sisse',
 'userlogin-resetlink' => 'Kas oled unustanud oma sisselogimisandmed?',
+'userlogin-resetpassword-link' => 'Lähtesta oma parool',
 'helplogin-url' => 'Help:Sisselogimine',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Sisselogimisabi]]',
 'createacct-join' => 'Sisesta allapoole oma andmed.',
@@ -750,9 +766,9 @@ Pane tähele, et seni kuni sa pole oma võrgulehitseja puhvrit tühjendanud, võ
 'createacct-imgcaptcha-ph' => 'Sisesta ülalnähtav tekst',
 'createacct-submit' => 'Loo oma konto',
 'createacct-benefit-heading' => '{{SITENAME}} on sinusuguste inimeste tehtud.',
-'createacct-benefit-body1' => 'muudatust',
-'createacct-benefit-body2' => 'lehekülge',
-'createacct-benefit-body3' => 'hiljutist kaastöölist',
+'createacct-benefit-body1' => '{{PLURAL:$1|muudatus|muudatust}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|lehekülg|lehekülge}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|hiljutine kaastööline|hiljutist kaastöölist}}',
 'badretype' => 'Sisestatud paroolid ei lange kokku.',
 'userexists' => 'Sisestatud kasutajanimi on juba kasutusel.
 Palun valige uus nimi.',
@@ -803,7 +819,7 @@ Ole hea ja sisesta õige e-posti aadress või jäta väli tühjaks.',
 'cannotchangeemail' => 'Selles vikis ei saa konto e-posti aadressi muuta.',
 'emaildisabled' => 'Selle võrgukoha kaudu ei saa e-kirju saata.',
 'accountcreated' => 'Konto loodud',
-'accountcreatedtext' => 'Kasutajakonto kasutajatunnusele $1 loodud.',
+'accountcreatedtext' => 'Kasutaja [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) konto on loodud.',
 'createaccount-title' => '{{GRAMMAR:illative|{{SITENAME}}}} konto loomine',
 'createaccount-text' => 'Keegi on loonud {{GRAMMAR:illative|{{SITENAME}}}} ($4) sinu e-posti aadressile vastava kasutajatunnuse "$2". Parooliks seati "$3". Logi sisse ja muuda oma parool.
 
@@ -817,7 +833,7 @@ Palun pea nüüd pisut vahet.',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatu tõrge PHP funktsioonis mail().',
-'user-mail-no-addy' => 'Püüdsid saata e-kirja ilma meiliaadressita.',
+'user-mail-no-addy' => 'Püüdsid saata e-kirja ilma e-posti aadressita.',
 'user-mail-no-body' => 'Püüti saata tühja või ebamõistlikult lühikese sisuosaga e-kirja.',
 
 # Change password dialog
@@ -843,6 +859,8 @@ Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist sa
 
 # Special:PasswordReset
 'passwordreset' => 'Parooli lähtestamine',
+'passwordreset-text-one' => 'Täida see vorm, et oma parool lähtestada.',
+'passwordreset-text-many' => '{{PLURAL:$1|Sisesta üks andmeüksus, et oma parool lähtestada.}}',
 'passwordreset-legend' => 'Parooli lähtestamine',
 'passwordreset-disabled' => 'Selles vikis on paroolide lähtestamine keelatud.',
 'passwordreset-emaildisabled' => 'E-posti funktsioonid on selles vikis keelatud.',
@@ -1086,7 +1104,7 @@ See on juba olemas.',
 'invalid-content-data' => 'Vigased sisuandmed',
 'content-not-allowed-here' => 'Lehekülg [[$2]] ei või sisaldada $1.',
 'editwarning-warning' => 'Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.
-Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "{{int:prefs-editing}}" keelata.',
+Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "Toimetamine" keelata.',
 
 # Content models
 'content-model-wikitext' => 'vikiteksti',
@@ -1288,7 +1306,7 @@ Pane tähele, et navigeerimislinkide kasutamine lähtestab redaktsioonide valiku
 'difference-title' => 'Erinevus lehekülje "$1" redaktsioonide vahel',
 'difference-title-multipage' => 'Erinevus lehekülgede "$1" ja "$2" vahel',
 'difference-multipage' => '(Lehekülgede erinevus)',
-'lineno' => 'Rida $1:',
+'lineno' => '$1. rida:',
 'compareselectedversions' => 'Võrdle valitud redaktsioone',
 'showhideselectedversions' => 'Näita/peida valitud versioonid',
 'editundo' => 'eemalda',
@@ -1319,7 +1337,6 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'searchmenu-legend' => 'Otsingu sätted',
 'searchmenu-exists' => "'''Lehekülg pealkirjaga \"[[:\$1]]\" on olemas.'''",
 'searchmenu-new' => "'''Loo lehekülg pealkirjaga \"[[:\$1]]\".'''",
-'searchhelp-url' => 'Help:Sisukord',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sirvi selle eesliitega lehekülgi]]',
 'searchprofile-articles' => 'Sisuleheküljed',
 'searchprofile-project' => 'Abi- ja projektilehed',
@@ -1364,6 +1381,7 @@ päringu ees prefiksit ''all:''. Konkreetsest nimeruumist otsimiseks kasuta pref
 'searchdisabled' => "Otsimine on preagu keelatud.
 Vahepeal saad otsimiseks Google'it kasutada.
 Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võib olla iganenud.",
+'search-error' => 'Otsimise ajal ilmnes tõrge: $1',
 
 # Preferences page
 'preferences' => 'Eelistused',
@@ -1508,6 +1526,7 @@ See ei tohi olla pikem kui {{PLURAL:$1|üks märk|$1 märki}}.',
 'userrights-changeable-col' => 'Rühmad, mida sa saad muuta',
 'userrights-unchangeable-col' => 'Rühmad, mida sa ei saa muuta',
 'userrights-conflict' => 'Kasutajaõiguste konflikt! Palun tee muudatused uuesti.',
+'userrights-removed-self' => 'Võtsid edukalt endalt õigused. Seetõttu sellele leheküljele sa enam ligi ei pääse.',
 
 # Groups
 'group' => 'Rühm:',
@@ -1578,6 +1597,8 @@ See ei tohi olla pikem kui {{PLURAL:$1|üks märk|$1 märki}}.',
 'right-editusercssjs' => 'Redigeerida teiste kasutajate CSS- ja JS-faile',
 'right-editusercss' => 'Redigeerida teiste kasutajate CSS-faile',
 'right-edituserjs' => 'Redigeerida teiste kasutajate JS-faile',
+'right-editmyusercss' => 'Redigeerida oma CSS-kasutajafaile',
+'right-editmyuserjs' => 'Redigeerida oma JavaScript-kasutajafaile',
 'right-rollback' => 'Tühistada otsekohe lehekülje viimase redigeerija muudatused',
 'right-markbotedits' => 'Märkida muudatuse tühistamine robotimuudatusena',
 'right-noratelimit' => 'Mööduda toimingumäära limiitidest',
@@ -2305,7 +2326,7 @@ Edasised muudatused sellel leheküljel ja seotud aruteluleheküljel tuuakse ära
 'notvisiblerev' => 'Redaktsioon on kustutatud',
 'watchnochange' => 'Valitud ajavahemiku jooksul pole ühelgi jälgitaval leheküljel muudatusi tehtud.',
 'watchlist-details' => 'Jälgimisloendis on {{PLURAL:$1|$1 lehekülg|$1 lehekülge}} (ei arvestata arutelulehekülgi).',
-'wlheader-enotif' => 'E-posti teel teavitamine on aktiveeritud.',
+'wlheader-enotif' => 'E-posti teel teavitamine on lubatud.',
 'wlheader-showupdated' => "Leheküljed, mida on muudetud peale sinu viimast külastust, on '''rasvases kirjas'''.",
 'watchmethod-recent' => 'jälgitud lehekülgedel tehtud viimaste muudatuste läbivaatamine',
 'watchmethod-list' => 'jälgitavate lehekülgede viimased muudatused',
@@ -2556,7 +2577,7 @@ $1',
 'mycontris' => 'Kaastöö',
 'contribsub2' => 'Kasutaja $1 ($2) jaoks',
 'nocontribs' => 'Antud kriteeriumitele vastavaid muudatusi ei leitud.',
-'uctop' => ' (uusim)',
+'uctop' => '(praegune)',
 'month' => 'Alates kuust (ja varasemad):',
 'year' => 'Alates aastast (ja varasemad):',
 
@@ -2880,6 +2901,8 @@ Kui soovid MediaWiki tarkvara tõlkimises osaleda, siis vaata lehti [//www.media
 'thumbnail-more' => 'Suurenda',
 'filemissing' => 'Fail puudub',
 'thumbnail_error' => 'Viga pisipildi loomisel: $1',
+'thumbnail_error_remote' => 'Tõrketeade asukohast $1:
+$2',
 'djvu_page_error' => 'DjVu-failis ei ole sellist lehekülge',
 'djvu_no_xml' => 'DjVu failist XML-i lugemine ebaõnnestus.',
 'thumbnail-temp-create' => 'Ajutist pisipildifaili ei õnnestu luua.',
@@ -3199,6 +3222,14 @@ Järgnevas loendis, mis on sorteeritud $2, on '''$1''' {{PLURAL:$1|fail|faili}}.
 'hours-ago' => '$1 {{PLURAL:$1|tund|tundi}} tagasi',
 'minutes-ago' => '$1 {{PLURAL:$1|minut|minutit}} tagasi',
 'seconds-ago' => '$1 {{PLURAL:$1|sekund|sekundit}} tagasi',
+'monday-at' => 'Esmaspäeval kell $1',
+'tuesday-at' => 'Teisipäeval kell $1',
+'wednesday-at' => 'Kolmapäeval kell $1',
+'thursday-at' => 'Neljapäeval kell $1',
+'friday-at' => 'Reedel kell $1',
+'saturday-at' => 'Laupäeval kell $1',
+'sunday-at' => 'Pühapäeval kell $1',
+'yesterday-at' => 'Eile kell $1',
 
 # Bad image list
 'bad_image_list' => 'Arvesse võetakse ainult nimekirja ühikud (read, mis algavad sümboliga *).
index 94354cb..0544abc 100644 (file)
@@ -233,6 +233,18 @@ $messages = array(
 'oct' => 'Urr',
 'nov' => 'Aza',
 'dec' => 'Abe',
+'january-date' => 'Urtarrilaren $1',
+'february-date' => 'Otsailaren $1',
+'march-date' => 'Martxoaren $1',
+'april-date' => 'Apirilaren $1',
+'may-date' => 'Maiatzaren $1',
+'june-date' => 'Ekainaren $1',
+'july-date' => 'Uztailaren $1',
+'august-date' => 'Abuztuaren $1',
+'september-date' => 'Irailaren $1',
+'october-date' => 'Urriaren $1',
+'november-date' => 'Azaroaren $1',
+'december-date' => 'Abenduaren $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategoria|Kategoriak}}',
@@ -244,7 +256,7 @@ $messages = array(
 'hidden-category-category' => 'Kategoria ezkutuak',
 'category-subcat-count' => '{{PLURAL:$2|Kategoria honek beste honako azpikategoria baino ez du.|Kategoria honek honako {{PLURAL:$1|azpikategoria du|$1 azpikategoriak ditu}}, guztira dauden $2tik.}}',
 'category-subcat-count-limited' => 'Kategoria honek {{PLURAL:$1|azpikategoria hau du|$1 azpikategoria hauek ditu}}.',
-'category-article-count' => '{{PLURAL:$2|Kategoria honek ondorengo orri hau baino ez du.|Ondorengo {{PLURAL:$1|orri hau kategoria honetan dago|$1 orriak kategoria honetan daude}}, eta guztira $2 orri dira kategoria honetan.}}',
+'category-article-count' => '{{PLURAL:$2|Kategoria honek orrialde hau bakarrik du.|Honako {{PLURAL:$1|orrialdea kategoria honetan dago|$1 orrialdeak kategoria honetan daude}}, guztira dauden $2 orrialdetatik.}}',
 'category-article-count-limited' => 'Ondorengo {{PLURAL:$1|orri hau kategoria honetan dago.|$1 orri hauek kategoria honetan daude.}}',
 'category-file-count' => '{{PLURAL:$2|Kategoria honek ondorengo fitxategi hau baino ez du.|Ondorengo {{PLURAL:$1|fitxategi hau kategoria honetan dago|$1 fitxategiak kategoria honetan daude}}, eta guztira $2 fitxategi dira kategoria honetan.}}',
 'category-file-count-limited' => 'Ondorengo {{PLURAL:$1|fitxategia kategoria honetan dago.|$1 fitxategiak kategoria honetan daude.}}',
@@ -314,6 +326,7 @@ $messages = array(
 'create-this-page' => 'Orrialde hau sortu',
 'delete' => 'Ezabatu',
 'deletethispage' => 'Ezabatu orri hau',
+'undeletethispage' => 'Orrialde hau bergaitu',
 'undelete_short' => 'Berreskuratu {{PLURAL:$1|aldaketa bat|$1 aldaketa}}',
 'viewdeleted_short' => 'Ikusi ezabatutako {{PLURAL:$1|bidalketa bat|$1 bidalketa}}',
 'protect' => 'Babestu',
@@ -367,7 +380,6 @@ $1',
 'disclaimers' => 'Mugaketak',
 'disclaimerpage' => 'Project:Erantzukizunen mugaketa orokorra',
 'edithelp' => 'Aldaketak egiteko laguntza',
-'edithelppage' => 'Help:Aldaketak egiteko laguntza',
 'helppage' => 'Help:Laguntza',
 'mainpage' => 'Azala',
 'mainpage-description' => 'Azala',
@@ -515,6 +527,8 @@ $2",
 'namespaceprotected' => "Ez daukazu '''$1''' izen-tarteko orrialdeak aldatzeko baimenik.",
 'customcssprotected' => 'Ez duzu baimenik CSS orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.',
 'customjsprotected' => 'Ez duzu baimenik JavaScript orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.',
+'mycustomcssprotected' => 'Ez duzu baimenik CSS orrialde hau aldatzeko.',
+'mycustomjsprotected' => 'Ez duzu baimentik JavaScript orrialdea aldatzeko.',
 'ns-specialprotected' => 'Ezin dira {{ns:special}} izen-tarteko orrialdeak editatu.',
 'titleprotected' => "[[User:$1|$1]]ek izenburu hau sortzea ekidin zuen.
 Emandako arrazoia ''$2'' izan zen.",
@@ -524,6 +538,7 @@ Blokeoa ezarri zuen administratzaileak honako arrazoia eman zuen: "$3".',
 'invalidtitle-knownnamespace' => 'Izenburua gaizki dago "$2" izen eremuan eta "$3" testuan',
 'invalidtitle-unknownnamespace' => 'Izenburua gaizki dago "$1" izen eremuan ezezagunean eta "$2" testuan',
 'exception-nologin' => 'Saioa hasi gabe',
+'exception-nologin-text' => 'Ekintza edo orrialde honek wiki honetan sartzea eskatzen du.',
 
 # Virus scanner
 'virus-badscanner' => "Ezarpen txarrak: antibirus ezezaguna: ''$1''",
@@ -536,12 +551,24 @@ Blokeoa ezarri zuen administratzaileak honako arrazoia eman zuen: "$3".',
 Erabiltzaile anonimo bezala jarrai dezakezu {{SITENAME}} erabiltzen, edo <span class='plainlinks'>[$1 saioa has dezakezu berriz]</span> erabiltzaile berdinarekin edo ezberdin batekin.
 Kontuan izan orrialde batzuk saioa hasita bazenu bezala ikus ditzakezula nabigatzailearen katxea garbitu arte.",
 'welcomeuser' => 'Ongi etorri, $1!',
+'welcomecreation-msg' => 'Zure kontua sortua izan da.
+Ez ezazu ahaztu zure [[Special:Preferences|{{SITENAME}} hobespenak]] aldatzea.',
 'yourname' => 'Erabiltzaile izena',
+'userlogin-yourname' => 'Erabiltzale izena',
+'userlogin-yourname-ph' => 'Sartu zure erabiltzaile izena',
 'yourpassword' => 'Pasahitza:',
+'userlogin-yourpassword' => 'Pasahitza',
+'userlogin-yourpassword-ph' => 'Sartu zuren pasahitza',
+'createacct-yourpassword-ph' => 'Sartu pasahitza',
 'yourpasswordagain' => 'Pasahitza berriz',
+'createacct-yourpasswordagain' => 'Pasahitza berridatzi',
+'createacct-yourpasswordagain-ph' => 'Sartu pasahitza berriro ere',
 'remembermypassword' => 'Nire saioa ordenagailu honetan gogoratu ({{PLURAL:$1|egun baterako|$1 egunetarako }} gehienez)',
+'userlogin-remembermypassword' => 'Manten nazazu barruan',
+'userlogin-signwithsecure' => 'Erabili konexio ziurra',
 'securelogin-stick-https' => 'Mantendu konektatua HTTPSra sartu ondoren',
 'yourdomainname' => 'Zure domeinua',
+'password-change-forbidden' => 'Ezin duzu pasahitzarik aldatu wiki honetan.',
 'externaldberror' => 'Kanpoko datu-base autentifikazio errorea gertatu da edo ez duzu zure kanpo kontua eguneratzeko baimenik.',
 'login' => 'Saioa hasi',
 'nav-login-createaccount' => 'Saioa hasi / kontua sortu',
@@ -551,18 +578,38 @@ Kontuan izan orrialde batzuk saioa hasita bazenu bezala ikus ditzakezula nabigat
 'logout' => 'Saioa itxi',
 'userlogout' => 'Saioa itxi',
 'notloggedin' => 'Saioa hasi gabe',
+'userlogin-noaccount' => 'Ez al duzu konturik?',
+'userlogin-joinproject' => 'Batu {{SITENAME}}(r)ekin',
 'nologin' => "Ez duzu erabiltzaile konturik? '''$1'''.",
 'nologinlink' => 'Kontua sortu',
 'createaccount' => 'Kontua sortu',
 'gotaccount' => "Baduzu erabiltzaile kontua? '''$1'''.",
 'gotaccountlink' => 'Saioa hasi',
 'userlogin-resetlink' => 'Saioa hasteko datuak ahaztu dituzu?',
+'userlogin-resetpassword-link' => 'Zure pasahitza berrezarri',
+'helplogin-url' => 'Help:Sarrera',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Barrura sartzeko laguntza]]',
+'createacct-join' => 'Sartu zure informazioa azpian.',
+'createacct-emailrequired' => 'E-posta helbidea',
+'createacct-emailoptional' => 'E-posta helbidea (hautazkoa)',
+'createacct-email-ph' => 'Sartu zure e-posta helbidea',
 'createaccountmail' => 'Erabili behin-behineko pasahitz ausazko bat eta bidali behean agertzeko den e-posta helbidera',
+'createacct-realname' => 'Benetako izena (hautazkoa)',
 'createaccountreason' => 'Arrazoia:',
+'createacct-reason' => 'Arrazoia',
+'createacct-reason-ph' => 'Zergatik ari zaren beste erabiltzaile kontu bat',
+'createacct-captcha' => 'Segurtasun froga',
+'createacct-imgcaptcha-ph' => 'Sartu gainean ikusten duzun testua',
+'createacct-submit' => 'Kontua sortu',
+'createacct-benefit-heading' => '{{SITENAME}} zu bezalako pertsonek egiten dute.',
+'createacct-benefit-body1' => '{{PLURAL:$1|edizio bat|$1 edizio}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|Orrialde 1|$1 orrialde}}',
+'createacct-benefit-body3' => 'azkeneko {{PLURAL:$1|egilea|egileak}}',
 'badretype' => 'Idatzitako pasahitzak ez dira berdinak.',
 'userexists' => 'Aukeratutako erabiltzaile izena hartuta dago.
 Mesedez beste bat aukeratu.',
 'loginerror' => 'Errorea saioa hastean',
+'createacct-error' => 'Kontua sortzerakoan arazoa',
 'createaccounterror' => 'Ezin izan da kontua sortu: $1',
 'nocookiesnew' => 'Erabiltzaile kontua sortu da, baina ez da saioa hasi. {{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta ondoren saiatu saioa hasten zure erabiltzaile izen eta pasahitz berriak erabiliz.',
 'nocookieslogin' => '{{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta saiatu berriz.',
@@ -600,7 +647,7 @@ Mesedez, saioa hasi jasotakoan.',
 'eauthentsent' => 'Egiaztapen mezu bat bidali da zehaztutako e-posta helbidera.
 Helbide horretara beste edozein mezu bidali aurretik, bertan azaltzen diren argibideak jarraitu behar dituzu, e-posta hori zurea dela egiaztatzeko.',
 'throttled-mailpassword' => 'Pasahitz gogorarazle bat bidali da jada azken {{PLURAL:$1|orduan|$1 orduetan}}.
-Bandalismoa saihesteko pasahitz eskaera bat baino ezin da egin {{PLURAL:$1|orduan|$1 orduan}} behin.',
+Bandalismoa sahiesteko pasahitz eskaera bat baino ezin da egin {{PLURAL:$1|orduan|$1 orduan}} behin.',
 'mailerror' => 'Errorea mezua bidaltzerakoan: $1',
 'acct_creation_throttle_hit' => 'Sentitzen dugu, {{PLURAL:$1|erabiltzaile kontu bat sortu duzu|$1 erabiltzaile kontu sortu dituzu}} dagoeneko.
 Ondorioz, ezin duzu kontu gehiago sortu.',
@@ -611,9 +658,10 @@ Ondorioz, ezin duzu kontu gehiago sortu.',
 'invalidemailaddress' => 'Ezin da e-posta helbide hori ontzat eman baliogabeko formatua duela dirudielako.
 
 Mesedez, formatu egokia duen helbide bat zehaztu, edo hutsik utzi.',
+'cannotchangeemail' => 'Kontuen e-posta helbideak ezin dira aldatu wiki honetan.',
 'emaildisabled' => 'Gune honek ezin du e-postarik bidali.',
 'accountcreated' => 'Kontua sortuta',
-'accountcreatedtext' => '$1 erabiltzaile kontua sortu egin da.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] lankidearentzat ([[{{ns:User talk}}:$1|eztabaida]]) kontua sortu da.',
 'createaccount-title' => '{{SITENAME}}-rako kontua sortu',
 'createaccount-text' => 'Norbaitek zure e-postarekin kontu bat sortu du {{SITENAME}}(e)n ($4) "$2" izenarekin eta "$3" pasahitzarekin.
 Orain bertan sar zaitezke eta zure pasahitza aldatu.
@@ -622,11 +670,14 @@ Kontu honen sorrera akats bat dela uste baduzu mezu honi ez diozu zertan jaramon
 'usernamehasherror' => 'Erabiltzaile-izenak ezin du kuxin-karaktererik eduki',
 'login-throttled' => 'Saioa hasteko saiakera gehiegi egin berri dituzu.
 Berriro saiatu aurretik itxaron ezazu, mesedez.',
+'login-abort-generic' => 'Zure sarrera ez da arrakastatsua izan - Abortatua',
 'loginlanguagelabel' => 'Hizkuntza: $1',
 'suspicious-userlogout' => 'Saioa amaitzeko egin duzun eskaria ukatu da. Izan ere, ematen du eskari hori gaizki dabilen nabigatzaile edo cache proxy batek bidali duela.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHPren mail() funtzioan arazo ezezagun bat egon da.',
+'user-mail-no-addy' => 'E-posta bidaltzen saiatu zara e-posta helbiderik gabe.',
+'user-mail-no-body' => 'E-posta bidaltzen saiatu zara testu gorputzik gabe edo laburregiarekin.',
 
 # Change password dialog
 'resetpass' => 'Pasahitza aldatu',
@@ -645,22 +696,34 @@ Berriro saiatu aurretik itxaron ezazu, mesedez.',
 'resetpass-wrong-oldpass' => 'Behin-behineko edo oraintxuko pasahitza ez da baliagarria.
 Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat eskatu duzu.',
 'resetpass-temp-password' => 'Behin-behineko pasahitza:',
+'resetpass-abort-generic' => 'Estentsio batek pasahitza aldatzea ekidin du.',
 
 # Special:PasswordReset
 'passwordreset' => 'Pasahitzaren berrezarpena',
+'passwordreset-text-one' => 'Bete formulario hau zure pasahitza berrezartzeko.',
+'passwordreset-text-many' => '{{PLURAL:$1|Sartu datuetako bat zure pasahitza berrezartzeko.}}',
 'passwordreset-legend' => 'Pasahitza berrezarri',
+'passwordreset-disabled' => 'Pasahitza berrezartzea ez da posible wiki honetan.',
+'passwordreset-emaildisabled' => 'E-posta aukerak ez daude eskuragarri wiki honetan.',
 'passwordreset-username' => 'Lankide izena:',
 'passwordreset-domain' => 'Domeinua:',
+'passwordreset-capture' => 'Bidaliko den e-posta ikusi nahi?',
+'passwordreset-capture-help' => 'Kutxa hau hautatzen baduzu behin-behineko pasahitza duen e-posta erakutsiko zatzaizu, eta erabiltzaileari bidaliko zaio.',
 'passwordreset-email' => 'E-mail helbidea:',
+'passwordreset-emailtitle' => '{{SITENAME}}-rako kontuaren xehetasunak',
 'passwordreset-emailelement' => 'Erabiltzaile izena: $1
 Behin-behineko pasahitza: $2',
-'passwordreset-emailsent' => 'Gogorarazteko e-posta bidali da.',
+'passwordreset-emailsent' => 'Pasahitza berrezartzeko e-posta bidali da.',
 
 # Special:ChangeEmail
 'changeemail' => 'Aldatu e-mail helbidea',
+'changeemail-header' => 'Aldatu kontuko e-posta helbidea',
+'changeemail-text' => 'Bete ezazu formulario hau e-posta helbidea aldatzeko. Zure pasahitza sartu beharko duzu aldaketa hau baieztatzeko.',
+'changeemail-no-info' => 'Orrialde honetara zuzenean sartzeko izena eman behar duzu.',
 'changeemail-oldemail' => 'Egungo e-mail helbidea:',
 'changeemail-newemail' => 'E-posta helbide berria:',
 'changeemail-none' => '(bat ere ez)',
+'changeemail-password' => 'Zure {{SITENAME}}ko pasahitza:',
 'changeemail-submit' => 'E-posta aldatu',
 'changeemail-cancel' => 'Utzi',
 
@@ -850,10 +913,15 @@ Ez du azalpenik eman.',
 'edit-gone-missing' => 'Ezin da orria eguneratu. Ezabatu omen dute.',
 'edit-conflict' => 'Aldaketa gatazka.',
 'edit-no-change' => 'Zure edizioa baztertu da testua aldatu ez duzulako.',
+'postedit-confirmation' => 'Zure aldaketa gorde da.',
 'edit-already-exists' => 'Ezin izan da orri berria sortu.
 Jada existitzen da.',
+'defaultmessagetext' => 'Testu lehenetsia',
+'content-failed-to-parse' => 'Ezin izan da $2(r)en edukia parseatu $1 modeloarentzat: $3',
+'invalid-content-data' => 'Eduki datu baliogabea',
+'content-not-allowed-here' => '"$1" edukia ez dago baimendua [[$2]] orrialdean',
 'editwarning-warning' => 'Orrialde honetatik irteten bazara, egindako aldaketak galdu egingo dira.
-Saioa hasi baduzu, mezu hau kendu dezakezu zure hobespenen orrialdeko "{{int:prefs-editing}}" atalean.',
+Saioa hasi baduzu, mezu hau kendu dezakezu zure hobespenen orrialdeko "Aldatzen" atalean.',
 
 # Content models
 'content-model-wikitext' => 'wikitestua',
@@ -875,6 +943,12 @@ Eztabaidak aipatu gabe utzi dira.',
 'parser-template-loop-warning' => 'Txantiloiaren itzul-biraketa aurkitu da: [[$1]]',
 'parser-template-recursion-depth-warning' => 'Txantiloaren rekurtsio sakoneraren muga gainditu da ($1)',
 'language-converter-depth-warning' => 'Hizkuntza-bihurgailuaren sakonerak ($1) muga gainditu du',
+'node-count-exceeded-category' => 'Nodo-zenbaketa gainditu den orrialdeak',
+'node-count-exceeded-warning' => 'Orrialdeak nodo-zenbaketa gainditu du',
+'expansion-depth-exceeded-category' => 'Orrialdearen espantsio sakonera gainditu da',
+'expansion-depth-exceeded-warning' => 'Espantsio sakonera gainditu duten orrialdeak',
+'parser-unstrip-loop-warning' => 'Loop unstrip bat aurkitu da',
+'parser-unstrip-recursion-limit' => 'Unstrip errekurtsio limitea gainditu da ($1)',
 
 # "Undo" feature
 'undo-success' => 'Aldaketa desegin daiteke.
@@ -1054,6 +1128,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 # Diffs
 'history-title' => '"$1" orrialdearen historia berrikuspena',
 'difference-title' => '"$1"-en berrikuspenen arteko aldaketa',
+'difference-title-multipage' => '"$1" eta "$2" orrialdeen arteko ezberditasunak',
 'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
 'lineno' => '$1. lerroa:',
 'compareselectedversions' => 'Hautatutako bertsioak alderatu',
@@ -1081,7 +1156,6 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'searchmenu-legend' => 'Bilaketa aukerak',
 'searchmenu-exists' => "'''\"[[:\$1]]\" izena duen orrialde bat badago wiki honetan'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" orrialde sortu wiki honetan!'''",
-'searchhelp-url' => 'Help:Laguntza',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Aurrizki hau duten orrialdeetatik nabigatu]]',
 'searchprofile-articles' => 'Eduki-orriak',
 'searchprofile-project' => 'Laguntza eta Proiektu-orriak',
@@ -1328,6 +1402,8 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
 'right-editusercssjs' => 'Beste lankideen CSS eta JS fitxategiak aldatu',
 'right-editusercss' => 'Beste lankideen CSS fitxategiak aldatu',
 'right-edituserjs' => 'Beste lankideen JS fitxategiak aldatu',
+'right-editmyusercss' => 'Aldatu zure CSS fitxategi propioak',
+'right-editmyuserjs' => 'Aldatu zure JavaScript fitxategi propioak',
 'right-rollback' => 'Orrialde zehatz bat aldatu zuen azken lankidearen aldaketak modu azkar batean leheneratu',
 'right-markbotedits' => 'Atzera bueltan eginiko aldaketak bot baten aldaketak balira markatu',
 'right-noratelimit' => 'Ez dio eragiten erlazio mugak',
@@ -1343,6 +1419,7 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
 'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
 'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
 'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
+'right-passwordreset' => 'Ikusi pasahitza berrezartze e-postak',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Erabiltzaile erregistroa',
@@ -1422,6 +1499,7 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
 'newsectionsummary' => '/* $1 */ atal berria',
 'rc-enhanced-expand' => 'Erakutsi xehetasunak (JavaScript beharrezkoa da)',
 'rc-enhanced-hide' => 'Xehetasunak ezkutatu',
+'rc-old-title' => 'hasiera batean "$1" gisa sortua',
 
 # Recent changes linked
 'recentchangeslinked' => 'Lotutako orrietako aldaketak',
@@ -1467,6 +1545,7 @@ Orrialde baten irudi bat txertatzeko, erabili kode hauetako bat:
 'ignorewarnings' => 'Edozein ohar ezikusi.',
 'minlength1' => 'Fitxategi izenek letra bat izan behar dute gutxienez.',
 'illegalfilename' => '"$1" fitxategiaren izenak orrialdeen izenburuetan erabili ezin diren karaktereak ditu. Mesedez, fitxategiari izena aldatu eta saiatu berriz igotzen.',
+'filename-toolong' => 'Fitxategi izenak ezin dira izan 240 byte baino luzeagoak.',
 'badfilename' => 'Irudiaren izena aldatu da: "$1".',
 'filetype-badmime' => 'Ezin dira "$1" MIME motako fitxategiak igo.',
 'filetype-bad-ie-mime' => 'Ezin da fitxategia igo, Internet Explorerek "$1" bezala detektatuko lukeelako, zein fitxategi mota ez onartua eta arriskutsua den.',
@@ -1550,6 +1629,25 @@ $1',
 'upload-unknown-size' => 'Tamaina ezezaguna',
 'upload-http-error' => 'HTTP errorea gertatu da: $1',
 
+# File backend
+'backend-fail-stream' => 'Ezin izan da "$1" fitxategiaren stream egin.',
+'backend-fail-backup' => 'Ezin izan da "$1" fitxategiaren backup egin.',
+'backend-fail-notexists' => '$1 fitxategia ez da existitzen.',
+'backend-fail-hashes' => 'Ezin izan da fitxategien hashak eskuratu konparatzeko.',
+'backend-fail-notsame' => 'Berdina ez den beste fitxategi bat dago "$1"n',
+'backend-fail-invalidpath' => '"$1" ez da gordetzeko helbide baliagarria.',
+'backend-fail-delete' => 'Ezin izan da ezabatu "$1" fitxategia.',
+'backend-fail-alreadyexists' => '"$1" fitxategia jadanik badago.',
+'backend-fail-store' => 'Ezin izan da gorde "$1" fitxategia "$2" helbidean.',
+'backend-fail-copy' => 'Ezin izan da kopiatu "$1" fitxategia "$2" helbidean.',
+'backend-fail-move' => 'Ezin izan da mugitu "$1" fitxategia "$2" helbidean.',
+'backend-fail-opentemp' => 'Ezin izan da behin behineko fitxategia ireki.',
+'backend-fail-writetemp' => 'Ezin da behin behineko fitxategia idatzi.',
+'backend-fail-closetemp' => 'Ezin izan da behin behineko fitxategia itxi.',
+'backend-fail-read' => 'Ezin izan da "$1" fitxategia irakurri.',
+'backend-fail-create' => 'Ezin izan da "$1" fitxategia idatzi.',
+'backend-fail-maxsize' => 'Ezin izan da idatzi "$1" fitxategia {{PLURAL:$2|byte bat|$2 byte}} baino handiagoa delako.',
+
 # ZipDirectoryReader
 'zip-wrong-format' => 'Zehaztutako fitxategia ez zen ZIP motakoa.',
 
@@ -1570,9 +1668,12 @@ Ikusi https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 Fitxategien sarbidea baino ez da onartzen.',
 'img-auth-streaming' => '"$1" sekuentziatzen.',
 'img-auth-noread' => 'Erabiltzaileak ez du "$1" irakurtzeko sarbiderik.',
+'img-auth-bad-query-string' => 'URLan query esaldi baliogabea dago.',
 
 # HTTP errors
 'http-invalid-url' => 'URL baliogabea: $1',
+'http-invalid-scheme' => '"$1" eskema duten URLak ez dira baliagarriak.',
+'http-request-error' => 'HTTP eskariak akatsa izan du errore ezezagun bat dela eta.',
 'http-read-error' => 'HTTP irakurketa-akatsa.',
 'http-timed-out' => 'HTTP eskaera iraungi da.',
 'http-curl-error' => 'Errorea URLa bilatzerakoan: $1',
@@ -1638,6 +1739,7 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'uploadnewversion-linktext' => 'Fitxategi honen bertsio berri bat igo',
 'shared-repo-from' => '$1-tik',
 'shared-repo' => 'elkarbanatutako biltegia',
+'upload-disallowed-here' => 'Ezin duzu fitxategi hau gain-idatzi.',
 
 # File reversion
 'filerevert' => '$1 leheneratu',
@@ -1719,6 +1821,11 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 Kasu bakoitzean dagokion artikulu zuzenarekin izan beharko lukete lotura.<br />
 Orrialde bat argipen motakoa dela antzeman ohi da [[MediaWiki:Disambiguationspage]] orrialdean agertzen den txantiloietako bat duenean.",
 
+'pageswithprop' => 'Orrialde propietatea duten orrialdeak',
+'pageswithprop-legend' => 'Orrialde propietatea duten orrialdeak',
+'pageswithprop-prop' => 'Ezaugarriaren izena:',
+'pageswithprop-submit' => 'Joan',
+
 'doubleredirects' => 'Birzuzenketa bikoitzak',
 'doubleredirectstext' => 'Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.',
 'double-redirect-fixed-move' => '[[$1]] mugitu da eta orain [[$2]](e)ra birzuzenketa bat da',
@@ -1740,10 +1847,13 @@ Orrialde bat argipen motakoa dela antzeman ohi da [[MediaWiki:Disambiguationspag
 # Miscellaneous special pages
 'nbytes' => '{{PLURAL:$1|byte 1|$1 byte}}',
 'ncategories' => '{{PLURAL:$1|kategoria 1|$1 kategoria}}',
+'ninterwikis' => '{{PLURAL:$1|Interwiki $1|$1 interwiki}}',
 'nlinks' => '{{PLURAL:$1|lotura 1|$1 lotura}}',
 'nmembers' => '{{PLURAL:$1|partaide 1|$1 partaide}}',
 'nrevisions' => '{{PLURAL:$1|berrikuspen 1|$1 berrikuspen}}',
 'nviews' => '{{PLURAL:$1|ikusketa 1|$1 ikusketa}}',
+'nimagelinks' => '{{PLURAL:$1|Orrialde batean erabilia|$1 orrialdetan erabilia}}',
+'ntransclusions' => '{{PLURAL:$1|orrialde batean erabilia|$1 orrialdetan erabilia}}',
 'specialpage-empty' => 'Ez dago emaitzarik bilaketa honetarako.',
 'lonelypages' => 'Orrialde umezurtzak',
 'lonelypagestext' => 'Jarraian zerrendatutako orrialdeek ez daukate {{SITENAME}}(e)n beste orrialdeetatik loturarik.',
@@ -1764,8 +1874,10 @@ Orrialde bat argipen motakoa dela antzeman ohi da [[MediaWiki:Disambiguationspag
 'mostlinkedtemplates' => 'Txantiloi erabilienak',
 'mostcategories' => 'Sailkapenean kategoria gehien dituzten orrialdeak',
 'mostimages' => 'Gehien lotutako irudiak',
+'mostinterwikis' => 'Interwiki gehien dituzten orrialdeak',
 'mostrevisions' => 'Berrikuspen gehien dituzten orrialdeak',
 'prefixindex' => 'Orri guztiak aurrizkiekin',
+'prefixindex-namespace' => '$1 izentartean honako aurrizkia duten orrialde guztiak:',
 'shortpages' => 'Orrialde laburrak',
 'longpages' => 'Orrialde luzeak',
 'deadendpages' => 'Orrialde itsuak',
@@ -1781,7 +1893,7 @@ Orrialde bat argipen motakoa dela antzeman ohi da [[MediaWiki:Disambiguationspag
 'listusers' => 'Erabiltzaileen zerrenda',
 'listusers-editsonly' => 'Aldaketak egin dituzten erabiltzaileak soilik erakutsi',
 'listusers-creationsort' => 'Sorrera dataren arabera sailkatu',
-'usereditcount' => '{{PLURAL:$1|aldaketa $1|$1 aldaketa}}',
+'usereditcount' => '{{PLURAL:$1|edizio bat|$1 edizio}}',
 'usercreated' => '{{GENDER:$3|Sortze data}}: $1, $2',
 'newpages' => 'Orrialde berriak',
 'newpages-username' => 'Erabiltzaile izena:',
@@ -1798,6 +1910,7 @@ Mesedez, kontuan izan beste webgune batzutatik URL zuzena erabiliz lotura izan d
 'pager-newer-n' => '{{PLURAL:$1|berriago den 1|berriagoak diren $1}}',
 'pager-older-n' => '{{PLURAL:$1|zaharragoa den 1|zaharragoak diren $1}}',
 'suppress' => 'Gain-ikuspena',
+'querypage-disabled' => 'Orrialde berezi hau desgaituta dago funtzionamendu arrazoiengatik.',
 
 # Book sources
 'booksources' => 'Iturri liburuak',
@@ -1815,6 +1928,7 @@ Mesedez, kontuan izan beste webgune batzutatik URL zuzena erabiliz lotura izan d
 Erregistro mota, erabiltzailearen izena edota orrialdearen izena iragaziz bistaratu daiteke. Letra larriak eta xeheak bereizten dira.',
 'logempty' => 'Ez dago emaitzarik erregistroan.',
 'log-title-wildcard' => 'Testu honekin hasten diren izenburuak bilatu',
+'showhideselectedlogentries' => 'Erakutsi/izkutatu aukeratutako log sarrerak',
 
 # Special:AllPages
 'allpages' => 'Orri guztiak',
@@ -1858,7 +1972,7 @@ Ikus, gainera [[Special:WantedCategories|kategoriarik eskatuenak]].',
 'linksearch-ok' => 'Bilatu',
 'linksearch-text' => '"*.wikipedia.org" bezalako izartxoak erabil daitezke.
 Gutxienez goi mailako domeinua behar du, adibidez "*.org".<br />
-Baimendutako protokoloak: <code>$1</code> (protokoloa zehazten ez bada http:// hartzen da lehenetsitzat).',
+Baimendutako {{PLURAL:$2|protokoloa|protokoloak}}: <code>$1</code> (protokoloa zehazten ez bada http:// hartzen da lehenetsitzat).',
 'linksearch-line' => '$1, $2(e)tik lotuta',
 'linksearch-error' => 'Komodinak izenaren hasieran bakarrik agertu beharko lirateke.',
 
@@ -1897,9 +2011,10 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
 'mailnologin' => 'Bidalketa helbiderik ez',
 'mailnologintext' => 'Beste erabiltzaileei e-posta mezuak bidaltzeko [[Special:UserLogin|saioa hasi]] eta baliozko e-posta helbidea behar duzu izan zure [[Special:Preferences|hobespenetan]].',
 'emailuser' => 'Erabiltzaile honi e-posta bidali',
+'emailuser-title-target' => '{{GENDER:$1|Erabiltzale}} honi e-posta bidali',
 'emailuser-title-notarget' => 'Erabiltzaileari e-maila bidali',
 'emailpage' => 'Erabiltzaileari e-posta bidali',
-'emailpagetext' => 'Erabiltzaile honek baliozko e-posta helbide bat ezarri badu bere hobespenetan, beheko formularioa erabiliz mezu bat bidal dakioke.
+'emailpagetext' => '{{GENDER:$1|Erabiltzaile}} honek baliozko e-posta helbide bat ezarri badu bere hobespenetan, beheko formularioa erabiliz mezu bat bidal dakioke.
 [[Special:Preferences|Hobespenetan]] daukazun e-posta helbidea azalduko da mezuaren bidaltzaile bezala eta beraz erantzun ahal izango dizu.',
 'usermailererror' => 'Mail objektuak errore hau itzuli du:',
 'defemailsubject' => '{{SITENAME}} e-posta "$1" lankideak',
@@ -1909,6 +2024,7 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
 'noemailtext' => 'Erabiltzaile honek ez du baliozko e-posta helbiderik zehaztu.',
 'nowikiemailtitle' => 'Ezin da e-postarik bidali',
 'nowikiemailtext' => 'Erabiltzaile honek beste erabiltzaileengandik e-postak ez jasotzea hautatu du.',
+'emailtarget' => 'Sartu jasolearen erabiltzaile izena',
 'emailusername' => 'Lankide izena:',
 'emailusernamesubmit' => 'Bidali',
 'email-legend' => 'Bidali e-posta bat {{SITENAME}}(e)ko beste lankide bati',
@@ -1924,6 +2040,7 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
 'emailuserfooter' => 'E-posta hau $1(e)k bidali dio $2(r)i {{SITENAME}}ko "E-posta bidali" funtzioa erabiliz.',
 
 # User Messenger
+'usermessage-summary' => 'Sistema mezua uzten.',
 'usermessage-editor' => 'Sistemako mezularia',
 
 # Watchlist
@@ -1934,9 +2051,11 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
 'watchlistanontext' => 'Mesedez $1 zure jarraipen zerrendako orrialdeak ikusi eta aldatu ahal izateko.',
 'watchnologin' => 'Saioa hasi gabe',
 'watchnologintext' => '[[Special:UserLogin|Saioa hasi]] behar duzu zure jarraipen zerrenda aldatzeko.',
-'addedwatchtext' => "\"<nowiki>\$1</nowiki>\" orrialdea zure [[Special:Watchlist|jarraipen edo zelatatuen zerrendara]] erantsi da. Orrialde honen hurrengo aldaketak zerrenda horretan ageriko dira aurrerantzean, eta gainera [[Special:RecentChanges|aldaketa berrien zerrendan]] beltzez ageriko da, erraztasunez antzeman ahal izateko.
+'addwatch' => 'Jarraipen zerrendara gehitu',
+'addedwatchtext' => '"[[:$1]]" orrialdea zure [[Special:Watchlist|jarraipen edo zelatatuen zerrendara]] erantsi da. 
 
-Jarraipen zerrendatik artikulua kentzeko, artikuluan ''ez jarraitu''ri eman.",
+Orrialde honen hurrengo aldaketak zerrenda horretan ageriko dira aurrerantzean.',
+'removewatch' => 'Kendu zure jarraipen zerrendatik',
 'removedwatchtext' => '"[[:$1]]" orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.',
 'watch' => 'Jarraitu',
 'watchthispage' => 'Orrialde hau jarraitu',
@@ -1947,7 +2066,7 @@ Jarraipen zerrendatik artikulua kentzeko, artikuluan ''ez jarraitu''ri eman.",
 'watchnochange' => 'Hautatutako denbora tartean ez da aldaketarik izan zure jarraipen zerrendako orrialdeetan.',
 'watchlist-details' => '{{PLURAL:$1|Orrialde $1|$1 orrialde}} jarraitzen, eztabaida orrialdeak kontuan hartu gabe.',
 'wlheader-enotif' => 'Posta bidezko ohartarazpena gaituta dago.',
-'wlheader-showupdated' => "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude",
+'wlheader-showupdated' => "Bisitatu zenituen azken alditik aldaketak izan dituzten orrialdeak '''beltzez''' nabarmenduta daude.",
 'watchmethod-recent' => 'Aldaketa berriak aztertzen jarraipen zerrendako orrialdeen bila',
 'watchmethod-list' => 'jarraipen zerrendako orrialdeak aldaketa berrien bila aztertzen',
 'watchlistcontains' => 'Zure jarraipen zerrendak {{PLURAL:$1|orrialde $1 du|$1 orrialde ditu}}.',
@@ -2035,6 +2154,7 @@ kontu izan.',
 'rollback_short' => 'Desegin',
 'rollbacklink' => 'desegin',
 'rollbacklinkcount' => 'desegin {{PLURAL:$1|edizio bat|$1 edizio}}',
+'rollbacklinkcount-morethan' => 'desegin {{PLURAL:$1|edizio bat|$1 edizio}} baino gehiago',
 'rollbackfailed' => 'Desegiteak huts egin dud',
 'cantrollback' => 'Ezin da aldaketa desegin; erabiltzaile bakarrak hartu du parte.',
 'alreadyrolled' => 'Ezin da [[User:$2|$2]](e)k ([[User talk:$2|Eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) [[$1]](e)n egindako azken aldaketa desegin;
@@ -2059,7 +2179,12 @@ Ikusi [[Special:ProtectedPages|babestutako orrialdeen zerrenda]] orrialde babes
 'unprotectedarticle' => '"[[$1]]"-(r)i babesa kendu zaio',
 'movedarticleprotection' => 'babes hobespenak "[[$2]]"tik "[[$1]]"(e)ra mugitu dira',
 'protect-title' => '"$1" babesten',
+'protect-title-notallowed' => '"$1"en babes maila ikusi',
 'prot_1movedto2' => '$1 izenburua $2(r)engatik aldatu da',
+'protect-badnamespace-title' => 'Izen-tarte ez babesgarria',
+'protect-badnamespace-text' => 'Izen-tarte honetako orrialdeak ezin dira babestu.',
+'protect-norestrictiontypes-text' => 'Orrialde hau ezin da babestu ez daudelako mugapen mota eskuragarririk.',
+'protect-norestrictiontypes-title' => 'Izen-tarte ez babesgarria',
 'protect-legend' => 'Babesa baieztatu',
 'protectcomment' => 'Arrazoia:',
 'protectexpiry' => 'Iraungipena:',
@@ -2076,11 +2201,12 @@ Hemen daude '''$1''' orrialderako oraingo ezarpenak:",
 'protect-cascadeon' => 'Orrialde hau babestuta dago orain, ondorengo orrialde {{PLURAL:$1|honek kaskada bidezko babesa aktibatua duelako|hauek kaskada bidezko babesa aktibatua dutelako}}.
 Orrialde honen babes maila alda dezakezu, baina ez du eraginik izango kaskada bidezko babesean.',
 'protect-default' => 'Lankide guztiak baimendu',
-'protect-fallback' => '"$1" baimena eskatu',
-'protect-level-autoconfirmed' => 'Lankide berri eta erregistratu gabekoak blokeatu',
-'protect-level-sysop' => 'Administratzaileak bakarrik',
+'protect-fallback' => '"$1" baimena duten erabiltzaileak bakarrik baimendu',
+'protect-level-autoconfirmed' => 'Baimendu lankide autokonfirmatuei bakarrik',
+'protect-level-sysop' => 'Administratzaileak bakarrik baimendu',
 'protect-summary-cascade' => 'jauzian',
 'protect-expiring' => 'babesaldiaren bukaera: $1 (UTC)',
+'protect-expiring-local' => 'iraungitze data: $1',
 'protect-expiry-indefinite' => 'mugagabea',
 'protect-cascade' => 'Babes masiboa - orrialde honen barneko orrialde guztiak blokeatu.',
 'protect-cantedit' => 'Ezin duzu orrialde honetako babes-maila aldatu, ez duzulako berau aldatzeko eskumenik.',
@@ -2144,7 +2270,7 @@ In such cases, you must uncheck or unhide the newest deleted revision.',
 'undeletedrevisions' => '{{PLURAL:$1|Berrikuspen 1 leheneratu da|$1 berrikuspen leheneratu dira}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|berrikuspen|berrikuspen}} eta {{PLURAL:$2|fitxategi|fitxategi}} leheneratu dira',
 'undeletedfiles' => '{{PLURAL:$1|fitxategi|fitxategi}} leheneratu dira',
-'cannotundelete' => 'Errorea birsortzerakoan; baliteke beste norbaitek lehenago birsortu izana.',
+'cannotundelete' => 'Ezabatutako birgaitzean akatsa: $1',
 'undeletedpage' => "'''$1 leheneratu egin da'''
 
 [[Special:Log/delete|Ezabaketa erregistrora]] jo azken ezabaketa eta leheneraketak ikusteko.",
@@ -2159,6 +2285,7 @@ In such cases, you must uncheck or unhide the newest deleted revision.',
 'undelete-cleanup-error' => 'Erabiltzen ez den "$1" fitxategia ezabatzen arazoa egon da.',
 'undelete-missing-filearchive' => 'Fitxategiaren $1 IDa ezin da leheneratu, ez baitago datu-basean.
 Aurretik ez luke ezabatua izan behar.',
+'undelete-error' => 'Akatsa orrialde ezabatua birgaitzen',
 'undelete-error-short' => 'Errorea fitxategia berreskuratzerakoan: $1',
 'undelete-error-long' => 'Errorea gertatu da hurrengo orrialdea berreskuratzerakoan:
 
@@ -2178,7 +2305,7 @@ $1',
 'mycontris' => 'Ekarpenak',
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'Ez da ezaugarri horiekin bat datorren aldaketarik aurkitu.',
-'uctop' => ' (Azken aldaketa)',
+'uctop' => '(azken aldaketa)',
 'month' => 'Hilabetea (eta lehenagokoak):',
 'year' => 'Urtea (eta lehenagokoak):',
 
@@ -2262,13 +2389,19 @@ Ikus [[Special:BlockList|blokeoen zerrenda]] blokeoak aztertzeko.',
 'unblockiptext' => 'Erabili beheko formularioa lehenago blokeatutako IP helbide edo erabiltzaile baten idazketa baimenak leheneratzeko.',
 'ipusubmit' => 'Blokeoa ezabatu',
 'unblocked' => '[[User:$1|$1]] desblokeatu egin da',
+'unblocked-range' => '$1 desblokeatuta izan da.',
 'unblocked-id' => '$1 blokeaketa ezabatu da',
 'blocklist' => 'Blokeatutako erabiltzaileak',
 'ipblocklist' => 'Blokeatutako erabiltzaileak',
 'ipblocklist-legend' => 'Blokeatutako erabiltzaile bat bilatu',
+'blocklist-userblocks' => 'Izkutatu kontuaren blokeak',
+'blocklist-tempblocks' => 'Izkutatu behin-behineko blokeoak',
+'blocklist-addressblocks' => 'Izkutatu IP bakarretako blokeoak',
 'blocklist-timestamp' => 'Eguna eta ordua',
 'blocklist-target' => 'Helburua',
+'blocklist-expiry' => 'Epemuga:',
 'blocklist-by' => 'Blokeoa ezarri duen administratzailea',
+'blocklist-params' => 'Blokeo parametroak',
 'blocklist-reason' => 'Arrazoia',
 'ipblocklist-submit' => 'Bilatu',
 'ipblocklist-localblock' => 'Tokiko blokeoa',
@@ -2344,6 +2477,7 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
 'unlockdbsuccesstext' => 'Datu-basea desblokeatu egin da.',
 'lockfilenotwritable' => 'Ezin da datu-baseko blokeo fitxategian idatzi. Datu-basea blokeatu edo desblokeatzeko, zerbitzariak idazteko aukera izan beharra dauka.',
 'databasenotlocked' => 'Datu-basea ez dago blokeatuta.',
+'lockedbyandtime' => '({{GENDER:$1|$1}}k egina $2ko $3(e)tan)',
 
 # Move page
 'move-page' => '$1 mugitu',
@@ -2464,6 +2598,7 @@ Mesedez bisitatu [//www.mediawiki.org/wiki/Localisation MediaWiki] eta [//transl
 'thumbnail_error' => 'Errorea irudi txikia sortzerakoan: $1',
 'djvu_page_error' => 'DjVu orrialdea eremuz kanpo',
 'djvu_no_xml' => 'Ezinezkoa izan da DjVu fitxategiaren XML lortzea',
+'thumbnail-dest-create' => 'Ezin izan da iruditxoa gorde helburuan',
 'thumbnail_invalid_params' => 'Irudi txikiaren ezarpenak ez dira baliagarriak',
 'thumbnail_dest_directory' => 'Ezinezkoa izan da helburu direktorioa sortu',
 'thumbnail_image-type' => 'Irudi mota ez babestua',
@@ -2479,12 +2614,14 @@ Mesedez bisitatu [//www.mediawiki.org/wiki/Localisation MediaWiki] eta [//transl
 'import-interwiki-templates' => 'Txantiloi guztiak sartu',
 'import-interwiki-submit' => 'Inportatu',
 'import-interwiki-namespace' => 'Helburuko izen-tartea:',
+'import-interwiki-rootpage' => 'Helburuko oinarri orrialdea (aukerazkoa):',
 'import-upload-filename' => 'Fitxategiaren izena:',
 'import-comment' => 'Iruzkina:',
 'importtext' => 'Mesedez, jatorrizko wikitik orrialdea esportatzeko [[Special:Export|esportazio tresna]] erabil ezazu, zure diskoan gorde eta jarraian hona igo.',
 'importstart' => 'Orrialdeak inportatzen...',
 'import-revision-count' => '{{PLURAL:$1|berrikuspen 1|$1 berrikuspen}}',
 'importnopages' => 'Ez dago orrialderik inportatzeko.',
+'imported-log-entries' => '{{PLURAL:$1|Log sarrera bat|$1 log sarrera}} inportatu dira.',
 'importfailed' => 'Inportazioak huts egin du: $1',
 'importunknownsource' => 'Inportazio iturri mota ezezaguna',
 'importcantopen' => 'Ezin izan da inportazio fitxategia ireki',
@@ -2515,6 +2652,10 @@ Fitxategiaren atal bat baino ez zen igo.',
 'import-logentry-interwiki' => '$1 wiki artean mugitu da',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|berrikuspen|berrikuspen}} $2-(e)tik',
 
+# JavaScriptTest
+'javascripttest' => 'JavaScript frogatzen',
+'javascripttest-title' => '$1 frogak egiten',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Nire lankide orria',
 'tooltip-pt-anonuserpage' => 'Zure IParen lankide orrialdea',
@@ -2575,6 +2716,8 @@ Fitxategiaren atal bat baino ez zen igo.',
 'tooltip-diff' => 'Testuari egindako aldaketak erakutsi.',
 'tooltip-compareselectedversions' => 'Orrialde honen bi hautatutako bertsioen arteko ezberdintasunak ikusi.',
 'tooltip-watch' => 'Orrialde hau zure segimendu zerrendan gehitu',
+'tooltip-watchlistedit-normal-submit' => 'Izenburuak kendu',
+'tooltip-watchlistedit-raw-submit' => 'Jarraipen zerrenda gaurkotu',
 'tooltip-recreate' => 'Orrialdea birsortu ezabatu egin den arren',
 'tooltip-upload' => 'Igoera hasi',
 'tooltip-rollback' => '"Desegin" ekintzak orriaren azken egilearen ekarpena ezabatzen du klik batean',
@@ -2615,6 +2758,8 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
 'spam_blanking' => 'Berrikuspen guztiek $1(e)rako lotura zeukaten, husten',
 
 # Info page
+'pageinfo-title' => '"$1"(r)entzako informazioa',
+'pageinfo-not-current' => 'Barkatu, errebisio zaharretako informazioa eskaintzea ezinezkoa da.',
 'pageinfo-header-basic' => 'Oinarrizko informazioa',
 'pageinfo-header-edits' => 'Aldaketen historia',
 'pageinfo-header-restrictions' => 'Orriaren babesa',
@@ -2629,6 +2774,7 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
 'pageinfo-robot-noindex' => 'Indexaezina',
 'pageinfo-views' => 'Bistaratze-kopurua',
 'pageinfo-watchers' => 'Orriaren jarraitzaileen kopurua',
+'pageinfo-few-watchers' => '{{PLURAL:$1|Ikusle bat|$1 ikusle}} baino gutxiago',
 'pageinfo-redirects-name' => 'Orri honetara dakarten birzuzenketak',
 'pageinfo-subpages-name' => 'Orri honen azpiorriak',
 'pageinfo-firstuser' => 'Orriaren sortzailea',
@@ -2642,12 +2788,17 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
 'pageinfo-hidden-categories' => 'Ezkutuko {{PLURAL:$1|kategoria|kategoriak}} ($1)',
 'pageinfo-templates' => 'Txertatutako {{PLURAL:$1|txantiloia|txantiloiak}} ($1)',
 'pageinfo-toolboxlink' => 'Orri honen datuak',
+'pageinfo-redirectsto' => 'Hona birzuzentzen du',
 'pageinfo-redirectsto-info' => 'Informazioa',
 'pageinfo-contentpage' => 'Eduki-orritzat zenbatua',
 'pageinfo-contentpage-yes' => 'Bai',
 'pageinfo-protect-cascading' => 'Serieko babesa, orri honetatik',
 'pageinfo-protect-cascading-yes' => 'Bai',
 'pageinfo-protect-cascading-from' => 'Serieko babesak aktibatuta. Sorburua:',
+'pageinfo-category-info' => 'Kategoria informazioa',
+'pageinfo-category-pages' => 'Orrialde kopurua',
+'pageinfo-category-subcats' => 'Azpikategorien zenbakia',
+'pageinfo-category-files' => 'Fitxategi kopurua',
 
 # Skin names
 'skinname-cologneblue' => 'Cologne Blue',
@@ -2663,6 +2814,8 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
 'markedaspatrollederror' => 'Ezin da patruilatutzat markatu',
 'markedaspatrollederrortext' => 'Patruilatutzat markatzeko berrikuspen bat hautatu behar duzu.',
 'markedaspatrollederror-noautopatrol' => 'Ez daukazu zeure aldaketak patruilatutzat markatzeko baimenik.',
+'markedaspatrollednotify' => '$1 orrialdeari egindako aldaketa patruilatu moduan markatua izan da.',
+'markedaspatrollederrornotify' => 'Patruilatu gisa markatzean akatsa egon da.',
 
 # Patrol log
 'patrol-log-page' => 'Patrullatze loga',
@@ -2692,8 +2845,10 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|orri|orri}}',
 'file-info' => 'fitxategiaren tamaina: $1, MIME mota: $2',
 'file-info-size' => '$1 × $2 pixel, fitxategiaren tamaina: $3, MIME mota: $4',
+'file-info-size-pages' => '$1 × $2 pixel, fitxategi tamaina: $3, MIME mota: $4, {{PLURAL:$5|orrialde $5|$5 orrialde}}',
 'file-nohires' => 'Ez dago bereizmen handiagorik.',
 'svg-long-desc' => 'SVG fitxategia, nominaldi $1 × $2 pixel, fitxategiaren tamaina: $3',
+'svg-long-error' => 'SVG fitxategi ez baliagarria: $1',
 'show-big-image' => 'Bereizmen handikoa',
 'show-big-image-preview' => 'Aurreikuspen honen neurria: $1.',
 'show-big-image-other' => 'Bestelako {{PLURAL:$2|bereizmena|bereizmenak}}: $1.',
@@ -2701,6 +2856,7 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'file-info-gif-looped' => 'kiribildua',
 'file-info-gif-frames' => '{{PLURAL:$1|Irudi $1|$1 irudi}}',
 'file-info-png-looped' => 'begiztatua',
+'file-info-png-repeat' => '{{PLURAL:$1|Behin|$1 aldiz}} ikusia',
 'file-info-png-frames' => '{{PLURAL:$1|Frame bat|$1 frame}}',
 
 # Special:NewFiles
@@ -2724,7 +2880,24 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'minutes' => '{{PLURAL:$1|minutu $1|$1 minutu}}',
 'hours' => '{{PLURAL:$1|ordu $1|$1 ordu}}',
 'days' => '{{PLURAL:$1|egun $1|$1 egun}}',
+'weeks' => '{{PLURAL: $1|aste $1|$1 aste}}',
+'months' => '{{PLURAL: $1|hilabete $1|$1 hilabete}}',
+'years' => '{{PLURAL: $1|urte $1|$1 urte}}',
 'ago' => 'Duela $1',
+'just-now' => 'orain',
+
+# Human-readable timestamps
+'hours-ago' => 'Orain dela {{PLURAL:$1|ordu bat|$1 ordu}}',
+'minutes-ago' => 'Orain dela {{PLURAL:$1|minutu bat|$1 minutu}}',
+'seconds-ago' => 'Orain dela {{PLURAL:$1|segundu bat|$1 segundu}}',
+'monday-at' => 'Astelehena $1(e)tan',
+'tuesday-at' => 'Asteartea $1(e)tan',
+'wednesday-at' => 'Asteazkena $1(e)tan',
+'thursday-at' => 'Osteguna $1(e)tan',
+'friday-at' => 'Ostirala $1(e)tan',
+'saturday-at' => 'Larunbata $1(e)tan',
+'sunday-at' => 'Igandea $1(e)tan',
+'yesterday-at' => 'Atzo $1(e)tan',
 
 # Bad image list
 'bad_image_list' => 'Formatua hurrengoa da:
@@ -2885,16 +3058,47 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
 'exif-headline' => 'Goiburua',
 'exif-credit' => 'Kreditua/Emalea',
 'exif-source' => 'Jatorria',
+'exif-editstatus' => 'Irudiaren egoera editoriala',
 'exif-urgency' => 'Larrialdia',
+'exif-locationdest' => 'Agertzen den lekua',
+'exif-locationdestcode' => 'Agertzen den lekuaren kodea',
+'exif-objectcycle' => 'Media hau baliagarria den egunaren ordua',
+'exif-contact' => 'Kontratuaren informazioa',
 'exif-writer' => 'Idazlea',
 'exif-languagecode' => 'Hizkuntza',
 'exif-iimversion' => 'IIM bertsioa',
 'exif-iimcategory' => 'Kategoria',
+'exif-iimsupplementalcategory' => 'Kategoria gehigarriak',
+'exif-datetimeexpires' => 'Ez erabili data hau pasata:',
+'exif-datetimereleased' => 'Ekoizpen data:',
+'exif-identifier' => 'Identifikatzailea',
+'exif-lens' => 'Erabilitako lentea',
 'exif-serialnumber' => 'Kameraren serie-zenbakia',
 'exif-cameraownername' => 'Kameraren jabea',
 'exif-label' => 'Etiketa',
+'exif-rating' => 'Balorazioa (5 arte)',
+'exif-rightscertificate' => 'Eskubideen kudeaketa ziurtagiria',
+'exif-copyrighted' => 'Copyright egoera',
 'exif-copyrightowner' => 'Copyright-aren jabea',
 'exif-usageterms' => 'Erabilera baldintzak',
+'exif-webstatement' => 'Copyright azapena sarean',
+'exif-originaldocumentid' => 'Jatorrizko dokumentuaren ID bakarra',
+'exif-licenseurl' => 'Copyright lizentziaren URLa',
+'exif-morepermissionsurl' => 'Lizentziaren informazio alternatiboa',
+'exif-attributionurl' => 'Lan hau berrerabiltzean, mesedez lotura hau erabili',
+'exif-preferredattributionname' => 'Lan hau berrerabiltzean, mesedez aipatu',
+'exif-pngfilecomment' => 'PNG fitxategiaren iruzkina',
+'exif-disclaimer' => 'Mugaketak',
+'exif-contentwarning' => 'Edukiarekin adi',
+'exif-giffilecomment' => 'GIF fitxategiaren iruzkina',
+'exif-intellectualgenre' => 'Elementu mota',
+'exif-subjectnewscode' => 'Gaiaren kodea',
+'exif-scenecode' => 'IPTC eskena kodea',
+'exif-event' => 'Agertzen den ebentoa',
+'exif-organisationinimage' => 'Agertzen den antolakundea',
+'exif-personinimage' => 'Agertzen den pertsona',
+'exif-originalimageheight' => 'Irudiaren altuera moztu aurretik',
+'exif-originalimagewidth' => 'Irudiaren zabalera moztu aurretik',
 
 # Exif attributes
 'exif-compression-1' => 'Konprimatu gabe',
@@ -3071,13 +3275,31 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
 
 'exif-gpsdop-excellent' => 'Bikaina ($1)',
 'exif-gpsdop-good' => 'Ona  ($1)',
+'exif-gpsdop-moderate' => 'Moderatua ($1)',
+'exif-gpsdop-fair' => 'Justua ($1)',
+'exif-gpsdop-poor' => 'Pobrea ($1)',
+
+'exif-objectcycle-a' => 'Goizetan bakarrik',
+'exif-objectcycle-p' => 'Arratsaldetan bakarrik',
+'exif-objectcycle-b' => 'Goiz zein arratsalde',
 
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Benetako norabidea',
 'exif-gpsdirection-m' => 'Norabide magnetikoa',
 
+'exif-ycbcrpositioning-1' => 'Zentratua',
+
+'exif-dc-contributor' => 'Egileak',
+'exif-dc-date' => 'Data(k)',
 'exif-dc-publisher' => 'Argitaratzailea',
+'exif-dc-relation' => 'Harremana duen media',
 'exif-dc-rights' => 'Eskubideak',
+'exif-dc-source' => 'Jatorrizko media',
+'exif-dc-type' => 'Media mota',
+
+'exif-rating-rejected' => 'Ukatua',
+
+'exif-isospeedratings-overflow' => '65535 baino handiago',
 
 'exif-iimcategory-ace' => 'Arteak, kultura eta aisia',
 'exif-iimcategory-clj' => 'Krimena eta zuzenbidea',
@@ -3086,7 +3308,9 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
 'exif-iimcategory-edu' => 'Hezkuntza',
 'exif-iimcategory-evn' => 'Ingurumena',
 'exif-iimcategory-hth' => 'Osasuna',
+'exif-iimcategory-hum' => 'Gizakientzako interesa',
 'exif-iimcategory-lab' => 'Lana',
+'exif-iimcategory-lif' => 'Bizimoduak eta denborapasak',
 'exif-iimcategory-pol' => 'Politika',
 'exif-iimcategory-rel' => 'Erlijioa eta sinesmenak',
 'exif-iimcategory-sci' => 'Zientzia eta teknologia',
@@ -3235,6 +3459,8 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'version-specialpages' => 'Aparteko orrialdeak',
 'version-parserhooks' => 'Parser estentsioak',
 'version-variables' => 'Aldagaiak',
+'version-antispam' => 'Spam ekiditea',
+'version-skins' => 'Itxurak',
 'version-other' => 'Bestelakoak',
 'version-mediahandlers' => 'Media gordailuak',
 'version-hooks' => 'Estentsioak',
@@ -3250,8 +3476,21 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'version-software' => 'Instalatutako softwarea',
 'version-software-product' => 'Produktua',
 'version-software-version' => 'Bertsioa',
+'version-entrypoints' => 'Sarrera puntuko URLa',
+'version-entrypoints-header-entrypoint' => 'Sarrera puntua',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Birzuzendu fitxategi, lankide edo berrikuspen IDaren arabera',
+'redirect-legend' => 'Orrialde edo fitxategi batera birzuzendu',
+'redirect-submit' => 'Joan',
+'redirect-lookup' => 'Ikuskatu:',
+'redirect-value' => 'Balioa:',
+'redirect-user' => 'Erabiltzailearen identifikazioa (ID):',
+'redirect-revision' => 'Orrialdearen berrikuspena',
+'redirect-file' => 'Fitxategiaren izena',
+'redirect-not-exists' => 'Ez da baliorik aurkitu',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Artxibo bikoiztuen bilaketa',
 'fileduplicatesearch-summary' => 'Bikoiztutako fitxategiak bilatu bere hash balioaren arabera.',
@@ -3336,17 +3575,31 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'htmlform-submit' => 'Bidali',
 'htmlform-reset' => 'Aldaketak desegin',
 'htmlform-selectorother-other' => 'Beste bat',
+'htmlform-no' => 'Ez',
+'htmlform-yes' => 'Bai',
+'htmlform-chosen-placeholder' => 'Aukeratu',
+
+# SQLite database support
+'sqlite-has-fts' => '$1 testu osoan bilatzeko laguntzarekin',
 
 # New logging system
-'logentry-delete-delete' => '$1 wikilariak «$3» orria ezabatu du',
+'logentry-delete-delete' => '$1 wikilariak $3 orria {{GENDER:$2|ezabatu}} du',
+'logentry-delete-restore' => '$1(e)k $3 orrialdea {{GENDER:$2|berrezarri}} du',
 'logentry-delete-event' => '$1 wikilariak ikusgaitasuna aldatu {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4',
 'logentry-suppress-event' => '$1 wikilariak ezkutuan ikusgaitasuna aldatu {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4',
+'revdelete-content-hid' => 'edukia izkutatua',
+'revdelete-summary-hid' => 'aldaketa laburpena izkutatua',
+'revdelete-uname-hid' => 'lankide izena ezkutatua',
+'revdelete-content-unhid' => 'eduki ezkutua erakutsi',
+'revdelete-summary-unhid' => 'aldaketa laburpen izkutua erakutsi',
+'revdelete-uname-unhid' => 'lankide ezkutua erakutsi',
 'revdelete-restricted' => 'administratzaileentzako mugak ezarri dira',
 'revdelete-unrestricted' => 'administratzaileentzako mugak kendu dira',
-'logentry-move-move' => '$1 wikilariak «$3» orria «$4» izenera aldatu du',
-'logentry-move-move-noredirect' => '$1 wikilariak «$3» orria «$4» izenera aldatu du, birzuzenketarik utzi gabe',
-'logentry-move-move_redir' => '$1 wikilariak «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik',
-'logentry-move-move_redir-noredirect' => '$1 wikilariak «$3» orria «$4» izenera aldatu du, birzuzenketa bat gainidatzita, birzuzenketarik utzi gabe',
+'logentry-move-move' => '$1 {{GENDER:$2|wikilariak}} $3 orria $4 izenera aldatu du',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|wikilariak}} $3 orria $4 izenera aldatu du, birzuzenketarik utzi gabe',
+'logentry-move-move_redir' => '$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketaren gainetik',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birzuzenketa bat gainidatzita, birzuzenketarik utzi gabe',
+'logentry-patrol-patrol' => '$1(e)k $3 orrialdearen $4 berrikuzpena patruilatutzat {{GENDER:$2|markatu}} du',
 'logentry-newusers-newusers' => '$1 erabiltzaile kontua sortu da',
 'logentry-newusers-create' => '$1 erabiltzaile kontua sortu da',
 'logentry-newusers-create2' => '$1 wikilariak $3 erabiltzaile kontua sortu du',
@@ -3357,9 +3610,29 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'feedback-message' => 'Mezua:',
 'feedback-cancel' => 'Utzi',
 'feedback-submit' => 'Feedbacka bidali',
+'feedback-error2' => 'Akatsa: Aldaketa ez da egin',
+'feedback-close' => 'Egina',
+'feedback-bugnew' => 'Txekeatu dut. Bug berria bidaliko',
 
 # Search suggestions
 'searchsuggest-search' => 'Bilatu',
 'searchsuggest-containing' => 'edukian...',
 
+# API errors
+'api-error-badaccess-groups' => 'Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.',
+'api-error-badtoken' => 'Barne akatsa: token okerra.',
+'api-error-unclassified' => 'Ezezaguna den errorea gertatu da.',
+'api-error-unknown-code' => 'Akats ezezaguna: "$1".',
+
+# Durations
+'duration-seconds' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
+'duration-minutes' => '{{PLURAL:$1|Minutu $1|$1 minutu}}',
+'duration-hours' => '{{PLURAL:$1|Ordu $1|$1 ordu}}',
+'duration-days' => '{{PLURAL:$1|Egun $1|$1 egun}}',
+'duration-weeks' => '{{PLURAL:$1|Aste $1|$1 aste}}',
+'duration-years' => '{{PLURAL:$1|Urte $1|$1 urte}}',
+'duration-decades' => '{{PLURAL:$1|Hamarkada $1|$1 hamarkada}}',
+'duration-centuries' => '{{PLURAL:$1|Mende $1|$1 mende}}',
+'duration-millennia' => '{{PLURAL:$1|Milurteko $1|$1 milurteko}}',
+
 );
index c8ff7ab..2a614fa 100644 (file)
@@ -236,7 +236,6 @@ $messages = array(
 'disclaimers' => 'Avissu legal',
 'disclaimerpage' => 'Project:Arrayu heneral de responsabiliá',
 'edithelp' => "Ayua d'eición",
-'edithelppage' => 'Help:Eitandu',
 'helppage' => 'Help:Continius',
 'mainpage' => 'Página prencipal',
 'mainpage-description' => 'Páhina prencipal',
@@ -766,7 +765,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'viewprevnext' => 'Vel ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Ocionis de landeu',
 'searchmenu-new' => "'''Crial el artículu \"[[:\$1]]\"'''",
-'searchhelp-url' => 'Help:Continius',
 'searchprofile-images' => 'Murtimeya',
 'searchprofile-everything' => 'Tó',
 'searchprofile-advanced' => 'Avançau',
index 4431246..c0a26ff 100644 (file)
@@ -40,6 +40,7 @@
  * @author ZxxZxxZ
  * @author לערי ריינהארט
  * @author جواد
+ * @author درفش کاویانی
  * @author محک
  */
 
@@ -684,7 +685,6 @@ $1',
 'disclaimers' => 'تکذیب‌نامه‌ها',
 'disclaimerpage' => 'Project:تکذیب‌نامهٔ عمومی',
 'edithelp' => 'راهنمای ویرایش‌کردن',
-'edithelppage' => 'Help:ویرایش',
 'helppage' => 'Help:محتوا',
 'mainpage' => 'صفحهٔ اصلی',
 'mainpage-description' => 'صفحهٔ اصلی',
@@ -695,7 +695,7 @@ $1',
 'privacypage' => 'Project:سیاست محرمانگی',
 
 'badaccess' => 'خطای دسترسی',
-'badaccess-group0' => 'شما اجازهٔ اجرای عملی را که درخواست کرده‌اید ندارید.',
+'badaccess-group0' => 'شما اجازهٔ اجرای عملی که درخواست کرده‌اید را ندارید.',
 'badaccess-groups' => 'عملی که درخواست کرده‌اید منحصر به کاربران {{PLURAL:$2|این گروه|این گروه‌ها}} است: $1.',
 
 'versionrequired' => 'نسخهٔ $1 از نرم‌افزار مدیاویکی لازم است',
@@ -876,7 +876,7 @@ $2',
 'createacct-yourpasswordagain-ph' => 'گذرواژه را وارد کنید برای بار دوم',
 'remembermypassword' => 'گذرواژه را (تا حداکثر $1 {{PLURAL:$1|روز|روز}}) در این رایانه به خاطر بسپار',
 'userlogin-remembermypassword' => 'من را واردشده نگه‌دار',
-'userlogin-signwithsecure' => 'از ارتباط امن استفاده کن',
+'userlogin-signwithsecure' => 'از ورود امن استفاده کنید',
 'securelogin-stick-https' => 'پس از ورود به سامانه به HTTPS متصل بمان',
 'yourdomainname' => 'دامنهٔ شما:',
 'password-change-forbidden' => 'شما نمی‌توانید گذرواژه‌ها را در این ویکی تغییر دهید.',
@@ -889,15 +889,15 @@ $2',
 'logout' => 'خروج از سامانه',
 'userlogout' => 'خروج از سامانه',
 'notloggedin' => 'به سامانه وارد نشده‌اید',
-'userlogin-noaccount' => 'Ø¢Û\8cا Ø­Ø³Ø§Ø¨ی ندارید؟',
-'userlogin-joinproject' => 'بÙ\87 {{SITENAME}} Ø¨Ù¾Û\8cÙ\88Ù\86دÛ\8cد',
+'userlogin-noaccount' => 'حساب Ú©Ø§Ø±Ø¨Ø±ی ندارید؟',
+'userlogin-joinproject' => 'در {{SITENAME}} Ù\86اÙ\85â\80\8cÙ\86Ù\88Û\8cسÛ\8c Ú©Ù\86Û\8cد!',
 'nologin' => 'حساب کاربری ندارید؟ $1.',
 'nologinlink' => 'یک حساب کاربری جدید بسازید',
 'createaccount' => 'ایجاد حساب کاربری',
 'gotaccount' => 'حساب کاربری دارید؟ $1.',
 'gotaccountlink' => 'به سامانه وارد شوید',
 'userlogin-resetlink' => 'جزئیات ورود را فراموش کرده‌اید؟',
-'userlogin-resetpassword-link' => 'گذرواژه را ریست کن',
+'userlogin-resetpassword-link' => 'گذرواژه‌تان را فراموش کردید؟',
 'helplogin-url' => 'Help:ورود به سامانه',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|راهنمای ورود به سامانه]]',
 'createacct-join' => 'اطلاعاتتان را در زیر وارد کنید',
@@ -1261,6 +1261,7 @@ $2
 به نظرمی‌رسد که صفحه حذف شده باشد.',
 'edit-conflict' => 'تعارض ویرایشی.',
 'edit-no-change' => 'ویرایش شما نادیده گرفته شد، زیرا تغییری در متن داده نشده بود.',
+'postedit-confirmation' => 'ویرایش شما ذخیره شد.',
 'edit-already-exists' => 'امکان ساختن صفحهٔ جدید وجود ندارد.
 این صفحه از قبل وجود داشته‌است.',
 'defaultmessagetext' => 'متن پیش‌فرض پیغام',
@@ -1509,7 +1510,6 @@ $1",
 'searchmenu-legend' => 'گزینه‌های جستجو',
 'searchmenu-exists' => "'''صفحه‌ای با عنوان \"[[:\$1]]\" در این ویکی وجود دارد.'''",
 'searchmenu-new' => "'''صفحهٔ «[[:$1]]» را در این ویکی بسازید!'''",
-'searchhelp-url' => 'Help:محتوا',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|مرور صفحه‌های با این پیشوند]]',
 'searchprofile-articles' => 'صفحه‌های محتوایی',
 'searchprofile-project' => 'صفحه‌های راهنما و پروژه',
@@ -1675,7 +1675,7 @@ $1",
 'prefs-diffs' => 'تفاوت‌ها',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'نشانی رایانامه معتبر به نظر می رسد',
+'email-address-validity-valid' => 'نشانی رایانامه معتبر به نظر میرسد',
 'email-address-validity-invalid' => 'نشانی رایانامهٔ معتبر وارد کنید',
 
 # User rights
@@ -3222,7 +3222,7 @@ $1',
 'tooltip-n-mainpage' => 'مشاهدهٔ صفحهٔ اصلی',
 'tooltip-n-mainpage-description' => 'مشاهدهٔ صفحهٔ اصلی',
 'tooltip-n-portal' => 'پیرامون پروژه، آنچه می‌توانید انجام دهید و اینکه چه چیز را کجا پیدا کنید',
-'tooltip-n-currentevents' => 'یافتن اطلاعات پیش‌زمینه پیرامون رویدادهای کنونی',
+'tooltip-n-currentevents' => 'یافتن اطلاعات پس‌زمینه پیرامون رویدادهای کنونی',
 'tooltip-n-recentchanges' => 'فهرستی از تغییرات اخیر ویکی',
 'tooltip-n-randompage' => 'آوردن یک صفحهٔ تصادفی',
 'tooltip-n-help' => 'مکانی برای دریافتن',
index 53168b0..1778e13 100644 (file)
@@ -12,6 +12,7 @@
  * @author Cimon Avaro
  * @author Crt
  * @author ElmA
+ * @author Geitost
  * @author Harriv
  * @author Hyperborean
  * @author Jaakonam
@@ -513,6 +514,7 @@ $messages = array(
 'create-this-page' => 'Luo tämä sivu',
 'delete' => 'Poista',
 'deletethispage' => 'Poista tämä sivu',
+'undeletethispage' => 'Palauta tämä sivu',
 'undelete_short' => 'Palauta {{PLURAL:$1|yksi muokkaus|$1 muokkausta}}',
 'viewdeleted_short' => 'Näytä {{PLURAL:$1|poistettu muokkaus|$1 poistettua muokkausta}}',
 'protect' => 'Suojaa',
@@ -566,7 +568,6 @@ $1',
 'disclaimers' => 'Vastuuvapaus',
 'disclaimerpage' => 'Project:Vastuuvapaus',
 'edithelp' => 'Muokkausohjeet',
-'edithelppage' => 'Help:Kuinka sivuja muokataan',
 'helppage' => 'Help:Sisällys',
 'mainpage' => 'Etusivu',
 'mainpage-description' => 'Etusivu',
@@ -707,6 +708,8 @@ $2',
 'namespaceprotected' => "Et voi muokata sivuja nimiavaruudessa '''$1'''.",
 'customcssprotected' => 'Sinulla ei ole oikeutta muuttaa tätä CSS-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
 'customjsprotected' => 'Sinulla ei ole oikeutta muuttaa tätä JavaScript-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
+'mycustomcssprotected' => 'Sinulla ei ole oikeutta muokata tätä CSS-sivua.',
+'mycustomjsprotected' => 'Sinulla ei ole oikeutta muokata tätä JavaScript-sivua.',
 'ns-specialprotected' => 'Toimintosivuja ei voi muokata.',
 'titleprotected' => "Käyttäjä [[User:$1|$1]] on suojannut tämän sivunimen, ja sivua ei voi luoda.
 Syynä on: ''$2''.",
@@ -758,7 +761,7 @@ Huomaa, että jotkut sivut saattavat näkyä edelleen kuin olisit kirjautunut si
 'notloggedin' => 'Et ole kirjautunut',
 'userlogin-noaccount' => 'Eikö sinulla vielä ole käyttäjätunnusta?',
 'userlogin-joinproject' => 'Liity {{GRAMMAR:illative|{{SITENAME}}}}',
-'nologin' => "Jos sinulla ei ole vielä käyttäjätunnusta, '''$1'''.",
+'nologin' => 'Jos sinulla ei ole vielä käyttäjätunnusta, $1.',
 'nologinlink' => 'voit luoda sellaisen',
 'createaccount' => 'Luo uusi käyttäjätunnus',
 'gotaccount' => "Jos sinulla on jo tunnus, voit '''$1'''.",
@@ -825,7 +828,7 @@ Tästä johtuen tästä IP-osoitteesta ei voi tällä hetkellä luoda uusia tunn
 'cannotchangeemail' => 'Tunnusten sähköpostiosoitteita ei voi muuttaa tässä wikissä.',
 'emaildisabled' => 'Tältä sivustolta ei voi lähettää sähköpostia.',
 'accountcreated' => 'Käyttäjätunnus luotiin',
-'accountcreatedtext' => 'Käyttäjän $1 käyttäjätunnus luotiin.',
+'accountcreatedtext' => 'Käyttäjätunnus [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|keskustelu]]) luotiin.',
 'createaccount-title' => 'Tunnuksen luominen {{GRAMMAR:illative|{{SITENAME}}}}',
 'createaccount-text' => 'Joku on luonut tunnuksen $2 {{GRAMMAR:illative|{{SITENAME}}}} ($4).
 Tunnuksen $2 salasana on $3. Kirjaudu sisään ja vaihda salasanasi.
@@ -865,6 +868,7 @@ Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikai
 # Special:PasswordReset
 'passwordreset' => 'Salasanan alustus',
 'passwordreset-text-one' => 'Täytä tämä lomake vaihtaaksesi salasanasi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Täytä yksi datakentistä alustaaksesi salasanasi.}}',
 'passwordreset-legend' => 'Salasanan vaihto',
 'passwordreset-disabled' => 'Salasanojen alustus ei ole mahdollista tässä wikissä.',
 'passwordreset-emaildisabled' => 'Sähköpostitoiminnot on poistettu käytöstä tässä wikissä.',
@@ -1336,7 +1340,6 @@ $1 {{int:pipe-separator}} $2',
 'searchmenu-legend' => 'Hakuasetukset',
 'searchmenu-exists' => "'''Tässä wikissä on sivu nimellä [[:$1]].'''",
 'searchmenu-new' => "'''Luo sivu ''[[:$1]]'' tähän wikiin.'''",
-'searchhelp-url' => 'Help:Sisällys',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Selaa sivuja tällä etuliitteellä]]',
 'searchprofile-articles' => 'Sisältösivut',
 'searchprofile-project' => 'Ohje- ja projektisivut',
@@ -1520,6 +1523,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
 'userrights-changeable-col' => 'Ryhmät, joita voit muuttaa',
 'userrights-unchangeable-col' => 'Ryhmät, joita et voi muuttaa',
 'userrights-conflict' => 'Päällekkäinen käyttöoikeuksien muutos! Ole hyvä ja tee muutoksesi uudestaan.',
+'userrights-removed-self' => 'Poistit onnistuneesti omat oikeutesi. Tämän myötä sinulla ei ole enää oikeutta käyttää tätä sivua.',
 
 # Groups
 'group' => 'Ryhmä',
@@ -1590,6 +1594,8 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
 'right-editusercssjs' => 'Muokata toisten käyttäjien CSS- ja JavaScript-tiedostoja',
 'right-editusercss' => 'Muokata toisten käyttäjien CSS-tiedostoja',
 'right-edituserjs' => 'Muokata toisten käyttäjien JavaScript-tiedostoja',
+'right-editmyusercss' => 'Muokata omia CSS-tiedostojaan',
+'right-editmyuserjs' => 'Muokata omia JavaScript-tiedostojaan',
 'right-rollback' => 'Palauttaa nopeasti käyttäjän viimeisimmät muokkaukset sivuun',
 'right-markbotedits' => 'Kumota muokkauksia bottimerkinnällä',
 'right-noratelimit' => 'Ohittaa nopeusrajoitukset',
@@ -1829,7 +1835,7 @@ $1',
 'upload-file-error' => 'Sisäinen virhe',
 'upload-file-error-text' => 'Väliaikaistiedoston luominen epäonnistui. Ota yhteyttä sivuston [[Special:ListUsers/sysop|ylläpitäjään]].',
 'upload-misc-error' => 'Virhe',
-'upload-misc-error-text' => 'Tiedoston etälähetys ei onnistunut. Varmista, että antamasi osoite on oikein ja toimiva. Jos virhe ei katoa, ota yhteyttä sivuston ylläpitäjään.',
+'upload-misc-error-text' => 'Tiedoston etälähetys ei onnistunut. Varmista, että antamasi osoite on oikein ja toimiva. Jos virhe ei katoa, ota yhteyttä sivuston [[Special:ListUsers/sysop|ylläpitäjään]].',
 'upload-too-many-redirects' => 'URL sisälsi liian monta ohjausta',
 'upload-unknown-size' => 'Tuntematon koko',
 'upload-http-error' => 'HTTP-virhe: $1',
@@ -2563,7 +2569,7 @@ $1',
 'mycontris' => 'Omat muokkaukset',
 'contribsub2' => 'Käyttäjän $1 ($2) muokkaukset',
 'nocontribs' => 'Näihin ehtoihin sopivia muokkauksia ei löytynyt.',
-'uctop' => ' (uusin)',
+'uctop' => '(uusin)',
 'month' => 'Kuukausi',
 'year' => 'Vuosi',
 
index e9738ea..9a25e15 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Diupwijk
  * @author EileenSanda
+ * @author Geitost
  * @author Krun
  * @author Quackor
  * @author S.Örvarr.S
@@ -218,6 +219,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'des',
+'january-date' => 'Januar $1',
+'february-date' => 'Februar $1',
+'march-date' => 'Mars $1',
+'april-date' => 'Apríl $1',
+'may-date' => 'Maj $1',
+'june-date' => 'Juni $1',
+'july-date' => 'Juli $1',
+'august-date' => 'August $1',
+'september-date' => 'September $1',
+'october-date' => 'Oktober $1',
+'november-date' => 'November $1',
+'december-date' => 'Desember $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Bólkur|Bólkar}}',
@@ -299,6 +312,7 @@ $messages = array(
 'create-this-page' => 'Stovna hesa síðuna',
 'delete' => 'Strika',
 'deletethispage' => 'Strika hesa síðuna',
+'undeletethispage' => 'Endurskapað hesa síðuna',
 'undelete_short' => 'Ógilda striking av {{PLURAL:$1|einari rætting|$1 broytingum}}',
 'viewdeleted_short' => 'Vís {{PLURAL:$1|eina strikaða broyting|$1 strikaðar broytingar}}',
 'protect' => 'Friða',
@@ -352,7 +366,6 @@ $1',
 'disclaimers' => 'Fyrivarni',
 'disclaimerpage' => 'Project:Generelt fyrivarni',
 'edithelp' => 'Rættingarhjálp',
-'edithelppage' => 'Help:Rætting',
 'helppage' => 'Help:Innihald',
 'mainpage' => 'Forsíða',
 'mainpage-description' => 'Forsíða',
@@ -503,6 +516,8 @@ $2',
 'namespaceprotected' => 'Tú hevur ikki loyvi til at rætta síður í $1 navnateiginum.',
 'customcssprotected' => 'Tú hevur ikki loyvi til at rætta hesa CSS síðuna, tí hon inniheldur persónligar innstillingar hjá øðrum brúkara.',
 'customjsprotected' => 'Tú hevur ikki loyvir til at rætta hesa JavaScript síðuna, tí hon inniheldur persónligar innstillingar hjá øðrum brúkara.',
+'mycustomcssprotected' => 'Tú hevur ikki loyvi til at rætta hesa CSS síðuna.',
+'mycustomjsprotected' => 'Tú hevur ikki loyvi til at rætta hesa JavaScript síðuna.',
 'ns-specialprotected' => 'Serstakar síður kunnu ikki rættast.',
 'titleprotected' => '[[User:$1|$1]] hevur vart hetta heitið frá skapan.
 Givin orsøk er "\'\'$2\'\'".',
@@ -537,8 +552,8 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'createacct-yourpasswordagain' => 'Váttað loyniorðið',
 'createacct-yourpasswordagain-ph' => 'Skrivað loyniorðið enn einaferð',
 'remembermypassword' => 'Minst til logg inn hjá mær á hesum kaganum (í mesta lagi í $1 {{PLURAL:$1|dag|dagar}})',
-'userlogin-remembermypassword' => 'Minst til mín',
-'userlogin-signwithsecure' => 'Rita inn við tryggum ambætara',
+'userlogin-remembermypassword' => 'Lat meg vera innritaðan',
+'userlogin-signwithsecure' => 'Nýt trygt samband',
 'securelogin-stick-https' => 'Varðveit sambandið við HTTPS eftir logg inn',
 'yourdomainname' => 'Títt domene:',
 'password-change-forbidden' => 'Tú kanst ikki broyta loyniorð á hesi wiki.',
@@ -553,12 +568,13 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'notloggedin' => 'Ikki ritað inn',
 'userlogin-noaccount' => 'Hevur tú ikki nakra kontu?',
 'userlogin-joinproject' => 'Meldað teg til {{SITENAME}}',
-'nologin' => "Hevur tú ikki eina kontu? '''$1'''.",
+'nologin' => 'Hevur tú ikki eina kontu? $1.',
 'nologinlink' => 'Stovna eina kontu',
 'createaccount' => 'Stovna nýggja kontu',
 'gotaccount' => "Hevur tú longu eina kontu? '''$1'''.",
 'gotaccountlink' => 'Rita inn',
 'userlogin-resetlink' => 'Hevur tú gloymt tínar logg inn upplýsingar',
+'userlogin-resetpassword-link' => 'Nullstilla títt loyniorð',
 'helplogin-url' => 'Help:Innritan',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjálp til innritan]]',
 'createacct-join' => 'Skrivað tínar upplýsingar niðanfyri.',
@@ -569,12 +585,14 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}}-innstillingar]].'
 'createacct-realname' => 'Veruligt navn (valfrítt)',
 'createaccountreason' => 'Orsøk:',
 'createacct-reason' => 'Orsøk',
+'createacct-reason-ph' => 'Hví upprættar tú eina nýggja kontu',
 'createacct-captcha' => 'Trygdarkekk',
 'createacct-imgcaptcha-ph' => 'Skriva tekstin ið tú sært omanfyri',
+'createacct-submit' => 'Upprætta tína kontu',
 'createacct-benefit-heading' => '{{SITENAME}} er gjørd av fólki sum tær.',
-'createacct-benefit-body1' => 'rættingar',
-'createacct-benefit-body2' => 'síður',
-'createacct-benefit-body3' => 'seinastu høvundar',
+'createacct-benefit-body1' => '{{PLURAL:$1|rætting|rættingar}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|síða|síður}}',
+'createacct-benefit-body3' => 'seinasti/u {{PLURAL:$1|høvundur|høvundar}}',
 'badretype' => 'Loyniorðið tú hevur skriva er ikki rætt.',
 'userexists' => 'Brúkaranavnið sum tú valdi er longu í nýtslu.
 Vinarliga vel eitt annað navn.',
@@ -635,7 +653,7 @@ Vinarliga skriva t-post bústað í røttum formati ella lat handa teigin vera t
 'cannotchangeemail' => 'T-post adressur, sum eru knýttar at brúkarakontum, kunnu ikki broytast á hesi wiki.',
 'emaildisabled' => 'Henda heimasíðan kann ikki senda teldupostar.',
 'accountcreated' => 'Konto upprættað',
-'accountcreatedtext' => 'Brúkarakontan hjá $1 er nú upprættað.',
+'accountcreatedtext' => 'Henda brúkarakontan fyri [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|kjak]]) er nú upprættað.',
 'createaccount-title' => 'Upprætta brúkarakonto á {{SITENAME}}',
 'createaccount-text' => 'Onkur hevur stovnað eina konto fyri tína teldupost adressu á {{SITENAME}} ($4) nevnd "$2", við loyniorðinum "$3".
 Tú eigur at innrita og broyta loyniorðið nú.
@@ -671,14 +689,15 @@ Nú verður tú ritaður inn...',
 'resetpass-wrong-oldpass' => 'Ógyldug fyribils ella verandi loyniorð.
 Møguliga hevur tú longu broytt títt loyniorð ella biðið um eitt nýtt fyribils loyniorð.',
 'resetpass-temp-password' => 'Fyribils loyniorð',
+'resetpass-abort-generic' => 'Broyting av loyniorði bleiv avbrotin av einari víðkan.',
 
 # Special:PasswordReset
 'passwordreset' => 'Nullstilla loyniorðið',
-'passwordreset-text' => 'Útfyll hetta skjalið fyri at nullstilla títt loyniorð.',
+'passwordreset-text-one' => 'Útfyll henda teigin fyri at nullstilla títt loyniorð.',
+'passwordreset-text-many' => '{{PLURAL:$1|Skriva eitt av pettunum av dáta fyri at nullstilla títt loyniorð.}}',
 'passwordreset-legend' => 'Nulstilla loyniorðið',
 'passwordreset-disabled' => 'Tað ber ikki til at nullstilla loyniorðið á hesi wiki.',
 'passwordreset-emaildisabled' => 'Teldupost funksjónir eru óvirknar á hesi wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Skriva ein av upplýsingunum niðanfyri}}',
 'passwordreset-username' => 'Brúkaranavn:',
 'passwordreset-domain' => 'Umdømi (domain):',
 'passwordreset-capture' => 'Sí tann endaliga t-postin?',
@@ -920,6 +939,7 @@ Ongin frágreiðing finst.',
 Tað sær út til at hon er blivin strikað.',
 'edit-conflict' => 'Rættingar trupulleiki (konflikt).',
 'edit-no-change' => 'Tín rætting var sæð burtur frá, tí ongin broyting varð gjørd í tekstinum.',
+'postedit-confirmation' => 'Tín rætting varð goymd.',
 'edit-already-exists' => 'Tað var ikki møguligt at upprætta nýggja síðu.
 Síðan er longu til.',
 'defaultmessagetext' => 'Standard boðtekstur',
@@ -936,6 +956,9 @@ Um tú hevur ritað inn, so kanst tú sláa hesa ávaring frá í "Rættingar" p
 'content-model-css' => 'CSS',
 
 # Parser/template warnings
+'expensive-parserfunction-warning' => "'''Ávaring:''' Henda síðan inniheldur ov nógvar útrokningstungar parsara-funksjónskall.
+
+Hon eigur at hava minni enn $2 {{PLURAL:$2|kall}}, tað {{PLURAL:$1|er nú $1|eru nú $1 kall}}.",
 'expensive-parserfunction-category' => 'Síður við ov nógvum dýrum parsara funktiónskallum',
 'post-expand-template-inclusion-warning' => "'''Ávaring:''' Tað eru ov nógvar skabilónir á hesi síðu. 
 Nakrar skabilónir vera ikki vístar.",
@@ -944,6 +967,7 @@ Nakrar skabilónir vera ikki vístar.",
 Hetta parametur er tí ikki tikið við.",
 'post-expand-template-argument-category' => 'Síður har skabilón parametur (template arguments) ikki eru tikin við',
 'parser-template-loop-warning' => 'Skapilónssloyfa funnin: [[$1]]',
+'language-converter-depth-warning' => 'Markið fyri dýpd á málkonverteraranum er farið út um mark ($1)',
 'node-count-exceeded-category' => 'Síður har talið av notum (node) er ov høgt',
 'node-count-exceeded-warning' => 'Síðan hevur og høgt tal av notum (node-count)',
 'expansion-depth-exceeded-category' => 'Síður ið fara yvir loyvdu víðkanar-dýpdina',
@@ -1062,12 +1086,23 @@ Tú hevur ikki atgongd til hann.',
 'revdelete-edit-reasonlist' => 'Rætta strikingar orsøkir',
 'revdelete-offender' => 'Høvundurin av hesi endurskoðan:',
 
+# Suppression log
+'suppressionlog' => 'Samanpressingarloggur',
+'suppressionlogtext' => 'Niðanfyri sæst eitt yvirlit yvir slettingar og sperringar, sum fevnir um innihald, sum er fjalt fyri administratorum.
+Hygg at [[Special:BlockList|sperringslistanum]] fyri at síggja listan yvir verandi bann og sperringar.',
+
 # History merging
 'mergehistory' => 'Samantvinna søgurnar hjá síðunum',
 'mergehistory-header' => 'Henda síðan letur teg samanflætta versjónirnar frá søguni av einari síðu til eina nýggjari síðu.
 Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni.',
 'mergehistory-box' => 'Samantvinna versjónirnar av tveimum síðum:',
 'mergehistory-from' => 'Keldusíða:',
+'mergehistory-into' => 'Komusíða:',
+'mergehistory-list' => 'Rættingarsøgur, sum kunnu samanflættast',
+'mergehistory-go' => 'Vís rættingar ið kunnu samantvinnast',
+'mergehistory-submit' => 'Samanflætta versjónirnar',
+'mergehistory-empty' => 'Ongar versjónir kunnu samanflættast.',
+'mergehistory-success' => '$3 {{PLURAL:$3|versjón|versjónir}} av [[:$1]] er samanflættað við [[:$2]].',
 'mergehistory-no-source' => 'Keldu síðan $1 er ikki til.',
 'mergehistory-no-destination' => 'Destinatiónssíðan $1 er ikki til.',
 'mergehistory-invalid-source' => 'Keldusíðan má hava eitt gyldugt heiti.',
@@ -1115,7 +1150,6 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'searchmenu-legend' => 'Leiti møguleikar',
 'searchmenu-exists' => "'''Tað er longu ein síða sum eitur \"[[:\$1]]\" á hesi wiki.'''",
 'searchmenu-new' => "'''Stovna síðuna \"[[:\$1]]\" á hesi wiki!'''",
-'searchhelp-url' => 'Help:Innihald',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita í síðum við hesum prefiksinum (byrjan av orðinum)]]',
 'searchprofile-articles' => 'Innihaldssíður',
 'searchprofile-project' => 'Hjálpar og verkætlanar síður',
@@ -1159,12 +1193,14 @@ Tú kanst royna at brúka ''all:'' sum fyrsta stavilsi fyri at søkja í øllum
 'searchdisabled' => '{{SITENAME}} leitan er sett úr gildi.
 Tú kanst leita via Google ímeðan.
 Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og ikki dagført.',
+'search-error' => 'Ein feilur hendi undir leitanini: $1',
 
 # Preferences page
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal av rættingum:',
 'prefsnologin' => 'Tú hevur ikki ritað inn',
+'prefsnologintext' => 'Tú mást vera <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} innritað/ur]</span> fyri at broyta brúkarainnstillingar.',
 'changepassword' => 'Broyt loyniorð',
 'prefs-skin' => 'Hamur',
 'skin-preview' => 'Forskoðan',
@@ -1202,6 +1238,9 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'recentchangesdays-max' => 'Í mesta lagi $1 {{PLURAL:$1|dagur|dagar}}',
 'recentchangescount' => 'Tal av rættingum at vísa í standard:',
 'prefs-help-recentchangescount' => 'Íroknað seinastu broytingar, søgur hjá síðum og loggar.',
+'prefs-help-watchlist-token' => 'Um tú fyllir út henda teigin við einum tryggum lykli, so verður ein RSS feed upprættaður til tín eftirlitslista.
+Ein og hvør ið kennir lykilin í hesum teiginum, hevur møguleika fyri at lesa tín eftirlitslista, so vel ein trygt virði.
+Her er eitt tilvildarliga valdt virði, sum tú kanst brúka: $1',
 'savedprefs' => 'Tínar innstillingar eru goymdar.',
 'timezonelegend' => 'Tíðar sona:',
 'localtime' => 'Lokal tíð:',
@@ -1240,6 +1279,7 @@ Tú kanst ikki angra, tá tað fyrst er gjørt.',
 'prefs-registration' => 'Skrásett tíðspunkt:',
 'yourrealname' => 'Títt navn*:',
 'yourlanguage' => 'Mál til brúkaraflatu:',
+'yourvariant' => 'Málvariantur fyri innihald:',
 'yournick' => 'Nýggj undirskrift:',
 'prefs-help-signature' => 'Viðmerkingar á kjaksíðum eiga at vera undirskrivaðar við "<nowiki>~~~~</nowiki>", sum verður gjørt um til tína undirskrift og eitt dagfestingarmerki.',
 'badsig' => 'Ógyldug ráð undirskrift.
@@ -1352,9 +1392,14 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'right-unblockself' => 'Taka burtur sperring av sær sjálvum',
 'right-protect' => 'Broyt verjustøður og rætta vardar síður',
 'right-editprotected' => 'Rætta vardar síður (uttan niðurarvaða verju)',
+'right-editinterface' => 'Rætta brúkaramarkamótið',
 'right-editusercssjs' => 'Rætta CSS og JavaScript fílur hjá øðrum brúkarum',
 'right-editusercss' => 'Rætta CSS fílur hjá øðrum brúkarum',
 'right-edituserjs' => 'Rætta JavaScript fílur hjá øðrum brúkarum',
+'right-editmyusercss' => 'Rætta tínar egnu brúkara CSS fílur',
+'right-editmyuserjs' => 'Rætta tínar egnu brúkara JavaScript fílur',
+'right-rollback' => 'Rulla skjótt aftur (tak burtur) rættingarnar hjá tí seinasta brúkaranum á einari ávísari síðu',
+'right-markbotedits' => 'Markera afturrullaðar rættingar sum rættingar frá einum botti',
 'right-import' => 'Innflyt síður frá øðrum wikium',
 'right-patrol' => 'Marka broytingar hjá øðrum sum eftirkannaðar',
 'right-unwatchedpages' => 'Sí lista við síðum sum ikki eru eftiransaðar',
@@ -1486,11 +1531,15 @@ Vinarliga gev fíluni nýtt navn og royn at senda hana upp (uploada) enn einafer
 'filename-toolong' => 'Fílunøvn mugu ikki vera longri enn 240 bytes.',
 'badfilename' => 'Myndin er umnevnd til "$1".',
 'filetype-badmime' => 'Fílur av slagnum MIME "$1" eru ikki loyvd at verða send up (uploada).',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|er ikki eitt loyvt fíluslag|eru ikki loyvd fílusløg}}.
+Loyvt/loyvd {{PLURAL:$3|fíluslag er|fílusløg eru}} $2.',
 'filetype-missing' => 'Fílan hevur ongan enda (sum t.d. ".jpg").',
 'empty-file' => 'Fílan sum tú sendi upp var tóm.',
 'file-too-large' => 'Fílan sum tú sendi inn var ov stór.',
 'filename-tooshort' => 'Fílunavnið er ov stutt.',
 'filetype-banned' => 'Hetta slagi av fílum er bannað.',
+'verification-error' => 'Henda fílan varð ikki góðkend av fílugóðkenningini.',
+'hookaborted' => 'Broytingin ið tú royndi at gera var tikin burtur av einari leingjan (extension).',
 'illegal-filename' => 'Hetta fílunavnið er ikki loyvt.',
 'overwrite' => 'Tað er ikki loyvi til at yvirskriva eina verandi fílu.',
 'unknown-error' => 'Ein ókend villa kom fyri.',
@@ -1499,6 +1548,9 @@ Vinarliga gev fíluni nýtt navn og royn at senda hana upp (uploada) enn einafer
 'large-file' => 'Tað verður viðmælt, at fílur ikki eru størri enn $1;
 henda fílin er $2.',
 'largefileserver' => 'Henda fílan er størri enn servarin er innstillaður til at loyva.',
+'emptyfile' => 'Fílan ið tú legði út sær út til at vera tóm.
+Hetta kann skyldast ein sláfeil í fílunavninum.
+Vinarliga eftirkanna um tú veruliga ynskir at leggja hesa fíluna út.',
 'windows-nonascii-filename' => "Henda wiki'in stuðlar ikki fílunøvn við serstøkum bókstavum/teknum.",
 'fileexists' => 'Ein fíla við hesum navninum er longu til, vinarliga kanna eftir <strong>[[:$1]]</strong> um tú ivast í, um tú ynskir at broyta tað.
 [[$1|thumb]]',
@@ -1510,11 +1562,26 @@ Fyri at tín frágreiðing skal síggjast á síðuni, noyðist tú at skriva ta
 * Heitið á fíluni tú leggur út: <strong>[[:$1]]</strong>
 * Heitið á fílu ið longu finst: <strong>[[:$2]]</strong>
 Vinarliga vel eitt annað navn.',
+'fileexists-thumbnail-yes' => "Fílan sær út til at vera ein minka stødd ''(thumbnail)''.
+[[$1|thumb]]
+Vinarliga kanna fíluna <strong>[[:$1]]</strong>.
+Um tann kannað fílan er tann sama myndin av einari uppruna stødd, so er tað ikki neyðugt at leggja út ein eyka thumbnail.",
+'file-thumbnail-no' => "Fílunavnið byrjar við <strong>$1</strong>.
+Tað sær út til at vera ein mynd av einari minkaðari stødd ''(thumbnail)''.
+Um tú hevur hesa myndina í fullari upploysn, legg so hesa út, um ikki broyt so vinarliga fílunavnið.",
+'fileexists-forbidden' => 'Ein fíla við hesum navninum finst longu og kann ikki verða yvirskivað.
+Um tú álíkavæl ynskir at leggja út tína fílu, vinarliga far so aftur og vel eitt annað navn.
+[[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Ein fíla við tí sama navninum finst longu í felags fílusavninum.
+Um tú enn ynskir at leggja út tína fílu, vinarliga far so aftur og vel eitt annað navn.
+[[File:$1|thumb|center|$1]]',
 'file-deleted-duplicate' => 'Ein fíla, sum er líka sum henda ([[:$1]]) er fyrr blivin strikað.
 Tú eigur at kanna eftir strikingarsøguna hjá hesi fílu, áðrenn tú heldur áframm við at leggja hana út enn einaferð.',
 'uploadwarning' => 'Ávaring',
 'savefile' => 'Goym fílu',
 'uploadedimage' => 'sent "[[$1]]" upp',
+'overwroteimage' => 'legði út eina nýggja versjón av "[[$1]]"',
+'uploadfromurl-queued' => 'Tín útlegging er komin í bíðirøð.',
 'uploadvirus' => 'Fílan inniheldur ein virus!
 Smálutir: $1',
 'upload-source' => 'Keldufíla',
@@ -1552,6 +1619,8 @@ Um trupulleikin heldur fram, set teg so vinarliga í samband við ein [[Special:
 'backend-fail-backup' => 'Tað bar ikki til at taka backup av fílu "$1".',
 'backend-fail-notexists' => 'Fílan $1 er ikki til.',
 'backend-fail-notsame' => 'Ein ikki-eins fíla finst longu á "$1".',
+'backend-fail-delete' => 'Tað bar ikki til at sletta fílu "$1".',
+'backend-fail-describe' => 'Tað bar ikki til at broyta metadáta fyri fílu "$1".',
 'backend-fail-alreadyexists' => 'Fílan "$1" finst longu.',
 'backend-fail-store' => 'Kundi ikki goyma fílu $1 á $2.',
 'backend-fail-copy' => 'Kundi ikki avrita fílu $1 til $2.',
@@ -1562,6 +1631,7 @@ Um trupulleikin heldur fram, set teg so vinarliga í samband við ein [[Special:
 'backend-fail-read' => 'Kundi ikki lesa fílu $1.',
 'backend-fail-create' => 'Kundi ikki skriva fílu $1.',
 'backend-fail-maxsize' => 'Tað bar ikki til at lesa fíluna "$1" tí hon er størri enn {{PLURAL:$2|eitt byte|$2 bytes}}.',
+'backend-fail-readonly' => 'Goymslu backend "$1" er í løtuni í "bara-lesa" støðu. Orsøkin til hetta er: "\'\'$2\'\'"',
 
 # Lock manager
 'lockmanager-notlocked' => 'Kundi ikki lata upp "$1"; hon er ikki stongd.',
@@ -1576,6 +1646,7 @@ Um trupulleikin heldur fram, set teg so vinarliga í samband við ein [[Special:
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Atgongd noktað',
+'img-auth-badtitle' => 'Tað bar ikki til at gera eitt heiti útfrá "$1".',
 'img-auth-nologinnWL' => 'Tú ert ikki ritað/ur inn, og "$1" er ikki á hvítalista.',
 'img-auth-nofile' => 'Fílan "$1" er ikki til',
 'img-auth-isdir' => 'Tú roynir at fáa atgongd til mappuna "$1".
@@ -1652,6 +1723,10 @@ Ein [[Special:WhatLinksHere/$2|fullur listi]] er tøkur.',
 Vinarliga hygg at [$2 fílu frágreiðingarsíðu] fyri nærri kunning.',
 'sharedupload-desc-here' => 'Henda fíla er frá $1 og kann verða brúka í øðrum verkætlanum.
 Frágreiðingin á [$2 fílu frágreiðingar síðu] er víst her niðanfyri.',
+'sharedupload-desc-edit' => 'Henda fílan er frá $1 og kann vera brúkt av øðrum verkætlanum.
+Kanska ynskir tú at rætta frágreiðingina hjá fíluni á [$2 fílu frágreiðingarsíðuni] her.',
+'sharedupload-desc-create' => 'Henda fílan er frá $1 og kann vera brúkt av øðrum verkætlanum.
+Kanska ynskir tú at rætta frágreiðingina til fíluna á [$2 fílu frágreiðingarsíðuni] her.',
 'filepage-nofile' => 'Ongin fíla við hesum navninum finst.',
 'filepage-nofile-link' => 'Ongin fíla við hesum navninum finst, men tú kanst [$1 leggja hana út].',
 'uploadnewversion-linktext' => 'Legg eina nýggja versjón av hesi fílu út',
@@ -1660,7 +1735,13 @@ Frágreiðingin á [$2 fílu frágreiðingar síðu] er víst her niðanfyri.',
 'upload-disallowed-here' => 'Tú kanst ikki yvirskriva hesa fílu.',
 
 # File reversion
+'filerevert' => 'Endurstovna $1',
+'filerevert-legend' => 'Endurstovna fílu',
+'filerevert-intro' => "Tú ert í ferð við at endurstovna fílu '''[[Media:$1|$1]]''' til [$4 verssjónina sum hon sá út kl. $3, hin $2].",
 'filerevert-comment' => 'Orsøk:',
+'filerevert-defaultcomment' => 'Endurstovanð til versjón frá kl. $2, hin $1',
+'filerevert-submit' => 'Endurstovna',
+'filerevert-success' => "'''[[Media:$1|$1]]''' er blivið endurstovna til [$4 versjónina frá $2, kl. $3].",
 
 # File deletion
 'filedelete' => 'Strika $1',
@@ -1672,10 +1753,21 @@ Frágreiðingin á [$2 fílu frágreiðingar síðu] er víst her niðanfyri.',
 'filedelete-success' => "'''$1''' er blivin strikað.",
 'filedelete-success-old' => "Versjónin av '''[[Media:$1|$1]]''' frá kl. $3, hin $2 er blivið strikað.",
 'filedelete-nofile' => "'''$1''' er ikki til.",
+'filedelete-otherreason' => 'Onnur/aðrar orsøkir:',
+'filedelete-reason-otherlist' => 'Onnur orsøk',
+'filedelete-reason-dropdown' => '*Vanligar orsøkir til sletting
+** Brot á upphavsrættin
+** Fílan kemur fyri tvær ferðir',
+'filedelete-edit-reasonlist' => 'Rætta orsøkina til striking',
 'filedelete-maintenance-title' => 'Ógjørligt at sletta fílu',
 
 # MIME search
 'mimesearch' => 'MIME-leit',
+'mimetype' => 'MIME slag:',
+'download' => 'tak niður',
+
+# Unwatched pages
+'unwatchedpages' => 'Ikki eftiransaðar síður',
 
 # List redirects
 'listredirects' => 'Sýn ávísingar',
@@ -1709,12 +1801,16 @@ Frágreiðingin á [$2 fílu frágreiðingar síðu] er víst her niðanfyri.',
 'disambiguations' => 'Síður sum vísa til síður við fleirfaldum týdningi',
 'disambiguationspage' => 'Template:fleiri týdningar',
 
+'pageswithprop-submit' => 'Far',
+
 'doubleredirects' => 'Tvífaldað ávísing',
 'doubleredirectstext' => 'Henda síða gevur yvirlit yvir síður, sum vísa víðari til aðrar víðaristillaðar síður.
 Hvør linja inniheldur leinkjur til ta fyrstu og næstu víðaristillingina, eins væl og málið fyri tað næstu víðaristillingina, sum vanliga er tann "veruliga" endamáls síðan, sum tann fyrsta víðaristillingin átti at peika móti.
 <del>Útkrossaðir</del> postar eru loystir.',
 'double-redirect-fixed-move' => '[[$1]] er blivin flutt.
 Víðaristilling verður nú gjørd til [[$2]].',
+'double-redirect-fixed-maintenance' => 'Rætta dupulta umstýring frá [[$1]] til [[$2]].',
+'double-redirect-fixer' => 'Umstýringsrættari',
 
 'brokenredirects' => 'Brotnar ávísingar',
 'brokenredirectstext' => 'Hesar víðaristillingar slóða til síður, ið ikki eru til:',
@@ -1730,10 +1826,15 @@ Víðaristilling verður nú gjørd til [[$2]].',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|beit}}',
 'ncategories' => '$1 {{PLURAL:$1|bólkur|bólkar}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiir}}',
 'nlinks' => '$1 {{PLURAL:$1|slóð|slóðir}}',
 'nmembers' => '$1 {{PLURAL:$1|limur|limir}}',
 'nviews' => '$1 {{PLURAL:$1|skoðan|skoðanir}}',
+'nimagelinks' => 'Brúkt á $1 {{PLURAL:$1|síðu|síðum}}',
+'ntransclusions' => 'brúkt á $1 {{PLURAL:$1|síðu|síðum}}',
+'specialpage-empty' => 'Tað eru ongi úrslit fyri hesa rapportina.',
 'lonelypages' => 'Foreldraleysar síður',
+'lonelypagestext' => 'Hesar síður slóða ikki frá ella eru ikki tiknar við á aðrar síður á {{SITENAME}}.',
 'uncategorizedpages' => 'Óbólkaðar síður',
 'uncategorizedcategories' => 'Óbólkaðir bólkar',
 'uncategorizedimages' => 'Fílir sum ikki eru bólkaðar',
@@ -1747,13 +1848,22 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'wantedtemplates' => 'Ynsktar fyrimyndir',
 'mostlinked' => 'Síður við flest ávísingum',
 'mostlinkedcategories' => 'Bólkar við flestum ávísandi slóðum',
+'mostlinkedtemplates' => 'Mest slóðaðar-til fyrimyndir',
 'mostcategories' => 'Greinir við flest bólkum',
+'mostimages' => 'Mest leinkjaðar-til fílur',
+'mostinterwikis' => 'Síður við flestum interwiki-slóðum',
 'mostrevisions' => 'Greinir við flestum útgávum',
 'prefixindex' => 'Allar síður við forskoyti (prefiks)',
 'shortpages' => 'Stuttar síður',
 'longpages' => 'Langar síður',
 'deadendpages' => 'Gøtubotnssíður',
+'deadendpagestext' => 'Hesar síðurnar slóða ikki til aðrar síður í {{SITENAME}}.',
 'protectedpages' => 'Friðaðar síður',
+'protectedpagestext' => 'Hesar síður eru vardar móti flyting ella rætting',
+'protectedpagesempty' => 'Ongar síður eru í løtuni vardar á henda hátt.',
+'protectedtitles' => 'Vard heiti',
+'protectedtitlestext' => 'Hesi heiti er vard móti upprættan',
+'protectedtitlesempty' => 'Ongi heiti eru í løtuni vard á henda hátt.',
 'listusers' => 'Brúkaralisti',
 'listusers-editsonly' => 'Vís bara brúkarar sum hava gjørt rættingar',
 'listusers-creationsort' => 'Bólkað eftir stovningardegnum',
@@ -1767,6 +1877,7 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'unusedimagestext' => 'Fylgjandi fílur eru til, men eru ikki lagdar inn á nakra síðu.
 Vinarliga legg merki til, at vevsíður kunnu slóða til eina fílu við beinleiðis URL, og tí kann hon enn síggjast her, hóast at hon er í regluligari nýtslu.',
 'notargettitle' => 'Onki mál',
+'nopagetext' => 'Síðan ið tú leitar eftir er ikki til.',
 'pager-newer-n' => '{{PLURAL:$1|nýggjari 1|nýggjari $1}}',
 'pager-older-n' => '{{PLURAL:$1|eldri 1|eldri $1}}',
 'suppress' => 'Yvirlit',
@@ -1817,6 +1928,10 @@ Sí eisini [[Special:WantedCategories|ynsktir bólkar]].',
 'listusers-noresult' => 'Ongin brúkari var funnin.',
 
 # Special:ActiveUsers
+'activeusers' => 'Listi yvir aktivar brúkarar',
+'activeusers-intro' => 'Hetta er ein listi yvir brúkarar, ið høvdu okkurt slag av aktiviteti tann seinasta/teir seinastu $1 {{PLURAL:$1|dagin|dagarnar}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|handling|handlingar}} tann seinasta/teir seinastu {{PLURAL:$3|dagin|$3 dagarnar}}',
+'activeusers-from' => 'Vís brúkarar, ið byrja við:',
 'activeusers-hidebots' => 'Fjal bottar',
 'activeusers-hidesysops' => 'Fjal umboðsstjórar (administratorar)',
 'activeusers-noresult' => 'Ongir brúkarar funnir.',
@@ -1831,6 +1946,7 @@ Møguliga er [[{{MediaWiki:Listgrouprights-helppage}}|meira kunning]] um einstø
 'listgrouprights-rights' => 'Rættindi',
 'listgrouprights-helppage' => 'Help:Bólka rættindi',
 'listgrouprights-members' => '(limalisti)',
+'listgrouprights-addgroup' => 'Legg afturat {{PLURAL:$2|bólk|bólkar}}: $1',
 'listgrouprights-removegroup' => 'Tak burtur {{PLURAL:$2|bólk|bólkar}}: $1',
 'listgrouprights-addgroup-all' => 'Legg til allir bólkar',
 'listgrouprights-removegroup-all' => 'Tak burtur allir bólkar',
@@ -1845,6 +1961,8 @@ Møguliga er [[{{MediaWiki:Listgrouprights-helppage}}|meira kunning]] um einstø
 og hava virkandi teldupostadressu í [[Special:Preferences|innstillingum]] tínum
 fyri at senda teldupost til aðrar brúkarar.',
 'emailuser' => 'Send t-post til brúkara',
+'emailuser-title-target' => 'Send teldupost til henda {{GENDER:$1|brúkaran}}',
+'emailuser-title-notarget' => 'Send t-post til brúkara',
 'emailpage' => 'Send t-post til brúkara',
 'emailpagetext' => 'Tú kanst brúka skjalið niðanfyri til at senda ein teldupost til henda {{GENDER:$1|brúkara}}.
 Teldupost adressan sum tú skrivaði í [[Special:Preferences|tíni brúkara ynskir]] kemur síðan fram sum "Frá" adressan í teldupostinum, soleiðis at móttakarin kann svara beinleiðis til tín.',
@@ -1854,7 +1972,12 @@ Teldupost adressan sum tú skrivaði í [[Special:Preferences|tíni brúkara yns
 'noemailtitle' => 'Ongin t-post adressa',
 'noemailtext' => 'Hesin brúkarin hevur ikki upplýst eina gylduga t-post-adressu.',
 'nowikiemailtitle' => 'Ongin t-postur er loyvdur',
+'nowikiemailtext' => 'Hesin brúkarin hevur valt ikki at móttaka teldupost frá øðrum brúkarum.',
+'emailnotarget' => 'Ikki-eksisterandi ella ógyldugt brúkaranavn fyri móttakaran.',
+'emailtarget' => 'Skriva brúkaranavnið hjá móttakaranum',
 'emailusername' => 'Brúkaranavn:',
+'emailusernamesubmit' => 'Send',
+'email-legend' => 'Send eitt teldubræv til ein annan {{SITENAME}} brúkara',
 'emailfrom' => 'Frá:',
 'emailto' => 'Til:',
 'emailsubject' => 'Evni:',
@@ -1864,6 +1987,7 @@ Teldupost adressan sum tú skrivaði í [[Special:Preferences|tíni brúkara yns
 'emailccsubject' => 'Avrit av tínum boðum til $1: $2',
 'emailsent' => 'T-postur sendur',
 'emailsenttext' => 'Títt t-post boð er sent.',
+'emailuserfooter' => 'Hesin teldupostur var sendur av $1 til $2 við "Send teldupost" funksjónini á {{SITENAME}}.',
 
 # Watchlist
 'watchlist' => 'Eftirlitslisti',
@@ -1871,12 +1995,15 @@ Teldupost adressan sum tú skrivaði í [[Special:Preferences|tíni brúkara yns
 'watchlistfor2' => 'Fyri $1 $2',
 'nowatchlist' => 'Tú hevur ongar lutir í eftirlitinum.',
 'watchnologin' => 'Tú hevur ikki ritað inn',
+'addwatch' => 'Legg til eftirlitslista',
 'addedwatchtext' => 'Síðan  "[[:$1]]" er løgd undir [[Special:Watchlist|eftirlitslistan]] hjá tær.
 Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at síggja har.',
+'removewatch' => 'Tak burtur frá eftirlistslistanum',
 'removedwatchtext' => 'Síðan "[[:$1]]" er strikað úr [[Special:Watchlist|tínum eftirliti]].',
 'watch' => 'Eygleið',
 'watchthispage' => 'Hav eftirlit við hesi síðuni',
 'unwatch' => 'strika eftirlit',
+'unwatchthispage' => 'Halt uppat við at hava eftirlit',
 'notanarticle' => 'Ongin innihaldssíða',
 'watchnochange' => 'Ongin grein í tínum eftirliti er rætta innanfyri hetta tíðarskeiði.',
 'watchlist-details' => '{{PLURAL:$1|$1 síða|$1 síður}} á tínum vaktarlista, kjaksíður ikki íroknaðar.',
@@ -1890,7 +2017,17 @@ Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at sígg
 'watching' => 'Eftirlitir...',
 'unwatching' => 'Strikar eftirlit...',
 
+'enotif_reset' => 'Markera allar síður sum vitjaðar',
 'enotif_impersonal_salutation' => '{{SITENAME}}brúkari',
+'enotif_subject_deleted' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|slettað}} av $2',
+'enotif_subject_created' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|upprættað}} av $2',
+'enotif_subject_moved' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|flutt}} av $2',
+'enotif_subject_restored' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|endurupprættað}} av $2',
+'enotif_subject_changed' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|broytt}} av $2',
+'enotif_body_intro_deleted' => '{{SITENAME}} síðan $1 er blivin {{GENDER:$2|slettað}} $PAGEEDITDATE av $2, sí $3.',
+'enotif_lastvisited' => 'Sí $1 fyri allar broytingar síðan tína seinastu vitjan.',
+'enotif_lastdiff' => 'Sí $1 fyri at síggja hesa broyting.',
+'enotif_anon_editor' => 'dulnevndur brúkari $1',
 'created' => 'stovnað',
 
 # Delete
@@ -1931,7 +2068,16 @@ Striking av slíkum síðum er avmarkað fyri at forða fyri at onkur av óvart
 'rollback' => 'Rulla broytingar aftur',
 'rollback_short' => 'Rulla aftur',
 'rollbacklink' => 'afturrulling',
+'rollbacklinkcount' => 'rulla aftur $1 {{PLURAL:$1|rætting|rættingar}}',
+'rollbacklinkcount-morethan' => 'rulla aftur meira enn $1 {{PLURAL:$1|rætting|rættingar}}',
 'rollbackfailed' => 'Afturrulling miseydnað',
+'cantrollback' => 'Tað ber ikki til at afturstilla rættingina;
+tann seinasti ið skrivaði her er eisini tann einasti høvundurin á hesi síðu.',
+'alreadyrolled' => 'Tað ber ikki til at rulla aftur seinastu rætting av [[:$1]] hjá [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);
+onkur annar hevur longu rættað ella rullað síðuna aftur.
+
+Seinasta broytingin á síðuni var av [[User:$3|$3]] ([[User talk:$3|kjak]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Rættingarfrágreiðingin var: \"''\$1''\".",
 'revertpage' => 'Tók burtur rættingar hjá [[Special:Contributions/$2|$2]] ([[User talk:$2|kjak]]) til seinastu versjón hjá [[User:$1|$1]]',
 'revertpage-nouser' => 'Tók burtur rættingar hjá (brúkaranavn tikið vekk) til seinastu versjón hjá [[User:$1|$1]]',
 'rollback-success' => 'Tók burtur rættingar hjá $1;
@@ -1985,7 +2131,7 @@ broytti tað aftur til seinastu versjón hjá $2.',
 'contributions-title' => 'Brúkaraíkøst fyri $1',
 'mycontris' => 'Íkøst',
 'contribsub2' => 'Eftir $1 ($2)',
-'uctop' => '(ovast)',
+'uctop' => '(verandi)',
 'month' => 'Frá mánaði (og áðrenn):',
 'year' => 'Frá ár (og áðrenn):',
 
index 92f5b4f..3027b29 100644 (file)
@@ -589,6 +589,7 @@ $messages = array(
 'create-this-page' => 'Créer cette page',
 'delete' => 'Supprimer',
 'deletethispage' => 'Supprimer cette page',
+'undeletethispage' => 'Annuler la suppression de cette page',
 'undelete_short' => 'Restaurer $1 modification{{PLURAL:$1||s}}',
 'viewdeleted_short' => 'Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}',
 'protect' => 'Protéger',
@@ -642,7 +643,6 @@ $1",
 'disclaimers' => 'Avertissements',
 'disclaimerpage' => 'Project:Avertissements généraux',
 'edithelp' => 'Aide',
-'edithelppage' => 'Help:Comment modifier une page',
 'helppage' => 'Help:Accueil',
 'mainpage' => 'Accueil',
 'mainpage-description' => 'Accueil',
@@ -789,6 +789,8 @@ $2",
 'namespaceprotected' => "Vous n'avez pas la permission de modifier les pages de l'espace de noms « '''$1''' ».",
 'customcssprotected' => "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur.",
 'customjsprotected' => "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur.",
+'mycustomcssprotected' => 'Vous n’avez pas le droit de modifier cette page CSS.',
+'mycustomjsprotected' => 'Vous n’avez pas le droit de modifier cette page JavaScript.',
 'ns-specialprotected' => "Les pages dans l'espace de noms « {{ns:special}} » ne peuvent pas être modifiées.",
 'titleprotected' => "Ce titre a été protégé à la création par [[User:$1|$1]].
 Le motif avancé est « ''$2'' ».",
@@ -919,7 +921,7 @@ Entrez une adresse bien formatée ou laissez ce champ vide.',
 'cannotchangeemail' => 'Les adresses de courriel des comptes ne peuvent pas être modifiées sur ce wiki.',
 'emaildisabled' => 'Ce site ne peut pas envoyer de courriels.',
 'accountcreated' => 'Compte créé',
-'accountcreatedtext' => 'Le compte utilisateur pour $1 a été créé.',
+'accountcreatedtext' => 'Le compte utilisateur pour [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discussion]]) a été créé.',
 'createaccount-title' => "Création d'un compte pour {{SITENAME}}",
 'createaccount-text' => "Quelqu'un a créé un compte pour votre adresse de courriel sur {{SITENAME}} ($4) intitulé « $2 », avec le mot de passe « $3 ».
 Vous devriez ouvrir une session et modifier dès à présent votre mot de passe.
@@ -1435,7 +1437,6 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'searchmenu-legend' => 'Options de recherche',
 'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
 'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
-'searchhelp-url' => 'Help:Accueil',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechercher les pages commençant par ce préfixe]]',
 'searchprofile-articles' => 'Pages de contenu',
 'searchprofile-project' => "Pages d'aide et de projet",
@@ -1621,6 +1622,7 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'userrights-changeable-col' => 'Les groupes que vous pouvez modifier',
 'userrights-unchangeable-col' => 'Les groupes que vous ne pouvez pas modifier',
 'userrights-conflict' => 'Conflit de droits utilisateur ! Veuillez appliquer de nouveau vos modifications.',
+'userrights-removed-self' => 'Vous avez bien supprimé vos propres droits. Du coup, vous ne pouvez plus accéder à cette page.',
 
 # Groups
 'group' => 'Groupe :',
@@ -1691,6 +1693,8 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
 'right-editusercssjs' => "Modifier les fichiers CSS et JavaScript d'autres utilisateurs",
 'right-editusercss' => "Modifier les fichiers CSS d'autres utilisateurs",
 'right-edituserjs' => "Modifier les fichiers JavaScript d'autres utilisateurs",
+'right-editmyusercss' => 'Modifier vos propres fichiers CSS utilisateur',
+'right-editmyuserjs' => 'Modifier vos propres fichiers JavaScript utilisateur',
 'right-rollback' => "Révoquer rapidement les modifications du dernier contributeur d'une page particulière",
 'right-markbotedits' => 'Marquer des modifications révoquées comme ayant été faites par un robot.',
 'right-noratelimit' => 'Ne pas être affecté par les limites de taux',
@@ -2242,8 +2246,8 @@ Les entrées <del>barrées</del> ont été résolues.',
 'wantedpages' => 'Pages les plus demandées',
 'wantedpages-badtitle' => 'Titre invalide dans les résultats : $1',
 'wantedfiles' => 'Fichiers les plus demandés',
-'wantedfiletext-cat' => "Les fichiers suivants sont utilisés, mais n'existent pas. Les fichiers d'autres dépôts peuvent être listés malgré qu'ils existent. Tous ces faux positifs seront <del>barrés</del>. En outre, les pages qui intègrent des fichiers qui n'existent pas sont répertoriées dans [[:$1]].",
-'wantedfiletext-nocat' => "Les fichiers suivants sont utilisés, mais n'existent pas. Les fichiers d'autres dépôts peuvent être listés malgré qu'ils existent. Tous ces faux positifs seront <del>barrés</del>.",
+'wantedfiletext-cat' => "Les fichiers suivants sont utilisés, mais n'existent pas localement. S'ils se trouvent sur un dépôt partagé, ils peuvent être listés ici, bien qu'ils soient, de fait, déjà disponibles. Tous ces faux positifs seront <del>barrés</del>. En outre, les pages qui intègrent des fichiers qui n'existent pas sont répertoriées dans [[:$1]].",
+'wantedfiletext-nocat' => "Les fichiers suivants sont utilisés, mais n'existent pas localement. S'ils se trouvent sur un dépôt partagé, ils peuvent être listés ici, bien qu'ils soient, de fait, déjà disponibles. Tous ces faux positifs seront <del>barrés</del>.",
 'wantedtemplates' => 'Modèles demandés',
 'mostlinked' => 'Pages les plus liées',
 'mostlinkedcategories' => 'Catégories les plus utilisées',
@@ -2702,7 +2706,7 @@ $1',
 'mycontris' => 'Contributions',
 'contribsub2' => 'Pour $1 ($2)',
 'nocontribs' => "Aucune modification correspondant à ces critères n'a été trouvée.",
-'uctop' => '(dernière)',
+'uctop' => '(actuel)',
 'month' => 'À partir du mois (et précédents) :',
 'year' => "À partir de l'année (et précédentes) :",
 
@@ -3217,7 +3221,7 @@ Permet de rétablir la version précédente et d'ajouter un motif dans la boîte
 
 # Spam protection
 'spamprotectiontitle' => 'Filtre de protection anti-pollution',
-'spamprotectiontext' => "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollution. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire. Cette dernière utilise les expressions rationnelles suivantes :",
+'spamprotectiontext' => "La page que vous avez voulu sauvegarder a été bloquée par le filtre anti-pollution. Ceci est probablement dû à l'introduction d'un lien vers un site externe apparaissant sur la liste noire.",
 'spamprotectionmatch' => "La chaîne de caractères « '''$1''' » a déclenché le détecteur de spam.",
 'spambot_username' => 'Nettoyage de spams par MediaWiki',
 'spam_reverting' => 'Rétablissement de la dernière version ne contenant pas de lien vers $1',
index 35ee834..3584d6c 100644 (file)
@@ -550,7 +550,6 @@ $1',
 'disclaimers' => 'Semonces',
 'disclaimerpage' => 'Project:Semonces g·ènèrales',
 'edithelp' => 'Éde',
-'edithelppage' => 'Help:Coment changiér na pâge',
 'helppage' => 'Help:Somèro',
 'mainpage' => 'Reçua',
 'mainpage-description' => 'Reçua',
@@ -851,10 +850,8 @@ Pôt-étre vos éd ja changiê voutron contresegno avouéc reusséta ou ben dema
 
 # Special:PasswordReset
 'passwordreset' => 'Remês’a zérô du contresegno',
-'passwordreset-text' => 'Rempléd ceti formulèro por rebetar a zérô voutron contresegno.',
 'passwordreset-legend' => 'Rebetar a zérô lo contresegno',
 'passwordreset-disabled' => 'La remês’a zérô des contresegnos est étâye dèsactivâye sur ceti vouiqui.',
-'passwordreset-pretext' => '{{PLURAL:$1||Buchiéd yona de les piéces de balyês ce-desot}}',
 'passwordreset-username' => 'Nom d’utilisator :',
 'passwordreset-domain' => 'Domêno :',
 'passwordreset-capture' => 'Est-o que vos voléd vêre lo mèssâjo que rèsulte ?',
@@ -1359,7 +1356,6 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 'searchmenu-legend' => 'Chouèx de rechèrche',
 'searchmenu-exists' => "'''Y at na pâge apelâye « [[:$1]] » sur ceti vouiqui.'''",
 'searchmenu-new' => "'''Fâre la pâge « [[:$1|$1]] » sur ceti vouiqui !'''",
-'searchhelp-url' => 'Help:Somèro',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Fâre dèfelar les pâges que començont per ceti prèfixo]]',
 'searchprofile-articles' => 'Pâges de contegnu',
 'searchprofile-project' => 'Pâges d’éde et pâges projèt',
index ef80edf..23b0eb5 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Inkowik
  * @author Maartenvdbent
  * @author Merlissimo
@@ -26,7 +27,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Letj anrangen fersteeg',
 'tog-newpageshidepatrolled' => 'Kontroliaret sidjen bi a "Nei sidjen" fersteeg',
 'tog-extendwatchlist' => "Ütjwidjet list faan sidjen, diar dü uun't uug behual wel",
-'tog-usenewrc' => "Ütwidede deerstaling foon da ''Leeste Änringe'' än aw da ''Eefterkiikliste'' (brükt JavaScript)",
+'tog-usenewrc' => "Ütjwidjet uunwisin faan a ''Leetst feranrangen'' an bi a sidjen, diar dü ''Uun't uug behual'' wel (brükt JavaScript)",
 'tog-numberheadings' => 'Auerskraften automaatisk numeriare',
 'tog-showtoolbar' => 'Werktjüch tu bewerkin wise (brükt JavaScript)',
 'tog-editondblclick' => 'Sidjen mä dobelklik bewerke (brükt JavaScript)',
@@ -182,19 +183,19 @@ $messages = array(
 
 # Vector skin
 'vector-action-addsection' => 'Nei kirew began',
-'vector-action-delete' => 'Strike',
+'vector-action-delete' => 'Strik',
 'vector-action-move' => 'Fersküüw',
-'vector-action-protect' => 'Sääkere',
+'vector-action-protect' => 'Seekre',
 'vector-action-undelete' => 'Weder iinstel',
 'vector-action-unprotect' => 'Sidjenseekerhaid',
-'vector-simplesearch-preference' => 'Ianfacher sjüklist iinstel (bluas bi Vector)',
+'vector-simplesearch-preference' => 'Ianfacher schüklist iinstel (bluas bi Vector)',
 'vector-view-create' => 'Maage',
 'vector-view-edit' => 'Bewerke',
 'vector-view-history' => 'Ferluup uunluke',
 'vector-view-view' => 'Lees',
 'vector-view-viewsource' => 'Kweltekst uunluke',
 'actions' => 'Aktjuunen',
-'namespaces' => 'Noomerüme',
+'namespaces' => 'Nöömrümer',
 'variants' => 'Warianten',
 
 'navigation-heading' => 'Nawigatsjuun',
@@ -219,6 +220,7 @@ $messages = array(
 'create-this-page' => 'Nei sidj maage',
 'delete' => 'Strik',
 'deletethispage' => 'Detdiar sidj strik',
+'undeletethispage' => 'Detdiar stregen sidj turaghaale',
 'undelete_short' => '{{PLURAL:$1|1 werjuun|$1 werjuunen}} weder iinstel',
 'viewdeleted_short' => '{{PLURAL:$1|Ian stregen werjuun|$1 stregen werjuunen}} uunluke',
 'protect' => 'Sääkere',
@@ -272,7 +274,6 @@ $1',
 'disclaimers' => 'Disclaimers',
 'disclaimerpage' => 'Project:Disclaimers',
 'edithelp' => "Halep bi't bewerkin",
-'edithelppage' => 'Help:Bewerke',
 'helppage' => 'Help:Auersicht',
 'mainpage' => 'Hoodsidj',
 'mainpage-description' => 'Hoodsidj',
@@ -310,11 +311,11 @@ Luke efter bi't [[Special:Version|werjuunssidj]]",
 'editlink' => 'bewerke',
 'viewsourcelink' => 'kweltekst uunwise',
 'editsectionhint' => 'Kirew bewerke: $1',
-'toc' => 'Inhåltsfertiiknis',
+'toc' => 'Auersicht',
 'showtoc' => 'Wise',
-'hidetoc' => 'Ferbärje',
+'hidetoc' => 'Fersteeg',
 'collapsible-collapse' => 'Tuupdoble',
-'collapsible-expand' => 'Ütjenööderdoble',
+'collapsible-expand' => 'Wise',
 'thisisdeleted' => '$1 uunluke of weder iinstel',
 'viewdeleted' => '$1 uunluke?',
 'restorelink' => '$1 {{PLURAL:$1|stregen werjuun|stregen werjuunen}}',
@@ -372,45 +373,46 @@ At dootebeenk swaaret: „$3: $4“.",
 'readonlytext' => "Det dootenbeenk as iarst ans speret för nei iindracher an feranrangen, woorskiinelk, auer diar jüst apredet woort. Ferschük det leeder man noch ans.
 
 Grünj för't sperin: $1",
-'missing-article' => 'Di täkst for „$1“ $2 wörd ai önj e dååtenbånk fünen.
+'missing-article' => "Di tekst för „$1“ $2 as ei fünjen wurden uun't dootenbeenk.
 
-Jü sid as möölikerwise tuninte mååged unti ferschääwen wörden.
+Ferlicht as det sidj stregen of fersköwen wurden.
 
-Wan dåt ai di fål as, hääst dü eewäntuäl en fäägel önj e software fünen. Mäld dåt hål en  [[Special:ListUsers/sysop|administrator]] unner nååming foon jü URL.',
+Wan't det ei as, do heest dü ferlicht en feeler uun't software fünjen. Wees so gud an skriiw det tu en [[Special:ListUsers/sysop|administraator]] an fertel ham, am hün URL det gongt.",
 'missingarticle-rev' => '(Werjuunsnumer: $1)',
 'missingarticle-diff' => '(Ferskeel tesken $1 an $2)',
-'readonly_lag' => 'Jü dootebånk wörd automaatisch for schriwtugraawe späred, deerma da ferdiiljde dootebånke (slaves) jam ma di hooddootebånksärwer (master) oufglike koone.',
+'readonly_lag' => 'Det dootenbeenk as speret wurden, amdat jo ferdiald dootenbeenken (slaves) jo mä di hoodserver (master) ufglik kön.',
 'internalerror' => 'Süsteemfeeler',
 'internalerror_info' => 'Süsteemfeeler: $1',
-'fileappenderrorread' => '"$1" köö wilert dÃ¥t baitufäigen ai leesen wÃ¥rde.',
-'fileappenderror' => 'Köö ai "$1" tu "$2" önjhinge.',
+'fileappenderrorread' => '"$1" küd ei leesen wurd, auer diar jüst Ã¼Ã¼b skrewen woort.',
+'fileappenderror' => '"$1" küd ei bi "$2" bihinget wurd.',
 'filecopyerror' => 'Det datei $1 küd ei efter $2 kopiaret wurd.',
 'filerenameerror' => 'Det datei $1 küd ei efter $2 amnäämd wurd.',
 'filedeleteerror' => 'Det datei $1 küd ei stregen wurd.',
-'directorycreateerror' => 'Dåt fertiiknis "$1" köö ai mååged wårde.',
+'directorycreateerror' => 'Det fertiaknis "$1" küd ei iinracht wurd.',
 'filenotfound' => 'Det datei $1 küd ei fünjen wurd.',
 'fileexistserror' => 'Uun det datei "$1" küd ei skrewen wurd: Hat as al diar.',
-'unexpected' => 'Ünfermousene wjart: "$1"="$2".',
-'formerror' => 'Fäägel: köö jü form ai lääwere',
-'badarticleerror' => 'Jüdeer aksjoon koon ai aw jüdeer sid mååged wårde.',
+'unexpected' => 'Mä di wäärs stemet wat ei: "$1"="$2".',
+'formerror' => 'Feeler: Di iindrach küd ei ferwerket wurd.',
+'badarticleerror' => 'Son aktjuun koon üüb detdiar sidj ei föörnimen wurd.',
 'cannotdelete' => 'Det sidj of datei "$1" küd ei stregen wurd.
 Det as ferlicht al faan hoker ööders stregen wurden.',
 'cannotdelete-title' => 'Sidj „$1“ koon ei stregen wurd.',
-'delete-hook-aborted' => 'Det striken as faan en software-feranerang faan MediaWiki ferhanert wurden. Di grünj as ei bekäänd.',
+'delete-hook-aborted' => 'Det striken as faan en software-feranrang faan MediaWiki ferhanert wurden. Di grünj as ei bekäänd.',
 'badtitle' => 'Ferkiard tiitel',
-'badtitletext' => 'Di tiitel foon jü anfrååged sid as üngülti, lääsi unti n üngültigen spräklink foon en ouder wiki.',
-'perfcached' => 'Jodiar dooten kem faan a cache an san ferlicht ei muar aktuel. Huuchstens {{PLURAL:$1|ian resultoot as|$1 resultooten san}} uun a cache.',
-'perfcachedts' => 'Jodiar dooten kem faan a cache, leetst tooch nei: $1. Huuchstens {{PLURAL:$4|ian resultoot as|$4 resultooten san}} uun a cache.',
-'querypage-no-updates' => "'''Jü aktualisiiringsfunksjoon for jüdeer sid as nütutids deaktiwiird. Da doote wårde tujarst ai fernaierd.'''",
-'wrong_wfQuery_params' => 'Ferkiirde parameetere for wfQuery()<br />
-Funksjoon: $1<br />
-Ouffrååch: $2',
+'badtitletext' => 'Didiar sidjennööm gongt ei. Hi as ferlicht leesag of as en ferkiard ferwisang faan en ööder projekt.',
+'perfcached' => 'Jodiar dooten kem faan a cache an san ferlicht ei muar aktuel. Ei muar üs {{PLURAL:$1|ian resultoot as|$1 resultooten san}} uun a cache.',
+'perfcachedts' => 'Jodiar dooten kem faan a cache, leetst tooch nei: $1. Ei muar üs {{PLURAL:$4|ian resultoot as|$4 resultooten san}} uun a cache.',
+'querypage-no-updates' => 'Dü könst detdiar sidj uun uugenblak ei aktualisiare. A dooten wurd iarst ans ei iinsteld.',
+'wrong_wfQuery_params' => 'Ferkiard dooten för wfQuery()<br />
+Funktjuun: $1<br />
+Uffraag: $2',
 'viewsource' => 'Kweltekst uunluke',
 'viewsource-title' => 'Code faan sidj $1 uunluke',
 'actionthrottled' => 'Taal faan aktjuunen limitiaret',
-'actionthrottledtext' => 'Dü hääst jüdeer aksjoon tu oofding bane en kort tidrüm ütfjard. Wees sü gödj än täiw en påår minuute än fersäk dåt et dan foon naien.',
+'actionthrottledtext' => 'Dü heest detdiar aktjuun tufölsis uun en kurten tidjrüm ütjfeerd.
+Wees so gud an ferschük det glik noch ans weder.',
 'protectedpagetext' => 'Detdiar sidj as seekert wurden, am dat diar näämen wat feranert.',
-'viewsourcetext' => 'Dü koost jü kwäle foon jüdeer sid bekiike än kopiire.',
+'viewsourcetext' => 'Dü könst di kweltekst faan det sidj uunluke an ham uk kopiare:',
 'viewyourtext' => "Dü könst di code faan '''din feranrang''' faan detdiar sidj uunluke an kopiare:",
 'protectedinterface' => 'Üüb detdiar sidj stäänt tekst för det software faan detheer wiki an as seekert wurden, am dat näämen diar wat feranert.
 Dü könst [//translatewiki.net/ translatewiki.net] faan MediaWiki brük, am auersaatangen för ale wiki projekten tu maagin.',
@@ -423,9 +425,11 @@ $2',
 'namespaceprotected' => "Dü heest ei det brükerrocht, am sidjen uun di nöömrüm '''$1''' tu bewerkin.",
 'customcssprotected' => 'Dü mutst detheer CSS sidj ei bewerke, auer det hoker ööders hiart.',
 'customjsprotected' => 'Dü mutst detheer JavaScript sidj ei bewerke, auer det hoker ööders hiart.',
+'mycustomcssprotected' => 'Dü mutst detdiar CSS-sidj ei bewerke.',
+'mycustomjsprotected' => 'Dü mutst detdiar JavaScript-sidj ei bewerke.',
 'ns-specialprotected' => 'Spezial-sidjen kön ei bewerket wurd.',
-'titleprotected' => 'En sid ma dideer noome koon ai önjläid wårde.
-Jü späre wörd döör [[User:$1|$1]] ma grün "$2" inruchted.',
+'titleprotected' => 'En sidj mä didiar nööm koon ei uunlaanj wurd.
+Di brüker [[User:$1|$1]] hää det sidj speret, an di grünj as: "\'\'$2\'\'".',
 'filereadonlyerror' => 'Det datei „$1“ koon ei feranert wurd, auer uun det fertiaknis „$2“ bluas leesen wurd koon.
 Di grünj faan di administraator as: „$3“.',
 'invalidtitle-knownnamespace' => 'Ferkiard auerskraft uun di nöömrüm „$2“ an tekst „$3“',
@@ -453,29 +457,29 @@ Ferjid det ei, an aachte üüb din [[Special:Preferences|{{SITENAME}} iinstelang
 'userlogin-yourpassword' => 'Paaswurd',
 'userlogin-yourpassword-ph' => 'Paaswurd iindu',
 'createacct-yourpassword-ph' => 'Paaswurd iindu',
-'yourpasswordagain' => 'Schriw pååsuurd nuch iinjsen:',
+'yourpasswordagain' => 'Skriiw det paaswurd noch ans weder hen:',
 'createacct-yourpasswordagain' => 'Paaswurd gudkään',
 'createacct-yourpasswordagain-ph' => 'Du det paaswurd noch ans iin',
 'remembermypassword' => 'Üüb diheer reegner üüb düür uunmelde (maksimaal för $1 {{PLURAL:$1|dai|daar}})',
 'userlogin-remembermypassword' => 'Uunmeldet bliiw',
 'userlogin-signwithsecure' => 'Seeker ferbinjang brük',
-'securelogin-stick-https' => 'Eefter önjmälding ma HTTPS ferbünen bliwe',
+'securelogin-stick-https' => "Efter't uunmeldin auer HTTPS ferbünjen bliiw",
 'yourdomainname' => 'Din domain:',
 'password-change-forbidden' => 'Üüb detheer wiki könst dü nian paaswurden feranre.',
 'externaldberror' => 'Deer läit en fäägel bai jü äkstärn autentifisiiring for, unti dü möist din äkstärn brükerkonto äi aktualisiire.',
 'login' => 'Uunmelde',
 'nav-login-createaccount' => 'Melde di uun of skriiw di iin',
-'loginprompt' => 'For jü önjmälding monje cookies aktiwiird weese.',
+'loginprompt' => "För't uunmeldin tu {{SITENAME}} skel bi dan browser cookies aktiwiaret wees.",
 'userlogin' => 'Melde di uun of skriiw di iin',
 'userloginnocreate' => 'Uunmelde',
 'logout' => 'Ufmelde',
 'userlogout' => 'Ufmelde',
 'notloggedin' => 'Ei uunmeldet',
-'userlogin-noaccount' => 'Dü heest noch nään brükerkonto ?',
+'userlogin-noaccount' => 'Dü heest noch nian brükerkonto ?',
 'userlogin-joinproject' => 'Bi {{SITENAME}} mämaage',
-'nologin' => "Dü hääst niinj brükerkonto? '''$1'''.",
-'nologinlink' => 'Nai brükerkonto inruchte',
-'createaccount' => 'Brükerkonto inruchte',
+'nologin' => 'Dü hääst niinj brükerkonto? $1.',
+'nologinlink' => 'Nei brükerkonto iinracht',
+'createaccount' => 'Brükerkonto iinracht',
 'gotaccount' => "Dü hääst ål en brükerkonto? '''$1'''.",
 'gotaccountlink' => 'Uunmelde',
 'userlogin-resetlink' => 'Heest dü din login dooten ferjiden?',
@@ -504,29 +508,31 @@ Wees sü gödj en kiis en ouderen.',
 'loginerror' => "Bi't uunmeldin as wat skiaf gingen",
 'createacct-error' => "Bi't iinrachten faan det brükerkonto as wat skiaf gingen",
 'createaccounterror' => 'Brükerkonto küd ei iinracht wurd: $1',
-'nocookiesnew' => 'Di benjütertugung wörd mååged, ouers dü bast ai önjmälded. {{SITENAME}} brükt for jüdeer funksjoon cookies.
-Wees sü gödj än aktiwiir da än mäld de dan ma dan naien benjüternoome än dåt tuhiirend pååsuurd önj.',
-'nocookieslogin' => '{{SITENAME}} benjütet cookies tu e önjmälding foon da benjütere. Dü heest Cookis deaktiwiird.
-Wees sü gödj än aktiwiir da än fersäk dåt wider.',
+'nocookiesnew' => 'Det brükerkonto as iinracht wurden, oober dü beest ei uunmeldet.
+{{SITENAME}} brükt cookies för detdiar aktjuun.
+Wees so gud an aktiwiare jo uun dan browser, an do melde di mä dan nei brükernööm an det nei paaswurd uun.',
+'nocookieslogin' => "{{SITENAME}} brükt cookies för't uunmeldin faan brükern.
+Dü heest cookies deaktiwiaret.
+Wees so gud an aktiwiare jo uun dan browser, an do ferschük det noch ans.",
 'nocookiesfornew' => 'Det brükerkonto as ei iinracht wurden, auer wi ei witj, huar a dooten faan kem.
 Üüb dan kompjuuter skel cookies aktiwiaret wees. Do rep detheer sidj noch ans nei ap.',
 'noname' => 'Dü skel en rochten brükernööm uundu.',
-'loginsuccesstitle' => 'Uunmeldin hää löket.',
+'loginsuccesstitle' => 'Uunmeldin hää loket.',
 'loginsuccess' => "'''Dü beest nü üs „$1“ bi {{SITENAME}} uunmeldet.'''",
-'nosuchuser' => 'Di brükernoome „$1“ bestoont ai.
-Präiw jü schriwwise (grut-/latjschriwing beåchte) unti [[Special:UserLogin/signup|mäld de ås naie brüker önj]].',
-'nosuchusershort' => 'Deer as nåån brüker ma noome  "$1".
-Präiw din ruchtschriwing.',
-'nouserspecified' => 'Dü schäät en brükernoome spesifisiire.',
-'login-userblocked' => 'Dideer brüker as spärd. Niinj ferloof tu önjmälding.',
-'wrongpassword' => 'Ferkiird pååsuurd önjjeewen.
-Wees sü gödje än fersäk dåt nuch iinjsen.',
-'wrongpasswordempty' => 'Deer wörd niinj pååsuurd önjjääwen. Fersäk dåt foon naien.',
-'passwordtooshort' => 'Pååsuurde mönje tu t manst {{PLURAL:$1|1 tiiken|$1 tiikne}} lung weese.',
+'nosuchuser' => 'Di brükernööm „$1“ jaft at ei. Aachte üüb det skriiwwiis (an uk üüb grat- an letjskriiwang), an do [[Special:UserLogin/signup|melde di nei uun]].',
+'nosuchusershort' => 'Diar as nään brüker mä di nööm "$1".
+Heest dü ham uk rocht skrewen?',
+'nouserspecified' => 'Dü skel en brükernööm uundu.',
+'login-userblocked' => 'Didiar brüker as speret wurden. Hi mut ham ei uunmelde.',
+'wrongpassword' => 'Det paaswurd as ferkiard.
+Wees so gud an ferschük det noch ans.',
+'wrongpasswordempty' => 'Dü heest nian paaswurd iinden.
+Ferschük det man noch ans.',
+'passwordtooshort' => 'Paaswurden skel tumanst {{PLURAL:$1|1 tiaken|$1 tiakens}} lung wees.',
 'password-name-match' => 'Dü könst dan brükernööm ei üs paaswurd nem.',
 'password-login-forbidden' => 'Jüdeer brükernoome än paasuurd as ferbin.',
-'mailmypassword' => 'Nai pååsuurd tusiinje',
-'passwordremindertitle' => 'Nai tidwise pååsuurd for {{SITENAME}}',
+'mailmypassword' => 'Schüür mi en nei paaswurd.',
+'passwordremindertitle' => 'Nei tidjwiis paaswurd för {{SITENAME}}',
 'passwordremindertext' => 'En brüker (woorskiinelk dü, faan IP adres $1) hää am en nei paaswurd för {{SITENAME}} ($4) fraaget.
 En nei paaswurd för di brüker "$2" as maaget wurden an het nü "$3".
 
@@ -535,69 +541,71 @@ Wan dü det würelk so haa wel, do melde di nü uun an feranere det paaswurd. De
 Wan dü ei salew am en nei paaswurd fraaget heest, do säärst dü di am niks widjer komre. Do könst dü din ual paaswurd widjer brük.',
 'noemail' => 'Diar as nian e-mail adres bekäänd för di brüker "$1".',
 'noemailcreate' => 'Dü skel en rocht e-mail adres uundu.',
-'passwordsent' => 'En nai pååsuurd as sånd tu jü e-mail-adräs registriird for "$1".
-Mälde wi önj eefter dü jü füngen heest.',
+'passwordsent' => 'En nei tidjwiis paaswurd as tu det e-mail-adres faan di brüker "$1" schüürd wurden.
+Melde di diarmä uun, wan dü det füngen heest. Det ual paaswurd blaft iarst ans bestunen.',
 'blocked-mailpassword' => 'Det IP-adres, wat dü brükst, as speret wurden. Am dat diar nian dom tjüch mä maaget woort, as uk det uffraagin faan paaswurden speret wurden.',
-'eauthentsent' => 'En bestääsiings-e-mail wörd önj jü önjjääwen adräs sånd.
+'eauthentsent' => 'Diar as en e-mail tu det uunjiwen adres schüürd wurden.
 
-Iir en e-mail foon oudere brükere ouer jü e-mail-funksjoon emfångd wårde koon, mötj jü adräs än har wörklike tuhiirihäid tu dåtheer brükerkonto jarst bestääsied wårde. Wees sü gödj än befülie da haanewisinge önj di bestääsiings-e-mail.',
-'throttled-mailpassword' => 'Deer wörd önj da leeste {{PLURAL:$1|stün|$1 stüne}} ål en nai pååsuurd önjfrååged. Am en masbrük foon jüdeer funksjoon tu ferhanren, koon bloot {{PLURAL:$1|iinjsen pro stün|åle $1 stüne}} en nai pååsuurd önjfrååged wårde.',
+Iar en e-mail faan ööder brükern auer det e-mail-funktjuun uunnimen wurd koon, skal seeker steld wurd, dat det e-mail-adres uk würelk tu di brüker hiart. Wees so gud an befulge jo uunwisangen uun det e-mail, wat dü jüst füngen heest.',
+'throttled-mailpassword' => 'Diar as uun a leetst {{PLURAL:$1|stünj|$1 stünj}} al ans am en nei paaswurd uunfraaget wurden. Am dat diar nään masbrük mä drewen woort, koon bluas {{PLURAL:$1|iansis per stünj|iansis per $1 stünj}} am en nei paaswurd uunfraaget wurd.',
 'mailerror' => 'Fäägel bai dåt siinjen foon e e-mail: $1',
-'acct_creation_throttle_hit' => 'Besäkere foon jüheer Wiki, da din IP-adräse brüke, heewe önj e leeste däi {{PLURAL:$1|1 brükerkonto|$1 brükerkontos}} mååged, wat jü maksimool tuleet tål önj jüdeer tidperioode as.
+'acct_creation_throttle_hit' => 'Beschükern faan detheer wiki mä din IP-adres haa di leetst dai {{PLURAL:$1|1 brükerkonto|$1 brükerkontos}} iinracht. Muar san ei tuläät.
 
-Besäkere, da jüheer IP-adräse brüke, koone tutids niinj brükerkonto mör inruchte.',
-'emailauthenticated' => 'Din e-mail-adräs word di $2 am e klook $3 bestääsied.',
-'emailnotauthenticated' => 'Din E-mail-adräs as nuch ai bestääsied. Da füliende E-mail-funksjoone stönje jarst eefter erfolchrike bestääsiing tu ferfäiging.',
-'noemailprefs' => 'Jeew en E-mail-adräs önj da önjstalinge önj, deerma da füliende funksjoone tu ferfäiging stönje.',
-'emailconfirmlink' => 'E-mail-adräs bestääsie (autäntifisiire).',
+Beschükern mä detdiar IP-adres kön daalang nian brükerkontos muar iinracht.',
+'emailauthenticated' => 'Din e-mail-adres as di $2 am a klook $3 gudkäänd wurden.',
+'emailnotauthenticated' => 'Din e-mail-adres as noch ei gudkäänd. Jodiar e-mail-funktjuunen kön iarst brükt wurd, wan det adres gudkäänd wurden as.',
+'noemailprefs' => 'Du en e-mail-adres uun din iinstelangen iin, amdat dü jodiar funktjuunen brük könst.',
+'emailconfirmlink' => 'E-mail-adres gudkään',
 'invalidemailaddress' => 'Jü E-mail adräs wörd ai aksäptiird, ouerdåt jü en üngülti formoot (ewentuäl üngültie tiikne) tu heewen scheent.
 Wees sü gödj än jeef en koräkt adräs önj unti mäág dåt fäalj lääsi.',
 'cannotchangeemail' => 'E-mail-adresen kön uun detheer wiki ei feranert wurd.',
 'emaildisabled' => 'Fann detdiar sidj kön nian E-Mails fersjüürd wurd',
-'accountcreated' => 'Benjüterkonto mååged',
-'accountcreatedtext' => 'Dåt benjüteraccount for $1 as mååged wörden.',
-'createaccount-title' => 'Måågen foon en benjüterkonto for {{SITENAME}}',
-'createaccount-text' => 'Deer wörd for de en benjüterkonto "$2" aw {{SITENAME}} ($4) mååged. Dåt automaatisch generiird pååsuurd for "$2" as "$3".
-Dü schöist de nü önjmälde än dåt pååsuurd änre.
-
-Fåls dåt benjüterkonto üt fersiinj önjläid wörd, koost dü jüdeer tising ignoriire.',
-'usernamehasherror' => 'Benjüternoome mötje niinj rütetiikne önjthüulje',
-'login-throttled' => 'Dü heest tu oofding fersoocht, di önjtumälden.
-Wees sü gödj än täif, bit dü wider ferseechst.',
-'login-abort-generic' => 'Din önjmälding wus ei erfolchrik - Oufbräägen',
+'accountcreated' => 'Brükerkonto as iinracht wurden',
+'accountcreatedtext' => 'Det brükerkonto för [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) as iinracht wurden.',
+'createaccount-title' => 'En brükerkonto üüb {{SITENAME}} iinracht',
+'createaccount-text' => 'Diar as mä din e-mail adres för di en brükerkonto "$2" üüb {{SITENAME}} ($4) maaget wurden. För "$2" as automaatisk det paaswurd "$3" iinracht wurden.
+Dü skulst di nü uunmelde an det paaswurd anre.
+
+Wan det brükerkonto ütj fersen uunlaanj wurden as, säärst dü niks widjer onernem.',
+'usernamehasherror' => 'Uun brükernöömer mut nian rütjen föörkem.',
+'login-throttled' => 'Dü heest tufölsis fersoocht, di uuntumeldin.
+Wees so gud an teew en uugenblak, iar dü det noch ans ferschükst.',
+'login-abort-generic' => 'Det uunmeldin hää ei loket - Ufbreegen',
 'loginlanguagelabel' => 'Spriak: $1',
-'suspicious-userlogout' => 'Dan Oufmäldönjfrååge wörd ferwaigred, deer ja fermouslik foon en defäkte browser unti en cache-proxy sånd wörd.',
+'suspicious-userlogout' => 'Din ufmeldang as ei föörnimen wurden, auer det uunfraag ferlicht faan en uunstakenen browser of faan en cache-proxy kaam.',
 
 # Email sending
 'php-mail-error-unknown' => 'Ünbekäänd feeler mä det funktsjuun mail() faan PHP.',
-'user-mail-no-addy' => 'Köö niinj e-mail schake suner e-mail-adres.',
+'user-mail-no-addy' => 'Küd nian e-mail schüür saner e-mail-adres.',
 'user-mail-no-body' => 'Dü wulst en e-mail saner tekst wechsjüür.',
 
 # Change password dialog
-'resetpass' => 'Pååsuurd änre',
-'resetpass_announce' => 'Önjmälding ma di ouer E-mail tusånde kode. Am e önjmälding ouftusliten, möist dü en nai pååsuurd kiise.',
-'resetpass_header' => 'Account pååsuurd änre',
-'oldpassword' => 'Üülj pååsuurd:',
-'newpassword' => 'Nai pååsuurd:',
-'retypenew' => 'Tip nai pååsuurd nuch iinjsen:',
-'resetpass_submit' => 'Seet pååsuurd än mäld önj',
-'resetpass_success' => 'Din pååsuurd as ma resultoot änred!
-Nü wårst dü önjmälded...',
-'resetpass_forbidden' => 'Pååsuurde koone ai änred wårde',
-'resetpass-no-info' => 'Dü möist önjmälded weese am ju sid diräkt tu tu gripen.',
-'resetpass-submit-loggedin' => 'Pååsuurd änre',
+'resetpass' => 'Paaswurd feranre',
+'resetpass_announce' => 'Dü heest di mä di code uunmeldet, di dü per e-mail tuschüürd füngen heest.
+Am det uunmeldin uftuslütjen, skel dü en nei paaswurd iindu.',
+'resetpass_header' => 'Paaswurd feranre',
+'oldpassword' => 'Ual paaswurd:',
+'newpassword' => 'Nei paaswurd:',
+'retypenew' => 'Skriiw det paaswurd noch ans weder hen:',
+'resetpass_submit' => 'Paaswurd saat an uunmelde',
+'resetpass_success' => 'Din paaswurd as feranert wurden!
+Dü woorst nü uunmeldet ...',
+'resetpass_forbidden' => 'Det paaswurd koon ei feranert wurd.',
+'resetpass-no-info' => 'Dü skel di uunmelde, am üüb det sidj tutugripen.',
+'resetpass-submit-loggedin' => 'Paaswurd feranre',
 'resetpass-submit-cancel' => 'Ufbreeg',
-'resetpass-wrong-oldpass' => 'Üngülti tämporäär unti antuäl pååsuurd.
-Möölikerwise heest dü din pååsuurd ål ma erfolch änred heest unti en nai tämporäär pååsuurd beönjdräägen.',
-'resetpass-temp-password' => 'Tidwise pååsuurd:',
+'resetpass-wrong-oldpass' => 'Detdiar paaswurd docht niks.
+Ferlicht heest dü jüst din paaswurd feranert
+of am en nei paaswurd uunfraaget.',
+'resetpass-temp-password' => 'Tidjwiis paaswurd:',
 'resetpass-abort-generic' => 'Det paaswurd-anerang as ferhanert wurden.',
 
 # Special:PasswordReset
-'passwordreset' => 'Paasuurd tubääg seete',
+'passwordreset' => 'Paaswurd turagsaat',
 'passwordreset-text-one' => 'Fal detheer formulaar ütj, am din paaswurd turag tu saaten.',
 'passwordreset-text-many' => '{{PLURAL:$1|Du ian stak faan a dooten iin, am din paaswurd turag tu saaten.}}',
-'passwordreset-legend' => 'Paasuurd tubääg seete',
-'passwordreset-disabled' => 'Dü koost din paasuurd aw jüdeer wiki ai tubääg seete',
+'passwordreset-legend' => 'Paaswurd turagsaat',
+'passwordreset-disabled' => 'Dü könst din paaswurd uun detdiar wiki ei turagsaat.',
 'passwordreset-emaildisabled' => 'E-mail as üüb detheer Wiki ufknipset wurden.',
 'passwordreset-username' => 'Brükernoome:',
 'passwordreset-domain' => 'Domain:',
@@ -635,42 +643,42 @@ Tidwis paasuurd: $2',
 'changeemail-cancel' => 'Ufbreeg',
 
 # Edit page toolbar
-'bold_sample' => 'FÃ¥ten täkst',
-'bold_tip' => 'FÃ¥ten täkst',
-'italic_sample' => 'Kursiiwen täkst',
-'italic_tip' => 'Kursiiwen täkst',
-'link_sample' => 'Link-täkst',
-'link_tip' => 'Intärnen link',
-'extlink_sample' => 'http://www.example.com link-täkst',
-'extlink_tip' => 'Äkstärnen link (http:// beåchte)',
-'headline_sample' => 'Schuchte 2 ouerschraft',
-'headline_tip' => 'Schuchte 2 ouerschraft',
-'nowiki_sample' => 'Ünformatiirden täkst heer önjfäige',
-'nowiki_tip' => 'Ünformatiirden täkst',
-'image_tip' => 'Dååtäilink',
-'media_tip' => 'Meediendååtäi-link',
-'sig_tip' => 'Din signatuur ma tidståmp',
-'hr_tip' => 'Horizontool liinje (spårsoom ferwiinje)',
+'bold_sample' => 'Fäät buksteewen',
+'bold_tip' => 'Fäät buksteewen',
+'italic_sample' => 'Kursiif buksteewen',
+'italic_tip' => 'Kursiif buksteewen',
+'link_sample' => 'Link-tekst',
+'link_tip' => 'Intern ferwisang',
+'extlink_sample' => 'http://www.example.com link-tekst',
+'extlink_tip' => 'Ekstern ferwisang (seenk am http:// prefix)',
+'headline_sample' => 'Auerskraft (grate 2)',
+'headline_tip' => 'Auerskraft (grate 2)',
+'nowiki_sample' => 'Ünformatiaret tekst diar tusaat.',
+'nowiki_tip' => 'Ünformatiaret tekst',
+'image_tip' => 'Iinbünjen datei',
+'media_tip' => 'Meediendatei-link',
+'sig_tip' => 'Din onerskraft mä tidjstempel',
+'hr_tip' => 'Horisontaal streg (ei auerdriiw diarmä)',
 
 # Edit pages
-'summary' => 'Tuhuupefooting:',
-'subject' => 'Bedrååwet:',
-'minoredit' => 'Bloot kleenihäide wörden feränred',
-'watchthis' => 'Kiike eefter jüdeer sid',
+'summary' => 'Tuupfaadet:',
+'subject' => 'Auerskraft:',
+'minoredit' => 'Det as man en letj feranrang',
+'watchthis' => "Detdiar sidj uun't uug behual",
 'savearticle' => 'Sidj seekre',
 'preview' => 'Iarst ans luke',
 'showpreview' => 'Iarst ans luke',
 'showlivepreview' => 'Glik uunluke',
 'showdiff' => 'Feranrangen wise',
-'anoneditwarning' => "Dü beårbest jüdeer sid ünönjmälded. Wan dü spikerst, wård din aktuäle IP-adräs önj e fesjoonshistoori aptiikned än as deerma for åltens '''ålgemiin''' sichtboor.",
-'anonpreviewwarning' => "''Dü bast ai önjmälded. Bai t spiikern wårt din IP-adräs önj e fersjoonshistoori awtiikned.''",
-'missingsummary' => "'''Haanewising:\"' Dü heest niinj tuhuupefooting önjjääwen.
-Wan dü wider aw \"Sid spiikre\" klikst, wårt din änring suner tuhuupefooting ouernümen.",
-'missingcommenttext' => 'Jeew en tuhuupefooting önj.',
-'missingcommentheader' => "'''PÅÅS AW:''' dü heest niinj keer/ouerschraft önjjääwen.
-Wan dü wider aw \"{{int:savearticle}}\" klakst, wårt din beårbing suner ouerschaft spiikerd.",
-'summary-preview' => 'Forlök foon jü tuhuupfootingssid:',
-'subject-preview' => 'Forkiik foon dåt subjäkt:',
+'anoneditwarning' => "'''Paase üüb:''' Dü bewerkest detdiar sidj anonüüm. Wan dü det seekerst, woort din aktuel IP-adres uun a ferluup aptiakent, an as diarmä '''för arken''' iintusen.",
+'anonpreviewwarning' => '"Dü beest ei uunmeldet. Bi\'t seekrin woort din IP-adres uun a ferluup faan werjuunen aptiakent."',
+'missingsummary' => "'''Paase üüb:''' Dü heest det ei tuupfaadet.
+Wan dü det sidj seekerst, woort det saner en kurtfaadet beskriiwang auernimen.",
+'missingcommenttext' => 'Faade det oner tuup.',
+'missingcommentheader' => "'''Paase üüb:''' Dü heest nian auerskraft uunden.
+Wan dü det sidj seekerst, woort det saner auerskraft auernimen.",
+'summary-preview' => 'Föörskau faan det tuupfaadang:',
+'subject-preview' => 'Föörskau faan det auerskraft:',
 'blockedtitle' => 'Brüker as speret',
 'blockedtext' => "'''Dan brükernööm of IP adres as speret wurden.'''
 
@@ -702,24 +710,24 @@ Dü könst ei det E-Mail-funktsjuun 'E-mail tu dideere brüker' brük, so loong
 
 Uugenblakelk as din IP addres $3, an det sper ID as #$5.
 För arke uunfraag wurd aal jo informatsjuunen boowen brükt.",
-'blockednoreason' => 'niinj grün önjjääwen',
+'blockednoreason' => 'nään grünj uunden',
 'whitelistedittext' => 'Dü skel di $1, am sidjen tu bewerkin.',
-'confirmedittext' => 'Dü möist din E-mail-adräs jarst bestääsie, iir dü beårbinge döörfääre koost. Mååg din årbe radi än bestääsie din E-mail önj da  [[Special:Preferences|önjstalinge]].',
-'nosuchsectiontitle' => 'Stuk ai fünen',
-'nosuchsectiontext' => 'Dü fersoochst en stuk tu änren, dåt dåt ai jeeft.
-Dåt koon ferschääwen unti wächhååld weese, wilt dü jü sid bekiikedest.',
+'confirmedittext' => 'Dü skel iarst din e-mail-adres gudkään, iar dü began könst tu werkin. Maage det üüb det sidj mä din persöönelk [[Special:Preferences|iinstelangen]].',
+'nosuchsectiontitle' => 'Kirew ei fünjen',
+'nosuchsectiontext' => "Dü wulst en kirew feranre, diar't goorei jaft.
+Ferlicht as det stregen of fersköwen wurden, jüst üs dü det sidj bewerke wulst.",
 'loginreqtitle' => 'Dü skel di uunmelde.',
 'loginreqlink' => 'Uunmelde',
 'loginreqpagetext' => 'Dü skel di $1, am ööder sidjen uuntulukin.',
-'accmailtitle' => 'Pååsuurd sånd.',
-'accmailtext' => "En tufäli generiird pååsuurd for [[User talk:$1|$1]] wörd tu $2 fersånd.
-
-Dåt pååsuurd for jüdeer nai benjüterkonto koon aw e spetsjoolsid ''[[Special:ChangePassword|Pååsuurd änre]]'' änred wårde.",
-'newarticle' => '(Nai)',
-'newarticletext' => "Dü bast en link tu en sid fülied, jü nuch ai bestoont.
-Am jü sid tu måågen, dreeg dan täkst önj e unerstönjene box in (sii jü
-[[{{MediaWiki:Helppage}}|heelpsid]] for mör informasjoon).
-Bast üt fersiien heer, klik di '''tubääg'''-klänkfläche foon dan browser.",
+'accmailtitle' => 'Paaswurd as ferschüürd wurden.',
+'accmailtext' => "En tufelag iinracht paaswurd för [[User talk:$1|$1]] as tu $2 ferschüürd wurden.
+
+Det paaswurd för det nei brükerkonto koon üüb det spezial-sidj ''[[Special:ChangePassword|Paaswurd anre]]'' feranert wurd.",
+'newarticle' => '(Nei)',
+'newarticletext' => "Dü beest en ferwisang tu en sidj fulagt, diar't noch ei jaft.
+Am det sidj iinturachten, skriiw dan tekst uun det fial för't bewerkin iin.
+Üüb det [[{{MediaWiki:Helppage}}|halepsidj]] fanjst dü halep.
+Wan dü ütj fersen heer beest, trak ianfach üüb di '''turag'''-knoop faan dan browser.",
 'anontalkpagetext' => "----''Üüb detheer sidj könst dü en ünbekäänden brüker en nooracht du. Det lääpt auer sin IP adres. IP adresen kön faan flook brükern brükt wurd. Wan dü mä detheer nooracht niks began könst, do as det ferlicht för hoker ööders mend weesen. Dü säärst niks widjer onernem. Wan dü en aanj [[Special:UserLogin/signup|brükerkonto iinrachst]] of di [[Special:UserLogin|uunmeldest]], komt sowat ei weder föör.",
 'noarticletext' => 'Üüb detdiar sidj stäänt noch niks.
 Dü könst didiar tiitel üüb ööder sidjen [[Special:Search/{{PAGENAME}}|schük]],
@@ -732,20 +740,19 @@ Det komt diar miast faan, dat en ual ferwisang stregen wurden as.
 Dü könst det uun\'t [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} logbuk faan stregen sidjen] efterlees.',
 'userpage-userdoesnotexist' => "Det brükerkonto ''$1'' as ei diar.
 Wel dü detdiar sidj würelk maage/bewerke?",
-'userpage-userdoesnotexist-view' => 'Benjüterkonto "$1" bestoont ai.',
-'blocked-notice-logextract' => 'Dideer benjüter as tutids spärd.
-For informasjoon füliet di leeste üttooch üt dåt benjüterspär-logbök:',
+'userpage-userdoesnotexist-view' => 'Son brükerkonto "$1" jaft at ei.',
+'blocked-notice-logextract' => "Didiar brüker as speret. Det stäänt uun't sper-logbuk:",
 'clearyourcache' => "'''Beaachte:''' Maage di cache faan dan browser leesag, wan dü a feranrangen sä wel.
 * '''Firefox / Safari:''' Hual ''Shift'' bi't aktualisiarin, of trak ''Strg an F5'' of ''Strg an R'' (''⌘an R'' üüb en Mac)
 * '''Google Chrome:''' Trak ''Strg an Shift an R'' (''⌘an Shift an R'' üüb en Mac)
 * '''Internet Explorer:''' Hual ''Strg'' bi't aktualisiarin, of trak ''Strg an F5''
 * '''Opera:''' ''Extras - Internetspuren löschen - Individuelle Auswahl - Den kompletten Cache löschen''",
-'usercssyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nai CSS for dåt spiikern tu tästen.",
-'userjsyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nai JavaScript for dåt spiikern tu tästen.",
-'usercsspreview' => "'''Påås aw dåt dü bloot din brüker CSS forbekiikest.'''
-'''Dåt as nuch ai spiikerd!'''",
-'userjspreview' => "'''Påås aw dåt dü bloot din brüker JavaScript präiwest/forbekiikest.'''
-'''Dåt as nuch ai spiikerd!'''",
+'usercssyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nei CSS föör det seekrin tu testin.",
+'userjsyoucanpreview' => "'''Tip:''' Brük di „{{int:showpreview}}“-knoop, am din nei JavaScript föör det seekrin tu testin.",
+'usercsspreview' => "'''Seenk diaram, dat det bluas en föörskau faan din CSS as.'''
+'''Det as noch ei seekert wurden!'''",
+'userjspreview' => "'''Seenk diaram, dat det bluas en föörskau faan din JavaScript as.'''
+'''Det as noch ei seekert wurden!'''",
 'sitecsspreview' => "'''Påås aw dåt dü jüdeer CSS bloot forbekiikest.'''
 '''Dåt as nuch ai spiikerd!'''",
 'sitejspreview' => "'''Påås aw dåt dü jüdeer JavaScript code bloot forbekiikest.'''
@@ -753,12 +760,12 @@ For informasjoon füliet di leeste üttooch üt dåt benjüterspär-logbök:',
 'userinvalidcssjstitle' => "''Paase üüb:''' Skak \"\$1\" jaft at ei.
 Seenk diaram, dat faan en brüker iinracht .css- an .js-sidjen mä en letjen buksteew began skel. Bispal:
 ''{{ns:user}}:Münsterkjarl/vector.css'' uunsteed faan ''{{ns:user}}:Münsterkjarl/Vector.css''.",
-'updated' => '(Änred)',
-'note' => "'''Påås aw:'''",
+'updated' => '(Feranert)',
+'note' => "'''Paase üüb:'''",
 'previewnote' => "'''Heer könst dü sä, hü det sidj wurd skal.'''
 Det sidj as oober noch ei seekert!",
 'continue-editing' => "Gung tu't fial för't bewerkin",
-'previewconflict' => 'Dideer forbekiik jeeft di inhålt foon dåt boowerst takstfälj wider. Sü wårt jü sid ütsiinj, wan dü nü spiikerst.',
+'previewconflict' => 'Detdiar föörskau wiset di boowenst dial faan dan tekst. So schocht hi ütj, wan dü ham nü seekerst.',
 'session_fail_preview' => "'''Din werk küd ei ufseekert wurd, diar as wat skiaf gingen.'''
 Fersjük det man noch ans an trak do üüb ''Sid spiikre''.
 Wan't do imer noch ei loket, [[Special:UserLogout|melde di uf]] an weder uun.",
@@ -775,9 +782,9 @@ Det komt flooksis föör, wan Dan anonym Proxy-siinst ei rocht werket.",
 Wees so gud an kontroliare ales noch ans.",
 'editing' => 'Bewerkin faan $1',
 'creating' => 'Maage $1',
-'editingsection' => 'Beårben foon $1 (oufsnaas)',
-'editingcomment' => 'Beårben foon $1 (naien oufsnaas)',
-'editconflict' => 'Beårbingskonflikt: $1',
+'editingsection' => 'Bewerke $1 (kirew)',
+'editingcomment' => 'Bewerke $1 (nei kirew)',
+'editconflict' => "Konflikt bi't bewerkin (BK): $1",
 'explainconflict' => "Hoker ööders hää detheer sidj feranert, üs dü jüst diarmä uun a gang wiarst.
 Boowen könst dü di aktuel stant sä. Oner stun din fernanrangen.
 Bluas wat '''boowen''' stäänt, woort seekert. Diaram kopiare din feranrangen boowen iin.
@@ -798,10 +805,9 @@ Wan dü heer wat iinskrafst, do beest dü diarmä iinferstenen an seekerst tu, d
 
 '''Auerdreeg nään frääm teksten an bilen saner ferloof!'''",
 'longpageerror' => "'''Error: Dan tekst as {{PLURAL:$1|ian kilobyte|$1 kilobytes}} lung, hi mut oober ei linger wees üs {{PLURAL:$2|ian kilobyte|$2 kilobytes}}.'''Hi koon ei ufspiikerd wurd.",
-'readonlywarning' => "'''PÅÅS AW: Jü dootenbånk wörd for unerhult spärd, sü dåt din änringe tutids ai spiikerd wårde koone.
-Wees sü gödj än sääkre di täkst lokool aw din kompjuuter än fersäk tun lääsern tidpunkt, da änringe tu ouerdreegen.'''.
+'readonlywarning' => "'''Paase üüb: Dü könst uun uugenblak ei üüb det dootenbeenk tugrip. Din dooten kön ei seekert wurd.''' Wees so gud an seekre dan tekst iarst ans üüb dan reegner, an ferschük leederhen, ham tu auerdreegen.
 
-Grün for jü späre: $1",
+Grünj för det sperin: $1",
 'protectedpagewarning' => "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''
 Uun't logbuk stäänt muar diartu:",
 'semiprotectedpagewarning' => "'''Paase üüb: Detdiar sidj as dialwiis tu't bewerkin speret wurden. Bluas gudkäänd brükern kön det bewerke.'''
@@ -809,33 +815,32 @@ Uun't logbuk stäänt muar diartu:",
 'cascadeprotectedwarning' => "'''Paase üüb:''' Detdiar sidj koon bluas faan administratooren bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaaden-optsjuun seekert {{PLURAL:$1|as|san}}:",
 'titleprotectedwarning' => "'''Paase üüb: \"Detdiar sidj mä didiar nööm koon ei faan arken bewerket wurd. Bluas enkelt brükern mä [[Special:ListGroupRights|was brükerrochten]] kön detdiar sidj nei maage of bewerke.'''
 Uun't logbuk stäänt muar diartu:",
-'templatesused' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon jüdeer sid ferwånd:',
+'templatesused' => '{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} üüb detdiar sidj brükt:',
 'templatesusedpreview' => '{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} uun detdiar sidjenföörskau brükt:',
-'templatesusedsection' => '{{PLURAL:$1|Jü füliend forlååg wårt|Da füliende forlååge wårde}} foon dideer oufsnaas ferwånd:',
+'templatesusedsection' => '{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} uun didiar kirew brükt:',
 'template-protected' => '(seekert)',
 'template-semiprotected' => '(hualew-seekert)',
-'hiddencategories' => 'Jüdeer sid as lasmoot foon {{PLURAL:$1|1 ferstäägen kategorii|$1 ferstäägene kategoriie}}:',
+'hiddencategories' => 'Detdiar sidj hiart tu {{PLURAL:$1|1 ferbürgen kategorii|$1 ferbürgen kategoriin}}:',
 'nocreatetext' => 'Üüb {{SITENAME}} könst dü nian nei sidjen maage, oober dü könst sidjen feranre. [[Special:UserLogin|Melde di uun of racht en brükerkonto iin]].',
 'nocreate-loggedin' => 'Dü mutst nian nei sidjen maage.',
-'sectioneditnotsupported-title' => 'Jü beårbing foon oufsnaase wårt ai unerstüted',
-'sectioneditnotsupported-text' => 'Jü beårbing foon oufsnaase wårt aw jüdeer beårbingssid ai stiped.',
-'permissionserrors' => 'Beruchtigingsfäägel',
-'permissionserrorstext' => 'Dü bast ai beruchted, jü aksjoon üttufäären. {{PLURAL:$1|grün|grüne}}:',
+'sectioneditnotsupported-title' => 'Det bewerkin faan enkelt kirwer as ei mögelk.',
+'sectioneditnotsupported-text' => 'Det bewerkin faan enkelt kirwer gongt üüb detdiar sidj ei.',
+'permissionserrors' => 'Brükerrochten ling ei',
+'permissionserrorstext' => 'Dü heest diar ei a brükerrochten för. {{PLURAL:$1|Grünj|Grünjer}}:',
 'permissionserrorstext-withaction' => 'Dü heest ei det rocht, $2.
 {{PLURAL:$1|Grünj|Grünjer}}:',
 'recreate-moveddeleted-warn' => "'''Paase üüb: Dü wel en artiikel maage, diar iar al ans stregen wurden as.'''
 Auerlei di det gud, amdat dü niks ferkiard maagest.
 Uun't logbuk stäänt muar diartu:",
-'moveddeleted-notice' => 'Jüheer sid wörd sleeked. Deer füliet en üttooch üt dåt sleek- än ferschüwingslogbök for jüheer sid.',
+'moveddeleted-notice' => "Detdiar sidj as stregen wurden.
+Uun't strik- an fersküüw-logbuk oner stäänt muar diartu.",
 'log-fulllog' => 'Logbuk-iindracher uunluke',
-'edit-hook-aborted' => 'Jü beårbing wörd suner ferklååring döör en snaasstää oufbräägen.',
-'edit-gone-missing' => 'Jü sid köö ai aktualisiird wårde.
-Jü wörd önjscheened sleeked.',
-'edit-conflict' => 'Beårbingskonflikt.',
-'edit-no-change' => 'Din beårbing wörd ignoriird, deer niinj änring an e täkst fornümen wörd.',
+'edit-hook-aborted' => "Det bewerkin as faan't software ufbreegen wurden. Di grünj as ei bekäänd.",
+'edit-gone-missing' => 'Detdiar sidj küd ei aktualisiaret wurd. Ferlicht as det stregen wurden.',
+'edit-conflict' => "Konflikt bi't bewerkin (BK).",
+'edit-no-change' => 'Din feranrang woort ei seekert, auer dü di tekst ei feranert heest.',
 'postedit-confirmation' => 'Din feranrang as seekert wurden.',
-'edit-already-exists' => 'Köö niinj nai sid mååge.
-Dåt bestöö ål.',
+'edit-already-exists' => 'Det nei sidj küd ei iinracht wurd. Son sidj as al diar.',
 'defaultmessagetext' => 'Standard tekst',
 'content-failed-to-parse' => "Parsing faan $2 för't model $1 ging skiaf: $3",
 'invalid-content-data' => 'Diar stäänt wat uun, wat diar ei hen hiart',
@@ -850,16 +855,16 @@ Dåt bestöö ål.',
 'content-model-css' => 'CSS',
 
 # Parser/template warnings
-'expensive-parserfunction-warning' => 'Woorschauing: Jüdeer sid önjthålt tu fool apteele foon widluftie parserfunksjoone.
+'expensive-parserfunction-warning' => "'''Paase üüb:''' Detdiar sidj brükt tuföl widjloftag server-funktjuunen.
 
-Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} weese.',
+Diar mut ei muar üs {{PLURAL:$2|1|$2}} brükt wurd. Nü {{PLURAL:$1|woort diar 1|wurd diar $1}} brükt.",
 'expensive-parserfunction-category' => 'Sidjen mä tuföl parser-funktjuunen.',
-'post-expand-template-inclusion-warning' => "'''Woorschauing:''' Jü grutelse foon da önjbünene forlååge as tu grut, hu forlååge koone ai önjbünen wårde.",
+'post-expand-template-inclusion-warning' => "'''Paase üüb:''' Enkelt föörlaagen san tu grat, jo kön ei uun det sidj iinbünjen wurd.",
 'post-expand-template-inclusion-category' => 'Sidjen mä muar üs det maksimaal taal faan iinbünjen föörlaagen.',
-'post-expand-template-argument-warning' => 'Påås aw: Jüdeer sid enthålt tumanst en argumänt önj en forlååge, dåt äkspandiird tu grut as. Dadeere argumänte wårde ignoriird.',
+'post-expand-template-argument-warning' => "'''Paase üüb:''' Üüb detdiar sidj stäänt tumanst ään iindrach för en föörlaag, diar tu grat as. Sok iindracher wurd ei ferwerket.",
 'post-expand-template-argument-category' => 'Sidjen mä föörlaagen, huar ei arke iindrach brükt wurd koon.',
-'parser-template-loop-warning' => 'Forlåågesloif önjtdäkt: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Forloagerekursjoonsdiipgränse ouerschran ($1)',
+'parser-template-loop-warning' => 'Diar as en föörlaagensleuf: [[$1]]',
+'parser-template-recursion-depth-warning' => 'Tuföl föörlaagen uun föörlaagen ($1)',
 'language-converter-depth-warning' => 'Spriakenkonwerter auerläästet ($1)',
 'node-count-exceeded-category' => 'Jodiar sidjen haa tuföl ferbinjangen (nodes)',
 'node-count-exceeded-warning' => 'Detdiar sidj hää tuföl ferbinjangen (nodes)',
@@ -872,51 +877,51 @@ Deer {{PLURAL:$2|mötj ai mör ås 1 apteel|mönje ai mör ås $1 apteele}} wees
 # "Undo" feature
 'undo-success' => 'Detdiar feranrang koon turag nimen wurd. 
 Luke oner, of dü det uk würelk du wel, an do seekre din feranrangen.',
-'undo-failure' => 'Jü änring köö ai tunintemååged wårde, deer di bedrååwede oufsnaas intwasche feränred wörd.',
-'undo-norev' => 'Jü beårbing köö ai tunintemååged wårde, deer jü ai bestoont unti sleeked wörd.',
-'undo-summary' => 'Änring $1 foon [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusjoon]]) tunintemååged.',
+'undo-failure' => 'Det feranrang küd ei stregen wurd, auer di kirew uuntesken feranert wurden as.',
+'undo-norev' => 'Det feranrang küd ei turagsaat wurd, auer diar niks as of auer det sidj stregen wurden as.',
+'undo-summary' => 'Feranrang $1 faan [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusjuun]]) turagsaat.',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Benjüterkonto köö ai mååged wårde',
-'cantcreateaccount-text' => "Dår måågen foon en brükerkonto foon jü IP-adräs '''($1)''' üt wörd döör [[User:$3|$3]] späred.
+'cantcreateaccounttitle' => 'Det brükerkonto koon ei iinracht wurd',
+'cantcreateaccount-text' => "Det iinrachten faan en brükerkonto faan det IP-adres '''($1)''' as faan [[User:$3|$3]] speret wurden.
 
-Grün foon jü späre: ''$2''",
+Grünj för det sper: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbuken faan detdiar sidj uunwise',
-'nohistory' => 'Deer as niinj beårbingshistoori for jüdeer sid.',
+'nohistory' => 'Detdiar sidj hää nään ferluup faan werjuunen.',
 'currentrev' => 'Leetst werjuun',
-'currentrev-asof' => 'Leetst werjuun faan di $2, am e klook $3',
+'currentrev-asof' => 'Leetst werjuun faan di $2, am a klook $3',
 'revisionasof' => 'Werjuun faan $2, klook $3',
 'revision-info' => 'Werjuun faan di $4 am a klook $5 faan $2',
 'previousrevision' => '← Naistääler werjuun',
 'nextrevision' => 'Naistjonger werjuun →',
 'currentrevisionlink' => 'Leetst werjuun',
-'cur' => 'aktuäl',
-'next' => 'ist',
-'last' => 'leest',
+'cur' => 'Aktuel',
+'next' => 'Naist',
+'last' => 'Leetst',
 'page_first' => 'Began',
-'page_last' => 'Iinje',
+'page_last' => 'Aanj',
 'histlegend' => "Am a feranrangen uuntuwisin, schük tau werjuunen ütj an trak üüb „{{int:compareselectedversions}}“.<br />
 * '''({{int:cur}})''' = ferskeel tu't aktuel werjuun, '''({{int:last}})''' = ferskeel tu't leetst werjuun, '''{{int:minoreditletter}}''' = letj feranrang.",
 'history-fieldset-title' => 'Schük uun a ferluup',
 'history-show-deleted' => 'Bluas stregen werjuunen',
-'histfirst' => 'Ã\85lste',
-'histlast' => 'Naiste',
-'historysize' => '({{PLURAL:$1|1 Byte|$1 Bytes}})',
-'historyempty' => '(lääsi)',
+'histfirst' => 'Ã\84älst',
+'histlast' => 'Neist',
+'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
+'historyempty' => '(leesag)',
 
 # Revision feed
-'history-feed-title' => 'Färsjoonshistoori',
-'history-feed-description' => 'Färsjoonshistoori for jüdeer sid önj {{SITENAME}}',
-'history-feed-item-nocomment' => '$1 bit $2',
+'history-feed-title' => 'Ferluup faan werjuunen',
+'history-feed-description' => 'Ferluup faan werjuunen faan detdiar sidj uun {{SITENAME}}',
+'history-feed-item-nocomment' => '$1 di $3 am a klook $4',
 'history-feed-empty' => 'Son sidj jaft at ei. Ferlicht as det stregen of fersköwen wurden. [[Special:Search|Schük]] üüb {{SITENAME}} efter nei sidjen, diar diartu paase.',
 
 # Revision deletion
-'rev-deleted-comment' => '(Tuhuupefooting wächnümen)',
-'rev-deleted-user' => '(Brükernoome wächhååld)',
-'rev-deleted-event' => '(Logbökaksjoon wächhååld)',
-'rev-deleted-user-contribs' => '[Benjüternoome unti IP-adräs wächhååld - beårbing üt baidråge ferstäägen]',
+'rev-deleted-comment' => '(Tuupfaadet beskriiwang wechnimen)',
+'rev-deleted-user' => '(Brükernööm stregen)',
+'rev-deleted-event' => '(Logbuk-iindrach stregen)',
+'rev-deleted-user-contribs' => '[Brükernööm of IP-adres wechnimen - Feranrangen uun bidracher ferbürgen]',
 'rev-deleted-text-permission' => "Detdiar werjuun as '''stregen''' wurden.
 Uun't [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbuk] stäänt muar diartu.",
 'rev-deleted-text-unhide' => "Detdiar werjuun as '''stregen''' wurden.
@@ -939,18 +944,18 @@ Dü könst [$1 di ferskeel uunluke], wan dü wel.",
 'rev-deleted-diff-view' => "Ian faan jodiar werjuunen as '''stregen''' wurden.
 Dü könst di ferskeel uunluke. Wan dü muar wed wel, luke iin uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbuk].",
 'rev-suppressed-diff-view' => "Ian faan jodiar werjuunen as '''ferbürgen''' wurden. Dü könst di ferskeel uunluke. Wan dü muar wed wel, luke iin uun't [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} fersteeg-logbuk].",
-'rev-delundel' => 'wis/fersteeg',
+'rev-delundel' => 'wise/fersteeg',
 'rev-showdeleted' => 'wise',
 'revisiondelete' => 'Werjuunen strik of weder iinstel',
 'revdelete-nooldid-title' => 'Nian werjuun uunden',
 'revdelete-nooldid-text' => 'Dü heest nian werjuun för detheer aktjuun uunden, of det werjuun jaft at ei, of dü ferschükst, en aktuel werjuun tu striken.',
-'revdelete-nologtype-title' => 'Niinj logtüüp önjjääwen',
-'revdelete-nologtype-text' => 'Deer wörd niinj logtüüp for jüheer aksjoon önjjääwen.',
-'revdelete-nologid-title' => 'Üngülti logönjdråch',
-'revdelete-nologid-text' => 'Deer wör niinj logtüüp ütkiisd unti di kiisde logtüüp bestoont ai.',
+'revdelete-nologtype-title' => 'Nian log-typ uunden',
+'revdelete-nologtype-text' => 'Dü heest nään log-typ för detdiar aktjuun uunden.',
+'revdelete-nologid-title' => 'Ferkiard log-iindrach',
+'revdelete-nologid-text' => 'Dü heest nään log-typ uunden of di log-typ as ferkiard.',
 'revdelete-no-file' => 'Son dateinööm as ei diar.',
 'revdelete-show-file-confirm' => 'Wel dü würelk det stregen werjuun faan det datei „<nowiki>$1</nowiki>“ faan di $2, am a klook $3 uunluke?',
-'revdelete-show-file-submit' => 'Jåå',
+'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''{{PLURAL:$2|Ütjsoocht werjuun|Ütjsoocht werjuunen}} faan [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Ütjsoocht logbukiindrach|Ütjsoocht logbukiindracher}}:'''",
 'revdelete-text' => "'''Stregen werjuunen an aktjuunen bliiw uun di ferluup an uun a logbuken, man det koon ei arken efterlees.'''
@@ -960,62 +965,61 @@ Dü könst di ferskeel uunluke. Wan dü muar wed wel, luke iin uun't [{{fullurl:
 'revdelete-suppress-text' => "Det skul '''bluas''' onertrakt wurd bi:
 * Persöönelk informatsjuunen, diar näämen wat uungung
 *: ''Adresen, Tilefoonnumern, Ferseekerangsnumern an sowat''",
-'revdelete-legend' => 'Seeten foon da sachtboorhäids-gränse',
+'revdelete-legend' => 'Iinstelangen, hüföl tu sen wees skal',
 'revdelete-hide-text' => 'Tekst faan det werjuun fersteeg',
 'revdelete-hide-image' => 'Fersteeg, wat uun det datei stäänt',
-'revdelete-hide-name' => 'Logbök-aksjoon fersteege',
-'revdelete-hide-comment' => 'Beårbingskomäntoor fersteege',
-'revdelete-hide-user' => 'Benjüternoome//IP-adräse foon e beårber fersteege',
-'revdelete-hide-restricted' => 'Doote uk for administratoore än oudere unerdrüke',
-'revdelete-radio-same' => '(ai änre)',
-'revdelete-radio-set' => 'Jåå',
-'revdelete-radio-unset' => 'Nåån',
-'revdelete-suppress' => 'Grün foon dåt striken uk for administratoore fersteege',
+'revdelete-hide-name' => 'Logbuk-aktjuun fersteeg',
+'revdelete-hide-comment' => 'Tuupfaadet beskriiwang fersteeg',
+'revdelete-hide-user' => 'Brükernööm/IP-adres faan di brüker fersteeg',
+'revdelete-hide-restricted' => 'Dooten uk för administratooren an öödern fersteeg',
+'revdelete-radio-same' => '(ei feranre)',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Naan',
+'revdelete-suppress' => "Grünj för't striken uk för administratooren an öödern fersteeg",
 'revdelete-unsuppress' => 'Weder iinsteld werjuunen luasmaage',
-'revdelete-log' => 'Begrüning:',
+'revdelete-log' => 'Grünj:',
 'revdelete-submit' => 'Widjer för {{PLURAL:$1|ütjsoocht werjuun|ütjsoocht werjuunen}}',
-'revdelete-success' => "'''Jü färsjoonsönjsicht wörd aktualisiird.'''",
+'revdelete-success' => "'''Det werjuunsuunsicht as aktualisiaret wurden.'''",
 'revdelete-failure' => "'''Jü färsjoonsönjsicht köö ai aktualisiird wårde:'''
 $1",
-'logdelete-success' => "'''Logbökönjsicht ma erfolch aktualisiird.'''",
-'logdelete-failure' => "'''Logböksachtboorhäid köö ai änred wårde:'''
+'logdelete-success' => "'''Logbukuunsicht as aktualisiaret wurden.'''",
+'logdelete-failure' => "'''Det logbukuunsicht küd ei feranert wurd:'''
 $1",
-'revdel-restore' => 'sichtboorhäid änre',
+'revdel-restore' => 'Feranre, wat tu sen wees skal',
 'revdel-restore-deleted' => 'stregen werjuunen',
 'revdel-restore-visible' => 'sichtboor werjuunen',
-'pagehist' => 'Färsjoonshistoori',
+'pagehist' => 'Ferluup faan werjuunen',
 'deletedhist' => 'Stregen werjuunen',
-'revdelete-hide-current' => 'Fäägel bai t fersteegen foon di önjdråch foon e klook $1, $2; ditheer as jü aktuäl färsjoon,
-jü koon ai ferstäägen wårde.',
-'revdelete-show-no-access' => 'Fäägel bai t wisen foon di önjdråch foon $1, e klook $2: diheer önjdråch wörd ås "begränsed" markiird.
-Dü heest deeraw nåån tugraawe.',
+'revdelete-hide-current' => 'Di iindrach faan $1, klook $2 koon ei ferbürgen wurd. Det as det aktuel werjuun.',
+'revdelete-show-no-access' => 'Bi\'t bewerkin di $1, am a klook $2 as wat skiaf gingen: Didiar iindrach as üs "hualew klaar" markiaret.
+Dü könst diar ei üüb tugrip.',
 'revdelete-modify-no-access' => 'Bi\'t bewerkin di $1, am a klook $2 as wat skiaf gingen: Diheer iindrach as üs "hualew klaar" markiaret. Dü könst diar ei üüb tugrip.',
 'revdelete-modify-missing' => "Bi't bewerkin faan ID $1 as wat skiaf gingen: At waant uun a dootenbeenk!",
 'revdelete-no-change' => "'''Waarskau:''' Di iindrach faan di $1, am a klook $2 hää al jodiar iinstelangen.",
-'revdelete-concurrent-change' => "Bi't bewerkin faan di iindrach di $1, am a klook $2 as wat skiaf gingen: At sjocht so ütj, üs wan hoker ööders det bewerket hää, iar dü det bewerke wulst. Luke iin uun a logbuken.",
+'revdelete-concurrent-change' => "Bi't bewerkin faan di iindrach di $1, am a klook $2 as wat skiaf gingen: At schocht so ütj, üs wan hoker ööders det bewerket hää, iar dü det bewerke wulst. Luke iin uun a logbuken.",
 'revdelete-only-restricted' => "Bi't fersteegen faan di iindrach di $1, am a klook $2 as wat skiaf gingen: Dü könst di iindrach ei föör administratooren fersteeg, saner ööder iinstelangen tu feranrin.",
 'revdelete-reason-dropdown' => "*Grünjer för't striken san miast
 ** Copyright woort ei iinhäälen
 ** Persöönelk informatsjuunen, diar näämen wat uungung
 ** Brükernööm as ei tuläät
 ** Fülk informatsjuunen",
-'revdelete-otherreason' => 'Ouderen/tubaikaamenden grün:',
-'revdelete-reasonotherlist' => 'Ouderen grün',
+'revdelete-otherreason' => 'Ööder/noch en grünj:',
+'revdelete-reasonotherlist' => 'Ööder grünj',
 'revdelete-edit-reasonlist' => "Grünjer för't striken bewerke",
-'revdelete-offender' => 'Autoor foon jüdeer färsjoon:',
+'revdelete-offender' => 'Skriiwer faan detdiar werjuun:',
 
 # Suppression log
-'suppressionlog' => 'Oversight-logbök',
+'suppressionlog' => 'Oversight-logbuk',
 'suppressionlogtext' => 'Detheer as det logbuk faan oversighter aktsjuunen.
 Luke bi [[Special:BlockList|List faan speret IP-adresen an brükernöömer]] för aktuel sperangen.',
 
 # History merging
-'mergehistory' => 'Fersjoonshistoorie feriine',
-'mergehistory-header' => 'Ma jüdeer spetsjåålsid koost dü jü färsjoonshistoori foon en jurtkamstsid ma jü färsjoonshistoori foon en müüljsid feriine.
-Stal sääker, dåt jü färsjoonshistoori foon en sid histoorisch koräkt as.',
+'mergehistory' => 'Ferluup faan werjuunen tuupfeer',
+'mergehistory-header' => 'Mä detdiar spezial-sidj könst dü di werjuunsferluup faan ian sidj mä di ferluup faan en ööder sidj tuupfeer.
+Aachte diarüüb, dat di ferluup faan det sidj uk rocht as.',
 'mergehistory-box' => 'Ferluup faan tau sidjen tuupfeer:',
-'mergehistory-from' => 'Jurtkamstsid:',
-'mergehistory-into' => 'Müüljsid:',
+'mergehistory-from' => 'Iarst sidj:',
+'mergehistory-into' => 'Ööder sidj:',
 'mergehistory-list' => 'Werjuunen, diar tuupfeerd wurd kön.',
 'mergehistory-merge' => 'Jodiar werjuunen faan „[[:$1]]“ kön efter „[[:$2]]“ auerdraanj wurd.
 Kääntiakne det wersjuun, wat üs leetst mä auerdraanj wurd skal.
@@ -1025,30 +1029,30 @@ A nawigatjuun links saat ales weder turag üüb di ual stant.',
 'mergehistory-empty' => 'Nian werjuunen kön tuupfeerd wurd.',
 'mergehistory-success' => '$3 {{PLURAL:$3|werjuun|werjuunen}} faan [[:$1]] tuupfeerd tu [[:$2]].',
 'mergehistory-fail' => 'Werjuunen kön ei tuupfeerd wurd. Luke noch ans efter at sidj an a tidjen.',
-'mergehistory-no-source' => 'Jurtkamstsid "$1" as ai deer.',
-'mergehistory-no-destination' => 'Müüljsid „$1“ bestoont ai.',
+'mergehistory-no-source' => 'Det iarst sidj "$1" as ai diar.',
+'mergehistory-no-destination' => 'Det ööder sidj „$1“ as ei diar.',
 'mergehistory-invalid-source' => 'Jurtkamstsid mötj en gülti sidnoome heewe.',
 'mergehistory-invalid-destination' => 'Müüljsid mötj en gülti sidnoome weese.',
 'mergehistory-autocomment' => '„[[:$1]]“ feriind eefter „[[:$2]]“',
-'mergehistory-comment' => '„[[:$1]]“ feriind eefter „[[:$2]]“: $3',
-'mergehistory-same-destination' => 'Jurtkamst- än müüljsid mönje ai idäntisch weese',
-'mergehistory-reason' => 'Grün:',
+'mergehistory-comment' => '„[[:$1]]“ tuupfeerd tu „[[:$2]]“: $3',
+'mergehistory-same-destination' => 'Det iarst an det ööder sidj mut ei detsalew wees',
+'mergehistory-reason' => 'Grünj:',
 
 # Merge log
 'mergelog' => 'Feriin-logbök',
 'pagemerge-logentry' => '[[$1]] efter [[$2]] tuupfeerd (werjuunen bit $3)',
-'revertmerge' => 'Feriining tuninte mååge',
-'mergelogpagetext' => 'Dåtheer as dåt logbök foon da feriinde färsjoonshistoorie.',
+'revertmerge' => 'Det tuupfeeren turagsaat',
+'mergelogpagetext' => 'Diar as det logbuk faan a tuupfeerd sidjen.',
 
 # Diffs
 'history-title' => '$1: Ferluup faan a werjuunen',
 'difference-title' => 'Ferskeel tesken a werjuunen faan "$1"',
 'difference-title-multipage' => 'Ferskeel tesken a sidjen "$1" an "$2"',
 'difference-multipage' => '(Ferskeel tesken sidjen)',
-'lineno' => 'Ra $1:',
+'lineno' => 'Rä $1:',
 'compareselectedversions' => 'Werjuunen ferglik',
 'showhideselectedversions' => 'Werjuunen wise of fersteeg',
-'editundo' => 'tunintemååge',
+'editundo' => 'turagsaat',
 'diff-multi' => '({{PLURAL:$1|Ian werjuun diartesken|$1 werjuunen diartesken}} faan {{PLURAL:$2|ään brüker|$2 brükern}} {{PLURAL:$1|woort|wurd}} ei uunwiset)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Ian werjuun diartesken|$1 werjuunen diartesken}} faan muar üs $2 {{PLURAL:$2|brüker|brükern}} wurd ei uunwiset)',
 'difference-missing-revision' => "{{PLURAL:$2|Ian werjuun|$2 werjuunen}} faan di ferskeel ($1) {{PLURAL:$2|as|san}} ei fünjen wurden.
@@ -1061,22 +1065,21 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'searchresults-title' => 'Fünjen sidjen för „$1“',
 'searchresulttext' => "Wan dü muar auer't schüken uun {{SITENAME}} wed wel, luke efter bi [[{{MediaWiki:Helppage}}|{{int:help}}]].",
 'searchsubtitle' => 'Din uunfraag: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|sidjen, diar mä „$1“ began]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sidjen, diar efter „$1“ ferwise]])',
-'searchsubtitleinvalid' => 'Din säkönjfrååg: "$1".',
+'searchsubtitleinvalid' => 'Din uunfraag: "$1".',
 'toomanymatches' => 'Diar kaam tuföl resultooten üüb din uunfraag. Fersjük det ööders.',
 'titlematches' => 'Auerianstemangen mä sidjennöömer',
 'notitlematches' => 'Nian auerianstemangen mä sidjennöömer',
-'textmatches' => 'Oueriinjstiminge ma inhålte',
-'notextmatches' => 'Niinj oueriinjstiming ma inhålte',
-'prevn' => '{{PLURAL:$1|leesten|leeste $1}}',
-'nextn' => '{{PLURAL:$1|näisten|näiste $1}}',
-'prevn-title' => 'Leeste $1 {{PLURAL:$1|resultoot|resultoote}}',
-'nextn-title' => 'Näiste $1 {{PLURAL:$1|resultoot|resultoote}}',
-'shown-title' => 'Wis $1 {{PLURAL:$1|resultoot|resultoote}} pro sid',
-'viewprevnext' => 'Wis ($1 {{int:pipe-separator}} $2) ($3)',
+'textmatches' => 'Auerianstemangen mä teksten',
+'notextmatches' => 'Nian auerianstemangen mä teksten',
+'prevn' => '{{PLURAL:$1|leetst|leetst $1}}',
+'nextn' => '{{PLURAL:$1|naist|naist $1}}',
+'prevn-title' => 'Leetst $1 {{PLURAL:$1|resultaat|resultaaten}}',
+'nextn-title' => 'Naist $1 {{PLURAL:$1|resultaat|resultaaten}}',
+'shown-title' => 'Wise $1 {{PLURAL:$1|resultaat|resultaaten}} per sidj',
+'viewprevnext' => 'Wise ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Säkmöölikhäide',
 'searchmenu-exists' => "'''Deer as en sid nååmd \"[[:\$1]]\" önj jüdeer Wiki'''",
-'searchmenu-new' => "'''Mååg jü sid „[[:$1|$1]]“ önj jüdeer Wiki.'''",
-'searchhelp-url' => 'Help:Inhåltsfertiiknis',
+'searchmenu-new' => "'''Maage det sidj „[[:$1]]“ uun detheer wiki.'''",
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wise aal jo sidjen, diar so began]]',
 'searchprofile-articles' => 'Artiikler',
 'searchprofile-project' => 'Halep- an Projektsidjen',
@@ -1088,31 +1091,31 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'searchprofile-images-tooltip' => 'Bilen schük',
 'searchprofile-everything-tooltip' => 'Schük aueraal (uk diskusjuunssidjen)',
 'searchprofile-advanced-tooltip' => 'Uun ööder nöömrümer schük',
-'search-result-size' => '$1 ({{PLURAL:$2|1 uurd|$2 uurde}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1 wurd|$2 wurden}})',
 'search-result-category-size' => '{{PLURAL:$1|1 sidj|$1 sidjen}} ({{PLURAL:$2|1 onerkategorii|$2 onerkategoriin}}, {{PLURAL:$3|1 datei|$3 datein}})',
-'search-result-score' => 'Relevans: $1 %',
-'search-redirect' => '(widerliidjing foon „$1“)',
-'search-section' => '(oufsnaas $1)',
-'search-suggest' => 'Miinjdst dü „$1“?',
-'search-interwiki-caption' => 'Süsterprujäkte',
-'search-interwiki-default' => '$1 resultoote:',
-'search-interwiki-more' => '(widere)',
-'search-relatedarticle' => 'früne',
-'mwsuggest-disable' => "Föörslacher för't sjüken deaktiwiare",
+'search-result-score' => 'Relewans: $1 %',
+'search-redirect' => '(widjerfeerd faan „$1“)',
+'search-section' => '(kirew $1)',
+'search-suggest' => 'Mendst dü „$1“?',
+'search-interwiki-caption' => 'Saster-projekten',
+'search-interwiki-default' => '$1 resultaaten:',
+'search-interwiki-more' => '(muar)',
+'search-relatedarticle' => 'Ferbünjen',
+'mwsuggest-disable' => "Föörslacher för't schüken deaktiwiare",
 'searcheverything-enable' => 'Uun arke nöömrüm schük',
-'searchrelated' => 'früne',
+'searchrelated' => 'ferbünjen',
 'searchall' => 'aaltumaal',
-'showingresults' => "Heer {{PLURAL:$1|as '''1''' resultoot|san '''$1''' resultoote}}, beganend ma numer '''$2.'''",
-'showingresultsnum' => "Heer {{PLURAL:$3|as '''1''' resultoot|san '''$3''' resultoote}}, beganend ma numer '''$2.'''",
-'showingresultsheader' => "{{PLURAL:$5|resultoot '''$1''' foon '''$3'''|resultoote '''$1-$2''' foon '''$3'''}}, for '''$4.'''",
+'showingresults' => "Heer {{PLURAL:$1|as '''1''' resultaat|san '''$1''' resultaaten}}, jo began mä numer '''$2.'''",
+'showingresultsnum' => "Heer {{PLURAL:$3|as '''1''' resultaat|san '''$3''' resultaaten}}, jo began mä numer '''$2.'''",
+'showingresultsheader' => "{{PLURAL:$5|resultaat '''$1''' faan '''$3'''|resultaaten '''$1-$2''' faan '''$3'''}}, för '''$4.'''",
 'nonefound' => "'''Paase üüb:''' Diar wurd man enkelt nöömrümer trochsoocht. Wan dü ''all:'' föör din wurd skraft, do woort uk uun aal a nöömrümer (datein, kategoriin, föörlaagen asw.) soocht. Dü könst uk en wasen nöömrüm föörwechstel.",
-'search-nonefound' => 'For din säkanfrååg würden niinj resultoote fünen.',
+'search-nonefound' => 'För din uunfraag san nian resultaaten fünjen wurden.',
 'powersearch' => 'Ütjwidjet schüken',
 'powersearch-legend' => 'Ütjwidjet schüken',
 'powersearch-ns' => 'Schük uun nöömrümer:',
-'powersearch-redir' => 'Widerliidjinge anwise',
+'powersearch-redir' => 'Widjerfeerangen uunwise',
 'powersearch-field' => 'Schük efter:',
-'powersearch-togglelabel' => 'Schük ütj:',
+'powersearch-togglelabel' => 'Schük uun:',
 'powersearch-toggleall' => 'Aaltumaal',
 'powersearch-togglenone' => 'Nianen',
 'search-external' => 'Schük ekstern',
@@ -1120,15 +1123,15 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-error' => "Diar as wat skiaf gingen bi't schüken: $1",
 
 # Preferences page
-'preferences' => 'Önjstalinge',
+'preferences' => 'Iinstelangen',
 'mypreferences' => 'Iinstelangen',
 'prefs-edits' => 'Taal faan feranrangen:',
 'prefsnologin' => 'Ei uunmeldet',
 'prefsnologintext' => 'Dü skel <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} uunmeldet]</span> wees, am din iinstelangen tu feranrin.',
-'changepassword' => 'Pååsuurd änre',
+'changepassword' => 'Paaswurd feranre',
 'prefs-skin' => 'Skak',
-'skin-preview' => 'Forlök',
-'datedefault' => 'Foor-önjstaling',
+'skin-preview' => 'Föörskau',
+'datedefault' => 'Föör-iinstelang',
 'prefs-beta' => 'Beta mögelkhaiden',
 'prefs-datetime' => 'Dai an klooktidj',
 'prefs-labs' => 'Alpha mögelkhaiden',
@@ -1141,13 +1144,13 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-watchlist-edits' => 'Ei muar feranrangen üs:',
 'prefs-watchlist-edits-max' => 'Ai mör as 1000',
 'prefs-watchlist-token' => "Token för uun't uug behualen:",
-'prefs-misc' => 'Dit än dat',
-'prefs-resetpass' => 'Pååsuurd änre',
+'prefs-misc' => 'Dit an dat',
+'prefs-resetpass' => 'Paaswurd feranre',
 'prefs-changeemail' => 'Feranre det E-Mail-adres',
 'prefs-setemail' => 'E-Mail-adres fäästlei:',
 'prefs-email' => 'E-Mail iinstelangen',
 'prefs-rendering' => 'Skak',
-'saveprefs' => 'Önjstalinge sääkere',
+'saveprefs' => 'Iinstelangen seekre',
 'resetprefs' => 'Wech diarmä',
 'restoreprefs' => 'Normool iinstelangen weder haale',
 'prefs-editing' => 'Bewerke',
@@ -1165,7 +1168,7 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-help-watchlist-token' => "Wan dü detdiar fial mä en hiamelken code ütjfalst, woort en RSS-feed iinracht. Arken mä didiar code koon do sä, wat dü uun't uug behual wel. Diaram skul hi ei so ianfach wees, nem dach didiar: $1",
 'savedprefs' => 'Din iinstelangen san seekert wurden.',
 'timezonelegend' => 'Tidjsoon:',
-'localtime' => 'lokaal tid',
+'localtime' => 'Lokaal tidj:',
 'timezoneuseserverdefault' => 'Wiki standard tidj brük ($1)',
 'timezoneuseoffset' => 'Öödern (ferskeel uundu)',
 'timezoneoffset' => 'Ferskeel¹:',
@@ -1181,12 +1184,12 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'timezoneregion-europe' => 'Euroopa',
 'timezoneregion-indian' => 'Indik',
 'timezoneregion-pacific' => 'Pasiifik',
-'allowemail' => 'E-Mail foon oudere brükere tulätje',
+'allowemail' => 'E-mail faan ööder brükern tuläät',
 'prefs-searchoptions' => 'Schük',
-'prefs-namespaces' => 'Noomerüme',
+'prefs-namespaces' => 'Nöömrümer',
 'defaultns' => 'Ööders schük uun jodiar nöömrümer:',
-'default' => 'Forinstaling',
-'prefs-files' => 'Dååtäie',
+'default' => 'Fööriinstelang',
+'prefs-files' => 'Datein',
 'prefs-custom-css' => 'Salew maaget CSS',
 'prefs-custom-js' => 'Salew maaget JavaScript',
 'prefs-common-css-js' => 'CSS / JavaScript för arke skak:',
@@ -1203,7 +1206,7 @@ Do san jo ual iinstelangen wech.',
 'yourlanguage' => 'Spriak:',
 'yourvariant' => 'Spriak:',
 'prefs-help-variant' => 'Uun hün skriiwwiis skel a sidjen uunwiset wurd:',
-'yournick' => 'Nai signatuur:',
+'yournick' => 'Nei signatuur:',
 'prefs-help-signature' => 'Wees so gud an onerskriiw üüb diskusjuunssidjen mä „<nowiki>~~~~</nowiki>“. Diar komt do dan brükernööm an det klooktidj bi ütj.',
 'badsig' => "Diar stemet wat ei mä't signatuur. Preewe at HTML.",
 'badsiglength' => 'Din signatuur mut ei muar üs $1 {{PLURAL:$1|tiaken|tiakens}} haa.',
@@ -1213,7 +1216,7 @@ Do san jo ual iinstelangen wech.',
 'gender-female' => 'Wüf',
 'prefs-help-gender' => "Stäänt tu wool: Det woort brükt för't paasin uunspreegen faan maaner an wüfen. Arken koon det lees.",
 'email' => 'E-mail',
-'prefs-help-realname' => 'Stäänt tu wool. Wan dü dan rochten nööm uundääst, koon hi mä din bewerkangen ferbünjen wurd.',
+'prefs-help-realname' => 'Stäänt tu wool. Wan dü dan rochten nööm uundääst, koon hi mä din feranrangen ferbünjen wurd.',
 'prefs-help-email' => 'Dü säärst din e-mail-adres ei uundu, oober do könst dü uk nian mädialangen fu, wan dü ans din paaswurd ferjiden heest.',
 'prefs-help-email-others' => 'Mä ööder brükern könst dü uk auer hör an din brükersidj kontakt apnem. Diarför woort din e-mail-adres ei brükt.',
 'prefs-help-email-required' => 'Du en rocht E-Mail-adres uun.',
@@ -1297,7 +1300,7 @@ Do san jo ual iinstelangen wech.',
 'right-suppressredirect' => "Bi't fersküüwen nian widjerfeerang iinracht",
 'right-upload' => 'Datein huuchschüür',
 'right-reupload' => 'Datein auerskriiw',
-'right-reupload-own' => 'En datei auerskriiw, diar dü salew huuchsjüürd heest',
+'right-reupload-own' => 'En datei auerskriiw, diar dü salew huuchschüürd heest',
 'right-reupload-shared' => 'En datei auerskriiw, diar uun en gemiansoom archiif leit',
 'right-upload_by_url' => 'Datein faan en URL-adres huuchschüür',
 'right-purge' => 'Sidjen-cache leesag maage saner efterfraagin',
@@ -1328,6 +1331,8 @@ Do san jo ual iinstelangen wech.',
 'right-editusercssjs' => 'CSS- an JavaScript-datein faan ööder brükern bewerke',
 'right-editusercss' => 'CSS-datein faan ööder brükern bewerke',
 'right-edituserjs' => 'JavaScript-datein faan ööder brükern bewerke',
+'right-editmyusercss' => 'Aanj CSS-datein bewerke',
+'right-editmyuserjs' => 'Aanj JavaScript-datein bewerke',
 'right-rollback' => 'Feranrangen faan di leetst brüker gau turagsaat',
 'right-markbotedits' => 'Gau turagsaatangen üs bot-iindracher kääntiakne',
 'right-noratelimit' => 'Ei troch limits beskäären',
@@ -1342,15 +1347,15 @@ Do san jo ual iinstelangen wech.',
 'right-userrights-interwiki' => 'Brükerrochten uun ööder Wikis bewerke',
 'right-siteadmin' => 'Dootenbeenk spere an eebenmaage',
 'right-override-export-depth' => 'Sidjen an onersidjen bit tu en jipde faan 5 eksportiare',
-'right-sendemail' => 'E-mails tu oudere brükere schake',
-'right-passwordreset' => 'Paaswurd faan en brüker turagsaat an det E-Mail diartu uunluke',
+'right-sendemail' => 'E-mails tu ööder brükern schüür',
+'right-passwordreset' => 'Paaswurd faan en brüker turagsaat an det e-mail diartu uunluke',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Nai-önjmäldings-logbök',
+'newuserlogpage' => 'Neiuunmeldangs-logbuk',
 'newuserlogpagetext' => 'Detheer as en logbuk faan nei iinracht brükerkonten.',
 
 # User rights log
-'rightslog' => 'Ruchte-logbök',
+'rightslog' => 'Brükerrochten-logbuk',
 'rightslogtext' => 'Det as det logbuk auer feranrangen faan brükerrochten.',
 
 # Associated actions - in the sentence "You do not have permission to X"
@@ -1391,25 +1396,25 @@ Do san jo ual iinstelangen wech.',
 'action-sendemail' => 'e-mails sjüür',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|änring|änringe}}',
+'nchanges' => '$1 {{PLURAL:$1|feranrang|feranrangen}}',
 'recentchanges' => 'Leetst feranrangen',
-'recentchanges-legend' => 'Wis-opsjoone',
+'recentchanges-legend' => "Iinstelangen för't uunwisin",
 'recentchanges-summary' => "Üüb detdiar sidj könst dü a leetst feranrangen faan't Nuurdfresk Wikipedia ferfulge.",
-'recentchanges-feed-description' => 'Ferfülie ma dåtheer feed da leeste änringe önj {{SITENAME}}.',
+'recentchanges-feed-description' => 'Mä didiar feed könst dü a leetst feranrangen faan {{SITENAME}} ferfulge.',
 'recentchanges-label-newpage' => 'Nei sidj uunlaanj',
 'recentchanges-label-minor' => 'Letj feranrang',
 'recentchanges-label-bot' => 'Feranrang faan en bot',
 'recentchanges-label-unpatrolled' => 'Detdiar feranrang as noch ei efterluket wurden',
-'rcnote' => "Wised {{PLURAL:\$1|wård '''1''' änring|wårde da leeste '''\$''' änringe}} {{PLURAL:\$2|foon e leest däi|foon da leeste '''\$2''' deege}}. Stånd: \$4, am e klook \$5.",
+'rcnote' => "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|dai|'''$2''' daar}}. Stant: $4, am a klook $5.",
 'rcnotefrom' => "Diar wurd a feranrangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranrangen).",
-'rclistfrom' => 'Bloot änringe sunt $1 wise.',
-'rcshowhideminor' => 'Letj feranrangen $1',
-'rcshowhidebots' => 'Bots $1',
+'rclistfrom' => 'Bluas feranrangen sant $1 wise.',
+'rcshowhideminor' => '$1 letj feranrangen',
+'rcshowhidebots' => '$1 bots',
 'rcshowhideliu' => '$1 uunmeldet brükern',
-'rcshowhideanons' => 'Anonymen brüker $1',
+'rcshowhideanons' => '$1 anonüüm brükern',
 'rcshowhidepatr' => 'Efterluket feranrangen $1',
-'rcshowhidemine' => 'Min bidracher $1',
-'rclinks' => 'Wis da leeste $1 änringe foon da leeste $2 deege.<br />$3',
+'rcshowhidemine' => '$1 min bidracher',
+'rclinks' => 'Wise a leetst $1 feranrangen faan a leetst $2 daar.<br />$3',
 'diff' => 'ferskeel',
 'hist' => 'werjuunen',
 'hide' => 'Fersteeg',
@@ -1421,19 +1426,19 @@ Do san jo ual iinstelangen wech.',
 'rc_categories' => 'Bluas sidjen ütj jo kategoriin (apdiald mä „|“):',
 'rc_categories_any' => 'Arke',
 'rc-change-size-new' => "$1 {{PLURAL:$1|byte|bytes}} efter't feranrin",
-'newsectionsummary' => 'Nei ufdialang /* $1 */',
-'rc-enhanced-expand' => 'Detaile wise (JavaScript as nüsi)',
-'rc-enhanced-hide' => 'Detaile fersteege',
+'newsectionsummary' => 'Nei kirew /* $1 */',
+'rc-enhanced-expand' => 'Enkelthaiden wise (brükt JavaScript)',
+'rc-enhanced-hide' => 'Enkelthaiden fersteeg',
 'rc-old-title' => 'tuiarst maaget üs „$1“',
 
 # Recent changes linked
 'recentchangeslinked' => 'Feranrangen bi ferlinket sidjen',
 'recentchangeslinked-feed' => 'Feranrangen bi ferlinket sidjen',
 'recentchangeslinked-toolbox' => 'Feranrangen bi ferlinket sidjen',
-'recentchangeslinked-title' => 'Feranrangen bi sidjen, diar faan "$1" ferlinket san',
+'recentchangeslinked-title' => 'Feranrangen bi sidjen, huar faan "$1" üüb ferwiset woort',
 'recentchangeslinked-noresult' => 'Uun detdiar tidj san jo ferlinket sidjen ei feranert wurden.',
 'recentchangeslinked-summary' => "Detdiar spezial-sidj wiset a leetst feranrangen faan ferwiset sidjen (of faan sidjen uun en was kategorii). Sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, san '''fäät''' skrewen.",
-'recentchangeslinked-page' => 'Sid:',
+'recentchangeslinked-page' => 'Sidjennööm:',
 'recentchangeslinked-to' => 'Wise feranrangen üüb sidjen, diar heerhen ferwise.',
 
 # Upload
@@ -1443,9 +1448,9 @@ Do san jo ual iinstelangen wech.',
 'upload-tryagain' => 'Feranert dateibeskriiwang ufsjüür',
 'uploadnologin' => 'Ei uunmeldet',
 'uploadnologintext' => 'Dü skel [[Special:UserLogin|uunmeldet]] wees, amdat dü datein huuchschüür könst.',
-'upload_directory_missing' => 'Dåt aplees-fertiiknis ($1) breecht än köö ai foon di wäbsärwer mååged wårde.',
-'upload_directory_read_only' => 'Dåt aplees-fertiiknis ($1) koon ai foon e wäbsärver beschraawen wårde.',
-'uploaderror' => 'Aplees-fäägel',
+'upload_directory_missing' => 'Det archiif-fertiaknis ($1) as ei diar, an küd faan di webserver uk ei iinracht wurd.',
+'upload_directory_read_only' => 'Uun det archiif-fertiaknis ($1) küd faan di webserver ei skrewen wurd.',
+'uploaderror' => "Bi't huuchschüüren as wat skiaf gingen",
 'upload-recreate-warning' => "'''Paase üüb: En datei mä didiar nööm as al ans stregen of fersköwen wurden.'''
 
 Wat nü komt, as ütj det logbuk för't striken an fersküüwen faan detdiar datei.",
@@ -1461,7 +1466,7 @@ Am en '''bil''' uun en artiikel tu brüken, brük en link faan det furem:
 'upload-preferred' => 'Slacher faan datein, diar dü brük skulst: $1.',
 'upload-prohibited' => 'Ei tuläät slacher faan datein: $1.',
 'uploadlog' => 'datei logbuk',
-'uploadlogpage' => 'Dåtäi-logbök',
+'uploadlogpage' => 'Datei-logbuk',
 'uploadlogpagetext' => 'Detheer as det logbuk för huuchschüürd datein. Dü könst uk det [[Special:NewFiles|galerii faan nei datein]] uunluke.',
 'filename' => 'Dateinööm',
 'filedesc' => 'Beskriiwang',
@@ -1488,7 +1493,7 @@ Am en '''bil''' uun en artiikel tu brüken, brük en link faan det furem:
 'filename-tooshort' => 'Di dateinööm as tu kurt.',
 'filetype-banned' => 'Son slach faan datei as ei tuläät.',
 'verification-error' => 'Det datei hää det seekerhaidspreew ei bestenen.',
-'hookaborted' => 'Det feranerang, wat dü maage wulst, as ufbreegen wurden.',
+'hookaborted' => 'Det feranrang, wat dü maage wulst, as faan en ütjwidjet software-funktjuun ufbreegen wurden.',
 'illegal-filename' => 'Didiar dateinööm as ei tuläät.',
 'overwrite' => 'Dü könst nian datei auerskriiw, wat al diar as.',
 'unknown-error' => 'Diar as irgentwat skiaf gingen.',
@@ -1519,7 +1524,7 @@ Luke noch ans efter, of dü det bil uun fol grate diar heest, an do sjüür det
 'uploadwarning' => 'Wäärnang',
 'uploadwarning-text' => 'Feranre det datei-beskriiwang an fersjük det noch ans nei.',
 'savefile' => 'Datei seekre',
-'uploadedimage' => 'heet "[[$1]]" huuchsånd',
+'uploadedimage' => 'hää "[[$1]]" huuchschüürd',
 'overwroteimage' => 'hää en nei werjuun faan „[[$1]]“ huuchsjüürd',
 'uploaddisabled' => 'Huuchsjüüren as ei aktiwiaret',
 'copyuploaddisabled' => 'Huuchsjüüren faan URLs as ei aktiwiaret.',
@@ -1625,7 +1630,7 @@ Wan det goorei wal, do skriiw tu en [[Special:ListUsers/sysop|administraator]]."
 # img_auth script messages
 'img-auth-accessdenied' => 'Tugrip ei mögelk',
 'img-auth-nopathinfo' => 'Diar as nään PATH_INFO.
-Di server koon detdiar informatsjuun ei widjerdu.
+Di server koon detdiar informatjuun ei widjerdu.
 Ferlicht as det uun CGI iinbünjen an komt diaram uk ei mä „img_auth“ turocht.
 Üüb det sidj https://www.mediawiki.org/wiki/Manual:Image_Authorization (ingelsk) stäänt diar muar auer.',
 'img-auth-notindir' => 'Detdiar fertiaknis as ei föörsen tu huuchsjüüren.',
@@ -1677,20 +1682,20 @@ För a seekerhaid as img_auth.php ei aktiwiaret.',
 
 # File description page
 'file-anchor-link' => 'Datei',
-'filehist' => 'Dååtäifärsjoone',
+'filehist' => 'Dateiwerjuunen',
 'filehist-help' => 'Klike üüb en tidjponkt, am detdiar werjuun uuntulukin.',
 'filehist-deleteall' => 'aal a werjuunen strik',
-'filehist-deleteone' => 'jüdeer färsjoon strike',
-'filehist-revert' => 'tubääg seete',
-'filehist-current' => 'aktuäl',
-'filehist-datetime' => 'Werjuun faan di',
-'filehist-thumb' => 'Forlökbil',
+'filehist-deleteone' => 'detdiar werjuun strik',
+'filehist-revert' => 'turagsaat',
+'filehist-current' => 'aktuel',
+'filehist-datetime' => 'Werjuun faan',
+'filehist-thumb' => 'Föörskaubil',
 'filehist-thumbtext' => 'Föörskau för det werjuun faan $2, klook $3',
-'filehist-nothumb' => 'Niinj forlökbil deer',
-'filehist-user' => 'brüker',
-'filehist-dimensions' => 'Mätje',
+'filehist-nothumb' => 'Diar as nian föörskaubil',
+'filehist-user' => 'Brüker',
+'filehist-dimensions' => 'Miaten',
 'filehist-filesize' => 'Dateigrate',
-'filehist-comment' => 'Komentoor',
+'filehist-comment' => 'Komentaar',
 'filehist-missing' => 'Datei ei diar',
 'imagelinks' => 'Hü det datei brükt woort',
 'linkstoimage' => '{{PLURAL:$1|Detdiar sidj brükt|Jodiar $1 sidjen brük}} detdiar datei:',
@@ -1701,7 +1706,7 @@ Dü könst uk det [[Special:WhatLinksHere/$2|hial list]] uunluke.',
 'morelinkstoimage' => 'Dü könst [[Special:WhatLinksHere/$1|muar ferwisangen]] üüb detdiar datei uunwise läät.',
 'linkstoimage-redirect' => '$1 (widjerfeerang) $2',
 'duplicatesoffile' => '{{PLURAL:$1|Detdiar datei as en kopii|$1 datein san kopiin}} faan det datei ([[Special:FileDuplicateSearch/$2|muar diartu]]):',
-'sharedupload' => 'Jüdeer dååtäi ståmt üt $1 än mötj foon ouder prujäkte brükt wårde.',
+'sharedupload' => 'Detdiar datei komt faan $1 an mut uk för ööder projekten brükt wurd.',
 'sharedupload-desc-there' => 'Detdiar datei as faan $1 an koon faan ööder projekten brükt wurd.
 Üüb det [$2 beskriiwangssidj] stäänt muar diartu.',
 'sharedupload-desc-here' => "Detheer bil as faan $1 an koon faan ööder projekten brükt wurd. 
@@ -1767,7 +1772,7 @@ Iar dü ian strikst, stel seeker, dat diar nian ferwisangen üüb detdetdiar fö
 'unusedtemplateswlh' => 'Ööder ferwisangen',
 
 # Random page
-'randompage' => 'Tufali sid',
+'randompage' => 'Tufelag sidj',
 'randompage-nopages' => 'Diar san nian sidjen uun {{PLURAL:$2|nöömrüm|nöömrümer}}: $1.',
 
 # Random redirect
@@ -1777,7 +1782,7 @@ Iar dü ian strikst, stel seeker, dat diar nian ferwisangen üüb detdetdiar fö
 # Statistics
 'statistics' => 'Statistik',
 'statistics-header-pages' => 'Sidjenstatistik',
-'statistics-header-edits' => 'Statistik faan bewerkangen',
+'statistics-header-edits' => 'Statistik faan feranrangen',
 'statistics-header-views' => 'Statistik faan kliks üüb sidjen',
 'statistics-header-users' => 'Brükerstatistik',
 'statistics-header-hooks' => 'Ööder statistiken',
@@ -1785,11 +1790,11 @@ Iar dü ian strikst, stel seeker, dat diar nian ferwisangen üüb detdetdiar fö
 'statistics-pages' => 'Sidjen',
 'statistics-pages-desc' => 'Aal a sidjen uun det wiki, mä diskusjuunssidjen, widjerfeerangen asw.',
 'statistics-files' => 'Huuchschüürd datein',
-'statistics-edits' => 'Bewerkangen, sant det sidj {{SITENAME}} maaget wurden as',
-'statistics-edits-average' => "Bewerkangen per sidj uun't madel",
+'statistics-edits' => 'Feranrangen, sant {{SITENAME}} maaget wurden as',
+'statistics-edits-average' => "Feranrangen per sidj uun't madel",
 'statistics-views-total' => 'Kliks üüb det sidj',
 'statistics-views-total-desc' => 'Kliks üüb sidjen, diar\'t goorei jaft of "Spezial-"sidjen wurd ei mätääld.',
-'statistics-views-peredit' => 'Kliks per bewerkang',
+'statistics-views-peredit' => 'Kliks per feranrang',
 'statistics-users' => 'Registriaret [[Special:ListUsers|brükern]]',
 'statistics-users-active' => 'Aktiif brükern',
 'statistics-users-active-desc' => 'Brükern, diar wat bewerket haa uun a leetst {{PLURAL:$1|dai|$1 daar}}',
@@ -1831,7 +1836,7 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'ncategories' => '{{PLURAL:$1|kategorii|kategoriie}}',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|link|links}}',
-'nmembers' => '{{PLURAL:$1|1 önjdraag|$1 önjdraage}}',
+'nmembers' => '{{PLURAL:$1|1 iindrach|$1 iindracher}}',
 'nrevisions' => '$1 {{PLURAL:$1|feranrang|feranrangen}}',
 'nviews' => '$1 {{PLURAL:$1|klik|kliks}}',
 'nimagelinks' => 'Brükt üüb $1 {{PLURAL:$1|sidj|sidjen}}',
@@ -1882,16 +1887,16 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'newpages' => 'Nei sidjen',
 'newpages-username' => 'Brükernoome:',
 'ancientpages' => 'Al loong ei muar bewerket sidjen',
-'move' => 'Ferschüwe',
-'movethispage' => 'Sid ferschüwe',
+'move' => 'Fersküüw',
+'movethispage' => 'Detdiar sidj fersküüw',
 'unusedimagestext' => "Jodiar datein san uun nään artiikel iinbünjen. Det koon oober lacht wees, dat ööder wääbsidjen diarüüb ferwise. Sodenang wurd jo heer apfeerd, uk wan's huarööders brükt wurd.",
 'unusedcategoriestext' => "Jodiar kategorii-sidjen san diar, likes dat's leesag san an uun uugenblak ei brükt wurd.",
 'notargettitle' => 'Nian sidj uunden',
 'notargettext' => 'Dü heest nian sidj uunden, huar det funktjuun werke skal.',
 'nopagetitle' => 'Kwelsidj as ei diar',
 'nopagetext' => 'Det sidj, wat fersköwen wurd skal, as ei diar.',
-'pager-newer-n' => '{{PLURAL:$1|näisten|näiste $1}}',
-'pager-older-n' => '{{PLURAL:$1|åleren|ålere $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1 neier|$1 neier}}',
+'pager-older-n' => '{{PLURAL:$1|1 ääler|$1 ääler}}',
 'suppress' => 'Oversight',
 'querypage-disabled' => 'Detdiar spezial-sidj as ei aktiif, am det süsteem ei tu auerläästin.',
 
@@ -1907,7 +1912,7 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'speciallogtitlelabel' => 'Mual (sidjennööm of brüker):',
 'log' => 'Logbuken',
 'all-logs-page' => 'Aal a öfentelk logbuken',
-'alllogstext' => 'Diar wuad aal a logbuken faan {{SITENAME}} uunwiset.
+'alllogstext' => 'Diar wurd aal a logbuken faan {{SITENAME}} uunwiset.
 Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskriiwang skel beaachtet wurd.',
 'logempty' => 'Diar as niks uun.',
 'log-title-wildcard' => 'Sidjennööm begant mä ...',
@@ -1917,7 +1922,7 @@ Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskri
 'allpages' => 'Aal a sidjen',
 'alphaindexline' => '$1 bit $2',
 'nextpage' => 'Näist sid ($1)',
-'prevpage' => 'Leest sid ($1)',
+'prevpage' => 'Leetst sidj ($1)',
 'allpagesfrom' => 'Sidjen wise sant:',
 'allpagesto' => 'Sidjen wise bit:',
 'allarticles' => 'Aal a sidjen',
@@ -1925,7 +1930,7 @@ Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskri
 'allnotinnamespace' => 'Aal a sidjen (saner nöömrüm $1)',
 'allpagesprev' => 'Leest',
 'allpagesnext' => 'Näist',
-'allpagessubmit' => 'Önjwiinje',
+'allpagessubmit' => 'Widjer',
 'allpagesprefix' => 'Sidjen uunwise mä prefix:',
 'allpagesbadtitle' => 'Didiar sidjennööm gongt ei. Hi hed ferlicht en spriak-prefix of diar san ei tuläät tiakens uun.',
 'allpages-bad-ns' => 'Di nöömrüm „$1“ komt uun {{SITENAME}} ei föör.',
@@ -1953,7 +1958,7 @@ Luke uk bi det list faan [[Special:WantedCategories|nuadag kategoriin]].',
 # Special:LinkSearch
 'linksearch' => "Schük efter ferwisangen uun't näät",
 'linksearch-pat' => 'Schükmünster:',
-'linksearch-ns' => 'Noomerüm:',
+'linksearch-ns' => 'Nöömrüm:',
 'linksearch-ok' => 'Schük',
 'linksearch-text' => 'Diar kön wariaabeln üs t.b. "*.bispal.de" brükt wurd. Tumanst ian TLD üs t.b. "*.org" skal uunden wurd.<br />{{PLURAL:$2|Protokol|Protokolen}}: <code>$1</code> (Diar woort http nimen, wan niks ööders uunden as.)',
 'linksearch-line' => '$2 ferwiset üüb $1',
@@ -2042,10 +2047,10 @@ Din aanj e-mail adres faan din [[Special:Preferences|iinstelangen]] woort uunwis
 'addedwatchtext' => "Det sidj „[[:$1]]“ wel dü [[Special:Watchlist|uun't uug behual]].
 Feranrangen faan detdiar sidj wurd üüb detdiar list fäästhäälen.",
 'removewatch' => "Ei muar uun't uug behual",
-'removedwatchtext' => 'Jü sid „[[:$1]]“ wörd foon din [[Special:Watchlist|eefterkiiklist]] wächhååld.',
-'watch' => 'Kiike eefter',
+'removedwatchtext' => "Det sidj „[[:$1]]“ as faan a sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, wechnimen wurden.",
+'watch' => "Uun't uug behual",
 'watchthispage' => "Detdiar sidj uun't uug behual",
-'unwatch' => 'ai mör eefter kiike',
+'unwatch' => "Ei muar uun't uug behual",
 'unwatchthispage' => "Ei muar uun't uug behual",
 'notanarticle' => 'Nään artiikel',
 'notvisiblerev' => 'Det werjuun faan en öödern brüker as stregen wurden.',
@@ -2058,12 +2063,12 @@ Feranrangen faan detdiar sidj wurd üüb detdiar list fäästhäälen.",
 'watchlistcontains' => "Dü häälst $1 {{PLURAL:$1|sidj|sidjen}} uun't uug.",
 'iteminvalidname' => 'Mä di iindrach „$1“ stemet wat ei, di nööm as ferkiard.',
 'wlnote' => "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|stünj|'''$2''' stünjen}}. Stant: $3, klook $4.",
-'wlshowlast' => 'Wis da änringe foon da leeste $1 stüne, $2 deege unti $3.',
-'watchlist-options' => 'Wis-opsjoone',
+'wlshowlast' => 'Wise a feranrangen faan leetst $1 stünjen, $2 daar of $3.',
+'watchlist-options' => "Iinstelangen för't uunwisin",
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Eefter kiike...',
-'unwatching' => 'Ai eefter kiike...',
+'watching' => "Uun't uug behual ...",
+'unwatching' => "Ei uun't uug behual ...",
 'watcherrortext' => "Bi't anrin faan iinstelangen för „$1“ as wat skiaf gingen.",
 
 'enotif_mailer' => '{{SITENAME}}-e-mail-noorachten siinst',
@@ -2108,7 +2113,7 @@ Halep an muar diartu: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'changed' => 'feranert',
 
 # Delete
-'deletepage' => 'Sid tunintemååge',
+'deletepage' => 'Sidj strik',
 'confirm' => 'Gudkään',
 'excontent' => 'diar sted: „$1“',
 'excontentauthor' => 'diar sted: „$1“ (iansagst bewerker: [[Special:Contributions/$2|$2]])',
@@ -2118,16 +2123,16 @@ Halep an muar diartu: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-legend' => 'Strike',
 'historywarning' => "'''Paase üüb:''' Det sidj, wat dü strik wel, hää amanbi $1 {{PLURAL:$1|werjuun|werjuunen}}:",
 'confirmdeletetext' => 'Dü wel en sidj mä aal sin werjuunen strik. Dü skel gudkään, dat dü witjst, wat dü dääst an dat din dun mä a [[{{MediaWiki:Policy-url}}|brükerreegeln]] auerian stemet.',
-'actioncomplete' => 'Aksjoon beånd',
+'actioncomplete' => 'Klaar',
 'actionfailed' => 'Diar ging wat skiaf',
 'deletedtext' => "„$1“ as stregen wurden. Uun't $2 fanjst dü a sidjen, diar tuleetst stregen wurden san.",
-'dellogpage' => 'Tunintemååg-Logbök',
+'dellogpage' => 'Strik-logbuk',
 'dellogpagetext' => 'Diar stun a leetst stregen sidjen an datein.',
 'deletionlog' => "logbuk faan't striken",
 'reverted' => 'Üüb en ual werjuun turagsaat',
-'deletecomment' => 'Grün:',
-'deleteotherreason' => 'Ouderen/tubaikaamenden grün:',
-'deletereasonotherlist' => 'Ouderen grün',
+'deletecomment' => 'Grünj:',
+'deleteotherreason' => 'Ööder/noch en grünj:',
+'deletereasonotherlist' => 'Ööder grünj',
 'deletereason-dropdown' => "*Algemian grünjer för't striken
 ** Di skriiwer wul det so
 ** Copyright as ei beaachtet
@@ -2139,7 +2144,7 @@ Halep an muar diartu: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 # Rollback
 'rollback' => 'Feranrangen turagsaat',
 'rollback_short' => 'Turagsaat',
-'rollbacklink' => 'tubäägseete',
+'rollbacklink' => 'turagsaat',
 'rollbacklinkcount' => '$1 {{PLURAL:$1|feranrang|feranrangen}} turagsaat',
 'rollbacklinkcount-morethan' => 'Muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} turagsaat',
 'rollbackfailed' => "Bi't turagsaaten as wat skiaf gingen.",
@@ -2162,8 +2167,8 @@ Gung turag, an began faan föören.",
 'protectlogpage' => 'Sidjenseekerangs-logbuk',
 'protectlogtext' => 'Detheer as det logbuk mä seekert sidjen.
 Üüb [[Special:ProtectedPages|detdiar list]] stun a seekert sidjen.',
-'protectedarticle' => 'schütsed „[[$1]]“',
-'modifiedarticleprotection' => 'änred e schüts for "[[$1]]"',
+'protectedarticle' => 'hää „[[$1]]“ seekert.',
+'modifiedarticleprotection' => 'hää det seekerhaid faan "[[$1]]" feranert',
 'unprotectedarticle' => 'Seekerang faan „[[$1]]“ apheewen',
 'movedarticleprotection' => 'hää det seekerang faan „[[$2]]“ üüb „[[$1]]“ auerdraanj',
 'protect-title' => 'Seekerang feranre för „$1“',
@@ -2174,12 +2179,12 @@ Gung turag, an began faan föören.",
 'protect-norestrictiontypes-text' => 'Detdiar sidj koon ei seekert wurd, auer diar nian mögelkhaiden san.',
 'protect-norestrictiontypes-title' => 'Sidj koon ei seekert wurd',
 'protect-legend' => 'Sidjenseekerang feranre',
-'protectcomment' => 'Grün:',
-'protectexpiry' => 'Spärduur:',
-'protect_expiry_invalid' => 'Jü önjjääwen duur as üngülti.',
-'protect_expiry_old' => 'Jü spärtid lait in jü jütid.',
+'protectcomment' => 'Grünj:',
+'protectexpiry' => 'Sperdüür:',
+'protect_expiry_invalid' => 'Didiar tidjrüm gongt ei.',
+'protect_expiry_old' => 'Det spertidj leit uun a jütidj.',
 'protect-unchain-permissions' => 'Separaat speren aktiwiare',
-'protect-text' => 'Heer koost dü e schütsstatus for jü sid "$1" önjkiike än änre.',
+'protect-text' => 'Heer könst dü det seekerhaid faan "$1" uunluke an feranre.',
 'protect-locked-blocked' => "Dü könst det sidjenseekerang ei feranre, auer din brükerkonto speret as. So as det sidj '''„$1“:''' seekert wurden.",
 'protect-locked-dblock' => "Det dootenbeenk as speret, det sidjenseekerang koon ei feranert wurd. So as det sidj '''„$1“:''' seekert wurden.",
 'protect-locked-access' => "Dü heest ei det brükerrocht, am det sidjenseekerhaid tu feranrin.
@@ -2190,12 +2195,12 @@ Dü könst det seekerhaid feranre, det feranert oober ei det seekerhaid faan jo
 'protect-fallback' => 'Ferloof bluas för brükern mä "$1"-rochten.',
 'protect-level-autoconfirmed' => 'Ferloof bluas för registriaret brükern.',
 'protect-level-sysop' => 'Ferloof bluas för administratooren.',
-'protect-summary-cascade' => 'kaskadiirend',
-'protect-expiring' => 'bit $2, am e klook $3 (UTC)',
+'protect-summary-cascade' => 'kaskadiirin',
+'protect-expiring' => 'bit $2, am a klook $3 (UTC)',
 'protect-expiring-local' => 'bit $1',
 'protect-expiry-indefinite' => 'saner aanj',
-'protect-cascade' => 'Kaskadiirende späre - åle önj jüdeer sid önjbünene forlååge wårde uk spärd.',
-'protect-cantedit' => 'Dü koost jü späre foon jüheer sid ai änre, deer dü niinj beruchtiging tu beårben foon jü sid hääst.',
+'protect-cascade' => 'Kaskaadensper - aal a föörlaagen faan detdiar sidj wurd uk speret',
+'protect-cantedit' => 'Dü könst det sper faan detdiar sidj ei feranre, auer dü det sidj ei bewerke mutst.',
 'protect-othertime' => 'Ööder sperdüür:',
 'protect-othertime-op' => 'ööder sperdüür',
 'protect-existing-expiry' => 'Sidjenseekerang lääpt uf: $2, klook $3',
@@ -2209,8 +2214,8 @@ Dü könst det seekerhaid feranre, det feranert oober ei det seekerhaid faan jo
 ** Sidj mä föl beschük',
 'protect-edit-reasonlist' => "Grünjer för't seekrin bewerke",
 'protect-expiry-options' => '1 stünj:1 hour,1 dai:1 day,1 weg:1 week,2 wegen:2 weeks,1 muun:1 month,3 muuner:3 months,6 muuner:6 months,1 juar:1 year,saner aanj:infinite',
-'restriction-type' => 'Schütsstatus',
-'restriction-level' => 'Schütshöögde',
+'restriction-type' => 'Seekerhaidsiinstelangen:',
+'restriction-level' => 'Seekerhaidspeegel:',
 'minimum-size' => 'Minimaal grate:',
 'maximum-size' => 'Maksimaal grate:',
 'pagesize' => '(bytes)',
@@ -2247,9 +2252,9 @@ Di tekst faan det stregen sidj fu bluas administratooren uunwiset.',
 'undeleterevision-missing' => 'Mä detdiar werjuun stemet wat ei. Ferlicht as di link ferkiard of det werjuun as ei muar diar.',
 'undelete-nodiff' => 'Nian föörgunger-werjuun diar.',
 'undeletebtn' => 'Weder iinstel',
-'undeletelink' => 'wise/widermååge',
+'undeletelink' => 'wise / weder iinstel',
 'undeleteviewlink' => 'Uunluke',
-'undeletereset' => 'Turag saat',
+'undeletereset' => 'Turagsaat',
 'undeleteinvert' => 'Ütjwool amdrei',
 'undeletecomment' => 'Grünj:',
 'undeletedrevisions' => '{{PLURAL:$1|1 werjuun|$1 werjuunen}} weder iinsteld',
@@ -2278,8 +2283,8 @@ $1",
 'undelete-show-file-submit' => 'Ja',
 
 # Namespace form on various pages
-'namespace' => 'Noomerüm:',
-'invert' => 'Ütwool amkiire',
+'namespace' => 'Nöömrüm:',
+'invert' => 'Ütjwool amkiir',
 'tooltip-invert' => 'Saat diar en tiaken, am feranrangen faan sidjen uun didiar nöömrüm ei uuntuwisin.',
 'namespace_association' => 'Ferbünjen nöömrüm',
 'tooltip-namespace_association' => 'Saat diar en tiaken, am di ferbünjen nöömrüm of diskusjuunsnöömrüm mä iintubetjin.',
@@ -2287,46 +2292,46 @@ $1",
 
 # Contributions
 'contributions' => '{{GENDER:$1|Brüker}} bidracher',
-'contributions-title' => 'Brükertujeefte foon "$1"',
+'contributions-title' => 'Brükerbidracher för "$1"',
 'mycontris' => 'Bidracher',
-'contribsub2' => 'For $1 ($2)',
+'contribsub2' => 'För $1 ($2)',
 'nocontribs' => 'Diar wiar nian paasin brükerbidracher',
-'uctop' => '(aktuäl)',
-'month' => 'än moune:',
-'year' => 'bit iir:',
+'uctop' => '(aktuel)',
+'month' => 'faan muun (of iarer):',
+'year' => 'faan juar (of iarer):',
 
 'sp-contributions-newbies' => 'Wise bluas bidracher faan nei brükern',
 'sp-contributions-newbies-sub' => 'Faan nei brükern',
 'sp-contributions-newbies-title' => 'Brükerbidracher faan nei brükern',
-'sp-contributions-blocklog' => 'Spär-logbök',
+'sp-contributions-blocklog' => 'Sper-logbuk',
 'sp-contributions-deleted' => 'Stregen bidracher',
-'sp-contributions-uploads' => 'Huuchsjüürd bilen',
-'sp-contributions-logs' => 'logbuken',
-'sp-contributions-talk' => 'diskusjuun',
+'sp-contributions-uploads' => 'Huuchschüürd bilen',
+'sp-contributions-logs' => 'Logbuken',
+'sp-contributions-talk' => 'Diskusjuun',
 'sp-contributions-userrights' => 'Brükerrochten',
 'sp-contributions-blocked-notice' => "Didiar brüker as speret. Det stäänt uun't sperlogbuk:",
 'sp-contributions-blocked-notice-anon' => "Detdiar IP-adres as speret. Det stäänt uun't sperlogbuk:",
 'sp-contributions-search' => 'Schük efter brükerbidracher',
-'sp-contributions-username' => 'IP-adräs unti brükernoome',
+'sp-contributions-username' => 'IP-adres of brükernööm:',
 'sp-contributions-toponly' => 'Bluas aktuel werjuunen wise',
-'sp-contributions-submit' => 'Säike',
+'sp-contributions-submit' => 'Schük',
 
 # What links here
 'whatlinkshere' => 'Ferwisangen üüb detdiar sidj',
 'whatlinkshere-title' => 'Sidjen, diar üüb "$1" ferwise',
-'whatlinkshere-page' => 'sid:',
+'whatlinkshere-page' => 'Sidj:',
 'linkshere' => "Jodiar sidjen ferwise üüb '''„[[:$1]]“''':",
 'nolinkshere' => 'Nian sidj ferwiset üüb [[:$1]]',
 'nolinkshere-ns' => "Nian sidj ferwiset üüb '''„[[:$1]]“''' uun di ütjsoocht nöömrüm.",
-'isredirect' => 'widerliidjingssid',
-'istemplate' => 'forlåågeninbining',
-'isimage' => 'Dåtäilink',
-'whatlinkshere-prev' => '{{PLURAL:$1|leesten|leeste $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|näisten|näiste $1}}',
-'whatlinkshere-links' => '← links',
-'whatlinkshere-hideredirs' => 'Widerliidjinge $1',
-'whatlinkshere-hidetrans' => 'Forlåågenönjbininge $1',
-'whatlinkshere-hidelinks' => 'Links $1',
+'isredirect' => 'widjerfeerang',
+'istemplate' => 'iinbünjen föörlaagen',
+'isimage' => 'Dateilink',
+'whatlinkshere-prev' => '{{PLURAL:$1|leetst|leetst $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|naist|naist $1}}',
+'whatlinkshere-links' => '← ferwisangen',
+'whatlinkshere-hideredirs' => '$1 widjerfeerangen',
+'whatlinkshere-hidetrans' => '$1 iinbünjen föörlaagen',
+'whatlinkshere-hidelinks' => '$1 ferwisangen',
 'whatlinkshere-hideimages' => 'Ferwisangen tu datein $1',
 'whatlinkshere-filters' => 'Filtere',
 
@@ -2358,10 +2363,10 @@ Skriiw en guden grünj för det sper ap.',
 'ipbenableautoblock' => 'Spere det IP-adres faan di brüker, an automaatisk uk aal a öödern, huar di brüker mä werket.',
 'ipbsubmit' => 'IP-adres/brüker spere',
 'ipbother' => 'Ööder sperdüür (ingelsk):',
-'ipboptions' => '2 stüne:2 hours,1 däi:1 day,3 deege:3 days,1 wääg:1 week,2 wääge:2 weeks,1 moune:1 month,3 moune:3 months,6 moune:6 months,1 iir:1 year,suner iinje:infinite',
+'ipboptions' => '2 stünj:2 hours,1 dai:1 day,3 daar:3 days,1 weg:1 week,2 weg:2 weeks,1 muun:1 month,3 muuner:3 months,6 muuner:6 months,1 juar:1 year,saner aanj:infinite',
 'ipbotheroption' => 'Ööder sperdüür',
 'ipbotherreason' => 'Ööder/noch en grünj:',
-'ipbhidename' => 'Brükernööm uun bewerkangen an listen fersteeg',
+'ipbhidename' => 'Brükernööm uun feranrangen an listen fersteeg',
 'ipbwatchuser' => "Hual di brüker sin brüker- an diskusjuunssidj uun't uug",
 'ipb-disableusertalk' => 'Ferhanre, dat di brüker sin diskusjuunssidj bewerket, so loong hi speret as.',
 'ipb-change-block' => 'Mä jodiar iinstelangen widjer spere',
@@ -2384,7 +2389,7 @@ Am det aptuheewen, gung tu't [[Special:BlockList|sperlist]].",
 'unblocked-range' => 'Sper för $1 as apheewen wurden.',
 'unblocked-id' => 'Sperang $1 as apheewen',
 'blocklist' => 'Spärd brükere',
-'ipblocklist' => 'Spärd brükere',
+'ipblocklist' => 'Speret brükern',
 'ipblocklist-legend' => 'Spärd brükere fine',
 'blocklist-userblocks' => 'Brükersperen ei uunwise',
 'blocklist-tempblocks' => 'Tidjwiis speren ei uunwise',
@@ -2400,7 +2405,7 @@ Am det aptuheewen, gung tu't [[Special:BlockList|sperlist]].",
 'ipblocklist-localblock' => 'Lokaal sper',
 'ipblocklist-otherblocks' => 'Ööder {{PLURAL:$1|sper|speren}}',
 'infiniteblock' => 'saner aanj',
-'expiringblock' => 'iinjet aw e $1 am e klook $2',
+'expiringblock' => 'lääpt di $1 am a klook $2 uf',
 'anononlyblock' => 'bluas anonüümen',
 'noautoblockblock' => 'autoblock ei aktiif',
 'createaccountblock' => 'brükerkontos kön ei iinracht wurd.',
@@ -2409,33 +2414,33 @@ Am det aptuheewen, gung tu't [[Special:BlockList|sperlist]].",
 'ipblocklist-empty' => 'Det sperlist as leesag',
 'ipblocklist-no-results' => 'Detdiar IP-adres/di brükernööm as ei speret.',
 'blocklink' => 'Spere',
-'unblocklink' => 'frijeewe',
+'unblocklink' => 'Ei muar spere',
 'change-blocklink' => 'Späring änre',
-'contribslink' => 'bidracher',
-'emaillink' => 'e-mail schake',
-'autoblocker' => 'Automatische spär, deer dü en gemiinsoom IP-adräs ma [[User:$1|brüker:$1]] brükst. Grün foon brükerspär: „$2“.',
-'blocklogpage' => 'Brükerspär-logbök',
+'contribslink' => 'Bidracher',
+'emaillink' => 'E-mail schüür',
+'autoblocker' => 'Automaatisk speret, auer dü en gemiansoom IP-adres mä [[User:$1|brüker:$1]] brükst. Grünj för det brükersper: „$2“.',
+'blocklogpage' => 'Brükersper-logbuk',
 'blocklog-showlog' => "Didiar brüker as al ans speret wurden.
 Uun't sperlogbuk stäänt:",
 'blocklog-showsuppresslog' => "Didiar brüker as al ans speret an ferbürgen wurden.
 Uun't logbuk stäänt:",
-'blocklogentry' => 'spärd „[[$1]]“ for di tidrüm: $2 $3',
-'reblock-logentry' => 'änerd jü spär for „[[$1]]“ for di tidrüm: $2 $3',
+'blocklogentry' => 'hää „[[$1]]“ speret för di tidjrüm: $2 $3',
+'reblock-logentry' => 'hää det sper för „[[$1]]“ anert för di tidjrüm: $2 $3',
 'blocklogtext' => "Detdiar as det logbuk auer sperangen an apheewen sperangen faan brükernöömer an IP-adresen.
 Automaatisk sperd IP-adresen wurd ei uunwiset.
 Luke bi't [[Special:BlockList|sperlist]] för aal jo aktuel speren.",
 'unblocklogentry' => 'hää det sper faan „$1“ apheewen',
-'block-log-flags-anononly' => 'bloot anonyme',
-'block-log-flags-nocreate' => 'Måågen foon brükerkonte spärd',
-'block-log-flags-noautoblock' => 'autoblock deaktiviird',
-'block-log-flags-noemail' => 'e-mail-fersiinjing spärd',
+'block-log-flags-anononly' => 'bluas IPs/anonüümen',
+'block-log-flags-nocreate' => 'brükerkontos kön ei iinracht wurd.',
+'block-log-flags-noautoblock' => 'autoblock ei aktiif',
+'block-log-flags-noemail' => 'e-mail fersjüüren ufsteld',
 'block-log-flags-nousertalk' => 'koon sin aanj diskusjuunssidj ei bewerke',
-'block-log-flags-angry-autoblock' => 'ütbrååt autoblock aktiviird',
-'block-log-flags-hiddenname' => 'brükernoome ferstäägen',
-'range_block_disabled' => 'Jü möölikhäid, hiilj adräsrüme tu spären, as ai aktiviird.',
-'ipb_expiry_invalid' => 'Jü önjjääwen duur as üngülti.',
-'ipb_expiry_temp' => 'Ferstäägen brükernoome-späre schan pärmanänt weese.',
-'ipb_hide_invalid' => 'Ditheer konto koon ai unerdrükd wårde, deer dåt tufoole beårbinge apwist.',
+'block-log-flags-angry-autoblock' => 'ütjwidjet autoblock aktiwiaret',
+'block-log-flags-hiddenname' => 'brükernööm ferbürgen',
+'range_block_disabled' => 'Det mögelkhaid, hialer adresrümer tu sperin, as ei aktiif.',
+'ipb_expiry_invalid' => 'Didiar tidjrüm gongt ei.',
+'ipb_expiry_temp' => 'Ferbürgen brükernööm-speren skel permanent wees.',
+'ipb_hide_invalid' => 'Detdiar brükerkonto koon ei ferbürgen wurd, auer diar tuföl feranrangen uun a ferluup stun.',
 'ipb_already_blocked' => '„$1“ as al speret',
 'ipb-needreblock' => '$1 as al speret. Wel dü a speriinstelangen feranre?',
 'ipb-otherblocks-header' => 'Ööder {{PLURAL:$1|sper|speren}}',
@@ -2477,11 +2482,11 @@ Fertel det dan ISP of dan süsteemsiinst. Eeben proxys stel det seekerhaid uun f
 'lockedbyandtime' => '(faan $1 di $2 am a klook $3)',
 
 # Move page
-'move-page' => 'Ferschüw $1',
+'move-page' => 'Fersüw $1',
 'move-page-legend' => 'Sid ferschüwe',
 'movepagetext' => "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.
 Di ual tiitel woort üüb di nei widjerfeerd.
-Dü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjer feer läät.
+Dü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.
 Wan dü det oober ei dääst, paase üüb, dat dü aal a [[Special:DoubleRedirects|dobelt]] of [[Special:BrokenRedirects|breegen]] widjerfeerangen noch ans efterlukest.
 Bluas dü könst diarför surge, dat ferwisangen widjerhen rocht werke.
 
@@ -2499,14 +2504,14 @@ Det sidj woort '''ei''' fersköwen, wan't al en sidj mä di nei nööm jaft. Det
 
 '''Paase üüb!'''
 Det fersküüwen hää widjloftag fulgen för ööder sidjen. Dü skulst begreben haa, wat dü diar maage wel.",
-'movepagetalktext' => "Jü deertu hiirende diskusjoonssid wård, süwid deer, maferschääwen, '''unti dåt moost weese:'''
-*Deer bestoont ål en diskusjoonssid ma dideere noome, unti
-*dü wäälst jü uner stönjene opsjoon ouf.
+'movepagetalktext' => "Uk det diskusjuunssidj woort fersköwen, wan det diar as, '''oober ei, wan:'''
+*Diar al en diskusjuunssidj mä didiar nööm as, of
+*Dü detdiar mögelkhaid ütjslotst.
 
-Önj dadeere fåle möist dü, wan wansched, di önjhålt foon jü sid foon hönj ferschüwe unti tuhuupefääre.
+Uun didiar faal skel dü a diskusjuunssidjen faan hun tuupfeer.
 
-Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming hål '''begrüne.'''",
-'movearticle' => 'Sid ferschüwe:',
+Dreeg di '''nei''' tiitel bi '''ööder sidj''' iin, an diaroner '''en grünj''' för't amnäämen.",
+'movearticle' => 'Sidj fersküüw:',
 'moveuserpage-warning' => "'''Paase üüb:''' Dü wel en brükersidj fersküüw. Seenk diaram, dat bluas det brükersidj amnäämd woort, oober '''ei''' di brüker. Hi behäält san ual nööm.",
 'movenologin' => 'Ei uunmeldet',
 'movenologintext' => 'Dü skel registriaret an [[Special:UserLogin|uunmeldet]] wees, am en sidj tu fersküüwen.',
@@ -2515,16 +2520,16 @@ Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming
 'cant-move-user-page' => 'Dü mutst nian brükersidjen fersküüw (bluas onersidjen).',
 'cant-move-to-user-page' => 'Dü mutst nian sidjen üüb en brükersidj fersküüw (bluas üüb onersidjen).',
 'newtitle' => 'Müülj:',
-'move-watch' => 'Lök eefter jüdeer sid',
-'movepagebtn' => 'Sid ferschüwe',
+'move-watch' => "Jodiar sidjen uun't uug behual",
+'movepagebtn' => 'Sidj fersküüw',
 'pagemovedsub' => 'Ferschüwing luket',
-'movepage-moved' => "'''Jü sid „$1“ wörd eefter „$2“ ferschääwen.'''",
+'movepage-moved' => "'''Det sidj „$1“ as efter „$2“ fersköwen wurden.'''",
 'movepage-moved-redirect' => 'En widjerfeerang as iinracht wurden.',
 'movepage-moved-noredirect' => 'Det maagin faan en widjerfeerang as ferhanert wurden.',
-'articleexists' => 'Uner dideere noome bestoont ål en sid. Wääl hål en nai noome.',
+'articleexists' => 'En sidj mä didiar nööm jaft at al. Wees so gud an nem en öödern nööm.',
 'cantmove-titleprotected' => 'Dü könst det sidj ei so fersküüw, auer di nei nööm speret as.',
-'talkexists' => 'Jü sid seelew wörd erfolchrik ferschääwen, ouers jü deertu hiirende diskusjoonssid ai, deer ål iinj ma di nai tiitel bestoont. Glik hål da önjhålte foon hönj ouf.',
-'movedto' => 'ferschääwen eefter',
+'talkexists' => 'Detdiar sidj as fersköwen wurden, oober det diskusjuunssidj ei, auer diar al son diskusjuunssidj wiar. Fal det salew mä bidracher faan det ual sidj ap.',
+'movedto' => 'fersköwen efter',
 'movetalk' => "Uk det diskusjuunssidj fersküüw, wan't gongt",
 'move-subpages' => 'Onersidjen fersküüw (bit $1)',
 'move-talk-subpages' => "Onersidjen faan't diskusjuunssidj fersküüw (bit $1)",
@@ -2532,13 +2537,13 @@ Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming
 'movepage-page-moved' => 'Det sidj $1 as efter $2 fersköwen wurden.',
 'movepage-page-unmoved' => 'Det sidj $1 küd ei efter $2 fersköwen wurd.',
 'movepage-max-pages' => 'Diar kön ei muar üs {{PLURAL:$1|sidj|sidjen}} fersköwen wurd. Muar sidjen kön ei automaatisk fersköwen wurd.',
-'movelogpage' => 'Ferschüwingslogbök',
+'movelogpage' => 'Fersküüw-logbuk',
 'movelogpagetext' => 'Det as en list mä fersköwen sidjen.',
-'movesubpage' => '{{PLURAL:$1|onersidj|onersidjen}}',
+'movesubpage' => '{{PLURAL:$1|Onersidj|Onersidjen}}',
 'movesubpagetext' => 'Det sidj hää {{PLURAL:$1|detdiar $1 onersidj|jodiar $1 onersidjen}}.',
 'movenosubpage' => 'Det sidj hää nian onersidjen.',
-'movereason' => 'Begrüning:',
-'revertmove' => 'tubääg ferschüwe',
+'movereason' => 'Grünj:',
+'revertmove' => 'turag fersküüw',
 'delete_and_move' => 'Strik an fersküüw',
 'delete_and_move_text' => '== Striken nuadag  ==
 
@@ -2605,15 +2610,15 @@ Wees so gud an beschük a sidjen [//www.mediawiki.org/wiki/Localisation MediaWik
 'allmessages-filter-submit' => 'Widjer',
 
 # Thumbnails
-'thumbnail-more' => 'fergrutre',
+'thumbnail-more' => 'Fergratre',
 'filemissing' => 'Datei ei diar',
-'thumbnail_error' => "Bi't skriiwen faan det sümnaielbil as wat skiaf gingen: $1",
+'thumbnail_error' => "Bi't skriiwen faan det föörskaubil as wat skiaf gingen: $1",
 'thumbnail_error_remote' => 'Feeler faan $1:
 $2',
 'djvu_page_error' => 'DjVu-sidj as bütjen faan a sidjenrüm',
 'djvu_no_xml' => 'XML-dooten för det DjVu-datei kön ei ufrepen wurd',
 'thumbnail-temp-create' => 'Det datei för det tidjwiis sümnaielbil küd ei skrewen wurd',
-'thumbnail-dest-create' => 'Det sümnaielbil küd diar ei seekert wurd.',
+'thumbnail-dest-create' => 'Det föörskaubil küd diar ei seekert wurd.',
 'thumbnail_invalid_params' => 'Sümnaieldooten steme ei',
 'thumbnail_dest_directory' => 'Det fertiaknis koon ei skrewen wurd.',
 'thumbnail_image-type' => 'Sok bilen kön ei brükt wurd',
@@ -2686,11 +2691,11 @@ Transwiki-import-aktjuunen wurd uun't [[Special:Log/import|Import-logbuk]] fää
 'javascripttest-qunit-heading' => 'JavaScript-QUnit-tester faan MediaWiki',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Din brükersid',
+'tooltip-pt-userpage' => 'Din brükersidj',
 'tooltip-pt-anonuserpage' => 'Brükersidj faan det IP-adres, faan huar ütj dü werkest',
 'tooltip-pt-mytalk' => 'Din diskusjuunssidj',
 'tooltip-pt-anontalk' => 'Diskusjuun auer feranrangen faan detdiar IP-adres',
-'tooltip-pt-preferences' => 'Äine önjstalinge',
+'tooltip-pt-preferences' => 'Min iinstelangen',
 'tooltip-pt-watchlist' => "Sidjen, diar dü uun't uug behual wel",
 'tooltip-pt-mycontris' => 'List mä aanj bidracher',
 'tooltip-pt-login' => 'Wan dü di uunmeldest, heest dü muar mögelkhaiden. Dü säärst det oober ei.',
@@ -2698,59 +2703,60 @@ Transwiki-import-aktjuunen wurd uun't [[Special:Log/import|Import-logbuk]] fää
 'tooltip-pt-logout' => 'Ufmelde',
 'tooltip-ca-talk' => 'Diskusjuun auer di artiikel',
 'tooltip-ca-edit' => 'Sidj bewerke. Luke di det iarst ans uun, iar dü det seekerst.',
-'tooltip-ca-addsection' => 'Nai oufsnaas begane',
-'tooltip-ca-viewsource' => 'Jüdeer sid wårt uner ferbading hülen. Di kwältäkst koon önjkiiked wårde.',
+'tooltip-ca-addsection' => 'Nei kirew began',
+'tooltip-ca-viewsource' => 'Detdiar sidj as seekert wurden.
+Dü könst di kweltekst uunluke.',
 'tooltip-ca-history' => 'Ääler werjuunen faan detdiar sidj',
-'tooltip-ca-protect' => 'Jüdeer sid schütse',
+'tooltip-ca-protect' => 'Detdiar sidj seekre',
 'tooltip-ca-unprotect' => 'Seekerang feranere',
-'tooltip-ca-delete' => 'Jüdeer sid tunintemååge',
+'tooltip-ca-delete' => 'Detdiar sidj strik',
 'tooltip-ca-undelete' => 'Iindracher faan det sidj turaghaale, iar det stregen wurden as.',
-'tooltip-ca-move' => 'Jüdeer sid ferschüwe',
-'tooltip-ca-watch' => 'Jüdeer sid tu jü persöönlike eefterkiiksid baitufäige',
-'tooltip-ca-unwatch' => 'Jüdeer sid foon jü persöönlike eefterkiikliste wächnaame',
-'tooltip-search' => '{{SITENAME}} döörsäke',
-'tooltip-search-go' => 'Gung matiinjs tu jü sid, jü äksakt di injääwen noome önjtspreecht.',
+'tooltip-ca-move' => 'Detdiar sidj fersküüw',
+'tooltip-ca-watch' => "Detdiar sidj uk uun't uug behual",
+'tooltip-ca-unwatch' => "Detdiar sidj ei muar uun't uug behual",
+'tooltip-search' => 'Schük uun {{SITENAME}}',
+'tooltip-search-go' => 'Gung tu det sidj, diar jüst so het.',
 'tooltip-search-fulltext' => 'Schük efter sidjen mä didiar tekst',
 'tooltip-p-logo' => 'Hoodsidj beschük',
 'tooltip-n-mainpage' => 'Hoodsidj wise',
 'tooltip-n-mainpage-description' => 'Hoodsidj beschük',
-'tooltip-n-portal' => 'Ouer dåt portåål, wat dü düünj koost, weer wat tu finen as',
-'tooltip-n-currentevents' => 'Äädergrüninformasjoone tu aktuäle schaiinge',
+'tooltip-n-portal' => 'Auer det projekt, wat dü maage könst, an huar dü wat fanjst.',
+'tooltip-n-currentevents' => 'Muar auer a "miilstianer", diar det wurden an waaksen faan\'t Nuurdfresk Wikipedia eftertiakne',
 'tooltip-n-recentchanges' => 'Leetst feranrangen faan {{SITENAME}}',
-'tooltip-n-randompage' => 'Tufali sid',
-'tooltip-n-help' => 'Heelpsid wise',
+'tooltip-n-randompage' => 'Tufelag sidj',
+'tooltip-n-help' => 'Halepsidj uunwise',
 'tooltip-t-whatlinkshere' => 'Aal a sidjen, diar heerhen ferwise',
 'tooltip-t-recentchangeslinked' => 'Leetst feranrangen faan sidjen, huar faan heer üüb ferwiset woort',
-'tooltip-feed-rss' => 'RSS-feed for jüdeer sid',
-'tooltip-feed-atom' => 'Atom-feed for jüdeer sid',
+'tooltip-feed-rss' => 'RSS-feed för detdiar sidj',
+'tooltip-feed-atom' => 'Atom-feed för detdiar sidj',
 'tooltip-t-contributions' => 'List mä bidracher faan didiar brüker uunluke',
-'tooltip-t-emailuser' => 'En e-mail tu dideere brüker siinje',
+'tooltip-t-emailuser' => 'En e-mail tu didiar brüker schüür',
 'tooltip-t-upload' => 'Datein huuchschüür',
-'tooltip-t-specialpages' => 'List foon ål da spesjåålside',
-'tooltip-t-print' => 'Prantönjsacht foon jüdeer sid',
-'tooltip-t-permalink' => 'Wååri link tu jüdeer sidfärsjoon',
-'tooltip-ca-nstab-main' => 'Sidinhålt wise',
-'tooltip-ca-nstab-user' => 'Brükersid wise',
+'tooltip-t-specialpages' => 'Auersicht auer aal a spezial-sidjen',
+'tooltip-t-print' => 'Drükföörskau',
+'tooltip-t-permalink' => 'Permanent ferwisang tu detdiar werjuun faan det sidj.',
+'tooltip-ca-nstab-main' => 'Sidj uunluke',
+'tooltip-ca-nstab-user' => 'Brükersidj uunluke',
 'tooltip-ca-nstab-media' => 'Mediendateisidj uunwise',
-'tooltip-ca-nstab-special' => 'Jüdeer sid as en spetsjåålsid. Jü koon ai beåarbed wårde.',
-'tooltip-ca-nstab-project' => 'Portoolsid wise',
-'tooltip-ca-nstab-image' => 'Dååtäisid wise',
+'tooltip-ca-nstab-special' => 'Det as en spezial-sidj. Hat koon ei bewerket wurd.',
+'tooltip-ca-nstab-project' => 'Projektsidj uunluke',
+'tooltip-ca-nstab-image' => 'Dateisidj uunluke',
 'tooltip-ca-nstab-mediawiki' => 'MediaWiki-süsteemtekst uunwise',
-'tooltip-ca-nstab-template' => 'Forlååge wise',
+'tooltip-ca-nstab-template' => 'Föörlaag uunluke',
 'tooltip-ca-nstab-help' => 'Heelpsid wise',
-'tooltip-ca-nstab-category' => 'Kategoriisid wise',
-'tooltip-minoredit' => 'Jüdeer änring as latj markiire.',
+'tooltip-ca-nstab-category' => 'Kategoriisidj uunluke',
+'tooltip-minoredit' => 'Detdiar feranrang üs letj kääntiakne.',
 'tooltip-save' => 'Feranrangen seekre',
-'tooltip-preview' => 'Forlök foon da änringe bai jüdeer sid. Hål for dåt spikern brüke!',
-'tooltip-diff' => 'Änringe bai di täkst wise',
+'tooltip-preview' => 'Föörskau faan feranrangen üüb detdiar sidj. Iarst noch ans luke, iar dü det sidj seekerst!',
+'tooltip-diff' => 'Feranrangen bi a tekst wise',
 'tooltip-compareselectedversions' => 'Ferskeel tesken tau werjuunen faan detdiar sidj uunwise.',
-'tooltip-watch' => 'Fäig jüdeer sid foon din eefterkiikliste tubai',
+'tooltip-watch' => "Detdiar sidj uk uun't uug behual",
 'tooltip-watchlistedit-normal-submit' => 'Iindracher wechnem',
 'tooltip-watchlistedit-raw-submit' => "List mä sidjen, diar dü uun't uug behual wel, aktualisiare",
 'tooltip-recreate' => 'Sidj nei maage, likes dat det al ans stregen wurden as',
 'tooltip-upload' => 'Huuchsjüüren began',
-'tooltip-rollback' => 'Mååget åle leeste änringe foon jü sid, da foon di lik brüker fornümen wörden san, döör iinj klik tuninte.',
-'tooltip-undo' => 'Mååget bloot jüdeer iinje änring tuninte än wist dåt resultoot önj e forlöksid önj, deerma önj e tukuupefootingssid en begrüning önjjääwen wårde koon.',
+'tooltip-rollback' => 'Saat aal a leetst feranrangen faan disalew brüker mä ään klik turag.',
+'tooltip-undo' => 'Saat bluas det leetst feranrang turag an wiset det resultoot uun en föörskau uun. Uun det tuupfaadet beskriiwang skul en grünj för det turagsaaten uunden wurd.',
 'tooltip-preferences-save' => 'Iinstelangen seekre',
 'tooltip-summary' => 'Faade det kurt tuup',
 
@@ -2779,8 +2785,8 @@ Transwiki-import-aktjuunen wurd uun't [[Special:Log/import|Import-logbuk]] fää
 'spam_deleting' => 'Aal a werjuunen mä en ferwisung tu $1 san stregen wurden.',
 
 # Info page
-'pageinfo-title' => 'Informatsjuun tu „$1“',
-'pageinfo-not-current' => 'Det informatsjuun jaft at ei för ual werjuunen.',
+'pageinfo-title' => 'Informatjuun tu „$1“',
+'pageinfo-not-current' => 'Det informatjuun jaft at ei för ual werjuunen.',
 'pageinfo-header-basic' => 'Grünjdooten',
 'pageinfo-header-edits' => 'Ferluup bewerke',
 'pageinfo-header-restrictions' => 'Sidjenseekerhaid',
@@ -2813,7 +2819,7 @@ Transwiki-import-aktjuunen wurd uun't [[Special:Log/import|Import-logbuk]] fää
 'pageinfo-transclusions' => 'Iinbünjen uun {{PLURAL:$1|1 sidj|$1 sidjen}}',
 'pageinfo-toolboxlink' => 'Sidjendooten',
 'pageinfo-redirectsto' => 'Widjerfeerangen tu',
-'pageinfo-redirectsto-info' => 'informatsjuun',
+'pageinfo-redirectsto-info' => 'Informatjuun',
 'pageinfo-contentpage' => 'Üs artiikel tääld',
 'pageinfo-contentpage-yes' => 'Ja',
 'pageinfo-protect-cascading' => 'Sidjen mä kaskaadenseekerhaid faan heer',
@@ -2854,7 +2860,7 @@ $1",
 'filedelete-archive-read-only' => 'Det archiif-fertiaknis "$1" koon faan a webserver ei beskrewen wurd.',
 
 # Browsing diffs
-'previousdiff' => '← Tu di leest färsjoonsferschääl',
+'previousdiff' => '← Leetst feranrang',
 'nextdiff' => 'Tu di näist färsjoonsferschääl →',
 
 # Media information
@@ -2863,14 +2869,14 @@ $1",
 'thumbsize' => 'Grate faan sümnaielbilen:',
 'widthheightpage' => '$1 × $2, {{PLURAL:$3|1 sidj|$3 sidjen}}',
 'file-info' => 'Dateigrate: $1, MIME-typ: $2',
-'file-info-size' => '$1 × $2 pixele, dååtäigrutelse: $3, MIME-typ: $4',
+'file-info-size' => '$1 × $2 pixels, dateigrate: $3, MIME-typ: $4',
 'file-info-size-pages' => '$1 × $2 pixel, dateigrate: $3, MIME-typ: $4, $5 {{PLURAL:$5|sidj|sidjen}}',
-'file-nohires' => 'Niinj huuger apliising as deer.',
+'file-nohires' => 'Diar as nian huuger apliasang diar.',
 'svg-long-desc' => 'SVG-datei, grate: $1 × $2 pixel, dateigrate: $3',
 'svg-long-desc-animated' => 'Animiaret SVG-datei, grate $1 × $2 pixel, dateigrate: $3',
 'svg-long-error' => 'Ferkiard SVG-datei: $1',
-'show-big-image' => 'Färsjon önj huuger apliising',
-'show-big-image-preview' => 'Grate faan det sümnaielbil: $1.',
+'show-big-image' => 'Huuger apliasang',
+'show-big-image-preview' => 'Grate faan detdiar föörskaubil: $1.',
 'show-big-image-other' => 'Ööder {{PLURAL:$2|apliasang|apliasangen}}: $1.',
 'show-big-image-size' => '$1 × $2 pixel',
 'file-info-gif-looped' => 'sleuf saner aanj',
@@ -2925,11 +2931,11 @@ Det skal bääft di * began mä en ferwisang üüb en ferkiard datei.
 Ferwisangen uun det salew rä wurd üs ütjnoomen uunsen, huar det datei dach uunwiset wurd mut.',
 
 # Metadata
-'metadata' => 'Metadååte',
-'metadata-help' => 'Jüdeer dåtäi önjthålt widere informasjoon, jü önj e räigel foon jü digitoolamera unti di ferwånd scanner ståme. Döör eefterdräägen beårbing foon jü originooldåtäi koone hu detaile feränret wörden weese.',
-'metadata-expand' => 'Ütbriidede detaile wise',
-'metadata-collapse' => 'Ütbriidede detaile fersteege',
-'metadata-fields' => 'Da füliende fälje foon da EXIF-metadååte, da önj dideere MediaWiki-systeemtäkst önjjääwen san, wårde aw bilbeschriwingsside ma inklapede metadååtetabäle wist. Widere wårde standardmääsi ai wised.
+'metadata' => 'Metadooten',
+'metadata-help' => 'Uun detdiar datei stun muar dooten, jo kem miast faan en digitaal knipskasche of faan en scanner. Ferlicht san hög dooten uk leederhen feranert wurden.',
+'metadata-expand' => 'Ütjwidjet dooten wise',
+'metadata-collapse' => 'Ütjwidjet dooten fersteeg',
+'metadata-fields' => 'Jodiar EXIF-metadooten wurd uunwiset, wan det metadootentabel ferbürgen as. Jo öödern san iarst ans ferbürgen.
 * make
 * model
 * datetimeoriginal
@@ -3335,7 +3341,7 @@ Ferwisangen uun det salew rä wurd üs ütjnoomen uunsen, huar det datei dach uu
 
 # External editor support
 'edit-externally' => 'Detdiar datei mä en ekstern program bewerke',
-'edit-externally-help' => '(Sii da [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] for widere Informasjoon)',
+'edit-externally-help' => "(Luk efter uun't [//www.mediawiki.org/wiki/Manual:External_editors hoonbuk] am muar diartu)",
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aaltumaal',
@@ -3483,7 +3489,7 @@ Dü könst uk det [[Special:EditWatchlist|normool sidj]] tu bewerkin nem.",
 'watchlistedit-raw-removed' => '{{PLURAL:$1|Ään iindrach as|$1 iindracher san}} wechnimen wurden:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Eefterkiiklist: änringe',
+'watchlisttools-view' => "Uun't uug behual: Feranrangen",
 'watchlisttools-edit' => 'Normool bewerke',
 'watchlisttools-raw' => "Uun't listenformoot bewerke",
 
@@ -3522,7 +3528,7 @@ MediaWiki is distributed in the hope that it will be useful, but WITHOUT ANY WAR
 You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING 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 or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
 'version-software' => 'Instaliird software',
 'version-software-product' => 'Produkt',
-'version-software-version' => 'Färsjoon',
+'version-software-version' => 'Werjuun',
 'version-entrypoints' => 'URLs faan hüsdörsidjen',
 'version-entrypoints-header-entrypoint' => 'Hüsdörsidj',
 'version-entrypoints-header-url' => 'URL',
@@ -3627,7 +3633,7 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'htmlform-required' => 'Di wäärs woort brükt.',
 'htmlform-submit' => 'Auerdreeg',
 'htmlform-reset' => 'Feranrangen turagsaat.',
-'htmlform-selectorother-other' => 'Oudere',
+'htmlform-selectorother-other' => 'Öödern',
 'htmlform-no' => 'Naan',
 'htmlform-yes' => 'Ja',
 'htmlform-chosen-placeholder' => 'Schük ütj',
@@ -3654,8 +3660,8 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'revdelete-content-unhid' => 'Ei muar ferberag',
 'revdelete-summary-unhid' => 'Tuupfaadang ei muar ferberag',
 'revdelete-uname-unhid' => 'brükernoome frijääwen',
-'revdelete-restricted' => 'gränse jüle uk for administratoore',
-'revdelete-unrestricted' => 'gränse for administratoore wächnümen',
+'revdelete-restricted' => 'mögelkhaiden för administratooren wechnimen',
+'revdelete-unrestricted' => 'mögelkhaiden för administratooren ütjwidjet',
 'logentry-move-move' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen.',
 'logentry-move-move-noredirect' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 saner widjerfeerang fersköwen.',
 'logentry-move-move_redir' => '$1 {{GENDER:$2}} hää det sidj $3 efter $4 fersköwen an diarbi en widjerfeerang auerskrewen.',
@@ -3711,7 +3717,7 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|as nään tuläät slach faan datein|san nian tuläät slacher faan datein}}.
 {{PLURAL:$3|En tuläät slach as|Tuläät slacher san}} $2.',
 'api-error-filetype-missing' => 'Det datei, wat dü huuchschüür wel, hää nian dateiaanj.',
-'api-error-hookaborted' => 'Det feranerang, wat dü maage wulst, as ufbreegen wurden.',
+'api-error-hookaborted' => 'Det feranrang, wat dü maage wulst, as faan en ütjwidjet software-funktjuun ufbreegen wurden.',
 'api-error-http' => 'Intern feeler: Ferbinjang tu a server as skiaf gingen.',
 'api-error-illegal-filename' => 'Didiar dateinööm as ei tuläät.',
 'api-error-internal-error' => "Intern feeler: diar as wat skiaf gingen bi't huuchschüüren faan det datei tu det Wiki.",
index 93ce1c3..a62ab15 100644 (file)
@@ -325,7 +325,6 @@ $messages = array(
 'disclaimers' => 'Avîs legâi',
 'disclaimerpage' => 'Project:Avîs gjenerâi',
 'edithelp' => 'Jutori pai cambiaments',
-'edithelppage' => 'Help:Cambiaments',
 'helppage' => 'Help:Contignûts',
 'mainpage' => 'Pagjine principâl',
 'mainpage-description' => 'Pagjine principâl',
@@ -667,7 +666,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'searchmenu-legend' => 'Opzions de ricercje',
 'searchmenu-exists' => "'''E je une pagjine di non \"[[:\$1]]\" su cheste wiki'''",
 'searchmenu-new' => "'''Cree la pagjine \"[[:\$1]]\" su cheste wiki!'''",
-'searchhelp-url' => 'Help:Contignûts',
 'searchprofile-articles' => 'Pagjinis di contignûts',
 'searchprofile-project' => 'Pagjinis di jutori e sul progjet',
 'searchprofile-images' => 'Multimedia',
index 756e74a..040883f 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Maartenvdbent
  * @author Purodha
  * @author Pyt
@@ -367,7 +368,6 @@ $1",
 'disclaimers' => 'Foarbehâld',
 'disclaimerpage' => 'Project:Algemien foarbehâld',
 'edithelp' => 'Bewurk-help',
-'edithelppage' => 'Help:Bewurk-rie',
 'helppage' => 'Help:Help',
 'mainpage' => 'Haadside',
 'mainpage-description' => 'Haadside',
@@ -516,7 +516,7 @@ Mûglik wurdt noch in tal siden werjûn as wiene Jo oanmeld, oant Jo de cache fa
 'logout' => 'Ofmelde',
 'userlogout' => 'Ofmelde',
 'notloggedin' => 'Net oanmelde',
-'nologin' => "Noch net oanmelden as meidogger? '''$1'''.",
+'nologin' => 'Noch net oanmelden as meidogger? $1.',
 'nologinlink' => 'Meitsje in brûker oan',
 'createaccount' => 'Nije ynstellings oanmeitsje',
 'gotaccount' => "Hawwe jo jo al as meidogger oanmelde? '''$1'''.",
@@ -916,7 +916,6 @@ Prebearje in oare sykopdracht.',
 'searchmenu-legend' => 'Sykopsjes',
 'searchmenu-exists' => "'''Der is in side mei namme \"[[:\$1]]\" yn dizze wiki'''",
 'searchmenu-new' => "'''Meitsje de side \"[[:\$1]]\" yn dizze wiki!'''",
-'searchhelp-url' => 'Help:Help',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sidenammen mei dit foarheaksel werjaan]]',
 'searchprofile-articles' => 'Ynhâldlike siden',
 'searchprofile-project' => 'Projektsiden',
@@ -1340,12 +1339,12 @@ PICT # ferskaat
 'upload-proto-error-text' => "Oanbieden mei dizze metoade freget URL's dy't begjinne mei <code>http://</code> of <code>ftp://</code>.",
 'upload-file-error' => 'Ynterne fout',
 'upload-file-error-text' => "Der wie in ynterne fout doe't in tydlike triem op'e server oanmakke waard.
-Nim kontakt op mei in [[Special:ListUsers/sysop|systeembehearder]].",
+Nim kontakt op mei in [[Special:ListUsers/sysop|behearder]].",
 'upload-misc-error' => 'Unbekende oanbiedfout',
 'upload-misc-error-text' => 'Der is by it oanbieden in ûnbekende fout optreden.
 Kontrolearje of de URL krekt en beskikber is en besykje it nochris.
 As it probleem oanhâldt, nim dan kontakt op mei in
-[[Special:ListUsers/sysop|systeembehearder]].',
+[[Special:ListUsers/sysop|behearder]].',
 'upload-unknown-size' => 'Unbekinde grutte',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
index 2fbaa9d..8b913ca 100644 (file)
@@ -324,7 +324,6 @@ $messages = array(
 'disclaimers' => 'Séanadh',
 'disclaimerpage' => 'Project:Séanadh_ginearálta',
 'edithelp' => 'Cabhair eagarthóireachta',
-'edithelppage' => 'Help:Eagarthóireacht',
 'helppage' => 'Help:Clár_ábhair',
 'mainpage' => 'Príomhleathanach',
 'mainpage-description' => 'Príomhleathanach',
@@ -785,7 +784,6 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
 'viewprevnext' => 'Taispeáin ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Sainroghanna cuardaithe',
 'searchmenu-new' => "'''Cruthaigh an leathanach \"[[:\$1]]\" ar an vicí seo!'''",
-'searchhelp-url' => 'Help:Clár_ábhair',
 'searchprofile-articles' => 'Leathanaigh ábhair',
 'searchprofile-project' => 'Leathanaigh thionscadail agus cabhair',
 'searchprofile-images' => 'Ilmheáin',
index a52e9a3..8d04b05 100644 (file)
@@ -288,7 +288,6 @@ $messages = array(
 'disclaimers' => 'Cuvapçılık reti',
 'disclaimerpage' => 'Project:Genel cuvapçılık reti',
 'edithelp' => 'Nesoy var nicä diiştirmää?',
-'edithelppage' => 'Help:Nesoy var nicä sayfa diiştirmää',
 'helppage' => 'Help:İçindekilär',
 'mainpage' => 'Baş yaprak',
 'mainpage-description' => 'Baş yaprak',
@@ -574,7 +573,6 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 'prevn' => 'ilerki {{PLURAL:$1|$1}}',
 'nextn' => 'geeriki {{PLURAL:$1|$1}}',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:İçindekilär',
 'search-result-size' => '$1 ({{PLURAL:$2|1 laf|$2 laf}})',
 'search-redirect' => '(göndermää $1)',
 'search-section' => '(bölüm $1)',
index 3456d6e..136a532 100644 (file)
@@ -266,7 +266,6 @@ $1',
 'disclaimers' => '免责声明',
 'disclaimerpage' => 'Project:免责声明',
 'edithelp' => '编写帮助',
-'edithelppage' => 'Help:啷编写文章',
 'helppage' => 'Help:说明',
 'mainpage' => '封面',
 'mainpage-description' => '封面',
@@ -741,7 +740,6 @@ $2',
 'viewprevnext' => '眵吖($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''个只wiki已有一只叫「[[:$1]]」𠮶页。'''",
 'searchmenu-new' => "'''嘚个只wiki上建立「[[:$1]]」页!'''",
-'searchhelp-url' => 'Help:说明',
 'searchprofile-articles' => '内容页',
 'searchprofile-project' => '帮助同得计划页',
 'searchprofile-images' => '多媒体',
index 158f01f..b66da51 100644 (file)
@@ -288,7 +288,6 @@ $1',
 'disclaimers' => '免責聲明',
 'disclaimerpage' => 'Project:免責聲明',
 'edithelp' => '編寫幫助',
-'edithelppage' => 'Help:啷編寫文章',
 'helppage' => 'Help:説明',
 'mainpage' => '封面',
 'mainpage-description' => '封面',
@@ -763,7 +762,6 @@ $2',
 'viewprevnext' => '望下($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''箇隻wiki已有一隻叫「[[:$1]]」嗰頁。'''",
 'searchmenu-new' => "'''到箇隻wiki上建立「[[:$1]]」頁!'''",
-'searchhelp-url' => 'Help:説明',
 'searchprofile-articles' => '內容頁',
 'searchprofile-project' => '幫助同得計劃頁',
 'searchprofile-images' => '多媒體',
index 03d5744..229c407 100644 (file)
@@ -276,7 +276,6 @@ $1",
 'disclaimers' => 'Aithrisean-àichidh',
 'disclaimerpage' => 'Project:Aithris-àichidh choitcheann',
 'edithelp' => 'Cobhair deasachaidh',
-'edithelppage' => 'Help:Deasachadh',
 'helppage' => 'Help:Susbaint',
 'mainpage' => 'Prìomh dhuilleag',
 'mainpage-description' => 'Prìomh dhuilleag',
@@ -572,10 +571,8 @@ Saoil an do dh'atharraich thu am facal-faire agad mu thràth no an do dh'iarr th
 
 # Special:PasswordReset
 'passwordreset' => 'Ath-shuidhich am facal-faire',
-'passwordreset-text' => 'Lìon am foirm seo gus am facal-faire agad ath-shuidheachadh.',
 'passwordreset-legend' => 'Ath-shuidhich am facal-faire',
 'passwordreset-disabled' => 'Chaidh ath-shuidheachadh nam faclan-faire a chur à comas air an uicipeid seo.',
-'passwordreset-pretext' => '{{PLURAL:$1||Cuir a-steach aon dhe na pìosan dàta gu h-ìosal}}',
 'passwordreset-username' => 'Ainm-cleachdaiche:',
 'passwordreset-domain' => 'Àrainn-lìn:',
 'passwordreset-capture' => "A bheil thu airson coimhead air a' phost-d?",
@@ -942,7 +939,6 @@ Feuch is [[Special:Search|lorg duilleagan ùra iomachaidh air an uici]]",
 'searchmenu-legend' => 'Roghainnean luirg',
 'searchmenu-exists' => "'''Tha duilleag air a bheil \"[[:\$1]]\" air an uicipeid seo.'''",
 'searchmenu-new' => "'''Cruthaich an duilleag \"[[:\$1]]\" air an uicipeid seo!'''",
-'searchhelp-url' => 'Help:Cuideachadh',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rùraich duilleagan aig a bheil an ro-leasachan seo]]',
 'searchprofile-articles' => 'Duilleagan susbainte',
 'searchprofile-project' => "Duilleagan nan cobharach 's nam pròiseactan",
index 82e2b23..d7c1795 100644 (file)
@@ -11,6 +11,7 @@
  * @author Dferg
  * @author Elisardojm
  * @author Gallaecio
+ * @author Geitost
  * @author Gustronico
  * @author Kaganer
  * @author Lameiro
@@ -452,6 +453,7 @@ $messages = array(
 'create-this-page' => 'Crear esta páxina',
 'delete' => 'Borrar',
 'deletethispage' => 'Borrar esta páxina',
+'undeletethispage' => 'Restaurar esta páxina',
 'undelete_short' => 'Restaurar {{PLURAL:$1|unha edición|$1 edicións}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|unha edición borrada|$1 edicións borradas}}',
 'protect' => 'Protexer',
@@ -505,7 +507,6 @@ $1',
 'disclaimers' => 'Advertencias',
 'disclaimerpage' => 'Project:Advertencia xeral',
 'edithelp' => 'Axuda de edición',
-'edithelppage' => 'Help:Como editar unha páxina',
 'helppage' => 'Help:Axuda',
 'mainpage' => 'Portada',
 'mainpage-description' => 'Portada',
@@ -654,6 +655,8 @@ $2',
 'namespaceprotected' => "Non dispón de permisos para modificar páxinas no espazo de nomes '''$1'''.",
 'customcssprotected' => 'Non dispón de permisos para modificar esta páxina de CSS, dado que contén a configuración persoal doutro usuario.',
 'customjsprotected' => 'Non dispón de permisos para modificar esta páxina de JavaScript, dado que contén a configuración persoal doutro usuario.',
+'mycustomcssprotected' => 'Non ten permiso para editar esta páxina de CSS.',
+'mycustomjsprotected' => 'Non ten permiso para editar esta páxina de JavaScript.',
 'ns-specialprotected' => 'Non se poden editar as páxinas no espazo de nomes "{{ns:special}}".',
 'titleprotected' => "Este título foi protexido da creación por [[User:$1|$1]].
 O motivo achegado é ''$2''.",
@@ -794,7 +797,7 @@ Insira un enderezo cun formato válido ou baleire ese campo.',
 'cannotchangeemail' => 'Neste wiki non se poden mudar os enderezos de correo electrónico asociados a unha conta.',
 'emaildisabled' => 'Este sitio non pode enviar correos electrónicos.',
 'accountcreated' => 'Conta creada',
-'accountcreatedtext' => 'Creouse a conta de usuario para "$1".',
+'accountcreatedtext' => 'Creouse a conta de usuario para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|conversa]]).',
 'createaccount-title' => 'Creación dunha conta para {{SITENAME}}',
 'createaccount-text' => 'Alguén creou unha conta chamada "$2" para o seu enderezo de correo electrónico en {{SITENAME}} ($4), e con contrasinal "$3".
 Debe acceder ao sistema e mudar o contrasinal agora.
@@ -985,8 +988,8 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'blocked-notice-logextract' => 'Este usuario está bloqueado.
 Velaquí está a última entrada do rexistro de bloqueos, por se quere consultala:',
 'clearyourcache' => "'''Nota:''' Despois de gardar, cómpre limpar a memoria caché do seu navegador para ver os cambios.
-* '''Firefox / Safari:''' Prema ''Maiúsculas'' á vez que en ''Recargar'', ou prema en ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' nos Mac)
-* '''Google Chrome:''' Prema en ''Ctrl-Shift-R'' (''⌘-Shift-R'' nos Mac)
+* '''Firefox/Safari:''' Prema ''Maiúsculas'' á vez que en ''Recargar'', ou prema en ''Ctrl-F5'' ou ''Ctrl-R'' (''⌘-R'' nos Mac)
+* '''Google Chrome:''' Prema en ''Ctrl-Maiús-R'' (''⌘-Maiús-R'' nos Mac)
 * '''Internet Explorer:''' Prema ''Ctrl'' ao tempo que fai clic en ''Refrescar'', ou prema en ''Ctrl-F5''
 * '''Opera:''' Limpe a súa memoria caché en ''Ferramentas → Preferencias''",
 'usercssyoucanpreview' => "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
@@ -1333,7 +1336,6 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'searchmenu-legend' => 'Opcións de busca',
 'searchmenu-exists' => "* Páxina \"'''[[\$1]]'''\"",
 'searchmenu-new' => "'''Crear a páxina \"[[:\$1]]\" neste wiki!'''",
-'searchhelp-url' => 'Help:Contidos',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue polas páxinas que comezan coas mesmas iniciais]]',
 'searchprofile-articles' => 'Páxinas de contido',
 'searchprofile-project' => 'Páxinas do proxecto e de axuda',
@@ -1521,6 +1523,7 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
 'userrights-changeable-col' => 'Os grupos que pode cambiar',
 'userrights-unchangeable-col' => 'Os grupos que non pode cambiar',
 'userrights-conflict' => 'Hai un conflito cos dereitos de usuario! Aplique de novo os seus cambios.',
+'userrights-removed-self' => 'Retirou correctamente os seus propios dereitos. Polo tanto, xa non ten acceso a esta páxina.',
 
 # Groups
 'group' => 'Grupo:',
@@ -1588,9 +1591,11 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
 'right-protect' => 'Trocar os niveis de protección e editar páxinas protexidas',
 'right-editprotected' => 'Editar páxinas protexidas (que non teñan protección en serie)',
 'right-editinterface' => 'Editar a interface de usuario',
-'right-editusercssjs' => 'Editar os ficheiros CSS e JS doutros usuarios',
+'right-editusercssjs' => 'Editar os ficheiros CSS e JavaScript doutros usuarios',
 'right-editusercss' => 'Editar os ficheiros CSS doutros usuarios',
-'right-edituserjs' => 'Editar os ficheiros JS doutros usuarios',
+'right-edituserjs' => 'Editar os ficheiros JavaScript doutros usuarios',
+'right-editmyusercss' => 'Editar os ficheiros CSS propios',
+'right-editmyuserjs' => 'Editar os ficheiros JavaScript propios',
 'right-rollback' => 'Reverter rapidamente as edicións do último usuario que editou unha páxina en particular',
 'right-markbotedits' => 'Marcar as edicións desfeitas como edicións dun bot',
 'right-noratelimit' => 'Non lle afectan os límites de frecuencia',
@@ -1843,11 +1848,11 @@ $1',
 'upload-proto-error-text' => 'A carga remota require enderezos URL que comecen por <code>http://</code> ou <code>ftp://</code>.',
 'upload-file-error' => 'Erro interno',
 'upload-file-error-text' => 'Produciuse un erro interno ao intentar crear un ficheiro temporal no servidor.
-Por favor, contacte cun [[Special:ListUsers/sysop|administrador]] do sistema.',
+Por favor, póñase en contacto cun [[Special:ListUsers/sysop|administrador]].',
 'upload-misc-error' => 'Erro de carga descoñecido',
 'upload-misc-error-text' => 'Ocorreu un erro descoñecido durante a carga.
 Comprobe que o enderezo URL é válido e accesible e, despois, inténteo de novo.
-Se o problema persiste, póñase en contacto cun [[Special:ListUsers/sysop|administrador]] do sistema.',
+Se o problema persiste, póñase en contacto cun [[Special:ListUsers/sysop|administrador]].',
 'upload-too-many-redirects' => 'O enderezo URL contiña moitas redireccións',
 'upload-unknown-size' => 'Tamaño descoñecido',
 'upload-http-error' => 'Produciuse un erro HTTP: $1',
index 6023729..ffd043d 100644 (file)
@@ -271,7 +271,6 @@ $1',
 'disclaimers' => 'Ἀποποιήσεις',
 'disclaimerpage' => 'Project:Γενικὴ ἀποποίησις',
 'edithelp' => 'Βοήθεια περὶ τοῦ μεταγράφειν',
-'edithelppage' => 'Help:Βοήθεια περὶ τοῦ μεταγράφειν',
 'helppage' => 'Help:Περιεχόμενα',
 'mainpage' => 'Κυρία Δέλτος',
 'mainpage-description' => 'Κυρία Δέλτος',
@@ -796,7 +795,6 @@ $1",
 'searchmenu-legend' => 'Ἐπιλογαὶ ζητήσεως',
 'searchmenu-exists' => "'''Ὑπάρχει δέλτος τις ὀνόματι \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
 'searchmenu-new' => "'''Ποιεῖν τὴν δέλτον \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
-'searchhelp-url' => 'Help:Περιεχόμενα',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ζήτησις δέλτων ἐχουσῶν τόδε τὸ πρόθεμα]]',
 'searchprofile-articles' => 'Δέλτοι περιεχομένων',
 'searchprofile-project' => 'Βοήθεια  καὶ δέλτοι ἐγχειρήματος',
index 5bb714f..d6d3511 100644 (file)
@@ -374,7 +374,6 @@ Di maximal Wartezyt fir e Lock isch umme',
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Rotschläg fir s Bearbeite',
-'edithelppage' => 'Help:Ändere',
 'helppage' => 'Help:Hilf',
 'mainpage' => 'Houptsyte',
 'mainpage-description' => 'Houptsyte',
@@ -553,7 +552,7 @@ Ochat: s cha syy, ass bstimmti Syte eso aazeigt wäre, wie wänn Du allno aagmä
 'logout' => 'Abmälde',
 'userlogout' => 'Abmälde',
 'notloggedin' => 'Nit aagmäldet',
-'nologin' => "No kei Benutzerkonto? '''$1'''.",
+'nologin' => 'No kei Benutzerkonto? $1.',
 'nologinlink' => '»Konto aaleege«',
 'createaccount' => 'Nöis Benutzerkonto aalege',
 'gotaccount' => "Du häsch scho a Konto? '''$1'''",
@@ -1128,7 +1127,6 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Suechoptione',
 'searchmenu-exists' => "* Syte '''[[$1]]'''",
 'searchmenu-new' => "'''[[:$1|Leg d Syte ''$1'' in dem Wiki aa!]]'''",
-'searchhelp-url' => 'Help:Hilf',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alli Syte, wu mit dem Suechbegriff aafange]]',
 'searchprofile-articles' => 'Inhaltssyte',
 'searchprofile-project' => 'Hilf- un Projäktsyte',
index 0f5594c..c901c3d 100644 (file)
@@ -158,7 +158,7 @@ $messages = array(
 'tog-hidepatrolled' => 'હાલના સલામતી માટે કરવામાં આવેલાં થયેલા ફેરફારો છુપાવો.',
 'tog-newpageshidepatrolled' => 'નવાં પાનાંની યાદીમાંથી દેખરેખ હેઠળનાં પાનાં છુપાવો',
 'tog-extendwatchlist' => 'ધ્યાનસૂચિને વિસ્તૃત કરો જેથી,ફક્ત તાજેતરનાજ નહીં, બધા આનુષાંગિક ફેરફારો જોઇ શકાય',
-'tog-usenewrc' => 'તાàª\9cà«\87તરનાàª\82 àªµàª°à«\8dધિત àª«à«\87રફારà«\8b àªµàª¾àªªàª°à«\8b(જાવાસ્ક્રીપ્ટ જરૂરી)',
+'tog-usenewrc' => 'તાàª\9cા àª«à«\87રફારà«\8bમાàª\82 àª\85નà«\87 àª§à«\8dયાનસà«\82àª\9aિમાàª\82 àª«à«\87રફારà«\8bનà«\87 àªªàª¾àª¨àª¾àª\82 àª\85નà«\81સાર àª\9cà«\82થમાàª\82 àª\97à«\8bઠવà«\8b (જાવાસ્ક્રીપ્ટ જરૂરી)',
 'tog-numberheadings' => 'મથાળાંઓને આપો-આપ ક્રમ (ઑટો નંબર) આપો',
 'tog-showtoolbar' => 'ફેરફારો માટેનો ટૂલબાર બતાવો (જાવા સ્ક્રિપ્ટ)',
 'tog-editondblclick' => 'ડબલ ક્લિક દ્વારા ફેરફાર કરો (જાવાસ્ક્રિપ્ટ જરૂરી)',
@@ -166,7 +166,7 @@ $messages = array(
 'tog-editsectiononrightclick' => 'વિભાગના મથાળાં ને રાઇટ ક્લિક દ્વારા ફેરફાર કરવાની રીત અપનાવો. (જાવાસ્ક્રિપ્ટ જરૂરી)',
 'tog-showtoc' => 'અનુક્રમણિકા દર્શાવો (૩થી વધુ પેટા-મથાળા વાળા લેખો માટે)',
 'tog-rememberpassword' => 'આ કમ્પ્યૂટર પર મારી લોગ-ઇન વિગતો યાદ રાખો (મહત્તમ $1 {{PLURAL:$1|દિવસ|દિવસ}} માટે)',
-'tog-watchcreations' => 'મà«\87àª\82 àª\89મà«\87રà«\87લા àªªàª¾àª¨àª¾àª\82àª\93 àª\85નà«\87 àª\85પલà«\8bડ àª\95રà«\87લ àª«àª¾àª\87લà«\8dસ મારી ધ્યાનસૂચિમાં ઉમેરો',
+'tog-watchcreations' => 'મà«\87àª\82 àª¬àª¨àª¾àªµà«\87લાàª\82 àªªàª¾àª¨àª¾àª\82 àª\85નà«\87 àª\85પલà«\8bડ àª\95રà«\87લà«\80 àª«àª¾àª\87લà«\8b મારી ધ્યાનસૂચિમાં ઉમેરો',
 'tog-watchdefault' => 'હું ફેરફાર કરૂં તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો',
 'tog-watchmoves' => 'હું ખસેડું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો',
 'tog-watchdeletion' => 'હું દૂર કરું તે પાનાં અને ફાઇલ્સ મારી ધ્યાનસૂચિમાં ઉમેરો',
@@ -410,7 +410,6 @@ $1',
 'disclaimers' => 'જાહેર ઇનકાર',
 'disclaimerpage' => 'Project:સામાન્ય જાહેર ઇનકાર',
 'edithelp' => 'ફેરફારો માટે મદદ',
-'edithelppage' => 'Help:ફેરફાર',
 'helppage' => 'Help:સૂચિ',
 'mainpage' => 'મુખપૃષ્ઠ',
 'mainpage-description' => 'મુખપૃષ્ઠ',
@@ -616,9 +615,9 @@ $2',
 'gotaccount' => "પહેલેથી ખાતું ખોલેલું છે? '''$1'''.",
 'gotaccountlink' => 'પ્રવેશ કરો',
 'userlogin-resetlink' => 'પોતાની પ્રવેશ માહિતી ભૂલી ગયા છો?',
-'userlogin-resetpassword-link' => 'તમારà«\8b àªªàª¾àª¸àªµàª°à«\8dડ બદલો',
+'userlogin-resetpassword-link' => 'તમારà«\80 àª\97à«\81પà«\8dતસàª\82àª\9cà«\8dàª\9eા બદલો',
 'helplogin-url' => 'Help:પ્રવેશ માટે',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|પ્વેશવા માટેની મદદ]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|પà«\8dરવà«\87શવા àª®àª¾àª\9fà«\87નà«\80 àª®àª¦àª¦]]',
 'createacct-join' => 'તમારી માહિતી નીચે દાખલ કરો.',
 'createacct-emailrequired' => 'ઇમેલ સરનામું',
 'createacct-emailoptional' => 'ઇમેલ સરનામું (વૈકલ્પિક)',
@@ -633,10 +632,10 @@ $2',
 'createacct-submit' => 'તમારું ખાતું બનાવો',
 'createacct-benefit-heading' => '{{SITENAME}} એ તમારા જેવા લોકો વડે બનાવેલ છે.',
 'createacct-benefit-body1' => '{{PLURAL:$1|ફેરફાર|ફેરફારો}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|પાનું|પાનાં}}',
-'createacct-benefit-body3' => 'તાજેતરના {{PLURAL:$1|યોગદાનકર્તા|યોગદાનકર્તાઓ}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|પાનું|પાનાં}}',
+'createacct-benefit-body3' => 'તાજેતરના {{PLURAL:$1|યોગદાનકર્તા|યોગદાનકર્તાઓ}}',
 'badretype' => 'તમે દાખલ કરેલ ગુપ્તસંજ્ઞા મળતી આવતી નથી.',
-'userexists' => 'દાખલ કરેલું સભ્ય નુ નામ વપરાશમાં છે.</br>
+'userexists' => 'દાખલ કરેલું સભ્યનામ વપરાશમાં છે.</br>
 કૃપયા અન્ય નામ પસંદ કરો.',
 'loginerror' => 'પ્રવેશ ત્રુટિ',
 'createacct-error' => 'ખાતું બનાવવામાં ક્ષતિ આવી',
@@ -1215,7 +1214,6 @@ $1",
 'searchmenu-legend' => 'શોધ વિકલ્પો',
 'searchmenu-exists' => "''' આ વિકિ પર  \"[[:\$1]]\" નામે પાનું પહેલેથી અસ્તિત્વમાં છે.'''",
 'searchmenu-new' => "'''આ વિકિ પર \"[[:\$1]]\" નામે પાનું બનાવો!'''",
-'searchhelp-url' => 'Help:સૂચિ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|આ પૂર્વાક્ષર વાળા પાનાં જુઓ]]',
 'searchprofile-articles' => 'લેખનું પાનું',
 'searchprofile-project' => 'મદદ અને યોજના પાનું',
@@ -1339,7 +1337,7 @@ $1",
 'prefs-emailconfirm-label' => 'ઇ-મેલ પુષ્ટી',
 'prefs-textboxsize' => 'ફેરફાર ફલકનું માપ',
 'youremail' => 'ઇ-મેઇલ:',
-'username' => '{{GENDER:$1|સભ્ય નામ}}:',
+'username' => '{{GENDER:$1|સભ્યનામ}}:',
 'uid' => '{{GENDER:$1|સભ્ય}} ઓળખ:',
 'prefs-memberingroups' => '{{PLURAL:$1|સમુહ|સમુહો}}ના {{GENDER:$2|સભ્ય}}:',
 'prefs-registration' => 'નોંધણી સમય',
@@ -2035,7 +2033,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'usereditcount' => '$1 {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
 'usercreated' => '$1 તારીખે $2 વાગ્યે {{GENDER:$3|બનાવ્યું}}',
 'newpages' => 'નવાં પાનાં',
-'newpages-username' => 'સભ્ય નામ:',
+'newpages-username' => 'સભ્યનામ:',
 'ancientpages' => 'સૌથી જૂનાં પાનાં',
 'move' => 'નામ બદલો',
 'movethispage' => 'આ પાનું ખસેડો',
index bc75fe0..a0b7895 100644 (file)
@@ -251,7 +251,6 @@ $messages = array(
 'disclaimers' => 'Jiooldeyderyn',
 'disclaimerpage' => 'Project:Obbalys cadjin',
 'edithelp' => 'Cooney reaghee',
-'edithelppage' => 'Help:Reaghey',
 'helppage' => 'Help:Cummal',
 'mainpage' => 'Ard-ghuillag',
 'mainpage-description' => 'Ard-ghuillag',
@@ -574,7 +573,6 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
 'prevn' => '{{PLURAL:$1|$1}} roish shoh',
 'nextn' => 'nah {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Jeeagh er ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Cummal',
 'searchprofile-project' => 'Duillagyn Coonee as Shalee',
 'search-result-size' => "$1 ({{PLURAL:$2|1 fockle|$2 'ockle|$2 'ockle|$2 focklyn}})",
 'search-result-score' => 'Bentynys: $1%',
index adbc5cc..78be061 100644 (file)
@@ -132,12 +132,12 @@ $messages = array(
 'category-empty' => "''邇隻分類目前還吂包含頁面或者媒體文件。''",
 'hidden-categories' => '$1隻隱藏分類',
 'hidden-category-category' => '隱藏分類',
-'category-subcat-count' => '{{PLURAL:$2|é\82\87é\9a»å\88\86é¡\9eæ\9c\89以ä¸\8bä¸\80é\9a»å­\90å\88\86é¡\9eã\80\82\82\87é\9a»å\88\86é¡\9eæ\9c\89$2é\9a»å­\90å\88\86é¡\9eï¼\8c以ä¸\8b列出矣$1隻。}}',
-'category-subcat-count-limited' => 'é\82\87é\9a»å\88\86é¡\9eæ\9c\89以ä¸\8b $1 隻子分類。',
-'category-article-count' => '{{PLURAL:$2|æ\9c¬å\88\86é¡\9eæ\9c\89以ä¸\8bä¸\80é\9a»é \81é\9d¢ã\80\82\9c¬å\88\86é¡\9eæ\9c\89$2é\9a»é \81é\9d¢ï¼\8c以ä¸\8b列出矣$1隻。}}',
-'category-article-count-limited' => 'é\82\87é\9a»å\88\86é¡\9eæ\9c\89以ä¸\8b $1 隻頁面。',
-'category-file-count' => '{{PLURAL:$2|é\82\87é\9a»å\88\86é¡\9eæ\9c\89以ä¸\8bä¸\80é\9a»æ\96\87件ã\80\82\82\87é\9a»å\88\86é¡\9eæ\9c\89$2é\9a»æ\96\87件ï¼\8c以ä¸\8b列出矣$1隻。}}',
-'category-file-count-limited' => '邇隻分類有 $1 隻文件。',
+'category-subcat-count' => '{{PLURAL:$2|é\82\87é\9a»å\88\86é¡\9eæ\9c\89ä¸\8bè\83\8cä¸\80é\9a»å­\90å\88\86é¡\9eã\80\82\82\87é\9a»å\88\86é¡\9eæ\9c\89$2é\9a»å­\90å\88\86é¡\9eï¼\8cä¸\8bè\83\8c列出矣$1隻。}}',
+'category-subcat-count-limited' => 'é\82\87é\9a»å\88\86é¡\9eæ\9c\89ä¸\8bè\83\8c$1隻子分類。',
+'category-article-count' => '{{PLURAL:$2|æ\9c¬å\88\86é¡\9eæ\9c\89ä¸\8bè\83\8cä¸\80é\9a»é \81é\9d¢ã\80\82\9c¬å\88\86é¡\9eæ\9c\89$2é\9a»é \81é\9d¢ï¼\8cä¸\8bè\83\8c列出矣$1隻。}}',
+'category-article-count-limited' => 'é\82\87é\9a»å\88\86é¡\9eæ\9c\89ä¸\8bè\83\8c$1隻頁面。',
+'category-file-count' => '{{PLURAL:$2|é\82\87é\9a»å\88\86é¡\9eæ\9c\89ä¸\8bè\83\8cä¸\80é\9a»æ\96\87件ã\80\82\82\87é\9a»å\88\86é¡\9eæ\9c\89$2é\9a»æ\96\87件ï¼\8cä¸\8bè\83\8c列出矣$1隻。}}',
+'category-file-count-limited' => '邇隻分類有$1隻文件。',
 'listingcontinuesabbrev' => '續',
 'index-category' => '既索引嘅頁面',
 'noindex-category' => '還無索引嘅頁面',
@@ -255,7 +255,6 @@ $1',
 'disclaimers' => '免責聲明',
 'disclaimerpage' => 'Project:一般免責聲明',
 'edithelp' => '編寫幫手',
-'edithelppage' => 'Help:編寫',
 'helppage' => 'Help:目錄',
 'mainpage' => '頭頁',
 'mainpage-description' => '頭頁',
@@ -479,7 +478,7 @@ $2',
 'createacct-benefit-body1' => '$1次編寫',
 'createacct-benefit-body2' => '$1頁',
 'createacct-benefit-body3' => '近期$1隻貢獻人',
-'badretype' => '汝所撳入嘅密碼並相同',
+'badretype' => '汝所撳入嘅密碼並相同',
 'userexists' => '汝所填入嘅用戶名稱已經存在。
 請另選一隻名稱。',
 'loginerror' => '登入差錯',
@@ -497,12 +496,12 @@ $2',
 檢查汝嘅拼寫,或者用下面嘅表格[[Special:UserLogin/signup|建立一隻新賬號]]。',
 'nosuchusershort' => '無有喊做“$1”嘅用戶。請檢查汝輸入嘅文字係毋係有差錯。',
 'nouserspecified' => '汝愛指定一隻用戶名。',
-'login-userblocked' => '邇隻用戶已封鎖。毋做得登入。',
+'login-userblocked' => '邇隻用戶已封鎖。毋做得登入。',
 'wrongpassword' => '汝輸入嘅密碼有錯,請再試一擺。',
-'wrongpasswordempty' => '還輸入密碼!請重試。',
+'wrongpasswordempty' => '還輸入密碼!請重試。',
 'passwordtooshort' => '汝嘅密碼毋得少過$1隻字符。',
 'password-name-match' => '汝嘅密碼必須撈汝嘅用戶名毋相同。',
-'password-login-forbidden' => '邇隻用戶名稱及密碼嘅使用係禁止嘅。',
+'password-login-forbidden' => '邇隻用戶名稱及密碼嘅使用係禁止嘅。',
 'mailmypassword' => '用電郵寄新密碼分亻厓',
 'passwordremindertitle' => '{{SITENAME}}嘅新臨時密碼',
 'passwordremindertext' => '有人(可能係汝本人,來自IP地址$1)已請求{{SITENAME}}嘅新密碼 ($4)。
@@ -510,7 +509,7 @@ $2',
 係話邇隻動作係汝所指示嘅,汝就愛立即登入並選擇一隻新嘅密碼。
 汝嘅臨時密碼將於{{PLURAL:$5|一|$5}}日之內過期。
 
¦\82æ\9e\9c係其他人發出邇隻請求,或者汝已經回想起汝嘅密碼,故所毋準備改變其,
\81\87使係其他人發出邇隻請求,或者汝已經回想起汝嘅密碼,故所毋準備改變其,
 汝可以忽略略邇條消息並且繼續使用汝嘅舊密碼。',
 'noemail' => '用戶“$1”無登記電子郵件地址。',
 'noemailcreate' => '汝愛提供一隻有效嘅電子郵件地址。',
@@ -859,7 +858,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
 'searchmenu-exists' => "'''在邇隻wiki上已經有一頁喊做“[[:$1]]”。'''",
 'searchmenu-new' => "'''在本wiki上建立邇隻頁面“[[:$1]]”!'''",
-'searchhelp-url' => 'Help:目錄',
 'searchprofile-articles' => '內容頁面',
 'searchprofile-project' => '幫助撈計劃頁面',
 'searchprofile-images' => '多媒體',
@@ -1387,74 +1385,73 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'protectedarticle' => '已保護“[[$1]]”',
 'modifiedarticleprotection' => '已經更改“[[$1]]”嘅保護等級',
 'unprotectedarticle' => 'yí-kîn kié-chhù pó-fu "[[$1]]"',
-'protect-title' => 'Chang-chhai pó-fu "$1"',
-'prot_1movedto2' => '[[$1]] yì-thung to [[$2]]',
-'protect-legend' => 'Khok-ngin pó-fu',
-'protectcomment' => 'Ngièn-yîn:',
-'protectexpiry' => 'Chûng-chṳ́ sṳ̀-kiên',
-'protect_expiry_invalid' => 'Sû-ngi̍p ke chûng-chṳ́ sṳ̀-kiên mò-háu.',
-'protect_expiry_old' => 'Chûng-chṳ́ sṳ̀-kiên yí-kîn ko-hi.',
-'protect-text' => "Ngì khó-yî chhai liá-piên chhùng-siû tui vùn-chông '''$1''' ke pó-fu kip-phe̍t.",
-'protect-locked-blocked' => "Ngì put-nèn chhai pûn chhà-fûng sṳ̀ kiên-kói pó-fu khi̍p-phe̍t. Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khi̍p-phe̍t:",
-'protect-locked-dblock' => "Chhai chṳ̂-liau-khu só-thin sṳ̀ mò-fap kiên-kói pó-fu khi̍p-phe̍t.
-Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khi̍p-phe̍t:",
-'protect-locked-access' => "Ngì-ke chong-fu khièn-han put-nèn kói-chho pó-fu khi̍p-phe̍t, Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khi̍p-phe̍t:",
-'protect-cascadeon' => 'Yî-ha ke {{PLURAL:$1|yit-ke|tô-ke}} hong-mien pâu-hàm pún vùn-chông ke thùng-sṳ̀, khí-thung liáu lièn-só pó-fu, só-yî pún vùn-chông muk-chhièn ya-he pûn pó-fu, vù-nèn phiên-siá. Ngì hí-khó sat-thin pún hong-mien ke pó-fu khi̍p-phe̍t, than liá put tui lièn-só pó-fu yû yáng-hióng.',
-'protect-default' => 'Yùng-chún só-yû yung-fu',
+'protect-title' => '更改“$1”嘅保護等級',
+'prot_1movedto2' => '[[$1]]移動到[[$2]]',
+'protect-legend' => '確認保護',
+'protectcomment' => '理由:',
+'protectexpiry' => '到期:',
+'protect_expiry_invalid' => '輸入嘅終止時間無效。',
+'protect_expiry_old' => '終止時間既經過去。',
+'protect-text' => "汝做得在邇位瀏覽同修改對頁面'''$1'''嘅保護級別。",
+'protect-locked-blocked' => "汝做毋得在分查封時更改保護級別。
+下背係'''$1'''今下嘅保護級別:",
+'protect-locked-dblock' => "在數據庫鎖定時無法更改保護級別。
+下背係'''$1'''今下嘅保護級別:",
+'protect-locked-access' => "汝嘅賬戶權限做毋得修改保護級別。
+下背係'''$1'''今下嘅保護級別:",
+'protect-cascadeon' => '下背嘅{{PLURAL:$1|一個|多個}}頁面包含緊本頁面嘅同時,啟動矣連鎖保護,故所本頁面目前也分保護,還吂做得編寫。汝做得設定本頁面嘅保護級別,毋過邇並不會對連鎖保護有所影響。',
+'protect-default' => '容許所有用戶',
 'protect-fallback' => 'Sî-yeu "$1" ke hí-khó',
 'protect-level-autoconfirmed' => 'Kim-chṳ́  sîn-ke lâu hàn-mò chu-chhak ke yung-fu',
 'protect-level-sysop' => 'Kón-lî-yèn chôn-cho',
-'protect-summary-cascade' => 'Lièn-só',
-'protect-expiring' => 'Chûng-chṳ́ chhai-yî $1 (UTC)',
-'protect-cascade' => 'Lièn-só pó-fu - pún-chông pâu-hàm ke só-yû hong-mien kiûn yit-phîn pó-fu.',
+'protect-summary-cascade' => '連鎖',
+'protect-expiring' => '終止於$1(UTC)',
+'protect-cascade' => '保護本頁中包含嘅頁面(連鎖保護)',
 'protect-cantedit' => '汝無法更改邇隻頁面嘅保護等級,因為汝無權限去編寫其。',
-'protect-expiry-options' => '1 séu-sṳ̀:1 hour, 1 thiên:1 day,1 chû:1 week,2 chû:2 weeks,1-ke ngie̍t:1 month,3-ke ngie̍t:3 months,6-ke ngie̍t:6 months,1-ngièn:1 year, yún-kiú:infinite',
-'restriction-type' => 'Khièn-han:',
-'restriction-level' => 'Han-chṳ khi̍p-phe̍t:',
-'minimum-size' => 'Chui-séu thai-séu',
-'maximum-size' => 'Chui-thai thai-séu:',
-'pagesize' => '(Vi-ngièn-chû)',
+'protect-expiry-options' => '1小時:1 hour,1天:1 day,1周:1 week,2周:2 weeks,1隻月:1 month,3隻月:3 months,6隻月:6 months,1年:1 year,永久:infinite',
+'restriction-type' => '權限:',
+'restriction-level' => '限制級別:',
+'minimum-size' => '最細大細',
+'maximum-size' => '最大大細:',
+'pagesize' => '(字節)',
 
 # Restrictions (nouns)
 'restriction-edit' => '編寫',
-'restriction-move' => 'Yì-thung',
-'restriction-create' => 'Tshóng-kien',
+'restriction-move' => '移動',
+'restriction-create' => '建立',
 
 # Restriction levels
-'restriction-level-sysop' => 'Chhiòn pó-fu',
-'restriction-level-autoconfirmed' => 'Pan pó-fu',
-'restriction-level-all' => 'Ngim-hò khi̍p-phe̍t',
+'restriction-level-sysop' => '全保護',
+'restriction-level-autoconfirmed' => '半保護',
+'restriction-level-all' => '任何級別',
 
 # Undelete
-'undelete' => 'Fî-fu̍k pûn chhù-hi vùn-chông',
-'undeletepage' => 'Fî-fu̍k pûn chhù-thet vùn-chông',
-'viewdeletedpage' => 'Kiám-sṳ pûn chhù-thet ke vùn-chông',
+'undelete' => '恢復分刪頁面',
+'undeletepage' => '瀏覽及恢復分刪頁面',
+'viewdeletedpage' => '查看分刪除嘅頁面',
 'undeletepagetext' => 'Yî-ha vùn-chông yí-kîn pûn chhù-thet, than yî-yèn chhai tóng-on chûng pin khó-yî pûn fî-fu̍k. Tóng-on-khu khó-nèn pûn thin-sṳ̀ chhîn-lî.',
 'undeleteextrahelp' => "Fî-fu̍k cháng-ke vùn-chông sṳ̀, chhiáng chhîn-chhù só-yû fu̍k-sién khiông-heu on '''''fî-fu̍k'''''.  Fî-fu̍k thi̍t-thin pán-pún sṳ̀, chhiáng sién-chet siông-yin pán-pún chhièn-ke fu̍k-sién khiông-heu on '''''fî-fu̍k'''''. On '''''chhûng-sat''''' chiông chhîn-chhù phìn-lun nui-yùng khi̍p só-yû fu̍k-sién khiông.",
-'undeleterevisions' => '$1 pán-pún chhùn-tong',
+'undeleterevisions' => '$1版本存檔',
 'undeletehistory' => 'Kó-yèn ngì fî-fu̍k liáu ke-vùn-chông, só-yû pán-pún chiông-voi pûn fî-fu̍k to siû-thin li̍t-sṳ́ chûng. Kó-yèn pún-chông chhù-hi heu yû yit-ke thùng-miàng ke sîn vùn-chông kien-li̍p, pûn fî-fu̍k ke pán-pún chiông-voi chhṳ̂n-vi kha-sîn ke li̍t-sṳ́, sîn vùn-chông ke tong-chhièn pán-pún chiông mò-fap pûn chhṳ-thung fu̍k-ngièn.',
 'undeleterevdel' => 'Kó-yèn pá chui-sîn siû-thin phu-fun chhù-thet, fán chhù-hi phien mò-fap chin-hàng. Kó-yèn ngi-to liá-chúng chhìn-khóng, ngì pit-sî fán-sién fe̍t-chá fán-chhòng chui-sîn yí-kîn chhù-hi ke siû-thin. Tui-yî ngì mò-yû khièn-han hi kiám-sṳ ke siû-thin he mò-fap fî-fu̍k ke.',
-'undeletehistorynoadmin' => 'Liá-ke vùn-chông yí-kîn pûn chhù-thet, chhù-hi ngièn-yîn hién-sṳ chhai hâ-fông phiên-si̍p chak-yeu chûng.
-Pûn chhù-thet chhièn ke só-yû siû-thin pán-pún, lièn-thùng chhù-thet chhièn kung-hien yung-fu tén-tén se-chiet chṳ́-yû kón-lî-yèn khó-yî khon-kien.',
+'undeletehistorynoadmin' => '邇隻頁面已經分刪除,刪除原因顯示在下方編寫摘要肚。分刪除前嘅所有修訂版本,連同刪除前貢獻用戶等等細節單淨管理員做得看見。',
 'undelete-revision' => 'Chhù-thet pán-pún $1 chhṳ $2:',
-'undeleterevision-missing' => 'Chhṳ́ pán-pún ke nui-yùng put chṳn-khok fe̍t-chá yí-kîn yì-sṳt. Khó-nèn lièn-kiet chho-ngu, pûn yì-chhù fe̍t-he yí-kîn pûn fî-fu̍k.',
-'undeletebtn' => 'Fî-fu̍k',
+'undeleterevision-missing' => '無效或者丟失嘅修訂版本。汝可能使用矣有差錯嘅鏈接,或者本修訂版本既經分從存檔肚恢復或移除。',
+'undeletebtn' => '恢復',
 'undeletelink' => '查看/恢復',
 'undeleteviewlink' => '查看',
-'undeletereset' => 'Chhùng-sat',
+'undeletereset' => '重設',
 'undeletecomment' => 'Ngièn-yîn:',
-'undeletedrevisions' => '$1-ke siû-thin pán-pún yí-kîn fî-fu̍k',
-'undeletedrevisions-files' => '$1-ke pán-pún lâu $2-ke vùn-khien pûn fî-fu̍k',
-'undeletedfiles' => '$1-ke vùn-khien pûn fî-fu̍k',
+'undeletedrevisions' => '$1隻修訂版本已經恢復',
+'undeletedrevisions-files' => '$1隻版本撈$2隻文件分恢復',
+'undeletedfiles' => '$1隻文件分恢復',
 'cannotundelete' => 'Fî-fu̍k sṳt-phai; khó-nèn chṳ̂-chhièn yí-kîn pûn khì-thâ-ngìn fî-fu̍k.',
-'undeletedpage' => "'''$1 yí-kîn pûn fî-fu̍k '''
-
-Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut chhù-thet khi̍p fî-fu̍k ki-liu̍k.",
-'undelete-header' => 'Kó-yèn yeu chhà-chhut chui-khiûn ke ki-liu̍k chhiáng chhâm-siòng [[Special:Log/delete|Chhù-thet ngit-ki]].',
-'undelete-search-box' => 'Chhìm-cháu yí-kîn chhù-hi vùn-chông',
-'undelete-search-prefix' => 'Hién-sṳ vùn-chông chhṳ:',
-'undelete-search-submit' => 'Chhìm-cháu',
-'undelete-no-results' => 'Chhù-thet ki-liu̍k lî mò-yû fù-ha̍p ke kiet-kó.',
+'undeletedpage' => "'''$1已經分恢復''' 請參考[[Special:Log/delete|刪除日誌]]來查詢刪除撈恢復記錄。",
+'undelete-header' => '假使愛查詢最近嘅記錄請參看[[Special:Log/delete|刪除日誌]]。',
+'undelete-search-box' => '搜尋已刪除頁面',
+'undelete-search-prefix' => '展示頁面自:',
+'undelete-search-submit' => '搜尋',
+'undelete-no-results' => '刪除記錄肚無符合嘅結果。',
 
 # Namespace form on various pages
 'namespace' => '名字空間:',
@@ -1489,7 +1486,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'whatlinkshere-page' => '頁面:',
 'linkshere' => '下背頁面鏈接到[[:$1]]:',
 'nolinkshere' => "無頁面鏈接到'''[[:$1]]'''。",
-'nolinkshere-ns' => 'Chhai só-sién ke miàng-sṳ khûng-kiên nui  mò-yû vùn-chông lièn-kiet to[[:$1]].',
+'nolinkshere-ns' => '在所選嘅名字空間肚無頁面連接到[[:$1]]。',
 'isredirect' => '重定向頁',
 'istemplate' => '包含',
 'isimage' => '文件鏈接',
@@ -1503,49 +1500,51 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'whatlinkshere-filters' => '過濾器',
 
 # Block/unblock
-'blockip' => 'chhà-fûng IP thi-tiám',
-'blockiptext' => 'Yung ha-mien ke péu-tân kim-chṳ́ lòi-chhṳ mêu-yit thi̍t-thin IP thi-tiám ke kiên-kói hí-khó-khièn. Chṳ́-yû chhai-vi fòng-chṳ́ pho-fái, khi̍p fù-ha̍p [[{{MediaWiki:Policy-url}}|Sú-chet]] ke chhìn-khóng hâ chhòi khó chhái-chhí chhṳ́ hàng-thung. Chhiáng chhai ha-mien sû-ngi̍p yit-ke khí-thí ke lî-yù (chhiong-he yîn-sut yit-ke pûn-ngìn pho-fái ke hong-mien).',
-'ipadressorusername' => 'IP thi-tiám fe̍t-he yung-fu-miàng',
-'ipbexpiry' => 'Khì-han:',
-'ipbreason' => 'Ngièn-yîn:',
-'ipbreasonotherlist' => 'Khì-thâ ngièn-yîn',
-'ipbreason-dropdown' => '*Yit-pân ke fûng-kim lî-yù
-** Su-chhṳ chen-kâ put-sṳ̍t chṳ̂-liau
-** Chhù-thet vùn-chông nui-yùng
-** Ngoi-phu lièn-kiet kóng-ko
-** Chhai vùn-chông chûng chen-kâ mò yi-ngi vùn-sṳ
-** Mò-lî ke hàng-vì, kûng-kit/sâu-yéu phe̍t-ngìn
-** Lam-yung tô-ke chong-ho
-** Put-nèn chiap-su ke yung-fu-miàng',
-'ipbcreateaccount' => 'Chú-chṳ́ chhóng-li̍p sîn chong-ho',
-'ipbenableautoblock' => 'Chhṳ-thung chhà-fûng ke-yung-fu sṳ́-yung-ko ke IP thi-tiám',
-'ipbsubmit' => 'Chhà-fûng ke-yung-fu',
+'blockip' => '封禁用戶',
+'blockiptext' => '用下背嘅表單來禁止來自某一特定IP地址嘅修改許可權。
+單淨在為防止破壞,撈符合[[{{MediaWiki:Policy-url}}|守則]]嘅情況下正做得採取邇行動。
+請在下背輸入一隻具體嘅理由(例如引述一隻分破壞嘅頁面)。',
+'ipadressorusername' => 'IP地址或用戶名:',
+'ipbexpiry' => '期限:',
+'ipbreason' => '原因:',
+'ipbreasonotherlist' => '其他理由',
+'ipbreason-dropdown' => '*一般嘅封禁理由
+** 多次加入虛假資料
+** 刪除頁面內容
+** 外部鏈接廣告
+** 在頁面肚增加無意義文字
+** 無禮嘅行為、攻擊/騷擾別儕
+** 濫用多隻賬號
+** 做毋得接受嘅用戶名',
+'ipbcreateaccount' => '阻止創建新賬號',
+'ipbenableautoblock' => '自動查封邇用戶最後所用嘅IP地址,撈後來試圖編寫所用嘅所有地址',
+'ipbsubmit' => '查封邇用戶',
 'ipbother' => '其它時間:',
 'ipboptions' => '2小時:2 hours,1日:1 day,3日:3 days,1星期:1 week,2星期:2 weeks,1隻月:1 month,3隻月:3 months,6隻月:6 months,1年:1 year,無限期:infinite',
-'ipbotheroption' => 'khì-thâ',
-'ipbotherreason' => 'Khì-thâ lî-yù:',
+'ipbotheroption' => '其他',
+'ipbotherreason' => '其他/附加理由:',
 'ipbhidename' => 'Chhai chhà-fûng ngit-ki, fa̍t-chhiok chhà-fûng lie̍t-péu yî-khi̍p yung-fu lie̍t-péu chûng yún-chhòng yung-fu-miàng.',
-'badipaddress' => 'IP-ke thi-tiám mò chṳn-khok.',
-'blockipsuccesssub' => 'chhà-fûng sṳ̀n-kûng',
+'badipaddress' => '無效IP地址',
+'blockipsuccesssub' => '查封成功',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] yí-kîn pûn chhà-fûng. <br />Chhâm-siòng [[Special:BlockList|pûn-fûng IP thi-tiám lie̍t-péu]] yî fu̍k-sṳ́m chhà-fûng.',
-'ipb-edit-dropdown' => 'Phiên-siá chhà-fûng ngièn-yîn',
-'ipb-unblock-addr' => 'Kié-chhù fûng-kim $1',
-'ipb-unblock' => 'Kié-chhù kim-fûng yung-fu miàng fe̍t-chá IP thi-tiám',
-'ipb-blocklist' => 'Kiám-sṳ fûng-kim lie̍t-péu',
-'unblockip' => 'Kié-chhù kim-fûng IP thi-tiám',
-'unblockiptext' => 'Yung ha-mien ke péu-tân lòi fî-fu̍k siên-chhièn pûn kim-fûng ke IP thi-tiám ke siá-sû-khièn.',
+'ipb-edit-dropdown' => '編寫查封原因',
+'ipb-unblock-addr' => '解封$1',
+'ipb-unblock' => '解封用戶名或IP地址',
+'ipb-blocklist' => '查看今下嘅封禁',
+'unblockip' => '解封用戶',
+'unblockiptext' => '用下背嘅表單來恢復先前分查封嘅IP地址或用戶嘅寫權限。',
 'ipusubmit' => 'Kié-chhù kim-fûng',
 'unblocked' => '[[User:$1|$1]]已經分解封。',
-'unblocked-id' => 'Fûng-kim $1 yí-kîn pûn yì-chhù',
+'unblocked-id' => '封禁$1已經分移除',
 'ipblocklist' => '分封用戶列表',
-'ipblocklist-submit' => 'Chhìm-cháu',
-'infiniteblock' => 'yún-kiú',
+'ipblocklist-submit' => '搜尋',
+'infiniteblock' => '無限期',
 'expiringblock' => '$1 $2 to-khì',
-'anononlyblock' => 'Han-chṳ ngia̍k-miàng yung-fu.',
-'noautoblockblock' => 'Kim-yung chhṳ-thung chhà-fûng',
-'createaccountblock' => 'Kim-chṳ́ chhóng-kien chong-ho',
-'ipblocklist-empty' => 'Chhà-fûng lie̍t-péu he khûng-hî.',
-'ipblocklist-no-results' => 'Só yêu-khiù ke IP thi-tiám/yung-fu-miàng mò-yû pûn chhà-fûng.',
+'anononlyblock' => '單淨匿名用戶',
+'noautoblockblock' => '禁用自動查封',
+'createaccountblock' => '禁止創建賬戶',
+'ipblocklist-empty' => '查封列表係空嘅。',
+'ipblocklist-no-results' => '所請求嘅IP地址/用戶名無分查封。',
 'blocklink' => '查封',
 'unblocklink' => '解封',
 'change-blocklink' => '更改封禁',
@@ -1555,17 +1554,17 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
 'blocklogentry' => '封禁[[$1]],到期時間係$2$3',
 'blocklogtext' => 'Liá-he kôan-yî yung-fu fûng-kim lâu kié-chhù fûng-kim chhâu-chok ke ki-liu̍k. Pûn chhṳ-thung fûng-kim ke IP thi-tiám mò-yû lie̍t-chhut. Chhiáng chhâm-kháu [[Special:BlockList|Pûn chhà-fûng ke IP thi-tiám lâu yung-fu lie̍t-péu]].',
 'unblocklogentry' => '$1已分解封',
-'block-log-flags-anononly' => 'Han-chṳ ngia̍k-miàng ke yung-fu',
+'block-log-flags-anononly' => '單淨匿名用戶',
 'block-log-flags-nocreate' => '帳號建立已禁',
-'block-log-flags-noautoblock' => 'Thìn-chṳ́ yung chhṳ-thung fûng-kim',
-'range_block_disabled' => 'Chṳ́-yû kón-lî-yèn chhòi-nèn kien-chho kim-chṳ́ chhà-fûng ke fam-vì.',
+'block-log-flags-noautoblock' => '禁用自動查封',
+'range_block_disabled' => '單淨管理員正做得創建禁止查封嘅範圍。',
 'ipb_expiry_invalid' => '無效嘅終止時間。',
 'ipb_already_blocked' => 'Yí-kîn fûng-só "$1"',
-'ipb_cant_unblock' => 'Chho-ngu: Mò-yû fat-hien Block ID $1. Ke-IP khó-nèn yí-kîn pûn kié-fûng.',
-'ip_range_invalid' => 'Mò-háu ke IP fam-vì.',
-'proxyblocker' => 'Thoi-lî fûng-só hi-khí',
-'proxyblockreason' => 'Ngì-ke IP thi-tiám he yit-ke khôi-fong ke thoi-lî, kì yí-kîn pûn fûng-só. Chhiáng lièn-kiê Ngì-ke mióng-chi mióng-lu fu̍k-vu thì-kiûng-sông fe̍t-he kî-su̍t kî-yèn-chá pin lo-tî ke-ngiàm-chhung ke ôn-chhiòn mun-thì.',
-'proxyblocksuccess' => 'Vàn-sṳ̀n.',
+'ipb_cant_unblock' => '差錯: 尋毋到查封ID$1。可能已經解除封禁。',
+'ip_range_invalid' => '無效嘅IP範圍。',
+'proxyblocker' => '代理封鎖器',
+'proxyblockreason' => '汝嘅IP地址係一隻開放嘅代理,其已經分封鎖。請聯繫汝嘅網際網路服務提供商或技術支援者並講佢兜聽邇隻嚴重嘅安全問題。',
+'proxyblocksuccess' => '完成。',
 'sorbsreason' => 'Ngì-ke IP chhô-vi pûn DNSBL lie̍t-vi su̍k-yî khôi-fong thoi-lî fu̍k-vu-khí.',
 'sorbs_create_account_reason' => 'Ngì-ke IP chhô-vi pûn DNSBL lie̍t-vi su̍k-yî khôi-fong thoi-lî fu̍k-vu-khí. Só-yî ngì mò-fap kien-li̍p chong-ho.',
 
@@ -1619,13 +1618,12 @@ chhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn
 'movetalk' => 'Chhiáng thùng-sṳ̀ yì-thung tui-fa-chông',
 'movelogpage' => '移動日誌',
 'movelogpagetext' => 'Yî-ha he yí-kîn yì-thung ke vùn-chông chhîn-tân.',
-'movereason' => 'Ngièn-yîn:',
+'movereason' => '原因:',
 'revertmove' => '恢復',
-'delete_and_move' => 'Chhù-chhîn lâu yì-thung',
-'delete_and_move_text' => '==Sî-yeu chhù-thet==
+'delete_and_move' => '刪除並移動',
+'delete_and_move_text' => '==愛刪除==
 
-Muk-phêu vùn-chông "[[:$1]]" yí-kîn chhùn-chhai.
-Ngì khok-ngin sî-yeu chhù-thet ngièn hong-mien khi̍p chin-hàng yì-thung mâ?',
+目標頁面"[[:$1]]"已經存在。汝確認愛刪除原頁面並進行移動係無?',
 'delete_and_move_confirm' => '著,刪除邇頁',
 'delete_and_move_reason' => 'Chhù-thet yî-phien yì-thung',
 'selfmove' => 'Ngièn-sṳ́ phêu-thì khi̍p muk-phêu phêu-thì siông-thùng, vù-nèn yì-thung yit-chông fu̍k-koi pún-sṳ̂n.',
index d3f835d..cf3e1f6 100644 (file)
@@ -262,7 +262,6 @@ $messages = array(
 'disclaimers' => 'Palapala hoʻokuʻu kuleana',
 'disclaimerpage' => 'Project:Palapala hoʻokuʻu kuleana',
 'edithelp' => 'Kōkua me ka ho‘ololi ‘ana',
-'edithelppage' => 'Help:Ho‘ololi',
 'helppage' => 'Help:Papa kuhikuhi',
 'mainpage' => "Kahua pa'a",
 'mainpage-description' => 'Ka papa kinohi',
@@ -464,7 +463,6 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 'prevn' => '{{PLURAL:$1|$1}} ma mua',
 'nextn' => '{{PLURAL:$1|$1}} ma hope',
 'viewprevnext' => 'Nānā i nā ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Papa kuhikuhi',
 'search-result-size' => '$1 ({{PLURAL:$2|1 huaʻōlelo|$2 huaʻōlelo}})',
 'search-section' => '(māhele $1)',
 'search-suggest' => 'ʻO kēia paha kou manaʻo: $1',
index c425168..7308c49 100644 (file)
@@ -556,6 +556,7 @@ $messages = array(
 'create-this-page' => 'יצירת דף זה',
 'delete' => 'מחיקה',
 'deletethispage' => 'מחיקת דף זה',
+'undeletethispage' => 'שחזור דף זה',
 'undelete_short' => 'שחזור {{PLURAL:$1|עריכה אחת|$1 עריכות}}',
 'viewdeleted_short' => 'צפייה ב{{PLURAL:$1|עריכה מחוקה אחת|־$1 עריכות מחוקות}}',
 'protect' => 'הגנה',
@@ -609,7 +610,6 @@ $1',
 'disclaimers' => 'הבהרה משפטית',
 'disclaimerpage' => 'Project:הבהרה משפטית',
 'edithelp' => 'עזרה לעריכה',
-'edithelppage' => 'Help:עריכת דף',
 'helppage' => 'Help:תפריט ראשי',
 'mainpage' => 'עמוד ראשי',
 'mainpage-description' => 'עמוד ראשי',
@@ -759,6 +759,8 @@ $2',
 'namespaceprotected' => "אינכם מורשים לערוך דפים במרחב השם '''$1'''.",
 'customcssprotected' => 'אינכם מורשים לערוך דף CSS זה, כיוון שהוא כולל את ההגדרות האישיות של משתמש אחר.',
 'customjsprotected' => 'אינכם מורשים לערוך דף JavaScript זה, כיוון שהוא כולל את ההגדרות האישיות של משתמש אחר.',
+'mycustomcssprotected' => 'אינכם מורשים לערוך דף CSS זה.',
+'mycustomjsprotected' => 'אינכם מורשים לערוך דף JavaScript זה.',
 'ns-specialprotected' => 'לא ניתן לערוך דפים מיוחדים.',
 'titleprotected' => 'לא ניתן ליצור דף זה, כיוון שהמשתמש [[User:$1|$1]] הגן עליו מפני יצירה.
 הסיבה שניתנה לכך היא "$2".',
@@ -897,7 +899,7 @@ $2',
 'cannotchangeemail' => 'לא ניתן לשנות את כתובות הדוא"ל של חשבונות באתר ויקי זה.',
 'emaildisabled' => 'אתר זה לא יכול לשלוח דואר אלקטרוני.',
 'accountcreated' => 'החשבון נוצר',
-'accountcreatedtext' => 'חשבון המשתמש $1 נוצר.',
+'accountcreatedtext' => 'חשבון המשתמש [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|שיחה]]) נוצר.',
 'createaccount-title' => 'יצירת חשבון ב{{grammar:תחילית|{{SITENAME}}}}',
 'createaccount-text' => 'מישהו יצר חשבון בשם $2 ב{{grammar:תחילית|{{SITENAME}}}} ($4), והסיסמה הזמנית של החשבון היא "$3". עליכם להיכנס ולשנות עכשיו את הסיסמה.
 
@@ -1427,7 +1429,6 @@ $1",
 'searchmenu-legend' => 'אפשרויות חיפוש',
 'searchmenu-exists' => "'''קיים דף בשם \"[[:\$1]]\" באתר זה.'''",
 'searchmenu-new' => "'''יצירת הדף \"[[:\$1]]\" באתר זה.'''",
-'searchhelp-url' => 'Help:תפריט ראשי',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|מציאת דפים עם קידומת זו]]',
 'searchprofile-articles' => 'דפי תוכן',
 'searchprofile-project' => 'עזרה ודפי המיזם',
@@ -1617,6 +1618,7 @@ $1",
 'userrights-changeable-col' => 'קבוצות שבאפשרותכם לשנות',
 'userrights-unchangeable-col' => 'קבוצות שאין באפשרותכם לשנות',
 'userrights-conflict' => 'התנגשות הרשאות משתמש! אנא בצעו את השינויים שלכם שוב.',
+'userrights-removed-self' => 'הסרת בהצלחה את הרשאות המשתמש שלך. לכן אין לך כעת אפשרות לגשת לדף זה.',
 
 # Groups
 'group' => 'קבוצה:',
@@ -1687,6 +1689,8 @@ $1",
 'right-editusercssjs' => 'עריכת דפי CSS ו־JavaScript של משתמשים אחרים',
 'right-editusercss' => 'עריכת דפי CSS של משתמשים אחרים',
 'right-edituserjs' => 'עריכת דפי JavaScript של משתמשים אחרים',
+'right-editmyusercss' => 'עריכת דפי CSS של עצמך',
+'right-editmyuserjs' => 'עריכת דפי JavaScript של עצמך',
 'right-rollback' => 'שחזור מהיר של עריכות המשתמש האחרון שערך דף מסוים',
 'right-markbotedits' => 'סימון עריכות משוחזרות כעריכות של בוט',
 'right-noratelimit' => 'עקיפת הגבלת קצב העריכות',
@@ -2692,7 +2696,7 @@ $1',
 'mycontris' => 'תרומות',
 'contribsub2' => 'עבור $1 ($2)',
 'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.',
-'uctop' => '(×\90×\97ר×\95×\9f)',
+'uctop' => '(× ×\95×\9b×\97×\99)',
 'month' => 'עד החודש:',
 'year' => 'עד השנה:',
 
index aeaf3c9..b3fbe47 100644 (file)
@@ -426,7 +426,6 @@ $1',
 'disclaimers' => 'अस्वीकरण',
 'disclaimerpage' => 'Project:साधारण अस्वीकरण',
 'edithelp' => 'सम्पादन सहायता',
-'edithelppage' => 'Help:संपादन',
 'helppage' => 'Help:सहायता',
 'mainpage' => 'मुख्य पृष्ठ',
 'mainpage-description' => 'मुख्य पृष्ठ',
@@ -717,10 +716,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'कूटशब्द रीसेट',
-'passwordreset-text' => 'अपने खाते के विवरण का एक ई-मेल अनुस्मारक प्राप्त करने के लिए इस फ़ॉर्म को पूरा करें।',
 'passwordreset-legend' => 'कूटशब्द रीसेट करें',
 'passwordreset-disabled' => 'कूटशब्द रीसेट करना इस विकी पर अक्षम है।',
-'passwordreset-pretext' => '{{PLURAL:$1||नीचे पूछे गए डेटा में से एक लिखें}}',
 'passwordreset-username' => 'सदस्यनाम:',
 'passwordreset-domain' => 'डोमेन:',
 'passwordreset-capture' => 'परिणामस्वरूप बना ई-मेल देखें?',
@@ -1191,7 +1188,6 @@ $1",
 'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इस विकि पर \"[[:\$1]]\" नाम का एक पृष्ठ है'''",
 'searchmenu-new' => "'''इस विकि पर \"[[:\$1]]\" नाम का पृष्ठ बनाएँ!'''",
-'searchhelp-url' => 'Help:सहायता',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|इस उपसर्ग वाले पृष्ठ देखें]]',
 'searchprofile-articles' => 'सामग्री पृष्ठ',
 'searchprofile-project' => 'सहायता और परियोजना पृष्ठ',
index b36a153..476bc1a 100644 (file)
@@ -274,7 +274,6 @@ $1',
 'disclaimers' => 'Jimmewari se chhutkaari',
 'disclaimerpage' => 'Project:Saadharan jimmewari nai lo',
 'edithelp' => 'Badlao pe madat',
-'edithelppage' => 'Help:Badle me',
 'helppage' => 'Help:Madat',
 'mainpage' => 'Pahila Panna',
 'mainpage-description' => 'Pahila Panna',
@@ -564,10 +563,8 @@ Sait aap password ke safalta se badal sia hoga nai to nawaa temporary password k
 
 # Special:PasswordReset
 'passwordreset' => 'Password ke badlo',
-'passwordreset-text' => 'Password ke reset kare ke khatir ii form ke bharo.',
 'passwordreset-legend' => 'Password ke badlo',
 'passwordreset-disabled' => 'II wiki me password ke badle ke ijaajat nai hae.',
-'passwordreset-pretext' => '{{PLURAL:$1||Niche ke ek data ke likho}}',
 'passwordreset-username' => 'Sadasya ke naam:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Banawa gais e-mail ke dekho',
@@ -1055,7 +1052,6 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 'searchmenu-legend' => 'Khoje ke option',
 'searchmenu-exists' => "'''Ii wiki me \"[[\$1]]\" naam ke panna hai'''",
 'searchmenu-new' => "'''Ii wiki me \"[[:\$1]]\" panna ke banao!'''",
-'searchhelp-url' => 'Help:Madat',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ii prefix ke panna ke browse karo]]',
 'searchprofile-articles' => 'Content panna',
 'searchprofile-project' => 'Madat aur Project panna',
index 28f3ee3..51edc67 100644 (file)
@@ -258,7 +258,6 @@ $1',
 'disclaimers' => 'Diskleymer',
 'disclaimerpage' => 'Project:Kabilogan nga diskleymer',
 'edithelp' => 'Bulig sa pag Ilis',
-'edithelppage' => 'Help:I-husto',
 'helppage' => 'Help:Mga Unod',
 'mainpage' => 'Mayor nga Panid',
 'mainpage-description' => 'Mayor nga Panid',
@@ -559,10 +558,8 @@ Mahimo nga madinalag-on mo nga nga gin-ilisan ang imo pasword ukon nagpangabay k
 
 # Special:PasswordReset
 'passwordreset' => 'Liwaton ang pasword',
-'passwordreset-text' => 'Taposon ang ini nga formas agod nga makabaton sang e-mail nga nagapahanumdom sang mga detalye sang imo akawnt.',
 'passwordreset-legend' => 'Liwaton ang pasword',
 'passwordreset-disabled' => 'Ang mga pagliwat sang pasword gin-untat sa sini nga wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Magbutang sang isa sang mga datos sa idalom}}',
 'passwordreset-username' => 'Ngalan sang Manog-gamit"',
 'passwordreset-domain' => 'Domeyn:',
 'passwordreset-capture' => 'Lantawon ang nagresuta nga e-mail?',
@@ -1063,7 +1060,6 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Mga pililian sa pagpangita',
 'searchmenu-exists' => "'''May yara sang panid nga ginhingalanan nga \"[[:\$1]]\" sa sini nga wiki.'''",
 'searchmenu-new' => "'''Gintuga ang panid nga \"[[:\$1]]\" sa sini nga wiki!'''",
-'searchhelp-url' => 'Help:Mga Unod',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Magbasa-basa sang mga panid gamit ang ini nga unpali]]',
 'searchprofile-articles' => 'Mga panid sang unod',
 'searchprofile-project' => 'Mga panid sang Bulig kag Proyekto',
index 7b884dd..b190e32 100644 (file)
  * @author Dalibor Bosits
  * @author Demicx
  * @author Dnik
+ * @author DzWiki
  * @author Ex13
  * @author Excaliboor
  * @author FriedrickMILBarbarossa
+ * @author Geitost
  * @author Herr Mlinka
  * @author Kaganer
  * @author Luka Krstulovic
@@ -554,7 +556,6 @@ $1',
 'disclaimers' => 'Odricanje od odgovornosti',
 'disclaimerpage' => 'Project:General_disclaimer',
 'edithelp' => 'Kako uređivati stranicu',
-'edithelppage' => 'Help:Kako_uređivati_stranicu',
 'helppage' => 'Help:Pomoć',
 'mainpage' => 'Glavna stranica',
 'mainpage-description' => 'Glavna stranica',
@@ -722,9 +723,17 @@ Neke se stranice mogu prikazivati kao da ste još uvijek prijavljeni, sve dok ne
 'welcomecreation-msg' => 'Vaš je suradnički račun otvoren.
 Ne zaboravite prilagoditi Vaše [[Special:Preferences|{{SITENAME}} postavke]].',
 'yourname' => 'Suradničko ime',
+'userlogin-yourname' => 'Suradničko ime',
+'userlogin-yourname-ph' => 'Unesite Vaše suradničko ime',
 'yourpassword' => 'Lozinka:',
+'userlogin-yourpassword' => 'Zaporka',
+'userlogin-yourpassword-ph' => 'Unesite Vašu zaporku',
+'createacct-yourpassword-ph' => 'Unesite zaporku',
 'yourpasswordagain' => 'Ponovno upišite lozinku',
+'createacct-yourpasswordagain-ph' => 'Unesite zaporku ponovno',
 'remembermypassword' => 'Zapamti moju lozinku na ovom računalu (najduže $1 {{PLURAL:$1|dan|dana}})',
+'userlogin-remembermypassword' => 'Zapamti me',
+'userlogin-signwithsecure' => 'Rabi sigurnu vezu',
 'securelogin-stick-https' => 'Ostani spojen na HTTPS nakon prijave',
 'yourdomainname' => 'Vaša domena',
 'password-change-forbidden' => 'Ne možete promjeniti zaporku na ovom projektu.',
@@ -737,14 +746,19 @@ Ne zaboravite prilagoditi Vaše [[Special:Preferences|{{SITENAME}} postavke]].',
 'logout' => 'Odjavi se',
 'userlogout' => 'Odjavi se',
 'notloggedin' => 'Niste prijavljeni',
-'nologin' => "Nemate suradnički račun? '''$1'''.",
+'userlogin-noaccount' => 'Nemate suradnički račun?',
+'userlogin-joinproject' => 'Pridružite se {{SITENAME}}',
+'nologin' => 'Nemate suradnički račun? $1.',
 'nologinlink' => 'Otvorite račun',
 'createaccount' => 'Otvori novi suradnički račun',
 'gotaccount' => "Već imate suradnički račun? '''$1'''.",
 'gotaccountlink' => 'Prijavite se',
 'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoć pri prijavi]]',
 'createaccountmail' => 'poštom',
 'createaccountreason' => 'Razlog:',
+'createacct-imgcaptcha-ph' => 'Unesite tekst koji vidite iznad',
+'createacct-submit' => 'Stvorite svoj suradnički račun',
 'badretype' => 'Unesene lozinke nisu istovjetne.',
 'userexists' => 'Uneseno suradničko ime već je u upotrebi.
 Unesite neko drugo ime.',
@@ -1068,6 +1082,7 @@ Razlog nije ponuđen.',
 Čini se kako je obrisana.',
 'edit-conflict' => 'Sukob uređivanja.',
 'edit-no-change' => 'Vaše uređivanje je zanemareno, jer nikakva promjena sadržaja nije napravljena.',
+'postedit-confirmation' => 'Vaše je uređivanje sačuvano.',
 'edit-already-exists' => 'Neuspješno stvaranje nove stranice.
 Stranica već postoji.',
 'defaultmessagetext' => 'Prvotni tekst poruke',
@@ -1314,7 +1329,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Mogućnosti pretraživanja',
 'searchmenu-exists' => "* Stranica '''[[$1]]'''",
 'searchmenu-new' => "'''Stvori stranicu \"[[:\$1]]\" na ovoj wiki!'''",
-'searchhelp-url' => 'Help:Pomoć',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pretraži stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sa sadržajem',
 'searchprofile-project' => 'Pomoć i stranice projekta',
index 156f504..2434d17 100644 (file)
@@ -262,6 +262,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'now',
 'dec' => 'dec',
+'january-date' => '$1. januara',
+'february-date' => '$1. februara',
+'march-date' => '$1. měrca',
+'april-date' => '$1. apryla',
+'may-date' => '$1. meje',
+'june-date' => '$1. junija',
+'july-date' => '$1. julija',
+'august-date' => '$1. awgusta',
+'september-date' => '$1. septembra',
+'october-date' => '$1. oktobra',
+'november-date' => '$1. nowembra',
+'december-date' => '$1. decembra',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategoriji|Kategorije|Kategorije}}',
@@ -396,7 +408,6 @@ $1',
 'disclaimers' => 'Licencne postajenja',
 'disclaimerpage' => 'Project:Impresum',
 'edithelp' => 'Pomoc za wobdźěłowanje',
-'edithelppage' => 'Help:Wobdźěłowanje',
 'helppage' => 'Help:Wobsah',
 'mainpage' => 'Hłowna strona',
 'mainpage-description' => 'Hłowna strona',
@@ -573,7 +584,10 @@ Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENA
 'createacct-yourpassword-ph' => 'Zapodaj hesło',
 'yourpasswordagain' => 'Hesło znowa zapodać:',
 'createacct-yourpasswordagain' => 'Hesło wobkrućić',
+'createacct-yourpasswordagain-ph' => 'Zapodaj hesło hišće raz',
 'remembermypassword' => 'Na tutym ličaku přizjewjeny wostać (za maksimalnje $1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}})',
+'userlogin-remembermypassword' => 'Přizjewjeny wostać',
+'userlogin-signwithsecure' => 'Wěsty zwisk wužiwać',
 'securelogin-stick-https' => 'Po přizjewjenju z HTTPS zwjazany wostać',
 'yourdomainname' => 'Twoja domejna:',
 'password-change-forbidden' => 'Njemóžeš hesła na tutym wikiju změnić.',
@@ -586,23 +600,38 @@ Njezabudź swoje [[Special:Preferences|nastajenja za {{GRAMMAR:akuzatiw|{{SITENA
 'logout' => 'wotzjewić',
 'userlogout' => 'wotzjewić',
 'notloggedin' => 'Njepřizjewjeny',
+'userlogin-noaccount' => 'Nimaš žane konto?',
+'userlogin-joinproject' => 'Konto za {{GRAMMAR:akuzatiw|{{SITENAME}}}} załožić',
 'nologin' => 'Nimaš žane konto? $1.',
 'nologinlink' => 'Konto załožić',
 'createaccount' => 'Konto załožić',
 'gotaccount' => 'Maš hižo wužiwarske konto? $1.',
 'gotaccountlink' => 'Přizjewić',
 'userlogin-resetlink' => 'Přizjewjenske daty zabył?',
+'userlogin-resetpassword-link' => 'Hesło anulować',
+'helplogin-url' => 'Help:Přizjewić',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za přizjewjenje]]',
+'createacct-join' => 'Zapodaj deleka swoje informacije.',
 'createacct-emailrequired' => 'E-mejlowa adresa',
+'createacct-emailoptional' => 'E-mejlowa adresa (opcionalny)',
+'createacct-email-ph' => 'Zapodaj swoju e-mejlowu adresu',
 'createaccountmail' => 'Nachwilne přidatne hesło wužiwać a jo na slědowacu e-mejlowu adresu pósłać',
+'createacct-realname' => 'Woprawdźite mjeno (opcionalny)',
 'createaccountreason' => 'Přičina:',
 'createacct-reason' => 'Přičina',
+'createacct-reason-ph' => 'Čehodla załožuješ druhe konto?',
+'createacct-captcha' => 'Wěstotna kontrola',
 'createacct-imgcaptcha-ph' => 'Zapodaj tekst, kotryž deleka widźiš',
-'createacct-benefit-body1' => 'změny',
-'createacct-benefit-body2' => 'strony',
+'createacct-submit' => 'Twoje konto załožić',
+'createacct-benefit-heading' => '{{SITENAME}} je so wot ludźi kaž ty wutworił.',
+'createacct-benefit-body1' => '{{PLURAL:$1|změna|změnje|změny|změnow}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|strona|stronje|strony|stronow}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktiwny sobuskutkowar|aktiwnej sobuskutkowarjej|aktiwni sobuskutkowarjo}}',
 'badretype' => 'Hesle, kotrejž sy zapodał, so njekryjetej.',
 'userexists' => 'Wužiwarske mjeno, kotrež sy zapodał, so hižo wužiwa.
 Prošu wubjer druhe mjeno.',
 'loginerror' => 'Zmylk při přizjewjenju',
+'createacct-error' => 'Zmylk při załožowanju konta',
 'createaccounterror' => 'Wužiwarske konto njeda so załožić: $1',
 'nocookiesnew' => 'Wužiwarske konto bu załožene, njejsy pak přizjewjeny. {{SITENAME}} wužiwa placki (cookies), zo bychu so wužiwarjo přizjewili. Sy placki znjemóžnił. Prošu zmóžń je a přizjew so potom ze swojim nowym wužiwarskim mjenom a hesłom.',
 'nocookieslogin' => '{{SITENAME}} wužiwa placki za přizjewjenje wužiwarjow.
@@ -647,7 +676,7 @@ Prjedy hač so druha e-mejlka na konto pósćele, dyrbiš so po instrukcijach w
 'cannotchangeemail' => 'Kontowe e-mejlowe adresy njehodźa so na tutym wikiju změnić.',
 'emaildisabled' => 'Tute sydło njemóže e-mejle pósłać.',
 'accountcreated' => 'Wužiwarske konto załožene',
-'accountcreatedtext' => 'Wužiwarske konto za $1 bu załožene.',
+'accountcreatedtext' => 'Wužiwarske konto za [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskusiju]]) bu załožene.',
 'createaccount-title' => 'Wutworjenje wužiwarskeho konta za {{SITENAME}}',
 'createaccount-text' => 'Něchtó je wužiwarske konto za twoju e-mejlowu adresu na {{SITENAME}} ($4) z mjenom "$2" z hesłom "$3" wutworił. Ty měł so nětko přizjewić a swoje hesło změnić.
 
@@ -680,11 +709,15 @@ Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutwori
 'resetpass-wrong-oldpass' => 'Njepłaćiwe nachwilne abo aktualne hesło.
 Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.',
 'resetpass-temp-password' => 'Nachwilne hesło:',
+'resetpass-abort-generic' => 'Měnjenje hesła je so přez rozšěrjenje přetorhnyło.',
 
 # Special:PasswordReset
 'passwordreset' => 'Hesło wróćo stajić',
+'passwordreset-text-one' => 'Wupjelń tutón formular, zo by swoje hesło anulował.',
+'passwordreset-text-many' => '{{PLURAL:$1|Zapodaj jedyn z datow, zo by swoje hesło anulował.}}',
 'passwordreset-legend' => 'Hesło wróćo stajić',
 'passwordreset-disabled' => 'Wróćostajenje hesłow je so na  tutym wikiju znjemóžniło.',
+'passwordreset-emaildisabled' => 'E-mejlowe funkcije su so na tutym wikiju znjemóžnili.',
 'passwordreset-username' => 'Wužiwarske mjeno:',
 'passwordreset-domain' => 'Domena:',
 'passwordreset-capture' => 'E-mejlku sej wobhladać?',
@@ -914,7 +947,7 @@ Eksistuje hižo.',
 'content-failed-to-parse' => 'Parsowanje wobsaha $2 za model $1 je so njeporadźiło: $3',
 'invalid-content-data' => 'Njepłaćiwe wobsahowe daty',
 'content-not-allowed-here' => 'Wobsah "$1" njeje na stronje [[$2]] dowoleny',
-'editwarning-warning' => 'Hdyž so strona wopušća, móžeja so změny zhubić, kotrež sy přewjedł. Jeli sy přizjewjeny, móžeš tute warnowanje we wotrězku {{int:prefs-editing}} swojich nastajenjow znjemóžnić.',
+'editwarning-warning' => 'Hdyž so strona wopušća, móža so změny zhubić, kotrež sy přewjedł. Jeli sy přizjewjeny, móžeš tute warnowanje we wotrězku "Wobdźěłowanje" swojich nastajenjow znjemóžnić.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -1151,7 +1184,6 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'searchmenu-legend' => 'Pytanske opcije',
 'searchmenu-exists' => "'''Je strona z mjenom \"[[\$1]]\" na tutym wikiju'''",
 'searchmenu-new' => "'''Wutwor stronu \"[[:\$1|\$1]]\" na tutym wikiju!'''",
-'searchhelp-url' => 'Help:Wobsah',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Strony z tutym prefiksom přepytać]]',
 'searchprofile-articles' => 'Wobsahowe strony',
 'searchprofile-project' => 'Pomoc a projektowe strony',
@@ -1193,6 +1225,7 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'powersearch-togglenone' => 'Žadyn',
 'search-external' => 'Eksterne pytanje',
 'searchdisabled' => 'Pytanje w {{GRAMMAR:lokatiw|{{SITENAME}}}} tuchwilu móžne njeje. Móžeš mjeztym z Google pytać. Wobkedźbuj, zo móža wuslědki z wobsaha {{GRAMMAR:genitiw|{{SITENAME}}}} zestarjene być.',
+'search-error' => 'Při pytanju je so zmylk wustupił: $1',
 
 # Preferences page
 'preferences' => 'Nastajenja',
@@ -1335,6 +1368,7 @@ Smě mjenje hač $1 {{PLURAL:$1|znamješko|znamješce|znamješka|znamješkow}} d
 'userrights-notallowed' => 'Twoje konto nima trěbne prawa, zo by wužiwarske prawa přidźěliło abo zebrało.',
 'userrights-changeable-col' => 'Skupiny, kotrež móžeš změnić',
 'userrights-unchangeable-col' => 'Skupiny, kotrež njemóžeš změnić',
+'userrights-conflict' => 'Konflikt wužiwarskich prawow! Prošu čiń swoje změny hišće raz.',
 
 # Groups
 'group' => 'Skupina:',
@@ -2146,8 +2180,8 @@ Přichodne změny tuteje strony a přisłušneje diskusijneje strony budu so tam
 'notvisiblerev' => 'Wersija bu wušmórnjena',
 'watchnochange' => 'Žana z twojich wobkedźbowanych stron njebu w podatej dobje wobdźěłana.',
 'watchlist-details' => '{{PLURAL:$1|$1 wobkedźbowana strona|$1 wobkedźbowanej stronje|$1 wobkedźbowane strony|$1 wobkedźbowanych stronow}}, diskusijne strony wuwzate.',
-'wlheader-enotif' => 'E-mejlowe zdźělenje je zmóžnjene.',
-'wlheader-showupdated' => 'Strony, kotrež buchu po twojim poslednim wopyće změnjene so <b>tučne</b> pokazuja.',
+'wlheader-enotif' => 'E-mejlowa zdźělenska słužba je zmóžnjena.',
+'wlheader-showupdated' => "Strony, kotrež su so po twojim poslednim wopyće změnili, so '''tučne''' pokazuja.",
 'watchmethod-recent' => 'Aktualne změny za wobkedźbowane strony přepruwować',
 'watchmethod-list' => 'Wobkedźbowanki za aktualnymi změnami přepruwować',
 'watchlistcontains' => 'Maš $1 {{PLURAL:$1|stronu|stronje|strony|stronow}} w swojich wobkedźbowankach.',
@@ -2388,7 +2422,7 @@ $1',
 'mycontris' => 'Přinoški',
 'contribsub2' => 'za wužiwarja $1 ($2)',
 'nocontribs' => 'Žane změny, kotrež podatym kriterijam wotpowěduja.',
-'uctop' => '(aktualnje)',
+'uctop' => '(aktualny)',
 'month' => 'wot měsaca (a do toho):',
 'year' => 'wot lěta (a do toho):',
 
@@ -2696,6 +2730,8 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
 'thumbnail-more' => 'powjetšić',
 'filemissing' => 'Dataja pobrachuje',
 'thumbnail_error' => 'Zmylk při wutworjenju miniaturki: $1',
+'thumbnail_error_remote' => 'Zmylkowa zdźělenka wot $1:
+$2',
 'djvu_page_error' => 'Strona DjVU zwonka wobłuka strony',
 'djvu_no_xml' => 'Daty XML njemóža so za dataju DjVU wotwołać',
 'thumbnail-temp-create' => 'Temporerna dataja za miniaturny wobrazk njeda so wutworić',
@@ -3005,9 +3041,9 @@ $1',
 'just-now' => 'runje',
 
 # Human-readable timestamps
-'hours-ago' => 'před $1 {{PLURAL:$1|hodźinu|hodźinomaj|hodźinami|hodźinami}}',
-'minutes-ago' => 'před $1 {{PLURAL:$1|mjeńšinu|mjeńšinomaj|mjeńšinami|mjeńšinami}}',
-'seconds-ago' => 'před $1 {{PLURAL:$1|sekundu|sekundomaj|sekundami|sekundami}}',
+'hours-ago' => 'před $1 {{PLURAL:$1|hodźinu|hodźinomaj|hodźinami}}',
+'minutes-ago' => 'před $1 {{PLURAL:$1|mjeńšinu|mjeńšinomaj|mjeńšinami}}',
+'seconds-ago' => 'před $1 {{PLURAL:$1|sekundu|sekundomaj|sekundami}}',
 'monday-at' => 'Póndźela $1',
 'tuesday-at' => 'Wutora $1',
 'wednesday-at' => 'Srjeda $1',
@@ -3629,6 +3665,18 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'version-entrypoints-header-entrypoint' => 'Zastupny dypk',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
+'redirect-legend' => 'Do dataje abo strony dale sposrědkować',
+'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje.',
+'redirect-submit' => 'Los',
+'redirect-lookup' => 'Pytać:',
+'redirect-value' => 'Hódnota:',
+'redirect-user' => 'ID wužiwarja',
+'redirect-revision' => 'Wersija strony',
+'redirect-file' => 'Datajowe mjeno',
+'redirect-not-exists' => 'Hódnota njeje so namakała',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Dwójne dataje pytać',
 'fileduplicatesearch-summary' => 'Pytanje za duplikatnymi datajemi na zakładźe jich hašoweje hódnoty.',
@@ -3720,6 +3768,7 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'htmlform-selectorother-other' => 'Druhe',
 'htmlform-no' => 'Ně',
 'htmlform-yes' => 'Haj',
+'htmlform-chosen-placeholder' => 'Wubjer móžnosć',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 połnotekstowe pytanje podpěruje.',
index 433c889..07192ab 100644 (file)
@@ -378,7 +378,6 @@ $1',
 'disclaimers' => 'Avètisman',
 'disclaimerpage' => 'Project:Avètisman jeneral yo',
 'edithelp' => 'Èd pou modifye paj',
-'edithelppage' => 'Help:Modifye yon paj',
 'helppage' => 'Help:Èd',
 'mainpage' => 'Paj prensipal',
 'mainpage-description' => 'Paj prensipal',
@@ -888,7 +887,6 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 'prevn' => '{{PLURAL:$1|$1}} anvan yo',
 'nextn' => '{{PLURAL:$1|$1}} swivan yo',
 'viewprevnext' => 'Wè ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:Èd',
 'searchprofile-everything' => 'Tout',
 'search-result-size' => '$1 ({{PLURAL:$2| mo|$2 mo yo}})',
 'search-redirect' => '(redireksyon depi $1)',
index 2c2803c..9487d00 100644 (file)
@@ -21,6 +21,7 @@
  * @author Dj
  * @author Dorgan
  * @author Enbéká
+ * @author Geitost
  * @author Glanthor Reviol
  * @author Gondnok
  * @author Hunyadym
@@ -566,7 +567,6 @@ $1',
 'disclaimers' => 'Jogi nyilatkozat',
 'disclaimerpage' => 'Project:Jogi nyilatkozat',
 'edithelp' => 'Szerkesztési segítség',
-'edithelppage' => 'Help:Szerkesztés',
 'helppage' => 'Help:Tartalom',
 'mainpage' => 'Kezdőlap',
 'mainpage-description' => 'Kezdőlap',
@@ -590,7 +590,7 @@ További információkat a [[Special:Version|verzióinformációs lapon]] talál
 'newmessageslink' => 'új üzenet vár',
 'newmessagesdifflink' => 'az utolsó üzenetet',
 'youhavenewmessagesfromusers' => '$2 kaptál {{PLURAL:$3|egy|$3}} szerkesztőtől $1!',
-'youhavenewmessagesmanyusers' => '$1ed van több szerkesztőtől ($2).',
+'youhavenewmessagesmanyusers' => '$2 kaptál több szerkesztőtől $1.',
 'newmessageslinkplural' => 'a vitalapodon',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|Új üzenetet|Új üzeneteket}}',
 'youhavenewmessagesmulti' => 'Új üzenet vár a(z) $1 wikin',
@@ -761,7 +761,7 @@ Ne felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaid
 'notloggedin' => 'Nem vagy bejelentkezve',
 'userlogin-noaccount' => 'Nem rendelkezel még felhasználói fiókkal?',
 'userlogin-joinproject' => 'Csatlakozz a(z) {{SITENAME}} wikihez',
-'nologin' => "Nem rendelkezel még felhasználói fiókkal? '''$1'''.",
+'nologin' => 'Nem rendelkezel még felhasználói fiókkal? $1.',
 'nologinlink' => 'Itt regisztrálhatsz',
 'createaccount' => 'Regisztráció',
 'gotaccount' => "Ha már korábban regisztráltál, '''$1'''.",
@@ -772,7 +772,7 @@ Ne felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaid
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Segítség a bejelentkezéshez]]',
 'createacct-join' => 'Add meg az alábbi információkat.',
 'createacct-emailrequired' => 'E-mail cím',
-'createacct-emailoptional' => 'E-mail cím (opcionáis)',
+'createacct-emailoptional' => 'E-mail cím (opcionális)',
 'createacct-email-ph' => 'Add meg e-mail címed',
 'createaccountmail' => 'Átmeneti, véletlenszerű jelszó használata és kiküldése az alábbi e-mail címre',
 'createacct-realname' => 'Igazi neved (nem kötelező)',
@@ -782,10 +782,15 @@ Ne felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaid
 'createacct-captcha' => 'Biztonsági ellenőrzés',
 'createacct-imgcaptcha-ph' => 'Írd be a szöveget, amit fent látsz',
 'createacct-submit' => 'Felhasználói fiók létrehozása',
+'createacct-benefit-heading' => 'A(z) {{SITENAME}}-t hozzád hasonló emberek készítik.',
+'createacct-benefit-body1' => '{{PLURAL:$1|szerkesztés|szerkesztés}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|lap|lap}}',
+'createacct-benefit-body3' => 'aktív {{PLURAL:$1|szerkesztő|szerkesztő}}',
 'badretype' => 'A megadott jelszavak nem egyeznek.',
 'userexists' => 'A megadott felhasználónév már foglalt.
 Kérlek, válassz másikat!',
 'loginerror' => 'Hiba történt a bejelentkezés során',
+'createacct-error' => 'Fióklétrehozási hiba',
 'createaccounterror' => 'Nem sikerült létrehozni a felhasználói fiókot: $1',
 'nocookiesnew' => 'A felhasználói fiókod létrejött, de nem vagy bejelentkezve. A wiki sütiket („cookie”) használ a szerkesztők azonosítására. Nálad ezek le vannak tiltva. Kérlek, engedélyezd őket a böngésződben, majd lépj be az új azonosítóddal és jelszavaddal.',
 'nocookieslogin' => 'A wiki sütiket („cookie”) használ a szerkesztők azonosításhoz.
@@ -870,9 +875,12 @@ Várj egy kicsit, mielőtt újra próbálkozol.',
 'resetpass-wrong-oldpass' => 'Nem megfelelő ideiglenes vagy jelenlegi jelszó.
 Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben új ideiglenes jelszót kértél.',
 'resetpass-temp-password' => 'Ideiglenes jelszó:',
+'resetpass-abort-generic' => 'A jelszómódosítást megszakította egy kiterjesztés.',
 
 # Special:PasswordReset
 'passwordreset' => 'Jelszó törlése',
+'passwordreset-text-one' => 'A jelszavad alaphelyzetbe állításához töltsd ki az űrlapot.',
+'passwordreset-text-many' => '{{PLURAL:$1|A jelszavad alaphelyzetbe állításához írd be az alábbi adatok egyikét.}}',
 'passwordreset-legend' => 'Új jelszó kérése',
 'passwordreset-disabled' => 'Új jelszó kérése nem engedélyezett ezen a wikin.',
 'passwordreset-emaildisabled' => 'Az e-mail funkció le van tiltva ezen a wikin.',
@@ -1104,6 +1112,7 @@ Nem lett magyarázat csatolva.',
 Úgy tűnik, hogy törölve lett.',
 'edit-conflict' => 'Szerkesztési ütközés.',
 'edit-no-change' => 'A szerkesztésed figyelmen kívül lett hagyva, mivel nem változtattál a lap szövegén.',
+'postedit-confirmation' => 'A szerkesztésedet elmentettük.',
 'edit-already-exists' => 'Az új lap nem készíthető el.
 Már létezik.',
 'defaultmessagetext' => 'Alapértelmezett szöveg',
@@ -1111,7 +1120,7 @@ Már létezik.',
 'invalid-content-data' => 'Érvénytelen tartalom adat',
 'content-not-allowed-here' => '"$1" tartalom nem engedélyezett a [[$2]] oldalon',
 'editwarning-warning' => 'A lap elhagyásával az összes itt végzett változtatás elveszhet.
-Ha be vagy jelentkezve letilthatod ezt a figyelmeztetést a beállításaid „{{int:prefs-editing}}” szakaszában.',
+Ha be vagy jelentkezve letilthatod ezt a figyelmeztetést a beállításaid „Szerkesztés” szakaszában.',
 
 # Content models
 'content-model-wikitext' => 'wikiszöveg',
@@ -1346,7 +1355,6 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'searchmenu-legend' => 'Keresési beállítások',
 'searchmenu-exists' => "'''A wikin már van „[[:$1]]” nevű lap'''",
 'searchmenu-new' => "'''Hozd létre a(z) „[[:$1]]” nevű lapot ezen a wikin!'''",
-'searchhelp-url' => 'Help:Tartalom',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ilyen előtagú lapok listázása]]',
 'searchprofile-articles' => 'Tartalmi oldalak',
 'searchprofile-project' => 'Segítség- és projektlapok',
@@ -1387,6 +1395,7 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'powersearch-togglenone' => 'Egyik sem',
 'search-external' => 'Külső kereső',
 'searchdisabled' => 'Elnézésed kérjük, de a teljes szöveges keresés terhelési okok miatt átmenetileg nem használható. Ezidő alatt használhatod a lenti Google keresést, mely viszont lehetséges, hogy nem teljesen friss adatokkal dolgozik.',
+'search-error' => 'A keresés közben hiba történt: $1',
 
 # Preferences page
 'preferences' => 'Beállítások',
@@ -1528,6 +1537,7 @@ A műveletet nem lehet visszavonni.',
 'userrights-notallowed' => 'Nincs jogosultságod jogosultságok adására vagy elvételére.',
 'userrights-changeable-col' => 'Megváltoztatható csoportok',
 'userrights-unchangeable-col' => 'Nem megváltoztatható csoportok',
+'userrights-conflict' => 'Felhasználói jogok ütközése! Kérlek, végez el újra a változtatásokat.',
 
 # Groups
 'group' => 'Csoport:',
@@ -1846,7 +1856,7 @@ $1',
 'upload-file-error-text' => 'Belső hiba történt egy ideiglenes fájl szerveren történő létrehozásakor.
 Kérjük, hogy lépj kapcsolatba egy  [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-misc-error' => 'Ismeretlen feltöltési hiba',
-'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a rendszergazdával.',
+'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-too-many-redirects' => 'Az URL túl sokszor volt átirányítva',
 'upload-unknown-size' => 'Ismeretlen méretű',
 'upload-http-error' => 'HTTP-hiba történt: $1',
@@ -1881,6 +1891,7 @@ Kérjük, hogy lépj kapcsolatba egy  [[Special:ListUsers/sysop|adminisztrátorr
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Nem sikerült csatlakozni a napló adatbázis "$1 " háttér tárolójához.',
+'filejournal-fail-dbquery' => 'Nem sikerült frissíteni a naplóadatbázis "$1 " háttértárolóját.',
 
 # Lock manager
 'lockmanager-notlocked' => 'Nem lehet a zárolást feloldani: „$1”; nincs zárolva.',
@@ -3942,6 +3953,8 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'htmlform-submit' => 'Elküldés',
 'htmlform-reset' => 'Változtatások visszavonása',
 'htmlform-selectorother-other' => 'egyéb',
+'htmlform-no' => 'Nem',
+'htmlform-yes' => 'Igen',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 teljes szöveges keresés támogatással',
index 0a0bde6..34ee847 100644 (file)
@@ -381,6 +381,18 @@ $messages = array(
 'oct' => 'հոկ',
 'nov' => 'նոյ',
 'dec' => 'դեկ',
+'january-date' => 'Հունվարի $1',
+'february-date' => 'Փետրվարի $1',
+'march-date' => 'Մարտի $1',
+'april-date' => 'Ապրիլի $1',
+'may-date' => 'Մայիսի $1',
+'june-date' => 'Հունիսի $1',
+'july-date' => 'Հուլիսի $1',
+'august-date' => 'Օգոստոսի $1',
+'september-date' => 'Սեպտեմբերի $1',
+'october-date' => 'Հոկտեմբերի $1',
+'november-date' => 'Նոյեմբերի $1',
+'december-date' => 'Դեկտեմբերի $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Կատեգորիա|Կատեգորիաներ}}',
@@ -428,7 +440,8 @@ $messages = array(
 'vector-action-move' => 'Տեղափոխել այս էջը',
 'vector-action-protect' => 'Պաշտպանել',
 'vector-action-undelete' => 'Վերականգնել',
-'vector-action-unprotect' => 'Հանել պաշտպանումից',
+'vector-action-unprotect' => 'Փոխել պաշտպանումը',
+'vector-simplesearch-preference' => 'Միացնել պարզեցված որոնման դաշտը (միայն Վեկտոր թեմայի դեպքում)',
 'vector-view-create' => 'Ստեղծել',
 'vector-view-edit' => 'Խմբագրել',
 'vector-view-history' => 'Դիտել պատմությունը',
@@ -511,7 +524,6 @@ $1',
 'disclaimers' => 'Ազատում պատասխանատվությունից',
 'disclaimerpage' => 'Project:Ազատում պատասխանատվությունից',
 'edithelp' => 'Խմբագրման ուղեցույց',
-'edithelppage' => 'Help:Խմբագրում',
 'helppage' => 'Help:Գլխացանկ',
 'mainpage' => 'Գլխավոր էջ',
 'mainpage-description' => 'Գլխավոր էջ',
@@ -672,9 +684,19 @@ $2',
 'welcomecreation-msg' => 'Ձեր հաշիվն ստեղծված է։
 Չմոռանաք փոփոխել ձեր [[Special:Preferences|նախընտրությունները]]։',
 'yourname' => 'Մասնակցի անուն՝',
+'userlogin-yourname' => 'Մասնակցային անուն',
+'userlogin-yourname-ph' => 'Մուտքագրեք ձեր մասնակցային անունը',
 'yourpassword' => 'Գաղտնաբառ՝',
+'userlogin-yourpassword' => 'Գաղտնաբառ',
+'userlogin-yourpassword-ph' => 'Մուտքագրեք ձեր գաղտնաբառը',
+'createacct-yourpassword-ph' => 'Մուտքագրեք գաղտնաբառը',
 'yourpasswordagain' => 'Կրկնեք գաղտնաբառը',
-'remembermypassword' => 'Հիշել իմ մուտքագրված տվյալները այս համակարգչում ($1 {{PLURAL:$1|օրից|օրից}} ոչ ավել ժամկետով)',
+'createacct-yourpasswordagain' => 'Հաստատեք գաղտնաբառը',
+'createacct-yourpasswordagain-ph' => 'Կրկին մուտքագրեք գաղտնաբառը',
+'remembermypassword' => 'Հիշել իմ մուտքը այս դիտարկչում ($1 {{PLURAL:$1|օրից}} ոչ ավել ժամկետով)',
+'userlogin-remembermypassword' => 'Մուտք գործած մնալ',
+'userlogin-signwithsecure' => 'Օգտագործել անվտանգ միացում',
+'securelogin-stick-https' => 'Մուտք գործելուց հետո շարունակել աշխատանքը HTTPS–ով',
 'yourdomainname' => 'Ձեր դոմենը՝',
 'password-change-forbidden' => 'Այս վիքիում չեք կարող փոխել գաղտնաբառ։',
 'externaldberror' => 'Տեղի է ունեցել վավերացման արտաքին տվյալների բազայի սխալ, կամ դուք չունեք բավարար իրավունքներ ձեր արտաքին հաշվի փոփոխման համար։',
@@ -686,25 +708,31 @@ $2',
 'logout' => 'Դուրս գալ համակարգից',
 'userlogout' => 'Ելնել համակարգից',
 'notloggedin' => 'Դուք չեք մտել համակարգ',
-'userlogin-joinproject' => 'Միցել է {{SITENAME}}-{{grammar:genitive|ը}}',
-'nologin' => "Դեռևս չե՞ք գրանցվել '''$1'''։",
-'nologinlink' => 'Ստեղծեք մասնակցային հաշիվ',
+'userlogin-noaccount' => 'Հաշիվ չունե՞ք։',
+'userlogin-joinproject' => 'Միացեք {{SITENAME}} նախագծին',
+'nologin' => "Չունե՞ք հաշիվ '''$1'''։",
+'nologinlink' => 'Ստեղծել մասնակցային հաշիվ',
 'createaccount' => 'Ստեղծել նոր հաշիվ',
 'gotaccount' => "Դուք արդեն գրանցվա՞ծ եք։ '''$1'''։",
 'gotaccountlink' => 'Մուտք գործեք համակարգ',
-'userlogin-resetlink' => 'Մոռացե՞լ եք Ձեր լոգին տվյալները։',
+'userlogin-resetlink' => 'Մոռացե՞լ եք Ձեր հաշվի տվյալները։',
+'userlogin-resetpassword-link' => 'Զրոյացնել ձեր գաղտնաբառը։',
+'createacct-join' => 'Մուտքագրեք Ձեր տեղեկությունները ստորև',
 'createacct-emailrequired' => 'Էլ-փոստի հասցեն',
-'createaccountmail' => 'էլ-փոստով',
+'createacct-emailoptional' => 'Էլ–փոստի հասցե (ոչ պարտադիր)',
+'createacct-email-ph' => 'Մուտքագրեք ձեր էլ–փոստի հասցեն',
+'createaccountmail' => 'Օգտագործել ժամանակավոր պատահական գաղտնաբառ, որը կուղարկվի ձեր էլ–փոստի հասցեին։',
+'createacct-realname' => 'Իրական անուն (պարտադիր չէ)',
 'createaccountreason' => 'Պատճառը՝',
 'createacct-reason' => 'Պատճառ',
-'createacct-reason-ph' => 'Ինչու եք ստեղծել մեկ այլ հաշիվ',
+'createacct-reason-ph' => 'Ինչո՞ւ եք փորձում ստեղծել մեկ այլ հաշիվ',
 'createacct-captcha' => 'Անվտանգության ստուգում',
-'createacct-imgcaptcha-ph' => 'Õ\84Õ¸Ö\82Õ¿Ö\84Õ¡Õ£Ö\80Õ¥Ö\84 Õ¿Õ¥Ö\84Õ½Õ¿Õ¨ Õ¿Õ¥Õ½Õ¶Õ¸Ö\82Õ´ Õ¥Ö\84 Õ¾Õ¥Ö\80Õ¨ Õ¶Õ·Õ¾Õ¡Õ®ը',
-'createacct-submit' => 'Ստեղծեք ձեր հաշիվը',
-'createacct-benefit-heading' => '{{SITENAME}}-ը կատարվում է նման մարդկանց համար:',
-'createacct-benefit-body1' => '{{PLURAL:$1|Õ­Õ´Õ¢Õ¡Õ£Ö\80Õ¥Õ¬|Õ­Õ´Õ¢Õ¡Õ£Ö\80Õ¸Ö\82Õ´Õ¶Õ¥Ö\80}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|էջ|էջեր}}',
-'createacct-benefit-body3' => 'Õ¾Õ¥Ö\80Õ»Õ«Õ¶ {{PLURAL:$1|Õ¶Õ¥Ö\80Õ¤Ö\80Õ¸Ö\82Õ´Õ¨|Õ¶Õ¥Ö\80Õ¤Ö\80Õ¸Ö\82Õ´Õ¶Õ¥Ö\80Õ¨}}',
+'createacct-imgcaptcha-ph' => 'Õ\84Õ¸Ö\82Õ¿Ö\84Õ¡Õ£Ö\80Õ¥Ö\84 Õ¾Õ¥Ö\80Õ¨ Õ¢Õ¥Ö\80Õ¾Õ¡Õ® Õ£Ö\80Õ¾Õ¡Õ®Ö\84ը',
+'createacct-submit' => 'Ստեղծել ձեր հաշիվը',
+'createacct-benefit-heading' => '{{SITENAME}}՝ ստեղծված ձեր պես մարդկանց կողմից։',
+'createacct-benefit-body1' => '{{PLURAL:$1|Õ­Õ´Õ¢Õ¡Õ£Ö\80Õ¸Ö\82Õ´}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|էջ}}',
+'createacct-benefit-body3' => 'Õ¾Õ¥Ö\80Õ»Õ¥Ö\80Õ½ Õ¡Õ¯Õ¿Õ«Õ¾ {{PLURAL:$1|Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö\81}}',
 'badretype' => 'Ձեր մուտքագրած գաղտնաբառերը չեն համընկնում։',
 'userexists' => 'Այս մասնակցի անունը արդեն զբաղված է։ Խնդրում ենք ընտրել մեկ այլ անուն։',
 'loginerror' => 'Մուտքի սխալ',
@@ -1015,6 +1043,7 @@ $2',
 'log-fulllog' => 'Դիտել ամբողջական տեղեկամատյանը',
 'edit-conflict' => 'Խմբագրման ընհարում։',
 'edit-no-change' => 'Ձեր խմբագրումը անտեսվել է, քանի որ ոչ մի փոփոխություն չի կատարվել տեքստի մեջ։',
+'postedit-confirmation' => 'Ձեր խմբագրումը պահպանված է:',
 'defaultmessagetext' => 'Լռելյան տեքստը',
 'editwarning-warning' => 'Այս էջը լքելով դուք կարող եք կորցնել ձեր կատարած փոփոխությունները։
 Եթե դուք գրանցված եք համակարգում, կարող եք անջատել այս նախազգուշացումը ձեր նախընրությունների «{{int:prefs-editing}}» բաժնում։',
@@ -1153,7 +1182,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'searchmenu-legend' => 'Որոնման ընտրանքներ',
 'searchmenu-exists' => "'''Այս վիքիում, գոյություն ունի \"[[:\$1]]\" անվանումով էջը։'''",
 'searchmenu-new' => "'''Ստեղծե՛լ \"[[:\$1]]\" էջը այս վիքիում'''",
-'searchhelp-url' => 'Help:Գլխացանկ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ցուցադրել այս նախածանցով սկսվող էջերը]]',
 'searchprofile-articles' => 'Հիմնական էջեր',
 'searchprofile-project' => 'Օգնության և նախագծերի էջեր',
index 321561f..8dc53bd 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Julian Mendez
  * @author Kaganer
  * @author Malafaya
@@ -344,6 +345,7 @@ $messages = array(
 'create-this-page' => 'Crear iste pagina',
 'delete' => 'Deler',
 'deletethispage' => 'Deler iste pagina',
+'undeletethispage' => 'Restaurar iste pagina',
 'undelete_short' => 'Restaurar {{PLURAL:$1|un modification|$1 modificationes}}',
 'viewdeleted_short' => 'Vider {{PLURAL:$1|un modification|$1 modificationes}} delite',
 'protect' => 'Proteger',
@@ -397,7 +399,6 @@ $1',
 'disclaimers' => 'Declaration de non-responsabilitate',
 'disclaimerpage' => 'Project:Declaration general de non-responsabilitate',
 'edithelp' => 'Adjuta de modification',
-'edithelppage' => 'Help:Modification',
 'helppage' => 'Help:Contento',
 'mainpage' => 'Pagina principal',
 'mainpage-description' => 'Pagina principal',
@@ -546,6 +547,8 @@ $2',
 'namespaceprotected' => "Tu non ha le permission de modificar paginas in le spatio de nomines '''$1'''.",
 'customcssprotected' => 'Tu non ha le permission de modificar iste pagina de CSS perque illo contine le configuration personal de un altere usator.',
 'customjsprotected' => 'Tu non ha le permission de modificar iste pagina de JavaScript perque illo contine le configuration personal de un altere usator.',
+'mycustomcssprotected' => 'Tu non ha le permission de modificar iste pagina de CSS.',
+'mycustomjsprotected' => 'Tu non ha le permission de modificar iste pagina de JavaScript.',
 'ns-specialprotected' => 'Le paginas special non es modificabile.',
 'titleprotected' => "Iste titulo ha essite protegite contra creation per [[User:$1|$1]].
 Le motivo specificate es ''$2''.",
@@ -597,7 +600,7 @@ Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].
 'notloggedin' => 'Tu non ha aperite un session',
 'userlogin-noaccount' => 'Non ha un conto?',
 'userlogin-joinproject' => 'Crear un conto in {{SITENAME}}',
-'nologin' => "Tu non ha un conto? '''$1'''.",
+'nologin' => 'Tu non ha un conto? $1.',
 'nologinlink' => 'Crear un conto',
 'createaccount' => 'Crear conto',
 'gotaccount' => "Tu jam ha un conto? '''$1'''.",
@@ -686,7 +689,7 @@ Entra un adresse ben formatate, o vacua ille campo.',
 'cannotchangeemail' => 'Le adresses de e-mail associate al contos non pote esser cambiate in iste wiki.',
 'emaildisabled' => 'Iste sito non pote inviar e-mail.',
 'accountcreated' => 'Conto create',
-'accountcreatedtext' => 'Le conto del usator $1 ha essite create.',
+'accountcreatedtext' => 'Le conto de usator [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discussion]]) ha essite create.',
 'createaccount-title' => 'Creation de un conto pro {{SITENAME}}',
 'createaccount-text' => 'Un persona ha create un conto in tu adresse de e-mail a {{SITENAME}} ($4) denominate "$2", con le contrasigno "$3".
 Tu deberea aperir un session e cambiar tu contrasigno ora.
@@ -727,6 +730,7 @@ Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasig
 # Special:PasswordReset
 'passwordreset' => 'Reinitialisar contrasigno',
 'passwordreset-text-one' => 'Completa iste formulario pro reinitialisar tu contrasigno.',
+'passwordreset-text-many' => '{{PLURAL:$1|Entra un de iste datos pro reinitialisar tu contrasigno.}}',
 'passwordreset-legend' => 'Reinitialisar contrasigno',
 'passwordreset-disabled' => 'Le reinitialisation de contrasignos ha essite disactivate in iste wiki.',
 'passwordreset-emaildisabled' => 'Le functionalitate de e-mail ha essite disactivate in iste wiki.',
@@ -982,6 +986,7 @@ Nulle explication disponibile.',
 Pare que illo ha essite delite.',
 'edit-conflict' => 'Conflicto inter modificationes.',
 'edit-no-change' => 'Tu modification ha essite ignorate, proque nulle cambio esseva facite in le texto.',
+'postedit-confirmation' => 'Tu modification ha essite salveguardate.',
 'edit-already-exists' => 'Non poteva crear un nove pagina.
 Illo existe ja.',
 'defaultmessagetext' => 'Texto predefinite del message',
@@ -989,7 +994,7 @@ Illo existe ja.',
 'invalid-content-data' => 'Datos de contento invalide',
 'content-not-allowed-here' => 'Le contento "$1" non es permittite in le pagina [[$2]]',
 'editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
-Si tu ha aperite un session, tu pote disactivar iste aviso in le section "{{int:prefs-editing}}" de tu preferentias.',
+Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
 
 # Content models
 'content-model-wikitext' => 'wikitexto',
@@ -1235,7 +1240,6 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'searchmenu-legend' => 'Optiones de recerca',
 'searchmenu-exists' => "'''Existe un pagina nominate \"[[\$1]]\" in iste wiki'''",
 'searchmenu-new' => "'''Crea le pagina \"[[:\$1]]\" in iste wiki!'''",
-'searchhelp-url' => 'Help:Contento',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navigar per le paginas con iste prefixo]]',
 'searchprofile-articles' => 'Paginas de contento',
 'searchprofile-project' => 'Paginas de adjuta e del projecto',
@@ -1424,6 +1428,7 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'userrights-changeable-col' => 'Gruppos que tu pote modificar',
 'userrights-unchangeable-col' => 'Gruppos que tu non pote modificar',
 'userrights-conflict' => 'Conflicto inter derectos de usator! Per favor applica tu cambiamentos de novo.',
+'userrights-removed-self' => 'Tu ha removite con successo tu proprie derectos. In consequentia, tu non plus pote acceder a iste pagina.',
 
 # Groups
 'group' => 'Gruppo:',
@@ -1494,6 +1499,8 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'right-editusercssjs' => 'Modificar le files CSS e JS de altere usatores',
 'right-editusercss' => 'Modificar le files CSS de altere usatores',
 'right-edituserjs' => 'Modificar le files JS de altere usatores',
+'right-editmyusercss' => 'Modificar le proprie files CSS de usator',
+'right-editmyuserjs' => 'Modificar le proprie files JavaScript de usator',
 'right-rollback' => 'Rapidemente revocar le modificationes del ultime usator que modificava un pagina particular',
 'right-markbotedits' => 'Marcar modificationes de reversion como facite per un bot',
 'right-noratelimit' => 'Non esser subjecte al limites de frequentia de actiones',
index 31e5f15..074e463 100644 (file)
@@ -17,6 +17,7 @@
  * @author Borgx
  * @author Dosmiin Barsbold
  * @author Farras
+ * @author Geitost
  * @author Gombang
  * @author Irwangatot
  * @author IvanLanin
@@ -549,7 +550,7 @@ $messages = array(
 'unprotectthispage' => 'Ubah perlindungan halaman ini',
 'newpage' => 'Halaman baru',
 'talkpage' => 'Bicarakan halaman ini',
-'talkpagelinktext' => 'Bicara',
+'talkpagelinktext' => 'bicara',
 'specialpage' => 'Halaman istimewa',
 'personaltools' => 'Peralatan pribadi',
 'postcomment' => 'Bagian baru',
@@ -593,7 +594,6 @@ $1',
 'disclaimers' => 'Penyangkalan',
 'disclaimerpage' => 'Project:Penyangkalan umum',
 'edithelp' => 'Bantuan penyuntingan',
-'edithelppage' => 'Help:Penyuntingan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Halaman Utama',
 'mainpage-description' => 'Halaman Utama',
@@ -788,7 +788,7 @@ Perhatikan bahwa beberapa halaman mungkin masih terus menunjukkan bahwa Anda mas
 'notloggedin' => 'Belum masuk log',
 'userlogin-noaccount' => 'Belum punya akun?',
 'userlogin-joinproject' => 'Join {{SITENAME}}',
-'nologin' => "Belum mempunyai akun? '''$1'''.",
+'nologin' => 'Belum mempunyai akun? $1.',
 'nologinlink' => 'Daftarkan akun baru',
 'createaccount' => 'Buat akun baru',
 'gotaccount' => "Sudah terdaftar sebagai pengguna? '''$1'''.",
@@ -902,8 +902,10 @@ Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sa
 'resetpass-abort-generic' => 'Perubahan kata sandi telah dibatalkan oleh ekstensi.',
 
 # Special:PasswordReset
-'passwordreset' => 'Setel ulang sandi',
-'passwordreset-legend' => 'Setel ulang sandi',
+'passwordreset' => 'Setel ulang kata sandi',
+'passwordreset-text-one' => 'Lengkapi formulir ini untuk menyetel ulang kata sandi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Masukkan data di bawah ini untuk menyetel ulang kata sandi Anda.}}',
+'passwordreset-legend' => 'Setel ulang kata sandi',
 'passwordreset-disabled' => 'Penyetelan ulang sandi telah dimatikan di wiki ini.',
 'passwordreset-emaildisabled' => 'Fitur surel telah dinonaktifkan pada wiki ini.',
 'passwordreset-username' => 'Nama pengguna:',
@@ -1391,7 +1393,6 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'searchmenu-legend' => 'Opsi pencarian',
 'searchmenu-exists' => "* Halaman '''[[$1]]'''",
 'searchmenu-new' => "'''Buat halaman \"[[:\$1]]\" di wiki ini!'''",
-'searchhelp-url' => 'Help:Isi',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Lihat daftar halaman dengan awalan ini]]',
 'searchprofile-articles' => 'Halaman isi',
 'searchprofile-project' => 'Halaman Bantuan dan Proyek',
@@ -1718,8 +1719,8 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'nchanges' => '$1 {{PLURAL:$1|perubahan|perubahan}}',
 'recentchanges' => 'Perubahan terbaru',
 'recentchanges-legend' => 'Opsi perubahan terbaru',
-'recentchanges-summary' => "Temukan perubahan terbaru dalam wiki di halaman ini. Keterangan: (beda) = perubahan, (versi) = sejarah revisi, '''B''' = halaman baru, '''k''' = suntingan kecil, '''b''' = suntingan bot, (± ''bita'') = jumlah penambahan/pengurangan isi, → = suntingan bagian, ← = ringkasan otomatis.
-----",
+'recentchanges-summary' => "Temukan perubahan terbaru dalam wiki di halaman ini.<br />
+;Keterangan:(<span style=\"color:blue;\">beda</span>) perubahan, (<span style=\"color:blue;\">versi</span>) sejarah revisi, '''B''' halaman baru, '''b''' suntingan bot, '''k''' suntingan kecil, <span class=\"unpatrolled\">!</span> perubahan belum dipatroli,<br /><span style=\"color:green;\">'''(+ ''bita'')'''</span> isi konten bertambah, <span style=\"color:red;\">(- ''bita'')</span> isi konten berkurang, (← Ringkasan otomatis), (→ <span style=\"color:grey;\">Suntingan bagian</span>)",
 'recentchanges-feed-description' => 'Temukan perubahan terbaru dalam wiki di umpan ini.',
 'recentchanges-label-newpage' => 'Suntingan ini membuat halaman baru',
 'recentchanges-label-minor' => 'Ini adalah suntingan kecil',
@@ -2650,7 +2651,7 @@ $1',
 'mycontris' => 'Kontribusi',
 'contribsub2' => 'Untuk $1 ($2)',
 'nocontribs' => 'Tidak ada perubahan yang sesuai dengan kriteria tersebut.',
-'uctop' => ' (atas)',
+'uctop' => '(saat ini)',
 'month' => 'Sejak bulan (dan sebelumnya):',
 'year' => 'Sejak tahun (dan sebelumnya):',
 
index 31f7d1f..3477f08 100644 (file)
@@ -346,7 +346,6 @@ $1',
 'disclaimers' => 'Advertimentes',
 'disclaimerpage' => 'Project:Advertimentes comun',
 'edithelp' => 'Redacter auxilie',
-'edithelppage' => 'Help:Redactant',
 'helppage' => 'Help:Contenete',
 'mainpage' => 'Págine principal',
 'mainpage-description' => 'Págine principal',
@@ -624,7 +623,6 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Vi un págine nominat \"[[:\$1]]\" in ti wiki.'''",
 'searchmenu-new' => "'''Crear li págine \"[[:\$1]]\" in ti wiki!'''",
-'searchhelp-url' => 'Help:Contenete',
 'searchprofile-articles' => 'Págines de contenete',
 'searchprofile-project' => 'Auxilie e Págines de projecte',
 'searchprofile-images' => 'Multimedia',
index 0157257..0873601 100644 (file)
@@ -312,7 +312,6 @@ $1',
 'disclaimers' => 'Ihe anyí chọrọ ki ma',
 'disclaimerpage' => 'Project:Ihe I kweshiri ma',
 'edithelp' => 'Inyetuáká I rüwa',
-'edithelppage' => 'Help: I rüwa',
 'helppage' => 'Help: Ihe di ime',
 'mainpage' => 'Ihü Mbu',
 'mainpage-description' => 'Ihü Mbu',
@@ -713,7 +712,6 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'viewprevnext' => 'Lé ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Màkà nchöwa',
 'searchmenu-new' => "'''Ké ihü \"[[:\$1]]\" na wiki nke á!'''",
-'searchhelp-url' => 'Help:Ihe di ime',
 'searchprofile-articles' => 'Ihü ihe dị',
 'searchprofile-project' => 'Ihü Nkwádo na Orürü',
 'searchprofile-images' => 'Nkaníle',
index d19a789..9679b1b 100644 (file)
@@ -288,7 +288,6 @@ $1',
 'disclaimers' => 'Dagiti renunsia',
 'disclaimerpage' => 'Project:Sapasap ti karbengan ken rebbeng',
 'edithelp' => 'Tulong ti panag-urnos',
-'edithelppage' => 'Help:Panag-urnos',
 'helppage' => 'Help:Dagiti linaon',
 'mainpage' => 'Umuna a Panid',
 'mainpage-description' => 'Umuna a Panid',
@@ -489,10 +488,10 @@ Dimo liplipatan a sukatan dagiti kakaykayatam idiay [[Special:Preferences|{{SITE
 'userlogout' => 'Rummuar',
 'notloggedin' => 'Saan a nakastrek',
 'userlogin-noaccount' => 'Awan ti pakabilangam?',
-'userlogin-joinproject' => 'Tumipon {{SITENAME}}',
-'nologin' => "Awan kadi pay ti pakabilangam? '''$1'''.",
+'userlogin-joinproject' => 'Tumipon iti {{SITENAME}}',
+'nologin' => "Awan ti pakabilangam? '''$1'''.",
 'nologinlink' => 'Agaramid ti pakabilangan',
-'createaccount' => 'Agaramiden ti pakabilangan',
+'createaccount' => 'Agaramid ti pakabilangan',
 'gotaccount' => "Addaanka kadin ti pakabilangam? '''$1'''.",
 'gotaccountlink' => 'Sumrek',
 'userlogin-resetlink' => 'Nalipatam dagiti salaysay ti pagserrekmo?',
@@ -621,6 +620,8 @@ Mabalin a nagballigi ti panagsukatmo ti kontrasenias wenno nagkiddaw ti baro a t
 
 # Special:PasswordReset
 'passwordreset' => 'Ipasubli ti kontrasenias',
+'passwordreset-text-one' => 'Lippasem daytoy a porma tapno maidisso manen ti bukodmo a kontrasenias.',
+'passwordreset-text-many' => '{{PLURAL:$1|Ikabil ti maysa kadagiti pirgis ti datos tapno maiyasentar manen ti bukodmo a kontrasenias.}}',
 'passwordreset-legend' => 'Ipasubli ti kontrasenias',
 'passwordreset-disabled' => 'Nabaldado dagiti panagisubli ti kontrasenias iti daytoy a wiki.',
 'passwordreset-emaildisabled' => 'Dagiti langa ti esurat ket nabaldado iti daytoy a wiki.',
@@ -1125,7 +1126,6 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'searchmenu-legend' => 'Pagpilian ti panagbiruk',
 'searchmenu-exists' => "'''Adda panid a nanaganan ti \"[[:\$1]]\" iti daytoy a wiki.'''",
 'searchmenu-new' => "'''Partuaten ti panid ti \"[[:\$1]]\" iti daytoy a wiki!'''",
-'searchhelp-url' => 'Help:Dagiti linaon',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda kastoy a naipasaruno]]',
 'searchprofile-articles' => 'Dagiti naglaon a panid',
 'searchprofile-project' => 'Tulong ken Gandat a pam-panid',
@@ -1210,7 +1210,7 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
 'stub-threshold' => 'Pangruggian ti <a href="#" class="stub">pungol a panilpo</a>panagporma (dagiti byte):',
 'stub-threshold-disabled' => 'Nabaldado',
-'recentchangesdays' => 'Alaldaw nga ipakita dagiti kinaudi a binalbaliwan:',
+'recentchangesdays' => 'Al-aldaw nga ipakita dagiti kinaudi a binalbaliwan:',
 'recentchangesdays-max' => 'Kabayag nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}',
 'recentchangescount' => 'Dagiti bilang dagiti naurnos a kinasigud a maiparang:',
 'prefs-help-recentchangescount' => 'Nairaman dagiti kinaudian a baliwan, dagiti pakasaritaan ti panid, ken dagiti listaan.',
index 7e69b43..7fa36f2 100644 (file)
@@ -246,7 +246,6 @@ $messages = array(
 'disclaimers' => 'Бокъонах юхавалаp',
 'disclaimerpage' => 'Project:Бокъонах юхавалаp',
 'edithelp' => 'Хувцама куцтохкам',
-'edithelppage' => 'Help:ГӀалатнийсдар',
 'helppage' => 'Help:Чулоацам',
 'mainpage' => 'Кертера оагӀув',
 'mainpage-description' => 'Кертера оагӀув',
@@ -521,7 +520,6 @@ $messages = array(
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) хьажа',
 'searchmenu-exists' => "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:\$1]]\" я'''",
 'searchmenu-new' => "'''Укх \"[[:\$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
-'searchhelp-url' => 'Help:Чулоацам',
 'searchprofile-articles' => 'Гомлен оагIувнаш',
 'searchprofile-project' => 'Дагарлеи хьахоадайтами оагIувнаш',
 'searchprofile-images' => 'Медифаг',
index c2b2f50..33cc816 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Albonio
  * @author Artomo
+ * @author Geitost
  * @author Kaganer
  * @author Lakaoso
  * @author Malafaya
@@ -224,7 +225,7 @@ $messages = array(
 'cancel' => 'Anular',
 'moredotdotdot' => 'Plus...',
 'mypage' => 'Mea pagino',
-'mytalk' => 'Mea diskuti',
+'mytalk' => 'Diskuti',
 'anontalk' => 'Diskuto relatant ad ica IP',
 'navigation' => 'Navigado',
 'and' => '&#32;ed',
@@ -316,7 +317,6 @@ $messages = array(
 'disclaimers' => 'Legala averto',
 'disclaimerpage' => 'Project:Generala des-agnosko',
 'edithelp' => 'Helpo pri redaktado',
-'edithelppage' => 'Help:Redaktado',
 'helppage' => 'Help:Helpo',
 'mainpage' => 'Frontispico',
 'mainpage-description' => 'Frontispico',
@@ -422,7 +422,7 @@ Atencez ke kelka pagini posible duras montresar semblante ke vu ne ekirus, til v
 'logout' => 'Ekirar',
 'userlogout' => 'Ekirar',
 'notloggedin' => 'Sesiono ne esas iniciata',
-'nologin' => "Ka vu ne havas konto? '''$1'''.",
+'nologin' => 'Ka vu ne havas konto? $1.',
 'nologinlink' => 'Kreez konto',
 'createaccount' => 'Krear nova konto',
 'gotaccount' => "Ka vu ja havas konto? '''$1'''.",
@@ -474,6 +474,9 @@ Voluntez enirar altrafoye pos recevar ol.',
 # Special:PasswordReset
 'passwordreset-username' => 'Uzantonomo:',
 
+# Special:ChangeEmail
+'changeemail' => 'Chanjar e-adreso*',
+
 # Edit page toolbar
 'bold_sample' => 'Dika literi',
 'bold_tip' => 'Dika literi',
@@ -596,6 +599,7 @@ La efaco-registraro e movo-registraro dil pagino provizesar sequante por refero.
 Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 '''({{int:last}})''' = diferi kun l'antea versiono,
 '''{{int:minoreditletter}}''' = mikra redakto.",
+'history-show-deleted' => 'Nur efacita',
 'histfirst' => 'Maxim anciena',
 'histlast' => 'Maxim nova',
 'historysize' => '({{PLURAL:$1|1 bicoko|$1 bicoki}})',
@@ -648,9 +652,10 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 'notextmatches' => 'Nula paginala texto fitas',
 'prevn' => 'antea {{PLURAL:$1|$1}}',
 'nextn' => 'sequanta {{PLURAL:$1|$1}}',
+'prevn-title' => 'Antea $1 {{PLURAL:$1|rezultajo|rezultaji}}',
+'nextn-title' => 'Sequanta $1 {{PLURAL:$1|rezultajo|rezultaji}}',
 'viewprevnext' => 'Vidar ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-new' => "'''Kreez la pagino \"[[:\$1]]\" in ca wiki!'''",
-'searchhelp-url' => 'Help:Helpo',
 'searchprofile-articles' => 'Temala pagini',
 'searchprofile-project' => 'Helpo',
 'searchprofile-images' => "''Media''",
@@ -669,6 +674,7 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 'searchall' => 'omna',
 'showingresults' => "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.",
 'showingresultsnum' => "Montrante infre {{PLURAL:$3|'''1''' rezulto|'''$3''' rezulti}}, qui komencas kun numero #'''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|Rezultajo '''$1''' ek '''$3'''|Rezultaji '''$1 - $2''' ek '''$3'''}} di '''$4'''",
 'nonefound' => "'''Atencez''': Nespecigite, nur ula nomari esas serchata.
 Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzanta debato-pagini, shabloni, edc.), od uzar la dezirata nomaro kom prefixo.",
 'powersearch' => 'Avancita sercho',
@@ -683,7 +689,7 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 
 # Preferences page
 'preferences' => 'Preferaji',
-'mypreferences' => 'Mea preferaji',
+'mypreferences' => 'Preferaji',
 'prefs-edits' => 'Nombro di redaktaji:',
 'prefsnologin' => 'Vu ne eniris',
 'prefsnologintext' => 'Vu mustas <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} enirir]</span> por establisar la preferaji.',
@@ -889,7 +895,7 @@ Volutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.
 'filehist-dimensions' => 'Dimensioni',
 'filehist-filesize' => 'Grandeso dil arkivo',
 'filehist-comment' => 'Komento',
-'imagelinks' => 'Ligili al arkivo',
+'imagelinks' => 'Uzadi di arkivo',
 'linkstoimage' => 'La {{PLURAL:$1|pagino|$1 pagini}} infre ligas a ca arkivo:',
 'nolinkstoimage' => 'Nula pagino ligas a ca pagino.',
 'sharedupload' => 'Ca arkivo esas de $1 e posible esas uzata da altra projekti.',
@@ -970,7 +976,7 @@ Volutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.
 'protectedtitles' => 'Protektita tituli',
 'listusers' => 'Uzanto-listo',
 'usereditcount' => '$1 {{PLURAL:$1|redakto|redakti}}',
-'usercreated' => 'Kreita ye $1 $2',
+'usercreated' => '{{GENDER:$3|Kreita}} ye $1 $2',
 'newpages' => 'Nova pagini',
 'newpages-username' => 'Uzantonomo:',
 'ancientpages' => 'Maxim anciena artikli',
@@ -1046,8 +1052,8 @@ Volutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.
 'emailsenttext' => 'Vua e-posto sendesis.',
 
 # Watchlist
-'watchlist' => 'Mea surveyaji',
-'mywatchlist' => 'Mea surveyaji',
+'watchlist' => 'Surveyaji',
+'mywatchlist' => 'Surveyaji',
 'nowatchlist' => 'Vu ne havas objekti en vua listo di surveyaji.',
 'watchnologin' => 'Vu ne startis sesiono',
 'watchnologintext' => 'Vu mustas [[Special:UserLogin|enirir]] por modifikar vua surveyaji.',
@@ -1165,12 +1171,12 @@ restauris ad lasta versiono da $2.',
 'blanknamespace' => '(Chefa)',
 
 # Contributions
-'contributions' => 'Kontributadi dil uzanto',
+'contributions' => 'Kontributadi dil {{GENDER:$1|uzanto}}',
 'contributions-title' => 'Uzanto-kontributadi di $1',
-'mycontris' => 'Mea kontributadi',
+'mycontris' => 'Kontributadi',
 'contribsub2' => 'Pro $1 ($2)',
 'nocontribs' => 'Ne trovesis chanji qui fitez ita kriterii.',
-'uctop' => ' (lasta modifiko)',
+'uctop' => '(aktuala)',
 'month' => 'De monato (e plu frue):',
 'year' => 'De yaro (e plu frue):',
 
@@ -1178,6 +1184,7 @@ restauris ad lasta versiono da $2.',
 'sp-contributions-newbies-sub' => 'Di nova konti',
 'sp-contributions-blocklog' => 'blokusar-registraro',
 'sp-contributions-deleted' => 'efacita uzanto-kontributadi',
+'sp-contributions-logs' => 'registrari',
 'sp-contributions-talk' => 'diskutez',
 'sp-contributions-search' => 'Serchar kontributadi',
 'sp-contributions-username' => 'IP-adreso od uzantonomo:',
@@ -1191,13 +1198,14 @@ restauris ad lasta versiono da $2.',
 'nolinkshere' => "Nula pagino ligas ad '''[[:$1]]'''.",
 'isredirect' => 'ridirektanta pagino',
 'istemplate' => 'inkluzo',
-'isimage' => 'imajo-ligilo',
+'isimage' => 'arkivo-ligilo',
 'whatlinkshere-prev' => '{{PLURAL:$1|antea|antea $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sequanta|sequanta $1}}',
 'whatlinkshere-links' => '← ligili',
 'whatlinkshere-hideredirs' => '$1 ridirektili',
+'whatlinkshere-hidetrans' => '$1 inkluzi',
 'whatlinkshere-hidelinks' => '$1 ligili',
-'whatlinkshere-hideimages' => '$1 ligili di imaji',
+'whatlinkshere-hideimages' => '$1 ligili di arkivi',
 'whatlinkshere-filters' => 'Filtrili',
 
 # Block/unblock
@@ -1229,7 +1237,7 @@ Videz [[Special:BlockList|IP-blokuslisto]] por revizor blokusadi.',
 'unblockip' => 'Desblokusar uzanto',
 'unblockiptext' => 'Uzez la sequanta formularo por restaurar la skribo-aceso ad IP-adreso qua blokusesis antee.',
 'ipusubmit' => 'Desblokusar',
-'ipblocklist' => 'Blokusita IP-adresi ed uzantonomi',
+'ipblocklist' => 'Blokusita uzanti',
 'ipblocklist-submit' => 'Serchar',
 'blocklink' => 'blokusar',
 'unblocklink' => 'desblokusar',
index 36df20f..11f0d32 100644 (file)
@@ -10,6 +10,7 @@
  * @author Bjarki S
  * @author Cessator
  * @author Friðrik Bragi Dýrfjörð
+ * @author Geitost
  * @author Gott wisst
  * @author Jóna Þórunn
  * @author Kaganer
@@ -434,6 +435,7 @@ $messages = array(
 'create-this-page' => 'Skapa þessari síðu',
 'delete' => 'Eyða',
 'deletethispage' => 'Eyða þessari síðu',
+'undeletethispage' => 'Endurvekja þessa síðu',
 'undelete_short' => 'Endurvekja {{PLURAL:$1|eina breytingu|$1 breytingar}}',
 'viewdeleted_short' => 'Skoða {{PLURAL:$1|eina eydda breytingu|$1 eyddar breytingar}}',
 'protect' => 'Vernda',
@@ -487,7 +489,6 @@ $1',
 'disclaimers' => 'Fyrirvarar',
 'disclaimerpage' => 'Project:Almennur fyrirvari',
 'edithelp' => 'Breytingarhjálp',
-'edithelppage' => 'Help:Breyta',
 'helppage' => 'Help:Efnisyfirlit',
 'mainpage' => 'Forsíða',
 'mainpage-description' => 'Forsíða',
@@ -634,6 +635,8 @@ $2',
 'namespaceprotected' => "Þú hefur ekki leyfi til að breyta síðum í '''$1''' nafnrýminu.",
 'customcssprotected' => 'Þú hefur ekki leyfi að breyta þessari CSS-umbrotsíðu, því hún hefur notendastillingar annars notanda.',
 'customjsprotected' => 'Þú hefur ekki leyfi til að breyta þessari JavaScript síðu, því hún hefur notendastillingar annars notanda.',
+'mycustomcssprotected' => 'Þú hefur ekki leyfi til þess að breyta þessari CSS-síðu.',
+'mycustomjsprotected' => 'Þú hefur ekki leyfi til þess að breyta þessari JavaScript-síðu.',
 'ns-specialprotected' => 'Kerfissíðum er ekki hægt að breyta.',
 'titleprotected' => "Þessi titill hefur verið verndaður fyrir sköpun af [[User:$1|$1]].
 Ástæðan sem gefin var ''$2''.",
@@ -684,7 +687,8 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}} stillingunum]] þínum
 'userlogout' => 'Útskrá',
 'notloggedin' => 'Ekki innskráð(ur)',
 'userlogin-noaccount' => 'Áttu ekki aðgang?',
-'nologin' => "Ekki með aðgang? '''$1'''.",
+'userlogin-joinproject' => 'Sameina {{SITENAME}}',
+'nologin' => 'Ekki með aðgang? $1.',
 'nologinlink' => 'Stofnaðu aðgang',
 'createaccount' => 'Nýskrá',
 'gotaccount' => "Nú þegar með notandanafn? '''$1'''.",
@@ -708,6 +712,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}} stillingunum]] þínum
 'createacct-benefit-heading' => '{{SITENAME}} er skrifuð af fólki eins og þér.',
 'createacct-benefit-body1' => '{{PLURAL:$1|breyting|breytingar}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|síða|síður}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|nýlegur stuðningsaðili|nýlegir stuðningsaðilar}}',
 'badretype' => 'Lykilorðin sem þú skrifaðir eru ekki eins.',
 'userexists' => 'Þetta notandanafn er þegar í notkun.
 Vinsamlegast veldu þér annað.',
@@ -765,7 +770,7 @@ Gjörðu svo vel og settu inn netfang á gildu formi eða tæmdu reitinn.',
 'cannotchangeemail' => 'Ekki er hægt að breyta netföngum notenda á þessum wiki',
 'emaildisabled' => 'Þessi síða getur ekki sent tölvupóst.',
 'accountcreated' => 'Aðgangur búinn til',
-'accountcreatedtext' => 'Notandaaðgangur fyrir $1 er tilbúinn.',
+'accountcreatedtext' => 'Notandaaðgangurinn fyrir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|spjall]]) hefur verið búinn til.',
 'createaccount-title' => 'Innskráningagerð á {{SITENAME}}',
 'createaccount-text' => 'Einhver bjó til aðgang fyrir netfangið þitt á {{SITENAME}} ($4) undir nafninu „$2“, með lykilorðið „$3“.
 Þú ættir að skrá þig inn og breyta lykilorðinu núna.
@@ -801,11 +806,14 @@ Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hé
 'resetpass-wrong-oldpass' => 'Vitlaust tímabundið eða núverandi lykilorð.
 Þú gætir þegar verið búin/n að breyta lykilorðinu eða sótt um nýtt tímabundið lykilorð',
 'resetpass-temp-password' => 'Tímabundið lykilorð:',
+'resetpass-abort-generic' => 'Breytingum á lykilorðum hefur verið hætt með viðbót.',
 
 # Special:PasswordReset
 'passwordreset' => 'Endurstilla lykilorð',
+'passwordreset-text-one' => 'Útfylltu þetta eyðublað til þess að endursetja lykilorðið.',
 'passwordreset-legend' => 'Endurstilla lykilorð',
 'passwordreset-disabled' => 'Lokað hefur verið fyrir að endurstilla lykilorð á þessum wiki.',
+'passwordreset-emaildisabled' => 'Tölvupósteiginleikar hafa verið gerðir óvirkir á þessum wiki.',
 'passwordreset-username' => 'Notandanafn:',
 'passwordreset-domain' => 'Lén:',
 'passwordreset-capture' => 'Sjá áminninguna sem var send í tölvupósti?',
@@ -1292,7 +1300,6 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searchmenu-legend' => 'Leitarvalmöguleikar',
 'searchmenu-exists' => "'''Það er síða að nafni „[[:$1]]“ á þessum wiki'''",
 'searchmenu-new' => "'''Skapaðu síðuna \"[[:\$1]]\" á þessum wiki!'''",
-'searchhelp-url' => 'Help:Efnisyfirlit',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita að síðum með þessu forskeyti]]',
 'searchprofile-articles' => 'Efnissíður',
 'searchprofile-project' => 'Hjálpar- og verkefnasíður',
@@ -1335,6 +1342,7 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searchdisabled' => '{{SITENAME}}-leit er óvirk.
 Þú getur leitað í genum Google á meðan.
 Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
+'search-error' => 'Villa kom upp við leit að: $1',
 
 # Preferences page
 'preferences' => 'Stillingar',
@@ -1548,6 +1556,8 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'right-editusercssjs' => 'Breyta CSS- og JS-skrám annarra',
 'right-editusercss' => 'Breyta CSS-skrám annarra',
 'right-edituserjs' => 'Breyta JS-skrám annarra',
+'right-editmyusercss' => 'Breyta þinni eigin CSS-notandaskrá',
+'right-editmyuserjs' => 'Breyta þinni eigin JavaScript-notandaskrá',
 'right-rollback' => 'Taka snögglega aftur breytingar síðasta notanda sem breytti síðunni',
 'right-markbotedits' => 'Merkja endurtektar breytingar sem vélmennabreytingar',
 'right-noratelimit' => 'Sneiða hjá takmörkunum',
@@ -1786,7 +1796,7 @@ $1',
 'upload-proto-error-text' => 'Upphlöðun frá öðrum vefþjón þarfnast vefslóðar sem byrjar á <code>http://</code> eða <code>ftp://</code>.',
 'upload-file-error' => 'Innri villa',
 'upload-file-error-text' => 'Innri villa: Gat ekki búið til tímabundna skrá á vefþjóni.
-Vinsamlegast hafðu samband við [[Special:ListUsers/sysop|möppudýr]].',
+Vinsamlegast hafðu samband við [[Special:ListUsers/sysop|stjórnanda]].',
 'upload-misc-error' => 'Óþekkt innhleðsluvilla',
 'upload-misc-error-text' => 'Upphal þitt mistókst vegna óþekktrar villu.
 Athugaðu hvort vefslóðin sé rétt og aðgengileg og að því loknu reyndu aftur.
@@ -2042,6 +2052,8 @@ Leitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <code>i
 Laga ætti tenglanna og láta þá vísa á rétta síðu.<br />
 Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem vísað er í frá [[MediaWiki:Disambiguationspage]]",
 
+'pageswithprop-submit' => 'Áfram',
+
 'doubleredirects' => 'Tvöfaldar tilvísanir',
 'doubleredirectstext' => 'Þessi síða er listi yfir skrár sem eru tilvísanir á aðrar tilvísanir.
 Hver lína inniheldur tengla á fyrstu og aðra tilvísun auk þeirrar síðu sem seinni tilvísunin beinist að, sem er oftast sú síða sem allar tilvísanirnar eiga að benda á.
@@ -2546,7 +2558,7 @@ $1',
 'mycontris' => 'Framlög',
 'contribsub2' => 'Eftir $1 ($2)',
 'nocontribs' => 'Engar breytingar fundnar sem passa við þessa viðmiðun.',
-'uctop' => '(nýjast)',
+'uctop' => '(núverandi)',
 'month' => 'Frá mánuðinum (og fyrr):',
 'year' => 'Frá árinu (og fyrr):',
 
@@ -2871,6 +2883,8 @@ Vinsamlegast heimsæktu [//www.mediawiki.org/wiki/Localisation MediaWiki-staðf
 'thumbnail-more' => 'Stækka',
 'filemissing' => 'Skrá vantar',
 'thumbnail_error' => 'Villa við gerð smámyndar: $1',
+'thumbnail_error_remote' => 'Villumelding frá $1:
+$2',
 'djvu_page_error' => 'DjVu-blaðsíða er utan marka',
 'djvu_no_xml' => 'Mistókst að sækja XML-gögn fyrir DjVu skrá',
 'thumbnail-temp-create' => 'Mistókst að búa til tímabundna smámynd.',
@@ -3175,11 +3189,25 @@ Vinsamlegast reyndu aftur.',
 'minutes' => '{{PLURAL:$1|einni mínútu|$1 mínútum}}',
 'hours' => '{{PLURAL:$1|einum klukkutíma|$1 klukkutímum}}',
 'days' => '{{PLURAL:$1|einum degi|$1 dögum}}',
+'weeks' => '{{PLURAL:$1|$1 vika|$1 vikur}}',
 'months' => '{{PLURAL:$1|$1 mánuði|$1 mánuðum}}',
 'years' => '{{PLURAL:$1|$1 ári|$1 árum}}',
 'ago' => '$1 síðan',
 'just-now' => 'akkúrat núna',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|klukkutíma|klukkutímum}} síðan',
+'minutes-ago' => '$1 {{PLURAL:$1|mínútu|mínútum}} síðan',
+'seconds-ago' => '$1 {{PLURAL:$1|sekúndu|sekúndum}} síðan',
+'monday-at' => 'Mánudag klukkan $1',
+'tuesday-at' => 'Þriðjudag klukkan $1',
+'wednesday-at' => 'Miðvikudag klukkan $1',
+'thursday-at' => 'Fimmtudag klukkan $1',
+'friday-at' => 'Föstudag klukkan $1',
+'saturday-at' => 'Laugardag klukkan $1',
+'sunday-at' => 'Sunnudag klukkan $1',
+'yesterday-at' => 'Í gær klukkan $1',
+
 # Bad image list
 'bad_image_list' => 'Sniðið er eftirfarandi:
 
@@ -3745,6 +3773,14 @@ MediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÁN ALLRAR ÁBYR
 'version-software-version' => 'Útgáfa',
 'version-entrypoints-header-url' => 'vefslóð',
 
+# Special:Redirect
+'redirect-submit' => 'Áfram',
+'redirect-lookup' => 'Fletta upp:',
+'redirect-value' => 'Gildi:',
+'redirect-user' => 'Notandanúmer',
+'redirect-file' => 'Skráarnafn',
+'redirect-not-exists' => 'Gildi fannst ekki',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Leita að afriti',
 'fileduplicatesearch-summary' => 'Leita að afritum sem hafa sama hakk gildi.',
@@ -3834,6 +3870,9 @@ Tæknilegir örðugleikar eru á þessari síðu.',
 'htmlform-submit' => 'Senda',
 'htmlform-reset' => 'Taka aftur breytingu',
 'htmlform-selectorother-other' => 'Annað',
+'htmlform-no' => 'Nei',
+'htmlform-yes' => 'Já',
+'htmlform-chosen-placeholder' => 'Veldu valmöguleika',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 með fullum texta leitar stuðningi',
index 78cd685..0378c06 100644 (file)
@@ -28,6 +28,7 @@
  * @author F. Cosoleto
  * @author Felis
  * @author FollowTheMedia
+ * @author Geitost
  * @author Gianfranco
  * @author HalphaZ
  * @author Jasonbleinel
@@ -487,6 +488,7 @@ $messages = array(
 'create-this-page' => 'Crea questa pagina',
 'delete' => 'Cancella',
 'deletethispage' => 'Cancella questa pagina',
+'undeletethispage' => 'Recupera questa pagina',
 'undelete_short' => 'Recupera {{PLURAL:$1|una revisione|$1 revisioni}}',
 'viewdeleted_short' => 'Vedi {{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}',
 'protect' => 'Proteggi',
@@ -540,7 +542,6 @@ $1',
 'disclaimers' => 'Avvertenze',
 'disclaimerpage' => 'Project:Avvertenze generali',
 'edithelp' => 'Guida',
-'edithelppage' => 'Help:Modifica',
 'helppage' => 'Help:Indice',
 'mainpage' => 'Pagina principale',
 'mainpage-description' => 'Pagina principale',
@@ -687,6 +688,8 @@ $2',
 'namespaceprotected' => "Non si dispone dei permessi necessari per modificare le pagine del namespace '''$1'''.",
 'customcssprotected' => 'Non si dispone dei permessi necessari alla modifica di questa pagina CSS, in quanto contiene le impostazioni personali di un altro utente.',
 'customjsprotected' => 'Non si dispone dei permessi necessari alla modifica di questa pagina JavaScript, in quanto contiene le impostazioni personali di un altro utente.',
+'mycustomcssprotected' => 'Non si dispone dei permessi necessari per modificare questa pagina CSS.',
+'mycustomjsprotected' => 'Non si dispone dei permessi necessari per modificare questa pagina JavaScript.',
 'ns-specialprotected' => 'Non è possibile modificare le pagine speciali.',
 'titleprotected' => "La creazione di una pagina con questo titolo è stata bloccata da [[User:$1|$1]].
 La motivazione è la seguente: ''$2''.",
@@ -813,7 +816,7 @@ Non verranno inviati messaggi email per le funzioni elencate di seguito.",
 'cannotchangeemail' => 'Gli indirizzi e-mail non possono essere modificati in questo wiki.',
 'emaildisabled' => 'Questo sito non può inviare messaggi di posta elettronica.',
 'accountcreated' => 'Accesso creato',
-'accountcreatedtext' => "È stato creato un accesso per l'utente $1.",
+'accountcreatedtext' => "È stata creata un'utenza per [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|msg]]).",
 'createaccount-title' => 'Creazione di un accesso a {{SITENAME}}',
 'createaccount-text' => 'Qualcuno ha creato un accesso a {{SITENAME}} ($4) a nome di $2, associato a questo indirizzo di posta elettronica. La password per l\'utente "$2" è impostata a "$3".
 È opportuno eseguire un accesso quanto prima e cambiare la password immediatamente.
@@ -853,6 +856,7 @@ La password potrebbe essere stata già cambiata, oppure potrebbe essere stata ri
 # Special:PasswordReset
 'passwordreset' => 'Reimposta password',
 'passwordreset-text-one' => 'Compila questo modulo per reimpostare la tua password.',
+'passwordreset-text-many' => '{{PLURAL:$1|Compila uno dei campi per reimpostare la tua password.}}',
 'passwordreset-legend' => 'Reimposta password',
 'passwordreset-disabled' => 'La reimpostazione delle password è stata disabilitata su questa wiki',
 'passwordreset-emaildisabled' => 'Le funzionalità di posta elettronica sono state disabilitate su questa wiki.',
@@ -980,7 +984,8 @@ La password per questo nuovo account può essere modificata all'accesso nella pa
 'newarticletext' => "Il collegamento appena seguito corrisponde ad una pagina non ancora esistente.
 Se vuoi creare la pagina ora, basta cominciare a scrivere il testo nella casella qui sotto (vedi la [[{{MediaWiki:Helppage}}|pagina di aiuto]] per maggiori informazioni).
 Se il collegamento è stato aperto per errore, è sufficiente fare clic sul pulsante '''Indietro''' del proprio browser.",
-'anontalkpagetext' => "----''Questa è la pagina di discussione di un utente anonimo, che non ha ancora creato un accesso o comunque non lo usa. Per identificarlo è quindi necessario usare il numero del suo indirizzo IP. Gli indirizzi IP possono però essere condivisi da più utenti. Se sei un utente anonimo e ritieni che i commenti presenti in questa pagina non si riferiscano a te, [[Special:UserLogin/signup|crea un nuovo accesso]] o [[Special:UserLogin|entra con quello che già hai]] per evitare di essere confuso con altri utenti anonimi in futuro.''",
+'anontalkpagetext' => "----
+''Questa è la pagina di discussione di un utente anonimo, che non ha ancora creato un'utenza o comunque non la sta usando. Per identificarlo è quindi necessario usare il numero del suo indirizzo IP. Gli indirizzi IP possono però essere condivisi da più utenti. Se sei un utente anonimo e ritieni che i commenti presenti in questa pagina non si riferiscano a te, [[Special:UserLogin/signup|crea una nuova utenza]] o [[Special:UserLogin|entra con quella che già hai]] per evitare di essere confuso con altri utenti anonimi in futuro.''",
 'noarticletext' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati] oppure [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificare la pagina ora]</span>.',
 'noarticletext-nopermission' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati]</span>, ma non hai i permessi per creare questa pagina.',
 'missing-revision' => 'La revisione #$1 della pagina "{{PAGENAME}}" non esiste.
@@ -1325,7 +1330,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'searchmenu-legend' => 'Opzioni di ricerca',
 'searchmenu-exists' => "'''Sul sito esiste una pagina il cui nome è \"[[:\$1]]\"'''",
 'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
-'searchhelp-url' => 'Help:Indice',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza le pagine con questo prefisso]]',
 'searchprofile-articles' => 'Pagine di contenuti',
 'searchprofile-project' => 'Pagine di aiuto e relative al progetto',
@@ -1508,6 +1512,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'userrights-changeable-col' => 'Gruppi modificabili',
 'userrights-unchangeable-col' => 'Gruppi non modificabili',
 'userrights-conflict' => 'Conflitto di diritti utente! Applica nuovamente le tue modifiche.',
+'userrights-removed-self' => 'Hai rimosso con successo i tuoi diritti. E quindi, non sarai più in grado di accedere a questa pagina.',
 
 # Groups
 'group' => 'Gruppo:',
@@ -1517,7 +1522,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'group-sysop' => 'Amministratori',
 'group-bureaucrat' => 'Burocrati',
 'group-suppress' => 'Oversight',
-'group-all' => 'Utenti',
+'group-all' => '(tutti)',
 
 'group-user-member' => '{{GENDER:$1|utente}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|utente autoconvalidato|utente autoconvalidata|utente autoconvalidato/a}}',
@@ -1578,6 +1583,8 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'right-editusercssjs' => 'Modifica i file CSS e JS di altri utenti',
 'right-editusercss' => 'Modifica i file CSS di altri utenti',
 'right-edituserjs' => 'Modifica i file JS di altri utenti',
+'right-editmyusercss' => 'Modifica il file CSS del proprio utente',
+'right-editmyuserjs' => 'Modifica il file JavaScript del proprio utente',
 'right-rollback' => "Annulla rapidamente le modifiche dell'ultimo utente che ha modificato una particolare pagina",
 'right-markbotedits' => 'Segna le modifiche soggette a rollback come effettuate da bot',
 'right-noratelimit' => 'Non soggetto al limite di azioni',
@@ -1623,7 +1630,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'action-deleterevision' => 'cancellare questa versione',
 'action-deletedhistory' => 'visualizzare la cronologia cancellata di questa pagina',
 'action-browsearchive' => 'cercare pagine cancellate',
-'action-undelete' => 'recuperare custa pàgina',
+'action-undelete' => 'recuperare questa pagina',
 'action-suppressrevision' => 'rivedere e ripristinare le modifiche nascoste',
 'action-suppressionlog' => 'visionare questo log privato',
 'action-block' => 'bloccare questo utente in scrittura',
@@ -1814,9 +1821,9 @@ $1',
 'upload-proto-error' => 'Protocollo errato',
 'upload-proto-error-text' => "Per l'upload remoto è necessario specificare URL che iniziano con <code>http://</code> oppure <code>ftp://</code>.",
 'upload-file-error' => 'Errore interno',
-'upload-file-error-text' => 'Si è verificato un errore interno durante la creazione di un file temporaneo sul server. Contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
+'upload-file-error-text' => 'Si è verificato un errore interno durante la creazione di un file temporaneo sul server. Contattare un [[Special:ListUsers/sysop|amministratore]].',
 'upload-misc-error' => 'Errore di caricamento sconosciuto',
-'upload-misc-error-text' => 'Si è verificato un errore non identificato durante il caricamento del file. Verificare che la URL sia corretta e accessibile e provare di nuovo. Se il problema persiste, contattare un [[Special:ListUsers/sysop|amministratore]] del sito.',
+'upload-misc-error-text' => 'Si è verificato un errore non identificato durante il caricamento del file. Verificare che la URL sia corretta e accessibile e provare di nuovo. Se il problema persiste, contattare un [[Special:ListUsers/sysop|amministratore]].',
 'upload-too-many-redirects' => "L'URL conteneva troppi redirect",
 'upload-unknown-size' => 'Dimensione sconosciuta',
 'upload-http-error' => 'Si è verificato un errore HTTP: $1',
@@ -2560,7 +2567,7 @@ $1',
 'mycontris' => 'contributi',
 'contribsub2' => 'Per $1 ($2)',
 'nocontribs' => 'Non sono state trovate modifiche che soddisfino i criteri di ricerca.',
-'uctop' => '(ultima per la pagina)',
+'uctop' => '(attuale)',
 'month' => 'Dal mese (e precedenti):',
 'year' => "Dall'anno (e precedenti):",
 
index c0dd43b..3e7dd18 100644 (file)
@@ -568,6 +568,7 @@ $messages = array(
 'create-this-page' => 'このページを作成',
 'delete' => '削除',
 'deletethispage' => 'このページを削除',
+'undeletethispage' => 'このページを復元',
 'undelete_short' => '{{PLURAL:$1|$1 編集}}を復元',
 'viewdeleted_short' => '{{PLURAL:$1|削除された $1 編集}}を閲覧',
 'protect' => '保護',
@@ -621,7 +622,6 @@ $1',
 'disclaimers' => '免責事項',
 'disclaimerpage' => 'Project:免責事項',
 'edithelp' => '編集の仕方',
-'edithelppage' => 'Help:編集',
 'helppage' => 'Help:目次',
 'mainpage' => 'メインページ',
 'mainpage-description' => 'メインページ',
@@ -774,6 +774,8 @@ $2',
 'namespaceprotected' => "'''$1'''名前空間にあるページを編集する権限がありません。",
 'customcssprotected' => 'この CSS ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。',
 'customjsprotected' => 'この JavaScript ページは他の利用者の個人設定を含んでいるため、あなたには編集する権限がありません。',
+'mycustomcssprotected' => 'あなたには CSS ページを編集する権限がありません。',
+'mycustomjsprotected' => 'あなたには JavaScript ページを編集する権限がありません。',
 'ns-specialprotected' => '特別ページは編集できません。',
 'titleprotected' => "[[User:$1|$1]]によりこのページ名を持つページの作成は保護されています。
 理由は「''$2''」です。",
@@ -914,7 +916,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'cannotchangeemail' => 'このウィキではアカウントのメールアドレスを変更できません。',
 'emaildisabled' => 'このサイトではメールを送信できません。',
 'accountcreated' => 'アカウントを作成しました',
-'accountcreatedtext' => '利用者アカウント「$1」を作成しました。',
+'accountcreatedtext' => '利用者アカウント [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|トーク]]) を作成しました。',
 'createaccount-title' => '{{SITENAME}}のアカウント作成',
 'createaccount-text' => '誰か (おそらくあなた) が、{{SITENAME}} ($4) にあなたのメールアドレスのアカウントを作成しました。
 アカウント名「$2」、パスワード「$3」です。
@@ -1467,7 +1469,6 @@ $1",
 'searchmenu-legend' => '検索オプション',
 'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
 'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
-'searchhelp-url' => 'Help:目次',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
 'searchprofile-articles' => '本文ページ',
 'searchprofile-project' => 'ヘルプとプロジェクトページ',
@@ -1663,6 +1664,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'userrights-unchangeable-col' => '変更できないグループ',
 'userrights-irreversible-marker' => '$1*',
 'userrights-conflict' => '利用者権限に競合があります! 変更内容をもう一度適用してください。',
+'userrights-removed-self' => 'あなた自身の権限を除去しました。そのため、このページにはもうアクセスできません。',
 
 # Groups
 'group' => 'グループ:',
@@ -1733,6 +1735,8 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'right-editusercssjs' => '他の利用者のCSSファイル/JavaScriptファイルを編集',
 'right-editusercss' => '他の利用者のCSSファイルを編集',
 'right-edituserjs' => '他の利用者のJavaScriptファイルを編集',
+'right-editmyusercss' => '自身のCSSファイルを編集',
+'right-editmyuserjs' => '自身のJavaScriptファイルを編集',
 'right-rollback' => '特定ページを最後に編集した利用者の編集を即時巻き戻し',
 'right-markbotedits' => '巻き戻しをボットの編集として扱う',
 'right-noratelimit' => '速度制限を受けない',
@@ -2140,7 +2144,7 @@ URLが正しいものであり、ウェブサイトが稼働していること
 'filehist-comment' => 'コメント',
 'filehist-missing' => 'ファイルがありません',
 'imagelinks' => 'ファイルの使用状況',
-'linkstoimage' => '以下の{{PLURAL:1|ページ|&#32;$1 ページ}}がこのファイルにリンクしています:',
+'linkstoimage' => '以下の{{PLURAL:$1|ページ|&#32;$1 ページ}}がこのファイルにリンクしています:',
 'linkstoimage-more' => 'このファイルへは $1 を超える数のページからリンクがあります。
 以下の一覧ではこのファイルにリンクしている最初の $1 ページのみを表示しています。
 [[Special:WhatLinksHere/$2|完全な一覧]]も参照してください。',
@@ -2793,9 +2797,9 @@ $1',
 'whatlinkshere' => 'リンク元',
 'whatlinkshere-title' => '「$1」へリンクしているページ',
 'whatlinkshere-page' => 'ページ:',
-'linkshere' => "以下のページが、'''[[:$1]]'''にリンクしています:",
-'nolinkshere' => "'''[[:$1]]'''にリンクしているページはありません。",
-'nolinkshere-ns' => "指定した名前空間内に、'''[[:$1]]'''にリンクしているページはありません。",
+'linkshere' => "以下のページが、'''[[:$1]]''' にリンクしています:",
+'nolinkshere' => "'''[[:$1]]''' にリンクしているページはありません。",
+'nolinkshere-ns' => "指定した名前空間内に、'''[[:$1]]''' にリンクしているページはありません。",
 'isredirect' => '転送ページ',
 'istemplate' => '参照読み込み',
 'isimage' => 'ファイルへのリンク',
@@ -3161,7 +3165,7 @@ $2',
 'import-error-interwiki' => 'ページ名が外部リンク (ウィキ間リンク) に予約されているため、ページ「$1」を取り込みませんでした。',
 'import-error-special' => 'ページ「$1」は、ページが許可されない特別名前空間に属しているため取り込みません。',
 'import-error-invalid' => '名前が正しくないため、ページ「$1」を取り込みませんでした。',
-'import-error-unserialize' => 'ページ「$1」の版 $2 は直列化復元できませんでした。この版は $4 として直列化されたコンテンツモデル $3 を使用していると報告されています。',
+'import-error-unserialize' => 'ページ「$1」の版 $2 はシリアライズ解除できませんでした。この版は $4 としてシリアライズされたコンテンツモデル $3 を使用していると報告されています。',
 'import-options-wrong' => '間違った{{PLURAL:$2|オプション}}です: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => '入力したルートページの名前は無効です。',
 'import-rootpage-nosubpage' => 'ルートページの名前空間「$1」では、下位ページが許可されていません。',
index b8e50b5..8ec6c93 100644 (file)
@@ -251,7 +251,6 @@ $1',
 'disclaimers' => 'Diskliema',
 'disclaimerpage' => 'Project: Jinaral diskliema',
 'edithelp' => 'Editin elp',
-'edithelppage' => 'Help: Editin',
 'helppage' => 'Help: Kantent',
 'mainpage' => 'Mien piej',
 'mainpage-description' => 'Mien piej',
index 3f4e01f..fb47d8b 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Huslåke
  * @author Urhixidur
  * @author Ælsån
@@ -203,7 +204,6 @@ $messages = array(
 'disclaimers' => 'Førbeholt',
 'disclaimerpage' => 'Project:Huses førbeholt',
 'edithelp' => 'Hjælp til redigærenge',
-'edithelppage' => "Help:Vordan redigærer a'n side",
 'helppage' => 'Help:Hjælpførside',
 'mainpage' => 'Førsit',
 'mainpage-description' => 'Førsit',
@@ -311,7 +311,7 @@ Førespørgsel: $2',
 'userlogin' => 'Åpret æ konto æller loĝ på',
 'logout' => 'Loĝ åf',
 'userlogout' => 'Loĝ åf',
-'nologin' => "Du har engen brugerkonto? '''$1'''.",
+'nologin' => 'Du har engen brugerkonto? $1.',
 'nologinlink' => 'Åpret ny brugerkonto',
 'createaccount' => 'Åpret en ny konto',
 'gotaccount' => "Du har ålerede en brugerkonto? '''$1'''.",
@@ -438,7 +438,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 'prevn' => 'førge {{PLURAL:$1|$1}}',
 'nextn' => 'nægste {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Ves ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Hjælpførside',
 'searchall' => 'ål',
 'powersearch' => 'Søĝ',
 
index 1c19744..0e29054 100644 (file)
@@ -292,7 +292,6 @@ $1',
 'disclaimers' => 'Pamaidonan',
 'disclaimerpage' => 'Project:Panyangkalan umum',
 'edithelp' => 'Pitulung panyuntingan',
-'edithelppage' => 'Help:panyuntingan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Kaca Utama',
 'mainpage-description' => 'Kaca Utama',
@@ -562,10 +561,8 @@ Panjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi saunta
 
 # Special:PasswordReset
 'passwordreset' => 'Balèni setèl tembung sandhi',
-'passwordreset-text' => 'Jangkepi pormulir iki kanggo mbalèkaké tembung sandhiné Sampéyan.',
 'passwordreset-legend' => 'Balèni setèl tembung sandhi',
 'passwordreset-disabled' => 'Piranti kanggo mbalèni nyetèl tembung sandhi dipatèni nèng wiki iki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Lebokaké siji bagéyan data ngisor iki}}',
 'passwordreset-username' => 'Jeneng panganggo:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Delok layang èlèktronik sing diasilaké?',
@@ -1028,7 +1025,6 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchmenu-legend' => 'Pilihan panggolèkan',
 'searchmenu-exists' => "'''Ana kaca kanthi jeneng \"[[\$1]]\" ing wiki iki'''",
 'searchmenu-new' => "'''Gawé kaca \"[[:\$1]]\" ing wiki iki!'''",
-'searchhelp-url' => 'Help:Isi',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tlusuri kaca-kaca kanthi tembung-wiwitan iki]]',
 'searchprofile-articles' => 'Kaca isi',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
index 9278429..415564d 100644 (file)
@@ -211,7 +211,7 @@ $messages = array(
 'tog-diffonly' => 'დამალე გვერდის შიგთავსი ცვლილების ქვევით',
 'tog-showhiddencats' => 'დამალული კატეგორიების ჩვენება',
 'tog-noconvertlink' => 'სათაურის გარდაქმნის ბმულის გამორთვა',
-'tog-norollbackdiff' => 'á\83\92á\83\90á\83\9bá\83\9dá\83¢á\83\9dá\83\95á\83\94á\83\97 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90 á\83\92á\83\90á\83£á\83¥á\83\9bá\83\94á\83\91á\83\98á\83¡á\83\90á\83¡',
+'tog-norollbackdiff' => 'á\83\92á\83\90á\83£á\83¥á\83\9bá\83\94á\83\91á\83\98á\83¡á\83\90á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83¢á\83\9dá\83\95á\83\94á\83\97 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90á\83\97á\83\90 á\83\92á\83\90á\83\9cá\83¡á\83®á\83\95á\83\90á\83\95á\83\94á\83\91á\83\90',
 'tog-useeditwarning' => 'გამაფრთხილე, როდესაც დავტოვებ რედაქტირებად გვერდს, დაუმახსოვრებელი ცვლილებებით',
 
 'underline-always' => 'მუდამ',
@@ -340,7 +340,7 @@ $messages = array(
 'vector-action-protect' => 'დაცვა',
 'vector-action-undelete' => 'აღდგენა',
 'vector-action-unprotect' => 'დაცვის დონის შეცვლა',
-'vector-simplesearch-preference' => 'á\83«á\83\94á\83\91á\83\9cá\83\98ს გაფართოებული ველის ჩართვა (მხოლოდ ვექტორული იერსახისთვის)',
+'vector-simplesearch-preference' => 'á\83«á\83\98á\83\94á\83\91á\83\98á\83¡ს გაფართოებული ველის ჩართვა (მხოლოდ ვექტორული იერსახისთვის)',
 'vector-view-create' => 'შექმნა',
 'vector-view-edit' => 'რედაქტირება',
 'vector-view-history' => 'ისტორია',
@@ -372,6 +372,7 @@ $messages = array(
 'create-this-page' => 'ამ გვერდის შექმნა',
 'delete' => 'წაშლა',
 'deletethispage' => 'გვერდის წაშლა',
+'undeletethispage' => 'ამ გვერდის აღდგენა',
 'undelete_short' => 'გააუქმე წაშლა {{PLURAL:$1|ერთი რედაქტირება|$1 რედაქტირება}}',
 'viewdeleted_short' => '{{PLURAL:$1|წაშლილი რედაქტირების|$1 წაშლილი რედაქტირებების}} ხილვა',
 'protect' => 'დაბლოკე',
@@ -425,7 +426,6 @@ $1',
 'disclaimers' => 'პასუხისმგებლობის მოხსნა',
 'disclaimerpage' => 'Project:პასუხისმგებლობის უარყოფა',
 'edithelp' => 'დახმარება',
-'edithelppage' => 'Help:ტექსტის რედაქტირება (მარტივი)',
 'helppage' => 'Help:დახმარება',
 'mainpage' => 'მთავარი გვერდი',
 'mainpage-description' => 'მთავარი გვერდი',
@@ -578,6 +578,8 @@ $2',
 'namespaceprotected' => "თქვენ არ გაქვთ '''$1''' სახელთა სივრცეში გვერდების რედაქტირების უფლება.",
 'customcssprotected' => 'თქვენ არ გაქვთ ამ CSS გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.',
 'customjsprotected' => 'თქვენ არ გაქვთ ამ JavaScript გვერდის რედაქტირების უფლება, ვინაიდან ის სხვა მომხმარებლის პირად კონფიგურაციას შეიცავს.',
+'mycustomcssprotected' => 'თქვენ არ გაქვთ ამ CSS-გვერდის რედაქტირების უფლება.',
+'mycustomjsprotected' => 'თქვენ არ გაქვთ ამ JavaScript-გვერდის რედაქტირების უფლება.',
 'ns-specialprotected' => 'გვერდების რედაქტირება სახელთა სივრცეში {{ns:special}} შეუძლებელია.',
 'titleprotected' => "შემდეგი გვერდის შექმნა აკრძალულია მომხმარებელ [[User:$1|$1]]-ს მიერ.
 მოცემულია შემდეგი ახსნა: „''$2''“.",
@@ -637,16 +639,29 @@ $2',
 'gotaccountlink' => 'შესვლა',
 'userlogin-resetlink' => 'ავტორიზაციის მონაცემები დაგავიწყდათ?',
 'userlogin-resetpassword-link' => 'პაროლის მოცილება',
+'helplogin-url' => 'Help:შესვლა',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|დახმარება სისტემაში შესასვლელად]]',
+'createacct-join' => 'ქვემოთ მიუთითეთ ინფორმაცია თქვენ შესახებ.',
+'createacct-emailrequired' => 'ელ. ფოსტის მისამართი',
+'createacct-emailoptional' => 'ელ. ფოსტის მისამართი (არასავალდებულო)',
+'createacct-email-ph' => 'შეიყვანეთ თქვენი ელ. ფოსტის მისამართი',
 'createaccountmail' => 'გამოიყენეთ შემთხვევითობის მეთოდით შერჩეული დროებითი პაროლი და მისი გაგზავნა ქვემოთ მითითებულ ელ. ფოსტის მისამართზე:',
+'createacct-realname' => 'ნამდვილი სახელი (არააუცილებელი)',
 'createaccountreason' => 'მიზეზი:',
+'createacct-reason' => 'მიზეზი',
+'createacct-reason-ph' => 'რატომ ქმნით ახალ ანგარიშს?',
+'createacct-captcha' => 'უსაფრთხოების შემოწმება',
+'createacct-imgcaptcha-ph' => 'შეიყვანეთ ზემოთ მოცემული ტექსტი',
 'createacct-submit' => 'შექმენით თქვენი ანგარიში',
 'createacct-benefit-heading' => '{{SITENAME}} შექმნილია თქვენნაირი ადამიანების მიერ.',
 'createacct-benefit-body1' => '{{PLURAL:$1|რედაქტირება|რედაქტირება}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|გვერდი|გვერდი}}',
+'createacct-benefit-body3' => 'ბოლო {{PLURAL:$1|მომხმარებელი|მომხმარებელი}}',
 'badretype' => 'თქვენს მიერ შეყვანილი პაროლები ერთმანეთს არ ემთხვევა.',
 'userexists' => 'ეს სახელი უკვე გამოყენებულია.
 გთხოვთ, აირჩიეთ სხვა.',
 'loginerror' => 'შეცდომა შესვლაში',
+'createacct-error' => 'ანგარიშის შექმნის შეცდომა',
 'createaccounterror' => '$1 ანგარიშის შექმნა ვერ მოხერხდა.',
 'nocookiesnew' => 'მომხმარებლის ჩანაწერი შექმნილია, მაგრამ თქვენ არ გაგივლიათ რეგისტრაცია. {{SITENAME}} იყენებს cookies, რომლებიც თქვენს ბრაუზერში გათიშულია. გთხოვთ, აამოქმედოთ ისინი და შემდგომ ხელახლა გაიარეთ რეგისტრაცია.',
 'nocookieslogin' => '{{SITENAME}} მომხმარებლების შესვლისთვის იყენებს "ქუქის ჩანაწერს". თქვენ იგი გათიშეთ. გთხოვთ, ჩართოთ ისინი და ხელმეორედ მოსინჯოთ.',
@@ -701,7 +716,7 @@ $2',
 'cannotchangeemail' => 'ანგარიშის ელ-ფოსტის მისამართების შეცვლა ამ ვიკიში შეუძლებელია.',
 'emaildisabled' => 'ამ საიტს არ შეუძლია ელ.ფოსტის გაგზავნა.',
 'accountcreated' => 'ანგარიში შეიქმნა',
-'accountcreatedtext' => 'á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83\9aá\83\98á\83\90 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98 $1.',
+'accountcreatedtext' => 'á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|á\83\92á\83\90á\83\9cá\83®á\83\98á\83\9aá\83\95á\83\90]]) á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83\9aá\83\98á\83\90.',
 'createaccount-title' => 'ანგარიშის შექმნა {{SITENAME}}-თვის',
 'createaccount-text' => 'ვიღაცამ შექმნა ანგარიში სახელით „$2“ და პაროლით „$3“ თქვენი ელექტრონული ფოსტისთვის {{SITENAME}}-ში ($4). გთხოვთ დარეგისტრირდეთ და შეცვალოთ პაროლი.
 
@@ -735,11 +750,15 @@ $2',
 'resetpass-wrong-oldpass' => 'არასწორი დროებითი ან მოქმედი პაროლი.
 შესაძლოა თქვენ წარმატებით შეცვალეთ პაროლი ან მოითხოვეთ ახალი.',
 'resetpass-temp-password' => 'დროებითი პაროლი:',
+'resetpass-abort-generic' => 'პაროლის შეცვლა შეჩერდა გაფართოების მიერ.',
 
 # Special:PasswordReset
 'passwordreset' => 'პაროლის აღდგენა',
+'passwordreset-text-one' => 'შეავსეთ ეს ფორმა, რათა კვლავ დააყენოთ თქვენი პაროლი.',
+'passwordreset-text-many' => '{{PLURAL:$1|პაროლის თავიდან დასაყენებლად შეიყვანეთ მონაცემთა ერთ-ერთი ნაწილი.}}',
 'passwordreset-legend' => 'პაროლის აღდგენა',
 'passwordreset-disabled' => 'ამ ვიკიში პაროლის კვლავ დაყენების ფუნქცია გამორთულია.',
+'passwordreset-emaildisabled' => 'ამ ვიკიში ელ.ფოსტის ფუნქციები გამორთულია.',
 'passwordreset-username' => 'მომხმარებლის სახელი:',
 'passwordreset-domain' => 'დომენი:',
 'passwordreset-capture' => 'გამოსული ელ-ფოსტის ხილვა?',
@@ -993,7 +1012,7 @@ $2
 'invalid-content-data' => 'დაუშვებელი მონაცემები',
 'content-not-allowed-here' => '„$1“-ის შინაარსი დაუშვებელია [[$2]] გვერდზე',
 'editwarning-warning' => 'სხვა გვერდზე გადასვლამ შესაძლოა გამოიწვიოს ცვლილებების დაკარგვა.
-თუკი თქვენ დარეგისტრირებული ხართ სისტემაში, მაში შეგიძლიათ გამორთოთ ეს გაფრთხილება „{{int:prefs-editing}}“ თქვენი კონფიგურაციის განყოფილებაში.',
+თუკი თქვენ დარეგისტრირებული ხართ სისტემაში, მაშინ შეგიძლიათ გამორთოთ ეს გაფრთხილება თქვენი კონფიგურაციის განყოფილებაში „რედაქტირება“ .',
 
 # Content models
 'content-model-wikitext' => 'ვიკიტექსტი',
@@ -1234,7 +1253,6 @@ $1",
 'searchmenu-legend' => 'ძიების დაწყობა:',
 'searchmenu-exists' => "'''ამ ვიკიპროექტში არის გვერდი «[[:$1]]»'''",
 'searchmenu-new' => "'''შექმენით გვერდი „[[:$1]]“ ამ ვიკიში!'''",
-'searchhelp-url' => 'Help:დახმარება',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|აჩვენეთ გვერდები ამ პრეფიქსით]]',
 'searchprofile-articles' => 'ძირითადი გვერდები',
 'searchprofile-project' => 'დახმარების და პროექტის გვერდები',
@@ -1276,6 +1294,7 @@ $1",
 'powersearch-togglenone' => 'არაფერი',
 'search-external' => 'გარე ძიება',
 'searchdisabled' => '{{SITENAME}}ში ძებნა გაუქმებულია. თქვენ შეგიძლიათ დროის შუალედით Google-ით ძებნა. მიაქციეთ ყურადღება, რომ {{SITENAME}}ში შესაძლებელია მათი ინდექსები აქტუალური არ არის.',
+'search-error' => 'ძიებისას მოხდა შეცდომა: $1',
 
 # Preferences page
 'preferences' => 'კონფიგურაცია',
@@ -1296,7 +1315,7 @@ $1",
 'prefs-watchlist' => 'კონტროლის სია',
 'prefs-watchlist-days' => 'კონტროლის სიაში საჩვენებელი დღეები:',
 'prefs-watchlist-days-max' => 'მაქსიმუმ $1 {{PLURAL:$1|დღე|დღე}}',
-'prefs-watchlist-edits' => 'á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\90á\83¥á\83¡á\83\98á\83\9bá\83\90á\83\9aá\83£á\83 á\83\98 á\83 á\83\90á\83\9dá\83\93á\83\94á\83\9cá\83\9dá\83\91á\83\98á\83¡ á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\90 á\83\95á\83 á\83ªá\83\94á\83\9a á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83¡á\83\98á\83\90á\83¨á\83\98:',
+'prefs-watchlist-edits' => 'á\83\92á\83\90á\83¤á\83\90á\83 á\83\97á\83\9dá\83\94á\83\91á\83£á\83\9a á\83\99á\83\9dá\83\9cá\83¢á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83¡á\83\98á\83\90á\83¨á\83\98 á\83¡á\83\90á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\94á\83\9aá\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\90á\83¥á\83¡á\83\98á\83\9bá\83\90á\83\9aá\83£á\83 á\83\98 á\83 á\83\90á\83\9dá\83\93á\83\94á\83\9cá\83\9dá\83\91á\83\90:',
 'prefs-watchlist-edits-max' => 'მაქსიმალური რაოდენობა: 1000',
 'prefs-watchlist-token' => 'კონტროლის სიის ტოკენი:',
 'prefs-misc' => 'სხვადასხვა',
@@ -1316,9 +1335,9 @@ $1",
 'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
 'stub-threshold' => 'გაფორმების გასაუმჯობესებლად <a href="#" class="stub"> მოცემულია ესკიზების ბმულები</a> (ბაიტებში):',
 'stub-threshold-disabled' => 'გათიშულია',
-'recentchangesdays' => 'á\83\93á\83¦á\83\94á\83\94á\83\91á\83\98á\83¡ á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\90 á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83¨ი:',
+'recentchangesdays' => 'á\83\91á\83\9dá\83\9aá\83\9d á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83¨á\83\98 á\83¡á\83\90á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\94á\83\9aá\83\98 á\83\93á\83¦á\83\94á\83\94á\83\91ი:',
 'recentchangesdays-max' => 'მაქსიმუმ $1 {{PLURAL:$1|დღე}}',
-'recentchangescount' => 'á\83 á\83\94á\83\93á\83\90á\83¥á\83ªá\83\98á\83\94á\83\91á\83\98á\83¡ á\83 á\83\90á\83\9dá\83\93á\83\94á\83\9cá\83\9dá\83\91á\83\90 á\83¡á\83\90á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\9aá\83\90á\83\93:',
+'recentchangescount' => 'á\83¡á\83\90á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91á\83\94á\83\9aá\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98á\83¡ á\83 á\83\90á\83\9dá\83\93á\83\94á\83\9cá\83\9dá\83\91á\83\90:',
 'prefs-help-recentchangescount' => 'შეიცავს ახალ შესწორებებს, გვერდების ისტორიებს, ჟურნალებს.',
 'prefs-help-watchlist-token' => 'ამ ველის შევსება საიდუმლო გასაღებით შექმნის RSS ტრანსლაციას თქვენი კონტროლის სიისთვის.
 ყველა, ვინც იცის გასაღები, შესძლებს იხილოს თქვენი კონტროლის სია. ფრთხილად იყავით საიდუმლო მნიშვნელობის არჩევისას.
@@ -1384,7 +1403,7 @@ $1",
 'prefs-i18n' => 'ინტერნაციონალიზაცია',
 'prefs-signature' => 'ხელმოწერა',
 'prefs-dateformat' => 'თარიღის ფორმატი',
-'prefs-timeoffset' => 'á\83\93á\83 á\83\9dá\83\98á\83¡ á\83\92á\83\90á\83 á\83\93á\83\90á\83\90á\83\93á\83\92ილება',
+'prefs-timeoffset' => 'á\83¡á\83\90á\83¡á\83\90á\83\90á\83\97á\83\9d á\83¡á\83\90á\83 á\83¢á\83§á\83\9aá\83\98á\83¡ á\83ªá\83\95á\83\9aილება',
 'prefs-advancedediting' => 'გაფართოებული პარამეტრები',
 'prefs-advancedrc' => 'გაფართოებული პარამეტრები',
 'prefs-advancedrendering' => 'გაფართოებული პარამეტრები',
@@ -1422,6 +1441,7 @@ $1",
 'userrights-changeable-col' => 'ჯგუფები, რომლებიც შეგიძლიათ შეცვალოთ',
 'userrights-unchangeable-col' => 'ჯგუფები, რომლებიც არ შეგიძლიათ შეცვალოთ',
 'userrights-irreversible-marker' => '$1*',
+'userrights-conflict' => 'მომხმარებელთა უფლებების კონფლიქტი! გთხოვთ, ხელმეორედ შეინახოთ თქვენი ცვლილებები.',
 
 # Groups
 'group' => 'ჯგუფი:',
@@ -1492,6 +1512,8 @@ $1",
 'right-editusercssjs' => 'სხვა მომხმარებლების CSS- и JS- ფაილების შესწორება',
 'right-editusercss' => 'სხვა მომხმარებლების CSS- ფაილების შესწორება',
 'right-edituserjs' => 'სხვა მომხმარებლების JS- ფაილების შესწორება',
+'right-editmyusercss' => 'თქვენი საკუთარი CSS-ფაილების რედაქტირება',
+'right-editmyuserjs' => 'თქვენი საკუთარი JavaScript-ფაილების რედაქტირება',
 'right-rollback' => 'გარკვეულ გვერდზე ბოლო მომხმარებლის რედაქტირების სწრაფი გაუქმება',
 'right-markbotedits' => 'გაუქმებული შესწორებების მონიშვნა როგორც ბოტის',
 'right-noratelimit' => 'სიჩქარის შეზღუდვის არ არსებობა',
@@ -2240,8 +2262,8 @@ $1',
 'notvisiblerev' => 'შესწორება წაშლილია',
 'watchnochange' => 'არც ერთი თქვენი კონტროლის ქვეშ მყოფი ერთეული არ იქნა რედაქტირებული ნაჩვენებ დროში.',
 'watchlist-details' => '$1 გვერდია თქვენი კონტროლის სიაში განხილვის გვერდების ჩაუთვლელად.',
-'wlheader-enotif' => 'ელ. ფოსტით შეტყობინება ჩართულია.',
-'wlheader-showupdated' => 'გვერდები, რომლებშიც შეტანილ იქნა ცვლილებები თქვენი ბოლო ვიზიტის შემდეგ, აღნიშნულია მუქად.',
+'wlheader-enotif' => 'ელ.ფოსტით შეტყობინება ჩართულია.',
+'wlheader-showupdated' => "თქვენი ბოლო ვიზიტის შემდეგ შეცვლილი გვერდები, აღნიშნულია '''მუქად'''.",
 'watchmethod-recent' => 'მიმდინარეობს უახლესი შესწორებების შემოწმება კონტროლის ქვეშ მყოფი გვერდების მიხედვით.',
 'watchmethod-list' => 'მიმდინარეობს თქვენი კონტროლის ქვეშ მყოფი გვერდების შემოწმება უახლესი შესწორებების მიხედვით.',
 'watchlistcontains' => 'თქვენი კონტროლის სია შეიცავს $1 გვერდს.',
@@ -2491,7 +2513,7 @@ $1',
 'mycontris' => 'წვლილი',
 'contribsub2' => '$1 ($2) თვის',
 'nocontribs' => 'ძებნისას მითითებული პარამეტრების შესაბამისი არც ერთი ცვლილება ნაპოვნი არ არის',
-'uctop' => '(á\83\97á\83\90á\83\95á\83\98)',
+'uctop' => '(á\83\9bá\83\98á\83\9bá\83\93á\83\98á\83\9cá\83\90á\83 á\83\94)',
 'month' => 'თვე:',
 'year' => 'წელი:',
 
@@ -2814,6 +2836,8 @@ $1',
 'thumbnail-more' => 'გაზარდე',
 'filemissing' => 'ფაილი აკლია',
 'thumbnail_error' => 'ესკიზის შექმნის შეცდომა: $1',
+'thumbnail_error_remote' => 'შეცდომის შეტყობინება მომხმარებლისაგან $1:
+$2',
 'djvu_page_error' => 'DjVu გვერდის ნომერი',
 'djvu_no_xml' => 'შეუძლებელია XML-ის მიღება DjVu-სთვის',
 'thumbnail-temp-create' => 'დროებითი ესკიზის ფაილის შექმნა ვერ ხერხდება',
@@ -3850,9 +3874,15 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath გზა სკრიპტისაკენ]',
 
 # Special:Redirect
+'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან ან ვერსიის იდენტიფიკატორიდან',
+'redirect-legend' => 'გადამისამართება ფაილზე ან გვერდზე',
 'redirect-submit' => 'მიდი',
+'redirect-lookup' => 'ძიება:',
+'redirect-value' => 'მნიშვნელობა:',
 'redirect-user' => 'მომხმარებლის იდენტიფიკატორი',
+'redirect-revision' => 'გვერდის ვერსია',
 'redirect-file' => 'ფაილის სახელი',
+'redirect-not-exists' => 'მნიშვნელობა ვერ მოიძებნა',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'ერთნაირი ფაილების ძიება',
index 0555201..6f34b18 100644 (file)
@@ -368,7 +368,6 @@ $messages = array(
 'disclaimers' => 'Juwapkershilikten bas tartıw',
 'disclaimerpage' => 'Project:Juwapkershilikten bas tartıw',
 'edithelp' => "O'zgertiw anıqlaması",
-'edithelppage' => "Help:O'zgertiw",
 'helppage' => 'Help:Mazmunı',
 'mainpage' => 'Bas bet',
 'mainpage-description' => 'Bas bet',
@@ -825,7 +824,6 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
 'searchmenu-legend' => 'İzlew sazlawları',
 'searchmenu-exists' => "'''Bul wikide \"[[:\$1]]\" atamalı bet bar'''",
 'searchmenu-new' => "'''Bul wikide \"[[:\$1]]\" betin jaratıw!'''",
-'searchhelp-url' => 'Help:Mazmunı',
 'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Usı prefiks penen baslanıwshı betlerdi ko'rset]]",
 'searchprofile-articles' => "Mag'lıwmat betleri",
 'searchprofile-project' => "Ja'rdem ha'm Proekt betleri",
index 8ce650e..df2487f 100644 (file)
@@ -281,7 +281,6 @@ $1',
 'disclaimers' => 'Iɣtalen',
 'disclaimerpage' => 'Project:Iɣtalen',
 'edithelp' => 'Tallat deg ubeddel',
-'edithelppage' => 'Help:Abeddel',
 'helppage' => 'Help:Agbur',
 'mainpage' => 'Asebter amenzawi',
 'mainpage-description' => 'Asebter amenzawi',
@@ -551,10 +550,8 @@ Ahat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi a
 
 # Special:PasswordReset
 'passwordreset' => 'Awennez tikkelt nniḍen n awal uɛaddi',
-'passwordreset-text' => 'Ččur tiferkit agi iwakken ad eṭṭfeḍ tirawt n usmekti  deg-es tilɣa n umiḍan inek/inem.',
 'passwordreset-legend' => 'Awennez tikkelt nniḍen n awal uɛaddi',
 'passwordreset-disabled' => 'Awennez n awal uɛaddi yensa deg uwiki agi.',
-'passwordreset-pretext' => '{{PLURAL:$1||Sekcem aferdis n isefka ddaw agi}}',
 'passwordreset-username' => 'Isem n useqdac',
 'passwordreset-domain' => 'Talɣut :',
 'passwordreset-capture' => 'Ẓeṛ tirawt ?',
@@ -1015,7 +1012,6 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'searchmenu-legend' => 'Tixtiṛiyin n unadi',
 'searchmenu-exists' => "'''Yella asebter s isem \"[[:\$1]]\" deg wiki agi.'''",
 'searchmenu-new' => "'''Snulfud asebter « [[:$1|$1]] » deg wiki agi !'''",
-'searchhelp-url' => 'Help:Agbur',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Nadi isebtar i zwaren s adat agi]]',
 'searchprofile-articles' => 'Isebtar n ugbur',
 'searchprofile-project' => 'Isebtaren n tallat dɣa n usenfa',
index e39a75f..6040d1e 100644 (file)
@@ -292,7 +292,6 @@ $1',
 'disclaimers' => 'Жэуап Ӏыгъыныр зыщхьэщыхын',
 'disclaimerpage' => 'Project:Пщэрылъу къэмыштэн',
 'edithelp' => 'Гъэтэрэзыным и щӀэупщӀэ',
-'edithelppage' => 'Help:Гъэтэрэзыным и дэIэпыкъуэгъу',
 'helppage' => 'Help:ДэӀэпыкъуэгъу',
 'mainpage' => 'НапэкӀуэцӀ нэхъыщхьэ',
 'mainpage-description' => 'НапэкӀуэцӀ нэхъыщхьэ',
index 57caf22..7c987ae 100644 (file)
  * @author לערי ריינהארט
  */
 
+$namespaceNames = array(
+       NS_TALK             => 'Disolo',
+       NS_USER             => 'Kisadi',
+       NS_USER_TALK        => 'Disolo_kisadi',
+       NS_PROJECT_TALK     => 'Disolo_$1',
+       NS_FILE             => 'Fisye',
+       NS_FILE_TALK        => 'Disolo_fisye',
+       NS_HELP             => 'Lusadisu',
+       NS_HELP_TALK        => 'Disolo_lusadisu',
+       NS_CATEGORY         => 'Kalasi',
+       NS_CATEGORY_TALK    => 'Disolo_kalasi',
+);
+
 $messages = array(
 'underline-always' => 'Bambala nyonso',
 'underline-never' => 'Ata mbala mosi ve',
index 38f2da2..2184c40 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 $fallback = 'ur';
-
 $rtl = true;
 
 $messages = array(
@@ -248,7 +247,6 @@ $1',
 'disclaimers' => 'اعلانات',
 'disclaimerpage' => 'Project:عام کھوار اعلان',
 'edithelp' => 'مدد براۓ ترمیم',
-'edithelppage' => 'Help:ترمیم',
 'helppage' => 'Help:فھرست',
 'mainpage' => 'آویلو صفحہ',
 'mainpage-description' => 'سرورق',
index 5454422..f61021a 100644 (file)
@@ -292,7 +292,6 @@ $1',
 'disclaimers' => 'Diwanê mesulêti',
 'disclaimerpage' => 'Project:Diwanê mesuliyetê bıngey',
 'edithelp' => 'Phoştdariya vurnaişi',
-'edithelppage' => 'Help:Pele çıturi vurnina',
 'helppage' => 'Help:Tedeestey',
 'mainpage' => 'Pela Seri',
 'mainpage-description' => 'Pela seri',
@@ -741,7 +740,6 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'viewprevnext' => 'Bıvêne ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
 'searchmenu-new' => "'''Nê wiki de pela \"[[:\$1]]\" baferne!'''",
-'searchhelp-url' => 'Help:Tedeestey',
 'searchprofile-articles' => 'Pelê tedeesteu',
 'searchprofile-project' => 'Pelê yardımi u procey',
 'searchprofile-images' => 'Multimedya',
index c757c53..f4d0c9d 100644 (file)
@@ -587,7 +587,6 @@ $messages = array(
 'disclaimers' => 'جاۋاپكەرشىلىكتەن باس تارتۋ',
 'disclaimerpage' => 'Project:جاۋاپكەرشىلىكتەن باس تارتۋ',
 'edithelp' => 'وندەۋ انىقتاماسى',
-'edithelppage' => 'Help:وڭدەۋ',
 'helppage' => 'Help:مازمۇنى',
 'mainpage' => 'باستى بەت',
 'mainpage-description' => 'باستى بەت',
@@ -1112,7 +1111,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'prevn' => 'الدىڭعى {{PLURAL:$1|$1}}',
 'nextn' => 'كەلەسى {{PLURAL:$1|$1}}',
 'viewprevnext' => 'كورسەتىلۋى: ($1 {{int:pipe-separator}} $2) ($3) جازبا',
-'searchhelp-url' => 'Help:مازمۇنى',
 'search-result-size' => '$1 ($2 ٴسوز)',
 'search-result-score' => 'اراقاتىناستىلىعى: $1 %',
 'search-redirect' => '(ايداعىش $1)',
index 440e4c5..f8e98fb 100644 (file)
@@ -403,6 +403,7 @@ $messages = array(
 'tog-showhiddencats' => 'Жасырын санаттарды көрсету',
 'tog-noconvertlink' => 'Сілтеме атауларын ауыстырма',
 'tog-norollbackdiff' => 'Шегіндіруден кейін нұсқалардың айырмашылығын көрсетпеу',
+'tog-useeditwarning' => 'Өңдемесі сақталмаған парақшадан шығар кезде ескерту',
 
 'underline-always' => 'Әрқашан',
 'underline-never' => 'Ешқашан',
@@ -466,6 +467,18 @@ $messages = array(
 'oct' => 'қаз',
 'nov' => 'қар',
 'dec' => 'жел',
+'january-date' => 'Қаңтар $1',
+'february-date' => 'Ақпан $1',
+'march-date' => 'Наурыз $1',
+'april-date' => 'Сәуір $1',
+'may-date' => 'Мамыр $1',
+'june-date' => 'Маусым $1',
+'july-date' => 'Шілде $1',
+'august-date' => 'Тамыз $1',
+'september-date' => 'Қыркүйек $1',
+'october-date' => 'Қазан $1',
+'november-date' => 'Қараша $1',
+'december-date' => 'Желтоқсан $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Санат|Санаттар}}',
@@ -491,8 +504,9 @@ $messages = array(
 'newwindow' => '(жаңа терезеде)',
 'cancel' => 'Болдырмау',
 'moredotdotdot' => 'Көбірек…',
-'mypage' => 'Жеке бетім',
-'mytalk' => 'Талқылауым',
+'morenotlisted' => 'Басқасы көрсетілмеген...',
+'mypage' => 'Жеке бет',
+'mytalk' => 'Талқылау',
 'anontalk' => 'IP талқылауы',
 'navigation' => 'Бағыттау',
 'and' => '&#32;және',
@@ -524,6 +538,7 @@ $messages = array(
 'namespaces' => 'Есім кеңістігі',
 'variants' => 'Нұсқалар',
 
+'navigation-heading' => 'Бағыттау',
 'errorpagetitle' => 'Қате',
 'returnto' => '$1 дегенге қайта келу.',
 'tagline' => '{{SITENAME}} жобасынан алынған мәлімет',
@@ -545,6 +560,7 @@ $messages = array(
 'create-this-page' => 'Осы бетті бастау',
 'delete' => 'Жою',
 'deletethispage' => 'Бетті жою',
+'undeletethispage' => 'Жойылған бетті қайтару',
 'undelete_short' => '$1 өңдеме жоюын болдырмау',
 'viewdeleted_short' => 'Көру {{PLURAL:$1|жойылған өңдеуді $1|жойылған өңдеулерді $1| жойылған өңдеулерді $1}}',
 'protect' => 'Қорғау',
@@ -598,7 +614,6 @@ $1',
 'disclaimers' => 'Жауапкершіліктен бас тарту',
 'disclaimerpage' => 'Project:Жауапкершіліктен бас тарту',
 'edithelp' => 'Өндеу анықтамасы',
-'edithelppage' => 'Help:Өңдеу',
 'helppage' => 'Help:Мазмұны',
 'mainpage' => 'Басты бет',
 'mainpage-description' => 'Басты бет',
@@ -621,6 +636,10 @@ $1',
 'youhavenewmessages' => 'Сізде $1 бар ($2).',
 'newmessageslink' => 'жаңа хабарламалар',
 'newmessagesdifflink' => 'соңғы өзгерiс',
+'youhavenewmessagesfromusers' => 'Сіз {{PLURAL:$3|бөгде қолданушыдан|$3 қатысушылардан}} $1 алдыңыз ($2).',
+'youhavenewmessagesmanyusers' => 'Сіз бірнеше қатысушыдан $1 алдыңыз ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|жаңа хабарлама|жаңа хабарламалар}}',
+'newmessagesdifflinkplural' => 'соңғы {{PLURAL:$1|өзгеріс|өзгерістер}}',
 'youhavenewmessagesmulti' => '$1 дегенде жаңа хабарламалар бар',
 'editsection' => 'өңдеу',
 'editold' => 'өңдеу',
@@ -713,6 +732,8 @@ $1',
 'cannotdelete' => '«$1» бетін немесе файлын жою мүмкін емес. 
 Мұны әлдекім жойған болуы мүмкін.',
 'cannotdelete-title' => '«$1» бетін жою мүмкін емес',
+'delete-hook-aborted' => 'Түзету ілмек арқылы тоқтатылды.
+Қосымша түсіндірмелер көрсетілмеген.',
 'badtitle' => 'Жарамсыз тақырып аты',
 'badtitletext' => 'Сұралған бет тақырыбының аты жарамсыз, бос, тіларалық сілтемесі не уики-аралық тақырып аты бұрыс енгізілген.
 Мында тақырып атында қолдалмайтын бірқатар таңбалар болуы мүмкін.',
@@ -727,7 +748,7 @@ $1',
 'actionthrottled' => 'Әрекет бәсеңдетілді',
 'actionthrottledtext' => 'Спамға қарсы күрес есебінде, осы әрекетті қысқа уақытта тым көп рет орындауыңыз шектелінді, және бұл шектеу шамасынан асып кеткенсіз.
 Бірнеше минуттан қайта байқап көріңіз.',
-'protectedpagetext' => 'Өңдеуді қақпайлау үшін бұл бет құлыпталынған.',
+'protectedpagetext' => 'Бұл бет өңдеу немесе басқа өзгерістер енгізілмес үшін қорғалған.',
 'viewsourcetext' => 'Бұл беттің қайнарын қарауыңызға және көшіріп алуыңызға болады:',
 'viewyourtext' => 'Осы бет арқылы "өзіңіз жасаған өңдеулердің" бастапқы мәтінін көруге және көшіруге мүмкіндігіңіз болады.',
 'protectedinterface' => 'Бұл бет бағдарламалық жасақтаманың тілдесу мәтінін жетістіреді, сондықтан қиянатты қақпайлау үшін өзгертуі құлыпталған.',
@@ -1249,7 +1270,6 @@ $3 келтірілген себебі: ''$2''",
 'searchmenu-legend' => 'Іздеу бапталымдары',
 'searchmenu-exists' => "'''Бұл жобада «[[:$1]]» деген бет бар.'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" осындай атпен бетті бастау'''",
-'searchhelp-url' => 'Help:Мазмұны',
 'searchprofile-articles' => 'Негізгі беттер',
 'searchprofile-project' => 'Анықтама және жоба беттері',
 'searchprofile-images' => 'Мультимедиа',
index 67f1372..1a4ae9d 100644 (file)
@@ -550,7 +550,6 @@ $messages = array(
 'disclaimers' => 'Jawapkerşilikten bas tartw',
 'disclaimerpage' => 'Project:Jawapkerşilikten bas tartw',
 'edithelp' => 'Öndew anıqtaması',
-'edithelppage' => 'Help:Öñdew',
 'helppage' => 'Help:Mazmunı',
 'mainpage' => 'Bastı bet',
 'mainpage-description' => 'Bastı bet',
@@ -1075,7 +1074,6 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
 'prevn' => 'aldıñğı {{PLURAL:$1|$1}}',
 'nextn' => 'kelesi {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Körsetilwi: ($1 {{int:pipe-separator}} $2) ($3) jazba',
-'searchhelp-url' => 'Help:Mazmunı',
 'search-result-size' => '$1 ($2 söz)',
 'search-result-score' => 'Araqatınastılığı: $1 %',
 'search-redirect' => '(aýdağış $1)',
index b3fb68f..2886ff7 100644 (file)
@@ -516,7 +516,6 @@ $1',
 'disclaimers' => 'ការបដិសេធ',
 'disclaimerpage' => 'Project:ការបដិសេធ​ទូទៅ',
 'edithelp' => 'ជំនួយ​ក្នុងការកែប្រែ',
-'edithelppage' => 'Help:របៀបកែប្រែ',
 'helppage' => 'Help:មាតិកា',
 'mainpage' => 'ទំព័រដើម',
 'mainpage-description' => 'ទំព័រដើម',
@@ -1338,7 +1337,6 @@ $1",
 'searchmenu-legend' => 'ជម្រើសនានាក្នុងការស្វែងរក',
 'searchmenu-exists' => "* ទំព័រ '''[[$1]]'''",
 'searchmenu-new' => "'''បង្កើតទំព័រ \"[[:\$1]]\" នៅ​លើ​វិគី​នេះ!'''",
-'searchhelp-url' => 'Help:មាតិកា',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|រុក​រក​ក្នុង​ទំព័រ​នានា​ជាមួយ​បុព្វបទ​នេះ​]]',
 'searchprofile-articles' => 'ទំព័រ​មាតិកា',
 'searchprofile-project' => 'ជំនួយ និង​ទំព័រ​គម្រោង',
index 1cd439c..2dcbdc7 100644 (file)
@@ -300,7 +300,6 @@ $messages = array(
 'disclaimers' => 'ಅಬಾಧ್ಯತೆಗಳು',
 'disclaimerpage' => 'Project:ಸಾಮಾನ್ಯ ಅಬಾಧ್ಯತೆಗಳು',
 'edithelp' => 'ಸಂಪಾದನೆಗೆ ಸಹಾಯ',
-'edithelppage' => 'Help:ಸಂಪಾದನೆ',
 'helppage' => 'Help:ಪರಿವಿಡಿ',
 'mainpage' => 'ಮುಖ್ಯ ಪುಟ',
 'mainpage-description' => 'ಮುಖ್ಯ ಪುಟ',
@@ -859,7 +858,6 @@ $2',
 'viewprevnext' => 'ವೀಕ್ಷಿಸು ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''\"[[:\$1]]\" ಹೆಸರಿನ ಪುಟ ಈ ವಿಕಿಯಲ್ಲಿದೆ.'''",
 'searchmenu-new' => "'''''[[:$1]]'' ಪುಟವನ್ನು ಈ ವಿಕಿಯಲ್ಲಿ ಸೃಷ್ಟಿಸಿ!'''",
-'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
 'searchprofile-articles' => 'ಲೇಖನ ಪುಟ',
 'searchprofile-project' => 'ಸಹಾಯ ಮತ್ತು ಯೋಜನೆ ಪುಟಗಳು',
 'searchprofile-images' => 'ಬಹುಮಾಧ್ಯಮ',
index 0ed5744..74ca1ec 100644 (file)
@@ -351,7 +351,7 @@ $dateFormats = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => '링크에 밑줄 표시하기:',
+'tog-underline' => '링크에 밑줄:',
 'tog-justify' => '문단 정렬하기',
 'tog-hideminor' => '최근 바뀜에서 사소한 편집을 숨기기',
 'tog-hidepatrolled' => '최근 바뀜에서 검토한 편집을 숨기기',
@@ -536,8 +536,8 @@ $messages = array(
 'help' => '도움말',
 'search' => '찾기',
 'searchbutton' => '찾기',
-'go' => '기',
-'searcharticle' => '기',
+'go' => '기',
+'searcharticle' => '기',
 'history' => '문서 역사',
 'history_short' => '역사',
 'updatedmarker' => '마지막으로 방문한 뒤 바뀜',
@@ -551,6 +551,7 @@ $messages = array(
 'create-this-page' => '이 문서 만들기',
 'delete' => '삭제',
 'deletethispage' => '이 문서 삭제하기',
+'undeletethispage' => '이 문서 되살리기',
 'undelete_short' => '{{PLURAL:$1|편집 $1개}} 되살리기',
 'viewdeleted_short' => '{{PLURAL:$1|삭제된 편집 $1개}} 보기',
 'protect' => '보호',
@@ -604,7 +605,6 @@ $1',
 'disclaimers' => '면책 조항',
 'disclaimerpage' => 'Project:면책 조항',
 'edithelp' => '편집 도움말',
-'edithelppage' => 'Help:편집하기',
 'helppage' => 'Help:목차',
 'mainpage' => '대문',
 'mainpage-description' => '대문',
@@ -754,6 +754,8 @@ $2',
 'namespaceprotected' => "'''$1''' 이름공간을 편집할 수 있는 권한이 없습니다.",
 'customcssprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 CSS 문서를 편집할 수 없습니다.',
 'customjsprotected' => '여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 자바스크립트 문서를 편집할 수 없습니다.',
+'mycustomcssprotected' => '이 CSS 문서를 편집할 권한이 없습니다.',
+'mycustomjsprotected' => '이 자바스크립트 문서를 편집할 권한이 없습니다.',
 'ns-specialprotected' => '특수 문서는 편집할 수 없습니다.',
 'titleprotected' => '[[User:$1|$1]] 사용자가 문서 만들기를 금지했습니다.
 이유는 다음과 같습니다. "$2"',
@@ -893,7 +895,7 @@ $2',
 'cannotchangeemail' => '이 위키에서는 계정의 이메일 주소를 바꿀 수 없습니다.',
 'emaildisabled' => '이 사이트에서는 이메일을 보낼 수 없습니다.',
 'accountcreated' => '계정 만들어짐',
-'accountcreatedtext' => '"$1" 사용자 계정이 만들어졌습니다.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|토론]]) 사용자 계정이 만들어졌습니다.',
 'createaccount-title' => '{{SITENAME}} 계정 만들기',
 'createaccount-text' => '누군가가 {{SITENAME}} ($4)에서 사용자 이름 "$2", 비밀번호 "$3"로 당신의 이메일 주소가 등록된 계정을 만들었습니다. 
 지금 로그인하여 비밀번호를 바꾸십시오.
@@ -934,6 +936,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
+'passwordreset-text-one' => '비밀번호를 재설정하려면 이 양식을 작성해주세요.',
+'passwordreset-text-many' => '{{PLURAL:$1|비밀번호를 재설정하려면 다음 정보 중 하나를 입력하세요.}}',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
 'passwordreset-emaildisabled' => '이 위키에서 이메일 기능이 비활성화되어 있습니다.',
@@ -965,12 +969,12 @@ $2
 임시 비밀번호: $2',
 'passwordreset-emailsent' => '비밀번호 재설정 이메일을 보냈습니다.',
 'passwordreset-emailsent-capture' => '비밀번호 재설정 이메일이 발송되었으며, 아래에 나타나 있습니다.',
-'passwordreset-emailerror-capture' => '비밀번호 재설정 이메일이 생성되어 아래에 표시되어 있지만, {{GENDER:$2|사용자}}에게 발송하는 데에는 실패했습니다: $1',
+'passwordreset-emailerror-capture' => '비밀번호 재설정 이메일이 생성되어 아래에 보여져 있지만, {{GENDER:$2|사용자}}에게 발송하는 데에는 실패했습니다: $1',
 
 # Special:ChangeEmail
 'changeemail' => '이메일 주소 바꾸기',
 'changeemail-header' => '계정 메일 주소 바꾸기',
-'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9a°세요. 바뀜 내용을 확인하기 위해 비밀번호를 입력해야 합니다.',
+'changeemail-text' => 'ì\9d´ë©\94ì\9d¼ ì£¼ì\86\8c를 ë°\94꾸려면 ì\9d´ ì\96\91ì\8b\9dì\9d\84 ì\9e\91ì\84±í\95´ì£¼세요. 바뀜 내용을 확인하기 위해 비밀번호를 입력해야 합니다.',
 'changeemail-no-info' => '이 특수 문서에 직접 접근하려면 반드시 로그인해야 합니다.',
 'changeemail-oldemail' => '현재 이메일 주소 :',
 'changeemail-newemail' => '새 이메일 주소:',
@@ -1068,7 +1072,7 @@ $1 또는 [[{{MediaWiki:Grouppage-sysop}}|다른 관리자]]에게 차단에 대
 여기는 계정을 만들지 않았거나 사용하고 있지 않은 익명 사용자를 위한 토론 문서입니다.
 익명 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다.
 IP 주소는 여러 사용자가 공유할 수 있습니다.
-자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인 하여]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.',
+자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인해서]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.',
 'noarticletext' => '이 문서가 현재 존재하지 않습니다.
 이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|찾거나]],
 이 문서에 관련된 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나,
@@ -1188,7 +1192,7 @@ IP 주소는 여러 사용자가 공유할 수 있습니다.
 'postedit-confirmation' => '편집을 저장했습니다.',
 'edit-already-exists' => '새 문서를 만들 수 없습니다.
 문서가 이미 존재합니다.',
-'defaultmessagetext' => '기본 ë©\94ì\84¸ì§\80 ë\82´ì\9a©',
+'defaultmessagetext' => '기본 ë©\94ì\8b\9cì§\80 ê¸\80',
 'content-failed-to-parse' => '$1 모델에 대한 $2 내용을 구문 분석하는 데 실패했습니다: $3',
 'invalid-content-data' => '잘못된 내용 데이터입니다',
 'content-not-allowed-here' => '"$1" 내용은 [[$2]] 문서예 허용하지 않습니다',
@@ -1437,7 +1441,6 @@ $1",
 'searchmenu-legend' => '찾기 설정',
 'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
 'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드세요!'''",
-'searchhelp-url' => 'Help:목차',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾기]]',
 'searchprofile-articles' => '일반 문서',
 'searchprofile-project' => '도움말 및 프로젝트 문서',
@@ -1698,6 +1701,8 @@ HTML 태그를 확인하세요.',
 'right-editusercssjs' => '다른 사용자의 CSS와 자바스크립트 문서를 편집',
 'right-editusercss' => '다른 사용자의 CSS 문서를 편집',
 'right-edituserjs' => '다른 사용자의 자바스크립트 문서를 편집',
+'right-editmyusercss' => '자신의 사용자 CSS 파일 편집하기',
+'right-editmyuserjs' => '자신의 사용자 자바스크립트 파일 편집하기',
 'right-rollback' => '특정 문서를 편집한 마지막 사용자의 편집을 신속하게 되돌리기',
 'right-markbotedits' => '되돌리기를 봇의 편집으로 취급 가능',
 'right-noratelimit' => '편집이나 다른 행동 속도의 제한을 받지 않음',
@@ -1743,7 +1748,7 @@ HTML 태그를 확인하세요.',
 'action-deleterevision' => '이 판을 삭제',
 'action-deletedhistory' => '이 문서의 삭제된 기여의 역사 보기',
 'action-browsearchive' => '삭제된 문서 찾기',
-'action-undelete' => '이 문서 되살리기',
+'action-undelete' => '이 문서 되살리기',
 'action-suppressrevision' => '이 숨겨진 판을 검토하고 되살릴',
 'action-suppressionlog' => '비공개 기록 보기',
 'action-block' => '이 사용자를 편집하지 못하도록 차단',
@@ -2581,7 +2586,7 @@ $UNWATCHURL
 'rollback-success' => '$1의 편집을 $2의 마지막 버전으로 되돌렸습니다.',
 
 # Edit tokens
-'sessionfailure-title' => 'ì\84¸ì\85\98 ì\86\90ì\8b¤',
+'sessionfailure-title' => 'ì\84¸ì\85\98 ì\8b¤í\8c¨',
 'sessionfailure' => '로그인 세션에 문제가 발생한 것 같습니다.
 세션 하이재킹을 막기 위해 동작이 취소되었습니다.
 브라우저의 뒤로 버튼을 누르고 문서를 새로 고침한 후에 다시 시도해 주세요.',
@@ -2923,18 +2928,16 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 # Move page
 'move-page' => '$1 이동',
 'move-page-legend' => '문서 이동하기',
-'movepagetext' => "아래의 양식을 사용해 문서의 이름을 바꾸고 문서의 모든 역사를 새 이름으로 옮길 수 있습니다.
-이전의 제목은 새 제목으로 넘겨줄 것입니다.
-원래 이름을 가리키는 넘겨주기를 자동으로 새로 고칠 수 있습니다.
-만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]가 있는지 확인해주세요.
-넘겨주기 링크가 제대로 향하고 있는지 확인하여야 합니다.
+'movepagetext' => "아래 양식을 채워 문서의 이름을 바꾸고 모든 역사를 새 이름으로 된 문서로 옮길 수 있습니다.
+원래의 문서는 새 문서로 넘겨주는 링크로만 남게 되고, 원래 이름을 가리키는 넘겨주기는 자동으로 갱신됩니다.
+만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.
+당신은 링크와 가리키는 대상이 서로 일치하도록 해야 하는 책임을 집니다.
 
-참고ë¡\9c ì\83\88 ì \9c목ì\9c¼ë¡\9c ë\90\9c ë¬¸ì\84\9cê°\80 ì\9d´ë¯¸ ì\9e\88ì\9d\84 ë\95\8c, ë\84\98겨주기 ë¬¸ì\84\9cì\9d´ê³  ë¬¸ì\84\9c ì\97­ì\82¬ê°\80 ì\97\86ì\9d\84 ë\95\8cì\97\90ë§\8c ì\9d´ë\8f\99í\95\98ë©° ê·¸ë \87ì§\80 ì\95\8aì\9d\84 ê²½ì\9a°ì\97\90ë\8a\94 ì\9d´ë\8f\99í\95\98ì§\80 '''ì\95\8aì\8aµë\8b\88ë\8b¤'''.
\8b¤ì\88\98ë¡\9c ë¬¸ì\84\9c를 ì\98®ê²¼ì\9d\84 ë\95\8c ë\90\98ë\8f\8c릴 ì\88\98ë\8a\94 ì\9e\88ì§\80ë§\8c ì\9d´ë¯¸ ì\9e\88ë\8a\94 ë¬¸ì\84\9c를 ë\8d®ì\96´ì\93¸ ì\88\98 ì\97\86ì\9d\8c을 의미합니다.
+ë§\8cì\95½ ì\9d´ë¯¸ ì\9e\88ë\8a\94 ë¬¸ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ì\9e\85ë ¥í\96\88ì\9d\84 ë\95\8cë\8a\94 ê·¸ ë¬¸ì\84\9cê°\80 ë¹\84ì\97\88ê±°ë\82\98 ë\84\98겨주기 ë¬¸ì\84\9cì\9d´ê³  ë¬¸ì\84\9c ì\97­ì\82¬ê°\80 ì\97\86ì\96´ì\95¼ë§\8c ì\9d´ë\8f\99ì\9d´ ë\90©ë\8b\88ë\8b¤. ê·¸ë \87ì§\80 ì\95\8aì\9d\84 ê²½ì\9a°ì\97\90ë\8a\94 ì\9d´ë\8f\99ë\90\98ì§\80 '''ì\95\8aì\8aµë\8b\88ë\8b¤'''.
\9d´ê²\83ì\9d\80 ì\8b¤ì\88\98ë¡\9c ì\9d´ë\8f\99í\95\9c ë¬¸ì\84\9c를 ë\90\98ë\8f\8c릴 ì\88\98ë\8a\94 ì\9e\88ì§\80ë§\8c, ì\9d´ë¯¸ ì¡´ì\9e¬í\95\98ë\8a\94 ë¬¸ì\84\9c ì\9c\84ì\97\90 ë\8d®ì\96´ì\94\8cì\9a¸ ì\88\98ë\8a\94 ì\97\86ë\8b¤ë\8a\94 ê²\83을 의미합니다.
 
-'''경고!'''
-인기 있는 문서일 경우 심각하고 예상하지 못한 문제를 초래할 수 있습니다.
-문서를 이동하기 전에 이러한 행동이 초래할 수 있는 결과에 대해 숙지하시기 바랍니다.",
+'''주의!'''
+자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다. 이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
 'movepagetext-noredirectfixer' => "아래의 양식을 사용해 문서의 이름을 바꾸고 문서의 모든 역사를 새 이름으로 옮길 수 있습니다.
 이전의 제목은 새 제목으로 넘겨줄 것입니다.
 [[Special:DoubleRedirects|이중 넘겨주기]]나 [[Special:BrokenRedirects|끊긴 넘겨주기]]가 있는지 확인해주세요.
@@ -3038,7 +3041,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 # Namespace 8 related
 'allmessages' => '시스템 메시지 목록',
 'allmessagesname' => '이름',
-'allmessagesdefault' => '기본 ë\82´ì\9a©',
+'allmessagesdefault' => '기본 ë©\94ì\8b\9cì§\80 ê¸\80',
 'allmessagescurrent' => '현재 문자열',
 'allmessagestext' => '미디어위키 이름공간에 있는 모든 시스템 메시지의 목록입니다.
 미디어위키의 번역 작업에 관심이 있으면 [//www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [//translatewiki.net translatewiki.net]에 참가해주세요.',
@@ -3657,7 +3660,7 @@ Variants for Chinese language
 'exif-exposureprogram-4' => '셔터 우선',
 'exif-exposureprogram-5' => '크리에이티브 프로그램 (피사계 심도 우선)',
 'exif-exposureprogram-6' => '액션 프로그램 (빠른 셔터 속도에 치중)',
-'exif-exposureprogram-7' => 'ì\9d¸ë¬¼ ì\82¬ì§\84 ëª¨ë\93\9c (ë°°ê²½ì\9d\84 ì´\88ì \90 ë°\96ì\9c¼ë¡\9c í\95\98ì\97¬ 대상을 강조)',
+'exif-exposureprogram-7' => 'ì\9d¸ë¬¼ ì\82¬ì§\84 ëª¨ë\93\9c (ë°°ê²½ì\9d\84 ì´\88ì \90 ë°\96ì\9c¼ë¡\9c í\95´ì\84\9c 대상을 강조)',
 'exif-exposureprogram-8' => '풍경 모드 (초점이 배경인 풍경 사진용)',
 
 'exif-subjectdistance-value' => '$1 미터',
@@ -4125,13 +4128,13 @@ $5
 'compare-revision-not-exists' => '지정한 판이 없습니다.',
 
 # Database error messages
-'dberr-header' => '이 위키에 문제가 있습니다.',
+'dberr-header' => '이 위키에 문제가 있습니다',
 'dberr-problems' => '죄송합니다!
 이 사이트는 기술적인 문제가 있습니다.',
 'dberr-again' => '잠시 기다리고 나서 다시 불러오세요.',
-'dberr-info' => '(데이터베이스에 접속할 수 없습니다: $1)',
-'dberr-usegoogle' => '그 동안 구글을 통해 검색할 수도 있습니다.',
-'dberr-outofdate' => '참고ë¡\9c êµ¬ê¸\80ì\9d\98 ë\82´ì\9a© ê°\9cì\9a\94ë\8a\94 ì\98¤ë\9e\98ë\90\9c ê²\83ì\9d¼ ì\88\98ë\8f\84 ì\9e\88ì\8aµë\8b\88ë\8b¤.',
+'dberr-info' => '(데이터베이스 서버에 연결할 수 없습니다: $1)',
+'dberr-usegoogle' => '그 동안 Google을 통해 검색할 수도 있습니다.',
+'dberr-outofdate' => 'ì\88\98ì§\91ë\90\9c ë\82´ì\9a©ì\9d\80 ì\98¤ë\9e\98ë\90\9c ê²\83ì\9d¼ ì\88\98ë\8f\84 ì\9e\88ì\9d\8cì\9d\84 ì°¸ê³ í\95\98ì\84¸ì\9a\94.',
 'dberr-cachederror' => '다음은 요청한 문서의 캐시된 복사본이며, 최신이 아닐 수도 있습니다.',
 
 # HTML forms
index f2ede5e..2f56bec 100644 (file)
@@ -155,7 +155,6 @@ $messages = array(
 'disclaimers' => 'Мийö сöстöмöсь йöз одзын',
 'disclaimerpage' => 'Project:Мийö сöстöмöсь йöз одзын',
 'edithelp' => 'Уджкерись понда отсöт',
-'edithelppage' => 'Help:Уджкерись понда отсöт',
 'helppage' => 'Help:Отсöт',
 'mainpage' => 'Пондöтчан листбок',
 'mainpage-description' => 'Пондöтчан листбок',
index 503593a..31cf119 100644 (file)
@@ -219,6 +219,18 @@ $messages = array(
 'oct' => 'окт',
 'nov' => 'ноя',
 'dec' => 'дек',
+'january-date' => '$1 январь',
+'february-date' => '$1 февраль',
+'march-date' => '$1 март',
+'april-date' => '$1 апрель',
+'may-date' => '$1 май',
+'june-date' => '$1 июнь',
+'july-date' => '$1 июль',
+'august-date' => '$1 август',
+'september-date' => '$1 сентябрь',
+'october-date' => '$1 октябрь',
+'november-date' => '$1 ноябрь',
+'december-date' => '$1 декабрь',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Категория|Категорияла}}',
@@ -353,7 +365,6 @@ $1',
 'disclaimers' => 'Джууаблылыкъны унамау',
 'disclaimerpage' => 'Project:Джууаблылыкъны унамау',
 'edithelp' => 'Тюрлендириуню юсюнден болушлукъ',
-'edithelppage' => 'Help:Тюрлендириу',
 'helppage' => 'Help:Болушлукъ',
 'mainpage' => 'Баш бет',
 'mainpage-description' => 'Баш бет',
@@ -524,7 +535,7 @@ $2',
 {{SITENAME}} сайтда [[Special:Preferences|джарашдырыуларыгъызны]] тюрлендирирге унутмагъыз.',
 'yourname' => 'Къошулуучуну аты',
 'userlogin-yourname' => 'Тергеу джазыуну аты',
-'userlogin-yourname-ph' => 'ТеÑ\80геÑ\83 Ð´Ð¶Ð°Ð·Ñ\8bÑ\83Ñ\83гÑ\8aÑ\83знÑ\83 Ð°Ñ\82Ñ\8bн Ð´Ð¶Ð°Ð·Ñ\8bгÑ\8aÑ\8bз',
+'userlogin-yourname-ph' => 'ТеÑ\80геÑ\83 Ð´Ð¶Ð°Ð·Ñ\8bÑ\83Ñ\83нгÑ\83 Ð°Ñ\82Ñ\8bн Ð´Ð¶Ð°з',
 'yourpassword' => 'Паролюгъуз:',
 'userlogin-yourpassword' => 'Пароль',
 'userlogin-yourpassword-ph' => 'Паролунгу джаз',
@@ -533,7 +544,8 @@ $2',
 'createacct-yourpasswordagain' => 'Паролну бегит',
 'createacct-yourpasswordagain-ph' => 'Паролну энтда бир кере джаз',
 'remembermypassword' => 'Бу компьютерде мени тергеў джазыўуму унутма (эм кёб $1 {{PLURAL:$1|кюн|кюн}})',
-'userlogin-remembermypassword' => 'Мени эсде тутуу',
+'userlogin-remembermypassword' => 'Системада туруу',
+'userlogin-signwithsecure' => 'Джакъланнган байлам',
 'securelogin-stick-https' => 'Чыкъгъандан сора да HTTPS бла байламлы къой',
 'yourdomainname' => 'Сизни доменигиз:',
 'password-change-forbidden' => 'Бу викиде паролугъузну тюрлендиреллик тюлсюз.',
@@ -546,6 +558,7 @@ $2',
 'logout' => 'Чыгъыу',
 'userlogout' => 'Чыгъыу',
 'notloggedin' => 'Авторизация ётмегенсиз',
+'userlogin-noaccount' => 'Аккаунтунг джокъмуду?',
 'userlogin-joinproject' => '{{SITENAME}} сайтха къошул',
 'nologin' => 'Тергеу джазыуугъуз (аккаунтугъуз) джокъмуду? $1.',
 'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
@@ -553,6 +566,7 @@ $2',
 'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
 'gotaccountlink' => 'Кириу',
 'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
+'userlogin-resetpassword-link' => 'Паролну джибериу',
 'helplogin-url' => 'Help:Кириу',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Системагъа кириуде болушлукъ]]',
 'createacct-join' => 'Информациягъызны тюбюрекде джазыгъыз.',
@@ -563,12 +577,14 @@ $2',
 'createacct-realname' => 'Керти атыгъыз (ажымсыз керек тюлдю)',
 'createaccountreason' => 'Чурум:',
 'createacct-reason' => 'Чурум',
+'createacct-reason-ph' => 'Башха тергеу джазыуну нек къураусыз',
 'createacct-captcha' => 'Къоркъуусузлукъну тинтиу',
 'createacct-imgcaptcha-ph' => 'Башыракъда кёрюннген текстни джазыгъыз',
+'createacct-submit' => 'Тергеу джазыуну къура',
 'createacct-benefit-heading' => '{{SITENAME}} сизнича адамла бла этилгенди.',
-'createacct-benefit-body1' => 'тюрлениу',
-'createacct-benefit-body2' => 'бет',
-'createacct-benefit-body3' => 'арт заманда къатышхан',
+'createacct-benefit-body1' => '{{PLURAL:$1|тюрлениу}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|бет}}',
+'createacct-benefit-body3' => 'арт заманда {{PLURAL:$1|къошум этген}}',
 'badretype' => 'Джазгъан паролларыгъыз бир-бирине келишмейдиле.',
 'userexists' => 'Джазылгъан ат хайырландырылады.
 Башха ат сайлагъыз.',
@@ -633,6 +649,7 @@ $2',
 # Email sending
 'php-mail-error-unknown' => "PHP's mail() функцияда белгили болмагъан халат",
 'user-mail-no-addy' => 'Бир e-mail адрес болмагъанлай e-mail иерге кюрешди',
+'user-mail-no-body' => 'Бош неда магъанасыз къысха джазыу бла билдириу иерге изледи.',
 
 # Change password dialog
 'resetpass' => 'Паролну тюрлендириу',
@@ -650,14 +667,15 @@ $2',
 'resetpass-wrong-oldpass' => 'Терс пароль.
 Сиз энди паролну тюрлендирген неда джангы болджаллы пароль соргъан болурсуз.',
 'resetpass-temp-password' => 'Болджаллы пароль:',
+'resetpass-abort-generic' => 'Пароль тюрлендириуню кенгертиу тыйды.',
 
 # Special:PasswordReset
-'passwordreset' => 'Паролну атыу',
-'passwordreset-text' => 'Паролугъуз джиберилир ючюн бу форманы толтуругъуз.',
+'passwordreset' => 'Паролну джибериу',
+'passwordreset-text-one' => 'Паролугъуз джиберилир ючюн бу форманы толтуругъуз.',
+'passwordreset-text-many' => '{{PLURAL:$1|Пароль ийилир ючюн билгилени бир бёлюмюн джазыгъыз.}}',
 'passwordreset-legend' => 'Паролну атыу',
 'passwordreset-disabled' => 'Бу викиде паролла атыу амал джукъланыбды.',
 'passwordreset-emaildisabled' => 'Бу викиде электрон почтаны функциялары джукъланыбдыла.',
-'passwordreset-pretext' => '{{PLURAL:$1||Тюбюрекде берилген билгиледен бирин джазыгъыз}}',
 'passwordreset-username' => 'Къошулуучуну аты:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Джазылгъан билдириуню эсебине къара?',
@@ -867,6 +885,7 @@ $2',
 Кетерилген болур.',
 'edit-conflict' => 'Тюрлендириулени конфликти.',
 'edit-no-change' => 'Текстде тюрлениуле эсленмегени ючюн, сизни тюрлендириуюгюз къабыл этилмеди.',
+'postedit-confirmation' => 'Тюрлендириуюгюз сакъланды.',
 'edit-already-exists' => 'Джангы бет къураргъа боллукъ тюлдю.
 Алайсызда барды бу атлы бет.',
 'defaultmessagetext' => 'Тынгылау бла текст',
@@ -1116,7 +1135,6 @@ $1",
 'searchmenu-legend' => 'Излеуню джарашдырыулары',
 'searchmenu-exists' => "'''Бу викиде «[[:$1]]» бет барды'''",
 'searchmenu-new' => "'''Бу вики-проектде «[[:$1]]» бетни къура!'''",
-'searchhelp-url' => 'Help:Ичиндегиле',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
 'searchprofile-articles' => 'Баш бетле',
 'searchprofile-project' => 'Болушлукъ эм проект бетле',
@@ -1180,7 +1198,7 @@ $1",
 'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|кюн|кюн}}',
 'prefs-watchlist-edits' => 'Кёзде тургъан тизмени кенглешдирилген вариантында кёргюзюллюк тюрлениулени саны:',
 'prefs-watchlist-edits-max' => 'Максимум саны:1000',
-'prefs-watchlist-token' => 'Ð\9aÑ\91зде Ñ\82Ñ\8bргъан тизмени токени:',
+'prefs-watchlist-token' => 'Ð\9aÑ\91зде Ñ\82Ñ\83ргъан тизмени токени:',
 'prefs-misc' => 'Башха джарашдырыула',
 'prefs-resetpass' => 'Паролну тюрлендир',
 'prefs-changeemail' => 'Электрон почтаны адресин ауушдур',
@@ -1306,6 +1324,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'userrights-changeable-col' => 'Сиз тюрлендиреллик къауумла',
 'userrights-unchangeable-col' => 'Сиз тюрлендирелмезлик къауумла',
 'userrights-irreversible-marker' => '$1*',
+'userrights-conflict' => 'Къошулуучу хакъланы конфликти! Тюрлендириуню джангыдан сакълатыб кёрюгюз.',
 
 # Groups
 'group' => 'Группа:',
@@ -1586,6 +1605,8 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 file_uploads джарашдырыулагъа бир къарагъыз.',
 'uploadscripted' => 'Бу файл, браузер бла халатлы таныргъа боллукъ, HTML-код неда скрипт джюрютеди.',
 'uploadvirus' => 'Файл вируслуду! $1 къара.',
+'uploadjava' => 'Файл, Java .class файлы болгъан ZIP-архивди.
+Къоркъуусузлукъ бла байламлы, Java-файлла джюклеген джарамайды.',
 'upload-source' => 'Къайнакъ файл',
 'sourcefilename' => 'Къайнакъ аты файлны:',
 'sourceurl' => 'Къайнакъны URL-адреси:',
@@ -1634,11 +1655,20 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 'upload-http-error' => 'HTTP хата болду: $1',
 
 # File backend
+'backend-fail-stream' => '«$1» файл окъулмады.',
 'backend-fail-backup' => '«$1» файлны резерв копиясын этерге болмайды.',
 'backend-fail-notexists' => '$1 файл джокъду.',
 'backend-fail-delete' => '«$1» файл кетерилмеди.',
+'backend-fail-alreadyexists' => '«$1» файл алгъадан барды.',
 'backend-fail-store' => '$1 файл $2 ичинде сакъланылынмады.',
+'backend-fail-copy' => '«$2» файл «$1» файлгъа копия этилмеди.',
+'backend-fail-move' => '«$1» файлны «$2» файлгъа кёчюрюлмеди.',
+'backend-fail-opentemp' => 'Болджаллы файлны ачалмайды.',
+'backend-fail-writetemp' => 'Болджаллы файлгъа джазалмады.',
+'backend-fail-closetemp' => 'Болджаллы файлны джабалмайды.',
 'backend-fail-read' => '«$1» файлны окъуялмады.',
+'backend-fail-create' => '«$1» файлны джазалмады.',
+'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
 
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
@@ -2049,7 +2079,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'mywatchlist' => 'Кёздеги тизме',
 'watchlistfor2' => '$1 ючюн $2',
 'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
-'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни статьяланы кёрюр неда тюрлендирир ючюн $1.',
+'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни статьяларын кёрюр неда тюрлендирир ючюн бери ётюгюз: $1.',
 'watchnologin' => 'Системагъа кирирге керекди.',
 'watchnologintext' => 'Кёзюгюзде тургъан тизмегизни тюрлендирир ючюн [[Special:UserLogin|системагъа кирирге керексиз]].',
 'addwatch' => 'Кёзде тургъан тизмеге къош',
@@ -2409,12 +2439,12 @@ $1',
 Тыйылыуну журналы тюбюрек кёргюзюлгенди:',
 'blocklog-showsuppresslog' => 'Бу къошулуучу мындан алгъа тыйылгъанды эмда джашырылгъанды.
 Джашырыу журналны кёрюр ючюн тюбюрек къарагъыз:',
-'blocklogentry' => '[[$1]] Ð±Ð»Ð¾Ðº Ñ\8dÑ\82илингенди $2 Ð·Ð°Ð¼Ð°Ð½Ð½Ð³Ð° $3',
+'blocklogentry' => '[[$1]] ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83гÑ\8aа $2 Ð±Ð¾Ð»Ð´Ð¶Ð°Ð»Ð³Ñ\8aа Ñ\82Ñ\8bйгÑ\8aÑ\8bÑ\87 Ñ\81алдÑ\8b $3',
 'reblock-logentry' => '[[$1]] ючюн бошалыу заманын $2 $3 этиб тыйыу джарашдырыуларын тюрлендирди',
 'blocklogtext' => 'Къошулуучуланы тыйылыу бла тыйылыудан чыгъарыуну журналы.
 Автомат халда тыйылгъан IP-адресле былайда кёргюзюлмейдиле.
 Банла бла блокланы кёрюр ючюн [[Special:BlockList|блок тизмесине]] къарагъыз.',
-'unblocklogentry' => '$1 ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83дан Ð±Ð»Ð¾Ðº Ð°Ð»Ñ\8bндÑ\8b',
+'unblocklogentry' => '$1 ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83нÑ\83 Ñ\82Ñ\8bйгÑ\8aÑ\8bÑ\87Ñ\8bн ÐºÐµÑ\82еÑ\80ди',
 'block-log-flags-anononly' => 'джангыз аноним къошулуучула',
 'block-log-flags-nocreate' => 'Тергеу джазыуланы (аккаунтланы) регистрациялары тыйылыбды',
 'block-log-flags-noautoblock' => 'автоблок джукъланыбды',
@@ -2853,7 +2883,24 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
 'hours' => '{{PLURAL:$1|$1 сагъат|$1 сагъат}}',
 'days' => '{{PLURAL:$1|$1 кюн|$1 кюн}}',
+'weeks' => '{{PLURAL:$1|ыйыкъ}}',
+'months' => '{{PLURAL:$1|ай}}',
+'years' => '{{PLURAL:$1|джыл}}',
 'ago' => '$1 алгъа',
+'just-now' => 'тюз бусагъатда',
+
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|сагъат}} мындан алгъа',
+'minutes-ago' => '$1 {{PLURAL:$1|минут}} мындан алгъа',
+'seconds-ago' => '$1 {{PLURAL:$1|секунд}} мындан алгъа',
+'monday-at' => '$1 баш кюн',
+'tuesday-at' => '$1 гюрге кюн',
+'wednesday-at' => '$1 барас кюн',
+'thursday-at' => '$1 орта кюн',
+'friday-at' => '$1 барым кюн',
+'saturday-at' => '$1 шабат кюн',
+'sunday-at' => '$1 ыйых кюн',
+'yesterday-at' => '$1 тюнене',
 
 # Bad image list
 'bad_image_list' => 'Формат былай болургъа керекди:
@@ -2998,6 +3045,8 @@ $1',
 'exif-gpsdifferential' => 'GPS дифференциялы тюзетиу',
 'exif-jpegfilecomment' => 'JPEG-файлны белгиси',
 'exif-keywords' => 'Ачхыч сёзле',
+'exif-worldregioncreated' => 'Бу сурат этилген дуния регион',
+'exif-countrycreated' => 'Бу сурат этилген кърал',
 'exif-countrydest' => 'Суратланнган кърал',
 'exif-provinceorstatedest' => 'Суратланнган провинция, территория неда штат',
 'exif-citydest' => 'Суратланнган шахар',
@@ -3588,13 +3637,17 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'htmlform-submit' => 'Джибер',
 'htmlform-reset' => 'Тюрлендириулени ызына сал',
 'htmlform-selectorother-other' => 'Башха',
+'htmlform-no' => 'Огъай',
+'htmlform-yes' => 'Хоу',
+'htmlform-chosen-placeholder' => 'Вариантны сайлагъыз',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 толу текст излеуню хайырландыргъан',
 'sqlite-no-fts' => '$1 толу текст излеуню хайырландыра билмеген',
 
 # New logging system
-'logentry-delete-delete' => '$1, $3 бетни кетерди',
+'logentry-delete-delete' => '$3 бетни $1 {{GENDER:$2|кетерди}}',
+'logentry-delete-restore' => '$3 бетни $1 {{GENDER:$2|ызына салды}}',
 'revdelete-content-hid' => 'ичиндегиси джашырылыбды',
 'revdelete-summary-hid' => 'тюрлендириуню ачыкълауу джашырылыбды',
 'revdelete-uname-hid' => 'къошулуучуну аты джашырылыбды',
index 82ef0ed..cb0fc23 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Caesius noh en Idee vum Manes
+ * @author Geitost
  * @author Nemo bis
  * @author Purodha
  * @author Reedy
@@ -465,7 +466,6 @@ $1',
 'disclaimers' => 'Henwies',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Hölp för et Bearbeide',
-'edithelppage' => 'Help:Hölp',
 'helppage' => 'Help:Hölp',
 'mainpage' => 'Haupsigg',
 'mainpage-description' => 'Haupsigg',
@@ -679,7 +679,7 @@ Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].'
 'notloggedin' => 'Nit enjelogg',
 'userlogin-noaccount' => 'Do häß noch keine Zohjang?',
 'userlogin-joinproject' => 'Aanmälde zom Metmaache!',
-'nologin' => "Wann De Dich noch nit aanjemeldt häs, dann dun Dich '''$1'''.",
+'nologin' => 'Wann de dich noch nit aanjemeldt häs, dann dun dich $1.',
 'nologinlink' => 'neu aanmelde',
 'createaccount' => 'Aanmelde als ene neue Metmaacher',
 'gotaccount' => "Do bes ald aanjemeldt {{GRAMMAR:en|{{SITENAME}}}}? Dann jangk nohm '''$1'''.",
@@ -1377,7 +1377,6 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'searchmenu-legend' => 'Enschtällonge för et Söhke',
 'searchmenu-exists' => "*Sigg '''[[$1]]'''",
 'searchmenu-new' => "'''Donn de Sigg „[[:$1|$1]]“ hee em Wiki aanlääje'''",
-'searchhelp-url' => 'Help:Hölp',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeich all Sigge, di met däm Tex aanfange]]',
 'searchprofile-articles' => 'Sigge vum Enhalt',
 'searchprofile-project' => 'Hülp- ov Projäk-Sigge',
index 239ddd8..b6ddd9a 100644 (file)
@@ -325,7 +325,6 @@ $messages = array(
 'disclaimers' => 'Ferexetname',
 'disclaimerpage' => 'Project:Ferexetname',
 'edithelp' => 'Alîkariya guherandinê',
-'edithelppage' => 'Help:Çawa rûpelekê biguherînim',
 'helppage' => 'Help:Alîkarî',
 'mainpage' => 'Destpêk',
 'mainpage-description' => 'Destpêk',
@@ -455,10 +454,17 @@ $2',
 
 Tu dikarî {{SITENAME}} niha weke bikarhênerekî nediyarkirî bikarbînî, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner <span class='plainlinks'>[$1 dîsa têkevî]</span>.
 Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kiriyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.",
+'welcomeuser' => 'Xêr hatî, $1!',
 'yourname' => 'Navê bikarhêner:',
+'userlogin-yourname' => 'Navê bikarhêner',
+'userlogin-yourname-ph' => 'Navê xwe yê bikarhêneriyê binivîse',
 'yourpassword' => 'Şîfre:',
+'userlogin-yourpassword' => 'Şîfre',
+'userlogin-yourpassword-ph' => 'Şîfreya xwe binivîse',
 'yourpasswordagain' => 'Şîfreyê dîsa binivîse:',
 'remembermypassword' => 'Şifreya min di her têketina min de bîne bîra xwe (herî zêde $1 {{PLURAL:$1|rojekê|rojan}})',
+'userlogin-remembermypassword' => 'Min têketî bihêle',
+'userlogin-signwithsecure' => 'Girêdana parastî bikarbîne',
 'yourdomainname' => 'Domaînê te',
 'externaldberror' => 'Çewtiyeke bingeha daneyan heye, an jî destûra te ya rojanekirina hesabê xweyê navxweyî nîne.',
 'login' => 'Têkeve',
@@ -469,14 +475,22 @@ Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd
 'logout' => 'Derkeve',
 'userlogout' => 'Derkeve',
 'notloggedin' => 'Xwe tomar nekir',
+'userlogin-noaccount' => 'Hesabekî te nîne?',
+'userlogin-joinproject' => 'Tevlî {{SITENAME}} bibe',
 'nologin' => 'Hesabê te nîne? $1.',
 'nologinlink' => 'Bibe endam',
 'createaccount' => 'Hesabê nû çêke',
 'gotaccount' => 'Hesabê te heye? $1.',
 'gotaccountlink' => 'Têkeve',
 'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
-'createaccountmail' => 'bi e-name',
+'userlogin-resetpassword-link' => 'Şîfreyê ji nû ve çêke',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Alîkariya têketinê]]',
+'createacct-emailrequired' => 'E-name',
+'createaccountmail' => 'Use a temporary random password and send it to the email address specified below',
 'createaccountreason' => 'Sedem:',
+'createacct-reason' => 'Sedem',
+'createacct-submit' => 'Hesabê xwe biafirîne',
+'createacct-benefit-body2' => '{{PLURAL:$1|rûpel}}',
 'badretype' => 'Her du şîfreyên ku te nivîsîn li hevdu nayên.',
 'userexists' => 'Ev navî bikarhênerî berê tê bikaranîn. Xêra xwe navekî din bibe.',
 'loginerror' => 'Çewtiya têketinê',
@@ -706,9 +720,13 @@ Sedema jêbirina rûpelê bi referansa li jêr hatiye piştrastkirin.',
 'log-fulllog' => 'Tevahiya wê bibîne',
 'edit-conflict' => 'Têkçûna guherandinan.',
 'edit-no-change' => 'Guherandina te nehate hesibandin, ji ber ku guherandinên nivîsê tune bûn.',
+'postedit-confirmation' => 'Guhertina te hate tomarkirin.',
 'edit-already-exists' => 'Nikarî rûpeleka nuh çêke.
 Ew berê heye.',
 
+# Content models
+'content-model-css' => 'CSS',
+
 # "Undo" feature
 'undo-success' => 'Ev guherandin dikare were şûndekirin. Ji kerema xwe ferqa piştî tomarkirinê bibîne, bê ka tu dixwazî vê guhertoyê tomar bikî an na. Ger te şaşîtiyek kir, ji kerema xwe derkeve.',
 'undo-failure' => 'Ev guhertin ji ber guherandinên piştî wê re nikare were şûndekirin.',
@@ -820,7 +838,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'searchmenu-legend' => 'Vebijartinên lêgerrînê',
 'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
 'searchmenu-new' => 'Rûpela "[[:$1]]" çêke!',
-'searchhelp-url' => 'Help:Alîkarî',
 'searchprofile-articles' => 'Rûpelên naverokê',
 'searchprofile-project' => 'Rûpelên alîkariyê û projeyê',
 'searchprofile-images' => 'Multîmedya',
@@ -882,6 +899,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-rendering' => 'Rû',
 'saveprefs' => 'Tercîhan tomar bike',
 'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
+'restoreprefs' => 'Hemû eyarên berê ji nû ve ava bike',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
 'columns' => 'Stûn:',
@@ -910,7 +928,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-files' => 'Dosya',
 'prefs-emailconfirm-label' => 'Piştrastkirina E-nameyê:',
 'youremail' => 'E-nameya te:',
-'username' => 'Navê bikarhêner:',
+'username' => '{{GENDER:$1|Navê bikarhêner}}:',
 'uid' => 'Nasnameya bikarhêner:',
 'prefs-memberingroups' => 'Endamê/a {{PLURAL:$1|komê|koman}}:',
 'prefs-registration' => 'Dema xweqeydkirinê:',
@@ -921,13 +939,15 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'badsig' => 'Îmzeya ne derbasdar! Li HTML binêre ka sedema şaşbûnê çiye.',
 'badsiglength' => 'Navê te zêde dirêj e; pêwîst e di bin {{PLURAL:$1|nîşanekê|nîşanan}} de be.',
 'yourgender' => 'Zayend:',
+'gender-unknown' => 'Veşartî',
 'gender-male' => 'Nêr',
 'gender-female' => 'Mê',
 'email' => 'E-name',
 'prefs-help-realname' => 'Navê rastî ne pêwîst e. Heke tu navê xwe binivisî, ewê ji bo karê te were bikaranîn.',
-'prefs-help-email' => 'Adrêsa te yê e-nameyan ne gereke were nivîsandin, lê ew qebûldike, ku bikarhênerên din vê naskirinê te kanibin e-nameyan ji te ra bişînin.',
+'prefs-help-email' => 'Email address is optional, but is needed for password resets, should you forget your password.',
 'prefs-help-email-required' => 'Navnîşana e-nameyê hewce ye.',
 'prefs-info' => 'Agahiyên sereke',
+'prefs-i18n' => 'Navneteweyîkirin',
 'prefs-signature' => 'Îmze',
 'prefs-dateformat' => 'Formata dîrokê',
 'prefs-advancedediting' => 'Vebijarkên berfireh',
@@ -991,11 +1011,13 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'right-minoredit' => 'Guhertina biçûk e',
 'right-move' => 'Rûpelan bigerîne',
 'right-upload' => 'Dosyeyan lê bar bike',
+'right-autoconfirmed' => 'Rûpelên nîv-parastî biguherîne',
 'right-delete' => 'Rûpelan jê bibe',
 'right-browsearchive' => 'Li rûpelên jêbirî bigerre',
 'right-undelete' => 'Jêbirinê betal bike',
 'right-import' => 'Rûpelan ji wikiyên din împort bike',
 'right-userrights' => 'Hemû mafên bikarhêner biguherîne',
+'right-userrights-interwiki' => 'Mafên bikarhênerên li ser wîkiyên din biguherîne',
 'right-sendemail' => 'Ji bikarhênerên di re e-name bişîne',
 
 # Special:Log/newusers
@@ -1022,6 +1044,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'action-browsearchive' => 'li rûpelên jêbirî bigere',
 'action-undelete' => 'vê rûpelê dîsa çêke',
 'action-userrights' => 'hemû mafên bikarhêneran biguherîne',
+'action-userrights-interwiki' => 'mafê bikarhênerên li ser wîkiyên din biguherîne',
 'action-sendemail' => 'e-nameyan bişîne',
 
 # Recent changes
@@ -1167,7 +1190,7 @@ Xêra xwe navekî din bibîne.',
 'filehist-filesize' => 'Mezinahiya pelê',
 'filehist-comment' => 'Şîrove',
 'filehist-missing' => 'Pel nîne',
-'imagelinks' => 'Girêdanên vî wêneyî',
+'imagelinks' => 'File usage',
 'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
 'nolinkstoimage' => 'Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.',
 'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
@@ -1257,7 +1280,7 @@ Agahdariya li ser [$2 rûpela danasîna pelê] li jêr tê nîşandan.',
 'nrevisions' => '$1 {{PLURAL:$1|guherandin|guherandin}}',
 'nviews' => '$1 {{PLURAL:$1|dîtin|dîtin}}',
 'lonelypages' => 'Rûpelên sêwî',
-'uncategorizedpages' => 'Rûpelên bê kategorî',
+'uncategorizedpages' => 'Rûpelên bêkategorî',
 'uncategorizedcategories' => 'Kategoriyên bê kategorî',
 'uncategorizedimages' => 'Wêneyên bê kategorî',
 'uncategorizedtemplates' => 'Şablonên bê kategorî',
@@ -1575,7 +1598,7 @@ Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/dele
 'sp-contributions-uploads' => 'yên barkirî',
 'sp-contributions-logs' => 'têketin',
 'sp-contributions-talk' => 'gotûbêj',
-'sp-contributions-userrights' => 'Ã\8edarekirina mafên bikarhêneran',
+'sp-contributions-userrights' => 'îdarekirina mafên bikarhêneran',
 'sp-contributions-search' => 'Li beşdariyan bigere',
 'sp-contributions-username' => "Adresa IP'yê yan navê bikarhêner:",
 'sp-contributions-submit' => 'Lêgerîn',
@@ -1748,6 +1771,7 @@ Rûpela "[[:$1]]" berê heye. Tu rast dixazê wê jêbibê ji bo navguherandinê
 'delete_and_move_confirm' => 'Erê, rûpelê jê bibe',
 'delete_and_move_reason' => 'Jêbir ji bo navguherandinê',
 'immobile-source-page' => 'Navê vê rûpelê nikare were guherandin.',
+'move-leave-redirect' => 'Beralîkirinekê bihêle',
 
 # Export
 'export' => 'Rûpelan eksport bike',
@@ -1863,8 +1887,10 @@ Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 
 # Info page
 'pageinfo-header-edits' => 'Guherandin',
+'pageinfo-header-restrictions' => 'Parastina rûpelê',
 'pageinfo-views' => 'Hejmara dîtinê',
 'pageinfo-watchers' => 'Hejmara kesên dişopînin',
+'pageinfo-subpages-name' => 'Binrûpelên vê rûpelê',
 'pageinfo-edits' => 'Hejmara guherandinan',
 'pageinfo-toolboxlink' => 'Agahiya rûpelê',
 'pageinfo-redirectsto-info' => 'agahî',
@@ -1946,6 +1972,7 @@ Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'exif-languagecode' => 'Ziman',
 'exif-iimcategory' => 'Kategorî',
 'exif-label' => 'Etîket',
+'exif-copyrighted' => 'Rewşa telîfê',
 'exif-disclaimer' => 'Ferexetname',
 
 'exif-unknowndate' => 'Dîroka nayê zanîn',
@@ -2039,6 +2066,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # action=watch/unwatch
 'confirm-watch-button' => 'Temam',
+'confirm-unwatch-button' => 'Baş e',
 
 # Multipage image navigation
 'imgmultipageprev' => '← rûpela berî vê',
@@ -2153,6 +2181,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 'feedback-subject' => 'Mijar:',
 'feedback-message' => 'Peyam:',
 'feedback-cancel' => 'Betal bike',
+'feedback-close' => 'Çêbû',
 
 # Search suggestions
 'searchsuggest-search' => 'Lêgerîn',
index 55f572c..9847bcd 100644 (file)
@@ -20,7 +20,7 @@
 
 $namespaceNames = array(
        NS_MEDIA            => 'Media',
-       NS_SPECIAL          => 'Arbednek',
+       NS_SPECIAL          => 'Arbennek',
        NS_TALK             => 'Keskows',
        NS_USER             => 'Devnydhyer',
        NS_USER_TALK        => 'Keskows_Devnydhyer',
@@ -38,7 +38,7 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       'Arbennek'           => NS_SPECIAL,
+       'Arbednek'           => NS_SPECIAL,
        'Cows'               => NS_TALK,
        'Kescows'            => NS_TALK,
        'Cows_Devnydhyer'    => NS_USER_TALK,
@@ -209,24 +209,37 @@ $magicWords = array(
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Islinenna kevrennow:',
-'tog-hideminor' => 'Cudha chanjyow bian yn chanjyow a-dhiwedhes',
-'tog-showtoolbar' => 'Disqwedhes an toulvar chanjya (res yw JavaScript)',
-'tog-rememberpassword' => "Perthy cov a'm omgelmy war'n beurel-ma (rag $1 {{PLURAL:$1|dedh}} dhe'n moyha)",
+'tog-hideminor' => 'Kudha chanjyow byhan yn chanjyow a-dhiwedhes',
+'tog-hidepatrolled' => 'Kudha chanjyow patrolys yn chanjyow a-dhiwedhes',
+'tog-newpageshidepatrolled' => 'Kudha folennow patrolys dhyworth rol an folennow nowyth',
+'tog-extendwatchlist' => 'Efani an rol golya dhe dhiskwedhes pub chanj, a-dar an moyha a-dhiwedhes hepken',
+'tog-usenewrc' => "Bagasa chanjyow herwydh an folen yn chanjyow a-dhiwedhes hag y'n rol golya (res yw JavaScript)",
+'tog-numberheadings' => 'Awto-nivera pennlinennow',
+'tog-showtoolbar' => 'Diskwedhes an toulvar chanjya (res yw JavaScript)',
+'tog-editondblclick' => 'Chanjya folennow ow tobyl-glyckya (res yw JavaScript)',
+'tog-editsection' => 'Galosegi chanjya trehow der an kevrennow [chanjya]',
+'tog-editsectiononrightclick' => 'Galosegi chanjya trehow dre dhyhow-glyckya war ditlys an trehow (res yw JavaScript)',
+'tog-rememberpassword' => "Perthi kov a'm omgelmi war an beurel-ma (rag $1 {{PLURAL:$1|dydh}} dhe'n moyha)",
 'tog-watchcreations' => "Keworra folennow gwruthys genev ha restrennow ughkergys genev dhe'm rol golyas",
 'tog-watchdefault' => "Keworra folennow ha restrennow chanjys genev dhe'm rol golyas",
 'tog-watchmoves' => "Keworra folennow ha restrennow gwayys genev dhe'm rol golyas",
 'tog-watchdeletion' => "Keworra folennow ha restrennow dileys genev dhe'm rol golyas",
-'tog-minordefault' => 'Merkya pub chanj avel bian dre dhefowt',
-'tog-showjumplinks' => 'Galosegy kevrennow hedhadowder "lamma dhe"',
-'tog-watchlisthideown' => "Cudha ow chanjyow vy y'n rol golyas",
-'tog-watchlisthidebots' => "Cudha chanjyow gans bottow y'n rol golyas",
-'tog-watchlisthideminor' => "Cudha chanjyow bian y'n rol golyas",
-'tog-watchlisthideliu' => "Cudha chanjyow gans devnydhyoryon omgelmys y'n rol golyas",
-'tog-watchlisthideanons' => "Cudha chanjyow gans devnydhyoryon heb hanow y'n rol golyas",
-'tog-showhiddencats' => 'Disqwedhes classys cudhys',
-'tog-useeditwarning' => 'Gwra ow gwarnya pan wrellen vy gasa folen chanjya gans chanjyow nag eus gwithys',
-
-'underline-always' => 'Puppres',
+'tog-minordefault' => 'Merkya pub chanj avel byhan dre dhefowt',
+'tog-enotifwatchlistpages' => 'Danvon ebost dhymm pan vo chanjyes folen po restren eus war ow rol golya',
+'tog-enotifusertalkpages' => 'Danvon ebost dhymm pan vo chanjyes ow folen geskows',
+'tog-oldsig' => 'Sinans a-lemmyn:',
+'tog-fancysig' => 'Dyghtya an sinans avel wikitekst (heb kevren awtomatek)',
+'tog-showjumplinks' => 'Galosegi kevrennow hedhadowder "lamma dhe"',
+'tog-watchlisthideown' => "Kudha ow chanjyow y'n rol golya",
+'tog-watchlisthidebots' => "Kudha chanjyow gans bottow y'n rol golya",
+'tog-watchlisthideminor' => "Kudha chanjyow byhian y'n rol golya",
+'tog-watchlisthideliu' => "Kudha chanjyow gans devnydhyoryon omgelmys y'n rol golya",
+'tog-watchlisthideanons' => "Kudha chanjyow gans devnydhyoryon heb hanow y'n rol golya",
+'tog-ccmeonemails' => 'Danvon dhymm dasskrif a ebostow a dhanvonav dhe dhevnydhyoryon erel',
+'tog-showhiddencats' => 'Diskwedhes klassys kudhys',
+'tog-useeditwarning' => 'Gul ow gwarnya pan gyssiv folen janjya gans chanjyow nag yw gwithys',
+
+'underline-always' => 'Pub prys',
 'underline-never' => 'Jammes',
 'underline-default' => 'Defowt an beurel po an grohen',
 
@@ -237,13 +250,13 @@ $messages = array(
 'editfont-serif' => 'Font serif',
 
 # Dates
-'sunday' => "De'Sul",
-'monday' => "De'Lun",
-'tuesday' => "De'Meurth",
-'wednesday' => "De'Merher",
-'thursday' => "De'Yow",
-'friday' => "De'Gwener",
-'saturday' => "De'Sadorn",
+'sunday' => "Dy'Sul",
+'monday' => "Dy'Lun",
+'tuesday' => "Dy'Meurth",
+'wednesday' => "Dy'Merher",
+'thursday' => "Dy'Yow",
+'friday' => "Dy'Gwener",
+'saturday' => "Dy'Sadorn",
 'sun' => 'Sul',
 'mon' => 'Lun',
 'tue' => 'Meu',
@@ -252,7 +265,7 @@ $messages = array(
 'fri' => 'Gwe',
 'sat' => 'Sad',
 'january' => 'Genver',
-'february' => 'Whevrel',
+'february' => 'Hwevrel',
 'march' => 'Meurth',
 'april' => 'Ebrel',
 'may_long' => 'Me',
@@ -264,7 +277,7 @@ $messages = array(
 'november' => 'Du',
 'december' => 'Kevardhu',
 'january-gen' => 'Genver',
-'february-gen' => 'Whevrel',
+'february-gen' => 'Hwevrel',
 'march-gen' => 'Meurth',
 'april-gen' => 'Ebrel',
 'may-gen' => 'Me',
@@ -276,7 +289,7 @@ $messages = array(
 'november-gen' => 'Du',
 'december-gen' => 'Kevardhu',
 'jan' => 'Gen',
-'feb' => 'Whe',
+'feb' => 'Hwe',
 'mar' => 'Meu',
 'apr' => 'Ebr',
 'may' => 'Me',
@@ -287,36 +300,49 @@ $messages = array(
 'oct' => 'Hed',
 'nov' => 'Du',
 'dec' => 'Kev',
+'january-date' => '$1 Genver',
+'february-date' => '$1 Hwevrel',
+'march-date' => '$1 Meurth',
+'april-date' => '$1 Ebrel',
+'may-date' => '$1 Me',
+'june-date' => '$1 Metheven',
+'july-date' => '$1 Gortheren',
+'august-date' => '$1 Est',
+'september-date' => '$1 Gwynngala',
+'october-date' => '$1 Hedra',
+'november-date' => '$1 Du',
+'december-date' => '$1 Kevardhu',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Class|Classys}}',
-'category_header' => 'Folennow y\'n class "$1"',
+'pagecategories' => '{{PLURAL:$1|Klass|Klassys}}',
+'category_header' => 'Folennow y\'n klass "$1"',
 'subcategories' => 'Isglassys',
-'category-media-header' => 'Media y\'n class "$1"',
+'category-media-header' => 'Media y\'n klass "$1"',
 'category-empty' => "''Nyns eus na folennow na media y'n class-ma.''",
-'hidden-categories' => '{{PLURAL:$1|Class cudhys|Classys cudhys}}',
-'hidden-category-category' => 'Classys cudhys',
-'category-subcat-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma marnas an isglass a sew.|Yma dhe'n class-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew, dhyworth somm a $2.}}",
-'category-subcat-count-limited' => "Yma dhe'n class-ma an {{PLURAL:$1|isglass|$1 isglass}} a sew.",
-'category-article-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma marnas an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folennow}} a sew y'n class-ma, dhyworth somm a $2.}}",
-'category-article-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma.",
-'category-file-count' => "{{PLURAL:$2|Nyns eus dhe'n class-ma an folen a sew.|Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma, dhyworth somm a $2.}}",
-'category-file-count-limited' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew y'n class-ma.",
+'hidden-categories' => '{{PLURAL:$1|Klass kudhys|Klassys kudhys}}',
+'hidden-category-category' => 'Klassys kudhys',
+'category-subcat-count' => "{{PLURAL:$2|Ny'n jeves an klass-ma marnas an isglass a syw.|An klass-ma a'n jeves an {{PLURAL:$1|isglass|$1 isglass}} a syw, dhyworth somm a $2.}}",
+'category-subcat-count-limited' => "An klass-ma a'n jeves an {{PLURAL:$1|isglass|$1 isglass}} a syw.",
+'category-article-count' => "{{PLURAL:$2|Ny'n jeves an klass-ma marnas an folen a syw.|Yma an {{PLURAL:$1|folen|$1 folennow}} a syw y'n klass-ma, dhyworth somm a $2.}}",
+'category-article-count-limited' => "Yma an {{PLURAL:$1|folen|$1 folen}} a syw y'n klass-ma.",
+'category-file-count' => "{{PLURAL:$2|Ny'n jeves an klass-ma marnas an restren a syw.|Yma an {{PLURAL:$1|restren|$1 restren}} a syw y'n klass-ma, dhyworth somm a $2.}}",
+'category-file-count-limited' => "Yma an {{PLURAL:$1|folen|$1 folen}} a syw y'n klass-ma.",
 'listingcontinuesabbrev' => 'pes.',
 
 'about' => 'A-dro dhe',
-'newwindow' => '(y whra egery yn fenester noweth)',
-'cancel' => 'Hedhy',
+'article' => 'Folen dhalgh',
+'newwindow' => '(ygeri yn fenester nowyth)',
+'cancel' => 'Hedhi',
 'moredotdotdot' => 'Moy...',
 'mypage' => 'Folen',
-'mytalk' => 'Kescows',
-'anontalk' => 'Kescows rag an drigva IP-ma',
-'navigation' => 'Lewyans',
+'mytalk' => 'Keskows',
+'anontalk' => 'Keskows rag an drigva IP-ma',
+'navigation' => 'Kevrennow lewya',
 'and' => '&#32;ha(g)',
 
 # Cologne Blue skin
-'qbfind' => 'Cavos',
-'qbbrowse' => 'Peury',
+'qbfind' => 'Kavos',
+'qbbrowse' => 'Peuri',
 'qbedit' => 'Chanjya',
 'qbpageoptions' => 'An folen-ma',
 'qbmyoptions' => 'Ow folennow',
@@ -332,25 +358,25 @@ $messages = array(
 'vector-action-unprotect' => 'Chanjya difresans',
 'vector-view-create' => 'Gwruthyl',
 'vector-view-edit' => 'Chanjya',
-'vector-view-history' => 'Gweles an istory',
+'vector-view-history' => 'Gweles an istori',
 'vector-view-view' => 'Redya',
 'vector-view-viewsource' => 'Gweles an bennfenten',
 'actions' => 'Gwriansow',
 'namespaces' => 'Spasys hanow',
-'variants' => 'Dyffransow',
+'variants' => 'Variennow',
 
-'navigation-heading' => 'Rol lewyans',
+'navigation-heading' => 'Rol lewya',
 'errorpagetitle' => 'Gwall',
-'returnto' => 'Dewheles dhe $1.',
+'returnto' => 'Dehweles dhe $1.',
 'tagline' => 'Dhyworth {{SITENAME}}',
 'help' => 'Gweres',
-'search' => 'Whilas',
-'searchbutton' => 'Whilas',
-'go' => 'Ke',
+'search' => 'Hwilas',
+'searchbutton' => 'Hwilas',
+'go' => 'Mos',
 'searcharticle' => 'Mos',
-'history' => 'Istory an folen',
-'history_short' => 'Istory',
-'updatedmarker' => 'nowedhys a-ban ow vysytyans diwettha',
+'history' => 'Istori an folen',
+'history_short' => 'Istori',
+'updatedmarker' => 'nowedhys a-dhia ow vysytyans diwettha',
 'printableversion' => 'Versyon pryntyadow',
 'permalink' => 'Kevren fast',
 'print' => 'Pryntya',
@@ -361,6 +387,7 @@ $messages = array(
 'create-this-page' => 'Gwruthyl an folen-ma',
 'delete' => 'Dilea',
 'deletethispage' => 'Dilea an folen-ma',
+'undeletethispage' => 'Diswul dilea an folen-ma',
 'undelete_short' => 'Disdhilea {{PLURAL:$1|unn janj|$1 chanj}}',
 'viewdeleted_short' => 'Gweles {{PLURAL:$1|unn janj diles|$1 chanj diles}}',
 'protect' => 'Difres',
@@ -368,319 +395,368 @@ $messages = array(
 'protectthispage' => 'Difres an folen-ma',
 'unprotect' => 'Chanjya difresans',
 'unprotectthispage' => 'Chanjya difresans an folen-ma',
-'newpage' => 'Folen noweth',
-'talkpage' => "Dadhelva a-dro dhe'n folen-ma",
-'talkpagelinktext' => 'Kescows',
+'newpage' => 'Folen nowyth',
+'talkpage' => "Dadhlow a'n folen-ma",
+'talkpagelinktext' => 'Keskows',
 'specialpage' => 'Folen arbennek',
 'personaltools' => 'Toulys personel',
-'postcomment' => 'Rann noweth',
+'postcomment' => 'Tregh nowyth',
 'articlepage' => 'Gweles an folen',
-'talk' => 'Kescows',
-'views' => 'Gwelow',
-'toolbox' => 'Box toulys',
-'userpage' => 'Folen devnydhyer',
-'projectpage' => 'Folen meta',
+'talk' => 'Keskows',
+'views' => 'Gwelyansow',
+'toolbox' => 'Toulgist',
+'userpage' => 'Gweles an folen dhevnydhyer',
+'projectpage' => 'Gweles folen an ragdres',
 'imagepage' => 'Gweles folen an restren',
 'mediawikipage' => 'Gweles folen an messajys',
-'templatepage' => 'Gweles folen an scantlyn',
-'viewhelppage' => 'Gweles an folen gweres',
-'categorypage' => 'Gweles folen an class',
-'viewtalkpage' => 'Gweles an kescows',
+'templatepage' => 'Gweles folen an skantlyn',
+'viewhelppage' => 'Gweles an folen weres',
+'categorypage' => 'Gweles folen an klass',
+'viewtalkpage' => 'Gweles an dadhlow',
 'otherlanguages' => 'Yn yethow erel',
-'redirectedfrom' => '(Daswedyes dhyworth $1)',
-'redirectpagesub' => 'Folen daswedyans',
-'lastmodifiedat' => 'An folen-ma a veu chanjys an $1, dhe $2.',
+'redirectedfrom' => '(Daskedyes dhyworth $1)',
+'redirectpagesub' => 'Folen dhaskedya',
+'lastmodifiedat' => 'Diwettha chanj an folen-ma o an $1, dhe $2.',
 'protectedpage' => 'Folen dhifresys',
 'jumpto' => 'Lamma dhe:',
-'jumptonavigation' => 'lewyans',
-'jumptosearch' => 'whilas',
-'view-pool-error' => 'Drog yw genen, gorgargys yw an servyers orth an termyn-ma.
+'jumptonavigation' => 'kevrennow lewya',
+'jumptosearch' => 'hwilas',
+'view-pool-error' => 'Drog yw genen, gorgergys yw an servyers orth an termyn-ma.
 Yma re a dhevnydhyoryon owth assaya gweles an folen-ma.
-Gortowgh pols kens why dhe assaya hedhes an folen-ma arta, mar pleg.
+Gortewgh pols kyns hwi dhe assaya hedhas an folen-ma arta, mar pleg.
 
 $1',
-'pool-errorunknown' => 'Gwall ancoth',
+'pool-errorunknown' => 'Gwall ankoth',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 'aboutsite' => 'A-dro dhe {{SITENAME}}',
 'aboutpage' => 'Project:Kedhlow',
-'copyright' => 'Cavadow yw an dalgh yn-dann $1.',
+'copyright' => 'Kavadow yw an dalgh yn-dann $1.',
 'copyrightpage' => '{{ns:project}}:Gwirbryntyansow',
-'currentevents' => 'Darvosow a-lemmyn',
-'currentevents-url' => 'Project:Darvosow a-lemmyn',
+'currentevents' => 'Hwarvosow a-lemmyn',
+'currentevents-url' => 'Project:Hwarvosow a-lemmyn',
 'disclaimers' => 'Avisyansow',
 'disclaimerpage' => 'Project:Avisyans ollgemmyn',
 'edithelp' => 'Gweres gans chanjya',
-'edithelppage' => 'Help:Chanjya',
 'helppage' => 'Help:Gweres',
-'mainpage' => 'Folen dre',
-'mainpage-description' => 'Folen dre',
-'policy-url' => 'Project:Policy',
+'mainpage' => 'Dynnargh',
+'mainpage-description' => 'Dynnargh',
+'policy-url' => 'Project:Polici',
 'portal' => 'Porth an gemeneth',
 'portal-url' => 'Project:Porth an gemeneth',
-'privacy' => 'Policy privetter',
-'privacypage' => 'Project:Policy privetter',
+'privacy' => 'Polici privetter',
+'privacypage' => 'Project:Polici privetter',
 
-'badaccess' => 'Gwall cummyes',
+'badaccess' => 'Gwall kummyes',
 
 'ok' => 'Sur',
 'retrievedfrom' => 'Daskevys dhyworth "$1"',
-'youhavenewmessages' => 'Yma $1 genowgh ($2).',
-'newmessageslink' => 'messajys noweth',
+'youhavenewmessages' => "$1 a'gas beus ($2).",
+'newmessageslink' => 'Messajys nowyth',
 'newmessagesdifflink' => 'chanj diwettha',
-'youhavenewmessagesfromusers' => 'Yma $1 dhywgh dhyworth {{PLURAL:$3|devnydhyer aral|$3 devnydhyer}} ($2).',
-'youhavenewmessagesmanyusers' => 'Yma $1 dhywgh dhyworth lies devnydhyer ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|messach noweth}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|chanj diwettha}}',
-'youhavenewmessagesmulti' => 'Yma messajys noweth genowgh war $1',
+'youhavenewmessagesfromusers' => "Hwi a'gas beus $1 dhyworth {{PLURAL:$3|devnydhyer aral|$3 devnydhyer}} ($2).",
+'youhavenewmessagesmanyusers' => "Hwi a'gas beus $1 dhyworth lies devnydhyer ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|messach nowyth|messajys nowyth}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|chanj|chanjyow}} diwettha',
+'youhavenewmessagesmulti' => "Messajys nowyth a'gas beus war $1",
 'editsection' => 'chanjya',
 'editold' => 'chanjya',
 'viewsourceold' => 'gweles an bennfenten',
 'editlink' => 'chanjya',
 'viewsourcelink' => 'gweles an bennfenten',
-'editsectionhint' => 'Chanjya an rann: $1',
+'editsectionhint' => 'Chanjya an tregh: $1',
 'toc' => 'Rol an folen',
-'showtoc' => 'disqwedhes',
-'hidetoc' => 'cudha',
-'collapsible-expand' => 'Efany',
-'thisisdeleted' => 'Gweles po restorya $1?',
+'showtoc' => 'diskwedhes',
+'hidetoc' => 'kudha',
+'collapsible-expand' => 'Efani',
+'thisisdeleted' => 'Gweles po daskor $1?',
 'viewdeleted' => 'Gweles $1?',
 'restorelink' => '{{PLURAL:$1|unn janj diles|$1 chanj diles}}',
 'feedlinks' => 'Feed:',
-'site-rss-feed' => '$1 RSS feed',
-'site-atom-feed' => '$1 Atom feed',
-'page-rss-feed' => '"$1" feed RSS',
-'page-atom-feed' => '"$1" feed Atom',
+'site-rss-feed' => 'Feed RSS $1',
+'site-atom-feed' => 'Feed Atom $1',
+'page-rss-feed' => 'Feed RSS "$1"',
+'page-atom-feed' => 'Feed Atom "$1"',
 'red-link-title' => '$1 (nyns eus folen henwys yndelma)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Erthygel',
-'nstab-user' => 'Folen devnydhyer',
+'nstab-main' => 'Folen',
+'nstab-user' => 'Folen dhevnydhyer',
 'nstab-media' => 'Folen media',
 'nstab-special' => 'Folen arbennek',
 'nstab-project' => 'Folen ragdres',
 'nstab-image' => 'Restren',
 'nstab-mediawiki' => 'Messach',
-'nstab-template' => 'Scantlyn',
+'nstab-template' => 'Skantlyn',
 'nstab-help' => 'Gweres',
-'nstab-category' => 'Class',
+'nstab-category' => 'Klass',
 
 # General errors
 'error' => 'Gwall',
 'databaseerror' => 'Gwall database',
-'readonly' => 'Alwhedhys yw an database',
+'readonly' => 'Alhwedhys yw an database',
 'missingarticle-rev' => '(amendyans#: $1)',
 'missingarticle-diff' => '(Dyffrans: $1, $2)',
 'internalerror' => 'Gwall a-bervedh',
 'internalerror_info' => 'Gwall a-bervedh: $1',
-'filecopyerror' => 'Ny veu possybyl copia an restren "$1" dhe "$2".',
-'filerenameerror' => 'Ny veu possybyl dashenwel an restren "$1" dhe "$2".',
-'filedeleteerror' => 'Ny veu possybyl dilea an restren "$1".',
-'filenotfound' => 'Ny veu kevys an restren "$1".',
+'filecopyerror' => 'Ny allas kopia an restren "$1" dhe "$2".',
+'filerenameerror' => 'Ny allas dashenwel an restren "$1" dhe "$2".',
+'filedeleteerror' => 'Ny allas dilea an restren "$1".',
+'filenotfound' => 'Ny allas kavos an restren "$1".',
 'cannotdelete-title' => 'Ny yllir dilea an folen "$1"',
 'badtitle' => 'Titel drog',
 'viewsource' => 'Gweles an bennfenten',
+'viewsource-title' => 'Gweles an bennfenten rag $1',
+'protectedpagetext' => 'Difresys re beu an folen-ma rag gwitha rag chanjya po gwriansow erel.',
+'viewsourcetext' => 'Hwi a yll gweles ha kopia pennfenten an folen-ma:',
+'mycustomcssprotected' => "Ny'gas beus kummyes dhe janjya an folen CSS-ma.",
+'mycustomjsprotected' => "Ny'gas beus kummyes dhe janjya an folen JavaScript-ma.",
+'ns-specialprotected' => 'Ny yllir chanjya folennow arbennek.',
+'exception-nologin' => 'Nyns owgh omgelmys',
+'exception-nologin-text' => 'An folen-ma po an gwrians-ma a wovyn mayth omgelmowgh war an wiki-ma.',
 
 # Login and logout pages
-'logouttext' => "'''Digelmys owgh why lemmyn.'''
+'logouttext' => "'''Digelmys owgh lemmyn.'''
 
-Why a yll pesya usya {{SITENAME}} heb hanow, po why a yll <span class='plainlinks'>[$1 omgelmy arta]</span> avel an keth devnydhyer po avel devnydhyer aral.
-Notyowgh: Neb folennow a alsa bos disqwedhys kepar del owgh why omgelmys whath, erna wryllowgh why clerhe cache agas peurel.",
+Hwi a yll pesya devnydhya {{SITENAME}} yn tihanow, po hwi a yll <span class='plainlinks'>[$1 omgelmi arta]</span> avel an keth devnydhyer po avel devnydhyer aral.
+Notyewgh: Neb folennow a alsa bos diskwedhys kepar del owgh hwath omgelmys, erna glerhahowgh cache agas peurel.",
 'welcomeuser' => 'Dynnargh, $1!',
-'welcomecreation-msg' => 'Gwruthys yw agas acont.
-Na wrewgh ankevy dhe janjya agas [[Special:Preferences|dowisyansow {{SITENAME}}]].',
-'yourname' => 'Hanow usyer:',
+'welcomecreation-msg' => 'Gwruthys re beu agas akont.
+Na ankevewgh dhe janjya agas [[Special:Preferences|dewisyansow {{SITENAME}}]].',
+'yourname' => 'Hanow devnydhyer:',
+'userlogin-yourname' => 'Hanow devnydhyer',
+'userlogin-yourname-ph' => 'Entrewgh agas hanow devnydhyer',
 'yourpassword' => 'Ger tremena:',
-'yourpasswordagain' => 'Jynnscrifowgh agas ger tremena arta:',
-'remembermypassword' => "Perthy cov a'm omgelmy war'n jynn amontya-ma (rag $1 {{PLURAL:$1|dedh}} dhe'n moyha)",
-'securelogin-stick-https' => 'Gwitha junyes gans HTTPS wosa omgelmy',
+'userlogin-yourpassword' => 'Ger tremena',
+'userlogin-yourpassword-ph' => 'Entrewgh agas ger tremena',
+'createacct-yourpassword-ph' => 'Entrewgh ger tremena',
+'yourpasswordagain' => 'Jynnskrifewgh agas ger tremena arta:',
+'createacct-yourpasswordagain' => 'Afydhyewgh an ger tremena',
+'createacct-yourpasswordagain-ph' => 'Entrewgh an ger tremena arta',
+'remembermypassword' => "Perthi kov a'm omgelmi war an jynn amontya-ma (rag $1 {{PLURAL:$1|dydh}} dhe'n moyha)",
+'userlogin-remembermypassword' => "Perthi kov a'm omgelmi",
+'userlogin-signwithsecure' => 'Devnydhya junyans diogel',
+'securelogin-stick-https' => 'Gwitha junyes gans HTTPS wosa omgelmi',
 'yourdomainname' => 'Agas tiredh:',
-'login' => 'Omgelmy',
-'nav-login-createaccount' => 'Omgelmy / Formya acont noweth',
-'loginprompt' => 'Res yw dhywgh galosegy cookies rag omgelmy orth {{SITENAME}}.',
-'userlogin' => 'Omgelmy / formya acont noweth',
-'userloginnocreate' => 'Omgelmy',
-'logout' => 'Digelmy',
-'userlogout' => 'Digelmy',
+'password-change-forbidden' => 'Ny yllir chanjya geryow tremena war an wiki-ma.',
+'login' => 'Omgelmi',
+'nav-login-createaccount' => 'Omgelmi / Gwruthyl akont nowyth',
+'loginprompt' => 'Res yw dhywgh galosegi cookies rag omgelmi orth {{SITENAME}}.',
+'userlogin' => 'Omgelmi / gwruthyl akont nowyth',
+'userloginnocreate' => 'Omgelmi',
+'logout' => 'Digelmi',
+'userlogout' => 'Digelmi',
 'notloggedin' => 'Digelmys',
-'nologin' => "A nyns eus acont dhywgh? '''$1'''.",
-'nologinlink' => 'Formyowgh acont',
-'createaccount' => 'Formya acont noweth',
-'gotaccount' => "Eus acont dhis seulabres? '''$1'''.",
-'gotaccountlink' => 'Omgelmy',
-'userlogin-resetlink' => 'Eus ankevys genowgh agas manylyon omgelmy?',
-'createaccountmail' => 'der e-bost',
+'userlogin-noaccount' => "A ny'gas beus akont?",
+'userlogin-joinproject' => 'Junya {{SITENAME}}',
+'nologin' => "A ny'gas beus akont? '''$1'''.",
+'nologinlink' => 'Gwruthyl akont',
+'createaccount' => 'Gwruthyl akont nowyth',
+'gotaccount' => "Eus akont dhywgh seulabrys? '''$1'''.",
+'gotaccountlink' => 'Omgelmi',
+'userlogin-resetlink' => 'A ankevsowgh hwi agas manylyon omgelmi?',
+'userlogin-resetpassword-link' => 'Dassettya agas ger tremena',
+'helplogin-url' => 'Help:Omgelmi',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Gweres gans omgelmi]]',
+'createacct-join' => 'Entrewgh agas kedhlow a-woles.',
+'createacct-emailrequired' => 'Trigva ebost',
+'createacct-emailoptional' => 'Trigva ebost (a-dhewis)',
+'createacct-email-ph' => 'Entrewgh agas trigva ebost',
+'createaccountmail' => "Devnydhya ger tremena chonsus anbarthus hag y dhanvon dhe'n drigva ebost res a-woles",
+'createacct-realname' => 'Hanow gwir (a-dhewis)',
 'createaccountreason' => 'Acheson:',
-'badretype' => 'Ny wrug omdhesedhes an geryow tremena entrys genowgh.',
-'userexists' => "Yma'n hanow usyer entrys genowgh ow pos usys seulabres.
-Dowisowgh hanow aral mar pleg.",
-'loginerror' => 'Gwall omgelmy',
-'createaccounterror' => 'Ny veu possybyl formya an acont: $1',
-'nocookiesnew' => 'Formys yw an acont, mes nyns owgh why omgelmys.
-Yma {{SITENAME}} owth usya cookies rag omgelmy devnydhyoryon.
+'createacct-reason' => 'Acheson',
+'createacct-reason-ph' => 'Prag yth esowgh ow kwruthyl akont aral',
+'createacct-captcha' => 'Gwiryans sekerder',
+'createacct-imgcaptcha-ph' => 'Entrewgh an tekst a welowgh a-ugh',
+'createacct-submit' => 'Gwruthyl agas akont',
+'createacct-benefit-heading' => 'Gwrys yw {{SITENAME}} gans tus kepar ha hwi.',
+'createacct-benefit-body1' => '{{PLURAL:$1|janj|chanj}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|folen}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|gevriyas|kevriyas}} a-dhiwedhes',
+'badretype' => 'Ny omdhesedh an geryow tremena entrys genowgh.',
+'userexists' => 'Y tevnydhir an hanow devnydhyer entrys genowgh seulabrys.
+Dewisewgh ken hanow mar pleg.',
+'loginerror' => 'Gwall omgelmi',
+'createacct-error' => 'Gwall ow kwruthyl akont',
+'createaccounterror' => 'Ny allas gwruthyl an akont: $1',
+'nocookiesnew' => "Gwruthys veu an akont, mes nyns owgh omgelmys.
+{{SITENAME}} a dhevnydh cookies rag omgelmi devnydhyoryon.
 Dialosegys yw cookies war agas jynn amontya.
-Gwrewgh aga galosegy, hag omgelmowgh dre usya agas hanow usyer ha ger tremena noweth.',
-'nocookieslogin' => 'Yma {{SITENAME}} owth usya cookies rag omgelmi devnydhyoryon.
+Galosegewgh i, hag omgelmewgh der agas hanow devnydhyer ha'gas ger tremena nowyth.",
+'nocookieslogin' => '{{SITENAME}} a dhevnydh cookies rag omgelmi devnydhyoryon.
 Dialosegys yw cookies war agas jynn amontya.
-Gwrewgh aga galosegi hag assaya arta.',
-'noname' => 'Ny wrussowgh why ry hanow usyer da.',
-'loginsuccesstitle' => 'Omgelmy a sowenas',
-'loginsuccess' => "'''Omgelmys owgh why lemmyn orth {{SITENAME}} avel \"\$1\".'''",
-'nouserspecified' => 'Res yw dhywgh ry hanow usyer.',
-'wrongpassword' => 'Camm o an ger tremena.
-Assayowgh arta mar pleg.',
-'wrongpasswordempty' => 'Gwag o an ger-tremena res. Assayowgh arta mar pleg.',
+Galosegewgh i hag assayewgh arta.',
+'noname' => 'Ny resowgh hanow devnydhyer da.',
+'loginsuccesstitle' => 'Omgelmi a sewenis',
+'loginsuccess' => "'''Omgelmys owgh lemmyn orth {{SITENAME}} avel \"\$1\".'''",
+'nouserspecified' => 'Res yw dhywgh ri hanow devnydhyer.',
+'wrongpassword' => 'Kamm o an ger tremena.
+Assayewgh arta mar pleg.',
+'wrongpasswordempty' => 'Gwag o an ger tremena res.
+Assayewgh arta mar pleg.',
 'passwordtooshort' => "Res yw dhe eryow tremena bos {{PLURAL:$1|1 lytheren|$1 lytheren}} dhe'n lyha.",
-'password-name-match' => "Ny yll agas ger tremena bos an keth ha'gas hanow usyer.",
-'password-login-forbidden' => 'Difennys yw usya an hanow usyer-ma hag an ger tremena-ma.',
-'mailmypassword' => 'E-bostya ger tremena nowyth',
-'passwordremindertitle' => 'Ger tremena noweth rag {{SITENAME}}',
-'passwordremindertext' => 'Nebonen (why martesen, dhyworth an drigva IP $1) a wovynnas ger tremena noweth rag {{SITENAME}} ($4). Ger tremena termynyel rag an devnydhyer
-"$2" re beu gwruthys hag a veu settyes dhe "$3". Mars o henna agas bodh, y fedh res dhywgh omgelmy ha dowis ger tremena noweth lemmyn.
-Agas ger tremena termynyel a wra diwedha yn {{PLURAL:$5|unn jedh|$5 dedh}}.
-
-Mar qwrug nebonen aral govyn hemma, po yma cov dhywgh a\'gas ger tremena ha nyns yw whans dhywgh y janjya namoy, why a yll sconya aswon an messach-ma ha pesya usya agas ger tremena coth.',
-'noemail' => 'Nyns eus trigva ebost recordyes rag an devnydhyer "$1".',
-'noemailcreate' => 'Res yw dhewgh ry trigva ebost da',
-'passwordsent' => 'Ger tremena noweth re beu danvenys dhe\'n drigva ebost covscrifys rag "$1".
-Gwrewgh omgelmy arta mar pleg wosa why dh\'y receva.',
+'password-name-match' => "Ny yll agas ger tremena bos an keth ha'gas hanow devnydhyer.",
+'password-login-forbidden' => 'Difennys yw devnydhya an hanow devnydhyer-ma hag an ger tremena-ma.',
+'mailmypassword' => 'Ebostya ger tremena nowyth',
+'passwordremindertitle' => 'Ger tremena nowyth rag {{SITENAME}}',
+'passwordremindertext' => 'Nebonan (hwi martesen, dhyworth an drigva IP $1) a wovynnis ger tremena nowyth rag {{SITENAME}} ($4). Ger tremena anbarthus rag an devnydhyer
+"$2" re beu gwruthys hag a veu settyes dhe "$3". Mars o henna agas bodh, y fydh res dhywgh omgelmi ha dewis ger tremena nowyth lemmyn.
+Agas ger tremena anbarthus a dhiwedh yn {{PLURAL:$5|unn jydh|$5 dydh}}.
+
+Mar kovynnis nebonan aral hemma, po hwi a\'gas beus kov a\'gas ger tremena ha ny\'m beus hwans dh\'y janjya namoy, hwi a yll skonya aswon an messach-ma ha pesya devnydhya agas ger tremena koth.',
+'noemail' => 'Nyns eus trigva ebost rekordys rag an devnydhyer "$1".',
+'noemailcreate' => 'Res yw dhywgh ri trigva ebost da',
+'passwordsent' => 'Ger tremena nowyth re beu danvenys dhe\'n drigva ebost kovskrifys rag "$1".
+Omgelmewgh arta mar pleg wosa hwi dh\'y receva.',
 'emailauthenticated' => 'Afydhyes veu agas trigva ebost an $2 dhe $3.',
-'emailconfirmlink' => 'Afydhyowgh agas trigva ebost',
-'invalidemailaddress' => 'Ny yllir alowa an drigva ebost drefen bos furv drog dhedhy.
-Entrowgh trigva da y furv po gwakhowgh an furvlen-na.',
-'accountcreated' => 'Acont formys',
-'accountcreatedtext' => 'Formys re beu an acont rag $1.',
-'createaccount-title' => 'Formya acont war {{SITENAME}}',
-'createaccount-text' => 'Nebonan a wrug gwruthyl acont rag agas trigva ebost war {{SITENAME}} ($4) henwys "$2", "$3" y er tremena.
-Why a dalvia omgelmy ha chanjya agas ger tremena lemmyn.
-
-Why a yll sconya aswon an messach-ma, mar peu an acont-ma formyes yn gwall.',
-'usernamehasherror' => "Ny yllowgh why usya lytherennow hash y'gas ger tremena",
+'emailconfirmlink' => 'Afydhyewgh agas trigva ebost',
+'invalidemailaddress' => 'Ny yllir alowa an drigva ebost drefen bos furvyans drog dhedhi.
+Entrewgh trigva da y furvyans po gwakhewgh an furvlen-na.',
+'accountcreated' => 'Akont gwruthys',
+'accountcreatedtext' => 'Gwruthys re beu an akont rag $1.',
+'createaccount-title' => 'Gwruthyl akont rag {{SITENAME}}',
+'createaccount-text' => 'Nebonan a wrug akont rag agas trigva ebost war {{SITENAME}} ($4) henwys "$2", "$3" y er tremena.
+Y talvia dhywgh omgelmi ha chanjya agas ger tremena lemmyn.
+
+Hwi a yll skonya aswon an messach-ma mar peu an akont-ma gwruthys yn gwall.',
+'usernamehasherror' => 'Ny yllir bos lytherennow hash yn henwyn devnydhyer',
 'loginlanguagelabel' => 'Yeth: $1',
 
 # Change password dialog
-'resetpass' => 'Chanjya ger-tremena',
-'resetpass_announce' => 'Why a wrug omgelmy yn unn usya coden ebostyes termynyel.
-Rag gorfenna omgelmy, res yw dhywgh settya ger tremena noweth omma:',
-'resetpass_header' => 'Chanjya ger tremena an acont',
-'oldpassword' => 'Ger tremena coth:',
-'newpassword' => 'Ger tremena noweth:',
-'retypenew' => 'Jynnscrifowgh an ger tremena noweth arta:',
-'resetpass_submit' => 'Settya an ger tremena hag omgelmy',
-'resetpass_success' => 'Chanjyes re beu agas ger tremena yn soweny!
-Orth agas omgelmy lemmyn...',
+'resetpass' => 'Chanjya ger tremena',
+'resetpass_announce' => 'Hwi a omgelmis dre goden ebostyes anbarthus.
+Rag gorfenna omgelmi, res yw dhywgh settya ger tremena nowyth omma:',
+'resetpass_header' => 'Chanjya ger tremena an akont',
+'oldpassword' => 'Ger tremena koth:',
+'newpassword' => 'Ger tremena nowyth:',
+'retypenew' => 'Jynnscrifewgh an ger tremena nowyth arta:',
+'resetpass_submit' => 'Settya an ger tremena hag omgelmi',
+'resetpass_success' => 'Chanjyes re beu agas ger tremena yn sewen!
+Orth agas omgelmi lemmyn...',
 'resetpass_forbidden' => 'Ny yllir chanjya geryow tremena',
-'resetpass-submit-loggedin' => 'Chanjya an ger-tremena',
+'resetpass-submit-loggedin' => 'Chanjya an ger tremena',
 'resetpass-submit-cancel' => 'Hedhi',
-'resetpass-temp-password' => 'Ger tremena termynyel:',
+'resetpass-temp-password' => 'Ger tremena anbarthus:',
 
 # Special:PasswordReset
-'passwordreset' => 'Dassettya ger tremena',
-'passwordreset-text' => 'Gwrewgh lenwel an furvlen-ma rag receva ebost ynno manylyon agas acont.',
-'passwordreset-legend' => 'Dassettya ger tremena',
-'passwordreset-disabled' => "Dialosegys yw dassettya geryow tremena war'n wiki ma.",
-'passwordreset-pretext' => "{{PLURAL:$1||Entrowgh onen a'n tymmyn a dhata a-woles}}",
-'passwordreset-username' => 'Hanow usyer:',
+'passwordreset' => 'Dassettya an ger tremena',
+'passwordreset-text-one' => 'Lenwewgh an furvlen-ma rag dassettya agas ger tremena.',
+'passwordreset-text-many' => "{{PLURAL:$1|Entrewgh onan a'n tymmyn a dhata a-woles rag dassettya agas ger tremena.}}",
+'passwordreset-legend' => 'Dassettya an ger tremena',
+'passwordreset-disabled' => 'Dialosegys yw dassettya geryow tremena war an wiki-ma.',
+'passwordreset-username' => 'Hanow devnydhyer:',
 'passwordreset-domain' => 'Tiredh:',
 'passwordreset-email' => 'Trigva ebost:',
-'passwordreset-emailtitle' => 'Manylyon agas acont war {{SITENAME}}',
+'passwordreset-emailtitle' => 'Manylyon agas akont war {{SITENAME}}',
+'passwordreset-emailsent' => 'Ebost dassettya ger tremena re beu danvenys.',
+'passwordreset-emailsent-capture' => 'Ebost dassettya ger tremena re beu danvenys, hag y hyllir y weles a-woles.',
 
 # Special:ChangeEmail
 'changeemail' => 'Chanjya trigva ebost',
-'changeemail-header' => 'Chanjya trigva ebost an acont',
-'changeemail-text' => 'Grewgh lenwel an furvlen-ma rag chanjya agas trigva ebost. Y fedh res dhywgh entra agas ger tremena rag afydhya an chanj-ma.',
+'changeemail-header' => 'Chanjya trigva ebost an akont',
+'changeemail-text' => 'Lenwewgh an furvlen-ma rag chanjya agas trigva ebost. Y fydh res dhywgh entra agas ger tremena rag afydhya an chanj-ma.',
+'changeemail-oldemail' => 'Agas trigva ebost a-lemmyn:',
+'changeemail-newemail' => 'Agas trigva ebost nowyth:',
+'changeemail-none' => '(nagonan)',
+'changeemail-password' => 'Agas ger tremena war {{SITENAME}}:',
+'changeemail-submit' => 'Chanjya an trigva ebost',
+'changeemail-cancel' => 'Hedhi',
 
 # Edit page toolbar
-'bold_sample' => 'Text tew',
-'bold_tip' => 'Text tew',
-'italic_sample' => 'Text italek',
-'italic_tip' => 'Text italek',
+'bold_sample' => 'Tekst tew',
+'bold_tip' => 'Tekst tew',
+'italic_sample' => 'Tekst italek',
+'italic_tip' => 'Tekst italek',
 'link_sample' => 'Titel an gevren',
 'link_tip' => 'Kevren bervedhel',
 'extlink_sample' => 'http://www.example.com titel an gevren',
-'extlink_tip' => 'Kevren a-ves (na ankevowgh an rager http://)',
-'headline_sample' => 'Text an titel',
+'extlink_tip' => 'Kevren a-ves (na ankevewgh an rager http://)',
+'headline_sample' => 'Tekst an bennlinen',
 'headline_tip' => 'Pennlinen nivel 2',
-'nowiki_sample' => 'Keworrowgh text heb furvyans omma',
-'nowiki_tip' => 'Sconya aswon furvyans wiki',
+'nowiki_sample' => 'Keworrewgh tekst heb furvyans omma',
+'nowiki_tip' => 'Skonya aswon furvyans wiki',
 'image_tip' => 'Restren neythys',
 'media_tip' => 'Kevren restren',
 'sig_tip' => 'Agas sinans gans stampa-termyn',
 
 # Edit pages
-'summary' => 'Derivas cot:',
+'summary' => 'Berrskrif:',
 'subject' => 'Testen/Pennlinen:',
-'minoredit' => 'Chanj bian yw hemma',
-'watchthis' => 'Golyas an folen-ma',
-'savearticle' => 'Gwitha',
+'minoredit' => 'Chanj byhan yw hemma',
+'watchthis' => 'Golya an folen-ma',
+'savearticle' => 'Gwitha an folen',
 'preview' => 'Ragwel',
-'showpreview' => 'Ragweles',
-'showdiff' => 'Disqwedhes an chanjyow',
-'anoneditwarning' => "'''Gwarnyans:''' Nyns owgh why omgelmys.
-Recordys a vedh agas trigva IP yn istory an folen-ma.",
-'anonpreviewwarning' => "''Nyns owgh why omgelmys. Dre witha, agas trigva IP a vedh recordyes yn istory chanjya an folen-ma.''",
-'summary-preview' => "Ragwel a'n derivas kot:",
-'loginreqtitle' => 'Res yw omgelmy',
-'loginreqlink' => 'omgelmy',
-'accmailtitle' => 'Danvenys yw an ger-tremena.',
-'newarticle' => '(Noweth)',
-'newarticletext' => "Why a wrug sewya kevren dhe folen nag yw gwruthys whath.
-Rag gwruthyl an folen, dalethowgh jynnscrifa y'n gist a-woles (gwelowgh an [[{{MediaWiki:Helppage}}|folen weres]] rag moy kedhlow).
-Mar qwrussowgh why dos omma yn camm, clyckyowgh boton '''war-dhelergh''' agas peurel.",
-'noarticletext' => 'Nyns eus text y\'n folen-ma.
-Why a yll [[Special:Search/{{PAGENAME}}|whilas titel an folen-ma]] yn folennow erel,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} whilas y\'n covnotennow kelmys],
+'showpreview' => 'Diskwedhes ragwel',
+'showlivepreview' => 'Ragwel byw',
+'showdiff' => 'Diskwedhes an chanjyow',
+'anoneditwarning' => "'''Gwarnyans:''' Nyns owgh omgelmys.
+Rekordys vydh agas trigva IP yn istori an folen-ma.",
+'anonpreviewwarning' => "''Nyns owgh omgelmys. Dre witha, agas trigva IP a vydh rekordyes istori chanjya an folen-ma.''",
+'summary-preview' => "Ragwel a'n berrskrif:",
+'loginreqtitle' => 'Res yw omgelmi',
+'loginreqlink' => 'omgelmi',
+'accmailtitle' => 'Ger-tremena danvenys.',
+'newarticle' => '(Nowyth)',
+'newarticletext' => "Hwi re holyas kevren dhe folen nag yw gwruthys hwath.
+Rag gwruthyl an folen, dalethewgh jynnskrifa y'n gist a-woles (gwelewgh an [[{{MediaWiki:Helppage}}|folen weres]] rag moy kedhlow).
+Mar teuthowgh omma yn kamm, klyckyewgh boton '''war-dhelergh''' agas peurel.",
+'noarticletext' => 'Nyns eus tekst y\'n folen-ma a-lemmyn.
+Hwi a yll [[Special:Search/{{PAGENAME}}|hwilas titel an folen-ma]] yn folennow erel,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hwilas y\'n kovnotennow kelmys],
 po [{{fullurl:{{FULLPAGENAME}}|action=edit}} chanjya an folen-ma]</span>.',
-'noarticletext-nopermission' => 'Nyns eus text y\'n folen-ma a-lemmyn.
-Why a yll [[Special:Search/{{PAGENAME}}|whilas titel an folen-ma]] yn folennow erel, po <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} whilas y\'n covnotennow kelmys]</span>, mes nyns eus cummyes dhywgh a wruthyl an folen-ma.',
-'userpage-userdoesnotexist' => 'Nyns yw covscrifys an acont devnydhyer "$1".
-Gwrewgh checkya mars yw whans dhywgh gwruthyl/chanjya an folen-ma.',
-'userpage-userdoesnotexist-view' => 'Nyns yw covscrifys an acont devnydher "$1".',
+'noarticletext-nopermission' => "Nyns eus tekst y'n folen-ma a-lemmyn.
+Hwi a yll [[Special:Search/{{PAGENAME}}|hwilas titel an folen-ma]] yn folennow erel, po <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hwilas y'n kovnotennow kelmys]</span>, mes ny'gas beus kummyes dhe wruthyl an folen-ma.",
+'userpage-userdoesnotexist' => 'Nyns yw kovskrifys an akont devnydhyer "$1".
+Checkyewgh mar pleg mara\'gas beus hwans dhe wruthyl/dhe janjya an folen-ma.',
+'userpage-userdoesnotexist-view' => 'Nyns yw kovskrifys an akont devnydhyer "$1".',
 'updated' => '(Nowedhys)',
 'note' => "'''Noten:'''",
-'previewnote' => "Gwrewgh perthy cov, nyns yw hemma marnas ragwel.''' Nyns yw gwithys agas chanjyow whath!",
-'continue-editing' => "Mos dhe'n teller chanjya",
+'previewnote' => "Perthewgh kov, nyns yw hemma marnas ragwel.''' Nyns yw gwithys agas chanjyow hwath!",
+'continue-editing' => "Mos dhe'n tyller chanjya",
 'editing' => 'Ow chanjya $1',
-'creating' => 'Ow qwruthyl $1',
-'editingsection' => 'Ow chanjya $1 (rann)',
-'editingcomment' => 'Ow chanjya $1 (rann noweth)',
-'yourtext' => 'Agas text',
+'creating' => 'Ow kwruthyl $1',
+'editingsection' => 'Ow chanjya $1 (tregh)',
+'editingcomment' => 'Ow chanjya $1 (tregh nowyth)',
+'yourtext' => 'Agas tekst',
 'yourdiff' => 'Dyffransow',
-'templatesused' => '{{PLURAL:$1|Scantlyn|Scantlyns}} usys war an folen-ma:',
-'templatesusedpreview' => "{{PLURAL:$1|Scantlyn|Scantlyns}} usys y'n ragwel-ma:",
-'template-protected' => '(gwithys)',
+'templatesused' => '{{PLURAL:$1|An skantlyn|Skantlyns}} devnydhys war an folen-ma:',
+'templatesusedpreview' => "{{PLURAL:$1|An skantlyn|Skantlyns}} devnydhys y'n ragwel-ma:",
+'template-protected' => '(difresys)',
 'template-semiprotected' => '(hanter-difresys)',
-'hiddencategories' => 'Esel a {{PLURAL:$1|1 glass cudhys|$1 class cudhys}} yw an folen-ma:',
-'permissionserrorstext-withaction' => 'Nyns eus cummyes dhywgh dhe $2, rag an {{PLURAL:$1|acheson|achesonys}} a sew:',
-'moveddeleted-notice' => 'Diles yw an folen-ma.
-Yma covnoten dhileans ha gwayans an folen a-woles.',
+'hiddencategories' => 'Esel a {{PLURAL:$1|1 glass kudhys|$1 klass kudhys}} yw an folen-ma:',
+'permissionserrorstext-withaction' => "Ny'gas beus kummyes dhe $2, rag an {{PLURAL:$1|acheson|achesonys}} a syw:",
+'moveddeleted-notice' => 'An folen-ma re beu diles.
+Yma kovnoten dhilea ha gwaya an folen res a-woles.',
 'log-fulllog' => 'Gweles an govnoten dien',
-'editwarning-warning' => 'Mar tewgh why ha gasa an folen-ma, chanjyow eus gwres genowgh a alsa bos kellys.
-Mars owgh why omgelmys, why a yll dialosegy an gwarnyans-ma yn trogh "Chanjya" agas dowisyansow.',
+'editwarning-warning' => 'Mar kasowgh an folen-ma, y halser kelli chanjyow gwrys genowgh.
+Mars owgh omgelmys, hwi a yll dialosegi an gwarnyans-ma yn tregh "Chanjya" agas dewisyansow.',
 
 # "Undo" feature
-'undo-summary' => 'Diswul amendyans $1 gans [[Special:Contributions/$2|$2]] ([[User talk:$2|kescows]])',
+'undo-success' => 'Y hyllir diswul an chanj-ma.
+Checkyewgh mar pleg an kehevelyans a-woles rag gwirya bos hemma an pyth a vynnowgh, hag ena gwithewgh an chanjyow a-woles rag gorfenna diswul an chanj.',
+'undo-summary' => 'Amendyans $1 gans [[Special:Contributions/$2|$2]] ([[User talk:$2|keskows]]) diswrys',
 
 # Account creation failure
-'cantcreateaccounttitle' => 'Nyns yw possybyl formya an acont',
+'cantcreateaccounttitle' => 'Ny yllir gwruthyl an akont',
 
 # History pages
-'viewpagelogs' => 'Gweles covnotennow an folen-ma',
+'viewpagelogs' => 'Gweles kovnotennow an folen-ma',
 'currentrev' => 'Amendyans diwettha',
-'currentrev-asof' => 'An chanj diwettha a-ban $1',
-'revisionasof' => 'Versyon an folen a-ban $1',
-'revision-info' => 'Amendyans a-ban $1 gans $2',
-'previousrevision' => '← Amendyans cottha',
-'nextrevision' => 'Amendyans nowettha →',
+'currentrev-asof' => 'An amendyans diwettha a-dhia $1',
+'revisionasof' => 'Versyon an folen a-dhia $1',
+'revision-info' => 'Amendyans a-dhia $1 gans $2',
+'previousrevision' => '← Amendyans kottha',
+'nextrevision' => 'Amendyans nowyttha →',
 'currentrevisionlink' => 'An amendyans diwettha',
 'cur' => 'lemmyn',
 'next' => 'nessa',
-'last' => 'kens',
-'page_first' => 'kensa',
-'page_last' => 'kens',
-'histlegend' => "Dowis dyffransow: Merkyowgh kistennow radyo a'n amendyansow dhe gehevely, ha gwascowgh 'entra' po an boton orth goles an folen.<br />
-Alwhedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({{int:last}})''' = an dyffrans dhyworth an amendyans kens, '''{{int:minoreditletter}}''' = chanj bian.",
-'history-fieldset-title' => 'Peury an istory',
+'last' => 'kyns',
+'page_first' => 'kynsa',
+'page_last' => 'diwettha',
+'histlegend' => "Dewis dyffransow: Merkyewgh kistennow radyo a'n amendyansow dhe geheveli, ha gweskewgh 'entra' po an boton orth goles an folen.<br />
+Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({{int:last}})''' = an dyffrans dhyworth an amendyans kyns, '''{{int:minoreditletter}}''' = chanj byhan.",
+'history-fieldset-title' => 'Peuri an istori',
 'history-show-deleted' => 'Diles hepken',
 'histfirst' => 'An moyha a-varr',
 'histlast' => 'An diwettha',
@@ -688,159 +764,168 @@ Alwhedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'historyempty' => '(gwag)',
 
 # Revision feed
-'history-feed-title' => 'Istory chanjya',
-'history-feed-description' => 'Istory chanjya rag an folen-ma war an wiki',
+'history-feed-title' => 'Istori amendya',
+'history-feed-description' => 'Istori amendya rag an folen-ma war an wiki',
 'history-feed-item-nocomment' => '$1 dhe $2',
 
 # Revision deletion
-'rev-delundel' => 'disqwedhes/cudha',
-'rev-showdeleted' => 'disqwedhes',
+'rev-delundel' => 'diskwedhes/kudha',
+'rev-showdeleted' => 'diskwedhes',
 'revdel-restore' => 'chanjya an hewelder',
 'revdel-restore-deleted' => 'amendyansow diles',
 'revdel-restore-visible' => 'amendyansow gweladow',
-'pagehist' => 'Istory an folen',
+'pagehist' => 'Istori an folen',
 
 # History merging
 'mergehistory-reason' => 'Acheson:',
 
 # Merge log
-'revertmerge' => 'Disworunya',
+'revertmerge' => 'Diswul an kesunya',
 
 # Diffs
-'history-title' => 'Istory an folen "$1"',
+'history-title' => 'Istori an folen "$1"',
 'difference-title' => 'Dyffransow ynter amendyansow a "$1"',
 'difference-multipage' => '(Dyffrans ynter an folennow)',
 'lineno' => 'Linen $1:',
-'compareselectedversions' => 'Kehevely an amendyansow dowisyes',
-'showhideselectedversions' => 'Disqwedhes/cudha amendyansow dowisyes',
+'compareselectedversions' => 'Keheveli an amendyansow dewisyes',
+'showhideselectedversions' => 'Diskwedhes/kudha amendyansow dewisyes',
 'editundo' => 'diswul',
 
 # Search results
-'searchresults' => 'Sewyansow whilas',
-'searchresults-title' => 'Sewyansow whilas rag "$1"',
-'searchresulttext' => 'Rag moy kedhlow a-dro dhe whilas yn {{SITENAME}}, gwelowgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Why a wrug whilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevrenna dhe "$1"]])',
-'searchsubtitleinvalid' => "Why a wrug whilas '''$1'''",
-'notitlematches' => 'Nyns eus titel folen ow machya',
-'notextmatches' => 'Nyns eus text folen ow machya',
-'prevn' => 'kens {{PLURAL:$1|$1}}',
+'searchresults' => 'Sewyansow an hwilans',
+'searchresults-title' => 'Sewyansow an hwilans rag "$1"',
+'searchresulttext' => 'Rag moy kedhlow a-dro dhe hwilas yn {{SITENAME}}, gwelewgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Hwi a hwilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevrenna dhe "$1"]])',
+'searchsubtitleinvalid' => "Hwi a hwilas '''$1'''",
+'notitlematches' => 'Nyns eus titel folen vyth owth omdhesedha',
+'notextmatches' => 'Nyns eus tekst folen vyth owth omdhesedha',
+'prevn' => '{{PLURAL:$1|$1}} kyns',
 'nextn' => 'nessa {{PLURAL:$1|$1}}',
-'prevn-title' => '$1 {{PLURAL:$1|sewyans|sewyans}} kens',
-'nextn-title' => '$1 {{PLURAL:$1|sewyans|sewyans}} nessa',
+'prevn-title' => '$1 {{PLURAL:$1|sewyans}} kyns',
+'nextn-title' => '$1 {{PLURAL:$1|sewyans}} nessa',
+'shown-title' => 'Diskwedhes $1 {{PLURAL:$1|sewyans}} yn folen',
 'viewprevnext' => 'Gweles ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Etholyow whilans',
+'searchmenu-legend' => 'Etholyow hwilas',
 'searchmenu-exists' => "''Yma folen henwys \"[[:\$1]]\" war an wiki-ma'''",
 'searchmenu-new' => "'''Gwruthyl an folen \"[[:\$1]]\" war an wiki-ma!'''",
-'searchhelp-url' => 'Help:Gweres',
-'searchprofile-articles' => 'Folennow dhalhen',
+'searchprofile-articles' => 'Folennow dalgh',
 'searchprofile-project' => 'Folennow gweres ha ragdres',
 'searchprofile-images' => 'Liesmedia',
 'searchprofile-everything' => 'Puptra',
 'searchprofile-advanced' => 'Avonsys',
-'searchprofile-articles-tooltip' => 'Whilas yn $1',
-'searchprofile-project-tooltip' => 'Whilas yn $1',
-'searchprofile-images-tooltip' => 'Whilas restrennow',
-'searchprofile-everything-tooltip' => 'Whilas yn pub teller (yn folennow kescows ynwedh)',
-'searchprofile-advanced-tooltip' => 'Whilas yn spassow hanow personelhes',
+'searchprofile-articles-tooltip' => 'Hwilas yn $1',
+'searchprofile-project-tooltip' => 'Hwilas yn $1',
+'searchprofile-images-tooltip' => 'Hwilas restrennow',
+'searchprofile-everything-tooltip' => 'Hwilas pub le (yn folennow keskows ynwedh)',
+'searchprofile-advanced-tooltip' => 'Hwilas yn spasys hanow personelhes',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ger|$2 ger}})',
 'search-result-category-size' => '{{PLURAL:$1|1 esel|$1 esel}} ({{PLURAL:$2|1 isglass|$2 isglass}}, {{PLURAL:$3|1 restren|$3 restren}})',
-'search-redirect' => '(daswedyans $1)',
-'search-section' => '(rann $1)',
-'search-suggest' => 'A wrussowgh why menya: $1',
-'search-interwiki-caption' => 'Ragdresow whor',
+'search-redirect' => '(daskedyans $1)',
+'search-section' => '(tregh $1)',
+'search-suggest' => 'A styrsowgh hwi: $1',
+'search-interwiki-caption' => 'Ragdresow hwor',
 'search-interwiki-default' => '$1 sewyansow:',
 'search-interwiki-more' => '(moy)',
 'search-relatedarticle' => 'Kelmys',
-'mwsuggest-disable' => 'Dialosegy profyansow AJAX',
-'searcheverything-enable' => 'Whilas yn keniver spas-hanow',
+'mwsuggest-disable' => 'Dialosegi profyansow hwilas',
+'searcheverything-enable' => 'Hwilas yn pub spas-hanow',
 'searchrelated' => 'kelmys',
 'searchall' => 'oll',
-'showingresultsheader' => "{{PLURAL:$5|Sewyans '''$1''' dhyworth '''$3'''|Sewyansow '''$1 - $2''' dhyworth '''$3'''}} rag '''$4'''",
-'nonefound' => "'''Noten''': Nyns yw marnas rann a'n spasys-hanow whilys dre dhefowt.
-Gwrewgh assaya rag-gorra agas govyn gans ''all:'' rag whilas yn pub teller (ynnans an folennow kescows, scantlyns, etc), po usyowgh an spas-hanow whensys avel rag-gorrans.",
-'search-nonefound' => 'Nyns esa sewyansow ow machya an govyn.',
-'powersearch' => 'Whilans avonsys',
-'powersearch-legend' => 'Whilans avonsys',
-'powersearch-ns' => 'Whilas yn spasys-hanow:',
-'powersearch-redir' => 'Gorra an daswedyansow yn rol',
-'powersearch-field' => 'Whilas',
-'powersearch-togglelabel' => 'Dowis:',
+'showingresultsheader' => "{{PLURAL:$5|Sewyans '''$1''' a '''$3'''|Sewyansow '''$1 - $2''' a '''$3'''}} rag '''$4'''",
+'nonefound' => "'''Noten''': Ny hwilir marnas yn rann a'n spasys-hanow dre dhefowt.
+Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an folennow keskows, skantlyns, etc), po devnydhyewgh an spas-hanow hwensys avel rag-gorrans.",
+'search-nonefound' => 'Nyns esa sewyans vyth owth omdhesedha orth an govyn.',
+'powersearch' => 'Hwilans avonsys',
+'powersearch-legend' => 'Hwilans avonsys',
+'powersearch-ns' => 'Hwilas yn spasys-hanow:',
+'powersearch-redir' => 'Rolya daskedyansow',
+'powersearch-field' => 'Hwilas',
+'powersearch-togglelabel' => 'Dewis:',
 'powersearch-toggleall' => 'Oll',
-'powersearch-togglenone' => 'Nagonen',
-'search-external' => 'Whilans a-ves',
+'powersearch-togglenone' => 'Nagonan',
+'search-external' => 'Hwilans a-ves',
 
 # Preferences page
-'preferences' => 'Dowisyansow',
-'mypreferences' => 'Dowisyansow',
+'preferences' => 'Dewisyansow',
+'mypreferences' => 'Dewisyansow',
+'prefs-edits' => 'Niver a janjyow:',
 'changepassword' => 'Chanjya an ger-tremena',
-'prefs-skin' => 'Crohen',
+'prefs-skin' => 'Krohen',
 'skin-preview' => 'Ragweles',
 'prefs-datetime' => 'Dedhyans hag eur',
 'prefs-user-pages' => 'Folennow devnydhyer',
 'prefs-personal' => 'Profil devnydhyer',
 'prefs-rc' => 'Chanjyow a-dhiwedhes',
-'prefs-watchlist' => 'Rol golyas',
-'prefs-watchlist-days' => "Niver a dhedhyow dhe dhisqwedhes y'n rol golyas:",
-'prefs-resetpass' => 'Chanjya ger-tremena',
+'prefs-watchlist' => 'Rol golya',
+'prefs-watchlist-days' => "Niver a dhedhyow dhe dhiskwedhes y'n rol golya:",
+'prefs-resetpass' => 'Chanjya an ger tremena',
 'prefs-changeemail' => 'Chanjya an drigva ebost',
 'prefs-setemail' => 'Settya trigva ebost',
-'prefs-email' => 'Etholyow e-bost',
+'prefs-email' => 'Etholyow ebostya',
 'saveprefs' => 'Gwitha',
-'resetprefs' => 'Clerhe chanjyow nag yw gwithys',
+'resetprefs' => 'Klerhe chanjyow nag yw gwithys',
 'restoreprefs' => 'Restorya pub settyans defowt',
 'prefs-editing' => 'Chanjya',
-'prefs-edit-boxsize' => 'Mens an fenester chanjya.',
+'prefs-edit-boxsize' => 'Myns an fenester janjya.',
 'rows' => 'Rewyow:',
-'columns' => 'Colovennow:',
-'searchresultshead' => 'Whilas',
-'savedprefs' => 'Gwithys re beu agas dowisyansow.',
+'columns' => 'Kolovennow:',
+'searchresultshead' => 'Hwilas',
+'savedprefs' => 'Gwithys re beu agas dewisyansow.',
 'servertime' => 'Eur an servyer:',
 'guesstimezone' => 'Lenwel dhyworth an beurel',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'America',
-'timezoneregion-antarctica' => 'Antarctica',
-'timezoneregion-arctic' => 'Arctek',
-'timezoneregion-asia' => 'Asya',
-'timezoneregion-atlantic' => 'Mor Atlantek',
-'timezoneregion-australia' => 'Awstralya',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktika',
+'timezoneregion-arctic' => 'Arktek',
+'timezoneregion-asia' => 'Asi',
+'timezoneregion-atlantic' => 'Keynvor Atlantek',
+'timezoneregion-australia' => 'Ostrali',
 'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Mor Eyndek',
-'timezoneregion-pacific' => 'Mor Cosel',
-'prefs-searchoptions' => 'Whilas',
-'prefs-files' => 'Restrednow',
-'youremail' => 'E-bost:',
-'username' => 'Hanow-usyer:',
-'uid' => 'ID devnydhyer:',
-'prefs-memberingroups' => "Esel a'n {{PLURAL:$1|bagas|bagasow}}:",
+'timezoneregion-indian' => 'Keynvor Eyndek',
+'timezoneregion-pacific' => 'Keynvor Hebask',
+'allowemail' => 'Galosegi ebost dhyworth devnydhyoryon erel',
+'prefs-searchoptions' => 'Hwilas',
+'prefs-files' => 'Restrennow',
+'prefs-emailconfirm-label' => 'Afydhyans an ebost:',
+'youremail' => 'Ebost:',
+'username' => '{{GENDER:$1|Hanow devnydhyer}}:',
+'uid' => '{{GENDER:$1|ID an devnydhyer}}:',
+'prefs-memberingroups' => "{{GENDER:$2|Esel}} a'n {{PLURAL:$1|bagas|bagasow}}:",
+'prefs-registration' => 'Termyn kovskrifa:',
 'yourrealname' => 'Hanow gwir:',
 'yourlanguage' => 'Yeth:',
-'yournick' => 'Sinans noweth:',
-'yourgender' => 'Reyth:',
+'yournick' => 'Sinans nowyth:',
+'prefs-help-signature' => 'Y tal sina kampolansow war folennow keskows gans "<nowiki>~~~~</nowiki>", a dreylir dhe\'gas sinans ha dhe stamp-termyn.',
+'yourgender' => 'Reydh:',
+'gender-unknown' => 'Heb hy disklosya',
 'gender-male' => 'Gorow',
 'gender-female' => 'Benow',
-'email' => 'E-bost',
-'prefs-help-email' => 'A-dhowis yw ry trigva ebost, mes res yw y sensy rag dassettya agas ger tremena mars yw ankevys.',
-'prefs-help-email-others' => 'Why a yll dowis gasa dhe re erel kestava dhywgh der ebost yn unn glyckya kevren war agas folen devnydhyer po kescows.
-Nyns yw disqwedhys agas trigva ebost pan wrella devnydhyoryon erel kestava dhywgh.',
+'email' => 'Ebost',
+'prefs-help-email' => 'A-dhewis yw ri trigva ebost, mes res yw  rag dassettya agas ger tremena mar po ankevys.',
+'prefs-help-email-others' => 'Hwi a yll dewis gasa dhe re erel kestava dhywgh der ebost dre glyckya kevren war agas folen dhevnydhyer po folen geskows.
+Ny dhiskwedhir agas trigva ebost pan gestaffo devnydhyoryon erel dhywgh.',
 'prefs-help-email-required' => 'Res yw trigva ebost.',
+'prefs-info' => 'Kedhlow selvenel',
+'prefs-i18n' => 'Keswlasegyans',
 'prefs-signature' => 'Sinans',
 'prefs-advancedediting' => 'Etholyow avonsys',
 'prefs-advancedrc' => 'Etholyow avonsys',
 'prefs-advancedrendering' => 'Etholyow avonsys',
 'prefs-advancedsearchoptions' => 'Etholyow avonsys',
 'prefs-advancedwatchlist' => 'Etholyow avonsys',
-'prefs-displayrc' => 'Etholyow disqwedhes',
-'prefs-displaysearchoptions' => 'Etholyow disqwedhes',
-'prefs-displaywatchlist' => 'Etholyow disqwedhes',
+'prefs-displayrc' => 'Etholyow diskwedhes',
+'prefs-displaysearchoptions' => 'Etholyow diskwedhes',
+'prefs-displaywatchlist' => 'Etholyow diskwedhes',
 
 # User rights
-'userrights-user-editname' => 'Entrowgh hanow usyer:',
+'userrights-user-editname' => 'Entrewgh hanow devnydhyer:',
 'userrights-groupsmember' => 'Esel a:',
 'userrights-reason' => 'Acheson:',
 
 # Groups
 'group' => 'Bagas:',
 'group-user' => 'Devnydhyoryon',
+'group-autoconfirmed' => 'Devnydhyoryon awto-afydhyes',
 'group-bot' => 'Bottow',
 'group-sysop' => 'Menystroryon',
 'group-all' => '(oll)',
@@ -856,76 +941,77 @@ Nyns yw disqwedhys agas trigva ebost pan wrella devnydhyoryon erel kestava dhywg
 # Rights
 'right-read' => 'Redya folennow',
 'right-edit' => 'Chanjya folennow',
-'right-createtalk' => 'Gwruthyl folennow kescows',
-'right-createaccount' => 'Formya acontow devnydhyer noweth',
+'right-createtalk' => 'Gwruthyl folennow keskows',
+'right-createaccount' => 'Gwruthyl akontow devnydhyer nowyth',
 'right-move' => 'Gwaya folennow',
 'right-movefile' => 'Gwaya restrennow',
-'right-upload' => 'Ughcarga restrennow',
+'right-upload' => 'Ughkarga restrennow',
 'right-delete' => 'Dilea folennow',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Covnoten formya acontow devnydhyer',
+'newuserlogpage' => 'Kovnoten gwruthyl akontow devnydhyer',
 
 # User rights log
-'rightslog' => 'Covnoten wiryow an devnydhyer',
+'rightslog' => 'Kovnoten wiryow an devnydhyer',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'chanjya an folen-ma',
 'action-move' => 'gwaya an folen-ma',
 'action-movefile' => 'gwaya an restren-ma',
-'action-upload' => 'ughcarga an restren-ma',
+'action-upload' => 'ughkarga an restren-ma',
 'action-delete' => 'dilea an folen-ma',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|chanj|chanj}}',
 'recentchanges' => 'Chanjyow a-dhiwedhes',
 'recentchanges-legend' => 'Etholyow an chanjyow a-dhiwedhes',
-'recentchanges-summary' => "Sewya an chanjyow diwettha eus dhe'n wiki war'n folen-ma.",
-'recentchanges-feed-description' => "Helerhy an chanjyow diwettha dhe'n wiki y'n feed-ma.",
-'recentchanges-label-newpage' => 'Y feu gwres folen noweth gans an chanj-ma',
-'recentchanges-label-minor' => 'Chanj bian yw hemma',
-'recentchanges-label-bot' => 'An chanj-ma a veu gwres gans bott',
-'rcnote' => "A-woles yma'n {{PLURAL:$1|'''1''' chanj}} y'n {{PLURAL:$2|jedh|'''$2''' dedh}} diwettha, a-ban $5, $4.",
-'rclistfrom' => 'Disqwedhes chanjyow noweth ow talleth a-ban $1.',
-'rcshowhideminor' => '$1 chanjyow bian',
-'rcshowhidebots' => '$1 botow',
+'recentchanges-summary' => "Y hyllir helerhi an chanjyow diwettha gwrys dhe'n wiki war an folen-ma.",
+'recentchanges-feed-description' => "Y hyllir helerhi an chanjyow diwettha gwrys dhe'n wiki y'n feed-ma.",
+'recentchanges-label-newpage' => 'Y feu gwruthys folen nowyth gans an chanj-ma',
+'recentchanges-label-minor' => 'Chanj byhan yw hemma',
+'recentchanges-label-bot' => 'Gwrys veu an chanj-ma gans bott',
+'recentchanges-label-unpatrolled' => 'Ny veu an chanj-ma patrolyes hwath',
+'rcnote' => "A-woles yma {{PLURAL:$1|'''1''' janj|an '''$1''' chanjyow diwettha}} y'n {{PLURAL:$2|dydh|'''$2''' dydh}} diwettha, a-dhia $5, $4.",
+'rclistfrom' => 'Diskwedhes chanjyow nowyth yn unn dhalleth dhyworth $1.',
+'rcshowhideminor' => '$1 chanjyow byhan',
+'rcshowhidebots' => '$1 bottow',
 'rcshowhideliu' => '$1 devnydhoryon omgelmys',
 'rcshowhideanons' => '$1 devnydhyoryon dihanow',
 'rcshowhidemine' => '$1 ow chanjyow',
-'rclinks' => "Disqwedhes an $1 chanj diwettha gwres y'n $2 dedh diwettha<br />$3",
+'rclinks' => "Diskwedhes an $1 chanj diwettha gwrys y'n $2 dydh diwettha<br />$3",
 'diff' => 'dyffrans',
-'hist' => 'istory',
-'hide' => 'Cudha',
-'show' => 'Disqwedhes',
+'hist' => 'istori',
+'hide' => 'Kudha',
+'show' => 'Diskwedhes',
 'minoreditletter' => 'B',
 'newpageletter' => 'N',
 'boteditletter' => 'bott',
-'newsectionsummary' => '/* $1 */ rann noweth',
-'rc-enhanced-expand' => 'Disqwedhes an manylyon (res yw JavaScript)',
-'rc-enhanced-hide' => 'Cudha manylyon',
+'newsectionsummary' => '/* $1 */ tregh nowyth',
+'rc-enhanced-expand' => 'Diskwedhes an manylyon (res yw JavaScript)',
+'rc-enhanced-hide' => 'Kudha an manylyon',
 
 # Recent changes linked
 'recentchangeslinked' => 'Chanjyow kelmys',
 'recentchangeslinked-feed' => 'Chanjyow kelmys',
 'recentchangeslinked-toolbox' => 'Chanjyow kelmys',
 'recentchangeslinked-title' => 'Chanjyow kelmys dhe "$1"',
-'recentchangeslinked-noresult' => 'Nyns esa chanj veth war folennow kevrennys dres an termyn res.',
-'recentchangeslinked-summary' => "Hemm yw rol a janjyow a-dhiwedhes gwres dhe folennow yw kevrennys dhyworth folen res (po dhe esely a glass res).
-'''Tew''' yw folennow eus war agas [[Special:Watchlist|rol golyas]].",
+'recentchangeslinked-noresult' => 'Nyns esa chanj vyth war folennow kevrennys dres an termyn res.',
+'recentchangeslinked-summary' => "Homm yw rol a janjyow gwrys a-dhiwedhes dhe folennow yw kevrennys dhyworth folen res (po dhe eseli a glass res).
+'''Tew''' yw folennow eus war agas [[Special:Watchlist|rol golya]].",
 'recentchangeslinked-page' => 'Hanow an folen:',
-'recentchangeslinked-to' => "Disqwedhes chanjyow dhe folennow kevennys dhe'n folen res yn le",
+'recentchangeslinked-to' => "Diskwedhes chanjyow dhe folennow kevrennys dhe'n folen res yn le",
 
 # Upload
-'upload' => 'Ughcarga restren',
-'uploadbtn' => 'Ughcarga restren',
-'reuploaddesc' => "Hedhy ughcarga ha dewheles dhe'n furvlen ughcarga",
+'upload' => 'Ughkarga restren',
+'uploadbtn' => 'Ughkarga restren',
+'reuploaddesc' => "Hedhi ughkarga ha dehweles dhe'n furvlen ughkarga",
 'uploadnologin' => 'Digelmys',
-'uploadnologintext' => 'Res yw bos [[Special:UserLogin|omgelmys]] rag ughcarga restrennow.',
-'uploaderror' => 'Gwall ughcarga',
-'uploadlogpage' => 'Covnoten ughcarga',
+'uploadnologintext' => 'Res yw bos [[Special:UserLogin|omgelmys]] rag ughkarga restrennow.',
+'uploaderror' => 'Gwall ughkarga',
+'uploadlogpage' => 'Kovnoten ughkarga',
 'filename' => 'Hanow an restren',
-'filedesc' => 'Derivas cot',
-'fileuploadsummary' => 'Derivas cot:',
+'filedesc' => 'Berrskrif',
+'fileuploadsummary' => 'Berrskrif:',
 'filesource' => 'Pennfenten:',
 'savefile' => 'Gwitha restren',
 'uploadedimage' => '"[[$1]]" ughkergys',
@@ -936,37 +1022,37 @@ Nyns yw disqwedhys agas trigva ebost pan wrella devnydhyoryon erel kestava dhywg
 'listfiles_date' => 'Dedhyans',
 'listfiles_name' => 'Hanow',
 'listfiles_user' => 'Devnydhyer',
-'listfiles_size' => 'Mens',
-'listfiles_description' => 'Descrifans',
+'listfiles_size' => 'Myns',
+'listfiles_description' => 'Deskrifans',
 'listfiles_count' => 'Versyons',
 
 # File description page
 'file-anchor-link' => 'Restren',
-'filehist' => 'Istory an restren',
-'filehist-help' => 'Clyckyowgh war dedhyans/eur rag gweles an folen del veu nena.',
+'filehist' => 'Istori an restren',
+'filehist-help' => 'Klyckyewgh war dhedhyans/eur rag gweles an folen del omdhiskwedhas nena.',
 'filehist-deleteall' => 'dilea oll',
 'filehist-deleteone' => 'dilea',
-'filehist-revert' => 'trebuchya',
+'filehist-revert' => 'gorthtreylya',
 'filehist-current' => 'a-lemmyn',
 'filehist-datetime' => 'Dedhyans/Eur',
 'filehist-thumb' => 'Skeusennik',
-'filehist-thumbtext' => 'Skeusennik rag an versyon a-ban $1',
-'filehist-nothumb' => 'Nyns eus skeudennik',
+'filehist-thumbtext' => 'Skeusennik rag an versyon a-dhia $1',
+'filehist-nothumb' => 'Nyns eus skeusennik',
 'filehist-user' => 'Devnydhyer',
-'filehist-dimensions' => 'Mensow',
+'filehist-dimensions' => 'Mynsow',
 'filehist-filesize' => 'Mens an restren',
-'filehist-comment' => 'Ger',
+'filehist-comment' => 'Kampol',
 'imagelinks' => 'Devnydh an restren',
-'linkstoimage' => "Yma'n {{PLURAL:$1|folen|$1 folen}} a sew ow kevrenna dhe'n restren-ma:",
+'linkstoimage' => "Yma an {{PLURAL:$1|folen|$1 folen}} a syw ow kevrenna dhe'n restren-ma:",
 'linkstoimage-more' => "Yma moy es $1 {{PLURAL:$1|folen}} ow kevrenna dhe'n restren-ma.
-Yma an rol a sew ow tisqwedhes an {{PLURAL:$1|an kensa kevren folen|kensa $1 kevren folen}} dhe'n restren-ma hepken.
-Yma [[Special:WhatLinksHere/$2|rol leun]] cavadow.",
-'nolinkstoimage' => "Nyns eus folen ow kevrenna dhe'n restren-ma.",
+Ny dhiskwa an rol a syw marnas an {{PLURAL:$1|kynsa kevren folen|kynsa $1 kevren folen}} dhe'n restren-ma.
+Yma [[Special:WhatLinksHere/$2|rol leun]] kavadow.",
+'nolinkstoimage' => "Nyns eus folen vyth ow kevrenna dhe'n restren-ma.",
 'morelinkstoimage' => "Gweles [[Special:WhatLinksHere/$1|moy kevrennow]] dhe'n restren-ma.",
 'sharedupload' => 'Yma an folen-ma ow tos dhyworth $1 ha hy a alsa bos yn-dann devnydh gans ragdresow erel.',
-'sharedupload-desc-here' => "Yma'n restren-ma ow tos dhyworth $1 ha hy a alsa bos yn-dann devnydh gans ragdresow erel.
-Yma'n descrifans war y [$2 folen dhescrifans] disqwedhys a-woles.",
-'uploadnewversion-linktext' => "Ughcarga versyon noweth a'n restren-ma",
+'sharedupload-desc-here' => 'Yma an restren-ma dhe $1 ha ragdresow erel a alsa bos orth hy devnydhya.
+Diskwedhys a-woles yw an deskrifans war hy [$2 folen dheskrifans] ena.',
+'uploadnewversion-linktext' => "Ughkarga versyon nowyth a'n restren-ma",
 
 # File deletion
 'filedelete' => 'Dilea $1',
@@ -974,20 +1060,20 @@ Yma'n descrifans war y [$2 folen dhescrifans] disqwedhys a-woles.",
 'filedelete-submit' => 'Dilea',
 
 # MIME search
-'download' => 'iscarga',
+'download' => 'iskarga',
 
 # Unwatched pages
-'unwatchedpages' => 'Folennow nag eus den veth ow colyas',
+'unwatchedpages' => 'Folennow heb aga golya',
 
 # List redirects
 'listredirects' => 'Rol an daswedyansow',
 
 # Unused templates
-'unusedtemplates' => 'Scantlyns heb devnydh',
+'unusedtemplates' => 'Skantlyns heb devnydh',
 'unusedtemplateswlh' => 'kevrennow erel',
 
 # Random page
-'randompage' => 'Folen dre jons',
+'randompage' => 'Folen jonsus',
 
 # Statistics
 'statistics' => 'Statystygyon',
@@ -997,73 +1083,74 @@ Yma'n descrifans war y [$2 folen dhescrifans] disqwedhys a-woles.",
 'brokenredirects-delete' => 'dilea',
 
 'withoutinterwiki' => 'Folennow heb kevrennow yeth',
-'withoutinterwiki-submit' => 'Disqwedhes',
+'withoutinterwiki-submit' => 'Diskwedhes',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt|bayt}}',
 'nmembers' => '$1 {{PLURAL:$1|esel|esel}}',
-'uncategorizedpages' => 'Folennow heb class',
-'uncategorizedcategories' => 'Classys heb class',
-'uncategorizedimages' => 'Restrennow heb class',
-'uncategorizedtemplates' => 'Scantlyns heb class',
-'unusedcategories' => 'Classys gwag',
+'uncategorizedpages' => 'Folennow heb klass',
+'uncategorizedcategories' => 'Klassys heb klass',
+'uncategorizedimages' => 'Restrennow heb klass',
+'uncategorizedtemplates' => 'Skantlyns heb klass',
+'unusedcategories' => 'Klassys heb devnydh',
 'unusedimages' => 'Restrennow heb devnydh',
 'prefixindex' => 'Keniver folen gans an rager',
-'shortpages' => 'Folennow cot',
+'shortpages' => 'Folennow berr',
 'longpages' => 'Folennow hir',
 'protectedpages' => 'Folennow difresys',
 'protectedtitles' => 'Titlys difresys',
-'usercreated' => '{{GENDER:$3|Formyes}} an $1 dhe $2',
-'newpages' => 'Folennow noweth',
+'usercreated' => '{{GENDER:$3|Gwruthys}} an $1 dhe $2',
+'newpages' => 'Folennow nowyth',
 'newpages-username' => 'Hanow-usyer:',
-'ancientpages' => 'An cottha folennow',
+'ancientpages' => 'An kottha folennow',
 'move' => 'Gwaya',
 'movethispage' => 'Gwaya an folen-ma',
-'pager-newer-n' => '{{PLURAL:$1|1 nowettha|$1 nowettha}}',
-'pager-older-n' => '{{PLURAL:$1|1 cottha|$1 cottha}}',
+'pager-newer-n' => '{{PLURAL:$1|1 nowyttha|$1 nowyttha}}',
+'pager-older-n' => '{{PLURAL:$1|1 kottha|$1 kottha}}',
 
 # Book sources
 'booksources' => 'Pennfentynyow lyver',
-'booksources-search-legend' => 'Whilas pennfentynyow lyver',
+'booksources-search-legend' => 'Hwilas pennfentynyow lyver',
 'booksources-go' => 'Mos',
 
 # Special:Log
 'specialloguserlabel' => 'Awtour:',
-'speciallogtitlelabel' => 'Titel:',
-'log' => 'Covnotennow',
+'speciallogtitlelabel' => 'Kosten (titel po devnydhyer):',
+'log' => 'Kovnotennow',
+'logempty' => "Nyns eus tra vyth owth omdhesedha y'n govnoten.",
 
 # Special:AllPages
 'allpages' => 'Keniver folen',
 'alphaindexline' => '$1 dhe $2',
-'prevpage' => 'Folen gens ($1)',
-'allpagesfrom' => 'Disqwedhes folennow ow talleth orth:',
-'allpagesto' => 'Disqwedhes folennow ow tiwedha orth:',
+'prevpage' => 'Folen gyns ($1)',
+'allpagesfrom' => 'Diskwedhes folennow yn unn dhalleth orth:',
+'allpagesto' => 'Diskwedhes folennow yn unn dhiwedha orth:',
 'allarticles' => 'Keniver folen',
-'allpagesprev' => 'Kens',
+'allpagesprev' => 'Kyns',
 'allpagesnext' => 'Nessa',
 'allpagessubmit' => 'Mos',
-'allpages-hide-redirects' => 'Cudha daswedyansow',
+'allpages-hide-redirects' => 'Kudha daskedyansow',
 
 # Special:Categories
-'categories' => 'Classys',
+'categories' => 'Klassys',
 
 # Special:DeletedContributions
 'sp-deletedcontributions-contribs' => 'kevrohow',
 
 # Special:LinkSearch
-'linksearch' => 'Whilas kevrennow a-ves',
-'linksearch-ok' => 'Whilas',
-'linksearch-line' => 'Kevrennys yw $1 dhyworth $2',
+'linksearch' => 'Hwilas kevrennow a-ves',
+'linksearch-ok' => 'Hwilas',
+'linksearch-line' => 'Y kevrennir $1 dhyworth $2',
 
 # Special:ListUsers
-'listusers-submit' => 'Disqwedhes',
+'listusers-submit' => 'Diskwedhes',
 
 # Special:ListGroupRights
-'listgrouprights-members' => '(rol esely)',
+'listgrouprights-members' => '(rol eseli)',
 
 # Email user
-'emailuser' => 'E-bostya an devnydhyer-ma',
-'emailpage' => 'E-bostya devnydhyer',
+'emailuser' => 'Ebostya an devnydhyer-ma',
+'emailpage' => 'Ebostya devnydhyer',
 'defemailsubject' => 'Ebost danvenys dre {{SITENAME}} gans an devnydhyer "$1"',
 'emailfrom' => 'Dhyworth:',
 'emailto' => 'Dhe:',
@@ -1071,73 +1158,73 @@ Yma'n descrifans war y [$2 folen dhescrifans] disqwedhys a-woles.",
 'emailsend' => 'Danvon',
 
 # Watchlist
-'watchlist' => 'Ow rol golyas',
-'mywatchlist' => 'Ow rol golyas',
+'watchlist' => 'Rol golya',
+'mywatchlist' => 'Rol golya',
 'watchlistfor2' => 'Rag $1 ($2)',
-'watch' => 'Golyas',
-'watchthispage' => 'Golyas an folen-ma',
-'unwatch' => 'Diswolyas',
-'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen}} war agas rol golyas, marnas folennow kescows.',
-'wlshowlast' => 'Disqwedhes an $1 our $2 dedh $3 diwettha',
-'watchlist-options' => 'Etholyow an rol golyas',
+'watch' => 'Golya',
+'watchthispage' => 'Golya an folen-ma',
+'unwatch' => 'Diswolya',
+'watchlist-details' => 'Yma {{PLURAL:$1|$1 folen}} war agas rol golya, marnas folennow keskows.',
+'wlshowlast' => 'Diskwedhes an $1 our $2 dydh $3 diwettha',
+'watchlist-options' => 'Etholyow an rol golya',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ow colyas...',
-'unwatching' => 'Ow tisgolyas...',
+'watching' => 'Ow kolya...',
+'unwatching' => 'Ow tisgolya...',
 
 # Delete
 'deletepage' => 'Dilea an folen',
 'confirm' => 'Afydhya',
-'excontent' => 'yth esa ynny: "$1"',
+'excontent' => 'yth esa ynni: "$1"',
 'delete-confirm' => 'Dilea "$1"',
 'delete-legend' => 'Dilea',
-'actioncomplete' => 'Cowlwres yw an gwrians',
-'actionfailed' => 'An gwrians a fyllas',
-'deletedtext' => '"$1" yw dileys.
-Gwelowgh $2 rag covadh a dhileansow a-dhiwedhes.',
-'dellogpage' => 'Covnoten dhilea',
-'deletionlog' => 'covnoten dhilea',
+'actioncomplete' => 'Kowlwrys yw an gwrians',
+'actionfailed' => 'An gwrians a fyllis',
+'deletedtext' => '"$1" re beu diles.
+Gwelewgh $2 rag kovadh a dhileansow a-dhiwedhes.',
+'dellogpage' => 'Kovnoten dhilea',
+'deletionlog' => 'kovnoten dhilea',
 'deletecomment' => 'Acheson:',
 'deleteotherreason' => 'Acheson aral/keworansel:',
 'deletereasonotherlist' => 'Acheson aral',
 
 # Rollback
-'rollbacklink' => 'restorya',
+'rollbacklink' => 'revya war-dhelergh',
 
 # Protect
-'protectlogpage' => 'Covnoten dhifres',
-'protectedarticle' => 'a dhifresas "[[$1]]"',
+'protectlogpage' => 'Kovnoten dhifres',
+'protectedarticle' => '"[[$1]]" difresys',
 'prot_1movedto2' => '[[$1]] gwayys dhe [[$2]]',
 'protectcomment' => 'Acheson:',
 'protectexpiry' => 'Ow tiwedha:',
 'protect_expiry_invalid' => 'Drog yw an termyn diwedha.',
-'protect_expiry_old' => "Yma'n termyn diwedha y'n termyn eus passyes.",
-'protect-level-sysop' => 'Menystroryon hepken',
+'protect_expiry_old' => "Yma an termyn diwedha y'n termyn eus passyes.",
+'protect-level-sysop' => 'Alowa menystroryon hepken',
 'protect-summary-cascade' => 'ow froslamma',
-'protect-expiring' => 'y whra diwedha $1 (UTC)',
-'restriction-type' => 'Cummyas:',
+'protect-expiring' => 'diwedhans $1 (UTC)',
+'restriction-type' => 'Kummyas:',
 'pagesize' => '(bayt)',
 
 # Restrictions (nouns)
 'restriction-edit' => 'Chanjya',
 'restriction-move' => 'Gwaya',
 'restriction-create' => 'Gwruthyl',
-'restriction-upload' => 'Ughcarga',
+'restriction-upload' => 'Ughkarga',
 
 # Undelete
-'undeletelink' => 'gweles/restorya',
+'undeletelink' => 'gweles/gorthtreylya',
 'undeleteviewlink' => 'gweles',
-'undelete-search-submit' => 'Whilas',
+'undelete-search-submit' => 'Hwilas',
 'undelete-show-file-submit' => 'Ya',
 
 # Namespace form on various pages
 'namespace' => 'Spas hanow:',
-'invert' => 'Trebuchya an dowisyans',
+'invert' => 'Trebuchya an dewisyans',
 'namespace_association' => 'Spas hanow kelmys',
 'blanknamespace' => '(Penn)',
 
 # Contributions
-'contributions' => 'Kevrohow an devnydhyer',
+'contributions' => 'Kevrohow an {{GENDER:$1|devnydhyer}}',
 'contributions-title' => 'Kevrohow $1',
 'mycontris' => 'Kevrohow',
 'contribsub2' => 'Rag $1 ($2)',
@@ -1145,30 +1232,30 @@ Gwelowgh $2 rag covadh a dhileansow a-dhiwedhes.',
 'month' => 'Dhyworth an mis (ha moy a-varr):',
 'year' => 'Dhyworth an vledhen (ha moy a-varr):',
 
-'sp-contributions-newbies' => 'Disqwedhes yn unnik kevrohow acontow noweth',
-'sp-contributions-blocklog' => 'covnoten lettya',
-'sp-contributions-uploads' => 'ughcargansow',
-'sp-contributions-logs' => 'covnotennow',
-'sp-contributions-talk' => 'kescows',
-'sp-contributions-search' => 'Whilas kevrohow',
-'sp-contributions-username' => 'Trigva IP po hanow-usyer:',
-'sp-contributions-toponly' => 'Disqwedhes yn unnik chanjyow yw amendyansow diwettha',
-'sp-contributions-submit' => 'Whilas',
+'sp-contributions-newbies' => 'Diskwedhes yn unnik kevrohow akontow nowyth',
+'sp-contributions-blocklog' => 'kovnoten lettya',
+'sp-contributions-uploads' => 'ughkargansow',
+'sp-contributions-logs' => 'kovnotennow',
+'sp-contributions-talk' => 'keskows',
+'sp-contributions-search' => 'Hwilas kevrohow',
+'sp-contributions-username' => 'Trigva IP po hanow devnydhyer:',
+'sp-contributions-toponly' => 'Diskwedhes yn unnik chanjyow yw amendyansow diwettha',
+'sp-contributions-submit' => 'Hwilas',
 
 # What links here
-'whatlinkshere' => "Pandr'eus ow kevrenna omma",
+'whatlinkshere' => 'Pyth a gevren dhe omma',
 'whatlinkshere-title' => 'Folennow ow kevrenna dhe "$1"',
 'whatlinkshere-page' => 'Folen:',
-'linkshere' => "Yma'n folennow a sew ow kevrenna dhe '''[[:$1]]''':",
-'nolinkshere' => "Nyns eus folen ow kevrenna dhe '''[[:$1]]'''.",
-'isredirect' => 'folen daswedyans',
-'istemplate' => 'treuscludyans',
+'linkshere' => "Yma an folennow a syw ow kevrenna dhe '''[[:$1]]''':",
+'nolinkshere' => "Nyns eus folen vyth ow kevrenna dhe '''[[:$1]]'''.",
+'isredirect' => 'folen daskedyans',
+'istemplate' => 'treuskludyans',
 'isimage' => 'kevren an restren',
-'whatlinkshere-prev' => '{{PLURAL:$1|kens|kens $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|kyns|$1 kyns}}',
 'whatlinkshere-next' => '{{PLURAL:$1|nessa|nessa $1}}',
 'whatlinkshere-links' => '← kevrennow',
-'whatlinkshere-hideredirs' => '$1 daswedyansow',
-'whatlinkshere-hidetrans' => '$1 treuscludyans',
+'whatlinkshere-hideredirs' => '$1 daskedyansow',
+'whatlinkshere-hidetrans' => '$1 treuskludyans',
 'whatlinkshere-hidelinks' => '$1 kevrennow',
 'whatlinkshere-hideimages' => '$1 kevrennow restren',
 'whatlinkshere-filters' => 'Sidhlow',
@@ -1178,138 +1265,152 @@ Gwelowgh $2 rag covadh a dhileansow a-dhiwedhes.',
 'ipadressorusername' => 'Trigva IP po hanow-usyer:',
 'ipbreason' => 'Acheson:',
 'ipbreasonotherlist' => 'Acheson aral',
-'ipboptions' => '2 our:2 hours,1 dhedh:1 day,3 dedh:3 days,1 seythen:1 week,2 seythen:2 weeks,1 vis:1 month,3 mis:3 months,6 mis:6 months,1 vledhen:1 year,heb diwedh:infinite',
+'ipboptions' => '2 our:2 hours,1 jydh:1 day,3 dydh:3 days,1 seythen:1 week,2 seythen:2 weeks,1 vis:1 month,3 mis:3 months,6 mis:6 months,1 vledhen:1 year,heb diwedh:infinite',
 'ipb-blocklist-contribs' => 'Kevrohow rag $1',
 'ipblocklist' => 'Devnydhyoryon lettyes',
-'ipblocklist-submit' => 'Whilas',
+'ipblocklist-submit' => 'Hwilas',
 'blocklink' => 'lettya',
 'unblocklink' => 'dislettya',
 'change-blocklink' => 'chanjya an lettyans',
 'contribslink' => 'kevrohow',
-'blocklogpage' => 'Covnoten lettya',
-'blocklogentry' => 'a lettyas [[$1]], bys dhe $2 $3',
-'unblocklogentry' => 'dislettyas $1',
+'blocklogpage' => 'Kovnoten lettya',
+'blocklogentry' => '[[$1]] lettyes, bys dhe $2 $3',
+'unblocklogentry' => '$1 dislettyes',
 'block-log-flags-anononly' => 'devnydhyoryon dihanow hepken',
-'block-log-flags-nocreate' => 'dialosegys yw formya acontow',
-'block-log-flags-hiddenname' => 'hanow usyer cudhys',
+'block-log-flags-nocreate' => 'dialosegys yw gwruthyl akontow',
+'block-log-flags-hiddenname' => 'hanow devnydhyer kudhys',
 
 # Move page
 'move-page' => 'Gwaya $1',
 'move-page-legend' => 'Gwaya folen',
+'movepagetext' => "Devnydhya an furvlen a-woles a dhashenow folen, yn unn waya oll y istori dhe'n hanow nowyth.
+An titel koth a vydh folen dhaskedyans dhe'n titel nowyth.
+Hwi a yll nowedhi daskedyansow a boynt dhe'n titel derowel yn awtomatek.
+Mar ny wrewgh, surhewgh hwi dhe jeckya rag [[Special:DoubleRedirects|daskedyansow dobyl]] po [[Special:BrokenRedirects|terrys]].
+Omgemeryansek owgh rag surhe y pes kevrennow poyntya dhe'n tyller ewn.
+
+Notyewgh '''na wayir''' an folen mars eus folen orth an titel nowyth seulabrys, marnas bos an pyth kampollys diwettha daskedyans ha ny'n jeves istori chanjya kyns vyth.
+Hemm a styr y hyllowgh diswul dashenwel folen mar kwrewgh kammwrians, ha ny yllowgh gorskrifa folen eus ena seulabrys.
+
+'''Gwarnyans!'''
+Hemm a yll bos chanj tromm ha bras dres ehen rag folen gerys-da;
+Surhewgh mar pleg hwi dhe gonvedhes sewyansow an gwrians-ma kyns mos yn-rag.",
 'movearticle' => 'Gwaya an folen:',
-'newtitle' => 'Dhe ditel noweth:',
+'moveuserpage-warning' => "'''Gwarnyans''': Yth esowgh ow mos dhe waya folen dhevnydhyer. Notyewgh mar pleg ny vydh marnas an folen gwayys ha ''ny vydh'' an devnydhyer dashenwys.",
+'newtitle' => 'Dhe ditel nowyth:',
 'move-watch' => 'Golya an folen-ma',
 'movepagebtn' => 'Gwaya an folen',
-'pagemovedsub' => 'An gwarnyans a sowenas',
+'pagemovedsub' => 'Gwaya a sewenis',
 'movepage-moved' => '\'\'\'Gwayys re beu "$1" dhe "$2"\'\'\'',
 'movedto' => 'gwayys dhe',
-'movelogpage' => 'Covnoten waya',
+'movelogpage' => 'Kovnoten waya',
+'movenosubpage' => "Ny's teves an folen-ma isfolen vyth.",
 'movereason' => 'Acheson:',
-'revertmove' => 'trebuchya',
+'revertmove' => 'gorthtreylya',
 
 # Export
-'export' => 'Esperthy folennow',
+'export' => 'Esperthi folennow',
 'export-addcat' => 'Keworra',
 'export-addns' => 'Keworra',
 
 # Namespace 8 related
 'allmessagesname' => 'Hanow',
-'allmessagesdefault' => 'Text messach defowt',
+'allmessagesdefault' => 'Tekst messach defowt',
 
 # Thumbnails
 'thumbnail-more' => 'Brashe',
-'thumbnail_error' => 'Gwall ow formya skeusennik: $1',
+'thumbnail_error' => 'Gwall ow kwruthyl skeusennik: $1',
 
 # Special:Import
-'import' => 'Ymperthy folennow',
-'import-interwiki-submit' => 'Ymperthy',
-'import-upload-filename' => 'Hanow-restren:',
-'importstart' => 'Owth ymperthy folennow...',
-'import-noarticle' => 'Nyns eus folen veth dhe ymperthy!',
+'import' => 'Ymperthi folennow',
+'import-interwiki-submit' => 'Ymperthi',
+'import-upload-filename' => 'Hanow an restren:',
+'importstart' => 'Owth ymperthi folennow...',
+'import-noarticle' => 'Nyns eus folen vyth dhe ymperthi!',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Agas folen dhevnydhyer',
 'tooltip-pt-mytalk' => 'Agas folen gows',
-'tooltip-pt-preferences' => 'Agas dowisyansow',
-'tooltip-pt-watchlist' => 'Rol a folennow esowgh why ow colyas rag chanjyow',
+'tooltip-pt-preferences' => 'Agas dewisyansow',
+'tooltip-pt-watchlist' => 'Rol a folennow esowgh ow kolya rag chanjyow',
 'tooltip-pt-mycontris' => "Rol a'gas kevrohow",
-'tooltip-pt-login' => 'Gwell via dhywgh mar tewgh why hag omgelmy, mes nyns yw besy',
-'tooltip-pt-logout' => 'Digelmy',
-'tooltip-ca-talk' => "Dadhel a-dro dhe'n folen",
-'tooltip-ca-edit' => "Why a yll chanjya an folen-ma. Gwrewgh usya an boton 'ragweles' kens gwitha mar pleg.",
-'tooltip-ca-addsection' => 'Dalleth rann noweth',
-'tooltip-ca-viewsource' => 'Alwhedhys yw an folen-ma.
-Why a yll gweles hy fennfenten.',
-'tooltip-ca-history' => "Amendyansow coth a'n folen-ma",
+'tooltip-pt-login' => 'Ni a gomend mayth omgelmowgh, mes nyns yw besi',
+'tooltip-pt-logout' => 'Digelmi',
+'tooltip-ca-talk' => "Dadhlow a-dro dhe'n folen",
+'tooltip-ca-edit' => "Hwi a yll chanjya an folen-ma. Devnydhyewgh an boton 'ragweles' kyns gwitha mar pleg.",
+'tooltip-ca-addsection' => 'Dalleth tregh nowyth',
+'tooltip-ca-viewsource' => 'Difresys yw an folen-ma.
+Hwi a yll gweles hy fennfenten.',
+'tooltip-ca-history' => "Amendyansow koth a'n folen-ma",
 'tooltip-ca-protect' => 'Difres an folen-ma',
 'tooltip-ca-delete' => 'Dilea an folen-ma',
 'tooltip-ca-move' => 'Gwaya an folen-ma',
-'tooltip-ca-watch' => "Keworra an folen-ma dhe'gas rol golyas",
-'tooltip-ca-unwatch' => 'Dilea an folen-ma dhyworth agas rol golyas',
-'tooltip-search' => 'Whilas yn {{SITENAME}}',
+'tooltip-ca-watch' => "Keworra an folen-ma dhe'gas rol golya",
+'tooltip-ca-unwatch' => 'Dilea an folen-ma dhyworth agas rol golya',
+'tooltip-search' => 'Hwilas yn {{SITENAME}}',
 'tooltip-search-go' => 'Mos dhe folen gans an keth hanow-ma, mars eus',
-'tooltip-search-fulltext' => "Whilas an text-ma y'n folennow",
-'tooltip-p-logo' => "Mos dhe'n folen dre",
-'tooltip-n-mainpage' => "Mos dhe'n folen dre",
-'tooltip-n-mainpage-description' => "Mos dhe'n folen dre",
-'tooltip-n-portal' => "A-dro dhe'n ragdres, an peth a yllowgh why gwul, ple dhe gavos taclow",
-'tooltip-n-currentevents' => 'Cavos kedhlow a-dro dhe dharvosow a-lemmyn',
+'tooltip-search-fulltext' => "Hwilas an tekst-ma y'n folennow",
+'tooltip-p-logo' => "Mos dhe'n folen dynnargh",
+'tooltip-n-mainpage' => "Mos dhe'n folen dynnargh",
+'tooltip-n-mainpage-description' => "Mos dhe'n folen dynnargh",
+'tooltip-n-portal' => "A-dro dhe'n ragdres, an pyth a yllowgh gul, ple hyllir kavos taklow",
+'tooltip-n-currentevents' => 'Kavos kedhlow a-dro dhe hwarvosow a-lemmyn',
 'tooltip-n-recentchanges' => "Rol a janjyow a-dhiwedhes y'n wiki",
-'tooltip-n-randompage' => 'Carga folen dre jons',
+'tooltip-n-randompage' => 'Karga folen jonsus',
 'tooltip-n-help' => 'Gweres',
-'tooltip-t-whatlinkshere' => 'Rol a bub folen wiki ow kevrenna dhe omma',
-'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes yn folennow eus kevrennys dhyworth an folen-ma',
+'tooltip-t-whatlinkshere' => 'Rol a bub folen wiki a gevren dhe omma',
+'tooltip-t-recentchangeslinked' => 'Chanjyow a-dhiwedhes yn folennow a gevrennir dhyworth an folen-ma',
 'tooltip-feed-rss' => 'Feed RSS rag an folen-ma',
 'tooltip-feed-atom' => 'Feed Atom rag an folen-ma',
 'tooltip-t-contributions' => 'Gweles rol a gevrohow an devnydhyer-ma',
-'tooltip-t-emailuser' => "Danvon e-bost dhe'n devnydhyer-ma",
-'tooltip-t-upload' => 'Ughcarga restrennow',
+'tooltip-t-emailuser' => "Danvon ebost dhe'n devnydhyer-ma",
+'tooltip-t-upload' => 'Ughkarga restrennow',
 'tooltip-t-specialpages' => 'Rol a geniver folen arbennek',
 'tooltip-t-print' => "Versyon pryntyadow a'n folen-ma",
 'tooltip-t-permalink' => "Kevren fast dhe'n amendyans-ma a'n folen",
 'tooltip-ca-nstab-main' => 'Gweles an folen',
-'tooltip-ca-nstab-user' => 'Gweles an folen devnydhyer',
-'tooltip-ca-nstab-special' => 'Folen arbennek yw hemma; ny yllowgh why chanjya an folen hy honen.',
+'tooltip-ca-nstab-user' => 'Gweles an folen dhevnydhyer',
+'tooltip-ca-nstab-special' => 'Folen arbennek yw homma; ny yllowgh chanjya an folen hy honen.',
 'tooltip-ca-nstab-project' => 'Gweles folen an wiki',
 'tooltip-ca-nstab-image' => 'Gweles folen an restren',
-'tooltip-ca-nstab-template' => 'Gweles an scantlyn',
-'tooltip-ca-nstab-category' => 'Gweles folen an class',
-'tooltip-minoredit' => 'Merkya hemma avel chanj bian',
+'tooltip-ca-nstab-template' => 'Gweles an skantlyn',
+'tooltip-ca-nstab-category' => 'Gweles folen an klass',
+'tooltip-minoredit' => 'Merkya hemma avel chanj byhan',
 'tooltip-save' => 'Gwitha agas chanjyow',
-'tooltip-preview' => 'Ragweles agas chanjyow; gwrewgh usya hemma kens gwitha mar pleg!',
-'tooltip-diff' => "Disqwedhes an chanjyow eus gwres genowgh dhe'n text",
-'tooltip-compareselectedversions' => "Gweles an dyffransow ynter an dhew janjyow dowisyes a'n folen-ma",
-'tooltip-watch' => "Keworra an folen-ma dhe'gas rol golyas",
-'tooltip-rollback' => '"Restorya" a wra trebuchya chanjyow gwres dhe\'n folen-ma gans an diwettha devnydhyer yn unn glyck',
-'tooltip-undo' => '"Diswul" a wra trebuchya an chanj-ma hag egery an furvlen janjya y\'n modh ragweles. Y hyllir keworra acheson y\'n derivas cot.',
-'tooltip-summary' => 'Entrowgh derivas cot',
+'tooltip-preview' => 'Ragweles agas chanjyow; devnydhyewgh hemma kyns gwitha mar pleg!',
+'tooltip-diff' => "Diskwedhes an chanjyow a wrussowgh dhe'n tekst",
+'tooltip-compareselectedversions' => 'Gweles an dyffransow ynter dew amendyansow dewisyes an folen-ma',
+'tooltip-watch' => "Keworra an folen-ma dhe'gas rol golya",
+'tooltip-rollback' => '"Revya war-dhelergh" a worthtreyl chanjyow an diwettha devnydhyer yn unn glyck',
+'tooltip-undo' => '"Diswul" a worthtreyl an chanj-ma hag ygeri an furvlen janjya y\'n modh ragweles. Y hyllir keworra acheson y\'n berrskrif.',
+'tooltip-summary' => 'Entrewgh berrskrif',
 
 # Attribution
 'siteuser' => 'devnydhyer {{SITENAME}} $1',
-'lastmodifiedatby' => 'An folen-ma a veu kens chanjys dhe $2, $1 gans $3.',
+'lastmodifiedatby' => 'Chanj diwettha an folen-ma o dhe $2, $1 gans $3.',
 'siteusers' => '{{PLURAL:$2|devnydhyer|devnydhyoryon}} {{SITENAME}} $1',
 
 # Info page
 'pageinfo-toolboxlink' => 'Kedhlow an folen',
 
 # Browsing diffs
-'previousdiff' => '← Chanj cottha',
-'nextdiff' => 'Chanj nowettha →',
+'previousdiff' => '← Chanj kottha',
+'nextdiff' => 'Chanj nowyttha →',
 
 # Media information
-'file-info-size' => '$1 × $2 pixel, mens an restren: $3, sort MIME: $4',
-'file-nohires' => 'Nyns eus clerder uhella cavadow.',
-'svg-long-desc' => 'Restren SVG, $1 × $2 pixel yn hanow, mens an restren: $3',
-'show-big-image' => 'Clerder leun',
+'file-info-size' => '$1 × $2 piksel, myns an restren: $3, ehen MIME: $4',
+'file-nohires' => 'Nyns eus klerder uhella kavadow.',
+'svg-long-desc' => 'Restren SVG, $1 × $2 piksel yn hanow, myns an restren: $3',
+'show-big-image' => 'Klerder leun',
 
 # Special:NewFiles
-'ilsubmit' => 'Whilas',
+'ilsubmit' => 'Hwilas',
 
 # Metadata
 'metadata' => 'Metadata',
-'metadata-help' => "Yma dhe'n restren-ma kedhlow keworansel, dres lycklod keworrys dhyworth an camera besyel po an scanyer usys rag hy gwruthyl po hy besya. Mars yw chanjys an restren dhyworth hy studh gwredhek, possybyl yw na veu nebes manylyon nowedhys.",
-'metadata-expand' => 'Disqwedhes manylyon ystynnys',
-'metadata-collapse' => 'Cudha manylyon ystynnys',
+'metadata-help' => "An restren-ma a's teves kedhlow keworansel, dres lycklod keworrys dhyworth an kamera bysyel po an skanyer devnydhys rag hy gwruthyl po hy bysya. Mars yw chanjys an restren dhyworth hy studh gwredhek, possybyl yw na veu nebes manylyon nowedhys.",
+'metadata-expand' => 'Diskwedhes manylyon ystynnys',
+'metadata-collapse' => 'Kudha manylyon ystynnys',
 
 # Exif tags
 'exif-imagewidth' => 'Les',
@@ -1320,15 +1421,15 @@ Why a yll gweles hy fennfenten.',
 
 'exif-contrast-0' => 'Usadow',
 'exif-contrast-1' => 'Medhel',
-'exif-contrast-2' => 'Cales',
+'exif-contrast-2' => 'Kales',
 
 'exif-saturation-0' => 'Usadow',
 
 'exif-sharpness-0' => 'Usadow',
 'exif-sharpness-1' => 'Medhes',
-'exif-sharpness-2' => 'Cales',
+'exif-sharpness-2' => 'Kales',
 
-'exif-subjectdistancerange-0' => 'Ancoth',
+'exif-subjectdistancerange-0' => 'Ankoth',
 
 # External editor support
 'edit-externally' => 'Chanjya an restren-ma dre dowlen a-ves',
@@ -1341,53 +1442,53 @@ Why a yll gweles hy fennfenten.',
 
 # Email address confirmation
 'confirmemail' => 'Afydhya an drigva ebost',
-'confirmemail_noemail' => "Nyns eus trigva ebost da settyes y'gas [[Special:Preferences|dowisyansow devnydhyer]].",
+'confirmemail_noemail' => "Nyns eus trigva ebost da settyes y'gas [[Special:Preferences|dewisyansow devnydhyer]].",
 
 # Multipage image navigation
-'imgmultipageprev' => '← folen kens',
+'imgmultipageprev' => '← folen gyns',
 'imgmultipagenext' => 'folen nessa →',
-'imgmultigo' => 'Mos!',
+'imgmultigo' => 'Mos',
 
 # Table pager
 'table_pager_limit_submit' => 'Mos',
 
 # Auto-summaries
-'autosumm-blank' => 'Gwakhes an folen',
-'autoredircomment' => 'Daswedyas an folen war-tu [[$1]]',
-'autosumm-new' => "Folen formyes gans: '$1'",
+'autosumm-blank' => 'Gwakhes veu an folen',
+'autoredircomment' => 'Folen daswedyes war-tu ha [[$1]]',
+'autosumm-new' => "Folen gwruthys gans: '$1'",
 
 # Live preview
-'livepreview-loading' => 'Ow carga...',
-'livepreview-ready' => 'Ow carga... Parys!',
+'livepreview-loading' => 'Ow karga...',
+'livepreview-ready' => 'Ow karga... Parys!',
 
 # Watchlist editor
-'watchlistedit-noitems' => "Nyns eus titel veth y'gas rol golyas.",
-'watchlistedit-normal-title' => 'Chanjya an rol golyas',
-'watchlistedit-normal-legend' => 'Dilea titlys dhyworth agas rol golyas',
-'watchlistedit-normal-explain' => 'Yma disqwedhys a-woles titlys war agas rol golyas.
-Rag dilea titel, checkyowgh an gisten rebdho, ha clyckyowgh "{{int:Watchlistedit-normal-submit}}".
-Why a yll [[Special:EditWatchlist/raw|chanjya restren an rol golyas]] ynwedh.',
+'watchlistedit-noitems' => "Nyns eus titel vyth y'gas rol golya.",
+'watchlistedit-normal-title' => 'Chanjya an rol golya',
+'watchlistedit-normal-legend' => 'Dilea titlys dhyworth agas rol golya',
+'watchlistedit-normal-explain' => 'Yma diskwedhys a-woles titlys war agas rol golya.
+Rag dilea titel, checkyewgh an gisten rybdho, ha klyckyewgh "{{int:Watchlistedit-normal-submit}}".
+Hwi a yll [[Special:EditWatchlist/raw|chanjya restren an rol golya]] ynwedh.',
 'watchlistedit-normal-submit' => 'Dilea titlys',
 'watchlistedit-normal-done' => 'Diles veu {{PLURAL:$1|$1 titel}} dhyworth agas rol golyas',
-'watchlistedit-raw-title' => 'Chanjya restren an rol golyas',
-'watchlistedit-raw-legend' => 'Chanjya restren an rol golyas',
-'watchlistedit-raw-explain' => 'Yma disqwedhys a-woles titlys war agas rol golyas, hag y hyllir hy chanjya dre geworra dhedhy ha dilea dhyworty;
-unn ditel war linen.
-Pan vo diwedh dhywgh, clyckyowgh "{{int:Watchlistedit-raw-submit}}".
-Why a yll [[Special:EditWatchlist|usya an janjyel usadow]] ynwedh.',
+'watchlistedit-raw-title' => 'Chanjya restren an rol golya',
+'watchlistedit-raw-legend' => 'Chanjya restren an rol golya',
+'watchlistedit-raw-explain' => 'Yma diskwedhys a-woles titlys war agas rol golya, hag y hyllir hy chanjya dre geworra dhedhi ha dilea dhyworti;
+unn ditel war unn linen.
+Pan vo diwedh dhywgh, klyckyewgh "{{int:Watchlistedit-raw-submit}}".
+Hwi a yll [[Special:EditWatchlist|devnydhya an janjyel usadow]] ynwedh.',
 'watchlistedit-raw-titles' => 'Titlys:',
-'watchlistedit-raw-submit' => 'Nowedhy an rol golyas',
-'watchlistedit-raw-done' => 'Nowedhys re beu agas rol golyas.',
+'watchlistedit-raw-submit' => 'Nowedhi an rol golya',
+'watchlistedit-raw-done' => 'Nowedhys re beu agas rol golya.',
 'watchlistedit-raw-added' => 'Keworrys veu {{PLURAL:$1|$1 titel}}:',
 'watchlistedit-raw-removed' => 'Diles veu {{PLURAL:$1|$1 titel}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Gweles chanjyow longus',
-'watchlisttools-edit' => 'Gweles ha chanjya an rol golyas',
-'watchlisttools-raw' => 'Chanjya restren an rol golyas',
+'watchlisttools-edit' => 'Gweles ha chanjya an rol golya',
+'watchlisttools-raw' => 'Chanjya restren an rol golya',
 
 # Signatures
-'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|kescows]])',
+'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|keskows]])',
 
 # Special:Version
 'version' => 'Versyon',
@@ -1396,31 +1497,35 @@ Why a yll [[Special:EditWatchlist|usya an janjyel usadow]] ynwedh.',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch-filename' => 'Hanow an restren:',
-'fileduplicatesearch-submit' => 'Whilas',
+'fileduplicatesearch-submit' => 'Hwilas',
 
 # Special:SpecialPages
 'specialpages' => 'Folennow arbennek',
-'specialpages-group-login' => 'Omgelmy / formya acont',
+'specialpages-group-login' => 'Omgelmi / gwruthyl akont',
 
 # Special:BlankPage
 'blankpage' => 'Folen wag',
 
 # Special:Tags
+'tag-filter' => 'Sidhel [[Special:Tags|tagyow]]:',
 'tags-edit' => 'chanjya',
 
 # Database error messages
-'dberr-header' => "Yma cudyn dhe'n wiki-ma",
+'dberr-header' => "An wiki-ma a'n jeves kudyn",
 'dberr-problems' => "Drog yw genen!
-Yma caletter teknogel dhe'n wiasva-ma.",
-'dberr-again' => 'Assayowgh gortos pols ha dascarga.',
+An wiasva-ma a's teves kaletter teknogel.",
+'dberr-again' => 'Assayewgh gortos pols ha daskarga.',
 'dberr-info' => '(Ny yllir kestava orth servyer an database: $1)',
-'dberr-usegoogle' => 'Why a yll assaya whilas dre Google.',
+'dberr-usegoogle' => 'Hwi a yll assaya hwilas dre Google.',
 
 # New logging system
-'logentry-delete-delete' => '$1 a dhileas an folen $3',
+'logentry-delete-delete' => '$1 a {{GENDER:$2|dhileas}} an folen $3',
+'logentry-move-move' => '$1 {{GENDER:$2|a wayas}} an folen $3 dhe $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|a wayas}} an folen $3 dhe $4 heb gasa daskedyans',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|a wayas}} an folen $3 dhe $4 dres daskedyans',
 
 # Search suggestions
-'searchsuggest-search' => 'Whilas',
-'searchsuggest-containing' => 'ynno...',
+'searchsuggest-search' => 'Hwilas',
+'searchsuggest-containing' => 'ynni...',
 
 );
index 9bb3544..c8c2f97 100644 (file)
@@ -270,7 +270,6 @@ $1',
 'disclaimers' => 'Жоопкерчиликтен баш тартуу',
 'disclaimerpage' => 'Project:Жоопкерчиликтен баш тартуу',
 'edithelp' => 'Өзгөртүү боюнча жардам',
-'edithelppage' => 'Help:Редакторлоо',
 'helppage' => 'Help:Мазмуну',
 'mainpage' => 'Башбарак',
 'mainpage-description' => 'Башбарак',
@@ -682,7 +681,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'searchmenu-legend' => 'Издөө опциялары',
 'searchmenu-exists' => "'''Бул Уикиде \"[[:\$1]]\" деп аталган барак бар.'''",
 'searchmenu-new' => "'''Бул Уикиде \"[[:\$1]]\" барагын түз!'''",
-'searchhelp-url' => 'Help:Мазмун',
 'searchprofile-articles' => 'Негизги барактар',
 'searchprofile-project' => 'Жардам жана долбоор барактары',
 'searchprofile-images' => 'Мултимедиа',
index c7d808e..b28b23f 100644 (file)
@@ -12,6 +12,7 @@
  * @author Autokrator
  * @author Dferg
  * @author Esteban97
+ * @author Geitost
  * @author Kaganer
  * @author LeighvsOptimvsMaximvs
  * @author MF-Warburg
@@ -380,7 +381,6 @@ $messages = array(
 'disclaimers' => 'Repudiationes',
 'disclaimerpage' => 'Project:Repudiationes',
 'edithelp' => 'Opes recensendi',
-'edithelppage' => 'Help:De recensendo',
 'helppage' => 'Help:Adiutatum',
 'mainpage' => 'Pagina prima',
 'mainpage-description' => 'Pagina prima',
@@ -523,7 +523,7 @@ Noli oblivisci [[Special:Preferences|praeferentias]] tuas apud {{grammar:accusat
 'userlogout' => 'Conventum concludere',
 'notloggedin' => 'Conventum non est apertum',
 'userlogin-noaccount' => 'Num rationem non habes?',
-'nologin' => "Num rationem non habes? '''$1'''.",
+'nologin' => 'Num rationem non habes? $1.',
 'nologinlink' => 'Eam crea',
 'createaccount' => 'Rationem novam creare',
 'gotaccount' => "Habesne iam rationem? '''$1'''.",
@@ -571,7 +571,7 @@ Plurimas non licet creare. Ergo, ex hoc loco IP rationes plurimas hodie creari n
 'emailauthenticated' => 'Tua inscriptio electronica recognita est $3, $2.',
 'emailconfirmlink' => 'Inscriptionem tuam electronicam adfirmare',
 'accountcreated' => 'Ratio creata',
-'accountcreatedtext' => 'Ratio pro usore $1 creata est.',
+'accountcreatedtext' => 'Ratio pro usore [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|disputatio]]) creata est.',
 'createaccount-title' => 'Ratio creata apud {{grammar:accusative|{{SITENAME}}}}',
 'createaccount-text' => 'Aliquis creavit rationem pro inscriptione electronica tua apud {{grammar:accusative|{{SITENAME}}}} ($4). Nomen usoris est "$2" et tessera est "$3". Conventum aperias et statim tesseram tuam mutes.
 
@@ -853,7 +853,6 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'searchmenu-legend' => 'Optiones',
 'searchmenu-exists' => "'''Iam est pagina \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Creare paginam \"[[:\$1]]\"'''",
-'searchhelp-url' => 'Help:Adiutatum',
 'searchprofile-articles' => 'Paginae contentorum',
 'searchprofile-project' => 'Paginae adiutati et incepti',
 'searchprofile-images' => 'Multimedia',
index 9cdcb10..765b047 100644 (file)
@@ -34,8 +34,8 @@ $namespaceNames = array(
        NS_TEMPLATE_TALK    => 'Diskusyón_de_Xablón',
        NS_HELP             => 'Ayudo',
        NS_HELP_TALK        => 'Diskusyón_de_Ayudo',
-       NS_CATEGORY         => 'Katēggoría',
-       NS_CATEGORY_TALK    => 'Diskusyón_de_Katēggoría',
+       NS_CATEGORY         => 'Kateggoría',
+       NS_CATEGORY_TALK    => 'Diskusyón_de_Kateggoría',
 );
 
 $namespaceAliases = array(
@@ -66,8 +66,8 @@ $namespaceAliases = array(
        'Xabblón'                  => NS_TEMPLATE,
        'Diskusyón_de_Xabblón'     => NS_TEMPLATE_TALK,
        'Diskussión_de_Ayudo'      => NS_HELP_TALK,
-       'Kateggoría'               => NS_CATEGORY,
-       'Diskussión_de_Kateggoría' => NS_CATEGORY_TALK,
+       'Katēggoría'               => NS_CATEGORY,
+       'Diskusyón_de_Katēggoría'  => NS_CATEGORY_TALK,
 );
 
 // Remove Spanish gender aliases (bug 37090)
@@ -410,7 +410,6 @@ $messages = array(
 'disclaimers' => 'Refuso de responsabilitá',
 'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
 'edithelp' => '¿Cómo se la troca?',
-'edithelppage' => 'Help:Una hoja, ¿cómodo se la troca?',
 'helppage' => 'Help:Contènidos',
 'mainpage' => 'La Primera Hoja',
 'mainpage-description' => 'La Primera Hoja',
@@ -670,7 +669,6 @@ Leyenda: (act) = diferencias con la versión actual,
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => 'Egziste una oja yamada "[[:$1]]" en esta viki',
 'searchmenu-new' => "'''Crîar la hoja «[[:$1]]» en esta viki!'''",
-'searchhelp-url' => 'Help:Ayudo',
 'searchprofile-articles' => 'Hojas de contènido',
 'searchprofile-project' => 'Hojas de ayudo y hojas de projeto',
 'searchprofile-images' => 'Multimedya',
index f8fdad2..ddd5d10 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Hercule
  * @author Kaffi
  * @author Kaganer
@@ -382,6 +383,7 @@ $messages = array(
 'create-this-page' => 'Dës Säit uleeën',
 'delete' => 'Läschen',
 'deletethispage' => 'Dës Säit läschen',
+'undeletethispage' => 'Dës Säit restauréieren',
 'undelete_short' => '$1 {{PLURAL:$1|Versioun|Versioune}} restauréieren',
 'viewdeleted_short' => '{{PLURAL:$1|Eng geläschte Versioun|$1 geläscht Versioune}} weisen',
 'protect' => 'Spären',
@@ -435,7 +437,6 @@ $1",
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Hëllef beim Änneren',
-'edithelppage' => 'Help:Wéi änneren ech eng Säit',
 'helppage' => 'Help:Hëllef',
 'mainpage' => 'Haaptsäit',
 'mainpage-description' => 'Haaptsäit',
@@ -584,6 +585,8 @@ $2',
 'namespaceprotected' => "Dir hutt net déi néideg Rechter fir d'Säiten am Nummraum '''$1''' ze änneren.",
 'customcssprotected' => "Dir hutt net d'Recht dës CSS-Säit z'änneren, well dorop déi perséinlech Astellunge vun engem anere Benotzer gespäichert sinn.",
 'customjsprotected' => "Dir hutt net d'Recht dës JavaScript-Säit z'änneren, well dorop déi perséinlech Astellunge vun engem anere Benotzer gespäichert sinn.",
+'mycustomcssprotected' => "Dir hutt net déi néideg Rechter fir dës CSS-Säit z'änneren.",
+'mycustomjsprotected' => "Dir hutt net déi néideg Rechter fir dës JavaScript-Säit z'änneren.",
 'ns-specialprotected' => 'Spezialsäite kënnen net verännert ginn.',
 'titleprotected' => "Eng Säit mat dësem Numm kann net ugeluecht ginn. Dës Spär gouf vum [[User:$1|$1]] gemaach deen als Grond ''$2'' uginn huet.",
 'filereadonlyerror' => 'De Fichier "$1" konnt net geännert ginn well de Repertoire vun de Fichieren "$2" nëmme geliest däerf ginn.
@@ -635,7 +638,7 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'notloggedin' => 'Net ageloggt',
 'userlogin-noaccount' => 'Hutt Dir kee Benotzerkont?',
 'userlogin-joinproject' => 'Maacht mat bäi {{SITENAME}}',
-'nologin' => "Hutt Dir kee Benotzerkont? '''$1'''.",
+'nologin' => 'Hutt Dir kee Benotzerkont? $1.',
 'nologinlink' => 'Neie Benotzerkont maachen',
 'createaccount' => 'Neie Kont opmaachen',
 'gotaccount' => "Dir hutt schonn e Benotzerkont? '''$1'''.",
@@ -643,7 +646,7 @@ Vergiesst net fir Är [[Special:Preferences|{{SITENAME}} Astellungen]] z'ännere
 'userlogin-resetlink' => "Hutt Dir d'Detailer vun Ärem Login vergiess?",
 'userlogin-resetpassword-link' => 'Setzt Ärt Passwuert zréck',
 'helplogin-url' => 'Help:Aloggen',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hëllef beim aloggen]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hëllef beim Aloggen]]',
 'createacct-join' => 'Gitt Är Informatioune hei drënner an.',
 'createacct-emailrequired' => 'E-Mailadress',
 'createacct-emailoptional' => 'E-Mailadress (fakultativ)',
@@ -718,7 +721,7 @@ Gitt eng valabel E-Mailadress an oder loosst dëst Feld eidel.',
 'cannotchangeemail' => 'Mailadresse vu Benotzerkonte kënnen op dëser Wiki net geännert ginn.',
 'emaildisabled' => 'Dëse Site ka keng Maile schécken.',
 'accountcreated' => 'De Kont gouf geschaf',
-'accountcreatedtext' => 'De Benotzerkont fir $1 gouf geschaf.',
+'accountcreatedtext' => 'De Benotzerkont fir [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|Diskussioun]]) gouf geschaf.',
 'createaccount-title' => 'Opmaache vun engem Benotzerkont op {{SITENAME}}',
 'createaccount-text' => 'Et gouf e Benotzerkont "$2" fir Iech op {{SITENAME}} ($4) ugeluecht mat dem Passwuert "$3".
 Dir sollt Iech aloggen an Äert Passwuert elo änneren.
@@ -1002,7 +1005,7 @@ Si gouf anscheinend geläscht.",
 'postedit-confirmation' => 'Är Ännerung gouf gespäichert.',
 'edit-already-exists' => 'Déi nei Säit konnt net ugeluecht ginn, well et se scho gëtt.',
 'defaultmessagetext' => 'Standardtext',
-'content-failed-to-parse' => 'Den $2-Inhalt fir den $1-Modell konnt net geparst ginn: $1',
+'content-failed-to-parse' => 'Den $2-Inhalt fir den $1-Modell konnt net geparst ginn: $3',
 'invalid-content-data' => 'Donnéeë vum Inhalt sinn net valabel',
 'content-not-allowed-here' => '"$1"-Inhalt ass op der Säit [[$2]] net erlaabt',
 'editwarning-warning' => 'Wann Dir dës Säit verloosst kann dat dozou féieren datt Dir all Ännerungen, déi Dir gemaach hutt, verléiert.
@@ -1245,7 +1248,6 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Sichoptiounen',
 'searchmenu-exists' => "* Säit '''[[$1]]'''",
 'searchmenu-new' => "'''Opmaache vun der Säit ''[[:$1|$1]]'' op dëser Wiki!'''",
-'searchhelp-url' => 'Help:Inhalter',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|All Säite weisen, déi mat dem Begrëff ufänken nodeem Dir sicht]]',
 'searchprofile-articles' => 'Säite mat Inhalt',
 'searchprofile-project' => 'Hëllef a Projetssäiten',
@@ -1430,6 +1432,7 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'userrights-changeable-col' => 'Gruppen déi Dir ännere kënnt',
 'userrights-unchangeable-col' => 'Gruppen déi Dir net ännere kënnt',
 'userrights-conflict' => 'Konflikt bäi de Benotzerrechter! Maacht Är Ännerunge w.e.g. nach eng Kéier.',
+'userrights-removed-self' => 'Dir hutt Är eege Rechter ewechgeholl. Dofir kënnt Dir net méi op dës Säit zougräifen.',
 
 # Groups
 'group' => 'Grupp:',
@@ -1500,6 +1503,8 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
 'right-editusercssjs' => 'Anere Benotzer hir CSS a JS Fichieren änneren',
 'right-editusercss' => 'Anere Benotzer hir CSS Fichieren änneren',
 'right-edituserjs' => 'Anere Benotzer hir JavaScript Fichieren änneren',
+'right-editmyusercss' => 'Är eegen CSS-Fichieren änneren',
+'right-editmyuserjs' => 'Är eege JavaScript-Fichieren änneren',
 'right-rollback' => "Ännerunge vum läschte Benotzer vun enger spezieller Säit séier z'récksetzen ''(rollback)''",
 'right-markbotedits' => 'Annuléiert Ännerungen als Botännerunge weisen',
 'right-noratelimit' => 'Net limitéiert duerch Zäitlimitatiounen um Server',
@@ -1748,6 +1753,7 @@ Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrat
 'backend-fail-stream' => 'De Fichier $1 konnt net iwwerdroe ginn.',
 'backend-fail-backup' => 'De Fichier $1 konnt net geséchert ginn.',
 'backend-fail-notexists' => 'De Fichier $1 gëtt et net.',
+'backend-fail-hashes' => "Et konnt net all 'hash' fonnt gi fir ze vergläichen.",
 'backend-fail-notsame' => 'Et gëtt schonn en net-identesche Fichier op $1.',
 'backend-fail-invalidpath' => '$1 ass keng valabel Plaz fir ze späicheren.',
 'backend-fail-delete' => 'De Fichier $1 konnt net geläscht ginn.',
@@ -1763,6 +1769,7 @@ Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrat
 'backend-fail-create' => 'De Fichier $1 konnt net geschriwwe ginn.',
 'backend-fail-maxsize' => 'De Fichier $1 konnt net geschriwwe gi well e méi grouss ass wéi {{PLURAL:$2|ee Byte|$2 Byten}}.',
 'backend-fail-readonly' => 'De Späicher-Backend "$1" kann elo nëmme geliest ginn (read-only). De Grond deen ugi gouf war: "$2"',
+'backend-fail-synced' => 'De Fichier "$1" ass an den internen Späichersystemer am Hannergrond an engem net konsistenten Zoustand',
 'backend-fail-connect' => 'Keng Verbindung mam Backend vum Späicher "$1".',
 'backend-fail-internal' => 'Onbekannte Feeler am Backend vum Späicher: "$1"',
 
index 85d36e0..d6b788f 100644 (file)
 
 $fallback = 'ru';
 
+$namespaceNames = array(
+       NS_MEDIA            => 'Медиа',
+       NS_TALK             => 'веревирд_авун',
+       NS_USER             => 'Уртах',
+       NS_USER_TALK        => 'Уртахдин_веревирд_авун',
+       NS_PROJECT_TALK     => '$1_веревирд_авун',
+       NS_FILE             => 'Файл',
+       NS_FILE_TALK        => 'Файл_веревирд_авун',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_веревирд_авун',
+       NS_TEMPLATE         => 'Шаблон',
+       NS_TEMPLATE_TALK    => 'Шаблон_веревирд_авун',
+       NS_CATEGORY         => 'Категория',
+       NS_CATEGORY_TALK    => 'Категория_веревирд_авун',
+);
+
+$namespaceAliases = array(
+       # Russian namespaces
+       'Обсуждение'                         => NS_TALK,
+       'Участник'                           => NS_USER,
+       'Обсуждение_участника'               => NS_USER_TALK,
+       'Обсуждение_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
+       'Обсуждение_файла'                   => NS_FILE_TALK,
+       'Обсуждение_MediaWiki'               => NS_MEDIAWIKI_TALK,
+       'Обсуждение_шаблона'                 => NS_TEMPLATE_TALK,
+       'Справка'                            => NS_HELP,
+       'Обсуждение_справки'                 => NS_HELP_TALK,
+       'Категория'                          => NS_CATEGORY,
+       'Обсуждение_категории'               => NS_CATEGORY_TALK,
+);
+
+// Remove Russian gender aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ЭлячӀунрин кӀаникай цӀар чӀугун',
@@ -238,7 +272,6 @@ $messages = array(
 'disclaimers' => 'Жавабдарвал хивяй акъудун',
 'disclaimerpage' => 'Project:Жавабдарвал хивяй акъудун',
 'edithelp' => 'Дуьзар хъувун патал куьмек',
-'edithelppage' => 'Help:Дуьзар хъувун',
 'helppage' => 'Help:Къене авайбур',
 'mainpage' => 'Кьилин ччин',
 'mainpage-description' => 'Кьилин ччин',
@@ -550,7 +583,6 @@ $messages = array(
 'searchmenu-legend' => 'Жагъурунин низамарунар',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
 'searchmenu-new' => "'''И вики-проектда \"[[:\$1]]\" ччин туькlуьрун !'''",
-'searchhelp-url' => 'Help:КЪене авайбур',
 'searchprofile-articles' => 'Асул ччинар',
 'searchprofile-project' => 'Куьмек гунин ва проектдин ччинар',
 'searchprofile-images' => 'Мультимедиа',
index 909dea4..0ee6c11 100644 (file)
@@ -216,7 +216,6 @@ $messages = array(
 'disclaimers' => 'Negas de respondablia',
 'disclaimerpage' => 'Project:Nega jeneral de respondablia',
 'edithelp' => 'Aida con edita',
-'edithelppage' => 'Help:Edita',
 'helppage' => 'Help:Contenis',
 'mainpage' => 'Paje Prima',
 'mainpage-description' => 'Paje Prima',
@@ -436,7 +435,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 'prevn' => '{{PLURAL:$1|$1}} presedente',
 'nextn' => '{{PLURAL:$1|$1}} seguente',
 'viewprevnext' => 'Vide ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Contenis',
 'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 parolas}})',
 'search-section' => '(sesion $1)',
 'search-interwiki-default' => 'Resultas de $1:',
index 7f14e50..672e129 100644 (file)
@@ -247,7 +247,6 @@ $1",
 'disclaimers' => "Okutangaaza ku kkomo ery'obuvunaaniro bwaffe obw'omu mateeka",
 'disclaimerpage' => "Project:Okutangaaza ku kkomo ery'obuvunaaniro bwaffe obw'omu mateeka",
 'edithelp' => 'Nyamba',
-'edithelppage' => "Help:Obuyambi ku by'okukyusakyusa",
 'helppage' => 'Help:Endagiriro',
 'mainpage' => 'Olupapula Olusooka',
 'mainpage-description' => 'Olupapula Olusooka',
@@ -521,10 +520,8 @@ Oyinz'okuba nga wamaze okutegeka ekya ddala ekipya oba nga wakasabayo eky'ekisee
 
 # Special:PasswordReset
 'passwordreset' => 'Damu okutegeka ekyama',
-'passwordreset-text' => "Oba oyagala okufuna 'email' ekujjukiza ebikwata ku akawunti yo, jjuza foomu eno.",
 'passwordreset-legend' => 'Damu okutegeka ekyama',
 'passwordreset-disabled' => "Eby'okuddamu okutegeka ebyama biymirizidwa ku wiki eno.",
-'passwordreset-pretext' => '{{PLURAL:$1||Wandika wo kimu ku ebiri mu lukalala}}',
 'passwordreset-username' => "Ery'obwa memba:",
 'passwordreset-email' => "Endagiriro eya 'email':",
 'passwordreset-emailtitle' => "Ebya akawunti ey'oku {{SITENAME}}",
@@ -825,7 +822,6 @@ oba ku gano agali ku lupapula luno.<br />
 'searchmenu-legend' => 'Kyusamu ennoonya',
 'searchmenu-exists' => "'''Olupapula \"[[:\$1]]\" gyeruli ku wiki eno.'''",
 'searchmenu-new' => "'''Oba oyagala, olupapula \"[[:\$1]]\" gwe osobola okulukolawo ku wiki eno.'''",
-'searchhelp-url' => 'Help:Endagiriro',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kebera mu mpapula eziriko akatandikwa kano]]',
 'searchprofile-articles' => "Empapula ez'ensonga",
 'searchprofile-project' => "Empapula eziriko obuyambi n'eza Kawefube",
index 5ce6bb4..6d892eb 100644 (file)
@@ -396,7 +396,6 @@ $1',
 'disclaimers' => 'Aafwiezinge aansjprakelikheid',
 'disclaimerpage' => 'Project:Algemein aafwiezing aansjprakelikheid',
 'edithelp' => 'Hulp bie bewirke',
-'edithelppage' => 'Help:Instructies',
 'helppage' => 'Help:Help',
 'mainpage' => 'Veurblaad',
 'mainpage-description' => 'Veurblaad',
@@ -573,7 +572,7 @@ Mäögelik waert nog 'n deil pagina's getuind esofs te nog aangemeld bis pès te
 'logout' => 'Aafmelde',
 'userlogout' => 'Aafmelde',
 'notloggedin' => 'Neet aangemeld',
-'nologin' => "Höbs te nog geine gebroekersnaam? '''$1'''.",
+'nologin' => 'Höbs te nog geine gebroekersnaam? $1.',
 'nologinlink' => "Maak 'ne gebroekersnaam aan",
 'createaccount' => 'Nuuj gebroekersprofiel aanmake.',
 'gotaccount' => "Höbs te al 'ne gebroekersnaam? '''$1'''.",
@@ -667,10 +666,8 @@ Meugelik höbs doe dien wachwaord al gewiezig of 'n nuuj tiedelik wachwaord aang
 
 # Special:PasswordReset
 'passwordreset' => 'Wachwaord obbenuuts insjtèlle',
-'passwordreset-text' => "Völ dit form aan zodet weer dich 'ne mail kinne sjikk mit dien gebroekersgegaeves.",
 'passwordreset-legend' => 'Wachwaord obbenuuts insjtèlle',
 'passwordreset-disabled' => "'t Is hie neet meugelik óm die wachwaord óbbenuits in te sjtelle.",
-'passwordreset-pretext' => '{{PLURAL:$1||Veur ei van de vèljer hieónger in}}',
 'passwordreset-username' => 'Gebroekersnaam:',
 'passwordreset-domain' => 'Domein:',
 'passwordreset-capture' => 'Bekiek de resulterenden e-mail?',
@@ -1122,7 +1119,6 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'searchmenu-legend' => 'Zeukopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmake op deze wiki'''",
-'searchhelp-url' => 'Help:Help',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanaome mit dit veurveugsel weergaeve]]',
 'searchprofile-articles' => "Inhaudelike pagina's",
 'searchprofile-project' => "Help- en projekpagina's",
@@ -1615,7 +1611,7 @@ Gank trök nao t [[Special:Upload/stash/$1|uploadformuleer]] om dit perbleem te
 'upload-file-error' => 'Interne fout',
 'upload-file-error-text' => "'n Intern fuitje vonj plaats wie 'n tiedelik besjtandj op de server woort aangemaak. Num aub contac op met 'ne [[Special:ListUsers/sysop|systeemwèrker]].",
 'upload-misc-error' => 'Onbekinde uploadfout',
-'upload-misc-error-text' => "d'r Is tiedes 't uploade 'ne onbekinde fout opgetraeje. Controleer of de URL correc en besjikbaar is en probeer 't opnuuj. Es 't probleem aanhaojt, nöm dan contac op met 'ne [[Special:ListUsers/sysop|systeembeheerder]].",
+'upload-misc-error-text' => "d'r Is tiedes 't uploade 'ne onbekinde fout opgetraeje. Controleer of de URL correc en besjikbaar is en probeer 't opnuuj. Es 't probleem aanhaojt, nöm dan contac op met 'ne [[Special:ListUsers/sysop|systeemwèrker]].",
 'upload-too-many-redirects' => 'De URL bevadde te väöl doorverwiezinge',
 'upload-unknown-size' => 'Ónbekèndje gruuedje',
 'upload-http-error' => 'dr Is n HTTP-fout opgetraoje: $1',
index a7d4106..e61c248 100644 (file)
@@ -355,7 +355,6 @@ $1",
 'disclaimers' => 'Avertense',
 'disclaimerpage' => 'Project:Avertense generâli',
 'edithelp' => 'Agiùtto',
-'edithelppage' => 'Help:Modiffica',
 'helppage' => 'Help:Contegnûi',
 'mainpage' => 'Pàgina prinçipâ',
 'mainpage-description' => 'Pagina prinçipâ',
@@ -706,7 +705,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 'viewprevnext' => 'Veddi ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Inte questa wiki gh'è za 'na pàgina co-o nómme \"[[:\$1]]\"'''",
 'searchmenu-new' => 'Crea a pagina "[[:$1]]" insce questo scito',
-'searchhelp-url' => 'Help:Contegnûi',
 'searchprofile-articles' => 'Pàgina di contegnûi',
 'searchprofile-project' => 'Pàgine de agiùtto e relative a-o progetto',
 'searchprofile-images' => 'Moltimedia',
index e99297e..5c60ce0 100644 (file)
@@ -147,7 +147,6 @@ $messages = array(
 'disclaimers' => 'Kūondõkst',
 'disclaimerpage' => 'Project:Kūondõkst',
 'edithelp' => 'Redigīerimiz opātõks',
-'edithelppage' => 'Help:Redigīerimiz_opātõks',
 'helppage' => 'Help:Sižāli',
 'mainpage' => 'Eḑḑilēḑ',
 'mainpage-description' => 'Eḑḑilēḑ',
index 2566cbf..3d90651 100644 (file)
@@ -13,6 +13,7 @@
  * @author DracoRoboter
  * @author Flavio05
  * @author GatoSelvadego
+ * @author Geitost
  * @author Insübrich
  * @author Kemmótar
  * @author Malafaya
@@ -322,7 +323,6 @@ $1",
 'disclaimers' => 'Disclaimers',
 'disclaimerpage' => 'Project:Avertenz generaj',
 'edithelp' => 'Manual de spiegazión',
-'edithelppage' => 'Help:Scriv un articul',
 'helppage' => 'Help:Contegnüü',
 'mainpage' => 'Pagina principala',
 'mainpage-description' => 'Pagina principala',
@@ -431,7 +431,7 @@ Tegné cünt che certi paginn pödass che i seguiten a vedess tant 'me se a füd
 'logout' => 'Va fö',
 'userlogout' => 'Và fö',
 'notloggedin' => 'Te seet minga dent in del sistema',
-'nologin' => "Gh'avii anmò da registrav? '''$1'''.",
+'nologin' => "Gh'avii anmò da registrav? $1.",
 'nologinlink' => 'Creé un cünt!',
 'createaccount' => 'Creá un cünt',
 'gotaccount' => "Gh'hee-t giamò un cünt? '''$1'''.",
@@ -606,7 +606,6 @@ Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'viewprevnext' => 'Vidé ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Upzión de ricerca',
 'searchmenu-new' => "'''Trà in pee la pagina \"[[:\$1]]\" ins quel sit chì!'''",
-'searchhelp-url' => 'Help:Contegnüü',
 'searchprofile-articles' => 'Paginn de cuntegnüü',
 'searchprofile-project' => 'Paginn de jüt e de pruget',
 'searchprofile-images' => 'Multimedia',
index a3898ea..d8740a6 100644 (file)
@@ -277,7 +277,6 @@ $messages = array(
 'disclaimers' => 'ຂໍ້ປະຕິເສດຄວາມຮັບຜິດຊອບ',
 'disclaimerpage' => 'Project:ຂໍ້ປະຕິເສດຄວາມຮັບຜິດຊອບ',
 'edithelp' => 'ວິທີດັດແກ້ໜ້າ',
-'edithelppage' => 'Help:ການດັດແກ້',
 'helppage' => 'Help:ເນື້ອໃນ',
 'mainpage' => 'ໜ້າຫຼັກ',
 'mainpage-description' => 'ໜ້າຫຼັກ',
@@ -474,7 +473,6 @@ $messages = array(
 'prevn' => '{{PLURAL:$1|$1}} ກ່ອນໜ້າ',
 'nextn' => '{{PLURAL:$1|$1}} ຕໍ່ໄປ',
 'viewprevnext' => 'ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:ເນື້ອໃນ',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ຄຳ|$2 ຄຳ}})',
 'search-result-score' => 'ຄວາມກ່ຽວຂ້ອງ: $1%',
 'search-redirect' => '(ໂອນ $1)',
index 0295b8e..5b84b35 100644 (file)
@@ -189,7 +189,6 @@ $messages = array(
 'disclaimers' => 'Dikulemi',
 'disclaimerpage' => 'Project:Dikulemi generali',
 'edithelp' => "Hloli ye ng'i",
-'edithelppage' => "Help:Hloli ye ng'i",
 'helppage' => 'Help:Buinaneli di petulo',
 'mainpage' => 'Petulo yem efro',
 'mainpage-description' => 'Petulo yem efro',
@@ -453,7 +452,6 @@ Informasi: (bye) = petuho a nca selt,
 'prevn' => 'kona {{PLURAL:$1|$1}}',
 'nextn' => 'lila {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Kamukile ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Buinaneli di petulo',
 'searchall' => 'xete',
 'showingresults' => "Kamukile opi {{PLURAL:$1|'''1''' ekali|'''$1''' ekalina}} di #'''$2'''.",
 'showingresultsnum' => "Kamukile {{PLURAL:$3|'''1''' ekali|'''$3''' ekalina}} di #'''$2'''.",
index 8bf794c..1cefa93 100644 (file)
  * @author Dark Eagle
  * @author Eitvys200
  * @author Garas
+ * @author Geitost
  * @author Homo
  * @author Hugo.arg
  * @author Ignas693
  * @author Kaganer
+ * @author Mantak111
  * @author Matasg
  * @author Meno25
  * @author Ola
@@ -290,6 +292,18 @@ $messages = array(
 'oct' => 'spa',
 'nov' => 'lap',
 'dec' => 'grd',
+'january-date' => 'Sausio $1',
+'february-date' => 'Vasario $1',
+'march-date' => 'Kovo $1',
+'april-date' => 'Balandžio $1',
+'may-date' => 'Gegužės $1',
+'june-date' => 'Birželio $1',
+'july-date' => 'Liepos $1',
+'august-date' => 'Rugpjūčio $1',
+'september-date' => 'Rugsėjo $1',
+'october-date' => 'Spalio $1',
+'november-date' => 'Lapkričio $1',
+'december-date' => 'Gruodžio $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorijos}}',
@@ -371,6 +385,7 @@ $messages = array(
 'create-this-page' => 'Sukurti šį puslapį',
 'delete' => 'Trinti',
 'deletethispage' => 'Ištrinti šį puslapį',
+'undeletethispage' => 'Attrinti šį puslapį',
 'undelete_short' => 'Atkurti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}',
 'viewdeleted_short' => 'Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}',
 'protect' => 'Užrakinti',
@@ -424,7 +439,6 @@ $1',
 'disclaimers' => 'Atsakomybės apribojimas',
 'disclaimerpage' => 'Project:Atsakomybės apribojimas',
 'edithelp' => 'Kaip redaguoti',
-'edithelppage' => 'Help:Redagavimas',
 'helppage' => 'Help:Turinys',
 'mainpage' => 'Pagrindinis puslapis',
 'mainpage-description' => 'Pagrindinis puslapis',
@@ -563,13 +577,16 @@ Užklausa: $2',
 'viewsourcetext' => 'Jūs galite žiūrėti ir kopijuoti puslapio kodą:',
 'viewyourtext' => "Jūs galite matyti ir kopijuoti '''savo redagavimų''' tekstą į šį puslapį:",
 'protectedinterface' => 'Šiame puslapyje yra apsaugotas nuo piktnaudžiavimo programinės įrangos sąsajos tekstas.',
-'editinginterface' => "'''Dėmesio:''' Jūs redaguojate puslapį, kuris yra naudojamas programinės įrangos sąsajos tekste. Pakeitimai šiame puslapyje taip pat pakeis naudotojo sąsajos išvaizdą ir kitiems naudojams. Jei norite išversti, siūlome pasinaudoti [//translatewiki.net/wiki/Main_Page?setlang=lt „translatewiki.net“], „MediaWiki“ lokalizacijos projektu.",
+'editinginterface' => "'''Dėmesio:''' Jūs redaguojate puslapį, kuris yra naudojamas programinės įrangos sąsajos tekste. Pakeitimai šiame puslapyje taip pat pakeis naudotojo sąsajos išvaizdą ir kitiems naudotojams šiame wiki.
+Jei norite pridėti ir keisti vertimus, siūlome pasinaudoti [//translatewiki.net/wiki/Main_Page?setlang=lt „translatewiki.net“], „MediaWiki“ lokalizacijos projektu.",
 'sqlhidden' => '(SQL užklausa paslėpta)',
 'cascadeprotected' => 'Šis puslapis buvo apsaugotas nuo redagavimo, kadangi jis yra įtrauktas į {{PLURAL:$1|šį puslapį, apsaugotą|šiuos puslapius, apsaugotus}} „pakopinės apsaugos“ pasirinktimi:
 $2',
 'namespaceprotected' => "Jūs neturite teisės redaguoti puslapių '''$1''' srityje.",
 'customcssprotected' => 'Jūs neturite teisės keisti šį CSS puslapį, nes jame yra kito naudotojo asmeniniai nustatymai.',
 'customjsprotected' => 'Jūs neturite teisės keisti šį JavaScript puslapį, nes jame yra kito naudotojo asmeniniai nustatymai.',
+'mycustomcssprotected' => 'Jūs neturite teisės redaguoti šio CSS puslapio.',
+'mycustomjsprotected' => 'Jūs neturite teisės redaguoti šio JavaScript puslapio.',
 'ns-specialprotected' => 'Specialieji puslapiai negali būti redaguojami.',
 'titleprotected' => "[[User:$1|$1]] apsaugojo šį pavadinimą nuo sukūrimo.
 Nurodyta priežastis yra ''$2''.",
@@ -595,9 +612,18 @@ Pastaba: kai kuriuose puslapiuose ir toliau gali rodyti, kad esate prisijungęs
 'welcomecreation-msg' => 'Jūsų paskyra buvo sukurta.
 Nepamirškite pakeisti savo [[Special:Preferences|{{SITENAME}} nustatymų]].',
 'yourname' => 'Naudotojo vardas:',
+'userlogin-yourname' => 'Naudotojo vardas',
+'userlogin-yourname-ph' => 'Įveskite savo naudotojo vardą',
 'yourpassword' => 'Slaptažodis:',
+'userlogin-yourpassword' => 'Slaptažodis',
+'userlogin-yourpassword-ph' => 'Įveskite savo slaptažodį',
+'createacct-yourpassword-ph' => 'Įveskite slaptažodį',
 'yourpasswordagain' => 'Pakartokite slaptažodį:',
+'createacct-yourpasswordagain' => 'Patvirtinkite slaptažodį',
+'createacct-yourpasswordagain-ph' => 'Įveskite slaptažodį dar kartą',
 'remembermypassword' => 'Prisiminti prisijungimo duomenis šiame kompiuteryje (daugiausiai $1 {{PLURAL:$1|dieną|dienas|dienų}})',
+'userlogin-remembermypassword' => 'Įsiminti mane',
+'userlogin-signwithsecure' => 'Naudoti saugią jungtį',
 'securelogin-stick-https' => 'Likite prisijungę prie HTTPS po prisijungimo',
 'yourdomainname' => 'Jūsų domenas:',
 'password-change-forbidden' => 'Jus negalite keisti slaptažodžių šioje wiki.',
@@ -610,18 +636,38 @@ Nepamirškite pakeisti savo [[Special:Preferences|{{SITENAME}} nustatymų]].',
 'logout' => 'Atsijungti',
 'userlogout' => 'Atsijungti',
 'notloggedin' => 'Neprisijungęs',
+'userlogin-noaccount' => 'Neturite paskyros?',
+'userlogin-joinproject' => 'Prisijungti prie {{SITENAME}}',
 'nologin' => "Neturite prisijungimo vardo? '''$1'''.",
 'nologinlink' => 'Sukurkite paskyrą',
 'createaccount' => 'Sukurti paskyrą',
 'gotaccount' => "Jau turite paskyrą? '''$1'''.",
 'gotaccountlink' => 'Prisijunkite',
 'userlogin-resetlink' => 'Pamiršote savo prisijungimo duomenis?',
+'userlogin-resetpassword-link' => 'Nustatykite slaptažodį iš naujo',
+'helplogin-url' => 'Help:Prisijungimas',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Prisijungimo pagalba]]',
+'createacct-join' => 'Įveskite savo informaciją žemiau.',
+'createacct-emailrequired' => 'Elektroninio pašto adresas',
+'createacct-emailoptional' => 'Elektroninio pašto adresas (neprivaloma)',
+'createacct-email-ph' => 'Įveskite savo elektroninio pašto adresą',
 'createaccountmail' => 'Naudokite laikiną atsitiktinį slaptažodį ir nusiųskite jį į elektroninį paštą, nurodytą žemiau.',
+'createacct-realname' => 'Vardas (neprivaloma)',
 'createaccountreason' => 'Priežastis:',
+'createacct-reason' => 'Priežastis',
+'createacct-reason-ph' => 'Kodėl kuriate kitą paskyrą',
+'createacct-captcha' => 'Saugumo patikrinimas',
+'createacct-imgcaptcha-ph' => 'Įveskite tekstą, kurį matote aukščiau',
+'createacct-submit' => 'Sukurkite savo paskyrą',
+'createacct-benefit-heading' => '{{SITENAME}} sukurtas žmonių kaip jūs.',
+'createacct-benefit-body1' => '{{PLURAL:$1|keitimas|keitimai|keitimų}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|puslapis|puslapiai}}',
+'createacct-benefit-body3' => 'Neseni {{PLURAL:$1|autorius|autoriai|autorių}}',
 'badretype' => 'Įvesti slaptažodžiai nesutampa.',
 'userexists' => 'Įvestasis naudotojo vardas jau naudojamas.
 Prašome pasirinkti kitą vardą.',
 'loginerror' => 'Prisijungimo klaida',
+'createacct-error' => 'Paskyros kūrimo klaida',
 'createaccounterror' => 'Nepavyko sukurti paskyros: $1',
 'nocookiesnew' => 'Naudotojo paskyra buvo sukurta, bet jūs nesate prisijungęs. {{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos, tada prisijunkite su savo naujuoju naudotojo vardu ir slaptažodžiu.',
 'nocookieslogin' => '{{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos ir pamėginkite vėl.',
@@ -676,7 +722,7 @@ Prašome įvesti gerai suformuotą adresą arba palikite tą laukelį tuščią.
 'cannotchangeemail' => 'Paskyros e-mail adresas šiame viki negali būti keičiamas.',
 'emaildisabled' => 'Ši svetainė negali siųsti elektroninių laiškų.',
 'accountcreated' => 'Paskyra sukurta',
-'accountcreatedtext' => 'Naudotojo paskyra $1 buvo sukurta.',
+'accountcreatedtext' => 'Naudotojo paskyra [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) buvo sukurta.',
 'createaccount-title' => '{{SITENAME}} paskyros kūrimas',
 'createaccount-text' => 'Projekte {{SITENAME}} ($4) kažkas sukūrė paskyrą „$2“ su slaptažodžiu „$3“ panaudodamas jūsų el. pašto adresą.
 Jūs turėtumėte prisijungti ir pasikeisti savo slaptažodį.
@@ -711,13 +757,15 @@ Palaukite prieš bandant vėl.',
 'resetpass-wrong-oldpass' => 'Klaidingas laikinas ar esamas slaptažodis.
 Jūs galbūt jau sėkmingai pakeitėte savo slaptažodį ar gavote naują laikiną slaptažodį.',
 'resetpass-temp-password' => 'Laikinas slaptažodis:',
+'resetpass-abort-generic' => 'Slaptažodžio keitimas buvo nutrauktas nuo ekstenzijos.',
 
 # Special:PasswordReset
 'passwordreset' => 'Atstatyti slaptažodį',
-'passwordreset-text' => 'Užpildykite šią formą, norėdami atkurti savo slaptažodį.',
+'passwordreset-text-one' => 'Užpildykite šią formą, norėdami atkurti savo slaptažodį.',
+'passwordreset-text-many' => '{{PLURAL:$1|Įveskite vieną iš dalies duomenų, norėdami atkurti jūsų slaptažodį.}}',
 'passwordreset-legend' => 'Atstatyti slaptažodį',
 'passwordreset-disabled' => 'Slaptažodžių atstatymai šiame wikyje išjungti.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Langelyje parašykite vieną duomenų vienetų žemiau}}',
+'passwordreset-emaildisabled' => 'El. pašto funkcijos uždraustos šiame wiki.',
 'passwordreset-username' => 'Naudotojo vardas:',
 'passwordreset-domain' => 'Domenas:',
 'passwordreset-capture' => 'Peržiūrėti galutinį e-mail laišką?',
@@ -735,8 +783,8 @@ Jūs turėtumėte prisijungti ir pasirinkti naują slaptažodį. Jei kažkas kit
 {{PLURAL:$3|Šis laikinas slaptažodis|Šie laikini slaptažodžiai}} baigs galioti po {{PLURAL:$5|vienos dienos|$5 dienų}}. Jūs turėtumėte prisijungti ir pasirinkti naują slaptažodį. Jei kažkas padarė tai be jūsų žinios arba jūs prisiminėte savo pirminį slaptažodį, ir jūs nebenorite jo pakeisti, galite ignoruoti šį pranešimą ir toliau naudotis savo senuoju slaptažodžiu.',
 'passwordreset-emailelement' => 'Naudotojo vardas: $1
 Laikinas slaptažodis: $2',
-'passwordreset-emailsent' => 'Priminimo laiškas buvo išsiųstas.',
-'passwordreset-emailsent-capture' => 'Priminimo e-mail laiškas bus pasiųstas, toks koks parodytas.',
+'passwordreset-emailsent' => 'Slaptažodžio priminimo laiškas buvo išsiųstas.',
+'passwordreset-emailsent-capture' => 'Slaptažodžio priminimo laiškas bus išsiųstas, toks koks parodytas.',
 'passwordreset-emailerror-capture' => 'Priminimo e-mail laiškas buvo sugeneruotas, toks koks parodytas, bet pasiuntimas naudotojui buvo nesėkmingas: $1',
 
 # Special:ChangeEmail
@@ -846,7 +894,7 @@ Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] ki
 arba [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaguoti šį puslapį]</span>.',
 'noarticletext-nopermission' => 'Šiuo metu šiame puslapyje nėra jokio teksto.
 Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų]</span>, bet jūs neturite teisės sukurti šį puslapį.',
 'userpage-userdoesnotexist' => 'Naudotojo paskyra „<nowiki>$1</nowiki>“ yra neužregistruota. Prašom patikrinti, ar jūs norite kurti/redaguoti šį puslapį.',
 'userpage-userdoesnotexist-view' => 'Naudotojo paskyra „$1“ neužregistruota.',
 'blocked-notice-logextract' => 'Šis naudotojas šiuo metu yra užblokuotas.
@@ -867,7 +915,7 @@ Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] ki
 'updated' => '(Atnaujinta)',
 'note' => "'''Pastaba:'''",
 'previewnote' => "''Nepamirškite, kad tai tik peržiūra, pakeitimai dar nėra išsaugoti!'''",
-'continue-editing' => 'Tęsti redagavimą',
+'continue-editing' => 'Eiti į redagavimo sritį',
 'previewconflict' => 'Ši peržiūra parodo tekstą iš viršutiniojo teksto redagavimo lauko taip, kaip jis bus rodomas, jei pasirinksite išsaugoti.',
 'session_fail_preview' => "'''Atsiprašome! Mes negalime vykdyti jūsų keitimo dėl sesijos duomenų praradimo.
 Prašome pamėginti vėl. Jei tai nepadeda, pamėginkite atsijungti ir prisijungti atgal.'''",
@@ -902,7 +950,7 @@ Taip pat jūs pasižadate, kad tai jūsų pačių rašytas tekstas arba kopijuot
 iš viešų ar panašių nemokamų šaltinių (detaliau - $1).
 '''NEKOPIJUOKITE AUTORINĖMIS TEISĖMIS APSAUGOTŲ DARBŲ BE LEIDIMO!'''",
 'longpageerror' => "'''KLAIDA: Tekstas, kurį pateikėte, yra $1 {{PLURAL:$1|kilobaito|kilobaitų|kilobaitų}} ilgio, tai yra didesnis nei yra leistina. Yra leidžiami tiktai $2 {{PLURAL:$2|kilobaitas|kilobaitai|kilobaitų}}.''' Jis nebus išsaugotas.",
-'readonlywarning' => "'''DĖMESIO: Duomenų bazė buvo užrakinta techninei profilaktikai, todėl šiuo metu negalėsite išsaugoti savo pakeitimų. Siūlome nusikopijuoti tekstą į tekstinį failą ir vėliau jį čia išsaugoti.'''
+'readonlywarning' => "'''Įspėjimas: Duomenų bazė buvo užrakinta techninei profilaktikai, todėl šiuo metu negalėsite išsaugoti savo pakeitimų. Siūlome nusikopijuoti tekstą į tekstinį failą ir vėliau jį čia išsaugoti.'''
 
 Ją užrakinusio administratoriaus paaiškinimas: $1",
 'protectedpagewarning' => "'''Dėmesio: Šis puslapis yra užrakintas taip, kad jį redaguoti gali tik administratoriaus teises turintys naudotojai.'''
@@ -940,6 +988,7 @@ Tam nėra paaiškinimo.',
 Greičiausiai jis yra ištrintas.',
 'edit-conflict' => 'Redagavimo konfliktas.',
 'edit-no-change' => 'Jūsų keitimas buvo ignoruotas kadangi nebuvo atlikta jokių teksto pakeitimų.',
+'postedit-confirmation' => 'Jūsų pakeitimas išsaugotas.',
 'edit-already-exists' => 'Negalima sukurti naujo puslapio.
 Jis jau egzistuoja.',
 'defaultmessagetext' => 'Numatytasis pranešimo tekstas',
@@ -1177,7 +1226,6 @@ Prašome patikrinti sąrašus.',
 'searchmenu-legend' => 'Paieškos nustatymai',
 'searchmenu-exists' => "'''Puslapis pavadinimu „[[$1]]“ šioje wiki'''",
 'searchmenu-new' => "'''Sukurti puslapį „[[:$1]]“ šioje wiki!'''",
-'searchhelp-url' => 'Help:Turinys',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ieškoti puslapių su šiuo priešdėliu]]',
 'searchprofile-articles' => 'Turinio puslapiai',
 'searchprofile-project' => 'Pagalbos ir projekto puslapiai',
@@ -1221,7 +1269,7 @@ Prašome patikrinti sąrašus.',
 
 # Preferences page
 'preferences' => 'Nustatymai',
-'mypreferences' => 'Mano nustatymai',
+'mypreferences' => 'Nustatymai',
 'prefs-edits' => 'Keitimų skaičius:',
 'prefsnologin' => 'Neprisijungęs',
 'prefsnologintext' => 'Jums reikia būti <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} prisijungusiam]</span>, kad galėtumėte keisti savo nustatymus.',
@@ -1284,7 +1332,7 @@ Galite panaudoti šią atsitiktinai sugeneruotą reikšmę: $1',
 'timezoneregion-indian' => 'Indijos vandenynas',
 'timezoneregion-pacific' => 'Ramusis vandenynas',
 'allowemail' => 'Leisti siųsti el. laiškus iš kitų naudotojų',
-'prefs-searchoptions' => 'Paieškos nuostatos',
+'prefs-searchoptions' => 'Paieška',
 'prefs-namespaces' => 'Vardų sritys',
 'defaultns' => 'Pagal nutylėjimą ieškoti šiose vardų srityse:',
 'default' => 'pagal nutylėjimą',
@@ -1297,8 +1345,8 @@ Tai nebeatšaukiama.',
 'prefs-emailconfirm-label' => 'El. pašto patvirtinimas:',
 'prefs-textboxsize' => 'Redagavimo lango dydis',
 'youremail' => 'El. paštas:',
-'username' => 'Naudotojo vardas:',
-'uid' => 'Naudotojo ID:',
+'username' => '{{GENDER:$1Naudotojo vardas}}:',
+'uid' => '{{GENDER:$1|Naudotojo}} ID:',
 'prefs-memberingroups' => '{{PLURAL:$1|Grupės|Grupių}} narys:',
 'prefs-registration' => 'Registravimosi laikas:',
 'yourrealname' => 'Tikrasis vardas:',
@@ -1363,6 +1411,7 @@ teisės",
 'userrights-notallowed' => 'Jūsų paskyra neturi teisių priskirti ar panaikinti naudotojų teises.',
 'userrights-changeable-col' => 'Grupės, kurias galite keisti',
 'userrights-unchangeable-col' => 'Grupės, kurių negalite keisti',
+'userrights-conflict' => 'Naudotojo teisių konfliktas! Prašome dar kartą taikyti savo keitimus.',
 
 # Groups
 'group' => 'Grupė:',
@@ -1433,6 +1482,7 @@ teisės",
 'right-editusercssjs' => 'Redaguoti kitų naudotojų CSS ir JS failus',
 'right-editusercss' => 'Redaguoti kitų naudotojų CSS failus',
 'right-edituserjs' => 'Redaguoti kitų naudotojų JS failus',
+'right-editmyuserjs' => 'Redaguokite savo naudotojo vartotojo JavaScript failus',
 'right-rollback' => 'Greitai atmesti paskutinio naudotojo tam tikro puslapio pakeitimus',
 'right-markbotedits' => 'Žymėti atmestus keitimus kaip atliktus boto',
 'right-noratelimit' => 'Netaikyti greičio apribojimų',
@@ -1664,9 +1714,9 @@ $1',
 'upload-proto-error-text' => 'Nuotoliniai įkėlimas reikalauja, kad URL prasidėtų <code>http://</code> arba <code>ftp://</code>.',
 'upload-file-error' => 'Vidinė klaida',
 'upload-file-error-text' => 'Įvyko vidinė klaida bandant sukurti laikinąjį failą serveryje.
-Prašome susisiekti su [[Special:ListUsers/sysop|sistemos administratoriumi]].',
+Prašome susisiekti su [[Special:ListUsers/sysop|administratoriumi]].',
 'upload-misc-error' => 'Nežinoma įkėlimo klaida',
-'upload-misc-error-text' => 'Įvyko nežinoma klaida vykstant įkėlimui. Prašome patikrinti, kad URL teisingas bei pasiekiamas ir pamėginkite vėl. Jei problema lieka, susisiekite su sistemos administratoriumi.',
+'upload-misc-error-text' => 'Įvyko nežinoma klaida vykstant įkėlimui. Prašome patikrinti, kad URL teisingas bei pasiekiamas ir pamėginkite vėl. Jei problema lieka, susisiekite su [[Special:ListUsers/sysop|administratoriumi]].',
 'upload-too-many-redirects' => 'URL yra per daug kartų peradresuotas',
 'upload-unknown-size' => 'Nežinomas dydis',
 'upload-http-error' => 'Įvyko HTTP klaida: $1',
@@ -1896,6 +1946,9 @@ Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.',
 Nuorodos turėtų būti patikslintos, kad rodytų į konkretų puslapį.<br />
 Puslapis laikomas daugiaprasmiu puslapiu, jei jis naudoja šabloną, kuris yra nurodomas iš [[MediaWiki:Disambiguationspage]].",
 
+'pageswithprop-prop' => 'Ypatybės pavadinimas:',
+'pageswithprop-submit' => 'Eiti',
+
 'doubleredirects' => 'Dvigubi peradresavimai',
 'doubleredirectstext' => 'Šiame puslapyje yra puslapių, kurie nukreipia į kitus peradresavimo puslapius, sąrašas.
 Kiekvienoje eilutėje yra nuorodos į pirmąjį ir antrąjį peradresavimą, taip pat antrojo peradresavimo paskirtis, kuris paprastai yra „tikrasis“ paskirties puslapis, į kurį pirmasis peradresavimas ir turėtų rodyti.
@@ -2124,8 +2177,8 @@ El. pašto adresas, kurį įvedėte [[Special:Preferences|savo naudotojo nustaty
 'usermessage-editor' => 'Sistemos pranešėjas',
 
 # Watchlist
-'watchlist' => 'Stebimi puslapiai',
-'mywatchlist' => 'Stebimi puslapiai',
+'watchlist' => 'Stebimų sąrašas',
+'mywatchlist' => 'Stebimų sąrašas',
 'watchlistfor2' => 'Naudotojo $1 $2',
 'nowatchlist' => 'Neturite nei vieno stebimo puslapio.',
 'watchlistanontext' => 'Prašome $1, kad peržiūrėtumėte ar pakeistumėte elementus savo stebimųjų sąraše.',
@@ -2145,7 +2198,7 @@ taip pat bus '''paryškinti''' [[Special:RecentChanges|naujausių keitimų sąra
 'notvisiblerev' => 'Versija buvo ištrinta',
 'watchnochange' => 'Pasirinktu laikotarpiu nebuvo redaguotas nei vienas stebimas puslapis.',
 'watchlist-details' => 'Stebima {{PLURAL:$1|$1 puslapis|$1 puslapiai|$1 puslapių}} neskaičiuojant aptarimų puslapių.',
-'wlheader-enotif' => 'El. pašto priminimai yra įjungti.',
+'wlheader-enotif' => 'El. pašto pranešimai yra įjungti.',
 'wlheader-showupdated' => "Puslapiai pakeisti nuo tada, kai paskutinį kartą apsilankėte juose, yra pažymėti '''pastorintai'''",
 'watchmethod-recent' => 'tikrinami naujausi stebimųjų puslapių pakeitimai',
 'watchmethod-list' => 'ieškoma naujausių keitimų stebimuose puslapiuose',
@@ -2295,7 +2348,7 @@ Dabar veikiančių puslapių apsaugų sąrašą rasite [[Special:ProtectedPages|
 'protect-default' => 'Leisti visiems naudotojams',
 'protect-fallback' => 'Reikalauti „$1“ teisės',
 'protect-level-autoconfirmed' => 'Blokuoti naujai prisiregistravusius ir neregistruotus naudotojus',
-'protect-level-sysop' => 'Tik administratoriai',
+'protect-level-sysop' => 'Leisti tik administratoriams',
 'protect-summary-cascade' => 'pakopinė apsauga',
 'protect-expiring' => 'baigia galioti $1 (UTC)',
 'protect-expiring-local' => 'baigia galioti $1',
@@ -2391,12 +2444,12 @@ $1',
 'blanknamespace' => '(Pagrindinė)',
 
 # Contributions
-'contributions' => 'Naudotojo indėlis',
+'contributions' => '{{GENDER:$1|Naudotojo}} įndėlis',
 'contributions-title' => '{{GENDER:$1|Naudotojo|Naudotojos}} $1 indėlis',
-'mycontris' => 'Mano įnašas',
+'mycontris' => 'Įnašai',
 'contribsub2' => 'Naudotojo $1 ($2)',
 'nocontribs' => 'Jokie keitimai neatitiko šių kriterijų.',
-'uctop' => ' (paskutinis)',
+'uctop' => '(dabartinis)',
 'month' => 'Nuo mėnesio (ir anksčiau):',
 'year' => 'Nuo metų (ir anksčiau):',
 
@@ -2434,7 +2487,7 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
 'whatlinkshere-hideredirs' => '$1 nukreipimus',
 'whatlinkshere-hidetrans' => '$1 įtraukimus',
 'whatlinkshere-hidelinks' => '$1 nuorodas',
-'whatlinkshere-hideimages' => '$1 paveikslėlių nuorodos',
+'whatlinkshere-hideimages' => '$1 failų nuorodos',
 'whatlinkshere-filters' => 'Filtrai',
 
 # Block/unblock
@@ -2735,6 +2788,7 @@ Aplankykite [//www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją
 'thumbnail-more' => 'Padidinti',
 'filemissing' => 'Dingęs failas',
 'thumbnail_error' => 'Klaida kuriant sumažintą paveikslėlį: $1',
+'thumbnail_error_remote' => 'Klaidos pranešimas iš $1: $2',
 'djvu_page_error' => 'DjVu puslapis nepasiekiamas',
 'djvu_no_xml' => 'Nepavyksta gauti XML DjVu failui',
 'thumbnail-temp-create' => 'Negalima sukurti laikinos failo miniatiūros',
@@ -2756,6 +2810,7 @@ Visi tarpprojektiniai importo veiksmai yra registruojami  [[Special:Log/import|i
 'import-interwiki-templates' => 'Įtraukti visus šablonus',
 'import-interwiki-submit' => 'Importuoti',
 'import-interwiki-namespace' => 'Paskirties vardų sritis:',
+'import-interwiki-rootpage' => 'Paskirties namų puslapis (pasirinktinai):',
 'import-upload-filename' => 'Failo pavadinimas:',
 'import-comment' => 'Komentaras:',
 'importtext' => 'Prašome eksportuoti iš projekto-šaltinio failo, naudojant [[Special:Export|eksportavimo pagalbininką.]]
@@ -2788,6 +2843,7 @@ Išsaugokite jį savo kompiuteryje ir įkelkite jį čia.',
 'import-error-interwiki' => 'Puslapis "$1" nebuvo įkeltas, kadangi jo pavadinimas yra rezervuotas išorinei nuorodai (interviki).',
 'import-error-special' => 'Puslapis "$1" nebuvo įkeltas, kadangi jis priklauso specialiai vardų sričiai, kurioje yra negalimi puslapiai.',
 'import-error-invalid' => 'Puslapis "$1" nebuvo įkeltas, kadangi jo vardas yra neteisingas.',
+'import-rootpage-invalid' => 'Duotas šaknų puslapis yra blogas pavadinimas.',
 
 # Import log
 'importlogpage' => 'Importavimų sąrašas',
@@ -2937,6 +2993,7 @@ Leidžia pridėti atmetimo priežastį komentaruose',
 'pageinfo-authors' => 'Skirtingų autorių skaičius',
 'pageinfo-recent-edits' => 'Paskutinųjų keitimų skaičius (per $1 laikotarpį)',
 'pageinfo-recent-authors' => 'Pastarųjų skirtingų redaguotojų skaičius',
+'pageinfo-magic-words' => 'Magiškas(-i) {{PLURAL:$1|žodis|žodžiai}} ($1)',
 'pageinfo-toolboxlink' => 'Puslapio informacija',
 'pageinfo-redirectsto' => 'Nukreipimai į',
 'pageinfo-redirectsto-info' => 'informacija',
@@ -2998,6 +3055,7 @@ Jį paleidus jūsų sistema gali būti pažeista.",
 'file-info-size-pages' => '$1 × $2 taškų, failo dydis: $3, MIME tipas: $4, $5 {{PLURAL:$5|page|pages}}',
 'file-nohires' => 'Geresnė raiška negalima.',
 'svg-long-desc' => 'SVG failas, formaliai $1 × $2 taškų, failo dydis: $3',
+'svg-long-desc-animated' => 'Animuotas SVG failas, formaliai $1 × $2 pikselių, failo dydis: $3',
 'svg-long-error' => 'Neleistinas SVG failas: $1',
 'show-big-image' => 'Pilna raiška',
 'show-big-image-preview' => 'Sumažintos iliustracijos dydis: $1 .',
@@ -3026,9 +3084,25 @@ Jį paleidus jūsų sistema gali būti pažeista.",
 'minutes' => '{{PLURAL:$1|$1 minutę|$1 minutes|$1 minučių}}',
 'hours' => '{{PLURAL:$1|$1 valandą|$1 valandas|$1 valandų}}',
 'days' => '{{PLURAL:$1|$1 dieną|$1 dienas|$1 dienų}}',
+'weeks' => '{{PLURAL:$1|$1 savaitė|$1 savaitės}}',
+'months' => '{{PLURAL:$1|$1 mėnuo|$1 mėnesiai}}',
+'years' => '{{PLURAL:$1|$1 metai}}',
 'ago' => 'prieš $1',
 'just-now' => 'tik dabar',
 
+# Human-readable timestamps
+'hours-ago' => 'prieš $1 {{PLURAL:$1|valandą|valandas|valandų}}',
+'minutes-ago' => 'prieš $1 {{PLURAL:$1|minutę|minutes|minučių}}',
+'seconds-ago' => 'prieš $1 {{PLURAL:$1|sekundę|sekundes|sekundžių}}',
+'monday-at' => 'Pirmadienį $1',
+'tuesday-at' => 'Antradienį $1',
+'wednesday-at' => 'Trečiadienį $1',
+'thursday-at' => 'Ketvirtadienį $1',
+'friday-at' => 'Penktadienį $1',
+'saturday-at' => 'Šeštadienį $1',
+'sunday-at' => 'Sekmadienį $1',
+'yesterday-at' => 'Vakar $1',
+
 # Bad image list
 'bad_image_list' => 'Formatas yra toks:
 
@@ -3653,6 +3727,15 @@ Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
 'version-entrypoints-header-entrypoint' => 'Įėjimo taškas',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-submit' => 'Eiti',
+'redirect-lookup' => 'Peržvalgos:',
+'redirect-value' => 'Vertė:',
+'redirect-user' => 'Naudotojo ID',
+'redirect-revision' => 'Puslapio peržiūra',
+'redirect-file' => 'Failo vardas',
+'redirect-not-exists' => 'Vertė nėra nustatyta',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Ieškoti dublikuotų failų',
 'fileduplicatesearch-summary' => 'Pasikartojančių failų paieška pagal jų kontrolinę sumą.',
@@ -3672,7 +3755,7 @@ Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
  * <span class="mw-specialpagecached">Talpyklinių specialius puslapius (gali būti pasenusius).</span>',
 'specialpages-group-maintenance' => 'Sistemos palaikymo pranešimai',
 'specialpages-group-other' => 'Kiti specialieji puslapiai',
-'specialpages-group-login' => 'Prisijungimas / Registracija',
+'specialpages-group-login' => 'Prisijungti / sukurti paskyrą',
 'specialpages-group-changes' => 'Naujausi keitimai ir istorijos',
 'specialpages-group-media' => 'Informacija apie failus ir jų pakrovimas',
 'specialpages-group-users' => 'Naudotojai ir teisės',
@@ -3742,14 +3825,17 @@ Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
 'htmlform-submit' => 'Siųsti',
 'htmlform-reset' => 'Atšaukti pakeitimus',
 'htmlform-selectorother-other' => 'Kita',
+'htmlform-no' => 'Ne',
+'htmlform-yes' => 'Taip',
+'htmlform-chosen-placeholder' => 'Pasirinkite parinktį',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 su visatekstės paieškos palaikymu',
 'sqlite-no-fts' => '$1 be visatekstės paieškos palaikymo',
 
 # New logging system
-'logentry-delete-delete' => '$1 ištrynė puslapį $3',
-'logentry-delete-restore' => '$1 atkūrė puslapį $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|ištrynė}} puslapį $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|atkūrė}} puslapį $3',
 'logentry-delete-event' => '$1 pakeistas  matomumas {{PLURAL:$5|žurnalo įvykio|$5 žurnalo įvykių}} tarp $3: $4',
 'logentry-delete-revision' => '$1 pakeitė puslapio „$3“ {{PLURAL:$5|versijos|$5 versijų}} matomumą: $4',
 'logentry-delete-event-legacy' => '$1 pakeistas matomumą žurnalo renginiams tarp $3',
@@ -3835,6 +3921,7 @@ Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentar
 'api-error-ok-but-empty' => 'Vidinė klaida: nėra atsakymo iš serverio.',
 'api-error-overwrite' => 'Perrašymas esamą failą neleidžiamas.',
 'api-error-stashfailed' => 'Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.',
+'api-error-publishfailed' => 'Vidinė klaida: serveriui nepavyko paskelbti laikino failo.',
 'api-error-timeout' => 'Serveris neatsakė per numatytą laiką.',
 'api-error-unclassified' => 'Įvyko nežinoma klaida',
 'api-error-unknown-code' => 'Nežinoma klaida: " $1 "',
index 46d2694..720f1d3 100644 (file)
@@ -192,7 +192,6 @@ $messages = array(
 'disclaimers' => 'Daīšmu nūstatejumi',
 'disclaimerpage' => 'Project:Dasaīšonu nūstateišona',
 'edithelp' => 'Paleigs',
-'edithelppage' => 'Help:Pataiseišona',
 'helppage' => 'Help:Turīņs',
 'mainpage' => 'Suoku puslopa',
 'mainpage-description' => 'Suoku puslopa',
@@ -386,7 +385,6 @@ n = nasvareigs lobuojums.',
 'prevn' => 'īprīškejuos {{PLURAL:$1|$1}}',
 'nextn' => 'nuokamuos {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Apsavērt ($1 {{int:pipe-separator}} $2) ($3 vīnā lopā).',
-'searchhelp-url' => 'Help:Turīņs',
 'searchprofile-articles' => 'Rakstīņuos',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 vuords|$2 vuordi|$2 vuordi}})',
 'search-redirect' => '(puoradresiešona nu $1)',
index 7bd9062..51a0c9c 100644 (file)
@@ -253,7 +253,6 @@ $1',
 'disclaimers' => 'Intlawhkhalhna',
 'disclaimerpage' => 'Project: Intlawhkhalhna Dan',
 'edithelp' => 'Siamţhat zirna',
-'edithelppage' => 'Help: Siamţhat dàn',
 'helppage' => 'Help: A chhunga thu awmte',
 'mainpage' => 'Phekpui',
 'mainpage-description' => 'Phekpui',
@@ -503,7 +502,6 @@ I thurûk i thlâk hlawhtling tawh a nih loh pawhin thurûk lailâwk i dil a ni
 
 # Special:PasswordReset
 'passwordreset' => 'Thurûk ziakţha rawh',
-'passwordreset-text' => 'I thurûk thlâk turin ahnuaia lehkha khu dah khat ang che.',
 'passwordreset-legend' => 'Thurûk ziakţha rawh',
 'passwordreset-username' => 'Hmangtu hming:',
 'passwordreset-domain' => 'Huamchin:',
@@ -737,7 +735,6 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'searchmenu-legend' => 'Zawn duhthlanna',
 'searchmenu-exists' => "'''He wiki-ah hian \"[[:\$1]]\" tia koh phêk a awm.'''",
 'searchmenu-new' => "'''[[:$1]] phek hi he wiki-ah hian siam rawh le!'''",
-'searchhelp-url' => 'Help:A chhunga thu awmte',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|He thuhmabet nei phêkte hi zawng rawh]]',
 'searchprofile-articles' => 'A chhunga thu awm',
 'searchprofile-project' => 'Ţanpuina leh hna-hmachhawp phekte',
index c0510ca..eb352d6 100644 (file)
@@ -11,6 +11,7 @@
  * @author Dark Eagle
  * @author FnTmLV
  * @author Geimeris
+ * @author Geitost
  * @author Gleb Borisov
  * @author GreenZeb
  * @author Kaganer
@@ -289,7 +290,6 @@ $1',
 'disclaimers' => 'Saistību atrunas',
 'disclaimerpage' => 'Project:Saistību atrunas',
 'edithelp' => 'Rediģēšanas palīdzība',
-'edithelppage' => 'Help:Rediģēšana',
 'helppage' => 'Help:Saturs',
 'mainpage' => 'Sākumlapa',
 'mainpage-description' => 'Sākumlapa',
@@ -456,7 +456,7 @@ Vari turpināt to izmantot anonīmi, vari <span class='plainlinks'>[$1 atgriezti
 'userlogout' => 'Iziet',
 'notloggedin' => 'Neesi iegājis',
 'userlogin-joinproject' => 'Pievienojieties {{SITENAME}}',
-'nologin' => "Nav lietotājvārda? '''$1'''.",
+'nologin' => 'Nav lietotājvārda? $1.',
 'nologinlink' => 'Reģistrējies',
 'createaccount' => 'Izveidot jaunu lietotāju',
 'gotaccount' => "Tev jau ir lietotājvārds? '''$1'''!",
@@ -930,7 +930,6 @@ $1",
 'searchmenu-legend' => 'Meklēšanas iespējas',
 'searchmenu-exists' => "'''Šajā projektā ir raksts ar nosaukumu \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Izveido rakstu \"[[:\$1]]\" šajā projektā!'''",
-'searchhelp-url' => 'Help:Saturs',
 'searchprofile-articles' => 'Rakstos',
 'searchprofile-project' => 'Palīdzības un projektu lapās',
 'searchprofile-images' => 'Multivides failos',
index f3129ab..7b5e49f 100644 (file)
@@ -386,7 +386,6 @@ $1',
 'disclaimers' => '免責宣',
 'disclaimerpage' => 'Project:免責宣',
 'edithelp' => '助纂塾',
-'edithelppage' => 'Help:纂',
 'helppage' => 'Help:目錄',
 'mainpage' => '卷首',
 'mainpage-description' => '卷首',
@@ -1000,7 +999,6 @@ $1",
 'searchmenu-legend' => '尋選',
 'searchmenu-exists' => "'''在此wiki中有頁為\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''在此wiki上建頁\"[[:\$1]]\"!'''",
-'searchhelp-url' => 'Help:目錄',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|查此首之頁]]',
 'searchprofile-articles' => '容',
 'searchprofile-project' => '助題',
index c2317b3..069c987 100644 (file)
@@ -20,6 +20,7 @@
  * @author Priyanka.rachna.jha
  * @author Rajesh
  * @author Reedy
+ * @author Rillke
  * @author Umeshberma
  * @author Vinitutpal
  */
@@ -264,7 +265,6 @@ $1',
 'disclaimers' => 'अनाधिकार घोषणा',
 'disclaimerpage' => 'Project:अनाधिकार घोषणा',
 'edithelp' => 'संपादन सहयोग',
-'edithelppage' => 'Help:संपादन',
 'helppage' => 'Help: विषय सूची',
 'mainpage' => 'सम्मुख पन्ना',
 'mainpage-description' => 'सम्मुख पृष्ठ',
@@ -461,7 +461,7 @@ $2',
 ई दृढ़ करू जे ज्ञापक सक्रिय अछि, ऐ पन्नाकेँ फेरसँ भारित करू आ फेरसँ प्रयास करू।',
 'noname' => 'अहाँ वैध प्रयोक्तानाम नै देने छी।',
 'loginsuccesstitle' => 'सम्प्रवेश सफल',
-'loginsuccess' => "'''अहाँ सम्प्रवेश केलहुँ {{अन्तर्जाल-पता}} \"\$1\".'''क रूपमे।",
+'loginsuccess' => "'''अहाँ सम्प्रवेश केलहुँ {{SITENAME}} \"\$1\".'''क रूपमे।",
 'nosuchuser' => '"$1" नामसँ कोनो प्रयोक्ता नै अछि।
 प्रयोक्तानाम ब्रह्मक्षर-लघ्वक्षर भेद युक्त अछि।
 अपन ह्रिजै जाँचू, वा [[Special:UserLogin/signup|नव खाता बनाउ]] ।',
@@ -538,10 +538,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'कूटशब्द फेरसँ बनाउ',
-'passwordreset-text' => 'ई-पत्र द्वारा अपन खाता विवरणक स्मरण प्राप्त करबा लेल ऐ फॉर्मकेँ भरू।',
 'passwordreset-legend' => 'कूटशब्द फेरसँ बनाउ',
 'passwordreset-disabled' => 'कूटशब्द फेरसँ बनाएब ऐ विकीपर अक्षम कएल अछि।',
-'passwordreset-pretext' => '{{PLURAL:$1||नीचाँक दत्तांशक एकटा भागक प्रविष्टि करू}}',
 'passwordreset-username' => 'प्रयोक्तानाम',
 'passwordreset-domain' => 'क्षेत्र:',
 'passwordreset-capture' => 'परिणाम ई-पत्र देखू?',
@@ -991,7 +989,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''ऐ विकीपर एकटा पन्ना अछि \"[[:\$1]]\" नामसँ।'''",
 'searchmenu-new' => "''' पन्ना निर्माण \"[[:\$1]]\" ऐ विकीपर !'''",
-'searchhelp-url' => 'Help: विषय सूची',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ऐ उपसर्गक पन्ना सभकेँ देखू]]',
 'searchprofile-articles' => 'अनुक्रम पन्ना सभ',
 'searchprofile-project' => 'सहायता आ परियोजना पन्ना सभ',
index 2ecfa20..cc609e5 100644 (file)
@@ -255,7 +255,6 @@ $1',
 'disclaimers' => 'Pamaidonan',
 'disclaimerpage' => 'Project:Panyangkalan umum',
 'edithelp' => 'Pitulung panyuntingan',
-'edithelppage' => 'Help:Panyuntingan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Kaca Utama',
 'mainpage-description' => 'Kaca Utama',
@@ -538,10 +537,8 @@ Rika ndeyan  uwis kasil ngganti tembung sandhine Rika utawa wis njaluk tembung s
 
 # Special:PasswordReset
 'passwordreset' => "Tembung sandhi di-''reset''",
-'passwordreset-text' => 'Lengkapi formulir kiye ben nampa imel ngelingna detil akune Rika.',
 'passwordreset-legend' => "Tembung sandhi di-''reset''",
 'passwordreset-disabled' => "''Reset'' tembung sandhi wis dipateni nang wiki kiye.",
-'passwordreset-pretext' => '{{PLURAL:$1||Lebokna salah siji data nang ngisor kiye}}',
 'passwordreset-username' => 'Jeneng panganggo:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Deleng imel hasile?',
@@ -863,7 +860,6 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'searchmenu-legend' => 'Pilihan panggoletan',
 'searchmenu-exists' => "''' Ana kaca nganggo jeneng \"[[:\$1]]\" nang wiki kiye.'''",
 'searchmenu-new' => "'''Gawe kaca \"[[:\$1]]\" nang wiki kiye!'''",
-'searchhelp-url' => 'Help:Isi',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Deleng daftar kaca sing nganggo tembung-wiwitan kiye]]',
 'searchprofile-articles' => 'Isine kaca',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
index 283a85f..99c4cd9 100644 (file)
@@ -380,7 +380,6 @@ $1',
 'disclaimers' => 'Видешинь корхтаматне',
 'disclaimerpage' => 'Project:Пря видешинь корхнема',
 'edithelp' => 'Петнемань лезкс',
-'edithelppage' => 'Help:Петнема',
 'helppage' => 'Help:Лопань потмоц',
 'mainpage' => 'Пря лопа',
 'mainpage-description' => 'Пря лопа',
@@ -654,10 +653,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Полафтомс сувама валцень',
-'passwordreset-text' => 'Эряви пяшкодемс тя формать е-сёрма сёрматфтомацень колга сявоманди.',
 'passwordreset-legend' => 'Полафтомс сувама валцень',
 'passwordreset-disabled' => 'Сувама валсь аф полафтови тя викить эса.',
-'passwordreset-pretext' => '{{PLURAL:$1||Тяштьк содама пялькснень эзда фкя алу}}',
 'passwordreset-username' => 'Тиить лемоц',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Ваномс мекольце е-сёрма?',
@@ -999,7 +996,6 @@ $3 макссь туфталсь - ''$2''",
 'searchmenu-legend' => 'Вешендема арафнематне',
 'searchmenu-exists' => "'''Тя Викиса ули лопась \"[[:\$1]]\" лем мархта'''",
 'searchmenu-new' => "'''Ушедомс лопась \"[[:\$1]]\" тя Викиса!'''",
-'searchhelp-url' => 'Help:Лопань потмоц',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Мумс лопат тя валынголькссь мархта]]',
 'searchprofile-articles' => 'Потмонь лопат',
 'searchprofile-project' => 'Лезкс эди проектонь лопат',
index eccb360..07e8e78 100644 (file)
@@ -468,7 +468,6 @@ $1',
 'disclaimers' => 'Fampitandremana',
 'disclaimerpage' => 'Project:General disclaimer',
 'edithelp' => 'Fanoroana',
-'edithelppage' => 'Help:Endritsoratra',
 'helppage' => 'Help:Fanoroana',
 'mainpage' => 'Fandraisana',
 'mainpage-description' => 'Fandraisana',
@@ -1266,7 +1265,6 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'searchmenu-legend' => 'Safidy mikasika ny fitadiavana',
 'searchmenu-exists' => "'''Misy pejy mitondra anarana « [[:$1]] » eto amin'ity wiki ity'''",
 'searchmenu-new' => "'''Hanamboatra ny pejy « [[:$1|$1]] » eto amin'ity wiki ity !'''",
-'searchhelp-url' => 'Help:Fanoroana',
 'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Hitady pejy manomboka amin'io tovona io]]",
 'searchprofile-articles' => 'Pejy misy votoatiny',
 'searchprofile-project' => 'Pejy fanampiana sy pejy tetikasa',
index a98597c..2c9c974 100644 (file)
@@ -22,8 +22,8 @@ $namespaceNames = array(
        NS_SPECIAL          => 'Лӱмын_ыштыме',
        NS_TALK             => 'Каҥашымаш',
        NS_USER             => 'Пайдаланыше',
-       NS_USER_TALK        => 'Пайдаланышын_каҥашымаш',
-       NS_PROJECT_TALK     => '$1ын_каҥашымаш',
+       NS_USER_TALK        => 'Пайдаланышын_каҥашымашыже',
+       NS_PROJECT_TALK     => '$1ын_каҥашымашыже',
        NS_FILE             => 'Файл',
        NS_FILE_TALK        => 'Файл_шотышто_каҥашымаш',
        NS_TEMPLATE         => 'Кышкар',
@@ -53,6 +53,8 @@ $namespaceAliases = array(
        'Обсуждение_категории'               => NS_CATEGORY_TALK,
 
        // Namspace changes
+       'Пайдаланышын_каҥашымаш'    => NS_USER_TALK,
+       '$1ын_каҥашымаш'            => NS_PROJECT_TALK,
        'Файлын_каҥашымаш'          => NS_FILE_TALK,
        'Ямдылык'                   => NS_TEMPLATE,
        'Ямдылык_шотышто_каҥашымаш' => NS_TEMPLATE_TALK,
@@ -284,7 +286,6 @@ $messages = array(
 'disclaimers' => 'Вуйшиймаш деч кораҥмаш',
 'disclaimerpage' => 'Project:Вуйшиймаш деч кораҥмаш',
 'edithelp' => 'Тӧрлатымаш полыш',
-'edithelppage' => 'Help:Тӧрлымаш',
 'helppage' => 'Help:Полшык',
 'mainpage' => 'Тӱҥ лаштык',
 'mainpage-description' => 'Тӱҥ лаштык',
@@ -329,7 +330,7 @@ $messages = array(
 'nstab-category' => 'Категорий',
 
 # Main script and global functions
-'nosuchspecialpage' => 'Тигай лӱмын-ыштыме лаштык уке',
+'nosuchspecialpage' => 'Тыгай спецлаштык уке.',
 
 # General errors
 'error' => 'Йоҥылыш',
@@ -529,7 +530,6 @@ $messages = array(
 'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|возымаш|возымашым}} ончыкташ',
 'viewprevnext' => 'Ончал ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-new' => "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
-'searchhelp-url' => 'Help:Вуйлымаш',
 'searchprofile-articles' => 'Возымо лаштык-влак',
 'searchprofile-project' => 'Полыш да проект лаштык',
 'searchprofile-images' => 'Мультимедий',
@@ -636,7 +636,7 @@ $messages = array(
 'action-edit' => 'тиде лаштыкым тӧрлаташ',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'nchanges' => '$1 {{PLURAL:$1|тӧрлатымаш}}',
 'recentchanges' => 'Пытартыш тӧрлатымаш-влак',
 'recentchanges-legend' => 'Пытартыш тӧрлатымаш-влакын келыштарымашышт',
 'recentchanges-summary' => 'Тиде лаштыкыште пытартыш тӧрлатымашым шекланаш.',
@@ -669,7 +669,7 @@ $messages = array(
 'recentchangeslinked' => 'Ваш кылдалтше тӧрлатымаш-влак',
 'recentchangeslinked-feed' => 'Ваш кылдалтше тӧрлатымаш-влак',
 'recentchangeslinked-toolbox' => 'Ваш кылдалтше тӧрлатымаш-влак',
-'recentchangeslinked-title' => '"$1" лаштыклан кылдалтше тӧрлатымаш-влак',
+'recentchangeslinked-title' => '"$1" лаштык дене кылдалтше тӧрлатымаш-влак',
 'recentchangeslinked-noresult' => 'Ончыктымо пагытыште кылдалтше лаштыклаште вашталтыш лийын огыл.',
 'recentchangeslinked-summary' => "Это список недавних изменений в страницах, на которые ссылается указанная страница (или входящих в указанную категорию).
 Страницы, входящие в [[Special:Watchlist|ваш список наблюдения]] '''выделены'''.",
@@ -740,7 +740,7 @@ $messages = array(
 'statistics-views-peredit' => 'Ик тӧрлатымашлан ончымо',
 'statistics-users' => 'Регистрацийым эртыше [[Special:ListUsers|пайдаланыше-влак]]',
 'statistics-users-active' => 'Чӱчкыдын пайдаланыше-влак',
-'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|кечыште|$1 кечыште}} иктаж-мом ыштыше пайаланыше-влак',
+'statistics-users-active-desc' => 'Ð\9fÑ\8bÑ\82аÑ\80Ñ\82Ñ\8bÑ\88 {{PLURAL:$1|кеÑ\87Ñ\8bÑ\88Ñ\82е|$1 ÐºÐµÑ\87Ñ\8bÑ\88Ñ\82е}} Ð¸ÐºÑ\82аж-мом Ñ\8bÑ\88Ñ\82Ñ\8bÑ\88е Ð¿Ð°Ð¹Ð´Ð°Ð»Ð°Ð½Ñ\8bÑ\88е-влак',
 'statistics-mostpopular' => 'Эн чӱчкыдын ончымо лаштык-влак',
 
 'brokenredirects' => 'Пудыртымо вес вере колтымаш-влак',
@@ -841,7 +841,7 @@ $messages = array(
 Пеҥгыдемде тидым [[{{MediaWiki:Policy-url}}|правил]] почеш ыштыметым да, мо тидын деч вара лиймым, умылыметым.',
 'actioncomplete' => 'Ыштыме',
 'deletedtext' => '«$1» шӧрымӧ.
\9eнÑ\87о $2 Ð¿Ñ\8bÑ\82аÑ\80Ñ\82Ñ\8bÑ\88 Ñ\88Ó§Ñ\80Ñ\8bмӧ-влак Ð»Ó±Ð¼ÐµÑ\80 Ð³Ñ\8bÑ\87.',
¨Ó§Ñ\80Ñ\8bмаÑ\88 Ð»Ó±Ð¼ÐµÑ\80 Ð³Ñ\8bÑ\87 $2лан Ð¾Ð½Ñ\87о.',
 'dellogpage' => 'Шӧрымӧ нерген журнал',
 'deletionlog' => 'шӧрымӧ нерген журнал',
 'deletecomment' => 'Амал:',
@@ -1017,7 +1017,7 @@ $messages = array(
 'tooltip-n-randompage' => 'Лаштыкым чокым ойыраш',
 'tooltip-n-help' => 'Википедийым кучылтмо да тӧрлатыме шотышто полшык.',
 'tooltip-t-whatlinkshere' => 'Тышке кондышо лаштык-влакын лӱмерышт',
-'tooltip-t-recentchangeslinked' => 'Тиде лаштык кылдалтше пытартыш тӧрлатымаш-влак',
+'tooltip-t-recentchangeslinked' => 'Тиде Ð»Ð°Ñ\88Ñ\82Ñ\8bк Ð´ÐµÐ½Ðµ ÐºÑ\8bлдалÑ\82Ñ\88е Ð¿Ñ\8bÑ\82аÑ\80Ñ\82Ñ\8bÑ\88 Ñ\82Ó§Ñ\80лаÑ\82Ñ\8bмаÑ\88-влак',
 'tooltip-feed-rss' => 'Тиде лаштыклан RSS-кыл',
 'tooltip-feed-atom' => 'Тиде лаштыклан Atom-кыл',
 'tooltip-t-contributions' => 'Пайдаланышын ыштыме пашажым ончалаш',
index a7f4f40..c7790fd 100644 (file)
 $fallback = 'id';
 
 $namespaceNames = array(
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Istimewa',
+       NS_TALK             => 'Maota',
+       NS_USER             => 'Pangguno',
+       NS_USER_TALK        => 'Rundiang_Pangguno',
+       NS_PROJECT_TALK     => 'Rundiang_$1',
        NS_FILE             => 'Berkas',
+       NS_FILE_TALK        => 'Rundiang_Berkas',
+       NS_MEDIAWIKI        => 'MediaWiki',
+       NS_MEDIAWIKI_TALK   => 'Rundiang_MediaWiki',
        NS_TEMPLATE         => 'Templat',
+       NS_TEMPLATE_TALK    => 'Rundiang_Templat',
+       NS_HELP             => 'Bantuan',
+       NS_HELP_TALK        => 'Rundiang_Bantuan',
+       NS_CATEGORY         => 'Kategori',
+       NS_CATEGORY_TALK    => 'Rundiang_Kategori',
+);
+
+$namespaceAliases = array(
+       # Indonesian namespaces
+       'Istimewa'              => NS_SPECIAL,
+       'Pembicaraan'           => NS_TALK,
+       'Pengguna'              => NS_USER,
+       'Pembicaraan_Pengguna'  => NS_USER_TALK,
+       'Pembicaraan_$1'        => NS_PROJECT_TALK,
+       'Berkas'                => NS_FILE,
+       'Pembicaraan_Berkas'    => NS_FILE_TALK,
+       'Pembicaraan_MediaWiki' => NS_MEDIAWIKI_TALK,
+       'Templat'               => NS_TEMPLATE,
+       'Pembicaraan_Templat'   => NS_TEMPLATE_TALK,
+       'Bantuan'               => NS_HELP,
+       'Pembicaraan_Bantuan'   => NS_HELP_TALK,
+       'Kategori'              => NS_CATEGORY,
+       'Pembicaraan_Kategori'  => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
@@ -227,7 +259,7 @@ $messages = array(
 'morenotlisted' => 'Salabiahnyo...',
 'mypage' => 'Laman',
 'mytalk' => 'Maota',
-'anontalk' => 'Diskusi IP ko',
+'anontalk' => 'Rundiang IP ko',
 'navigation' => 'Navigasi',
 'and' => '&#32;jo',
 
@@ -333,7 +365,6 @@ $1',
 'disclaimers' => 'Sanggahan umum',
 'disclaimerpage' => 'Project:Sanggahan umum',
 'edithelp' => 'Bantuan suntiangan',
-'edithelppage' => 'Help:Panyuntiangan',
 'helppage' => 'Help:Isi',
 'mainpage' => 'Palanta',
 'mainpage-description' => 'Palanta',
@@ -345,7 +376,7 @@ $1',
 
 'badaccess' => 'Kasalahan hak akses',
 'badaccess-group0' => 'Sanak indak diizinkan untuak malakuan tindakan ko.',
-'badaccess-groups' => 'Tindakan nan Sanak nio babateh untuak pangguno dalam {{PLURAL:$2|kalompok}}: $1.',
+'badaccess-groups' => 'Tindakan nan ka Sanak buek babateh hanyo untuak pangguno dalam {{PLURAL:$2|kalompok}}: $1.',
 
 'versionrequired' => 'Dibutuahan MediaWiki versi $1',
 'versionrequiredtext' => 'MediaWiki versi $1 dibutuahan untuak manggunoan laman ko. Caliak [[Special:Version|versi laman]]',
@@ -645,7 +676,9 @@ Sanak mungkin alah berhasil mangganti kato sandi Sanak atau alah maminto kato sa
 'resetpass-abort-generic' => 'Parubahan kato sandi alah dibatalan dek ekstensi.',
 
 # Special:PasswordReset
-'passwordreset' => 'Setel ulang sandi',
+'passwordreset' => 'Setel ulang kato sandi',
+'passwordreset-text-one' => 'Lengkapkan formulir ko untuak manuka baliak kato sandi Sanak.',
+'passwordreset-text-many' => '{{PLURAL:$1|Masuakan data di bawah ko untuak manuka baliak kato sandi Sanak.}}',
 'passwordreset-legend' => 'Tuka baliak kato sandi',
 'passwordreset-disabled' => 'Pangubahan kato sandi alah dimatian di wiki iko.',
 'passwordreset-emaildisabled' => 'Fitur surel alah dimatian pado wiki iko.',
@@ -868,7 +901,7 @@ Sanak dapek baliak dan manyuntiang laman nan alah ado, atau [[Special:UserLogin|
 'sectioneditnotsupported-text' => 'Panyuntiangan bagian indak didukuang di laman suntiang iko.',
 'permissionserrors' => 'Kasalahan Hak Akses',
 'permissionserrorstext' => 'Sanak indak ado hak untuak malakuannyo dek {{PLURAL:$1|alasan}} barikuik:',
-'permissionserrorstext-withaction' => 'Awak indak punyo hak akses untuak $2, karano {{PLURAL:$1|alasan}} barikuik:',
+'permissionserrorstext-withaction' => 'Sanak indak punyo hak akses untuak $2, dek {{PLURAL:$1|alasan}} barikuik:',
 'recreate-moveddeleted-warn' => "'''Ingek: Sanak mambuek ulang suatu laman nan alah dihapuih.'''
 
 Harap ditimbang apo rancak malanjuikan suntiangan Sanak.
@@ -1090,7 +1123,6 @@ $1",
 'searchmenu-legend' => 'Atua pancarian',
 'searchmenu-exists' => "'''Ado laman nan banamo \"[[:\$1]]\" pado wiki ko.'''",
 'searchmenu-new' => "'''Buek laman \"[[:\$1]]\" di wiki ko!'''",
-'searchhelp-url' => 'Help:Isi',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Cari laman jo awalan ko]]',
 'searchprofile-articles' => 'Laman isi',
 'searchprofile-project' => 'Laman Bantuan jo Proyek',
@@ -1362,7 +1394,8 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'nchanges' => '$1 {{PLURAL:$1|parubahan}}',
 'recentchanges' => 'Parubahan baru',
 'recentchanges-legend' => 'Piliahan parubahan baru',
-'recentchanges-summary' => 'Caliak parubahan tabaru pado wiki di laman ko.',
+'recentchanges-summary' => "Caliak parubahan tabaru pado wiki di laman ko.<br />
+;Patunjuak:(<span style=\"color:blue;\">bedo</span>) parubahan, (<span style=\"color:blue;\">sijarah</span>) riwayaik parubahan, '''B''' laman baru, '''b''' suntiangan bot, '''k''' suntiangan ketek, <span class=\"unpatrolled\">!</span> parubahan alun dipatroli,<br /><span style=\"color:green;\">'''(+ ''bita'')'''</span> isi laman batambah, <span style=\"color:red;\">(- ''bita'')</span> isi laman bakurang, (← Ikhtisar otomatih), (→ <span style=\"color:grey;\">Suntiangan bagian</span>)",
 'recentchanges-feed-description' => 'Tamuan parubahan baru dalam umpan wiki ko',
 'recentchanges-label-newpage' => 'Suntiangan ko mambuek laman baru',
 'recentchanges-label-minor' => 'Iko suntiangan ketek',
@@ -1647,7 +1680,7 @@ Judul laman nan <del>dicoret</del> bararti alah dipelokan.',
 'listusers' => 'Daftar pangguno',
 'listusers-editsonly' => 'Tunjuakan hanyo pangguno nan ado jariah',
 'listusers-creationsort' => 'Uruikan manuruik tanggal pandaftaran',
-'usereditcount' => '$1 {{PLURAL:$1|}} suntiangan',
+'usereditcount' => '$1 {{PLURAL:$1|}}suntiangan',
 'usercreated' => '{{GENDER:$3|Dibuek}} pado $1 pukua $2',
 'newpages' => 'Laman baru',
 'newpages-username' => 'Namo pangguno:',
@@ -2062,15 +2095,15 @@ Caliak [[Special:BlockList|daftar sakek]] untuak kasado pangguno nan kini kanai
 # Move page
 'move-page' => 'Pindahan $1',
 'move-page-legend' => 'Pindahkan laman',
-'movepagetext' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan sadonyo data riwayaik ka namo baru. 
-Judua lamo tu ka manjadi laman paraliahan manuju judua nan baru. 
-Awak dapek mampabarui paraliahan-paraliahan nan manuju ka judua lamo sacaro otomatis.
-Kok indak dipabarui sacaro otomatis, pastikan lah dipareso laman ko dari [[Special:DoubleRedirects|paraliahan ganda]] atau [[Special:BrokenRedirects|paralihan rusak]]. Awak batanggung-jawak untuak mamastian bahaso pautan tu taruih manyambuang ka laman nan saaruihnyo.
+'movepagetext' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan kasado data riwayaiknyo ka namo baru. 
+Judua lamo tu ka manjadi laman pangaliahan manuju judua nan baru. 
+Sanak dapek mampabarui pangaliahan-pangaliahan nan manuju ka judua lamo sacaro otomatih.
+Kok indak dipabarui sacaro otomatih, pastikan lah dipareso laman ko dari [[Special:DoubleRedirects|pangaliahan ganda]] atau [[Special:BrokenRedirects|pangaliahan rusak]]. Sanak batangguang jawek untuak mamastian baso pautan tu taruih manyambuang ka laman nan saharuihnyo.
 
-Ingeklah bahaso laman ko '''indak''' ka bapindah apobilo lah ado laman nan manggunoan judua nan baru, kacuali bilo laman tu kosong atau marupoan laman paraliahan dan indak punyo riwayaik suntiangan. Aratinyo awak dapek maubah baliak namo laman ka namo samulo apobilo ado kasalahan, dan bahaso awak indak dapek manimpo laman nan lah ado.
+Ingek baso laman ko '''indak''' ka bapindah apobilo lah ado laman nan manggunoan judua nan baru, kacuali bilo laman tu kosong atau marupoan laman pangaliahan dan indak adoi riwayaik suntiangan. Aratinyo Sanak dapek maubah baliak namo laman tu ka namo lamo apobilo ado kasalahan, dan baso awak indak dapek maimpok laman nan alah ado.
 
 '''Paringatan!''' 
-Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jadi pastikan awak paham akibaik tindakan ko sabalun malanjuikannyo.",
+Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jadi pastian Sanak paham bana akibaik dari tindakan ko sabalun malanjuikannyo.",
 'movepagetext-noredirectfixer' => "Formulir di bawah ko digunoan untuak maubah namo suatu laman dan mamindahan sado data riwayaiknyo ka namo baru. 
 Judul lamo tu ka manjadi laman paraliahan manuju judul nan baru. 
 Sanak dapek mampabarui paraliahan-paraliahan nan manuju ka judul lamo sacaro otomatih.
@@ -2633,7 +2666,7 @@ Situs ko mangalami masalah teknis.',
 'duration-minutes' => '$1 {{PLURAL:$1|minik}}',
 'duration-hours' => '$1 {{PLURAL:$1|jam}}',
 'duration-days' => '$1 {{PLURAL:$1|ari}}',
-'duration-weeks' => '$1 {{PLURAL:$1|minggu}}',
+'duration-weeks' => '{{PLURAL: $1|}}$1 pakan',
 'duration-years' => '$1 {{PLURAL:$1|taun}}',
 'duration-decades' => '$1 {{PLURAL:$1|dekade}}',
 'duration-centuries' => '$1 {{PLURAL:$1|abaik}}',
index 6c7f0a6..379f387 100644 (file)
@@ -552,6 +552,7 @@ $messages = array(
 'create-this-page' => 'Создај ја оваа страница',
 'delete' => 'Избриши',
 'deletethispage' => 'Избриши ја оваа страница',
+'undeletethispage' => 'обнови ја оваа страница',
 'undelete_short' => 'Врати {{PLURAL:$1|едно уредување|$1 уредувања}}',
 'viewdeleted_short' => 'Преглед на {{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}',
 'protect' => 'Заштити',
@@ -605,7 +606,6 @@ $1',
 'disclaimers' => 'Услови на употреба',
 'disclaimerpage' => 'Project:Услови на употреба',
 'edithelp' => 'Помош за уредување',
-'edithelppage' => 'Help:Како се уредуваат страници',
 'helppage' => 'Help:Содржина',
 'mainpage' => 'Главна страница',
 'mainpage-description' => 'Главна страница',
@@ -759,6 +759,8 @@ $2',
 'namespaceprotected' => "Немате дозвола за уредување страници во именскиот простор '''$1'''.",
 'customcssprotected' => 'Немате дозвола да ја менувате оваа страница со CSS бидејќи содржи туѓи лични нагодувања.',
 'customjsprotected' => 'Немате дозвола да ја менувате оваа страница со JavaScript  бидејќи содржи туѓи лични нагодувања.',
+'mycustomcssprotected' => 'Немате дозвола да ја уредувате оваа каскадна стилска страница (CSS).',
+'mycustomjsprotected' => 'Немате дозвола да ја уредувате оваа страница со JavaScript.',
 'ns-specialprotected' => 'Специјални страници не може да се уредуваат.',
 'titleprotected' => "Овој наслов од страна на [[User:$1|$1]] е заштитен и не може да се создаде.
 Причината за тоа е: ''$2''.",
@@ -896,7 +898,7 @@ $2',
 'cannotchangeemail' => 'На ова вики не може да се менува е-пошта на сметките.',
 'emaildisabled' => 'Ова мреж. место не може да праќа е-пошта.',
 'accountcreated' => 'Корисничката сметка е направена',
-'accountcreatedtext' => 'Корисничката сметка „$1“ е направена.',
+'accountcreatedtext' => 'Корисничкта сметка за [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|разговор]]) е направена.',
 'createaccount-title' => 'Создавање на сметка за {{SITENAME}}',
 'createaccount-text' => 'Некој направил сметка со вашата е-поштенска адреса на {{SITENAME}} ($4) со име „$2“ и  лозинка „$3“.
 Би требало сега да се пријавите и да ја промените вашата лозинка.
@@ -1436,7 +1438,6 @@ $1",
 'searchmenu-legend' => 'Нагодувања на пребарувањето',
 'searchmenu-exists' => "'''На ова вики има страница со наслов „[[:$1]]“'''",
 'searchmenu-new' => "Создајте ја страницата „[[:$1]]“ на ова вики!'''",
-'searchhelp-url' => 'Help:Содржина',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прелистување на страници со оваа претставка]]',
 'searchprofile-articles' => 'Статии',
 'searchprofile-project' => 'Помош и проектни страници',
@@ -1627,6 +1628,7 @@ $1",
 'userrights-unchangeable-col' => 'Групи кои не може да ги промените',
 'userrights-irreversible-marker' => '$1*',
 'userrights-conflict' => 'Спротиставеност во корисничките права. Применете ги промените повторно.',
+'userrights-removed-self' => 'Успешно ги отстранивте вашите права. Затоа, повеќе немате пристап на страницава.',
 
 # Groups
 'group' => 'Група:',
@@ -1697,6 +1699,8 @@ $1",
 'right-editusercssjs' => 'Уредување на CSS и JS податотеки на други корисници',
 'right-editusercss' => 'Уредување на CSS податотеки на други корисници',
 'right-edituserjs' => 'Уредување на JS податотеки на други корисници',
+'right-editmyusercss' => 'Уредување на сопствени кориснички каскадни стилски податотеки (CSS)',
+'right-editmyuserjs' => 'Уредување на сопствени кориснички податотеки со JavaScript',
 'right-rollback' => 'Брзо отповикување на уредувањата на последниот корисник што уредувал одредена страница',
 'right-markbotedits' => 'Означување на вратени уредувања како ботовски уредувања',
 'right-noratelimit' => 'Без временски ограничувања на уредување',
@@ -2722,7 +2726,7 @@ $1',
 'mycontris' => 'придонеси',
 'contribsub2' => 'За $1 ($2)',
 'nocontribs' => 'Не се пронајдени промени што одговараат на овој критериум.',
-'uctop' => ' (врв)',
+'uctop' => '(тековно)',
 'month' => 'Од месец (и порано):',
 'year' => 'Од година (и порано):',
 
index 17c41e4..c69a462 100644 (file)
@@ -343,14 +343,14 @@ $messages = array(
 'tog-justify' => 'ഖണ്ഡികകളുടെ അരികുകൾ നേരെയാക്കുക',
 'tog-hideminor' => 'പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തലുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-hidepatrolled' => 'റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
-'tog-newpageshidepatrolled' => 'à´±àµ\8bà´¨àµ\8dà´¤àµ\81à´\9aàµ\81à´±àµ\8dറിയ താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
+'tog-newpageshidepatrolled' => 'à´±àµ\8bà´¨àµ\8dà´¤àµ\81à´\9aàµ\81à´±àµ\8dറപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-extendwatchlist' => 'ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.',
 'tog-usenewrc' => 'സമീപകാല മാറ്റങ്ങൾ, ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എന്നീ താളുകളിലെ വിവരങ്ങൾ താളുകൾക്കനുസരിച്ചുള്ള കൂട്ടങ്ങളായി ഒതുക്കി പ്രദർശിപ്പിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
 'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
-'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
-'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
+'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
+'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
 'tog-editsection' => '[തിരുത്തുക] എന്ന കണ്ണിയുപയോഗിച്ച് ഉപവിഭാഗങ്ങൾ തിരുത്താൻ അനുവദിക്കുക',
-'tog-editsectiononrightclick' => 'ഉപവിഭാഗങ്ങളുടെ തലക്കെട്ടിൽ റൈറ്റ് ക്ലിക്ക് ചെയ്യുന്നതു വഴി തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ്)',
+'tog-editsectiononrightclick' => 'ഉപവിഭാഗങ്ങളുടെ തലക്കെട്ടിൽ റൈറ്റ് ക്ലിക്ക് ചെയ്യുന്നതു വഴി തിരുത്താനനുവദിക്കുക (ജാവാസ്ക്രിപ്റ്റ് ആവശ്യമാണ്)',
 'tog-showtoc' => 'ഉള്ളടക്കപ്പട്ടിക പ്രദർശിപ്പിക്കുക (മൂന്നിൽ കൂടുതൽ ഉപശീർഷകങ്ങളുള്ള താളുകൾക്കു മാത്രം)',
 'tog-rememberpassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
 'tog-watchcreations' => 'ഞാൻ സൃഷ്ടിക്കുന്ന താളുകളും ഞാൻ അപ്‌ലോഡ് ചെയ്യുന്ന പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
@@ -538,6 +538,7 @@ $messages = array(
 'create-this-page' => 'ഈ താൾ സൃഷ്ടിക്കുക',
 'delete' => 'മായ്ക്കുക',
 'deletethispage' => 'ഈ താൾ നീക്കം ചെയ്യുക',
+'undeletethispage' => 'ഈ താൾ പുനഃസ്ഥാപിക്കുക',
 'undelete_short' => '{{PLURAL:$1|ഒരു തിരുത്തൽ|$1 തിരുത്തലുകൾ}} പുനഃസ്ഥാപിക്കുക',
 'viewdeleted_short' => '{{PLURAL:$1|മായ്ക്കപ്പെട്ട ഒരു തിരുത്തൽ|മായ്ക്കപ്പെട്ട $1 തിരുത്തലുകൾ}} കാണുക',
 'protect' => 'സം‌രക്ഷിക്കുക',
@@ -591,7 +592,6 @@ $1',
 'disclaimers' => 'നിരാകരണങ്ങൾ',
 'disclaimerpage' => 'Project:പൊതുനിരാകരണം',
 'edithelp' => 'തിരുത്തൽ സഹായി',
-'edithelppage' => 'Help:തിരുത്തൽ വഴികാട്ടി',
 'helppage' => 'Help:ഉള്ളടക്കം',
 'mainpage' => 'പ്രധാന താൾ',
 'mainpage-description' => 'പ്രധാന താൾ',
@@ -738,6 +738,8 @@ $2',
 'namespaceprotected' => "'''$1''' നാമമേഖലയിലുള്ള താളുകൾ തിരുത്താൻ താങ്കൾക്ക് അനുവാദമില്ല.",
 'customcssprotected' => 'ഈ സി.എസ്.എസ്. താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.',
 'customjsprotected' => 'ഈ ജാവാസ്ക്രിപ്റ്റ് താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.',
+'mycustomcssprotected' => 'ഈ സി.എസ്.എസ്.  താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.',
+'mycustomjsprotected' => 'ഈ ജാവാസ്ക്രിപ്റ്റ് താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.',
 'ns-specialprotected' => 'പ്രത്യേകം എന്ന നാമമേഖലയിൽ വരുന്ന താളുകൾ തിരുത്താനാവുന്നവയല്ല.',
 'titleprotected' => "[[User:$1|$1]] എന്ന ഉപയോക്താവ് ഈ താൾ ഉണ്ടാക്കുന്നതു നിരോധിച്ചിരിക്കുന്നു.
 ''$2'' എന്നതാണു അതിനു കാണിച്ചിട്ടുള്ള കാരണം.",
@@ -769,13 +771,13 @@ $2',
 'yourpassword' => 'രഹസ്യവാക്ക്:',
 'userlogin-yourpassword' => 'രഹസ്യവാക്ക്',
 'userlogin-yourpassword-ph' => 'താങ്കളുടെ രഹസ്യവാക്ക് നൽകുക',
-'createacct-yourpassword-ph' => 'രഹസ്യവാക്ക് നൽകുക',
+'createacct-yourpassword-ph' => 'à´\92à´°àµ\81 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´¨àµ½à´\95àµ\81à´\95',
 'yourpasswordagain' => 'രഹസ്യവാക്ക് ഒരിക്കൽക്കൂടി:',
 'createacct-yourpasswordagain' => 'രഹസ്യവാക്ക് സ്ഥിരീകരിക്കുക',
 'createacct-yourpasswordagain-ph' => 'രഹസ്യവാക്ക് വീണ്ടും നൽകുക',
 'remembermypassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
 'userlogin-remembermypassword' => 'ഞാൻ പ്രവേശിച്ചതായി തന്നെ നിലനിർത്തുക',
-'userlogin-signwithsecure' => 'à´¸àµ\81à´°à´\95àµ\8dà´·à´¿à´¤ à´\95ണൿഷൻ ഉപയോഗിക്കുക',
+'userlogin-signwithsecure' => 'à´¸àµ\81à´°à´\95àµ\8dà´·à´¿à´¤ à´\95à´£à´\95àµ\8dഷൻ ഉപയോഗിക്കുക',
 'securelogin-stick-https' => 'പ്രവേശനത്തിനു ശേഷവും എച്ച്.റ്റി.റ്റി.പി.എസ്. തന്നെ ഉപയോഗിക്കുക',
 'yourdomainname' => 'താങ്കളുടെ ഡൊമെയിൻ:',
 'password-change-forbidden' => 'ഈ വിക്കിയിൽ രഹസ്യവാക്കുകൾ മാറ്റാനാവില്ല.',
@@ -803,7 +805,7 @@ $2',
 'createacct-emailrequired' => 'ഇമെയിൽ വിലാസം',
 'createacct-emailoptional' => 'ഇമെയിൽ വിലാസം (നിർബന്ധമില്ല)',
 'createacct-email-ph' => 'താങ്കളുടെ ഇമെയിൽ വിലാസം നൽകുക',
-'createaccountmail' => 'താതàµ\8dà´\95ാലിà´\95മായ à´\95àµ\8dരമരഹിത à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95ാനനàµ\81വാദà´\82 à´¨àµ½à´\95àµ\81à´\95à´¯àµ\81à´\82 à´\85à´¤àµ\8d à´¤à´¾à´´àµ\86 à´µàµ\8dà´¯à´\95àµ\8dതമാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\87à´®àµ\86യിൽ à´µà´¿à´²à´¾à´¸à´¤àµ\8dതിലàµ\87à´¯àµ\8dà´\95àµ\8dà´\95àµ\8d à´\85യക്കുകയും ചെയ്യുക',
+'createaccountmail' => 'തൽà´\95àµ\8dà´\95ാലà´\82 à´\92à´°àµ\81 à´\86à´\95à´¸àµ\8dമിà´\95രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\89പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´\95à´¯àµ\81à´\82 à´\85à´¤àµ\8d à´¤à´¾à´´àµ\86à´¤àµ\8dതനàµ\8dനിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´\87à´®àµ\86യിൽ à´µà´¿à´²à´¾à´¸à´¤àµ\8dതിലàµ\87à´\95àµ\8dà´\95യക്കുകയും ചെയ്യുക',
 'createacct-realname' => 'ശരിയായ പേര് (നിർബന്ധമില്ല)',
 'createaccountreason' => 'കാരണം:',
 'createacct-reason' => 'കാരണം',
@@ -835,8 +837,8 @@ $2',
 'nosuchusershort' => '"$1" എന്ന പേരിൽ ഒരു ഉപയോക്താവ് ഇല്ല. അക്ഷരങ്ങൾ ഒന്നു കൂടി പരിശോധിക്കുക.',
 'nouserspecified' => 'ഉപയോക്തൃനാമം നിർബന്ധമായും ചേർക്കണം.',
 'login-userblocked' => 'ഈ ഉപയോക്താവ് തടയപ്പെട്ടിരിക്കുന്നു. പ്രവേശനം അനുവദിക്കുന്നില്ല.',
-'wrongpassword' => 'താà´\99àµ\8dà´\95ൾ à´¨àµ½à´\95à´¿à´¯ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´¤àµ\86à´±àµ\8dറാണàµ\8d, à´µàµ\80à´£àµ\8dà´\9fàµ\81à´\82 à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\81à´\95.',
-'wrongpasswordempty' => 'താà´\99àµ\8dà´\95ൾ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´¨àµ½à´\95ിയിരàµ\81à´¨àµ\8dനിലàµ\8dà´². à´µàµ\80à´£àµ\8dà´\9fàµ\81à´\82 à´¶àµ\8dരമിà´\95àµ\8dà´\95àµ\81à´\95.',
+'wrongpassword' => 'രഹസ്യവാക്ക് തെറ്റാണ്, വീണ്ടും ശ്രമിക്കുക.',
+'wrongpasswordempty' => 'രഹസ്യവാക്ക് നൽകിയിരുന്നില്ല. വീണ്ടും ശ്രമിക്കുക.',
 'passwordtooshort' => 'രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.',
 'password-name-match' => 'താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.',
 'password-login-forbidden' => 'ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.',
@@ -863,7 +865,7 @@ $2',
 'cannotchangeemail' => 'അംഗത്വത്തിന്റെ ഇമെയിൽ വിലാസങ്ങൾ ഈ വിക്കിയിൽ മാറ്റാനാവില്ല.',
 'emaildisabled' => 'ഈ സൈറ്റിൽ നിന്ന് ഇമെയിലുകൾ അയയ്ക്കാനാവില്ല.',
 'accountcreated' => 'അംഗത്വം സൃഷ്ടിച്ചിരിക്കുന്നു',
-'accountcreatedtext' => '$1 എന്ന ഉപയോക്താവിനായി അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) എന്ന ഉപയോക്താവിനായി അംഗത്വം സൃഷ്ടിക്കപ്പെട്ടിരിക്കുന്നു.',
 'createaccount-title' => '{{SITENAME}} സംരംഭത്തിൽ അംഗത്വം സൃഷ്ടിക്കൽ',
 'createaccount-text' => '{{SITENAME}} സംരംഭത്തിൽ ($4) താങ്കളുടെ ഇമെയിൽ വിലാസത്തിൽ ആരോ ഒരു അംഗത്വം "$2" എന്ന ഉപയോക്തൃനാമത്തിൽ ഉണ്ടാക്കിയിരിക്കുന്നു (രഹസ്യവാക്ക്: "$3").  താങ്കൾ ഇപ്പോൾ ലോഗിൻ ചെയ്തു രഹസ്യവാക്ക് മാറ്റേണ്ടതാകുന്നു.
 
@@ -1377,7 +1379,6 @@ $1",
 'searchmenu-legend' => 'തിരച്ചിൽ ഉപാധികൾ',
 'searchmenu-exists' => "'''\"[[:\$1]]\" എന്ന തലക്കെട്ടിൽ ഒരു താൾ ഈ വിക്കിയിൽ നിലവിലുണ്ട്'''",
 'searchmenu-new' => "'''ഈ വിക്കിയിൽ \"[[:\$1]]\" താൾ നിർമ്മിക്കുക!'''",
-'searchhelp-url' => 'Help:ഉള്ളടക്കം',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ഈ പൂർവ്വപദങ്ങളുള്ള താളുകൾ ബ്രൗസ് ചെയ്യുക]]',
 'searchprofile-articles' => 'ലേഖനങ്ങളിൽ',
 'searchprofile-project' => 'സഹായം, പദ്ധതി താളുകളിൽ',
@@ -1434,7 +1435,7 @@ $1",
 'prefs-datetime' => 'ദിവസവും സമയവും',
 'prefs-labs' => 'പരീക്ഷണശാലയിൽ തയ്യാറാകുന്ന സൗകര്യങ്ങൾ',
 'prefs-user-pages' => 'ഉപയോക്തൃതാളുകൾ',
-'prefs-personal' => 'à´\85à´¹à´\82',
+'prefs-personal' => 'à´\8eà´¨àµ\8dà´¨àµ\86à´ªàµ\8dപറàµ\8dറി',
 'prefs-rc' => 'സമീപകാല മാറ്റങ്ങൾ',
 'prefs-watchlist' => 'ശ്രദ്ധിക്കുന്നവ',
 'prefs-watchlist-days' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കേണ്ട പരമാവധി ദിവസങ്ങൾ:',
@@ -1563,6 +1564,7 @@ $1",
 'userrights-changeable-col' => 'താങ്കൾക്ക് മാറ്റാവുന്ന സംഘങ്ങൾ',
 'userrights-unchangeable-col' => 'താങ്കൾക്ക് മാറ്റാനാവാത്ത സംഘങ്ങൾ',
 'userrights-conflict' => 'ഉപയോക്തൃ അവകാശങ്ങൾ സമരസപ്പെടായ്കയുണ്ടായി! ദയവായി താങ്കളുടെ മാറ്റങ്ങൾ വീണ്ടും നടപ്പിലാക്കുക.',
+'userrights-removed-self' => 'താങ്കൾ സ്വന്തം അവകാശങ്ങൾ സ്വയം ഒഴിവാക്കിയിരിക്കുന്നു. അതിനാൽ ഈ താൾ ഇനി താങ്കൾക്ക് ലഭ്യമായിരിക്കില്ല.',
 
 # Groups
 'group' => 'സംഘം:',
@@ -1634,6 +1636,8 @@ $1",
 'right-editusercssjs' => 'മറ്റ് ഉപയോക്താക്കളുടെ CSS, JS പ്രമാണങ്ങൾ തിരുത്തുക',
 'right-editusercss' => 'മറ്റ് ഉപയോക്താക്കളുടെ CSS പ്രമാണങ്ങൾ തിരുത്തുക',
 'right-edituserjs' => 'മറ്റ് ഉപയോക്താക്കളുടെ JS പ്രമാണങ്ങൾ തിരുത്തുക',
+'right-editmyusercss' => 'താങ്കളുടെ സ്വന്തം ഉപയോക്തൃ സി.എസ്.എസ്. പ്രമാണങ്ങൾ തിരുത്തുക',
+'right-editmyuserjs' => 'താങ്കളുടെ സ്വന്തം ഉപയോക്തൃ ജാവാസ്ക്രിപ്റ്റ് പ്രമാണങ്ങൾ തിരുത്തുക',
 'right-rollback' => 'ഒരു പ്രത്യേക താളിൽ അവസാനം തിരുത്തൽ നടത്തിയ ഉപയോക്താവിന്റെ തിരുത്തൽ പെട്ടെന്ന് ഒഴിവാക്കുക',
 'right-markbotedits' => 'മുൻപ്രാപനം നടത്തിയ തിരുത്തലുകൾ യാന്ത്രിക തിരുത്തലുകളായി അടയാളപ്പെടുത്തുക',
 'right-noratelimit' => 'പ്രവർത്തനങ്ങൾക്ക് പരിധികൾ ബാധകമല്ല',
@@ -2000,7 +2004,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'filehist-help' => 'ഏതെങ്കിലും തീയതി/സമയ കണ്ണിയിൽ ഞെക്കിയാൽ പ്രസ്തുതസമയത്ത് ഈ പ്രമാണം എങ്ങനെയായിരുന്നു എന്നു കാണാം.',
 'filehist-deleteall' => 'എല്ലാം മായ്ക്കുക',
 'filehist-deleteone' => 'ഇതു മായ്ക്കുക',
-'filehist-revert' => 'à´ªàµ\82ർവàµ\8dവസàµ\8dഥിതിയിലാക്കുക',
+'filehist-revert' => 'à´ªàµ\81à´¨à´\83à´¸àµ\8dഥാപിക്കുക',
 'filehist-current' => 'നിലവിലുള്ളത്',
 'filehist-datetime' => 'തീയതി/സമയം',
 'filehist-thumb' => 'ലഘുചിത്രം',
@@ -2044,7 +2048,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'filerevert-intro' => "താങ്കൾ '''[[Media:$1|$1]]''' യെ, [$3, $2 ഉണ്ടായിരുന്ന $4 പതിപ്പിലേക്കു സേവ് ചെയ്യുകയാണ്‌].",
 'filerevert-comment' => 'കാരണം:',
 'filerevert-defaultcomment' => '$2 ൽ ഉണ്ടായിരുന്ന $1 പതിപ്പിലേക്കു സേവ് ചെയ്തിരിക്കുന്നു',
-'filerevert-submit' => 'à´ªàµ\82ർവàµ\8dവസàµ\8dഥിതിയിലാക്കുക',
+'filerevert-submit' => 'à´ªàµ\81à´¨à´\83à´¸àµ\8dഥാപിക്കുക',
 'filerevert-success' => "'''[[Media:$1|$1]]''' യെ,  [$3, $2 ഉണ്ടായിരുന്ന $4] പതിപ്പിലേക്കു സേവ് ചെയ്തിരിക്കുന്നു.",
 'filerevert-badversion' => 'താങ്കൾ തന്ന സമയവുമായി യോജിക്കുന്ന മുൻ പതിപ്പുകൾ ഒന്നും തന്നെ ഈ പ്രമാണത്തിനില്ല.',
 
@@ -2622,7 +2626,7 @@ $1',
 'mycontris' => 'സംഭാവനകൾ',
 'contribsub2' => '$1 എന്ന ഉപയോക്താവിന്റെ $2.',
 'nocontribs' => 'ഈ മാനദണ്ഡങ്ങളുമായി യോജിക്കുന്ന മാറ്റങ്ങൾ ഒന്നും കണ്ടില്ല.',
-'uctop' => '(à´\85വസാനതàµ\8dà´¤àµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ)',
+'uctop' => '(നിലവിലàµ\81à´³àµ\8dളതàµ\8d)',
 'month' => 'മാസം:',
 'year' => 'വർഷം:',
 
index 1deb5ea..c48647c 100644 (file)
@@ -281,7 +281,6 @@ $1',
 'disclaimers' => 'Татгалзлууд',
 'disclaimerpage' => 'Project:Ерөнхий татгалзал',
 'edithelp' => 'Засвар хийх тухай тусламж',
-'edithelppage' => 'Help:Засварлах',
 'helppage' => 'Help:Агуулга',
 'mainpage' => 'Нүүр хуудас',
 'mainpage-description' => 'Нүүр хуудас',
@@ -573,10 +572,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Нууц үгийг сэргээх',
-'passwordreset-text' => 'Энэхүү маягтыг бөглөж хэрэглэгчийн мэдээллээ аваарай.',
 'passwordreset-legend' => 'Нууц үгээ сэргээх',
 'passwordreset-disabled' => 'Энэ вики-д нууц үгийг сэргээх боломжгүй байна.',
-'passwordreset-pretext' => '{{PLURAL:$1||Доорх өгөгдлийн аль нэг хэсгийг оруулна уу}}',
 'passwordreset-username' => 'Хэрэглэгчийн нэр:',
 'passwordreset-domain' => 'Домайн:',
 'passwordreset-capture' => 'Цахим шуудангийн нууц үг сэргээх шууданг үзэх',
@@ -1050,7 +1047,6 @@ $1",
 'searchmenu-legend' => 'Хайх сонголтууд',
 'searchmenu-exists' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудас байна'''",
 'searchmenu-new' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудсыг үүсгэх!'''",
-'searchhelp-url' => 'Help:Агуулга',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Энэ угтвартай хуудсуудыг гүйлгэж харах]]',
 'searchprofile-articles' => 'Агуулгын хуудсууд',
 'searchprofile-project' => 'Тусламжийн болон төслийн хуудсууд',
index c0d4672..3887fd6 100644 (file)
@@ -562,7 +562,6 @@ $1',
 'disclaimers' => 'उत्तरदायित्वास नकार',
 'disclaimerpage' => 'Project: सर्वसाधारण उत्तरदायकत्वास नकार',
 'edithelp' => 'संपादन साहाय्य',
-'edithelppage' => 'Help:संपादन',
 'helppage' => 'Help:आशय',
 'mainpage' => 'मुखपृष्ठ',
 'mainpage-description' => 'मुखपृष्ठ',
@@ -829,10 +828,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'परवलीचा शब्द पूर्ववत करा',
-'passwordreset-text' => 'तुमच्या खात्याच्या माहितीसंदर्भात विपत्राद्वारे अनुस्मारक येण्यासाठी हा अर्ज पूर्ण भरा.',
 'passwordreset-legend' => 'परवलीचा शब्द पूर्ववत करा',
 'passwordreset-disabled' => 'या विकिवर परवलीचा शब्द पुनर्स्थापित करता येत नाही.',
-'passwordreset-pretext' => '{{PLURAL:$1||खालील माहितीच्या भागांपैकी एक भाग लिहा}}',
 'passwordreset-username' => 'सदस्यनाव:',
 'passwordreset-domain' => 'डोमेन',
 'passwordreset-capture' => 'ईमेल कशी असेल ते बघायचेय ?',
@@ -1273,7 +1270,6 @@ $1",
 'searchmenu-legend' => 'विकल्प शोधा',
 'searchmenu-exists' => "'''या विकिवर \"[[:\$1]]\" या नावाचे पान आहे.'''",
 'searchmenu-new' => "'''या विकिवर \"[[:\$1]]\" हे पान तयार करा!'''",
-'searchhelp-url' => 'Help:साहाय्य पृष्ठ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|या उपसर्गानिशी असलेली पाने न्याहाळा]]',
 'searchprofile-articles' => 'संबंधित पाने',
 'searchprofile-project' => 'साहाय्य व प्रकल्प पाने',
index 0040e09..ebd3a51 100644 (file)
@@ -400,6 +400,7 @@ $messages = array(
 'create-this-page' => 'Cipta laman ini',
 'delete' => 'Hapuskan',
 'deletethispage' => 'Hapuskan laman ini',
+'undeletethispage' => 'Nyahhapuskan halaman ini',
 'undelete_short' => 'Nyahhapus {{PLURAL:$1|satu suntingan|$1 suntingan}}',
 'viewdeleted_short' => 'Papar {{PLURAL:$1|satu|$1}} suntingan dihapuskan',
 'protect' => 'Lindung',
@@ -453,7 +454,6 @@ $1',
 'disclaimers' => 'Penolak tuntutan',
 'disclaimerpage' => 'Project:Penolak tuntutan umum',
 'edithelp' => 'Bantuan menyunting',
-'edithelppage' => 'Help:Menyunting',
 'helppage' => 'Help:Kandungan',
 'mainpage' => 'Laman Utama',
 'mainpage-description' => 'Laman utama',
@@ -603,6 +603,8 @@ Untuk menambah atau menyunting terjemahan untuk semua wiki, sila gunakan projek
 'namespaceprotected' => "Anda tidak mempunyai keizinan untuk menyunting laman dalam ruang nama '''$1'''.",
 'customcssprotected' => 'Anda tidak dibenarkan menyunting laman JavaScript ini kerana ia mengandungi tetapan peribadi pengguna lain.',
 'customjsprotected' => 'Anda tidak dibenarkan menyunting laman JavaScript ini kerana ia mengandungi tetapan peribadi pengguna lain.',
+'mycustomcssprotected' => 'Anda tiada kebenaran untuk menyunting halaman CSS ini.',
+'mycustomjsprotected' => 'Anda tiada kebenaran untuk menyunting halaman JavaScript ini.',
 'ns-specialprotected' => 'Laman khas tidak boleh disunting.',
 'titleprotected' => "Tajuk ini telah dilindungi oleh [[User:$1|$1]] daripada dicipta. Sebab yang diberikan ialah ''$2''.",
 'filereadonlyerror' => 'Fail "$1" tidak dapat diubah suai kerana repositori fail "$2" berada dalam ragam baca sahaja.
@@ -729,7 +731,7 @@ e-mel bagi ciri-ciri berikut tidak boleh dikirim.',
 'cannotchangeemail' => 'Alamat e-mel akaun tidak boleh diubah di wiki ini.',
 'emaildisabled' => 'Tapak ini tidak boleh menghantar e-mel.',
 'accountcreated' => 'Akaun dibuka',
-'accountcreatedtext' => 'Akaun pengguna bagi $1 telah dibuka.',
+'accountcreatedtext' => 'Akaun pengguna [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|bual]]) telah dibuka.',
 'createaccount-title' => 'Pembukaan akaun {{SITENAME}}',
 'createaccount-text' => 'Seseorang telah membuka akaun untuk
 alamat e-mel anda di {{SITENAME}} ($4) dengan nama "$2" dan kata laluan "$3".
@@ -1252,7 +1254,6 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'searchmenu-legend' => 'Pilihan carian',
 'searchmenu-exists' => "* Laman '''[[$1]]'''",
 'searchmenu-new' => "'''Cipta laman \"[[:\$1]]\" di wiki ini!'''",
-'searchhelp-url' => 'Help:Kandungan',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Senarai laman dengan awalan ini]]',
 'searchprofile-articles' => 'Laman kandungan',
 'searchprofile-project' => 'Laman bantuan dan projek',
@@ -1440,6 +1441,7 @@ Tindakan ini tidak boleh dibatalkan.',
 'userrights-unchangeable-col' => 'Kumpulan yang anda tak boleh ubah',
 'userrights-irreversible-marker' => '$1*',
 'userrights-conflict' => 'Hak-hak pengguna bercanggah! Sila terapkan pengubahan anda sekali lagi.',
+'userrights-removed-self' => 'Anda telah berjaya menggugurkan hak-hak sendiri. Oleh yang demikian, anda tidak boleh mengakses halaman ini lagi.',
 
 # Groups
 'group' => 'Kumpulan:',
@@ -1510,6 +1512,8 @@ Tindakan ini tidak boleh dibatalkan.',
 'right-editusercssjs' => 'Menyunting fail CSS dan JavaScript pengguna lain',
 'right-editusercss' => 'Menyunting fail CSS pengguna lain',
 'right-edituserjs' => 'Menyunting fail JavaScript pengguna lain',
+'right-editmyusercss' => 'Menyunting fail CSS pengguna sendiri',
+'right-editmyuserjs' => 'Menyunting fail JavaScript pengguna sendiri',
 'right-rollback' => 'Mengundurkan suntigan terakhir bagi laman tertentu',
 'right-markbotedits' => 'Menanda suntingan yang diundurkan sebagai suntingan bot',
 'right-noratelimit' => 'Tidak dikenakan had kadar penyuntingan',
@@ -2505,7 +2509,7 @@ $1',
 'mycontris' => 'Sumbangan',
 'contribsub2' => 'Oleh $1 ($2)',
 'nocontribs' => 'Tiada sebarang perubahan yang sepadan dengan kriteria-kriteria ini.',
-'uctop' => '(puncak)',
+'uctop' => '(terkini)',
 'month' => 'Sebelum bulan:',
 'year' => 'Sebelum tahun:',
 
index 69bfec7..bb4910a 100644 (file)
@@ -513,7 +513,6 @@ $1",
 'disclaimers' => 'Ċaħdiet',
 'disclaimerpage' => 'Project:Ċaħda ġenerali',
 'edithelp' => 'Gwida',
-'edithelppage' => 'Help:Kif Timmodifika',
 'helppage' => 'Help:Kontenut',
 'mainpage' => 'Il-Paġna prinċipali',
 'mainpage-description' => 'Il-Paġna prinċipali',
@@ -666,9 +665,17 @@ Ir-raġuni li ġiet mogħtija kienet ''$2''.",
 Tista' tkompli tuża' {{SITENAME}} bħala utent anonimu, jew tista' terġa <span class='plainlinks'>[$1 tidħol]</span> bħala l-istess utent jew wieħed differenti.
 Kun af li ċerti paġni jistgħu jkomplu jidhru bħallikieku l-illogjar 'l barra mill-kont qatt ma seħħ, sakemm ma tħassarx il-cache tal-browser.",
 'yourname' => 'Isem tal-utent:',
+'userlogin-yourname' => 'Isem tal-utent',
+'userlogin-yourname-ph' => 'Daħħal l-isem tal-utent tiegħek',
 'yourpassword' => 'Password:',
+'userlogin-yourpassword' => 'Password',
+'userlogin-yourpassword-ph' => 'Daħħal il-password tiegħek',
 'yourpasswordagain' => "Erġa' ikteb il-password:",
+'createacct-yourpasswordagain' => 'Ikkonferma l-password',
+'createacct-yourpasswordagain-ph' => "Erġa' daħħal il-password",
 'remembermypassword' => "Ftakar il-login tiegħi fuq dan il-kompjuter (għal massimu ta' {{PLURAL:$1|ġurnata|$1 ġurnata}})",
+'userlogin-remembermypassword' => 'Żommni fil-kont',
+'userlogin-signwithsecure' => 'Uża konnessjoni sigura',
 'securelogin-stick-https' => "Ibqa' konness fuq l-HTTPS wara l-login",
 'yourdomainname' => 'Id-dominju tiegħek:',
 'externaldberror' => "Kien hemm problema esterna ta' awtentiċitá jew m'għandhekx permess neċċessarju sabiex tagħmel aġġornamenti fuq l-aċċess estern.",
@@ -680,14 +687,27 @@ Kun af li ċerti paġni jistgħu jkomplu jidhru bħallikieku l-illogjar 'l barra
 'logout' => 'Oħroġ',
 'userlogout' => 'oħroġ',
 'notloggedin' => 'Għadek ma dħaltx ġewwa',
+'userlogin-noaccount' => "M'għandekx kont?",
+'userlogin-joinproject' => 'Irreġistra fuq {{SITENAME}}',
 'nologin' => "Għad m'għandekx kont? '''$1'''.",
 'nologinlink' => 'Oħloq kont',
 'createaccount' => 'Oħloq kont',
 'gotaccount' => "Diġa għandhek kont? '''$1'''.",
 'gotaccountlink' => 'Idħol',
 'userlogin-resetlink' => 'Insejt kif tidħol fil-kont tiegħek?',
+'userlogin-resetpassword-link' => 'Irrisettja l-password',
+'helplogin-url' => 'Għajnuna:Kif tirreġistra',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Għajnuna kif tillogja]]',
+'createacct-join' => 'Daħħal l-informazzjoni tiegħek hawn taħt.',
+'createacct-emailoptional' => 'Indirizz elettroniku (fakultattiv)',
+'createacct-email-ph' => 'Daħħal l-indirizz elettroniku tiegħek',
 'createaccountmail' => 'bil-posta elettronika',
 'createaccountreason' => 'Raġuni:',
+'createacct-captcha' => 'Kontroll tas-sigurtà',
+'createacct-imgcaptcha-ph' => 'Daħħal it-test li qed tara hawn fuq',
+'createacct-submit' => 'Oħloq il-kont',
+'createacct-benefit-heading' => '{{SITENAME}} hi magħmula minn persuni bħalek.',
+'createacct-benefit-body2' => 'paġna',
 'badretype' => 'Il-passwords li daħħalt ma jaqblux.',
 'userexists' => 'L-isem tal-utent li daħħalt diġà meħud. Jekk jogħġbok, agħżel isem differenti.',
 'loginerror' => 'Problemi fil-login',
@@ -695,7 +715,7 @@ Kun af li ċerti paġni jistgħu jkomplu jidhru bħallikieku l-illogjar 'l barra
 'nocookiesnew' => "Il-Kont tal-utent għal l-aċċess ġie maħluq, però ma kienx possibli li tagħmel aċċess għal {{SITENAME}} għax il-''cookies'' huma disattivati. Erġa' prova l-aċċess bl-isem tal-utent u l-password wara li tkun attivajt il-''cookies'' tal-''browser''.",
 'nocookieslogin' => "L-aċċess għal {{SITENAME}} jagħmel użu minn ''cookies'', li bħalissa huma disattivati. Jekk jogħġbok erġa' prova idħol wara li tkun attivajt il-''cookies'' fil-browser.",
 'nocookiesfornew' => "Il-kont ma ġiex maħluq, minħabba li ma stajniex nikkonfermaw is-sors. Assigura ruħek li l-cookies huma attivati, u erġa' tella' l-paġna biex terġa' tipprova.",
-'noname' => "Inti ma speċifikajtx isem ta' utent validu.",
+'noname' => 'L-isem tal-utent li tajt mhuwiex validu.',
 'loginsuccesstitle' => "Dħalt b'suċċess",
 'loginsuccess' => "'''Irnexxielek taqbad mas-server ta' {{SITENAME}} bl-isem tal-utent \"\$1\".'''",
 'nosuchuser' => 'M\'hemm l-ebda utent bl-isem ta\' "$1".<br />
@@ -776,10 +796,9 @@ Jista' jkun li int diġà biddilt il-password, jew għamilt rikjesta għal passw
 
 # Special:PasswordReset
 'passwordreset' => 'Irrisettja l-password',
-'passwordreset-text' => 'Imla din il-formola sabiex tirċievi notifikazzjoni permezz tal-posta elettronika tad-dettalji tal-kont tiegħek.',
+'passwordreset-text-one' => 'Imla din il-formola sabiex tirrisettja l-password.',
 'passwordreset-legend' => 'Irrisettja l-password',
 'passwordreset-disabled' => 'L-irrisettjar tal-password fuq din il-wiki ġie diżattivat.',
-'passwordreset-pretext' => "{{PLURAL:$1||Daħħal wieħed mill-biċċiet ta' informazzjoni t'hawn taħt}}",
 'passwordreset-username' => 'Isem tal-utent:',
 'passwordreset-domain' => 'Dominju:',
 'passwordreset-capture' => 'Ara l-kontenut tal-messaġġ?',
@@ -1009,6 +1028,7 @@ Ma ngħatat l-ebda spjegazzjoni.",
 Jidher li din ġiet imħassra.',
 'edit-conflict' => 'Kunflitt tal-editjar.',
 'edit-no-change' => 'Il-modifika li għamilt ġiet injorata, minħabba li ebda bidla ma saret lejn it-test.',
+'postedit-confirmation' => 'Il-modifika tiegħek ġiet salvata.',
 'edit-already-exists' => 'Ma tistax tinħoloq din il-paġna.
 Din teżisti diġà.',
 'editwarning-warning' => 'Jekk tħalli din il-paġna jista\' jwassal sabiex titlef kwalunkwe tibdil li tkun għamilt. Jekk int tinsab fil-kont tiegħek, tista\' tneħħi dan l-avviż fis-sezzjoni "Modifiki" tal-preferenzi tiegħek.',
@@ -1162,7 +1182,8 @@ $1",
 'revdelete-only-restricted' => "L-oġġett bid-data $1 $2 ma jistax jinħeba: ma tistax taħbi oġġetti minn għajnejn l-amministraturi mingħajr ma tagħżel waħda mill-opzjonijiet ta' viżibilità.",
 'revdelete-reason-dropdown' => "*Raġunijiet komuni għat-tħassir
 ** Vjolazzjoni ta' copyright
-** Informazzjoni personali inapproprjata
+** Kumment jew informazzjoni personali mhux xierqa
+** Isem tal-utent mhux xieraq
 ** Informazzjoni potenzjalment libelluża",
 'revdelete-otherreason' => 'Raġuni oħra/addizzjonali:',
 'revdelete-reasonotherlist' => 'Raġuni oħra',
@@ -1237,7 +1258,6 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'searchmenu-legend' => 'Preferenzi għat-tfittxija',
 'searchmenu-exists' => "'''Hemm paġna bl-isem ta' \"[[:\$1]]\" fuq din il-wiki'''",
 'searchmenu-new' => "'''Oħloq il-paġna \"[[:\$1]]\" fuq din il-wiki!'''",
-'searchhelp-url' => 'Help:Kontenut',
 'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Uri l-paġni b'dan il-prefiss]]",
 'searchprofile-articles' => "Paġni ta' kontenut",
 'searchprofile-project' => "Paġni ta' għajnuna u ta' proġett",
@@ -3759,7 +3779,7 @@ Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/
 'logentry-delete-event' => "$1 biddel il-viżibilità ta' {{PLURAL:$5|azzjoni tar-reġistru|$5 azzjonijiet tar-reġistru}} ta' $3: $4",
 'revdelete-content-hid' => 'kontenut moħbi',
 'revdelete-summary-hid' => 'taqsira moħbija',
-'revdelete-uname-hid' => 'isem tal-uten moħbi',
+'revdelete-uname-hid' => 'isem tal-utent moħbi',
 'revdelete-content-unhid' => 'kontenut muri mill-ġdid',
 'revdelete-summary-unhid' => 'taqsira murija mill-ġdid',
 'revdelete-uname-unhid' => 'isem tal-utent muri mill-ġdid',
index 65a4423..3f93d02 100644 (file)
@@ -273,7 +273,6 @@ $messages = array(
 'disclaimers' => 'Abiso de Cuntenido',
 'disclaimerpage' => 'Project:Abiso giral',
 'edithelp' => 'Ajuda de eidiçon',
-'edithelppage' => 'Help:Eiditar',
 'helppage' => 'Help:Cuntenidos',
 'mainpage' => 'Páigina Percipal',
 'mainpage-description' => 'Páigina Percipal',
@@ -553,7 +552,6 @@ Legenda: (atu) = defrénças de la berson atual,
 'prevn' => 'anteriores {{PLURAL:$1|$1}}',
 'nextn' => 'próssimos {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Ber ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Conteúdos',
 'searchprofile-images' => 'Multimédia',
 'searchprofile-everything' => 'Todo',
 'searchprofile-advanced' => 'Abançado',
index 835bb30..19f9cc7 100644 (file)
@@ -284,7 +284,6 @@ $1',
 'disclaimers' => 'သတိပြုစရာများ',
 'disclaimerpage' => 'Project: အထွေထွေ သတိပြုဖွယ်',
 'edithelp' => 'ပြင်​ဆင်​ရန် အ​ကူ​အ​ညီ​',
-'edithelppage' => 'Help: တည်းဖြတ်ခြင်း',
 'helppage' => 'Help: မာတိကာ',
 'mainpage' => 'ဗဟိုစာမျက်နှာ',
 'mainpage-description' => 'ဗ​ဟို​စာ​မျက်​နှာ​',
@@ -667,7 +666,6 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'searchmenu-legend' => 'ရှာဖွေရန် ရွေးချယ်မှု',
 'searchmenu-exists' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာတစ်ခုရှိသည်။'''",
 'searchmenu-new' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာကို ဖန်တီးပါ။'''",
-'searchhelp-url' => 'Help: မာတိကာ',
 'searchprofile-articles' => 'မာတိကာစာမျက်နှာများ',
 'searchprofile-project' => 'အကူအညီနှင့် ပရောဂျက်စာမျက်နှာများ',
 'searchprofile-images' => 'မာလတီမီဒီယာ',
index 0d86814..b527cda 100644 (file)
@@ -414,7 +414,6 @@ $messages = array(
 'disclaimers' => 'Видечинь кортамотне',
 'disclaimerpage' => 'Project:Видечинь прякс кортнема',
 'edithelp' => 'Витнемань-петнемань лезкс',
-'edithelppage' => 'Help:Витнема-петнема',
 'helppage' => 'Help:Лопась мезе кирди',
 'mainpage' => 'Прякслопа',
 'mainpage-description' => 'Прякслопа',
@@ -853,7 +852,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searchmenu-legend' => 'Вешнемань аравтомкат',
 'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
 'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
-'searchhelp-url' => 'Help:Лопась мезе кирди',
 'searchprofile-articles' => 'Потмокс лопат',
 'searchprofile-project' => 'Лезкс ды проекттэ лопат',
 'searchprofile-images' => 'Мультимедия',
index ab1210e..f916991 100644 (file)
@@ -359,7 +359,6 @@ $2، $1',
 'disclaimers' => 'تکذیب‌نومه‌ئون',
 'disclaimerpage' => 'Project:تکذیب‌نومه',
 'edithelp' => 'دچی‌ین رانما',
-'edithelppage' => 'Help:دَچی‌ین',
 'helppage' => 'Help:راهنما',
 'mainpage' => 'گت صفحه',
 'mainpage-description' => 'گت صفحه',
index 5d8c441..04bdfe0 100644 (file)
@@ -285,7 +285,6 @@ $messages = array(
 'currentevents-url' => 'Project:Āxcāncāyōtl',
 'disclaimers' => 'Nahuatīllahtōl',
 'edithelp' => 'Tlapatlaliztechcopa tēpalēhuiliztli',
-'edithelppage' => 'Help:¿Quēn motlahcuiloa cē zāzanilli?',
 'helppage' => 'Help:Tlapiyaliztli',
 'mainpage' => 'Achkàuhìxtlapalli',
 'mainpage-description' => 'Achkàuhìxtlapalli',
@@ -600,7 +599,6 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'viewprevnext' => 'Xiquintta ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Ye ia zāzanilli ītōca \"[[\$1]]\" inīn huiquipan'''",
 'searchmenu-new' => "'''Tihuelīti ticchīhuāz zāzanilli ītōca \"[[:\$1]]\" inīn huiquipan'''",
-'searchhelp-url' => 'Help:Tlapiyaliztli',
 'searchprofile-articles' => 'Tlapiyaliztli zāzanilli',
 'searchprofile-project' => 'Tēpalēhuiliztli īhuān īxiptlahtli āmatl',
 'searchprofile-images' => 'Nepapan media',
index cc74533..0d9f53e 100644 (file)
@@ -262,7 +262,6 @@ $1',
 'disclaimers' => 'Bô-hū-chek seng-bêng',
 'disclaimerpage' => 'Project:It-poaⁿ ê seng-bêng',
 'edithelp' => 'Án-choáⁿ siu-kái',
-'edithelppage' => 'Help:Pian-chi̍p',
 'helppage' => 'Help:Bo̍k-lio̍k',
 'mainpage' => 'Thâu-ia̍h',
 'mainpage-description' => 'Thâu-ia̍h',
@@ -589,7 +588,6 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'nextn' => 'āu {{PLURAL:$1|$1}} hāng',
 'shown-title' => 'Múi ia̍h hián-sī $1 {{PLURAL:$1|kiat-kó|kiat-kó}}',
 'viewprevnext' => 'Khoàⁿ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Bo̍k-lio̍k',
 'searchprofile-articles' => 'Loē-iông ia̍h',
 'searchprofile-images' => 'To-mûi-thé',
 'searchprofile-everything' => 'Só͘-ū ê',
index f96cbda..45bd430 100644 (file)
@@ -360,18 +360,18 @@ $messages = array(
 'tog-diffonly' => 'Ikke vis sideinnhold under differ',
 'tog-showhiddencats' => 'Vis skjulte kategorier',
 'tog-norollbackdiff' => 'Ikke vis diff etter tilbakestilling',
-'tog-useeditwarning' => 'Si ifra dersom jeg forlater en side jeg har gjort redigeringer på men ikke har lagret siden.',
+'tog-useeditwarning' => 'Si ifra dersom jeg forlater en side uten å lagre den.',
 
 'underline-always' => 'Alltid',
 'underline-never' => 'Aldri',
-'underline-default' => 'Nettleserens standardinnstillinger',
+'underline-default' => 'Drakta eller nettleserens standardinnstillinger',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Skrifttype i redigeringsboksen:',
 'editfont-default' => 'Nettleserstandard',
-'editfont-monospace' => 'Skrift med fast bredde',
-'editfont-sansserif' => 'Sans-serif',
-'editfont-serif' => 'Serif',
+'editfont-monospace' => 'Fastbredde skrifttype',
+'editfont-sansserif' => 'Sans-serif skrifttype',
+'editfont-serif' => 'Serif skrifttype',
 
 # Dates
 'sunday' => 'søndag',
@@ -424,18 +424,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'des',
-'january-date' => 'Januar $1',
-'february-date' => 'Februar $1',
-'march-date' => 'Mars $1',
-'april-date' => 'April $1',
-'may-date' => 'Mai $1',
-'june-date' => 'Juni $1',
-'july-date' => 'Juli $1',
-'august-date' => 'August $1',
-'september-date' => 'September $1',
-'october-date' => 'Oktober $1',
-'november-date' => 'November $1',
-'december-date' => 'Desember $1',
+'january-date' => '$1. januar',
+'february-date' => '$1. februar',
+'march-date' => '$1. mars',
+'april-date' => '$1. april',
+'may-date' => '$1. mai',
+'june-date' => '$1. juni',
+'july-date' => '$1. juli',
+'august-date' => '$1. august',
+'september-date' => '$1. september',
+'october-date' => '$1. oktober',
+'november-date' => '$1. november',
+'december-date' => '$1. desember',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategori|Kategorier}}',
@@ -517,6 +517,7 @@ $messages = array(
 'create-this-page' => 'Opprett denne siden',
 'delete' => 'Slett',
 'deletethispage' => 'Slett denne siden',
+'undeletethispage' => 'Legg tilbake siden',
 'undelete_short' => 'Gjenopprett {{PLURAL:$1|én revisjon|$1 revisjoner}}',
 'viewdeleted_short' => 'Vis {{PLURAL:$1|én slettet redigering|$1 slettede redigeringer}}',
 'protect' => 'Beskytt',
@@ -570,7 +571,6 @@ $1',
 'disclaimers' => 'Forbehold',
 'disclaimerpage' => 'Project:Generelle forbehold',
 'edithelp' => 'Redigeringshjelp',
-'edithelppage' => 'Help:Redigering',
 'helppage' => 'Help:Innhold',
 'mainpage' => 'Hovedside',
 'mainpage-description' => 'Hovedside',
@@ -717,6 +717,8 @@ $2',
 'namespaceprotected' => "Du har ikke tillatelse til å redigere sider i navnerommet '''$1'''.",
 'customcssprotected' => 'Du har ikke tillatelse til å redigere denne CSS-siden fordi den inneholder en annen brukers personlige innstillinger.',
 'customjsprotected' => 'Du har ikke tillatelse til å redigere denne JavaScript-siden fordi den inneholder en annen brukers personlige innstillinger.',
+'mycustomcssprotected' => 'Du har ikke rettigheter til å redigere denne CSS-siden.',
+'mycustomjsprotected' => 'Du har ikke rettigheter til å redigere denne Javascript-siden.',
 'ns-specialprotected' => 'Spesialsider kan ikke redigeres.',
 'titleprotected' => "Denne tittelen har blitt låst for oppretting av [[User:$1|$1]].
 Den angitte grunnen er «''$2''».",
@@ -742,7 +744,7 @@ Merk at noen sider kan vise at du fortsatt er logget inn fram til du tømmer mel
 'welcomecreation-msg' => 'Kontoen din har blitt opprettet.
 Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.',
 'yourname' => 'Brukernavn:',
-'userlogin-yourname' => 'Brukernan',
+'userlogin-yourname' => 'Brukernavn',
 'userlogin-yourname-ph' => 'Skriv inn brukernavnet ditt',
 'yourpassword' => 'Passord:',
 'userlogin-yourpassword' => 'Passord',
@@ -774,25 +776,25 @@ Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.
 'gotaccount' => 'Har du allerede en konto? $1.',
 'gotaccountlink' => 'Logg inn',
 'userlogin-resetlink' => 'Har du glemt påloggingsdetaljene dine?',
-'userlogin-resetpassword-link' => 'Tilbakestill passordet dit',
+'userlogin-resetpassword-link' => 'Tilbakestill passordet ditt',
 'helplogin-url' => 'Help:Innlogging',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjelp med innlogging]]',
 'createacct-join' => 'Skriv inn informasjonen din under.',
-'createacct-emailrequired' => 'Email-adresse',
-'createacct-emailoptional' => 'Email-adresse (valgfritt)',
-'createacct-email-ph' => 'Skriv inn email-adressen din',
+'createacct-emailrequired' => 'E-postadresse',
+'createacct-emailoptional' => 'E-postadresse (valgfritt)',
+'createacct-email-ph' => 'Skriv inn e-postadressen din',
 'createaccountmail' => 'Bruk et midlertidig tilfeldig passord, og send det til e-postadressen nedenfor',
-'createacct-realname' => 'Virkelige navn (valgfritt)',
+'createacct-realname' => 'Virkelig navn (valgfritt)',
 'createaccountreason' => 'Årsak:',
 'createacct-reason' => 'Årsak',
 'createacct-reason-ph' => 'Hvorfor lager du en annen bruker',
 'createacct-captcha' => 'Sikkerhetssjekk',
 'createacct-imgcaptcha-ph' => 'Skriv inn teksten du ser ovenfor',
-'createacct-submit' => 'Lag deg en bruker',
-'createacct-benefit-heading' => '{{SITENAME}} er laget av personer som deg.',
-'createacct-benefit-body1' => '{{PLURAL:$1|edit|edits}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|page|pages}}',
-'createacct-benefit-body3' => 'siste {{PLURAL:$1|contributor|contributors}}',
+'createacct-submit' => 'Opprett konto',
+'createacct-benefit-heading' => '{{SITENAME}} er laget av folk som deg.',
+'createacct-benefit-body1' => '{{PLURAL:$1|redigering|redigeringer}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|side|sider}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|nylig bidragsyter|nylige bidragsytere}}',
 'badretype' => 'Passordene samsvarte ikke.',
 'userexists' => 'Brukernavnet er allerede i bruk.
 Velg et annet brukernavn.',
@@ -847,7 +849,7 @@ Skriv inn en fungerende e-postadresse eller tøm feltet.',
 'cannotchangeemail' => 'E-postadresser knyttet til brukerkontoer kan ikke endres på denne wikien.',
 'emaildisabled' => 'Dette nettstedet kan ikke sende e-poster.',
 'accountcreated' => 'Konto opprettet',
-'accountcreatedtext' => 'Brukerkontoen for $1 har blitt opprettet.',
+'accountcreatedtext' => 'Brukerkontoen for [[{{ns:Bruker}}:$1|$1]] ([[{{ns:Brukerdiskusjon}}:$1|diskusjon]]) har blitt opprettet.',
 'createaccount-title' => 'Kontooppretting på {{SITENAME}}',
 'createaccount-text' => 'Noen opprettet en konto for din e-postadresse på {{SITENAME}} ($4) med navnet «$2», med «$3» som passord. Du burde logge inn og endre passordet nå.
 
@@ -884,6 +886,8 @@ Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.'
 
 # Special:PasswordReset
 'passwordreset' => 'Passordresetting',
+'passwordreset-text-one' => 'Fyll ut skjemaet for å tilbakestille passordet',
+'passwordreset-text-many' => '{{PLURAL:$1|Fyll inn et av datafeltene for å tilbakestille ditt passord.}}',
 'passwordreset-legend' => 'Nullstill passord',
 'passwordreset-disabled' => 'Nullstilling av passord er deaktivert på denne wikien.',
 'passwordreset-emaildisabled' => 'E-posttjenester er slått av på denne wikien.',
@@ -1130,6 +1134,7 @@ Slette- og flytteloggen vises nedenfor.',
 'edit-gone-missing' => 'Kunne ikke oppdatere siden fordi den har blitt slettet.',
 'edit-conflict' => 'Redigeringskonflikt.',
 'edit-no-change' => 'Redigeringen din ble ignorert fordi det ikke var noen endringer.',
+'postedit-confirmation' => 'Redigeringen din ble lagret.',
 'edit-already-exists' => 'Kunne ikke opprette ny side fordi den finnes fra før.',
 'defaultmessagetext' => 'Standard meldingstekst',
 'content-failed-to-parse' => 'Klarte ikke å tolke innholdet $2 for innholdsmodellen $1: $3',
@@ -1375,7 +1380,6 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Søkeinnstillinger',
 'searchmenu-exists' => "* Siden '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett siden ''[[:$1]]'' på denne wikien.'''",
-'searchhelp-url' => 'Help:Hjelp',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynner med dette]]',
 'searchprofile-articles' => 'Innholdssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
@@ -1632,6 +1636,8 @@ Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
 'right-editusercssjs' => 'Redigere andre brukeres CSS- og JS-filer',
 'right-editusercss' => 'Redigere andre brukeres CSS-filer',
 'right-edituserjs' => 'Redigere andre brukeres JS-filer',
+'right-editmyusercss' => 'Rediger dine egne CSS-filer',
+'right-editmyuserjs' => 'Rediger dine egne Javascript-filer',
 'right-rollback' => 'Raskt tilbakestille den siste brukeren som har redigert en gitt side',
 'right-markbotedits' => 'Markere tilbakestillinger som robotredigeringer',
 'right-noratelimit' => 'Påvirkes ikke av hastighetsgrenser',
@@ -2379,7 +2385,7 @@ Fremtidige endringer til denne siden og den tilhørende diskusjonssiden blir lis
 'notvisiblerev' => 'Revisjonen er slettet',
 'watchnochange' => 'Ingen av sidene i overvåkningslisten er endret i den valgte perioden.',
 'watchlist-details' => '{{PLURAL:$1|Én side|$1 sider}} på din overvåkningsliste, teller ikke diskusjonssider.',
-'wlheader-enotif' => 'E-postnotifikasjon er slått på.',
+'wlheader-enotif' => 'E-postvarsling er slått på.',
 'wlheader-showupdated' => "Sider som har blitt forandret siden du sist besøkte dem vises i '''fet tekst'''",
 'watchmethod-recent' => 'sjekker siste endringer for sider i overvåkningslisten',
 'watchmethod-list' => 'sjekker siste endringer for sider i overvåkningslisten',
@@ -2946,7 +2952,7 @@ Besøk [//translatewiki.net translatewiki.net] om du ønsker å bidra med overse
 'thumbnail-more' => 'Forstørr',
 'filemissing' => 'Filen mangler',
 'thumbnail_error' => 'Feil under oppretting av miniatyrbilde: $1',
-'thumbnail_error_remote' => 'Feil-melding fra $1:
+'thumbnail_error_remote' => 'Feilmelding fra $1:
 $2',
 'djvu_page_error' => 'DjVu-side ute av rekkevidde',
 'djvu_no_xml' => 'Klarte ikke å hente XML for DjVu-fil',
@@ -3257,24 +3263,24 @@ Ved å åpne den kan systemet ditt kompromitteres.",
 'minutes' => '{{PLURAL:$1|$1 minutt|$1 minutter}}',
 'hours' => '{{PLURAL:$1|$1 time|$1 timer}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dager}}',
-'weeks' => '{{FLERTALL:$1|$1 uke|$1 uker}}',
+'weeks' => '{{PLURAL:$1|$1 uke|$1 uker}}',
 'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
 'years' => '{{PLURAL:$1|$1 år}}',
 'ago' => '$1 siden',
 'just-now' => 'nettopp',
 
 # Human-readable timestamps
-'hours-ago' => '$1 {{FLERTALL:$1|time|timer}} siden',
-'minutes-ago' => '$1 {{FLERTALL:$1|minutt|minutter}} siden',
-'seconds-ago' => '$1 {{FLERTALL:$1|sekund|sekunder}} siden',
-'monday-at' => 'Mandag  $1',
-'tuesday-at' => 'Tirsdag  $1',
-'wednesday-at' => 'Onsdag  $1',
-'thursday-at' => 'Torsdag  $1',
-'friday-at' => 'Fredag  $1',
-'saturday-at' => 'Lørdag  $1',
-'sunday-at' => 'Søndag  $1',
-'yesterday-at' => 'I går  $1',
+'hours-ago' => '$1 {{PLURAL:$1|time|timer}} siden',
+'minutes-ago' => '$1 {{PLURAL:$1|minutt|minutter}} siden',
+'seconds-ago' => '$1 {{PLURAL:$1|sekund|sekunder}} siden',
+'monday-at' => 'Mandag kl. $1',
+'tuesday-at' => 'Tirsdag kl. $1',
+'wednesday-at' => 'Onsdag kl. $1',
+'thursday-at' => 'Torsdag kl. $1',
+'friday-at' => 'Fredag kl. $1',
+'saturday-at' => 'Lørdag kl. $1',
+'sunday-at' => 'Søndag kl. $1',
+'yesterday-at' => 'I går kl. $1',
 
 # Bad image list
 'bad_image_list' => 'Formatet er som følger:
@@ -3918,12 +3924,15 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
+'redirect' => 'Omdiriger via filnavn, bruker, eller versjonsid',
+'redirect-legend' => 'Omdiriger til en fil eller side',
+'redirect-summary' => 'Denne spesialsiden omdirigerer til en fil (hvis den gis et filnavn), en side (hvis den gis et versjonsnummer), eller en brukerside (hvis den gis en nummerisk brukerid).',
 'redirect-submit' => 'Gå',
 'redirect-lookup' => 'Oppslag:',
 'redirect-value' => 'Verdi:',
-'redirect-user' => 'Bruker ID',
-'redirect-revision' => 'Side revisjon',
-'redirect-file' => 'Fil-navn',
+'redirect-user' => 'Bruker-ID',
+'redirect-revision' => 'Sideversjon',
+'redirect-file' => 'Filnavn',
 'redirect-not-exists' => 'Verdi er ikke funnet',
 
 # Special:FileDuplicateSearch
index a8fa3d8..b79cb0b 100644 (file)
@@ -455,7 +455,6 @@ $1",
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Bearbeidenshülp',
-'edithelppage' => 'Help:Ännern',
 'helppage' => 'Help:Hülp',
 'mainpage' => 'Hööftsiet',
 'mainpage-description' => 'Hööftsiet',
@@ -620,7 +619,7 @@ Denk dor an, dat welk Sieden ünner Ümstänn noch jümmer so wiest warrn köön
 'logout' => 'Afmellen',
 'userlogout' => 'Afmellen',
 'notloggedin' => 'Nich anmellt',
-'nologin' => "Wenn du noch keen Brukerkonto hest, denn kannst di anmellen: '''$1'''.",
+'nologin' => 'Wenn du noch keen Brukerkonto hest, denn kannst di anmellen: $1.',
 'nologinlink' => 'Brukerkonto inrichten',
 'createaccount' => 'Nieg Brukerkonto anleggen',
 'gotaccount' => "Hest Du al en Brukerkonto? '''$1'''.",
@@ -1085,7 +1084,6 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'searchmenu-legend' => 'Söökoptionen',
 'searchmenu-exists' => "* Sied '''[[$1]]'''",
 'searchmenu-new' => "'''Stell de Sied „[[:$1]]“ in dit Wiki nee op!'''",
-'searchhelp-url' => 'Help:Hülp',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies Sieden, de mit disse Bookstaven anfangt]]',
 'searchprofile-articles' => 'Inholdsieden',
 'searchprofile-project' => 'Hülp- un Projektsieden',
@@ -1515,7 +1513,7 @@ Wenn du ehr liekers hoochladen wullt, gah trüch un laad de Datei ünner en anne
 'upload-file-error' => 'Internen Fehler',
 'upload-file-error-text' => 'Dat geev en internen Fehler bi dat Anleggen vun en temporäre Datei op’n Server. Segg man en [[Special:ListUsers/sysop|Administrater]] bescheed.',
 'upload-misc-error' => 'Unbekannt Fehler bi dat Hoochladen',
-'upload-misc-error-text' => 'Bi dat Hoochladen geev dat en unbekannten Fehler. Kiek na, wat dor en Fehler in de URL is, wat de Websteed ok löppt un versöök dat denn noch wedder. Wenn dat Problem denn noch jümmer dor is, denn vertell dat en [[Special:ListUsers/sysop|System-Administrater]].',
+'upload-misc-error-text' => 'Bi dat Hoochladen geev dat en unbekannten Fehler. Kiek na, wat dor en Fehler in de URL is, wat de Websteed ok löppt un versöök dat denn noch wedder. Wenn dat Problem denn noch jümmer dor is, denn vertell dat en [[Special:ListUsers/sysop|Administrater]].',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'Kunn de URL nich kriegen',
index d339b04..54392e8 100644 (file)
@@ -548,7 +548,6 @@ $1",
 'disclaimers' => 'Veurbehold',
 'disclaimerpage' => 'Project:Veurbehoud',
 'edithelp' => 'Hulpe mit bewarken',
-'edithelppage' => 'Help:Uutleg',
 'helppage' => 'Help:Inhoud',
 'mainpage' => 'Veurblad',
 'mainpage-description' => 'Veurblad',
@@ -738,7 +737,7 @@ t Kan ween dat der wat ziejen bin die weeregeven wörden asof je an-emeld bin to
 'notloggedin' => 'Niet an-emeld',
 'userlogin-noaccount' => "He'j nog gien gebrukersnaam?",
 'userlogin-joinproject' => 'Over {{SITENAME}}',
-'nologin' => "He'j nog gien gebrukersnaam? '''$1'''.",
+'nologin' => "He'j nog gien gebrukersnaam? $1.",
 'nologinlink' => 'Maak n gebrukersprofiel an',
 'createaccount' => 'Niej gebrukersprofiel anmaken',
 'gotaccount' => "Stao'j al in-eschreven? '''$1'''.",
@@ -839,10 +838,8 @@ Misschien he'j t wachtwoord al ewiezigd of n niej veurlopig wachtwoord an-evreug
 
 # Special:PasswordReset
 'passwordreset' => 'Wachtwoord opniej instellen',
-'passwordreset-text' => 'Vul dit formulier in zoda-w joe netpost kunnen sturen mit de gebrukersgegevens.',
 'passwordreset-legend' => 'Wachtwoord opniej instellen',
 'passwordreset-disabled' => 'Je kunnen op disse wiki joew wachtwoord niet opniej instellen.',
-'passwordreset-pretext' => '{{PLURAL:$1||Voer één van de onderstaonde velden in}}',
 'passwordreset-username' => 'Gebruker:',
 'passwordreset-domain' => 'Domein:',
 'passwordreset-capture' => 'De resulterende netpost bekieken?',
@@ -1315,7 +1312,6 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'searchmenu-legend' => 'Zeukopsies',
 'searchmenu-exists' => "'''Der is n zied mit de naam \"[[:\$1]]\" op disse wiki.'''",
 'searchmenu-new' => "'''De zied \"[[:\$1]]\" op disse wiki anmaken!'''",
-'searchhelp-url' => 'Help:Inhold',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ziednamen mit dit veurvoegsel laoten zien]]',
 'searchprofile-articles' => 'Artikels',
 'searchprofile-project' => 'Hulp- en projektziejen',
@@ -1803,11 +1799,11 @@ Gao weerumme naor t [[Special:Upload/stash/$1|opstuurformulier]] um dit probleem
 'upload-proto-error' => 'Verkeerd protokol',
 'upload-proto-error-text' => 'Um op disse maniere bestaanden toe te voegen mutten webadressen beginnen mit <code>http://</code> of <code>ftp://</code>.',
 'upload-file-error' => 'Interne fout',
-'upload-file-error-text' => 'Bie ons gung der effen wat fout to n tiedelik bestaand op de server an-emaakt wörden. Neem kontakt op mit n [[Special:ListUsers/sysop|systeembeheerder]].',
+'upload-file-error-text' => 'Bie ons gung der effen wat fout to n tiedelik bestaand op de server an-emaakt wörden. Neem kontakt op mit n [[Special:ListUsers/sysop|beheerder]].',
 'upload-misc-error' => 'Onbekende fout bie t inlaojen van joew bestaand',
 'upload-misc-error-text' => 'Der is bie t inlaojen van t bestaand n onbekende fout op-etrejen. 
 Kiek effen nao of de verwiezing t wel döt en probeer t opniej. 
-As t probleem zo blif, neem dan kontakt op mit één van de [[Special:ListUsers/sysop|systeembeheerders]].',
+As t probleem zo blif, neem dan kontakt op mit één van de [[Special:ListUsers/sysop|beheerders]].',
 'upload-too-many-redirects' => 'Der zatten te veule deurverwiezingen in de URL.',
 'upload-unknown-size' => 'Onbekende grootte',
 'upload-http-error' => 'Der is n HTTP-fout op-etrejen: $1',
index 5b2ad6e..c0e8893 100644 (file)
@@ -296,7 +296,6 @@ $1',
 'disclaimers' => 'अस्विकारोक्तिहरु',
 'disclaimerpage' => 'Project:सामान्य अस्वीकारोक्ति',
 'edithelp' => 'सम्पादन सहायता',
-'edithelppage' => 'Help:सम्पादन',
 'helppage' => 'Help:विषयवस्तुहरू',
 'mainpage' => 'मुख्य पृष्ठ',
 'mainpage-description' => 'मुख्य पृष्ठ',
@@ -575,10 +574,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'प्रवेशशव्द पुनः तय गर्ने',
-'passwordreset-text' => 'तपाईंको खाता-विवरणको  इमेल अनुस्मारक प्राप्त गर्न यो फारम पूरा गर्नुहोस्।',
 'passwordreset-legend' => 'प्रवेशशव्द पुनः तय गर्ने',
 'passwordreset-disabled' => 'प्रवेश शव्द पुनः निर्धारण गर्ने व्यवस्था यस विकिमा निस्क्रिय पारिएको छ।',
-'passwordreset-pretext' => '{{PLURAL:$1||तल दिएका आँकड़ाका टुकुरा मध्ये एउटा प्रविष्ट गर्नुहोस्}}',
 'passwordreset-username' => 'प्रयोगकर्ता-नाम:',
 'passwordreset-domain' => 'डोमेन',
 'passwordreset-capture' => 'निस्कने इमेलको नमुना हेर्ने ?',
@@ -1020,7 +1017,6 @@ $1",
 'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ  यो विकीमा रहेको छ'''",
 'searchmenu-new' => "'''यस विकिमा  \"[[:\$1]]\" शीर्षक भएको पृष्ठ बनाउनुहोस् !'''",
-'searchhelp-url' => 'Help:सामग्री',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|पृष्ठहरु प्रिफिक्सले हेर्नुहोस् ]]',
 'searchprofile-articles' => 'सामग्री पृष्ठहरु',
 'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
index 71879af..b2ca1aa 100644 (file)
@@ -18,6 +18,7 @@
  * @author Extended by Hendrik Maryns <hendrik.maryns@uni-tuebingen.de>, March 2007.
  * @author Fryed-peach
  * @author Galwaygirl
+ * @author Geitost
  * @author GerardM
  * @author Hamaryns
  * @author Jens Liebenau
@@ -562,6 +563,7 @@ $messages = array(
 'create-this-page' => 'Deze pagina aanmaken',
 'delete' => 'Verwijderen',
 'deletethispage' => 'Deze pagina verwijderen',
+'undeletethispage' => 'Pagina terugplaatsen',
 'undelete_short' => '$1 {{PLURAL:$1|bewerking|bewerkingen}} terugplaatsen',
 'viewdeleted_short' => '{{PLURAL: $1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
 'protect' => 'Beveiligen',
@@ -615,7 +617,6 @@ $1',
 'disclaimers' => 'Voorbehoud',
 'disclaimerpage' => 'Project:Algemeen voorbehoud',
 'edithelp' => 'Hulp bij bewerken',
-'edithelppage' => 'Help:Bewerken',
 'helppage' => 'Help:Inhoud',
 'mainpage' => 'Hoofdpagina',
 'mainpage-description' => 'Hoofdpagina',
@@ -767,6 +768,8 @@ $2",
 'namespaceprotected' => "U hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
 'customcssprotected' => 'U kunt deze CSS-pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
 'customjsprotected' => 'U kunt deze JavaScriptpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+'mycustomcssprotected' => 'U hebt geen rechten om deze CSS-pagina te bewerken.',
+'mycustomjsprotected' => 'U hebt geen rechten om deze JavaScriptpagina te bewerken.',
 'ns-specialprotected' => 'Pagina\'s in de naamruimte "{{ns:special}}" kunnen niet bewerkt worden.',
 'titleprotected' => "Het aanmaken van deze pagina is beveiligd door [[User:$1|$1]].
 De gegeven reden is ''$2''.",
@@ -911,7 +914,7 @@ Geef een geldig e-mailadres op of laat het veld leeg.',
 'cannotchangeemail' => 'Het e-mailadres voor een gebruiker kan op deze wiki niet gewijzigd worden.',
 'emaildisabled' => 'Deze site kan geen e-mails verzenden.',
 'accountcreated' => 'Gebruiker aangemaakt',
-'accountcreatedtext' => 'De gebruiker $1 is aangemaakt.',
+'accountcreatedtext' => 'De gebruiker [[{{ns:User}}:$1|$1]] is aangemaakt.',
 'createaccount-title' => 'Gebruikers registreren voor {{SITENAME}}',
 'createaccount-text' => 'Iemand heeft een gebruiker op {{SITENAME}} ($4) aangemaakt met de naam "$2" en uw e-mailadres.
 Het wachtwoord voor "$2" is "$3".
@@ -1455,7 +1458,6 @@ Probeer een andere zoekopdracht.',
 'searchmenu-legend' => 'Zoekopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmaken op deze wiki.'''",
-'searchhelp-url' => 'Help:Inhoud',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanamen met dit voorvoegsel weergeven]]',
 'searchprofile-articles' => "Inhoudelijke pagina's",
 'searchprofile-project' => "Hulp- en projectpagina's",
@@ -1717,6 +1719,8 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'right-editusercssjs' => 'De CSS- en JS-bestanden van andere gebruikers bewerken',
 'right-editusercss' => 'De CSS-bestanden van andere gebruikers bewerken',
 'right-edituserjs' => 'De JavaScriptbestanden van andere gebruikers bewerken',
+'right-editmyusercss' => "Uw eigen CSS-pagina's bewerken",
+'right-editmyuserjs' => "Uw eigen JavaScriptpagina's bewerken",
 'right-rollback' => 'Snel de laatste bewerking(en) van een gebruiker van een pagina terugdraaien',
 'right-markbotedits' => 'Teruggedraaide bewerkingen markeren als botbewerkingen',
 'right-noratelimit' => 'Tijdsafhankelijke beperkingen negeren',
@@ -1976,11 +1980,11 @@ Ga terug naar het [[Special:Upload/stash/$1|uploadformulier]] om dit probleem te
 'upload-proto-error-text' => "Uploads via deze methode vereisen URL's die beginnen met <code>http://</code> of <code>ftp://</code>.",
 'upload-file-error' => 'Interne fout',
 'upload-file-error-text' => 'Er is een interne fout opgetreden tijdens het aanmaken van een tijdelijk bestaan op de server.
-Neem contact op met een [[Special:ListUsers/sysop|systeembeheerder]].',
+Neem contact op met een [[Special:ListUsers/sysop|moderator]].',
 'upload-misc-error' => 'Onbekende uploadfout',
 'upload-misc-error-text' => 'Er is tijdens het uploaden een onbekende fout opgetreden.
 Controleer of de URL correct en beschikbaar is en probeer het opnieuw.
-Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop|systeembeheerder]].',
+Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop|moderator]].',
 'upload-too-many-redirects' => 'De URL bevatte te veel doorverwijzingen',
 'upload-unknown-size' => 'Onbekende grootte',
 'upload-http-error' => 'Er is een HTTP-fout opgetreden: $1',
index c9c2cce..d0bc217 100644 (file)
@@ -573,7 +573,6 @@ $1',
 'disclaimers' => 'Atterhald',
 'disclaimerpage' => 'Project:Atterhald',
 'edithelp' => 'Endringshjelp',
-'edithelppage' => 'Help:Endring',
 'helppage' => 'Help:Innhald',
 'mainpage' => 'Hovudside',
 'mainpage-description' => 'Hovudside',
@@ -739,10 +738,13 @@ Gløym ikkje å endra [[Special:Preferences|innstillingane dine for {{SITENAME}}
 'yourpassword' => 'Passord:',
 'userlogin-yourpassword' => 'Passord',
 'userlogin-yourpassword-ph' => 'Skriv inn passordet ditt',
+'createacct-yourpassword-ph' => 'Skriv inn eit passord',
 'yourpasswordagain' => 'Skriv opp att passordet',
+'createacct-yourpasswordagain' => 'Stadfest passord',
+'createacct-yourpasswordagain-ph' => 'Skriv inn passordet på nytt',
 'remembermypassword' => 'Hugs innlogginga mi på denne datamaskinen (høgst {{PLURAL:$1|éin dag|$1 dagar}})',
 'userlogin-remembermypassword' => 'Hald meg innlogga',
-'userlogin-signwithsecure' => 'Logg inn med trygg tenar',
+'userlogin-signwithsecure' => 'Nytt trygg kopling',
 'securelogin-stick-https' => 'Fortset HTTPS-tilkopling etter innlogging.',
 'yourdomainname' => 'Domenet ditt',
 'password-change-forbidden' => 'Du kan ikkje endra passord på denne wikien.',
@@ -756,20 +758,36 @@ Gløym ikkje å endra [[Special:Preferences|innstillingane dine for {{SITENAME}}
 'userlogout' => 'Logg ut',
 'notloggedin' => 'Ikkje innlogga',
 'userlogin-noaccount' => 'Har du ingen konto?',
-'userlogin-joinproject' => 'Vert med {{SITENAME}}',
-'nologin' => "Har du ingen brukarkonto? '''$1'''.",
+'userlogin-joinproject' => 'Vert med på {{SITENAME}}',
+'nologin' => 'Har du ingen brukarkonto? $1.',
 'nologinlink' => 'Registrer deg',
 'createaccount' => 'Opprett ny konto',
 'gotaccount' => "Har du ein brukarkonto? '''$1'''.",
 'gotaccountlink' => 'Logg inn',
 'userlogin-resetlink' => 'Har du gløymd påloggingsopplysingane dine?',
+'userlogin-resetpassword-link' => 'Attendestill passordet ditt',
 'helplogin-url' => 'Help:Innlogging',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjelp med innlogging]]',
+'createacct-join' => 'Skriv inn informasjonen din under.',
+'createacct-emailrequired' => 'E-postadresse:',
+'createacct-emailoptional' => 'E-postadresse (valfritt)',
+'createacct-email-ph' => 'Skriv inn e-postadressa di',
 'createaccountmail' => 'Bruk eit mellombels tilfeldig passord og send det til e-postadressa som er oppgjeven under',
+'createacct-realname' => 'Sant namn (valfritt)',
 'createaccountreason' => 'Årsak:',
+'createacct-reason' => 'Årsak',
+'createacct-reason-ph' => 'Kvifor du lagar ein ny konto',
+'createacct-captcha' => 'Tryggingssjekk',
+'createacct-imgcaptcha-ph' => 'Skriv inn teksten du ser over',
+'createacct-submit' => 'Opprett kontoen din',
+'createacct-benefit-heading' => '{{SITENAME}} er laga av folk som deg.',
+'createacct-benefit-body1' => '{{PLURAL:$1|éi endring|$1 endringar}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|éi side|$1 sider}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|nyleg bidragsytar|nylege bidragsytarar}}',
 'badretype' => 'Passorda du skreiv inn er ikkje like.',
 'userexists' => 'Brukarnamnet er alt i bruk. Vel eit anna brukarnamn.',
 'loginerror' => 'Innloggingsfeil',
+'createacct-error' => 'Kontoopprettingsfeil',
 'createaccounterror' => 'Kunne ikkje oppretta kontoen:  $1',
 'nocookiesnew' => 'Brukarkontoen vart oppretta, men du er ikkje innlogga. {{SITENAME}} bruker informasjonskapslar for å logge inn brukarar,
 nettlesaren din er innstilt for ikkje å godta desse. Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar, kan du logge inn med det nye brukarnamnet og passordet ditt.',
@@ -1319,7 +1337,6 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'searchmenu-legend' => 'Søkjeval',
 'searchmenu-exists' => "* Sida '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett sida «[[:$1|$1]]» på denne wikien.'''",
-'searchhelp-url' => 'Help:Innhald',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sjå gjennom alle sider med denne forstavinga]]',
 'searchprofile-articles' => 'Innhaldssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
@@ -3001,7 +3018,7 @@ Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//trans
 'tooltip-watchlistedit-raw-submit' => 'Oppdater overvakingslista',
 'tooltip-recreate' => 'Ved å trykkje på «Nyopprett» vert sida oppretta på nytt.',
 'tooltip-upload' => 'Start opplastinga',
-'tooltip-rollback' => '«Rulla attende»-knappen rullar med eitt klikk attende endringa(ne) på sida gjorde av den siste bidragsytaren',
+'tooltip-rollback' => '«Rull attende»-knappen rullar med eitt klikk attende endringa(ne) på sida gjorde av den siste bidragsytaren',
 'tooltip-undo' => '«Gjer om» attenderullar endringar og opnar endringsvindauga med førehandsvising. Gjer at ein kan leggje til ei årsak samandragsboksen.',
 'tooltip-preferences-save' => 'Lagra innstillingar',
 'tooltip-summary' => 'Skriv inn eit kort samandrag',
@@ -3789,6 +3806,18 @@ Du skal ha motteke [{{SERVER}}{{SCRIPTPATH}}/COPYING ein kopi av GNU General Pub
 'version-entrypoints-header-entrypoint' => 'Inngangspunkt',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Omdiriger etter filnamn, brukar- eller versjons-ID',
+'redirect-legend' => 'Omdiriger til ei fil eller ei side',
+'redirect-summary' => 'Denne spesialsida omdirigerer til ei fil (med eit filnamn), ei side (med ein versjons-ID) eller ei brukarside (med eit brukartal).',
+'redirect-submit' => 'Gå',
+'redirect-lookup' => 'Sjå etter:',
+'redirect-value' => 'Verdi',
+'redirect-user' => 'Brukar-ID',
+'redirect-revision' => 'Sideversjon',
+'redirect-file' => 'Filnamn',
+'redirect-not-exists' => 'Fann ikkje verdi',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Søk etter duplikatfiler',
 'fileduplicatesearch-summary' => 'Søk etter duplikatfiler basert på hash-verdiane deira.',
@@ -3879,6 +3908,7 @@ Du skal ha motteke [{{SERVER}}{{SCRIPTPATH}}/COPYING ein kopi av GNU General Pub
 'htmlform-selectorother-other' => 'Andre',
 'htmlform-no' => 'Nei',
 'htmlform-yes' => 'Ja',
+'htmlform-chosen-placeholder' => 'Vel ein',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 med støtte for fulltekstsøk',
index 3aa00b7..b933323 100644 (file)
@@ -235,7 +235,6 @@ $messages = array(
 'disclaimers' => 'Hlapa-matsogo',
 'disclaimerpage' => 'Project:Hlapa-Matsogo',
 'edithelp' => 'Thušo ya go fetola',
-'edithelppage' => 'Help:Fetola',
 'helppage' => 'Help:Mateng',
 'mainpage' => 'Letlakala la Pele',
 'mainpage-description' => 'Letlakala la Pele',
@@ -562,7 +561,6 @@ fetola tshenolo',
 'viewprevnext' => 'Lebelela ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Go ena le letlaka la leina la \"[[:\$1]]\" go wiki ye.'''",
 'searchmenu-new' => "'''Hlola letlakala \"[[:\$1]]\" go wiki ye!'''",
-'searchhelp-url' => 'Help:Mateng',
 'searchprofile-articles' => 'Matlakala a diteng',
 'searchprofile-project' => 'Thušo le matlaka a diprojeke',
 'searchprofile-images' => 'Diphatlalatši tša "multi"',
index 5f0838e..fb7e10e 100644 (file)
@@ -400,6 +400,18 @@ $messages = array(
 'oct' => "d'oct",
 'nov' => 'de nov',
 'dec' => 'de dec',
+'january-date' => '$1 genièr',
+'february-date' => '$1 febrièr',
+'march-date' => '$1 març',
+'april-date' => '$1 abril',
+'may-date' => '$1 mai',
+'june-date' => '$1 junh',
+'july-date' => '$1 julhet',
+'august-date' => '$1 agost',
+'september-date' => '$1 setembre',
+'october-date' => '$1 octobre',
+'november-date' => '$1 novembre',
+'december-date' => '$1 decembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categoria|Categorias}}',
@@ -534,7 +546,6 @@ $1",
 'disclaimers' => 'Avertiments',
 'disclaimerpage' => 'Project:Avertiments generals',
 'edithelp' => 'Ajuda',
-'edithelppage' => 'Help:Cossí modificar una pagina',
 'helppage' => 'Help:Acuèlh',
 'mainpage' => 'Acuèlh',
 'mainpage-description' => 'Acuèlh',
@@ -672,7 +683,7 @@ Requèsta : $2',
 'viewyourtext' => "Podètz veire e copiar lo contengut de '''vòstras modificacions''' a aquesta pagina :",
 'protectedinterface' => 'Aquesta pagina provesís de tèxte d’interfàcia pel logicial susaqueste wiki, e es protegida per evitar los abuses.
 Per apondre o modificar de traduccions sus totes los wikis, utilizatz [//translatewiki.net/ translatewiki.net], lo projècte de localizacion de MediaWiki.',
-'editinginterface' => "'''Atencion :''' sètz a editar una pagina utilizada per crear lo tèxte de l’interfàcia del logicial. Los cambiaments se repercutaràn, segon lo contèxte, sus totas o d'unas paginas visiblas pels autres utilizaires. Per las traduccions, vos convidam a utilizar lo projècte MediaWiki d'internacionalizacion dels messatges [//translatewiki.net/wiki/Main_Page?setlang=oc translatewiki.net].",
+'editinginterface' => "'''Atencion :''' sètz a mand de modificar una pagina utilizada per crear lo tèxte de l’interfàcia del logicial. Los cambiaments sus aquesta pagina se repercutaràn sus l'aparéncia de l'interfàcia d'utilizaire pels autres utilizaires d'aqueste wiki. Per apondre o modificar de traduccions per totes los wikis, utilizatz [//translatewiki.net/translatewiki.net], lo projècte MediaWiki d'internacionalizacion dels messatges .",
 'sqlhidden' => '(Requèsta SQL amagada)',
 'cascadeprotected' => "Aquesta pagina es actualament protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta|las paginas seguentas}}, {{PLURAL:$1|qu'es estada protegida|que son estadas protegidas}} amb l’opcion « proteccion en cascada » activada :
 $2",
@@ -698,9 +709,18 @@ Notatz que d'unas paginas pòdon èsser encara afichadas coma s'eratz encara con
 'welcomecreation-msg' => "Vòstre compte d'utilizaire es estat creat.
 Doblidetz pas de modificar [[Special:Preferences|vòstras preferéncias per {{SITENAME}}]].",
 'yourname' => "Nom d'utilizaire :",
+'userlogin-yourname' => "Nom d'utilizaire",
+'userlogin-yourname-ph' => "Picatz vòstre nom d'utilizaire",
 'yourpassword' => 'Vòstre senhal :',
+'userlogin-yourpassword' => 'Senhal',
+'userlogin-yourpassword-ph' => 'Picatz vòstre senhal',
+'createacct-yourpassword-ph' => 'Picatz un senhal',
 'yourpasswordagain' => 'Confirmar lo senhal :',
+'createacct-yourpasswordagain' => 'Confirmatz lo senhal',
+'createacct-yourpasswordagain-ph' => 'Entratz lo senhal tornarmai',
 'remembermypassword' => 'Me reconnectar automaticament a las visitas venentas (al maximum $1 {{PLURAL:$1|jorn|jorns}})',
+'userlogin-remembermypassword' => 'Gardar ma sesilha activa',
+'userlogin-signwithsecure' => 'Utilizar una connexion securizada',
 'securelogin-stick-https' => 'Demorar connectat en HTTPS aprèp la connexion',
 'yourdomainname' => 'Vòstre domeni',
 'password-change-forbidden' => 'Podètz pas modificar los senhals sus aqueste wiki.',
@@ -713,18 +733,38 @@ Doblidetz pas de modificar [[Special:Preferences|vòstras preferéncias per {{SI
 'logout' => 'Se desconnectar',
 'userlogout' => 'Desconnexion',
 'notloggedin' => 'Vos sètz pas identificat(ada)',
+'userlogin-noaccount' => 'Avètz pas de compte ?',
+'userlogin-joinproject' => 'Rejonhètz {{SITENAME}}',
 'nologin' => "Avètz pas un compte ? '''$1'''.",
 'nologinlink' => 'Creatz un compte',
 'createaccount' => 'Crear un compte novèl',
 'gotaccount' => "Ja avètz un compte ? '''$1'''.",
 'gotaccountlink' => 'Identificatz-vos',
 'userlogin-resetlink' => 'Avètz doblidat vòstres detalhs de connexion ?',
+'userlogin-resetpassword-link' => 'Reïnicializar lo senhal',
+'helplogin-url' => 'Help:Connexion',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda a la connexion]]',
+'createacct-join' => 'Entratz vòstras informacions çaijós.',
+'createacct-emailrequired' => 'Adreça electronica',
+'createacct-emailoptional' => 'Adreça de corrièr electronic (facultativa)',
+'createacct-email-ph' => 'Entratz vòstra adreça de corrièr electronic',
 'createaccountmail' => 'Utilizar un senhal aleatòri temporari e lo mandar a l’adreça de corrièl especificada çaijós',
+'createacct-realname' => 'Nom vertadièr (facultatiu)',
 'createaccountreason' => 'Motiu :',
+'createacct-reason' => 'Motiu',
+'createacct-reason-ph' => 'Perqué creatz un autre compte',
+'createacct-captcha' => 'Contraròtle de seguretat',
+'createacct-imgcaptcha-ph' => 'Entratz lo tèxte que vesètz çaisús',
+'createacct-submit' => 'Creatz vòstre compte',
+'createacct-benefit-heading' => '{{SITENAME}} es escrich per de monde coma vos.',
+'createacct-benefit-body1' => '{{PLURAL:$1|cambiament|cambiaments}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pagina|paginas}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|contributor recent|contributors recents}}',
 'badretype' => "Los senhals qu'avètz picats son pas identics.",
 'userexists' => "Lo nom d'utilizaire qu'avètz picat ja es utilizat.
 Causissètz-ne un autre.",
 'loginerror' => "Error d'identificacion",
+'createacct-error' => 'Error al moment de la creacion del compte',
 'createaccounterror' => 'Impossible de crear lo compte : $1',
 'nocookiesnew' => "Lo compte d'utilizaire es estat creat, mas sètz pas connectat. {{SITENAME}} utiliza de cookies per la connexion mas los avètz desactivats. Activatz-los e reconnectatz-vos amb lo meteis nom e lo meteis senhal.",
 'nocookieslogin' => '{{SITENAME}} utiliza de cookies per la connexion mas avètz los cookies desactivats. Activatz-los e reconnectatz-vos.',
@@ -1006,6 +1046,8 @@ Sembla que siá estada suprimida.',
 'edit-already-exists' => 'La pagina novèla a pogut èsser creada .
 Existís ja.',
 'defaultmessagetext' => 'Messatge per defaut',
+'content-failed-to-parse' => "Fracàs de l'analisi del contengut de $2 pel modèl $1: $3",
+'invalid-content-data' => 'Donadas del contengut invalidas',
 'editwarning-warning' => "Quitar aquesta pagina vos farà pèrdre totas las modificacions qu'avètz fachas.
 Se sètz connectat amb vòstre compte, podètz levar aqueste avertiment dins la seccion {{int:prefs-editing}} de vòstras preferéncias.",
 
@@ -1028,6 +1070,13 @@ D'unas inclusions seràn pas efectuadas.",
 'parser-template-loop-warning' => 'Modèl en bocla detectat : [[$1]]',
 'parser-template-recursion-depth-warning' => 'Limit de longor de la recursion del modèl depassat ($1)',
 'language-converter-depth-warning' => 'Limit de prigondor del convertissor de lenga depassada ($1)',
+'node-count-exceeded-category' => 'Paginas ont nombre de nosèls es depassat',
+'node-count-exceeded-warning' => 'Pagina depassant lo nombre de nosèls',
+'expansion-depth-exceeded-category' => "Paginas ont la prigondor d'espandiment es depassada",
+'expansion-depth-exceeded-warning' => "Pagina depassant la prigondor d'espandiment",
+'parser-unstrip-loop-warning' => 'Bocla pas desmontabla detectada',
+'parser-unstrip-recursion-limit' => 'Limit de recursion pas desmontable depassat ($1)',
+'converter-manual-rule-error' => 'Error detectada dins la règla manuala de conversion de lenga',
 
 # "Undo" feature
 'undo-success' => "Aquesta modificacion va èsser desfacha. Confirmatz los cambiaments (visibles en bas d'aquesta pagina), puèi salvatz se sètz d’acòrdi. Mercés de motivar l’anullacion dins la bóstia de resumit.",
@@ -1087,18 +1136,18 @@ Coma administrator, podètz encara [$1 veire aquesta version] s'o volètz.",
 I pòt aver mai de detalhs dins [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} lo jornal de las supressions].
 Coma administrator, podètz encara [$1 veire aquesta version] s'o volètz.",
 'rev-deleted-text-view' => "Aquesta version de la pagina es estada '''escafada'''.
-En tant qu’administrator, la podètz visualizar ; i pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
+La podètz visualizar ; de detalhs son disponibles dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
 'rev-suppressed-text-view' => "Aquesta version de la pagina es estada '''suprimida'''.
-En tant qu’administrator, la podètz visualizar ; i pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
+La podètz visualizar ; de detalhs son disponibles dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
 'rev-deleted-no-diff' => "Podètz pas veire aquesta dif per que una de las versions es estada '''escafada'''.
 I pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].",
 'rev-suppressed-no-diff' => "Pod�tz pas veire aquesta difer�ncia perque una de las revisions es estada '''suprimida'''.",
 'rev-deleted-unhide-diff' => "Una de las revisions d'aquesta diferéncia es estada '''escafada'''.
-I pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].
-En tant qu'administrator, podètz encara [$1 veire aquesta diferéncia] se volètz.",
+De detalhs son disponibles dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal dels escafaments].
+Podètz totjorn [$1 veire aquesta diferéncia] se lo volètz.",
 'rev-suppressed-unhide-diff' => "Una de las revisions d'aqueste diff es estada '''suprimida'''.
-I pòt aver de detalhs dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].
-En tant qu'administrator, podètz totjorn [$1 veire aqueste diff] se volètz contunhar.",
+De detalhs son disponibles dins lo [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} jornal de las supressions].
+Podètz totjorn [$1 veire aqueste diff] se volètz contunhar.",
 'rev-deleted-diff-view' => "Una de las revisions d'aquesta diff es estada '''suprimida'''.
 En tant qu'administrator podètz veire aquesta diff ; i pòt aver mai de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
 'rev-suppressed-diff-view' => "Una de las revisions d'aquesta diff es estada '''escafada'''.
@@ -1230,7 +1279,6 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
 'searchmenu-legend' => 'Opcions de recèrca',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''Crear la pagina ''[[:$1|$1]]'' sus aqueste wiki !'''",
-'searchhelp-url' => 'Help:Acuèlh',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Recercar las paginas amb aqueste prefix]]',
 'searchprofile-articles' => 'Paginas de contengut',
 'searchprofile-project' => "Paginas d'ajuda e del projècte",
@@ -1252,7 +1300,7 @@ Asseguratz-vos qu'aqueste cambiament pòsca conservar la continuitat de l'istori
 'search-interwiki-default' => '$1 resultats :',
 'search-interwiki-more' => '(mai)',
 'search-relatedarticle' => 'Relatat',
-'mwsuggest-disable' => 'Desactivar las suggestions AJAX',
+'mwsuggest-disable' => 'Desactivar las suggestions de recèrca',
 'searcheverything-enable' => 'Recercar dins totes los espacis de noms',
 'searchrelated' => 'relatat',
 'searchall' => 'Totes',
@@ -1274,6 +1322,7 @@ Ensajatz en utilizant lo prefix ''all:'' per recercar tot lo contengut (tot incl
 'searchdisabled' => 'La recèrca sus {{SITENAME}} es desactivada.
 En esperant la reactivacion, podètz efectuar una recèrca via Google.
 Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
+'search-error' => "Una error s'es producha en recercant : $1",
 
 # Preferences page
 'preferences' => 'Preferéncias',
@@ -1399,7 +1448,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'userrights-lookup-user' => "Gestion dels dreches d'utilizaire",
 'userrights-user-editname' => 'Entrar un nom d’utilizaire :',
 'editusergroup' => "Modificacion dels gropes d'utilizaires",
-'editinguser' => "Cambiament dels dreches de l'utilizaire '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "Modificacion dels dreches de l'{{GENDER:$1|utilizaire|utilizaire}} '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'Modificar los gropes de l’utilizaire',
 'saveusergroups' => "Salvar los gropes d'utilizaires",
 'userrights-groupsmember' => 'Membre de :',
@@ -1499,7 +1548,7 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'right-siteadmin' => 'Varrolhar e desvarrolhar la banca de donadas',
 'right-override-export-depth' => 'Exportar las paginas en incluent las paginas ligadas fins a una prigondor de 5 nivèls',
 'right-sendemail' => 'Mandar un corrièl als autres utilizaires',
-'right-passwordreset' => 'Tòrna inicializar lo senhal d’un utilizaire ([[Special:PasswordReset|pagina especiala]])',
+'right-passwordreset' => 'Veire los corrièrs electronics de reïnicializacion dels senhals',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Istoric de las creacions de comptes',
@@ -1629,13 +1678,13 @@ Vejatz la [[Special:NewFiles|galariá dels imatges novèls]] per una presentacio
 'minlength1' => 'Los noms de fichièrs devon comprendre almens una letra.',
 'illegalfilename' => 'Lo nom de fichièr « $1 » conten de caractèrs interdiches dins los títols de paginas. Mercé de lo tornar nomenar e de lo copiar tornarmai.',
 'badfilename' => "L'imatge es estat renomenat « $1 ».",
-'filetype-mime-mismatch' => 'L’extension del fichier correspond pas al tipe MIME.',
+'filetype-mime-mismatch' => "L'extension del fichièr « .$1 » correspond pas al tipe MIME detectat del fichièr ($2).",
 'filetype-badmime' => 'Los fichièrs del tipe MIME « $1 » pòdon pas èsser importats.',
 'filetype-bad-ie-mime' => 'Lo fichièr pòt pas èsser importat perque serià detectat coma « $1 » per Internet Explorer, tipe de fichièr interdich perque potencialament dangierós.',
 'filetype-unwanted-type' => "«.$1»''' es un format de fichièr pas desirat.
 {{PLURAL:$3|Lo tipe de fichièr preconizat es|Los tipes de fichièrs preconizats son}} $2.",
-'filetype-banned-type' => "'''\".\$1\"''' es dins un format pas admes.
-{{PLURAL:\$3|Lo qu'es acceptat es|Los que son acceptats son}} \$2.",
+'filetype-banned-type' => "''' « .$1 » '''{{PLURAL:$4|est pas un tipe de fichièr autorizat|son pas de tipes de fichièrs autorizats}}. 
+{{PLURAL:$3|lo tipe de fichièr autorizat es |los tipes de fichièrs autorizats son}} $2.",
 'filetype-missing' => "Lo fichièr a pas cap d'extension (coma « .jpg » per exemple).",
 'empty-file' => "Lo fichièr qu'avètz somés èra void.",
 'file-too-large' => "Lo fichièr qu'avètz somés èra tròp grand.",
@@ -1710,7 +1759,7 @@ MGP # Pentax
 PICT # misc.
  #</pre> <!-- daissatz aquesta linha coma es -->',
 'upload-success-subj' => 'Importacion capitada',
-'upload-success-msg' => 'Çò mandat es disponible aicí : [[:{{ns:file}}:$1]]',
+'upload-success-msg' => 'Vòstre impòrt dempuèi [$2] a capitat. Es disponible aicí : [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'Problèma de mandadís',
 'upload-failure-msg' => 'I a agut un problèma amb vòstre mandadís [$2]: $1',
 'upload-warning-subj' => 'Avertiment al moment del telecargament',
@@ -1750,13 +1799,13 @@ Se lo problèma persistís, contactatz un [[Special:ListUsers/sysop|administrato
 
 # Special:UploadStash
 'uploadstash' => "Escondedor d'impòrt",
+'uploadstash-clear' => 'Escafar los fichièrs en escondedor',
+'uploadstash-nofiles' => "Avètz pas de fichièrs en escondedor d'impòrt.",
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Accès refusat',
-'img-auth-nopathinfo' => 'PATH_INFO mancant.
-Vòstre servidor es pas parametrat per passar aquesta informacion.
-Benlèu que fonciona en CGI e supòrta pas img_atuh.
-Consultatz https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-nopathinfo' => 'PATH_INFO mancant. Vòstre servidor es pas parametrat per passar aquesta informacion.
+Benlèu que fonciona en CGI e supòrta pas img_atuh. Consultatz https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-notindir' => 'Lo camin demandat es pas lo repertòri de telecargament configurat.',
 'img-auth-badtitle' => 'Impossible de construire un títol valid a partir de « $1 ».',
 'img-auth-nologinnWL' => 'Sètz pas connectat e « $1 » es pas dins la lista blanca.',
@@ -1768,6 +1817,7 @@ Sol l'accès als fichièrs es permesa.",
 Aqueste wiki es configurat coma un wiki public.
 Per una seguretat optimala, img_auth.php es desactivat.",
 'img-auth-noread' => "L'utilizaire a pas lo drech en lectura sus « $1 ».",
+'img-auth-bad-query-string' => "L'URL a una cadena de requèsta invalida.",
 
 # HTTP errors
 'http-invalid-url' => 'URL incorrècta : $1',
@@ -1792,9 +1842,8 @@ Per una seguretat optimala, img_auth.php es desactivat.",
 'upload_source_file' => ' (un fichièr sus vòstre ordenador)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Aquesta pagina especiala fa veire totes los fichièrs importats.
-Per defaut, las darrièrs fichièrs importats son afichats en naut de la lista.
-Un clic en tèsta de colomna càmbia l’òrdre d’afichatge.',
+'listfiles-summary' => 'Aquesta pagina especiala permet de far la lista de totes los fichièrs importats.
+Quand es filtrada per utilizaire, sols los fichièrs que la version la mai recenta es estada importada per aqueste utilizaire son afichats.',
 'listfiles_search_for' => 'Recèrca del mèdia nomenat :',
 'imgfile' => 'fichièr',
 'listfiles' => 'Lista dels imatges',
@@ -1869,6 +1918,7 @@ Una [[Special:WhatLinksHere/$2|tièra completa]] es disponibla.',
 ** Fichièr duplicat',
 'filedelete-edit-reasonlist' => 'Modifica los motius de la supression',
 'filedelete-maintenance' => 'La supression e lo restabliment de fichièrs es temporàriament desactivada pendent la mantenença.',
+'filedelete-maintenance-title' => 'Impossible de suprimir lo fichièr',
 
 # MIME search
 'mimesearch' => 'Recèrca per tipe MIME',
@@ -1922,6 +1972,11 @@ Doblidetz pas de verificar se i a pas d’autre ligam cap als modèls abans de l
 Deurián puslèu puntar cap a una pagina apropriada.<br />
 Una pagina es tractada coma una pagina d’omonimia s'utiliza un modèl qu'es ligat a partir de [[MediaWiki:Disambiguationspage]]",
 
+'pageswithprop' => 'Paginas amb una proprietat de pagina',
+'pageswithprop-legend' => 'Paginas amb una proprietat de pagina',
+'pageswithprop-prop' => 'Nom de la proprietat :',
+'pageswithprop-submit' => 'Anar',
+
 'doubleredirects' => 'Redireccions doblas',
 'doubleredirectstext' => 'Vaquí una lista de las paginas que redirigisson cap a de paginas que son elas-meteissas de paginas de redireccion.
 Cada entrada conten de ligams cap a la primièra e la segonda redireccions, e mai la primièra linha de tèxte de la segonda pagina, çò que provesís, de costuma, la « vertadièra » pagina cibla, cap a la quala la primièra redireccion deuriá redirigir.
@@ -1945,6 +2000,7 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|octet|octets}}',
 'ncategories' => '$1 {{PLURAL:$1|categoria|categorias}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|ligam|ligams}}',
 'nmembers' => '$1 {{PLURAL:$1|membre|membres}}',
 'nrevisions' => '$1 {{PLURAL:$1|revision|revisions}}',
@@ -1971,8 +2027,10 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 'mostlinkedtemplates' => 'Modèls mai utilizats',
 'mostcategories' => 'Articles utilizant mai de categorias',
 'mostimages' => 'Fichièrs mai utilizats',
+'mostinterwikis' => "Paginas amb lo mai d'interwikis",
 'mostrevisions' => 'Articles mai modificats',
 'prefixindex' => 'Totas las paginas que començan per…',
+'prefixindex-namespace' => 'Totas las paginas amb prefix (espaci de noms $1)',
 'shortpages' => 'Paginas brèvas',
 'longpages' => 'Paginas longas',
 'deadendpages' => "Paginas sul camin d'enlòc",
@@ -2040,6 +2098,10 @@ Podètz restrénher la vista en seleccionant un tipe de jornal, un nom d’utili
 'allpagesprefix' => 'Afichar las paginas que començan pel prefix :',
 'allpagesbadtitle' => 'Lo títol rensenhat per la pagina es incorrècte o possedís un prefix reservat. Conten segurament un o mantun caractèr especial que pòt pas èsser utilizats dins los títols.',
 'allpages-bad-ns' => '{{SITENAME}} a pas d’espaci de noms « $1 ».',
+'allpages-hide-redirects' => 'Amagar las redireccions',
+
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Veire lo mai recent.',
 
 # Special:Categories
 'categories' => 'Categorias',
@@ -2060,7 +2122,9 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
 'linksearch-pat' => 'Recercar l’expression :',
 'linksearch-ns' => 'Espacis de noms :',
 'linksearch-ok' => 'Recercar',
-'linksearch-text' => 'De caractèrs « joker » pòdon èsser utilizats, per exemple <code>*.wikipedia.org</code>.<br />Protocòls reconeguts : <code>$1</code>.',
+'linksearch-text' => 'De caractèrs jokers coma « *.wikipedia.org » pòdon èsser utilizats.
+Necessitan al mens un domeni de nivèl superior, per exemple « *.org ».<br />
+{{PLURAL:$2|Protocòl reconegut|Protocòls reconeguts}}: <code>$1</code> (http:// per defaut se cap de protocòl es pas indicat).',
 'linksearch-line' => '$1 amb un ligam a partir de $2',
 'linksearch-error' => 'Los caractèrs « joker » pòdon pas èsser utilizats qu’al començament del nom de domeni.',
 
@@ -2073,7 +2137,7 @@ Vejatz tanben [[Special:WantedCategories|las categorias demandadas]].',
 # Special:ActiveUsers
 'activeusers' => 'Lista dels utilizaires actius',
 'activeusers-intro' => "Aquò es una lista dels utilizaires qu'an exerçat una activitat quina que siá al cors {{PLURAL:$1|de la darrièra jornada|dels $1 darrièrs jorns}}.",
-'activeusers-count' => '$1 {{PLURAL:$1|modificacion recenta|modificacions recentas}} dins {{PLURAL:$3|lo darrièr jorn|los $3 darrièrs jorns}}',
+'activeusers-count' => '$1 {{PLURAL:$1|accion|accions}} al moment {{PLURAL:$3|del darrièr jorn|dels $3 darrièrs jorns}}',
 'activeusers-from' => 'Afichar los utilizaires dempuèi :',
 'activeusers-hidebots' => 'Amagar los robòts',
 'activeusers-hidesysops' => 'Amagar los administrators',
@@ -2117,6 +2181,8 @@ L'adreça electronica qu'avètz indicada dins [[Special:Preferences|vòstras pre
 'noemailtext' => "Aqueste utilizaire a pas especificat d'adreça electronica valida.",
 'nowikiemailtitle' => 'Pas de corrièr electronic autorizat',
 'nowikiemailtext' => "Aqueste utilizaire a causit de recebre pas de corrièr electronic de la part d'autres utilizaires.",
+'emailnotarget' => "Nom d'utilizaire del destinatari inexistent o invalid.",
+'emailtarget' => "Entratz lo nom d'utilizaire del destinatari",
 'emailusername' => "Nom d'utilizaire :",
 'emailusernamesubmit' => 'Sometre',
 'email-legend' => 'Mandar un corrièr electronic a un autre utilizaire de {{SITENAME}}',
@@ -2145,8 +2211,7 @@ L'adreça electronica qu'avètz indicada dins [[Special:Preferences|vòstras pre
 'watchnologintext' => 'Vos cal èsser [[Special:UserLogin|connectat(ada)]]
 per modificar vòstra lista de seguiment.',
 'addwatch' => 'Ajustar a la lista de seguiment',
-'addedwatchtext' => 'La pagina "[[:$1]]" es estada aponduda a vòstra [[Special:Watchlist|lista de seguiment]].
-Las modificacions venentas d\'aquesta pagina e de la pagina de discussion associada seràn repertoriadas aicí, e la pagina apareisserà <b>en gras</b> dins la [[Special:RecentChanges|tièra dels darrièrs cambiaments]] per èsser localizada mai aisidament.',
+'addedwatchtext' => "La pagina « [[:$1]] » es estada aponduda a vòstra [[Special:Watchlist|lista de seguiment]]. Las modificacions venentas d'aquesta pagina e de la pagina de discussion associada i seràn repertoriadas.",
 'removewatch' => 'Suprimir de la lista de seguiment',
 'removedwatchtext' => 'La pagina « [[:$1]] » es estada levada de vòstra [[Special:Watchlist|lista de seguiment]].',
 'watch' => 'Seguir',
@@ -2158,12 +2223,12 @@ Las modificacions venentas d\'aquesta pagina e de la pagina de discussion associ
 'watchnochange' => 'Cap de las paginas que seguissètz son pas estadas modificadas pendent lo periòde afichat.',
 'watchlist-details' => 'I a {{PLURAL:$1|pagina|paginas}} dins vòstra lista de seguiment, sens comptar las paginas de discussion.',
 'wlheader-enotif' => 'La notificacion per corrièr electronic es activada.',
-'wlheader-showupdated' => 'Las paginas que son estadas modificadas dempuèi vòstra darrièra visita son mostradas en <b>gras</b>',
+'wlheader-showupdated' => "Las paginas que son estadas modificadas dempuèi vòstra darrièra visita son afichadas en '''gras'''.",
 'watchmethod-recent' => 'verificacion dels darrièrs cambiaments de las paginas seguidas',
 'watchmethod-list' => 'verificacion de las paginas seguidas per de modificacions recentas',
 'watchlistcontains' => 'Vòstra lista de seguiment conten $1 {{PLURAL:$1|pagina|paginas}}.',
 'iteminvalidname' => "Problèma amb l'article « $1 » : lo nom es invalid...",
-'wlnote' => 'Çaijós se {{PLURAL:$1|tròba la darrièra modificacion|tròban las $1 darrièras modificacions}} dempuèi {{PLURAL:$2|la darrièra ora|las <b>$2</b> darrièras oras}}.',
+'wlnote' => "Çaijós {{PLURAL:$1|se tròba la darrièra modificacion efectuada|se tròban las $1 darrièras modificacions efectuadas}} pendent {{PLURAL:$2|la darrièra ora|las '''$2''' darrièras oras}} dempuèi $3, $4.",
 'wlshowlast' => 'Far veire las darrièras $1 oras, los darrièrs $2 jorns, o $3.',
 'watchlist-options' => 'Opcions de la lista de seguiment',
 
@@ -2363,6 +2428,7 @@ S'una pagina novèla amb lo meteis nom es estada creada dempuèi la supression,
 
 Consultatz l’[[Special:Log/delete|istoric de las supressions]] per veire las paginas recentament suprimidas e restablidas.",
 'undelete-header' => 'Consultatz l’[[Special:Log/delete|istoric de las supressions]] per veire las paginas recentament suprimidas.',
+'undelete-search-title' => 'Recercar las paginas suprimidas',
 'undelete-search-box' => 'Cercar una pagina suprimida',
 'undelete-search-prefix' => 'Far veire las paginas que començan per :',
 'undelete-search-submit' => 'Cercar',
@@ -2371,6 +2437,7 @@ Consultatz l’[[Special:Log/delete|istoric de las supressions]] per veire las p
 'undelete-bad-store-key' => 'Impossible de restablir lo fichièr datat del $1 : lo fichièr èra absent abans la supression.',
 'undelete-cleanup-error' => 'Error al moment de la supression de l’archiu inutilizada « $1 ».',
 'undelete-missing-filearchive' => 'Impossible de restablir lo fichièr amb l’ID $1 perque es pas dins la banca de donadas. Benlèu ja i es estat restablit.',
+'undelete-error' => "Pagina d'error d'anullacion",
 'undelete-error-short' => 'Error al moment del restabliment del fichièr : $1',
 'undelete-error-long' => "D'errors son estadas rencontradas al moment del restabliment del fichièr :
 
@@ -2963,9 +3030,25 @@ Se l'executatz, vòstre sistèma pòt èsser compromés.",
 'minutes' => '{{PLURAL:$1|$1 minuta|$1 minutas}}',
 'hours' => '{{PLURAL:$1|$1 ora|$1 oras}}',
 'days' => '{{PLURAL:$1|$1 jorn|$1 jorns}}',
+'weeks' => '{{PLURAL:$1|$1 setmana|$1 setmanas}}',
+'months' => '{{PLURAL:$1|$1 mes|$1 meses}}',
+'years' => '{{PLURAL:$1|$1 an|$1 ans}}',
 'ago' => 'I a $1',
 'just-now' => 'sulpic',
 
+# Human-readable timestamps
+'hours-ago' => 'i a $1 {{PLURAL:$1|ora|oras}}',
+'minutes-ago' => 'i a $1 {{PLURAL:$1|minuta|minutas}}',
+'seconds-ago' => 'i a $1 {{PLURAL:$1|segonda|segondas}}',
+'monday-at' => 'Diluns a $1',
+'tuesday-at' => 'Dimars a $1',
+'wednesday-at' => 'Dimècres a $1',
+'thursday-at' => 'Dijòus a $1',
+'friday-at' => 'Divendres a $1',
+'saturday-at' => 'Dissabte a $1',
+'sunday-at' => 'Dimenge a $1',
+'yesterday-at' => 'Ièr a $1',
+
 # Bad image list
 'bad_image_list' => "Lo format es lo seguent :
 
@@ -3150,6 +3233,9 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
 'exif-copyrightowner' => "Detentor del drech d'autor",
 'exif-usageterms' => "Condicions d'utilizacion",
 'exif-webstatement' => "Declaracion de dreches d'autor en linha",
+'exif-originaldocumentid' => 'Identificant unic del document original',
+'exif-licenseurl' => 'URL de la licéncia',
+'exif-morepermissionsurl' => 'Informacions sus las licéncias alternativas',
 'exif-pngfilecomment' => 'Comentari de fichièr JPEG',
 'exif-disclaimer' => 'Desistiment',
 'exif-contentwarning' => 'Avertiment sul contengut',
@@ -3537,6 +3623,7 @@ Ensajatz la previsualizacion normala.',
 'version-specialpages' => 'Paginas especialas',
 'version-parserhooks' => 'Extensions del parser',
 'version-variables' => 'Variablas',
+'version-antispam' => 'Prevencion del spam',
 'version-skins' => 'Abilhatges',
 'version-other' => 'Divèrs',
 'version-mediahandlers' => 'Supòrts mèdia',
@@ -3548,10 +3635,25 @@ Ensajatz la previsualizacion normala.',
 'version-hook-subscribedby' => 'Definit per',
 'version-version' => '(Version $1)',
 'version-license' => 'Licéncia',
+'version-poweredby-credits' => "Aqueste wiki fonciona gràcias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'autres',
 'version-software' => 'Logicial installat',
 'version-software-product' => 'Produch',
 'version-software-version' => 'Version',
+'version-entrypoints' => "URL dels punts d'entrada",
+'version-entrypoints-header-entrypoint' => "Punt d'entrada",
+'version-entrypoints-header-url' => 'URL',
+
+# Special:Redirect
+'redirect' => 'Redirigit per fichièr, utilizaire, o ID de revision',
+'redirect-legend' => 'Redirigir cap a una pagina o un fichièr',
+'redirect-submit' => 'Validar',
+'redirect-lookup' => 'Recèrca :',
+'redirect-value' => 'Valor :',
+'redirect-user' => "ID de l'utilizaire",
+'redirect-revision' => 'Revision de la pagina',
+'redirect-file' => 'Nom del fichièr',
+'redirect-not-exists' => 'Valor pas trobada',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Recèrca dels fichièrs en doble',
@@ -3620,6 +3722,7 @@ Ensajatz la previsualizacion normala.',
 'compare-submit' => 'Comparar',
 'compare-invalid-title' => "Lo títol qu'avètz especificat es incorrècte.",
 'compare-title-not-exists' => "Lo títol qu'avètz especificat existís pas",
+'compare-revision-not-exists' => "La revision qu'avètz especificada existís pas.",
 
 # Database error messages
 'dberr-header' => 'Aqueste wiki a un problèma',
@@ -3641,10 +3744,16 @@ Ensajatz la previsualizacion normala.',
 'htmlform-submit' => 'Sometre',
 'htmlform-reset' => 'Desfar las modificacions',
 'htmlform-selectorother-other' => 'Autre',
+'htmlform-no' => 'Non',
+'htmlform-yes' => 'Òc',
+'htmlform-chosen-placeholder' => 'Causir una opcion',
+
+# SQLite database support
+'sqlite-has-fts' => '$1 amb recèrca en tèxte integral suportada',
 
 # New logging system
-'logentry-delete-delete' => '$1 a suprimit la pagina $3',
-'logentry-delete-restore' => '$1 a restablit la pagina $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|a suprimit}} la pagina $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|a restablit}} la pagina $3',
 'revdelete-content-hid' => 'contengut amagat',
 'revdelete-summary-hid' => 'resumit de modificacion amagat',
 'revdelete-uname-hid' => 'nom d’utilizaire amagat',
@@ -3668,6 +3777,8 @@ Ensajatz la previsualizacion normala.',
 'feedback-message' => 'Messatge :',
 'feedback-cancel' => 'Anullar',
 'feedback-submit' => 'Mandar vòstres comentaris',
+'feedback-error2' => 'Error : la modificacion a fracassat',
+'feedback-error3' => "Error : pas cap de responsa de l'API",
 'feedback-close' => 'Fach',
 
 # Search suggestions
index 479063f..cb4eb2d 100644 (file)
@@ -286,7 +286,7 @@ $messages = array(
 'tog-enotifminoredits' => 'ପୃଷ୍ଠାରେ ଏବଂ ଫାଇଲଗୁଡିକରେ ଛୋଟ ଛୋଟ ବଦଳ ହେଲେ ବି ମୋତେ ଇ-ମେଲ କରିବେ',
 'tog-enotifrevealaddr' => 'ସୂଚନା ଇମେଲ ରେ ମୋର ଇମେଲ ଠିକଣା ଦେଖାଇବେ',
 'tog-shownumberswatching' => 'ଦେଖୁଥିବା ବ୍ୟବହାରକାରୀଙ୍କ ସଂଖ୍ୟା ଦେଖାଇବେ',
-'tog-oldsig' => 'à¬\8fବà­\87 à¬¥à¬¿à¬¬à¬¾ à¬¨à¬¾à¬®:',
+'tog-oldsig' => 'à¬\8fବà­\87 à¬¥à¬¿à¬¬à¬¾ à¬¦à¬¸à­\8dତà¬\96ତ:',
 'tog-fancysig' => 'ଦସ୍ତଖତକୁ ଉଇକିଟେକ୍ସଟ ଭାବରେ ଗଣିବେ (ଆପେଆପେ ଥିବା ଲିଙ୍କ ବିନା)',
 'tog-showjumplinks' => '"ଡେଇଁଯିବେ" ଲିଙ୍କସବୁକୁ ସଚଳ କରିବେ',
 'tog-uselivepreview' => 'ସାଥେ ସାଥେ ଚାଲିଥିବା ଦେଖଣା ବ୍ୟବହାର କରିବେ (ଜାଭାସ୍କ୍ରିପ୍ଟ ଲୋଡ଼ା)',
@@ -510,7 +510,6 @@ $1',
 'disclaimers' => 'ଆମେ ଦାୟୀ ନୋହୁଁ',
 'disclaimerpage' => 'Project:ଆମେ ଦାୟୀ ନୋହୁଁ',
 'edithelp' => 'ଲେଖା ସାହାଯ୍ୟ',
-'edithelppage' => 'Help:ବଦଳାଇବା',
 'helppage' => 'Help:ସୂଚୀ',
 'mainpage' => 'ପ୍ରଧାନ ପୃଷ୍ଠା',
 'mainpage-description' => 'ପ୍ରଧାନ ପୃଷ୍ଠା',
@@ -687,7 +686,10 @@ $2',
 'yourpassword' => 'ପାସୱାର୍ଡ଼',
 'userlogin-yourpassword' => 'ପାସୱାର୍ଡ଼',
 'userlogin-yourpassword-ph' => 'ଆପଣଙ୍କ ପାସୱାର୍ଡ଼ ନିବେଶ କରନ୍ତୁ',
+'createacct-yourpassword-ph' => 'ପାସୱର୍ଡ଼ ନିବେଶ କରନ୍ତୁ',
 'yourpasswordagain' => 'ପାସୱାର୍ଡ଼ ଆଉଥରେ:',
+'createacct-yourpasswordagain' => 'ପାସୱର୍ଡ଼ ନିଶ୍ଚିତ କରିବେ',
+'createacct-yourpasswordagain-ph' => 'ପୁଣି ପାସୱର୍ଡ଼ ନିବେଶ କରନ୍ତୁ',
 'remembermypassword' => 'ଏହି ବ୍ରାଉଜରରେ (ସବୁଠୁ ଅଧିକ ହେଲେ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗଇନ ମନେ ରଖିଥିବେ',
 'securelogin-stick-https' => 'ଲଗ ଇନ କଲାପରେ HTTPS ସହ ଯୋଡ଼ି ହୋଇ ରହନ୍ତୁ',
 'yourdomainname' => 'ଆପଣଙ୍କ ଡୋମେନ:',
@@ -708,8 +710,14 @@ $2',
 'gotaccount' => 'ଆଗରୁ ଖାତାଟିଏ ଅଛି କି? $1.',
 'gotaccountlink' => 'ଲଗ ଇନ',
 'userlogin-resetlink' => 'ଲଗଇନ ତଥ୍ୟ ସବୁ ଭୁଲିଗେଲେକି?',
+'createacct-emailrequired' => 'ଇମେଲ ଠିକଣା',
+'createacct-emailoptional' => 'ଇମେଲ ଠିକଣା (ଇଚ୍ଛାଧୀନ)',
+'createacct-email-ph' => 'ଆପଣଙ୍କ ଇମେଲ ଠିକଣା ନିବେଶ କରନ୍ତୁ',
 'createaccountmail' => 'ଗୋଟିଏ ସାମୟିକ ଜାହିତାହି ପାସୱାର୍ଡ ବ୍ୟବହାର କରନ୍ତୁ ଏବଂ ଏହାକୁ ତଳେ ଦିଆଯାଇଥିବା ଇ-ମେଲ ଠିକଣାକୁ ପଠେଇ ଦିଅନ୍ତୁ',
+'createacct-realname' => 'ପ୍ରକୃତ ନାମ (ଇଚ୍ଛାଧୀନ)',
 'createaccountreason' => 'କାରଣ:',
+'createacct-reason' => 'କାରଣ',
+'createacct-reason-ph' => 'ଆପଣ ଅନ୍ୟଏକ ଖାତା କାହିଁକି ତିଆରି କରୁଛନ୍ତି',
 'badretype' => 'ଆପଣ ଦେଇଥିବା ପାସବାର୍ଡ଼ଟି ମେଳଖାଉନାହିଁ ।',
 'userexists' => 'ଆପଣ ଦେଇଥିବା ଇଉଜର ନାମ ଆଗରୁ ଅଛି ।
 ଦୟାକରି ଅଲଗା ନାମଟିଏ ବାଛନ୍ତୁ ।',
@@ -812,11 +820,9 @@ continue using your old password.',
 
 # Special:PasswordReset
 'passwordreset' => 'ପାସୱାର୍ଡ଼ ପୁନସ୍ଥାପନ କରନ୍ତୁ',
-'passwordreset-text' => 'ନିଜ ପାସୱାର୍ଡ଼କୁ ପୁନଃସ୍ଥାପନ କରିବା ପାଇଁ ଏହି ଆବେଦନ ପତ୍ରଟି ପୂରଣ କରନ୍ତୁ ।',
 'passwordreset-legend' => 'ପାସୱାର୍ଡ଼ ପୁନସ୍ଥାପନ କରନ୍ତୁ',
 'passwordreset-disabled' => 'ପାସୱାର୍ଡ଼କୁ ପୁରାପୁରି ମୂଳକୁ ଫେରାଇବା ଏହି ଉଇକିରେ ଅଚଳ କରାଯାଇଅଛି ।',
 'passwordreset-emaildisabled' => 'ଏହି ଉଇକିରେ ଇମେଲ ସୁବିଧା ଅଚଳ କରାଯାଇଅଛି ।',
-'passwordreset-pretext' => '{{PLURAL:$1||ତଳେ ଥିବା ତଥ୍ୟସମୂହରୁ କୌଣସି ଗୋଟିଏ ଦିଅନ୍ତୁ}}',
 'passwordreset-username' => 'ବ୍ୟବହାରକାରୀଙ୍କ ନାମ:',
 'passwordreset-domain' => 'ଡୋମେନ:',
 'passwordreset-capture' => 'ଯାଉଥିବା ଇ-ମେଲଟି ଦେଖିବେ?',
@@ -1315,7 +1321,6 @@ $1",
 'searchmenu-legend' => 'ଖୋଜିବା ବିକଳ୍ପ',
 'searchmenu-exists' => "'''ଏହି ଉଇକିରେ \"[[:\$1]]\" ନାଆଁରେ ପୃଷ୍ଠାଟିଏ ଅଛି ।'''",
 'searchmenu-new' => "'''ଏହି ପ୍ରସଙ୍ଗଟି ଆଗରୁ ନାହିଁ, ତେଣୁ ''[[:$1]]'' ନାମରେ ପ୍ରସଙ୍ଗଟିଏ ଏଠାରେ ଗଢ଼ନ୍ତୁ!'''",
-'searchhelp-url' => 'Help:ସୂଚୀ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ଏହି ନାମ ଆଗରୁ ଥିବା ପୃଷ୍ଠାସବୁ ଖୋଜିବେ]]',
 'searchprofile-articles' => 'ସୂଚୀ ପୃଷ୍ଠା',
 'searchprofile-project' => 'ସାହାଯ୍ୟ ଓ ପ୍ରକଳ୍ପ ପୃଷ୍ଠା',
@@ -2324,8 +2329,8 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'notvisiblerev' => 'ଜଣେ ଅଲଗା ବ୍ୟବହାରକାରୀଙ୍କ ଦେଇ କରାଯାଇଥିବା ସେଶ ସଂସ୍କରଣଟି ଲିଭାଇଦିଆଗଲା ।',
 'watchnochange' => 'ଆପଣଙ୍କ ଦେଇ ଦେଖାଯାଇଥିବା ସମୟ ସୀମା ଭିତରେ କୌଣସିଟି ପୃଷ୍ଠାର ବଦଳ କରାଯାଇନାହିଁ ।',
 'watchlist-details' => 'ଆପଣଙ୍କ ଦେଖଣା ତାଲିକାରେ ଆଲୋଚନା ପୃଷ୍ଠାକୁ ଛାଡ଼ି {{PLURAL:$1|$1 ଟି ପୃଷ୍ଠା|$1 ଟି ପୃଷ୍ଠା}} ଅଛି ।',
-'wlheader-enotif' => 'ଇ-ମେଲ ସୂଚନାକୁ ସଚଳ କରାଗଲା ।',
-'wlheader-showupdated' => "à¬\86ପଣ à¬¶à­\87ଷଥର à¬¦à­\87à¬\96ିଥିବା à¬ªà­\83ଷà­\8dଠାà¬\97à­\81ଡ଼ିà¬\95 '''ମà­\8bà¬\9fା à¬\85à¬\95à­\8dଷର'''ରà­\87 à¬¦à­\87à¬\96ାଯାà¬\87ଅଛି ।",
+'wlheader-enotif' => 'ଇମେଲ ସୂଚନା ସଚଳ କରାଗଲା ।',
+'wlheader-showupdated' => "à¬\86ପଣ à¬¶à­\87ଷଥର à¬¦à­\87à¬\96ିଥିବା à¬ªà­\83ଷà­\8dଠାà¬\97à­\81ଡ଼ିà¬\95 '''ମà­\8bà¬\9fା à¬\85à¬\95à­\8dଷର'''ରà­\87 à¬¦à­\87à¬\96ାଯାà¬\89ଅଛି ।",
 'watchmethod-recent' => 'ଏଡଖାଯାଇଥିବା ପୃଷ୍ଠାର ନଗଦ ବଦଳ ପରଖୁଛୁଁ',
 'watchmethod-list' => 'ନଗଦ ବଦଳ ନିମନ୍ତେ ଦେଖାଯାଇଥିବା ପୃଷ୍ଠାମାନ ପରଖୁଛୁଁ',
 'watchlistcontains' => 'ଆପଣଙ୍କ ଦେଖଣାତାଲିକାରେ $1 {{PLURAL:$1|ଗୋଟି ପୃଷ୍ଠା|ଗୋଟି ପୃଷ୍ଠା}} ରହିଅଛି ।',
@@ -2576,7 +2581,7 @@ $1',
 'mycontris' => 'ଅବଦାନ',
 'contribsub2' => '$1 ($2) ପାଇଁ',
 'nocontribs' => 'ଏହି ନିର୍ଣ୍ଣାୟକବଳୀ ନିମନ୍ତେ କିଛି ବି ବଦଳ ମେଳ ଖାଇଲା ନାହିଁ ।',
-'uctop' => '(à¬\89ପର)',
+'uctop' => '(à¬\8fବà­\87à¬\95ାର)',
 'month' => 'ମାସରୁ (ଓ ତା ଆଗରୁ)',
 'year' => 'ବର୍ଷରୁ (ଆଉ ତା ଆଗରୁ)',
 
@@ -3961,9 +3966,9 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'logentry-newusers-create' => 'ସଭ୍ୟ ଖାତା $1 ତିଆରି କରାଗଲା',
 'logentry-newusers-create2' => 'ସଭ୍ୟ ଖାତା $3ଟି $1 ଦ୍ଵାରା ତିଆରି କରାଗଲା',
 'logentry-newusers-byemail' => '$1ଙ୍କ ଦ୍ଵାରା $3 ବ୍ୟବହାରକାରୀ ଖାତାଟି ଖୋଳାଗଲା ଏବଂ ପାସୱାର୍ଡଟି ଇ-ମେଲ ଦ୍ଵାରା ପଠାଗଲା',
-'logentry-newusers-autocreate' => '$1 ଖାତାଟି ଆପେଆପେ ତିଆରିହେଲା',
+'logentry-newusers-autocreate' => 'ବ୍ୟବହାରକାରୀ ଖାତା $1 ଆପେଆପେ {{GENDER:$2|ତିଆରିହେଲା}}',
 'logentry-rights-rights' => '$1, $3 ପାଇଁ $4ରୁ $5କୁ ସଭ୍ୟପଦ ବଦଳାଇଲେ',
-'logentry-rights-rights-legacy' => '$1, $3 ପାଇଁ ଗୋଷ୍ଠୀ ସଭ୍ୟପଦ ବଦଳାଇଛି',
+'logentry-rights-rights-legacy' => '$1 ଗୋଷ୍ଠୀ ସଭ୍ୟପଦ $3 ପାଇଁ {{GENDER:$2|ବଦଳିଗଲା}}',
 'logentry-rights-autopromote' => '$1 ଆପେ ଆପେ $4ରୁ $5କୁ ଗଲେ',
 'rightsnone' => '(କିଛି ନାହିଁ)',
 
index 651f561..b2b7fb7 100644 (file)
@@ -427,7 +427,6 @@ $1',
 'disclaimers' => 'Бæрн',
 'disclaimerpage' => 'Project:Бæрн',
 'edithelp' => 'Ивынæн æххуыс',
-'edithelppage' => 'Help:Ивын',
 'helppage' => 'Help:Мидис',
 'mainpage' => 'Сæйраг фарс',
 'mainpage-description' => 'Сæйраг фарс',
@@ -1055,7 +1054,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'viewprevnext' => 'Кæсын ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Ацы викийы ис фарс \"[[:\$1]]\" номимæ.'''",
 'searchmenu-new' => "'''Сараз фарс \"[[:\$1]]\" ацы викийы!'''",
-'searchhelp-url' => 'Help:Мидис',
 'searchprofile-articles' => 'Мидисы фæрстæ',
 'searchprofile-project' => 'Æххуыс æмæ Проекты фæрстæ',
 'searchprofile-images' => 'Мультимеди',
index 3a4c5a0..e451354 100644 (file)
@@ -427,7 +427,6 @@ $1',
 'disclaimers' => 'ਦਾਅਵੇ',
 'disclaimerpage' => 'Project:ਆਮ ਦਾਅਵੇ',
 'edithelp' => 'ਸੋਧ ਮੱਦਦ',
-'edithelppage' => 'Help:ਸੋਧ',
 'helppage' => 'Help:ਸਮੱਗਰੀ',
 'mainpage' => 'ਮੁੱਖ ਸਫ਼ਾ',
 'mainpage-description' => 'ਮੁੱਖ ਸਫ਼ਾ',
@@ -1054,7 +1053,6 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'searchmenu-legend' => 'ਖੋਜ ਚੋਣਾਂ',
 'searchmenu-exists' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਨਾਮ ਦਾ ਸਫਾ ਹੈ।'''",
 'searchmenu-new' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਪੰਨਾ ਬਣਾਓ!'''",
-'searchhelp-url' => 'Help:ਸਮੱਗਰੀ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ਇਸ ਅਗੇਤਰ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵੇਖੋ]]',
 'searchprofile-articles' => 'ਸਮੱਗਰੀ ਪੰਨੇ',
 'searchprofile-project' => 'ਮੱਦਦ ਤੇ ਪਰੋਜੈਕਟ ਸਫ਼ੇ',
@@ -2269,7 +2267,7 @@ delete|ਹਟਾਉਣ ਦਾ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'htmlform-selectorother-other' => 'ਹੋਰ',
 
 # New logging system
-'logentry-move-move' => "$1 ਨੇ $3 ਪੰਨੇ $4 'ਤੇ ਸਥਾਨਾਂਤਰਿਤ ਕੀਤਾ",
+'logentry-move-move' => '$1 ਨੇ ਸਫ਼ਾ $3 ਨੂੰ $4 ’ਤੇ ਭੇਜਿਆ',
 'logentry-newusers-newusers' => 'ਮੈਂਬਰ ਖਾਤਾ $1 ਬਣਾਇਆ ਗਿਆ',
 'logentry-newusers-create' => 'ਵਰਤੋਂਕਾਰ ਖਾਤਾ $1 ਬਣਾਇਆ ਗਿਆ',
 'logentry-newusers-create2' => 'ਵਰਤੋਂਕਾਰ ਖਾਤਾ $3 $1 ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਸੀ',
index 94ce761..017202c 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Kaganer
  * @author Katimawan2005
  * @author Urhixidur
@@ -231,7 +232,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'disclaimers' => 'Pamananggi',
 'disclaimerpage' => 'Project:Pangkabilugan a pamananggi',
 'edithelp' => 'Saup pamanalili',
-'edithelppage' => 'Help:Pamag-edit',
 'helppage' => 'Help:Kalamnan',
 'mainpage' => 'Pun Bulung',
 'mainpage-description' => 'Pun Bulung',
@@ -379,7 +379,7 @@ Apansingan mung mapalyaring makalto la pa murin deng aliwang bulung a bala mu ma
 'logout' => 'Mag-log out',
 'userlogout' => 'Mag logout',
 'notloggedin' => 'E maka login',
-'nologin' => "Ala kang login? '''$1'''.",
+'nologin' => 'Ala kang login? $1.',
 'nologinlink' => 'Maglalang kang account',
 'createaccount' => 'Maglalang kang account',
 'gotaccount' => "Atin na kang account? '''$1'''.",
@@ -762,7 +762,6 @@ Tutuking $1 {{PLURAL:$1|result|results}}',
 'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Atin bulung a mikilagiung \"[[:\$1]]\" keng wiking ini.'''",
 'searchmenu-new' => "↓'''Maglalang kang bulung \"[[:\$1]] keng wiking ini!'''",
-'searchhelp-url' => 'Help:Kalamnan',
 'searchprofile-articles' => '↓Kalamnan bulung',
 'searchprofile-project' => '↓Saup ampong bulung proyectu',
 'searchprofile-images' => '↓Dakalmedia',
@@ -1074,11 +1073,11 @@ Mamili ka sanang lagyung mas maglarawan keng kekang simpan.",
 'upload-proto-error-text' => 'Mangailangan yang URL a magumpisa king <code>http://</code> o <code>ftp://</code> ing pang-malaut a pamaglulan (remote upload).',
 'upload-file-error' => 'Pamagkamaling pangkilub (internal error)',
 'upload-file-error-text' => 'Mika pamagkamaling pangkilub aniang susubukan nang maglalang pansamantalang simpan king server.
-Pakiyaus me ing metung a talapanibala ning sistema (system administrator).',
+Pakiyaus me ing metung a talapanibala ([[Special:ListUsers/sysop|administrator]]).',
 'upload-misc-error' => 'E makikilalang pamagkamali king pamaglulan (unknown upload error)',
 'upload-misc-error-text' => 'Ating miliaring e makikilalang pamagkamali aniang maglulan.
 Pakilawe mu nung ustu ya at maliari yang luban ing URL, at subukan mung pasibayu.
-Nung atin pa muring prublema, maus kang talapanibala king sistema (system administrator).',
+Nung atin pa muring prublema, maus kang talapanibala ([[Special:ListUsers/sysop|administrator]]).',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
 'upload-curl-error6' => 'E ne ayabut ing URL',
index 64377fa..efd196e 100644 (file)
@@ -228,7 +228,6 @@ $messages = array(
 'disclaimers' => 'Démintis',
 'disclaimerpage' => 'Project:Déminti général',
 'edithelp' => 'Éditer el aiyude',
-'edithelppage' => 'Help:Édichion',
 'helppage' => 'Help:Étnus',
 'mainpage' => 'Moaite Pache',
 'mainpage-description' => 'Moaite Pache',
index f52d5d3..3dfc3fe 100644 (file)
@@ -217,7 +217,6 @@ $messages = array(
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Hilf zum Ennere',
-'edithelppage' => 'Help:Tscheensche',
 'helppage' => 'Help:Hilf',
 'mainpage' => 'Haaptblatt',
 'mainpage-description' => 'Haaptblatt',
@@ -399,7 +398,6 @@ Paesswatt fer nau: $2',
 'nextn' => 'neegschte {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-new' => "'''Schtaert des Blatt „[[:$1|$1]]“ uf dem Wiki.'''",
-'searchhelp-url' => 'Help:Hilf',
 'searchprofile-everything' => 'Abaddiche',
 'searchprofile-articles-tooltip' => 'Uffgucke in $1',
 'searchprofile-project-tooltip' => 'Uffgucke in $1',
index 32cfc57..619a9b8 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Als-Holder
+ * @author Imbericle
  * @author M-sch
  * @author Manuae
  * @author SPS
@@ -20,8 +21,8 @@ $namespaceNames = array(
        NS_MEDIA            => 'Medium',
        NS_SPECIAL          => 'Schbezial',
        NS_TALK             => 'Babble',
-       NS_USER             => 'Benudzer',
-       NS_USER_TALK        => 'Benudzer_Dischbediere',
+       NS_USER             => 'Middawaida',
+       NS_USER_TALK        => 'Middawaida_Dischbediere',
        NS_PROJECT_TALK     => '$1_Dischbediere',
        NS_FILE             => 'Dadai',
        NS_FILE_TALK        => 'Dadai_Dischbediere',
@@ -31,34 +32,45 @@ $namespaceNames = array(
        NS_TEMPLATE_TALK    => 'Vorlach_Dischbediere',
        NS_HELP             => 'Hilf',
        NS_HELP_TALK        => 'Hilf_Dischbediere',
-       NS_CATEGORY         => 'Kadegorie',
-       NS_CATEGORY_TALK    => 'Kadegorie_Dischbediere',
+       NS_CATEGORY         => 'Sachgrubb',
+       NS_CATEGORY_TALK    => 'Sachgrubb_Dischbediere',
 );
 
 $namespaceAliases = array(
        # German namespaces
-       'Medium'               => NS_MEDIA,
-       'Spezial'              => NS_SPECIAL,
-       'Diskussion'           => NS_TALK,
-       'Benutzer'             => NS_USER,
-       'Benutzer_Diskussion'  => NS_USER_TALK,
-       '$1_Diskussion'        => NS_PROJECT_TALK,
-       'Datei'                => NS_FILE,
-       'Datei_Diskussion'     => NS_FILE_TALK,
-       'MediaWiki_Diskussion' => NS_MEDIAWIKI_TALK,
-       'Vorlage'              => NS_TEMPLATE,
-       'Vorlage_Diskussion'   => NS_TEMPLATE_TALK,
-       'Hilfe'                => NS_HELP,
-       'Hilfe_Diskussion'     => NS_HELP_TALK,
-       'Kategorie'            => NS_CATEGORY,
-       'Kategorie_Diskussion' => NS_CATEGORY_TALK,
+       'Medium'                 => NS_MEDIA,
+       'Spezial'                => NS_SPECIAL,
+       'Diskussion'             => NS_TALK,
+       'Benutzer'               => NS_USER,
+       'Benutzer_Diskussion'    => NS_USER_TALK,
+       'Benudzer'               => NS_USER,
+       'Benudzer_Dischbediere'  => NS_USER_TALK,
+       '$1_Diskussion'          => NS_PROJECT_TALK,
+       'Datei'                  => NS_FILE,
+       'Datei_Diskussion'       => NS_FILE_TALK,
+       'MediaWiki_Diskussion'   => NS_MEDIAWIKI_TALK,
+       'Vorlage'                => NS_TEMPLATE,
+       'Vorlage_Diskussion'     => NS_TEMPLATE_TALK,
+       'Hilfe'                  => NS_HELP,
+       'Hilfe_Diskussion'       => NS_HELP_TALK,
+       'Kategorie'              => NS_CATEGORY,
+       'Kategorie_Diskussion'   => NS_CATEGORY_TALK,
+       'Kadegorie'              => NS_CATEGORY,
+       'Kadegorie_Dischbediere' => NS_CATEGORY_TALK,
 );
 
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Lingg unnaschdraische',
+'tog-hideminor' => 'Vaschdegg klääne Bearwaidunge',
+'tog-hidepatrolled' => 'Vaschdegg gsischdede Ännarunge',
+'tog-extendwatchlist' => 'Zaisch alle Ännarunge unn ned nur die ledschde',
 'tog-showtoolbar' => "Wergzaisch fas Beawaide zaische (dodezu brauchd's JavaScript)",
-'tog-showjumplinks' => 'Schdellde "Hubs uff"-Lingg o',
+'tog-previewontop' => 'Vorbligg owwahalwb vum Beaawaidungsfenschda zaische',
+'tog-previewonfirst' => 'Zaischen Vorbligg baim erschdemol Schaffe',
+'tog-oldsig' => 'Voahonneni Unnaschfrid',
+'tog-showjumplinks' => 'Schdellde "Hubs uff"-Lingg',
+'tog-uselivepreview' => 'Uuvazeschada Vorbligg (bneedischd JavaScript) (vasugswais)',
 'tog-showhiddencats' => 'Zaisch vaschdeglde Grubbe',
 
 'underline-always' => 'Imma',
@@ -73,10 +85,10 @@ $messages = array(
 'sunday' => 'Sundaach',
 'monday' => 'Mondaach',
 'tuesday' => 'Dienschdaach',
-'wednesday' => 'Midwoch',
+'wednesday' => 'Middwoch',
 'thursday' => 'Dunnaschdaach',
 'friday' => 'Fraidaach',
-'saturday' => 'Somschdaach',
+'saturday' => 'Sõmschdaach',
 'sun' => 'Su',
 'mon' => 'Mo',
 'tue' => 'Di',
@@ -122,26 +134,31 @@ $messages = array(
 'dec' => 'Dez',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Grubb|Grubbe}}',
-'category_header' => 'Saide in de Grubb „$1“',
+'pagecategories' => '{{PLURAL:$1|Sachgrubb|Sachgrubbe}}',
+'category_header' => 'Saide inde Sachgrubb „$1“',
 'subcategories' => 'Unnagrubbe',
-'category-media-header' => 'Medije inde Grubb „$1“',
-'category-empty' => '"Die Grubb hod kä Said odda Medije."',
-'hidden-categories' => '{{PLURAL:$1|Vaschdegldi Grubb|Vaschdeglde Grubbe}}',
+'category-media-header' => 'Medje indɐ Sachgrubb „$1“',
+'category-empty' => '"Die Sachgrubb hodd kä Said odda Medje."',
+'hidden-categories' => '{{PLURAL:$1|Vaschdegldi Sachgrubb|Vaschdeglde Sachgrubbe}}',
 'hidden-category-category' => 'Verschdegelde Grubbe',
-'category-subcat-count' => '{{PLURAL:$2|Die Grubb hod bloß die Unnagrubb.|Die Grubb hod {{PLURAL:$1|Unnagrubbe|$1 Unnagrubbe}},vun gsomd $2.}}',
-'category-article-count' => '{{PLURAL:$2|Inde Grubb hodss nua die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Grubb, vun gsomd $2.}}',
-'category-file-count' => "{{PLURAL:$2|Die Grubb hod bloß ä Said.|Die {{PLURAL:$1|Said isch äni vun $2 Saide:|S'werren $1 vun gsomd $2 Saide gzaischd:}}}}",
-'listingcontinuesabbrev' => '(Fords.)',
+'category-subcat-count' => '{{PLURAL:$2|Die Sachgrubb hod die Unnagrubb.|Die Sachgrubb hod {{PLURAL:$1|Unnagrubb|$1 Unnagrubbe}}, vun gsomd $2.}}',
+'category-subcat-count-limited' => 'Die Sachgrubb hod die {{PLURAL:$1|Unagrubb|$1 Unagrubbe}}.',
+'category-article-count' => '{{PLURAL:$2|Indɐ Sachgrubb hodds die Said.|Die {{PLURAL:$1|Said|$1 Saide}} gibbds inde Sachgrubb, vun gsomd $2.}}',
+'category-article-count-limited' => 'Die {{PLURAL:$1|Said|$1 Saide}} hodds inde Sachgrubb.',
+'category-file-count' => "{{PLURAL:$2|Die Sachgrubb hodd ä Said.|Die {{PLURAL:$1|Said isch änni vun $2 Saide:|S'werren $1 vun gsomd $2 Saide gzaischd:}}}}",
+'category-file-count-limited' => 'Die {{PLURAL:$1|Dadai|$1 Dadije}} hodds inde Sachgrubb.',
+'listingcontinuesabbrev' => '(Waida)',
+'index-category' => 'Eafassdi Saide',
 'noindex-category' => 'Saide, wu ned im Vazaischnis sinn',
 
 'about' => 'Iwwa',
-'newwindow' => '(werd inem naije Fenschda uffgmachd)',
+'newwindow' => '(werd innem naije Fenschda uffgmachd)',
 'cancel' => 'Abbresche',
 'moredotdotdot' => 'Mea …',
 'mypage' => 'Said',
 'mytalk' => 'Dischbediere',
 'navigation' => 'Nawigadzion',
+'and' => '&#32;unn',
 
 # Cologne Blue skin
 'qbfind' => 'Finne',
@@ -149,6 +166,7 @@ $messages = array(
 'qbedit' => 'Beawaide',
 'qbpageoptions' => 'Die Said',
 'qbmyoptions' => 'Moi Saide',
+'qbspecialpages' => 'Schbezialsaide',
 'faq' => 'Ofd gschdeldi Froche',
 
 # Vector skin
@@ -157,13 +175,13 @@ $messages = array(
 'vector-action-move' => 'Vaschiewe',
 'vector-action-protect' => 'Schidze',
 'vector-action-undelete' => 'Zriggbringe',
-'vector-view-create' => 'Oleesche',
+'vector-view-create' => 'Õleesche',
 'vector-view-edit' => 'Beawaide',
 'vector-view-history' => 'Dadaigschischd',
 'vector-view-view' => 'Lese',
 'vector-view-viewsource' => 'Gwelltegschd zaische',
-'actions' => 'Maßnohme',
-'namespaces' => 'Nomensreum',
+'actions' => 'Maßnõhme',
+'namespaces' => 'Nõmensreum',
 'variants' => 'Tibbe',
 
 'errorpagetitle' => 'Irrdumm',
@@ -176,13 +194,14 @@ $messages = array(
 'searcharticle' => 'Ausfiare',
 'history' => 'Gschischd vunde Said',
 'history_short' => 'Gschischd',
-'printableversion' => 'Drugg-Asischd',
+'printableversion' => 'Drugg-Õsischd',
 'permalink' => 'Schdendischa Lingg',
 'print' => 'Drugge',
 'view' => 'Ogugge',
 'edit' => 'Beawaide',
-'create' => 'Aleesche',
+'create' => 'Õleesche',
 'editthispage' => 'Die Said beawaide',
+'create-this-page' => 'Mach die Said',
 'delete' => 'Lesche',
 'deletethispage' => 'Lesch die Said',
 'undelete_short' => '{{PLURAL:$1|ä Ännarung|$1 Ännarunge}} widdaheaschdelle',
@@ -194,21 +213,35 @@ $messages = array(
 'newpage' => 'Naiji Said',
 'talkpage' => 'Iwwa die Said dischbediere',
 'talkpagelinktext' => 'Dischbediere',
+'specialpage' => 'Schbezielli Said',
 'personaltools' => 'Persenlischs Wergzaisch',
 'postcomment' => 'Naije Abschnidd',
+'articlepage' => 'Inhald õgugge',
 'talk' => 'Dischbediere',
 'views' => 'Uffruf',
 'toolbox' => 'Wergzaischkischd',
+'userpage' => 'Middawaidasaid õgugge',
+'projectpage' => 'Brojegdsaid õgugge',
+'imagepage' => 'Dadaisaid õgugge',
+'mediawikipage' => 'Nochrischd õgugge',
+'templatepage' => 'Voalach õgugge',
+'viewhelppage' => 'Hilf õgugge',
+'categorypage' => 'Zaisch die Kadegorie',
 'viewtalkpage' => 'Zaischs Gbabbl',
-'otherlanguages' => 'In annare Schbroche',
-'redirectedfrom' => '(Nochgschiggd vun $1)',
+'otherlanguages' => 'In õnnare Schbroche',
+'redirectedfrom' => '(Nochgschiggd worre vun $1)',
 'redirectpagesub' => 'Nochschigg-Said',
-'lastmodifiedat' => 'Die Said ischs ledschde Mol gännad worre om $1, om $2.',
+'lastmodifiedat' => 'Die Said ischs ledschde Mol gännad worre õm $1, õm $2.',
 'viewcount' => 'Die Said isch bis jedz {{PLURAL:$1|$1|$1}} mol uffgrufe worre.',
 'protectedpage' => 'Said schidze',
 'jumpto' => 'Hubs uff:',
 'jumptonavigation' => 'Nawigadzion',
 'jumptosearch' => 'Nochgugge',
+'view-pool-error' => 'Dudma leed, die Maschine isch graad iwwalaschd.
+Zu vieli Middawaida guggn grad die Said õ.
+Waad ä bissl un brobieas nomol.
+
+$1',
 'pool-errorunknown' => 'Ubkonnde Irrdumm',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
@@ -221,10 +254,10 @@ $messages = array(
 'disclaimers' => 'Hafdungsausschluß',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Unaschdizung fas Beawaide',
-'edithelppage' => 'Help:Ännare',
 'helppage' => 'Help:Inhald',
 'mainpage' => 'Schdadsaid',
 'mainpage-description' => 'Schdadsaid',
+'policy-url' => 'Project:Grundsedz',
 'portal' => '{{SITENAME}}-Bordal',
 'portal-url' => 'Project:Gmoinschafdsbordal',
 'privacy' => 'Daadeschuds',
@@ -237,27 +270,31 @@ $messages = array(
 'youhavenewmessages' => 'Du hoschd $1 ($2).',
 'newmessageslink' => 'naije Nochrischde',
 'newmessagesdifflink' => 'ledschdi Ännarung',
+'newmessagesdifflinkplural' => 'ledschdi {{PLURAL:$1|Ännarung|Ännarunge}}',
+'youhavenewmessagesmulti' => 'Do hoschd ä Nochrischd grischd: $1',
 'editsection' => 'beawaide',
 'editold' => 'beawaide',
-'viewsourceold' => 'Gwelltegschd ogugge',
+'viewsourceold' => 'Gwelltegschd õgugge',
 'editlink' => 'beawaide',
-'viewsourcelink' => 'Gwell aagugge',
+'viewsourcelink' => 'Gwell õgugge',
 'editsectionhint' => 'Deel ännare: $1',
 'toc' => 'Inhald',
 'showtoc' => 'zaische',
 'hidetoc' => 'vaschdeggle',
 'collapsible-collapse' => 'Oiglabbe',
+'collapsible-expand' => 'Uffglabbe',
+'thisisdeleted' => '$1 õgugge odda widdaheaschdelle?',
 'viewdeleted' => '$1 zaische?',
 'restorelink' => '{{PLURAL:$1|ä gleschdi Ännarung|$1 gleschde Ännarunge}}',
 '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 (Said gibbds ned)',
+'red-link-title' => '$1 (Said hodds nedd)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Said',
-'nstab-user' => 'Benudzersaid',
+'nstab-user' => 'Middawaidasaid',
 'nstab-media' => 'Medije',
 'nstab-special' => 'Schbezialsaid',
 'nstab-project' => 'Bordal',
@@ -265,49 +302,102 @@ $messages = array(
 'nstab-mediawiki' => 'Middeelung',
 'nstab-template' => 'Vorlach',
 'nstab-help' => 'Unaschdidzung',
-'nstab-category' => 'Kadegorie',
+'nstab-category' => 'Sachgrubb',
+
+# Main script and global functions
+'nosuchaction' => 'Des hodds nedd',
+'nosuchspecialpage' => 'Schbezialsaid hodds nedd',
 
 # General errors
 'error' => 'Irrdumm',
-'missing-article' => 'De Tegschd fa „$1“ $2 isch inde Daadebongg ned gfunne worre.
+'databaseerror' => 'Daadebongg-Irrdumm',
+'readonly' => 'Daadebongg blogiead',
+'missing-article' => 'De Tegschd fa „$1“ $2 isch inde Daadebongg nedd gfunne worre.
 
 Noamalawees heeßd des, dass die Said gleschd worre isch.
 
-Wonnse des awwa ned isch, hoschd villaischdn Irddumm inde Daadebongg gfunne.
-Bidde meldsm [[Special:ListUsers/sysop|Adminischdrador]], un gebbde URL dzu aa.',
-'missingarticle-rev' => '(Versionsnummer#: $1)',
+Wonnse des awwa nedd isch, hoschd villaischdn Irdumm inde Daadebongg gfunne.
+Bidde meldsm [[Special:ListUsers/sysop|Adminischdrador]], un gebbde URL dzu õ.',
+'missingarticle-rev' => '(Ausgawenumma#: $1)',
+'missingarticle-diff' => '(Unnaschied: $1, $2)',
+'internalerror' => 'Inderna Irrdumm',
+'internalerror_info' => 'Inderna Irrdumm: $1',
+'fileappenderrorread' => 'Beim dzugiesche hoddma „$1“ nedd lese kenne.',
+'fileappenderror' => '"$1" hoddma nedd zu "$2" dzugiesche kenne.',
+'filecopyerror' => '"$1" hoddma nedd zu "$2" kobiere kenne.',
+'filerenameerror' => 'Die Said "$1" hoddma nedd uff "$2" umbenenne kenne.',
+'filedeleteerror' => '"$1" hoddma nedd lesche kenne.',
+'directorycreateerror' => 'S\'Vazaischnis "$1" hoddma nedd mache kenne.',
+'filenotfound' => '"$1" hoddma nedd finne kenne.',
+'fileexistserror' => '"$1" hodds schun: do hoddma nix schraiwe kenne.',
+'unexpected' => 'Uueawadeda Wead: "$1"="$2".',
+'formerror' => 'Irrdumm: hoddma nedd mache kenne.',
+'badarticleerror' => 'Des geed nedd uffde Said.',
+'cannotdelete-title' => '"$1" komma nedd lesche',
 'badtitle' => 'Schleschde Didl',
-'badtitletext' => 'De Tidl vunde aagefordad Said isch nid gildisch, leer, oddan nid gildische Lingg vunem annare Wiki.
-S kann sai, dass es ää odda meh Zaische drin hod, wu im Tidl vunde Said nid gbrauchd werre dirfn.',
-'viewsource' => 'Gwelltegschd ogugge',
+'badtitletext' => 'De Tidl vunde õgfordad Said isch nedd gildisch, lea, oddan nedd gildische Lingg vunem õnnare Wiki.
+S konn soi, dasses ä odda mea Zaische drin hodd, wu im Tidl vunde Said nedd gbrauchd werre dirfn.',
+'viewsource' => 'Gwelltegschd õgugge',
+'viewsource-title' => "D'Tegschd vun $1 õgugge",
+'viewsourcetext' => 'Konschdas õgugge un abschraiwe',
+'viewyourtext' => 'Konschda doi Eawed uff de Said õgugge un abschraiwe:',
+'ns-specialprotected' => 'Do komma nedd drõ schaffe',
+'exception-nologin' => 'Bischd nedd õgmeld',
+
+# Virus scanner
+'virus-unknownscanner' => 'Uubekonnda Viresucha:',
 
 # Login and logout pages
 'welcomeuser' => 'Willkumme, $1!',
-'yourname' => 'Benudzernome:',
-'yourpassword' => 'Password:',
-'yourpasswordagain' => 'Password nomol oigewe:',
-'remembermypassword' => 'Mai Passwort uffm Computer merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
-'login' => 'Omelde',
-'nav-login-createaccount' => 'Amelde / Benudzerkondo aleesche',
-'loginprompt' => 'Cookies mugschd fa {{SITENAME}} schun ohawe.',
-'userlogin' => 'Omelde / Benudzerkondo oleesche',
+'yourname' => 'Middawaidanõme:',
+'yourpassword' => 'Kennword:',
+'yourpasswordagain' => 'Kennword nomol oigewe:',
+'remembermypassword' => 'Moi Kennword uffm Rechna merge (hegschdns fa $1 {{PLURAL:$1|Daach|Daach}})',
+'login' => 'Õmelde',
+'nav-login-createaccount' => 'Õmelde / Kondo õleesche',
+'loginprompt' => 'Cookies mugschd fa {{SITENAME}} schun õhawe.',
+'userlogin' => 'Õmelde / Kondo õleesche',
 'userloginnocreate' => 'Oilogge',
 'logout' => 'Uffhere',
 'userlogout' => 'Uffhere',
 'nologin' => 'Hoschd noch kä Kondo? $1',
-'nologinlink' => 'E Benudzerkondo aaleesche',
-'createaccount' => 'Bnudza oleesche',
+'nologinlink' => 'E Kondo õleesche',
+'createaccount' => 'Kondo õleesche',
 'gotaccount' => 'Hoschd schun ä Kondo? $1',
-'gotaccountlink' => 'Omelde',
+'gotaccountlink' => 'Õmelde',
 'userlogin-resetlink' => 'Hoschd doi Daade vagesse?',
-'mailmypassword' => 'Nais Passwort per E-Mail schigge',
+'createaccountreason' => 'Grund:',
+'badretype' => 'Kennword bassd nedd',
+'userexists' => 'De Middawaida hodds schun.
+Nemmen onnare.',
+'loginerror' => 'Irrdumm baim Õmelde',
+'createaccounterror' => 'Kondo $1 komma nedd mache',
+'loginsuccesstitle' => 'Konschd schaffe',
+'login-userblocked' => 'De Middawaida deaf do nemme schaffe.',
+'wrongpasswordempty' => 'Hoschds Kennword vagesse. Mags nomol.',
+'passwordtooshort' => 'Kennword muss {{PLURAL:$1|1 Zaische|$1 Zaische}} hawe.',
+'password-name-match' => 'Doi Kennword deaf nedd so heese wie du.',
+'password-login-forbidden' => 'De Nõme uns Kennword sinn fabode.',
+'mailmypassword' => 'Naijs Kennword iwwa E-Mail schigge',
+'accountcreated' => 'Kondo õgleeschd',
+'login-abort-generic' => 'Hodd nedd gklabbd - Abgbroche',
 'loginlanguagelabel' => 'Schbrooch: $1',
 
 # Change password dialog
+'resetpass' => 'Kennword wegsle',
+'oldpassword' => 'Alds Kennword',
+'newpassword' => 'Naijes Kennword',
+'retypenew' => 'Naijes Kennword nomol oigewe:',
+'resetpass_forbidden' => 'Kennwerda komma nedd wegsle',
 'resetpass-submit-loggedin' => 'Password wegsle',
+'resetpass-submit-cancel' => 'Uffhere',
+'resetpass-temp-password' => 'Bschrengds Kennword',
 
 # Special:PasswordReset
-'passwordreset-username' => 'Benudza:',
+'passwordreset' => 'Kennword zriggsedze',
+'passwordreset-legend' => 'Kennword zriggsedze',
+'passwordreset-username' => 'Middawaida:',
+'passwordreset-capture' => 'E-Mail õgugge?',
 
 # Special:ChangeEmail
 'changeemail-none' => '(käni)',
@@ -324,38 +414,49 @@ S kann sai, dass es ää odda meh Zaische drin hod, wu im Tidl vunde Said nid gb
 'extlink_tip' => 'Exderna Lingg (uff http:// uffbasse)',
 'headline_sample' => 'Schlaachzail',
 'headline_tip' => 'Iwwaschrifd Ewene 2',
-'nowiki_sample' => 'Gebb do en Tegschd ai, wu nit uffberaid werd',
+'nowiki_sample' => "Gebb do'n Tegschd oi, wu nedd uffberaid werd",
 'nowiki_tip' => 'Wiki-Formatierunge ned beachde',
 'image_tip' => 'Bildvawais',
 'media_tip' => 'Dadailingg',
-'sig_tip' => 'Dai Unnerschrifd mid ener Zaidaagab',
-'hr_tip' => 'Horizontale Linie (sparsam verwenne)',
+'sig_tip' => 'Doi Unnaschrifd midena Zaidõgawb',
+'hr_tip' => 'Waagreschdi Linje (schbaasõm vawende)',
 
 # Edit pages
 'summary' => 'Iwwabligg:',
 'subject' => 'Bedreff:',
-'minoredit' => 'Des isch e klänni Bearwaidung',
-'watchthis' => 'Die Said im Aach bhalde',
-'savearticle' => 'Said schbeichere',
+'minoredit' => 'Des ische glänni Beawaidung',
+'watchthis' => 'Die Said im Aach palde',
+'savearticle' => 'Said schbaischere',
 'preview' => 'Voaschau',
 'showpreview' => 'Voaschau zaische',
 'showlivepreview' => 'Live-Voaschau',
 'showdiff' => 'Ännarunge zaische',
-'anoneditwarning' => "'''Baßma uff:''' Du bischd nit aagemeld. Dai IP-Adress werd inde Gschischd vum Adiggl gschbaischad.",
+'anoneditwarning' => "'''Baßma uff:''' Du bischd ned õgemeld. Doi IP-Adress werd inde Gschischd vum Adiggl gschbaischad.",
 'summary-preview' => 'Iwwabligg:',
+'blockedtitle' => 'Middawaida isch gschbead',
 'blockednoreason' => "s'hod kän Grund",
-'newarticle' => '(Nai)',
-'newarticletext' => "Du bisch eme Link nogange zu re Said, wu s no gar nit gebbt.
-Zum die Said aaleche, kannscht do in dem Käschtel unne aafange mid schraiwe (guck[[{{MediaWiki:Helppage}}|Hilfe]] fer meh Informatione).
-Wenn do nid hin hoscht welle, no druck in Daim Browser uff '''Zrick'''.",
-'noarticletext' => 'Uffde Said hods noch kän Tegschd. Du konnschd uff onnare Saide nochm [[Special:Search/{{PAGENAME}}|Oidrach gugge]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbuchaidrach gugge, wu dezu kead],
+'whitelistedittext' => 'Mugschd disch $1 fas schaffe',
+'loginreqtitle' => 'Mugschd disch õmelde',
+'loginreqlink' => 'Õmelde',
+'loginreqpagetext' => 'Mugschd disch $1 fas õgugge.',
+'accmailtitle' => 'Kennword gschiggd',
+'newarticle' => '(Naij)',
+'newarticletext' => "Du bischdm Lingg nochgõnge zu enna Said, wus ganedd hodd.
+Fa die Said õzleesche, konnschd do im Käschdl unne õfonge mid schraiwe (gugg [[{{MediaWiki:Helppage}}|Hilf]] fa mea Auskinfd).
+Wonn do nedd hoschd heakumme wolle, drigg uff Browser uff '''Zrigg'''.",
+'noarticletext' => 'Uffde Said hods noch kän Tegschd. Du konnschd uff õnnare Saide nochm [[Special:Search/{{PAGENAME}}|Oidrach gugge]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbuchaidrach gugge, wu dezu kead],
 odda [{{fullurl:{{FULLPAGENAME}}|action=edit}} die Said beawaide]</span>.',
+'noarticletext-nopermission' => 'Do hods känn Tegschd.
+Du konschd uff onnare Saide [[Special:Search/{{PAGENAME}}|faden Tidl gugge]], odda <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} in alle Logs gugge]</span>, awwa du hoschd kä Ealauwnis die Said zu mache.',
 'updated' => '(Gännad)',
 'note' => "'''Hiwes:'''",
-'previewnote' => "'''Deng'g droa, dass des numme e Vorschau isch.'''
-Doi Ännerunge sinn no nid gschbaichert worre!",
-'editing' => 'Om $1 beawaide',
+'previewnote' => "'''Deng'g drõõ, dasses nua e Vorschau isch.'''
+Doi Ännarunge sinn noch nedd gschbaischadd worre!",
+'editing' => 'Õm $1 beawaide',
+'creating' => 'Magsch $1',
 'editingsection' => '$1 beawaide (de Deel)',
+'editingcomment' => '$1 beawaide (de Deel)',
+'editconflict' => 'Schdraid ums Ännare: $1',
 'yourtext' => 'Doin Tegschd',
 'storedversion' => 'Gschbaischerdi Version',
 'yourdiff' => 'Unaschied',
@@ -367,64 +468,80 @@ Du gibbschd do a zu, dasses selwaschd gschriwwe hoschd odda vuna effendlischi, f
 'templatesusedpreview' => '{{PLURAL:$1|Vorlach wu inde Vorschau gbrauchd werd|Vorlache wu inde Vorschau gbrauchd werren}}:',
 'template-protected' => '(gschizd)',
 'template-semiprotected' => '(halwa-gschizd)',
-'hiddencategories' => 'Die Said ghert zu {{PLURAL:$1|1 versteckelte Kategorie|$1 versteckelte Kategorie}}:',
-'permissionserrorstext-withaction' => 'Du därfscht nid $2, wesche{{PLURAL:$1|m Grund|de Grind}}:',
-'recreate-moveddeleted-warn' => "'''Baßma uff: Du magschd do ä Said, wuma frija schumol geleschd kabd hod.'''",
+'hiddencategories' => 'Die Said kerd zu vaschdeggelde {{PLURAL:$1|1 Sachgrubb|$1 Sachgrubbe}}:',
+'permissionserrorstext-withaction' => 'Du därfschd nedd $2, weesch{{PLURAL:$1|m Grund|ede Grind}}:',
+'recreate-moveddeleted-warn' => "'''Baßma uff: Du maggschd do ä Said, wuma frija schumol geleschd kabd hod.'''",
 'moveddeleted-notice' => 'Die Said isch gleschd worre.
-De Leschaidrach fa die Said isch do unne als Kwell aagewwe.',
+De Leschoidrach fa die Said isch do unne als Gwell õgewwe.',
+'log-fulllog' => 'Alli Oidräsch vunde Logbischa õgugge',
+'edit-conflict' => 'Schdraid ums Ännare.',
 
 # Content models
+'content-model-text' => 'Glaategschd',
 'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Baßma uff:''' Greeß vunde Vorlach isch iwwaschridde. Oinischi Vorlache werren ned bnuzd.",
 'post-expand-template-inclusion-category' => 'Saide mid Vorlache, wu die Greeß iwwaschridde worre isch',
-'post-expand-template-argument-warning' => "'''Baßma uff:''' Die Said hod wenigschdns ä Vorlach mida Kenngreeß, wu groß werre dud. Die Kenngreeß wead do ned ogeguggd.",
+'post-expand-template-argument-warning' => "'''Baßma uff:''' Die Said hodd wenigschdns ä Vorlach midä Kenngreeß, wu groß werre dud. Die Kenngreeß wead do nedd õgeguggd.",
+'post-expand-template-argument-category' => 'Saide, wu wegfallene Vorlachewead hawen.',
 
 # History pages
-'viewpagelogs' => 'Lochbischer fer die Said aagucke',
+'viewpagelogs' => 'Lochbischa fa die Said õgugge',
 'currentrev' => 'Ledschdi Änarung',
 'currentrev-asof' => 'Agduell Ausgab vun $1',
 'revisionasof' => 'Iwwaawaidung vun $1',
 'revision-info' => 'Ännarung vun $1 duasch $2',
 'previousrevision' => '← Älderi Beawaidung',
-'nextrevision' => 'Naijare Ausgab →',
-'currentrevisionlink' => 'Agduell Ausgab',
+'nextrevision' => 'Naijari Ausgawb →',
+'currentrevisionlink' => 'Agduelli Ausgawb',
 'cur' => 'jedzischi',
 'next' => 'Negschd',
 'last' => 'vorischi',
 'page_first' => 'Easchd',
 'page_last' => 'Ledschd',
-'histlegend' => "Du kannscht zwää Versione auswähle un verglaiche.<br />
-Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
-'''({{int:last}})''' = Unnerschied zu de voriche Version, '''{{int:minoreditletter}}''' = klenni Ännerung.",
+'histlegend' => "Du konnschd zwää Ausgawe wehle un vaglaische.<br />
+Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
+'''({{int:last}})''' = Unnaschied zude vorischi Ausgab, '''{{int:minoreditletter}}''' = gleni Ännarung.",
 'history-fieldset-title' => 'Gugg die Gschischd',
 'history-show-deleted' => 'Bloß gleschdi Saide zaische',
-'histfirst' => 'Ältschde',
-'histlast' => 'Naischde',
+'histfirst' => 'Äldschde',
+'histlast' => 'Naijschde',
 'historyempty' => '(lea)',
 
 # Revision feed
-'history-feed-item-nocomment' => '$1 om $2',
+'history-feed-title' => 'Ännarungsgschischd',
+'history-feed-item-nocomment' => '$1 õm $2',
 
 # Revision deletion
-'rev-delundel' => 'zaisch/verschdeggle',
+'rev-delundel' => 'zaisch/vaschdeggl',
 'rev-showdeleted' => 'zaische',
+'revisiondelete' => 'Lesche/Heaschdelle vun Ännarunge',
 'revdelete-show-file-submit' => 'Ja',
+'revdelete-hide-image' => 'Vaschdegglde Inhald',
+'revdelete-hide-name' => 'Vaschdeggls',
+'revdelete-hide-comment' => 'Vaschdeggls Resimee',
+'revdelete-hide-user' => 'Vaschdeggl Middawaidanome/IP',
 'revdelete-radio-same' => '(dudo nix ännare)',
 'revdelete-radio-set' => 'Ja',
 'revdelete-radio-unset' => 'Nä',
+'revdelete-log' => 'Grund:',
 'revdelete-submit' => 'Uff die {{PLURAL:$1|gewehld Asugab|gewehldi Ausgawe}} owende',
 'revdel-restore' => 'Sischdbakaid ännare',
 'revdel-restore-deleted' => 'gleschdi Ännarunge',
 'revdel-restore-visible' => 'sischdbari Ännarunge',
 'pagehist' => 'Gschischd vunde Said',
+'deletedhist' => 'Gleschde Gschischde',
+'revdelete-reasonotherlist' => 'Õnnare Grund',
 
 # History merging
+'mergehistory' => 'Gschischde zõmmefiere',
 'mergehistory-go' => 'Zaisch, wasma vaoinische konn',
+'mergehistory-submit' => 'Gschischde zõmmefiere',
+'mergehistory-reason' => 'Grund:',
 
 # Merge log
-'revertmerge' => 'Zammefiehrung rigggängisch mache',
+'revertmerge' => 'Zõmmefiehrung rigggängisch mache',
 
 # Diffs
 'history-title' => 'Ännarungsgschischd vun "$1"',
@@ -441,11 +558,11 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'searchsubtitleinvalid' => "Du hoschd '''$1''' gsuchd",
 'notitlematches' => 'Kän Saidedidl gfunne',
 'notextmatches' => 'Kä Iwwaoinschdimmunge midm Tegschd',
-'prevn' => 'vorisch {{PLURAL:$1|$1}}',
+'prevn' => 'ledschda {{PLURAL:$1|$1}}',
 'nextn' => 'negschd {{PLURAL:$1|$1}}',
-'prevn-title' => 'Frijari $1 {{PLURAL:$1|Ergewnis|Ergewnis}}',
-'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Ergewnis|Ergewnis}}',
-'shown-title' => 'Zaisch $1 {{PLURAL:$1|Ergewnis}} bro Said',
+'prevn-title' => 'Frijari $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
+'nextn-title' => 'Negschdi $1 {{PLURAL:$1|Eagewnis|Eagewnis}}',
+'shown-title' => 'Zaisch $1 {{PLURAL:$1|Eagewnis}} bro Said',
 'viewprevnext' => 'Gugg ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Dohods ä Said \"[[:\$1]]\".'''",
 'searchmenu-new' => "'''Mach die Said „[[:$1]]“ im Wiki.'''",
@@ -458,8 +575,10 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'searchprofile-project-tooltip' => 'In $1 gugge',
 'searchprofile-images-tooltip' => 'Gugg noch Bilda',
 'searchprofile-everything-tooltip' => 'Such iwwaraal (a wuma dischbedierd)',
-'searchprofile-advanced-tooltip' => 'Gugg in onare Nomensreum',
+'searchprofile-advanced-tooltip' => 'Gugg in õnnare Nõmensreum',
 'search-result-size' => '$1 ({{PLURAL:$2|1 Word|$2 Wärda}})',
+'search-result-category-size' => '{{PLURAL:$1|1 Said|$1 Saide}} ({{PLURAL:$2|1 Sachgrubb|$2 Sachgrubbe}}, {{PLURAL:$3|1 Dadai|$3 Dadaije}})',
+'search-result-score' => 'Bdaidung: $1%',
 'search-redirect' => '(Waidalaidung $1)',
 'search-section' => '(Abschnidd $1)',
 'search-suggest' => 'Hoschd gemäänd: $1',
@@ -468,11 +587,12 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'search-interwiki-more' => '(meh)',
 'search-relatedarticle' => 'Vawond',
 'mwsuggest-disable' => 'Schald Voaschlesch ab',
+'searcheverything-enable' => 'Gugg iwwaraal',
 'searchrelated' => 'vawond',
 'searchall' => 'alle',
-'showingresultsheader' => "{{PLURAL:$5|Ergewnis '''$1''' vun '''$3'''|Ergewnis '''$1–$2''' vun '''$3'''}} fa '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|Eagewnis '''$1''' vun '''$3'''|Eagewnis '''$1–$2''' vun '''$3'''}} fa '''$4'''",
 'nonefound' => "'''Hiiwais:''' S werre standardmäßich numme e Dail Namensraim durchsucht. Setz ''all:'' vor Dai Suchbegriff zum alle Saide (mit Dischbediersaide, Voalaache usw.) durchsuche odder direkt de Name vum Namensraum, wu durchsucht werre sell.",
-'search-nonefound' => 'Fa die Such hods kä Ergewnis.',
+'search-nonefound' => 'Kä Eagewnis vunde Õfroch.',
 'powersearch' => 'Erwaiterte Such',
 'powersearch-legend' => 'Erwaiterte Such',
 'powersearch-ns' => 'In de Namensraim suche:',
@@ -485,8 +605,11 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 # Preferences page
 'preferences' => 'Obzione',
 'mypreferences' => 'Oischdellunge',
+'datedefault' => 'Kä Oischdellunge',
 'prefs-watchlist' => 'Beowachdungslischd',
+'prefs-watchlist-edits-max' => 'Hegschdi Õzahl: 1000',
 'prefs-misc' => 'Schunschdisches',
+'prefs-rendering' => 'Uffdridd',
 'saveprefs' => 'Oischdellunge schbaischere',
 'resetprefs' => 'Oischdellunge vawerfe',
 'prefs-editing' => 'Schaffe',
@@ -496,26 +619,41 @@ Erklärung: '''({{int:cur}})''' = Unnerschied zu jetzert,
 'resultsperpage' => 'Dreffa bro Said',
 'stub-threshold-disabled' => 'Abgschdeld',
 'guesstimezone' => 'Aus em Browser iwwernemme',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Õmerika',
+'timezoneregion-antarctica' => 'Õngdagdika',
+'timezoneregion-arctic' => 'Aadigk',
+'timezoneregion-asia' => 'Asije',
+'timezoneregion-atlantic' => 'Adlõndischa Ozeõn',
+'timezoneregion-australia' => 'Auschdralije',
 'timezoneregion-europe' => 'Oirobba',
+'timezoneregion-indian' => 'Indischa Ozeõn',
+'timezoneregion-pacific' => 'Pazifischa Ozeõn',
 'prefs-searchoptions' => 'Nochgugge',
+'default' => 'Schdondad',
 'youremail' => 'E-Mail:',
-'yourrealname' => 'Birschalischa Nome:',
+'username' => '{{GENDER:$1|Middawaida}}:',
+'uid' => '{{GENDER:$1|Middawaida}}-Numma:',
+'prefs-memberingroups' => '{{GENDER:$2|Middglied}} vun {{PLURAL:$1|Grubb|Grubbe}}:',
+'yourrealname' => 'Birschalischa Nõme:',
 'yourlanguage' => 'Schbrooch:',
 'yournick' => 'Naiji Unnaschfrid',
 'yourgender' => 'Gschleschd:',
 'gender-unknown' => 'Ghoim gkalde',
 'gender-male' => 'Männlisch',
 'gender-female' => 'Waiblisch',
-'prefs-help-email-others' => 'Konschd a wehle, ob onnare disch iwwan Lingg uff doina Dischbedier-Said oschbresche kennen.
-Doi Meil-Address isch ned zaisch nix waida.',
+'prefs-help-email' => 'E-mail muss ned soi, awwa wead fas naijsedze vum Kennwoad bneedischd, wonns vagesse hoschd.',
+'prefs-help-email-others' => 'Konschd a wehle, ob õnnare disch iwwan Lingg uff doina Dischbedier-Said õschbresche kennen.
+Doi Address werd ned gzaischd, wõnse midda babbln.',
 'prefs-diffs' => 'Unaschied',
 
 # User rights
 'userrights-groupsmember' => 'Midglied vun:',
+'userrights-reason' => 'Grund:',
 
 # Groups
 'group' => 'Grubb:',
-'group-user' => 'Benudza',
+'group-user' => 'Middawaida',
 'group-bot' => 'Bots',
 'group-sysop' => 'Adminischdradore',
 'group-bureaucrat' => 'Birograde',
@@ -528,39 +666,46 @@ Doi Meil-Address isch ned zaisch nix waida.',
 'grouppage-sysop' => '{{ns:project}}:Adminischtratore',
 
 # Rights
+'right-read' => 'Saide leese',
+'right-edit' => 'Õnde Saide schaffe',
+'right-createpage' => 'Saide mache',
+'right-createtalk' => 'Dischbediersaide mache',
 'right-move' => 'Said bwesche',
 'right-move-subpages' => 'Said midde Unasaide bwesche',
 'right-movefile' => 'Saide vaschiewe',
 'right-upload' => 'Dadaije nufflade',
+'right-upload_by_url' => 'Dadaije vunna Address nufflaade',
 'right-delete' => 'Saide lesche',
+'right-undelete' => 'Said widdaheaschdelle',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Naiaameldungs-Logbuch',
+'newuserlogpage' => 'Naimeldungs-Logbuch',
 
 # User rights log
-'rightslog' => 'Benutzerrecht-Logbuch',
+'rightslog' => 'Middawaidareschd-Logbuch',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'die Said beawaide',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|Ännerung|Ännerunge}}',
+'nchanges' => '$1 {{PLURAL:$1|Ännarung|Ännarunge}}',
 'recentchanges' => 'Ledschdi Ännarunge',
-'recentchanges-legend' => 'Wehl ä Aazaisch fa die ledschdi Ännarunge',
-'recentchanges-feed-description' => 'Di letschte Ännerunge vun {{SITENAME}} in des Feed aigewwe.',
+'recentchanges-legend' => 'Wehl ä Õzaisch fa die ledschde Ännarunge',
+'recentchanges-feed-description' => 'Ledschde Ännarunge vun {{SITENAME}} im Feed oigewwe.',
 'recentchanges-label-newpage' => 'Domid magschd ä naiji Said',
-'recentchanges-label-minor' => "S'ische glänni Beawaidung",
+'recentchanges-label-minor' => "S'ische glenni Beawaidung",
 'recentchanges-label-bot' => 'Ännarunge duaschn Bod',
-'recentchanges-label-unpatrolled' => 'Die Änarung isch noch ned iwwabriefd worre',
-'rcnote' => "Aagezaicht {{PLURAL:$1|werd '''1''' Ännerung|werre die letschte '''$1''' Ännerunge}} {{PLURAL:$2|vum letschte Dach|in de letschte '''$2''' Dache}} (Stand: $4, $5)",
-'rclistfrom' => 'Zaisch die ledschd Ännarunge ab $1',
-'rcshowhideminor' => 'Klenne Ännarunge $1',
+'recentchanges-label-unpatrolled' => 'Die Ännarung isch noch nedd iwwabriefd worre',
+'rcnote' => "Õgzaischd {{PLURAL:$1|werd '''1''' Ännarung|werren die ledschde '''$1''' Ännarunge}} {{PLURAL:$2|vum ledschde Daach|inde ledschde '''$2''' Daache}} (Schdond: $4, $5)",
+'rcnotefrom' => "Unne sinn Ännarunge said '''$2''' (bis '''$1''').",
+'rclistfrom' => 'Zaisch die ledschde Ännarunge ab $1',
+'rcshowhideminor' => 'Glenni Ännarunge $1',
 'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Aagemeldte Benutzer $1',
-'rcshowhideanons' => 'Nit aagemeldt Benutzer $1',
+'rcshowhideliu' => 'Õgmelda Middawaida $1',
+'rcshowhideanons' => 'Ned õgmelda Middawaida $1',
 'rcshowhidepatr' => '$1 iwabriefde Ännarunge',
-'rcshowhidemine' => 'Mai Beawaidunge $1',
-'rclinks' => 'Zaich die letschde $1 Ännarunge inde ledschde $2 Dach<br />$3',
+'rcshowhidemine' => 'Moi Beawaidunge $1',
+'rclinks' => 'Zaisch die ledschde $1 Ännarunge inde ledschde $2 Daach<br />$3',
 'diff' => 'Unnaschied',
 'hist' => 'Gschischd',
 'hide' => 'vaschdeggle',
@@ -568,18 +713,19 @@ Doi Meil-Address isch ned zaisch nix waida.',
 'minoreditletter' => 'k',
 'newpageletter' => 'N',
 'boteditletter' => 'B',
+'rc_categories' => 'Oigschrengd uff Sachgrubbe (abgdeeld middm "|")',
 'rc_categories_any' => 'Ebbes',
 'rc-enhanced-expand' => 'Änzlhaide zaische (dozu brauchds JavaScript)',
-'rc-enhanced-hide' => 'Ogawe vaschdeggle',
+'rc-enhanced-hide' => 'Õgawe vaschdeggle',
 
 # Recent changes linked
-'recentchangeslinked' => 'Was on verlinggde Saide gännad worre isch',
+'recentchangeslinked' => 'Was õn valinggde Saide gännad worre isch',
 'recentchangeslinked-feed' => 'Ännarunge on valinggde Saide',
-'recentchangeslinked-toolbox' => 'Ännarunge on verlingde Saide',
-'recentchangeslinked-title' => 'Ännarunge on Saide, wu „$1“ druff verlinggd',
-'recentchangeslinked-noresult' => 'Inde Zaid ischdo nix gännad worre.',
-'recentchangeslinked-summary' => "Die Lischd zaischd ledschde Ännarunge, vunna bschdimmde Said, wu do valinggd isch (odda zu Midglied vuna bschdimmde Kadegorije isch).
-Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
+'recentchangeslinked-toolbox' => 'Ännarunge uff verlingde Saide',
+'recentchangeslinked-title' => 'Ännarunge õn Saide, wu „$1“ druff verlinggd',
+'recentchangeslinked-noresult' => 'Do isch nix gännad worre inde Zaid.',
+'recentchangeslinked-summary' => "Die Lischd zaischd ledschdi Ännarunge, vunna bschdimmde Said, wu do valinggd isch (odda ä Midglied vunna bschdimmde Sachgrubb isch).
+Saide uff [[Special:Watchlist|Doina Beowachdungslischd]] sinn '''fedd'''.",
 'recentchangeslinked-page' => 'Saide:',
 'recentchangeslinked-to' => 'Zaisch Ännarunge uff Saide, wu do her valinggd sinn',
 
@@ -590,7 +736,7 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 'filedesc' => 'Iwwabligg',
 'fileuploadsummary' => 'Iwwabligg:',
 'savefile' => 'Dadai schbaischere',
-'uploadedimage' => 'hod „[[$1]]“ nuffglade',
+'uploadedimage' => 'hodd „[[$1]]“ nuffglade',
 
 # Lock manager
 'lockmanager-notlocked' => "„$1“ hod ned uffgmachd were kenne, s'isch ganed gschberd gwesd.",
@@ -611,7 +757,7 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 # File description page
 'file-anchor-link' => 'Dadai',
 'filehist' => 'Dadaigschischd',
-'filehist-help' => 'Drigg uff e Zaidpunggd zum aazaische, wie s dord ausgseh hod.',
+'filehist-help' => 'Drigg uffn Zaidpunggd zum õzaische, wies dord ausgseje hodd.',
 'filehist-deleteall' => 'alles lesche',
 'filehist-deleteone' => 'lesche',
 'filehist-revert' => 'zriggsedze',
@@ -619,13 +765,15 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 'filehist-datetime' => 'Zaidpungd',
 'filehist-thumb' => 'Gleenes Bild',
 'filehist-thumbtext' => 'Skizz fa die Ausgab vum $1',
-'filehist-user' => 'Benudzer',
+'filehist-user' => 'Middawaida',
 'filehist-dimensions' => 'Maß',
-'filehist-comment' => 'Aißarung',
+'filehist-comment' => 'Oißarung',
 'imagelinks' => 'Dadaivawendung',
-'linkstoimage' => 'Die {{PLURAL:$1|Said verwaisd|$1 Saide verwaise}} uff die Datei:',
-'nolinkstoimage' => 'Do hods kä Said, wu dohea zaischd.',
+'linkstoimage' => 'Die {{PLURAL:$1|Said vawaisd|$1 Saide vawaisn}} uff die Dadai:',
+'nolinkstoimage' => 'Do hodds kä Said, wu dohea zaischd.',
 'sharedupload' => 'Die Datei isch vun $1 un s kann sai, dass se ach vun annere Projekt gebraucht werd.',
+'sharedupload-desc-here' => 'Die Dadai isch vun $1 un konn a wuonaschda bnuzd werre.
+Ä Bschraiwung finschd [$2 Dadaibschraiwungssaid] unne.',
 'uploadnewversion-linktext' => 'E naiere Version vun derre Datei hochlade',
 
 # File deletion
@@ -639,7 +787,7 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 'download' => 'Runalaade',
 
 # Random page
-'randompage' => 'Irschnd en Adiggl',
+'randompage' => 'Irschndn Adiggl',
 
 # Statistics
 'statistics' => 'Schdadischdigge',
@@ -654,18 +802,38 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
-'nmembers' => '$1 {{PLURAL:$1|Dailnemma|Dailnemma}}',
-'prefixindex' => 'Alle Saide (mid Präfix)',
+'ncategories' => '$1 {{PLURAL:$1|Sachgrubb|Sachgrubbe}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
+'nlinks' => '$1 {{PLURAL:$1|Lingg|Linggs}}',
+'nmembers' => '$1 {{PLURAL:$1|Middawaida|Middawaida}}',
+'nrevisions' => '$1 {{PLURAL:$1|Ännarung|Ännarunge}}',
+'nimagelinks' => 'Used on $1 {{PLURAL:$1|Said|Saide}}',
+'ntransclusions' => 'oigsedzd uff $1 {{PLURAL:$1|Said|Saide}}',
+'uncategorizedpages' => 'Said ohne Sachgrubb',
+'uncategorizedcategories' => 'Sachgrubb ohne Sachgrubb',
+'uncategorizedimages' => 'Dadai ohne Sachgrubb',
+'uncategorizedtemplates' => 'Vorlach ohne Sachgrubb',
+'unusedcategories' => 'Vawaisdi Sachgrubb',
+'unusedimages' => 'Vawaisde Dadaije',
+'popularpages' => 'Bliewbde Saide',
+'wantedcategories' => 'Gwinschde Sachgrubbe',
+'wantedpages' => 'Gwinschde Saide',
+'mostlinkedcategories' => 'Nizlischi Sachgrubbe',
+'mostlinkedtemplates' => 'Niylischi Vorlache',
+'mostcategories' => 'Saide midd õm maigschde Sachgrubbe',
+'prefixindex' => 'Alle Saide (midd Voasilw)',
 'listusers-editsonly' => 'Zaisch bloß Bnudza mid Baidräsch',
+'usercreated' => '{{GENDER:$3|Gmachd}} vun $1 om $2',
 'newpages' => 'Naije Saide',
-'move' => 'Verschiewe',
+'move' => 'Vaschiewe',
 'movethispage' => 'Die Said verschiewe',
-'pager-newer-n' => '{{PLURAL:$1|negschte 1|negschte $1}}',
-'pager-older-n' => '{{PLURAL:$1|vorich 1|voriche $1}}',
+'unusedcategoriestext' => 'Die Sachgrubb hodds, a wonnse vun känna onnare Said odda Sachgrubb gnumme werd.',
+'pager-newer-n' => '{{PLURAL:$1|negschd 1|negschd $1}}',
+'pager-older-n' => '{{PLURAL:$1|vorisch 1|vorische $1}}',
 
 # Book sources
 'booksources' => 'Buchgwelle',
-'booksources-search-legend' => 'No Buchquelle suche',
+'booksources-search-legend' => 'Noch Buchgwelle gugge',
 'booksources-go' => 'Geh',
 
 # Special:Log
@@ -683,17 +851,30 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 'allpagessubmit' => 'Zaische',
 
 # Special:Categories
-'categories' => 'Kadegorije',
+'categories' => 'Sachgrubbe',
+'categoriespagetext' => 'Folschndi {{PLURAL:$1|Sachgrubb hodd|Sachgrubbe hawen}} Saide odda Dadaije. [[Special:UnusedCategories|Ubnudze Sachgrubbe]] werren do nedd gzaischd. Gugg a uffde [[Special:WantedCategories|gwinschde Sachgrubbe]].',
+'categoriesfrom' => 'Zaisch Sachgrubbe õgfonge middt:',
+
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'Baidräsch',
 
 # Special:LinkSearch
 'linksearch' => 'Exderne Lings',
+'linksearch-pat' => 'Suchmuschda',
 'linksearch-line' => '$1 isch vun $2 valinggd',
 
+# Special:ListUsers
+'listusers-submit' => 'Zaische',
+'listusers-noresult' => 'Kä Middawaida gfunne',
+'listusers-blocked' => '(gschberd)',
+
 # Special:ListGroupRights
-'listgrouprights-members' => '(Midgliederlischd)',
+'listgrouprights-group' => 'Grubb',
+'listgrouprights-members' => '(Midgliedalischd)',
 
 # Email user
-'emailuser' => 'E-Mail on de Benutzer',
+'emailuser' => 'E-Mail õnde Middawaida',
+'emailusername' => 'Middawaidanõme:',
 'emailfrom' => 'Vum:',
 'emailto' => 'Fa:',
 'emailsubject' => 'Bdreff:',
@@ -704,15 +885,14 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischd]] sinn '''fedd'''.",
 'watchlist' => 'Beowachdungslischd',
 'mywatchlist' => 'Beowachdungslischd',
 'watchlistfor2' => 'Vun $1 $2',
-'addedwatchtext' => "Die Said \"[[:\$1]]\" isch zu Doina [[Special:Watchlist|Beowachdungslischt]] zugfieschd worre.
-Zukinfdischi Ännarunge onde Said unde Dischbediersaid, wu dzu kead, werren doo aagzaischd, un die Said werd '''fedd''' aagzaisch inde [[Special:RecentChanges|Ledschdi Ännarunge]] domidmas efacha finne konn.",
+'addedwatchtext' => "Die Said \"[[:\$1]]\" isch zu doina [[Special:Watchlist|Beowachdungslischd]] zugfieschd worre. Zukinfdischi Ännarunge õnde Said unde Dischbediersaid, wu dzu kead, werren doo õgzaischd, un die Said werd '''fedd''' inde [[Special:RecentChanges|Ledschdi Ännarunge]] õgzaischd domidmas efacha finne konn.",
 'removedwatchtext' => 'D Said "[[:$1]]" isch aus [[Special:Watchlist|Dainer Beowachdungslischt]] rausgenumme worre.',
 'watch' => 'Beowachde',
 'watchthispage' => 'Die Said beowachde',
-'unwatch' => 'Nimmi beowachde',
-'watchlist-details' => 'S hot {{PLURAL:$1|$1 Said|$1 Saide}} uff Dainer Beowachdungslischt, Dischbediersaide zelle nid.',
-'wlshowlast' => 'Die letschte $1 Stunne $2 Dache $3 zaiche',
-'watchlist-options' => 'Optione vun de Beowachdungslischt',
+'unwatch' => 'Nemme beowachde',
+'watchlist-details' => 'S hodd {{PLURAL:$1|$1 Said|$1 Saide}} uff doina Beowachdungslischd, Dischbediersaide zeeln nedd.',
+'wlshowlast' => 'Die ledschde $1 Schdunnd $2 Daach $3 zaische',
+'watchlist-options' => 'Meschlischkaide vunde Beowachdungslischd',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Beowachde ...',
@@ -726,7 +906,7 @@ Zukinfdischi Ännarunge onde Said unde Dischbediersaid, wu dzu kead, werren doo
 'delete-legend' => 'Lesche',
 'confirmdeletetext' => 'Du bisch debai e Said z lesche mid alle Versione.
 Bitte du bstätiche, dass Du des wllscht du, dass Du verstehsch, was des hääßt, un dass Du des machscht in Iwweraistimmung mit de [[{{MediaWiki:Policy-url}}|Richtline]].',
-'actioncomplete' => 'Agzion ferdisch',
+'actioncomplete' => 'Maßnohm ferdisch',
 'actionfailed' => 'Maßnohm gschaidad',
 'deletedtext' => '"$1" isch gelescht worre.
 Guck $2 fer e Lischt vun de letschte Leschunge.',
@@ -736,24 +916,24 @@ Guck $2 fer e Lischt vun de letschte Leschunge.',
 'deletereasonotherlist' => 'Annere Grund',
 
 # Rollback
-'rollbacklink' => 'Zeriggsedze',
+'rollbacklink' => 'Zriggsedze',
 
 # Protect
-'protectlogpage' => 'Saideschutz-Logbuch',
-'protectedarticle' => 'hod "[[$1]]" gschizd',
+'protectlogpage' => 'Saideschudz-Logbuch',
+'protectedarticle' => 'hodd "[[$1]]" gschizd',
 'modifiedarticleprotection' => 'hot de Schutzstatus vun "[[$1]]" gännert',
 'protectcomment' => 'Grund:',
 'protectexpiry' => 'Bis:',
 'protect_expiry_invalid' => 'Zaidraum isch nid gildich.',
 'protect_expiry_old' => 'Zaidraum licht in de Vergangehääd.',
 'protect-text' => "Du kannscht de Schutzstatus vun de Said '''$1''' aagucke un ännere.",
-'protect-locked-access' => "Dai Benutzerkonto hot ken Recht zum de Schutzstatus vun ener Said ze ännere.
-Do hot s di aktuelle Aistellunge vun de Said '''$1''':",
+'protect-locked-access' => "Doi Kondo hodd kä Reschd um de Schudzsdadus vunna Said zu ännare.
+Do hodds die Oischdellunge vunde Said '''$1''':",
 'protect-cascadeon' => 'Die Said isch gschizd, wail se {{PLURAL:$1|zu derre Said ghert|zu denne Saide ghert}}, wu e Kaskadesperrung gelt.
 Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uff d Kaskadesperrung.',
-'protect-default' => 'Alle Benudzer erlauwe',
+'protect-default' => 'Alle Middawaida erlauwe',
 'protect-fallback' => 'Bloß fa Laid mid "$1" Bereschdischung',
-'protect-level-autoconfirmed' => 'Naije un nid aagemeldte Benutzer schberre',
+'protect-level-autoconfirmed' => 'Naiji un nedd õgmeld Middawaida schberre',
 'protect-level-sysop' => 'Bloß fa Adminischdradore',
 'protect-summary-cascade' => 'Kaskade',
 'protect-expiring' => 'bis $1 (UTC)',
@@ -770,23 +950,23 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 # Undelete
 'undelete' => 'Widderherschdelle',
 'undeletebtn' => 'Widderherschdelle',
-'undeletelink' => 'aagucke/widda herschdelle',
-'undeleteviewlink' => 'Ogugge',
+'undeletelink' => 'õgugge/widda herschdelle',
+'undeleteviewlink' => 'Õgugge',
 'undeletereset' => 'Zuriggsedze',
 'undelete-show-file-submit' => 'Ja',
 
 # Namespace form on various pages
-'namespace' => 'Nomensraum',
+'namespace' => 'Nõmensraum',
 'invert' => 'Wahl dausche',
 'blanknamespace' => '(Schdadsaid)',
 
 # Contributions
-'contributions' => '{{GENDER:$1|Wasa gemachd hod}}',
-'contributions-title' => 'Benutzerbaidräch vun $1',
+'contributions' => '{{GENDER:$1|Wassa gemachd hodd}}',
+'contributions-title' => 'Middawaidabaidräsch vun $1',
 'mycontris' => 'Baidräsch',
-'contribsub2' => 'Fer $1 ($2)',
-'uctop' => '(akduell)',
-'month' => 'än Monad (un frija):',
+'contribsub2' => 'Fa $1 ($2)',
+'uctop' => '(geschewedisch)',
+'month' => 'än Monad (un frieja):',
 'year' => 'Abm Johr (un frieja):',
 
 'sp-contributions-newbies' => 'Zaisch nua Baidräsch vun naije Konde',
@@ -795,43 +975,44 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 'sp-contributions-logs' => 'Logbischa',
 'sp-contributions-talk' => 'Dischbediere',
 'sp-contributions-search' => 'Noch Baidräsch gugge',
-'sp-contributions-username' => 'IP-Adress odda Benudzernome:',
+'sp-contributions-username' => 'IP-Adress odda Middawaidanõme:',
 'sp-contributions-toponly' => 'Bloß agduelli Ännarunge zaische',
-'sp-contributions-submit' => 'Suche',
+'sp-contributions-submit' => 'Gugge',
 
 # What links here
 'whatlinkshere' => 'Was doher zaische dud',
-'whatlinkshere-title' => 'Saide wu uff "$1" verlinke',
+'whatlinkshere-title' => 'Saide wu uff "$1" valinggn',
 'whatlinkshere-page' => 'Said:',
-'linkshere' => "Die Saide valingge uff '''[[:$1]]''':",
+'linkshere' => "Die Saide valinggn uff '''[[:$1]]''':",
 'nolinkshere' => "Kä Said zaischd uff '''[[:$1]]'''.",
 'isredirect' => 'Waidalaidungsaid',
 'istemplate' => 'Vorlacheoibindung',
 'isimage' => 'Dadailingg',
-'whatlinkshere-prev' => '{{PLURAL:$1|vorich|voriche $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|vorisch|vorische $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|negschd|negschde $1}}',
 'whatlinkshere-links' => '← Linggs',
 'whatlinkshere-hideredirs' => '$1 Waidalaidunge',
-'whatlinkshere-hidetrans' => '$1 Vorlacheaibindunge',
+'whatlinkshere-hidetrans' => '$1 Vorlacheoibindunge',
 'whatlinkshere-hidelinks' => '$1 Linggs',
+'whatlinkshere-hideimages' => '$1 Dadailinggs',
 'whatlinkshere-filters' => 'Filda',
 
 # Block/unblock
-'blockip' => 'Benudzer bloggiere',
-'ipbsubmit' => 'Benudzer bloggiere',
-'ipboptions' => '2 Stunne:2 hours,1 Dach:1 day,3 Dache:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fer immer:infinite',
+'blockip' => 'Middawaida bloggiere',
+'ipbsubmit' => 'Middawaida bloggiere',
+'ipboptions' => '2 Schdunne:2 hours,1 Daach:1 day,3 Daach:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monad:1 month,3 Monad:3 months,6 Monad:6 months,1 Johr:1 year,Fa imma:infinite',
 'ipbotheroption' => 'onnari',
 'ipusubmit' => 'Die Adreß fraigewwe',
-'ipblocklist' => 'Gschberrdi IP-Adress un Benudzernome',
+'ipblocklist' => 'Gschberrdi IP-Adress un Middawaidanõme',
 'infiniteblock' => 'ubgrensd',
 'blocklink' => 'schberre',
 'unblocklink' => 'Sperr uffhewe',
 'change-blocklink' => 'Schberr ännare',
 'contribslink' => 'Baidräsch',
 'blocklogpage' => 'Schberrlogbuch',
-'blocklogentry' => 'hot [[$1]] gsperrt fer e Zaidraum vun $2 $3',
+'blocklogentry' => "hodd [[$1]] gschberrd fa'n Zaidraum vun $2 $3",
 'unblocklogentry' => 'hot d Sperr vun $1 uffghowwe',
-'block-log-flags-nocreate' => 'Aalesche vun Benudzerkonde isch gschberrd',
+'block-log-flags-nocreate' => 'Õleesche vun Konde isch gschberrd',
 
 # Developer tools
 'lockbtn' => 'Dadebongg schberre',
@@ -869,93 +1050,100 @@ Bitte nemm e annere Name.',
 Bitte duu se vun Hand zammefiehre.'''",
 'movedto' => 'vaschowe uff',
 'movetalk' => 'Dischbediersaid, wu dezu ghert, verschiewe',
-'movelogpage' => 'Verschiewungs-Logbuch',
+'movelogpage' => 'Vaschiewungs-Logbuch',
 'movereason' => 'Grund:',
 'revertmove' => 'Zurigg vaschiewe',
 'delete_and_move' => 'Lesche un Verschiewe',
 'delete_and_move_confirm' => 'Ja, Said lesche',
 
 # Export
-'export' => 'Saide expordiere',
+'export' => 'Saide rausgewe',
 'export-submit' => 'Saide exbordiere',
+'export-addcattext' => 'Saide vunde Sachgrubb dzufiesche:',
 
 # Namespace 8 related
-'allmessagesname' => 'Nome',
+'allmessagesname' => 'Nõme',
 'allmessagesdefault' => 'Vorgewene Tegschd',
 'allmessages-filter-modified' => 'Vaännad',
 
 # Thumbnails
 'thumbnail-more' => 'Mags greßa',
+'thumbnail_error' => 'Baim Voaschaubild ischwas falsch glaafe: $1',
 
 # Special:Import
 'import-interwiki-submit' => 'Impordiere',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Dai Benudzersaid',
-'tooltip-pt-mytalk' => 'Dai Said fas Dischbediere',
-'tooltip-pt-preferences' => 'Dai Aistellunge',
-'tooltip-pt-watchlist' => 'D Lischd vun Saide, wu du beowachde duschd',
-'tooltip-pt-mycontris' => 'Lischd vun Daine Baidräsch',
-'tooltip-pt-login' => 'Du konnschd disch aamelde, awwer du mugschd s nit',
-'tooltip-pt-logout' => 'Abmelde',
+'tooltip-pt-userpage' => 'Doi Miaddawaidasaid',
+'tooltip-pt-mytalk' => 'Doi Said fas Dischbediere',
+'tooltip-pt-preferences' => 'Doi Oischdellunge',
+'tooltip-pt-watchlist' => 'Lischd vun Saide, wu beowachde duschd',
+'tooltip-pt-mycontris' => 'Lischd vun doine Baidräsch',
+'tooltip-pt-login' => 'Du konnschd disch õmelde, awwa mugschd ned',
+'tooltip-pt-logout' => 'Uffhere',
 'tooltip-ca-talk' => 'Iwwa d Inhaldssaid dischbediere',
 'tooltip-ca-edit' => 'Du konnschd die Said beawaide.
 Bidde nemmde Vorschau-Gnobb vorm Schbaischare',
-'tooltip-ca-addsection' => 'E naie Abschnitt aaleche',
-'tooltip-ca-viewsource' => 'Die Said isch gschizd. Du konnschd awwa de Gwelltegschd aagugge.',
-'tooltip-ca-history' => 'Ledschde Versione vun derre Said',
+'tooltip-ca-addsection' => "N'naije Abschnidd õleche",
+'tooltip-ca-viewsource' => 'Die Said isch gschizd. Du konnschdda de Gwelltegschd õgugge.',
+'tooltip-ca-history' => 'Ledschdi Ausgawe vunde Said',
 'tooltip-ca-protect' => 'Die Said schidze',
 'tooltip-ca-delete' => 'Die Said lesche',
 'tooltip-ca-move' => 'Die Said vaschiewe',
-'tooltip-ca-watch' => 'Die Said zu Dainer Beowachdungslischd zufiesche',
-'tooltip-ca-unwatch' => 'Die Said aus Dainer Beowachdunschlischd wegnemme',
-'tooltip-search' => 'Gugg uff {{SITENAME}} noch',
-'tooltip-search-go' => 'Geh zu ere Said mid genää dem Namme, wenn s se gebbt',
+'tooltip-ca-watch' => 'Die Said zu doina Beowachdungslischd dzufiesche',
+'tooltip-ca-unwatch' => 'Die Said vun doina Beowachdunschlischd wegnemme',
+'tooltip-search' => 'Gugg uff {{SITENAME}} fa',
+'tooltip-search-go' => 'Geh zude Said midm Nõme, wonnses hodd',
 'tooltip-search-fulltext' => 'Gugg inde Said nochm Tegschd',
 'tooltip-p-logo' => 'Schdadsaid',
-'tooltip-n-mainpage' => 'Uff d Schdadsaid geje',
-'tooltip-n-mainpage-description' => 'Haubdsaid aagugge',
-'tooltip-n-portal' => 'Iwwers Brojegd, wude duu kannschd, wu ebbes finne duschd',
-'tooltip-n-currentevents' => 'Finn Auskinfd iwwa naiji Voafell',
-'tooltip-n-recentchanges' => 'Lischd vun de ledschde Ännarunge im Wiki',
-'tooltip-n-randompage' => 'Lad e zufellischi Said',
+'tooltip-n-mainpage' => "Uff d'Schdadsaid geje",
+'tooltip-n-mainpage-description' => 'Haubdsaid õgugge',
+'tooltip-n-portal' => 'Iwwas Brojegd, wu mache konnschd, wu ebbes finne duschd',
+'tooltip-n-currentevents' => 'Finn Auskinfd iwwas Naijischde',
+'tooltip-n-recentchanges' => 'Lischd vunde ledschde Ännarunge im Wiki',
+'tooltip-n-randompage' => 'Laad e zufellischi Said',
 'tooltip-n-help' => 'Do konschds rausfinne',
-'tooltip-t-whatlinkshere' => 'Lischd vun alle Wikisaide, wu do hie verlingd sinn',
-'tooltip-t-recentchangeslinked' => 'Ledschde Ännerunge in Saide, wu vun do verlinggd sin',
+'tooltip-t-whatlinkshere' => 'Lischd vun alle Wikisaide, wu dohie verlingd sinn',
+'tooltip-t-recentchangeslinked' => 'Ledschdi Ännarunge in Saide, wu vun do verlinggd sinn',
 'tooltip-feed-rss' => 'RSS feed fer die Said',
 'tooltip-feed-atom' => 'Atom-Feed fa die Said',
-'tooltip-t-contributions' => 'Die ledschde Baidräsch vum Benudzer aagugge',
-'tooltip-t-emailuser' => 'Dem Benutzer e E-Mail schicke',
+'tooltip-t-contributions' => 'Ledschdi Baidräsch vum Middawaida õgugge',
+'tooltip-t-emailuser' => 'Dem Middawaida e E-Mail schigge',
 'tooltip-t-upload' => 'Dadaije nufflade',
 'tooltip-t-specialpages' => 'Lischd vunde Schbezialsaide',
 'tooltip-t-print' => 'Druggausgab vunde Said',
-'tooltip-t-permalink' => 'E dauerhafte Link zu derre Version vun de Said',
-'tooltip-ca-nstab-main' => 'Inhald agugge',
-'tooltip-ca-nstab-user' => 'D Benudzersaid aagucke',
-'tooltip-ca-nstab-special' => 'Des isch e Spezialsaid, du kannscht d Said sälwerscht nit ännere',
-'tooltip-ca-nstab-project' => 'Brojegdsaid agugge',
-'tooltip-ca-nstab-image' => 'D Dadaisaid aaugugge',
-'tooltip-ca-nstab-template' => 'Vorlach aagugge',
-'tooltip-ca-nstab-category' => 'D Kadegoriesaid aagucke',
-'tooltip-minoredit' => 'Des als klenni Ännarung makiere',
-'tooltip-save' => 'Dai Ännerunge schbaischere',
-'tooltip-preview' => 'Guck Daine Ännerunge in de Vorschau aa, vor Du uff Spaichere driksch!',
-'tooltip-diff' => 'Guck, welle Ännerunge Du im Text gmacht hoscht',
-'tooltip-compareselectedversions' => 'D Unnaschied zwische denne zwee gwehlde Versione aagugge',
-'tooltip-watch' => 'Die Said zu Dainer Beowachdunglischd zufieche',
-'tooltip-rollback' => "„Zriggsedze“ machd alli Beawaidunge vum ledschde Midawaida rigg'gängisch",
-'tooltip-undo' => "„Zrigg“ machd nua die Ännarung rigg'gängich un zaischd ä Vorschau aa.
-Du kannschd e Grund in de Zommefassung aagewwe.",
+'tooltip-t-permalink' => "N'dauwahafde Lingg uff die Ausgab vunde Said",
+'tooltip-ca-nstab-main' => 'Inhald õgugge',
+'tooltip-ca-nstab-user' => 'Middawaidasaid õgugge',
+'tooltip-ca-nstab-special' => 'Des isch e Spezialsaid, du konnschd d Said selwaschd nedd ännare',
+'tooltip-ca-nstab-project' => 'Brojegdsaid õgugge',
+'tooltip-ca-nstab-image' => 'Dadaisaid õgugge',
+'tooltip-ca-nstab-template' => 'Vorlach õgugge',
+'tooltip-ca-nstab-category' => 'Sachgrubbsaid õgugge',
+'tooltip-minoredit' => 'Als gleeni Ännarung makiere',
+'tooltip-save' => 'Doi Ännarunge schbaischare',
+'tooltip-preview' => 'Guggda doi Ännarunge inde Vorschau õ, bvor uff Schbaischare drigschd!',
+'tooltip-diff' => 'Gugg, welschi Ännarunge im Tegschd gmachd hoschd',
+'tooltip-compareselectedversions' => 'D Unnaschied zwische denne zwee gwehlde Ausgawe õgugge',
+'tooltip-watch' => 'Die Said zu doina Beowachdunglischd zufiesche',
+'tooltip-rollback' => "„Zriggsedze“ machd alli Beawaidunge vum ledschde Middawaida rigg'gängisch",
+'tooltip-undo' => "„Zrigg“ machd nua die Ännarung rigg'gängich un zaischd ä Vorschau õ.
+Konnschdn Grund inde Zommefassung õgewwe.",
 'tooltip-summary' => 'Gebä koaz Resimee',
 
+# Info page
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Vaschdeggldi Sachgrubb|Vaschdegglde Sachgrubbe}} ($1)',
+'pageinfo-category-info' => 'Sachgrubb-Õgawe',
+'pageinfo-category-subcats' => 'Õzahl vun Unnagrubbe',
+
 # Browsing diffs
-'previousdiff' => '← Ältere Bearwaidung',
+'previousdiff' => '← Äldari Beawaidung',
 'nextdiff' => 'Naijari Beawaidung →',
 
 # Media information
-'file-info-size' => '$1 × $2 Pixels, Dateigreß: $3, MIME-Type: $4',
+'file-info-size' => '$1 × $2 Pixels, Dadaigreß: $3, MIME-Type: $4',
 'file-nohires' => 'Ke heheri Ufflesung vafieschba.',
-'svg-long-desc' => 'SVG-Datei, Basisgreß $1 × $2 Pixels, Dateigreß: $3',
+'svg-long-desc' => 'SVG-Datei, Grundgreß $1 × $2 Pixels, Dadaigreß: $3',
 'show-big-image' => 'Volli Ufflesung',
 
 # Special:NewFiles
@@ -963,20 +1151,18 @@ Du kannschd e Grund in de Zommefassung aagewwe.",
 'ilsubmit' => 'Such',
 
 # Bad image list
-'bad_image_list' => 'Formad:
-
-nur Zaile, wu mid eme * aafange werre bericksichdischd.
-De erschd Link muss e Link zu ere unerwinschd Dadei sai.
-Annere Links in der glaiche Zail werre als Ausnahme behanneld, d. h. Saide, wu d Dadei drin vorkumme därfd.',
+'bad_image_list' => 'Uffbau: bloß Zaile, wu midm * õfonge werren briggsischdischd.
+De erschd Lingg mussn Lingg zu änna uuerwinschde Dadai soi.
+Õnnare Linggs inde glaische Zail werren als Ausnõhm gnumme, des heesd, Saide, wu inde Dadai vorkumme dirfn.',
 
 # Metadata
-'metadata' => 'Metadata',
-'metadata-help' => 'Die Dadai hod waideri Ogawe, waaschoinlisch vunde Digidalkomara odda vum Skänna, wuse mid gmachd worre isch.
-Wpnn die Dadai vaännad worre isch, donn konns soi, daß zusedzlischi Ogawe fa die vaännad Dadai nemme rischdisch sin.',
+'metadata' => 'Medadaade',
+'metadata-help' => 'Die Dadai hodd waidari Õgawe, waschoinlisch vunde Digidalkõmara odda vum Skänna, wumase mid gmachd hodd.
+Wonn die Dadai vaännad worre isch, donn konns soi, daß zusedzlischi Õgawe fa die vaännad Dadai nemme rischdisch sinn.',
 'metadata-expand' => 'Erwaiterte Details aazaiche',
 'metadata-collapse' => 'Erwaiterte Details versteckeln',
-'metadata-fields' => 'Die EXIF-Medadaade werren inde Bild-Bschraiwung a ogzaischd, wonn die Medadaade-Tabelle verschdegld isch.
-Annere Medadaade sinn noamalawais verschdegld.
+'metadata-fields' => 'Die EXIF-Medadaade werren inde Bild-Bschraiwung a õgzaischd, wonn die Medadaade-Tabell vaschdegld isch.
+Õnnare Medadaade sinn noamalawais vaschdegld.
 * make
 * model
 * datetimeoriginal
@@ -991,11 +1177,15 @@ Annere Medadaade sinn noamalawais verschdegld.
 * gpslongitude
 * gpsaltitude',
 
+# Exif tags
+'exif-iimcategory' => 'Sachgrubb',
+'exif-iimsupplementalcategory' => 'Ergenzndi Sachgrubbe',
+
 'exif-gaincontrol-0' => 'Kään',
 
 # External editor support
-'edit-externally' => 'Die Datei bearwaide mit ener externe Aawendung',
-'edit-externally-help' => '(Guck uff [//www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fer meh Informatione)',
+'edit-externally' => 'Die Dadai midm õnnare Weagzaisch beawaide',
+'edit-externally-help' => '(Gugg uff [//www.mediawiki.org/wiki/Manual:External_editors Inschdallazionsõwaisunge] fa mea Auskinfd)',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
@@ -1003,9 +1193,9 @@ Annere Medadaade sinn noamalawais verschdegld.
 'monthsall' => 'alle',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Die wichdiche Ännerunge aagucke',
-'watchlisttools-edit' => 'D Beowachdunglischt aagucke un bearwaide',
-'watchlisttools-raw' => 'ime große Textfeld bearwaide',
+'watchlisttools-view' => 'Die wischdische Ännarunge õgugge',
+'watchlisttools-edit' => 'Beowachdunglischd õgugge un beawaide',
+'watchlisttools-raw' => 'Im große Tegschdfeld beawaide',
 
 # Core parser functions
 'duplicate-defaultsort' => '\'\'\'Baßma uff:\'\'\' De Schlissl "$2" dudde frijare Schlissl "$1" iwwaschraiwe.',
@@ -1029,4 +1219,18 @@ Annere Medadaade sinn noamalawais verschdegld.
 # Search suggestions
 'searchsuggest-search' => 'Suche',
 
+# API errors
+'api-error-unknownerror' => 'Uubekonde Irrdumm: "$1".',
+
+# Durations
+'duration-seconds' => '$1 {{PLURAL:$1|Sekund|Sekunde}}',
+'duration-minutes' => '$1 {{PLURAL:$1|Minud|Minude}}',
+'duration-hours' => '$1 {{PLURAL:$1|Schdund|Schdunde}}',
+'duration-days' => '$1 {{PLURAL:$1|Daach|Daache}}',
+'duration-weeks' => '$1 {{PLURAL:$1|Woch|Woche}}',
+'duration-years' => '$1 {{PLURAL:$1|Joa|Joare}}',
+'duration-decades' => '$1 {{PLURAL:$1|Jaazehnd|Jaazehnde}}',
+'duration-centuries' => '$1 {{PLURAL:$1|Jaahunnad|Jaahunnade}}',
+'duration-millennia' => '$1 {{PLURAL:$1|Jaadausnd|Jaadausnde}}',
+
 );
index f03ea10..40dedaf 100644 (file)
@@ -18,6 +18,7 @@
  * @author Derbeth
  * @author Equadus
  * @author Fizykaa
+ * @author Geitost
  * @author Herr Kriss
  * @author Holek
  * @author Jwitos
@@ -308,7 +309,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Ukryj sprawdzone edycje w ostatnich zmianach',
 'tog-newpageshidepatrolled' => 'Ukryj sprawdzone strony na liście nowych stron',
 'tog-extendwatchlist' => 'Pokaż na liście obserwowanych wszystkie zmiany, nie tylko ostatnie',
-'tog-usenewrc' => 'Grupuj zmiany według stron na liście ostatnich zmian i obserwowanych (Wymaga JavaScript)',
+'tog-usenewrc' => 'Grupuj zmiany według stron na liście ostatnich zmian i obserwowanych (wymaga JavaScript)',
 'tog-numberheadings' => 'Automatyczna numeracja nagłówków',
 'tog-showtoolbar' => 'Pokaż pasek narzędzi (JavaScript)',
 'tog-editondblclick' => 'Podwójne kliknięcie rozpoczyna edycję (JavaScript)',
@@ -502,6 +503,7 @@ $messages = array(
 'create-this-page' => 'Utwórz tę stronę',
 'delete' => 'Usuń',
 'deletethispage' => 'Usuń tę stronę',
+'undeletethispage' => 'Przywróć tę stronę',
 'undelete_short' => 'odtwórz {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}',
 'viewdeleted_short' => 'Podgląd {{PLURAL:$1|usuniętej|$1 usuniętych}} wersji',
 'protect' => 'Zabezpiecz',
@@ -555,7 +557,6 @@ $1',
 'disclaimers' => 'Informacje prawne',
 'disclaimerpage' => 'Project:Informacje prawne',
 'edithelp' => 'Pomoc w edycji',
-'edithelppage' => 'Help:Jak edytować stronę',
 'helppage' => 'Help:Spis treści',
 'mainpage' => 'Strona główna',
 'mainpage-description' => 'Strona główna',
@@ -703,6 +704,8 @@ $2',
 'namespaceprotected' => "Nie masz uprawnień do edytowania stron w przestrzeni nazw '''$1'''.",
 'customcssprotected' => 'Nie jesteś uprawniony do edytowania tej strony CSS, ponieważ zawiera ona ustawienia osobiste innego użytkownika.',
 'customjsprotected' => 'Nie jesteś uprawniony do edytowania tej strony JavaScript, ponieważ zawiera ona ustawienia osobiste innego użytkownika.',
+'mycustomcssprotected' => 'Nie masz uprawnień do edytowania tej strony CSS.',
+'mycustomjsprotected' => 'Nie masz uprawnień do edytowania tej strony JavaScript.',
 'ns-specialprotected' => 'Stron specjalnych nie można edytować.',
 'titleprotected' => "Utworzenie strony o tej nazwie zostało zablokowane przez [[User:$1|$1]].
 Uzasadnienie blokady: ''$2''.",
@@ -754,7 +757,7 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'notloggedin' => 'Nie jesteś zalogowany',
 'userlogin-noaccount' => 'Nie masz konta?',
 'userlogin-joinproject' => 'Dołącz do {{GRAMMAR:D.lp|{{SITENAME}}}}',
-'nologin' => "Nie masz konta? '''$1'''.",
+'nologin' => 'Nie masz konta? $1.',
 'nologinlink' => 'Zarejestruj się',
 'createaccount' => 'Załóż nowe konto',
 'gotaccount' => "Masz już konto? '''$1'''.",
@@ -762,7 +765,7 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji]].',
 'userlogin-resetlink' => 'Zapomniałeś danych do zalogowania się?',
 'userlogin-resetpassword-link' => 'Nie pamiętasz hasła?',
 'helplogin-url' => 'Help:Logowanie',
-'userlogin-helplink' => '<p></p>',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc z logowaniem]]',
 'createacct-join' => 'Wpisz poniżej swoje dane.',
 'createacct-emailrequired' => 'Adres e‐mail',
 'createacct-emailoptional' => 'Adres e-mail (opcjonalnie)',
@@ -840,7 +843,7 @@ Wpisz poprawny adres e‐mail lub wyczyść pole.',
 'cannotchangeemail' => 'Na tej wiki nie ma możliwości zmiany adresu e‐mail przypisanego do konta.',
 'emaildisabled' => 'Ta witryna nie może wysłać wiadomości e-mail.',
 'accountcreated' => 'Konto zostało utworzone',
-'accountcreatedtext' => 'Konto dla $1 zostało utworzone.',
+'accountcreatedtext' => 'Konto dla [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|dyskusja]]) zostało utworzone.',
 'createaccount-title' => 'Utworzenie konta w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
 'createaccount-text' => 'Ktoś utworzył w {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4), podając Twój adres e‐mail, konto „$2”. Aktualnym hasłem jest „$3”.
 Zaloguj się teraz i je zmień.
@@ -880,6 +883,8 @@ Być może właśnie zmienił{{GENDER:|eś|aś|eś(‐aś)}} swoje hasło lub po
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
+'passwordreset-text-one' => 'Wypełnij ten formularz, aby zresetować hasło.',
+'passwordreset-text-many' => '{{PLURAL:$1|Aby zresetować hasło, wpisz jedną z danych poniżej}}',
 'passwordreset-legend' => 'Zresetuj hasło',
 'passwordreset-disabled' => 'Na tej wiki wyłączono możliwość resetowania haseł.',
 'passwordreset-emaildisabled' => 'Wysyłanie emaili zostało wyłączone na tej wiki',
@@ -1369,7 +1374,6 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'searchmenu-legend' => 'Opcje wyszukiwania',
 'searchmenu-exists' => "* Strona '''[[$1]]'''",
 'searchmenu-new' => "'''Utwórz stronę „[[:$1|$1]]” na tej wiki.'''",
-'searchhelp-url' => 'Help:Spis treści',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglądaj strony zaczynające się od tego przedrostka]]',
 'searchprofile-articles' => 'Strony',
 'searchprofile-project' => 'Strony pomocy i projektu',
@@ -1548,7 +1552,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'userrights-groups-help' => 'Możesz zmienić przynależność tego użytkownika do podanych grup.
 * Zaznaczone pole oznacza przynależność użytkownika do danej grupy.
 * Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.
-* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu z grupy.',
+* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.',
 'userrights-reason' => 'Powód',
 'userrights-no-interwiki' => 'Nie masz dostępu do edycji uprawnień na innych wiki.',
 'userrights-nodatabase' => 'Baza danych $1 nie istnieje lub nie jest lokalna.',
@@ -1621,12 +1625,14 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'right-ipblock-exempt' => 'Obejście blokad, automatycznych blokad i blokad zakresów, adresów IP',
 'right-proxyunbannable' => 'Obejście automatycznych blokad proxy',
 'right-unblockself' => 'Odblokowanie samego siebie',
-'right-protect' => 'Zmiana poziomu zabezpieczenia i dostęp do edycji zabezpieczonych stron',
+'right-protect' => 'Zmiana stopnia zabezpieczenia i dostęp do edycji zabezpieczonych stron',
 'right-editprotected' => 'Dostęp do edycji zabezpieczonych stron (bez zabezpieczenia dziedziczonego)',
 'right-editinterface' => 'Edycja interfejsu użytkownika',
 'right-editusercssjs' => 'Edycja plików CSS i JS innych użytkowników',
 'right-editusercss' => 'Edycja plików CSS innych użytkowników',
 'right-edituserjs' => 'Edycja plików JS innych użytkowników',
+'right-editmyusercss' => 'Edytuj własne pliki CSS',
+'right-editmyuserjs' => 'Edytuj własne pliki JavaScript',
 'right-rollback' => 'Szybkie wycofanie zmian wprowadzonych przez użytkownika, który jako ostatni edytował jakąś stronę',
 'right-markbotedits' => 'Oznaczanie rewertu jako edycji bota',
 'right-noratelimit' => 'Brak ograniczeń przepustowości',
@@ -1878,11 +1884,11 @@ $1',
 'upload-proto-error-text' => 'Zdalne przesyłanie plików wymaga podania adresu URL zaczynającego się od <code>http://</code> lub <code>ftp://</code>.',
 'upload-file-error' => 'Błąd wewnętrzny',
 'upload-file-error-text' => 'Wystąpił błąd wewnętrzny podczas próby utworzenia tymczasowego pliku na serwerze.
-Skontaktuj się z [[Special:ListUsers/sysop|administratorem systemu]].',
+Skontaktuj się z [[Special:ListUsers/sysop|administratorem]].',
 'upload-misc-error' => 'Nieznany błąd przesyłania',
 'upload-misc-error-text' => 'Wystąpił nieznany błąd podczas przesyłania.
 Sprawdź, czy podany adres URL jest poprawny i dostępny, a następnie spróbuj ponownie.
-Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sysop|administratorem systemu]].',
+Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sysop|administratorem]].',
 'upload-too-many-redirects' => 'URL zawiera zbyt wiele przekierowań',
 'upload-unknown-size' => 'Nieznany rozmiar',
 'upload-http-error' => 'Wystąpił błąd protokołu HTTP – $1',
@@ -2635,7 +2641,7 @@ $1',
 'mycontris' => 'Edycje',
 'contribsub2' => 'Dla użytkownika $1 ($2)',
 'nocontribs' => 'Brak zmian odpowiadających tym kryteriom.',
-'uctop' => ' (jako ostatnia)',
+'uctop' => '(ostatnia)',
 'month' => 'Do miesiąca (włącznie)',
 'year' => 'Do roku (włącznie)',
 
@@ -2676,7 +2682,7 @@ Poniżej znajduje się ostatni wpis w rejestrze blokowania.',
 'whatlinkshere-filters' => 'Filtry',
 
 # Block/unblock
-'autoblockid' => 'Automatyczna blokada nr $1',
+'autoblockid' => 'automatyczna blokada nr $1',
 'block' => 'Zablokuj użytkownika',
 'unblock' => 'Odblokuj użytkownika',
 'blockip' => 'Zablokuj użytkownika',
@@ -4130,7 +4136,7 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 'rightsnone' => 'brak',
 
 # Feedback
-'feedback-bugornote' => 'Jeśli jesteś {{GENDER:|gotów|gotowa}} szczegółowo opisać problem techniczny, proszę [$1 zgłoś błąd].
+'feedback-bugornote' => 'Jeśli jesteś w stanie szczegółowo opisać problem techniczny, proszę [$1 zgłoś błąd].
 W przeciwnym wypadku można użyć prostego formularza poniżej. Komentarz zostanie dodany do strony "[$3  $2]", wraz z nazwą użytkownika.',
 'feedback-subject' => 'Temat',
 'feedback-message' => 'Wiadomość:',
index 2cec50d..893e28e 100644 (file)
@@ -10,6 +10,7 @@
  * @author Borichèt
  * @author Bèrto 'd Sèra
  * @author Dragonòt
+ * @author Geitost
  * @author Kaganer
  * @author MaxSem
  * @author SabineCretella
@@ -229,44 +230,44 @@ $messages = array(
 'editthispage' => 'Modifiché costa pàgina',
 'create-this-page' => 'Creé sta pàgina',
 'delete' => 'Scancelé',
-'deletethispage' => 'Scancela pàgina',
-'undelete_short' => 'Disdëscancela {{PLURAL:$1|na modìfica|$1 modìfiche}}',
+'deletethispage' => 'Scancelé sa pàgina',
+'undelete_short' => 'Arcuperé {{PLURAL:$1|na modìfica|$1 modìfiche}}',
 'viewdeleted_short' => 'Vardé {{PLURAL:$1|na modìfica scancelà|$1 modìfiche scancelà}}',
-'protect' => 'Protegg',
-'protect_change' => 'cambia',
-'protectthispage' => 'Protegg sta pàgina-sì',
+'protect' => 'Protege',
+'protect_change' => 'modifiché',
+'protectthispage' => 'Protege sta pàgina-sì',
 'unprotect' => 'Cangé la protession',
 'unprotectthispage' => 'Cangé la protession ëd sa pàgina',
 'newpage' => 'Pàgina neuva',
 'talkpage' => 'Discussion',
 'talkpagelinktext' => 'discussion',
-'specialpage' => 'Pàgina Special',
+'specialpage' => 'Pàgina special',
 'personaltools' => 'Utiss përsonaj',
 'postcomment' => 'Session neuva',
-'articlepage' => "Che a varda l'artìcol",
+'articlepage' => 'Vëdde la pàgina ëd contnù',
 'talk' => 'Discussion',
-'views' => 'vìsite',
-'toolbox' => 'utiss',
+'views' => 'Vìsite',
+'toolbox' => "Bòita dj'utiss",
 'userpage' => 'Che a varda la pàgina Utent',
-'projectpage' => 'Che a varda la pàgina ëd servissi',
-'imagepage' => "Varda la pàgina dl'archivi",
-'mediawikipage' => 'Mostra ël mëssagi',
-'templatepage' => 'Mostra lë stamp',
-'viewhelppage' => "Smon la pàgina d'agiut",
-'categorypage' => 'Fa vëdde la categorìa',
+'projectpage' => 'Che a varda la pàgina ëd proget',
+'imagepage' => "Vëdde la pàgina dl'archivi",
+'mediawikipage' => 'Mostré ël mëssagi',
+'templatepage' => 'Vëdde lë stamp',
+'viewhelppage' => "Smon-e la pàgina d'agiut",
+'categorypage' => 'Vëdde la categorìa',
 'viewtalkpage' => 'Vardé la discussion',
 'otherlanguages' => 'Àutre lenghe',
 'redirectedfrom' => '(Ridiression da $1)',
 'redirectpagesub' => 'Pàgina ëd ridiression',
-'lastmodifiedat' => "Modificà l'ùltima vira al $2, $1.",
+'lastmodifiedat' => "Modificà l'ùltima vira ai $1 a $2.",
 'viewcount' => "St'artìcol-sì a l'é stàit lesù {{PLURAL:$1|na vira|$1 vire}}.",
 'protectedpage' => 'Pàgina proteta',
-'jumpto' => 'Va a:',
+'jumpto' => 'Andé a:',
 'jumptonavigation' => 'navigassion',
-'jumptosearch' => 'arserca',
+'jumptosearch' => 'arserc',
 'view-pool-error' => "An dëspias, ij servent a son motobin carià al moment.
 Tròpi utent a son an camin ch'a preuvo a lese sta pàgina-sì.
-Për piasì, speta un pòch prima ëd prové torna a vardé sta pàgina-sì.
+Për piasì, ch'a speta un pòch prima ëd prové torna a lese costa pàgina.
 
 $1",
 'pool-timeout' => "Ël temp a l'é finì antramentre ch'a së spetava la saradura",
@@ -280,28 +281,27 @@ $1",
 'copyrightpage' => "{{ns:project}}:Drit d'autor",
 'currentevents' => 'Neuve',
 'currentevents-url' => 'Project:Neuve',
-'disclaimers' => 'Difide',
+'disclaimers' => 'Avertense',
 'disclaimerpage' => 'Project:Avertense generaj',
-'edithelp' => 'Manual dë spiegassion',
-'edithelppage' => "Help:Coma scrive n'artìcol",
-'helppage' => 'Help:Agiut',
+'edithelp' => 'Agiut a la modìfica',
+'helppage' => 'Help:Contnù',
 'mainpage' => 'Intrada',
 'mainpage-description' => 'Intrada',
-'policy-url' => 'Project:Deuit',
+'policy-url' => 'Project:Régole',
 'portal' => 'Piòla',
 'portal-url' => 'Project:Piòla',
-'privacy' => 'Polìtica ëd confindensialità',
-'privacypage' => 'Project:Polìtica ëd confidensialità',
+'privacy' => 'Régole ëd confidensialità',
+'privacypage' => 'Project:Régole ëd confidensialità',
 
 'badaccess' => 'Përmess nen giust',
 'badaccess-group0' => "A l'ha pa ij përmess dont a fa dë manca për fé st'operassion-sì.",
 'badaccess-groups' => "Costa funsion-sì a l'é riservà a j'utent che a sio almanch ant {{PLURAL:$2|la partìa|un-a dle partìe}}: $1.",
 
 'versionrequired' => 'A-i va për fòrsa la version $1 ëd MediaWiki',
-'versionrequiredtext' => 'Për dovré sta pàgina-sì a-i va la version $1 dël programa MediaWiki. Che a varda [[Special:Version]]',
+'versionrequiredtext' => 'Për dovré sta pàgina-sì a-i va la version $1 dël programa MediaWiki. Che a varda [[Special:Version|la pàgina dle version]].',
 
 'ok' => 'Va bin',
-'retrievedfrom' => 'Pijàit da  "$1"',
+'retrievedfrom' => 'Pijàit da «$1»',
 'youhavenewmessages' => "A l'ha $1 ($2).",
 'newmessageslink' => 'mëssagi neuv',
 'newmessagesdifflink' => "A-i é chèich-còs ëd diferent da 'nt l'ùltima revision",
@@ -468,7 +468,7 @@ Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENA
 'logout' => "Seurte da 'nt ël sistema",
 'userlogout' => 'seurte dal sistema',
 'notloggedin' => "a l'é pa ant ël sistema",
-'nologin' => "Ha-lo ancó nen un cont? '''$1'''.",
+'nologin' => 'Ha-lo ancó nen un cont? $1.',
 'nologinlink' => 'creésse un cont.',
 'createaccount' => 'Crea un cont neuv',
 'gotaccount' => "Ha-lo già un sò cont? '''$1'''.",
@@ -1052,7 +1052,6 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'searchmenu-legend' => "Opsion d'arserca",
 'searchmenu-exists' => "'''A-i é na pàgina ciamà \"[[:\$1]]\" dzora a costa wiki'''",
 'searchmenu-new' => "'''Creé la pàgina «[[:$1]]» ansima a sta wiki-sì!'''",
-'searchhelp-url' => 'Help:Contnù',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualisé le pàgine con sto prefiss-sì]]',
 'searchprofile-articles' => 'Pàgine ëd contnù',
 'searchprofile-project' => "Pàgine d'agiut e ëd proget",
index 8324dc0..e704320 100644 (file)
@@ -257,7 +257,6 @@ $messages = array(
 'disclaimers' => 'منکرنا',
 'disclaimerpage' => 'Project:عام منکرنا',
 'edithelp' => 'لکھن وچ مدد',
-'edithelppage' => 'Help:لکھنا',
 'helppage' => 'Help:لسٹ',
 'mainpage' => 'پہلا صفہ',
 'mainpage-description' => 'پہلا صفہ',
@@ -526,10 +525,8 @@ Note that some pages may continue to be displayed as if you were still logged in
 
 # Special:PasswordReset
 'passwordreset' => 'کنجی واپس لیاؤ',
-'passwordreset-text' => 'اے فارم مکمل کرکے اپنے کھاتے دی معلومات اپنے ای-میل تے منگوالو۔',
 'passwordreset-legend' => 'کنجی واپس لیاؤ',
 'passwordreset-disabled' => 'اس وکی تے کنجی واپس نئیں لیائی جاسکدی۔',
-'passwordreset-pretext' => '{{PLURAL:$1||تھلے دتے ہوۓ ڈیٹا چوں اک ایتھے دیو}}',
 'passwordreset-username' => 'ورتن ناں:',
 'passwordreset-domain' => 'ڈومین',
 'passwordreset-capture' => 'آن والی ای-میل ویکھو؟',
@@ -976,7 +973,6 @@ $1",
 'searchmenu-legend' => 'چنوتیاں کھوجو',
 'searchmenu-exists' => "'''ایس وکی تے \"[[:\$1]]\" ناں دا صفہ ہے۔.'''",
 'searchmenu-new' => "'''ایس وکی تے \"[[:\$1]]\" بناؤ'''",
-'searchhelp-url' => 'Help:فہرست',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ایس پریفکس نال صفے کھوجو]]',
 'searchprofile-articles' => 'لسٹ صفے',
 'searchprofile-project' => 'مدد تے ویونت صفے',
index 7bb4f58..fe13ba6 100644 (file)
@@ -243,7 +243,6 @@ $messages = array(
 'disclaimers' => 'Ιμπρέσουμ',
 'disclaimerpage' => 'Project:Ιμπρέσουμ',
 'edithelp' => "Βοήθεια για τ' αλλαγμαν",
-'edithelppage' => 'Help:Άλλαγμαν',
 'helppage' => 'Help:Περιεχόμενα',
 'mainpage' => 'Αρχικόν σελίδα',
 'mainpage-description' => 'Αρχικόν σελίδα',
@@ -593,7 +592,6 @@ $messages = array(
 'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
 'nextn' => '{{PLURAL:$1|$1}} επομένων',
 'viewprevnext' => 'Τέρεν ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Περιεχόμενα',
 'searchprofile-images' => 'Πολυμέσα',
 'searchprofile-everything' => 'Όλεα',
 'search-result-size' => '$1 ({{PLURAL:$2|1 λέξη|$2 λέξεις}})',
index 2a792d8..5c89d25 100644 (file)
@@ -233,7 +233,6 @@ Pāusai en kategōrijai "$1"',
 'disclaimers' => 'Etrāwingiskwas arāikinsenei',
 'disclaimerpage' => 'Project:Etrāwingiskwas arāikinsenei',
 'edithelp' => 'Redigīsnas pagalba',
-'edithelppage' => 'Help:Redigīsna',
 'helppage' => 'Help:Ēnturs',
 'mainpage' => 'Galwas pāusan',
 'mainpage-description' => 'Galwas pāusan',
@@ -799,7 +798,6 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 'searchmenu-legend' => 'Laukīsnas mazīngiskwas',
 'searchmenu-exists' => "'''Ast pāusan \"[[:\$1]]\" en šissei wikkin''",
 'searchmenu-new' => "'''Teīkeis pāusan \"[[:\$1|\$1]]\" en šissei wikki!'''",
-'searchhelp-url' => 'Help:Ēnturs',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pradirēis pāusans sen šin prefiksan]]',
 'searchprofile-project' => 'Pagalbas be prōjaktas pāusai',
 'searchprofile-everything' => 'Wiss',
index 5d7037a..40da2d6 100644 (file)
@@ -409,7 +409,6 @@ $1',
 'disclaimers' => 'ردادعاليکونه',
 'disclaimerpage' => 'Project:ټولګړی ردادعاليک',
 'edithelp' => 'د لارښود سمون',
-'edithelppage' => 'Help:سمونه',
 'helppage' => 'Help:نيوليک',
 'mainpage' => 'لومړی مخ',
 'mainpage-description' => 'لومړی مخ',
@@ -584,6 +583,7 @@ $1',
 'gotaccount' => 'آيا وار دمخې يو ګڼون لری؟ $1.',
 'gotaccountlink' => 'ننوتل',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
+'createacct-join' => 'خپل مالومات لاندې ورکړۍ',
 'createacct-emailrequired' => 'برېښليک پته',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
@@ -592,6 +592,7 @@ $1',
 'createaccountreason' => 'سبب:',
 'createacct-reason' => 'سبب',
 'createacct-reason-ph' => 'ولې تاسې بل ګڼون جوړول غوااړۍ',
+'createacct-captcha' => 'امنيتي تدبير',
 'createacct-imgcaptcha-ph' => 'پورته تاسې ته ښکاره شوی متن وټاپۍ',
 'createacct-submit' => 'ګڼون مو جوړ کړۍ',
 'createacct-benefit-heading' => '{{SITENAME}} ستاسې په شان خلکو لخوا جوړ شوی.',
@@ -686,10 +687,8 @@ $1',
 
 # Special:PasswordReset
 'passwordreset' => 'پټنوم بياپرځايول',
-'passwordreset-text' => 'د برېښليک د  بياپرځای کېدنې لپاره دا فورمه ډکه کړۍ.',
 'passwordreset-legend' => 'پټنوم بياپرځايول',
 'passwordreset-disabled' => 'په دې ويکي پټنوم بياپرځای کولو کړنه ناچارنه شوې.',
-'passwordreset-pretext' => '{{PLURAL:$1||د لاندې اومتوک يوه برخه مالومات وليکۍ}}',
 'passwordreset-username' => 'کارن-نوم:',
 'passwordreset-domain' => 'شپول:',
 'passwordreset-capture' => 'د پايلې برېښليک کتل غواړې؟',
@@ -858,6 +857,7 @@ $1',
 داسې ښکاري چې دا مخ ړنګ شوی.',
 'edit-conflict' => 'د سمولو خنډ',
 'edit-no-change' => 'ستاسې سمون بابېزه وګڼل شو، دا ځکه چې تاسې په متن کې کوم بدلون نه دی راوستلی.',
+'postedit-confirmation' => 'ستاسې سمون خوندي شو.',
 'edit-already-exists' => 'په دې نوم يو نوی مخ جوړ نه شو.
 پدې نوم د پخوا نه يو مخ شته.',
 'defaultmessagetext' => 'تلواليزه پيغام متن',
@@ -990,7 +990,6 @@ $1',
 'searchmenu-legend' => 'د پلټلو خوښنې',
 'searchmenu-exists' => "'''په دې ويکي يو مخ د \"[[:\$1]]\" په نامه دی'''",
 'searchmenu-new' => "'''په دې ويکي د \"[[:\$1]]\" مخ جوړول!'''",
-'searchhelp-url' => 'Help:لړليک',
 'searchprofile-articles' => 'مېنځپانګيز مخونه',
 'searchprofile-project' => 'د لارښود او پروژې مخونه',
 'searchprofile-images' => 'ګڼرسنۍ',
@@ -1874,7 +1873,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'contributions-title' => 'د $1 کارن ونډې',
 'mycontris' => 'ونډې',
 'contribsub2' => 'د $1 لپاره ($2)',
-'uctop' => '(سرپاڼÙ\87)',
+'uctop' => '(اÙ\88سÙ\86Û\8c)',
 'month' => 'له مياشتې د (او پخواني):',
 'year' => 'له کال د (او پخواني):',
 
index 89b727f..ae13969 100644 (file)
@@ -38,6 +38,7 @@
  * @author Minh Nguyen
  * @author Nemo bis
  * @author Nuno Tavares
+ * @author OTAVIO1981
  * @author Opraco
  * @author Paulo Juntas
  * @author Pedroca cerebral
@@ -516,6 +517,7 @@ $messages = array(
 'create-this-page' => 'Criar/iniciar esta página',
 'delete' => 'Eliminar',
 'deletethispage' => 'Eliminar esta página',
+'undeletethispage' => 'Restaurar esta página',
 'undelete_short' => 'Restaurar {{PLURAL:$1|uma edição|$1 edições}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
 'protect' => 'Proteger',
@@ -543,7 +545,7 @@ $messages = array(
 'viewtalkpage' => 'Ver discussão',
 'otherlanguages' => 'Noutras línguas',
 'redirectedfrom' => '(Redireccionado de $1)',
-'redirectpagesub' => 'Página de redireccionamento',
+'redirectpagesub' => 'Página de redirecionamento',
 'lastmodifiedat' => 'Esta página foi modificada pela última vez à(s) $2 de $1.',
 'viewcount' => 'Esta página foi acedida {{PLURAL:$1|uma vez|$1 vezes}}.',
 'protectedpage' => 'Página protegida',
@@ -569,7 +571,6 @@ $1',
 'disclaimers' => 'Exoneração de responsabilidade',
 'disclaimerpage' => 'Project:Aviso_geral',
 'edithelp' => 'Ajuda de edição',
-'edithelppage' => 'Help:Editar',
 'helppage' => 'Help:Conteúdos',
 'mainpage' => 'Página principal',
 'mainpage-description' => 'Página principal',
@@ -716,6 +717,8 @@ $2',
 'namespaceprotected' => "Não possui permissão para editar páginas no espaço nominal '''$1'''.",
 'customcssprotected' => 'Não tem permissões para editar esta página de CSS porque ela contém as configurações pessoais de outro utilizador.',
 'customjsprotected' => 'Não tem permissões para editar esta página de JavaScript porque ela contém as configurações pessoais de outro utilizador.',
+'mycustomcssprotected' => 'Não tem permissão para editar esta página de CSS.',
+'mycustomjsprotected' => 'Não tem permissão para editar esta página de JavaScript.',
 'ns-specialprotected' => 'Não é possível editar páginas especiais',
 'titleprotected' => 'Este título foi protegido contra criação por [[User:$1|$1]].
 A justificação foi "\'\'$2\'\'".',
@@ -766,7 +769,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências]].'
 'userlogout' => 'Sair',
 'notloggedin' => 'Não autenticado',
 'userlogin-noaccount' => 'Não tem uma conta?',
-'userlogin-joinproject' => 'Junte {{SITENAME}}',
+'userlogin-joinproject' => 'Junte-se ao projeto {{SITENAME}}',
 'nologin' => 'Não possui uma conta? $1.',
 'nologinlink' => 'Criar uma conta',
 'createaccount' => 'Criar conta',
@@ -774,7 +777,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências]].'
 'gotaccountlink' => 'Autentique-se',
 'userlogin-resetlink' => 'Esqueceu-se do seu nome de utilizador ou da palavra-chave?',
 'userlogin-resetpassword-link' => 'Recuperar palavra-chave',
-'helplogin-url' => 'Ajuda:login',
+'helplogin-url' => 'Help:Autenticação',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda a fazer login]]',
 'createacct-join' => 'Insira a sua informação abaixo.',
 'createacct-emailrequired' => 'Endereço de email',
@@ -851,7 +854,7 @@ Introduza um endereço formatado correctamente ou deixe o campo vazio.',
 'cannotchangeemail' => 'Os endereços de correio electrónico das contas não podem ser alterados nesta wiki.',
 'emaildisabled' => 'Este site não consegue enviar e-mails.',
 'accountcreated' => 'Conta criada',
-'accountcreatedtext' => 'A conta de utilizador para $1 foi criada.',
+'accountcreatedtext' => 'A conta de utilizador para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) foi criada.',
 'createaccount-title' => 'Criação de conta na {{SITENAME}}',
 'createaccount-text' => 'Alguém criou uma conta com o nome $2 para o seu endereço de correio electrónico, na wiki {{SITENAME}} ($4), com a palavra-chave "$3".
 Deve agora autenticar-se e alterar a sua palavra-chave.
@@ -902,21 +905,23 @@ Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova pal
 'passwordreset-capture-help' => 'Se marcar esta caixa, o e-mail (com a senha temporária) será-lhe mostrado, além de ser enviado para o utilizador.',
 'passwordreset-email' => 'Correio electrónico:',
 'passwordreset-emailtitle' => 'Detalhes da conta na {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Alguém, provavelmente você a partir do endereço IP $1, pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este correio electrónico:
+'passwordreset-emailtext-ip' => 'Alguém (provavelmente você, a partir do endereço IP $1) pediu a recuperação da palavra-passe no projeto {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este correio eletrónico:
 
 $2
 
-{{PLURAL:$3|Esta palavra-chave temporária irá|Estas palavras-chave temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma palavra-chave nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua palavra-chave original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-chave antiga.',
-'passwordreset-emailtext-user' => 'O utilizador $1 da {{SITENAME}} pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este correio electrónico:
+{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.
+Deve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.',
+'passwordreset-emailtext-user' => 'O utilizador $1 do projeto {{SITENAME}} pediu a recuperação da sua palavra-passe no projeto {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de utilizador está associada|As seguintes contas de utilizador estão associadas}} a este endereço de correio eletrónico:
 
 $2
 
-{{PLURAL:$3|Esta palavra-chave temporária irá|Estas palavras-chave temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma palavra-chave nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua palavra-chave original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-chave antiga.',
+{{PLURAL:$3|Esta palavra-passe temporária irá|Estas palavras-passes temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}.
+Deve autenticar-se e escolher uma palavra-passe nova agora. Se outra pessoa fez este pedido, ou se entretanto se recordou da sua palavra-passe original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-passe antiga.',
 'passwordreset-emailelement' => 'Utilizador: $1
 Palavra-chave temporária: $2',
-'passwordreset-emailsent' => 'Foi enviado um correio electrónico de recuperação dos dados da conta.',
-'passwordreset-emailsent-capture' => 'Foi enviado um e-mail de lembrete, que é mostrado abaixo.',
-'passwordreset-emailerror-capture' => 'Foi gerado o lembrete de e-mail mostrado abaixo, contudo falhou o envio para o utilizador: $1',
+'passwordreset-emailsent' => 'Foi enviado um correio eletrónico para recuperação da palavra-passe.',
+'passwordreset-emailsent-capture' => 'Foi enviado um e-mail de recuperação da palavra-passe, que é mostrado abaixo.',
+'passwordreset-emailerror-capture' => 'Foi gerado o e-mail de reposição de palavra-passe mostrado abaixo, contudo falhou o seu envio para {{GENDER:$2|o utilizador|a utilizadora}}: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Alterar o endereço de correio electrónico',
@@ -1100,7 +1105,7 @@ Garante-nos também que isto é algo escrito por si, ou copiado do domínio púb
 'longpageerror' => "'''Erro: O texto que submeteu ocupa {{PLURAL:$1|um kilobyte|$1 kilobytes}}, que excede o máximo de {{PLURAL:$2|um kilobyte|$2 kilobytes}}.'''
 A página não pode ser gravada.",
 'readonlywarning' => "'''Aviso: A base de dados foi bloqueada para manutenção, pelo que não poderá gravar a sua edição neste momento.'''
-Pode, no entanto, copiar o seu texto para um editor externo e guardá-lo para posterior submissão.
+Pode, no entanto, copiar e colar o seu texto num ficheiro de texto e guardá-lo para mais tarde.
 
 O administrador que bloqueou a base de dados forneceu a seguinte explicação: $1",
 'protectedpagewarning' => "'''Aviso: Esta página foi protegida para só poder ser editada por administradores.'''
@@ -1138,15 +1143,15 @@ Não foi dada nenhuma explicação.',
 Ela parece ter sido eliminada.',
 'edit-conflict' => 'Conflito de edição.',
 'edit-no-change' => 'A sua edição foi ignorada, uma vez que o texto não sofreu alterações.',
-'postedit-confirmation' => 'Sua edição foi gravada',
+'postedit-confirmation' => 'A sua edição foi gravada.',
 'edit-already-exists' => 'Não foi possível criar uma página nova.
 Ela já existia.',
 'defaultmessagetext' => 'Texto da mensagem padrão',
 'content-failed-to-parse' => 'Falha ao analisar conteúdo $2 para modelo $1:$3',
 'invalid-content-data' => 'Dados de conteúdo inválidos',
 'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
-'editwarning-warning' => 'Sair desta página fará com que você perca todas as alterações feitas por você.
-Se você fez login, pode desabilitar este aviso na seção "{{int:prefs-editing}}" das suas preferências.',
+'editwarning-warning' => 'Sair desta página fará com que você perca quaisquer alterações feitas por você.
+Se você se autenticou, pode desabilitar este aviso na secção "Edição" das suas preferências.',
 
 # Content models
 'content-model-wikitext' => 'wikitexto',
@@ -1393,7 +1398,6 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Crie a página \"[[:\$1]]\" nesta wiki!'''",
-'searchhelp-url' => 'Help:Conteúdos',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegar as páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Páginas de Ajuda e de Projecto',
@@ -1408,7 +1412,7 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-result-size' => '$1 ({{PLURAL:$2|1 palavra|$2 palavras}})',
 'search-result-category-size' => '{{PLURAL:$1|1 membro|$1 membros}} ({{PLURAL:$2|1 subcategoria|$2 subcategorias}}, {{PLURAL:$3|1 ficheiro|$3 ficheiros}})',
 'search-result-score' => 'Relevancia: $1%',
-'search-redirect' => '(redireccionamento de $1)',
+'search-redirect' => '(redirecionamento de $1)',
 'search-section' => '(seção $1)',
 'search-suggest' => 'Será que queria dizer: $1',
 'search-interwiki-caption' => 'Projectos associados',
@@ -1519,7 +1523,7 @@ Esta operação não pode ser desfeita.',
 'prefs-textboxsize' => 'Tamanho da janela de edição',
 'youremail' => 'Correio electrónico:',
 'username' => 'Nome de {{GENDER:$1|utilizador|utilizadora}}:',
-'uid' => 'Número de identificação:',
+'uid' => 'Identificação de {{GENDER:$1|utilizador|utilizadora}}:',
 'prefs-memberingroups' => '{{GENDER:$2|Membro}} {{PLURAL:$1|do grupo|dos grupos}}:',
 'prefs-registration' => 'Hora de registo:',
 'yourrealname' => 'Nome verdadeiro:',
@@ -1583,6 +1587,7 @@ Esta informação será pública.',
 'userrights-changeable-col' => 'Grupos que pode alterar',
 'userrights-unchangeable-col' => 'Grupos que não pode alterar',
 'userrights-conflict' => 'Conflito com os privilégios dos utilizadores! Por favor, aplique as suas mudanças novamente.',
+'userrights-removed-self' => 'Você removeu com sucesso os seus privilégios. Como resultado disso, já não consegue aceder a esta página.',
 
 # Groups
 'group' => 'Grupo:',
@@ -1619,7 +1624,7 @@ Esta informação será pública.',
 'right-move-subpages' => 'Mover páginas com as suas subpáginas',
 'right-move-rootuserpages' => 'Mover páginas raiz de utilizadores',
 'right-movefile' => 'Mover ficheiros',
-'right-suppressredirect' => 'Não criar um redireccionamento do nome antigo quando uma página é movida',
+'right-suppressredirect' => 'Não criar um redirecionamento do nome antigo quando uma página é movida',
 'right-upload' => 'Carregar ficheiros',
 'right-reupload' => 'Sobrescrever um ficheiro existente',
 'right-reupload-own' => 'Sobrescrever um ficheiro existente carregado pelo mesmo utilizador',
@@ -1653,6 +1658,8 @@ Esta informação será pública.',
 'right-editusercssjs' => 'Editar os ficheiros CSS e JS de outros utilizadores',
 'right-editusercss' => 'Editar os ficheiros CSS de outros utilizadores',
 'right-edituserjs' => 'Editar os ficheiros JS de outros utilizadores',
+'right-editmyusercss' => 'Editar os seus próprios ficheiros CSS de utilizador',
+'right-editmyuserjs' => 'Editar os seus próprios ficheiros JavaScript de utilizador',
 'right-rollback' => 'Reverter rapidamente as edições do último utilizador que editou uma página em particular',
 'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
 'right-noratelimit' => 'Não ser afectado pelos limites de velocidade de operação',
@@ -1942,7 +1949,7 @@ Caso o problema persista, contacte um [[Special:ListUsers/sysop|administrador]].
 'backend-fail-internal' => 'Ocorreu um erro desconhecido no servidor de armazenamento "$1".',
 'backend-fail-contenttype' => 'Não foi possível determinar o tipo de conteúdo do ficheiro para armazenar em "$1".',
 'backend-fail-batchsize' => 'Foi fornecido um bloco de $1 {{PLURAL:$1|operação|operações}} sobre ficheiros ao servidor de armazenamento; o limite é de $2 {{PLURAL:$2|operação|operações}}.',
-'backend-fail-usable' => 'Não foi possível gravar o ficheiro $1 devido a permissões insuficientes ou a directórios ou repositórios inexistentes.',
+'backend-fail-usable' => 'Não foi possível ler ou gravar o ficheiro "$1" devido a permissões insuficientes ou a directórios/repositórios inexistentes.',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Não foi possível estabelecer ligação à base de dados de registos no servidor de armazenamento "$1".',
@@ -2058,7 +2065,7 @@ A lista abaixo apresenta apenas {{PLURAL:$1|a primeira página|as primeiras $1 p
 Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
 'nolinkstoimage' => 'Nenhuma página contém links para este ficheiro.',
 'morelinkstoimage' => 'Ver a [[Special:WhatLinksHere/$1|lista completa]] de páginas que contêm links para este ficheiro.',
-'linkstoimage-redirect' => '$1 (redireccionamento de ficheiro) $2',
+'linkstoimage-redirect' => '$1 (redirecionamento de ficheiro) $2',
 'duplicatesoffile' => '{{PLURAL:$1|O seguinte ficheiro é duplicado|Os seguintes $1 ficheiros são duplicados}} deste ficheiro ([[Special:FileDuplicateSearch/$2|mais detalhes]]):',
 'sharedupload' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.',
 'sharedupload-desc-there' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.
@@ -2128,7 +2135,7 @@ Talvez queira editar a descrição na [$2 página original de descrição do fic
 'randompage-nopages' => 'Não há páginas {{PLURAL:$2|no seguinte espaço nominal|nos seguintes espaços nominais}}: $1.',
 
 # Random redirect
-'randomredirect' => 'Redireccionamento aleatório',
+'randomredirect' => 'Redirecionamento aleatório',
 'randomredirect-nopages' => 'Não há redireccionamentos no espaço nominal "$1".',
 
 # Statistics
@@ -2165,12 +2172,12 @@ Considera-se que uma página é de desambiguação se nela for utilizada uma pre
 'pageswithprop-submit' => 'Avançar',
 
 'doubleredirects' => 'Redireccionamentos duplos',
-'doubleredirectstext' => 'Esta página lista todas as páginas que redireccionam para outras páginas de redireccionamento.
-Cada linha contém links para o primeiro e segundo redireccionamentos, bem como o destino do segundo redireccionamento, geralmente contendo a verdadeira página de destino, que devia ser o destino do primeiro redireccionamento.
+'doubleredirectstext' => 'Esta página lista todas as páginas que redirecionam para outras páginas de redirecionamento.
+Cada linha contém links para o primeiro e segundo redirecionamentos, bem como o destino do segundo redirecionamento, geralmente contendo a verdadeira página de destino, que devia ser o destino do primeiro redirecionamento.
 <del>Entradas cortadas</del> já foram solucionadas.',
 'double-redirect-fixed-move' => '[[$1]] foi movido.
 Agora redirecciona para [[$2]].',
-'double-redirect-fixed-maintenance' => 'A corrigir redireccionamento duplo de [[$1]] para [[$2]].',
+'double-redirect-fixed-maintenance' => 'A corrigir redirecionamento duplo de [[$1]] para [[$2]].',
 'double-redirect-fixer' => 'Corrector de redireccionamentos',
 
 'brokenredirects' => 'Redireccionamentos quebrados',
@@ -2402,9 +2409,8 @@ O endereço de correio que introduziu nas [[Special:Preferences|suas preferênci
 'watchnologin' => 'Não está autenticado(a)',
 'watchnologintext' => 'Precisa de [[Special:UserLogin|autenticar-se]] para modificar a sua lista de páginas vigiadas.',
 'addwatch' => 'Adicionar às páginas vigiadas',
-'addedwatchtext' => "A página \"[[:\$1]]\" foi adicionada à sua lista de [[Special:Watchlist|páginas vigiadas]], onde serão indicadas quaisquer
-modificações futuras desta página e da respectiva página de discussão.
-O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:RecentChanges|mudanças recentes]], para que a encontre facilmente.",
+'addedwatchtext' => 'A página "[[:$1]]" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].
+Modificações futuras desta página e da respetiva página de discussão serão listadas lá.',
 'removewatch' => 'Remover das páginas vigiadas',
 'removedwatchtext' => 'A página "[[:$1]]" foi removida da sua lista de [[Special:Watchlist|páginas vigiadas]].',
 'watch' => 'Vigiar',
@@ -2415,8 +2421,8 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
 'notvisiblerev' => 'Edição eliminada',
 'watchnochange' => 'Nenhuma das páginas vigiadas foi editada no período apresentado.',
 'watchlist-details' => '{{PLURAL:$1|Existe $1 página|Existem $1 páginas}} na sua lista de páginas vigiadas, excluindo páginas de discussão.',
-'wlheader-enotif' => 'A notificação por correio electrónico está activada.',
-'wlheader-showupdated' => "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''",
+'wlheader-enotif' => 'A notificação por correio electrónico está activa.',
+'wlheader-showupdated' => "As páginas modificadas desde a última vez que as visitou aparecem destacadas a '''negrito'''.",
 'watchmethod-recent' => 'a procurar páginas vigiadas nas mudanças recentes',
 'watchmethod-list' => 'a procurar mudanças recentes nas páginas vigiadas',
 'watchlistcontains' => 'A sua lista de páginas vigiadas contém $1 {{PLURAL:$1|página|páginas}}.',
@@ -2440,8 +2446,8 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
 'enotif_subject_changed' => 'A página $1 de {{SITENAME}} foi {{GENDER:$2|alterada}} por $2',
 'enotif_body_intro_deleted' => 'A página $1 de {{SITENAME}} foi {{GENDER:$2|eliminada}} em $PAGEEDITDATE por $2, ver $3.',
 'enotif_body_intro_created' => 'A página $1 em {{SITENAME}} foi {{GENDER:$2| criada}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
-'enotif_body_intro_moved' => 'A páginas $1 em {{SITENAME}} foi {{GENDER:$2|movida}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
-'enotif_body_intro_restored' => 'A páginas $1 em {{SITENAME}} foi {{GENDER:$2|restaurada}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
+'enotif_body_intro_moved' => 'A página $1 em {{SITENAME}} foi {{GENDER:$2|movida}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
+'enotif_body_intro_restored' => 'A página $1 em {{SITENAME}} foi {{GENDER:$2|restaurada}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
 'enotif_body_intro_changed' => 'A página $1 em {{SITENAME}} foi {{GENDER:$2|alterada}} em $PAGEEDITDATE por $2, ver $3 para a versão actual.',
 'enotif_lastvisited' => 'Consulte $1 para todas as alterações efectuadas desde a sua última visita.',
 'enotif_lastdiff' => 'Consulte $1 para ver esta alteração.',
@@ -2667,7 +2673,7 @@ $1',
 'mycontris' => 'Contribuições',
 'contribsub2' => 'Para $1 ($2)',
 'nocontribs' => 'Não foram encontradas alterações com este critério.',
-'uctop' => ' (edição actual)',
+'uctop' => '(atual)',
 'month' => 'Até o mês:',
 'year' => 'Até o ano:',
 
@@ -2696,7 +2702,7 @@ Para referência é apresentado abaixo o último registo de bloqueio:',
 'linkshere' => "As seguintes páginas têm links para '''[[:$1]]''':",
 'nolinkshere' => "Não existem afluentes para '''[[:$1]]''' com as condições especificadas.",
 'nolinkshere-ns' => "Não existem links para '''[[:$1]]''' no espaço nominal seleccionado.",
-'isredirect' => 'página de redireccionamento',
+'isredirect' => 'página de redirecionamento',
 'istemplate' => 'inclusão',
 'isimage' => 'link para o ficheiro',
 'whatlinkshere-prev' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -2829,7 +2835,7 @@ Contacte o seu fornecedor de internet ou o serviço de apoio técnico e informe-
 'proxyblocksuccess' => 'Concluído.',
 'sorbsreason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}.",
 'sorbs_create_account_reason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}. Não pode criar uma conta",
-'xffblockreason' => 'Um endereço IP presente no cabeçalho X-Forwardd-For, seja seu ou de um servidor de proxy que estiver a usar, foi bloqueado. A razão do bloqueio original foi: $1',
+'xffblockreason' => 'Um endereço IP presente no cabeçalho X-Forwarded-For, seja seu ou de um servidor de proxy que estiver a usar, foi bloqueado. A razão do bloqueio original foi: $1',
 'cant-block-while-blocked' => 'Não pode bloquear outros utilizadores enquanto estiver bloqueado.',
 'cant-see-hidden-user' => "O utilizador que está tentando bloquear já está bloqueado e oculto.
 Como não tem o privilégio para ocultar utilizadores ''(hideuser)'', não pode ver ou editar o bloqueio deste utilizador.",
@@ -2866,18 +2872,18 @@ Pode corrigir de forma automática os redireccionamentos existentes que apontam
 Caso escolha não o fazer, após a operação certifique-se de que dela não resultaram  [[Special:DoubleRedirects|redireccionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].
 É da sua responsabilidade verificar que os links continuam a apontar para onde é suposto que apontem.
 
-Note que a página '''não''' será movida se já existir uma página com o novo nome, a menos que esta esteja vazia ou seja um redireccionamento sem qualquer histórico de edições.
+Note que a página '''não''' será movida se já existir uma página com o novo título, a menos que esta última seja um redireccionamento sem qualquer histórico de edições.
 Isto significa que pode mover uma página de volta para o seu nome original se a tiver movido por engano e que não pode mover uma página para cima de outra já existente.
 
 '''CUIDADO!'''
 Numa página popular esta operação pode representar uma mudança drástica e inesperada;
 certifique-se de que compreende as consequências da mudança antes de prosseguir, por favor.",
 'movepagetext-noredirectfixer' => "Usando o formulário abaixo, pode alterar o nome de uma página e mover todo o histórico desta para o nome novo.
-A página antiga é transformada numa página de redireccionamento para a nova.
-Verifique a existência de [[Special:DoubleRedirects|redireccionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].
+A página antiga é transformada numa página de redirecionamento para a nova.
+Verifique a existência de [[Special:DoubleRedirects|redirecionamentos duplos]] ou [[Special:BrokenRedirects|quebrados]].
 É da sua responsabilidade certificar-se de que os links continuam a apontar para onde é suposto.
 
-Note que a página '''não''' será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redireccionamento e não tenha um histórico de edições.
+Note que a página '''não''' será movida se já existir uma página com o nome novo, a menos que esta página já existente esteja vazia ou seja uma página de redirecionamento e não tenha um histórico de edições.
 Isto também significa que, se se tiver enganado, pode alterar o nome da página movida de volta para o seu nome original; e que não pode sobrescrever o conteúdo de uma página existente.
 
 '''Aviso!'''
@@ -2901,8 +2907,8 @@ Nestes casos, terá de mover a página de discussão manualmente, ou fundi-la co
 'movepagebtn' => 'Mover página',
 'pagemovedsub' => 'Página movida com sucesso',
 'movepage-moved' => '\'\'\'"$1" foi movida para "$2"\'\'\'',
-'movepage-moved-redirect' => 'Foi criado um redireccionamento.',
-'movepage-moved-noredirect' => 'A criação de um redireccionamento foi suprimida.',
+'movepage-moved-redirect' => 'Foi criado um redirecionamento.',
+'movepage-moved-noredirect' => 'A criação de um redirecionamento foi suprimida.',
 'articleexists' => 'Uma página com este nome já existe, ou o nome que escolheu é inválido.
 Escolha outro nome, por favor.',
 'cantmove-titleprotected' => 'Não pode mover uma página para esse destino, porque o novo título foi protegido para evitar a sua criação',
@@ -2940,8 +2946,8 @@ não é possível mover uma página para ela mesma.',
 'nonfile-cannot-move-to-file' => 'Não é possível mover algo que não é um ficheiro para o espaço nominal de ficheiros',
 'imagetypemismatch' => 'A extensão do novo ficheiro não corresponde ao seu tipo',
 'imageinvalidfilename' => 'O nome do ficheiro alvo é inválido',
-'fix-double-redirects' => 'Actualizar todos os redireccionamentos que apontem para o título original',
-'move-leave-redirect' => 'Criar um redireccionamento',
+'fix-double-redirects' => 'Atualizar todos os redirecionamentos que apontem para o título original',
+'move-leave-redirect' => 'Criar um redirecionamento',
 'protectedpagemovewarning' => "'''Aviso:''' Esta página foi protegida de maneira a que apenas utilizadores com privilégio de administrador possam movê-la.
 O último registo é apresentado abaixo para referência:",
 'semiprotectedpagemovewarning' => "'''Nota:''' Esta página protegida de maneira a que apenas utilizadores registados possam movê-la.
@@ -3055,6 +3061,7 @@ Não há um directório temporário.',
 'import-error-unserialize' => 'Revisão $2 da página "$1" não pode ser desserializada. Foi relatado que a revisão usava o modelo de conteúdo $3 serializado como $4.',
 'import-options-wrong' => '{{PLURAL:$2|Opção errada|Opções erradas}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'A raiz da página dada é um título inválido.',
+'import-rootpage-nosubpage' => 'O domínio "$1" da página de raiz não permite subpáginas.',
 
 # Import log
 'importlogpage' => 'Registo de importações',
@@ -3136,7 +3143,7 @@ Utilize o botão "Antever resultado" antes de gravar, por favor.',
 'tooltip-compareselectedversions' => 'Ver as diferenças entre as duas versões seleccionadas desta página.',
 'tooltip-watch' => 'Adicionar esta página à lista de páginas vigiadas',
 'tooltip-watchlistedit-normal-submit' => 'Remover títulos',
-'tooltip-watchlistedit-raw-submit' => 'Actualizar a lista de vigiados',
+'tooltip-watchlistedit-raw-submit' => 'Atualizar a lista de vigiados',
 'tooltip-recreate' => 'Recriar a página apesar de ter sido eliminada',
 'tooltip-upload' => 'Iniciar o carregamento',
 'tooltip-rollback' => '"{{int:rollbacklink}}" reverte, com um só clique, as edições do último editor desta página.',
@@ -3193,14 +3200,16 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'pageinfo-header-restrictions' => 'Proteção da página',
 'pageinfo-header-properties' => 'Propriedades da página',
 'pageinfo-display-title' => 'Título exibido',
+'pageinfo-default-sort' => 'Chave de classificação padrão',
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
 'pageinfo-language' => 'Idioma do conteúdo da página',
-'pageinfo-robot-policy' => 'Status do mecanismo de pesquisa',
+'pageinfo-robot-policy' => 'Estado para mecanismos de pesquisa',
 'pageinfo-robot-index' => 'Indexável',
 'pageinfo-robot-noindex' => 'Não indexável',
 'pageinfo-views' => 'Número de visitas',
 'pageinfo-watchers' => 'Número de vigilantes da página',
+'pageinfo-few-watchers' => 'Menos do que $1 {{PLURAL:$1|vigilante|vigilantes}}',
 'pageinfo-redirects-name' => 'Redirecionamentos para esta página',
 'pageinfo-subpages-name' => 'Subpáginas desta página',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|redirecionamento|redirecionamentos}}; $3 {{PLURAL:$3|não-redirecionamento|não-redirecionamentos}})',
@@ -3214,12 +3223,16 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'pageinfo-recent-authors' => 'Número recente de autores distintos',
 'pageinfo-magic-words' => '{{PLURAL:$1|Palavra mágica|Palavras mágicas}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Predefinição|Predefinições}} transcluídas ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Página|Páginas}} onde é transcluída ($1)',
 'pageinfo-toolboxlink' => 'Informações da página',
 'pageinfo-redirectsto' => 'Redireciona para',
 'pageinfo-redirectsto-info' => 'informação',
 'pageinfo-contentpage' => 'Contada como página de conteúdo',
 'pageinfo-contentpage-yes' => 'Sim',
+'pageinfo-protect-cascading' => 'A protecção é em cascata a partir daqui',
 'pageinfo-protect-cascading-yes' => 'Sim',
+'pageinfo-protect-cascading-from' => 'As protecções são em cascata a partir de',
 'pageinfo-category-info' => 'Informações da categoria',
 'pageinfo-category-pages' => 'Número de páginas',
 'pageinfo-category-subcats' => 'Número de subcategorias',
@@ -3241,6 +3254,8 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'markedaspatrollederror' => 'Não é possível marcar como patrulhada',
 'markedaspatrollederrortext' => 'É necessário especificar uma edição a ser marcada como patrulhada.',
 'markedaspatrollederror-noautopatrol' => 'Não está autorizado a marcar as suas próprias edições como edições patrulhadas.',
+'markedaspatrollednotify' => 'Esta mudança em $1 foi marcada como patrulhada.',
+'markedaspatrollederrornotify' => 'A marcação como patrulhada falhou.',
 
 # Patrol log
 'patrol-log-page' => 'Registo de edições patrulhadas',
@@ -3304,11 +3319,25 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
 'minutes' => '{{PLURAL:$1|um minuto|$1 minutos}}',
 'hours' => '{{PLURAL:$1|uma hora|$1 horas}}',
 'days' => '{{PLURAL:$1|um dia|$1 dias}}',
+'weeks' => '{{PLURAL:$1|$1 semana|$1 semanas}}',
 'months' => '{{PLURAL:$1|1 mês|$1 meses}}',
 'years' => '{{PLURAL:$1|1 ano|$1 anos}}',
 'ago' => '$1 atrás',
 'just-now' => 'agora mesmo',
 
+# Human-readable timestamps
+'hours-ago' => 'há $1 {{PLURAL:$1|hora|horas}}',
+'minutes-ago' => 'há $1 {{PLURAL:$1|minuto|minutos}}',
+'seconds-ago' => 'há $1 {{PLURAL:$1|segundo|segundos}}',
+'monday-at' => 'Segunda-feira às $1',
+'tuesday-at' => 'Terça-feira às $1',
+'wednesday-at' => 'Quarta-feira às $1',
+'thursday-at' => 'Quinta-feira às $1',
+'friday-at' => 'Sexta-feira às $1',
+'saturday-at' => 'Sábado às $1',
+'sunday-at' => 'Domingo às $1',
+'yesterday-at' => 'Ontem às $1',
+
 # Bad image list
 'bad_image_list' => 'O formato é o seguinte:
 
@@ -3811,6 +3840,7 @@ Este código de confirmação expira a $4.',
 # Scary transclusion
 'scarytranscludedisabled' => '[Transclusão interwikis foi impossibilitada]',
 'scarytranscludefailed' => '[Não foi possível obter a predefinição a partir de $1]',
+'scarytranscludefailed-httpstatus' => '[Não foi possível obter a predefinição a partir de $1: HTTP $2]',
 'scarytranscludetoolong' => '[URL longa demais]',
 
 # Delete conflict
@@ -3853,7 +3883,7 @@ Confirme que deseja realmente recriar esta página, por favor.",
 # Auto-summaries
 'autosumm-blank' => 'Limpou toda a página',
 'autosumm-replace' => "Página substituída por '$1'",
-'autoredircomment' => 'Redireccionamento para [[$1]]',
+'autoredircomment' => 'Redirecionamento para [[$1]]',
 'autosumm-new' => "Criou nova página com '$1'",
 
 # Live preview
@@ -3923,6 +3953,7 @@ Também pode [[Special:EditWatchlist|editar a lista da maneira convencional]].',
 'version-license' => 'Licença',
 'version-poweredby-credits' => "Esta é uma wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'outros',
+'version-credits-summary' => 'Gostaríamos de reconhecer as seguintes pessoas pela sua contribuição para o [[Special:Version|MediaWiki]].',
 'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
 
 O MediaWiki é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; inclusive, sem a garantia implícita da POSSIBILIDADE DE SER COMERCIALIZADO ou de ADEQUAÇÂO PARA QUALQUER FINALIDADE ESPECÍFICA. Consulte a licença GNU General Public License para mais detalhes.
@@ -3935,6 +3966,18 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'version-entrypoints-header-entrypoint' => 'Ponto de entrada',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Redireccionar pelo ID do ficheiro, utilizador ou revisão',
+'redirect-legend' => 'Redirecionar para um ficheiro ou página',
+'redirect-summary' => 'Esta página especial redireciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador).',
+'redirect-submit' => 'Ir',
+'redirect-lookup' => 'Pesquisa:',
+'redirect-value' => 'Valor:',
+'redirect-user' => 'Identificador do utilizador',
+'redirect-revision' => 'Revisão da página',
+'redirect-file' => 'Nome do ficheiro',
+'redirect-not-exists' => 'Valor não encontrado',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Ficheiros duplicados',
 'fileduplicatesearch-summary' => "Procure ficheiros duplicados tendo por base o seu resumo criptográfico ''(hash value)''.",
@@ -3960,7 +4003,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'specialpages-group-highuse' => 'Páginas muito usadas',
 'specialpages-group-pages' => 'Listas de páginas',
 'specialpages-group-pagetools' => 'Ferramentas de páginas',
-'specialpages-group-wiki' => 'Dados e ferramentas da wiki',
+'specialpages-group-wiki' => 'Dados e ferramentas',
 'specialpages-group-redirects' => 'Pesquisas e aleatoriedade',
 'specialpages-group-spam' => 'Ferramentas anti-spam',
 
@@ -4023,6 +4066,9 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'htmlform-submit' => 'Enviar',
 'htmlform-reset' => 'Desfazer alterações',
 'htmlform-selectorother-other' => 'Outros',
+'htmlform-no' => 'Não',
+'htmlform-yes' => 'Sim',
+'htmlform-chosen-placeholder' => 'Seleccione uma opção',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 com suporte de pesquisa de texto completo',
@@ -4031,15 +4077,15 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 # New logging system
 'logentry-delete-delete' => '$1 apagou a página $3',
 'logentry-delete-restore' => '$1 restaurou a página $3',
-'logentry-delete-event' => '$1 alterou a visibilidade {{PLURAL:$5|de uma entrada|das $5 entradas}} em $3: $4',
-'logentry-delete-revision' => '$1 alterou a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4',
-'logentry-delete-event-legacy' => '$1 alterou a visibilidade de uma entrada em $3',
-'logentry-delete-revision-legacy' => '$1 alterou a visibilidade de uma revisão em $3',
-'logentry-suppress-delete' => '$1 suprimiu a página $3',
-'logentry-suppress-event' => '$1 alterou secretamente a visibilidade {{PLURAL:$5|de uma entrada|das $5 entradas}} em $3: $4',
-'logentry-suppress-revision' => '$1 secretamente alterou a visibilidade {{PLURAL:$5|de uma revisão|das $5 revisões}} em $3: $4',
-'logentry-suppress-event-legacy' => '$1 secretamente alterou a visibilidade das entradas em $3',
-'logentry-suppress-revision-legacy' => '$1 secretamente alterou a visibilidade das revisões em $3',
+'logentry-delete-event' => '$1 alterou a visibilidade de {{PLURAL:$5|uma entrada|$5 entradas}} em $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|alterou}} a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|alterou}} a visibilidade de entradas de registo em $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|alterou}} a visibilidade de revisões na página $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|suprimiu}} a página $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|alterou}} secretamente a visibilidade de {{PLURAL:$5|uma entrada|$5 entradas}} em $3: $4',
+'logentry-suppress-revision' => '$1 secretamente alterou a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} em $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|alterou}} secretamente a visibilidade de entradas de registo em $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|alterou}} secretamente a visibilidade de revisões da página $3',
 'revdelete-content-hid' => 'conteúdo oculto',
 'revdelete-summary-hid' => 'sumário de edição oculto',
 'revdelete-uname-hid' => 'utilizador oculto',
@@ -4050,15 +4096,17 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'revdelete-unrestricted' => 'restrições a administradores removidas',
 'logentry-move-move' => '$1 moveu a página $3 para $4',
 'logentry-move-move-noredirect' => '$1 moveu a página $3 para $4 sem deixar um redireccionamento',
-'logentry-move-move_redir' => '$1 moveu a página $3 para $4 através de um redireccionamento',
-'logentry-move-move_redir-noredirect' => '$1 moveu a página $3 para $4 sem um redireccionamento',
-'logentry-patrol-patrol' => '$1 marcou a revisão $4 da página $3 como patrulhada',
-'logentry-patrol-patrol-auto' => '$1 marcou automaticamente a revisão $4 da página $3 como patrulhada',
-'logentry-newusers-newusers' => 'A conta de utilizador $1 foi criada',
+'logentry-move-move_redir' => '$1 moveu a página $3 para $4 sobre um redireccionamento',
+'logentry-move-move_redir-noredirect' => '$1 moveu a página $3 para $4 sobre um redireccionamento sem deixar um redireccionamento',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|marcou}} a revisão $4 da página $3 como patrulhada',
+'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|marcou}} automaticamente a revisão $4 da página $3 como patrulhada',
+'logentry-newusers-newusers' => 'A conta de utilizador $1 foi {{GENDER:$2|criada}}',
 'logentry-newusers-create' => 'A conta de utilizador $1 foi criada',
 'logentry-newusers-create2' => 'A conta de utilizador $3 foi criada por $1',
-'logentry-newusers-autocreate' => 'A conta $1 foi criada automaticamente',
-'logentry-rights-rights' => '$1 modificou os privilégios do utilizador  $3  de  $4  para $5',
+'logentry-newusers-byemail' => 'Conta de utilizador $3 foi {{GENDER:$2|criada}} por $1 e a senha foi enviada por e-mail',
+'logentry-newusers-autocreate' => 'A conta de utilizador $1 foi criada automaticamente',
+'logentry-rights-rights' => '$1 modificou os privilégios do utilizador $3 de $4 para $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|mudou}} as permissões de $3',
 'logentry-rights-autopromote' => '$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5',
 'rightsnone' => '(nenhum)',
 
@@ -4114,6 +4162,7 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'api-error-ok-but-empty' => 'Erro interno: o servidor não respondeu.',
 'api-error-overwrite' => 'Não é permitido sobrescrever um ficheiro existente.',
 '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-timeout' => 'O servidor não respondeu no prazo esperado.',
 'api-error-unclassified' => 'Ocorreu um erro desconhecido',
 'api-error-unknown-code' => 'Erro desconhecido: "$1"',
@@ -4134,4 +4183,7 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 'duration-centuries' => '$1 {{PLURAL:$1|século|séculos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milénio|milénios}}',
 
+# Image rotation
+'rotate-comment' => 'Imagem rodada em $1 {{PLURAL:$1|grau|graus}} no sentido dos ponteiros do relógio',
+
 );
index e70911a..b670b28 100644 (file)
@@ -47,6 +47,7 @@
  * @author MetalBrasil
  * @author MisterSanderson
  * @author Nemo bis
+ * @author OTAVIO1981
  * @author Opraco
  * @author Pedroca cerebral
  * @author Ppena
@@ -450,9 +451,9 @@ $messages = array(
 'category-empty' => "''No momento esta categoria não possui nenhuma página ou arquivo multimídia.''",
 'hidden-categories' => '{{PLURAL:$1|Categoria oculta|Categorias ocultas}}',
 'hidden-category-category' => 'Categorias ocultas',
-'category-subcat-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte subcategoria.|Esta categoria possui {{PLURAL:$1|uma subcategoria|$1 subcategorias}}, de um total de $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Esta categoria tem apenas a seguinte subcategoria.|Esta categoria tem {{PLURAL:$1|uma subcategoria|$1 subcategorias}}, de um total de $2.}}',
 'category-subcat-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte sub-categoria|as $1 sub-categorias a seguir}}.',
-'category-article-count' => '{{PLURAL:$2|Esta categoria possui apenas a seguinte página.|Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}, de um total de $2.}}',
+'category-article-count' => '{{PLURAL:$2|Esta categoria contém apenas a página seguinte subcategoria.|{{PLURAL:$1|A seguinte página está|As seguintes $1 páginas estão}}, nesta categoria de um total de $2.}}',
 'category-article-count-limited' => 'Esta categoria possui {{PLURAL:$1|a seguinte página|as $1 páginas a seguir}}.',
 'category-file-count' => '{{PLURAL:$2|Esta categoria possui apenas o seguinte arquivo.|Esta categoria possui {{PLURAL:$1|o seguinte arquivo|os $1 arquivos a seguir}}, de um total de $2.}}',
 'category-file-count-limited' => 'Esta categoria possui {{PLURAL:$1|um arquivo|$1 arquivos}}.',
@@ -522,6 +523,7 @@ $messages = array(
 'create-this-page' => 'Iniciar esta página',
 'delete' => 'Eliminar',
 'deletethispage' => 'Eliminar esta página',
+'undeletethispage' => 'Restaure esta página',
 'undelete_short' => 'Restaurar {{PLURAL:$1|uma edição|$1 edições}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
 'protect' => 'Proteger',
@@ -562,7 +564,7 @@ Aguarde um instante antes de tentar acessar esta página novamente.
 
 $1',
 'pool-timeout' => 'Tempo limite de espera para o bloqueio excedido',
-'pool-queuefull' => 'A pool queue está cheia',
+'pool-queuefull' => 'A fila de processos está cheia',
 'pool-errorunknown' => 'Erro desconhecido',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
@@ -575,7 +577,6 @@ $1',
 'disclaimers' => 'Exoneração de responsabilidade',
 'disclaimerpage' => 'Project:Aviso_geral',
 'edithelp' => 'Ajuda de edição',
-'edithelppage' => 'Help:Editar',
 'helppage' => 'Help:Conteúdos',
 'mainpage' => 'Página principal',
 'mainpage-description' => 'Página principal',
@@ -726,6 +727,8 @@ $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.',
+'mycustomcssprotected' => 'Você não tem permissão para editar esta página CSS',
+'mycustomjsprotected' => 'Você não tem permissão para editar esta página JavaScript',
 'ns-specialprotected' => 'Não é possível editar páginas especiais',
 'titleprotected' => "Este título foi protegido, para que não seja criado.
 Quem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
@@ -762,7 +765,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'createacct-yourpasswordagain-ph' => 'Digite a senha novamente',
 'remembermypassword' => 'Lembrar meu login neste navegador (por no máximo $1 {{PLURAL:$1|dia|dias}})',
 'userlogin-remembermypassword' => 'Mantenha-me conectado',
-'userlogin-signwithsecure' => 'Entrar com um servidor seguro',
+'userlogin-signwithsecure' => 'Use a conexão segura',
 'securelogin-stick-https' => 'Permanecer conectado ao HTTPS após a autenticação',
 'yourdomainname' => 'Seu domínio:',
 'password-change-forbidden' => 'Você não pode alterar senhas nessa wiki.',
@@ -776,13 +779,14 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'userlogout' => 'Sair',
 'notloggedin' => 'Não autenticado',
 'userlogin-noaccount' => 'Não possui uma conta?',
-'userlogin-joinproject' => 'Sobre {{SITENAME}}',
+'userlogin-joinproject' => 'Junte-se ao projeto {{SITENAME}}',
 'nologin' => 'Não possui uma conta? $1.',
 'nologinlink' => 'Criar uma conta',
 'createaccount' => 'Criar conta',
 'gotaccount' => "Já possui uma conta? '''$1'''.",
 'gotaccountlink' => 'Autenticar-se',
 'userlogin-resetlink' => 'Esqueceu-se do seu nome de usuário ou da senha?',
+'userlogin-resetpassword-link' => 'Troque sua senha',
 'helplogin-url' => 'Help:Iniciar sessão',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuda para iniciar sessão]]',
 'createacct-join' => 'Insira suas informações abaixo.',
@@ -800,7 +804,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências no
 'createacct-benefit-heading' => '{{SITENAME}} é feita por pessoas como você.',
 'createacct-benefit-body1' => '{{PLURAL:$1|edição|edições}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|página|páginas}}',
-'createacct-benefit-body3' => 'contribuidores recentes',
+'createacct-benefit-body3' => '{{PLURAL:$1|contribuidor|contribuidores}} recentes',
 'badretype' => 'As senhas que você digitou não são iguais.',
 'userexists' => 'O nome de usuário fornecido já está em uso.
 Escolha um nome diferente.',
@@ -855,7 +859,7 @@ Como resultado, visitantes que usam este endereço IP não podem criar mais nenh
 'cannotchangeemail' => 'A conta de e-mail não pode ser alterada neste wiki.',
 'emaildisabled' => 'Este site não tem como enviar e-mails.',
 'accountcreated' => 'Conta criada',
-'accountcreatedtext' => 'A conta de usuário para $1 foi criada.',
+'accountcreatedtext' => 'A conta de usuário para [[{{ns:User}}:$1|$1]] ([[{{ns:Usuário Discussão}}:$1|Discussão]]) foi criada.',
 'createaccount-title' => 'Criação de conta em {{SITENAME}}',
 'createaccount-text' => 'Alguém criou uma conta de nome $2 para o seu endereço de email no wiki {{SITENAME}} ($4), tendo como senha "$3".
 Você deve se autenticar e alterar sua senha.
@@ -894,6 +898,8 @@ Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senh
 
 # Special:PasswordReset
 'passwordreset' => 'Redefinir senha',
+'passwordreset-text-one' => 'Complete este formulário para trocar sua senha.',
+'passwordreset-text-many' => '{{PLURAL:$1|Entre com uma das partes dos dados para trocar sua senha.}}',
 'passwordreset-legend' => 'Reiniciar a senha',
 'passwordreset-disabled' => 'Redefinições de senha foram desabilitadas nesta wiki.',
 'passwordreset-emaildisabled' => 'Os recursos de e-mail foram desativados nesta wiki.',
@@ -1145,7 +1151,7 @@ Ela já existia.',
 'invalid-content-data' => 'Dados de conteúdo inválidos',
 'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
 'editwarning-warning' => 'Abandonar esta página pode fazer com que você perca todas as alterações que fez.
-Se você estiver autenticado, você pode desabilitar este aviso na seção "{{int:prefs-editing}}" de suas preferências.',
+Se você estiver autenticado, você pode desabilitar este aviso na seção "Edição" de suas preferências.',
 
 # Content models
 'content-model-wikitext' => 'wikitexto',
@@ -1385,7 +1391,6 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" nesta wiki!'''",
-'searchhelp-url' => 'Help:Conteúdos',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue pelas páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Ajuda e páginas de projeto',
@@ -1644,6 +1649,8 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'right-editusercssjs' => 'Editar os arquivos CSS e JS de outros usuários',
 'right-editusercss' => 'Editar os arquivos CSS de outros usuários',
 'right-edituserjs' => 'Editar os arquivos JS de outros usuários',
+'right-editmyusercss' => 'Edite seu próprio arquivo CSS de usuário',
+'right-editmyuserjs' => 'Edite seu próprio arquivo JavaScript de usuário',
 'right-rollback' => 'Reverter rapidamente o último usuário que editou uma página em particular',
 'right-markbotedits' => 'Marcar edições revertidas como edições de bot',
 'right-noratelimit' => 'Não afetado pelos limites de velocidade de operação',
@@ -2409,7 +2416,7 @@ Futuras modificações em tal página e páginas de discussão relacionadas ser
 'watchnochange' => 'Nenhuma das páginas vigiadas foi editada no período exibido.',
 'watchlist-details' => '{{PLURAL:$1|$1 página|$1 páginas}} na sua lista de páginas vigiadas, excluindo páginas de discussão.',
 'wlheader-enotif' => 'A notificação por email encontra-se ativada.',
-'wlheader-showupdated' => "As páginas modificadas desde a sua última visita são mostradas em '''negrito'''",
+'wlheader-showupdated' => "Páginas modificadas desde a sua última visita são mostradas em '''negrito'''",
 'watchmethod-recent' => 'verificando edições recentes para as páginas vigiadas',
 'watchmethod-list' => 'verificando páginas vigiadas para edições recentes',
 'watchlistcontains' => 'Sua lista de páginas vigiadas contém $1 {{PLURAL:$1|página|páginas}}.',
@@ -2980,6 +2987,7 @@ Acesse [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//trans
 'thumbnail-more' => 'Ampliar',
 'filemissing' => 'arquivo não encontrado',
 'thumbnail_error' => 'Erro ao criar miniatura: $1',
+'thumbnail_error_remote' => 'Mensagem de erro para $1, $2',
 'djvu_page_error' => 'página DjVu inacessível',
 'djvu_no_xml' => 'Não foi possível acessar o XML do arquivo DjVU',
 'thumbnail-temp-create' => 'Não foi possível criar o arquivo temporário de miniatura',
@@ -3176,7 +3184,7 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
 'pageinfo-language' => 'Idioma do conteúdo da página',
-'pageinfo-robot-policy' => 'Status do mecanismo de pesquisa',
+'pageinfo-robot-policy' => 'Estado para mecanismos de pesquisa',
 'pageinfo-robot-index' => 'Indexável',
 'pageinfo-robot-noindex' => 'Não indexável',
 'pageinfo-views' => 'Número de visitas',
@@ -4047,12 +4055,12 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'logentry-delete-restore' => '$1 restaurou a página $3',
 'logentry-delete-event' => '$1 alterou a visibilidade {{PLURAL:$5|de uma entrada|de $5 entradas}} do registro $3: $4',
 'logentry-delete-revision' => '$1 alterou a visibilidade de {{PLURAL:$5|uma revisão|$5 revisões}} na página $3: $4',
-'logentry-delete-event-legacy' => '$1 alterou a visibilidade de eventos de log em $3',
+'logentry-delete-event-legacy' => '$1 alterou a visibilidade do registro de eventos em $3',
 'logentry-delete-revision-legacy' => '$1 alterou a visibilidade de revisões na página $3',
-'logentry-suppress-delete' => '$1 suprimiu a página $3',
+'logentry-suppress-delete' => '$1 supervisionou a página $3',
 'logentry-suppress-event' => '$1 alterou secretamente a visibilidade {{PLURAL:$5|de uma entrada|das $5 entradas}} em $3: $4',
 'logentry-suppress-revision' => '$1 alterou secretamente a visibilidade {{PLURAL:$5|de uma revisão|das $5 revisões}} em $3: $4',
-'logentry-suppress-event-legacy' => '$1 alterou secretamente a visibilidade das entradas em $3',
+'logentry-suppress-event-legacy' => '$1 alterou secretamente a visibilidade do registro de eventos em $3',
 'logentry-suppress-revision-legacy' => '$1 alterou secretamente a visibilidade de revisões na página $3',
 'revdelete-content-hid' => 'conteúdo oculto',
 'revdelete-summary-hid' => 'sumário de edição oculto',
index bec6bad..f425364 100644 (file)
@@ -67,6 +67,7 @@
  * @author Leinad
  * @author Lejonel
  * @author Li-sung
+ * @author Liangent
  * @author Lloffiwr
  * @author MF-Warburg
  * @author Malafaya
@@ -423,7 +424,7 @@ This can also appear in the credits page if the credits feature is enabled,for e
 {{Identical|My pages}}',
 'qbspecialpages' => '{{Identical|Special page}}',
 'faq' => "FAQ is short for ''frequently asked questions''.",
-'faqpage' => "FAQ is short for ''frequently asked questions''. This page is only linked on some of the old skins, not in Monobook or Modern.
+'faqpage' => "FAQ is short for ''frequently asked questions''. This page is only linked in CologneBlue (an old skin), not in Monobook or Vector.
 
 {{doc-important|Do not translate <tt>Project:</tt> part.}}",
 
@@ -441,8 +442,7 @@ This can also appear in the credits page if the credits feature is enabled,for e
 'vector-action-undelete' => 'Tab at top of page, in vector skin.
 {{Identical|Undelete}}',
 'vector-action-unprotect' => 'Tab at top of page, in vector skin.
-
-{{Identical|Unprotect}}',
+{{Identical|Change protection}}',
 'vector-simplesearch-preference' => 'Preference for enhanced search suggestion in the Vector skin.',
 'vector-view-create' => 'Tab label in the Vector skin. See for example {{canonicalurl:Foo|useskin=vector}}
 {{Identical|Create}}',
@@ -533,9 +533,9 @@ See also:
 * {{msg-mw|Accesskey-ca-delete}}
 * {{msg-mw|Tooltip-ca-delete}}
 {{Identical|Delete}}',
-'undeletethispage' => 'In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.',
 'deletethispage' => 'In the Cologne Blue skin this is the text for link to delete the page in admin view, at the bottom of the page.
 {{Identical|Delete this page}}',
+'undeletethispage' => 'In the Cologne Blue skin this is the text for link to undelete the page in admin view, at the bottom of the page.',
 'undelete_short' => "It is tab label. It's really can be named ''nstab-undelete''.",
 'viewdeleted_short' => 'Tab label for the undelete button when the user has permission to view the deleted history but not undelete.',
 'protect' => 'Name of protect tab displayed for admins. Should be in the infinitive mood.
@@ -555,7 +555,7 @@ See also:
 * {{msg-mw|Unprotect}}
 * {{msg-mw|Accesskey-ca-unprotect}}
 * {{msg-mw|Tooltip-ca-unprotect}}
-{{Identical|Unprotect}}',
+{{Identical|Change protection}}',
 'unprotectthispage' => 'In this Cologne Blue skin this is the anchor text for the link to unprotect the page in admin view, at the bottom of the page.
 {{Identical|Unprotect this page}}',
 'newpage' => '{{Identical|New page}}',
@@ -657,8 +657,6 @@ See also:
 'disclaimerpage' => 'Used as page for that contains the site disclaimer. Used at the bottom of every page on the wiki. Example: [[{{MediaWiki:Disclaimerpage}}|{{MediaWiki:Disclaimers}}]].
 {{doc-important|Do not change the "<tt>Project:</tt>" part.}}',
 'edithelp' => 'This is the text that appears on the editing help link that is near the bottom of the editing page',
-'edithelppage' => 'The help page displayed when a user clicks on editing help link which is present on the right of Show changes button.
-{{doc-important|Do not change the "<tt>Help:</tt>" part.}}',
 'helppage' => 'The link destination used by default in the sidebar, and in {{msg-mw|noarticletext}}.
 {{doc-important|Do not change the "<tt>Help:</tt>" part.}}
 {{Identical|HelpContent}}',
@@ -1025,6 +1023,8 @@ See also {{msg-mw|protectedinterface}}.',
 'namespaceprotected' => '* $1 - namespace name',
 'customcssprotected' => 'Used as error message.',
 'customjsprotected' => 'Used as error message.',
+'mycustomcssprotected' => 'Used as error message.',
+'mycustomjsprotected' => 'Used as error message.',
 'ns-specialprotected' => 'Error message displayed when trying to edit a page in the Special namespace',
 'titleprotected' => 'Use $1 for GENDER.',
 'filereadonlyerror' => 'Parameters:
@@ -1055,48 +1055,48 @@ Parameters:
 * $1 - an URL to [[Special:Userlogin]] containing <code>returnto</code> and <code>returntoquery</code> parameters',
 'welcomeuser' => 'Text for a welcome heading that users see after registering a user account. $1 is the username of the new user. See [[bugzilla:42215]]',
 'welcomecreation-msg' => 'A welcome message users see after registering a user account, following a welcomeuser heading. $1 is the username of the new user. Replaces welcomecreation in 1.21wmf5,see [[bugzilla:42215]]',
-'yourname' => "{{doc-important|<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is '''NOT''' supported.}}
-In user preferences.
-{{Identical|Username}}",
-'userlogin-yourname' => 'In new vertical user login & create account forms, label for username field.
-
-See examples: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1] and [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+'yourname' => 'Since 1.22 no longer used in core, but used by some extensions.
 {{Identical|Username}}',
-'userlogin-yourname-ph' => 'Placeholder text in new userlogin/create account form field.
+'userlogin-yourname' => "In user login & create account forms, label for username field.
+{{doc-important|<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is '''NOT''' supported.}}
+
+See examples: [{{canonicalurl:Special:UserLogin}} Special:UserLogin] and [{{canonicalurl:Special:UserLogin}} Special:UserLogin]
+{{Identical|Username}}",
+'userlogin-yourname-ph' => 'Placeholder text in login & create account form field.
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1] and [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'yourpassword' => 'In user preferences
 
 {{Identical|Password}}',
-'userlogin-yourpassword' => 'In new vertical user login & create account forms, label for password field.
+'userlogin-yourpassword' => 'In login & create account forms, label for password field.
 
-See examples: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1] and [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See examples: [{{canonicalurl:Special:UserLogin}} Special:UserLogin] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Password}}',
-'userlogin-yourpassword-ph' => 'Placeholder text in new userlogin form for password field.
+'userlogin-yourpassword-ph' => 'Placeholder text in login form for password field.
 
-See examples: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1] and [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See examples: [{{canonicalurl:Special:UserLogin}} Special:UserLogin] and [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Enter password}}',
-'createacct-yourpassword-ph' => 'Placeholder text in new create account form for password field.
+'createacct-yourpassword-ph' => 'Placeholder text in create account form for password field.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Enter password}}',
-'yourpasswordagain' => 'In user preferences',
-'createacct-yourpasswordagain' => 'In new create account form, label for field to re-enter password
+'yourpasswordagain' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED',
+'createacct-yourpasswordagain' => 'In create account form, label for field to re-enter password
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Confirm password}}',
-'createacct-yourpasswordagain-ph' => 'Placeholder text in new create account form for re-enter password field.
+'createacct-yourpasswordagain-ph' => 'Placeholder text in create account form for re-enter password field.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'remembermypassword' => 'A check box in [[Special:UserLogin]]
 
 {{Identical|Remember my login on this computer}}',
 'userlogin-remembermypassword' => 'The text for a check box in the new-style [[Special:UserLogin]].
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]',
 'userlogin-signwithsecure' => 'Text of link to HTTPS login form.
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]',
 'securelogin-stick-https' => 'Used as label for checkbox.',
 'yourdomainname' => 'Used as label for listbox.',
 'password-change-forbidden' => 'Error message shown when an external authentication source does not allow the password to be changed.',
@@ -1111,9 +1111,10 @@ See also:
 'nav-login-createaccount' => "Shown to anonymous users in the upper right corner of the page. When you can't create an account, the message {{msg-mw|login}} is shown.
 {{Identical|Log in / create account}}",
 'loginprompt' => 'A small notice in the log in form.',
-'userlogin' => 'Name of special page [[Special:UserLogin]] where a user can log in or click to create a user account.
+'userlogin' => 'Since 1.22 no longer used in core, but may still be used by extensions. DEPRECATED
+
 {{Identical|Log in / create account}}',
-'userloginnocreate' => 'A variant of {{msg-mw|Userlogin}} when the user is not allowed to create a new account.
+'userloginnocreate' => 'Since 1.22 no longer used in core, but may still be used by some extensions. A variant of {{msg-mw|Userlogin}} when the user is not allowed to create a new account. DEPRECATED
 
 {{Identical|Log in}}',
 'logout' => 'Used as link text in your personal toolbox (upper right side).
@@ -1129,33 +1130,33 @@ See also:
 'notloggedin' => 'This message is displayed in the standard skin when not logged in. The message is placed above the login link in the top right corner of pages.
 
 {{Identical|Not logged in}}',
-'userlogin-noaccount' => 'In the new-style [[Special:Userlogin]] form, this is the text prior to button inviting user to join project.
+'userlogin-noaccount' => 'In the [[Special:Userlogin]] form, this is the text prior to button inviting user to join project.
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]
 {{Identical|Do not have an account}}',
 'userlogin-joinproject' => 'Text of button inviting user to create an account.
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]',
-'nologin' => 'A message shown in the log in form. Parameters:
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]',
+'nologin' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameters:
 * $1 - a link to the account creation form, and the text of it is {{msg-mw|Nologinlink}}
 {{Identical|Do not have an account}}',
-'nologinlink' => 'Text of the link to the account creation form. Before that link, the message {{msg-mw|Nologin}} appears.
+'nologinlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.
 {{Identical|Create an account}}',
 'createaccount' => 'Used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
 
 It is also used on the submit button in the form/special page where you register a new account.
 {{doc-special|CreateAccount}}
 {{Identical|Create account}}',
-'gotaccount' => 'A message shown in the account creation form.
+'gotaccount' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameter:
 * $1 - a link to the log in form, and the text of it is {{msg-mw|Gotaccountlink}}',
-'gotaccountlink' => 'Text of the link to the log in form. Before that link, the message {{msg-mw|Gotaccount}} appears.
+'gotaccountlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.
 {{Identical|Log in}}',
-'userlogin-resetlink' => 'Used on the login page.',
-'userlogin-resetpassword-link' => 'Used as link text on new vertical-layout create account form.
+'userlogin-resetlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.',
+'userlogin-resetpassword-link' => 'Used as link text on login form.
 
-The link points to [[Special:PasswordReset]].
+The link points to the local [[Special:PasswordReset]].
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]
 
 userlogin-resetpassword-link may have to be shorter than the old {{msg-mw|userlogin-resetlink}}',
 'helplogin-url' => '{{doc-important|Do not translate the namespace name <code>Help</code>.}}
@@ -1165,13 +1166,13 @@ Used as a link target in the message {{msg-mw|Userlogin-helplink}}.',
 'userlogin-helplink' => '{{doc-important|Do not change <code><nowiki>{{MediaWiki:helplogin-url}}</nowiki></code>.}}
 Wikitext linking to login help.
 
-See example: [{{canonicalurl:Special:UserLogin|useNew=1}} Special:UserLogin?useNew=1]
+See example: [{{canonicalurl:Special:UserLogin}} Special:UserLogin]
 
 See also:
 * {{msg-mw|Helplogin-url}}',
 'createacct-join' => 'Subheading of vertical-layout create account form encouraging user to join the wiki.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createacct-emailrequired' => 'Label in vertical-layout create account form for email field when it is required.
 
 See also:
@@ -1179,50 +1180,52 @@ See also:
 {{Identical|E-mail address}}',
 'createacct-emailoptional' => 'Label in vertical-layout create account form for email field when it is optional.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 
 See also:
 * {{msg-mw|Createacct-emailrequired}}',
 'createacct-email-ph' => 'Placeholder in vertical-layout create account form for email field.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createaccountmail' => 'Used as label for the checkbox for creating a new account and sending the new password to the specified e-mail address directly, as used on [[Special:UserLogin/signup]] if creating accounts by e-mail is allowed.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createacct-realname' => 'In vertical-layout create account form, label for field to enter optional real name.',
-'createaccountreason' => '{{Identical|Reason}}',
-'createacct-reason' => 'In vertical-layout create account form, label for field to enter reason to create an account when already logged-in.
+'createaccountreason' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED
+
+{{Identical|Reason}}',
+'createacct-reason' => 'In create account form, label for field to enter reason to create an account when already logged-in.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Reason}}',
 'createacct-reason-ph' => 'Placeholder in vertical-layout create account form for reason field.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createacct-captcha' => 'Label in vertical-layout create account form for CAPTCHA input field when repositioned by JavaScript.',
 'createacct-imgcaptcha-ph' => 'Placehodler text in vertical-layout create account form for image CAPTCHA input field when repositioned by JavaScript.',
 'createacct-submit' => 'Submit button on vertical-layout create account form.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createacct-benefit-heading' => 'In vertical-layout create account form, the heading for the section describing the benefits of creating an account.
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'createacct-benefit-body1' => 'In vertical-layout create account form, the text for the first benefit.
 
 Preceded by the message {{msg-mw|Createacct-benefit-head1}} (number of edits).
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Edit}}',
 'createacct-benefit-body2' => 'In vertical-layout create account form, the text for the second benefit.
 
 Preceded by the message {{msg-mw|Createacct-benefit-head2}} (number of pages).
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]
 {{Identical|Page}}',
 'createacct-benefit-body3' => 'In vertical-layout create account form, the text for the third benefit.
 
 Preceded by the message {{msg-mw|Createacct-benefit-head3}} (number of contributors).
 
-See example: [{{canonicalurl:Special:UserLogin|type=signup&useNew=1}} Special:UserLogin?type=signup&useNew=1]',
+See example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]',
 'badretype' => 'Used as error message when the new password and its retype do not match.',
 'userexists' => 'Used as error message in creating a user account.',
 'loginerror' => 'Used as title of error message.
@@ -1261,7 +1264,7 @@ Parameters:
 $1 is the minimum number of characters in the password.',
 'password-name-match' => 'Used as error message when password validity check failed.',
 'password-login-forbidden' => 'Error message shown when the user has tried to log in using one of the special username/password combinations used for MediaWiki testing. (See [[mwr:75589]], [[mwr:75605]].)',
-'mailmypassword' => 'Shown at [[Special:UserLogin]]',
+'mailmypassword' => 'Heading in [[Special:PasswordReset]]',
 'passwordremindertitle' => 'Title of e-mail which contains temporary password',
 'passwordremindertext' => 'This text is used in an e-mail sent when a user requests a new temporary password (he has forgotten his password) or when an sysop creates a new user account choosing to have password and username sent to the new user by e-mail.
 * $1 is an IP address. Example: 123.123.123.123
@@ -1351,10 +1354,14 @@ See also:
 # Special:PasswordReset
 'passwordreset' => 'Title of [[Special:PasswordReset]].
 {{Identical|Reset password}}',
-'passwordreset-text-one' => 'Text on [[Special:PasswordReset]] that appears when there is only one way of resetting the password.',
+'passwordreset-text-one' => 'Text on [[Special:PasswordReset]] that appears when there is only one way of resetting the password.
+
+{{msg-mw|Passwordreset-text-many}}, when there are multiple ways of resetting the password..',
 'passwordreset-text-many' => 'Text on [[Special:PasswordReset]] that appears when there are multiple ways of resetting the password.
 
-* $1 is the number of password reset routes.',
+* $1 is the number of password reset routes.
+
+{{msg-mw|Passwordreset-text-one}}, when there is only one way of resetting the password.',
 'passwordreset-legend' => '{{Identical|Reset password}}',
 'passwordreset-disabled' => 'Used as error message in changing password.',
 'passwordreset-emaildisabled' => "Used as error message in changing password when site's email feature is disabled.",
@@ -2342,9 +2349,6 @@ Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|
 'searchmenu-legend' => '{{Identical|Search options}}',
 'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).',
 'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).',
-'searchhelp-url' => 'Description: The URL of the search help page.
-{{doc-important|Do not change the "<tt>Help:</tt>" part.}}
-{{Identical|HelpContent}}',
 'searchmenu-prefix' => '{{doc-important|Do not translate "Special:PrefixIndex"}}
 Parameters:
 * $1 - prefix string',
@@ -2745,6 +2749,7 @@ Parameters:
 * $1 - optional, for PLURAL use, the number of items in the column following the message. Avoid PLURAL, if your language allows that.',
 'userrights-irreversible-marker' => '{{optional}}',
 'userrights-conflict' => "Shown on [[Special:UserRights]] if the target's rights have been changed since the form was loaded.",
+'userrights-removed-self' => 'Shown on [[Special:UserRights]] in a green box after the user removed its own rights to access that page.',
 
 # Groups
 'group' => '{{Identical|Group}}',
@@ -2897,8 +2902,18 @@ This user automatically bypasses IP blocks, auto-blocks and range blocks - so I
 'right-editprotected' => '{{doc-right|editprotected}}',
 'right-editinterface' => '{{doc-right|editinterface}}',
 'right-editusercssjs' => '{{doc-right|editusercssjs}}',
-'right-editusercss' => '{{doc-right|editusercss}}',
-'right-edituserjs' => '{{doc-right|edituserjs}}',
+'right-editusercss' => '{{doc-right|editusercss}}
+
+See also {{msg-mw|Right-editmyusercss}}',
+'right-edituserjs' => '{{doc-right|edituserjs}}
+
+See also {{msg-mw|Right-editmyuserjs}}',
+'right-editmyusercss' => '{{doc-right|editmyusercss}}
+
+See also {{msg-mw|Right-editusercss}}',
+'right-editmyuserjs' => '{{doc-right|editmyuserjs}}
+
+See also {{msg-mw|Right-edituserjs}}',
 'right-rollback' => '{{doc-right|rollback}}
 {{Identical|Rollback}}',
 'right-markbotedits' => '{{doc-right|markbotedits}}
@@ -4174,10 +4189,15 @@ See also:
 'querypage-disabled' => "On special pages that use expensive database queries but are not cacheable, this message is displayed when 'miser mode' is on (i.e. no expensive queries allowed).",
 
 # Book sources
-'booksources' => '{{doc-special|BookSources}}
+'booksources' => "{{doc-special|BookSources}}
+
+'''This message shouldn't be changed unless it has serious mistakes.'''
+
+It's used as the page name of the configuration page of [[Special:BookSources]]. Changing it breaks existing sites using the default version of this message.
+
 See also:
 * {{msg-mw|Booksources|title}}
-* {{msg-mw|Booksources-text|text}}',
+* {{msg-mw|Booksources-text|text}}",
 'booksources-search-legend' => 'Box heading on [[Special:BookSources|book sources]] special page. The box is for searching for places where a particular book can be bought or viewed.',
 'booksources-isbn' => '{{optional}}',
 'booksources-go' => 'Name of button in [[Special:BookSources]]
@@ -4308,7 +4328,8 @@ You can apparently use 'URL' instead of 'hostname'.",
 {{Identical|Show}}',
 'listusers-noresult' => 'identical with {{msg-mw|activeusers-noresult}}',
 'listusers-blocked' => 'Used on [[Special:ActiveUsers]] when a user has been blocked.
-* $1 is a user name for use with GENDER (optional)',
+* $1 - a user name for use with GENDER (optional)
+{{Identical|Blocked}}',
 
 # Special:ActiveUsers
 'activeusers' => 'Title of [[Special:ActiveUsers]]',
@@ -5059,7 +5080,7 @@ See also:
 'contribsub2' => 'Contributions for "user" (links)
 {{Identical|For $1}}',
 'nocontribs' => 'Optional parameter: $1 is the user name',
-'uctop' => 'This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagename‎ (edit summary) (top)
+'uctop' => 'This message is used in [[Special:Contributions]]. It is used to show that a particular edit was the last made to a page. Example: 09:57, 11 February 2008 (hist) (diff) Pagename‎ (edit summary) (current)
 {{Identical|Top}}',
 'month' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for a dropdown box to select a specific month to view the edits made in that month, and the earlier months. See also {{msg-mw|year}}.',
 'year' => 'Used in [[Special:Contributions]] and history pages ([{{fullurl:Sandbox|action=history}} example]), as label for an input box to select a specific year to view the edits made in that year, and the earlier years.
@@ -5181,7 +5202,8 @@ Parameter $1 is a page title.',
 
 {{Identical|Redirect page}}',
 'istemplate' => 'Means that a page (a template, specifically) is used as <code><nowiki>{{Page name}}</nowiki></code>.
-Displayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).',
+Displayed in [[Special:WhatLinksHere]] (see [[Special:WhatLinksHere/Template:New portal]] for example).
+{{Identical|Transclusion}}',
 'isimage' => 'This message is displayed on [[Special:WhatLinksHere]] for images. It means that the image is used on the page (as opposed to just being linked to like an non-image page).',
 'whatlinkshere-prev' => 'This is part of the navigation message on the top and bottom of Whatlinkshere pages, where it is used as the first argument of {{msg-mw|Viewprevnext}}.
 $1 is the number of items shown per page. It is not used when $1 is zero; not sure what happens when $1 is one.
@@ -5820,8 +5842,10 @@ See also:
 'movepagebtn' => "Button label on the special 'Move page'.
 
 {{Identical|Move page}}",
-'pagemovedsub' => 'Message displayed as aheader of the body, after succesfully moving a page from source to target name.',
-'movepage-moved' => 'Message displayed after succesfully moving a page from source to target name. Parameters:
+'pagemovedsub' => 'Message displayed as aheader of the body, after successfully moving a page from source to target name.',
+'movepage-moved' => 'Message displayed after successfully moving a page from source to target name.
+
+Parameters:
 * $1 - the source page as a link with display name
 * $2 - the target page as a link with display name
 * $3 - (optional) the source page name without a link
@@ -7166,13 +7190,7 @@ Parameters:
 
 Parameters:
 * $1 - the number of years',
-'ago' => 'Phrase for indicating how long ago something happened. $1 is something like "3 days 10 hours", taken from these messages:
-*{{msg-mw|Seconds}}
-*{{msg-mw|Minutes}}
-*{{msg-mw|Hours}}
-*{{msg-mw|Days}}
-*{{msg-mw|Months}}
-*{{msg-mw|Years}}',
+'ago' => 'Phrase for indicating how long ago something happened. $1 is some kind of timestamp.',
 'just-now' => 'Phrase for indicating something happened just now.',
 
 # Human-readable timestamps
index c9d6c8f..bb01bd8 100644 (file)
@@ -373,6 +373,18 @@ $messages = array(
 'oct' => 'ukt',
 'nov' => 'nuw',
 'dec' => 'dis',
+'january-date' => '$1 ñiqin inirupi',
+'february-date' => '$1 ñiqin phiwrirupi',
+'march-date' => '$1 ñiqin marsupi',
+'april-date' => '$1 ñiqin awrilpi',
+'may-date' => '$1 ñiqin mayukillapi',
+'june-date' => '$1 ñiqin hunyupi',
+'july-date' => '$1 ñiqin hulyupi',
+'august-date' => '$1 ñiqin awustupi',
+'september-date' => '$1 ñiqin sitimripi',
+'october-date' => '$1 ñiqin uktuwripi',
+'november-date' => '$1 ñiqin nuwimripi',
+'december-date' => '$1 ñiqin disimripi',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Katiguriya|Katiguriyakuna}}',
@@ -454,6 +466,7 @@ $messages = array(
 'create-this-page' => "Kay p'anqata kamariy",
 'delete' => 'Qulluy',
 'deletethispage' => "Kay p'anqata qulluy",
+'undeletethispage' => "Kay p'anqata qullusqamanta paqarichiy",
 'undelete_short' => "Paqarichiy {{PLURAL:$1|huk llamk'apusqa|$1 llamk'apusqa}}",
 'viewdeleted_short' => '{{PLURAL:$1|qullusqa hukchasqa|$1 qullusqa hukchasqa}} qhaway',
 'protect' => 'Amachay',
@@ -507,7 +520,6 @@ $1",
 'disclaimers' => 'Chiqakunamanta rikuchiy',
 'disclaimerpage' => 'Project:Sapsilla saywachasqa paqtachiy',
 'edithelp' => "Llamk'ana yanapay",
-'edithelppage' => 'Help:Qillqa yanapay',
 'helppage' => 'Help:Yanapana',
 'mainpage' => "Qhapaq p'anqa",
 'mainpage-description' => "Qhapaq p'anqa",
@@ -654,6 +666,8 @@ $2",
 'namespaceprotected' => "'''$1''' nisqa suti k'ititaqa llamk'apuyta manam saqillasunkichu.",
 'customcssprotected' => "Manam saqillasunkichu kay CSS p'anqata llamk'apuyta, huk ruraqpa kikin tiyachisqankunayuq kaptinmi.",
 'customjsprotected' => "Manam saqillasunkichu kay JavaScript p'anqata llamk'apuyta, huk ruraqpa kikin tiyachisqankunayuq kaptinmi.",
+'mycustomcssprotected' => "Kay CSS p'anqataqa manam llamk'apuyta atinkichu.",
+'mycustomjsprotected' => "Kay JavaScript p'anqataqa manam llamk'apuyta atinkichu.",
 'ns-specialprotected' => "{{ns:special}} suti k'itipi p'anqakunaqa manam llamk'apunallachu.",
 'titleprotected' => "Kay p'anqa sutitaqa [[User:$1|$1]] sutiyuq ruraq kamariymanta hark'arqanmi, kayraykum nispa: ''$2''.",
 'filereadonlyerror' => 'Manam atinichu "$1" sutiyuq willañiqita hukchayta, "$2" sutiyuq willañiqi churamuna ñawirillanapaq kachkaptinmi.
@@ -720,10 +734,19 @@ Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] hukchay
 'createacct-realname' => 'Chiqap suti (munaspayki)',
 'createaccountreason' => 'Kayrayku:',
 'createacct-reason' => 'Kayrayku',
+'createacct-reason-ph' => 'Imaraykutaq huk rakiqunata kamarichkanki',
+'createacct-captcha' => 'Amachana llanchiy',
+'createacct-imgcaptcha-ph' => 'Hanaqpi rikusqayki qillqata yaykuchiy',
+'createacct-submit' => 'Rakiqunaykita kamariy',
+'createacct-benefit-heading' => '{{SITENAME}}taqa qam hina runakunam ruran.',
+'createacct-benefit-body1' => "{{PLURAL:$1|llamk'apusqa|llamk'apusqakuna}}",
+'createacct-benefit-body2' => "{{PLURAL:$1|p'anqa|p'anqakuna}}",
+'createacct-benefit-body3' => "{{PLURAL:$1|llamk'apuq|llamk'apuqkuna}}",
 'badretype' => 'Qusqayki yaykuna rimakunaqa manam kaqllachu.',
 'userexists' => 'Munasqayki ruraqpa sutiykiqa kachkanñam.
 Ama hina kaspa, huk ruraqpa sutiykita akllay.',
 'loginerror' => "Pantasqa llamk'apuy tiyaypa qallarisqan",
+'createacct-error' => 'Rakiquna kamariy pantasqa',
 'createaccounterror' => 'Manam atinichu rakiqunata kamariyta: $1',
 'nocookiesnew' => "Ruraqpa rakiqunaykiqa kichasqañam, ichataq manaraqmi yaykurqankichu. {{SITENAME}}qa <em>kuki</em> nisqakunatam llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita yaykuykachay.",
 'nocookieslogin' => "{{SITENAME}} <em>kuki</em> nisqakunata llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita ruraykachay.",
@@ -768,7 +791,7 @@ Ama hina kaspa, chaskispaykiqa ruraqpa sutiykita nispa musuqmanta yaykuy.',
 'cannotchangeemail' => 'Ruraqpa rakiqunanpi e-chaski imamaytakunaqa kay wikipi manam hukchanallachu.',
 'emaildisabled' => 'Kay tiyayqa e-chaskita manam kachayta atinchu.',
 'accountcreated' => 'Rakiqunaqa kichasqañam',
-'accountcreatedtext' => '$1 sutiyuq ruraqpa rakiqunanqa kichasqañam.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|rimanakuy]]) sutiyuq ruraqpa rakiqunanqa kichasqañam.',
 'createaccount-title' => '{{SITENAME}}paq musuq rakiqunata kichariy',
 'createaccount-text' => 'Pipas e-chaski imamaytaykipaq {{SITENAME}}pi ($4) "$2" sutiyuq rakiqunatam kicharqan, "$3" nisqa yaykuna rimayuq. Yaykuspayki yaykuna rimaykita hukchanaykim tiyanman.
 
@@ -801,13 +824,15 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
 'resetpass-wrong-oldpass' => "Mit'alla icha kunan yaykuna rimaqa manam allinchu.
 Yaykuna rimaykitaqa aypalla hukcharqunkiñachá icha huk mit'alla yaykuna rimata mañakurqunkiñachá.",
 'resetpass-temp-password' => "Mit'alla yaykuna rima:",
+'resetpass-abort-generic' => "Yaykuna rima hukchaytaqa yapa wakichim p'itirqan.",
 
 # Special:PasswordReset
 'passwordreset' => 'Yaykuna rimata kutichiy',
-'passwordreset-text' => "Kay hunt'ana p'anqata hunt'ay, yaykuna rimaykita kutichinaykipaq.",
+'passwordreset-text-one' => "Kay hunt'ana p'anqata hunt'ay, yaykuna rimaykita kutichinaykipaq.",
+'passwordreset-text-many' => '{{PLURAL:$1|Kay willa rakikunamanta hukta yaykuchiy, yaykuna rimaykita kutichinaykipaq.}}',
 'passwordreset-legend' => 'Yaykuna rimata kutichiy',
 'passwordreset-disabled' => 'Kay wikipiqa yaykuna rimata manam kutichiyta atinkichu.',
-'passwordreset-pretext' => '{{PLURAL:$1||Qatiqpi kaq willa rakikunamanta huktam yaykuchiy}}',
+'passwordreset-emaildisabled' => "Kay wikipiqa e-chaski llamk'anakunaman ama nisqam.",
 'passwordreset-username' => 'Ruraqpa sutin:',
 'passwordreset-domain' => 'Duminyu:',
 'passwordreset-capture' => 'Llalliwaq e-chaskita qhawayta munankichu?',
@@ -1032,9 +1057,11 @@ Manam nirqanchu imarayku.",
 Qullusqachá.",
 'edit-conflict' => "Tuylla llamk'apuymanta sasachakuy.",
 'edit-no-change' => "Manapuni hukchaptiykim, llamk'apusqayki manam hallch'asqachu.",
+'postedit-confirmation' => "Llamk'apusqaykiqa waqaychasqañam.",
 'edit-already-exists' => "Manam atinichu musuq p'anqata kamariyta.
 Kachkañam.",
 'defaultmessagetext' => 'Ñawpaq qillqa',
+'content-failed-to-parse' => "Manam atinichu $2 samiqta $1 kikinchapaq t'ikrayta: $3",
 'invalid-content-data' => 'Samiqmanta willaykunaqa manam allinchu',
 'content-not-allowed-here' => '"$1" nisqa samiqqa [[$2]] sutiyuq p\'anqapi manam saqillasqachu',
 'editwarning-warning' => "Kay p'anqata saqispaykiqa lliw rurarqusqayki hukchasqakunatachá chinkachiykiman.
@@ -1277,7 +1304,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'searchmenu-legend' => 'Maskaypaq akllanakuna',
 'searchmenu-exists' => "'''Kay wikipiqa «[[$1]]» sutiyuq p'anqam kachkan'''",
 'searchmenu-new' => "'''Kay wikipi \"[[:\$1]]\" sutiyuq p'anqata kamariy!'''",
-'searchhelp-url' => 'Help:Yanapana',
 'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Kay ñawpa k'askaqchayuq huk p'anqakunata maskay]]",
 'searchprofile-articles' => "Samiq p'anqakuna",
 'searchprofile-project' => "Yanapanapaq ruraykamaypaqpas p'anqakuna",
@@ -1318,6 +1344,7 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'powersearch-togglenone' => 'Mana imapas',
 'search-external' => 'Hawapi maskay',
 'searchdisabled' => "{{SITENAME}} nisqapi maskaymanqa ama nisqam. Hinachkaptinqa, maskariy google nisqawan icha huk hawa maskanakunawan, ichataq yuyariy, {{SITENAME}}manta hallch'asqankunaqa manañachá musuqllachu.",
+'search-error' => 'Maskaypiqa pantasqam tukurqan: $1',
 
 # Preferences page
 'preferences' => 'Allinkachinakuna',
@@ -1459,6 +1486,7 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'userrights-notallowed' => 'Qampa rakiqunaykiwanqa manam ruraqkunap hayñinkunata yapayta icha qichuyta atinkichu.',
 'userrights-changeable-col' => 'Hukchanayki huñukuna',
 'userrights-unchangeable-col' => 'Mana hukchanayki huñukuna',
+'userrights-conflict' => 'Ruraqpa hayñin tupanakuymi. Ama hina kaspa, hukchasqaykikunata musuqmanta quy.',
 
 # Groups
 'group' => 'Huñu:',
@@ -1529,6 +1557,8 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'right-editusercssjs' => "Huk ruraqkunap CSS, JS willañiqinkunata llamk'apuy",
 'right-editusercss' => "Huk ruraqkunap CSS willañiqinkunata llamk'apuy",
 'right-edituserjs' => "Huk ruraqkunap JS willañiqinkunata llamk'apuy",
+'right-editmyusercss' => "Kikiykip ruraqpaq CSS willañiqiykikunata llamk'apuy",
+'right-editmyuserjs' => "Kikiykip ruraqpaq JavaScript willañiqiykikunata llamk'apuy",
 'right-rollback' => "Huk p'anqapi qhipaq llamk'apuqpa hukchasqankunata utqaylla kutichiy",
 'right-markbotedits' => "Kutichisqa llamk'apusqakunata rurana antachap llamk'apusqankunata hina sananchay",
 'right-noratelimit' => 'Achura saywakunap manam chayachisqanchu',
@@ -2491,7 +2521,7 @@ $1',
 'mycontris' => "Llamk'apusqaykuna",
 'contribsub2' => '$1 ($2)',
 'nocontribs' => 'Manam kay hina hukchasqakuna kanchu.',
-'uctop' => ' (qhipaq hukchasqa)',
+'uctop' => '(qhipaq hukchasqa)',
 'month' => 'Kay killamanta (ñawpaqmantapas):',
 'year' => 'Kay watamanta (ñawpaqmantapas):',
 
@@ -2801,6 +2831,7 @@ Ama hina kaspa, [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] n
 'thumbnail-more' => 'Hatunchay',
 'filemissing' => 'Manam willañiqi kachkanchu',
 'thumbnail_error' => 'Manam atinichu rikchachata kamayta: $1',
+'thumbnail_error_remote' => '$1 nisqamanta pantasqa willasqa: $2',
 'djvu_page_error' => "DjVu nisqa p'anqaqa nisyum",
 'djvu_no_xml' => 'Manam atinichu XML-ta apamuy DjVu willañiqipaq',
 'thumbnail-temp-create' => "Manam atinichu mit'alla rikch'acha willañiqita kamariyta.",
@@ -2854,6 +2885,7 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
 'import-error-interwiki' => '"$1" sutiyuq p\'anqaqa hawamanta manam chaskisqachu, sutin wikipura (interwiki) nisqapaq hallch\'asqa kaptinmi.',
 'import-error-special' => '"$1" sutiyuq p\'anqaqa hawamanta manam chaskisqachu, mana p\'anqapaq kaq sapaq suti k\'itiman kapuspanmi.',
 'import-error-invalid' => '"$1" sutiyuq p\'anqaqa hawamanta manam chaskisqachu, sutin mana allin kaptinmi.',
+'import-error-unserialize' => '"$1" nisqa p\'anqapi $2 musuqchasqataqa manam ñiqirayta atinichu. Kay musuqchasqaqa $4 hina ñiqichasqa $3 kikinchatas llamk\'achin.',
 'import-options-wrong' => 'Pantasqa {{PLURAL:$2|akllasqa|akllasqakuna}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => "Qusqa saphi p'anqaqa manam allin sutichu.",
 'import-rootpage-nosubpage' => 'Saphi p\'anqap "$1" sutisuyunpiqa urin p\'anqakuna manam kanqachu.',
@@ -3103,11 +3135,25 @@ Payta rurachiyqa antañiqiqniykita llikaykitapas waqllinqachá.",
 'minutes' => '{{PLURAL:$1|huk minutu|$1 minutu}}',
 'hours' => '{{PLURAL:$1|huk ura|$1 ura}}',
 'days' => "{{PLURAL:$1|huk p'unchaw|$1 p'unchaw}}",
+'weeks' => '{{PLURAL:$1|huk simana|$1 simana}}',
 'months' => '{{PLURAL:$1|huk killa|$1 killa}}',
 'years' => '{{PLURAL:$1|huk wata|$1 wata}}',
 'ago' => '$1 ñaqha',
 'just-now' => 'kunallan',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|ura|urakuna}} ñaqha',
+'minutes-ago' => '$1 {{PLURAL:$1|minutu|minutukuna}} ñaqha',
+'seconds-ago' => '$1 {{PLURAL:$1|sikundu|sikundukuna}} ñaqha',
+'monday-at' => 'Killachaw $1 pachapi',
+'tuesday-at' => 'Atipachaw $1 pachapi',
+'wednesday-at' => 'Quyllurchaw $1 pachapi',
+'thursday-at' => 'Illapachaw $1 pachapi',
+'friday-at' => "Ch'askachaw $1 pachapi",
+'saturday-at' => "K'uychichaw $1 pachapi",
+'sunday-at' => 'Intichaw $1 pachapi',
+'yesterday-at' => "Qayna p'unchaw $1 pachapi",
+
 # Bad image list
 'bad_image_list' => "Chantaqa kay hinam:
 
@@ -3712,6 +3758,17 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 'version-entrypoints-header-entrypoint' => "Yaykuna t'uksi",
 'version-entrypoints-header-url' => 'URL tiyay',
 
+# Special:Redirect
+'redirect' => 'Willañiqikama, ruraqkama icha musuqchay ID-kama pusapuy',
+'redirect-legend' => "Willañiqiman icha p'anqaman pusapuy",
+'redirect-submit' => 'Riy',
+'redirect-lookup' => 'Maskay:',
+'redirect-value' => 'Chani:',
+'redirect-user' => 'Ruraqpa kikin kaynin',
+'redirect-revision' => "P'anqamanta musuqchasqa",
+'redirect-file' => 'Willañiqip sutin',
+'redirect-not-exists' => 'Chaniqa manam tarisqachu',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Iskaychasqa willañiqikunata maskay',
 'fileduplicatesearch-summary' => "Iskaychasqa willañiqikunata maskay ''hash'' chaninpi tiksispa.",
@@ -3800,6 +3857,9 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 'htmlform-submit' => 'Kachay',
 'htmlform-reset' => 'Hukchasqakunata kutichiy',
 'htmlform-selectorother-other' => 'Wakin',
+'htmlform-no' => 'Mana',
+'htmlform-yes' => 'Arí',
+'htmlform-chosen-placeholder' => 'Akllanata akllay',
 
 # SQLite database support
 'sqlite-has-fts' => "$1 hunt'a qillqa maskana yanapawan",
index 0544c24..722c90b 100644 (file)
@@ -259,7 +259,6 @@ $1',
 'disclaimers' => 'Kamachikmanta willaykuna',
 'disclaimerpage' => 'Project:Kamachikmanta kapak willaykuna',
 'edithelp' => 'Llankanapaa yanapa',
-'edithelppage' => 'Help:Imashina killkankapa yanapana ?',
 'helppage' => 'Help:Yanapa',
 'mainpage' => 'Kapak Panka',
 'mainpage-description' => 'Kapak panka',
index db311ea..0d8b976 100644 (file)
@@ -281,7 +281,6 @@ $1',
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Agid per modifitgar',
-'edithelppage' => 'Help:Prims pass',
 'helppage' => 'Help:Cuntegn',
 'mainpage' => 'Pagina principala',
 'mainpage-description' => 'Pagina principala',
@@ -572,10 +571,8 @@ Eventualmain has ti gia midà cun success tes pled-clav u dumandà per in nov pl
 
 # Special:PasswordReset
 'passwordreset' => 'Redefinir il pled-clav',
-'passwordreset-text' => "Emplenescha quest formular per retschaiver in e-mail che cuntegna ils detagls per acceder tes conto d'utilisader.",
 'passwordreset-legend' => 'Redefinir il pled-clav',
 'passwordreset-disabled' => 'La pussaivladad da redefinir il pled-clav è vegnida deactivada sin questa wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1||Endatescha in dals tocs da data sutvart}}',
 'passwordreset-username' => "Num d'utilisader:",
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => "Mussar l'e-mail che resultescha?",
@@ -1066,7 +1063,6 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'searchmenu-legend' => 'Opziuns da tschertgar',
 'searchmenu-exists' => "'''Igl exista ina pagina cun il num \"[[:\$1]] sin questa vichi\"'''",
 'searchmenu-new' => "'''Crear la pagina \"[[:\$1]]\" sin questa vichi!'''",
-'searchhelp-url' => 'Help:Cuntegn',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mussar tut las paginas cun quest prefix]]',
 'searchprofile-articles' => 'Paginas da cuntegn',
 'searchprofile-project' => 'Agid e paginas dal project',
index 7fa1a6c..62d12d1 100644 (file)
@@ -12,6 +12,7 @@
  * @author Danutz
  * @author Emily
  * @author Firilacroco
+ * @author Geitost
  * @author Gutza
  * @author KlaudiuMihaila
  * @author Laurap
@@ -501,6 +502,7 @@ pe titlul secțiunii (JavaScript)',
 'create-this-page' => 'Creați această pagină',
 'delete' => 'Ștergere',
 'deletethispage' => 'Șterge pagina',
+'undeletethispage' => 'Recuperează această pagină',
 'undelete_short' => 'Recuperarea {{PLURAL:$1|unei modificări|a $1 modificări|a $1 de modificări}}',
 'viewdeleted_short' => 'Vedeți {{PLURAL:$1|o modificare ștearsă|$1 (de) modificări șterse}}',
 'protect' => 'Protejare',
@@ -554,7 +556,6 @@ $1',
 'disclaimers' => 'Termeni',
 'disclaimerpage' => 'Project:Termeni',
 'edithelp' => 'Ajutor pentru modificare',
-'edithelppage' => 'Help:Cum să modifici o pagină',
 'helppage' => 'Help:Ajutor',
 'mainpage' => 'Pagina principală',
 'mainpage-description' => 'Pagina principală',
@@ -703,6 +704,8 @@ $2',
 'namespaceprotected' => "Nu aveți permisiunea de a modifica pagini din spațiul de nume '''$1'''.",
 'customcssprotected' => 'Nu aveți permisiunea de a modifica această pagină CSS, deoarece conține setările personale ale altui utilizator.',
 'customjsprotected' => 'Nu aveți permisiunea de a modifica această pagină JavaScript, deoarece conține setările personale ale altui utilizator.',
+'mycustomcssprotected' => 'Nu aveți permisiunea să modificați această pagină CSS.',
+'mycustomjsprotected' => 'Nu aveți permisiunea să modificați această pagină JavaScript.',
 'ns-specialprotected' => 'Paginile din spațiul de nume {{ns:special}} nu pot fi editate.',
 'titleprotected' => "Acest titlu a fos protejat la creare de [[User:$1|$1]].
 Motivul invocat este ''$2''.",
@@ -754,7 +757,7 @@ Nu uitați să vă modificați [[Special:Preferences|preferințele]] pentru {{SI
 'notloggedin' => 'Nu sunteți autentificat',
 'userlogin-noaccount' => 'Nu aveți cont încă?',
 'userlogin-joinproject' => 'Înscrieți-vă la {{SITENAME}}',
-'nologin' => "Nu aveți cont încă? '''$1'''.",
+'nologin' => 'Nu aveți cont încă? $1.',
 'nologinlink' => 'Creați-vă un cont de utilizator acum',
 'createaccount' => 'Creare cont',
 'gotaccount' => "Aveți deja un cont de utilizator? '''$1'''.",
@@ -831,7 +834,7 @@ Prin urmare, vizitatorii care folosesc același IP nu mai pot crea alte conturi
 'cannotchangeemail' => 'Adresele de e-mail asociate conturilor nu pot fi schimbate pe acest wiki.',
 'emaildisabled' => 'Acest site nu poate trimite e-mailuri.',
 'accountcreated' => 'Contul a fost creat.',
-'accountcreatedtext' => 'Contul utilizatorului pentru $1 a fost creat.',
+'accountcreatedtext' => 'Contul utilizatorului pentru [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|discuție]]) a fost creat.',
 'createaccount-title' => 'Creare de cont la {{SITENAME}}',
 'createaccount-text' => 'Cineva a creat un cont asociat adresei dumneavoastră de e-mail pe {{SITENAME}} ($4) numit „$2” și având parola „$3”.
 Este de dorit să vă autentificați și să schimbați parola cât mai repede.
@@ -1364,7 +1367,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'searchmenu-legend' => 'Opțiuni căutare',
 'searchmenu-exists' => "'''Există o pagină cu titlul „[[:$1]]'” pe acest site.'''",
 'searchmenu-new' => "'''Creați pagina „[[:$1]]” pe acest wiki!'''",
-'searchhelp-url' => 'Help:Ajutor',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Răsfoiește paginile cu acest prefix]]',
 'searchprofile-articles' => 'Pagini cu conținut',
 'searchprofile-project' => 'Pagini din spațiile Proiect și Ajutor',
@@ -1552,6 +1554,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'userrights-changeable-col' => 'Grupuri pe care le puteți schimba',
 'userrights-unchangeable-col' => 'Grupuri pe care nu le puteți schimba',
 'userrights-conflict' => 'Conflict al drepturilor de utilizator! Aplicați din nou modificările dumneavoastră.',
+'userrights-removed-self' => 'V-ați eliminat cu succes propriile drepturi. Ca urmare, nu mai puteți accesa această pagină.',
 
 # Groups
 'group' => 'Grup:',
@@ -1622,6 +1625,8 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'right-editusercssjs' => 'Modifică fișierele CSS și JS ale altor utilizatori',
 'right-editusercss' => 'Modifică fișierele CSS ale altor utilizatori',
 'right-edituserjs' => 'Modifică fișierele JS ale altor utilizatori',
+'right-editmyusercss' => 'Modificați-vă propriile fișiere CSS',
+'right-editmyuserjs' => 'Modificați-vă propriile fișiere JavaScript',
 'right-rollback' => 'Revocarea rapidă a modificărilor ultimului utilizator care a modificat o pagină particulară',
 'right-markbotedits' => 'Marchează revenirea ca modificare efectuată de robot',
 'right-noratelimit' => 'Neafectat de limitele raportului',
@@ -2623,7 +2628,7 @@ $1',
 'mycontris' => 'Contribuții',
 'contribsub2' => 'Pentru $1 ($2)',
 'nocontribs' => 'Nu a fost găsită nici o modificare care să satisfacă acest criteriu.',
-'uctop' => '(sus)',
+'uctop' => '(actuală)',
 'month' => 'Din luna (și dinainte):',
 'year' => 'Până în anul:',
 
index 1d48931..6af53d2 100644 (file)
@@ -228,6 +228,7 @@ $messages = array(
 'create-this-page' => "Ccreje 'a pàgene",
 'delete' => 'Scangìlle',
 'deletethispage' => 'Scangille sta pàgene',
+'undeletethispage' => 'Repristine sta pàgene',
 'undelete_short' => "Annulle {{PLURAL:$1|'nu camgiamende|$1 cangiaminde}}",
 'viewdeleted_short' => "Vide {{PLURAL:$1|'nu cangiamende scangellate|$1 cangiaminde scangellate}}",
 'protect' => 'Prutette',
@@ -281,7 +282,6 @@ $1",
 'disclaimers' => 'No ne sacce ninde',
 'disclaimerpage' => 'Project:Scareca uarrile',
 'edithelp' => "Cangianne l'ajute",
-'edithelppage' => 'Help:Cangiaminde',
 'helppage' => 'Help:Condenute',
 'mainpage' => 'Pàgene Prengepàle',
 'mainpage-description' => 'Pàgene Prengepàle',
@@ -438,6 +438,8 @@ $2',
 'namespaceprotected' => "Non ge tine 'u permesse pe cangià pàggene d'u neimspeise '''$1'''.",
 'customcssprotected' => "Non ge tine 'u permesse pe cangià sta pàgene de CSS, purcè tène otre configurazione personale.",
 'customjsprotected' => "Non ge tine 'u permesse pe cangià sta pàgene de Javascript, purcè tène otre configurazione personale.",
+'mycustomcssprotected' => 'Non ge tìne le permesse pe cangià sta pàgene CSS',
+'mycustomjsprotected' => 'Non ge tìne le permesse pe cangià sta pàgene JavaScript',
 'ns-specialprotected' => 'Le pàgene speciale no ponne essere cangete.',
 'titleprotected' => "Stu titele ha state prutette da 'a ccreazione da [[User:$1|$1]].
 'U mutive jè ''$2''.",
@@ -579,7 +581,7 @@ Pe piacere mitte l'indirizze a cumme criste cumanne, ce nò no 'u scè mettènne
 'cannotchangeemail' => "Le indirizze e-mail d'u cunde utende non ge ponne essere cangiate sus a sta uicchi.",
 'emaildisabled' => 'Stu site non ge pò mannà e-mail.',
 'accountcreated' => 'cunde utende ccrejete',
-'accountcreatedtext' => "'U cunde utende pe $1 ha state ccrejete.",
+'accountcreatedtext' => "'U cunde utende pe [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|'ngazzaminde]]) ha state ccrejate.",
 'createaccount-title' => "Ccreazzione de 'u cunde utende pe {{SITENAME}}",
 'createaccount-text' => 'Quacchedune ha ccrejete \'nu cunde utende cu l\'indirizze e-mail tue sus a {{SITENAME}} ($4) chiamete "$2", cu password "$3".
 Tu, mò, t\'avisse a collegà e cangià \'a password toje.
@@ -1123,7 +1125,6 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'searchmenu-legend' => 'Opzione de ricerche',
 'searchmenu-exists' => "'''Stè 'na pàgene nnumenete \"[[\$1]]\" sus 'a sta Uicchipèdie'''",
 'searchmenu-new' => "'''[[:\$1|Ccreje]] 'a pàgene \"[[:\$1|\$1]]\" sus 'a sta Uicchipèdie!'''",
-'searchhelp-url' => 'Help:Condenute',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sfogghije le pàggene cu stu prefisse]]',
 'searchprofile-articles' => 'Vôsce',
 'searchprofile-project' => 'Pàggene de ajiute e de pruggette',
@@ -1316,6 +1317,7 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'userrights-unchangeable-col' => 'Gruppe ca tu non ge puè cangià',
 'userrights-irreversible-marker' => '$1*',
 'userrights-conflict' => 'Conflitte sus a le deritte utende! Pe piacere appliche le cangiaminde tune arrete.',
+'userrights-removed-self' => "T'è luate le deritte tune. Mò non ge puè cchiù trasè jndr'à sta pàgene.",
 
 # Groups
 'group' => 'Gruppe:',
@@ -1386,6 +1388,8 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'right-editusercssjs' => "Cange 'u CSS e 'u JS de l'otre utinde",
 'right-editusercss' => "Cange 'u CSS de l'otre utinde",
 'right-edituserjs' => "Cange 'u JS de l'otre utinde",
+'right-editmyusercss' => 'Cange le file tune de CSS',
+'right-editmyuserjs' => 'Cange le file tune de JavaScript',
 'right-rollback' => "Annulle velocemende le cangiaminde de l'urteme utende ca ha cangiate 'na pàgena particolare",
 'right-markbotedits' => 'Marche le cangiaminde annullate cumme cangiaminde de bot',
 'right-noratelimit' => "Non g'à state tuccate da le limite de le pundegge",
@@ -2418,7 +2422,7 @@ $1",
 'mycontris' => 'Condrebbute mie',
 'contribsub2' => 'Pe $1 ($2)',
 'nocontribs' => 'Nisciune cangiamende ha state acchiate cu ste criterie.',
-'uctop' => '(sus)',
+'uctop' => '(de mò)',
 'month' => "Da 'u mese (e cchiù recende):",
 'year' => "Da l'anne (e cchiù recende):",
 
index 3a778fd..4e0b5b0 100644 (file)
@@ -15,6 +15,7 @@
  * @author AlexSm
  * @author Alexander Sigachov (alexander.sigachov@gmail.com)
  * @author Alexandr Efremov
+ * @author Altai uul
  * @author Amikeco
  * @author Amire80
  * @author Anonim.one
@@ -40,6 +41,7 @@
  * @author Flrn
  * @author G0rn
  * @author Gazeb
+ * @author Geitost
  * @author Grigol
  * @author Haffman
  * @author HalanTul
@@ -60,6 +62,7 @@
  * @author KorneySan
  * @author Kv75
  * @author Lockal
+ * @author Lunacy1911
  * @author Matma Rex
  * @author MaxBioHazard
  * @author MaxSem
@@ -84,6 +87,7 @@
  * @author Гусейн
  * @author ОйЛ
  * @author Умар
+ * @author Чаховіч Уладзіслаў
  * @author לערי ריינהארט
  * @author გიორგიმელა
  */
@@ -628,6 +632,7 @@ $messages = array(
 'create-this-page' => 'Создать эту страницу',
 'delete' => 'Удалить',
 'deletethispage' => 'Удалить эту страницу',
+'undeletethispage' => 'Восстановить эту страницу',
 'undelete_short' => 'Восстановить $1 {{PLURAL:$1|правку|правки|правок}}',
 'viewdeleted_short' => 'Просмотр $1 {{PLURAL:$1|удалённой правки|удалённых правок|удалённых правок}}',
 'protect' => 'Защитить',
@@ -681,7 +686,6 @@ $1',
 'disclaimers' => 'Отказ от ответственности',
 'disclaimerpage' => 'Project:Отказ от ответственности',
 'edithelp' => 'Справка по редактированию',
-'edithelppage' => 'Help:Редактирование',
 'helppage' => 'Help:Содержание',
 'mainpage' => 'Заглавная страница',
 'mainpage-description' => 'Заглавная страница',
@@ -829,6 +833,8 @@ $2',
 'namespaceprotected' => 'У вас нет разрешения редактировать страницы в пространстве имён «$1».',
 'customcssprotected' => 'У вас нет разрешения редактировать эту CSS-страницу, так как она содержит личные настройки другого участника.',
 'customjsprotected' => 'У вас нет разрешения редактировать эту JavaScript-страницу, так как она содержит личные настройки другого участника.',
+'mycustomcssprotected' => 'У вас нет прав для редактирования этого CSS страницы.',
+'mycustomjsprotected' => 'У вас нет прав для редактирования JavaScript на странице.',
 'ns-specialprotected' => 'Страницы пространства имён «{{ns:special}}» не могут правиться.',
 'titleprotected' => "Создание страницы с таким заголовком было запрещено участником [[Участник:$1|$1]].
 Указана следующая причина: ''$2''.",
@@ -878,7 +884,7 @@ $2',
 'logout' => 'Завершение сеанса',
 'userlogout' => 'Завершение сеанса',
 'notloggedin' => 'Вы не представились системе',
-'userlogin-noaccount' => 'Нет аккаунта?',
+'userlogin-noaccount' => 'Нет учетной записи?',
 'userlogin-joinproject' => 'Присоединиться к {{grammar:genitive|{{SITENAME}}}}',
 'nologin' => 'Нет учётной записи? $1.',
 'nologinlink' => 'Создать учётную запись',
@@ -887,21 +893,21 @@ $2',
 'gotaccountlink' => 'Представьтесь',
 'userlogin-resetlink' => 'Забыли данные для входа?',
 'userlogin-resetpassword-link' => 'Сброс пароля',
-'helplogin-url' => 'Help:Ð\92Ñ\85од Ð² Ñ\81иÑ\81Ñ\82емÑ\83',
+'helplogin-url' => 'Help:Ð\9fÑ\80едÑ\81Ñ\82авление Ñ\81иÑ\81Ñ\82еме',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Помощь со входом в систему]]',
 'createacct-join' => 'Введите свои данные ниже.',
 'createacct-emailrequired' => 'Адрес электронной почты',
 'createacct-emailoptional' => 'Адрес электронной почты (необязательно)',
 'createacct-email-ph' => 'Введите свой адрес электронной почты',
-'createaccountmail' => 'Использовать сгенерированный случайным образом временный пароль и выслать мне его на указанный ниже адрес электронной почты:',
+'createaccountmail' => 'Использовать сгенерированный случайным образом временный пароль и выслать мне его на указанный ниже адрес электронной почты',
 'createacct-realname' => 'Настоящее имя (необязательно)',
 'createaccountreason' => 'Причина:',
 'createacct-reason' => 'Причина',
 'createacct-reason-ph' => 'Зачем вы создаёте другую учетную запись',
 'createacct-captcha' => 'Проверка безопасности',
 'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
-'createacct-submit' => 'Ð\97аÑ\80егиÑ\81Ñ\82Ñ\80иÑ\80овать учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} Ñ\81делана такими же людьми, как вы.',
+'createacct-submit' => 'Создать учётную запись',
+'createacct-benefit-heading' => '{{SITENAME}} Ñ\81оздана такими же людьми, как вы.',
 'createacct-benefit-body1' => '{{PLURAL:$1|правка|правки|правок}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|статья|статьи|статей}}',
 'createacct-benefit-body3' => '{{PLURAL:$1|участник|участника|участников}} за последнее время',
@@ -1498,7 +1504,6 @@ $1",
 'searchmenu-legend' => 'Настройки поиска',
 'searchmenu-exists' => "'''В этой вики есть страница «[[:$1]]»'''",
 'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
-'searchhelp-url' => 'Help:Содержание',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показать страницы с этим префиксом]]',
 'searchprofile-articles' => 'Основные страницы',
 'searchprofile-project' => 'Страницы справки и проекта',
@@ -1755,6 +1760,7 @@ $1",
 'right-editusercssjs' => 'правка CSS- и JS-файлов других участников',
 'right-editusercss' => 'правка CSS-файлов других участников',
 'right-edituserjs' => 'правка JavaScript-файлов других участников',
+'right-editmyusercss' => 'Редактирование файлов CSS пользователя',
 'right-rollback' => 'быстрый откат правок последнего участника на определенной странице',
 'right-markbotedits' => 'отметка откатываемых правок как правок бота',
 'right-noratelimit' => 'нет ограничений по скорости',
@@ -2004,7 +2010,7 @@ $1',
 'upload-file-error-text' => 'Внутренняя ошибка при попытке создать временный файл на сервере.
 Пожалуйста, обратитесь к [[Special:ListUsers/sysop|администратору]].',
 'upload-misc-error' => 'Неизвестная ошибка загрузки',
-'upload-misc-error-text' => 'Неизвестная ошибка загрузки. Пожалуйста, проверьте, что адрес верен, и повторите попытку. Если проблема остаётся, обратитесь к системному администратору.',
+'upload-misc-error-text' => 'Неизвестная ошибка загрузки. Пожалуйста, проверьте, что адрес верен, и повторите попытку. Если проблема остаётся, обратитесь к [[Special:ListUsers/sysop|администратору]].',
 'upload-too-many-redirects' => 'URL содержит слишком много перенаправлений',
 'upload-unknown-size' => 'Неизвестный размер',
 'upload-http-error' => 'Произошла ошибка HTTP: $1',
index 0931e4f..a49c93c 100644 (file)
@@ -318,6 +318,7 @@ $messages = array(
 'create-this-page' => 'Створити тоту сторінку',
 'delete' => 'Вымазати',
 'deletethispage' => 'Змазати тоту сторінку',
+'undeletethispage' => 'Обновити тоту сторінку',
 'undelete_short' => 'Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}',
 'viewdeleted_short' => 'Видїти {{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}',
 'protect' => 'Всокотити',
@@ -371,7 +372,6 @@ $1',
 'disclaimers' => 'Вылучіня одповідности',
 'disclaimerpage' => 'Project:Вылучіня одповідности',
 'edithelp' => 'Поміч едітованя',
-'edithelppage' => 'Help:Едітованя',
 'helppage' => 'Help:Обсяг',
 'mainpage' => 'Головна сторінка',
 'mainpage-description' => 'Головна сторінка',
@@ -518,6 +518,8 @@ $2',
 'namespaceprotected' => 'Не маєте права едітовати сторінкы в просторї  назв «$1».',
 'customcssprotected' => 'Не маєте права едітовати тоту сторінку з CSS, бо обсягує персоналны наставлїна іншого хоснователя.',
 'customjsprotected' => 'Не маєте права едітовати тоту сторінку з JavaScript-ом, бо обсягує персоналны наставлїна іншого хоснователя.',
+'mycustomcssprotected' => 'Не мате права на управы той CSS сторінкы.',
+'mycustomjsprotected' => 'Не мате права на едітованя той JavaScript сторінкы.',
 'ns-specialprotected' => 'Шпеціалны сторінкы не є можне едітовати.',
 'titleprotected' => "Створїня сторінкы з таков назвов было заборонене хоснователём [[User:$1|$1]] з причінов: ''$2''.",
 'filereadonlyerror' => "Не годно змінити файл „$1“, бо архів файлів „$2“ є теперь лем на чітаня.
@@ -647,7 +649,7 @@ $2',
 'cannotchangeemail' => 'В тій вікі не годен мінити імейловы адресы.',
 'emaildisabled' => 'Сесь сервер не годен одосылати імейлы.',
 'accountcreated' => 'Конто вытворене',
-'accountcreatedtext' => 'Конто хоснователя $1 было вытворене.',
+'accountcreatedtext' => 'Конто хоснователя [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]])  было створене.',
 'createaccount-title' => 'Вытвориня конта про  {{SITENAME}}',
 'createaccount-text' => 'Хтось створив про Вас конто «$2» на сервері проєкту {{SITENAME}} ($4) з геслом «$3», і зазначів вашу адресу електронічной пошты. Мали бы сьте ся што найскоре приголосити і змінити гесло.
 
@@ -684,6 +686,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Ресет гесла',
+'passwordreset-text-one' => 'Выпиште тот формуларь, жебы сьте могли здобыти нове гесло',
+'passwordreset-text-many' => '{{PLURAL:$1|На здобытя нового гесла напиште єдно з даных.}}',
 'passwordreset-legend' => 'Знову наставити гесло',
 'passwordreset-disabled' => 'Зновунаставлїня гесла є на тій вікі заказане',
 'passwordreset-emaildisabled' => 'Функції електронічной пошты были выпнуы на тій вікі.',
@@ -911,6 +915,7 @@ $2
 Асі была змазана.',
 'edit-conflict' => 'Конфлікт едітованя.',
 'edit-no-change' => 'Ваша едітація была іґнорована, бо ся не зробила жадна зміна тексту.',
+'postedit-confirmation' => 'Ваше едітованя было уложене.',
 'edit-already-exists' => 'Не вдало ся створити нову сторінку, бо она уж існує.',
 'defaultmessagetext' => 'Преднаставленый текст повідомлїня',
 'content-failed-to-parse' => 'Не вдало ся проаналізовати $2 як тіп $1: $3',
@@ -1157,7 +1162,6 @@ $1",
 'searchmenu-legend' => 'Параметры гляданя',
 'searchmenu-exists' => "'''У тій вікі є сторінка з назвов «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у тій вікі!'''",
-'searchhelp-url' => 'Help:Обсяг',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Вказати сторінкы з тым префіксом]]',
 'searchprofile-articles' => 'Статї',
 'searchprofile-project' => 'Сторінкы помочі і проєкту',
@@ -1415,6 +1419,8 @@ $1",
 'right-editusercssjs' => 'Едітованя CSS і JS файлів іншых хоснователїв',
 'right-editusercss' => 'Едітованя CSS файлів іншых хоснователїв',
 'right-edituserjs' => 'Едітованя JS файлів іншых хоснователїв',
+'right-editmyusercss' => 'Едітовати вашы властны хосновательскы CSS файлы.',
+'right-editmyuserjs' => 'Едітовати вашы властны хосновательскы JavaScript файлы',
 'right-rollback' => 'Швыдкый реверт управ послїднёго хоснователя едітуючого дану сторінку',
 'right-markbotedits' => 'Означованя ревертів як едітованя робота',
 'right-noratelimit' => 'Не має обмеджіня в швыдкости',
@@ -2388,7 +2394,7 @@ $1',
 'mycontris' => 'Приспівкы',
 'contribsub2' => 'Приспівок $1 ($2)',
 'nocontribs' => 'Ненайджены жадны зміны за тыма крітеріями.',
-'uctop' => ' (послїдня)',
+'uctop' => '(остатня)',
 'month' => 'Од місяця (і скоре):',
 'year' => 'Од року (і скоре):',
 
index 0828c2a..f5f151f 100644 (file)
@@ -518,7 +518,6 @@ $1',
 'disclaimers' => 'प्रत्याख्यानम्',
 'disclaimerpage' => 'Project:साधारणं प्रत्याख्यानम्',
 'edithelp' => 'सम्पादनार्थं सहाय्यम्',
-'edithelppage' => 'Help:सम्पादनम्',
 'helppage' => 'Help:आन्तर्यम्',
 'mainpage' => 'मुख्यपृष्ठम्',
 'mainpage-description' => 'मुख्यपृष्ठम्',
@@ -683,9 +682,15 @@ $2',
 'welcomecreation-msg' => 'भवतः लेखा रचिताऽस्ति।
 स्वकीयानां [[Special:Preferences|{{SITENAME}} इष्टतमानां]]. निगदनं मा विस्मर्यताम्।',
 'yourname' => 'योजकनामन्:',
+'userlogin-yourname' => 'प्रयोक्तुः नाम',
+'userlogin-yourname-ph' => 'स्वकीयं प्रयोक्तृनाम दीयताम्',
 'yourpassword' => 'कूटशब्दः',
+'userlogin-yourpassword-ph' => 'स्वकीयं कूटशब्दं दीयताम्',
+'createacct-yourpassword-ph' => 'कूटशब्दः प्रविश्यताम्',
 'yourpasswordagain' => 'कूटशब्दः पुनः लिख्यताम् ।',
+'createacct-yourpasswordagain-ph' => 'कूटशब्दः पुनः प्रविश्यताम्',
 'remembermypassword' => 'अस्मिन् सङ्गणके मम प्रवेशः स्मर्यताम् (अधिकतमम् $1 {{PLURAL:$1|दिनम्|दिनानि}})',
+'userlogin-remembermypassword' => 'अहं प्रविष्टमेव तिष्ठेयम्',
 'securelogin-stick-https' => 'प्रवेशोपरान्तं एचटीटीपीएस(HTTPS) इत्यनेन सह संबद्धः तिष्ठतु।',
 'yourdomainname' => 'भवतः प्रक्षेत्रम्:',
 'password-change-forbidden' => 'अस्यां विक्यां निकुञ्चं परिवर्तयितुं न शक्नोति ।',
@@ -698,14 +703,19 @@ $2',
 'logout' => 'निर्गमनम्',
 'userlogout' => 'निर्गमनम्',
 'notloggedin' => 'नैव प्रविष्टः',
+'userlogin-noaccount' => 'सदस्यता नास्ति किम्?',
 'nologin' => 'पूर्वमेव योजकः नास्ति किम् ? $1।',
 'nologinlink' => 'सदस्यता प्राप्यताम्',
 'createaccount' => 'सदस्यता प्राप्यताम्',
 'gotaccount' => 'पूर्वमेव योजकः अस्ति किम् ? $1।',
 'gotaccountlink' => 'प्रविश्यताम्',
 'userlogin-resetlink' => 'प्रवेशविवरणानि विस्मृतानि किम् ?',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|प्रवेशनार्थं सहायता]]',
+'createacct-join' => 'स्वकीया सूचना अधस्तात् प्रवेश्यताम्।',
 'createaccountmail' => 'ईपत्रद्वारा',
 'createaccountreason' => 'कारणम्',
+'createacct-reason' => 'कारणम्',
+'createacct-reason-ph' => 'भवान् अन्यां लेखां किमर्थं रचितुमिच्छसि?',
 'badretype' => 'भवता प्रदत्ते कूटशब्दे न खलु समाने स्तः। कृपया पुनः लिखतु।',
 'userexists' => 'भवतः प्रदत्तः प्रयोक्तृनाम अन्येन प्रयुज्यमानम् अस्ति। कृपया अन्यदेकं प्रयोक्तृनाम चिनोतु।',
 'loginerror' => 'प्रवेशने प्रमादः',
@@ -809,10 +819,8 @@ You may ignore this message, if this account was created in error.',
 
 # Special:PasswordReset
 'passwordreset' => 'कूटशब्द पुनःस्थापनम्',
-'passwordreset-text' => 'भवतः सदस्यताविवरणानि ईपत्रद्वारा प्राप्तुम् इदं प्रपत्रं पूर्यताम् ।',
 'passwordreset-legend' => 'कूटशब्द पुनःस्थापनम्',
 'passwordreset-disabled' => 'अस्मिन् विक्यां कूटशब्द पुनःस्थापनं असमर्थीकृतमस्ति।',
-'passwordreset-pretext' => '{{PLURAL:$1| |समंकेषु एकम् अधस्यात् प्रविष्टीकरोतु।}}',
 'passwordreset-username' => 'योजकनामन्:',
 'passwordreset-domain' => 'क्षेत्रम्:',
 'passwordreset-capture' => 'फलितरूपम् ईपत्रं किं दृश्यते ?',
@@ -1261,7 +1269,6 @@ You can still [$1 view this revision]",
 'searchmenu-legend' => 'अन्वेषणस्य विकल्पाः ।',
 'searchmenu-exists' => 'अस्मिन् विकिमध्ये "[[:$1]]"नामकं पृष्ठं विद्यते।',
 'searchmenu-new' => "'''अस्यां विक्यां \"[[:\$1]]\" इति पृष्ठं सृज्यताम्!'''",
-'searchhelp-url' => 'Help: साहाय्यम् : आधेयाः ।',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|एतदुपसर्गयुक्तपुटं पश्यतु ]]',
 'searchprofile-articles' => 'आन्तर्यम्',
 'searchprofile-project' => 'सहायता प्रकल्पपृष्ठानि च',
index a5df584..b840e3b 100644 (file)
@@ -244,6 +244,7 @@ $messages = array(
 'create-this-page' => 'Бу сирэйи ай',
 'delete' => 'Соттор',
 'deletethispage' => 'Бу сирэйи соттор',
+'undeletethispage' => 'Бу сирэйи сөргүт (төннөр)',
 'undelete_short' => 'Төттөрү аҕал {{PLURAL:$1|биир уларытыыны|$1 уларытыылары}}',
 'viewdeleted_short' => '{{PLURAL:$1|Соҕотох сотторуллубут көннөрүүнү|$1 сотторуллубут көннөрүүнү}} көрүү',
 'protect' => 'Уларыппат гын',
@@ -297,7 +298,6 @@ $1',
 'disclaimers' => 'Бүк охсунуу',
 'disclaimerpage' => 'Project:Бүк охсунуу',
 'edithelp' => 'Уларытааччыларга көмө',
-'edithelppage' => 'Help:Уларытарга көмө',
 'helppage' => 'Help:Көмө',
 'mainpage' => 'Сүрүн сирэй',
 'mainpage-description' => 'Сүрүн сирэй',
@@ -441,6 +441,8 @@ $2',
 'namespaceprotected' => "Эн '''$1''' аат эйгэтигэр киирэр сирэйдэри уларытар кыаҕыҥ суох.",
 'customcssprotected' => 'Эн бу CSS-сирэйи уларытар кыаҕыҥ суох, тоҕо диэтэххэ онтуҥ атын киһи тус бэйэтин туруорууларын таарыйар.',
 'customjsprotected' => 'Эн бу JavaScript-сирэйи уларытар кыаҕыҥ суох, тоҕо диэтэххэ онтуҥ атын киһи тус бэйэтин туруорууларын таарыйар.',
+'mycustomcssprotected' => 'CSS-сирэйи уларытар кыаҕыҥ суох эбит.',
+'mycustomjsprotected' => 'Сирэйгэ JavaScript уларытар кыаҕыҥ суох эбит.',
 'ns-specialprotected' => '{{ns:special}} ааттаах сирэйдэр уларытыллыбаттар.',
 'titleprotected' => "Бу бас тыл оҥоһулларын [[User:$1|$1]] боппут.
 Төрүөтэ - ''$2''",
@@ -576,7 +578,7 @@ $2',
 'cannotchangeemail' => 'Бу биикигэ бу аакка баайыллыбыт электроннай почта аадырыһа уларытыллар кыаҕа суох эбит.',
 'emaildisabled' => 'Бу ситим-сир сурук ыыппат эбит.',
 'accountcreated' => 'Саҥа аат иҥэрилиннэ',
-'accountcreatedtext' => 'Кыттааччы $1 диэн ааттанна.',
+'accountcreatedtext' => '$1 диэн ааттаах кыттааччы баар буолла.',
 'createaccount-title' => '{{SITENAME}} бырайыакка саҥа аат оҥоруу',
 'createaccount-text' => 'Ким эрэ {{SITENAME}} бырайыакка ($4) саҥа $2 ааты бэлиэтээбит. "$2" киирии тыла "$3". Билигин киирэн киирии тылгын уларытыаххын наада.
 
@@ -611,11 +613,14 @@ $2',
 'resetpass-wrong-oldpass' => 'Киирии тыл сөп түбэспэтэ.
 Баҕар уларыппытыҥ буолуо эбэтэр быстах кэмҥэ туттуллар киирии тылы оҥотторбутуҥ буолуо.',
 'resetpass-temp-password' => 'Быстах кэмҥэ туттуллар киирии тыл:',
+'resetpass-abort-generic' => 'Киирии тылы уларытыыны кэҥэтии тохтотто.',
 
 # Special:PasswordReset
 'passwordreset' => 'Киирии тылы саҥаттан',
+'passwordreset-text-one' => 'Урукку киирии тылы уларытарга бу форманы толор.',
 'passwordreset-legend' => 'Киирии тылы саҥаттан',
 'passwordreset-disabled' => 'Бу биикигэ киирии тылы саҥардыы бобуллубут.',
+'passwordreset-emaildisabled' => 'Бу биикигэ эл. почтаны туттуу араарыллыбыт',
 'passwordreset-username' => 'Кыттааччы:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Суруллубут суругу көрөҕүн дуо?',
@@ -646,7 +651,7 @@ $2
 Быстах киирии тыл: $2',
 'passwordreset-emailsent' => 'Киирии тылы уларытар туһунан сурук барда.',
 'passwordreset-emailsent-capture' => 'Киирии тылы уларытар туһунан сурук аллара эмиэ көрдөрүлүннэ.',
-'passwordreset-emailerror-capture' => 'Манна киирии тылы уларытар туһунан сурук көрдөрүлүннэ. Ол эрэн сурук бу төрүөттэн сатаан барбата: $1',
+'passwordreset-emailerror-capture' => 'Манна киирии тылы уларытар туһунан сурук көрдөрүлүннэ. Ол эрэн сурук бу төрүөттэн $2 кыттааччыга сатаан барбата: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Ааадырыһын уларыт',
@@ -856,14 +861,15 @@ IP-аадырыһа эрэ көстөр.
 Арааһа сотуллубут быһыылаах.',
 'edit-conflict' => 'Көннөрүүлэр утарсыылара.',
 'edit-no-change' => 'Эн көннөрүүҥ киирбэтэ, тоҕо диэтэххэ тугу да уларыппатаххын.',
+'postedit-confirmation' => 'Көннөрүүҥ бигэргэннэ.',
 'edit-already-exists' => 'Саҥа сирэйи оҥорор табыллыбат.
 Маннык сирэй баар эбит.',
 'defaultmessagetext' => 'Туспа этиллибэтэҕинэ суруллар тиэкис',
 'content-failed-to-parse' => '$2 иһинээҕитэ $1 көрүҥэр сөп түбэспэт: $3.',
 'invalid-content-data' => 'Алҕастаах дааннайдар',
 'content-not-allowed-here' => '[[$2]] сирэйгэ "$1" туттуллуо суохтаах',
-'editwarning-warning' => 'Атын сирэйгэ көстөххүнэ билигин оҥорбут уларытыыларыҥ барыта сүтэн хаалыахтара.
-Бэлиэтэммит буоллаҕына, бу сэрэтиини туруорууларыҥ «{{int:prefs-editing}}» сирэйигэр араарыаххын сөп.',
+'editwarning-warning' => 'Атын сирэйгэ көстөххүнэ билигин оҥорбут уларытыыҥ барыта сүтэн хаалыаҕа.
+Бэлиэтэммит буоллаххына, бу сэрэтиини туруорууларыҥ «Уларытыы» салаатыгар араарар кыахтааххын.',
 
 # Content models
 'content-model-wikitext' => 'биики-тиэкис',
@@ -1106,7 +1112,6 @@ $1",
 'searchmenu-legend' => 'Көрдөөһүн туруоруулара',
 'searchmenu-exists' => "'''Бу биикигэ бу сирэй маннык ааттаах \"[[\$1]]\"'''",
 'searchmenu-new' => "'''Бу биикигэ \"[[:\$1]]\" сирэйи айарга!'''",
-'searchhelp-url' => 'Help:Көмө',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Маннык префикстаах сирэйдэри көрөргө]]',
 'searchprofile-articles' => 'Ыстатыйалар истэрэ',
 'searchprofile-project' => 'Көмө уонна Бырайыак сирэйдэрэ',
@@ -1147,6 +1152,7 @@ $1",
 'powersearch-togglenone' => 'Бэлиэтээмэ',
 'search-external' => 'Тастан көрдөөһүн',
 'searchdisabled' => '{{SITENAME}} көрдүүр тэрилэ араарыллыбыт. Атын көрдүүр системаларынан наадыйар сирэйдэргитин көрдөтүөххүтүн сөп. Ол гынан баран поисковик кээһигэр баар торум эргэрбит буолуон сөп.',
+'search-error' => 'Көрдүүр кэмҥэ алҕас таҕыста: $1',
 
 # Preferences page
 'preferences' => 'Уларытыылар',
@@ -1290,6 +1296,7 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 'userrights-notallowed' => 'Бэлиэтэммит ааккынан атын кыттааччы быраабын уларытар кыаҕыҥ суох эбит.',
 'userrights-changeable-col' => 'Эн уларытар кыахтаах бөлөхтөрүҥ',
 'userrights-unchangeable-col' => 'Бу бөлөхтөрү уларытар кыаҕыҥ суох',
+'userrights-conflict' => 'Кыттааччы быраабын быһаарарга алҕас таҕыста! Хатылаан көр.',
 
 # Groups
 'group' => 'Бөлөх:',
@@ -1360,6 +1367,7 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 'right-editusercssjs' => 'Атын кыттааччылар CSS- и JS-билэлэрин уларытыы',
 'right-editusercss' => 'Атын кыттааччылар CSS-билэлэрин уларытыы',
 'right-edituserjs' => 'Атын кыттааччылар JS-билэлэрин уларытыы',
+'right-editmyusercss' => 'Кыттааччы CSS-билэтин уларытыы',
 'right-rollback' => 'Кыттааччы оҥорбут көннөрүүлэрин талыллыбыт биир сирэйгэ суох гыныы',
 'right-markbotedits' => 'Төннөрүллэр көннөрүүлэри робот уларытыытын курдук бэлиэтээһин',
 'right-noratelimit' => 'Нуорманнан хааччахтааһын суох',
@@ -1623,6 +1631,7 @@ $1',
 'backend-fail-notsame' => 'Майгыннаабат гынан баран маннык ааттаах $1 билэ баар эбит',
 'backend-fail-invalidpath' => '$1 - бу суолунан сатаан угуллубат.',
 'backend-fail-delete' => '$1 билэни сотор табыллыбата.',
+'backend-fail-describe' => '"$1" билэ метадааннайдарын уларытар табыллыбата.',
 'backend-fail-alreadyexists' => '$1 билэ хайыы-үйэ баар эбит.',
 'backend-fail-store' => '$1 билэни манна $2 угар табыллыбата.',
 'backend-fail-copy' => '$1 билэни манна $2 хатылыыр табыллыбата.',
@@ -1855,6 +1864,12 @@ $1',
 Ол оннугар ханнык эрэ чопчу сирэйгэ сигэниэхтээхтэр.<br />
 Быһаарыы: [[MediaWiki:Disambiguationspage]] халыып баар сирэйдэрэ хас да суолталаах сирэй ахсааныгар киирэллэр.",
 
+'pageswithprop' => 'Эрдэттэн туруоруулаах сирэйдэр',
+'pageswithprop-legend' => 'Уларытыллыбыт туруоруулаах сирэйдэр',
+'pageswithprop-text' => 'Манна сорох туруоруулара уларытыллыбыт сирэйдэр көстүбүттэр.',
+'pageswithprop-prop' => 'Туруоруу аата:',
+'pageswithprop-submit' => 'Толор',
+
 'doubleredirects' => 'Хос көһөрөөһүн',
 'doubleredirectstext' => 'Бу сирэйгэ атын сиргэ утаарар хос утаарыылар тиһиктэрэ көстөр.
 Хас устуруока аайы бастакы уонна иккис утаарыга сигэ баар, ону таһынан иккис утаарыыга баар сирэй аадырыһа (аата) баар, ол аата бастакы утаарыы дьиҥинэн ханна утаарыахтааҕа көстөр.
@@ -2122,6 +2137,16 @@ $1',
 'enotif_mailer' => '{{SITENAME}} Биллэрэр Сулууспата',
 'enotif_reset' => 'Бары сирэйдэри көрбүтүм курдук бэлиэтээ',
 'enotif_impersonal_salutation' => '{{SITENAME}} кыттааччыта',
+'enotif_subject_deleted' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} соппут - $2',
+'enotif_subject_created' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} айбыт - $2',
+'enotif_subject_moved' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} аатын уларыппыт - $2',
+'enotif_subject_restored' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} сөргүппүт - $2',
+'enotif_subject_changed' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} уларыппыт - $2',
+'enotif_body_intro_deleted' => '$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} соппут - $2, көр. $3.',
+'enotif_body_intro_created' => '«{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} айбыт - $2, билиҥҥи барылын манна көр: $3',
+'enotif_body_intro_moved' => '$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} аатын уларыппыт - $2, билиҥҥи барылын манна көр: $3',
+'enotif_body_intro_restored' => '$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} соппут - $2, билиҥҥи барылын манна көр: $3',
+'enotif_body_intro_changed' => '$PAGEEDITDATE «{{SITENAME}}» бырайыак «$1» ааттаах сирэйин бу {{gender:$2|кыттааччы|кыттааччы}} айбыт - $2, билиҥҥи барылын манна көр: $3',
 'enotif_lastvisited' => 'Бутэһик киирииҥ кэнниттэн оҥоһуллубут уларыйыылары барытын көрөргө манна киир: $1.',
 'enotif_lastdiff' => 'Уларытыыны манна көрүҥ: $1.',
 'enotif_anon_editor' => 'ааттамматах кыттааччы $1',
@@ -2220,6 +2245,8 @@ $UNWATCHURL
 'prot_1movedto2' => '[[$1]] аата манныкка уларытылынна: [[$2]]',
 'protect-badnamespace-title' => 'Көмүскэммэт аат дала',
 'protect-badnamespace-text' => 'Бу аат далын сирэйдэрэ көмүскэниллэр кыахтара суохю',
+'protect-norestrictiontypes-text' => 'Бу сирэй көмүскэниллэр кыаҕа суох.',
+'protect-norestrictiontypes-title' => 'Көмүскэниллибэт сирэй',
 'protect-legend' => 'Уларытыы таһымын бигэргэт',
 'protectcomment' => 'Төрүөтэ:',
 'protectexpiry' => 'Бүтүөхтээх:',
@@ -2304,7 +2331,8 @@ $UNWATCHURL
 'undeletedrevisions' => '{{PLURAL:$1|1 уларытыы|$1 уларытыы}} төннөрүлүннэ',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 уларытыы|$1 уларытыы}}  уонна {{PLURAL:$2|1 билэ|$2 билэ}} төннөрүлүннэ',
 'undeletedfiles' => '{{PLURAL:$1|1 билэ|$1 билэ}} төннөрүлүннэ',
-'cannotundelete' => 'Төннөрүллүбэтэ; баҕар ким эрэ номнуо төннөрө охсубута буолуо.',
+'cannotundelete' => 'Сөргүтүү алҕаһа:
+$1',
 'undeletedpage' => "'''$1 төннөрүлүннэ (төннөрүллүбүт)'''
 
 Кэнники сотуулар уонна төннөрүүлэр испииһэктэрин [[Special:Log/delete|манна]] көрүөххүн сөп.",
@@ -2340,7 +2368,7 @@ $1',
 'mycontris' => 'Суруйуу тиһигэ',
 'contribsub2' => 'Вклад $1 ($2)',
 'nocontribs' => 'Эппит критерийгэр эппиэттиир уларытыылар көстүбэтилэр.',
-'uctop' => '(бүтэһик)',
+'uctop' => '(билиҥҥи)',
 'month' => 'Ыйтан бэттэх:',
 'year' => 'Сылтан бэттэх:',
 
@@ -2501,6 +2529,7 @@ $1',
 'proxyblocksuccess' => 'Сатанна.',
 'sorbsreason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар.',
 'sorbs_create_account_reason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар. Саҥаттан бэлиэтэнэр кыаҕыҥ суох.',
+'xffblockreason' => 'X-Forwarded-For баһыгар баар IP-аадырыс бобуллубут. Бу IP Эйиэнэ эбэтэр туһанар проксиҥ гиэнэ буолуон сөп. Бобуу төрүөтэ маннык эбит: $1',
 'cant-block-while-blocked' => 'Бэйэҥ хааччахтаммыт кэмҥэр атын кыттааччылары хааччахтыыр кыаҕыҥ суох.',
 'cant-see-hidden-user' => 'Эн хааччахтаары гыммыт кыттааччыҥ урут хааччахтаммыт уонна кистэммит эбит. Кыттааччылары кистиир кыаҕыҥ суох буолан ол туһунан суругу көрөр да уларытар да быраабыҥ суох.',
 'ipbblocked' => 'Атын кыттааччылары хааччахтыыр да, хааччахтарын да устар кыаҕыҥ суох, тоҕо диэтэххэ бэйэҥ хааччахтааххын',
@@ -2607,6 +2636,7 @@ $1',
 'immobile-target-namespace-iw' => 'Интервики сигэтэ ааты уларытыыга туһаныллыбат.',
 'immobile-source-page' => 'Бу сирэйи аатын уларытар табыллыбат.',
 'immobile-target-page' => 'Сирэйгэ бу ааты иҥэрэр табыллыбат.',
+'bad-target-model' => 'Маны $1 манна $2 уларытар табыллыбат: дааннайдарын көрүҥнэрэ тус-туһунаннар.',
 'imagenocrossnamespace' => 'Ойууга атын аат далыттан аат биэрэр сатаммат',
 'nonfile-cannot-move-to-file' => 'Сирэйдэри билэ гынан ааттарын уларытар табыллыбат',
 'imagetypemismatch' => 'Билэ саҥа расширенията тиибигэр сөп түбэспэт',
@@ -2668,6 +2698,8 @@ $1',
 'thumbnail-more' => 'Улаатыннар',
 'filemissing' => 'Билэ көстүбэтэ',
 'thumbnail_error' => 'Кыра ойууну оҥоруу сатаммата: $1',
+'thumbnail_error_remote' => '$1 алҕас туһунан биллэрдэ:
+$2',
 'djvu_page_error' => 'DjVu сирэй тиһик таһыгар эбит',
 'djvu_no_xml' => 'DjVu билэтигэр аналлаах XML кыайан ылыллыбата',
 'thumbnail-temp-create' => 'Эскииз быстах билэтин оҥорор табыллыбата',
@@ -2858,11 +2890,13 @@ $1',
 'pageinfo-default-sort' => 'Наардааһын күлүүһэ',
 'pageinfo-length' => 'Сирэй устата (баайтынан)',
 'pageinfo-article-id' => 'Сирэй нүөмэрэ',
+'pageinfo-language' => 'Сирэй омугун тыла',
 'pageinfo-robot-policy' => 'Көрдүүр сулууспалар туруктара',
 'pageinfo-robot-index' => 'Индекстанар',
 'pageinfo-robot-noindex' => 'Индекстаммат',
 'pageinfo-views' => 'Көрүү ахсаана',
 'pageinfo-watchers' => 'Кэтээнэр сирэйдэр ахсааннара',
+'pageinfo-few-watchers' => '$1 кыттааччыттан аҕыйах кэтээччи',
 'pageinfo-redirects-name' => 'Бу сирэйгэ утаарыы ахсаана',
 'pageinfo-subpages-name' => 'Сирэй аннынааҕы сирэйдэр ахсааннара',
 'pageinfo-subpages-value' => '$1 ($2 утаарыы; $3 көннөрү (утаарыыта суох))',
@@ -2877,10 +2911,19 @@ $1',
 'pageinfo-magic-words' => 'Аптаах {{PLURAL:$1|тыл|тыллар}} ($1)',
 'pageinfo-hidden-categories' => 'Кистэммит {{PLURAL:$1|категория|категориялар}} ($1)',
 'pageinfo-templates' => '$1 халыыптаах ($1)',
+'pageinfo-transclusions' => 'Киллэриллэр {{PLURAL:$1|сирэйдэр|сирэйдэри}} ($1)',
+'pageinfo-toolboxlink' => 'Сирэй туһунан',
+'pageinfo-redirectsto' => 'Утаарыы',
+'pageinfo-redirectsto-info' => 'сибидиэнньэлэр',
+'pageinfo-contentpage' => 'Ис хоһоонноох сирэй курдук ааҕыллар',
 'pageinfo-contentpage-yes' => 'Сөп',
 'pageinfo-protect-cascading' => 'Каскаадынан көмүскэл мантан',
 'pageinfo-protect-cascading-yes' => 'Сөп',
 'pageinfo-protect-cascading-from' => 'Каскадынан көмүскэл мантан',
+'pageinfo-category-info' => 'Категория туһунан',
+'pageinfo-category-pages' => 'Сирэй ахсаана',
+'pageinfo-category-subcats' => 'Субкатегория ахсаана',
+'pageinfo-category-files' => 'Билэ ахсаана',
 
 # Skin names
 'skinname-modern' => 'Билиҥҥи',
@@ -2895,6 +2938,8 @@ $1',
 'markedaspatrollederror' => 'Бэрэбиэркэлэммит курдук бэлиэтиир сатаммата',
 'markedaspatrollederrortext' => 'Бэрэбиэркэлэммит курдук бэлиэтииргэ торуму чопчу талыахтааххын.',
 'markedaspatrollederror-noautopatrol' => 'Бэйэҥ уларытыыгын бэрэбиэркэлэммит курдук оҥороруҥ сатаммат.',
+'markedaspatrollednotify' => 'Бу «$1» сирэйгэ оҥоһуллубут уларытыы тургутуллубут курдук бэлиэтэммит.',
+'markedaspatrollederrornotify' => 'Бэлиэтэммит курдук бэлиэтиир сатаммата.',
 
 # Patrol log
 'patrol-log-page' => 'Бэрэбиэркэ сурунаала',
@@ -2928,6 +2973,7 @@ $1',
 'file-nohires' => 'Бу ойуу маннааҕар улахан торума суох.',
 'svg-long-desc' => 'SVG билэ, номинальнай кээмэйэ $1 × $2 пииксэл, билэ кээмэйэ: $3',
 'svg-long-desc-animated' => '$1 × $2 пииксэллээх анимацияламмыт SVG-билэ, кээмэйэ: $3',
+'svg-long-error' => 'Алҕастаах SVG-билэ: $1',
 'show-big-image' => 'Ойуу бэйэтин толору кээмэйэ',
 'show-big-image-preview' => 'Бигэргэтиэх иннинэ көрүү улахана: $1.',
 'show-big-image-other' => 'Атын {{PLURAL:$2|түмүк|түмүктэр}}: $1.',
@@ -2960,7 +3006,20 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 мүнүүтэ|$1 мүнүүтэ}}',
 'hours' => '{{PLURAL:$1|$1 чаас|$1 чаас}}',
 'days' => '{{PLURAL:$1|$1 күн|$1 күн}}',
+'months' => '$1 ый',
+'years' => '$1 сыл',
 'ago' => '$1 ынараа өттүгэр',
+'just-now' => 'сибилигин',
+
+# Human-readable timestamps
+'monday-at' => 'Бэнидиэнньиккэ, баччаҕа: $1',
+'tuesday-at' => 'оптуорунньукка, баччаҕа: $1',
+'wednesday-at' => 'сэрэдэҕэ, баччаҕа: $1',
+'thursday-at' => 'чэппиэргэ, баччаҕа: $1',
+'friday-at' => 'бээтинсэҕэ, баччаҕа: $1',
+'saturday-at' => 'субуотаҕа, баччаҕа: $1',
+'sunday-at' => 'өрөбүлгэ, баччаҕа: $1',
+'yesterday-at' => 'Бэҕэһээ, баччаҕа: $1',
 
 # Bad image list
 'bad_image_list' => 'Формаата маннык буолуохтаах:
@@ -3454,6 +3513,7 @@ $5
 # Scary transclusion
 'scarytranscludedisabled' => '[Interwiki transcluding араҕыста]',
 'scarytranscludefailed' => '[$1 халыыбы туһанар табыллыбата]',
+'scarytranscludefailed-httpstatus' => '[Манна $1 анаммыт халыыбы холбуур сатаммата: HTTP $2]',
 'scarytranscludetoolong' => '[URL наһаа уһун]',
 
 # Delete conflict
@@ -3565,6 +3625,7 @@ $5
 'version-license' => 'Лиссиэнзийэ',
 'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'атыттар',
+'version-credits-summary' => '[[Special:Version|MediaWiki]] сайдыытыгар үлэлэрин иһин манна ахтыллыбыт дьоҥҥо махтанабыт.',
 'version-license-info' => 'MediaWiki көҥүл тарҕанар бырагырааммаларга киирэр, кинини көмпүүтэр аһаҕас бырагырааммаларын пуондатын GNU General Public License усулуобуйатынан көҥүл тарҕатаргыт уонна/эбэтэр уларытаргыт көҥүллэнэр; иккис эбэтэр онтон хойукку ханнык баҕарар барылыттан саҕалаан.
 
 MediaWiki туһалаах буоллун диэн тарҕатыллар, ол эрээри АТЫЫЛАНАР СЫАННАҺА эбэтэр ХАННЫК ЭРЭ ЧОПЧУ СОРУККА СӨП ТҮБЭҺИИТЭ бигэргэтиллибэт (гарантията суох). Сиһилии GNU General Public License усулуобуйатын көрүҥ.
@@ -3577,6 +3638,17 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'version-entrypoints-header-entrypoint' => 'Киирии сирэ',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Билэттэн, кыттааччыттан эбэтэр барыл идентификаторыттан утаарыы',
+'redirect-legend' => 'Билэҕэ эбэтэр сирэйгэ утаарыы',
+'redirect-submit' => 'Толор',
+'redirect-lookup' => 'Көрдөт:',
+'redirect-value' => 'Суолтата:',
+'redirect-user' => 'Кыттааччы нүөмэрэ',
+'redirect-revision' => 'Сирэй барыла',
+'redirect-file' => 'Билэ аата',
+'redirect-not-exists' => 'Суолта көстүбэтэ',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Хос билэлэри көрдөөһүн',
 'fileduplicatesearch-summary' => 'Тэҥ билэлэри хэш-куодтарынан көрдөөһүн.',
@@ -3666,6 +3738,9 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'htmlform-submit' => 'Ыыт',
 'htmlform-reset' => 'Уларытыыны төннөр',
 'htmlform-selectorother-other' => 'Атын',
+'htmlform-no' => 'Суох',
+'htmlform-yes' => 'Сөп',
+'htmlform-chosen-placeholder' => 'Барылы тал',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 толору тиэкистээх көрдөөһүнү өйүүр',
@@ -3674,8 +3749,8 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 # New logging system
 'logentry-delete-delete' => '$3 сирэйи $1 соппут',
 'logentry-delete-restore' => '$3 сирэйи $1 сөргүппүт',
-'logentry-delete-event' => 'Сурунаал {{PLURAL:$5|суругун|$5 суруктарын}} көстүүтүн манна $3: $4 $1 уларыппыт',
-'logentry-delete-revision' => 'Сурунаал {{PLURAL:$5|суругун|$5 суруктарын}} көстүүтүн бу сирэйгэ $3: $4 $1 уларыппыт',
+'logentry-delete-event' => 'Сурунаал $5 суругун көстүүтүн манна $3 $1 уларыппыт: $4',
+'logentry-delete-revision' => 'Сурунаал $5 суругун көстүүтүн бу сирэйгэ $3 $1 уларыппыт: $4',
 'logentry-delete-event-legacy' => '$3 сурунаал суруктарын көстүүтүн $1 уларыппыт',
 'logentry-delete-revision-legacy' => '$3 сирэй барылларын көстүүтүн $1 уларыппыт',
 'logentry-suppress-delete' => '$3 сирэйи $1 баттаабыт',
@@ -3700,7 +3775,11 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'logentry-newusers-newusers' => 'Кыттааччы $1 диэн ааты бэлиэтээтэ',
 'logentry-newusers-create' => '$1 диэн кыттааччы бэлиэтэннэ',
 'logentry-newusers-create2' => '$3 кыттааччы аатын $1 бэлиэтээтэ',
-'logentry-newusers-autocreate' => 'Маннык аат $1 аптамаатынан бэлиэтэннэ',
+'logentry-newusers-byemail' => '$3 бэлиэ-ааты $1 оҥорбут, киирии тыла электрон почтанан ыытыллыбыт',
+'logentry-newusers-autocreate' => '$1 бэлиэ-аат аптамаатынан бэлиэтэннэ',
+'logentry-rights-rights' => '$3 бөлөхтөргө киириитин $1 уларыппыт: манныктан $4 манныкка $5',
+'logentry-rights-rights-legacy' => '$3 бөлөхтөргө киириитин $1 уларыппыт',
+'logentry-rights-autopromote' => '$1 мантан $4 манна $5 көһөрүллүбүт',
 'rightsnone' => '(суох)',
 
 # Feedback
@@ -3756,6 +3835,7 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'api-error-ok-but-empty' => 'Ис алҕас: сиэрбэртэн хоруй кэлбэтэ.',
 'api-error-overwrite' => 'Баар билэни уларытар сатаммат.',
 'api-error-stashfailed' => 'Ис алҕас: сиэрбэр быстах кэмҥэ оҥоһуллубут билэни кыайан бигэргэппэтэх.',
+'api-error-publishfailed' => 'Ис алҕас: сиэрбэр быстах билэни кыайан бигэргэппэтэх.',
 'api-error-timeout' => 'Сиэрбэр кэтэһэр кэмҥэ хоруйдаабата.',
 'api-error-unclassified' => 'Биллибэт алҕас таҕыста',
 'api-error-unknown-code' => 'Биллибэт алҕас: «$1»',
@@ -3776,4 +3856,7 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 'duration-centuries' => '$1 үйэ',
 'duration-millennia' => '$1 тыһыынча сыл',
 
+# Image rotation
+'rotate-comment' => 'Ойуу $1 кыраадыс чаһы хоту эргитиллибит',
+
 );
index f962f00..5e07aac 100644 (file)
@@ -13,6 +13,7 @@
  * @author Joseph Mardy
  * @author Nipon087
  * @author Reedy
+ * @author Rillke
  * @author Salvator
  * @author Samar88
  * @author Srabony90
@@ -256,7 +257,6 @@ $1',
 'disclaimers' => 'Dạbi bạnuḱko',
 'disclaimerpage' => 'Project: Sadharon ḍiskleimarko(General disclaimer)',
 'edithelp' => 'Tońge goṛo',
-'edithelppage' => 'Help:So̠mpado̠n',
 'helppage' => 'Help: Bhitri renaḱ',
 'mainpage' => 'Mukhiạ Sakam',
 'mainpage-description' => 'Mukhiạ sakam',
@@ -429,7 +429,7 @@ Amaḱ sendrare kukiko bondo hoeakana. Dayakate kukiko kạmi hoe ocoemẽ ar am
 Ale do baḍae ocolem amaḱ kuki doe kạmikana, sakam do arhõ rakaṕ lạgit́te kurumuṭuemẽ.',
 'noname' => 'Am do asol beoharićaḱ ńutum ṭhikte bam emakada.',
 'loginsuccesstitle' => 'Bhitri boloḱ do moctege puraoena',
-'loginsuccess' => '\'\'\'Am do nitge "$1" ńutumte {{SITENAME}} rem bolo akana.',
+'loginsuccess' => "'''Am do nitge \"\$1\" ńutumte {{SITENAME}} rem bolo akana.'''",
 'nosuchuser' => '"$1" ńutuman jahan beoharić bạnuea.
 Beoharićaḱ ńutum do bukṛogea.
 Amaḱ bananko ńelmẽ, se [[Special:Userlogin/signup nãwã mit́ṭen ekaunṭ tearmẽ]].',
@@ -489,10 +489,8 @@ Nitoḱ do am bhitritem boloḱkana...',
 
 # Special:PasswordReset
 'passwordreset' => 'Nãwãte oku nambar emme',
-'passwordreset-text' => 'Amaḱ ekaunṭ reaḱ purapuri thuti e-mail hotete ńam lạgit́te latar reaḱ forom purạomẽ.',
 'passwordreset-legend' => 'Nãwãte oku nambar emme',
 'passwordreset-disabled' => 'Noa wikire amaḱ uku nambar nãwãte em lạgit subita do bando gea.',
-'passwordreset-pretext' => '{{PLURAL:$1 latar re menaḱ ḍaṭako khon mit́ṭen emmẽ}}',
 'passwordreset-username' => 'Beoharicaḱ ńutum:',
 'passwordreset-domain' => 'Ḍomen:',
 'passwordreset-capture' => 'Sendra fol reaḱ e-mail ńelmẽ?',
@@ -708,7 +706,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'viewprevnext' => 'Ńelme ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Noa wiki re do \"[[:\$1]] ńutum sakam menaḱa",
 'searchmenu-new' => 'wiki re [[:$1]]nãwã sakam tear',
-'searchhelp-url' => 'Help: Goṛawaḱ',
 'searchprofile-articles' => 'Menaḱaḱ sakamko',
 'searchprofile-project' => 'Go̠ṛo ar Project sakam',
 'searchprofile-images' => 'Multimedia',
index c688b46..9db96bf 100644 (file)
@@ -280,7 +280,6 @@ $messages = array(
 'disclaimers' => 'Abbertimentos',
 'disclaimerpage' => 'Project:Abbertimentos generales',
 'edithelp' => "Agiudu pro s'acontzu o sa scritura",
-'edithelppage' => 'Help:Acontzare',
 'helppage' => 'Help:Agiudu',
 'mainpage' => 'Pàgina Base',
 'mainpage-description' => 'Pàgina Base',
@@ -631,7 +630,6 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 'shown-title' => 'Ammustra $1 {{PLURAL:$1|resurtadu|resurtados}} pro pàgina',
 'viewprevnext' => 'Càstia ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Possibilidades de chirca',
-'searchhelp-url' => 'Help:Agiudu',
 'searchprofile-everything' => 'Totu',
 'searchprofile-advanced' => 'Avantzada',
 'searchprofile-articles-tooltip' => 'Chirca in $1',
index 5decd0b..788f242 100644 (file)
@@ -195,6 +195,7 @@ $messages = array(
 'tog-diffonly' => "Nun visualizzari lu cuntinutu dâ pàggina quannu s'esequi na ''diff'' tra dui virsioni",
 'tog-showhiddencats' => 'Ammustra li catigurìi ammucciati.',
 'tog-norollbackdiff' => "Umettiri li ''diff'' doppu aviri fattu nu ''rollback''",
+'tog-useeditwarning' => 'Avvisa quannu si lasaa na paggina di canci cu canci nu sarbati',
 
 'underline-always' => 'sempri',
 'underline-never' => 'mai',
@@ -258,6 +259,18 @@ $messages = array(
 'oct' => 'utt',
 'nov' => 'nuv',
 'dec' => 'Dic',
+'january-date' => '$1 jinnaru',
+'february-date' => '$1 frivaru',
+'march-date' => '$1 di marzu',
+'april-date' => '$1 di aprili',
+'may-date' => '$1 di maiu',
+'june-date' => '$1 di giugnu',
+'july-date' => '$1 di giugnettu',
+'august-date' => '$1 di austu',
+'september-date' => '$1 di sittèmmiru',
+'october-date' => '$1 di uttùviru',
+'november-date' => '$1 di nuvèmmiru',
+'december-date' => '$1 di dicèmmiru',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Catigurìa|Catigurìi}}',
@@ -283,7 +296,8 @@ $messages = array(
 'newwindow' => '(grapi na finestra nova)',
 'cancel' => 'annulla',
 'moredotdotdot' => 'Àutru...',
-'mypage' => 'La mè pàggina',
+'morenotlisted' => 'cchiossai non ntâ lista',
+'mypage' => 'Pàggina',
 'mytalk' => 'la mè pàggina di discussioni',
 'anontalk' => 'Discussione pi stu IP',
 'navigation' => 'Navigazzioni',
@@ -306,7 +320,7 @@ $messages = array(
 'vector-action-protect' => 'Pruteggi',
 'vector-action-undelete' => 'Riprìstina',
 'vector-action-unprotect' => 'Cancia la prutizzioni',
-'vector-simplesearch-preference' => 'Abbilita li suggirimenti pâ ricerca avanzata',
+'vector-simplesearch-preference' => 'Abbilita la barra pâ ricerca simprificata (sulu pi la skin Vector)',
 'vector-view-create' => 'Crea',
 'vector-view-edit' => 'Cancia',
 'vector-view-history' => 'Talìa a storia',
@@ -316,6 +330,7 @@ $messages = array(
 'namespaces' => 'Namespace',
 'variants' => 'Varianti',
 
+'navigation-heading' => 'Menù di navigazzioni',
 'errorpagetitle' => 'Erruri',
 'returnto' => 'Ritorna a $1.',
 'tagline' => 'Di {{SITENAME}}',
@@ -337,6 +352,7 @@ $messages = array(
 'create-this-page' => 'Crea sta pàggina',
 'delete' => 'elìmina',
 'deletethispage' => 'Elìmina sta pàggina',
+'undeletethispage' => 'Annulla la scancillazzioni di sta pàggina',
 'undelete_short' => 'Ricùpira {{PLURAL:$1|na rivisioni|$1 rivisioni}}',
 'viewdeleted_short' => 'Talìa {{PLURAL:$1|nu canciamentu scancillatu|$1 canciamenti scancillati}}',
 'protect' => 'Pruteggi',
@@ -388,7 +404,6 @@ $1",
 'disclaimers' => 'Avvirtenzi',
 'disclaimerpage' => 'Project:Avvirtenzi ginirali',
 'edithelp' => 'Guida',
-'edithelppage' => 'Help:Canciamentu',
 'helppage' => 'Help:Cuntinuti',
 'mainpage' => 'Pàggina principali',
 'mainpage-description' => 'Pàggina principali',
@@ -410,6 +425,10 @@ $1",
 'youhavenewmessages' => 'Ricivìsti $1 ($2).',
 'newmessageslink' => 'missaggi novi',
 'newmessagesdifflink' => 'ùrtimi canciamenti',
+'youhavenewmessagesfromusers' => "Hai $1 di {{PLURAL:$3|n'àutru utenti|$3 utenti}} ($2).",
+'youhavenewmessagesmanyusers' => 'Hai $1 di na pocu di utenti ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|Nu missaggiu novu|missaggi novi}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ùrtimu canciamenti|ùrtimi canciamenti}}',
 'youhavenewmessagesmulti' => 'Hai missaggi novi supra $1',
 'editsection' => 'cancia',
 'editold' => 'cancia',
@@ -524,6 +543,8 @@ $2',
 'titleprotected' => "La criazzioni di sta pàggina cu stu tìtulu fu bluccata da [[User:$1|$1]].
 La mutivazzioni è chista: ''$2''.",
 'filereadonlyerror' => 'Nun fu pussìbbili canciari lu file "$1" pirchì lu repository di file "$2" è \'n mudalitati di sula littura.La mutivazzioni è "\'\'$3\'\'".',
+'exception-nologin' => 'Nun trasutu',
+'exception-nologin-text' => 'Sta pàggina o stâzzioni havi abbisognu ca tu si cunnittutu a sta wiki',
 
 # Virus scanner
 'virus-badscanner' => "Sbagghiu di cunfigurazzioni: antivirus scanusciutu: ''$1''",
@@ -536,11 +557,23 @@ La mutivazzioni è chista: ''$2''.",
 Poi cuntinuari a usari {{SITENAME}} di manera anònima, o poi <span class='plainlinks'>[$1 tràsiri n'àutra vota]</span> cu lu stissu o cu n'àutru nomu d'utenti.
 Accura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun avissi nisciutu nzinu a quannu tu nun scancelli tutta la mimoria dû tò browser.",
 'welcomeuser' => 'Bommegna, $1!',
+'welcomecreation-msg' => 'Lu cuntu fu criatu. Nun ascurdàriti di pirsunalizzari li prifirenzi pi {{SITENAME}}',
 'yourname' => "Lu tò nomu d'utenti (''user name'')",
+'userlogin-yourname' => 'Nomu utenti',
+'userlogin-yourname-ph' => 'Nzirìsci lu tò nomu utenti',
 'yourpassword' => "La tò ''password''",
+'userlogin-yourpassword' => 'Password',
+'userlogin-yourpassword-ph' => 'Nzirisci la tò password',
+'createacct-yourpassword-ph' => 'Nzirisci na password',
 'yourpasswordagain' => "Scrivi la password n'àutra vota",
+'createacct-yourpasswordagain' => 'Cunfirma la password',
+'createacct-yourpasswordagain-ph' => 'Nzirisci la password attorna',
 'remembermypassword' => 'Arricorda la password supra stu computer (pi ô massimu $1 {{PLURAL:$1|jornu|jorna}})',
+'userlogin-remembermypassword' => 'Mantènimi culligatu',
+'userlogin-signwithsecure' => 'Usa na cunnissioni sicura',
+'securelogin-stick-https' => 'Resta cunnittutu cu HTTPS doppu la trasuta',
 'yourdomainname' => 'Lu tò dominiu',
+'password-change-forbidden' => 'Nun putiti canciari la password nti 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',
 'nav-login-createaccount' => 'Riggìstrati o trasi',
@@ -550,14 +583,32 @@ Accura chi quarchi pàggina pò cuntinuari a èssiri ammustrata comu si nun avis
 'logout' => 'Nesci',
 'userlogout' => 'Nesci',
 'notloggedin' => "Nun v'aviti riggistratu",
+'userlogin-noaccount' => "Nun ci l'hai nu cuntu?",
+'userlogin-joinproject' => 'Scrìviti a {{SITENAME}}',
 'nologin' => "Nun nn'aviti nu cuntu pi ccà? '''$1'''.",
 'nologinlink' => 'Criati nu cuntu sùbbitu',
 'createaccount' => 'Criati un cuntu novu',
 'gotaccount' => "Hai già nu cuntu? '''$1'''.",
 'gotaccountlink' => 'Trasi',
 'userlogin-resetlink' => "T'ascurdasti li dittagli pâ trasuta?",
-'createaccountmail' => 'via e-mail',
+'userlogin-resetpassword-link' => 'Reinizzializza la tò password',
+'helplogin-url' => 'Help:Cunnissioni',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Aiutu câ fasi di login]]',
+'createacct-join' => 'Nzirisci li tò nfurnazzioni ccà',
+'createacct-emailrequired' => 'Nnirizzu e-mail',
+'createacct-emailoptional' => 'Nnirizzu e-mail (facurtativu)',
+'createacct-email-ph' => 'Nzirisci lu tò nnirizzu e-mail',
+'createaccountmail' => 'Utilizzari na password timpurania casuali e mannàrila ô nnirizzu e-mail spicificatu ccàssutta',
+'createacct-realname' => 'Nomu riali (facurtativu)',
 'createaccountreason' => 'Mutivu:',
+'createacct-reason' => 'Mutivu',
+'createacct-reason-ph' => "Pirchì stai criannu n'àutru cuntu?",
+'createacct-captcha' => 'Cuntrollu di sicurezza',
+'createacct-imgcaptcha-ph' => 'Nzirìsci lu testu ca vidi ccassupra',
+'createacct-submit' => 'Crèa nu cuntu',
+'createacct-benefit-heading' => '{{SITENAME}} è fatta di pirsunu comu a tìa.',
+'createacct-benefit-body1' => '{{PLURAL:$1|cuntribbutu|cuntribbuti}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pàggina|pàggini}}',
 'badretype' => "La ''password'' chi mittisti nun è bona.",
 'userexists' => 'Lu nomu utenti nzeritu è già usatu. Ti prijamu pirciò di vuliri scègghiri nu nomu utenti diversu.',
 'loginerror' => "Erruri nta l'accessu",
@@ -629,6 +680,10 @@ Aspetta tanticchia prima di pruvari  n'àutra vota.",
 Pò èssiri ca ggià canciasti cu successu la tò password o c'addumannasti na nova password timpurrània.",
 'resetpass-temp-password' => 'Password timpurrània:',
 
+# Special:PasswordReset
+'passwordreset' => 'Resetta la password',
+'passwordreset-text-one' => 'Jinchi stu mòdulu pi reimpostari la password',
+
 # Special:ChangeEmail
 'changeemail-submit' => 'Cancia e-mail',
 
@@ -722,7 +777,7 @@ P’idintificàrilu è pirciò nicissariu usari lu nùmmiru di lu sò nnirizzu I
 Li nnirizzi IP ponnu pirò èssiri spartuti di cchiù utenti.
 Siddu 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 oppuru <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} circari ntê riggistra currilati]</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.',
 'userpage-userdoesnotexist' => 'L\'account "<nowiki>$1</nowiki>" nun currispunni a n\'utenti riggistratu. Virificari si si voli criari o canciari sta pàggina.',
 'blocked-notice-logextract' => "Stu utenti è attualmenti bluccatu. L'ùrtimu elimentu dû riggistru dî blocca è ripurtatu ccà pi nfurnazzioni:",
 'clearyourcache' => "'''Nota:''' doppu aviri sarvatu è nicissariu puliri la cache dû propiu browser pi vìdiri li canciamenti. Pi '''Mozilla / Firefox / Safari''': fari clic supra ''Ricarica'' tinnennu primutu lu tastu dî maiùsculi, oppuru prèmiri ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' supra Mac); pi '''Internet Explorer:''' mantèniri primutu lu tastu ''Ctrl'' mentri si premi lu pulsanti ''Aggiorna'' o prèmiri ''Ctrl-F5''; pi '''Konqueror''': prèmiri lu pulsanti ''Ricarica'' o lu tastu ''F5''; pi '''Opera''' pò èssiri nicissariu svacantari cumpletamenti la cache dû menu ''Strumenti → Preferenze''.",
@@ -734,7 +789,8 @@ Siddu sî n’utenti anònimu e riteni ca li cummenti prisenti nta sta pàggina
 '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' => "'''Accura:'''",
-'previewnote' => "'''Ricurdàtivi ca chista è sulu n'antiprima, e ca nun hà statu ancora sarvata!'''",
+'previewnote' => "'''Ricurdàtivi ca chista è sulu n'antiprima.'''
+Li canci nun foru ancora sarvati!'''",
 'previewconflict' => "L'antiprima currispunni a lu testu prisenti ntâ casella di canciamentu supiriuri e rapprisenta la pàggina comu appari siddu si scegghi di prèmiri 'Sarva' 'n stu mumentu.",
 'session_fail_preview' => "'''Purtroppu nun hà statu pussìbbili sarvari li tò canciamenti pirchì li dati dâ sissioni hannu jutu pirduti. Pi favuri, riprova. Siddu arricevi stu missaggiu d'erruri cchiù voti, prova a sculligàriti e a culligàriti novamenti.'''",
 'session_fail_preview_html' => "'''Semu spiacenti, nun hà statu pussìbbili elabburari lu canciamentu pirchì hannu jutu pirduti li dati rilativi â sissioni.'''
@@ -962,13 +1018,13 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'mergelogpagetext' => "Appressu veni ammustrata na lista dî operazioni cchiù ricenti di unioni dâ storia di na pàggina ni n'autra.",
 
 # Diffs
-'history-title' => 'Crunoluggìa dî canciamenti di "$1"',
+'history-title' => '$1: crunoluggìa dî canciamenti',
 'difference-title' => '$1: diffirenzi ntra li virsiuni',
 'lineno' => 'Lìnia $1:',
 'compareselectedversions' => 'Fari lu paraguni',
 'showhideselectedversions' => 'Ammustra/ammuccia virsioni silizziunati',
 'editundo' => 'annulla',
-'diff-multi' => '({{PLURAL:$1|Na rivisioni ntirmèdia nun ammustrata|$1 rivisioni ntirmedi nun ammustrati}}.)',
+'diff-multi' => '({{PLURAL:$1|Na rivisioni ntirmèdia|$1 rivisioni ntirmedi}} di {{PLURAL:$2|nu utenti|$2 utenti}} nun {{PLURAL:$1|ammusciata|ammusciati}}.)',
 
 # Search results
 'searchresults' => 'Risurtati dâ circata',
@@ -990,7 +1046,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'searchmenu-legend' => 'Opzioni di circata',
 'searchmenu-exists' => "* Pàggina '''[[$1]]'''",
 'searchmenu-new' => "'''Crea la pàggina \"[[:\$1]]\" supra sta wiki!'''",
-'searchhelp-url' => 'Help:Cuntinuti',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza li pàggini cu stu prifissu]]',
 'searchprofile-articles' => 'Pàggini di cuntinutu',
 'searchprofile-project' => "Pàggini d'ajutu e dô pruggettu",
@@ -1003,6 +1058,7 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'searchprofile-everything-tooltip' => 'Cerca unnegghiè (puru ntî pàggini di discussioni)',
 'searchprofile-advanced-tooltip' => 'Cerca ntê namespace pirsunalizzati',
 'search-result-size' => '$1 ({{PLURAL:$2|na parola|$2 paroli}})',
+'search-result-category-size' => '{{PLURAL:$1|1 utenti|$1 utenti}} ({{PLURAL:$2|1 suttacatigurìa|$2 suttacatigurìi}}, {{PLURAL:$3|1 file|$3 files}})',
 'search-result-score' => 'Rilivanza: $1%',
 'search-redirect' => '(redirect $1)',
 'search-section' => '(sizzioni $1)',
@@ -1121,7 +1177,7 @@ L'operazioni nun pò èssiri annullata.",
 'prefs-help-gender' => "Opzionali: cunsenti di adattari li missaggi dô software in funzioni dô generi d'utenti. Sta nfurmazioni sarà pubblica.",
 'email' => 'Nnirizzu email',
 'prefs-help-realname' => '* Nomu veru (upziunali): siddu scegghi di furnìrilu veni usatu pi dàriti crèditu dû tò travagghiu.',
-'prefs-help-email' => "* Imeil (opziunali): abbìlita l'àutri utenti a cuntattàriti attraversu la tò pàggina d'utenti o di discussioni, senza pi chissu rivilari la tò idintitati.",
+'prefs-help-email' => 'Lu nnirizzu e-mail è facurtativu, ma è abbisugnatu pi risittari la password, ntô casu n cui è scurdata.',
 'prefs-help-email-others' => "Putiti videmma scegghiri di pirmèttiri ca l'autri ti cuntattanu pi posta elittronica cu nu culligamentu di la tò pàggina d'utilizzaturi o di discussioni. Lu tò nnirizzu nun veni rivilatu quannu l'àutri utilizzatura ti cuntattanu.",
 'prefs-help-email-required' => 'Lu nnirizzu email è nicissariu.',
 'prefs-info' => 'Informazzioni di basi',
@@ -1374,7 +1430,7 @@ Pi nziriri nu file nta na pàggina, fai nu lijami accussì:
 'filepageexists' => "La pàggina di discrizzioni di stu file fu ggià criata nnû nnirizzu <strong>[[:$1]]</strong>, macari si ancora non c'è nu file cu stu nomu. La discrizzioni di l'uggettu ca fu misa ntô mentri dû caricamentu non si vidi supra a la pàggina di discussioni. Pi fàrila cumpàriri ntâ pàggina di discussioni, c'è la nicissitati di mudificàrila a manu",
 'fileexists-extension' => "Nu file cu nu nomu simili a chistu esisti già; l'unica diffirenza è l'usu dê maiusculi nte l'estensioni: [[$2|thumb]]
 * Nomu dû file carricatu: <strong>[[:$1]]</strong>
-* Nome dû file esistenti: <strong>[[:$2]]</strong>
+* Nomu dû file esistenti: <strong>[[:$2]]</strong>
 Pi favuri scegghiti n'àutru nomu.",
 'fileexists-thumbnail-yes' => "Lu file carricato sembra èssiri lu risurtatu di n'antiprima ''(thumbnail)''. [[$1|thumb]]
 Virificari, pi cunfruntu, lu file <strong>[[:$1]]</strong>.
@@ -1768,7 +1824,7 @@ Protucolli suppurtati: <code>$1</code>',
 'emailuserfooter' => 'Sta e-mail fu mannata di $1 a $2 attraversu la funzionu "Manna nu missàggiu e-mail a l\'utenti" supra {{SITENAME}}.',
 
 # Watchlist
-'watchlist' => 'Lista taliata mia',
+'watchlist' => 'Taliati spiciali',
 'mywatchlist' => 'Lista taliata mia',
 'watchlistfor2' => 'Pi $1, $2',
 'nowatchlist' => "Nun hai innicatu pàggini a tèniri d'occhiu.",
@@ -1986,12 +2042,12 @@ $1',
 'blanknamespace' => '(Principali)',
 
 # Contributions
-'contributions' => 'cuntribbuti',
+'contributions' => 'Cuntribbuti {{GENDER:$1|utenti}}',
 'contributions-title' => 'Cuntribbuti di $1',
-'mycontris' => 'Li mei cuntribbuti',
+'mycontris' => 'Li mè cuntribbuti',
 'contribsub2' => 'Pi $1 ($2)',
 'nocontribs' => 'Secunnu sti criteri nun ci sunnu canci o cuntribbuti.',
-'uctop' => '(ùrtima pi la pàggina)',
+'uctop' => '(attuali)',
 'month' => 'A pàrtiri dô mese (e pricidenti):',
 'year' => "A pàrtiri di l'annu (e pricidenti):",
 
@@ -2025,7 +2081,7 @@ $1',
 'whatlinkshere-hideredirs' => '$1 redirect',
 'whatlinkshere-hidetrans' => '$1 nclusioni',
 'whatlinkshere-hidelinks' => '$1 link',
-'whatlinkshere-hideimages' => '$1 link di mmàggini',
+'whatlinkshere-hideimages' => '$1 liami di files',
 'whatlinkshere-filters' => 'Filtri',
 
 # Block/unblock
index c271e88..6b1dd4d 100644 (file)
@@ -240,7 +240,6 @@ $messages = array(
 'disclaimers' => 'Disclamation',
 'disclaimerpage' => 'Project:General_disclamation',
 'edithelp' => 'Editin help',
-'edithelppage' => 'Help:Editin',
 'helppage' => 'Help:Contents',
 'mainpage' => 'Main Page',
 'mainpage-description' => 'Main Page',
@@ -706,7 +705,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'viewprevnext' => 'View ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''There is a page named \"[[:\$1]]\" oan this wiki.'''",
 'searchmenu-new' => "'''Mak the page \"[[:\$1]]\" on this wiki!'''",
-'searchhelp-url' => 'Help:Contents',
 'searchprofile-articles' => 'Content pages',
 'searchprofile-project' => 'Help and Project pages',
 'searchprofile-images' => 'Multimedia',
index 17e4204..d5879fa 100644 (file)
@@ -321,7 +321,6 @@ $messages = array(
 'disclaimers' => 'غيرجوابداريناما',
 'disclaimerpage' => 'Project:عام غيرجوابدارينامو',
 'edithelp' => 'مدد براءِ ترميم',
-'edithelppage' => 'Help:سنوارڻ',
 'helppage' => 'Help:فهرست',
 'mainpage' => 'مُک صفحو',
 'mainpage-description' => 'مُک صفحو',
@@ -524,7 +523,6 @@ You cannot use the 'e-mail this user' feature unless a valid e-mail address is s
 'prevn' => 'پويان {{PLURAL:$1|$1}}',
 'nextn' => 'اڳيان {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ڏسو ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:فهرست',
 'powersearch' => 'نفيس ڳولا',
 'powersearch-redir' => 'چورڻن جي فهرست ڏيکاريو',
 
index d180355..97f3469 100644 (file)
@@ -304,7 +304,6 @@ $messages = array(
 'disclaimers' => 'Avvirthènzi',
 'disclaimerpage' => 'Project:Avvirthènzi ginarari',
 'edithelp' => 'Ghia',
-'edithelppage' => 'Help:Mudìfigga',
 'helppage' => 'Help:Indizi',
 'mainpage' => 'Pàgina prinzipari',
 'mainpage-description' => 'Pàgina prinzipari',
@@ -774,7 +773,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'nextn' => 'sighenti {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Opzioni di zercha',
-'searchhelp-url' => 'Help:Indizi',
 'searchprofile-everything' => 'Tuttu',
 'search-result-size' => '$1 ({{PLURAL:$2|una paraura|$2 parauri}})',
 'search-redirect' => '(rinviu $1)',
index d7fc8d9..b30e7c7 100644 (file)
@@ -331,7 +331,6 @@ $messages = array(
 'disclaimers' => 'Friijavuohta vástideamis',
 'disclaimerpage' => 'Project:Friijavuohta vástideamis',
 'edithelp' => 'Rievdadanrávvagat',
-'edithelppage' => 'Help:Mo rievdadit siidduid',
 'helppage' => 'Help:Sisdoallu',
 'mainpage' => 'Váldosiidu',
 'mainpage-description' => 'Váldosiidu',
@@ -619,7 +618,6 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 
 $1 {{int:pipe-separator}} $2',
 'searchmenu-new' => "'''Álggat siiddu ''[[:$1]]'' dán Wikipediai'''",
-'searchhelp-url' => 'Help:Rávvagat',
 'searchprofile-articles' => 'Sisdoallosiiddut',
 'searchprofile-project' => 'Veahkke- ja prošeaktasiiddut',
 'searchprofile-everything' => 'Buot',
index 5f56f5e..fee1e56 100644 (file)
@@ -198,7 +198,6 @@ $messages = array(
 'disclaimers' => 'Isój cacóomx',
 'disclaimerpage' => 'Project:Isoj cacóomx geniiraloj',
 'edithelp' => 'Help ticpatlöx',
-'edithelppage' => 'Help:Ticpatlöx',
 'helppage' => 'Help:Caálixötöj',
 'mainpage' => 'Caálixötöj',
 'mainpage-description' => 'Caálixötöj',
@@ -577,7 +576,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'prevn' => 'jan {{PLURAL:$1|$1}}',
 'nextn' => 'hun {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Cohuatlöx ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Caálixötöj',
 'powersearch' => 'Yahöx',
 
 # Preferences page
index 2e2bba5..2ac7628 100644 (file)
@@ -289,7 +289,6 @@ $1',
 'disclaimers' => 'Atsakuomībės aprėbuojims',
 'disclaimerpage' => 'Project:Atsakuomībės aprėbuojims',
 'edithelp' => 'Kāp redagoutė',
-'edithelppage' => 'Help:Redagavėms',
 'helppage' => 'Help:Torėnīs',
 'mainpage' => 'Pėrms poslapis',
 'mainpage-description' => 'Pėrms poslapis',
@@ -723,7 +722,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'searchmenu-legend' => 'Paėiškuos nustatīmā',
 'searchmenu-exists' => "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
 'searchmenu-new' => "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
-'searchhelp-url' => 'Help:Torėnīs',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ėiškuotė poslapiu so šėtuom prīšdielio]]',
 'searchprofile-articles' => 'Torėnė poslapē',
 'searchprofile-project' => 'Pagelbas ė pruojekta poslapē',
index 6d58d82..2807cad 100644 (file)
@@ -461,7 +461,6 @@ $1',
 'disclaimers' => 'Odricanje odgovornosti',
 'disclaimerpage' => 'Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju',
-'edithelppage' => 'Help:Uređivanje',
 'helppage' => 'Help:Sadržaj',
 'mainpage' => 'Glavna strana',
 'mainpage-description' => 'Glavna strana',
@@ -1283,7 +1282,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchhelp-url' => 'Help:Sadržaj',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
index 11f2e18..e8e83d9 100644 (file)
@@ -247,7 +247,6 @@ $1',
 'disclaimers' => 'Ur darssuq',
 'disclaimerpage' => 'Project: Ur illa maddar illa ssuq',
 'edithelp' => 'Aws ɣ tirra',
-'edithelppage' => 'Help:Imaratn',
 'helppage' => 'Help:Mayllan',
 'mainpage' => 'Tasana tamzwarut',
 'mainpage-description' => 'Tasna tamzwarut',
@@ -612,7 +611,6 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'searchmenu-legend' => 'Istayn ucnubc',
 'searchmenu-exists' => '"\'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad',
 'searchmenu-new' => "'''Skr Tasna « [[:$1|$1]] » ɣ wiki !'''",
-'searchhelp-url' => 'Help:Mayllan',
 'searchprofile-articles' => 'Mayllan ɣ tasna',
 'searchprofile-project' => 'Tisniwin n w-aws n usnfar',
 'searchprofile-images' => 'Multimedia',
index b6c719f..3145581 100644 (file)
@@ -193,8 +193,8 @@ $magicWords = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'à·\83බà·\90ඳà·\92 à¶ºà¶§à·\93ර කිරීම:',
-'tog-justify' => 'ඡà·\9aදයනà·\8a à¶´à·\9aළ ගස්වන්න',
+'tog-underline' => 'à·\83බà·\90ඳà·\92 à¶ºà¶§à·\92à¶\89ර කිරීම:',
+'tog-justify' => 'ඡà·\9aදයනà·\8a à¶´à·\99ළ ගස්වන්න',
 'tog-hideminor' => 'මෑත වෙනස් කිරීම්වල සුළු සංස්කරණ සඟවන්න',
 'tog-hidepatrolled' => 'මෑත වෙනස් කිරීම්වල මුර සංචාරය කරන ලද සංස්කරණ සඟවන්න',
 'tog-newpageshidepatrolled' => 'විමසුමට ලක්කෙරුණු පිටු, අළුත් පිටු ලැයිස්තුවෙහි නොපෙන්වන්න',
@@ -435,7 +435,6 @@ $1",
 'disclaimers' => 'වියාචනයන්',
 'disclaimerpage' => 'Project:පොදු වියාචන',
 'edithelp' => 'සංස්කරණ උදවු',
-'edithelppage' => 'Help:සංස්කරණ',
 'helppage' => 'Help:පටුන',
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
@@ -618,7 +617,7 @@ $2',
 'createacct-yourpasswordagain-ph' => 'මුර පදය යළි ඇතුළු කරන්න',
 'remembermypassword' => 'මාගේ පිවිසීම මෙම ගවේෂක මතකයෙහි (උපරිම ලෙස {{PLURAL:$1|දින|දින}}) $1 ක් මතක තබාගන්න',
 'userlogin-remembermypassword' => 'මා ප්‍රවිෂ්ටයෙහි තබන්න',
-'userlogin-signwithsecure' => 'à·\83à·\94රà¶\9aà·\8aà·\82à·\92ත à·\83මà·\8aබනà·\8aධතà·\8fà·\80ය à¶·à·\8fà·\80à·\92තà·\8f කරන්න',
+'userlogin-signwithsecure' => 'à\86රà¶\9aà·\8aâ\80\8dà·\82à·\92ත à·\83ඹඳතà·\8fà·\80 à¶·à·\8fà·\80à·\92තà·\8fකරන්න',
 'securelogin-stick-https' => 'ඇතුල්වීමෙන් පසුවද HTTPS හරහා සම්බන්ධ වන්න',
 'yourdomainname' => 'ඔබගේ වසම:',
 'password-change-forbidden' => 'ඔබට මෙම විකියෙහි මුරපද වෙනස් කල නොහැක.',
@@ -694,8 +693,8 @@ $2',
 'blocked-mailpassword' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කරමින් සංස්කරණයෙහි යෙදීම වාරණය කොට ඇති අතර, අපයෙදුම වළකනු වස්,  මුර-පදය පුනරුත්ථාන  කෘත්‍යය භාවිත කිරීමට අවසරයද අහිමි කොට ඇත.',
 'eauthentsent' => 'නම් කර ඇති විද්‍යුත්-ලිපි ලිපිනය වෙත, තහවුරු කිරීම් විද්‍යුත්-ලිපියක් යවා ඇත.
 ගිණුම වෙත වෙනත් විද්‍යුත්-ලිපියක්  යැවීමට පෙර, ගිණුම සත්‍ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු වස්, විද්‍යුත්-ලිපියෙහි අඩංගු උපදෙස්  පිළිපදින්න.',
-'throttled-mailpassword' => 'à¶\85à·\80à·\83නà·\8a {{PLURAL:$1|පà·\90ය|පà·\90ය $1}} à¶\85තරතà·\94රදà·\93, à¶¸à·\94රපද à¶ºà·\85à·\92 à·\83à·\90à¶\9aà·\83à·\94මà·\8a à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලà¶\9aà·\8a à¶¯à·\90නටමතà·\8a à¶ºà·\80à·\8f ඇත.
-à¶\85පයà·\99දà·\94ම à·\80à·\85à¶\9aà·\8aà·\80නà·\94 à·\80à·\83à·\8a, {{PLURAL:$1|à¶\91à¶\9aà·\8a à¶´à·\90යà¶\9a|පà·\90ය $1 à¶\9a}}ට à·\80රà¶\9aà·\8a à¶\91à¶\9aà·\8a à¶¸à·\94රපද à¶ºà·\85à·\92 à·\83à·\90à¶\9aà·\83à·\94මà·\8a à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලක් පමණක් යවනු ලැබේ.',
+'throttled-mailpassword' => 'à¶\85à·\80à·\83නà·\8a {{PLURAL:$1|පà·\90ය|පà·\90ය $1}} à¶­à·\94ල, à¶¸à·\94රපද à¶ºà·\85à·\92 à·\83à·\90à¶\9aà·\83à·\94මà·\8a à¶\8a-ලà·\92පà·\92යà¶\9aà·\8a à¶ºà·\80à·\8fඇත.
+à¶\85පයà·\99දà·\94ම à·\80à·\85à¶\9aනà·\94 à·\80à·\83à·\8a, {{PLURAL:$1|à¶\91à¶\9aà·\8a à¶´à·\90යà¶\9a|පà·\90ය $1 à¶\9a}}ට à·\80රà¶\9aà·\8a à¶\91à¶\9aà·\8a à¶¸à·\94රපද à¶ºà·\85à·\92 à·\83à·\90à¶\9aà·\83à·\94මà·\8a à¶\8a-ලà·\92පà·\92යක් පමණක් යවනු ලැබේ.',
 'mailerror' => 'තැපෑල යැවීමේදී වූ දෝෂය: $1',
 'acct_creation_throttle_hit' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කල මෙම විකියට අමුත්තන් විසින් {{PLURAL:$1|එක් ගිණුමක්|ගිණුම් $1 ක්}} පසුගිය දිනය තුලදී තනා ඇති අතර, එය මෙම කාල පරිච්ඡේදය තුලදී ඉඩ දෙනු ලබන උපරිමය වෙයි.
 මේ හේතුවෙන්, මෙම අන්තර්ජාල ලිපිනය භාවිතා කරන අමුත්තන් විසින් මෙම අවස්ථාවෙහිදී තවත් ගිණුම් තැනීම සිදු කල නොහැකිව ඇත.',
@@ -747,10 +746,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'මුරපදය වෙනස් කරන්න',
-'passwordreset-text' => 'ඔබගේ මුරපදය යළි සැකසීම සදහා මෙම ආකෘතිපත්‍රය සම්පූර්ණ කරන්න.',
 'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
 'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්‍රත්‍යාරම්භ කිරීම් අක්‍රීය කොට ඇත.',
-'passwordreset-pretext' => '{{PLURAL:$1||පහත දැක්වෙන දත්ත කණ්ඩ වලින් එකක් ඇතුල් කරන්න}}',
 'passwordreset-username' => 'පරිශීලක නාමය:',
 'passwordreset-domain' => 'වසම:',
 'passwordreset-capture' => 'ප්‍රතිපලදායක විද්‍යුත් තැපෑල නරඹනවාද?',
@@ -983,6 +980,7 @@ $2
 එය මකා දමා ඇති බවක් පෙනේ.',
 'edit-conflict' => 'සංස්කරණ ගැටුම.',
 'edit-no-change' => 'පෙළට කිසිදු වෙනසක් සිදු නොකල  බැවින් ඔබගේ සංස්කරණය නොසලකාහරින ලදි.',
+'postedit-confirmation' => 'ඔබගේ සංස්කරණය සුරකින ලදී.',
 'edit-already-exists' => 'නව පිටුවක් තැනිය නොහැකි විය.
 එය දැනටමත් පවතියි.',
 'defaultmessagetext' => 'සාමාන්‍ය පණිවුඩ පෙළ',
@@ -1219,7 +1217,6 @@ $1",
 'searchmenu-legend' => 'ගවේෂණ තෝරාගැනීම්',
 'searchmenu-exists' => "'''මෙම විකියෙහි \"[[:\$1]]\" ලෙස නම් කර ඇති පිටුවක් ඇත.'''",
 'searchmenu-new' => "'''මෙම විකියෙහි \"[[:\$1]]\" පිටුව තනන්න!'''",
-'searchhelp-url' => 'Help:පටුන',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|මෙම උපසර්ගය භාවිත කරමින් පිටු පිරික්සන්න]]',
 'searchprofile-articles' => 'අන්තර්ගත පිටු',
 'searchprofile-project' => 'උදවු හා ව්‍යාපෘති පිටු',
index d993ff5..e20bb9d 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Chiak
  * @author Danny B.
+ * @author Geitost
  * @author Helix84
  * @author Kaganer
  * @author Kusavica
@@ -288,14 +289,14 @@ $messages = array(
 'tog-hideminor' => 'V posledných úpravách nezobrazovať drobné úpravy',
 'tog-hidepatrolled' => 'Skryť strážené úpravy v Posledných úpravách',
 'tog-newpageshidepatrolled' => 'Skryť strážené stránky zo zoznamu nových stránok',
-'tog-extendwatchlist' => 'Rozšíriť zoznam sledovaných, aby zobrazoval všetky zmeny, nie len posledné',
-'tog-usenewrc' => 'Zoskupiť zmeny v posledných úpravách a zoznamoch sledovaných (vyžaduje JavaScript)',
+'tog-extendwatchlist' => 'Rozšíriť zoznam sledovaných stránok, aby zobrazoval všetky zmeny, nie len posledné',
+'tog-usenewrc' => 'Zoskupiť v posledných úpravách a na zozname sledovaných stránok podľa stránky (vyžaduje JavaScript)',
 'tog-numberheadings' => 'Automaticky číslovať nadpisy',
-'tog-showtoolbar' => 'Zobraziť panel nástrojov úprav',
-'tog-editondblclick' => 'Upravovať stránky po dvojitom kliknutí (JavaScript)',
-'tog-editsection' => 'Umožniť úpravu sekcie pomocu odkazov [upraviť]',
-'tog-editsectiononrightclick' => 'Umožniť upravovať sekcie po kliknutí pravým tlačidlom na nadpisy sekcií (JavaScript)',
-'tog-showtoc' => 'Zobrazovať obsah (pre stránky s viac ako 3 nadpismi)',
+'tog-showtoolbar' => 'Zobraziť panel nástrojov úprav (vyžaduje JavaSkript)',
+'tog-editondblclick' => 'Upravovať stránky po dvojitom kliknutí (vyžaduje JavaScript)',
+'tog-editsection' => 'Umožniť upravovanie sekcie prostredníctvom odkazov [upraviť]',
+'tog-editsectiononrightclick' => 'Umožniť upravovanie sekcie pravým kliknutím na nadpisy sekcií (vyžaduje JavaScript)',
+'tog-showtoc' => 'Zobrazovať tabuľku s obsahom (pre stránky s viac ako 3 nadpismi)',
 'tog-rememberpassword' => 'Zapamätať si prihlásenie na tomto počítači (najviac $1 {{PLURAL:$1|deň|dni|dní}})',
 'tog-watchcreations' => 'Pridávať stránky, ktoré vytvorím a súbory, ktoré nahrám medzi sledované',
 'tog-watchdefault' => 'Pridávať stránky a súbory, ktoré upravím medzi sledované',
@@ -524,7 +525,6 @@ $1',
 'disclaimers' => 'Vylúčenie zodpovednosti',
 'disclaimerpage' => 'Project:Vylúčenie zodpovednosti',
 'edithelp' => 'Ako upravovať stránku',
-'edithelppage' => 'Help:Ako upravovať stránku',
 'helppage' => 'Help:Obsah',
 'mainpage' => 'Hlavná stránka',
 'mainpage-description' => 'Hlavná stránka',
@@ -719,7 +719,7 @@ Nezabudnite zmeniť svoje [[Special:Preferences|Predvoľby {{GRAMMAR:genitív|{{
 'notloggedin' => 'Neprihlásený/á',
 'userlogin-noaccount' => 'Nemáte ešte účet?',
 'userlogin-joinproject' => 'Pridajte sa k {{GRAMMAR:lokál|{{SITENAME}}}}',
-'nologin' => "Nemáte ešte účet? '''$1'''.",
+'nologin' => 'Nemáte ešte účet? $1.',
 'nologinlink' => 'Vytvoriť nový účet',
 'createaccount' => 'Vytvoriť nový účet',
 'gotaccount' => "Máte už vytvorený účet? '''$1'''.",
@@ -1313,7 +1313,6 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'searchmenu-legend' => 'Možnosti hľadania',
 'searchmenu-exists' => "*Stránka '''[[$1]]'''",
 'searchmenu-new' => "'''Vytvoriť stránku „[[:$1|$1]]“ na tejto wiki'''",
-'searchhelp-url' => 'Help:Obsah',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Prehliadať stránky s touto predponou]]',
 'searchprofile-articles' => 'Stránky s obsahom',
 'searchprofile-project' => 'Stránky pomocníka a projektu',
index b7869a6..4dfcee7 100644 (file)
@@ -387,6 +387,7 @@ $messages = array(
 'create-this-page' => 'Ustvari stran',
 'delete' => 'Briši',
 'deletethispage' => 'Briši stran',
+'undeletethispage' => 'Obnovi stran',
 'undelete_short' => 'Vrni $1 {{PLURAL:$1|izbrisano urejanje|izbrisani urejanji|izbrisana urejanja|izbrisanih urejanj|izbrisanih urejanj}}',
 'viewdeleted_short' => 'Ogled {{PLURAL:$1|enega izbrisanega urejanja|$1 izbrisanih urejanj}}',
 'protect' => 'Zaščiti',
@@ -440,7 +441,6 @@ $1',
 'disclaimers' => 'Zanikanja odgovornosti',
 'disclaimerpage' => 'Project:Splošno zanikanje odgovornosti',
 'edithelp' => 'Pomoč pri urejanju',
-'edithelppage' => 'Help:Urejanje',
 'helppage' => 'Help:Vsebina',
 'mainpage' => 'Glavna stran',
 'mainpage-description' => 'Glavna stran',
@@ -591,6 +591,8 @@ $2',
 'namespaceprotected' => "Nimate dovoljenja urejati strani v imenskem prostoru '''$1'''.",
 'customcssprotected' => 'Nimate pravice urejati te strani CSS, ker vsebuje osebne nastavitve drugega uporabnika.',
 'customjsprotected' => 'Nimate pravice urejati te strani JavaScript, ker vsebuje osebne nastavitve drugega uporabnika.',
+'mycustomcssprotected' => 'Nimate pravic za urejanje te strani s CSS.',
+'mycustomjsprotected' => 'Nimate pravic za urejanje te strani z JavaScriptom.',
 'ns-specialprotected' => 'Posebnih strani ni mogoče urejati.',
 'titleprotected' => "Uporabnik [[User:$1|$1]] je preprečil ustvarjanje strani s takim naslovom.
 Podani razlog je bil »''$2''«.",
@@ -731,7 +733,7 @@ Prosimo, vpišite pravilno oblikovanega ali polje izpraznite.',
 'cannotchangeemail' => 'E-poštnih naslovov računa na tem wikiju ni mogoče spremeniti.',
 'emaildisabled' => 'Stran ne more pošiljati e-pošte.',
 'accountcreated' => 'Račun je ustvarjen',
-'accountcreatedtext' => 'Uporabniški račun za »$1« je ustvarjen.',
+'accountcreatedtext' => 'Ustvarili smo uporabniški račun za [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|pogovor]]).',
 'createaccount-title' => 'Ustvarjanje računa za {{GRAMMAR:tožilnik|{{SITENAME}}}}',
 'createaccount-text' => 'Nekdo je ustvaril račun $2 na {{GRAMMAR:dajalnik|{{SITENAME}}}} ($4). Geslo za »$2« je »$3«. Priporočljivo je, da se prijavite in spremenite svoje geslo sedaj.
 
@@ -770,6 +772,8 @@ Morda ste že uspešno spremenili geslo ali pa ste zahtevali novo začasno geslo
 
 # Special:PasswordReset
 'passwordreset' => 'Ponastavitev gesla',
+'passwordreset-text-one' => 'Izpolnite obrazec, da ponastavite svoje geslo.',
+'passwordreset-text-many' => 'Vnesite {{PLURAL:$1|podatek|enega od podatkov}}, da ponastavite svoje geslo.',
 'passwordreset-legend' => 'Ponastavitev gesla',
 'passwordreset-disabled' => 'Ponastavljanje gesla je na tem wikiju onemogočeno.',
 'passwordreset-emaildisabled' => 'Na tem wikiju so možnosti e-pošte onemogočene.',
@@ -1014,13 +1018,14 @@ Spodaj sta za sklicevanje na razpolago dnevnik brisanja in dnevnik prestavljanja
 Izgleda, da je bila izbrisana.',
 'edit-conflict' => 'Navzkrižje urejanj.',
 'edit-no-change' => 'Vaše urejanje je bilo prezrto, saj ni vsebovalo sprememb.',
+'postedit-confirmation' => 'Vaše urejanje smo shranili.',
 'edit-already-exists' => 'Ni bilo mogoče ustvariti nove strani, ker že obstaja.',
 'defaultmessagetext' => 'Prednastavljeno besedilo',
 'content-failed-to-parse' => 'Nisem mogel razčleniti vsebine $2 za obliko $1: $3',
 'invalid-content-data' => 'Neveljavni podatki vsebine',
 'content-not-allowed-here' => 'Vsebina »$1« ni dovoljena na strani [[$2]]',
 'editwarning-warning' => 'Če zapustite stran, boste morda izgubili vse spremembe, ki ste jih naredili.
-Če ste prijavljeni, lahko to opozorilo onemogočite v razdelku »{{int:prefs-editing}}« v svojih nastavitvah.',
+Če ste prijavljeni, lahko to opozorilo onemogočite v razdelku »Urejanje« v svojih nastavitvah.',
 
 # Content models
 'content-model-wikitext' => 'wikibesedilo',
@@ -1263,7 +1268,6 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'searchmenu-legend' => 'Možnosti za iskanje',
 'searchmenu-exists' => "'''Na tem wikiju obstaja stran »[[:$1]]«'''",
 'searchmenu-new' => "'''Ustvari stran »[[:$1]]« na tem wikiju!'''",
-'searchhelp-url' => 'Help:Vsebina',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Iskanje strani s to predpono]]',
 'searchprofile-articles' => 'Članki',
 'searchprofile-project' => 'Pomoč in projektne strani',
@@ -1407,7 +1411,7 @@ Ne sme biti daljši od $1 {{PLURAL:$1|znaka|znakov}}.',
 'prefs-help-gender' => 'Podatek ni obvezen, uporablja pa se ga izključno za pravilno obliko naslavljanja programja glede na spol.
 Podatek bo javno prikazan.',
 'email' => 'E-pošta',
-'prefs-help-realname' => 'Pravo ime je neobvezno.
+'prefs-help-realname' => 'Pravo ime ni obvezno.
 Če se ga odločite navesti, bo uporabljeno za priznavanje vašega dela.',
 'prefs-help-email' => 'E-poštni naslov ni obvezen, vendar omogoča, da vam v primeru pozabljenega gesla pošljemo novo.',
 'prefs-help-email-others' => 'Omogočite lahko tudi možnost, da vam lahko ostali uporabniki pošiljajo e-pošto prek vaše uporabniške ali pogovorne strani.
@@ -1524,6 +1528,8 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'right-editusercssjs' => 'Urejanje CSS- in JS-datotek drugih uporabnikov',
 'right-editusercss' => 'Uredi CSS datotek drugih uporabnikov',
 'right-edituserjs' => 'Uredi JS datotek drugih uporabnikov',
+'right-editmyusercss' => 'Uredite svoje uporabniške datoteke CSS',
+'right-editmyuserjs' => 'Uredite svoje uporabniške datoteke JavaScript',
 'right-rollback' => 'Hitro vračanje urejanj zadnjega uporabnika, ki je urejal določeno stran',
 'right-markbotedits' => 'Označi vrnjena urejanja kot urejanja botov',
 'right-noratelimit' => 'Omejitve dejavnosti ne veljajo',
@@ -2542,7 +2548,7 @@ $1',
 'mycontris' => 'Prispevki',
 'contribsub2' => 'Uporabnik: $1 ($2)',
 'nocontribs' => 'Ne najdem nobene merilom ustrezajoče spremembe.',
-'uctop' => ' (vrh)',
+'uctop' => '(trenutno)',
 'month' => 'Od meseca (in prej):',
 'year' => 'Od leta (in prej):',
 
index c60c2b8..6fcbac1 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Als-Holder
+ * @author Geitost
  * @author Jens Liebenau
  * @author Jonny84
  * @author Kaganer
@@ -242,7 +243,6 @@ $1",
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Bearbeitungshilfe',
-'edithelppage' => 'Help:Bearbeitungshilfe',
 'helppage' => 'Help:Hilfe',
 'mainpage' => 'Hauptseite',
 'mainpage-description' => 'Hauptseite',
@@ -375,7 +375,7 @@ Beachte, doas einige Seyta noo oazeiga kinna, doas du oagemeldet best, sulange d
 'logout' => 'Oabmelda',
 'userlogout' => 'Oabmelda',
 'notloggedin' => 'Nä oangemeldet',
-'nologin' => "Du hast keen Benutzerkonto? '''$1'''.",
+'nologin' => 'Du hast keen Benutzerkonto? $1.',
 'nologinlink' => 'Neues Benutzerkonto oanleega',
 'createaccount' => 'Benutzerkonto oanlega',
 'gotaccount' => "Du hast bereits a Benutzerkonto? '''$1'''.",
@@ -1090,11 +1090,11 @@ Bitte gieb dar Datei an'n Noama, dar dann Inhalt besser beschreibt.",
 'upload-proto-error' => 'Foalsches Protokoll',
 'upload-proto-error-text' => 'De URL muuß miet <code>http://</code> oder <code>ftp://</code> beginna.',
 'upload-file-error-text' => "Bei dar Erstellung a'r temporären Datei uff'd Server ies a interner Fahler uffgetreta.
-Bitte informiere an'n [[Special:ListUsers/sysop|System-Administrator]].",
+Bitte informiere an'n [[Special:ListUsers/sysop|Administrator]].",
 'upload-misc-error' => 'Unbekennter Fahler beim Huchloada',
 'upload-misc-error-text' => "Beim Huchloada ies a unbekennter Fahler uffgetreta.
 Priefe de URL uff Fahler, dann Online-Status der Seite und versuche 's erneut.
-Wenn doas Problem wetter bestieht, informiere anna [[Special:ListUsers/sysop|System-Administrator]].",
+Wenn doas Problem wetter bestieht, informiere anna [[Special:ListUsers/sysop|Administrator]].",
 'upload-too-many-redirects' => 'De URL beinhaltete zu viele Wetterleitunga',
 'upload-unknown-size' => 'Unbekennte Grieße',
 'upload-http-error' => 'A HTTP-Fahler ies uffgetreta: $1',
index d0ffe71..a9748e9 100644 (file)
@@ -251,7 +251,6 @@ $1',
 'disclaimers' => "Masuul la'aan",
 'disclaimerpage' => "Project:Masuul la'aan guud",
 'edithelp' => 'Caawinaada wax ka bedelka',
-'edithelppage' => 'Help:Wax ka bedelka',
 'helppage' => 'Help:Caawinaad',
 'mainpage' => 'Bogga Hore',
 'mainpage-description' => 'Bogga Hore',
@@ -388,6 +387,7 @@ Waad sii isticmaali kartaa {{SITENAME}} adoona lagu aqoon, ama <span class='plai
 'yourpassword' => 'Eraysir:',
 'yourpasswordagain' => 'Markale qor ereysirka:',
 'remembermypassword' => 'Kumbuyuutarkaan ku xasuusnaaw magaceyga gudagalka (ilaa  $1 {{PLURAL:$1|maalin|maalmood}})',
+'userlogin-remembermypassword' => 'Ka dhig mid diyaar ah mar waliba',
 'yourdomainname' => 'Magacaga shabakada',
 'password-change-forbidden' => 'Ma badali kartid Eraysir ee wiki.',
 'login' => 'Gudaha gal',
@@ -398,12 +398,14 @@ Waad sii isticmaali kartaa {{SITENAME}} adoona lagu aqoon, ama <span class='plai
 'logout' => 'Ka bax',
 'userlogout' => 'Ka bax',
 'notloggedin' => 'Gudaha kuma jirtid',
+'userlogin-noaccount' => "Akoon ma heysatid? '''$1'''.",
 'nologin' => "Akoon ma heysatid? '''$1'''.",
 'nologinlink' => 'Akoon sameyso',
 'createaccount' => 'Sameey gudagale',
 'gotaccount' => "Waan heystaa gudagale? '''$1'''.",
 'gotaccountlink' => 'Gudaha gal',
 'userlogin-resetlink' => 'Ma ilaawday tafaasiisha gudagalahaada?',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Caawinaad habka gudagalka]]',
 'createaccountmail' => 'E-mail ahaan',
 'createaccountreason' => 'Sababta:',
 'badretype' => 'Ereyada sirta ah oo qortay ma islahan.',
@@ -739,7 +741,6 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'searchmenu-legend' => 'Raadi doorashooyinka',
 'searchmenu-exists' => "'''Wikigaan wuu ku jiraa bog la dhoho  \"[[:\$1]]\" .'''",
 'searchmenu-new' => "'''Ku sameey bogga  \"[[:\$1]]\" wikigaan!'''",
-'searchhelp-url' => 'Help:Caawinaad',
 'searchprofile-articles' => 'Maqaalada kooban',
 'searchprofile-project' => 'Caawin iyo Bogga mashruuca',
 'searchprofile-images' => 'Multimedia-ha',
index 2a78608..4bfa788 100644 (file)
@@ -456,7 +456,6 @@ $1",
 'disclaimers' => 'Shfajësimet',
 'disclaimerpage' => 'Project:Shfajësimet e përgjithshme',
 'edithelp' => 'Ndihmë për redaktim',
-'edithelppage' => 'Help:Redaktimi',
 'helppage' => 'Help:Përmbajtje',
 'mainpage' => 'Faqja kryesore',
 'mainpage-description' => 'Faqja kryesore',
@@ -736,10 +735,8 @@ Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
 
 # Special:PasswordReset
 'passwordreset' => 'Ndrysho fjalkalimin',
-'passwordreset-text' => 'Plotësoni këtë formular për të marrë një këshillë e-mail të dhënat e llogarisë suaj.',
 'passwordreset-legend' => 'Ndrysho fjalkalimin',
 'passwordreset-disabled' => 'Rivendosja e fjalëkalimit është deaktivizuar në këtë wiki.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Shkruani një nga pjesët e të dhënave më poshtë}}',
 'passwordreset-username' => 'Nofka:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Dëshiron të shikosh e-mail-in që rezulton?',
@@ -1208,7 +1205,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'searchmenu-legend' => 'Parazgjedhjet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki kjo faqe është emëruar \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Hapë faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchhelp-url' => 'Help:Ndihmë',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfletoi faqet me këtë parashtesë]]',
 'searchprofile-articles' => 'Përmbajtja e faqeve',
 'searchprofile-project' => 'Ndihmë dhe faqet e Projektit',
index 4943b29..05d209c 100644 (file)
@@ -11,6 +11,7 @@
  * @author CERminator
  * @author Charmed94
  * @author FriedrickMILBarbarossa
+ * @author Geitost
  * @author Helios13
  * @author Kaganer
  * @author Kale
@@ -651,7 +652,6 @@ $1',
 'disclaimers' => 'Одрицање одговорности',
 'disclaimerpage' => 'Project:Одрицање одговорности',
 'edithelp' => 'Помоћ при уређивању',
-'edithelppage' => 'Help:Уређивање',
 'helppage' => 'Help:Садржај',
 'mainpage' => 'Главна страна',
 'mainpage-description' => 'Главна страна',
@@ -833,17 +833,17 @@ $2',
 Не заборавите да промените своја [[Special:Preferences|подешавања]].',
 'yourname' => 'Корисничко име:',
 'userlogin-yourname' => 'Корисничко име',
-'userlogin-yourname-ph' => 'УнеÑ\81иÑ\82е Ð½Ð¾Ð²Ð¾ корисничко име',
+'userlogin-yourname-ph' => 'УнеÑ\81иÑ\82е Ð²Ð°Ñ\88е корисничко име',
 'yourpassword' => 'Лозинка:',
 'userlogin-yourpassword' => 'Лозинка',
-'userlogin-yourpassword-ph' => 'Унесите лозинку',
+'userlogin-yourpassword-ph' => 'УнеÑ\81иÑ\82е Ð²Ð°Ñ\88Ñ\83 Ð»Ð¾Ð·Ð¸Ð½ÐºÑ\83',
 'createacct-yourpassword-ph' => 'Унесите нову лозинку',
 'yourpasswordagain' => 'Потврда лозинке:',
 'createacct-yourpasswordagain' => 'Потврдите лозинку',
 'createacct-yourpasswordagain-ph' => 'Унесите лозинку још једном',
-'remembermypassword' => 'Ð\97апамÑ\82и Ð¼Ðµ Ð½Ð° Ð¾Ð²Ð¾Ð¼ Ð¿Ñ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|дан|дана|дана}})',
-'userlogin-remembermypassword' => 'Ð\97апамÑ\82и Ð¼Ðµ',
-'userlogin-signwithsecure' => 'Ð\9aоÑ\80иÑ\81Ñ\82иÑ\82е Ñ\81лигÑ\83Ñ\80нÑ\83 ÐºÐ¾Ð½ÐµÐºÑ\86иÑ\98Ñ\83 (SSL)',
+'remembermypassword' => 'Ð\97апамÑ\82и Ð¼Ð¾Ñ\98Ñ\83 Ð»Ð¾Ð·Ð¸Ð½ÐºÑ\83 Ð½Ð° Ð¾Ð²Ð¾Ð¼ Ð¿Ñ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|дан|дана}})',
+'userlogin-remembermypassword' => 'Ð\9eÑ\81Ñ\82ави Ð¼Ðµ Ð¿Ñ\80иÑ\98авÑ\99еног/Ñ\83',
+'userlogin-signwithsecure' => 'Ð\9aоÑ\80иÑ\81Ñ\82иÑ\82е Ñ\81игÑ\83Ñ\80нÑ\83 ÐºÐ¾Ð½ÐµÐºÑ\86иÑ\98Ñ\83',
 'securelogin-stick-https' => 'Останите повезани са HTTPS након пријаве',
 'yourdomainname' => 'Домен:',
 'password-change-forbidden' => 'Не можете да промените лозинку на овом викију.',
@@ -857,14 +857,17 @@ $2',
 'userlogout' => 'Одјави ме',
 'notloggedin' => 'Нисте пријављени',
 'userlogin-noaccount' => 'Немате налог?',
-'userlogin-joinproject' => 'Ð\9fÑ\80идÑ\80Ñ\83жиÑ\82е Ñ\81е {{SITENAME}}',
-'nologin' => 'Немате налог? Идите на страницу „$1“.',
+'userlogin-joinproject' => 'Ð\9eÑ\82воÑ\80иÑ\82е Ð³Ð°',
+'nologin' => 'Немате налог? Идите на страницу $1.',
 'nologinlink' => 'Отварање налога',
 'createaccount' => 'Отвори налог',
 'gotaccount' => 'Већ имате налог? Идите на страницу „$1“.',
 'gotaccountlink' => 'Пријава',
 'userlogin-resetlink' => 'Заборавили сте податке за пријаву?',
+'userlogin-resetpassword-link' => 'Ресетујте лозинку',
+'helplogin-url' => 'Help:Logging in',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Помоћ при пријављивању]]',
+'createacct-join' => 'Унесите своје податке испод',
 'createacct-emailrequired' => 'Адреса е-поште',
 'createacct-emailoptional' => 'Адреса е-поште (опцијоно)',
 'createacct-email-ph' => 'Унесите вашу адресу е-поште',
@@ -883,6 +886,7 @@ $2',
 'badretype' => 'Унете лозинке се не поклапају.',
 'userexists' => 'Корисничко име је заузето. Изаберите друго.',
 'loginerror' => 'Грешка при пријављивању',
+'createacct-error' => 'Дошло је до грешке при креирању налога',
 'createaccounterror' => 'Не могу да отворим налог: $1',
 'nocookiesnew' => 'Кориснички налог је отворен, али нисте пријављени.
 Овај вики користи колачиће за пријаву. Вама су колачићи онемогућени.
@@ -978,6 +982,7 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Обнављање лозинке',
+'passwordreset-text-one' => 'Попуните овај образац да бисте ресетовали лозинку.',
 'passwordreset-legend' => 'Поништи лозинку',
 'passwordreset-disabled' => 'Обнављање лозинке је онемогућено на овом викију.',
 'passwordreset-username' => 'Корисничко име:',
@@ -1210,7 +1215,7 @@ $2
 'sectioneditnotsupported-text' => 'Уређивање одељка није подржано на овој страници.',
 'permissionserrors' => 'Грешке у дозволама',
 'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|следећег|следећих}} разлога:',
-'permissionserrorstext-withaction' => 'Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð´а $2 из {{PLURAL:$1|следећег|следећих}} разлога:',
+'permissionserrorstext-withaction' => 'Ð\9dемаÑ\82е Ð´Ð¾Ð·Ð²Ð¾Ð»Ñ\83 Ð·а $2 из {{PLURAL:$1|следећег|следећих}} разлога:',
 'recreate-moveddeleted-warn' => "'''Упозорење: поново правите страницу која је претходно обрисана.'''
 
 Размотрите да ли је прикладно да наставите с уређивањем ове странице.
@@ -1224,6 +1229,7 @@ $2
 Изгледа да је обрисана.',
 'edit-conflict' => 'Сукоб измена.',
 'edit-no-change' => 'Ваша измена је занемарена јер није било никаквих измена у тексту.',
+'postedit-confirmation' => 'Ваша измена је сачувана.',
 'edit-already-exists' => 'Не могу да направим страницу.
 Изгледа да она већ постоји.',
 'defaultmessagetext' => 'Подразумевани текст поруке',
@@ -1457,7 +1463,7 @@ $1",
 
 # Search results
 'searchresults' => 'Резултати претраге',
-'searchresults-title' => 'РезÑ\83лÑ\82аÑ\82и Ð¿Ñ\80еÑ\82Ñ\80аге Ð·Ð° â\80\9e$1â\80\9d',
+'searchresults-title' => 'РезÑ\83лÑ\82аÑ\82и Ð¿Ñ\80еÑ\82Ñ\80аге Ð·Ð° â\80\9e$1â\80\9c',
 'searchresulttext' => 'За више информација о претраживању пројекта {{SITENAME}} погледајте [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => "Тражили сте '''[[:$1]]''' ([[Special:Prefixindex/$1|све странице које почињу са „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|све странице које воде до „$1“]])",
 'searchsubtitleinvalid' => "Тражили сте '''$1'''",
@@ -1475,7 +1481,6 @@ $1",
 'searchmenu-legend' => 'Поставке претраге',
 'searchmenu-exists' => "'''Постоји и чланак под називом „[[:$1]]“.'''",
 'searchmenu-new' => "'''Направите страницу „[[:$1]]“.'''",
-'searchhelp-url' => 'Help:Садржај',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прегледај странице с овим префиксом]]',
 'searchprofile-articles' => 'Чланци',
 'searchprofile-project' => 'Странице помоћи и пројеката',
@@ -4220,11 +4225,11 @@ $5
 'version-poweredby-credits' => "Овај вики покреће '''[//www.mediawiki.org/ Медијавики]''', ауторска права © 2001-$1 $2.",
 'version-poweredby-others' => 'остали',
 'version-credits-summary' => 'Желели бисмо да захвалимо следећим људима на њиховом доприносу [[Special:Version|Медијавикији]].',
-'version-license-info' => 'Медијавики је слободан софтвер; можете га расподељивати и мењати под условима ГНУ-ове опште јавне лиценце (ОЈЛ) коју је објавила Задужбина за слободан софтвер, било да је у питању друго или новије издање лиценце.
+'version-license-info' => 'Медијавики је слободан софтвер можете га редистрибуирати и/или модификовати под условима ГНУ-ове опште јавне лиценце верзија 2 или сваке следеће коју објави Задужбина за слободан софтвер.
 
-Медијавики се нуди у нади да ће бити од користи, али БЕЗ ИКАКВЕ ГАРАНЦИЈЕ; чак и без подразумеване гаранције о ПРОДАЈНОЈ ВРЕДНОСТИ или ПОГОДНОСТИ ЗА ОДРЕЂЕНЕ НАМЕНЕ. Погледајте ГНУ-ову општу јавну лиценцу за више информација.
+Медијавики се редистрибуирати у нади да ће бити од користи, али БЕЗ ИКАКВЕ ГАРАНЦИЈЕ чак и без ПОДРАЗУМЕВАНЕ ГАРАНЦИЈЕ ФУНКЦИОНАЛНОСТИ или ПРИКЛАДНОСТИ ЗА ОДРЕЂЕНЕУ НАМЕНУ. Погледајте ГНУ-ову општу јавну лиценцу за више информација.
 
-Требало би да сте примили [{{SERVER}}{{SCRIPTPATH}}/COPYING примерак ГНУ-ове опште јавне лиценце] заједно с овим програмом. Ако нисте, пишите на Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте овде].',
+Требало би да сте примили [{{SERVER}}{{SCRIPTPATH}}/COPYING примерак ГНУ-ове опште јавне лиценце] заједно са овим програмом. Ако нисте, пишите на Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте овде].',
 'version-software' => 'Инсталирани софтвер',
 'version-software-product' => 'Производ',
 'version-software-version' => 'Верзија',
@@ -4236,6 +4241,7 @@ $5
 'redirect-submit' => 'Иди',
 'redirect-value' => 'Вредност:',
 'redirect-file' => 'Назив датотеке',
+'redirect-not-exists' => 'Вредност није пронађена',
 
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Претрага дупликата',
index fdbf933..3cf38f7 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author FriedrickMILBarbarossa
+ * @author Geitost
  * @author Kaganer
  * @author Liangent
  * @author Meno25
@@ -411,6 +412,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'dec',
+'january-date' => '$1. januar',
+'february-date' => '$1. februar',
+'march-date' => '$1. mart',
+'april-date' => '$1. april',
+'may-date' => '$1. maj',
+'june-date' => '$1. jun',
+'july-date' => '$1. jul',
+'august-date' => '$1. august',
+'september-date' => '$1. septembar',
+'october-date' => '$1. oktobar',
+'november-date' => '$1. novembar',
+'december-date' => '$1. decembar',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorije}}',
@@ -438,7 +451,8 @@ $messages = array(
 'newwindow' => '(otvara u novom prozoru)',
 'cancel' => 'Otkaži',
 'moredotdotdot' => 'Više…',
-'mypage' => 'Moja stranica',
+'morenotlisted' => 'Više nije prikazano...',
+'mypage' => 'Stranica',
 'mytalk' => 'Razgovor',
 'anontalk' => 'Razgovor za ovu IP adresu',
 'navigation' => 'Navigacija',
@@ -545,7 +559,6 @@ $1',
 'disclaimers' => 'Odricanje odgovornosti',
 'disclaimerpage' => 'Project:Odricanje odgovornosti',
 'edithelp' => 'Pomoć pri uređivanju',
-'edithelppage' => 'Help:Uređivanje',
 'helppage' => 'Help:Sadržaj',
 'mainpage' => 'Glavna strana',
 'mainpage-description' => 'Glavna strana',
@@ -722,10 +735,20 @@ Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.'
 
 Možete da nastavite s korišćenjem ovog vikija kao gost, ili se <span class='plainlinks'>[$1 ponovo prijavite]</span> kao drugi korisnik.
 Imajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još prijavljeni, sve dok ne očistite privremenu memoriju svog pregledača.",
+'welcomeuser' => 'Dobrodošli, $1!',
 'yourname' => 'Korisničko ime:',
+'userlogin-yourname' => 'Korisničko ime',
+'userlogin-yourname-ph' => 'Unesite vaše korisničko ime',
 'yourpassword' => 'Lozinka:',
+'userlogin-yourpassword' => 'Lozinka',
+'userlogin-yourpassword-ph' => 'Unesite vašu lozinku',
+'createacct-yourpassword-ph' => 'Unesite novu lozinku',
 'yourpasswordagain' => 'Potvrda lozinke:',
+'createacct-yourpasswordagain' => 'Potvrdite lozinku',
+'createacct-yourpasswordagain-ph' => 'Unesite lozinku još jednom',
 'remembermypassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana|dana}})',
+'userlogin-remembermypassword' => 'Ostavi me prijavljenog/u',
+'userlogin-signwithsecure' => 'Koristite sigurnu konekciju',
 'securelogin-stick-https' => 'Ostanite povezani sa HTTPS nakon prijave',
 'yourdomainname' => 'Domen:',
 'password-change-forbidden' => 'Ne možete da promenite lozinku na ovom vikiju.',
@@ -738,18 +761,35 @@ Imajte na umu da neke stranice mogu nastaviti da se prikazuju kao da ste još pr
 'logout' => 'Odjava',
 'userlogout' => 'Odjavi me',
 'notloggedin' => 'Niste prijavljeni',
-'nologin' => 'Nemate nalog? Idite na stranicu „$1“.',
+'userlogin-noaccount' => 'Nemate nalog?',
+'userlogin-joinproject' => 'Otvorite ga',
+'nologin' => 'Nemate nalog? Idite na stranicu $1.',
 'nologinlink' => 'Otvaranje naloga',
 'createaccount' => 'Otvori nalog',
 'gotaccount' => 'Već imate nalog? Idite na stranicu „$1“.',
 'gotaccountlink' => 'Prijava',
 'userlogin-resetlink' => 'Zaboravili ste podatke za prijavu?',
+'userlogin-resetpassword-link' => 'Resetuj lozinku',
+'helplogin-url' => 'Help:Logging in',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoć pri prijavljivanju]]',
-'createaccountmail' => 'E-poštom',
+'createacct-join' => 'Unesite svoje podatke ispod.',
+'createacct-emailrequired' => 'Adresa e-pošte',
+'createacct-emailoptional' => 'Adresa e-pošte (opcijono)',
+'createacct-email-ph' => 'Unesite vašu adresu e-pоšte',
+'createaccountmail' => 'Koristite privremenu, slučajno stvorenu lozinku i pošaljite na dole navedenu adresu elektronske pošte',
+'createacct-realname' => 'Pravo ime (opcijono)',
 'createaccountreason' => 'Razlog:',
+'createacct-reason' => 'Razlog',
+'createacct-reason-ph' => 'Zašto pravite još jedan nalog?',
+'createacct-captcha' => 'Sigurnosna provera',
+'createacct-imgcaptcha-ph' => 'Unesite tekst koji vidite iznad',
+'createacct-submit' => 'Otvorite nalog',
+'createacct-benefit-heading' => '{{SITENAME}} je napravljen od strane ljudi kao što ste vi.',
+'createacct-benefit-body3' => 'skorašnjih {{PLURAL:$1|doprinosa}}',
 'badretype' => 'Unete lozinke se ne poklapaju.',
 'userexists' => 'Korisničko ime je zauzeto. Izaberite drugo.',
 'loginerror' => 'Greška pri prijavljivanju',
+'createacct-error' => 'Došlo je do greške pri kreiranju naloga',
 'createaccounterror' => 'Ne mogu da otvorim nalog: $1',
 'nocookiesnew' => 'Korisnički nalog je otvoren, ali niste prijavljeni.
 Ovaj viki koristi kolačiće za prijavu. Vama su kolačići onemogućeni.
@@ -843,6 +883,7 @@ Možda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.',
 
 # Special:PasswordReset
 'passwordreset' => 'Obnavljanje lozinke',
+'passwordreset-text-one' => 'Popunite ovaj obrazac da biste resetovali lozinku.',
 'passwordreset-legend' => 'Poništi lozinku',
 'passwordreset-disabled' => 'Obnavljanje lozinke je onemogućeno na ovom vikiju.',
 'passwordreset-username' => 'Korisničko ime:',
@@ -1074,7 +1115,7 @@ Možete se vratiti i urediti postojeću stranicu, ili se [[Special:UserLogin|pri
 'sectioneditnotsupported-text' => 'Uređivanje odeljka nije podržano na ovoj stranici.',
 'permissionserrors' => 'Greške u dozvolama',
 'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
-'permissionserrorstext-withaction' => 'Nemate dozvolu da $2 iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
+'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
 'recreate-moveddeleted-warn' => "'''Upozorenje: ponovo pravite stranicu koja je prethodno obrisana.'''
 
 Razmotrite da li je prikladno da nastavite s uređivanjem ove stranice.
@@ -1088,6 +1129,7 @@ Nije dato nikakvo obrazloženje.',
 Izgleda da je obrisana.',
 'edit-conflict' => 'Sukob izmena.',
 'edit-no-change' => 'Vaša izmena je zanemarena jer nije bilo nikakvih izmena u tekstu.',
+'postedit-confirmation' => 'Vaša izmena ja sačuvana.',
 'edit-already-exists' => 'Ne mogu da napravim stranicu.
 Izgleda da ona već postoji.',
 'defaultmessagetext' => 'Podrazumevani tekst poruke',
@@ -1321,7 +1363,7 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 
 # Search results
 'searchresults' => 'Rezultati pretrage',
-'searchresults-title' => 'Rezultati pretrage za â\80\9e$1â\80\9d',
+'searchresults-title' => 'Rezultati pretrage za â\80\9e$1â\80\9c',
 'searchresulttext' => 'Za više informacija o pretraživanju projekta {{SITENAME}} pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'searchsubtitle' => "Tražili ste '''[[:$1]]''' ([[Special:Prefixindex/$1|sve stranice koje počinju sa „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do „$1“]])",
 'searchsubtitleinvalid' => "Tražili ste '''$1'''",
@@ -1339,7 +1381,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'searchmenu-legend' => 'Postavke pretrage',
 'searchmenu-exists' => "'''Postoji i članak pod nazivom „[[:$1]]“.'''",
 'searchmenu-new' => "'''Napravite stranicu „[[:$1]]“.'''",
-'searchhelp-url' => 'Help:Sadržaj',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Članci',
 'searchprofile-project' => 'Stranice pomoći i projekata',
@@ -1361,7 +1402,7 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
 'search-relatedarticle' => 'Povezano',
-'mwsuggest-disable' => 'Onemogući predloge AJAX',
+'mwsuggest-disable' => 'Onemogući predloge pri pretraživanju',
 'searcheverything-enable' => 'svi imenski prostori',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
@@ -1877,6 +1918,7 @@ Ako se problem ne reši, kontaktirajte [[Special:ListUsers/sysop|administratora]
 'backend-fail-notsame' => 'Već postoji neistovetna datoteka – $1.',
 'backend-fail-invalidpath' => '$1 nije ispravna putanja za skladištenje.',
 'backend-fail-delete' => 'Ne mogu da obrišem datoteku $1.',
+'backend-fail-describe' => 'Ne mogu da promenim metapodatke za datoteku „$1“.',
 'backend-fail-alreadyexists' => 'Datoteka $1 već postoji.',
 'backend-fail-store' => 'Ne mogu da smestim datoteku $1 u $2.',
 'backend-fail-copy' => 'Ne mogu da umnožim datoteku $1 u $2.',
@@ -2115,6 +2157,9 @@ Pre brisanja proverite da li druge stranice vode do tih šablona.',
 Umesto toga, valjalo bi da vode do odgovarajuće teme.
 Stranica se smatra višeznačnom odrednicom ako koristi šablon koji vodi od [[MediaWiki:Disambiguationspage]].",
 
+'pageswithprop-prop' => 'Ime osobine:',
+'pageswithprop-submit' => 'Idi',
+
 'doubleredirects' => 'Dvostruka preusmerenja',
 'doubleredirectstext' => 'Ova stranica prikazuje stranice koje preusmeravaju na druga preusmerenja.
 Svaki red sadrži veze prema prvom i drugom preusmerenju, kao i odredišnu stranicu drugog preusmerenja koja je obično „pravi“ članak na koga prvo preusmerenje treba da upućuje.
@@ -2371,8 +2416,8 @@ Ukoliko budete želeli da uklonite stranicu sa spiska nadgledanja, kliknite opet
 'notvisiblerev' => 'Izmena je obrisana',
 'watchnochange' => 'Ništa što nadgledate nije promenjeno u prikazanom vremenu.',
 'watchlist-details' => '{{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na vašem spisku nadgledanja, ne računajući stranice za razgovor.',
-'wlheader-enotif' => 'E-obaveštenje je omogućeno.',
-'wlheader-showupdated' => "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''",
+'wlheader-enotif' => 'Obaveštenje e-porukom je omogućeno.',
+'wlheader-showupdated' => "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
 'watchmethod-recent' => 'proverava se da li ima nadgledanih stranica u skorašnjim izmenama',
 'watchmethod-list' => 'proverava se da li ima skorašnjih izmena u nadgledanim stranicama',
 'watchlistcontains' => 'Vaš spisak nadgledanja sadrži $1 {{PLURAL:$1|stranicu|stranice|stranica}}.',
@@ -2495,6 +2540,7 @@ Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za više deta
 'prot_1movedto2' => '{{GENDER:|je premestio|je premestila|je premestio}} [[$1]] u [[$2]]',
 'protect-badnamespace-title' => 'Nezaštitljiv imenski prostor',
 'protect-badnamespace-text' => 'Stranice u ovom imenskom prostoru se ne mogu zaštititi.',
+'protect-norestrictiontypes-title' => 'Nezaštitljiva strana',
 'protect-legend' => 'Potvrdite zaštitu',
 'protectcomment' => 'Razlog:',
 'protectexpiry' => 'Ističe:',
@@ -3189,6 +3235,10 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-protect-cascading' => 'Prenosiva zaštita stranica važi odavde',
 'pageinfo-protect-cascading-yes' => 'Da',
 'pageinfo-protect-cascading-from' => 'Stranice sa prenosivom zaštitom od',
+'pageinfo-category-info' => 'Informacije o kategoriji',
+'pageinfo-category-pages' => 'Broj stranica',
+'pageinfo-category-subcats' => 'Broj potkategorija',
+'pageinfo-category-files' => 'Broj datoteka',
 
 # Skin names
 'skinname-cologneblue' => 'Kelnsko plava',
@@ -3242,6 +3292,7 @@ Ako ga pokrenete, vaš računar može biti ugrožen.",
 'file-nohires' => 'Veća rezolucija nije dostupna.',
 'svg-long-desc' => 'SVG datoteka, nominalno $1 × $2 piksela, veličina: $3',
 'svg-long-desc-animated' => 'Animirana SVG datoteka, nominalno: $1 × $2 piksela, veličina: $3',
+'svg-long-error' => 'Neispravna SVG datoteka: $1',
 'show-big-image' => 'Puna veličina',
 'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Druge rezolucije}}: $1.',
@@ -3277,6 +3328,7 @@ Ako ga pokrenete, vaš računar može biti ugrožen.",
 'hours' => '{{PLURAL:$1|$1 sat|$1 sata|$1 sati}}',
 'days' => '{{PLURAL:$1|$1 dan|$1 dana|$1 dana}}',
 'ago' => 'pre $1',
+'just-now' => 'upravo sad',
 
 # Bad image list
 'bad_image_list' => 'Format je sledeći:
@@ -4058,9 +4110,9 @@ Možete da [[Special:EditWatchlist|koristite i običan uređivač]].',
 'version-poweredby-credits' => "Ovaj viki pokreće '''[//www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
 'version-poweredby-others' => 'ostali',
 'version-credits-summary' => 'Želeli bismo da zahvalimo sledećim ljudima na njihovom doprinosu [[Special:Version|Medijavikiji]].',
-'version-license-info' => 'Medijaviki je slobodan softver; možete ga raspodeljivati i menjati pod uslovima GNU-ove opšte javne licence (OJL) koju je objavila Zadužbina za slobodan softver, bilo da je u pitanju drugo ili novije izdanje licence.
+'version-license-info' => 'Medijaviki je slobodan softver možete ga redistribuirati i/ili modifikovati pod uslovima GNU-ove opšte javne licence verzija 2 ili svake sledeće koju objavi Zadužbina za slobodan softver.
 
-Medijaviki se nudi u nadi da će biti od koristi, ali BEZ IKAKVE GARANCIJE; čak i bez podrazumevane garancije o PRODAJNOJ VREDNOSTI ili POGODNOSTI ZA ODREĐENE NAMENE. Pogledajte GNU-ovu opštu javnu licencu za više informacija.
+Medijaviki se redistribuirati u nadi da će biti od koristi, ali BEZ IKAKVE GARANCIJE čak i bez PODRAZUMEVANE GARANCIJE FUNKCIONALNOSTI ili PRIKLADNOSTI ZA ODREĐENEU NAMENU. Pogledajte GNU-ovu opštu javnu licencu za više informacija.
 
 Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove opšte javne licence] zajedno s ovim programom. Ako niste, pišite na Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA ili [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pročitajte ovde].',
 'version-software' => 'Instalirani softver',
@@ -4070,6 +4122,13 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'version-entrypoints-header-entrypoint' => 'Ulazna tačka',
 'version-entrypoints-header-url' => 'Adresa',
 
+# Special:Redirect
+'redirect-legend' => 'Preusmeri na datoteku ili stranicu',
+'redirect-submit' => 'Idi',
+'redirect-value' => 'Vrednost:',
+'redirect-file' => 'Naziv datoteke',
+'redirect-not-exists' => 'Vrednost nije pronađen',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Pretraga duplikata',
 'fileduplicatesearch-summary' => 'Pretraga dupliranih datoteka prema vrednostima disperzije.',
@@ -4096,7 +4155,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'specialpages-group-highuse' => 'Najčešće korišćene stranice',
 'specialpages-group-pages' => 'Spiskovi stranica',
 'specialpages-group-pagetools' => 'Alatke',
-'specialpages-group-wiki' => 'Podaci i alati enciklopedije',
+'specialpages-group-wiki' => 'Podaci i alati',
 'specialpages-group-redirects' => 'Preusmeravanje posebnih stranica',
 'specialpages-group-spam' => 'Alatke protiv nepoželjnih poruka',
 
@@ -4159,6 +4218,9 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'htmlform-submit' => 'Pošalji',
 'htmlform-reset' => 'Vrati izmene',
 'htmlform-selectorother-other' => 'Drugo',
+'htmlform-no' => 'Ne',
+'htmlform-yes' => 'Da',
+'htmlform-chosen-placeholder' => 'Izaberite opciju',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 s podrškom pretrage celog teksta',
index 7aca717..e18b92a 100644 (file)
@@ -346,7 +346,6 @@ $messages = array(
 'disclaimers' => 'Disclaimers',
 'disclaimerpage' => 'Project:Disclaimer gi ala',
 'edithelp' => 'Yepi nanga kenki',
-'edithelppage' => 'Help:Kenki',
 'helppage' => 'Help:San de',
 'mainpage' => 'Fesipapira',
 'mainpage-description' => 'Fesipapira',
@@ -636,7 +635,6 @@ A kan ben trowe efu dribi.
 'prevn' => '{{PLURAL:$1|$1}} di psa',
 'nextn' => '{{PLURAL:$1|$1}} trawan',
 'viewprevnext' => 'Luku ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:San de',
 'powersearch' => 'Suku moro dipi',
 
 # Preferences page
index 43d5057..75a3ab0 100644 (file)
@@ -282,7 +282,6 @@ $1',
 'disclaimers' => 'Begriepskläärenge',
 'disclaimerpage' => 'Project:Siede tou Begriepskläärenge',
 'edithelp' => 'Beoarbaidengshälpe',
-'edithelppage' => 'Help:Beoarbaidengshälpe',
 'helppage' => 'Help:Hälpe',
 'mainpage' => 'Haudsiede',
 'mainpage-description' => 'Haudsiede',
@@ -548,10 +547,8 @@ Muugelkerwiese hääst du dien Paaswoud al mäd Ärfoulch annerd of n näi tiede
 
 # Special:PasswordReset
 'passwordreset' => 'Paaswoud touräächsätte',
-'passwordreset-text' => 'Dit Formular uutfälle, uum per E-Mail ne Ärinnerenge tou do Anmäldeinformatione tou kriegen.',
 'passwordreset-legend' => 'Paaswoud touräächsätte',
 'passwordreset-disabled' => 'Dät Touräächsätten fon Paaswoude wuud in dissen Wiki deaktivierd.',
-'passwordreset-pretext' => '{{PLURAL:$1||Reek aan fon do foulgjende Doaten ien}}',
 'passwordreset-username' => 'Benutsernoome:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Ju E-Mail-Ättergjucht bekiekje?',
@@ -977,7 +974,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'searchmenu-legend' => 'Säikoptione',
 'searchmenu-exists' => "'''Dät rakt n Siede mäd Noome \"[[:\$1]]\" ap dissen Wiki'''",
 'searchmenu-new' => "'''Moak ju Siede „[[:$1]]“ in dissen Wiki.'''",
-'searchhelp-url' => 'Help:Hälpe',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies aal Sieden, do mäd dän Säikbegriep ounfange]]',
 'searchprofile-articles' => 'Inhooldssieden',
 'searchprofile-project' => 'Hälpe un Projektsieden',
index 23fa02b..555e2ea 100644 (file)
@@ -369,7 +369,6 @@ $1',
 'disclaimers' => 'Bantahan',
 'disclaimerpage' => 'Project:Bantahan_umum',
 'edithelp' => 'Pitulung ngédit',
-'edithelppage' => 'Help:Ngédit',
 'helppage' => 'Help:Pitulung',
 'mainpage' => 'Tepas',
 'mainpage-description' => 'Tepas',
@@ -624,10 +623,8 @@ Bisa jadi anjeun geus ngaganti sandina atawa ménta sandi saheulaanan anu anyar.
 
 # Special:PasswordReset
 'passwordreset' => 'Setél ulang sandi',
-'passwordreset-text' => 'Lengkepan ieu formulir pikeun nampa surélék pangéling ngeunaan wincikan akun anjeun.',
 'passwordreset-legend' => 'Setél ulang sandi',
 'passwordreset-disabled' => 'Dina ieu wiki, sandi teu bisa disetél ulang.',
-'passwordreset-pretext' => '{{PLURAL:$1||Asupkeun salah sahiji data di handap ieu}}',
 'passwordreset-username' => 'Sandiasma:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Témbongkeun surat-é hasilna?',
@@ -1045,7 +1042,6 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'searchmenu-legend' => 'Pilihan nyungsi',
 'searchmenu-exists' => "'''Dina wiki ieu geus aya kaca nu ngaranna \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Jieun kaca \"[[:\$1]]\" dina ieu wiki!'''",
-'searchhelp-url' => 'Help:Pitulung',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sungsi kaca-kaca nu dimimitian ku ieu awalan]]',
 'searchprofile-articles' => 'Kaca eusi',
 'searchprofile-project' => 'Kaca Pitulung jeung Proyék',
index 34c47dc..1784060 100644 (file)
  * @author Fader
  * @author Fluff
  * @author GameOn
+ * @author Geitost
  * @author Greggegorius
  * @author Grillo
  * @author Habj
  * @author Habjchen
  * @author Hannibal
  * @author Jon Harald Søby
+ * @author Jopparn
  * @author Kaganer
  * @author LPfi
  * @author Lejonel
@@ -522,6 +524,7 @@ $messages = array(
 'create-this-page' => 'Skapa denna sida',
 'delete' => 'Radera',
 'deletethispage' => 'Radera denna sida',
+'undeletethispage' => 'Återställ denna sida',
 'undelete_short' => 'Återställ {{PLURAL:$1|en version|$1 versioner}}',
 'viewdeleted_short' => 'Visa {{PLURAL:$1|en raderad redigering|$1 raderade redigeringar}}',
 'protect' => 'Skrivskydda',
@@ -575,7 +578,6 @@ $1',
 'disclaimers' => 'Förbehåll',
 'disclaimerpage' => 'Project:Allmänt förbehåll',
 'edithelp' => 'Redigeringshjälp',
-'edithelppage' => 'Help:Redigering',
 'helppage' => 'Help:Innehåll',
 'mainpage' => 'Huvudsida',
 'mainpage-description' => 'Huvudsida',
@@ -721,6 +723,8 @@ $2',
 'namespaceprotected' => "Du har inte behörighet att redigera sidor i namnrymden '''$1'''.",
 'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sidan eftersom den innehåller en annan användares personliga inställningar.',
 'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sidan eftersom den innehåller en annan användares personliga inställningar.',
+'mycustomcssprotected' => 'Du har inte rättigheten att redigera denna CSS-sida.',
+'mycustomjsprotected' => 'Du har inte rättigheten att redigera denna JavaScript-sida.',
 'ns-specialprotected' => 'Specialsidor kan inte redigeras.',
 'titleprotected' => 'Denna sidtitel har skyddats från att skapas av [[User:$1|$1]].
 Den uppgivna anledningen är "\'\'$2\'\'".',
@@ -772,7 +776,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'notloggedin' => 'Inte inloggad',
 'userlogin-noaccount' => 'Har du inget konto?',
 'userlogin-joinproject' => 'Gå med i {{SITENAME}}',
-'nologin' => "Har du inget användarkonto? '''$1'''.",
+'nologin' => 'Har du inget användarkonto? $1.',
 'nologinlink' => 'Skapa ett användarkonto',
 'createaccount' => 'Skapa ett konto',
 'gotaccount' => "Har du redan ett användarkonto? '''$1'''.",
@@ -851,7 +855,7 @@ Skriv in en adress med korrekt format eller töm fältet.',
 'cannotchangeemail' => 'E-post-adresser som är bundna till användarkonton kan inte ändras på denna wiki.',
 'emaildisabled' => 'Denna webbplats kan inte skicka e-post.',
 'accountcreated' => 'Användarkontot har skapats',
-'accountcreatedtext' => 'Användarkontot $1 har skapats.',
+'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) har skapats.',
 'createaccount-title' => 'Konto skapat på {{SITENAME}}',
 'createaccount-text' => 'Någon har skapat ett konto åt din e-postadress på {{SITENAME}} ($4) med namnet "$2" och lösenordet "$3". Du bör nu logga in och ändra ditt lösenord.
 
@@ -889,6 +893,8 @@ Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfä
 
 # Special:PasswordReset
 'passwordreset' => 'Lösenordsåterställning',
+'passwordreset-text-one' => 'Fyll i detta formulär för att återställa ditt lösenord.',
+'passwordreset-text-many' => '{{PLURAL:$1|Fyll i en av datafälten för att återställa ditt lösenord.}}',
 'passwordreset-legend' => 'Återställ lösenord',
 'passwordreset-disabled' => 'Lösenordsåterställning har inaktiverats på denna wiki.',
 'passwordreset-emaildisabled' => 'E-postfunktioner har inaktiverats på denna wiki.',
@@ -1134,7 +1140,7 @@ Den finns redan.',
 'invalid-content-data' => 'Ogiltig innehållsdata',
 'content-not-allowed-here' => 'innehåll av "$1" är inte tillåtet på sidan [[$2]]',
 'editwarning-warning' => 'Om du lämnar den här sidan kommer du att förlora alla ändringar du har gjort.
-Om du är inloggad kan du slå av den här varningen under "{{int:prefs-editing}}" i dina inställningar.',
+Om du är inloggad kan du slå av den här varningen under "Redigering" i dina inställningar.',
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1377,7 +1383,6 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'searchmenu-legend' => 'Sökalternativ',
 'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
 'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
-'searchhelp-url' => 'Help:Innehåll',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bläddra igenom sidor med detta prefix]]',
 'searchprofile-articles' => 'Innehållssidor',
 'searchprofile-project' => 'Hjälp- och projektsidor',
@@ -1565,6 +1570,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'userrights-changeable-col' => 'Grupper du kan ändra',
 'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
 'userrights-conflict' => 'Användarrättighetskonflikt! Var god tillämpa dina ändringar igen.',
+'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Som sådan, kan du inte längre komma åt denna sida.',
 
 # Groups
 'group' => 'Grupp:',
@@ -1635,6 +1641,8 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
 'right-editusercss' => 'Redigera andra användares CSS-filer',
 'right-edituserjs' => 'Redigera andra användares JS-filer',
+'right-editmyusercss' => 'Redigera din egen användares CSS-filer',
+'right-editmyuserjs' => 'Redigera din egen användares JavaScript-filer',
 'right-rollback' => 'Rulla tillbaka den användare som senast redigerat en sida',
 'right-markbotedits' => 'Markera tillbakarullningar som robotändringar',
 'right-noratelimit' => 'Påverkas inte av hastighetsgränser',
@@ -1881,7 +1889,7 @@ $1',
 'upload-proto-error' => 'Felaktigt protokoll',
 'upload-proto-error-text' => 'Fjärruppladdning kräver URL:ar som börjar med <code>http://</code> eller <code>ftp://</code>.',
 'upload-file-error' => 'Internt fel',
-'upload-file-error-text' => 'Ett internt fel inträffade när en temporär fil skulle skapas på servern. Kontakta en [[Special:ListUsers/sysop|systemadministratör]].',
+'upload-file-error-text' => 'Ett internt fel inträffade när en temporär fil skulle skapas på servern. Kontakta en [[Special:ListUsers/sysop|administratör]].',
 'upload-misc-error' => 'Okänt uppladdningsfel',
 'upload-misc-error-text' => 'Ett okänt fel inträffade under uppladdningen.
 Kontrollera att URL:en giltig och försök igen.
index 367e3cd..0b890ed 100644 (file)
@@ -378,7 +378,6 @@ $1',
 'disclaimers' => 'Kanusho',
 'disclaimerpage' => 'Project:Kanusho kwa jumla',
 'edithelp' => 'Usaidizi kwa uhariri',
-'edithelppage' => 'Help:Usaidizi kwa uhariri',
 'helppage' => 'Help:Yaliyomo',
 'mainpage' => 'Mwanzo',
 'mainpage-description' => 'Mwanzo',
@@ -432,7 +431,7 @@ Tazama [[Special:Version|ukurasa wa toleo]].',
 'sort-ascending' => 'Pangia kwa kupanda',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Makala',
+'nstab-main' => 'Ukurasa',
 'nstab-user' => 'Ukurasa wa mtumiaji',
 'nstab-media' => 'Ukurasa wa faili',
 'nstab-special' => 'Ukurasa maalum',
@@ -1095,7 +1094,6 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'searchmenu-legend' => 'Hitiari za kutafuta',
 'searchmenu-exists' => "'''Ukurasa wa \"[[:\$1]]\" upo kwenye wiki hii'''",
 'searchmenu-new' => "'''Anzisha ukurasa wa \"[[:\$1]]\" katika wiki hii!'''",
-'searchhelp-url' => 'Help:Yaliyomo',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tafuta kurasa kwenye eneo hili la wiki]]',
 'searchprofile-articles' => 'Kurasa kwa kusudi ya wiki',
 'searchprofile-project' => 'Kurasa za msaada na za mradi',
@@ -2214,7 +2212,7 @@ $1',
 'mycontris' => 'Michango',
 'contribsub2' => 'Kwa $1 ($2)',
 'nocontribs' => 'Mabadiliko yanayolingana na vigezo vilivyoulizwa hayakupatikana.',
-'uctop' => '(juu)',
+'uctop' => '(ya kisasa)',
 'month' => 'Kutoka mwezi (na zamani zaidi):',
 'year' => 'Kutoka mwakani (na zamani zaidi):',
 
index 4a38133..ea15812 100644 (file)
@@ -300,7 +300,6 @@ $1',
 'disclaimers' => 'Prawne informacyje',
 'disclaimerpage' => 'Project:Prawne informacyje',
 'edithelp' => 'Půmoc we půmjyńańy',
-'edithelppage' => 'Help:Jak půmjyńać zajta',
 'helppage' => 'Help:Treść',
 'mainpage' => 'Przodńo zajta',
 'mainpage-description' => 'Przodńo zajta',
@@ -554,10 +553,8 @@ Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tym
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
-'passwordreset-text' => 'Wypełnij formularz, aby otrzymać e‐mail z przypomnieniem danych Twojego konta.',
 'passwordreset-legend' => 'Wyczyść hasło',
 'passwordreset-disabled' => 'No tyj wiki zamkńynto resytowańy hasył.',
-'passwordreset-pretext' => '{{PLURAL:$1||Wćep jydną z danych}}',
 'passwordreset-username' => 'Mjano używacza:',
 'passwordreset-domain' => 'Domyna:',
 'passwordreset-capture' => 'Czy pokazywać treść wiadomości e‐mail?',
@@ -939,7 +936,6 @@ $1',
 'searchmenu-legend' => 'Uopcyje sznupańo',
 'searchmenu-exists' => "'''Ńy ma zajty uo mjańy \"[[:\$1]]\" na tyj wiki'''",
 'searchmenu-new' => "'''Stwůrz zajta „[[:$1|$1]]” na tyj wiki!'''",
-'searchhelp-url' => 'Help:Pomoc',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglůndej zajty kere s anfanga majům tyn przedrostek]]',
 'searchprofile-articles' => 'Zajty',
 'searchprofile-project' => 'Zajty půmocy a projektu',
index 6003df4..e54542f 100644 (file)
@@ -32,6 +32,7 @@
  * @author Urhixidur
  * @author לערי ריינהארט
  * @author கோபி
+ * @author கௌசிக் பிரபு
  * @author செல்வா
  * @author மதனாஹரன்
  * @author බිඟුවා
@@ -154,15 +155,15 @@ $messages = array(
 'thu' => 'வியா',
 'fri' => 'வெள்',
 'sat' => 'சனி',
-'january' => 'à®\9cனவரி',
-'february' => 'பà¯\86பà¯\8dரவரி',
-'march' => 'மார்ச்',
-'april' => 'ஏப்ரல்',
+'january' => 'à®\9aனவரி',
+'february' => 'பிபà¯\8dபிரவரி',
+'march' => ' மார்ச்சு',
+'april' => 'à®\8fபà¯\8dபிரலà¯\8d',
 'may_long' => 'மே',
-'june' => 'à®\9cூன்',
-'july' => 'à®\9cூலை',
-'august' => 'à®\86à®\95ஸà¯\8dà®\9fà¯\8d',
-'september' => 'à®\9aà¯\86பà¯\8dà®\9fà¯\86ம்பர்',
+'june' => 'à®\9aூன்',
+'july' => 'à®\9aூலை',
+'august' => 'à®\86à®\95தà¯\8dதà¯\81',
+'september' => 'à®\9aà¯\86பà¯\81தம்பர்',
 'october' => 'அக்டோபர்',
 'november' => 'நவம்பர்',
 'december' => 'டிசம்பர்',
@@ -239,7 +240,7 @@ $messages = array(
 'vector-action-protect' => 'காக்கவும்',
 'vector-action-undelete' => 'நீக்கத்தை நிறுத்து',
 'vector-action-unprotect' => 'காப்பை மாற்று',
-'vector-simplesearch-preference' => 'à®\9aாதாரண à®¤à¯\87à®\9fà¯\81தலà¯\8d à®ªà®\9fà¯\8dà®\9fà¯\88யதà¯\8dதà¯\88 à®\9aà¯\86யலà¯\8dபà®\9fà¯\81தà¯\8dதவà¯\81à®®à¯\8d (Vector தோல் மட்டும்)',
+'vector-simplesearch-preference' => 'à®\8eளிதாà®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9f à®¤à¯\87à®\9fà¯\81தலà¯\8d à®ªà®\9fà¯\8dà®\9fà¯\88யà¯\88 à®\9aà¯\86யறà¯\8dபà®\9fà¯\81தà¯\8dதவà¯\81à®®à¯\8d (வà¯\86à®\95à¯\8dà®\9fà®°à¯\8d தோல் மட்டும்)',
 'vector-view-create' => 'உருவாக்கவும்',
 'vector-view-edit' => 'தொகு',
 'vector-view-history' => 'வரலாற்றைக் காட்டவும்',
@@ -326,9 +327,8 @@ $1',
 'disclaimers' => 'பொறுப்புத் துறப்புகள்',
 'disclaimerpage' => 'Project:பொதுவான பொறுப்புத் துறப்புகள்',
 'edithelp' => 'தொகுத்தலுக்கான உதவி',
-'edithelppage' => 'Help:ஒருவர் பக்கமொன்றைத் தொகுப்பது எப்படி?',
 'helppage' => 'Help:உதவி',
-'mainpage' => 'à®®à¯\81தறà¯\8d à®ªà®\95à¯\8dà®\95à®®à¯\8d',
+'mainpage' => 'à®®à¯\81à®\95பà¯\8dபà¯\81',
 'mainpage-description' => 'முதற் பக்கம்',
 'policy-url' => 'Project:கொள்கை',
 'portal' => 'சமுதாய வலைவாசல்',
@@ -488,10 +488,10 @@ MySQL returned error "$3: $4".',
 'welcomecreation-msg' => 'உங்களுக்கான பயனர் கணக்கு உருவாக்கப்பட்டுள்ளது. உங்களுக்கேற்றவாறு [[Special:Preferences|{{SITENAME}} விருப்பத்தேர்வுகளை]] மாற்றிக் கொள்ள மறவாதீர்கள்.',
 'yourname' => 'பயனர் பெயர்:',
 'userlogin-yourname' => 'பயனர் பெயர்',
-'userlogin-yourname-ph' => 'தà®\99à¯\8dà®\95ளினà¯\8d à®ªà®¯à®©à®°à¯\8d à®ªà¯\86யரà¯\88 à®\89ளà¯\8dளிà®\9fவà¯\81à®®à¯\8d',
+'userlogin-yourname-ph' => 'à®\89à®\99à¯\8dà®\95ளà¯\8d à®ªà®¯à®©à®°à¯\8d à®ªà¯\86யரà¯\88 à®\89ளà¯\8dளிà®\9fà¯\81à®\95',
 'yourpassword' => 'கடவுச்சொல்:',
 'userlogin-yourpassword' => 'கடவுச்சொல்',
-'userlogin-yourpassword-ph' => 'தà®\99à¯\8dà®\95ளினà¯\8d à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8dலà¯\88 à®\89ளà¯\8dளிà®\9fவà¯\81à®®à¯\8d',
+'userlogin-yourpassword-ph' => 'à®\89à®\99à¯\8dà®\95ளà¯\8d à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8dலà¯\88 à®\89ளà¯\8dளிà®\9fà¯\81à®\95',
 'createacct-yourpassword-ph' => 'கடவுச்சொல்லை உள்ளிடுக',
 'yourpasswordagain' => 'கடவுச்சொல்லைத் திரும்ப தட்டச்சிடுக:',
 'createacct-yourpasswordagain' => 'கடவுச்சொல்லை உறுதிசெய்க',
@@ -519,16 +519,23 @@ MySQL returned error "$3: $4".',
 'gotaccount' => "ஏற்கனவே பயனர் கணக்கு உள்ளதா? '''$1'''.",
 'gotaccountlink' => 'புகுபதிகை',
 'userlogin-resetlink' => 'உங்கள் புகுபதிகைக் குறிப்புகளை மறந்துவிட்டீர்களா?',
-'createacct-join' => 'தங்களின் தகவலை கீழிடவும்',
+'helplogin-url' => 'Help:புகுபதிகை',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|புகுபதிவதற்கான உதவி]]',
+'createacct-join' => 'உங்களின் தகவலை கீழிடவும்',
 'createacct-emailrequired' => 'மின்னஞ்சல் முகவரி',
-'createacct-email-ph' => 'தங்களின் மின்னஞ்சல் முகவரியை உள்ளிடவும்',
+'createacct-emailoptional' => 'மின்னஞ்சல் முகவரி (விருப்பத்தேர்வு)',
+'createacct-email-ph' => 'உங்கள் மின்னஞ்சல் முகவரியை உள்ளிடுக',
 'createaccountmail' => 'தற்காலிகமாக எழுந்தமான ஒரு கடவுச்சொல்லை பயன்படுத்துக, அதை கீழே தரப்பட்டுள்ள மின்னஞ்சலுக்கு அனுப்புக',
 'createacct-realname' => 'உண்மைப் பெயர் (விருப்பத்தேர்வு)',
 'createaccountreason' => 'காரணம்:',
+'createacct-reason' => 'காரணம்',
 'createacct-reason-ph' => 'தாங்கள் ஏன் மற்றொரு கணக்கைத் துவங்குகிறீர்கள்?',
 'createacct-imgcaptcha-ph' => 'மேலே காணும் சொற்களை உள்ளிடுக',
-'createacct-submit' => 'தà®\99à¯\8dà®\95ளினà¯\8d à®\95ணà®\95à¯\8dà®\95ினà¯\88 à®\89à®°à¯\81வாà®\95à¯\8dà®\95வà¯\81à®®à¯\8d',
+'createacct-submit' => 'à®\89à®\99à¯\8dà®\95ளà¯\8d à®\95ணà®\95à¯\8dà®\95à¯\88 à®\89à®°à¯\81வாà®\95à¯\8dà®\95à¯\81à®\95',
 'createacct-benefit-heading' => '{{SITENAME}} தங்களைப் போன்றோர்களால் உருவாக்கப்பட்டது',
+'createacct-benefit-body1' => '{{PLURAL:$1|தொகுப்பு|தொகுப்புகள்}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|பக்கம்|பக்கங்கள்}}',
+'createacct-benefit-body3' => 'அண்மைய {{PLURAL:$1|பங்களிப்பாளர்|பங்களிப்பாளர்கள்}}',
 'badretype' => 'நீங்கள் பதிந்த கடவுச்சொற்கள்  பொருந்தவில்லை.',
 'userexists' => 'உள்ளிட்ட பயனர்பெயர் ஏற்கனவே உபயோகத்தில் உள்ளது.
 தயவுகூர்ந்து வேறு பெயரை தேர்ந்தெடுக்கவும்.',
@@ -838,6 +845,7 @@ $1 எனும் பயனரையோ வேறு [[{{MediaWiki:Grouppage-sy
 இது நீக்கப்பட்டதாக இருக்கலாம்.',
 'edit-conflict' => 'முரண்பாடுகளைத் தொகுக்கவும்.',
 'edit-no-change' => 'வாசகங்களுக்கு எந்த மாற்றமும் செய்யப்படவில்லை என்பதனால் உங்கள் தொகுப்பு புறக்கணிக்கப்பட்டது.',
+'postedit-confirmation' => 'உங்களது தொகுப்பு சேமிக்கப்பட்டது.',
 'edit-already-exists' => 'புதிய பக்கமொன்றை உருவாக்க முடியாது.
 இப்பக்கம் ஏற்கனவே உள்ளது.',
 'defaultmessagetext' => 'இயல்பிருப்பு தகவல் உரை',
@@ -1078,7 +1086,6 @@ $1",
 'searchmenu-legend' => 'தேடல் விருப்பு',
 'searchmenu-exists' => "'''\"[[:\$1]]\" என்னும் பெயருடைய பக்கம் இந்த விக்கியில் உள்ளது'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" பக்கத்தை இந்த விக்கியில் உருவாக்கவும்!'''",
-'searchhelp-url' => 'Help:உதவி',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|இந்த முன்னொட்டுடன் உலவித்தேடு]]',
 'searchprofile-articles' => 'உள்ளடக்கப் பக்கங்களின் பட்டியல்',
 'searchprofile-project' => 'உதவி மற்றும் திட்டப் பக்கங்கள்',
@@ -2262,7 +2269,7 @@ $1',
 'mycontris' => 'பங்களிப்புக்கள்',
 'contribsub2' => '$1 பயனரின் ($2)',
 'nocontribs' => 'இந்த நிபந்தனையுடன் ஒத்துப்போகும் வகையில் மாற்றங்களெதுவும் காணப்படவில்லை.',
-'uctop' => '(à®®à¯\87லà¯\8d)',
+'uctop' => '(தறà¯\8dபà¯\8bதà¯\88ய)',
 'month' => 'மாதம் உட்பட முந்திய:',
 'year' => 'ஆண்டு உட்பட முந்திய:',
 
@@ -2851,6 +2858,16 @@ $1',
 'ago' => '$1 முன்பு',
 'just-now' => 'சடுதியில்.',
 
+# Human-readable timestamps
+'monday-at' => 'திங்கள் $1 மணிக்கு',
+'tuesday-at' => 'செவ்வாய் $1 மணிக்கு',
+'wednesday-at' => 'புதன் $1 மணிக்கு',
+'thursday-at' => 'வியாழன் $1 மணிக்கு',
+'friday-at' => 'வெள்ளி $1 மணிக்கு',
+'saturday-at' => 'சனி $1 மணிக்கு',
+'sunday-at' => 'ஞாயிறு $1 மணிக்கு',
+'yesterday-at' => 'நேற்று $1 மணிக்கு',
+
 # Bad image list
 'bad_image_list' => 'முறை பின்வருமாறு:
 
@@ -3454,6 +3471,7 @@ $5
 # Special:Redirect
 'redirect-submit' => 'செல்க',
 'redirect-lookup' => 'கவனிக்கவும்:',
+'redirect-file' => 'கோப்பின் பெயர்',
 'redirect-not-exists' => 'மதிப்பு காணப்பெறவில்லை',
 
 # Special:FileDuplicateSearch
@@ -3501,7 +3519,7 @@ $5
 
 # Special:Tags
 'tags' => 'செல்லத்தக்க மாற்று குறிச்சொற்கள்',
-'tag-filter' => '[[Special:Tags|à®\95à¯\81à®±à¯\8aச்சொல்]] வடிப்பான்:',
+'tag-filter' => '[[Special:Tags|à®\95à¯\81றிச்சொல்]] வடிப்பான்:',
 'tag-filter-submit' => 'வடிகட்டி',
 'tags-title' => 'குறிச்சொற்கள்',
 'tags-intro' => 'இப்பக்கத்தின் மென்பொருள் ஒரு திருத்ததுடனான குறியீடு என்று குறிச்சொற்கள், மற்றும் அவற்றின் பொருளை பட்டியலிடுகிறது.',
@@ -3545,6 +3563,8 @@ $5
 'htmlform-submit' => 'சமர்ப்பி',
 'htmlform-reset' => 'மாற்றங்களை இல்லாது செய்',
 'htmlform-selectorother-other' => 'மற்றவை',
+'htmlform-no' => 'இல்லை',
+'htmlform-yes' => 'ஆம்',
 'htmlform-chosen-placeholder' => 'விருப்பத்தினைத் தேர்க',
 
 # SQLite database support
index 3498739..34aca48 100644 (file)
@@ -241,7 +241,6 @@ $messages = array(
 'disclaimers' => 'ಅಬಾಧ್ಯತೆಲು',
 'disclaimerpage' => 'Project:ಸಾಮಾನ್ಯ ಅಬಾಧ್ಯತೆಲು',
 'edithelp' => 'ಸಂಪಾದನೆ(ಎಡಿಟ್) ಮಲ್ಪೆರೆ ಸಹಾಯ',
-'edithelppage' => 'Help:ಸಂಪಾದನೆ',
 'helppage' => 'Help:ಪರಿವಿಡಿ',
 'mainpage' => 'ಮುಖ್ಯ ಪುಟ',
 'mainpage-description' => 'ಮುಖ್ಯ ಪುಟ',
@@ -563,7 +562,6 @@ $messages = array(
 'nextn' => 'ಬೊಕ್ಕದ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'ನಾಡಾಟದ ಆಯ್ಕೆಲು',
-'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
 'searchprofile-articles' => 'ಲೇಖನ ಪುಟೊ',
 'searchprofile-images' => 'ಬಹುಮಾಧ್ಯಮ',
 'searchprofile-everything' => 'ಪ್ರತಿಯೊಂಜಿ',
index 5163720..517b968 100644 (file)
@@ -251,6 +251,18 @@ $messages = array(
 'oct' => 'అక్టో',
 'nov' => 'నవం',
 'dec' => 'డిసెం',
+'january-date' => 'జనవరి $1',
+'february-date' => 'ఫిబ్రవరి $1',
+'march-date' => 'మార్చి $1',
+'april-date' => 'ఏప్రిల్ $1',
+'may-date' => 'మే $1',
+'june-date' => 'జూన్ $1',
+'july-date' => 'జూలై $1',
+'august-date' => 'ఆగస్టు $1',
+'september-date' => 'సెప్టెంబర్ $1',
+'october-date' => 'అక్టోబర్ $1',
+'november-date' => 'నవంబర్ $1',
+'december-date' => 'డిసెంబర్ $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|వర్గం|వర్గాలు}}',
@@ -276,6 +288,7 @@ $messages = array(
 'newwindow' => '(కొత్త కిటికీలో వస్తుంది)',
 'cancel' => 'రద్దు',
 'moredotdotdot' => 'ఇంకా...',
+'morenotlisted' => 'చూపించబడనివి మరిన్ని...',
 'mypage' => 'పుట',
 'mytalk' => 'చర్చ',
 'anontalk' => 'ఈ ఐ.పి.కి సంబంధించిన చర్చ',
@@ -383,7 +396,6 @@ $1',
 'disclaimers' => 'అస్వీకారములు',
 'disclaimerpage' => 'Project:సాధారణ నిష్పూచీ',
 'edithelp' => 'దిద్దుబాటు సహాయం',
-'edithelppage' => 'Help:దిద్దుబాట్లు ఎలా చెయ్యాలి',
 'helppage' => 'Help:సూచిక',
 'mainpage' => 'మొదటి పేజీ',
 'mainpage-description' => 'తలపుట',
@@ -582,6 +594,9 @@ $2',
 'gotaccount' => 'ఇప్పటికే మీకు ఖాతా ఉందా? $1.',
 'gotaccountlink' => 'ప్రవేశించండి',
 'userlogin-resetlink' => 'మీ ప్రవేశ వివరాలను మరచిపోయారా?',
+'userlogin-resetpassword-link' => 'మీ దాటుమాటను మార్చుకోండి',
+'helplogin-url' => 'Help:ప్రవేశించడం',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ప్రవేశించడానికి సహాయం]]',
 'createacct-join' => 'మీ సమాచారాన్ని క్రింద ఇవ్వండి.',
 'createacct-emailrequired' => 'ఈమెయిలు చిరునామా',
 'createacct-emailoptional' => 'ఈమెయిలు చిరునామా (ఐచ్చికం)',
@@ -601,6 +616,7 @@ $2',
 'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
 వేరే పేరును ఎంచుకోండి.',
 'loginerror' => 'ప్రవేశంలో పొరపాటు',
+'createacct-error' => 'పద్దు తెరవడములో తప్పు',
 'createaccounterror' => 'ఖాతాని సృష్టించలేకపోయాం: $1',
 'nocookiesnew' => 'ఖాతాని సృష్టించాం, కానీ మీరు ఇంకా లోనికి ప్రవేశించలేదు.
 వాడుకరుల ప్రవేశానికి {{SITENAME}} కూకీలను వాడుతుంది.
@@ -637,8 +653,8 @@ $2',
 'blocked-mailpassword' => 'దిద్దుబాట్లు చెయ్యకుండా ఈ ఐపీఅడ్రసును నిరోధించాం. అంచేత, దుశ్చర్యల నివారణ కోసం గాను, మరచిపోయిన సంకేతపదాన్ని పొందే అంశాన్ని అనుమతించము.',
 'eauthentsent' => 'ఇచ్చిన ఈ-మెయిలు అడ్రసుకు ధృవీకరణ మెయిలు వెళ్ళింది.
 మరిన్ని మెయిళ్ళు పంపే ముందు, మీరు ఆ మెయిల్లో సూచించినట్లుగా చేసి, ఈ చిరునామా మీదేనని ధృవీకరించండి.',
-'throttled-mailpassword' => 'గడచిన {{PLURAL:$1|ఒక గంటలో|$1 గంటల్లో}} ఇప్పటికే ఒక సంకేతపదపు రిమైండరుని పంపించివున్నాం.
-à°¦à±\81à°¶à±\8dà°\9aà°°à±\8dయలనà±\81 à°¨à°¿à°µà°¾à°°à°¿à°\82à°\9aà±\87à°\82à°¦à±\81à°\95à±\81 à°\97ానà±\81, {{PLURAL:$1|à°\92à°\95 à°\97à°\82à°\9fà°\95à°¿|$1 à°\97à°\82à°\9fà°²à°\95à°¿}} à°\92à°\95à±\8dà°\95సారి à°®à°¾à°¤à±\8dà°°à°®à±\87 à°¸à°\82à°\95à±\87తపదపà±\81 à°°à°¿à°®à±\88à°\82à°¡à°°à±\81ని పంపిస్తాము.',
+'throttled-mailpassword' => 'గడచిన {{PLURAL:$1|ఒక గంటలో|$1 గంటల్లో}} ఇప్పటికే  దాటుమాట మార్చినట్లుగా ఒక మెయిల్  పంపించివున్నాం.
+à°¦à±\81à°¶à±\8dà°\9aà°°à±\8dయలనà±\81 à°¨à°¿à°µà°¾à°°à°¿à°\82à°\9aà±\87à°\82à°¦à±\81à°\95à±\81 à°\97ానà±\81, {{PLURAL:$1|à°\92à°\95 à°\97à°\82à°\9fà°\95à°¿|$1 à°\97à°\82à°\9fà°²à°\95à°¿}} à°\92à°\95à±\8dà°\95సారి à°®à°¾à°¤à±\8dà°°à°®à±\87 à°¦à°¾à°\9fà±\81మాà°\9f à°®à°¾à°°à±\8dà°ªà±\81 à°®à±\86యిలà±\8d పంపిస్తాము.',
 'mailerror' => 'మెయిలు పంపించడంలో లోపం: $1',
 'acct_creation_throttle_hit' => 'మీ ఐపీ చిరునామా వాడుతున్న ఈ వికీ సందర్శకులు గత ఒక్క రోజులో {{PLURAL:$1|1 ఖాతాని|$1 ఖాతాలను}} సృష్టించారు, ఈ కాల వ్యవధిలో అది గరిష్ఠ పరిమితి.
 అందువల్ల, ఈ ఐపీని వాడుతున్న సందర్శకులు ప్రస్తుతానికి ఇంక ఖాతాలని సృష్టించలేరు.',
@@ -688,10 +704,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
-'passwordreset-text' => 'మీ ఖాతా వివరాలను గుర్తు చేసే ఈమెయిలు కోసం ఈ ఫారాన్ని పూర్తి చెయ్యండి.',
 'passwordreset-legend' => 'సంకేతపదాన్ని మార్చుకోండి',
 'passwordreset-disabled' => 'ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.',
-'passwordreset-pretext' => '{{PLURAL:$1||డేటా శకలాల్లోంచి ఒకదాన్ని ఇవ్వండి}}',
 'passwordreset-username' => 'వాడుకరి పేరు:',
 'passwordreset-domain' => 'డొమైన్:',
 'passwordreset-email' => 'ఈ-మెయిలు చిరునామా:',
@@ -906,6 +920,7 @@ $2
 దీన్ని తొలగించినట్టున్నారు.',
 'edit-conflict' => 'మార్పు సంఘర్షణ.',
 'edit-no-change' => 'పాఠ్యంలో ఏమీ మార్పులు లేవు గనక, మీ మార్పుని పట్టించుకోవట్లేదు.',
+'postedit-confirmation' => 'మీ మార్పు భద్రమయ్యింది.',
 'edit-already-exists' => 'కొత్త పేజీని సృష్టించలేము.
 అది ఇప్పటికే ఉంది.',
 'defaultmessagetext' => 'అప్రమేయ సందేశపు పాఠ్యం',
@@ -1140,7 +1155,6 @@ $1",
 'searchmenu-legend' => 'అన్వేషణ ఎంపికలు',
 'searchmenu-exists' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేజీ ఉంది'''",
 'searchmenu-new' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేరుతో పేజీని సృష్టించు!'''",
-'searchhelp-url' => 'Help:సూచిక',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ఈ ఉపసర్గ ఉన్న పేజీలను చూడండి]]',
 'searchprofile-articles' => 'విషయపు పేజీలు',
 'searchprofile-project' => 'సహాయం మరియు ప్రాజెక్టు పేజీలు',
@@ -1283,7 +1297,7 @@ $1",
 ఇతరులు మిమ్మల్ని సంప్రదించినప్పుడు మీ ఈ-మెయిలు చిరునామా బహిర్గతమవదు.',
 'prefs-help-email-required' => 'ఈ-మెయిలు చిరునామా తప్పనిసరి.',
 'prefs-info' => 'ప్రాథమిక సమాచారం',
-'prefs-i18n' => 'à°\85à°\82తరà±\8dà°\9cాతà±\80à°¯à±\80à°\95à°°à°£',
+'prefs-i18n' => 'అంతర్జాతీకరణ',
 'prefs-signature' => 'సంతకం',
 'prefs-dateformat' => 'తేదీ ఆకృతి',
 'prefs-timeoffset' => 'సమయ సవరణ',
@@ -2191,7 +2205,7 @@ $UNWATCHURL కి వెళ్ళండి.
 '''$1''' అనే పేరున్న ఈ పేజీకి ప్రస్తుతం ఈ రక్షణ ఉంది:",
 'protect-cascadeon' => 'ఈ పేజీ కాస్కేడింగు రక్షణలో ఉన్న ఈ కింది {{PLURAL:$1|పేజీకి|పేజీలకు}} జతచేయటం వలన, ప్రస్తుతం రక్షణలో ఉంది.  మీరు ఈ పేజీ యొక్క రక్షణ స్థాయిన మార్చవచ్చు, దాని వలన కాస్కేడింగు రక్షణకు ఎటువంటి సమస్య ఉండదు.',
 'protect-default' => 'అందరు వాడుకరులను అనుమతించు',
-'protect-fallback' => '"$1" à°\85à°¨à±\81మతి à°\85వసరà°\82',
+'protect-fallback' => '"$1" à°\85à°¨à±\81మతి à°\89à°¨à±\8dà°¨ à°µà°¾à°¡à±\81à°\95à°°à±\81లనà±\81 à°®à°¾à°¤à±\8dà°°à°®à±\87 à°\85à°¨à±\81మతిà°\82à°\9aà±\81',
 'protect-level-autoconfirmed' => 'కొత్త మరియు నమోదుకాని వాడుకరులను నిరోధించు',
 'protect-level-sysop' => 'నిర్వాహకులను మాత్రమే అనుమతించు',
 'protect-summary-cascade' => 'కాస్కేడింగు',
@@ -2862,6 +2876,13 @@ $1',
 'hours-ago' => '$1 {{PLURAL:$1|గంట|గంటల}} క్రితం',
 'minutes-ago' => '$1 {{PLURAL:$1|నిమిషం|నిమిషాల}} క్రితం',
 'seconds-ago' => '$1 {{PLURAL:$1|క్షణం|క్షణాల}} క్రితం',
+'monday-at' => 'సోమవారం నాడు $1కి',
+'tuesday-at' => 'మంగళవారం నాడు $1కి',
+'wednesday-at' => 'బుధవారం నాడు $1కి',
+'thursday-at' => 'గురువారం నాడు $1కి',
+'friday-at' => 'శుక్రవారం నాడు $1కి',
+'saturday-at' => 'శనివారం నాడు $1కి',
+'sunday-at' => 'ఆదివారం నాడు $1కి',
 'yesterday-at' => 'నిన్న $1కి',
 
 # Bad image list
@@ -3540,7 +3561,7 @@ $5
 'sqlite-no-fts' => '$1 పూర్తి-పాఠ్య అన్వేషణ తోడ్పాటు లేకుండా',
 
 # New logging system
-'logentry-delete-delete' => '$1 $3 à°ªà±\81à°\9fà°¨à±\81 à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81',
+'logentry-delete-delete' => '$1 $3 à°ªà±\87à°\9cà±\80ని {{GENDER:$2|à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81}}',
 'revdelete-content-hid' => 'కంటెంట్ దాచబడింది',
 'revdelete-summary-hid' => 'మార్పుల సారాంశాన్ని దాచారు',
 'revdelete-uname-hid' => 'వాడుకరి పేరుని దాచారు',
index 4f0223c..0eaf692 100644 (file)
@@ -238,7 +238,6 @@ $messages = array(
 'disclaimers' => 'Avisu legál',
 'disclaimerpage' => 'Project:Avisu legál',
 'edithelp' => 'Ajuda kona-ba edita',
-'edithelppage' => 'Help:Edita',
 'helppage' => 'Help:Konteúdu',
 'mainpage' => 'Pájina Mahuluk',
 'mainpage-description' => 'Pájina Mahuluk',
index f641ff3..c6c5991 100644 (file)
@@ -303,7 +303,6 @@ $1',
 'disclaimers' => 'Такзибнома',
 'disclaimerpage' => 'Project:Такзибномаи умумӣ',
 'edithelp' => 'Роҳнамои вироиш',
-'edithelppage' => 'Help:Вироиш',
 'helppage' => 'Help:Мундариҷа',
 'mainpage' => 'Саҳифаи Аслӣ',
 'mainpage-description' => 'Саҳифаи Аслӣ',
@@ -827,7 +826,6 @@ $1',
 'searchmenu-legend' => 'Гузинаҳои ҷустуҷӯ',
 'searchmenu-exists' => "'''Саҳифае бо номи \"[[:\$1]]\" дар ин вики вуҷуд дорад.'''",
 'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
-'searchhelp-url' => 'Help:Мундариҷа',
 'searchprofile-articles' => 'Саҳифаҳои мӯҳтаво',
 'searchprofile-project' => 'Саҳифаҳои роҳномо ва лоиҳа',
 'searchprofile-images' => 'Чандрасонаӣ',
index eb2aaee..4114ea1 100644 (file)
@@ -244,7 +244,6 @@ $1",
 'disclaimers' => 'Takzibnoma',
 'disclaimerpage' => 'Project:Takzibnomai umumī',
 'edithelp' => 'Rohnamoi viroiş',
-'edithelppage' => 'Help:Viroiş',
 'helppage' => 'Help:Mundariça',
 'mainpage' => 'Sahifai Aslī',
 'mainpage-description' => 'Sahifai Aslī',
@@ -702,7 +701,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'viewprevnext' => 'Namoiş ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Guzinahoi çustuçū',
 'searchmenu-new' => "'''Eçodi sahifai \"[[:\$1]]\" dar in viki!'''",
-'searchhelp-url' => 'Help:Mundariça',
 'searchprofile-advanced' => 'Peşrafta',
 'searchprofile-articles-tooltip' => 'Çustuçū dar $1',
 'searchprofile-project-tooltip' => 'Çustuçū dar $1',
index e07655d..23b125d 100644 (file)
@@ -194,7 +194,7 @@ $dateFormats = array(
        'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
 );
 
-$linkTrail = '/^([a-z]+)(.*)\$/sD';
+$linkTrail = '/^([a-z]+)(.*)$/sD';
 
 $messages = array(
 # User preference toggles
@@ -305,6 +305,18 @@ $messages = array(
 'oct' => 'ต.ค.',
 'nov' => 'พ.ย.',
 'dec' => 'ธ.ค.',
+'january-date' => '$1 มกราคม',
+'february-date' => '$1 กุมภาพันธ์',
+'march-date' => '$1 มีนาคม',
+'april-date' => '$1 เมษายน',
+'may-date' => '$1 พฤษภาคม',
+'june-date' => '$1 มิถุนายน',
+'july-date' => '$1 กรกฎาคม',
+'august-date' => '$1 สิงหาคม',
+'september-date' => '$1 กันยายน',
+'october-date' => '$1 ตุลาคม',
+'november-date' => '$1 พฤศจิกายน',
+'december-date' => '$1 ธันวาคม',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|หมวดหมู่|หมวดหมู่}}',
@@ -386,6 +398,7 @@ $messages = array(
 'create-this-page' => 'สร้างหน้านี้',
 'delete' => 'ลบ',
 'deletethispage' => 'ลบหน้านี้',
+'undeletethispage' => 'กู้คืนหน้านี้',
 'undelete_short' => 'กู้คืน $1 การแก้ไข',
 'viewdeleted_short' => 'ดู $1 การแก้ไขที่ถูกลบ',
 'protect' => 'ล็อก',
@@ -439,7 +452,6 @@ $1',
 'disclaimers' => 'ข้อปฏิเสธความรับผิดชอบ',
 'disclaimerpage' => 'Project:ข้อปฏิเสธความรับผิดชอบทั่วไป',
 'edithelp' => 'คำอธิบายการแก้ไข',
-'edithelppage' => 'Help:การแก้ไข',
 'helppage' => 'Help:สารบัญ',
 'mainpage' => 'หน้าหลัก',
 'mainpage-description' => 'หน้าหลัก',
@@ -585,6 +597,8 @@ $1',
 'namespaceprotected' => "คุณไม่มีสิทธิแก้ไขหน้าในเนมสเปซ '''$1'''",
 'customcssprotected' => 'คุณไม่มีสิทธิแก้ไขหน้าสไตล์ CSS นี้ เนื่องจากหน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น',
 'customjsprotected' => 'คุณไม่มีสิทธิแก้ไขหน้าจาวาสคริปต์นี้ เนื่องจากหน้านี้มีการตั้งค่าส่วนบุคคลของผู้ใช้อื่น',
+'mycustomcssprotected' => 'คุณไม่ได้รับอนุญาตให้แก้ไขหน้าซีเอสเอสนี้',
+'mycustomjsprotected' => 'คุณไม่ได้รับอนุญาตให้แก้ไขหน้าจาวาสคริปต์นี้',
 'ns-specialprotected' => 'หน้าพิเศษไม่สามารถแก้ไขได้',
 'titleprotected' => "ชื่อเรื่องนี้ถูกป้องกันมิให้สร้างโดย [[User:$1|$1]] 
 เหตุผลที่ให้ไว้คือ ''$2''",
@@ -614,7 +628,10 @@ $1',
 'yourpassword' => 'รหัสผ่าน',
 'userlogin-yourpassword' => 'รหัสผ่าน',
 'userlogin-yourpassword-ph' => 'กรอกรหัสผ่าน',
+'createacct-yourpassword-ph' => 'กรอกรหัสผ่าน',
 'yourpasswordagain' => 'พิมพ์รหัสผ่านอีกครั้ง:',
+'createacct-yourpasswordagain' => 'ยืนยันรหัสผ่าน',
+'createacct-yourpasswordagain-ph' => 'กรอกรหัสผ่านอีกครั้ง',
 'remembermypassword' => 'จำการล็อกอินของฉันบนเบราเซอร์นี้ (นานสุด $1 วัน)',
 'userlogin-remembermypassword' => 'ให้ฉันอยู่ในระบบ',
 'userlogin-signwithsecure' => 'ใช้การเชื่อมต่อที่ปลอดภัย',
@@ -631,22 +648,36 @@ $1',
 'userlogout' => 'ล็อกเอาต์',
 'notloggedin' => 'ไม่ได้ล็อกอิน',
 'userlogin-noaccount' => 'ไม่มีบัญชีหรือ',
-'userlogin-joinproject' => 'เข้าร่วม {{SITENAME}}',
+'userlogin-joinproject' => 'เข้าร่วมกับ{{SITENAME}}',
 'nologin' => 'ไม่มีบัญชีหรือ $1',
 'nologinlink' => 'สร้างบัญชี',
 'createaccount' => 'สร้างบัญชี',
 'gotaccount' => "มีบัญชีแล้วใช่ไหม '''$1'''",
 'gotaccountlink' => 'ล็อกอิน',
 'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
-'userlogin-resetpassword-link' => 'รีà¹\80à¸\8bà¹\87à¸\95รหัสà¸\9cà¹\88าà¸\99à¸\82อà¸\87à¸\84ุà¸\93',
+'userlogin-resetpassword-link' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
 'helplogin-url' => 'Help:การล็อกอิน',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|คำอธิบายเรื่องการล็อกอิน]]',
+'createacct-join' => 'กรอกสารสนเทศของคุณด้านล่าง',
+'createacct-emailrequired' => 'ที่อยู่อีเมล',
+'createacct-emailoptional' => 'ที่อยู่อีเมล (เลือกไม่ใส่ได้)',
+'createacct-email-ph' => 'กรอกที่อยู่อีเมล',
 'createaccountmail' => 'ใช้รหัสผ่านสุ่มชั่วคราวและส่งไปยังที่อยู่อีเมลที่ระบุด้านล่าง',
+'createacct-realname' => 'ชื่อจริง (เลือกไม่ใส่ได้)',
 'createaccountreason' => 'เหตุผล:',
+'createacct-reason' => 'เหตุผล',
+'createacct-reason-ph' => 'เหตุใดคุณจึงสร้างอีกบัญชี',
+'createacct-captcha' => 'ตรวจสอบความปลอดภัย',
+'createacct-imgcaptcha-ph' => 'กรอกข้อความที่คุณเห็นด้านบน',
 'createacct-submit' => 'สร้างบัญชีของคุณ',
+'createacct-benefit-heading' => '{{SITENAME}}สร้างขึ้นจากคนเช่นคุณ',
+'createacct-benefit-body1' => '$1 การแก้ไข',
+'createacct-benefit-body2' => '$1 หน้า',
+'createacct-benefit-body3' => '$1 ผู้ร่วมเขียน',
 'badretype' => 'รหัสผ่านที่ใส่ไม่ตรงกัน',
 'userexists' => 'ชื่อผู้ใช้ที่กรอกมีผู้อื่นใช้ไปแล้ว กรุณาเลือกชื่ออื่น',
 'loginerror' => 'ล็อกอินผิดพลาด',
+'createacct-error' => 'การสร้างบัญชีผิดพลาด',
 'createaccounterror' => 'ไม่สามารถสร้างบัญชีผู้ใช้: $1',
 'nocookiesnew' => 'ชื่อบัญชีผู้ใช้ได้ถูกสร้างขึ้นแล้ว แต่ยังไม่ได้ล็อกอินเข้าสู่ {{SITENAME}} เนื่องจากว่าไม่ได้เปิดใช้คุกกี้ ถ้าต้องการล็อกอินให้เปิดใช้งานคุกกี้และทำการล็อกอินโดยใส่ชื่อผู้ใช้พร้อมรหัสผ่าน',
 'nocookieslogin' => '{{SITENAME}} ใช้คุกกี้สำหรับการล็อกอิน ขณะนี้คุกกี้ของคุณไม่เปิดใช้งาน กรุณาเปิดใช้งานและลองอีกครั้ง',
@@ -691,7 +722,7 @@ $1',
 'cannotchangeemail' => 'ไม่สามารถเปลี่ยนที่อยู่อีเมลบนวิกินี้',
 'emaildisabled' => 'เว็บไซต์นี้ไม่สามารถส่งอีเมล',
 'accountcreated' => 'บัญชีถูกสร้างขึ้น',
-'accountcreatedtext' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89à¸\82อà¸\87 $1 à¹\84à¸\94à¹\89สร้างขึ้นแล้ว',
+'accountcreatedtext' => 'à¸\9aัà¸\8dà¸\8aีà¸\9cูà¹\89à¹\83à¸\8aà¹\89สำหรัà¸\9a [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|à¸\9eูà¸\94à¸\84ุย]]) à¸\96ูà¸\81สร้างขึ้นแล้ว',
 'createaccount-title' => 'สร้างบัญชีสำหรับ {{SITENAME}}',
 'createaccount-text' => 'มีบางคนสร้างบัญชีโดยใช้ที่อยู่อีเมลของคุณบน {{SITENAME}} ($4) โดยใช้ชื่อ "$2" และรหัสผ่าน "$3" คุณควรล็อกอินเพื่อเปลี่ยนรหัสผ่านทันที
 
@@ -728,6 +759,7 @@ $1',
 
 # Special:PasswordReset
 'passwordreset' => 'ตั้งรหัสผ่านใหม่',
+'passwordreset-text-one' => 'กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่',
 'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
 'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
 'passwordreset-emaildisabled' => 'คุณลักษณะอีเมลถูกปิดใช้งานบนวิกินี้',
@@ -960,6 +992,7 @@ $2
 เนื่องจากหน้านี้ถูกลบไปแล้ว',
 'edit-conflict' => 'แก้ชนกัน',
 'edit-no-change' => 'การแก้ไขของคุณถูกเพิกเฉย เพราะไม่มีการเปลี่ยนแปลงใด ๆ',
+'postedit-confirmation' => 'บันทึกการแก้ไขของคุณแล้ว',
 'edit-already-exists' => 'ไม่สามารถสร้างหน้าใหม่ได้
 เพราะมีหน้านี้แล้ว',
 'defaultmessagetext' => 'ข้อความสารโดยปริยาย',
@@ -1009,7 +1042,7 @@ $2
 'revision-info' => 'รุ่นเมื่อ $1 โดย $2',
 'previousrevision' => '←รุ่นก่อนหน้า',
 'nextrevision' => 'รุ่นถัดไป→',
-'currentrevisionlink' => 'รุà¹\88à¸\99à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99',
+'currentrevisionlink' => 'รุà¹\88à¸\99ลà¹\88าสุà¸\94',
 'cur' => 'ป',
 'next' => 'ถัดไป',
 'last' => 'ก',
@@ -1199,7 +1232,6 @@ $1",
 'searchmenu-legend' => 'ตัวเลือกการค้นหา',
 'searchmenu-exists' => "'''มีหน้าชื่อ \"[[:\$1]]\" บนวิกินี้'''",
 'searchmenu-new' => "'''สร้างหน้า \"[[:\$1]]\" บนวิกินี้'''",
-'searchhelp-url' => 'Help:สารบัญ',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ค้นดูหน้าที่มีคำขึ้นต้นนี้]]',
 'searchprofile-articles' => 'หน้าเนื้อหา',
 'searchprofile-project' => 'คำอธิบายและหน้าโครงการ',
@@ -1453,6 +1485,8 @@ $1",
 'right-editusercssjs' => 'แก้ไขไฟล์ CSS และจาวาสคริปต์ของผู้ใช้อื่น',
 'right-editusercss' => 'แก้ไขไฟล์ CSS ของผู้ใช้อื่น',
 'right-edituserjs' => 'แก้ไขไฟล์จาวาสคริปต์ของผู้ใช้อื่น',
+'right-editmyusercss' => 'แก้ไขไฟล์ซีเอสเอสผู้ใช้ของคุณเอง',
+'right-editmyuserjs' => 'แก้ไขไฟล์จาวาสคริปต์ผู้ใช้ของคุณเอง',
 'right-rollback' => 'ย้อนการแก้ไขของผู้ใช้ล่าสุดที่แก้ไขหน้าเฉพาะอย่างรวดเร็ว',
 'right-markbotedits' => 'ทำเครื่องหมายการย้อนว่าเป็นการแก้ไขโดยบอต',
 'right-noratelimit' => 'ไม่ได้รับผลกระทบจากขีดจำกัดอัตรา',
@@ -2154,7 +2188,7 @@ $1',
 'notvisiblerev' => 'รุ่นล่าสุดโดยผู้ใช้อีกคนถูกลบแล้ว',
 'watchnochange' => 'ไม่มีการแก้ไขหน้าที่คุณเฝ้าดูในระยะเวลาที่แสดง',
 'watchlist-details' => 'มี $1 หน้าในรายการเฝ้าดูของคุณ ไม่รวมหน้าอภิปราย',
-'wlheader-enotif' => 'แจ้งเตือนผ่านอีเมลถูกเปิดใช้งาน',
+'wlheader-enotif' => 'à¸\81ารà¹\81à¸\88à¹\89à¸\87à¹\80à¸\95ือà¸\99à¸\9cà¹\88าà¸\99อีà¹\80มลà¸\96ูà¸\81à¹\80à¸\9bิà¸\94à¹\83à¸\8aà¹\89à¸\87าà¸\99',
 'wlheader-showupdated' => "หน้าที่มีการเปลี่ยนแปลงตั้งแต่การเข้าชมครั้งล่าสุดของคุณแสดงใน'''ตัวหนา'''",
 'watchmethod-recent' => 'ตรวจสอบการปรับปรุงล่าสุดกับหน้าเฝ้าดู',
 'watchmethod-list' => 'ตรวจสอบหน้าเฝ้าดูกับการแก้ไขล่าสุด',
@@ -2402,7 +2436,7 @@ $1',
 'mycontris' => 'เรื่องที่เขียน',
 'contribsub2' => 'สำหรับ $1 ($2)',
 'nocontribs' => 'ไม่พบการเปลี่ยนแปลงตรงกับเงื่อนไขเหล่านี้',
-'uctop' => '(ลà¹\88าสุà¸\94)',
+'uctop' => '(à¸\9bัà¸\88à¸\88ุà¸\9aัà¸\99)',
 'month' => 'จากเดือน (และก่อนหน้า):',
 'year' => 'จากปี (และก่อนหน้า):',
 
@@ -3027,11 +3061,25 @@ $1',
 'minutes' => '$1 นาที',
 'hours' => '$1 ชั่วโมง',
 'days' => '$1 วัน',
+'weeks' => '$1 สัปดาห์',
 'months' => '$1 เดือน',
 'years' => '$1 ปี',
 'ago' => '$1 มาแล้ว',
 'just-now' => 'เมื่อสักครู่นี้',
 
+# Human-readable timestamps
+'hours-ago' => '$1 ชั่วโมงที่แล้ว',
+'minutes-ago' => '$1 นาทีที่แล้ว',
+'seconds-ago' => '$1 วินาทีที่แล้ว',
+'monday-at' => 'วันจันทร์เมื่อ $1 น.',
+'tuesday-at' => 'วันอังคารเมื่อ $1 น.',
+'wednesday-at' => 'วันพุธเมื่อ $1 น.',
+'thursday-at' => 'วันพฤหัสบดีเมื่อ $1 น.',
+'friday-at' => 'วันศุกร์เมื่อ $1 น.',
+'saturday-at' => 'วันเสาร์เมื่อ $1 น.',
+'sunday-at' => 'วันอาทิตย์เมื่อ $1 น.',
+'yesterday-at' => 'เมื่อวานเมื่อ $1 น.',
+
 # Bad image list
 'bad_image_list' => 'รูปแบบแสดงต่อไปนี้:
 
@@ -3464,7 +3512,7 @@ $5
 
 # Auto-summaries
 'autosumm-blank' => 'ทำหน้าว่าง',
-'autosumm-replace' => "แทนทีข้อความทั้งหมดด้วย '$1'",
+'autosumm-replace' => "à¹\81à¸\97à¸\99à¸\97ีà¹\88à¸\82à¹\89อà¸\84วามà¸\97ัà¹\89à¸\87หมà¸\94à¸\94à¹\89วย '$1'",
 'autoredircomment' => 'เปลี่ยนทางไปที่ [[$1]]',
 'autosumm-new' => "หน้าที่ถูกสร้างด้วย '$1'",
 
@@ -3688,7 +3736,7 @@ $5
 'logentry-newusers-newusers' => 'บัญชีผู้ใช้ $1 ถูกสร้างขึ้น',
 'logentry-newusers-create' => 'บัญชีผู้ใช้ $1 ถูกสร้างขึ้น',
 'logentry-newusers-create2' => 'บัญชีผู้ใช้ $3 ถูกสร้างขึ้นโดย $1',
-'logentry-newusers-autocreate' => 'บัญชี $1 ถูกสร้างขึ้นอัตโนมัติ',
+'logentry-newusers-autocreate' => 'บัญชีผู้ใช้ $1 ถูกสร้างขึ้นอัตโนมัติ',
 'rightsnone' => '(ไม่มี)',
 
 # Feedback
index e1e4f45..e15047b 100644 (file)
@@ -276,7 +276,6 @@ $1',
 'disclaimers' => 'Jogapkärçilikden boýun gaçyrma',
 'disclaimerpage' => 'Project:Umumy jogapkärçilikden boýun gaçyrma',
 'edithelp' => 'Nähili redaktirlenýär?',
-'edithelppage' => 'Help:Redaktirleme',
 'helppage' => 'Help:Içindäkiler',
 'mainpage' => 'Baş Sahypa',
 'mainpage-description' => 'Baş Sahypa',
@@ -965,7 +964,6 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'searchmenu-legend' => 'Gözleg opsiýalary',
 'searchmenu-exists' => "'''Bu wikide \"[[:\$1]]\" atly sahypa bar'''",
 'searchmenu-new' => "'''Bu wikide \"[[:\$1]]\" sahypasyny döret!'''",
-'searchhelp-url' => 'Help:Içindäkiler',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Şu prefiksli sahypalara göz aýla]]',
 'searchprofile-articles' => 'Mazmunly sahypalar',
 'searchprofile-project' => 'Ýardam we Taslama sahypalary',
index bad2c0e..89bb024 100644 (file)
@@ -254,6 +254,18 @@ $messages = array(
 'oct' => 'Okt',
 'nov' => 'Nob',
 'dec' => 'Dis',
+'january-date' => '$1 Enero',
+'february-date' => '$1 Pebrero',
+'march-date' => '$1 Marso',
+'april-date' => '$1 Abril',
+'may-date' => '$1 Mayo',
+'june-date' => '$1 Hunyo',
+'july-date' => '$1 Hulyo',
+'august-date' => '$1 Agosto',
+'september-date' => '$1 Setyembre',
+'october-date' => '$1 Oktubre',
+'november-date' => '$1 Nobyembre',
+'december-date' => '$1 Disyembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorya|Mga kategorya}}',
@@ -305,7 +317,7 @@ $messages = array(
 'vector-action-protect' => 'Ipagsanggalang',
 'vector-action-undelete' => 'Alisin ang pagbubura',
 'vector-action-unprotect' => 'Baguhin ang pagsasanggalang',
-'vector-simplesearch-preference' => 'Paganahin ang pinainam na mga mungkahi sa paghahanap (pabalat na Vector lang)',
+'vector-simplesearch-preference' => 'Paganahin ang pinainam na bar ng paghahanap (pabalat na Vector lang)',
 'vector-view-create' => 'Likhain',
 'vector-view-edit' => 'Baguhin',
 'vector-view-history' => 'Tingnan ang kasaysayan',
@@ -315,6 +327,7 @@ $messages = array(
 'namespaces' => 'Mga ngalan-espasyo',
 'variants' => 'Naiiba pa',
 
+'navigation-heading' => 'Menu ng paglilibot',
 'errorpagetitle' => 'Pagkakamali',
 'returnto' => 'Bumalik sa $1.',
 'tagline' => 'Mula sa {{SITENAME}}',
@@ -348,7 +361,7 @@ $messages = array(
 'talkpagelinktext' => 'Usapan',
 'specialpage' => 'Natatanging pahina',
 'personaltools' => 'Mga kagamitang pansarili',
-'postcomment' => 'Bagong seksyon',
+'postcomment' => 'Bagong seksiyon',
 'articlepage' => 'Tingnan ang pahina ng nilalaman',
 'talk' => 'Usapan',
 'views' => 'Mga anyo',
@@ -389,7 +402,6 @@ $1',
 'disclaimers' => 'Mga pagtatanggi',
 'disclaimerpage' => 'Project:Pangkalahatang pagtatanggi',
 'edithelp' => 'Tulong sa pagbabago',
-'edithelppage' => 'Help:Pagbabago',
 'helppage' => 'Help:Mga nilalaman',
 'mainpage' => 'Unang Pahina',
 'mainpage-description' => 'Unang Pahina',
@@ -472,10 +484,10 @@ Matatagpuan ang isang tala ng mga tamang natatanging pahina sa [[Special:Special
 
 # General errors
 'error' => 'Kamalian',
-'databaseerror' => 'Kamalian sa kalipunan ng dato',
-'dberrortext' => 'Naganap ang isang pagkakamali sa pag-uusisa na pampalaugnayan sa kalipunan ng dato.
+'databaseerror' => 'Kamalian sa kalipunan ng datos',
+'dberrortext' => 'Naganap ang isang pagkakamali sa pag-uusisa na pampalaugnayan sa kalipunan ng datos.
 Maaaring magpahiwatig ito ng isang surot sa loob ng sopwer.
-Ang huling tinangkang pag-uusisa sa kalipunan ng dato ay:
+Ang huling tinangkang pag-uusisa sa kalipunan ng datos ay:
 <blockquote><code>$1</code></blockquote>
 magmula sa loob ng tungkuling "<code>$2</code>".
 Nagbalik ang kalipunan ng dato ng kamalian na "<samp>$3: $4</samp>".',
@@ -537,14 +549,16 @@ Pakisubok na lang ulit pagkaraan ng kaunting mga minuto.",
 'viewyourtext' => "Matitingnan at makukopya mo ang pinagmulan ng '''mga pagbabago''' papunta sa pahinang ito:",
 'protectedinterface' => "Nagbibigay ang pahinang ito ng tekstong panghangganan (''interface'') para sa sopwer, at ikinandado para maiwasan ang pangaabuso.",
 'editinginterface' => "'''Babala:''' Binabago mo ang isang pahinang ginagamit sa pagbibigay ng tekstong panghangganan para sa sopwer.
-Makakaapekto ang mga pagbago sa pahinang ito sa anyo ng hangganang (''interface'') pangtagagamit na para sa ibang mga tagagamit.
-Para sa mga salinwika, paki isang-alang-alang o konsiderahin ang paggamit ng [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyektong panglokalisasyon ng MediaWiki.",
+Makaaapekto ang mga pagbago sa pahinang ito sa anyo ng hangganang (''interface'') pantagagamit na para sa ibang mga tagagamit sa wiking ito.
+Upang magdagag o magbago ng mga salinwika, isaaalang-alang na lang po ang paggamit ng [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyekto para sa lokalisasyon ng MediaWiki.",
 'sqlhidden' => '(nakatago ang tanong ng SQL)',
 'cascadeprotected' => 'Nakasanggalang ang pahinang ito mula sa mga pagbabago, dahil kabilang ito sa sumusunod na {{PLURAL:$1|pahinang|mga pahinang}} nakasanggalang sa pamamagitan ng binuhay na opsyong "nahuhulog" (kumakaskada):
 $2',
 'namespaceprotected' => "Wala kang pahintulot na magbago ng mga pahinang nasa ngalan-espasyong '''$1'''.",
 'customcssprotected' => 'Wala kang pahintulot na baguhin ang pahina ng CSS na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
 'customjsprotected' => 'Wala kang pahintulot na baguhin ang pahina ng JavaScript na ito, dahil naglalaman ito ng mga katakdaang pansarili ng ibang tagagamit.',
+'mycustomcssprotected' => 'Wala kang pahintulot na baguhin itong pahinang CSS.',
+'mycustomjsprotected' => 'Wala kang pahintulot na baguhin itong pahinang JavaScript.',
 'ns-specialprotected' => 'Hindi pwedeng baguhin ang mga natatanging pahina.',
 'titleprotected' => "Nakasanggalang ang pamagat na ito mula sa paglikha ni [[User:$1|$1]].
 Ang ibinigay na dahilan ay ''$2''.",
@@ -571,8 +585,12 @@ Tandaan na may ilang pahinang maaaring magpatuloy na nagpapakitang parang nakala
 Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SITENAME}}]].',
 'yourname' => 'Bansag:',
 'yourpassword' => 'Hudyat:',
+'userlogin-yourpassword' => 'Hudyat',
+'userlogin-yourpassword-ph' => 'Ipasok ang iyong hudyat',
 'yourpasswordagain' => 'Hudyat mo uli:',
+'createacct-yourpasswordagain' => 'Tiyakin ang hudyat',
 'remembermypassword' => 'Tandaan ang paglagda ko sa kompyuter na ito (pinakamarami na ang $1 {{PLURAL:$1|araw|mga araw}})',
+'userlogin-remembermypassword' => 'Panatilihin akong nakalagda',
 'securelogin-stick-https' => 'Manatiling konektado sa HTTPS matapos lumagda',
 'yourdomainname' => 'Dominyo mo:',
 'password-change-forbidden' => 'Hindi mo maaaring palitan ang mga hudyat sa wiking ito.',
@@ -585,14 +603,19 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
 'logout' => 'Umalis sa pagkakalagda',
 'userlogout' => 'Umalis sa pagkakalagda',
 'notloggedin' => 'Hindi nakalagda',
+'userlogin-noaccount' => 'Wala ka pa bang kuwenta?',
+'userlogin-joinproject' => 'Sumali sa {{SITENAME}}',
 'nologin' => 'Wala ka pang kuwenta? $1.',
 'nologinlink' => 'Lumikha ng kuwenta',
 'createaccount' => 'Lumikha ng kuwenta',
 'gotaccount' => 'May kuwenta ka na ba? $1.',
 'gotaccountlink' => 'Lumagda',
 'userlogin-resetlink' => 'Nakalimutan mo ang iyong mga detalyeng panglagda?',
-'createaccountmail' => 'sa pamamagitan ng e-liham',
+'createacct-emailrequired' => 'Direksiyong e-liham:',
+'createaccountmail' => 'Gumamit ng pansamantalang walang-piling hudyat at ipadala ito sa direksiyong e-liham na nakasaad sa ibaba',
+'createacct-realname' => 'Tunay na pangalan (maaaring wala)',
 'createaccountreason' => 'Dahilan:',
+'createacct-reason' => 'Dahilan',
 'badretype' => 'Hindi magkatugma ang ipinasok mong mga hudyat.',
 'userexists' => 'May gumagamit na ng ipinasok na bansag.
 Pumili po ng ibang pangalan.',
@@ -658,7 +681,7 @@ Pakipasok ang isang may mahusay na anyong adres o paki-iwang walang laman na lan
 'cannotchangeemail' => 'Hindi maaaring baguhin ang mga direksiyong e-liham sa wiking ito.',
 'emaildisabled' => 'Ang sityong ito ay hindi makapagpapadala ng mga e-liham.',
 'accountcreated' => 'Nilikha na ang kuwenta',
-'accountcreatedtext' => 'Nilikha na ang kuwentang tagagamit para kay $1.',
+'accountcreatedtext' => 'Nilikha na ang kuwenta ng tagagamit para kay [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]).',
 'createaccount-title' => 'Paglikha ng kuwenta para sa {{SITENAME}}',
 'createaccount-text' => 'May lumikha ng kuwenta para sa iyong adres ng e-liham sa {{SITENAME}} ($4) na pinangalanang "$2", na may hudyat na "$3".
 Dapat kang tumala at baguhin ang hudyat mo ngayon.
@@ -696,10 +719,8 @@ Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bag
 
 # Special:PasswordReset
 'passwordreset' => 'Muling pagtatakda ng hudyat',
-'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
 'passwordreset-legend' => 'Itakdang muli ang hudyat',
 'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
-'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng datos sa ibaba}}',
 'passwordreset-username' => 'Pangalan ng tagagamit:',
 'passwordreset-domain' => 'Nasasakupan:',
 'passwordreset-capture' => 'Tingnan ang lumabas na e-liham?',
@@ -906,8 +927,8 @@ Nangangako ka rin sa amin na ikaw ang mismong sumulat nito, o sinipi/kinopya mo
 '''HUWAG MAGTALA NG AKDANG NAKAKARAPATANG-ARI (NAKAKOPIRAYT) NA HINDI MUNA HUMIHINGI NG PAHINTULOT!'''",
 'longpageerror' => "'''Kamalian: May haba na {{PLURAL:$1|isang kilobyte|$1 mga kilobyte}} ang ipinasa mong teksto, na mas mahaba kaysa sa pinakamataas na nakatakdang halaga na {{PLURAL:$2|isang kilobyte|$2 mga kilobyte}}.''' 
 Hindi ito masasagip.",
-'readonlywarning' => "'''BABALA: Ikinandado ang kalipunan ng dato para sa gawaing pampagpapanatili, kaya't hindi mo pa masasagip ang mga pagbabagong ginawa mo ngayon.
-Maaaring ibigin mong gupitin at idikit ang teksto patungo sa isang talaksang pangteksto at sagipin ito mamaya.'''
+'readonlywarning' => "'''BABALA: Ikinandado ang kalipunan ng datos para sa gawaing pampagpapanatili, kaya't hindi mo pa masasagip ang mga pagbabagong ginawa mo ngayon.'''
+Maaaring ibigin mong gupitin at idikit ang teksto patungo sa isang talaksang panteksto at sagipin ito mamaya.
 
 Nagbigay ng ganitong paliwanag ang tagapangasiwang nagkandado nito: $1",
 'protectedpagewarning' => "'''Babala: Ikinandado ang pahinang ito upang mga tagagamit lamang na may karapatan ng tagapangasiwa ang makakapagbago nito.'''
@@ -1189,7 +1210,6 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'searchmenu-legend' => 'Mga pagpipilian para sa paghahanap',
 'searchmenu-exists' => "'''Mayroong pahinang may pangalang \"[[:\$1]]\" dito sa wiking ito'''",
 'searchmenu-new' => "'''Likhain ang pahinang \"[[:\$1]]\" sa wiking ito!'''",
-'searchhelp-url' => 'Help:Nilalaman',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tingnan-tingnan ang mga pahinang may ganitong unahan/unlapi]]',
 'searchprofile-articles' => 'Mga pahina ng nilalaman',
 'searchprofile-project' => 'Mga pahina ng Tulong at Proyekto',
@@ -1211,7 +1231,7 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(mas marami pa)',
 'search-relatedarticle' => 'Kaugnay',
-'mwsuggest-disable' => 'Huwag paganahin ang mga mungkahi ng AJAX',
+'mwsuggest-disable' => 'Huwag paganahin ang mga mungkahi sa paghahanap',
 'searcheverything-enable' => 'Maghanap sa lahat ng ngalan-espasyo:',
 'searchrelated' => 'kaugnay',
 'searchall' => 'lahat',
@@ -1309,8 +1329,8 @@ Hindi ito maibabalik sa dating gawi.',
 'prefs-textboxsize' => 'Sukat ng bintana ng pagbabago',
 'youremail' => 'E-liham:',
 'username' => '{{GENDER:$1|Bansag}}:',
-'uid' => 'ID ng tagagamit:',
-'prefs-memberingroups' => 'Kasapi ng {{PLURAL:$1|na pangkat|na mga pangkat}}:',
+'uid' => 'ID ng {{GENDER:$1|tagagamit}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Kasapi}} ng {{PLURAL:$1|na pangkat|na mga pangkat}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Oras ng pagtatala:',
 'prefs-registration-date-time' => '$1',
@@ -1917,13 +1937,13 @@ Marahil ay naisa mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawa
 'randompage-nopages' => 'Walang mga pahina sa sumusunod na {{PLURAL:$2|ngalan-espasyo|mga ngalan-espasyo}}: $1.',
 
 # Random redirect
-'randomredirect' => 'Alinmang panuto',
-'randomredirect-nopages' => 'Walang mga panuto sa pangalan-espasyong "$1".',
+'randomredirect' => 'Pagkargang walang-pili',
+'randomredirect-nopages' => 'Walang mga pagkarga sa ngalan-espasyong "$1".',
 
 # Statistics
 'statistics' => 'Mga estadistika',
 'statistics-header-pages' => 'Mga estadistika ng pahina',
-'statistics-header-edits' => 'Baguhin ang mga estadistika',
+'statistics-header-edits' => 'Mga estadistika sa mga pagbabago',
 'statistics-header-views' => 'Tingnan ang mga estadistika',
 'statistics-header-users' => 'Mga estadistika sa mga tagagamit',
 'statistics-header-hooks' => 'Ibang mga estadistika',
@@ -1933,7 +1953,7 @@ Marahil ay naisa mong baguhin ang paglalarawan doon sa [$2 pahina ng paglalarawa
 'statistics-files' => 'Ikinargang mga talaksan',
 'statistics-edits' => 'Naihanda na ang mga pagbabago ng pahina mula sa {{SITENAME}}',
 'statistics-edits-average' => 'Karaniwang pagbabago sa bawat pahina',
-'statistics-views-total' => 'Kalahatang pagdayo',
+'statistics-views-total' => 'Kabuuan ng mga pagtanaw',
 'statistics-views-total-desc' => 'Hindi kabilang ang mga pagtanaw sa mga pahinang hindi umiiral at mga pahinang natatangi',
 'statistics-views-peredit' => 'Pagtingin sa bawat pagbabago',
 'statistics-users' => 'Mga nakatalang [[Special:ListUsers|tagagamit]]',
@@ -2167,7 +2187,7 @@ Ang ipinasok mong direksiyong e-liham sa [[Special:Preferences|iyong mga kagustu
 'emailmessage' => 'Mensahe:',
 'emailsend' => 'Ipadala',
 'emailccme' => 'Padalhan ako ng sipi ng aking mensahe sa pamamagitan ng e-liham.',
-'emailccsubject' => 'Kopya ng iyong mensahe sa $1: $2',
+'emailccsubject' => 'Kopya ng iyong mensahe kay $1: $2',
 'emailsent' => 'Naipadala na ang e-liham',
 'emailsenttext' => 'Naipadala na ang mensahe ng iyong e-liham.',
 'emailuserfooter' => 'Ipinadala ang e-liham na ito ni $1 para kay $2 sa pamamagitan ng tungkuling "Magpadala ng e-liham" na nasa {{SITENAME}}.',
@@ -2321,6 +2341,7 @@ Tingnan ang [[Special:ProtectedPages|talaan ng pinuprutektahang mga pahina]] par
 'prot_1movedto2' => 'Inilipat ang [[$1]] patungo sa [[$2]]',
 'protect-badnamespace-title' => 'Hindi mapupruteksiyunang puwang ng pangalan',
 'protect-badnamespace-text' => 'Hindi mapupruteksiyunan ang mga pahinang nasa puwang na pampangalang ito.',
+'protect-norestrictiontypes-title' => 'Pahinang hindi maipasanggalang',
 'protect-legend' => 'Tiyakin ang panananggalang',
 'protectcomment' => 'Dahilan:',
 'protectexpiry' => 'Magtatapos sa:',
@@ -2337,7 +2358,7 @@ Narito ang pangkasalukuyang mga pagtatakda para sa pahinang '''$1''':",
 'protect-cascadeon' => 'Kasalukuyang nakasanggalang na ang pahinang ito dahil kabilang/kasama ito sa sumusunod na {{PLURAL:$1|pahinang may|mga pahinang may}} buhay/umiiral na baita-baitang na mga panananggalang.
 Maaari mong baguhin ang antas ng panananggalang ng pahina, ngunit hindi ito makakaapekto sa baita-baitang na panananggalang.',
 'protect-default' => 'Pahintulutan ang lahat ng mga tagagamit',
-'protect-fallback' => 'Nangangailangan ng kapahintulutang "$1"',
+'protect-fallback' => 'Pahintulutan ang mga tagagamit lamang na may pahintulot na "$1"',
 'protect-level-autoconfirmed' => 'Hadlangan ang bago at hindi nagpapatalang mga tagagamit',
 'protect-level-sysop' => "Mga tagapangasiwa (''sysop'') lamang",
 'protect-summary-cascade' => 'baita-baitang',
@@ -2440,7 +2461,7 @@ $1',
 'mycontris' => 'Mga ambag',
 'contribsub2' => 'Para kay $1 ($2)',
 'nocontribs' => 'Walang pagbabagong nakita sa binigay na kondisyon.',
-'uctop' => ' (itaas)',
+'uctop' => '(kasalukuyan)',
 'month' => 'Mula sa buwan (at nauna):',
 'year' => 'Mula sa taon (at nauna):',
 
index 3d475d7..464792a 100644 (file)
@@ -349,7 +349,6 @@ $messages = array(
 'disclaimers' => 'Çe məsuliyyətiku imtino.',
 'disclaimerpage' => 'Project:Дејни бә гиј ныгәтеј',
 'edithelp' => 'Арајиш бо редактә кардеј',
-'edithelppage' => 'Help:Арајиш бо сәрост кардеј',
 'helppage' => 'Help:Мындәриҹот',
 'mainpage' => 'Əsosə səhifə',
 'mainpage-description' => 'Әсосә сәһифә',
@@ -591,7 +590,6 @@ $messages = array(
 'searchmenu-legend' => 'Бо нәве кукон',
 'searchmenu-exists' => "'''Бы вики-нәхшәдә һесте сәһифә «[[:$1]]»'''",
 'searchmenu-new' => "'''Сәһифә офәјеј «[[:$1]]» бә ым вики-нахшәдә!'''",
-'searchhelp-url' => 'Help:Мындәриҹот',
 'searchprofile-articles' => 'Әсосә сәһифон',
 'searchprofile-project' => 'Че араијшон ијән нахшон сәһифон',
 'searchprofile-images' => 'Мултимедијә',
@@ -824,7 +822,7 @@ $messages = array(
 'contributions-title' => 'Иштирокәкә гәнҹ $1',
 'mycontris' => 'Гәнҹ',
 'contribsub2' => 'Гәнҹ $1 ($2)',
-'uctop' => '(оÑ\85онÓ\99ни)',
+'uctop' => '(еÑ\81Ó\99Ñ\82нÓ\99)',
 'month' => 'Че мангику (һәнијән рә):',
 'year' => 'Че сорику (һәнијән рә):',
 
index 25ad43f..a34e438 100644 (file)
@@ -243,7 +243,6 @@ $messages = array(
 'disclaimers' => 'Ol toksave bilong lo',
 'disclaimerpage' => 'Project:Ol tok warn long lo',
 'edithelp' => 'Halivim mi long pasin bilong wokim senis',
-'edithelppage' => 'Help:Senisim',
 'mainpage' => 'Fran Pes',
 'mainpage-description' => 'Fran Pes',
 'portal' => 'Bung ples',
index c9462d8..600b051 100644 (file)
  * @author Bilalokms
  * @author Bombola
  * @author Cekli829
+ * @author Coolland
  * @author Dbl2010
  * @author Don Alessandro
  * @author Emperyan
  * @author Erdemaslancan
  * @author Erkan Yilmaz
  * @author Fryed-peach
+ * @author Geitost
  * @author Goktr001
  * @author Gorizon
  * @author Hanberke
@@ -457,6 +459,18 @@ $messages = array(
 'oct' => 'Eki',
 'nov' => 'Kas',
 'dec' => 'Ara',
+'january-date' => '$1 Ocak',
+'february-date' => '$1 Şubat',
+'march-date' => '$1 Mart',
+'april-date' => '$1 Nisan',
+'may-date' => '$1 Mayıs',
+'june-date' => '$1 Haziran',
+'july-date' => '$1 Temmuz',
+'august-date' => '$1 Ağustos',
+'september-date' => '$1 Eylül',
+'october-date' => '$1 Ekim',
+'november-date' => '$1 Kasım',
+'december-date' => '$1 Aralık',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriler}}',
@@ -590,7 +604,6 @@ $1',
 'disclaimers' => 'Sorumluluk reddi',
 'disclaimerpage' => 'Project:Genel sorumluluk reddi',
 'edithelp' => 'Nasıl değiştirilir?',
-'edithelppage' => 'Help:Sayfa nasıl değiştirilir',
 'helppage' => 'Help:İçindekiler',
 'mainpage' => 'Ana Sayfa',
 'mainpage-description' => 'Ana sayfa',
@@ -756,9 +769,18 @@ Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ ot
 'welcomecreation-msg' => 'Hesabınız açıldı.
 [[Special:Preferences|{{SITENAME}} tercihlerinizi]] değiştirmeyi unutmayın.',
 'yourname' => 'Kullanıcı adı:',
+'userlogin-yourname' => 'Kullanıcı adı',
+'userlogin-yourname-ph' => 'Kullanıcı adı girin',
 'yourpassword' => 'Parola:',
+'userlogin-yourpassword' => 'Parola',
+'userlogin-yourpassword-ph' => 'Parolanızı girin',
+'createacct-yourpassword-ph' => 'Bir parola girin',
 'yourpasswordagain' => 'Parolayı yeniden girin:',
+'createacct-yourpasswordagain' => 'Parolayı onayla',
+'createacct-yourpasswordagain-ph' => 'Parolayı yeniden girin',
 'remembermypassword' => 'Girişimi bu tarayıcıda hatırla (en fazla $1 {{PLURAL:$1|gün|gün}} için)',
+'userlogin-remembermypassword' => 'Oturumumu sürekli açık tut',
+'userlogin-signwithsecure' => 'Güvenli bağlantı kullanın',
 'securelogin-stick-https' => "Giriş yaptıktan sonra HTTPS'e bağlı kal",
 'yourdomainname' => 'Alan adınız:',
 'password-change-forbidden' => 'Bu vikide parolanızı değiştiremezsiniz.',
@@ -771,18 +793,38 @@ Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ ot
 'logout' => 'Oturumu kapat',
 'userlogout' => 'Oturumu kapat',
 'notloggedin' => 'Oturum açık değil',
+'userlogin-noaccount' => 'Bir hesabınız yok mu?',
+'userlogin-joinproject' => '{{SITENAME}} sitesine katılın',
 'nologin' => 'Bir hesabınız yok mu? $1.',
 'nologinlink' => 'Hesap oluşturun',
 'createaccount' => 'Hesap oluştur',
 'gotaccount' => 'Zaten bir hesabınız var mı? $1.',
 'gotaccountlink' => 'Oturum açın',
 'userlogin-resetlink' => 'Giriş bilgilerinizi mi unuttunuz?',
+'userlogin-resetpassword-link' => 'Parolanızı sıfırlayın',
+'helplogin-url' => 'Help:Oturum açma',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Oturum açma konusunda yardım alın]]',
+'createacct-join' => 'Aşağıya bilgilerinizi girin.',
+'createacct-emailrequired' => 'E-posta adresi',
+'createacct-emailoptional' => 'E-posta adresi (isteğe bağlı)',
+'createacct-email-ph' => 'E-posta adresinizi girin',
 'createaccountmail' => 'Geçici bir rastgele şifre kullan ve şifreyi aşağıda belirtilen e-posta adresine gönder',
+'createacct-realname' => 'Gerçek adı (isteğe bağlı)',
 'createaccountreason' => 'Sebep:',
+'createacct-reason' => 'Gerekçe',
+'createacct-reason-ph' => 'Neden başka bir hesap oluşturuyorsunuz',
+'createacct-captcha' => 'Güvenlik kontrolü',
+'createacct-imgcaptcha-ph' => 'Yukarıda gördüğünüz metni girin',
+'createacct-submit' => 'Hesabınızı oluşturun',
+'createacct-benefit-heading' => '{{SITENAME}} sizin gibi insanlar tarafından oluşturulur.',
+'createacct-benefit-body1' => '{{PLURAL:$1|düzenleme|düzenleme}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|sayfa|sayfa}}',
+'createacct-benefit-body3' => 'en son {{PLURAL:$1|katkıda bulunan|katkıda bulunan}}',
 'badretype' => 'Girdiğiniz şifreler birbirleriyle uyuşmuyor.',
 'userexists' => 'Girdiğiniz kullanıcı adı zaten kullanımda.
 Lütfen farklı bir kullanıcı adı seçiniz.',
 'loginerror' => 'Oturum açma hatası.',
+'createacct-error' => 'Hesap oluşturma hatası',
 'createaccounterror' => 'Hesap oluşturulamıyor: $1',
 'nocookiesnew' => 'Kullanıcı hesabı oluşturuldu ama oturum açamadınız.
 Oturum açmak için {{SITENAME}} çerezleri kullanır.
@@ -816,8 +858,7 @@ Parola değişimini siz istemediyseniz veya parolanızı hatırladıysanız ve a
 'blocked-mailpassword' => 'Siteye erişiminiz engellenmiş olduğundan, yeni şifre gönderilme işlemi yapılamamaktadır.',
 'eauthentsent' => 'Kaydedilen adrese onay kodu içeren bir e-posta gönderildi.
 E-postadaki yönerge uygulanıp adresin size ait olduğu onaylanmadıkça başka e-posta gönderilmeyecek.',
-'throttled-mailpassword' => 'Parola hatırlatıcı son {{PLURAL:$1|bir saat|$1 saat}} içinde zaten gönderildi.
-Hizmeti kötüye kullanmayı önlemek için, her {{PLURAL:$1|bir saatte|$1 saatte}} sadece bir parola hatırlatıcısı gönderilecektir.',
+'throttled-mailpassword' => 'Bir parola sıfırlama e-postası son {{PLURAL:$1|bir saat|$1 saat}} içinde zaten gönderildi. Hizmeti kötüye kullanmayı önlemek için, her {{PLURAL:$1|bir saatte|$1 saatte}} sadece bir parola sıfırlama e-postası gönderilecektir.',
 'mailerror' => 'E-posta gönderim hatası: $1',
 'acct_creation_throttle_hit' => 'Sizin IP adresinizi kullanarak bu vikiyi ziyaret edenler son günde {{PLURAL:$1|1 hesap|$1 hesap}} oluşturdu, bu sayı bu zaman aralığında izin verilen azami sayıdır.
 Sonuç olarak, bu IP adresini kullanan ziyaretçiler şu anda daha fazla hesap açamazlar.',
@@ -871,6 +912,7 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
 
 # Special:PasswordReset
 'passwordreset' => 'Parola sıfırlama',
+'passwordreset-text-one' => 'Parolanızı sıfırlamak için bu formu doldurun.',
 'passwordreset-legend' => 'Şifreyi sıfırla',
 'passwordreset-disabled' => 'Parola sıfırlamaları bu wiki üzerinde devre dışı bırakıldı.',
 'passwordreset-username' => 'Kullanıcı adı:',
@@ -894,9 +936,9 @@ $2
 Bu geçici parola ile giriş yapın ve yeni bir şifre seçin. Bu talep bir başkasına aitse veya şifrenizi hatırladıysanız ve artık şifrenizi değiştirmek istemiyorsanız; bu iletiyi önemsemeyerek eski şifrenizi kullanmaya devam edebilirsiniz.',
 'passwordreset-emailelement' => 'Kullanıcı adı: $1
 Geçici şifre: $2',
-'passwordreset-emailsent' => 'Hatırlatma e-postası gönderildi.',
-'passwordreset-emailsent-capture' => 'Aşağıda gözüktüğü gibi bir hatırlatma e-postası gönderilmiştir.',
-'passwordreset-emailerror-capture' => 'Aşağıda gözüktüğü gibi bir hatırlatma e-postası oluşturulmuştur ancak $1 adlı kullanıcıya gönderilememiştir.',
+'passwordreset-emailsent' => 'Parola sıfırlama e-postası gönderildi.',
+'passwordreset-emailsent-capture' => 'Aşağıda gözüktüğü gibi bir parola sıfırlama e-postası gönderildi.',
+'passwordreset-emailerror-capture' => 'Aşağıda gözüktüğü gibi bir parola sıfırlama e-postası oluşturuldu ancak {{GENDER:$2|kullanıcıya}} gönderme işlemi başarısız oldu: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-posta adresini değiştir',
@@ -1018,7 +1060,7 @@ Son engelleme günlüğü girdisi referans için aşağıda sağlanmıştır:',
 '''Henüz kaydedilmedi!'''",
 'sitejspreview' => "'''Sadece kullanıcı JavaScript kod dosyanızın önizlemesini görüyorsunuz.''' 
 '''Henüz kaydedilmedi!'''",
-'userinvalidcssjstitle' => "''Uyarı:''' \"\$1\" adıyla bir tema yoktur. tema-adı.css ve .js dosyalarının adları küçük harf ile yazması gerek, yani {{ns:user}}:Temel/'''V'''ector.css değil, {{ns:user}}:Temel/'''v'''ector.css.",
+'userinvalidcssjstitle' => '\'\'\'Uyarı:\'\'\' "$1" adında bir tema yoktur. Özel .css ve .js sayfalarının adlarını küçük harf ile yazın, örneğin;  "{{ns:user}}:Örnek/Vector.css" yerine "{{ns:user}}:Örnek/vector.css" yazın.',
 'updated' => '(Güncellendi)',
 'note' => "'''Not: '''",
 'previewnote' => "'''Bunun yalnızca bir ön izleme olduğunu unutmayın.'''
@@ -1048,8 +1090,8 @@ Sizin değişiklikleriniz alta gösterilmiştir. Son değişiklerinizi yazının
 'storedversion' => 'Kaydedilmiş metin',
 'nonunicodebrowser' => "'''UYARI: Tarayıcınız unicode uyumlu değil.
 Sayfaları güvenle değiştirmenize izin vermek için: ASCII olmayan karakterler değiştirme kutusunda onaltılık kodlar olarak görünecektir.'''",
-'editingold' => "'''DİKKAT: Sayfanın eski bir sürümünde değişiklik yapmaktasınız.
-Kaydettiğinizde bu tarihli sürümden günümüze kadar olan değişiklikler yok olacaktır.'''",
+'editingold' => "'''Uyarı: Sayfanın eski bir sürümünde değişiklik yapmaktasınız.'''
+Kaydettiğinizde bu tarihli sürümden günümüze kadar olan değişiklikler yok olacaktır.",
 'yourdiff' => 'Karşılaştırma',
 'copyrightwarning' => "'''Lütfen dikkat:''' {{SITENAME}} sitesine yapılan bütün katkılar $2 sözleşmesi kapsamındadır (ayrıntılar için $1'a bakınız).
 Yaptığınız katkının başka katılımcılar tarafından acımasızca değiştirilmesini ve sınırsızca başka yerlere dağıtılmasını istemiyorsanız, katkıda bulunmayınız.<br />
@@ -1340,7 +1382,6 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'searchmenu-legend' => 'Arama seçenekleri',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adında bir sayfa mevcut'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" sayfasını oluştur!'''",
-'searchhelp-url' => 'Help:İçindekiler',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu ön ekle sayfalara göz at]]',
 'searchprofile-articles' => 'İçerik sayfaları',
 'searchprofile-project' => 'Yardım ve proje sayfaları',
@@ -1838,7 +1879,7 @@ $1',
 'upload-proto-error-text' => "Uzaktan yükleme, <code>http://</code> veya <code>ftp://</code> ile başlayan URL'ler gerektirmektedir.",
 'upload-file-error' => 'Dahili hata',
 'upload-file-error-text' => 'Sunucuda geçici dosya oluşturma girişimi sırasında bir iç hata meydana geldi.
-Lütfen bir [[Special:ListUsers/sysop|yonetici]]yle iletişime geçin.',
+Lütfen bir [[Special:ListUsers/sysop|hizmetli]]ler iletişime geçin.',
 'upload-misc-error' => 'Bilinmeyen yükleme hatası',
 'upload-misc-error-text' => 'Yükleme sırasında bilinmeyen bir hata meydana geldi.
 Lütfen bağlantının geçerli ve ulaşılabilir olduğunu doğrulayın ve yeniden deneyin.
@@ -2299,7 +2340,7 @@ Bundan sonra, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklik
 'notvisiblerev' => 'Revizyon silinmiş',
 'watchnochange' => 'İzleme listenizdeki sayfaların hiçbiri, gösterilen zaman aralığında güncellenmemiş.',
 'watchlist-details' => 'Tartışma sayfaları hariç {{PLURAL:$1|$1 sayfa|$1 sayfa}} izleme listenizdedir.',
-'wlheader-enotif' => 'E-posta ile haber verme açılmıştır.',
+'wlheader-enotif' => 'E-posta bildirimi etkin.',
 'wlheader-showupdated' => "Son ziyaretinizden sonraki sayfa değişiklikleri '''kalın yazıyla''' gösterilmiştir.",
 'watchmethod-recent' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
 'watchmethod-list' => 'izlediğiniz sayfalarda yapılan son değişiklikler kontrol ediliyor',
@@ -3147,6 +3188,7 @@ Bunu çalıştırmak, sisteminizi tehlikeye atabilir.",
 'minutes' => '{{PLURAL:$1|$1 dakika|$1 dakika}}',
 'hours' => '{{PLURAL:$1|$1 saat|$1 saat}}',
 'days' => '{{PLURAL:$1|$1 gün|$1 gün}}',
+'weeks' => '{{PLURAL: $1|$1 hafta|$1 hafta}}',
 'months' => '{{PLURAL:$1|$1 ay|$1 ay}}',
 'years' => '{{PLURAL:$1|$1 yıl|$1 yıl}}',
 'ago' => '$1 önce',
@@ -3795,6 +3837,12 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'version-entrypoints-header-entrypoint' => 'Giriş noktası',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-submit' => 'Git',
+'redirect-value' => 'Değer:',
+'redirect-user' => 'Kullanıcı kimliği',
+'redirect-file' => 'Dosya adı',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Benzer dosyaları ara',
 'fileduplicatesearch-summary' => 'Sağlama değeri tabanında benzer dosyaları ara.',
@@ -3884,6 +3932,8 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'htmlform-submit' => 'Gönder',
 'htmlform-reset' => 'Değişiklikleri geri al',
 'htmlform-selectorother-other' => 'Diğer',
+'htmlform-no' => 'Hayır',
+'htmlform-yes' => 'Evet',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 tam-metin arama desteği ile',
@@ -3908,10 +3958,10 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'logentry-move-move-noredirect' => '$1 $3 sayfasını $4 sayfasına yönlendirme olmaksızın taşıdı',
 'logentry-move-move_redir' => '$1 $3 sayfasını $4 sayfasına yönlendirme üzerinden taşıdı',
 'logentry-patrol-patrol-auto' => '$1 $3 sayfasını $4 sürümü ile kontrol etti',
-'logentry-newusers-newusers' => 'Kullanıcı hesabı $1 oluşturdu',
-'logentry-newusers-create' => 'Kullanıcı hesabı $1 oluşturdu',
-'logentry-newusers-create2' => '$1 kullanıcı hesabı oluşturdu $3',
-'logentry-newusers-autocreate' => '$1 hesabı otomatik olarak oluşturuldu',
+'logentry-newusers-newusers' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
+'logentry-newusers-create' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
+'logentry-newusers-create2' => '$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}}',
+'logentry-newusers-autocreate' => '$1 kullanıcı hesabı otomatik olarak {{GENDER:$2|oluşturuldu}}',
 'rightsnone' => '(hiçbiri)',
 
 # Feedback
index 9fbb8f8..6e6ce4e 100644 (file)
@@ -167,7 +167,6 @@ $messages = array(
 'disclaimers' => 'Disclaimers',
 'disclaimerpage' => 'Project: Disclaimer gawonoyo',
 'edithelp' => 'Editing help',
-'edithelppage' => 'Help:Mşaḥlaf',
 'helppage' => 'Help: Ḥbişoṭo',
 'mainpage' => 'Faṭo rişoyto',
 'mainpage-description' => 'Faṭo rişoyto',
@@ -400,7 +399,6 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 'searchmenu-legend' => '3ayar duKruxyo',
 'searchmenu-exists' => "'''Kito Faṭo herke Işma \"[[:\$1]]\"yo'''",
 'searchmenu-new' => 'Kṭaw iFaṭaṭe "[[:$1]]" buWiki.',
-'searchhelp-url' => 'Help: Ḥbişoṭo',
 'searchprofile-articles' => 'Faṭoṭe daḤbişoṭo',
 'searchprofile-project' => 'Faṭoṭe du3udrono u daProjat',
 'searchprofile-images' => 'Multimediya',
index 50a2b3e..dae353e 100644 (file)
@@ -224,7 +224,6 @@ $messages = array(
 'disclaimers' => 'Swi alanandzu',
 'disclaimerpage' => 'Project:Swithsuxa nadzu hikuangara',
 'edithelp' => 'Mpfuno hi ta mindzulamiso',
-'edithelppage' => 'Help:Mindzulamiso',
 'helppage' => 'Help:Leswinga ndzeni',
 'mainpage' => 'Tlukankulu',
 'mainpage-description' => 'Tluka-Nkulu',
@@ -512,7 +511,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 'viewprevnext' => 'Vona ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Tluka leri vuriwaka \"[[:\$1]]\" ikhale ririkona eka wiki leyi.'''",
 'searchmenu-new' => "'''Tumbuluxa tluka ra \"[[:\$1]]\" eka wiki leyi!'''",
-'searchhelp-url' => 'Help:Leswinga ndzeni',
 'searchprofile-articles' => 'Matluka lama tsariweke',
 'searchprofile-project' => 'Mpfuno na matluka ya phurojeki',
 'searchprofile-images' => 'Tifayili ta mfpumawulo na swifaniso',
index dbb1acc..1a4b04b 100644 (file)
@@ -451,7 +451,6 @@ $1',
 'disclaimers' => 'Җаваплылыктан баш тарту',
 'disclaimerpage' => 'Project:Җаваплылыктан баш тарту',
 'edithelp' => 'Үзгәртү буенча ярдәм',
-'edithelppage' => 'Help:Үзгәртү',
 'helppage' => 'Help:Эчтәлек',
 'mainpage' => 'Баш бит',
 'mainpage-description' => 'Баш бит',
@@ -711,10 +710,8 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'Серсүзне бетерү',
-'passwordreset-text' => 'Сезнең хисап язмасының параметрлары турында хат алыр өчен, түбәндәгеләрне тутырыгыз',
 'passwordreset-legend' => 'Серсүзне яңадан кую',
 'passwordreset-disabled' => 'Бу викида серсүз бетереп булмый',
-'passwordreset-pretext' => '{{PLURAL:$1||Түбәндә күрсәтелгән мәгълүматларның бер өлешен языгыз}}',
 'passwordreset-username' => 'Кулланучы исеме:',
 'passwordreset-domain' => 'Домен:',
 'passwordreset-capture' => 'Килеп чыккан хатны күрсәтелсенме?',
@@ -1129,7 +1126,6 @@ $1",
 'searchmenu-legend' => 'Эзләү көйләнмәләре',
 'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» исемле бит бар инде'''",
 'searchmenu-new' => "'''«[[:$1]]»  исемле яңа бит ясау'''",
-'searchhelp-url' => 'Help:Эчтәлек',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикслы битләрне күрсәтү]]',
 'searchprofile-articles' => 'Төп битләр',
 'searchprofile-project' => 'Ярдәм һәм проектлар бите',
index bd0096e..63642e4 100644 (file)
@@ -329,7 +329,6 @@ $1',
 'disclaimers' => 'Cawaplılıqtan baş tartu',
 'disclaimerpage' => 'Project:Cawaplılıqtan baş tartu',
 'edithelp' => 'Üzgärtü buyınça yärdäm',
-'edithelppage' => 'Help:Üzgärtü',
 'helppage' => 'Help:Eçtälek',
 'mainpage' => 'Baş bit',
 'mainpage-description' => 'Baş bit',
@@ -897,7 +896,6 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'viewprevnext' => 'Kürsätelüe: ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-legend' => 'Ezläw köylänmäläre',
 'searchmenu-new' => "'''«[[:$1]]»  isemle yaña bit yasaw'''",
-'searchhelp-url' => 'Help:Eçtälek',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefikslı bitlärne kürsätü]]',
 'searchprofile-articles' => 'Töp bitlär',
 'searchprofile-project' => 'Yärdäm häm proyektlar bite',
index 43d580b..9383dc2 100644 (file)
@@ -23,20 +23,30 @@ $namespaceNames = array(
        NS_SPECIAL          => 'Тускай',
        NS_TALK             => 'Чугаа',
        NS_USER             => 'Aжыглакчы',
-       NS_USER_TALK        => 'Aжыглакчы_чугаазы',
-       NS_PROJECT_TALK     => '$1_чугаазы',
+       NS_USER_TALK        => 'Aжыглакчы_чугаа',
+       NS_PROJECT_TALK     => '$1_чугаа',
        NS_FILE             => 'Файл',
-       NS_FILE_TALK        => 'Файл_чугаазы',
+       NS_FILE_TALK        => 'Файл_чугаа',
        NS_MEDIAWIKI        => 'МедиаВики',
-       NS_MEDIAWIKI_TALK   => 'МедиаВики_чугаазы',
+       NS_MEDIAWIKI_TALK   => 'МедиаВики_чугаа',
        NS_TEMPLATE         => 'Майык',
-       NS_TEMPLATE_TALK    => 'Майык_чугаазы',
+       NS_TEMPLATE_TALK    => 'Майык_чугаа',
        NS_HELP             => 'Дуза',
-       NS_HELP_TALK        => 'Дуза_чугаазы',
-       NS_CATEGORY         => 'Ð\9aаÑ\82егоÑ\80иÑ\8f',
-       NS_CATEGORY_TALK    => 'Ð\9aаÑ\82егоÑ\80иÑ\8f\87Ñ\83гаазÑ\8b',
+       NS_HELP_TALK        => 'Дуза_чугаа',
+       NS_CATEGORY         => 'Ð\90ңгÑ\8bлал',
+       NS_CATEGORY_TALK    => 'Ð\90ңгÑ\8bлал_Ñ\87Ñ\83гаа',
 );
 
+$namespaceAliases = array(
+       'Aжыглакчы_чугаазы'  => NS_USER_TALK,
+       '$1_чугаазы'         => NS_PROJECT_TALK,
+       'Файл_чугаазы'       => NS_FILE_TALK,
+       'МедиаВики_чугаазы'  => NS_MEDIAWIKI_TALK,
+       'Майык_чугаазы'      => NS_TEMPLATE_TALK,
+       'Дуза_чугаазы'       => NS_HELP_TALK,
+       'Категория'          => NS_CATEGORY,
+       'Категория_чугаазы'  => NS_CATEGORY_TALK,
+);
 
 $magicWords = array(
        'redirect'                  => array( '0', '#көжүрүлге', '#ШИГЛЕДИР', '#перенаправление', '#перенапр', '#REDIRECT' ),
@@ -294,7 +304,6 @@ $messages = array(
 'disclaimers' => 'Ажыглаар харысаалгазын чөрчүүрү (ойталаары)',
 'disclaimerpage' => 'Project:Ажыглаар харысаалгазын ойталаары',
 'edithelp' => 'Эдеринге дуза',
-'edithelppage' => 'Help:Эдери',
 'helppage' => 'Help:Допчузу',
 'mainpage' => 'Кол Арын',
 'mainpage-description' => 'Кол Арын',
@@ -597,7 +606,6 @@ Please check if you want to create/edit this page.',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
 'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
 'searchmenu-new' => "'''Бо викиде «[[:$1]]» арынны чогаадыры'''",
-'searchhelp-url' => 'Help:Допчузу',
 'searchprofile-articles' => 'үндезин арыннар',
 'searchprofile-project' => 'Төлевилел биле дуза арыннары',
 'searchprofile-images' => 'Мультимедиа',
index 74e0783..7c16f4a 100644 (file)
@@ -23,8 +23,8 @@ $namespaceNames = array(
        NS_USER             => 'Викиавтор',
        NS_USER_TALK        => 'Викиавтор_сярысь_вераськон',
        NS_PROJECT_TALK     => '$1_сярысь_вераськон',
-       NS_FILE             => 'СÑ\83Ñ\80ед',
-       NS_FILE_TALK        => 'СÑ\83Ñ\80ед_сярысь_вераськон',
+       NS_FILE             => 'Файл',
+       NS_FILE_TALK        => 'Файл_сярысь_вераськон',
        NS_MEDIAWIKI        => 'MediaWiki',
        NS_MEDIAWIKI_TALK   => 'MediaWiki_сярысь_вераськон',
        NS_TEMPLATE         => 'Шаблон',
@@ -35,6 +35,11 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Категория_сярысь_вераськон',
 );
 
+$namespaceAliases = array(
+       'Суред'                  => NS_FILE,
+       'Суред_сярысь_вераськон' => NS_FILE_TALK,
+);
+
 // Remove Russian aliases
 $namespaceGenderAliases = array();
 
index 1beb939..fc92446 100644 (file)
@@ -22,17 +22,21 @@ $namespaceNames = array(
        NS_SPECIAL          => 'ئالاھىدە',
        NS_TALK             => 'مۇنازىرە',
        NS_USER             => 'ئىشلەتكۈچى',
-       NS_USER_TALK        => 'ئىشلەتكۈچى مۇنازىرىسى',
-       NS_PROJECT_TALK     => 'مۇنازىرىسى$1',
+       NS_USER_TALK        => 'ئىشلەتكۈچى_مۇنازىرىسى',
+       NS_PROJECT_TALK     => '$1مۇنازىرىسى',
        NS_FILE             => 'ھۆججەت',
-       NS_FILE_TALK        => 'ھۆججەت مۇنازىرىسى',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki مۇنازىرىسى',
+       NS_FILE_TALK        => 'ھۆججەت_مۇنازىرىسى',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_مۇنازىرىسى',
        NS_TEMPLATE         => 'قېلىپ',
-       NS_TEMPLATE_TALK    => 'قېلىپ مۇنازىرىسى',
+       NS_TEMPLATE_TALK    => 'قېلىپ_مۇنازىرىسى',
        NS_HELP             => 'ياردەم',
-       NS_HELP_TALK        => 'ياردەم مۇنازىرىسى',
+       NS_HELP_TALK        => 'ياردەم_مۇنازىرىسى',
        NS_CATEGORY         => 'تۈر',
-       NS_CATEGORY_TALK    => 'تۈر مۇنازىرىسى',
+       NS_CATEGORY_TALK    => 'تۈر_مۇنازىرىسى',
+);
+
+$namespaceAliases = array(
+       'مۇنازىرىسى$1' => NS_PROJECT_TALK,
 );
 
 $specialPageAliases = array(
@@ -286,7 +290,6 @@ $1',
 'disclaimers' => 'جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
 'disclaimerpage' => 'Project:ئادەتتىكى جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
 'edithelp' => 'تەھرىرلەش ياردىمى',
-'edithelppage' => 'Help:تەھرىرلەۋاتىدۇ',
 'helppage' => 'Help:مەزمۇنلار',
 'mainpage' => 'باش بەت',
 'mainpage-description' => 'باش بەت',
@@ -617,10 +620,8 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 
 # Special:PasswordReset
 'passwordreset' => 'ئىمنى ئەسلىگە قايتۇرماق',
-'passwordreset-text' => 'بۇ جەدۋەل تاماملانسا ھېسابات تەپسىلاتىڭىزنى ئېلخەتىڭىزدە تاپشۇرۇۋالىسىز.',
 'passwordreset-legend' => 'ئىمنى ئەسلىگە قايتۇرماق',
 'passwordreset-disabled' => 'بۇ ۋىكىدا ئىمنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
-'passwordreset-pretext' => '{{PLURAL:$1||تۆۋەندىكى سانلىق مەلۇماتتىن بىرنى كىرگۈزۈڭ}}',
 'passwordreset-username' => 'ئىشلەتكۈچى ئاتى:',
 'passwordreset-domain' => 'دائىرە:',
 'passwordreset-capture' => 'ھاسىل قىلىنغان ئېلخەتنى كۆرسىتەمدۇ؟',
@@ -1115,7 +1116,6 @@ $1",
 'searchmenu-legend' => 'ئىزدەش تاللانما',
 'searchmenu-exists' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت بار '''",
 'searchmenu-new' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت قۇر!'''",
-'searchhelp-url' => 'Help:مەزمۇنلار',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بۇنى ئالدى قوشۇلغۇچى قىلغان بەتكە كۆز يۈگۈرت ]]',
 'searchprofile-articles' => 'مەزمۇن بېتى',
 'searchprofile-project' => 'ياردەم ۋە قۇرۇلۇش بەتلەر',
index c93757f..05e2de6 100644 (file)
@@ -22,6 +22,7 @@
  * @author DixonD
  * @author Dubyk
  * @author EugeneZelenko
+ * @author Geitost
  * @author Gucci Mane Burrr
  * @author Gutsul (Gutsul.ua at Google Mail)
  * @author Ickis
@@ -561,6 +562,7 @@ $messages = array(
 'create-this-page' => 'Створити цю сторінку',
 'delete' => 'Вилучити',
 'deletethispage' => 'Вилучити цю сторінку',
+'undeletethispage' => 'Відновити цю сторінку',
 'undelete_short' => 'Відновити $1 {{PLURAL:$1|редагування|редагування|редагувань}}',
 'viewdeleted_short' => 'Переглянути {{PLURAL:$1|одне вилучене редагування|$1 вилучених редагування|$1 вилучених редагувань}}',
 'protect' => 'Захистити',
@@ -614,7 +616,6 @@ $1',
 'disclaimers' => 'Відмова від відповідальності',
 'disclaimerpage' => 'Project:Відмова від відповідальності',
 'edithelp' => 'Довідка про редагування',
-'edithelppage' => 'Help:Редагування',
 'helppage' => 'Help:Довідка',
 'mainpage' => 'Головна сторінка',
 'mainpage-description' => 'Головна сторінка',
@@ -763,6 +764,8 @@ $1',
 'namespaceprotected' => 'У вас нема дозволу редагувати сторінки в просторі назв «$1».',
 'customcssprotected' => 'У вас немає прав на редагування цієї CSS-сторінки, так як вона містить особисті налаштування іншого користувача.',
 'customjsprotected' => 'У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.',
+'mycustomcssprotected' => 'У вас немає прав для редагування цієї CSS сторінки.',
+'mycustomjsprotected' => 'Ви не маєте дозволу для редагування цієї сторінки JavaScript.',
 'ns-specialprotected' => 'Спеціальні сторінки не можна редагувати.',
 'titleprotected' => "Створення сторінки з такою назвою було заборонене користувачем [[User:$1|$1]].
 Зазначена наступна причина: ''$2''.",
@@ -797,7 +800,7 @@ $1',
 'createacct-yourpasswordagain-ph' => 'Введіть пароль знову',
 'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
 'userlogin-remembermypassword' => "Запам'ятати мене",
-'userlogin-signwithsecure' => "Ð\92икоÑ\80иÑ\81Ñ\82овÑ\83ваÑ\82и Ð·ахищене з'єднання",
+'userlogin-signwithsecure' => "Ð\97ахищене з'єднання",
 'securelogin-stick-https' => 'Залишайтись підключенним через HTTPS після входу',
 'yourdomainname' => 'Ваш домен:',
 'password-change-forbidden' => 'Ви не можна змінити пароль на цій вікі.',
@@ -811,8 +814,8 @@ $1',
 'userlogout' => 'Вихід із системи',
 'notloggedin' => 'Ви не ввійшли до системи',
 'userlogin-noaccount' => 'Немає облікового запису?',
-'userlogin-joinproject' => 'Приєднатися до {{SITENAME}}',
-'nologin' => "Ви ще не зареєструвались? '''$1'''.",
+'userlogin-joinproject' => 'Приєднатися до {{GRAMMAR:genitive|{{SITENAME}}}}',
+'nologin' => 'Ви ще не зареєструвались? $1.',
 'nologinlink' => 'Створіть обліковий запис',
 'createaccount' => 'Зареєструватися',
 'gotaccount' => "Ви вже зареєстровані? '''$1'''.",
@@ -900,7 +903,7 @@ $1',
 'cannotchangeemail' => 'У цій вікі не можна міняти свою адресу ел. пошти.',
 'emaildisabled' => 'Цей сайт не може надіслати електронні листи.',
 'accountcreated' => 'Обліковий запис створено.',
-'accountcreatedtext' => 'Ð\9eблÑ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 Ð´Ð»Ñ\8f $1 Ñ\81Ñ\82воÑ\80ено.',
+'accountcreatedtext' => 'Ð\9eблÑ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а Ð´Ð»Ñ\8f [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|обговоÑ\80еннÑ\8f]]) Ð±Ñ\83в Ñ\81Ñ\82воÑ\80ений.',
 'createaccount-title' => 'Створення облікового запису для {{SITENAME}}',
 'createaccount-text' => 'Хтось створив обліковий запис «$2» на сервері проекту {{SITENAME}} ($4) з паролем «$3», зазначивши вашу адресу електронної пошти. Вам слід зайти і змінити пароль.
 
@@ -913,7 +916,7 @@ $1',
 'suspicious-userlogout' => 'Ваш запит на завершення сеанса відхилений, оскільки він схожий на запит, відправлений зіпсованим веб-оглядачем або кешуючим проксі-сервером.',
 
 # Email sending
-'php-mail-error-unknown' => 'Невідома помилка в PHP-mail() функції',
+'php-mail-error-unknown' => 'Невідома помилка в PHP-функції mail()',
 'user-mail-no-addy' => 'Спроба надсилання електронної пошти без зазначеної адреси електронної пошти.',
 'user-mail-no-body' => 'Спроба надіслати електронного листа з порожнім або надто коротким вмістом.',
 
@@ -938,6 +941,8 @@ $1',
 
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
+'passwordreset-text-one' => 'Заповніть цю форму для відновлення пароля.',
+'passwordreset-text-many' => '{{PLURAL:$1|Введіть один з елементів даних для скидання пароля.}}',
 'passwordreset-legend' => 'Перевстановити пароль',
 'passwordreset-disabled' => 'У цій вікі вимкнена можливість скидання пароля.',
 'passwordreset-emaildisabled' => 'Функції електронної пошти вимкнуто в цій вікі.',
@@ -1190,7 +1195,7 @@ $2
 'invalid-content-data' => 'Неприпустимі дані',
 'content-not-allowed-here' => 'Вміст «$1» недопустимий на сторінці [[$2]]',
 'editwarning-warning' => 'Перехід на іншу сторінку призведе до втрати ваших змін.
-Якщо ви ввійшли до системи, то ви можете відключити це попередження в розділі «{{int:prefs-editing}}» ваших налаштувань.',
+Якщо ви ввійшли до системи, то ви можете відключити це попередження в розділі «Редагування» ваших налаштувань.',
 
 # Content models
 'content-model-wikitext' => 'вікітекст',
@@ -1433,7 +1438,6 @@ $1",
 'searchmenu-legend' => 'Параметри пошуку',
 'searchmenu-exists' => "'''У цій вікі є сторінка з назвою «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у цій вікі!'''",
-'searchhelp-url' => 'Help:Довідка',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показати сторінки з цим префіксом]]',
 'searchprofile-articles' => 'Статті',
 'searchprofile-project' => 'Сторінки довідки і проекту',
@@ -1624,6 +1628,7 @@ $1",
 'userrights-unchangeable-col' => 'Групи, які ви не можете змінити',
 'userrights-irreversible-marker' => '$1*',
 'userrights-conflict' => 'Конфлікт прав користувача! Будь ласка, застосуйте зміни знову.',
+'userrights-removed-self' => 'Ви успішно позбавили себе власних прав. Через це Ви більше не маєте доступу до цієї сторінки.',
 
 # Groups
 'group' => 'Група:',
@@ -1694,6 +1699,8 @@ $1",
 'right-editusercssjs' => 'Редагування CSS- і JS-файлів інших користувачів',
 'right-editusercss' => 'Редагування CSS-файлів інших користувачів',
 'right-edituserjs' => 'Редагування JS-файлів інших користувачів',
+'right-editmyusercss' => 'Редагування власних CSS-файлів користувача',
+'right-editmyuserjs' => 'Редагування власних JavaScript-файлів користувача',
 'right-rollback' => 'Швидкий відкіт редагувань останнього користувача, який редагував сторінку',
 'right-markbotedits' => 'Позначення відкинутих редагувань як редагування бота',
 'right-noratelimit' => 'Нема обмежень за швидкістю',
@@ -1951,7 +1958,7 @@ $1',
 'upload-file-error' => 'Внутрішня помилка',
 'upload-file-error-text' => 'Сталася внутрішня помилка при спробі створити тимчасовий файл на сервері. Будь-ласка, зверніться до [[Special:ListUsers/sysop|адміністратора]].',
 'upload-misc-error' => 'Невідома помилка завантаження',
-'upload-misc-error-text' => 'Невідома помилка завантаження. Будь-ласка, перевірте, що вказана адреса вірна й спробуйте ще. Якщо проблема виникає знову, зверніться до системного адміністратора.',
+'upload-misc-error-text' => 'Невідома помилка завантаження. Будь-ласка, перевірте, що вказана адреса вірна й спробуйте ще. Якщо проблема виникає знову, зверніться до [[Special:ListUsers/sysop|адміністратора]].',
 'upload-too-many-redirects' => 'URL містить надто багато перенаправлень',
 'upload-unknown-size' => 'Невідомий розмір',
 'upload-http-error' => 'Відбулася помилка HTTP: $1',
@@ -2252,7 +2259,7 @@ $1',
 'wantedpages' => 'Необхідні статті',
 'wantedpages-badtitle' => 'Неправильний заголовок у результатах запиту: $1',
 'wantedfiles' => 'Необхідні файли',
-'wantedfiletext-cat' => 'Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>. Крім того, сторінки, що використовують неіснуюч файли, перелічені в [[:$1]].',
+'wantedfiletext-cat' => 'Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>. Крім того, сторінки, що використовують неіснуючі файли, перелічені в [[:$1]].',
 'wantedfiletext-nocat' => 'Наступні файли використовують, але вони не існують. У цей список можуть помилково потрапити файли, що знаходяться на зовнішніх сховищах. Такі хибні моменти помічаються <del>перекреслюванням</del>.',
 'wantedtemplates' => 'Необхідні шаблони',
 'mostlinked' => 'Сторінки, на які найбільше посилань',
@@ -2707,7 +2714,7 @@ $1',
 'mycontris' => 'Внесок',
 'contribsub2' => 'Внесок $1 ($2)',
 'nocontribs' => 'Редагувань, що задовольняють заданим умовам не знайдено.',
-'uctop' => ' (остання)',
+'uctop' => '(поточна)',
 'month' => 'До місяця (включно):',
 'year' => 'До року (включно):',
 
index 2d210ef..d6b04ca 100644 (file)
@@ -28,17 +28,17 @@ $fallback8bitEncoding = 'windows-1256';
 $rtl = true;
 
 $namespaceNames = array(
-       NS_MEDIA            => 'زریعہ',
+       NS_MEDIA            => 'وسیط',
        NS_SPECIAL          => 'خاص',
        NS_MAIN             => '',
        NS_TALK             => 'تبادلۂ_خیال',
        NS_USER             => 'صارف',
        NS_USER_TALK        => 'تبادلۂ_خیال_صارف',
        NS_PROJECT_TALK     => 'تبادلۂ_خیال_$1',
-       NS_FILE             => 'تصویر',
-       NS_FILE_TALK        => 'تبادلۂ_خیال_تصویر',
-       NS_MEDIAWIKI        => 'میڈیاوکی',
-       NS_MEDIAWIKI_TALK   => 'تبادلۂ_خیال_میڈیاوکی',
+       NS_FILE             => 'ملف',
+       NS_FILE_TALK        => 'تبادلۂ_خیال_ملف',
+       NS_MEDIAWIKI        => 'میڈیاویکی',
+       NS_MEDIAWIKI_TALK   => 'تبادلۂ_خیال_میڈیاویکی',
        NS_TEMPLATE         => 'سانچہ',
        NS_TEMPLATE_TALK    => 'تبادلۂ_خیال_سانچہ',
        NS_HELP             => 'معاونت',
@@ -47,6 +47,14 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'تبادلۂ_خیال_زمرہ',
 );
 
+$namespaceAliases = array(
+       'زریعہ'            => NS_MEDIA,
+       'تصویر'            => NS_FILE,
+       'تبادلۂ_خیال_تصویر'   => NS_FILE_TALK,
+       'میڈیاوکی'          => NS_MEDIAWIKI,
+       'تبادلۂ_خیال_میڈیاوکی' => NS_MEDIAWIKI_TALK,
+);
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'متحرک_صارفین' ),
        'Allmessages'               => array( 'تمام_پیغامات' ),
@@ -269,7 +277,7 @@ $messages = array(
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|زمرہ|زمرہ جات}}',
 'category_header' => 'زمرہ "$1" میں مضامین',
-'subcategories' => 'Ø°Û\8cÙ\84Û\8c Ø°مرہ جات',
+'subcategories' => 'Ø°Û\8cÙ\84Û\8c Ø²مرہ جات',
 'category-media-header' => 'زمرہ "$1" میں وسیط',
 'category-empty' => '‘‘اِس زمرہ میں ابھی کوئی صفحات یا وسیط موجود نہیں.’’',
 'hidden-categories' => '{{PLURAL:$1|پوشیدہ زمرہ|پوشیدہ زمرہ جات}}',
@@ -310,7 +318,7 @@ $messages = array(
 'vector-view-create' => 'تخلیق',
 'vector-view-edit' => 'ترمیم',
 'vector-view-history' => 'تاریخ',
-'vector-view-view' => 'Ù¾Ú\91Ú¾Û\8cÚº',
+'vector-view-view' => 'Ù\85طاÙ\84عÛ\81',
 'vector-view-viewsource' => 'مسودہ',
 'actions' => 'ایکشنز',
 'namespaces' => 'جائے نام',
@@ -378,7 +386,7 @@ $1',
 'pool-errorunknown' => 'نامعلوم خطا',
 
 # All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
-'aboutsite' => 'کا تعارف {{SITENAME}}',
+'aboutsite' => 'تعارف {{SITENAME}}',
 'aboutpage' => 'Project:تعارف',
 'copyright' => 'تمام مواد $1 کے تحت میسر ہے۔',
 'copyrightpage' => '{{ns:project}}:حقوق تصانیف',
@@ -387,7 +395,6 @@ $1',
 'disclaimers' => 'اعلانات',
 'disclaimerpage' => 'Project:عام اعلان',
 'edithelp' => 'معاونت براۓ ترمیم',
-'edithelppage' => 'Help:ترمیم',
 'helppage' => 'Help:فہرست',
 'mainpage' => 'صفحہ اول',
 'mainpage-description' => 'صفحہ اول',
@@ -798,6 +805,7 @@ $1 نے پابندی لگائی تھی.
 لگتا ہے یہ حذف ہوچکا ہے.',
 'edit-conflict' => 'تنازعۂ تدوین.',
 'edit-no-change' => 'آپ کی تدوین کو نظرانداز کردیا گیا، کیونکہ متن میں کوئی تبدیلی نہیں ہوئی تھی.',
+'postedit-confirmation' => 'آپ کی ترمیم محفوظ ہوگئی۔',
 'edit-already-exists' => 'نیا صفحہ تخلیق نہیں کیا جاسکتا.
 یہ پہلے سے موجود ہے.',
 
@@ -921,7 +929,6 @@ $1",
 'searchmenu-legend' => 'اختیاراتِ تلاش',
 'searchmenu-exists' => "'''اِس ویکی پر \"[[:\$1]]\" نامی ایک صفحہ موجود ہے'''",
 'searchmenu-new' => "'''اِس ویکی پر صفحہ \"[[:\$1]]\" تخلیق کیجئے!'''",
-'searchhelp-url' => 'Help:فہرست',
 'searchprofile-articles' => 'مشمولاتی صفحات',
 'searchprofile-project' => 'صفحاتِ مدد و منصوبہ',
 'searchprofile-images' => 'کثیرالوسیط',
@@ -931,7 +938,7 @@ $1",
 'searchprofile-project-tooltip' => '$1 میں تلاش',
 'searchprofile-images-tooltip' => 'تلاش برائے ملفات',
 'searchprofile-everything-tooltip' => ' تلاش تمام مشمولات (بشمول تبادلۂ خیال صفحات) میں',
-'searchprofile-advanced-tooltip' => 'اپنی پسند کے فضائے نام میں تلاش',
+'searchprofile-advanced-tooltip' => 'اپنی پسند کے جائے نام میں تلاش',
 'search-result-size' => '$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})',
 'search-result-category-size' => '{{PLURAL:$1|1 رُکن|$1 اراکین}} ({{PLURAL:$2|1 ذیلی زمرہ|$2 ذیلی زمرہ جات}}, {{PLURAL:$3|1 ملف|$3 ملفات}})',
 'search-result-score' => 'توافق: $1%',
@@ -1153,7 +1160,7 @@ HTML tags جانچئے.',
 'recentchangeslinked-page' => 'صفحۂ منصوبہ دیکھئے',
 
 # Upload
-'upload' => 'Ù\81ائÙ\84 Ø¨Ú¾Û\8cجÛ\8cÚº',
+'upload' => 'Ù\81ائÙ\84 Ø§Ø«Ù\82اÙ\84',
 'uploadbtn' => 'زبراثقال ملف (اپ لوڈ فائل)',
 'reuploaddesc' => 'زبراثقال ورقہ (فارم) کیجانب واپس۔',
 'uploadnologin' => 'آپ داخل شدہ حالت میں نہیں',
@@ -1402,7 +1409,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 'sp-contributions-newbies' => 'صرف نئے کھاتوں کے مساہمات دکھاؤ',
 'sp-contributions-blocklog' => 'نوشتۂ پابندی',
-'sp-contributions-uploads' => 'آپÙ\84Ù\88Ú\88',
+'sp-contributions-uploads' => 'اثÙ\82اÙ\84ات',
 'sp-contributions-logs' => 'نوشتہ جات',
 'sp-contributions-talk' => 'گفتگو',
 'sp-contributions-userrights' => 'صارف کے حقوق کا انتظام',
@@ -1412,7 +1419,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'sp-contributions-submit' => 'تلاش',
 
 # What links here
-'whatlinkshere' => 'ادھر Ú©Ø³ Ú©Ø§ Ø¬Ù\88Ú\91 ہے',
+'whatlinkshere' => 'ادھر Ú©Ø³ Ú©Ø§ Ø±Ø¨Ø· ہے',
 'whatlinkshere-title' => '"$1" سے مربوط صفحات',
 'whatlinkshere-page' => 'صفحہ:',
 'linkshere' => "'''[[:$1]]''' سے درج ذیل صفحات مربوط ہیں:",
@@ -1420,7 +1427,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'isredirect' => 'لوٹایا گیا صفحہ',
 'istemplate' => 'شامل شدہ',
 'isimage' => 'ربطِ ملف',
-'whatlinkshere-links' => 'روابط',
+'whatlinkshere-links' => 'روابط ←',
 'whatlinkshere-hideredirs' => 'رجوع مکررات $1',
 'whatlinkshere-hidetrans' => 'تضمینات',
 'whatlinkshere-hidelinks' => 'روابط $1',
@@ -1547,7 +1554,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'tooltip-ca-nstab-category' => 'زمرہ‌جاتی صفحہ دیکھئے',
 'tooltip-minoredit' => 'اِس تدوین کو بطورِ معمولی ترمیم نشانزد کیجئے',
 'tooltip-save' => 'تبدیلیاں محفوظ کیجئے',
-'tooltip-preview' => 'برائے مہربانی! محفوظ کرنے سے پہلے تبدیلیوں کا پیشمنظر دیکھئے',
+'tooltip-preview' => 'برائے مہربانی! محفوظ کرنے سے پہلے تبدیلیوں کا پیش منظر دیکھيے',
 'tooltip-diff' => 'دیکھئے کہ اپنے متن میں کیا تبدیلیاں کیں',
 'tooltip-compareselectedversions' => 'اِس صفحہ کی دو منتخب نظرثانیوں میں فرق دیکھئے',
 'tooltip-watch' => 'اِس صفحہ کو اپنی زیرِنظرفہرست میں شامل کریں',
index e7dba1f..0e08d1d 100644 (file)
@@ -121,7 +121,7 @@ $messages = array(
 'tog-editsection' => '[tahrir] havolasini har bir boʻlim boshida koʻrsatish',
 'tog-editsectiononrightclick' => 'Boʻlim sarlavhasiga sichqonchaning oʻng tugmasi bilan bosib tahrirlashni boshlash',
 'tog-showtoc' => 'Mundarijani koʻrsatish (3 tadan koʻproq sarlavha bor sahifalarda)',
-'tog-rememberpassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
+'tog-rememberpassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 kunga)',
 'tog-watchcreations' => 'Men yaratgan sahifalarni va yuklagan fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchdefault' => 'Men tahrirlagan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
 'tog-watchmoves' => 'Men koʻchirgan sahifa va fayllarni kuzatuv roʻyxatimga qoʻsh',
@@ -149,7 +149,7 @@ $messages = array(
 'tog-ccmeonemails' => 'Boshqa ishtirokchilarga yozgan xatimning nusxasi oʻzimga yuborilsin',
 'tog-diffonly' => 'Versiyalar taqqoslanayotganda, pastda sahifa matni koʻrsatilmasin',
 'tog-showhiddencats' => 'Yashirin turkumlarni koʻrsatish',
-'tog-noconvertlink' => "Sarlavhaga aylantirish dastagini o'chirib qo'yish",
+'tog-noconvertlink' => 'Sarlavhani oʻzgartirish havolasini oʻchirib qoʻyish',
 'tog-norollbackdiff' => 'Tahrir qaytarilganda, versiyalar taqqosi koʻrsatilmasin',
 'tog-useeditwarning' => 'Kiritgan oʻzgarishlarimni saqlamay sahifadan chiqib ketayotganim haqida ogohlantirilsin',
 
@@ -351,7 +351,6 @@ $1',
 'disclaimers' => 'Ogohlantirishlar',
 'disclaimerpage' => 'Project:Umumiy ogohlantirish',
 'edithelp' => 'Tahrirlash yordami',
-'edithelppage' => 'Help:Tahrirlash',
 'helppage' => 'Help:Mundarija',
 'mainpage' => 'Bosh sahifa',
 'mainpage-description' => 'Bosh sahifa',
@@ -374,10 +373,10 @@ $1',
 'youhavenewmessages' => 'Sizga $1 keldi ($2).',
 'newmessageslink' => 'yangi xabarlar',
 'newmessagesdifflink' => 'soʻnggi oʻzgarish',
-'youhavenewmessagesfromusers' => 'Siz {{PLURAL:$3|$3 ta foydalanuvchidan}} $1 oldingiz ($2).',
+'youhavenewmessagesfromusers' => 'Siz {{PLURAL:$3|boshqa foydalanuvchidan|$3 ta foydalanuvchidan}} $1 oldingiz ($2).',
 'youhavenewmessagesmanyusers' => "Siz ko'p foydalanuvchilardan $1 oldingiz ($2).",
 'newmessageslinkplural' => '{{PLURAL:$1|yangi xabar|yangi xabarlar}}',
-'newmessagesdifflinkplural' => "oxirgi {{PLURAL:$1|o'zgarish|o'zgarishlar}}",
+'newmessagesdifflinkplural' => 'oxirgi {{PLURAL:$1|oʻzgarish|oʻzgarishlar}}',
 'youhavenewmessagesmulti' => 'Siz $1ga yangi xat oldingiz',
 'editsection' => 'tahrirlash',
 'editold' => 'tahrirlash',
@@ -388,21 +387,21 @@ $1',
 'toc' => 'Mundarija',
 'showtoc' => 'koʻrsatish',
 'hidetoc' => 'yashirish',
-'collapsible-collapse' => "Yig'ish",
+'collapsible-collapse' => 'Yigʻish',
 'collapsible-expand' => 'Yoyish',
-'thisisdeleted' => "$1ni ko'rib chiqasizmi yoki tiklaysizmi?",
-'viewdeleted' => "$1ni ko'rib chiqasizmi?",
-'restorelink' => "{{PLURAL:$1|o'chirilgan tahrir|$1 ta o'chirilgan tahrirlar}}ni",
+'thisisdeleted' => '$1ni koʻrib chiqasizmi yoki tiklaysizmi?',
+'viewdeleted' => '$1ni koʻrib chiqasizmi?',
+'restorelink' => '{{PLURAL:$1|Oʻchirilgan tahrir|$1 ta oʻchirilgan tahrirlar}}',
 'feedlinks' => "Ko'rinishida:",
 'feed-invalid' => "Obuna uchun no'tog'ri turdagi kanal",
-'feed-unavailable' => "Sindikatsiya tasmalariga yo'lashning imkoni yo'q",
+'feed-unavailable' => 'Sindikatsiya tasmalariga yoʻlash imkoni yoʻq',
 'site-rss-feed' => '$1 — RSS-tasmasi',
 'site-atom-feed' => '$1 — Atom-tasma',
 'page-rss-feed' => '"$1" — RSS-tasmasi',
 'page-atom-feed' => '«$1» — Atom-lenta',
 'red-link-title' => '$1 (sahifa yaratilmagan)',
-'sort-descending' => "Kamayish bo'yicha tartiblash",
-'sort-ascending' => "O'sish bo'yicha tartiblash",
+'sort-descending' => 'Kamayish boʻyicha tartiblash',
+'sort-ascending' => 'Oʻsish boʻyicha tartiblash',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Maqola',
@@ -431,7 +430,7 @@ $1',
 'badtitle' => 'Notoʻgʻri sarlavha',
 'viewsource' => 'Manbasini koʻrish',
 'viewsource-title' => '$1 sahifasining manbasini koʻrish',
-'actionthrottled' => "Tezlik bo'yicha cheklov",
+'actionthrottled' => 'Tezlik cheklovi',
 'protectedpagetext' => 'Bu sahifa tahrirlash va boshqa oʻzgartirishlar kiritishdan himoyalangan.',
 'viewsourcetext' => 'Siz bu sahifaning manbasini koʻrishingiz va uni nusxasini olishingiz mumkin:',
 'editinginterface' => "'''Diqqat:''' Siz dasturiy taʼminot interfeysi matni mavjud boʻlgan sahifani tahrirlamoqdasiz.
@@ -442,7 +441,7 @@ Ushbu xabar tarjimasini qoʻshish yoki oʻzgartirish uchun, iltimos, MediaWikini
 'customjsprotected' => 'Sizda uchbu JavaScript sahifani tahrirlash huquqi yoʻq, chunki bu yerda boshqa foydalanuvchining shaxsiy moslamalari saqlanadi.',
 'ns-specialprotected' => '"{{ns:special}}" nomfazosi sahifalari tahrirlanishi mumkin emas.',
 'exception-nologin' => "Siz tizimda o'zingizni tanishtirmadingiz",
-'exception-nologin-text' => "Bu sahifani ko'rish yoki so'ralgan amalni bajarish uchun o'zingizni tizimda tanitishingiz zarur.",
+'exception-nologin-text' => 'Bu sahifani koʻrish yoki soʻralgan amalni bajarish uchun tizimga kirishingiz lozim.',
 
 # Virus scanner
 'virus-badscanner' => "Moslamada xato. Noma'lum virus aniqlovchi: ''$1''",
@@ -454,11 +453,18 @@ Ushbu xabar tarjimasini qoʻshish yoki oʻzgartirish uchun, iltimos, MediaWikini
 
 {{SITENAME}} saytidan anonim holda foydalanishda davom etishindiz mumkin. Yoki siz yana hozirgi yoki boshqa foydalanuvchi nomi bilan qaytadan tizimga kirishingiz mumkin.
 Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguningizga qadar xuddi tizimga kirganingizdagidek ko'rinishda davom etaverishi mumkin.",
-'yourname' => 'Foydalanuvchi nomi',
+'yourname' => 'Foydalanuvchi nomi:',
+'userlogin-yourname' => 'Foydalanuvchi nomi',
+'userlogin-yourname-ph' => 'Foydalanuvchi nomingizni kiriting',
 'yourpassword' => 'Maxfiy soʻz:',
+'createacct-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
 'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
+'createacct-yourpasswordagain' => 'Maxfiy soʻzni tasdiqlang',
+'createacct-yourpasswordagain-ph' => 'Maxfiy soʻzni yana bir bor kiriting',
 'remembermypassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
-'securelogin-stick-https' => "Kirgandan keyin HTTPS bo'yicha ulanishni davom ettirish",
+'userlogin-remembermypassword' => 'Yodda tut',
+'userlogin-signwithsecure' => 'Himoyalangan holda kirish',
+'securelogin-stick-https' => 'Kirgandan keyin HTTPS boʻyicha ulanishni davom ettirish',
 'yourdomainname' => 'Sizning domeningiz:',
 'password-change-forbidden' => 'Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.',
 'login' => 'Kirish',
@@ -469,26 +475,39 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
 'logout' => 'Chiqish',
 'userlogout' => 'Chiqish',
 'notloggedin' => 'Siz tizimga kirmagansiz',
+'userlogin-noaccount' => 'Hisobingiz yoʻqmi?',
+'userlogin-joinproject' => '{{SITENAME}}ga aʼzo boʻlish',
 'nologin' => "Hisobingiz yoʻqmi? '''$1'''.",
 'nologinlink' => 'Hisob yaratish',
 'createaccount' => 'Hisob yaratish',
 'gotaccount' => "Hisobingiz bormi? '''$1'''.",
 'gotaccountlink' => 'Kirish',
 'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Kirish uchun yordam]]',
+'createacct-join' => 'Maʼlumotlaringizni quyiga yozing',
+'createacct-emailoptional' => 'Elektron pochta manzili (majburiy emas)',
+'createacct-email-ph' => 'Elektron pochtangiz manzilini kiriting',
 'createaccountmail' => "E-mail orqali maxfiy so'zni jo'natish",
 'createaccountreason' => 'Sabab:',
+'createacct-captcha' => 'Xavfsizlik tekshiruvi',
+'createacct-imgcaptcha-ph' => 'Yuqoridagi yozuvni bu yerga kiriting',
+'createacct-submit' => 'Hisob yaratish',
+'createacct-benefit-heading' => '{{SITENAME}} Sizga oʻxshagan odamlar tomonidan yaratiladi',
+'createacct-benefit-body1' => 'tahrirlar soni',
+'createacct-benefit-body2' => 'maqolalar soni',
+'createacct-benefit-body3' => 'soʻnggi paytdagi ishtirokchilar soni',
 'badretype' => "Siz tomondan kiritilgan maxfiy so'zlar mos kelmayapti.",
 'loginerror' => 'Foydalanuvchini aniqlashda xatolik',
-'createaccounterror' => "Hisob yozuvini yaratishning iloji yo'q: $1",
+'createaccounterror' => 'Hisob yozuvi yaratishning iloji yoʻq: $1',
 'loginsuccesstitle' => 'Kirish muvaffaqiyatli amalga oshdi',
 'loginsuccess' => "'''{{SITENAME}}ga \"\$1\" foydalanuvchi nomi bilan kirdingiz.'''",
 'nosuchusershort' => '"$1" ismli foydalanuvchi yoʻq.
 Ism yozilishini tekshirib koʻring.',
 'nouserspecified' => "Siz foydalanuvchining ismini ko'rsatishingiz lozim.",
-'login-userblocked' => "Bu foydalanuvchi muhosara qilingan. Tizimga kirishga ruxsat yo'q.",
+'login-userblocked' => 'Bu foydalanuvchi chetlatilgan. Tizimga kirishga ruxsat yoʻq.',
 'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
-'wrongpasswordempty' => "Iltimos, bo'sh bo'lmagan maxfiy so'z kiriting.",
-'mailmypassword' => "Elektron pochta orqali yangi maxfiy so'zni jo'natish",
+'wrongpasswordempty' => 'Maxfiy soʻz koʻrsatilmagan. Qaytadan urinib koʻring.',
+'mailmypassword' => 'Yangi maxfiy soʻzni elektron pochta orqali joʻnatish',
 'passwordremindertitle' => "{{SITENAME}} uchun vaqtinchalik yangi maxfiy so'z",
 'emailauthenticated' => 'Sizning elektron pochta manzilingiz $2, $3 da tasdiqlangan.',
 'emailconfirmlink' => 'Sizning elektron pochta manzilingizni tasdiqlash',
@@ -509,7 +528,9 @@ Ism yozilishini tekshirib koʻring.',
 'resetpass-submit-cancel' => 'Bekor',
 
 # Special:PasswordReset
-'passwordreset-legend' => "Maxfiy so'zni yo'q qilish",
+'passwordreset' => 'Maxfiy soʻzni tashlash',
+'passwordreset-text-one' => 'Mahfiy soʻzni tashlash uchun ushbu oynalarni toʻltiring.',
+'passwordreset-legend' => 'Maxfiy soʻzni tashlash',
 'passwordreset-username' => 'Foydalanuvchi nomi:',
 'passwordreset-domain' => 'Domen:',
 'passwordreset-email' => 'Elektron pochta manzili:',
@@ -521,7 +542,7 @@ Vaqtinchalik maxfiy so'z: $2",
 'changeemail-header' => "Elektron pochta manzilini o'zgaritish",
 'changeemail-oldemail' => 'Joriy elektron pochta manzili',
 'changeemail-newemail' => 'Elektron pochtaning yangi manzili',
-'changeemail-none' => "(yo'q)",
+'changeemail-none' => '(yoʻq)',
 'changeemail-submit' => "Manzilni o'zgartirish",
 'changeemail-cancel' => 'Bekor',
 
@@ -536,7 +557,7 @@ Vaqtinchalik maxfiy so'z: $2",
 'extlink_tip' => 'Tashqi ishorat (http:// prefiksini unutmang)',
 'headline_sample' => 'Sarlavha',
 'headline_tip' => '2-darajadagi sarlavha',
-'nowiki_sample' => "Bu yerga formatlash zarur bo'lmagan matnni qo'ying",
+'nowiki_sample' => 'Bu yerga formatlash zarur boʻlmagan matnni qoʻying',
 'nowiki_tip' => "Viki-formatlashga e'tibor qilmaslik",
 'image_tip' => 'Qoʻshilgan tasvir',
 'media_tip' => 'Faylga havola',
@@ -551,12 +572,12 @@ Vaqtinchalik maxfiy so'z: $2",
 'savearticle' => 'Saqlash',
 'preview' => 'Ko‘rib chiqish',
 'showpreview' => 'Ko‘rib chiqish',
-'showlivepreview' => "Tezkor ko'rib chiqish",
+'showlivepreview' => 'Tezkor koʻrib chiqish',
 'showdiff' => 'O‘zgarishlarni ko‘rsatish',
 'anoneditwarning' => "'''Diqqat:''' Siz tizimga kirmagansiz. Ushbu sahifa tarixida Sizning IP manzilingiz yozib qolinadi.",
 'missingcommenttext' => 'Iltimos sharh qoldiring.',
-'summary-preview' => "Tavsif shunday bo'ladi:",
-'subject-preview' => "Sarlavha shunday bo'ladi:",
+'summary-preview' => 'Tavsif bunday koʻrinishda boʻladi:',
+'subject-preview' => 'Sarlavha bunday koʻrinishda boʻladi:',
 'blockedtitle' => 'Foydalanuvchi chetlashtirildi',
 'blockedtext' => "'''Siz (foydalanuvchi nomingiz yoki IP manzilingiz) tahrir qilishdan chetlashtirildingiz.'''
 
@@ -570,14 +591,13 @@ Siz $1 yoki boshqa [[{{MediaWiki:Grouppage-sysop}}|administrator]] bilan bogʻla
 Siz «foydalanuvchiga maktub» xizmatidan foydalana olmaysiz, agarda: a) shaxsiy moslamalaringizda haqiqiy e-pochta manzilingiz koʻrsatilmagan yoki tasdiqlanmagan boʻlsa, b) chetlatish shartlarida bu xizmat toʻsilgan boʻlsa.
 Sizning hozirgi IP manzilingiz - $3, chetlashtirish raqamingiz - #$5. Arizaga bularni ilova qilishingiz mumkin.",
 'blockednoreason' => "sabab ko'rsatilmadi",
-'whitelistedittext' => "Siz sahifalarni o'zgartirish uchun $1.",
-'nosuchsectiontitle' => "Bo'limni topishning iloji yo'q",
-'nosuchsectiontext' => "Siz mavjud bo'lmagan bo'limni sharhlamoqchi bo'ldingiz.
-Siz sharhlamoqchi bo'lgan bo'lim o'chirilgan yoki boshqa sarlavhaga jildirilgan bo'lishi mumkin.",
+'whitelistedittext' => 'Siz sahifalarni oʻzgartirish uchun $1.',
+'nosuchsectiontitle' => 'Boʻlimni topishni iloji yoʻq',
+'nosuchsectiontext' => 'Siz mavjud boʻlmagan boʻlimni tahrirlamoqchi boʻldingiz. Ushbu boʻlim Siz bu sahifani koʻrayotgan mahalda koʻchirilgan yoki yoʻqotilgan boʻlishi mumkin.',
 'loginreqtitle' => 'Shaxsiyatni aniqlash talab etiladi',
 'loginreqlink' => 'Kirish',
-'loginreqpagetext' => "Boshqa sahifalarni ko'rish uchun $1",
-'accmailtitle' => "Mahfiy so'z jo'natildi.",
+'loginreqpagetext' => 'Boshqa sahifalarni koʻrish uchun $1',
+'accmailtitle' => 'Maxfiy soʻz joʻnatildi',
 'newarticle' => '(Yangi)',
 'newarticletext' => "Bu sahifa hali mavjud emas.
 Sahifani yaratish uchun quyida matn kiritishingiz mumkin (qoʻshimcha axborot uchun [[{{MediaWiki:Helppage}}|yordam sahifasini]] koʻring).
@@ -598,7 +618,9 @@ Agar siz anonim ishtirokchi boʻlsangiz va siz oʻzingizga yoʻnaltirilmagan xab
 'continue-editing' => 'tahrirlashni davom ettirish',
 'editing' => '$1 tahrirlanmoqda',
 'creating' => '«$1» sahifasini yaratish',
-'editingsection' => '$1 (boʻlim) tahrirlanmoqda',
+'editingsection' => '$1 tahrirlanmoqda (boʻlim)',
+'editingcomment' => '$1 tahrirlanmoqda (yangi mavzu)',
+'editconflict' => 'Tahrirlash toʻqnashuvi: $1',
 'copyrightwarning' => "Iltimos, {{SITENAME}}ga yuklangan har qanday axborot $2 ostida tarqatilishiga diqqat qiling (batafsil ma'lumot uchun $1ni ko'ring).
 Agar yozganlaringiz keyinchalik tahrir qilinishi va qayta tarqatilishiga rozi bo'lmasangiz, u holda bu yerga yozmang.<br />
 Siz shuningdek bu yozganlaringiz sizniki yoki erkin litsenziya ostida ekanligini va'da qilmoqdasiz.
@@ -612,11 +634,11 @@ Bundan tashqari, siz ushbu ma'lumotlarni o'zingiz yozgan bo'lishingiz yoki ruxsa
 'template-protected' => '(himoyalangan)',
 'template-semiprotected' => '(yarim-himoyalangan)',
 'hiddencategories' => 'Ushbu sahifa {{PLURAL:$1|1 yashirin turkum|$1 yashirin turkumlar}}ga kiradi:',
-'nocreatetext' => 'Ushbu saytda yangi sahifalar yaratish taqiqlagan.
+'nocreatetext' => 'Ushbu saytda yangi sahifalar yaratish taʼqiqlagan.
 Ortga qaytib, mavjud sahifani tahrirlashingiz yoki [[Special:UserLogin|tizimga kirishingiz]] mumkin.',
-'nocreate-loggedin' => "Sizda yangi sahifalar yaratishga ruxsat yo'q.",
-'sectioneditnotsupported-title' => "Bo'limlarni tahrirlash imkoniyati yo'q",
-'sectioneditnotsupported-text' => "Ushbu sahifada bo'limlarni tahrirlash imkoniyati yo'q.",
+'nocreate-loggedin' => 'Sizda yangi sahifalar yaratishga ruxsat yoʻq.',
+'sectioneditnotsupported-title' => 'Boʻlimlarni tahrirlash imkoniyati yoʻq',
+'sectioneditnotsupported-text' => 'Ushbu sahifada boʻlimlarni tahrirlash imkoniyati yoʻq.',
 'permissionserrors' => 'Ruxsat huquqida xato',
 'permissionserrorstext-withaction' => "Sizda quyidagi {{PLURAL:$1|sabab|sabablar}}ga koʻra '''$2'''ga ruxsat mavjud emas:",
 'recreate-moveddeleted-warn' => "'''Diqqat: Siz avval yoʻqotilgan sahifani yana yaratmoqchisiz.'''
@@ -625,8 +647,9 @@ Bu sahifani yaratishda davom etishdan avval uning nega avval yoʻqotilgani bilan
 Qulaylik uchun quyida yoʻqotilish qaydlari keltirilgan:",
 'moveddeleted-notice' => 'Bu sahifa oʻchirilgan.
 Maʼlumot uchun quyida oʻchirish va qayta nomlash jurnallaridan mos yozuvlar keltirilgan.',
-'log-fulllog' => "Qaydlarni to'liq ko'rish",
-'edit-conflict' => "Tashrirlash to'qnashuvi.",
+'log-fulllog' => 'Qaydlarni toʻliq koʻrish',
+'edit-conflict' => 'Tahrirlash toʻqnashuvi.',
+'postedit-confirmation' => 'Tahriringiz saqlandi.',
 'defaultmessagetext' => "Boshlang'ich matn",
 
 # Parser/template warnings
@@ -678,7 +701,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'revdelete-hide-text' => 'Sahifaning ushbu versiyasi matnini yashirish',
 'revdelete-radio-same' => "(o'zgartirilmasin)",
 'revdelete-radio-set' => 'Ha',
-'revdelete-radio-unset' => "Yo'q",
+'revdelete-radio-unset' => 'Yoʻq',
 'revdelete-log' => 'Sabab:',
 'revdel-restore' => "Ko'rinuvchanlikni o'zgartirish",
 'revdel-restore-deleted' => "o'chirilgan versiyalar",
@@ -692,7 +715,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'mergehistory-from' => 'Manba sahifa:',
 'mergehistory-into' => "Mo'ljal sahifa:",
 'mergehistory-list' => 'Birlashtiriladigan tahrirlar tarixi',
-'mergehistory-go' => "Birlashtiriladigan tahrirlarni ko'rsatish",
+'mergehistory-go' => 'Birlashtiriladigan tahrirlarni koʻrsatish',
 'mergehistory-submit' => 'Tahrirlarni birlashtirish',
 'mergehistory-reason' => 'Sabab:',
 
@@ -708,9 +731,9 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'difference-multipage' => '(Sahifalar orasidagi farq)',
 'lineno' => 'Qator $1:',
 'compareselectedversions' => 'Tanlangan versiyalarni solishtir',
-'showhideselectedversions' => "Tanlangan versiyalarni ko'rsatish/yashirish",
+'showhideselectedversions' => 'Tanlangan versiyalarni koʻrsatish/yashirish',
 'editundo' => 'qaytarish',
-'diff-multi' => "({{PLURAL:$2|$2 ta foydalanuvching}} {{PLURAL:$1|$1 ta oraliq versiyasi|$1 ta oraliq versiyalari}} ko'rsatilmadi)",
+'diff-multi' => '({{PLURAL:$2|Bitta foydalanuvchining|$2 ta foydalanuvchining}} {{PLURAL:$1|bitta oraliq versiyasi|$1 ta oraliq versiyalari}} koʻrsatilmadi)',
 
 # Search results
 'searchresults' => 'Qidiruv natijalari',
@@ -727,13 +750,12 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'nextn' => 'keyingi {{PLURAL:$1|$1}}',
 'prevn-title' => 'Avvalgi $1 {{PLURAL:$1|natija|natijalar}}',
 'nextn-title' => 'Keyingi $1 {{PLURAL:$1|natija|natijalar}}',
-'shown-title' => 'Sahifada $1 ta {{PLURAL:$1|natija}} koʻrsatish',
+'shown-title' => 'Sahifada $1 ta natija koʻrsatish',
 'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-legend' => 'Qidiruv shartlari',
 'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
 'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifasini yarat!'''",
-'searchhelp-url' => 'Help:Mundarija',
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Ushbu prefiks mavjud bo'lgan sahifalarni ko'rsatish]]",
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shu prefiksli sahifalarni koʻrsatish]]',
 'searchprofile-articles' => 'Asosiy sahifalar',
 'searchprofile-project' => 'Yordam va loyiha sahifalari',
 'searchprofile-images' => 'Multimedia',
@@ -742,7 +764,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'searchprofile-articles-tooltip' => '$1da qidirish',
 'searchprofile-project-tooltip' => '$1da qidirish',
 'searchprofile-images-tooltip' => 'Fayllarni qidir',
-'searchprofile-everything-tooltip' => "Barcha sahifalardan (munozara sahifalarini qo'shgan holda) qidirish",
+'searchprofile-everything-tooltip' => 'Barcha sahifalardan qidirish (munozara sahifalarinidan ham)',
 'searchprofile-advanced-tooltip' => 'Belgilangan nomfazolardan qidirish',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})',
 'search-result-category-size' => "$1 {{PLURAL:$1|a'zo|a'zolar}} ($2 {{PLURAL:$2|ostturkum|ostturkumlar}}, $3 {{PLURAL:$3|fayl|fayllar}}).",
@@ -758,7 +780,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'searcheverything-enable' => 'Barcha nomfazolarda qidir',
 'searchrelated' => 'bogʻlangan',
 'searchall' => 'barchasi',
-'showingresults' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
+'showingresults' => "Quyida №'''$2'''dan boshlab {{PLURAL:$1|'''bitta''' natija|'''$1''' ta natija}} koʻrsatilgan.",
 'showingresultsnum' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
 'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
 'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
@@ -787,7 +809,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-user-pages' => 'Foydalanuvchi sahifalari',
 'prefs-personal' => 'Shaxsiy ma’lumotlar',
 'prefs-rc' => 'Yangi o‘zgartirishlar',
-'prefs-watchlist' => "Kuzatuv ro'yxati",
+'prefs-watchlist' => 'Kuzatuv roʻyxati',
 'prefs-watchlist-days' => 'Kunlar soni:',
 'prefs-watchlist-days-max' => 'Eng ko‘pi bilan $1 {{PLURAL:$1|kun}}',
 'prefs-watchlist-edits-max' => 'Eng katta son: 1000',
@@ -806,7 +828,7 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'searchresultshead' => 'Qidiruv',
 'resultsperpage' => 'Sahifaga topilgan yozuvlar miqdori',
 'stub-threshold' => '<a href="#" class="stub">Chala maqolalarga ishorat</a> keltirish uchun pastki chegara (baytlarda):',
-'stub-threshold-disabled' => "O'chirib qo'yilgan",
+'stub-threshold-disabled' => 'Oʻchirib qoʻyilgan',
 'recentchangesdays' => 'Necha kunlik tahrirlar koʻrsatiladi:',
 'recentchangesdays-max' => 'Eng koʻpi — $1 kun',
 'recentchangescount' => 'Sukut boʻyicha koʻrsatiladigan tahrirlar soni:',
@@ -858,8 +880,8 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-help-gender' => 'Koʻrsatilishi majburiy emas: taʼminot xizmatining foydalanuvchi jinsiga qarab yuboradigan ayrim xabarlarida foydalaniladi.
 Bu maʼlumot hammaga koʻrsatiladi.',
 'email' => 'E-mail:',
-'prefs-help-realname' => "Haqiqiy ism (ixtiyoriy maydon).
-Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini ko'rsatish uchun foydalaniladi.",
+'prefs-help-realname' => 'Haqiqiy ism (majburiy emas).
+Agar keltirsangiz, undan sahifa kim tomonidan tahrirlanganini koʻrsatish uchun foydalaniladi.',
 'prefs-help-email' => 'Elektron pochta manzilini koʻrsatish majburiy emas, lekin u siz maxfiy soʻzni unutib qoʻysangiz kerak boʻladi.',
 'prefs-help-email-others' => 'Shuningdek, u boshqa foydalanuvchilarga Siz bilan shaxsiy sahifangiz yoki munozara sahifangizdagi havola orqali bogʻlanish imkonini beradi. Bunda Siz bilan bogʻlanmoqchi boʻlgan foydalanuvchiga pochta manzilingiz koʻrsatilmaydi.',
 'prefs-help-email-required' => 'E-mail manzilni koʻrsatish shart emas',
@@ -879,6 +901,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'prefs-diffs' => 'Versiyalar farqi',
 
 # User rights
+'userrights-user-editname' => 'Foydalanuvchi nomingizni kiriting:',
 'editusergroup' => 'Foydalanuvchi guruxlarni taxrirlash',
 'userrights-groupsmember' => 'Aʼzolik:',
 'userrights-groupsmember-auto' => "Noaniq a'zo",
@@ -928,7 +951,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'action-sendemail' => "elektron xatlar jo'natish",
 
 # Recent changes
-'nchanges' => "$1 {{PLURAL:$1|o'zgarish|o'zgarishlar}}",
+'nchanges' => '$1 {{PLURAL:$1|oʻzgarish|oʻzgarishlar}}',
 'recentchanges' => 'Yangi oʻzgarishlar',
 'recentchanges-legend' => 'Yangi oʻzgarishlar moslamalari',
 'recentchanges-summary' => 'Bu sahifada siz oxirgi oʻzgarishlarni koʻrishingiz mumkin',
@@ -937,19 +960,19 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'recentchanges-label-minor' => 'Bu kichik tahrir',
 'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
 'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmagan',
-'rcnote' => "Quyida $4 soat $5 ga koʻra oxirgi '''$2''' kun davomida sodir boʻlgan {{PLURAL:$1|'''1''' oʻzgarish|'''$1''' oʻzgarishlar}} koʻrsatilgan.",
+'rcnote' => "Quyida $4, $5 koʻra oxirgi '''$2''' kun ichida sodir boʻlgan {{PLURAL:$1|'''bitta''' oʻzgarish|'''$1''' ta oʻzgarish}} koʻrsatilgan.",
 'rcnotefrom' => "Quyida <strong>$2</strong> dan (<strong>$1</strong> gacha) bo'lgan o'zgarishlar keltirilgan.",
 'rclistfrom' => '$1 dan boshlab yangi oʻzgarishlarni koʻrsat.',
 'rcshowhideminor' => 'Kichik tahrirlarni $1',
-'rcshowhidebots' => '$1 ta bot',
-'rcshowhideliu' => 'Ro‘yxatdan o‘tgan foydalanuvchilar: $1 ta',
-'rcshowhideanons' => 'Anonim foydalanuvchilar: $1 ta',
+'rcshowhidebots' => 'Botlarni $1',
+'rcshowhideliu' => 'Roʻyxatdan oʻtgan foydalanuvchilarni $1',
+'rcshowhideanons' => 'Anonim foydalanuvchilarni $1',
 'rcshowhidepatr' => 'Tekshirilgan tahrirlarni $1',
 'rcshowhidemine' => 'Oʻz tahrirlarimni $1',
-'rclinks' => 'Oxirgi $2 kun ichida sodir boʻlgan $1 oʻzgarishlar koʻrsatildi.<br />$3',
+'rclinks' => 'Oxirgi $2 kun ichida sodir boʻlgan $1 ta oʻzgarish koʻrsatildi<br />$3',
 'diff' => 'farq',
 'hist' => 'tarix',
-'hide' => 'Yashir',
+'hide' => 'yashir',
 'show' => 'Koʻrsat',
 'minoreditletter' => 'k',
 'newpageletter' => 'Y',
@@ -967,7 +990,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'recentchangeslinked-noresult' => 'Berilgan davrda bogʻlangan sahifalarda oʻzgarishlar boʻlmagan.',
 'recentchangeslinked-summary' => "Ushbu maxsus sahifa unga bogʻlangan sahifalardagi soʻnggi oʻzgarishlarni koʻrsatadi. [[Special:Watchlist|Kuzatuv roʻyxatingizdagi]] sahifalar '''qalin''' qilib koʻrsatilgan.",
 'recentchangeslinked-page' => 'Sahifa nomi:',
-'recentchangeslinked-to' => "Teskarisiga, ko'rsatilgan sahifaga yo'naltirilgan sahifalardagi o'zgarishlarni ko'rish",
+'recentchangeslinked-to' => 'Koʻrsatilgan sahifaga bogʻlangan sahifalardagi oʻzgarishlarni koʻrish',
 
 # Upload
 'upload' => 'Fayl yuklash',
@@ -1009,7 +1032,7 @@ Agar siz uni ko'rsatsangiz, undan sahifa tahriri kim tomonidan kiritilganligini
 'filehist-datetime' => 'Sana/Vaqt',
 'filehist-thumb' => 'Miniatura',
 'filehist-thumbtext' => '$1 dagi versiya uchun tasvir',
-'filehist-nothumb' => "Miniatura yo'q",
+'filehist-nothumb' => 'Miniatyurasi yoʻq',
 'filehist-user' => 'Foydalanuvchi',
 'filehist-dimensions' => 'Oʻlchamlari',
 'filehist-filesize' => 'Fayl hajmi',
@@ -1109,7 +1132,7 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 'allpages-hide-redirects' => 'Yoʻnaltirishlarni yashirish',
 
 # SpecialCachedPage
-'cachedspecial-refresh-now' => "Oxirgi versiyasini ko'rish",
+'cachedspecial-refresh-now' => 'Oxirgi versiyasini koʻrish',
 
 # Special:Categories
 'categories' => 'Turkumlar',
@@ -1185,12 +1208,10 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'watchlist' => 'Kuzatuv roʻyxatim',
 'mywatchlist' => 'Kuzatuv roʻyxatim',
 'watchlistfor2' => '$1 uchun $2',
-'nowatchlist' => "Kuzatuv ro'yxatingizda hech narsa yo'q.",
+'nowatchlist' => 'Kuzatuv roʻyxatingizda hech nima yoʻq.',
 'watchnologin' => "Siz tizimda o'zingizni tanishtirmadingiz",
 'addwatch' => "Kuzatuv ro'yxatiga qo'shish",
-'addedwatchtext' => "\"[[:\$1]]\" sahifasi sizning [[Special:Watchlist|kuzatuv ro'yxatingizga]] qo'shildi. Bu sahifada va unga mos munozara sahifasida bo'ladigan kelajakdagi o'zgarishlar bu yerda ro'yxatga olinadi, hamda bu sahifa topish qulay bo'lishi uchun [[Special:RecentChanges|yangi o'zgarishlar ro'yxati]]da '''qalin''' harflar bilan ko'rsatiladi.
-
-Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmaslik\" yozuvini bosing.",
+'addedwatchtext' => '"[[:$1]]" sahifasi sizning [[Special:Watchlist|kuzatuv roʻyxatingizga]] qoʻshildi. Bu sahifada va uning munozara sahifasida boʻladigan oʻzgarishlar u yerda koʻrsatiladi.',
 'removewatch' => "Kuzatuv ro'yxatidan o'chirish",
 'removedwatchtext' => '"[[:$1]]" sahifasi [[Special:Watchlist|kuzatuv roʻyxatingizdan]] oʻchirildi.',
 'watch' => 'Kuzatish',
@@ -1198,17 +1219,17 @@ Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmasl
 'unwatch' => 'Kuzatmaslik',
 'unwatchthispage' => "Kuzatuvni to'xtatish",
 'notanarticle' => 'Maqola emas',
-'watchlist-details' => "Sizning kuzatuv ro'yxatingizda $1 {{PLURAL:$1|ta sahifa}} (munozara sahifalarini hisobga olmaganda)",
+'watchlist-details' => 'Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).',
 'wlnote' => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
 'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni ko‘rsatish. $3 tahrirlarni ko‘rsatish',
-'watchlist-options' => "Kuzatuv ro'yxati moslamalari",
+'watchlist-options' => 'Kuzatuv roʻyxati moslamalari',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Kuzatish...',
 'unwatching' => "Kuzatuv ro'yxatidan o'chirish...",
 
 'enotif_mailer' => "{{SITENAME}} Pochta orqali e'lon qilish xizmati",
-'enotif_reset' => "Hamma sahifalarni ko'rib chiqilgan deb belgilash",
+'enotif_reset' => 'Hamma sahifalarni koʻrib chiqilgan deb belgilash',
 'enotif_impersonal_salutation' => '{{SITENAME}} ishtirokchisi',
 'enotif_subject_deleted' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan o‘chirildi',
 'enotif_subject_created' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan yaratildi',
@@ -1220,8 +1241,8 @@ Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmasl
 'enotif_body_intro_moved' => '{{SITENAME}} loyihasining $1 nomli sahifasi $PAGEEDITDATEda foydalanuvchi {{gender:$2|$2}} tomonidan qayta nomlandi, joriy variantini ko‘rish uchun $3 ga qarang.',
 'enotif_body_intro_restored' => '{{SITENAME}} loyihasining $1 nomli sahifasi $PAGEEDITDATEda foydalanuvchi {{gender:$2|$2}} tomonidan tiklandi, joriy variantini ko‘rish uchun $3 ga qarang.',
 'enotif_body_intro_changed' => '{{SITENAME}} loyihasining $1 nomli sahifasi $PAGEEDITDATEda foydalanuvchi {{gender:$2|$2}} tomonidan o‘zgartirildi, joriy variantini ko‘rish uchun $3 ga qarang.',
-'enotif_lastvisited' => "Oxirgi tashrifingizdan buyon sodir bo'lgan barcha o'zgarishlarni ko'rish uchun $1 ga qarang.",
-'enotif_lastdiff' => "O'zgarishlar bilan tanishish uchun $1 ga qarang.",
+'enotif_lastvisited' => 'Oxirgi tashrifingizdan keyin sodir boʻlgan barcha oʻzgarishlarni koʻrish uchun $1 ga qarang.',
+'enotif_lastdiff' => 'Oʻzgarishlar bilan tanishish uchun $1 ga qarang.',
 'enotif_anon_editor' => 'anonim foydalanuvchi $1',
 'enotif_body' => 'Hurmatli $WATCHINGUSERNAME,
 
@@ -1276,7 +1297,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'rollback' => 'Oʻzgarishlarni eski holiga keltirish',
 'rollback_short' => 'Eski holiga keltirish',
 'rollbacklink' => 'eski holiga keltirish',
-'rollbacklinkcount' => '$1 {{PLURAL:$1| ta tahrir}}ni eski holiga keltirish',
+'rollbacklinkcount' => '$1 ta tahrirni ortga qaytarish',
 'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1| tadan koʻp tahrir}}ni eski holiga keltirish',
 'rollbackfailed' => 'Eski holiga keltirishda xatolik',
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|munozara]]) tahrirlari [[User:$1|$1]] versiyasiga qaytarildi',
@@ -1321,19 +1342,19 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'restriction-level-all' => 'barcha darajalar',
 
 # Undelete
-'undelete' => "O'chirilgan sahifalarni ko'rish",
-'undeletepage' => "O'chirilgan sahifalarni ko'rish va tiklash",
-'viewdeletedpage' => "O'chirilgan sahifalarni ko'rish",
+'undelete' => 'Oʻchirilgan sahifalarni koʻrish',
+'undeletepage' => 'Oʻchirilgan sahifalarni koʻrish va tiklash',
+'viewdeletedpage' => 'Oʻchirilgan sahifalarni koʻrish',
 'undelete-nodiff' => 'Oldingi versiya topilmadi.',
 'undeletebtn' => 'Tiklash',
 'undeletelink' => 'ko‘rib chiqish/tiklash',
-'undeleteviewlink' => "ko'rib chiqish",
+'undeleteviewlink' => 'koʻrib chiqish',
 'undeletereset' => 'Tozalash',
 'undeleteinvert' => 'Tanlash tartibini almashtirish',
 'undeletecomment' => 'Sabab:',
 'undelete-search-title' => "O'chirilgan sahifalarni qidirish",
 'undelete-search-box' => "O'chirilgan sahifalarni qidirish",
-'undelete-search-prefix' => "Bundan boshlangan sahifalarni ko'rsatish:",
+'undelete-search-prefix' => 'Bundan boshlangan sahifalarni koʻrsatish:',
 'undelete-search-submit' => 'Qidirish',
 'undelete-show-file-submit' => 'Ha',
 
@@ -1349,7 +1370,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'mycontris' => 'Hissam',
 'contribsub2' => '$1 uchun ($2)',
 'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi',
-'uctop' => '(oxirgi)',
+'uctop' => '(joriy)',
 'month' => 'Oydan (va avvalroq)',
 'year' => 'Yildan (va avvalroq)',
 
@@ -1452,7 +1473,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'movearticle' => 'Sahifani qayta nomlash',
 'movenologin' => 'Siz tizimga kirmagansiz',
 'newtitle' => 'Yangi nom:',
-'move-watch' => 'Ushbu sahifani kuzatuv roʻyxatiga qoʻshish',
+'move-watch' => 'Ushbu sahifani kuzatuv roʻyxatingizga qoʻshish',
 'movepagebtn' => 'Sahifani koʻchirish',
 'pagemovedsub' => 'Sahifa qayta nomlandi',
 'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'',
@@ -1461,7 +1482,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'movetalk' => 'Mos munozara sahifasini qayta nomlash',
 'movelogpage' => 'Koʻchirish qaydlari',
 'movesubpage' => '{{PLURAL:$1|Ostsahifa|Ostsahifalar}}',
-'movesubpagetext' => 'Ushbu sahifada $1 {{PLURAL:$1| ta ostsahifa}} mavjud.',
+'movesubpagetext' => 'Ushbu sahifaning $1 ta ostsahifasi bor.',
 'movenosubpage' => 'Bu sahifa ostsahifalarga ega emas.',
 'movereason' => 'Sabab:',
 'revertmove' => 'qaytarish',
@@ -1474,7 +1495,7 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'export' => 'Sahifalar eksporti',
 'export-submit' => 'Eksport',
 'export-addcattext' => "Shu turkumdan sahifalarni qo'shish:",
-'export-addcat' => "Qo'shish",
+'export-addcat' => 'Qoʻshish',
 'export-addnstext' => "Shu nomfazodan sahifalarni qo'shish:",
 'export-addns' => "Qo'shish",
 'export-download' => 'Fayl sifatida saqlash',
@@ -1504,7 +1525,7 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'tooltip-pt-mytalk' => 'Suhbat sahifangiz',
 'tooltip-pt-anontalk' => 'Bu ip manzildan amalga oshirilgan tahrirlar munozarasi',
 'tooltip-pt-preferences' => 'Moslamalaringiz',
-'tooltip-pt-watchlist' => "Siz kuzatib borayotgan sahifalar ro'yxati.",
+'tooltip-pt-watchlist' => 'Siz kuzatib borayotgan sahifalardagi oʻzgarishlar roʻyxati',
 'tooltip-pt-mycontris' => 'Hissalaringiz roʻyxati',
 'tooltip-pt-login' => 'Bu majburiyat mavjud bo‘lmasa-da, kirishingiz taklif qilinadi.',
 'tooltip-pt-anonlogin' => "Bu majburiyat bo'lmasada, kirishingiz taklif qilinadi.",
@@ -1519,8 +1540,8 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'tooltip-ca-delete' => 'Ushbu sahifani o‘chirish',
 'tooltip-ca-undelete' => "Bu sahifa o'chirilmasdan oldin qilingan tahrirlarni tiklash",
 'tooltip-ca-move' => 'Bu sahifani koʻchir',
-'tooltip-ca-watch' => "Bu sahifani kuzatuv ro'yxatingizga qo'shish",
-'tooltip-ca-unwatch' => "Bu sahifani kuzatuv ro'yxatingizga o'chirish",
+'tooltip-ca-watch' => 'Bu sahifani kuzatuv roʻyxatingizga qoʻshish',
+'tooltip-ca-unwatch' => 'Bu sahifani kuzatuv roʻyxatingizdan oʻchirish',
 'tooltip-search' => '{{SITENAME}}dan qidirish',
 'tooltip-search-go' => 'Xuddi shu nomli sahifa bor boʻlsa, uni och',
 'tooltip-search-fulltext' => 'Sahifalarda ushbu matnni izlash',
@@ -1532,11 +1553,11 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'tooltip-n-recentchanges' => 'Wikidagi eng so‘nggi o‘zgartirishlar ro‘yxati',
 'tooltip-n-randompage' => 'Tasodifiy sahifani yuklash',
 'tooltip-n-help' => 'O‘rganish uchun manzil',
-'tooltip-t-whatlinkshere' => "Bu sahifaga bog'langan sahifalar ro'yxati",
-'tooltip-t-recentchangeslinked' => "Bu sahifa bog'langan sahifalardagi yangi o'zgarishlar",
+'tooltip-t-whatlinkshere' => 'Ushbu sahifaga bogʻlangan sahifalar roʻyxati',
+'tooltip-t-recentchangeslinked' => 'Bu sahifaga bogʻlangan sahifalardagi yangi oʻzgarishlar',
 'tooltip-feed-rss' => "Bu sahifa uchun RSS ta'minot",
 'tooltip-feed-atom' => "Bu sahifa uchun Atom ta'minot",
-'tooltip-t-contributions' => "Bu foydalanuvchinig qo'shgan hissasini ko'rish",
+'tooltip-t-contributions' => 'Bu foydalanuvchinig qoʻshgan hissasini koʻrish',
 'tooltip-t-emailuser' => 'Ushbu foydalanuvchiga xat jo‘natish',
 'tooltip-t-upload' => 'Rasmlar yoki media fayllar yuklash',
 'tooltip-t-specialpages' => 'Maxsus sahifalar ro‘yxati',
@@ -1554,10 +1575,10 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'tooltip-ca-nstab-category' => 'Turkum sahifasini koʻrish',
 'tooltip-minoredit' => 'Kichik o‘zgartirish sifatida belgilash',
 'tooltip-save' => 'Oʻzgarishlarni saqlash',
-'tooltip-preview' => "O'zgarishlarni saqlash. Iltimos saqlashdan oldin uni ishlating!",
-'tooltip-diff' => "Matnga qanday o'zgarishlar kiritganligingizni ko'rish.",
-'tooltip-compareselectedversions' => "Bu sahifaning ikki tanlangan versiyalari o'rtasidagi farqni ko'rish.",
-'tooltip-watch' => 'Ushbu sahifani kuzatuv ro‘yxatingizga qo‘shish',
+'tooltip-preview' => 'Oʻzgarishlarni koʻrib chiqish; Iltimos, saqlashdan oldin undan foydalaning!',
+'tooltip-diff' => 'Matnga qanday oʻzgarishlar kiritganligingizni koʻrish.',
+'tooltip-compareselectedversions' => 'Bu sahifaning ikki tanlangan versiyalari orasidagi farqni koʻrish.',
+'tooltip-watch' => 'Ushbu sahifani kuzatuv roʻyxatingizga qoʻshish',
 'tooltip-recreate' => "Bu sahifani u o'chirilgan bo'lishiga qaramasdan qayta yaratish",
 'tooltip-summary' => 'Qisqa mazmun kiriting',
 
@@ -1668,7 +1689,7 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'size-bytes' => '$1 bayt',
 
 # Watchlist editing tools
-'watchlisttools-view' => "Muhim o'zgarishlarni ko'rish",
+'watchlisttools-view' => 'Mos oʻzgarishlar',
 'watchlisttools-edit' => 'Kuzatuv roʻyxatimni koʻrish/oʻzgartirish',
 'watchlisttools-raw' => 'Kuzatuv roʻyxatimni tahrirlash',
 
@@ -1692,7 +1713,9 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'htmlform-selectorother-other' => 'Boshqa',
 
 # New logging system
+'logentry-delete-delete' => '$1 $3 sahifasini {{GENDER:$2|oʻchirdi}}',
 'logentry-move-move' => '$1 $3 sahifasini $4ga koʻchirdi',
+'logentry-move-move-noredirect' => '$1 $3 sahifasini $4ga {{GENDER:$2|koʻchirdi}}',
 'logentry-patrol-patrol-auto' => '$1 $3 sahifasining $4 versiyasini avtomatik patrulladi',
 'logentry-newusers-newusers' => '$1 hisob yozuvi yaratildi',
 'logentry-newusers-create' => '$1 hisob yozuvi yaratildi',
index 4e05e33..2d5df65 100644 (file)
@@ -13,6 +13,7 @@
  * @author Frigotoni
  * @author GatoSelvadego
  * @author Kaganer
+ * @author Malafaya
  * @author Nemo bis
  * @author Nick1915
  * @author Omnipaedista
@@ -397,7 +398,6 @@ $1',
 'disclaimers' => 'Avertense',
 'disclaimerpage' => 'Project:Avertense xenerali',
 'edithelp' => 'Guida',
-'edithelppage' => 'Help:Modifega',
 'helppage' => 'Help:Ajuto',
 'mainpage' => 'Pajina prinsipałe',
 'mainpage-description' => 'Pajina prinsipałe',
@@ -1181,7 +1181,6 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'searchmenu-legend' => 'Opzion de riserca',
 'searchmenu-exists' => 'Su sto sito ghe xe na pagina che se ciama "[[:$1]]"',
 'searchmenu-new' => "'''Crèa la pagina \"[[:\$1]]\" su sta wiki!'''",
-'searchhelp-url' => 'Help:Ajuto',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Varda tute le pagine che taca co ste létere]]',
 'searchprofile-articles' => 'Pagine de contenuti',
 'searchprofile-project' => 'Pagine de progeto e de ajuto',
@@ -1256,7 +1255,7 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'saveprefs' => 'Salva le preferense',
 'resetprefs' => 'Reinposta le preferense',
 'restoreprefs' => 'Ripristina le inpostassion predefinìe',
-'prefs-editing' => 'Dimension de la casela de modifica',
+'prefs-editing' => 'Canbiamento',
 'prefs-edit-boxsize' => 'Dimension de la finestra de modìfega.',
 'rows' => 'Righe:',
 'columns' => 'Cołone:',
@@ -1509,7 +1508,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'recentchanges-label-bot' => 'Sta modifica el la ga fata un bot',
 'recentchanges-label-unpatrolled' => 'Sta modifica no la xe stà gnancora verificà',
 'rcnote' => "Qua soto se vede {{PLURAL:$1|l'ultimo canbiamento|i ultimi '''$1''' canbiamenti}} {{PLURAL:$2|in te l'ultimo zorno|in tei ultimi '''$2''' zorni}}, fin a le $5 del $4.",
-'rcnotefrom' => " Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
+'rcnotefrom' => "Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Fà védar i canbiamenti fati dal $1',
 'rcshowhideminor' => '$1 i canbiamenti picenini',
 'rcshowhidebots' => '$1 i bot',
index 7ea0d96..16d7b5b 100644 (file)
@@ -327,7 +327,6 @@ $1",
 'disclaimers' => 'Pučind vastusenpidandaspäi',
 'disclaimerpage' => 'Project:Pučind vastusenpidandaspäi',
 'edithelp' => 'Abu redaktiruindas',
-'edithelppage' => 'Help:Abu redaktiruindas',
 'helppage' => 'Help:südäiolend',
 'mainpage' => 'Pälehtpol’',
 'mainpage-description' => 'Pälehtpol’',
@@ -927,7 +926,6 @@ Tö ei voigoi kävutada sidä.',
 'searchmenu-legend' => 'Ecindan järgendused',
 'searchmenu-exists' => "'''Neciš Wikiš om jo lehtpol' ningoižen nimenke: \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Säta lehtpol' \"[[:\$1]]\" neciš Wikiš!'''",
-'searchhelp-url' => 'Help:Südäiolend',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ozutada kaik lehtpoled necen prefiksanke]]',
 'searchprofile-articles' => 'Südäimištlehtpoled',
 'searchprofile-project' => 'Abun da projektoiden lehtpoled',
index 62bf24f..8ec1fa8 100644 (file)
@@ -343,8 +343,8 @@ $messages = array(
 'tog-watchmoves' => 'Tự động theo dõi các trang và tập tin tôi di chuyển',
 'tog-watchdeletion' => 'Tự động theo dõi các trang và tập tin tôi xóa',
 'tog-minordefault' => 'Mặc định đánh dấu tất cả sửa đổi của tôi là sửa đổi nhỏ',
-'tog-previewontop' => 'Hiển thị phần xem thử nằm trên hộp sửa đổi',
-'tog-previewonfirst' => 'Hiện xem thử tại lần sửa đầu tiên',
+'tog-previewontop' => 'Hiển thị phần xem trước nằm trên hộp sửa đổi',
+'tog-previewonfirst' => 'Hiện xem trước tại lần sửa đầu tiên',
 'tog-nocache' => 'Không lưu trang trong bộ nhớ đệm trình duyệt',
 'tog-enotifwatchlistpages' => 'Gửi thư cho tôi khi có thay đổi tại trang hoặc tập tin tôi theo dõi',
 'tog-enotifusertalkpages' => 'Gửi thư cho tôi khi có thay đổi tại trang thảo luận của tôi',
@@ -354,7 +354,7 @@ $messages = array(
 'tog-oldsig' => 'Chữ ký hiện tại:',
 'tog-fancysig' => 'Xem chữ ký là mã wiki (không có liên kết tự động)',
 'tog-showjumplinks' => 'Bật liên kết “bước tới” trên đầu trang cho bộ trình duyệt thuần văn bản hay âm thanh',
-'tog-uselivepreview' => 'Xem thử trực tiếp (JavaScript; chưa ổn định)',
+'tog-uselivepreview' => 'Xem trước trực tiếp (JavaScript; chưa ổn định)',
 'tog-forceeditsummary' => 'Nhắc tôi khi tôi quên tóm lược sửa đổi',
 'tog-watchlisthideown' => 'Ẩn các sửa đổi của tôi khỏi danh sách theo dõi',
 'tog-watchlisthidebots' => 'Ẩn các sửa đổi của robot khỏi danh sách theo dõi',
@@ -524,6 +524,7 @@ $messages = array(
 'create-this-page' => 'Tạo trang này',
 'delete' => 'Xóa',
 'deletethispage' => 'Xóa trang này',
+'undeletethispage' => 'Phục hồi trang này',
 'undelete_short' => 'Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}',
 'viewdeleted_short' => 'Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa',
 'protect' => 'Khóa',
@@ -577,7 +578,6 @@ $1',
 'disclaimers' => 'Phủ nhận',
 'disclaimerpage' => 'Project:Phủ nhận chung',
 'edithelp' => 'Trợ giúp sửa đổi',
-'edithelppage' => 'Help:Sửa đổi',
 'helppage' => 'Help:Nội dung',
 'mainpage' => 'Trang Chính',
 'mainpage-description' => 'Trang Chính',
@@ -721,6 +721,8 @@ $2',
 'namespaceprotected' => "Bạn không có quyền sửa các trang trong không gian tên '''$1'''.",
 'customcssprotected' => 'Bạn không có quyền sửa đổi trang CSS này vì nó chứa các tùy chọn cá nhân của một thành viên khác.',
 'customjsprotected' => 'Bạn không có quyền sửa đổi trang JavaScript này vì nó chứa các tùy chọn cá nhân của một thành viên khác.',
+'mycustomcssprotected' => 'Bạn không có quyền sửa đổi trang CSS này.',
+'mycustomjsprotected' => 'Bạn không có quyền sửa đổi trang JavaScript này.',
 'ns-specialprotected' => 'Không thể sửa chữa các trang trong không gian tên {{ns:special}}.',
 'titleprotected' => "Tựa đề này đã bị [[User:$1|$1]] khóa không cho tạo ra.
 Lý do được cung cấp là ''$2''.",
@@ -842,7 +844,7 @@ Hãy nhập một địa chỉ có định dạng đúng hoặc bỏ trống ô
 'cannotchangeemail' => 'Không có thể thay đổi địa chỉ thư điện tử của các tài khoản trên wiki này.',
 'emaildisabled' => 'Website này không thể gửi thư điện tử.',
 'accountcreated' => 'Mở tài khoản thành công',
-'accountcreatedtext' => 'Tài khoản thành viên cho $1 đã được mở.',
+'accountcreatedtext' => 'Tài khoản thành viên cho [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|thảo luận]]) đã được mở.',
 'createaccount-title' => 'Tài khoản mới tại {{SITENAME}}',
 'createaccount-text' => 'Ai đó đã tạo một tài khoản với tên $2 tại {{SITENAME}} ($4). Mật khẩu của "$2" là "$3". Bạn nên đăng nhập và đổi mật khẩu ngay bây giờ.
 
@@ -956,8 +958,8 @@ Mật khẩu tạm: $2',
 'watchthis' => 'Theo dõi trang này',
 'savearticle' => 'Lưu trang',
 'preview' => 'Xem trước',
-'showpreview' => 'Xem thử',
-'showlivepreview' => 'Xem thử nhanh',
+'showpreview' => 'Xem trước',
+'showlivepreview' => 'Xem trước nhanh',
 'showdiff' => 'Xem thay đổi',
 'anoneditwarning' => "'''Cảnh báo:''' Bạn chưa đăng nhập. Địa chỉ IP của bạn sẽ được ghi lại trong lịch sử sửa đổi của trang.",
 'anonpreviewwarning' => "''Bạn chưa đăng nhập. Khi lưu trang này, địa chỉ IP của bạn sẽ được ghi vào lịch sử trang.''",
@@ -1038,14 +1040,14 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'usercsspreview' => "'''Hãy nhớ rằng bạn chỉ đang xem thử trang CSS cá nhân của bạn.
 Nó chưa được lưu!'''",
 'userjspreview' => "'''Nhớ rằng bạn chỉ đang kiểm thử/xem thử trang JavaScript, nó chưa được lưu!'''",
-'sitecsspreview' => "'''Nhớ rằng bạn chỉ đang xem thử bản CSS này.'''
+'sitecsspreview' => "'''Nhớ rằng bạn chỉ đang xem trước bản CSS này.'''
 '''Nó chưa được lưu!'''",
-'sitejspreview' => "'''Nhớ rằng bạn chỉ đang kiểm thử/xem thử bản JavaScript này.
+'sitejspreview' => "'''Nhớ rằng bạn chỉ đang xem trước bản JavaScript này.
 '''Nó chưa được lưu!'''",
 'userinvalidcssjstitle' => "'''Cảnh báo:''' Không có skin “$1”. Hãy nhớ rằng các trang .css và .js tùy chỉnh sử dụng tiêu đề chữ thường, như {{ns:user}}:Ví&nbsp;dụ/vector.css chứ không phải {{ns:user}}:Ví&nbsp;dụ/Vector.css.",
 'updated' => '(Cập nhật)',
 'note' => "'''Ghi chú:'''",
-'previewnote' => "'''Đây chỉ mới là xem thử.'''
+'previewnote' => "'''Đây chỉ mới là bản xem trước.'''
 Các thay đổi của bạn vẫn chưa được lưu!",
 'continue-editing' => 'Đi đến hộp sửa đổi',
 'previewconflict' => 'Phần xem thử này là kết quả của văn bản trong vùng soạn thảo phía trên và nó sẽ xuất hiện như vậy nếu bạn chọn lưu trang.',
@@ -1372,7 +1374,6 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'searchmenu-legend' => 'Tùy chọn tìm kiếm',
 'searchmenu-exists' => "* Trang '''[[$1]]'''",
 'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!'''",
-'searchhelp-url' => 'Help:Nội dung',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Duyệt các trang với tiền tố này]]',
 'searchprofile-articles' => 'Trang nội dung',
 'searchprofile-project' => 'Trang trợ giúp và trang dự án',
@@ -1423,7 +1424,7 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefsnologintext' => 'Bạn phải <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} đăng nhập]</span> để thiết lập tùy chọn cá nhân.',
 'changepassword' => 'Đổi mật khẩu',
 'prefs-skin' => 'Hình dạng',
-'skin-preview' => 'Xem thử',
+'skin-preview' => 'Xem trước',
 'datedefault' => 'Không quan tâm',
 'prefs-beta' => 'Tính năng beta',
 'prefs-datetime' => 'Ngày tháng',
@@ -1628,7 +1629,9 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'right-editinterface' => 'Sửa giao diện người dùng',
 'right-editusercssjs' => 'Sửa tập tin CSS và JS của người dùng khác',
 'right-editusercss' => 'Sửa tập tin CSS của người dùng khác',
-'right-edituserjs' => 'Sửa tập tin JS của người dùng khác',
+'right-edituserjs' => 'Sửa đổi tập tin JavaScript của người dùng khác',
+'right-editmyusercss' => 'Sửa đổi tập tin CSS cá nhân của mình',
+'right-editmyuserjs' => 'Sửa đổi tập tin JavaScript cá nhân của mình',
 'right-rollback' => 'Nhanh chóng lùi tất cả sửa đổi của người dùng cuối cùng sửa đổi trang nào đó',
 'right-markbotedits' => 'Đánh dấu sửa đổi phục hồi là sửa đổi bot',
 'right-noratelimit' => 'Không bị ảnh hưởng bởi mức giới hạn tần suất sử dụng',
@@ -2627,7 +2630,7 @@ $1',
 'mycontris' => 'Đóng góp',
 'contribsub2' => 'Của $1 ($2)',
 'nocontribs' => 'Không tìm thấy thay đổi nào khớp với yêu cầu.',
-'uctop' => '(mới nhất)',
+'uctop' => '(hiện tại)',
 'month' => 'Từ tháng (trở về trước):',
 'year' => 'Từ năm (trở về trước):',
 
@@ -3248,7 +3251,7 @@ Nếu thực thi nó máy tính của bạn có thể bị tiếm quyền.",
 'svg-long-desc-animated' => 'tập tin hình động SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
 'svg-long-error' => 'Tập tin SVG có lỗi: $1',
 'show-big-image' => 'Độ phân giải tối đa',
-'show-big-image-preview' => 'Kích thước của ảnh xem thử: $1.',
+'show-big-image-preview' => 'Kích thước của hình xem trước: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Độ phân giải|Các độ phân giải}} khác: $1.',
 'show-big-image-size' => '$1×$2 điểm ảnh',
 'file-info-gif-looped' => 'có lặp',
@@ -3910,7 +3913,7 @@ Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
 # Live preview
 'livepreview-loading' => 'Đang tải…',
 'livepreview-ready' => 'Đang tải… Xong!',
-'livepreview-failed' => 'Không thể xem thử trực tiếp! Hãy dùng thử chế độ xem thử thông thường.',
+'livepreview-failed' => 'Không thể xem trước trực tiếp! Hãy dùng thử chế độ xem trước thông thường.',
 'livepreview-error' => 'Không thể kết nối: $1 “$2”. Hãy dùng thử chế độ xem thử thông thường.',
 
 # Friendlier slave lag warnings
index 3f15d71..f757a10 100644 (file)
@@ -239,7 +239,6 @@ $1",
 'disclaimers' => 'Imbräsum',
 'disclaimerpage' => 'Project:Imbräsum',
 'edithelp' => 'Hilfe dsum beärbâdn',
-'edithelppage' => 'Help:Beärbâdn',
 'helppage' => 'Help:Inhalds-fârdsajchnis',
 'mainpage' => 'Haubdsajdn',
 'mainpage-description' => 'Haubdsajdn',
@@ -870,7 +869,6 @@ Bidde gug's mi´m foorschau-gnobf ôô fôrm schbajchan",
 'modern.css' => "/* CSS hiir beâjflusd nôr dii Modern-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
 'vector.css' => "/* CSS hiir beâjflusd nôr dii Vector-schelfn. Wen'd ale uf ôômôôl beâjflusn wilsch, muâsch an MediaWiki:Common.css was ändârn. */",
 'print.css' => '/* CSS hiir beâjflusd nôr dii drugausgaawe. */',
-'handheld.css' => '/* CSS hiir beâjflusd nôr dii handgerääde, jee nachdeem, welche schelfn in $wgHandheldStyle âjgeschdeld is. */',
 
 # Scripts
 'common.js' => '/* Des folchende JavaScript wird fir ale benudsâr glôôdn un fir ale sajdn, dii se ôôgugn. */',
index 5620a99..ec64fa0 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
  * @author Iketsi
  * @author Kaganer
  * @author Malafaya
@@ -119,7 +120,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Klänedön redakamis pezepöl in lised votükamas nulik.',
 'tog-newpageshidepatrolled' => 'Klänedön padis pezepöl in lised padas nulik',
 'tog-extendwatchlist' => 'Stäänükön galädalisedi ad jonön votükamis tefik valik, e no te nulikünos',
-'tog-usenewrc' => 'Gebön votükamis nulik patik (me JavaScript)',
+'tog-usenewrc' => 'Grupön votükamis pado in votukäms nulik e galädalised (me JavaScript)',
 'tog-numberheadings' => 'Givön itjäfidiko nümis dilädatiädes',
 'tog-showtoolbar' => 'Jonön redakamastumemi (JavaScript)',
 'tog-editondblclick' => 'Dälön redakön padis pö drän telik mugaknopa (JavaScript)',
@@ -127,17 +128,17 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Dälön redakami diläda me klik mugaknopa detik su dilädatiäds (JavaScript)',
 'tog-showtoc' => 'Jonön ninädalisedi (su pads labü diläds plu 3)',
 'tog-rememberpassword' => 'Dakipolös nunädamanünis obik in bevüresodatävöm at (muiko {{PLURAL:$1|del|dels}} $1)',
-'tog-watchcreations' => 'Läükön padis fa ob pejafölis lä galädalised obik',
-'tog-watchdefault' => 'Läükön padis fa ob peredakölis la galädalised obik',
-'tog-watchmoves' => 'Läükön padis fa ob petopätükölis lä galädalised obik',
-'tog-watchdeletion' => 'Läükön padis fa ob pemoükölis lä galädalised obik',
+'tog-watchcreations' => 'Läükön padis fa ob pejafölis e ragivis fa ob pelöpükölis lä galädalised obik',
+'tog-watchdefault' => 'Läükön padis e ragivis fa ob peredakölis la galädalised obik',
+'tog-watchmoves' => 'Läükön padis e ragivis fa ob petopätükölis lä galädalised obik',
+'tog-watchdeletion' => 'Läükön padis e ragivis fa ob pemoükölis lä galädalised obik',
 'tog-minordefault' => 'Bepenön redakamis no pebepenölis valikis asä pülikis',
 'tog-previewontop' => 'Jonön büologedi bü redakaspad',
 'tog-previewonfirst' => 'Jonön büologedi pö redakam balid',
 'tog-nocache' => 'Nejäfidükön el "cache" padas in bevüresodatävöm',
-'tog-enotifwatchlistpages' => 'Sedön obe penedi leäktronik ven ek votükon padi se galädalised obik',
+'tog-enotifwatchlistpages' => 'Sedön obe penedi leäktronik ven ek votükon padi u ragivi se galädalised obik',
 'tog-enotifusertalkpages' => 'Sedön obe penedi leäktronik ven gebanapad obik pavotükon',
-'tog-enotifminoredits' => 'Sedön obe penedi leäktronik igo pö padavotükams pülik',
+'tog-enotifminoredits' => 'Sedön obe penedi leäktronik igo pö votükams pülik padas e ragivas',
 'tog-enotifrevealaddr' => 'Jonön ladeti leäktronik oba in nunapeneds.',
 'tog-shownumberswatching' => 'Jonön numi gebanas galädöl',
 'tog-oldsig' => 'Dispenäd dabinöl:',
@@ -214,6 +215,18 @@ $messages = array(
 'oct' => 'tob',
 'nov' => 'nov',
 'dec' => 'dek',
+'january-date' => 'yanul $1',
+'february-date' => 'febul $1',
+'march-date' => 'mäzul $1',
+'april-date' => 'prilul $1',
+'may-date' => 'mayul $1',
+'june-date' => 'yunul $1',
+'july-date' => 'yulul $1',
+'august-date' => 'gustul $1',
+'september-date' => 'setul $1',
+'october-date' => 'tobul $1',
+'november-date' => 'novul $1',
+'december-date' => 'dekul $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Klad|Klads}}',
@@ -230,6 +243,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Klad at labon te ragivi sököl.|{{PLURAL:$1|Ragiv sököl binon |Ragivs sököl $1 binons}} in klad at, se $2.}}',
 'category-file-count-limited' => '{{PLURAL:$1|Ragiv sököl binon|Ragivs sököl $1 binons}} in klad at.',
 'listingcontinuesabbrev' => '(fov.)',
+'index-category' => 'Pads mafädanumöls',
+'noindex-category' => 'Pads nemafädanumöls',
 
 'about' => 'Tefü',
 'article' => 'Ninädapad',
@@ -288,6 +303,7 @@ $messages = array(
 'create-this-page' => 'Jafön padi at',
 'delete' => 'Moükön',
 'deletethispage' => 'Moükolös padi at',
+'undeletethispage' => 'Sämoükön padi at',
 'undelete_short' => 'Sädunön moükami {{PLURAL:$1|redakama bal|redakamas $1}}',
 'viewdeleted_short' => 'Logön {{PLURAL:$1|redakami pemoüköl bal|redakamis pemoüköls $1}}',
 'protect' => 'Jelön',
@@ -334,7 +350,6 @@ $messages = array(
 'disclaimers' => 'Nuneds',
 'disclaimerpage' => 'Project:Gididimiedükam valemik',
 'edithelp' => 'Redakamayuf',
-'edithelppage' => 'Help:Redakam',
 'helppage' => 'Help:Ninäd',
 'mainpage' => 'Cifapad',
 'mainpage-description' => 'Cifapad',
@@ -359,6 +374,7 @@ $messages = array(
 'youhavenewmessagesfromusers' => 'Labol $1 de {{PLURAL:$3|geban votik|gebans $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Labol $1 de gebans mödik ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|nuni nulik|nunis nulik}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|votükam|votükams}} lätik',
 'youhavenewmessagesmulti' => 'Labol nunis nulik su $1',
 'editsection' => 'redakön',
 'editold' => 'redakön',
@@ -443,6 +459,7 @@ Atos kösömiko jenon sekü difa- u jenotemayüm dädik (o.b. lü pad pemoüköl
 'badarticleerror' => 'Dun at no kanon paledunön su pad at.',
 'cannotdelete' => 'No emögos ad moükön padi u ragivi: "$1".
 Ba ya pemoükon fa geban votik.',
+'cannotdelete-title' => 'No kanoy moükön padi: "$1"',
 'badtitle' => 'Tiäd badik',
 'badtitletext' => 'Padatiäd peflagöl äbinon nelonöfik, vägik, u ba yüm bevüpükik u bevüvükik dädik. Mögos, das ninädon malati(s), kel(s) no dalon(s) pagebön ad jafön tiädis.',
 'perfcached' => 'Nüns sököl ekömons se el caché e ba no binons anuik. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
@@ -452,20 +469,22 @@ Ba ya pemoükon fa geban votik.',
 Dun: $1<br />
 Beg: $2',
 'viewsource' => 'Logön fonäti',
+'viewsource-title' => 'Logön fonäti pada: "$1"',
 'actionthrottled' => 'Dun pemiedükon',
 'actionthrottledtext' => 'Ad tadunön reklamami itjäfidik (el „spam“), dunot at no padälon tu suvo dü brefüp. Ya erivol miedi gretikün. Steifülolös nogna pos minuts anik.',
 'protectedpagetext' => 'Pad at pejelon ad neletön redakami.',
 'viewsourcetext' => 'Kanol logön e kopiedön fonätakoti pada at:',
 'protectedinterface' => 'Pad at jafon vödemis sitanünas, ed anu pelökofärmükon ad vitön migebis.',
-'editinginterface' => "'''Nuned:''' Anu redakol padi, kel labükon vödemis bevüik pro programem.
+'editinginterface' => "'''Nuned:''' redakol padi, kel labükon vödemis bevüik pro programem.
 Votükams pada at oflunons logoti gebanasita pro gebans votik.
-Ad tradutön vödemis, demolös gebi ela [//translatewiki.net/wiki/Main_Page?setlang=vo translatewiki.net]: topükamaproyeg ela MediaWiki.",
+Ad läükön u votükön tradutodis pro els wiki valik, demolös gebi ela [//translatewiki.net/?setlang=vo translatewiki.net]: topükamaproyeg ela MediaWiki.",
 'sqlhidden' => '(SQL beg peklänedon)',
 'cascadeprotected' => 'Pad at pejelon ta redakam, bi pakeninükon fa {{PLURAL:$1|pad|pads}} sököl, kels pejelons ma „jänajel“: $2',
 'namespaceprotected' => "No dalol redakön padis in nemaspad: '''$1'''.",
 'ns-specialprotected' => 'Pads patik no kanons paredakön.',
 'titleprotected' => "Jaf tiäda at penemögükon fa geban: [[User:$1|$1]].
 Kod binon: ''$2''.",
+'exception-nologin' => 'No enunädol oli',
 
 # Virus scanner
 'virus-badscanner' => "Parametem badik: program tavirudik nesevädik: ''$1''",
@@ -477,11 +496,20 @@ Kod binon: ''$2''.",
 
 Kanol laigebön {{SITENAME}} nennemiko, u kanol <span class='plainlinks'>[$1 nunädön oli dönu]</span> me gebananem ot u gebenanem votik.
 Küpälolös, das pads anik ba nog pojenons äsva no esenunädol oli, jüs uklinükol memi no laidüpik bevüresodanaföma olik.",
+'welcomeuser' => 'Benokömö, o $1!',
 'yourname' => 'Gebananem:',
+'userlogin-yourname' => 'Gebananem',
+'userlogin-yourname-ph' => 'Penolös gebananemi olik',
 'yourpassword' => 'Letavöd:',
+'userlogin-yourpassword' => 'Letavöd',
+'userlogin-yourpassword-ph' => 'Penolös letavödi olik',
+'createacct-yourpassword-ph' => 'Penolös letavödi',
 'yourpasswordagain' => 'Klavolös dönu letavödi:',
+'createacct-yourpasswordagain' => 'Fümedolös letavödi',
+'createacct-yourpasswordagain-ph' => 'Penolös letavödi dönu',
 'remembermypassword' => 'Dakipolöd ninädamanünis obik in nünöm at (muiko {{PLURAL:$1|del|dels}} $1)',
 'yourdomainname' => 'Domen olik:',
+'password-change-forbidden' => 'No kanol votükön letavödis su el wiki at.',
 'externaldberror' => 'U ejenon fümükamapöl plödik nünödema, u no dalol atimükön kali plödik ola.',
 'login' => 'Nunädolös obi',
 'nav-login-createaccount' => 'Nunädön oki / jafön kali',
@@ -491,13 +519,20 @@ Küpälolös, das pads anik ba nog pojenons äsva no esenunädol oli, jüs uklin
 'logout' => 'Senunädön oki',
 'userlogout' => 'Senunädön oki',
 'notloggedin' => 'No enunädol oli',
-'nologin' => "No labol-li kali? '''$1'''.",
+'userlogin-noaccount' => 'No labol-li kali?',
+'userlogin-joinproject' => 'Sogolös oki lä {{SITENAME}}',
+'nologin' => 'No labol-li kali? $1.',
 'nologinlink' => 'Jafolös bali',
 'createaccount' => 'Jafön kali',
 'gotaccount' => "Ya labol-li kali? '''$1'''.",
 'gotaccountlink' => 'Nunädolös obi',
+'userlogin-resetlink' => 'Eglömol-li nünis kala olik?',
 'createaccountmail' => 'me pot leäktronik',
 'createaccountreason' => 'Kod:',
+'createacct-reason' => 'Kod',
+'createacct-submit' => 'Jafön kali olik',
+'createacct-benefit-body1' => '{{PLURAL:$1|redakam|redakams}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pad|pads}}',
 'badretype' => 'Letavöds fa ol pepenöls no leigons.',
 'userexists' => 'Gebananem at ya pagebon.
 Välolös, begö! nemi votik.',
@@ -569,10 +604,17 @@ Ba ya evotükol benosekiko letavödi olik, u ya ebegol benosekiko letavödi nela
 'passwordreset' => 'Dönuvälön letavödi',
 'passwordreset-legend' => 'Dönuvälön letavödi',
 'passwordreset-username' => 'Gebananem:',
+'passwordreset-domain' => 'Domen:',
 'passwordreset-email' => 'Ladet leäktronik:',
 
 # Special:ChangeEmail
+'changeemail' => 'Votükön ladeti leäktronik',
+'changeemail-header' => 'Votükön ladeti leäktronik kala',
+'changeemail-oldemail' => 'Ladet leäktronik anuik:',
+'changeemail-newemail' => 'Ladet leäktronik nulik:',
 'changeemail-none' => '(nonik)',
+'changeemail-password' => 'Letavöd olik su {{SITENAME}}:',
+'changeemail-submit' => 'Votükön ladeti leäktronik',
 'changeemail-cancel' => 'Stöpädön',
 
 # Edit page toolbar
@@ -642,7 +684,7 @@ Ladet-IP olik binon $3, e nüm blokama at binon #$5. Mäniotolös nünis löpik
 'nosuchsectiontitle' => 'Diläd no petuvöl',
 'nosuchsectiontext' => 'Esteifülol ad redakön dilädi no dabinöli.',
 'loginreqtitle' => 'Nunädam Paflagon',
-'loginreqlink' => 'ninädolös obi',
+'loginreqlink' => 'nunädolös obi',
 'loginreqpagetext' => 'Mutol $1 ad logön padis votik.',
 'accmailtitle' => 'Letavöd pesedon.',
 'accmailtext' => "Letavöd fädik pro [[User talk:$1|$1]] pasedon lü $2.
@@ -655,6 +697,8 @@ If binol is pölo, välolös knopi: '''geikön''' bevüresodatävöma olik.",
 'anontalkpagetext' => "----''Bespikapad at duton lü geban nennemik, kel no nog ejafon kali, u no vilon labön u gebön oni. Sekü atos pemütobs ad gebön ladeti-IP ad dientifükön gebani at. Ladets-IP kanons pagebön fa gebans difik. If binol geban nennemik e cedol, das küpets netefik pelüodükons ole, [[Special:UserLogin|jafolös, begö! kali]], u [[Special:UserLogin|nunädolös oli]] ad vitön kofudi ko gebans nennemik votik.''",
 'noarticletext' => 'Atimo no dabinon vödem su pad at.
 Kanol [[Special:Search/{{PAGENAME}}|sukön padatiädi at]] su pads votik, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sukön in jenotaliseds tefik] u [{{fullurl:{{FULLPAGENAME}}|action=edit}} redakön padi at]</span>.',
+'noarticletext-nopermission' => 'Atimo no dabinon vödem su pad at.
+Kanol [[Special:Search/{{PAGENAME}}|sukön padatiädi at]] su pads votik u <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sukön in jenotaliseds tefik], ab no labol gitätis ad jafön padi at.',
 'userpage-userdoesnotexist' => 'Gebanakal: "<nowiki>$1</nowiki>" no peregistaron. Fümükolös, va vilol jäfön/redakön padi at.',
 'userpage-userdoesnotexist-view' => 'Gebenakal: "$1" no peregistaron.',
 'clearyourcache' => "'''Prudö!''' Pos dakip buükamas, mögos, das ozesüdos ad nedemön memi nelaidüpik bevüresodatävöma ad logön votükamis.
@@ -671,7 +715,9 @@ Kanol [[Special:Search/{{PAGENAME}}|sukön padatiädi at]] su pads votik, <span
 Memolös, das pads: .css e .js mutons labön tiädi minudik: {{ns:user}}:Foo/vector.css, no {{ns:user}}:Foo/Vector.css.",
 'updated' => '(peatimükon)',
 'note' => "'''Penet:'''",
-'previewnote' => "'''Is pajonon te büologed; votükams no nog pedakipons!'''",
+'previewnote' => "'''Memolös, das is pajonon te büologed.'''
+Votükams olik no nog pedakipons!",
+'continue-editing' => 'Golön ad spadäd redakama',
 'previewconflict' => 'Büologed at jonon vödemi in redakamaspad löpik soäsä opubon if odakipol oni.',
 'session_fail_preview' => "'''Pidö! No emögos ad lasumön votükamis olik kodü per redakamanünodas.<br />Steifülolös dönu. If no oplöpol, tän senunädolös e genunädolös oli, e steifülolös nogna.'''",
 'session_fail_preview_html' => "'''Liedo no eplöpos ad zepön redakami olik kodü per nünodas.'''
@@ -727,10 +773,10 @@ Kanol redakön padi dabinöl, u [[Special:UserLogin|nunädön oli u jafön kali]
 'permissionserrors' => 'Dälapöls',
 'permissionserrorstext' => 'No dalol dunön atosi sekü {{PLURAL:$1|kod|kods}} sököl:',
 'permissionserrorstext-withaction' => 'No dalol $2, sekü {{PLURAL:$1|kod|kods}} sököl:',
-'recreate-moveddeleted-warn' => "'''NUNED: Dönujafol padi pemoüköl.'''
+'recreate-moveddeleted-warn' => "'''Nuned: Dönujafol padi büiko pemoüköl.'''
 
 Vätälolös, va binos pötik ad lairedakön padi at.
-Jenotalised moükama pada at pajonon is as yuf.",
+Jenotalised moükama e topätükama pada at pajonon is as yuf:",
 'moveddeleted-notice' => 'Pad at pemoükon.
 Jenotems moükamas e topätükamas pada palisedon dono.',
 'edit-hook-aborted' => 'Redakam pestöpädon fa huköm.
@@ -739,9 +785,14 @@ No enunon kodi.',
 Jiniko pemoükon.',
 'edit-conflict' => 'Redakamakonflit.',
 'edit-no-change' => 'Redakam olik penedemon, bi vödemivotükams nonik pedunons.',
+'postedit-confirmation' => 'Redakam olik pedakipolon.',
 'edit-already-exists' => 'No kanoy jafön padi nulik.
 On ya dabinon.',
 
+# Content models
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Nuned: Pad at vokon „parser“-sekätis tusuvo.
 
@@ -838,6 +889,7 @@ Ninäd peklänedöl at binon ye nog lügolovik guvanes votik vüka: {{SITENAME}}
 'logdelete-success' => 'Logov jenotaliseda pelonon benosekiko.',
 'revdel-restore' => 'Votükön logovi',
 'revdel-restore-deleted' => 'revids pemoüköl',
+'revdel-restore-visible' => 'revids logädik',
 'pagehist' => 'Padajenotem',
 'deletedhist' => 'Jenotem pemoüköl',
 'revdelete-otherreason' => 'Kod votik/zuik:',
@@ -907,7 +959,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'searchmenu-legend' => 'Sukaparamets',
 'searchmenu-exists' => "'''Dabinon pad labü nem: \"[[:\$1]]\" su vük at'''",
 'searchmenu-new' => "'''Jafolös padi: \"[[:\$1]]\" su vük at!'''",
-'searchhelp-url' => 'Help:Ninäd',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Logön padis labü foyümot at]]',
 'searchprofile-articles' => 'Ninädapads',
 'searchprofile-project' => 'Yufa e Proyegapads',
@@ -960,6 +1011,7 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'skin-preview' => 'Büologed',
 'datedefault' => 'Buükam nonik',
 'prefs-datetime' => 'Dät e Tim',
+'prefs-user-pages' => 'Gebanapads',
 'prefs-personal' => 'Gebananüns',
 'prefs-rc' => 'Votükams nulik',
 'prefs-watchlist' => 'Galädalised',
@@ -1011,6 +1063,7 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'username' => '{{GENDER:$1|Gebananem}}:',
 'uid' => 'Gebanadientif:',
 'prefs-memberingroups' => '{{GENDER:$2|Liman}} {{PLURAL:$1|grupa|grupas}}:',
+'prefs-registration' => 'Tim registarama:',
 'yourrealname' => 'Nem jenöfik *:',
 'yourlanguage' => 'Pük:',
 'yournick' => 'Dispenäd nulik:',
@@ -1022,8 +1075,7 @@ Muton labön {{PLURAL:$1|malati|malatis}} läs $1.',
 'gender-female' => 'Vomik',
 'email' => 'Ladet leäktronik',
 'prefs-help-realname' => 'Nem jenöfik no binon zesüdik. If vilol givön oni, pogebon ad dasevön vobi olik.',
-'prefs-help-email' => 'Ladet leäktronik no peflagon, ab dälon sedi letavöda nulik ole üf glömol letavödi olik.
-Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sävilupol dientifi olik.',
+'prefs-help-email' => 'Ladet leäktronik no peflagon, ab dälon sedi letavöda nulik ole üf glömol letavödi olik.',
 'prefs-help-email-required' => 'Ladet leäktronik paflagon.',
 'prefs-info' => 'Nüns stabik',
 'prefs-signature' => 'Dispenäd',
@@ -1184,6 +1236,7 @@ Dalol i dälön votikanes kosikön ko ol yufü gebana- u bespikapad olik nes sä
 'recentchanges-label-newpage' => 'Redakam at päjafon pad nulik',
 'recentchanges-label-minor' => 'Atos binon redakam pülik',
 'recentchanges-label-bot' => 'Redakam at pädunon fa el bot',
+'recentchanges-label-unpatrolled' => 'Redakam at no nog pekontrolon',
 'rcnote' => "Dono {{PLURAL:$1|binon votükam '''1'''|binons votükams '''$1'''}} lätikün {{PLURAL:$2|dela|delas '''$2'''}} lätikün, pänumädöls tü $5, $4.",
 'rcnotefrom' => "Is palisedons votükams sis '''$2''' (jü '''$1''').",
 'rclistfrom' => 'Jonön votükamis nulik, primölo tü düp $1',
@@ -1338,6 +1391,7 @@ Klikolös tiädi padüla ad votükön sökaleodi at.',
 'listfiles_search_for' => 'Sukön ragivanemi:',
 'imgfile' => 'ragiv',
 'listfiles' => 'Ragivalised',
+'listfiles_thumb' => 'Magodil',
 'listfiles_date' => 'Dät',
 'listfiles_name' => 'Nem',
 'listfiles_user' => 'Geban',
@@ -1368,8 +1422,11 @@ Lised dono jonon {{PLURAL:$1|padayümi balid|padayümis balid $1}} te lü ragiv
 [[Special:WhatLinksHere/$2|Lised lölöfik]] gebidon.',
 'nolinkstoimage' => 'Pads nonik peyümons ad ragiv at.',
 'morelinkstoimage' => 'Logolös [[Special:WhatLinksHere/$1|yümis pluik]] ad ragiv at.',
+'linkstoimage-redirect' => '$1 (lüodükam ragiva) $2',
 'duplicatesoffile' => '{{Plural:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
 'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.',
+'sharedupload-desc-here' => 'Ragiv at kömon de $1 e kanon pagebön fa proyegs votik.
+Bepenot su [$2 pad bepenota ragiva] onik pajonon dono.',
 'uploadnewversion-linktext' => 'Löpükön fomami nulik ragiva at',
 'shared-repo-from' => 'se $1',
 
@@ -1453,6 +1510,8 @@ Primanünods: ninädasot/donasot, a.s. <code>image/jpeg</code>.',
 Sötons plao payümon lü yeged pötik.<br />
 Pad palelogon telplänovapad if gebon samafomoti, lü kel payümon pad [[MediaWiki:Disambiguationspage]].",
 
+'pageswithprop-submit' => 'Golön',
+
 'doubleredirects' => 'Lüodüköms telik',
 'doubleredirectstext' => 'Kedet alik labon yümis lü lüodüköm balid e telid, ed i kedeti balid vödema lüodüköma telid, kel nomiko ninädon padi, ko kel lüodüköm balid söton payümön.',
 'double-redirect-fixed-move' => 'Pad: [[$1]] petopätükon, anu binon lüodüköm lü pad: [[$2]]',
@@ -1542,7 +1601,7 @@ Pad palelogon telplänovapad if gebon samafomoti, lü kel payümon pad [[MediaWi
 'specialloguserlabel' => 'Geban:',
 'speciallogtitlelabel' => 'Lükömöp (tiäd u geban):',
 'log' => 'Jenotaliseds',
-'all-logs-page' => 'Jenotaliseds valik',
+'all-logs-page' => 'Jenotaliseds notidik valik',
 'alllogstext' => 'Kobojonam jenotalisedas gebidik valik in {{SITENAME}}.
 Ad brefükam lisedi, kanol välön lisedasoti, gebananemi, u padi tefik.',
 'logempty' => 'No dabinons notets in jenotalised at.',
@@ -1722,7 +1781,8 @@ Küpets e yuf pluik:
 'delete-legend' => 'Moükön',
 'historywarning' => 'Nuned: pad, keli vilol moükön, labon jenotemi:',
 'confirmdeletetext' => 'Primikol ad moükön laidüpiko padi u magodi sa jenotem valik ona. Fümedolös, das desinol ad dunön atosi, das suemol sekis, e das dunol atosi bai [[{{MediaWiki:Policy-url}}]].',
-'actioncomplete' => 'Peledunon',
+'actioncomplete' => 'Dunot eplöpon',
+'actionfailed' => 'Dunot eneplöpon',
 'deletedtext' => 'Pad: "$1" pemoükon;
 $2 jonon moükamis nulik.',
 'dellogpage' => 'Jenotalised moükamas',
@@ -1880,7 +1940,7 @@ $1',
 'mycontris' => 'Keblünots',
 'contribsub2' => 'Tefü $1 ($2)',
 'nocontribs' => 'Votükams nonik petuvons me paramets at.',
-'uctop' => '(lätik)',
+'uctop' => '(anuik)',
 'month' => 'De mul (e büiks):',
 'year' => 'De yel (e büiks):',
 
@@ -1889,6 +1949,7 @@ $1',
 'sp-contributions-newbies-title' => 'Gebanakeblünots pro kals nulik',
 'sp-contributions-blocklog' => 'Jenotalised blokamas',
 'sp-contributions-deleted' => 'gebanakeblünots pemoüköl',
+'sp-contributions-uploads' => 'löpükams',
 'sp-contributions-logs' => 'jenotaliseds',
 'sp-contributions-talk' => 'bespik',
 'sp-contributions-userrights' => 'guvam gebanagitätas',
@@ -1946,10 +2007,12 @@ $1',
 'ipbhidename' => 'Klänedön gebananemi se redakams e liseds',
 'ipbwatchuser' => 'Galädon gebana- e bespikapadis gebana at',
 'ipb-change-block' => 'Dönublokön gebani me paramets at',
+'ipb-confirm' => 'Fümedön blokami',
 'badipaddress' => 'Ladet-IP no lonöfon',
 'blockipsuccesssub' => 'Blokam eplöpon',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] peblokon.
-<br />Logolös [[Special:BlockList|lisedi ladetas-IP pebloköl]] ad vestigön blokamis.',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] peblokon.<br />
+Logolös [[Special:BlockList|lisedi blokamas]] ad vestigön blokamis.',
+'ipb-blockingself' => 'Oblokön oli it! Fümol-li, das vilol dunön atosi?',
 'ipb-edit-dropdown' => 'Redakön kodis blokama',
 'ipb-unblock-addr' => 'Säblokön eli $1',
 'ipb-unblock' => 'Säblokön gebananemi u ladeti-IP',
@@ -1961,6 +2024,7 @@ $1',
 'unblocked' => '[[User:$1|$1]] pesäblokon',
 'unblocked-range' => '$1 pesäblokon',
 'unblocked-id' => 'Blokam: $1 pesädunon',
+'blocklist' => 'Gebans pebloköl',
 'ipblocklist' => 'Gebans pebloköl',
 'ipblocklist-legend' => 'Tuvön gebani pebloköl',
 'blocklist-reason' => 'Kod',
@@ -2032,16 +2096,19 @@ No glömolös ad [[Special:UnlockDB|maifükön oni]] ven ufinükol vobi olik.',
 'unlockdbsuccesstext' => 'Nünodem pemaifükon.',
 'lockfilenotwritable' => 'Ragiv lökofärmükamas no votükovon. Ad lökofärmükön u maifükön nünodemi, ragiv at muton binön votükovik (dub dünanünöm).',
 'databasenotlocked' => 'Vük at no pefärmükon.',
+'lockedbyandtime' => '(fa {{GENDER:$1|$1}} tü $2 düp $3)',
 
 # Move page
 'move-page' => 'Topätükön padi: $1',
 'move-page-legend' => 'Topätükolöd padi',
-'movepagetext' => "Me fomet at kanoy votükön padanemi, ottimo feapladölo jenotemi lölöfik ona disi nem nulik. Tiäd büik ovedon lüodüköm lü tiäd nulik. Yüms lü padatiäd büik no povotükons; kontrolös dabini lüodükömas telik u dädikas. Gididol ad garanön, das yüms blebons lüodükön lü pads, lü kels mutons lüodükön.
+'movepagetext' => "Me fomet at kanoy votükön padanemi, ottimo feapladölo jenotemi lölöfik ona disi nem nulik. Tiäd büik ovedon lüodüköm lü tiäd nulik. Yüms lü padatiäd büik no povotükons; kontrolös dabini [[Special:DoubleRedirects|lüodükömas telik]] u [[Special:BrokenRedirects|dädikas]]. Gididol ad garanön, das yüms blebons lüodükön lü pads, lü kels mutons lüodükön.
 
-Küpälolös, das pad '''no''' potopätükon if ya dabinon pad labü tiäd nulik, bisä vagon u binon lüodüköm e no labon jenotemi. Atos sinifon, das, if pölol, nog kanol gepladön padi usio, kö äbinon büo, e das no kanol pladön padi nulik sui pad ya dabinöl.
+Küpälolös, das pad '''no''' potopätükon if ya dabinon pad labü tiäd nulik, bisä vagon u binon lüodüköm e no labon jenotemi.
+Atos sinifon, das, if pölol, nog kanol gepladön padi usio, kö äbinon büo, e das no kanol pladön padi nulik sui pad ya dabinöl.
 
-<b>NUNED!</b>
-Votükam at kanon binön mu staböfik ä no paspetöl pö pad pöpedik. Suemolös, begö! gudiko sekis duna at büä ofövol oni.",
+'''Nuned!'''
+Votükam at kanon binön mu staböfik ä no paspetöl pö pad pöpedik;
+suemolös, begö! gudiko sekis duna at büä ofövol oni.",
 'movepagetalktext' => "Bespikapad tefik potopätükön itjäfidiko kobü pad at '''pläsif:'''
 * bespikapad no vägik labü tiäd nulik ya dabinon, u
 * vagükol anu bokili dono.
@@ -2250,6 +2317,7 @@ Dakipolös oni su nünöm olik e löpükolös oni isio.',
 'tooltip-rollback' => '„Sädunön vali“ sädunon redakami(s) pada at fa keblünan lätik me klik bal mugaparata.',
 'tooltip-undo' => '"Sädunön bali" sädunon redakami at e maifükön redakamafometi as büologed.
 Dälon läükami koda.',
+'tooltip-summary' => 'Penolös pläni brefik',
 
 # Stylesheets
 'common.css' => '/** El CSS isio peplädöl pogebon pro padafomäts valik */',
@@ -2282,6 +2350,8 @@ Pad luveratiko ninädon yümi lü bevüresodatopäd plödik in blägalised.',
 
 # Info page
 'pageinfo-header-edits' => 'Jenotem redakamas',
+'pageinfo-contentpage-yes' => 'Si',
+'pageinfo-protect-cascading-yes' => 'Si',
 
 # Patrolling
 'markaspatrolleddiff' => 'Zepön',
@@ -2324,6 +2394,7 @@ If ojäfidükol oni, nünömasit olik ba podämükon.",
 'file-info-size' => '$1 × $2 pixel, ragivagret: $3, pated MIME: $4',
 'file-nohires' => 'Gretot gudikum no pagebidon.',
 'svg-long-desc' => 'ragiv in fomät: SVG, magodaziöbs $1 × $2, gretot: $3',
+'svg-long-error' => "Ragiv 'SVG' ne lonöfon: $1",
 'show-big-image' => 'Gretot gudikün',
 
 # Special:NewFiles
@@ -2343,6 +2414,23 @@ If ojäfidükol oni, nünömasit olik ba podämükon.",
 'minutes' => '{{PLURAL:$1|minut 1|minuts $1}}',
 'hours' => '{{PLURAL:$1|düp 1|düps $1}}',
 'days' => '{{PLURAL:$1|del 1|dels $1}}',
+'months' => '{{PLURAL:$1|mul $1|muls $1}}',
+'years' => '{{PLURAL:$1|yel $1|yels $1}}',
+'ago' => 'bü $1',
+'just-now' => 'anu',
+
+# Human-readable timestamps
+'hours-ago' => 'bü {{PLURAL:$1|düp|düps}} $1',
+'minutes-ago' => 'bü {{PLURAL:$1|minut|minuts}} $1',
+'seconds-ago' => 'bü {{PLURAL:$1|sekun|sekuns}} $1',
+'monday-at' => 'Tü mudel düp $1',
+'tuesday-at' => 'Tü tudel düp $1',
+'wednesday-at' => 'Tü vedel düp $1',
+'thursday-at' => 'Tü dödel düp $1',
+'friday-at' => 'Tü fridel düp $1',
+'saturday-at' => 'Tü zädel düp $1',
+'sunday-at' => 'Tü sudel düp $1',
+'yesterday-at' => 'Ädelo düp $1',
 
 # Bad image list
 'bad_image_list' => 'Fomät pabevobon ön mod soik:
@@ -2479,6 +2567,7 @@ Nünabinets votik poklänedons.
 'exif-gpsareainformation' => 'Nem topäda: GPS',
 'exif-gpsdatestamp' => 'Dät ela GPS',
 'exif-source' => 'Fonät',
+'exif-writer' => 'Penan',
 'exif-languagecode' => 'Pük',
 'exif-iimcategory' => 'Klad',
 
@@ -2595,10 +2684,18 @@ Nünabinets votik poklänedons.
 'exif-gpsspeed-m' => 'Liöls a düp',
 'exif-gpsspeed-n' => 'Snobs',
 
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Milmets',
+'exif-gpsdestdistance-m' => 'Liöls',
+
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Lüod veratik',
 'exif-gpsdirection-m' => 'Lüod magnetik',
 
+'exif-dc-date' => 'Dät(s)',
+'exif-dc-publisher' => 'Püban',
+
+'exif-iimcategory-spo' => 'Spots',
 'exif-iimcategory-wea' => 'Stom',
 
 # External editor support
@@ -2731,10 +2828,15 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 'version-hook-subscribedby' => 'Pagebon fa',
 'version-version' => '(Fomam $1)',
 'version-license' => 'Dälazöt',
+'version-poweredby-others' => 'votikans',
 'version-software' => 'Programs pestitöl',
 'version-software-product' => 'Prodäd',
 'version-software-version' => 'Fomam',
 
+# Special:Redirect
+'redirect-submit' => 'Golön',
+'redirect-file' => 'Ragivanem',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Sukön ragivis petelüköl',
 'fileduplicatesearch-summary' => 'Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.',
@@ -2768,6 +2870,7 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 'intentionallyblankpage' => 'Pad at pevagükon desino',
 
 # Special:Tags
+'tag-filter' => '[[Special:Tags|Sul]] ninädapenetas:',
 'tag-filter-submit' => 'Sul',
 'tags-display-header' => 'Logot in votükamaliseds',
 'tags-edit' => 'redakön',
@@ -2792,14 +2895,30 @@ Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
 'htmlform-submit' => 'Sedön',
 'htmlform-reset' => 'Sädunön votükamis',
 'htmlform-selectorother-other' => 'Votik',
+'htmlform-no' => 'Nö',
+'htmlform-yes' => 'Si',
 
 # New logging system
 'revdelete-restricted' => 'miedükams pelonöfükons pro guvans',
 'revdelete-unrestricted' => 'miedükams pro guvans pemoükons',
 'rightsnone' => '(nonik)',
 
+# Feedback
+'feedback-subject' => 'Yegäd:',
+
 # Search suggestions
 'searchsuggest-search' => 'Suk',
 'searchsuggest-containing' => 'ninädöl...',
 
+# Durations
+'duration-seconds' => '{{PLURAL:$1|sekun|sekuns}} $1',
+'duration-minutes' => '{{PLURAL:$1|minut|minuts}} $1',
+'duration-hours' => '{{PLURAL:$1|düp|düps}} $1',
+'duration-days' => '{{PLURAL:$1|del|dels}} $1',
+'duration-weeks' => '{{PLURAL:$1|vig|vigs}} $1',
+'duration-years' => '{{PLURAL:$1|yel|yels}} $1',
+'duration-decades' => '{{PLURAL:$1|degyel|degyels}} $1',
+'duration-centuries' => '{{PLURAL:$1|tumyel|tumyels}} $1',
+'duration-millennia' => '{{PLURAL:$1|milyel|milyels}} $1',
+
 );
index cfe4728..35d6407 100644 (file)
@@ -166,7 +166,6 @@ $messages = array(
 'disclaimers' => 'Ceeltümin vassamizõõ',
 'disclaimerpage' => 'Project:Ceeltümin vassamizõõ',
 'edithelp' => 'Muutuzavid',
-'edithelppage' => 'Help:Kui muuttaa cülciä',
 'helppage' => 'Help:Sisälto',
 'mainpage' => 'Esicülci',
 'mainpage-description' => 'Esicülci',
index a715c85..d36e457 100644 (file)
@@ -280,7 +280,6 @@ $1",
 'disclaimers' => 'Hoiatuisi',
 'disclaimerpage' => 'Project:Üledseq hoiatusõq',
 'edithelp' => 'Toimõndamisoppus',
-'edithelppage' => 'Help:Kuis_artiklit_toimõndaq',
 'helppage' => 'Help:Oppus',
 'mainpage' => 'Pääleht',
 'mainpage-description' => 'Pääleht',
@@ -775,7 +774,6 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'shown-title' => 'Näütäq lehe kotsilõ $1 {{PLURAL:$1|tulõmus|tulõmust}}',
 'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-new' => "'''Luuq leht päälkiräga \"[[:\$1]]\".'''",
-'searchhelp-url' => 'Help:Oppus',
 'searchprofile-articles' => 'Sisuleheq',
 'searchprofile-project' => 'Abi- ja projektileheq',
 'searchprofile-images' => 'Multimeediä',
index 7a8020f..ab4eae0 100644 (file)
@@ -305,7 +305,6 @@ $1",
 'currentevents' => 'Actouwålités',
 'currentevents-url' => 'Project:Actouwålités',
 'edithelp' => 'Aidance',
-'edithelppage' => 'Help:Kimint candjî ene pådje',
 'helppage' => 'Help:Aidance',
 'mainpage' => 'Mwaisse pådje',
 'mainpage-description' => 'Mwaisse pådje',
@@ -513,10 +512,8 @@ Motoit ki vos l' avoz ddja candjî ou ridmandé on novea scret timporaire.",
 
 # Special:PasswordReset
 'passwordreset' => "Rifé l' sicret",
-'passwordreset-text' => 'Completez cisse formulrece ci po rçure èn emile ki dene les detays do conte da vosse.',
 'passwordreset-legend' => "Rifé l' sicret",
 'passwordreset-disabled' => "Li rfijhaedje di screts a stî dismetou so ç' wiki ci.",
-'passwordreset-pretext' => '{{PLURAL:$1||Dinez onk des elemints di dnêyes shuvants}}',
 'passwordreset-username' => "No d' elodjaedje:",
 'passwordreset-domain' => 'Dominne:',
 'passwordreset-capture' => "Vey li messaedje di l' emile?",
@@ -818,7 +815,6 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'searchmenu-legend' => 'Tchuzes di cweraedje',
 'searchmenu-exists' => "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
 'searchmenu-new' => "'''Ahiver l' pådje \"[[:\$1]]\" so ç' wiki ci!'''",
-'searchhelp-url' => 'Help:Aidance',
 'searchprofile-articles' => 'Pådjes di contnou',
 'searchprofile-project' => "Pådjes d' aidance et do pordjet",
 'searchprofile-images' => 'Multimedia',
index 38f0cdd..11156a3 100644 (file)
@@ -307,7 +307,6 @@ $1',
 'disclaimers' => 'Mga Disclaimer',
 'disclaimerpage' => 'Project:Kasahiran nga disclaimer',
 'edithelp' => 'Bulig hin pagliwat',
-'edithelppage' => 'Help:Pagliwat',
 'helppage' => 'Help:Sulod',
 'mainpage' => 'Syahan nga Pakli',
 'mainpage-description' => 'Syahan nga Pakli',
@@ -596,7 +595,6 @@ Ikaw in naglalog-in yana...',
 
 # Special:PasswordReset
 'passwordreset' => 'igreset an tigaman-hit-pagsulod',
-'passwordreset-text' => 'Kumpletoha ini nga porma para makareset han imo password.',
 'passwordreset-legend' => 'igreset an tigaman-hit-pagsulod',
 'passwordreset-disabled' => 'Waray ginpaandar an password reset hini nga wiki.',
 'passwordreset-username' => 'Agnay hiton gumaramit:',
@@ -853,7 +851,6 @@ Diri mo ini malalabtan.',
 'searchmenu-legend' => 'Mga pagpipilian han pamiling',
 'searchmenu-exists' => "'''May-ada pakli nga nakangaran hin \"[[:\$1]]\" hini nga wiki.'''",
 'searchmenu-new' => "'''Himoa an pakli \"[[:\$1]]\" hini nga wiki!'''",
-'searchhelp-url' => 'Help:Sulod',
 'searchprofile-articles' => 'Mga unod nga pakli',
 'searchprofile-project' => 'Mga Bulig ngan Proyekto nga pakli',
 'searchprofile-images' => 'Multimedia',
index b9bede3..2d95cc7 100644 (file)
@@ -309,7 +309,6 @@ $1',
 'disclaimers' => 'Ay aartu',
 'disclaimerpage' => 'Project:Aartu yu daj',
 'edithelp' => 'Ndimbal',
-'edithelppage' => 'Help:Nooy soppee aw xët',
 'helppage' => 'Help:Ndimbal',
 'mainpage' => 'Xëtu Njëlbéen',
 'mainpage-description' => 'Xët wu njëkk',
@@ -880,7 +879,6 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'searchmenu-legend' => 'Tànneefi ceet',
 'searchmenu-exists' => "'''wenn xët wu tudd « [[:$1]] » moo am ci bii wiki'''",
 'searchmenu-new' => "'''Sosal xët wii di « [[:$1|$1]] » ci bii wiki !'''",
-'searchhelp-url' => 'Help:Ndimbal',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Xoolal xët wi tambalee nii]]',
 'searchprofile-articles' => 'Xëti ëmbiit',
 'searchprofile-project' => 'Xëti Ndimbal ak Sémb',
index 36e57dc..9bf0c26 100644 (file)
@@ -247,7 +247,6 @@ $1',
 'disclaimers' => '免责声明',
 'disclaimerpage' => 'Project:免责声明',
 'edithelp' => '编辑帮助',
-'edithelppage' => 'Help:如何编辑页面',
 'helppage' => 'Help:目录',
 'mainpage' => '封面',
 'mainpage-description' => '封面',
@@ -857,7 +856,6 @@ $1",
 'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''垃拉箇只wiki高头已经有只页面叫“[[:$1]]”哉'''",
 'searchmenu-new' => "'''垃拉该wiki里向新建页面“[[:$1]]”!'''",
-'searchhelp-url' => 'Help:目录',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|浏览带箇只前缀个页面]]',
 'searchprofile-articles' => '内容页面',
 'searchprofile-project' => '帮助搭仔项目页面',
index 77254aa..814eeb0 100644 (file)
@@ -287,7 +287,6 @@ $1',
 'disclaimers' => 'Дааврас эс зөвшәрлһн',
 'disclaimerpage' => 'Project:Даарас эс зөвшәрлһн',
 'edithelp' => 'Чикллһнә дөң',
-'edithelppage' => 'Help:Чикллһн',
 'helppage' => 'Help:Һарг',
 'mainpage' => 'Нүр халх',
 'mainpage-description' => 'Нүр халх',
index f0ab960..10968f8 100644 (file)
@@ -190,7 +190,6 @@ $messages = array(
 'disclaimers' => 'გამამინჯალაშ ვარება',
 'disclaimerpage' => 'Project:გამამინჯალაშ ვარება',
 'edithelp' => 'მოხვარა რედაქტირაფას',
-'edithelppage' => 'Help:ტექსტიშ რედაქტირაფა',
 'helppage' => 'Help:დინორე',
 'mainpage' => 'დუდხასჷლა',
 'mainpage-description' => 'დუდხასჷლა',
@@ -411,7 +410,6 @@ $messages = array(
 'viewprevnext' => 'ქოძირ  ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => 'თე ვიკის "[[:$1]]" ჯოხოთ ხასჷლა რე',
 'searchmenu-new' => "''ქჷდარსხი \"[[:\$1]]\" ხასჷლა თე ვიკის'''",
-'searchhelp-url' => 'Help:მოხვარა',
 'searchprofile-articles' => 'სტატიეფი',
 'searchprofile-project' => 'მოხვარაშ დო პროექტიშ ხასჷლეფი',
 'searchprofile-images' => 'მულტიმედია',
index c8aa314..3fec8c9 100644 (file)
@@ -225,7 +225,7 @@ $messages = array(
 'tog-oldsig' => 'איצטיגער אונטערשריפֿט:',
 'tog-fancysig' => 'באַהאַנדלן  אונטערשריפט אַלס וויקיטעקסט (אָן אויטאמאטישן לינק)',
 'tog-showjumplinks' => 'באמעגלעך צוטריט לינקס פון "שפרינג צו"',
-'tog-uselivepreview' => '×\91×\90× ×\95צ×\98 ×\96×\99×\9a ×\9e×\99×\98 ×\9c×\99×\99×\95×\95 ×¤×\90ר×\90×\95×\99ס×\93×\99×\92×¢ ×\95×\95×\99×\99×\96×\95× ×\92 (JavaScript) (עקספ×\99רענ×\9e×¢×\98ל)',
+'tog-uselivepreview' => '×\91×\90× ×\99צ×\98 ×\96×\99×\9a ×\9e×\99×\98 ×\92×\99×\9b×¢ ×¤×\90ר×\90×\95×\99ס×\93×\99×\92×¢ ×\95×\95×\99×\99×\96×\95× ×\92 (JavaScript) (עקספער×\99×\9e×¢× ×\98×\90ל)',
 'tog-forceeditsummary' => 'ווארן מיך ווען איך לייג א ליידיג קורץ ווארט ענדערונג',
 'tog-watchlisthideown' => 'באהאלט מיינע ענדערונגען פון דער אויפפאסן ליסטע',
 'tog-watchlisthidebots' => 'באהאלט באט עדיטס פון אויפפאסן ליסטע',
@@ -448,7 +448,6 @@ $1',
 'disclaimers' => 'געזעצליכע אויפֿקלערונג',
 'disclaimerpage' => 'Project:קלארשטעלונג',
 'edithelp' => 'הילף וויאזוי צו ענדערן',
-'edithelppage' => 'Help:ענדערן',
 'helppage' => 'Help:אינהאַלט',
 'mainpage' => 'הויפט זייט',
 'mainpage-description' => 'הויפט זייט',
@@ -735,7 +734,8 @@ $2',
 'cannotchangeemail' => "מ'קען נישט ענדערן קאנטע ע־פאסט אדרעסן אין דער וויקי.",
 'emaildisabled' => 'דאס וועבזייטל קען נישט שיקן ע־בריוון.',
 'accountcreated' => 'די קאָנטע איז באַשאַפֿן',
-'accountcreatedtext' => 'די באניצער קאנטע פאר $1 איז באַשאַפֿן געווארן.',
+'accountcreatedtext' => 'די באניצער קאנטע פאר [[{{ns:User}}:$1|$1]] 
+([[{{ns:User talk}}:$1|שמועס]])  איז באַשאַפֿן געווארן.',
 'createaccount-title' => 'קאנטע באשאפֿן אין {{SITENAME}}',
 'createaccount-text' => 'עמעצער האט באשאפֿן א קאנטע פֿאר אייער ע-פאסט אדרעס אין {{SITENAME}} ($4) מיטן נאמען "$2" און  פאסווארט "$3". איר דארפט אצינד איינלאגירן און ענדערן דאס פאסווארט.
 
@@ -854,7 +854,7 @@ $2
 'missingcommentheader' => "'''דערמאַנונג:''' איר האט נישט אַרײַנגעשטעלט א טעמע/קעפל פאר דער אנמערקונג. אויב וועט איר דרוקן נאכאמאל אויפן \"{{int:savearticle}}\", וועט אייער ענדערונג ווערן אפגעהיטן אן דעם.",
 'summary-preview' => 'סך-הכל פאראויסדיגע ווייזונג:',
 'subject-preview' => 'טעמע/קעפל פאראויסדיגע ווייזונג:',
-'blockedtitle' => 'באנוצער איז בלאקירט',
+'blockedtitle' => 'באַניצער איז בלאקירט',
 'blockedtext' => '\'\'\'אייער באניצער נאמען אדער IP אדרעס איז געווארן בלאקירט.\'\'\'
 
 דעם בלאק האט $1 געמאכט פון וועגן \'\'$2\'\'.
@@ -1018,7 +1018,8 @@ $2
 ס'ווייזט אויס אז ער איז אויסגעמעקט.",
 'edit-conflict' => 'רעדאקטירן קאנפֿליקט.',
 'edit-no-change' => "מ'האט איגנארירט אײַער רעדאַקטירונג, ווײַל קיין שום ענדערונג איז נישט געמאַכט צום טעקסט.",
-'edit-already-exists' => 'נישט מעגליך צו שאַפֿן נייע בלאט.
+'postedit-confirmation' => 'אייער רעדאקטירונג איז געווארן אויפגעהיטן.',
+'edit-already-exists' => 'נישט מעגליך צו שאַפֿן נייעם בלאט.
 ער עקזיסטירט שוין.',
 'defaultmessagetext' => 'גרונטלעכער מעלדונג טעקסט',
 'content-failed-to-parse' => 'פארזן $2 אינהאלט פאר $1 מאדעל דורכגעפאלן: $3',
@@ -1264,7 +1265,6 @@ $1",
 'searchmenu-legend' => 'זוכן ברירות',
 'searchmenu-exists' => "'''ס'איז פֿאַראַן א בלאַט מיטן נאמען \"[[:\$1]]\" אין דער וויקי'''",
 'searchmenu-new' => "'''באַשאַפֿן דעם בלאַט \"[[:\$1]]\" אויף דער וויקי'''",
-'searchhelp-url' => 'Help:אינהאַלט',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|בלעטערן בלעטער מיט דעם פרעפֿיקס]]',
 'searchprofile-articles' => 'אינהאלט בלעטער',
 'searchprofile-project' => 'הילף און פראיעקט בלעטער',
@@ -1324,7 +1324,7 @@ $1",
 'prefs-datetime' => 'דאטום און צייט',
 'prefs-labs' => 'לאַבאראַטאריע מעגלעכקייטן',
 'prefs-user-pages' => 'באניצער בלעטער',
-'prefs-personal' => '×\91×\90Ö·× ×\95צער פראָפֿיל',
+'prefs-personal' => '×\91×\90Ö·× ×\99צער פראָפֿיל',
 'prefs-rc' => 'לעצטע ענדערונגען',
 'prefs-watchlist' => 'אויפפאסונג ליסטע',
 'prefs-watchlist-days' => 'טעג צו ווייזן אין דער אויפפאסונג ליסטע:',
@@ -1428,9 +1428,9 @@ $1",
 'email-address-validity-invalid' => 'לייגט אַרײַן א גילטיקן ע־פאסט אַדרעס',
 
 # User rights
-'userrights' => 'באנוצער רעכטן פארוואלטערשאפט',
+'userrights' => 'באַניצער רעכטן פֿאַרוואַלטערשאפט',
 'userrights-lookup-user' => 'פֿאַרוואַלטן באניצער גרופעס',
-'userrights-user-editname' => 'לייגט אריין א באנוצער-נאמען:',
+'userrights-user-editname' => 'לייגט אריין א באַניצער-נאמען:',
 'editusergroup' => 'רעדאַגירן באַניצער גרופּעס',
 'editinguser' => "ענדערן באַניצער רעכטן פון באַניצער '''[[User:$1|$1]]'''   $2",
 'userrights-editusergroup' => 'רעדאַקטירן באַניצער גרופעס',
@@ -1517,6 +1517,7 @@ $1",
 'right-editusercssjs' => 'רעדאַקטירן אַנדערע באַניצערס CSS און JS טעקעס',
 'right-editusercss' => 'רעדאַקטירן אַנדערע באַניצערס CSS טעקעס',
 'right-edituserjs' => 'רעדאַקטירן אַנדערע באַניצערס JS טעקעס',
+'right-editmyusercss' => 'רעדאקטירע אײַערע אייגענע באניצער CSS טעקעס',
 'right-rollback' => 'גיך צוריקדרייען די רעדאַקטירונגען פונעם לעצטן באַניצער וואס האט רעדאַקטירט א געוויסן בלאַט',
 'right-markbotedits' => 'מאַרקירן צוריקגעזעצטע רעדאַגירונגען ווי באט רעדאַגירונגען',
 'right-noratelimit' => 'נישט ווערן באַגרענעצט דורך לימיטאַציע',
@@ -1595,7 +1596,7 @@ $1",
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
 'rcshowhidebots' => '$1 ראבאטן',
 'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצערס',
-'rcshowhideanons' => '$1 ×\90Ö·× ×\90ָנ×\99×\9e×¢ ×\91×\90Ö·× ×\95צערס',
+'rcshowhideanons' => '$1 ×\90Ö·× ×\90ָנ×\99×\9e×¢ ×\91×\90Ö·× ×\99צער',
 'rcshowhidepatr' => '$1 פאַטראלירטע ענדערונגען',
 'rcshowhidemine' => '$1 מײַנע רעדאַקטירוננגען',
 'rclinks' => 'װײַזן די לעצטע $1 ענדערונגען אין די לעצטע $2 טעג.<br />$3',
@@ -2454,7 +2455,7 @@ $1',
 'mycontris' => 'בײַשטײַערונגען',
 'contribsub2' => 'וועגן $1 ($2)',
 'nocontribs' => 'נישט געטראפן קיין ענדערונגען צוזאמעגעפאסט מיט די קריטעריעס.',
-'uctop' => '(×\9cעצ×\98×¢)',
+'uctop' => '(×\9c×\95×\99פֿ×\99ק)',
 'month' => 'ביז חודש:',
 'year' => 'ביז יאר:',
 
@@ -3153,7 +3154,7 @@ $1',
 'exif-compressedbitsperpixel' => 'בילד צוזאמקוועטשן מאוד',
 'exif-pixelydimension' => 'בילד ברייט',
 'exif-pixelxdimension' => 'בילד הייך',
-'exif-usercomment' => '×\91×\90× ×\95צער קאמענטורן',
+'exif-usercomment' => '×\91×\90× ×\99צער קאמענטורן',
 'exif-relatedsoundfile' => 'פֿאַרבונדענע אוידיאָ טעקע',
 'exif-datetimeoriginal' => 'דאטום און צייט פון דאַטן באשאפונג',
 'exif-datetimedigitized' => 'דאטום און צייט פון דיזשיטייזונג',
@@ -3513,7 +3514,7 @@ $5
 
 # Delete conflict
 'deletedwhileediting' => 'ווארענונג: דער בלאט איז געווארן אויסגעמעקט נאכדעם וואס איר האט אנגעהויבן רעדאקטירן!',
-'confirmrecreate' => "באנוצער [[User:$1|$1]] ([[User talk:$1|רעדן]]) האט אויסגעמעקט דעם בלאט נאכדעם וואס איר האט אנגעהויבן דאס צו ענדערן, אלס אנגעבליכער סיבה:
+'confirmrecreate' => "באַניצער [[User:$1|$1]] ([[User talk:$1|רעדן]]) האט אויסגעמעקט דעם בלאט נאכדעם וואס איר האט אנגעהויבן דאס צו ענדערן, אלס אָנגעבליכער סיבה:
 :'''$2'''
 ביטע באשטעטיגט אז איר ווילט טאקע צוריקשטעלן דעם בלאט.",
 'recreate' => 'שאַפֿן פֿונדאסניי',
index 0b91405..cfcb9c0 100644 (file)
@@ -160,6 +160,18 @@ $messages = array(
 'oct' => 'Oṣù 10',
 'nov' => 'Oṣù 11',
 'dec' => 'Oṣù 12',
+'january-date' => '$1 Oṣù Kínní',
+'february-date' => '$1 Oṣù Kejì',
+'march-date' => '$1 Oṣù Kẹta',
+'april-date' => '$1 Oṣù Kẹrin',
+'may-date' => '$1 Oṣù Kàrún',
+'june-date' => '$1 Oṣù Kẹfà',
+'july-date' => '$1 Oṣù Keje',
+'august-date' => '$1 Oṣù Kẹjọ',
+'september-date' => '$1 Oṣù Kẹ̀sán',
+'october-date' => '$1 Oṣù Kẹ̀wá',
+'november-date' => '$1 Oṣù Kọkànlá',
+'december-date' => '$1 Oṣù Kejìlá',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Ẹ̀ka|Àwọn ẹ̀ka}}',
@@ -241,6 +253,7 @@ $messages = array(
 'create-this-page' => "Ṣè'dá ojúewé yìí",
 'delete' => 'Ìparẹ́',
 'deletethispage' => 'Pa ojúewé yi rẹ́',
+'undeletethispage' => 'Mú ìparẹ́ kúrò fún ojúewé yìí',
 'undelete_short' => 'Ìdápadà ìparẹ́ {{PLURAL:$1|àtúnṣe kan|àwọn àtúnṣe $1}}',
 'viewdeleted_short' => 'Ìwòran {{PLURAL:$1|àtúnṣe ajẹ́píparẹ́ kan|àwọn àtúnṣe ajẹ́píparẹ́ $1}}',
 'protect' => 'Àbò',
@@ -294,7 +307,6 @@ $1',
 'disclaimers' => 'Ikìlọ̀',
 'disclaimerpage' => 'Project:Ìkìlọ̀ gbogbo',
 'edithelp' => 'Ìrànlọ́wọ́ fún àtúnṣe',
-'edithelppage' => 'Help:Àtúnṣe',
 'helppage' => 'Help:Àwon àkóónú',
 'mainpage' => 'Ojúewé Àkọ́kọ́',
 'mainpage-description' => 'Ojúewé Àkọ́kọ́',
@@ -443,6 +455,8 @@ Láti ṣ'àfikún tàbí ṣ'àyípadà àwọn ìyédèpadà fún gbogbo àw
 'namespaceprotected' => "A kò gbàyín ní ààyè láti ṣ'àtúnṣe àwọn ojúewé tó wà nínú orúkọàyè '''$1'''.",
 'customcssprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé CSS yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'customjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
+'mycustomcssprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé CSS yìí.',
+'mycustomjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí.',
 'ns-specialprotected' => 'Àtúnṣe kò ṣe é ṣe sí àwọn ojúewé pàtàkì.',
 'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá àkọlé yìí. Ìdí rẹ̀ ni pé ''$2''.",
 'filereadonlyerror' => 'Àtúnṣe kò ṣe é ṣe sí fáìlì "$1" nítorípé ibi-àkójọ fáìlì "$2" jẹ́ fún wíwò nìkàn.
@@ -477,8 +491,8 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'createacct-yourpasswordagain' => 'Ẹ ṣe ìfidájú ọ̀rọ̀ìpamọ́',
 'createacct-yourpasswordagain-ph' => 'Ẹ kọ ọ̀rọ̀ìpamọ́ lẹ́ẹ̀kan síi',
 'remembermypassword' => "Ṣè'rántí ìwọlé mi lórí kọ̀mpútà yìí (fún ó pẹ́ jù {{PLURAL:$1|ọjọ́|ọjọ́}} $1)",
-'userlogin-remembermypassword' => 'Ṣè rántí mi',
-'userlogin-signwithsecure' => 'Ẹ wọlé pẹ̀lú ẹ̀rọ-ìpèsè tó ní àbò',
+'userlogin-remembermypassword' => 'Fi mí sí ìwọlé',
+'userlogin-signwithsecure' => 'Lo ìsopọ̀ ẹ̀rọ tó ní àbò',
 'securelogin-stick-https' => 'Ìwàní sísopọ̀ mọ́ HTTPS lẹ́yín ìwọlé',
 'yourdomainname' => 'Domain yín:',
 'password-change-forbidden' => 'Ẹ kò le ṣe ìyípadà ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
@@ -499,6 +513,7 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'gotaccount' => "Ṣé ẹ ti ní àpamọ́ tẹ́lẹ̀? '''$1'''.",
 'gotaccountlink' => "Ẹ w'ọlé",
 'userlogin-resetlink' => 'À bí ẹ gbàgbé ìwọlé yín?',
+'userlogin-resetpassword-link' => 'Ìtúntò ọ̀rọ̀ìpamọ́ yín',
 'helplogin-url' => 'Help:Ìwolé',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ìrànlọ́wọ́ láti ìwọlé]]',
 'createacct-join' => 'Ẹ kọ ìsọ̀rọ̀nípa yín sísàlẹ̀',
@@ -509,11 +524,14 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'createacct-realname' => 'Orúkọ yín gangan (kò pọndandan)',
 'createaccountreason' => 'Ìdíẹ̀:',
 'createacct-reason' => 'Ìdí',
+'createacct-reason-ph' => 'Ìdí tí ẹ ṣe fẹ́ dá àkópamọ́ míràn',
+'createacct-captcha' => 'Àyẹ̀wò àbò',
 'createacct-imgcaptcha-ph' => 'Ẹ kọ ìkọ̀rọ̀ tí ẹ rí lókè',
+'createacct-submit' => 'Ìdá àkópamọ́ yín',
 'createacct-benefit-heading' => 'Àwọn ènìyàn bíi yín ni wọ́n dá {{SITENAME}}.',
-'createacct-benefit-body1' => 'àtúnṣe',
-'createacct-benefit-body2' => 'ojúewé',
-'createacct-benefit-body3' => 'olùkópa ní oṣù yìí',
+'createacct-benefit-body1' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|ojúewé|àwọn ojúewé}}',
+'createacct-benefit-body3' => ' {{PLURAL:$1|olùkópa|Àwọn olùkópa}} aṣẹ̀ṣẹ̀ṣe',
 'badretype' => 'Àwọn ọ̀rọ̀ìpamọ́ tí ẹ kọ kò jọ ra wọn.',
 'userexists' => 'Orúkọ oníṣe tí ẹ mú wà lọ́wọ́ ẹlòmíràn.
 Ẹjọ̀wọ́ ẹ yan orúkọ mìíràn tó yàtọ̀.',
@@ -577,7 +595,7 @@ E-mail kankan kò ní jẹ́ fífiránṣẹ́ fún ìkankan nínú àwọn ìn
 'cannotchangeemail' => 'Àwọn àdírẹ́sì e-mail àpamọ́ kò ṣe é yípadà lórí wiki yìí.',
 'emaildisabled' => 'Ibiìtàkùn yìí kò le fi e-mail ránṣẹ́.',
 'accountcreated' => 'Ẹ ti fi orúkọ sílẹ̀',
-'accountcreatedtext' => "A ti ṣ'èdá àkópamọ́ oniṣe fún $1.",
+'accountcreatedtext' => 'Àkópamọ́ oniṣe fún [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|ọ̀rọ̀]]) ti jẹ́ dídá.',
 'createaccount-title' => 'Ìforúkọ sílẹ̀ fún {{SITENAME}}',
 'createaccount-text' => 'Ẹnìkan dá àpamọ́ kan fún àdírẹ́sì e-mail yín sórí {{SITENAME}} ($4) tóún jẹ́ "$2", pẹ̀kú ọ̀rọ̀ìpamọ́ \'\'$3\'\'.
 Ẹ gbọ́dọ̀ wọlé kí ẹ sì ṣàyípadà ọ́rọ́ìpamọ́ yín nísinsìyí.
@@ -615,11 +633,9 @@ Láti parí ìmúwọlẹ́, ẹ gbọ́dọ̀ ṣètò ọ̀rọ̀ìpamọ́ tu
 
 # Special:PasswordReset
 'passwordreset' => 'Ìtúntò ọ̀rọ̀ìpamọ́',
-'passwordreset-text' => 'Ẹ parí fọ́ọ̀mù yìí láti ṣe ìtúntò ọ̀rọ̀ìpamọ́ yín.',
 'passwordreset-legend' => 'Ìtúntò ọ̀rọ̀ìpamọ́',
 'passwordreset-disabled' => 'Ìdálẹ́kun ìtúntò ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
 'passwordreset-emaildisabled' => 'Ìdálẹ́kun lílo email lórí wiki yìí.',
-'passwordreset-pretext' => '{{PLURAL:$1||Ẹ kọ ìkan nínú àwọn wẹ́wẹ́ dátà ìsàlẹ̀}}',
 'passwordreset-username' => 'Orúkọ oníṣe:',
 'passwordreset-domain' => 'Àbùgbé:',
 'passwordreset-capture' => 'Wo e-mail tí yíò jáde?',
@@ -863,6 +879,7 @@ Kò ṣe àlàyé kankan.',
 Ó dà bíi pé a ti paárẹ́.',
 'edit-conflict' => 'Ìtakora áwọn àtúnṣe',
 'edit-no-change' => 'A ṣe àìkàsí àtúnṣe yín, nítorípé ìkọ̀wé kò ní àtúnṣe kankan.',
+'postedit-confirmation' => 'Àtúnṣe yín ti jẹ́ gbígbépamọ́.',
 'edit-already-exists' => "A kò le è ṣè'dá ojúewé tuntun.
 Ó pilẹ̀ ti wà.",
 'defaultmessagetext' => 'Ìkọ ìránṣẹ́ àtìbẹ̀rẹ̀',
@@ -1114,7 +1131,6 @@ Kò ṣe é bòmọ́lẹ̀.',
 'searchmenu-legend' => 'Àwọn àṣàyàn àwáàrí',
 'searchmenu-exists' => "'''Ojúewé tó ún jẹ́ \"[[:\$1]]\" wà lórí wiki yìí'''",
 'searchmenu-new' => "'''Dá ojúewé \"[[:\$1]]\" sí orí wiki yìí!'''",
-'searchhelp-url' => 'Help:Àwon àkóónú',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ẹ lọ sí àwọn ojúewé tí wọ́n ní àsopọ̀ yìí]]',
 'searchprofile-articles' => 'Àwọn ojúewé Àkóónú',
 'searchprofile-project' => 'Àwọn ojúewé Ìrànwọ́ àti Iṣẹ́-ọwọ́',
@@ -2999,6 +3015,16 @@ Tí ẹ bá jẹ́ ó ṣiṣẹ́, ẹ̀rọ sístẹ́mù yín le kó sí ewu.
 'ago' => '$1 sẹ́yìn',
 'just-now' => 'nísinsìnyí',
 
+# Human-readable timestamps
+'monday-at' => 'Ọjọ́ajé ní ago $1',
+'tuesday-at' => 'Ọjọ́ìṣẹ́gun ní ago $1',
+'wednesday-at' => 'Ọjọ́rú ní ago $1',
+'thursday-at' => 'Ọjọ́bọ̀ ní ago $1',
+'friday-at' => 'Ọjọ́ẹtì ní ago $1',
+'saturday-at' => 'Ọjọ́àbámẹ́ta ní ago $1',
+'sunday-at' => 'Ọjọ́àìkú ní ago $1',
+'yesterday-at' => 'Àná ní ago $1',
+
 # Bad image list
 'bad_image_list' => 'Onírú jẹ́ gẹ́gẹ́ bíi àtèlé yìí:
 Àwọn ohun àkójọ nìkan (àwọn ìlà tí wọ́n bẹ̀rẹ̀ pẹ̀lú *) ni wọ́n jẹ́ gbígbérò.
index 3c4fec0..e79fbf2 100644 (file)
@@ -473,7 +473,6 @@ $1',
 'disclaimers' => '免責聲明',
 'disclaimerpage' => 'Project:一般免責聲明',
 'edithelp' => '編輯協助',
-'edithelppage' => 'Help:編輯',
 'helppage' => 'Help:目錄',
 'mainpage' => '頭版',
 'mainpage-description' => '頭版',
@@ -1124,7 +1123,6 @@ $1",
 'searchmenu-legend' => '搵嘢選項',
 'searchmenu-exists' => "'''響呢個wiki度有一版叫做\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''響呢個wiki度開呢版\"[[:\$1]]\"!'''",
-'searchhelp-url' => 'Help:目錄',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去睇以呢個做開頭嘅版]]',
 'searchprofile-articles' => '內容頁',
 'searchprofile-project' => '幫手同計劃頁',
index 5bb99cd..6bad14b 100644 (file)
@@ -281,7 +281,6 @@ $1",
 'disclaimers' => 'Voebehoud',
 'disclaimerpage' => 'Project:Alhemeên voebehoud',
 'edithelp' => "Ulpe bie't bewerken",
-'edithelppage' => 'Help:Bewerken',
 'helppage' => 'Help:Inoud',
 'mainpage' => 'Vòblad',
 'mainpage-description' => 'Vòblad',
@@ -809,7 +808,6 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
 'viewprevnext' => 'Bekiek ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => "'''Er is 'n pagina genaemd \"[[:\$1]]\" op deêze wiki.'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" anmaek'n op deêze wiki.'''",
-'searchhelp-url' => 'Help:Inoud',
 'searchprofile-articles' => "Inhoudelike pagina's",
 'searchprofile-project' => "Hilp- en projectpagina's",
 'searchprofile-images' => 'Multimedia',
index b63cb57..714b466 100644 (file)
@@ -41,6 +41,7 @@
  * @author Li3939108
  * @author Liangent
  * @author Linforest
+ * @author M13253
  * @author Makecat
  * @author Mark85296341
  * @author MarkAHershberger
@@ -49,6 +50,7 @@
  * @author O
  * @author Onecountry
  * @author PhiLiP
+ * @author Qiyue2001
  * @author Shinjiman
  * @author Shirayuki
  * @author Shizhao
@@ -383,7 +385,7 @@ $messages = array(
 'tog-enotifrevealaddr' => '在通知电子邮件中显示我的电子邮件地址',
 'tog-shownumberswatching' => '显示监视用户数',
 'tog-oldsig' => '当前签名:',
-'tog-fancysig' => '将签名视为wiki代码(不自动生成链接)',
+'tog-fancysig' => '将签名视为维基代码(不自动生成链接)',
 'tog-showjumplinks' => '启用“跳转到”访问链接',
 'tog-uselivepreview' => '使用实时预览(需要JavaScript)(实验功能)',
 'tog-forceeditsummary' => '未输入编辑摘要时提醒我',
@@ -405,7 +407,7 @@ $messages = array(
 'underline-default' => '皮肤或浏览器默认设置',
 
 # Font style option in Special:Preferences
-'editfont-style' => '编辑区字体样式:',
+'editfont-style' => '编辑区中的字体样式:',
 'editfont-default' => '浏览器默认',
 'editfont-monospace' => '等宽字体',
 'editfont-sansserif' => '无衬线字体',
@@ -484,10 +486,10 @@ $messages = array(
 'hidden-categories' => '$1个隐藏分类',
 'hidden-category-category' => '隐藏分类',
 'category-subcat-count' => '{{PLURAL:$2|本分类只有下列一个子分类。|本分类包含下列$1个子分类,共$2个子分类。}}',
-'category-subcat-count-limited' => '本分类包含下列$1个子分类。',
+'category-subcat-count-limited' => '本分类包含下列{{PLURAL:$1|subcategory|$1个子分类}}。',
 'category-article-count' => '{{PLURAL:$2|本分类只有下列一个页面。|本分类包含下列$1个页面,共有$2个页面。}}',
 'category-article-count-limited' => '本分类包含下列$1个页面。',
-'category-file-count' => '{{PLURAL:$2|本分类只有下列文件。|本分类包含下列$1个文件,共$2个文件。}}',
+'category-file-count' => '{{PLURAL:$2|本分类只包含以下文件。|以下{{PLURAL:$1|文件|$1个文件}}在本分类中,共$2个文件。}}',
 'category-file-count-limited' => '本分类包含下列$1个文件。',
 'listingcontinuesabbrev' => '续',
 'index-category' => '允许索引的页面',
@@ -496,7 +498,7 @@ $messages = array(
 
 'about' => '关于',
 'article' => '内容页面',
-'newwindow' => 'ï¼\88å°\86äº\8e新窗口中打开)',
+'newwindow' => 'ï¼\88å\9c¨新窗口中打开)',
 'cancel' => '取消',
 'moredotdotdot' => '更多',
 'morenotlisted' => '更多模板未列出...',
@@ -510,7 +512,7 @@ $messages = array(
 'qbfind' => '查找',
 'qbbrowse' => '浏览',
 'qbedit' => '编辑',
-'qbpageoptions' => '页面选项',
+'qbpageoptions' => '此页',
 'qbmyoptions' => '我的页面',
 'qbspecialpages' => '特殊页面',
 'faq' => '常见问题',
@@ -534,8 +536,8 @@ $messages = array(
 'variants' => '变换',
 
 'navigation-heading' => '导航菜单',
-'errorpagetitle' => '错误',
-'returnto' => '返回$1。',
+'errorpagetitle' => '出错',
+'returnto' => '返回$1。',
 'tagline' => '来自{{SITENAME}}',
 'help' => '帮助',
 'search' => '搜索',
@@ -555,6 +557,7 @@ $messages = array(
 'create-this-page' => '创建本页',
 'delete' => '删除',
 'deletethispage' => '删除本页',
+'undeletethispage' => '撤消删除此页',
 'undelete_short' => '恢复$1个被删除的编辑',
 'viewdeleted_short' => '查看$1个被删除的编辑',
 'protect' => '保护',
@@ -582,7 +585,7 @@ $messages = array(
 'viewtalkpage' => '查看讨论',
 'otherlanguages' => '其他语言',
 'redirectedfrom' => '(重定向自$1)',
-'redirectpagesub' => '重定向页',
+'redirectpagesub' => '重定向页',
 'lastmodifiedat' => '本页面最后修改于$1 $2。',
 'viewcount' => '此页面已被浏览过$1次。',
 'protectedpage' => '受保护页面',
@@ -594,7 +597,7 @@ $messages = array(
 请稍等片刻后再次尝试访问本页面。
 
 $1',
-'pool-timeout' => '等待锁超时',
+'pool-timeout' => '等待锁超时',
 'pool-queuefull' => '请求队列已满',
 'pool-errorunknown' => '未知错误',
 
@@ -608,18 +611,17 @@ $1',
 'disclaimers' => '免责声明',
 'disclaimerpage' => 'Project:免责声明',
 'edithelp' => '编辑帮助',
-'edithelppage' => 'Help:编辑',
 'helppage' => 'Help:目录',
 'mainpage' => '首页',
 'mainpage-description' => '首页',
-'policy-url' => 'Project:æ\94¿ç­\96',
+'policy-url' => 'Project:æ\96¹é\92\88ä¸\8eæ\8c\87å¼\95',
 'portal' => '社区专页',
 'portal-url' => 'Project:社区专页',
 'privacy' => '隐私权政策',
 'privacypage' => 'Project:隐私权政策',
 
 'badaccess' => '权限错误',
-'badaccess-group0' => '你被禁止执行你刚才请求的操作。',
+'badaccess-group0' => '系统不允许您执行刚才请求的操作。',
 'badaccess-groups' => '您刚才请求的操作只有{{PLURAL:$2|这个用户组|以下用户组}}中的用户才能使用: $1',
 
 'versionrequired' => '需要版本为$1的MediaWiki',
@@ -641,7 +643,7 @@ $1',
 'viewsourceold' => '查看源代码',
 'editlink' => '编辑',
 'viewsourcelink' => '查看源代码',
-'editsectionhint' => '编辑章节:$1',
+'editsectionhint' => '编辑段落:$1',
 'toc' => '目录',
 'showtoc' => '显示',
 'hidetoc' => '隐藏',
@@ -653,8 +655,8 @@ $1',
 'feedlinks' => '订阅:',
 'feed-invalid' => '无效的订阅类型。',
 'feed-unavailable' => '不提供联合订阅源',
-'site-rss-feed' => '$1的RSS订阅',
-'site-atom-feed' => '$1的Atom',
+'site-rss-feed' => '$1的RSS供稿',
+'site-atom-feed' => '$1的Atom供稿',
 'page-rss-feed' => '“$1”的RSS订阅',
 'page-atom-feed' => '“$1”的Atom订阅',
 'red-link-title' => '$1(页面不存在)',
@@ -663,7 +665,7 @@ $1',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => '页面',
-'nstab-user' => '用户页',
+'nstab-user' => '用户页',
 'nstab-media' => '媒体页面',
 'nstab-special' => '特殊页面',
 'nstab-project' => '项目页面',
@@ -705,7 +707,7 @@ $1',
 这通常是由于点击了链向旧有差异或历史的链接,而原有修订已被删除导致的。
 
 如果情况不是这样,您可能找到了软件的一个内部错误。请记录下URL地址,并向[[Special:ListUsers/sysop|管理员]]报告。',
-'missingarticle-rev' => '(修订版本编号:$1)',
+'missingarticle-rev' => '(版本#:$1)',
 'missingarticle-diff' => '(差异:$1,$2)',
 'readonly_lag' => '从数据库服务器正在从主服务器上更新,数据库已被自动锁定',
 'internalerror' => '内部错误',
@@ -725,7 +727,7 @@ $1',
 它可能已被其他人删除了。',
 'cannotdelete-title' => '无法删除“$1”',
 'delete-hook-aborted' => '删除被扩展钩子取消。钩子并没有给出解释。',
-'badtitle' => '错误标题',
+'badtitle' => '错误标题',
 'badtitletext' => '所请求页面的标题是无效的、不存在,跨语言或跨wiki链接的标题错误。它可能包含一个或更多的不能用于标题的字符。',
 'perfcached' => '下列数据已缓存,但可能已过时。最高{{PLURAL:$1|一个结果|$1个结果}}在缓存中可用。',
 'perfcachedts' => '下列数据已缓存,最后更新于$1。缓存中最多可有{{PLURAL:$4|1个结果|$4个结果}}。',
@@ -752,7 +754,9 @@ $2',
 'namespaceprotected' => "您没有权限编辑'''$1'''名字空间内的页面。",
 'customcssprotected' => '您没有权限编辑此CSS页面,因为它包含另一位用户的个人设置。',
 'customjsprotected' => '您没有权限编辑此JavaScript页面,因为它包含另一位用户的个人设置。',
-'ns-specialprotected' => '您不能编辑特殊页面。',
+'mycustomcssprotected' => '您没有权限编辑这个 CSS 页面。',
+'mycustomjsprotected' => '您没有权限编辑这个 JavaScript 页面。',
+'ns-specialprotected' => '特殊页面不可编辑。',
 'titleprotected' => '此标题已被[[User:$1|$1]]保护以防止创建。理由是“$2”。',
 'filereadonlyerror' => '因为媒体库$2处于只读模式而无法修改文件$1。
 
@@ -772,7 +776,7 @@ $2',
 
 您可以继续以匿名方式使用{{SITENAME}},或再次以相同或不同用户身份<span class='plainlinks'>[$1 登录]</span>。请注意一些页面可能仍然显示您为登录状态,直到您清空您的浏览器缓存为止。",
 'welcomeuser' => '欢迎,$1!',
-'welcomecreation-msg' => '你的账户已创建。请不要忘记更改你的[[Special:Preferences|{{SITENAME}}系统设置]]。',
+'welcomecreation-msg' => '你的账户已创建。请不要忘记更改你的[[Special:Preferences|{{SITENAME}}设置]]。',
 'yourname' => '用户名:',
 'userlogin-yourname' => '用户名',
 'userlogin-yourname-ph' => '请输入你的用户名',
@@ -792,7 +796,7 @@ $2',
 'externaldberror' => '验证数据库出错或您被禁止更新您的外部账号。',
 'login' => '登录',
 'nav-login-createaccount' => '登录/创建账户',
-'loginprompt' => '你必须启用Cookies才能登录{{SITENAME}}。',
+'loginprompt' => '你必须启用Cookie才能登录{{SITENAME}}。',
 'userlogin' => '登录/创建账户',
 'userloginnocreate' => '登录',
 'logout' => '退出',
@@ -805,8 +809,8 @@ $2',
 'createaccount' => '创建账户',
 'gotaccount' => '已经拥有账户?请$1。',
 'gotaccountlink' => '登录',
-'userlogin-resetlink' => 'å¿\98è®°äº\86ä½ ç\9a\84ç\99»å½\95ä¿¡æ\81¯ï¼\9f',
-'userlogin-resetpassword-link' => '重置的密码',
+'userlogin-resetlink' => '忘记你的登录信息?',
+'userlogin-resetpassword-link' => '重置的密码',
 'helplogin-url' => 'Help:登录',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登录帮助]]',
 'createacct-join' => '请在下面输入你的信息。',
@@ -871,7 +875,7 @@ $2',
 'cannotchangeemail' => '本wiki不允许对账户的电子邮件地址进行更改。',
 'emaildisabled' => '此站点不能发送电子邮件。',
 'accountcreated' => '已建立账户',
-'accountcreatedtext' => '$1的账户已经被创建。',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]])的账户已创建。',
 'createaccount-title' => '在{{SITENAME}}中创建新账户',
 'createaccount-text' => '有人在{{SITENAME}}中利用您的邮箱创建了一个名为 "$2" 的新帐户($4),密码是 "$3" 。您应该立即登录并更改密码。
 
@@ -907,8 +911,10 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => '重置密码',
+'passwordreset-text-one' => '请输入你要重置的用户名。',
+'passwordreset-text-many' => '{{PLURAL:$1|输入部分数据以重置您的密码。}}',
 'passwordreset-legend' => '重置密码',
-'passwordreset-disabled' => '此wiki已经禁用密码重置。',
+'passwordreset-disabled' => '此Wiki已经禁用密码重置。',
 'passwordreset-emaildisabled' => '此Wiki上无法使用邮件功能。',
 'passwordreset-username' => '用户名:',
 'passwordreset-domain' => '域:',
@@ -1046,7 +1052,7 @@ $2
 'userinvalidcssjstitle' => "'''警告:''' 不存在皮肤\"\$1\"。注意自定义的 .css 和 .js 页要使用小写标题,例如,{{ns:user}}:Foo/vector.css 不同于 {{ns:user}}:Foo/Vector.css。",
 'updated' => '(已更新)',
 'note' => "'''注意:'''",
-'previewnote' => "'''请记住这仅为预览。'''您的更改还未保存!",
+'previewnote' => "'''请记住这只是预览。'''你的更改还没有保存!",
 'continue-editing' => '往编辑框',
 'previewconflict' => '该预览反映了上面文字编辑区中的文字在你保存后的显示状况。',
 'session_fail_preview' => "'''对不起!由于会话数据丢失,我们无法处理你的编辑。'''请重试。如果仍然失败,请尝试[[Special:UserLogout|退出登录]]后重新登录。",
@@ -1061,7 +1067,7 @@ $2
 'edit_form_incomplete' => "'''编辑表格的某些部分没有到达服务器,请检查你的编辑是否完整并重试。'''",
 'editing' => '编辑“$1”',
 'creating' => '创建 $1',
-'editingsection' => '编辑“$1”(段落)',
+'editingsection' => '编辑“$1(段落)”',
 'editingcomment' => '编辑“$1”(新段落)',
 'editconflict' => '编辑冲突:$1',
 'explainconflict' => "其他用户在你开始编辑后更改了该页面。上面的文字区含有该页面当前的文字。下面的文字区显示你的更改。你必须把你的更改合并至现有文字。'''只有'''当你单击“{{int:savearticle}}”后,上面的文字区中的文字才会被保存。",
@@ -1104,7 +1110,7 @@ $2
 'permissionserrorstext-withaction' => '因为以下{{PLURAL:$1|原因}},你没有权限$2:',
 'recreate-moveddeleted-warn' => "'''警告:你正在重新创建曾经被删除的页面。'''
 
-你应该考虑继续编辑本页是否合适。这里提供本页的删除和移动记录以供参考:",
+你应该考虑继续编辑本页是否合适。这里提供本页的删除和移动日志以供参考:",
 'moveddeleted-notice' => '本页面已被删除。下面提供本页的删除和移动日志以供参考。',
 'log-fulllog' => '查看完整日志',
 'edit-hook-aborted' => '编辑被hook指令取消。
@@ -1120,7 +1126,7 @@ $2
 'content-failed-to-parse' => '未能将 $2 内容转换为 $1:$3',
 'invalid-content-data' => '无效的内容数据',
 'content-not-allowed-here' => '[[$2]]页面上不允许“$1”内容',
-'editwarning-warning' => '离开这个页面会令您遗失之前的所有更改。若您已经登入,您可在您参数设置的“{{int:prefs-editing}}”节中关闭此警告。',
+'editwarning-warning' => '离开这个页面会令您遗失之前的所有更改。若您已经登入,您可在您参数设置的“编辑”节中关闭此警告。',
 
 # Content models
 'content-model-wikitext' => 'wiki语法',
@@ -1136,8 +1142,7 @@ $2
 'post-expand-template-inclusion-warning' => '警告:包含模板大小过大。
 一些模板将不会包含。',
 'post-expand-template-inclusion-category' => '模板包含上限已经超过的页面',
-'post-expand-template-argument-warning' => '警告:这个页面有最少一个模参数有过大扩展大小。
-这些参数会被略过。',
+'post-expand-template-argument-warning' => "'''警告:'''本页面包含至少一个模板参数有过大扩展大小。这些参数会被略过。",
 'post-expand-template-argument-category' => '包含着略过模板参数的页面',
 'parser-template-loop-warning' => '检查到模板循环:[[$1]]',
 'parser-template-recursion-depth-warning' => '模板递归深度越限($1)',
@@ -1182,7 +1187,7 @@ $3的理由是''$2''",
 'history-fieldset-title' => '浏览历史',
 'history-show-deleted' => '仅被删除的',
 'histfirst' => '最早',
-'histlast' => '最',
+'histlast' => '最',
 'historysize' => '($1字节)',
 'historyempty' => '(空)',
 
@@ -1198,7 +1203,7 @@ $3的理由是''$2''",
 'rev-deleted-user' => '(用户名被删除)',
 'rev-deleted-event' => '(日志条目被删除)',
 'rev-deleted-user-contribs' => '[用户名或IP地址被删除 - 编辑在贡献中隐藏]',
-'rev-deleted-text-permission' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]。",
+'rev-deleted-text-permission' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
 'rev-deleted-text-unhide' => "本页面版本已被'''删除'''。详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。如果你想继续操作,你仍然可以[$1 查看本版本]。",
 'rev-suppressed-text-unhide' => "该页面修订已经被'''监督隐藏'''。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监督日志]中可以找到详细的信息。如果您想继续的话,您可以仍然[$1 去查看这次修订]。",
 'rev-deleted-text-view' => "本页面版本已被'''删除'''。你可以查看它,详情请见[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]。",
@@ -1225,9 +1230,9 @@ $3的理由是''$2''",
 'revdelete-show-file-submit' => '是',
 'revdelete-selected' => "'''选取'''[[:$1]]'''的$2次修订:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|选取的日志项目}}:'''",
-'revdelete-text' => "'''删除的修订仍将显示在页面历史中, 但它们的文本内容已不能被公众访问。'''
-在{{SITENAME}}的其他管理员将仍能访问隐藏的内容并通过与此相同的界面恢复删除,除非站点工作者进行了一些附加的限制。",
-'revdelete-confirm' => '请确认您肯定去做的话,您就要明白到后果,以及这个程序符合[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-text' => "'''删除的版本仍将显示在页面历史及日志中,但公众已不能访问其文本内容。'''
+在{{SITENAME}}的其他管理员将仍能访问隐藏的内容并通过该界面恢复删除的版本,除非进行了额外限制。",
+'revdelete-confirm' => '请确认该操作,明白其后果,并确保该操作符合[[{{MediaWiki:Policy-url}}|方针]]。',
 'revdelete-suppress-text' => "阻止应该'''只'''在以下情形使用:
 *潜在的诽谤信息
 *不合适的个人信息
@@ -1245,7 +1250,7 @@ $3的理由是''$2''",
 'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
 'revdelete-unsuppress' => '在已恢复的修订中移除限制',
 'revdelete-log' => '原因:',
-'revdelete-submit' => '应用于选中的{{PLURAL:$1|修订}}',
+'revdelete-submit' => '应用于选中的{{PLURAL:$1|版本}}',
 'revdelete-success' => "'''修订的可见性已经成功更新。'''",
 'revdelete-failure' => "'''修订的可见性无法更新:'''
 $1",
@@ -1342,7 +1347,6 @@ $1",
 'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''本wiki上有名为“[[:$1]]”的页面。'''",
 'searchmenu-new' => "'''在本wiki上新建名为“[[:$1]]”的页面!'''",
-'searchhelp-url' => 'Help:目录',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去浏览以此为首的页面]]',
 'searchprofile-articles' => '内容页面',
 'searchprofile-project' => '帮助和项目页面',
@@ -1366,7 +1370,7 @@ $1",
 'search-relatedarticle' => '相关',
 'mwsuggest-disable' => '禁用AJAX建议',
 'searcheverything-enable' => '在所有名字空间中搜索',
-'searchrelated' => '相关页面',
+'searchrelated' => '相关',
 'searchall' => '所有',
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
@@ -1387,7 +1391,7 @@ $1",
 
 # Preferences page
 'preferences' => '设置',
-'mypreferences' => '系统设置',
+'mypreferences' => '设置',
 'prefs-edits' => '编辑数:',
 'prefsnologin' => '未登录',
 'prefsnologintext' => '您必须先<span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} 登录]</span>才能设置个人参数。',
@@ -1479,8 +1483,8 @@ $1",
 'prefs-help-gender' => '选填项目。使软件使用正确的性别称呼。该信息将会公开。',
 'email' => '电子邮件',
 'prefs-help-realname' => '真实姓名是选填项目。如果你选择提供它,它将会用于贡献署名。',
-'prefs-help-email' => '电子邮件地址是选填项目。但是在你忘记密码需要重置密码时需要电子邮件地址。',
-'prefs-help-email-others' => '你亦å\8f¯ä»¥é\80\89æ\8b©è®©å\85¶ä»\96ç\94¨æ\88·é\80\9aè¿\87ä½ ç\9a\84ç\94¨æ\88·é¡µæ\88\96讨论页上的链接用电子邮件联系你。其他用户联系你时你的电子邮件地址不会显示。',
+'prefs-help-email' => '电子邮件地址是选填项目,但是当你忘记密码需要重置密码时需要该项信息。',
+'prefs-help-email-others' => 'ä½ ä¹\9få\8f¯ä»¥é\80\89æ\8b©è®©å\85¶ä»\96ç\94¨æ\88·é\80\9aè¿\87ä½ ç\9a\84ç\94¨æ\88·æ\88\96讨论页é\9d¢上的链接用电子邮件联系你。其他用户联系你时你的电子邮件地址不会显示。',
 'prefs-help-email-required' => '电子邮件地址是必填项目。',
 'prefs-info' => '基本信息',
 'prefs-i18n' => '界面语言',
@@ -1523,6 +1527,7 @@ $1",
 'userrights-changeable-col' => '你可以更改的用户组',
 'userrights-unchangeable-col' => '你不能更改的用户组',
 'userrights-conflict' => '用户权限冲突 !请重新应用您的更改。',
+'userrights-removed-self' => '您已成功删除您自己的权利。因此,您不再能够访问此页。',
 
 # Groups
 'group' => '用户组:',
@@ -1593,6 +1598,8 @@ $1",
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
+'right-editmyusercss' => '编辑您自己的用户 CSS 文件',
+'right-editmyuserjs' => '编辑您自己的用户 JavaScript 文件',
 'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
 'right-markbotedits' => '标记回退编辑为机器人编辑',
 'right-noratelimit' => '不受速率限制影响',
@@ -1656,23 +1663,23 @@ $1",
 'action-sendemail' => '电邮联系其他用户',
 
 # Recent changes
-'nchanges' => '$1更改',
+'nchanges' => '$1更改',
 'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改选项',
 'recentchanges-summary' => '在此页面上跟踪维基的更改。',
-'recentchanges-feed-description' => '跟踪订阅本wiki的最近更改。',
+'recentchanges-feed-description' => '用这个源跟踪本wiki的最近更改。',
 'recentchanges-label-newpage' => '这次编辑建立了一个新页面',
 'recentchanges-label-minor' => '这是一个小编辑',
 'recentchanges-label-bot' => '这次编辑是由机器人进行',
 'recentchanges-label-unpatrolled' => '该编辑尚未巡查',
-'rcnote' => "下面是最后'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
+'rcnote' => "下面是过去'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
 'rcnotefrom' => "下面是自'''$2'''起的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示自$1起的新更改',
 'rcshowhideminor' => '$1小编辑',
 'rcshowhidebots' => '$1机器人的编辑',
 'rcshowhideliu' => '$1登录用户的编辑',
 'rcshowhideanons' => '$1匿名用户的编辑',
-'rcshowhidepatr' => '$1å·¡æ\9f¥è¿\87的编辑',
+'rcshowhidepatr' => '$1已巡æ\9f¥的编辑',
 'rcshowhidemine' => '$1我的编辑',
 'rclinks' => '显示最后$2天的最后$1个更改<br />$3',
 'diff' => '差异',
@@ -2123,7 +2130,7 @@ $1',
 'prefixindex-namespace' => '所有有前缀的页面($1名字空间)',
 'shortpages' => '短页面',
 'longpages' => '长页面',
-'deadendpages' => 'æ\97 链页面',
+'deadendpages' => 'æ\96­链页面',
 'deadendpagestext' => '以下页面没有链接到{{SITENAME}}中的其它页面。',
 'protectedpages' => '受保护页面',
 'protectedpages-indef' => '仅无限期保护',
@@ -2137,7 +2144,7 @@ $1',
 'listusers-editsonly' => '只显示有编辑的用户',
 'listusers-creationsort' => '按建立日期排序',
 'usereditcount' => '$1次编辑',
-'usercreated' => '$1 $2{{GENDER:$3|创建}}',
+'usercreated' => '{{GENDER:$3|创建}}于$1 $2',
 'newpages' => '新页面',
 'newpages-username' => '用户名:',
 'ancientpages' => '最老页面',
@@ -2157,7 +2164,7 @@ $1',
 
 # Book sources
 'booksources' => '网络书源',
-'booksources-search-legend' => '搜索网络书源',
+'booksources-search-legend' => '搜索图书来源',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => '提交',
 'booksources-text' => '以下是一些网络书店的链接列表,其中可能有您要找的书籍的更多信息:',
@@ -2317,7 +2324,7 @@ $1',
 'watchlistcontains' => '您的监视列表包含$1个页面。',
 'iteminvalidname' => "页面'$1'错误,无效命名...",
 'wlnote' => "下面是最后'''$2'''小时的最后'''$1'''个更改,截至$3 $4。",
-'wlshowlast' => '显示最近$1小时、$2天或$3的更改',
+'wlshowlast' => '显示过去$1小时 $2天 $3',
 'watchlist-options' => '监视列表选项',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -2339,7 +2346,7 @@ $1',
 'enotif_body_intro_restored' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|恢复}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_changed' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|更改}},请浏览 $3 查看当前版本。',
 'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
-'enotif_lastdiff' => '请浏览$1查看该更改。',
+'enotif_lastdiff' => '请浏览 $1 查看该更改。',
 'enotif_anon_editor' => '匿名用户$1',
 'enotif_body' => '亲爱的$WATCHINGUSERNAME:
 
@@ -2547,7 +2554,7 @@ $1',
 'mycontris' => '贡献',
 'contribsub2' => '$1的贡献($2)',
 'nocontribs' => '没有找到符合特征的更改。',
-'uctop' => '(最后更改)',
+'uctop' => '(当前)',
 'month' => '截止月份:',
 'year' => '截止年份:',
 
@@ -2566,7 +2573,7 @@ $1',
 最近的封锁日志项目在下面提供以便参考:',
 'sp-contributions-search' => '搜索贡献',
 'sp-contributions-username' => 'IP地址或用户名:',
-'sp-contributions-toponly' => '仅显示最后版本编辑',
+'sp-contributions-toponly' => 'ä»\85æ\98¾ç¤ºæ\9c\80å\90\8eç\89\88æ\9c¬ç\9a\84ç¼\96è¾\91',
 'sp-contributions-submit' => '搜索',
 
 # What links here
@@ -2865,7 +2872,7 @@ $1被封禁的理由是:“$2”',
 # Thumbnails
 'thumbnail-more' => '放大',
 'filemissing' => '无法找到文件',
-'thumbnail_error' => '生成缩略图错误:$1',
+'thumbnail_error' => '生成缩略图出错:$1',
 'thumbnail_error_remote' => '来自$1的错误消息从:
 $2',
 'djvu_page_error' => 'DjVu页面超出范围',
@@ -2990,7 +2997,7 @@ $2',
 'tooltip-ca-nstab-main' => '查看内容页面',
 'tooltip-ca-nstab-user' => '查看用户页面',
 'tooltip-ca-nstab-media' => '查看媒体文件页面',
-'tooltip-ca-nstab-special' => '本页为特殊页面,你不能编辑本页',
+'tooltip-ca-nstab-special' => '这是特殊页面,你无法编辑该页',
 'tooltip-ca-nstab-project' => '查看项目页面',
 'tooltip-ca-nstab-image' => '查看文件页面',
 'tooltip-ca-nstab-mediawiki' => '查看系统信息',
@@ -3443,7 +3450,7 @@ Variants for Chinese language
 'exif-compression-4' => 'CCITT第4组传真编码',
 'exif-compression-6' => 'JPEG(旧)',
 
-'exif-copyrighted-true' => '版权',
+'exif-copyrighted-true' => '受版权保护',
 'exif-copyrighted-false' => '公共领域',
 
 'exif-unknowndate' => '未知日期',
@@ -3653,7 +3660,7 @@ Variants for Chinese language
 'edit-externally-help' => '(更多信息请见[//www.mediawiki.org/wiki/Manual:External_editors 安装说明])',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => '全部',
+'watchlistall2' => '所有',
 'namespacesall' => '全部',
 'monthsall' => '全部',
 'limitall' => '全部',
@@ -3806,8 +3813,8 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b\91è§\86ç\9a\84更改',
-'watchlisttools-edit' => 'æ\9f¥ç\9c\8bå\92\8c编辑监视列表',
+'watchlisttools-view' => 'æ\9f¥ç\9c\8bç\9b¸å\85³更改',
+'watchlisttools-edit' => 'æ\9f¥ç\9c\8b并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
 # Signatures
@@ -3815,7 +3822,7 @@ $5
 
 # Core parser functions
 'unknown_extension_tag' => '不明的扩展标签“$1”',
-'duplicate-defaultsort' => "'''警告:'''默认排序关键字“$2”覆盖了之前的默认排序关键字“$1”。",
+'duplicate-defaultsort' => "'''警告:'''默认排序关键词“$2”覆盖了之前的默认排序关键词“$1”。",
 
 # Special:Version
 'version' => '版本',
@@ -3899,13 +3906,13 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 
 # External image whitelist
 'external_image_whitelist' => ' #请原样保留本行文字<pre>
-#在下方书写正则表达式片段(//中间的部份)
-#这些规则将与外部(盗链)图像的URL匹配
-#匹配的URL将被显示为图像,否则只会显示链向图像的链接
-#以#开头的行视为评论
+#请在下面输入正则表达式片段(//之间的部份)
+#这些项目将会匹配外部图像的URL
+#匹配的项目将显示为图像,否则只会显示图像的链接
+#以#å¼\80头ç\9a\84è¡\8c被è§\86为è¯\84论
 #不区分大小写
 
-#在本行上面输入所有正则表达式。请原样保留本行文字</pre>',
+#请在本行上面输入所有正则表达式片段。请原样保留本行文字</pre>',
 
 # Special:Tags
 'tags' => '有效的更改标签',
index f69f53f..14a1e38 100644 (file)
@@ -36,6 +36,7 @@
  * @author Pbdragonwang
  * @author PhiLiP
  * @author Philip
+ * @author Radish10cm
  * @author Shinjiman
  * @author Shirayuki
  * @author Shizhao
@@ -409,7 +410,7 @@ $messages = array(
 'mytalk' => '討論',
 'anontalk' => '此IP的對話頁',
 'navigation' => '導覽',
-'and' => 'å\92\8c',
+'and' => 'å\8f\8a',
 
 # Cologne Blue skin
 'qbfind' => '尋找',
@@ -460,6 +461,7 @@ $messages = array(
 'create-this-page' => '建立本頁',
 'delete' => '刪除',
 'deletethispage' => '刪除本頁',
+'undeletethispage' => '取消刪除此頁',
 'undelete_short' => '反刪除$1項修訂',
 'viewdeleted_short' => '查看$1項已刪除的修訂',
 'protect' => '保護',
@@ -511,7 +513,6 @@ $1',
 'disclaimers' => '免責聲明',
 'disclaimerpage' => 'Project:一般免責聲明',
 'edithelp' => '編輯幫助',
-'edithelppage' => 'Help:如何編輯頁面',
 'helppage' => 'Help:目錄',
 'mainpage' => '首頁',
 'mainpage-description' => '首頁',
@@ -662,6 +663,8 @@ $2',
 'namespaceprotected' => "您並沒有權限編輯'''$1'''名字空間的頁面。",
 'customcssprotected' => '你並無權限編輯此CSS頁面,因為它包含了其他用戶的個人設置。',
 'customjsprotected' => '你並無權限去編輯此JavaScript頁面,因為他包含了另一位用戶的個人設定。',
+'mycustomcssprotected' => '你沒有編輯這CSS頁面的權限。',
+'mycustomjsprotected' => '你沒有編輯這JavaScript頁面的權限。',
 'ns-specialprotected' => '特殊頁面是不可以編輯的。',
 'titleprotected' => "這個標題已經被[[User:$1|$1]]保護以防止建立。理由是''$2''。",
 'filereadonlyerror' => '無法修改文件「$1」因為文件庫「$2」處於唯讀模式。 !
@@ -787,7 +790,7 @@ $2',
 'cannotchangeemail' => '本wiki不允許對賬戶的電郵地址進行更改。',
 'emaildisabled' => '此網站不能發送電子郵件。',
 'accountcreated' => '已建立賬戶',
-'accountcreatedtext' => '$1的賬戶已經被建立。',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]]([[{{ns:User talk}}:$1|討論]])的賬戶已經被建立。',
 'createaccount-title' => '在{{SITENAME}}中建立新賬戶',
 'createaccount-text' => '有人在{{SITENAME}}中利用您的電郵創建了一個名為 "$2" 的新賬戶($4),密碼是 "$3" 。您應該立即登入並更改密碼。
 
@@ -1127,7 +1130,7 @@ $2
 'histlegend' => "差異選擇:標記要比較修訂版本的單選按鈕並點擊底部的按鈕進行比較。<br />
 說明:'''({{int:cur}})''' 指與最新修訂版本比較,'''({{int:last}})''' 指與前一個修訂修訂版本比較,'''{{int:minoreditletter}}''' = 小修改。",
 'history-fieldset-title' => '瀏覽歷史',
-'history-show-deleted' => '僅已刪除的',
+'history-show-deleted' => '僅限已刪除',
 'histfirst' => '最早版本',
 'histlast' => '最新版本',
 'historysize' => '($1 位元組)',
@@ -1145,8 +1148,7 @@ $2
 'rev-deleted-user' => '(用戶名已移除)',
 'rev-deleted-event' => '(日誌已除)',
 'rev-deleted-user-contribs' => '[用戶名或IP地址已移除 - 從貢獻中隱藏編輯]',
-'rev-deleted-text-permission' => "該頁面修訂已被'''刪除'''。
-在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 刪除日誌]中可以找到詳細的訊息。",
+'rev-deleted-text-permission' => "該頁面修訂已被'''刪除'''。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可以找到詳細的訊息。",
 'rev-deleted-text-unhide' => "本頁面版本已被'''刪除'''。詳情請見[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]。如果你想繼續操作,你仍然可以[$1 查看本版本]。",
 'rev-suppressed-text-unhide' => "該頁面修訂已經被'''監督隱藏'''。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 監督日誌]中可以找到詳細的信息。如果您想繼續的話,您可以仍然[$1 去查看這次修訂]。",
 'rev-deleted-text-view' => "該頁面修訂已經被'''刪除'''。您可以查看它。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刪除日誌]中可以找到詳細的信息。",
@@ -1291,7 +1293,6 @@ $1",
 'searchmenu-legend' => '搜尋選項',
 'searchmenu-exists' => "'''在這個 wiki 上已有一頁面叫做「[[:$1]]」。'''",
 'searchmenu-new' => "'''在這個 wiki 上建立這個頁面「[[:$1]]」!'''",
-'searchhelp-url' => 'Help:目錄',
 'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去瀏覽以此為首的頁面]]',
 'searchprofile-articles' => '內容頁面',
 'searchprofile-project' => '幫助和計劃頁面',
@@ -1476,6 +1477,7 @@ $1",
 'userrights-changeable-col' => '您可以更改的群組',
 'userrights-unchangeable-col' => '您不可以更改的群組',
 'userrights-conflict' => '使用者權限衝突!請重新套用您的更改。',
+'userrights-removed-self' => '您已成功移除自己的權限,故此您沒法再次訪問此頁。',
 
 # Groups
 'group' => '群組:',
@@ -1546,6 +1548,8 @@ $1",
 'right-editusercssjs' => '編輯其他用戶的CSS和JavaScript檔案',
 'right-editusercss' => '編輯其他用戶的CSS檔案',
 'right-edituserjs' => '編輯其他用戶的JavaScript檔案',
+'right-editmyusercss' => '編輯你自己的用戶CSS檔',
+'right-editmyuserjs' => '編輯你自己的用戶JavaScript檔',
 'right-rollback' => '快速復原上位用戶對某一頁面之編輯',
 'right-markbotedits' => '標示復原編輯作機械人編輯',
 'right-noratelimit' => '沒有使用頻率限制',
@@ -1612,8 +1616,8 @@ $1",
 'nchanges' => '$1次更改',
 'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改選項',
-'recentchanges-summary' => '跟蹤這個wiki上的最新更改。',
-'recentchanges-feed-description' => '追蹤此è¨\82é\96±å\9c¨ wiki 上的最近更改。',
+'recentchanges-summary' => '跟蹤此維基上的最近更改。',
+'recentchanges-feed-description' => 'è¨\82é\96±æ­¤ç¶­å\9fº上的最近更改。',
 'recentchanges-label-newpage' => '這次編輯建立了一個新頁面',
 'recentchanges-label-minor' => '這是一個小編輯',
 'recentchanges-label-bot' => '這次編輯是由機器人進行',
@@ -2961,7 +2965,7 @@ $2',
 'tooltip-n-mainpage-description' => '訪問首頁',
 'tooltip-n-portal' => '關於本計劃、{{GENDER:|你|妳|你}}可以做什麼、應該如何做',
 'tooltip-n-currentevents' => '提供目前新聞事件的背景資料',
-'tooltip-n-recentchanges' => '列出該網站中的最近修改',
+'tooltip-n-recentchanges' => '列出此維基中的最近修改',
 'tooltip-n-randompage' => '隨機載入一個頁面',
 'tooltip-n-help' => '尋求幫助',
 'tooltip-t-whatlinkshere' => '列出所有與本頁相連的頁面',
@@ -3813,7 +3817,7 @@ $5
 'version-hook-subscribedby' => '利用於',
 'version-version' => '(版本 $1)',
 'version-license' => '授權',
-'version-poweredby-credits' => "這個 Wiki 由 '''[//www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-credits' => "此維基由'''[//www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
 'version-poweredby-others' => '其他',
 'version-credits-summary' => '我們感謝以下人士為[[Special:Version|MediaWiki]]作出的貢獻。',
 'version-license-info' => 'MediaWiki為自由軟件;您可依據自由軟件基金會所發表的GNU通用公共授權條款規定,就本程式再為發佈與/或修改;無論您依據的是本授權的第二版或(您自行選擇的)任一日後發行的版本。
@@ -3827,6 +3831,7 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'version-entrypoints' => '入口點URL',
 'version-entrypoints-header-entrypoint' => '入口點',
 'version-entrypoints-header-url' => 'URL',
+'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 條目路徑]',
 
 # Special:Redirect
 'redirect' => '重定向檔案、用戶ID或頁面修訂ID',
index 90e4f7e..ffc8c3b 100644 (file)
@@ -1,5 +1,7 @@
-# Doxyfile 1.7.5.1
+# Doxyfile 1.7.6.1
 
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for MediaWiki.
 #
 # Some placeholders have been added for MediaWiki usage:
 # {{OUTPUT_DIRECTORY}}
@@ -64,6 +66,7 @@ ALIASES =     "type{1}=<b> \1 </b>:" \
                "copyright=\note" \
                "license=\note" \
                "codeCoverageIgnore="
+TCL_SUBST              =
 OPTIMIZE_OUTPUT_FOR_C  = NO
 OPTIMIZE_OUTPUT_JAVA   = NO
 OPTIMIZE_FOR_FORTRAN   = NO
@@ -72,13 +75,14 @@ EXTENSION_MAPPING      =
 BUILTIN_STL_SUPPORT    = NO
 CPP_CLI_SUPPORT        = NO
 SIP_SUPPORT            = NO
-IDL_PROPERTY_SUPPORT   = NO
+IDL_PROPERTY_SUPPORT   = YES
 DISTRIBUTE_GROUP_DOC   = YES
 SUBGROUPING            = YES
 INLINE_GROUPED_CLASSES = NO
 INLINE_SIMPLE_STRUCTS  = NO
 TYPEDEF_HIDES_STRUCT   = NO
 SYMBOL_CACHE_SIZE      = 0
+LOOKUP_CACHE_SIZE      = 1
 #---------------------------------------------------------------------------
 # Build related configuration options
 #---------------------------------------------------------------------------
@@ -217,7 +221,7 @@ HTML_STYLESHEET        =
 HTML_EXTRA_FILES       =
 HTML_COLORSTYLE_HUE    = 220
 HTML_COLORSTYLE_SAT    = 100
-HTML_COLORSTYLE_GAMMA  =  80
+HTML_COLORSTYLE_GAMMA  = 80
 HTML_TIMESTAMP         = YES
 HTML_ALIGN_MEMBERS     = YES
 HTML_DYNAMIC_SECTIONS  = NO
@@ -359,7 +363,7 @@ MSCFILE_DIRS           =
 DOT_GRAPH_MAX_NODES    = 50
 MAX_DOT_GRAPH_DEPTH    = 1000
 DOT_TRANSPARENT        = NO
-DOT_MULTI_TARGETS      = NO
+DOT_MULTI_TARGETS      = YES
 GENERATE_LEGEND        = YES
 DOT_CLEANUP            = YES
 
index b4df328..e29ffd9 100644 (file)
@@ -426,7 +426,7 @@ abstract class Maintenance {
                $this->addOption( 'server', "The protocol and server name to use in URLs, e.g. " .
                                "http://en.wikipedia.org. This is sometimes necessary because " .
                                "server name detection may fail in command line scripts.", false, true );
-               $this->addOption( 'profiler', 'Set to "text" or "trace" show profiling output', false, true );
+               $this->addOption( 'profiler', 'Set to "text" or "trace" to show profiling output', false, true );
 
                # Save generic options to display them separately in help
                $this->mGenericParameters = $this->mParams;
@@ -1155,8 +1155,7 @@ abstract class Maintenance {
                        $title = $titleObj->getPrefixedDBkey();
                        $this->output( "$title..." );
                        # Update searchindex
-                       # TODO: pass the Content object to SearchUpdate, let the search engine decide how to deal with it.
-                       $u = new SearchUpdate( $pageId, $titleObj->getText(), $rev->getContent()->getTextForSearchIndex() );
+                       $u = new SearchUpdate( $pageId, $titleObj->getText(), $rev->getContent() );
                        $u->doUpdate();
                        $this->output( "\n" );
                }
index c5e48f4..7aac4d4 100644 (file)
@@ -414,6 +414,8 @@ class TextPassDumper extends BackupDumper {
         * @throws MWException
         */
        function getText( $id ) {
+               global $wgContentHandlerUseDB;
+
                $prefetchNotTried = true; // Whether or not we already tried to get the text via prefetch.
                $text = false; // The candidate for a good text. false if no proper value.
                $failures = 0; // The number of times, this invocation of getText already failed.
@@ -479,7 +481,23 @@ class TextPassDumper extends BackupDumper {
                                if ( ! isset( $this->db ) ) {
                                        throw new MWException( "No database available" );
                                }
-                               $revLength = $this->db->selectField( 'revision', 'rev_len', array( 'rev_id' => $revID ) );
+
+                               $revLength = strlen( $text );
+                               if ( $wgContentHandlerUseDB ) {
+                                       $row  = $this->db->selectRow( 'revision', array( 'rev_len', 'rev_content_model' ), array( 'rev_id' => $revID ), __METHOD__ );
+                                       if ( $row ) {
+                                               // only check the length for the wikitext content handler,
+                                               // it's a wasted (and failed) check otherwise
+                                               if ( $row->rev_content_model == CONTENT_MODEL_WIKITEXT ) {
+                                                       $revLength = $row->rev_len;
+                                               }
+                                       }
+
+                               }
+                               else {
+                                       $revLength = $this->db->selectField( 'revision', 'rev_len', array( 'rev_id' => $revID ) );
+                               }
+
                                if ( strlen( $text ) == $revLength ) {
                                        if ( $tryIsPrefetch ) {
                                                $this->prefetchCount++;
index 59ea18f..663012f 100644 (file)
@@ -1284,6 +1284,8 @@ editinterface
 editintro
 edititis
 editlink
+editmyusercss
+editmyuserjs
 editnotice
 editnotsupported
 editondblclick
@@ -1663,9 +1665,9 @@ ggp
 ghostscript
 gimpbaseenums
 git
+gitblit
 gitdir
 github
-gitweb
 global
 globalauth
 globalblock
index 10984b0..866ec5a 100644 (file)
@@ -53,9 +53,13 @@ $maintenance->setup();
 // to $maintenance->mSelf. Keep that here for b/c
 $self = $maintenance->getName();
 
-// Detect compiled mode
+# Load composer's autoloader if present
+if ( is_readable( "$IP/vendor/autoload.php" ) ) {
+       require_once "$IP/vendor/autoload.php";
+}
 # Get the MWInit class
 require_once "$IP/includes/Init.php";
+# Start the autoloader, so that extensions can derive classes from core files
 require_once "$IP/includes/AutoLoader.php";
 # Stub the profiler
 require_once "$IP/includes/profiler/Profiler.php";
index 7fca651..7c24f0f 100644 (file)
@@ -52,6 +52,8 @@ class EditCLI extends Maintenance {
                $noRC = $this->hasOption( 'no-rc' );
 
                $wgUser = User::newFromName( $userName );
+               $context = RequestContext::getMain();
+               $context->setUser( $wgUser );
                if ( !$wgUser ) {
                        $this->error( "Invalid username", true );
                }
@@ -63,6 +65,7 @@ class EditCLI extends Maintenance {
                if ( !$wgTitle ) {
                        $this->error( "Invalid title", true );
                }
+               $context->setTitle( $wgTitle );
 
                $page = WikiPage::factory( $wgTitle );
 
index 68e1fb2..962b082 100644 (file)
                                "classes": [
                                        "mw.Title",
                                        "mw.notification",
+                                       "mw.user",
                                        "mw.util",
                                        "mw.plugin.*"
                                ]
                        },
+                       {
+                               "name": "Actions",
+                               "classes": ["mw.toolbar"]
+                       },
                        {
                                "name": "API",
                                "classes": ["mw.Api*"]
index 4ad75f0..60522c5 100644 (file)
@@ -14,6 +14,8 @@
                "../../resources/mediawiki/mediawiki.Title.js",
                "../../resources/mediawiki/mediawiki.notify.js",
                "../../resources/mediawiki/mediawiki.notification.js",
+               "../../resources/mediawiki/mediawiki.user.js",
+               "../../resources/mediawiki.action/mediawiki.action.edit.js",
                "../../resources/mediawiki.api",
                "../../resources/jquery/jquery.localize.js"
        ]
index 17feaf9..0ec22e0 100644 (file)
@@ -96,7 +96,6 @@ $wgIgnoredMessages = array(
        'talkpageheader',
        'anonnotice',
        'autoblock_whitelist',
-       'searchmenu-help',
        'searchmenu-new-nocreate',
        'googlesearch',
        'opensearch-desc',
@@ -258,6 +257,7 @@ $wgIgnoredMessages = array(
        'createacct-benefit-icon3',
        'today-at',
        'redirect-text',
+       'edithelppage',
 );
 
 /** Optional messages, which may be translated only if changed in the target language. */
index 3a07553..28c3e81 100644 (file)
@@ -424,6 +424,8 @@ $wgMessageStructure = array(
                'namespaceprotected',
                'customcssprotected',
                'customjsprotected',
+               'mycustomcssprotected',
+               'mycustomjsprotected',
                'ns-specialprotected',
                'titleprotected',
                'filereadonlyerror',
@@ -952,9 +954,7 @@ $wgMessageStructure = array(
                'searchmenu-exists',
                'searchmenu-new',
                'searchmenu-new-nocreate',
-               'searchhelp-url',
                'searchmenu-prefix',
-               'searchmenu-help',
                'searchprofile-articles',
                'searchprofile-project',
                'searchprofile-images',
@@ -1147,6 +1147,7 @@ $wgMessageStructure = array(
                'userrights-unchangeable-col',
                'userrights-irreversible-marker',
                'userrights-conflict',
+               'userrights-removed-self',
        ),
        'group' => array(
                'group',
@@ -1219,6 +1220,8 @@ $wgMessageStructure = array(
                'right-editusercssjs',
                'right-editusercss',
                'right-edituserjs',
+               'right-editmyusercss',
+               'right-editmyuserjs',
                'right-rollback',
                'right-markbotedits',
                'right-noratelimit',
index 9283264..9fb1314 100644 (file)
@@ -57,7 +57,8 @@ class MWDocGen extends Maintenance {
                $this->addOption( 'generate-man',
                        'Whether to generate man files' );
                $this->addOption( 'file',
-                       'Only process given file (relative to $IP)',
+                       "Only process given file or directory. Multiple values " .
+                       "accepted with comma separation. Path relative to \$IP.",
                        false, true );
                $this->addOption( 'output',
                        'Path to write doc to',
@@ -75,13 +76,21 @@ class MWDocGen extends Maintenance {
 
                $this->doxygen = $this->getOption( 'doxygen', 'doxygen' );
                $this->mwVersion = $this->getOption( 'version', 'master' );
-               $this->input = $IP . '/' . $this->getOption( 'file', '' );
+
+               $this->input = '';
+               $inputs = explode( ',', $this->getOption( 'file', '' ) );
+               foreach( $inputs as $input ) {
+                       # Doxygen inputs are space separted and double quoted
+                       $this->input .= " \"$IP/$input\"";
+               }
+
                $this->output = $this->getOption( 'output', "$IP/docs" );
 
                $this->inputFilter = wfShellWikiCmd(
                        $IP . '/maintenance/mwdoc-filter.php' );
                $this->template = $IP . '/maintenance/Doxyfile';
                $this->excludes = array(
+                       'vendor',
                        'images',
                        'static',
                );
index 32b6569..86658c5 100644 (file)
@@ -68,28 +68,54 @@ class PurgeDeletedFiles extends Maintenance {
                $res = $db->select( 'logging', array( 'log_title', 'log_timestamp' ), $conds, __METHOD__ );
                foreach ( $res as $row ) {
                        $file = $repo->newFile( Title::makeTitle( NS_FILE, $row->log_title ) );
-
+                       // If there is an orphaned storage file still there...delete it
+                       if ( !$file->exists() && $repo->fileExists( $file->getPath() ) ) {
+                               $dpath = $this->getDeletedPath( $repo, $file );
+                               if ( $repo->fileExists( $dpath ) ) { // sanity check to avoid data loss
+                                       $repo->getBackend()->delete( array( 'src' => $file->getPath() ) );
+                                       $this->output( "Deleted orphan file: {$file->getPath()}.\n" );
+                               } else {
+                                       $this->error( "File was not deleted: {$file->getPath()}.\n" );
+                               }
+                       }
                        // Purge current version and any versions in oldimage table
                        $file->purgeCache();
                        $file->purgeHistory();
                        // Purge items from fileachive table (rows are likely here)
-                       $this->purgeFromArchiveTable( $file );
+                       $this->purgeFromArchiveTable( $repo, $file );
 
                        $this->output( "Purged file {$row->log_title}; deleted on {$row->log_timestamp}.\n" );
                }
        }
 
-       protected function purgeFromArchiveTable( LocalFile $file ) {
-               $db = $file->getRepo()->getSlaveDB();
+       protected function purgeFromArchiveTable( LocalRepo $repo, LocalFile $file ) {
+               $db = $repo->getSlaveDB();
                $res = $db->select( 'filearchive',
                        array( 'fa_archive_name' ),
                        array( 'fa_name' => $file->getName() ),
                        __METHOD__
                );
                foreach ( $res as $row ) {
+                       $ofile = $repo->newFromArchiveName( $file->getTitle(), $row->fa_archive_name );
+                       // If there is an orphaned storage file still there...delete it
+                       if ( !$file->exists() && $repo->fileExists( $ofile->getPath() ) ) {
+                               $dpath = $this->getDeletedPath( $repo, $ofile );
+                               if ( $repo->fileExists( $dpath ) ) { // sanity check to avoid data loss
+                                       $repo->getBackend()->delete( array( 'src' => $ofile->getPath() ) );
+                                       $this->output( "Deleted orphan file: {$ofile->getPath()}.\n" );
+                               } else {
+                                       $this->error( "File was not deleted: {$ofile->getPath()}.\n" );
+                               }
+                       }
                        $file->purgeOldThumbnails( $row->fa_archive_name );
                }
        }
+
+       protected function getDeletedPath( LocalRepo $repo, LocalFile $file ) {
+               $hash = $repo->getFileSha1( $file->getPath() );
+               $key = "{$hash}.{$file->getExtension()}";
+               return $repo->getDeletedHashPath( $key ) . $key;
+       }
 }
 
 $maintClass = "PurgeDeletedFiles";
index 54444e9..1268d20 100644 (file)
@@ -35,6 +35,10 @@ class RebuildAll extends Maintenance {
                $this->mDescription = "Rebuild links, text index and recent changes";
        }
 
+       public function getDbType() {
+               return Maintenance::DB_ADMIN;
+       }
+
        public function execute() {
                // Rebuild the text index
                if ( wfGetDB( DB_SLAVE )->getType() != 'postgres' ) {
index a31aba2..c651f72 100644 (file)
@@ -115,9 +115,8 @@ class RebuildTextIndex extends Maintenance {
 
                                        $rev = new Revision( $s );
                                        $content = $rev->getContent();
-                                       $text = $content->getTextForSearchIndex();
 
-                                       $u = new SearchUpdate( $s->page_id, $title, $text );
+                                       $u = new SearchUpdate( $s->page_id, $title, $content );
                                        $u->doUpdate();
                                } catch ( MWContentSerializationException $ex ) {
                                        $this->output( "Failed to deserialize content of revision {$s->rev_id} of page "
index 6a6f9d2..9dac031 100644 (file)
@@ -102,7 +102,7 @@ class RunJobs extends Maintenance {
                                } catch ( MWException $e ) {
                                        $status = false;
                                        $error = get_class( $e ) . ': ' . $e->getMessage();
-                                       wfDebugLog( 'exception', $e->getLogMessage() );
+                                       $e->report(); // write error to STDERR and the log
                                }
                                wfProfileOut( __METHOD__ . '-' . get_class( $job ) );
                                $timeMs = intval( ( microtime( true ) - $t ) * 1000 );
index 216db93..a628b0b 100644 (file)
@@ -34,16 +34,42 @@ class MwSql extends Maintenance {
                parent::__construct();
                $this->mDescription = "Send SQL queries to a MediaWiki database";
                $this->addOption( 'cluster', 'Use an external cluster by name', false, true );
+               $this->addOption( 'slave', 'Use a slave server (either "any" or by name)', false, true );
        }
 
        public function execute() {
-               // Get a DB handle (with this wiki's DB select) from the appropriate load balancer
+               // Get the appropriate load balancer (for this wiki)
                if ( $this->hasOption( 'cluster' ) ) {
                        $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ) );
-                       $dbw = $lb->getConnection( DB_MASTER ); // master for external LB
                } else {
-                       $dbw = wfGetDB( DB_MASTER ); // master for primary LB for this wiki
+                       $lb = wfGetLB();
                }
+               // Figure out which server to use
+               if ( $this->hasOption( 'slave' ) ) {
+                       $server = $this->getOption( 'slave' );
+                       if ( $server === 'any' ) {
+                               $index = DB_SLAVE;
+                       } else {
+                               $index = null;
+                               for ( $i = 0; $i < $lb->getServerCount(); ++$i ) {
+                                       if ( $lb->getServerName( $i ) === $server ) {
+                                               $index = $i;
+                                               break;
+                                       }
+                               }
+                               if ( $index === null ) {
+                                       $this->error( "No slave server configured with the name '$server'.", 1 );
+                               }
+                       }
+               } else {
+                       $index = DB_MASTER;
+               }
+               // Get a DB handle (with this wiki's DB selected) from the appropriate load balancer
+               $dbw = $lb->getConnection( $index );
+               if ( $this->hasOption( 'slave' ) && $dbw->getLBInfo( 'master' ) !== null ) {
+                       $this->error( "The server selected ({$dbw->getServer()}) is not a slave.", 1 );
+               }
+
                if ( $this->hasArg( 0 ) ) {
                        $file = fopen( $this->getArg( 0 ), 'r' );
                        if ( !$file ) {
index da2c6df..7fc6bb8 100644 (file)
@@ -760,6 +760,9 @@ CREATE TABLE /*_*/ipblocks (
 
   -- Start and end of an address range, in hexadecimal
   -- Size chosen to allow IPv6
+  -- FIXME: these fields were originally blank for single-IP blocks,
+  -- but now they are populated. No migration was ever done. They 
+  -- should be fixed to be blank again for such blocks (bug 49504).
   ipb_range_start tinyblob NOT NULL,
   ipb_range_end tinyblob NOT NULL,
 
index 90c6c95..fcb3d6a 100644 (file)
@@ -99,7 +99,12 @@ return array(
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
        'skins.vector.js' => array(
-               'scripts' => 'vector/vector.js',
+               'scripts' => array(
+                       'vector/vector.js',
+                       'vector/collapsibleTabs.js',
+               ),
+               'position' => 'top',
+               'dependencies' => 'jquery.delayedBind',
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
@@ -585,6 +590,12 @@ return array(
                        'mediawiki.Title',
                ),
        ),
+       'mediawiki.api.login' => array(
+               'scripts' => 'resources/mediawiki.api/mediawiki.api.login.js',
+               'dependencies' => array(
+                       'mediawiki.api',
+               ),
+       ),
        'mediawiki.api.parse' => array(
                'scripts' => 'resources/mediawiki.api/mediawiki.api.parse.js',
                'dependencies' => 'mediawiki.api',
@@ -922,6 +933,7 @@ return array(
        'mediawiki.special.preferences' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js',
                'styles' => 'resources/mediawiki.special/mediawiki.special.preferences.css',
+               'position' => 'top',
        ),
        'mediawiki.special.recentchanges' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
@@ -953,25 +965,21 @@ return array(
                ),
                'dependencies' => array( 'mediawiki.libs.jpegmeta', 'mediawiki.util' ),
        ),
-       'mediawiki.special.userlogin.signup' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.userLogin.signup.js',
-       ),
-       'mediawiki.special.userlogin.vform' => array(
+       'mediawiki.special.userlogin' => array(
                'styles' => array(
                        'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.userLogin.vform.css',
+                       'resources/mediawiki.special/mediawiki.special.userLogin.css',
                ),
                'position' => 'top',
        ),
-       'mediawiki.special.createaccount.vform' => array(
+       'mediawiki.special.createaccount' => array(
                'styles' => array(
                        'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.createAccount.vform.css',
+                       'resources/mediawiki.special/mediawiki.special.createAccount.css',
                ),
-               'position' => 'top',
        ),
-       'mediawiki.special.createaccount.vform.js' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.vform.js',
+       'mediawiki.special.createaccount.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.js',
                'messages' => array(
                        'createacct-captcha',
                        'createacct-imgcaptcha-ph'
index b0bd685..2da022c 100644 (file)
@@ -6,7 +6,7 @@
        /* Private Members */
 
        /**
-        * @var profileCache {Object} Keyed by userAgent string,
+        * @var {Object} profileCache Keyed by userAgent string,
         * value is the parsed $.client.profile object for that user agent.
         */
        var profileCache = {};
@@ -18,9 +18,9 @@
                /**
                 * Get an object containing information about the client.
                 *
-                * @param nav {Object} An object with atleast a 'userAgent' and 'platform' key.
+                * @param {Object} nav An object with atleast a 'userAgent' and 'platform' key.
                 * Defaults to the global Navigator object.
-                * @return {Object} The resulting client object will be in the following format:
+                * @returns {Object} The resulting client object will be in the following format:
                 *  {
                 *   'name': 'firefox',
                 *   'layout': 'gecko',
                                        // Generic version digit
                                        x = 'x',
                                        // Strings found in user agent strings that need to be conformed
-                                       wildUserAgents = ['Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3'],
+                                       wildUserAgents = ['Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3', 'Iceweasel'],
                                        // Translations for conforming user agent strings
                                        userAgentTranslations = [
                                                // Tons of browsers lie about being something they are not
-                                               [/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''],
+                                               [/(Firefox|MSIE|KHTML,?\slike\sGecko|Konqueror)/, ''],
                                                // Chrome lives in the shadow of Safari still
                                                ['Chrome Safari', 'Chrome'],
                                                // KHTML is the layout engine not the browser - LIES!
                                        // version detectection
                                        versionPrefixes = [
                                                'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'netscape6', 'opera', 'version', 'konqueror',
-                                               'lynx', 'msie', 'safari', 'ps3'
+                                               'lynx', 'msie', 'safari', 'ps3', 'android'
                                        ],
                                        // Used as matches 2, 3 and 4 in version extraction - 3 is used as actual version number
                                        versionSuffix = '(\\/|\\;?\\s|)([a-z0-9\\.\\+]*?)(\\;|dev|rel|\\)|\\s|$)',
                                        // Names of known browsers
                                        names = [
                                                'camino', 'chrome', 'firefox', 'iceweasel', 'netscape', 'konqueror', 'lynx', 'msie', 'opera',
-                                               'safari', 'ipod', 'iphone', 'blackberry', 'ps3', 'rekonq'
+                                               'safari', 'ipod', 'iphone', 'blackberry', 'ps3', 'rekonq', 'android'
                                        ],
                                        // Tanslations for conforming browser names
                                        nameTranslations = [],
                },
 
                /**
-                * Checks the current browser against a support map object to determine if the browser has been black-listed or
-                * not. If the browser was not configured specifically it is assumed to work. It is assumed that the body
-                * element is classified as either "ltr" or "rtl". If neither is set, "ltr" is assumed.
+                * Checks the current browser against a support map object.
                 *
                 * A browser map is in the following format:
                 * {
+                *   // Multiple rules with configurable operators
+                *   'msie': [['>=', 7], ['!=', 9]],
+                *    // Match no versions
+                *   'iphone': false,
+                *    // Match any version
+                *   'android': null
+                * }
+                *
+                * It can optionally be split into ltr/rtl sections:
+                * {
                 *   'ltr': {
-                *     // Multiple rules with configurable operators
-                *     'msie': [['>=', 7], ['!=', 9]],
-                *      // Blocked entirely
+                *     'android': null,
                 *     'iphone': false
                 *   },
                 *   'rtl': {
-                *     // Test against a string
-                *     'msie': [['!==', '8.1.2.3']],
-                *     // RTL rules do not fall through to LTR rules, you must explicity set each of them
+                *     'android': false,
+                *     // rules are not inherited from ltr
                 *     'iphone': false
                 *   }
                 * }
                 *
-                * @param map {Object} Browser support map
-                * @param profile {Object} (optional) a client-profile object.
+                * @param {Object} map Browser support map
+                * @param {Object} [profile] A client-profile object
+                * @param {boolean} [exactMatchOnly=false] Only return true if the browser is matched, otherwise
+                * returns true if the browser is not found.
                 *
-                * @return Boolean true if browser known or assumed to be supported, false if blacklisted
+                * @returns {boolean} The current browser is in the support map
                 */
-               test: function ( map, profile ) {
+               test: function ( map, profile, exactMatchOnly ) {
                        /*jshint evil: true */
 
                        var conditions, dir, i, op, val;
                        profile = $.isPlainObject( profile ) ? profile : $.client.profile();
-                       dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
+                       if ( map.ltr && map.rtl ) {
+                               dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
+                               map = map[dir];
+                       }
                        // Check over each browser condition to determine if we are running in a compatible client
-                       if ( typeof map[dir] !== 'object' || map[dir][profile.name] === undefined ) {
-                               // Unknown, so we assume it's working
-                               return true;
+                       if ( typeof map !== 'object' || map[profile.name] === undefined ) {
+                               // Not found, return true if exactMatchOnly not set, false otherwise
+                               return !exactMatchOnly;
                        }
-                       conditions = map[dir][profile.name];
+                       conditions = map[profile.name];
                        if ( conditions === false ) {
+                               // Match no versions
                                return false;
                        }
+                       if ( conditions === null ) {
+                               // Match all versions
+                               return true;
+                       }
                        for ( i = 0; i < conditions.length; i++ ) {
                                op = conditions[i][0];
                                val = conditions[i][1];
index e1a07b6..2d46bde 100644 (file)
@@ -18,6 +18,8 @@
        var lpx = 'jquery.makeCollapsible> ';
 
        /**
+        * Handler for a click on a collapsible toggler.
+        *
         * @param {jQuery} $collapsible
         * @param {string} action The action this function will take ('expand' or 'collapse').
         * @param {jQuery|null} [optional] $defaultToggle
                toggleElement( $collapsible, wasCollapsed ? 'expand' : 'collapse', $toggle, options );
        }
 
-       /**
-        * Toggles collapsible and togglelink class and updates text label.
-        *
-        * @param {jQuery} $that
-        * @param {jQuery.Event} e
-        * @param {Object|undefined} options
-        */
-       function toggleLinkDefault( $that, e, options ) {
-               var $collapsible = $that.closest( '.mw-collapsible' );
-               options = $.extend( { toggleClasses: true }, options );
-               togglingHandler( $that, $collapsible, e, options );
-       }
-
-       /**
-        * Toggles collapsible and togglelink class.
-        *
-        * @param {jQuery} $that
-        * @param {jQuery.Event} e
-        * @param {Object|undefined} options
-        */
-       function toggleLinkPremade( $that, e, options ) {
-               var $collapsible = $that.eq( 0 ).closest( '.mw-collapsible' );
-               options = $.extend( { toggleClasses: true, linksPassthru: true }, options );
-               togglingHandler( $that, $collapsible, e, options );
-       }
-
-       /**
-        * Toggles customcollapsible.
-        *
-        * @param {jQuery} $that
-        * @param {jQuery.Event} e
-        * @param {Object|undefined} options
-        * @param {jQuery} $collapsible
-        */
-       function toggleLinkCustom( $that, e, options, $collapsible ) {
-               togglingHandler( $that, $collapsible, e, options );
-       }
-
        /**
         * Make any element collapsible.
         *
         *   div.mw-collapsible-content. May only be used with custom togglers.
         */
        $.fn.makeCollapsible = function ( options ) {
-               return this.each(function () {
-                       var $collapsible, collapsetext, expandtext, $toggle, $toggleLink, $firstItem, collapsibleId,
-                               $customTogglers, firstval;
+               if ( options === undefined ) {
+                       options = {};
+               }
 
-                       if ( options === undefined ) {
-                               options = {};
-                       }
+               return this.each( function () {
+                       var $collapsible, collapseText, expandText, $toggle, clickHandler, $defaultToggleLink,
+                               premadeToggleHandler, $toggleLink, $firstItem, collapsibleId, $customTogglers, firstval;
 
                        // Ensure class "mw-collapsible" is present in case .makeCollapsible()
                        // is called on element(s) that don't have it yet.
-                       $collapsible = $(this).addClass( 'mw-collapsible' );
+                       $collapsible = $( this ).addClass( 'mw-collapsible' );
 
                        // Return if it has been enabled already.
                        if ( $collapsible.data( 'mw-made-collapsible' ) ) {
                        }
 
                        // Use custom text or default?
-                       collapsetext = options.collapseText || $collapsible.attr( 'data-collapsetext' ) || mw.msg( 'collapsible-collapse' );
-                       expandtext = options.expandText || $collapsible.attr( 'data-expandtext' ) || mw.msg( 'collapsible-expand' );
-
-                       // Create toggle link with a space around the brackets (&nbsp;[text]&nbsp;)
-                       $toggleLink =
+                       collapseText = options.collapseText || $collapsible.attr( 'data-collapsetext' ) || mw.msg( 'collapsible-collapse' );
+                       expandText = options.expandText || $collapsible.attr( 'data-expandtext' ) || mw.msg( 'collapsible-expand' );
+
+                       // Default click handler and toggle link to use when none is present
+                       clickHandler = function ( e, opts ) {
+                               var defaultOpts = {
+                                       toggleClasses: true,
+                                       toggleText: { collapseText: collapseText, expandText: expandText }
+                               };
+                               opts = $.extend( defaultOpts, options, opts );
+                               togglingHandler( $( this ), $collapsible, e, opts );
+                       };
+                       $defaultToggleLink =
                                $( '<a href="#"></a>' )
-                                       .text( collapsetext )
+                                       .text( collapseText )
                                        .wrap( '<span class="mw-collapsible-toggle"></span>' )
                                                .parent()
                                                .prepend( '&nbsp;[' )
                                                .append( ']&nbsp;' )
-                                               .on( 'click.mw-collapsible', function ( e, opts ) {
-                                                       opts = $.extend( { toggleText: { collapseText: collapsetext, expandText: expandtext } }, options, opts );
-                                                       toggleLinkDefault( $(this), e, opts );
-                                               } );
+                                               .on( 'click.mw-collapsible', clickHandler );
+
+                       // Default handler for clicking on premade toggles
+                       premadeToggleHandler = function ( e, opts ) {
+                               var defaultOpts = { toggleClasses: true, linksPassthru: true };
+                               opts = $.extend( defaultOpts, options, opts );
+                               togglingHandler( $( this ), $collapsible, e, opts );
+                       };
 
                        // Check if this element has a custom position for the toggle link
                        // (ie. outside the container or deeper inside the tree)
                                }
                        }
 
-                       // Bind the custom togglers
+                       // Bind the togglers
                        if ( $customTogglers && $customTogglers.length ) {
-                               $customTogglers.on( 'click.mw-collapsible', function ( e, opts ) {
-                                       opts = $.extend( {}, options, opts );
-                                       toggleLinkCustom( $(this), e, opts, $collapsible );
-                               } );
-
-                               // Initial state
-                               if ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) {
-                                       // Remove here so that the toggler goes in the right direction,
-                                       // It re-adds the class.
-                                       $collapsible.removeClass( 'mw-collapsed' );
-                                       toggleLinkCustom( $customTogglers, null, $.extend( { instantHide: true }, options ), $collapsible );
-                               }
+                               clickHandler = function ( e, opts ) {
+                                       var defaultOpts = {};
+                                       opts = $.extend( defaultOpts, options, opts );
+                                       togglingHandler( $( this ), $collapsible, e, opts );
+                               };
+
+                               $toggleLink = $customTogglers;
+                               $toggleLink.on( 'click.mw-collapsible', clickHandler );
 
-                       // If this is not a custom case, do the default:
-                       // Wrap the contents and add the toggle link
                        } else {
-                               // Elements are treated differently
+                               // If this is not a custom case, do the default: wrap the
+                               // contents and add the toggle link. Different elements are
+                               // treated differently.
                                if ( $collapsible.is( 'table' ) ) {
                                        // The toggle-link will be in one the the cells (td or th) of the first row
                                        $firstItem = $collapsible.find( 'tr:first th, tr:first td' );
 
                                        // If theres no toggle link, add it to the last cell
                                        if ( !$toggle.length ) {
-                                               $firstItem.eq(-1).prepend( $toggleLink );
+                                               $toggleLink = $defaultToggleLink.prependTo( $firstItem.eq( -1 ) );
                                        } else {
-                                               $toggleLink = $toggle.off( 'click.mw-collapsible' ).on( 'click.mw-collapsible', function ( e, opts ) {
-                                                       opts = $.extend( {}, options, opts );
-                                                       toggleLinkPremade( $toggle, e, opts );
-                                               } );
+                                               clickHandler = premadeToggleHandler;
+                                               $toggleLink = $toggle.on( 'click.mw-collapsible', clickHandler );
                                        }
 
                                } else if ( $collapsible.is( 'ul' ) || $collapsible.is( 'ol' ) ) {
                                        if ( !$toggle.length ) {
                                                // Make sure the numeral order doesn't get messed up, force the first (soon to be second) item
                                                // to be "1". Except if the value-attribute is already used.
-                                               // If no value was set WebKit returns "", Mozilla returns '-1', others return null or undefined.
+                                               // If no value was set WebKit returns "", Mozilla returns '-1', others return 0, null or undefined.
                                                firstval = $firstItem.attr( 'value' );
                                                if ( firstval === undefined || !firstval || firstval === '-1' || firstval === -1 ) {
                                                        $firstItem.attr( 'value', '1' );
                                                }
-                                               $collapsible.prepend( $toggleLink.wrap( '<li class="mw-collapsible-toggle-li"></li>' ).parent() );
+                                               $toggleLink = $defaultToggleLink;
+                                               $toggleLink.wrap( '<li class="mw-collapsible-toggle-li"></li>' ).parent().prependTo( $collapsible );
                                        } else {
-                                               $toggleLink = $toggle.off( 'click.mw-collapsible' ).on( 'click.mw-collapsible', function ( e, opts ) {
-                                                       opts = $.extend( {}, options, opts );
-                                                       toggleLinkPremade( $toggle, e, opts );
-                                               } );
+                                               clickHandler = premadeToggleHandler;
+                                               $toggleLink = $toggle.on( 'click.mw-collapsible', clickHandler );
                                        }
 
                                } else { // <div>, <p> etc.
 
                                        // If theres no toggle link, add it
                                        if ( !$toggle.length ) {
-                                               $collapsible.prepend( $toggleLink );
+                                               $toggleLink = $defaultToggleLink.prependTo( $collapsible );
                                        } else {
-                                               $toggleLink = $toggle.off( 'click.mw-collapsible' ).on( 'click.mw-collapsible', function ( e, opts ) {
-                                                       opts = $.extend( {}, options, opts );
-                                                       toggleLinkPremade( $toggle, e, opts );
-                                               } );
+                                               clickHandler = premadeToggleHandler;
+                                               $toggleLink = $toggle.on( 'click.mw-collapsible', clickHandler );
                                        }
                                }
                        }
 
-                       // Initial state (only for those that are not custom,
-                       // because the initial state of those has been taken care of already).
-                       if (
-                               ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) &&
-                               ( !$customTogglers || !$customTogglers.length )
-                       ) {
+                       // Initial state
+                       if ( options.collapsed || $collapsible.hasClass( 'mw-collapsed' ) ) {
+                               // Remove here so that the toggler goes in the right direction (the class is re-added)
                                $collapsible.removeClass( 'mw-collapsed' );
-                               // The collapsible element could have multiple togglers
-                               // To toggle the initial state only click one of them (ie. the first one, eq(0) )
-                               // Else it would go like: hide,show,hide,show for each toggle link.
-                               // This is just like it would be in reality (only one toggle is clicked at a time).
-                               $toggleLink.eq( 0 ).trigger( 'click', [ { instantHide: true } ] );
+                               // One toggler can hook to multiple elements, and one element can have
+                               // multiple togglers. This is the sanest way to handle that.
+                               clickHandler.call( $toggleLink.get( 0 ), null, { instantHide: true } );
                        }
                } );
        };
index a552237..405c600 100644 (file)
 
        }
 
+       /**
+        * Sets the sort count of the columns that are not affected by the sorting to have them sorted
+        * in default (ascending) order when their header cell is clicked the next time.
+        *
+        * @param {jQuery} $headers
+        * @param {Number[][]} sortList
+        * @param {Number[][]} headerToColumns
+        */
+       function setHeadersOrder( $headers, sortList, headerToColumns ) {
+               // Loop through all headers to retrieve the indices of the columns the header spans across:
+               $.each( headerToColumns, function( headerIndex, columns ) {
+
+                       $.each( columns, function( i, columnIndex ) {
+                               var header = $headers[headerIndex];
+
+                               if ( !isValueInArray( columnIndex, sortList ) ) {
+                                       // Column shall not be sorted: Reset header count and order.
+                                       header.order = 0;
+                                       header.count = 0;
+                               } else {
+                                       // Column shall be sorted: Apply designated count and order.
+                                       $.each( sortList, function( j, sortColumn ) {
+                                               if ( sortColumn[0] === i ) {
+                                                       header.order = sortColumn[1];
+                                                       header.count = sortColumn[1] + 1;
+                                                       return false;
+                                               }
+                                       } );
+                               }
+                       } );
+
+               } );
+       }
+
        function isValueInArray( v, a ) {
                var l = a.length;
                for ( var i = 0; i < l; i++ ) {
                $.each( sortObjects, function( i, sortObject ) {
                        $.each ( sortObject, function( columnIndex, order ) {
                                var orderIndex = ( order === 'desc' ) ? 1 : 0;
-                               sortList.push( [columnIndex, orderIndex] );
+                               sortList.push( [parseInt( columnIndex, 10 ), orderIndex] );
                        } );
                } );
                return sortList;
                                                                }
                                                        }
 
+                                                       // Reset order/counts of cells not affected by sorting
+                                                       setHeadersOrder( $headers, config.sortList, headerToColumns );
+
                                                        // Set CSS for headers
                                                        setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg, columnToHeader );
                                                        appendToTable(
                                                        sortList = convertSortList( sortList );
                                                }
 
+                                               // Set each column's sort count to be able to determine the correct sort
+                                               // order when clicking on a header cell the next time
+                                               setHeadersOrder( $headers, sortList, headerToColumns );
+
                                                // re-build the cache for the tbody cells
                                                cache = buildCache( table );
 
index fc1b18d..1c5a018 100644 (file)
@@ -1,17 +1,20 @@
+/**
+ * Interface for the classic edit toolbar.
+ *
+ * @class mw.toolbar
+ * @singleton
+ */
 ( function ( mw, $ ) {
-       var isReady, toolbar, currentFocused, queue, $toolbar, slice;
-
-       isReady = false;
-       queue = [];
-       $toolbar = false;
-       slice = Array.prototype.slice;
+       var toolbar, isReady, $toolbar, queue, slice, currentFocused;
 
        /**
-        * Internal helper that does the actual insertion
-        * of the button into the toolbar.
-        * See mw.toolbar.addButton for parameter documentation.
+        * Internal helper that does the actual insertion of the button into the toolbar.
+        *
+        * See #addButton for parameter documentation.
+        *
+        * @private
         */
-       function insertButton( b /* imageFile */, speedTip, tagOpen, tagClose, sampleText, imageId, selectText ) {
+       function insertButton( b, speedTip, tagOpen, tagClose, sampleText, imageId ) {
                // Backwards compatibility
                if ( typeof b !== 'object' ) {
                        b = {
                                tagOpen: tagOpen,
                                tagClose: tagClose,
                                sampleText: sampleText,
-                               imageId: imageId,
-                               selectText: selectText
+                               imageId: imageId
                        };
                }
-               var $image = $( '<img>', {
+               var $image = $( '<img>' ).attr( {
                        width : 23,
                        height: 22,
                        src   : b.imageFile,
                        id    : b.imageId || undefined,
                        'class': 'mw-toolbar-editbutton'
                } ).click( function () {
-                       toolbar.insertTags( b.tagOpen, b.tagClose, b.sampleText, b.selectText );
+                       toolbar.insertTags( b.tagOpen, b.tagClose, b.sampleText );
                        return false;
                } );
 
                $toolbar.append( $image );
-               return true;
        }
 
+       isReady = false;
+       $toolbar = false;
+       queue = [];
+       slice = queue.slice;
+
        toolbar = {
+
                /**
                 * Add buttons to the toolbar.
+                *
                 * Takes care of race conditions and time-based dependencies
                 * by placing buttons in a queue if this method is called before
                 * the toolbar is created.
-                * @param {Object} button: Object with the following properties:
-                * - imageFile
-                * - speedTip
-                * - tagOpen
-                * - tagClose
-                * - sampleText
-                * - imageId
-                * - selectText
-                * For compatiblity, passing the above as separate arguments
+                *
+                * For compatiblity, passing the properties listed below as separate arguments
                 * (in the listed order) is also supported.
+                *
+                * @param {Object} button Object with the following properties:
+                * @param {string} button.imageFile
+                * @param {string} button.speedTip
+                * @param {string} button.tagOpen
+                * @param {string} button.tagClose
+                * @param {string} button.sampleText
+                * @param {string} [button.imageId]
                 */
                addButton: function () {
                        if ( isReady ) {
                },
 
                /**
-                * Apply tagOpen/tagClose to selection in textarea,
-                * use sampleText instead of selection if there is none.
+                * Apply tagOpen/tagClose to selection in currently focused textarea.
+                *
+                * Uses `sampleText` if selection is empty.
+                *
+                * @param {string} tagOpen
+                * @param {string} tagClose
+                * @param {string} sampleText
                 */
                insertTags: function ( tagOpen, tagClose, sampleText ) {
                        if ( currentFocused && currentFocused.length ) {
        mw.toolbar = toolbar;
 
        $( document ).ready( function () {
-               var buttons, i, b, $iframe;
+               var buttons, i, b, $iframe, editBox, scrollTop, $editForm;
 
                // currentFocus is used to determine where to insert tags
                currentFocused = $( '#wpTextbox1' );
                // Make sure edit summary does not exceed byte limit
                $( '#wpSummary' ).byteLimit( 255 );
 
-               /**
-                * Restore the edit box scroll state following a preview operation,
-                * and set up a form submission handler to remember this state
-                */
-               ( function scrollEditBox() {
-                       var editBox, scrollTop, $editForm;
-
-                       editBox = document.getElementById( 'wpTextbox1' );
-                       scrollTop = document.getElementById( 'wpScrolltop' );
-                       $editForm = $( '#editform' );
-                       if ( $editForm.length && editBox && scrollTop ) {
-                               if ( scrollTop.value ) {
-                                       editBox.scrollTop = scrollTop.value;
-                               }
-                               $editForm.submit( function () {
-                                       scrollTop.value = editBox.scrollTop;
-                               });
+               // Restore the edit box scroll state following a preview operation,
+               // and set up a form submission handler to remember this state.
+               editBox = document.getElementById( 'wpTextbox1' );
+               scrollTop = document.getElementById( 'wpScrolltop' );
+               $editForm = $( '#editform' );
+               if ( $editForm.length && editBox && scrollTop ) {
+                       if ( scrollTop.value ) {
+                               editBox.scrollTop = scrollTop.value;
                        }
-               }() );
+                       $editForm.submit( function () {
+                               scrollTop.value = editBox.scrollTop;
+                       });
+               }
 
                // Apply to dynamically created textboxes as well as normal ones
                $( document ).on( 'focus', 'textarea, input:text', function () {
index 1e531bf..d693d80 100644 (file)
@@ -12,7 +12,6 @@
        top: 0.6em;
        left: -50%;
        padding: .6em 3.6em .6em 1.1em;
-       font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
        font-size: 0.8em;
        line-height: 1.5625em;
        color: #626465;
        transition: all 0.25s ease-in-out;
 }
 
+.skin-vector .postedit {
+       font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
+}
+
 .skin-monobook .postedit {
        top: 3em !important;
 }
index 0e85fd9..93befe3 100644 (file)
@@ -5,10 +5,10 @@
  */
 jQuery( function ( $ ) {
        // Select all h1-h6 elements that contain editsection links
-       // Don't use the ":has:(.editsection a)" selector because it performs very bad.
+       // Don't use the ":has:(.mw-editsection a)" selector because it performs very bad.
        // http://jsperf.com/jq-1-7-2-vs-jq-1-8-1-performance-of-mw-has/2
        $( document ).on( 'contextmenu', 'h1, h2, h3, h4, h5, h6', function ( e ) {
-               var $edit = $( this ).find( '.mw-editsection a, .editsection a' );
+               var $edit = $( this ).find( '.mw-editsection a' );
                if ( !$edit.length ) {
                        return;
                }
diff --git a/resources/mediawiki.api/mediawiki.api.login.js b/resources/mediawiki.api/mediawiki.api.login.js
new file mode 100644 (file)
index 0000000..ccbae06
--- /dev/null
@@ -0,0 +1,54 @@
+/**
+ * Make the two-step login easier.
+ * @author Niklas Laxström
+ * @class mw.Api.plugin.login
+ * @since 1.22
+ */
+( function ( mw, $ ) {
+       'use strict';
+
+       $.extend( mw.Api.prototype, {
+               /**
+                * @param {string} username
+                * @param {string} password
+                * @return {jQuery.Promise} See mw.Api#post
+                */
+               login: function ( username, password ) {
+                       var params, request,
+                               deferred = $.Deferred(),
+                               api = this;
+
+                       params = {
+                               action: 'login',
+                               lgname: username,
+                               lgpassword: password
+                       };
+
+                       request = api.post( params );
+                       request.fail( deferred.reject );
+                       request.done( function ( data ) {
+                               params.lgtoken = data.login.token;
+                               api.post( params )
+                                       .fail( deferred.reject )
+                                       .done( function ( data ) {
+                                               var code;
+                                               if ( data.login && data.login.result === 'Success' ) {
+                                                       deferred.resolve( data );
+                                               } else {
+                                                       // Set proper error code whenever possible
+                                                       code = data.error && data.error.code || 'unknown';
+                                                       deferred.reject( code, data );
+                                               }
+                                       } );
+                       } );
+
+                       return deferred.promise( { abort: request.abort } );
+               }
+       } );
+
+       /**
+        * @class mw.Api
+        * @mixins mw.Api.plugin.login
+        */
+
+}( mediaWiki, jQuery ) );
index 4044655..08bb171 100644 (file)
@@ -23,6 +23,7 @@
 
                        apiPromise = this.get( {
                                        action: 'parse',
+                                       contentmodel: 'wikitext',
                                        text: wikitext
                                } )
                                .done( function ( data ) {
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.css b/resources/mediawiki.special/mediawiki.special.createAccount.css
new file mode 100644 (file)
index 0000000..11d00e7
--- /dev/null
@@ -0,0 +1,89 @@
+/* Disable the underline that Vector puts on h2 headings, and bold them. */
+.mw-ui-container h2 {
+       border: 0;
+       font-weight: bold;
+}
+
+/**** shuffled CAPTCHA ****/
+#wpCaptchaWord {
+       margin-top: 6px;
+}
+
+.mw-createacct-captcha-container {
+       background-color: #f8f8f8;
+       border: 1px solid #c9c9c9;
+       padding: 10px;
+       text-align: center;
+}
+
+.mw-createacct-captcha-assisted {
+       display: block;
+       margin-top: 0.5em;
+}
+
+/* Put a border around the fancycaptcha-image-container. */
+.mw-createacct-captcha-and-reload {
+       border: 1px solid #c9c9c9;
+       display: table-cell; /* Other display formats end up too wide */
+       width: 270px;
+       background-color: #FFF;
+}
+
+/* Make the fancycaptcha-image-container full-width within its parent.  */
+.fancycaptcha-image-container
+{
+       width: 100%;
+}
+
+/**** Benefits column CSS to the right (if it fits) of the form. ****/
+.mw-ui-container #userloginForm {
+       float: left;
+}
+
+div.mw-createacct-benefits-container {
+       /* Keeps this column compact and close to the form, but tends to squish contents. */
+       float: left;
+}
+
+div.mw-createacct-benefits-container h2 {
+       margin-bottom: 30px;
+}
+
+.mw-number-text.icon-edits {
+       /* @embed */
+       background: url(images/icon-edits.png) no-repeat left center;
+}
+
+.mw-number-text.icon-pages {
+       /* @embed */
+       background: url(images/icon-pages.png) no-repeat left center;
+}
+
+.mw-number-text.icon-contributors {
+       /* @embed */
+       background: url(images/icon-contributors.png) no-repeat left center;
+}
+
+/* Special font for numbers in benefits*/
+div.mw-number-text h3 {
+       top: 0;
+       margin: 0;
+       padding: 0;
+       color: #252525;
+       font-family: 'Georgia', serif;
+       font-weight: normal;
+       font-size: 2.2em;
+       line-height: 1.2;
+       text-align: center;
+}
+
+/* Contains a number and explanatory text, with space for an icon */
+div.mw-number-text {
+       display: block;
+       font-size: 1.2em;
+       color: #444;
+       margin-top: 1em;
+       padding: 0 0 0 95px; /* 80px wide icon plus "margin" */
+       min-height: 75px; /* matches max icon height, ensures icon emblem is visible */
+       text-align: center;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.js b/resources/mediawiki.special/mediawiki.special.createAccount.js
new file mode 100644 (file)
index 0000000..aa61a1e
--- /dev/null
@@ -0,0 +1,93 @@
+/**
+ * JavaScript for Create account form (Special:UserLogin?type=signup).
+ */
+( function ( mw, $ ) {
+
+       // When sending password by email, hide the password input fields.
+       // This function doesn't need to be loaded early by ResourceLoader, but is tiny.
+       function hidePasswordOnEmail( $ ) {
+               $( '#wpCreateaccountMail' )
+                       .on( 'change', function() {
+                               $( '.mw-row-password' ).toggle( !$( this ).attr( 'checked' ) );
+                       } )
+                       .trigger( 'change' );
+       }
+
+       // Move the FancyCaptcha image into a more attractive container.
+       // This function does need to be run early by ResourceLoader.
+       function adjustFancyCaptcha( $, mw ) {
+               var $content = $( '#mw-content-text' ),
+                       $submit = $content.find( '#wpCreateaccount' ),
+                       tabIndex,
+                       $captchaStuff,
+                       $captchaImageContainer,
+                       // JavaScript can't yet parse the message createacct-imgcaptcha-help when it
+                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
+                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
+                       helpHtml = '';
+
+               /*
+                * CAPTCHA
+                * The CAPTCHA is in a div style="captcha" at the top of the form.
+                * If it's a FancyCaptcha, then we remove it and insert it lower down,
+                * in a customized div with just what we need (e.g. no
+                * fancycaptcha-createaccount message).
+                */
+               if ( !$submit.length) {
+                       return;
+               }
+               tabIndex = $submit.prop( 'tabindex' ) - 1;
+               $captchaStuff = $content.find ( '.captcha' );
+
+               if ( $captchaStuff.length ) {
+
+                       // The FancyCaptcha has this class in the ConfirmEdit extension
+                       // after 2013-04-18.
+                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
+                       if ( $captchaImageContainer.length !== 1 ) {
+                               return;
+                       }
+
+                       $captchaStuff.remove();
+
+                       if ( helpMsg) {
+                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
+                       }
+
+                       // Insert another div before the submit button that will include the
+                       // repositioned FancyCaptcha div, an input field, and possible help.
+                       $submit.closest( 'div' )
+                               .before( [
+                       '<div>',
+                               '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
+                               '<div class="mw-createacct-captcha-container">',
+                                       '<div class="mw-createacct-captcha-and-reload" />',
+                                       '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
+                                               mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
+                                               '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
+                                               helpHtml,
+                               '</div>',
+                       '</div>'
+                                       ].join( '' )
+                               );
+
+                       // Stick the FancyCaptcha container inside our bordered and framed parents.
+                       $captchaImageContainer
+                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
+
+                       // Find the input field, add the text (if any) of the existing CAPTCHA
+                       // field (although usually it's blanked out on every redisplay),
+                       // and after it move over the hidden field that tells the CAPTCHA
+                       // what to do.
+                       $content.find( '#wpCaptchaWord' )
+                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
+                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
+               }
+       }
+
+       $( document ).ready( function( $ ) {
+               adjustFancyCaptcha( $, mw);
+               hidePasswordOnEmail( $ );
+       } );
+
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.vform.css b/resources/mediawiki.special/mediawiki.special.createAccount.vform.css
deleted file mode 100644 (file)
index 11d00e7..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Disable the underline that Vector puts on h2 headings, and bold them. */
-.mw-ui-container h2 {
-       border: 0;
-       font-weight: bold;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
-
-/**** Benefits column CSS to the right (if it fits) of the form. ****/
-.mw-ui-container #userloginForm {
-       float: left;
-}
-
-div.mw-createacct-benefits-container {
-       /* Keeps this column compact and close to the form, but tends to squish contents. */
-       float: left;
-}
-
-div.mw-createacct-benefits-container h2 {
-       margin-bottom: 30px;
-}
-
-.mw-number-text.icon-edits {
-       /* @embed */
-       background: url(images/icon-edits.png) no-repeat left center;
-}
-
-.mw-number-text.icon-pages {
-       /* @embed */
-       background: url(images/icon-pages.png) no-repeat left center;
-}
-
-.mw-number-text.icon-contributors {
-       /* @embed */
-       background: url(images/icon-contributors.png) no-repeat left center;
-}
-
-/* Special font for numbers in benefits*/
-div.mw-number-text h3 {
-       top: 0;
-       margin: 0;
-       padding: 0;
-       color: #252525;
-       font-family: 'Georgia', serif;
-       font-weight: normal;
-       font-size: 2.2em;
-       line-height: 1.2;
-       text-align: center;
-}
-
-/* Contains a number and explanatory text, with space for an icon */
-div.mw-number-text {
-       display: block;
-       font-size: 1.2em;
-       color: #444;
-       margin-top: 1em;
-       padding: 0 0 0 95px; /* 80px wide icon plus "margin" */
-       min-height: 75px; /* matches max icon height, ensures icon emblem is visible */
-       text-align: center;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.vform.js b/resources/mediawiki.special/mediawiki.special.createAccount.vform.js
deleted file mode 100644 (file)
index 0cbf31b..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * JavaScript for Create account form (Special:UserLogin?type=signup).
- */
-( function ( mw, $ ) {
-
-       $( document ).ready( function( $ ) {
-               var $content = $( '#mw-content-text' ),
-                       $submit = $content.find( '#wpCreateaccount' ),
-                       tabIndex,
-                       $captchaStuff,
-                       $captchaImageContainer,
-                       // JavaScript can't yet parse the message createacct-imgcaptcha-help when it
-                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
-                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
-                       helpHtml = '';
-
-               /*
-                * CAPTCHA
-                * The CAPTCHA is in a div style="captcha" at the top of the form.
-                * If it's a FancyCaptcha, then we remove it and insert it lower down,
-                * in a customized div with just what we need (e.g. no
-                * fancycaptcha-createaccount message).
-                */
-               if ( !$submit.length) {
-                       return;
-               }
-               tabIndex = $submit.prop( 'tabindex' ) - 1;
-               $captchaStuff = $content.find ( '.captcha' );
-
-               if ( $captchaStuff.length ) {
-
-                       // The FancyCaptcha has this class in the ConfirmEdit extension
-                       // after 2013-04-18.
-                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
-                       if ( $captchaImageContainer.length !== 1 ) {
-                               return;
-                       }
-
-                       $captchaStuff.remove();
-
-                       if ( helpMsg) {
-                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
-                       }
-
-                       // Insert another div before the submit button that will include the
-                       // repositioned FancyCaptcha div, an input field, and possible help.
-                       $submit.closest( 'div' )
-                               .before( [
-                       '<div>',
-                               '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
-                               '<div class="mw-createacct-captcha-container">',
-                                       '<div class="mw-createacct-captcha-and-reload" />',
-                                       '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
-                                               mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
-                                               '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
-                                               helpHtml,
-                               '</div>',
-                       '</div>'
-                                       ].join( '' )
-                               );
-
-                       // Stick the FancyCaptcha container inside our bordered and framed parents.
-                       $captchaImageContainer
-                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
-
-                       // Find the input field, add the text (if any) of the existing CAPTCHA
-                       // field (although usually it's blanked out on every redisplay),
-                       // and after it move over the hidden field that tells the CAPTCHA
-                       // what to do.
-                       $content.find( '#wpCaptchaWord' )
-                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
-                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
-               }
-
-       } );
-
-}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.css b/resources/mediawiki.special/mediawiki.special.userLogin.css
new file mode 100644 (file)
index 0000000..312f811
--- /dev/null
@@ -0,0 +1,36 @@
+/* Styles just for VForm user login */
+#mw-userlogin-help {
+       text-align: center;
+}
+
+.mw-ui-vform .mw-secure {
+       /* @embed */
+       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
+       margin: 0 0 0 1px;
+       padding: 0 0 0 11px;
+}
+
+/* The login form invites users to create an account */
+#mw-createaccount-cta {
+       width: 20em;
+       height: 10em;
+       text-align: center;
+       /* @embed */
+       background: url(images/glyph-people-large.png) no-repeat 50%;
+       margin: 0 auto;
+}
+
+#mw-createaccount-cta h3 {
+       font-size: 0.9em;
+       font-weight: normal;
+       text-align: center;
+       padding-top: 4em;
+}
+
+#mw-createaccount-join {
+       margin-left: 0.75em;
+       /* Separate from background image */
+       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
+       width: auto;
+       display: inline-block;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.signup.js b/resources/mediawiki.special/mediawiki.special.userLogin.signup.js
deleted file mode 100644 (file)
index bba4260..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/**
- * JavaScript for Special:UserLogin/signup
- */
-jQuery( document ).ready( function ( $ ) {
-       $( '#wpCreateaccountMail' )
-               .on( 'change', function() {
-                       $( '.mw-row-password' ).toggle( !$( this ).attr( 'checked' ) );
-               } )
-               .trigger( 'change' );
-} );
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.vform.css b/resources/mediawiki.special/mediawiki.special.userLogin.vform.css
deleted file mode 100644 (file)
index 312f811..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* Styles just for VForm user login */
-#mw-userlogin-help {
-       text-align: center;
-}
-
-.mw-ui-vform .mw-secure {
-       /* @embed */
-       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
-       margin: 0 0 0 1px;
-       padding: 0 0 0 11px;
-}
-
-/* The login form invites users to create an account */
-#mw-createaccount-cta {
-       width: 20em;
-       height: 10em;
-       text-align: center;
-       /* @embed */
-       background: url(images/glyph-people-large.png) no-repeat 50%;
-       margin: 0 auto;
-}
-
-#mw-createaccount-cta h3 {
-       font-size: 0.9em;
-       font-weight: normal;
-       text-align: center;
-       padding-top: 4em;
-}
-
-#mw-createaccount-join {
-       margin-left: 0.75em;
-       /* Separate from background image */
-       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
-       width: auto;
-       display: inline-block;
-}
index ac6f2a1..f93cac1 100644 (file)
                var $matrixTooltips = $( '.mw-htmlform-matrix .mw-htmlform-tooltip' );
                if ( $matrixTooltips.length ) {
                        mw.loader.using( 'jquery.tipsy', function () {
-                               $matrixTooltips.tipsy();
+                               $matrixTooltips.tipsy( { gravity: 's' } );
                        } );
                }
        } );
index d199132..883a63f 100644 (file)
@@ -259,6 +259,8 @@ var mw = ( function ( $, undefined ) {
        };
 
        /**
+        * Base library for MediaWiki.
+        *
         * @class mw
         * @alternateClassName mediaWiki
         * @singleton
@@ -302,6 +304,14 @@ var mw = ( function ( $, undefined ) {
                libs: {},
 
                /**
+                * Access container for deprecated functionality that can be moved from
+                * from their legacy location and attached to this object (e.g. a global
+                * function that is deprecated and as stop-gap can be exposed through here).
+                *
+                * This was reserved for future use but never ended up being used.
+                *
+                * @deprecated since 1.22: Let deprecated identifiers keep their original name
+                * and use mw.log#deprecate to create an access container for tracking.
                 * @property
                 */
                legacy: {},
@@ -424,11 +434,11 @@ var mw = ( function ( $, undefined ) {
                         *
                         * @private
                         * @param {string} text CSS text
-                        * @param {Mixed} [nextnode] An Element or jQuery object for an element where
-                        * the style tag should be inserted before. Otherwise appended to the `<head>`.
-                        * @return {HTMLElement} Node reference to the created `<style>` tag.
+                        * @param {HTMLElement|jQuery} [nextnode=document.head] The element where the style tag should be
+                        *  inserted before. Otherwise it will be appended to `<head>`.
+                        * @return {HTMLElement} Reference to the created `<style>` element.
                         */
-                       function addStyleTag( text, nextnode ) {
+                       function newStyleTag( text, nextnode ) {
                                var s = document.createElement( 'style' );
                                // Insert into document before setting cssText (bug 33305)
                                if ( nextnode ) {
@@ -474,8 +484,13 @@ var mw = ( function ( $, undefined ) {
                        }
 
                        /**
+                        * Add a bit of CSS text to the current browser page.
+                        *
+                        * The CSS will be appended to an existing ResourceLoader-created `<style>` tag
+                        * or create a new one based on whether the given `cssText` is safe for extension.
+                        *
                         * @param {string} [cssText=cssBuffer] If called without cssText,
-                        * the internal buffer will be inserted instead.
+                        *  the internal buffer will be inserted instead.
                         * @param {Function} [callback]
                         */
                        function addEmbeddedCSS( cssText, callback ) {
@@ -547,7 +562,7 @@ var mw = ( function ( $, undefined ) {
                                        }
                                }
 
-                               $( addStyleTag( cssText, getMarker() ) ).data( 'ResourceLoaderDynamicStyleTag', true );
+                               $( newStyleTag( cssText, getMarker() ) ).data( 'ResourceLoaderDynamicStyleTag', true );
 
                                cssCallbacks.fire().empty();
                        }
@@ -820,8 +835,7 @@ var mw = ( function ( $, undefined ) {
                         */
                        function addScript( src, callback, async ) {
                                /*jshint evil:true */
-                               var script, head,
-                                       done = false;
+                               var script, head, done;
 
                                // Using isReady directly instead of storing it locally from
                                // a $.fn.ready callback (bug 31895).
@@ -833,6 +847,7 @@ var mw = ( function ( $, undefined ) {
 
                                        // IE-safe way of getting the <head>. document.head isn't supported
                                        // in old IE, and doesn't work when in the <head>.
+                                       done = false;
                                        head = document.getElementsByTagName( 'head' )[0] || document.body;
 
                                        script = document.createElement( 'script' );
@@ -852,12 +867,12 @@ var mw = ( function ( $, undefined ) {
                                                                // Handle memory leak in IE
                                                                script.onload = script.onreadystatechange = null;
 
-                                                               // Remove the script
+                                                               // Detach the element from the document
                                                                if ( script.parentNode ) {
                                                                        script.parentNode.removeChild( script );
                                                                }
 
-                                                               // Dereference the script
+                                                               // Dereference the element from javascript
                                                                script = undefined;
 
                                                                callback();
@@ -1150,10 +1165,14 @@ var mw = ( function ( $, undefined ) {
 
                        /* Public Methods */
                        return {
-                               addStyleTag: addStyleTag,
+                               /**
+                                * @inheritdoc #newStyleTag
+                                * @method
+                                */
+                               addStyleTag: newStyleTag,
 
                                /**
-                                * Requests dependencies from server, loading and executing when things when ready.
+                                * Batch-request queued dependencies from the server.
                                 */
                                work: function () {
                                        var     reqBase, splits, maxQueryLength, q, b, bSource, bGroup, bSourceGroup,
@@ -1315,7 +1334,7 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Registers a module, letting the system know about it and its
+                                * Register a module, letting the system know about it and its
                                 * properties. Startup modules contain calls to this function.
                                 *
                                 * @param {string} module Module name
@@ -1366,9 +1385,10 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Implements a module, giving the system a course of action to take
-                                * upon loading. Results of a request for one or more modules contain
-                                * calls to this function.
+                                * Implement a module given the components that make up the module.
+                                *
+                                * When #load or #using requests one or more modules, the server
+                                * response contain calls to this function.
                                 *
                                 * All arguments are required.
                                 *
@@ -1423,7 +1443,7 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Executes a function as soon as one or more required modules are ready
+                                * Execute a function as soon as one or more required modules are ready.
                                 *
                                 * @param {string|Array} dependencies Module name or array of modules names the callback
                                 *  dependends on to be ready before executing
@@ -1460,7 +1480,7 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Loads an external script or one or more modules for future use
+                                * Load an external script or one or more modules.
                                 *
                                 * @param {string|Array} modules Either the name of a module, array of modules,
                                 *  or a URL of an external script or style
@@ -1540,7 +1560,7 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Changes the state of a module
+                                * Change the state of one or more modules.
                                 *
                                 * @param {string|Object} module module name or object of module name/state pairs
                                 * @param {string} state state name
@@ -1569,9 +1589,9 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Gets the version of a module
+                                * Get the version of a module.
                                 *
-                                * @param {string} module name of module to get version for
+                                * @param {string} module Name of module to get version for
                                 */
                                getVersion: function ( module ) {
                                        if ( registry[module] !== undefined && registry[module].version !== undefined ) {
@@ -1581,14 +1601,15 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * @deprecated since 1.18 use mw.loader.getVersion() instead
+                                * @inheritdoc #getVersion
+                                * @deprecated since 1.18 use #getVersion instead
                                 */
                                version: function () {
                                        return mw.loader.getVersion.apply( mw.loader, arguments );
                                },
 
                                /**
-                                * Gets the state of a module
+                                * Get the state of a module.
                                 *
                                 * @param {string} module name of module to get state for
                                 */
@@ -1611,7 +1632,13 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * For backwards-compatibility with Squid-cached pages. Loads mw.user
+                                * Load the `mediawiki.user` module.
+                                *
+                                * For backwards-compatibility with cached pages from before 2013 where:
+                                *
+                                * - the `mediawiki.user` module didn't exist yet
+                                * - `mw.user` was still part of mediawiki.js
+                                * - `mw.loader.go` still existed and called after `mw.loader.load()`
                                 */
                                go: function () {
                                        mw.loader.load( 'mediawiki.user' );
@@ -1781,6 +1808,8 @@ var mw = ( function ( $, undefined ) {
                        var lists = {};
 
                        /**
+                        * Create an instance of mw.hook.
+                        *
                         * @method hook
                         * @member mw
                         * @param {string} name Name of hook.
index 9fd2e5e..e8366a5 100644 (file)
@@ -1,57 +1,52 @@
-/*
- * Implementation for mediaWiki.user
+/**
+ * @class mw.user
+ * @singleton
  */
-
 ( function ( mw, $ ) {
+       var callbacks, options, tokens, user;
 
        /**
-        * User object
+        * Gets the current user's groups or rights.
+        *
+        * @private
+        * @param {string} info One of 'groups' or 'rights'
+        * @param {Function} callback
         */
-       function User( options, tokens ) {
-               var user, callbacks;
-
-               /* Private Members */
-
-               user = this;
-               callbacks = {};
-
-               /**
-                * Gets the current user's groups or rights.
-                * @param {String} info: One of 'groups' or 'rights'.
-                * @param {Function} callback
-                */
-               function getUserInfo( info, callback ) {
-                       var api;
-                       if ( callbacks[info] ) {
-                               callbacks[info].add( callback );
-                               return;
-                       }
-                       callbacks.rights = $.Callbacks('once memory');
-                       callbacks.groups = $.Callbacks('once memory');
+       function getUserInfo( info, callback ) {
+               var api;
+               if ( callbacks[info] ) {
                        callbacks[info].add( callback );
-                       api = new mw.Api();
-                       api.get( {
-                               action: 'query',
-                               meta: 'userinfo',
-                               uiprop: 'rights|groups'
-                       } ).always( function ( data ) {
-                               var rights, groups;
-                               if ( data.query && data.query.userinfo ) {
-                                       rights = data.query.userinfo.rights;
-                                       groups = data.query.userinfo.groups;
-                               }
-                               callbacks.rights.fire( rights || [] );
-                               callbacks.groups.fire( groups || [] );
-                       } );
+                       return;
                }
+               callbacks.rights = $.Callbacks('once memory');
+               callbacks.groups = $.Callbacks('once memory');
+               callbacks[info].add( callback );
+               api = new mw.Api();
+               api.get( {
+                       action: 'query',
+                       meta: 'userinfo',
+                       uiprop: 'rights|groups'
+               } ).always( function ( data ) {
+                       var rights, groups;
+                       if ( data.query && data.query.userinfo ) {
+                               rights = data.query.userinfo.rights;
+                               groups = data.query.userinfo.groups;
+                       }
+                       callbacks.rights.fire( rights || [] );
+                       callbacks.groups.fire( groups || [] );
+               } );
+       }
 
-               /* Public Members */
-
-               this.options = options || new mw.Map();
+       callbacks = {};
 
-               this.tokens = tokens || new mw.Map();
+       // Extend the skeleton mw.user from mediawiki.js
+       // This is kind of ugly but we're stuck with this for b/c reasons
+       options = mw.user.options || new mw.Map();
+       tokens = mw.user.tokens || new mw.Map();
 
-               /* Public Methods */
+       mw.user = user = {
+               options: options,
+               tokens: tokens,
 
                /**
                 * Generates a random user session ID (32 alpha-numeric characters).
@@ -59,9 +54,9 @@
                 * This information would potentially be stored in a cookie to identify a user during a
                 * session or series of sessions. Its uniqueness should not be depended on.
                 *
-                * @return String: Random set of 32 alpha-numeric characters
+                * @return {string} Random set of 32 alpha-numeric characters
                 */
-               this.generateRandomSessionId = function () {
+               generateRandomSessionId: function () {
                        var i, r,
                                id = '',
                                seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
                                id += seed.substring( r, r + 1 );
                        }
                        return id;
-               };
+               },
 
                /**
                 * Gets the current user's name.
                 *
-                * @return Mixed: User name string or null if users is anonymous
+                * @return {string|null} User name string or null if users is anonymous
                 */
-               this.getName = function () {
+               getName: function () {
                        return mw.config.get( 'wgUserName' );
-               };
+               },
 
                /**
-                * @deprecated since 1.20 use mw.user.getName() instead
+                * @inheritdoc #getName
+                * @deprecated since 1.20 use #getName instead
                 */
-               this.name = function () {
-                       return this.getName();
-               };
+               name: function () {
+                       return user.getName();
+               },
 
                /**
                 * Get date user registered, if available.
                 *
-                * @return {Date|false|null} date user registered, or false for anonymous users, or
+                * @return {Date|boolean|null} Date user registered, or false for anonymous users, or
                 *  null when data is not available
                 */
-               this.getRegistration = function () {
+               getRegistration: function () {
                        var registration = mw.config.get( 'wgUserRegistration' );
-                       if ( this.isAnon() ) {
+                       if ( user.isAnon() ) {
                                return false;
                        } else if ( registration === null ) {
                                // Information may not be available if they signed up before
                        } else {
                                return new Date( registration );
                        }
-               };
+               },
 
                /**
                 * Checks if the current user is anonymous.
                 *
-                * @return Boolean
+                * @return {boolean}
                 */
-               this.isAnon = function () {
+               isAnon: function () {
                        return user.getName() === null;
-               };
+               },
 
                /**
-                * @deprecated since 1.20 use mw.user.isAnon() instead
+                * @inheritdoc #isAnon
+                * @deprecated since 1.20 use #isAnon instead
                 */
-               this.anonymous = function () {
+               anonymous: function () {
                        return user.isAnon();
-               };
+               },
 
                /**
-                * Gets a random session ID automatically generated and kept in a cookie.
+                * Gets a random ID automatically generated and stored in a session cookie.
                 *
                 * This ID is ephemeral for everyone, staying in their browser only until they close
                 * their browser.
                 *
-                * @return String: User name or random session ID
+                * @return {string} Random session ID
                 */
-               this.sessionId = function () {
+               sessionId: function () {
                        var sessionId = $.cookie( 'mediaWiki.user.sessionId' );
                        if ( typeof sessionId === 'undefined' || sessionId === null ) {
                                sessionId = user.generateRandomSessionId();
                                $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': null, 'path': '/' } );
                        }
                        return sessionId;
-               };
+               },
 
                /**
                 * Gets the current user's name or the session ID
                 *
                 * @return {string} User name or random session ID
                 */
-               this.id = function () {
+               id: function () {
                        var name = user.getName();
                        if ( name ) {
                                return name;
                        }
                        return user.sessionId();
-               };
+               },
 
                /**
                 * Gets the user's bucket, placing them in one at random based on set odds if needed.
                 *
-                * @param key String: Name of bucket
-                * @param options Object: Bucket configuration options
-                * @param options.buckets Object: List of bucket-name/relative-probability pairs (required,
-                * must have at least one pair)
-                * @param options.version Number: Version of bucket test, changing this forces rebucketing
-                * (optional, default: 0)
-                * @param options.expires Number: Length of time (in days) until the user gets rebucketed
-                * (optional, default: 30)
-                * @return String: Bucket name - the randomly chosen key of the options.buckets object
-                *
-                * @example
                 *     mw.user.bucket( 'test', {
                 *         'buckets': { 'ignored': 50, 'control': 25, 'test': 25 },
                 *         'version': 1,
                 *         'expires': 7
                 *     } );
+                *
+                * @param {string} key Name of bucket
+                * @param {Object} options Bucket configuration options
+                * @param {Object} options.buckets List of bucket-name/relative-probability pairs (required,
+                *  must have at least one pair)
+                * @param {number} options.version Version of bucket test, changing this forces rebucketing
+                *  (optional, default: 0)
+                * @param {number} options.expires Length of time (in days) until the user gets rebucketed
+                *  (optional, default: 30)
+                * @return {string} Bucket name - the randomly chosen key of the options.buckets object
                 */
-               this.bucket = function ( key, options ) {
+               bucket: function ( key, options ) {
                        var cookie, parts, version, bucket,
                                range, k, rand, total;
 
                                );
                        }
                        return bucket;
-               };
+               },
 
                /**
                 * Gets the current user's groups.
+                *
+                * @param {Function} callback
                 */
-               this.getGroups = function ( callback ) {
+               getGroups: function ( callback ) {
                        getUserInfo( 'groups', callback );
-               };
+               },
 
                /**
                 * Gets the current user's rights.
+                *
+                * @param {Function} callback
                 */
-               this.getRights = function ( callback ) {
+               getRights: function ( callback ) {
                        getUserInfo( 'rights', callback );
-               };
-       }
-
-       // Extend the skeleton mw.user from mediawiki.js
-       // This is kind of ugly but we're stuck with this for b/c reasons
-       mw.user = new User( mw.user.options, mw.user.tokens );
+               }
+       };
 
 }( mediaWiki, jQuery ) );
index d766b64..5ae8843 100644 (file)
@@ -541,13 +541,12 @@ class CologneBlueTemplate extends BaseTemplate {
                        $s .= wfMessage( 'qbfind' )->text() . ": ";
                }
 
-               $s .= "<input type='text' class=\"mw-searchInput\" name=\"search\" size=\"14\" value=\""
-                       . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />"
-                       . ( $which == 'footer' ? " " : "<br />" )
-                       . "<input type='submit' class=\"searchButton\" name=\"go\" value=\"" . wfMessage( 'searcharticle' )->escaped() . "\" />";
+               $s .= $this->makeSearchInput( array( 'class' => 'mw-searchInput', 'type' => 'text', 'size' => '14' ) );
+               $s .= ( $which == 'footer' ? " " : "<br />" );
+               $s .= $this->makeSearchButton( 'go', array( 'class' => 'searchButton' ) );
 
                if ( $wgUseTwoButtonsSearchForm ) {
-                       $s .= " <input type='submit' class=\"searchButton\" name=\"fulltext\" value=\"" . wfMessage( 'searchbutton' )->escaped() . "\" />\n";
+                       $s .= $this->makeSearchButton( 'fulltext', array( 'class' => 'searchButton' ) );
                } else {
                        $s .= '<div><a href="' . $action . '" rel="search">' . wfMessage( 'powersearch-legend' )->escaped() . "</a></div>\n";
                }
index 349638a..7bdfca5 100644 (file)
@@ -135,10 +135,6 @@ h1 {
        line-height: 21pt;
 }
 
-h1 .editsection {
-       font-size: 55.6%;
-}
-
 h1#firstHeading {
        padding-bottom: 0;
        margin-bottom: 0;
@@ -263,6 +259,7 @@ input.mw-searchInput {
        font-size: small;
        margin-right: 8px;
        text-align: right;
+       padding-left: 140px;
 }
 /* Override text justification (user preference), see bug 31990 */
 #linkcollection * {
index a1e809d..9feb973 100644 (file)
@@ -86,15 +86,9 @@ h6 {
 h1 {
        font-size: 188%;
 }
-h1 .editsection {
-       font-size: 53%;
-}
 h2 {
        font-size: 150%;
 }
-h2 .editsection {
-       font-size: 67%;
-}
 h3,
 h4,
 h5,
@@ -105,29 +99,15 @@ h6 {
 h3 {
        font-size: 132%;
 }
-h3 .editsection {
-       font-size: 76%;
-       font-weight: normal;
-}
 h4 {
        font-size: 116%;
 }
-h4 .editsection {
-       font-size: 86%;
-       font-weight: normal; }
 h5 {
-       font-size: 105%;
-}
-h5 .editsection {
-       font-weight: normal;
+       font-size: 108%;
 }
 h6 {
        font-size: 100%;
 }
-h6 .editsection {
-       font-size: 125%;
-       font-weight: normal;
-}
 
 /* Some space under the headers in the content area */
 h1,
index 9ea89d9..4bb99ae 100644 (file)
@@ -112,7 +112,6 @@ div.top,
 div#column-one,
 #colophon,
 .mw-editsection,
-.editsection,
 .toctoggle,
 .tochidden,
 div#f-poweredbyico,
index fa86aee..2a9c25f 100644 (file)
@@ -20,16 +20,6 @@ h1, h2, h3, h4, h5, h6 {
 
 /* Now the custom parts */
 
-/* Make edit sections (which are inside h# tags) normal-sized */
-.editsection {
-       font-weight: normal;
-}
-h1 .editsection { font-size: 50%; }
-h2 .editsection { font-size: 66.7%; }
-h3 .editsection { font-size: 85.5%; }
-h5 .editsection { font-size: 120%; }
-h6 .editsection { font-size: 133%; }
-
 #footer { clear: both }
 /* images */
 /* @noflip */
index d946ce2..4c68401 100644 (file)
@@ -127,21 +127,6 @@ span.texhtml {
        cursor: pointer;
 }
 
-/* Edit section links */
-/* Correct directionality when page dir is different from site/user dir */
-/* @noflip */
-.mw-content-ltr .editsection,
-.mw-content-rtl .mw-content-ltr .editsection {
-       float: right;
-       margin-left: 5px;
-}
-/* @noflip */
-.mw-content-rtl .editsection,
-.mw-content-ltr .mw-content-rtl .editsection {
-       float: left;
-       margin-right: 5px;
-}
-
 /**
  * File description page
  */
@@ -1121,7 +1106,8 @@ table.floatleft {
        z-index: 99;
 }
 
-.mw-editsection, .editsection, .toctoggle {
+.mw-editsection,
+.toctoggle {
        -moz-user-select: none;
        -webkit-user-select: none;
        -ms-user-select: none;
index f5650b5..dc236ea 100644 (file)
@@ -33,7 +33,6 @@ a.stub {
 #footer,
 #siteNotice,
 .mw-editsection,
-.editsection,
 .toctoggle {
        display: none;
 }
index 7e7758a..f222028 100644 (file)
@@ -340,10 +340,6 @@ a.new:visited {
        color: #a55858;
 }
 
-span.editsection {
-       font-size: small;
-}
-
 h1, h2 {
        border-bottom: solid 1px #003366;
 }
index 6e0f8b3..e97bbdb 100644 (file)
@@ -4,7 +4,6 @@
 #jump-to-nav,
 #footer,
 .mw-editsection,
-span.editsection,
 .noprint {
        display: none;
 }
diff --git a/skins/vector/collapsibleTabs.js b/skins/vector/collapsibleTabs.js
new file mode 100644 (file)
index 0000000..eb84325
--- /dev/null
@@ -0,0 +1,210 @@
+/**
+ * Collapsible tabs jQuery Plugin
+ */
+( function ( $ ) {
+       var rtl = $( 'html' ).attr( 'dir' ) === 'rtl';
+       $.fn.collapsibleTabs = function ( options ) {
+               // return if the function is called on an empty jquery object
+               if ( !this.length ) {
+                       return this;
+               }
+               // Merge options into the defaults
+               var $settings = $.extend( {}, $.collapsibleTabs.defaults, options );
+
+               this.each( function () {
+                       var $el = $( this );
+                       // add the element to our array of collapsible managers
+                       $.collapsibleTabs.instances = ( $.collapsibleTabs.instances.length === 0 ?
+                               $el : $.collapsibleTabs.instances.add( $el ) );
+                       // attach the settings to the elements
+                       $el.data( 'collapsibleTabsSettings', $settings );
+                       // attach data to our collapsible elements
+                       $el.children( $settings.collapsible ).each( function () {
+                               $.collapsibleTabs.addData( $( this ) );
+                       } );
+               } );
+
+               // if we haven't already bound our resize hanlder, bind it now
+               if ( !$.collapsibleTabs.boundEvent ) {
+                       $( window )
+                               .delayedBind( '500', 'resize', function ( ) {
+                                       $.collapsibleTabs.handleResize();
+                               } );
+               }
+               // call our resize handler to setup the page
+               $.collapsibleTabs.handleResize();
+               return this;
+       };
+       /**
+        * Returns the amount of horizontal distance between the two tabs groups
+        * (#left-navigation and #right-navigation), in pixels. If negative, this
+        * means that the tabs overlap, and the value is the width of overlapping
+        * parts.
+        *
+        * Used in default expandCondition and collapseCondition.
+        *
+        * @return {Numeric} distance/overlap in pixels
+        */
+       function calculateTabDistance() {
+               var $leftTab, $rightTab, leftEnd, rightStart;
+
+               // In RTL, #right-navigation is actually on the left and vice versa.
+               // Hooray for descriptive naming.
+               if ( !rtl ) {
+                       $leftTab = $( '#left-navigation' );
+                       $rightTab = $( '#right-navigation' );
+               } else {
+                       $leftTab = $( '#right-navigation' );
+                       $rightTab = $( '#left-navigation' );
+               }
+
+               leftEnd = $leftTab.offset().left + $leftTab.width();
+               rightStart = $rightTab.offset().left;
+
+               return rightStart - leftEnd;
+       }
+       $.collapsibleTabs = {
+               instances: [],
+               boundEvent: null,
+               defaults: {
+                       expandedContainer: '#p-views ul',
+                       collapsedContainer: '#p-cactions ul',
+                       collapsible: 'li.collapsible',
+                       shifting: false,
+                       expandCondition: function ( eleWidth ) {
+                               // If there's at least eleWidth pixels free space, expand.
+                               return calculateTabDistance() >= eleWidth;
+                       },
+                       collapseCondition: function () {
+                               // If there's an overlap, collapse.
+                               return calculateTabDistance() < 0;
+                       }
+               },
+               addData: function ( $collapsible ) {
+                       var $settings = $collapsible.parent().data( 'collapsibleTabsSettings' );
+                       if ( $settings !== null ) {
+                               $collapsible.data( 'collapsibleTabsSettings', {
+                                       expandedContainer: $settings.expandedContainer,
+                                       collapsedContainer: $settings.collapsedContainer,
+                                       expandedWidth: $collapsible.width(),
+                                       prevElement: $collapsible.prev()
+                               } );
+                       }
+               },
+               getSettings: function ( $collapsible ) {
+                       var $settings = $collapsible.data( 'collapsibleTabsSettings' );
+                       if ( $settings === undefined ) {
+                               $.collapsibleTabs.addData( $collapsible );
+                               $settings = $collapsible.data( 'collapsibleTabsSettings' );
+                       }
+                       return $settings;
+               },
+               /**
+                * @param {jQuery.Event} e
+                */
+               handleResize: function () {
+                       $.collapsibleTabs.instances.each( function () {
+                               var $el = $( this ),
+                                       data = $.collapsibleTabs.getSettings( $el );
+
+                               if ( data.shifting ) {
+                                       return;
+                               }
+
+                               // if the two navigations are colliding
+                               if ( $el.children( data.collapsible ).length > 0 && data.collapseCondition() ) {
+
+                                       $el.trigger( 'beforeTabCollapse' );
+                                       // move the element to the dropdown menu
+                                       $.collapsibleTabs.moveToCollapsed( $el.children( data.collapsible + ':last' ) );
+                               }
+
+                               // if there are still moveable items in the dropdown menu,
+                               // and there is sufficient space to place them in the tab container
+                               if ( $( data.collapsedContainer + ' ' + data.collapsible ).length > 0 &&
+                                               data.expandCondition( $.collapsibleTabs.getSettings( $( data.collapsedContainer ).children(
+                                                               data.collapsible + ':first' ) ).expandedWidth ) ) {
+                                       //move the element from the dropdown to the tab
+                                       $el.trigger( 'beforeTabExpand' );
+                                       $.collapsibleTabs
+                                               .moveToExpanded( data.collapsedContainer + ' ' + data.collapsible + ':first' );
+                               }
+                       });
+               },
+               moveToCollapsed: function ( ele ) {
+                       var data, expContainerSettings, target,
+                               $moving = $( ele );
+
+                       data = $.collapsibleTabs.getSettings( $moving );
+                       if ( !data ) {
+                               return;
+                       }
+                       expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+                       if ( !expContainerSettings ) {
+                               return;
+                       }
+                       expContainerSettings.shifting = true;
+
+                       // Remove the element from where it's at and put it in the dropdown menu
+                       target = data.collapsedContainer;
+                       $moving.css( 'position', 'relative' )
+                               .css( ( rtl ? 'left' : 'right' ), 0 )
+                               .animate( { width: '1px' }, 'normal', function () {
+                                       var data, expContainerSettings;
+                                       $( this ).hide();
+                                       // add the placeholder
+                                       $( '<span class="placeholder" style="display: none;"></span>' ).insertAfter( this );
+                                       // XXX: 'data' is undefined here, should the 'data' from the outer scope have
+                                       // a different name?
+                                       $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );
+                                       $( this ).attr( 'style', 'display: list-item;' );
+                                       data = $.collapsibleTabs.getSettings( $( ele ) );
+                                       if ( data ) {
+                                               expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+                                               if ( expContainerSettings ) {
+                                                       expContainerSettings.shifting = false;
+                                                       $.collapsibleTabs.handleResize();
+                                               }
+                                       }
+                               } );
+               },
+               moveToExpanded: function ( ele ) {
+                       var data, expContainerSettings, $target, expandedWidth,
+                               $moving = $( ele );
+
+                       data = $.collapsibleTabs.getSettings( $moving );
+                       if ( !data ) {
+                               return;
+                       }
+                       expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+                       if ( !expContainerSettings ) {
+                               return;
+                       }
+                       expContainerSettings.shifting = true;
+
+                       // grab the next appearing placeholder so we can use it for replacing
+                       $target = $( data.expandedContainer ).find( 'span.placeholder:first' );
+                       expandedWidth = data.expandedWidth;
+                       $moving.css( 'position', 'relative' ).css( ( rtl ? 'right' : 'left' ), 0 ).css( 'width', '1px' );
+                       $target.replaceWith(
+                               $moving
+                               .detach()
+                               .css( 'width', '1px' )
+                               .data( 'collapsibleTabsSettings', data )
+                               .animate( { width: expandedWidth + 'px' }, 'normal', function () {
+                                       $( this ).attr( 'style', 'display: block;' );
+                                       var data, expContainerSettings;
+                                       data = $.collapsibleTabs.getSettings( $( this ) );
+                                       if ( data ) {
+                                               expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+                                               if ( expContainerSettings ) {
+                                                       expContainerSettings.shifting = false;
+                                                       $.collapsibleTabs.handleResize();
+                                               }
+                                       }
+                               } )
+                       );
+               }
+       };
+
+}( jQuery ) );
diff --git a/skins/vector/images/arrow-down-focus-icon.svg b/skins/vector/images/arrow-down-focus-icon.svg
new file mode 100644 (file)
index 0000000..f2edf26
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="22"
+   height="16"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-1036.3622)"
+     id="layer1">
+    <path
+       d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+       transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
+       id="path2985"
+       style="fill:#929292;fill-opacity:1;stroke:none" />
+  </g>
+</svg>
diff --git a/skins/vector/images/arrow-down-icon.svg b/skins/vector/images/arrow-down-icon.svg
new file mode 100644 (file)
index 0000000..9218ff2
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="22"
+   height="16"
+   id="svg2">
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(0,-1036.3622)"
+     id="layer1">
+    <path
+       d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
+       transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
+       id="path2985"
+       style="fill:#797979;fill-opacity:1;stroke:none" />
+  </g>
+</svg>
index eb4a4dd..222531c 100644 (file)
@@ -219,6 +219,12 @@ div.vectorMenu {
        float: left;
        /* @embed */
        background-image: url(images/arrow-down-icon.png);
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG) */
+       /* @embed */
+       background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-down-icon.svg);
+       /* @embed */
+       background-image: linear-gradient(transparent, transparent), url(images/arrow-down-icon.svg);
        background-position: 100% 60%;
        background-repeat: no-repeat;
        cursor: pointer;
@@ -226,6 +232,12 @@ div.vectorMenu {
 div.vectorMenuFocus {
        /* @embed */
        background-image: url(images/arrow-down-focus-icon.png);
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG) */
+       /* @embed */
+       background-image: -webkit-linear-gradient(transparent, transparent), url(images/arrow-down-focus-icon.svg);
+       /* @embed */
+       background-image: linear-gradient(transparent, transparent), url(images/arrow-down-focus-icon.svg);
        background-position: 100% 60%;
 }
 /* @noflip */
@@ -688,10 +700,6 @@ div#content {
        font-size: 0.8em;
 }
 
-.editsection {
-       float: right;
-}
-
 ul {
        list-style-type: disc;
        /* @embed */
index 4427d9a..fb1f212 100644 (file)
@@ -18,4 +18,32 @@ jQuery( function ( $ ) {
                                $el.removeClass( 'vectorMenuFocus' );
                        } );
        } );
+
+       /**
+        * Collapsible tabs for Vector
+        */
+       var $cactions = $( '#p-cactions' );
+
+       // Bind callback functions to animate our drop down menu in and out
+       // and then call the collapsibleTabs function on the menu
+       $( '#p-views ul' )
+               .bind( 'beforeTabCollapse', function () {
+                       // If the dropdown was hidden, show it
+                       if ( $cactions.hasClass( 'emptyPortlet' ) ) {
+                               $cactions
+                                       .removeClass( 'emptyPortlet' )
+                                       .find( 'h3, h5' )
+                                               .css( 'width', '1px' ).animate( { 'width': '24px' }, 390 );
+                       }
+               } )
+               .bind( 'beforeTabExpand', function () {
+                       // If we're removing the last child node right now, hide the dropdown
+                       if ( $cactions.find( 'li' ).length === 1 ) {
+                               $cactions.find( 'h3, h5' ).animate( { 'width': '1px' }, 390, function () {
+                                       $( this ).attr( 'style', '' )
+                                               .parent().addClass( 'emptyPortlet' );
+                               });
+                       }
+               } )
+               .collapsibleTabs();
 } );
diff --git a/tests/RunSeleniumTests.php b/tests/RunSeleniumTests.php
deleted file mode 100644 (file)
index c25dff7..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-#!/usr/bin/env php
-<?php
-/**
- * @file
- * @ingroup Maintenance
- * @copyright Copyright © Wikimedia Deuschland, 2009
- * @author Hallo Welt! Medienwerkstatt GmbH
- * @author Markus Glaser, Dan Nessett, Priyanka Dhanda
- * initial idea by Daniel Kinzler
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-if ( PHP_SAPI != 'cli' ) {
-       die( "Run me from the command line please.\n" );
-}
-
-define( 'SELENIUMTEST', true );
-
-require __DIR__ . '/../maintenance/Maintenance.php';
-
-require_once 'PHPUnit/Runner/Version.php';
-if ( version_compare( PHPUnit_Runner_Version::id(), '3.5.0', '>=' ) ) {
-       # PHPUnit 3.5.0 introduced a nice autoloader based on class name
-       require_once 'PHPUnit/Autoload.php';
-} else {
-       # Keep the old pre PHPUnit 3.5.0 behavior for compatibility
-       require_once 'PHPUnit/TextUI/Command.php';
-}
-
-require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
-include_once 'PHPUnit/Util/Log/JUnit.php';
-
-require_once __DIR__ . "/selenium/SeleniumServerManager.php";
-
-class SeleniumTester extends Maintenance {
-       protected $selenium;
-       protected $serverManager;
-       protected $seleniumServerExecPath;
-
-       public function __construct() {
-               parent::__construct();
-               $this->mDescription = "Selenium Test Runner. For documentation, visit http://www.mediawiki.org/wiki/SeleniumFramework";
-               $this->addOption( 'port', 'Port used by selenium server. Default: 4444', false, true );
-               $this->addOption( 'host', 'Host selenium server. Default: $wgServer . $wgScriptPath', false, true );
-               $this->addOption( 'testBrowser', 'The browser used during testing. Default: firefox', false, true );
-               $this->addOption( 'wikiUrl', 'The Mediawiki installation to point to. Default: http://localhost', false, true );
-               $this->addOption( 'username', 'The login username for sunning tests. Default: empty', false, true );
-               $this->addOption( 'userPassword', 'The login password for running tests. Default: empty', false, true );
-               $this->addOption( 'seleniumConfig', 'Location of the selenium config file. Default: empty', false, true );
-               $this->addOption( 'list-browsers', 'List the available browsers.' );
-               $this->addOption( 'verbose', 'Be noisier.' );
-               $this->addOption( 'startserver', 'Start Selenium Server (on localhost) before the run.' );
-               $this->addOption( 'stopserver', 'Stop Selenium Server (on localhost) after the run.' );
-               $this->addOption( 'jUnitLogFile', 'Log results in a specified JUnit log file. Default: empty', false, true );
-               $this->addOption( 'runAgainstGrid', 'The test will be run against a Selenium Grid. Default: false.', false, true );
-               $this->deleteOption( 'dbpass' );
-               $this->deleteOption( 'dbuser' );
-               $this->deleteOption( 'globals' );
-               $this->deleteOption( 'wiki' );
-       }
-
-       public function listBrowsers() {
-               $desc = "Available browsers:\n";
-
-               foreach ( $this->selenium->getAvailableBrowsers() as $k => $v ) {
-                       $desc .= "  $k => $v\n";
-               }
-
-               echo $desc;
-       }
-
-       protected function startServer() {
-               if ( $this->seleniumServerExecPath == '' ) {
-                       die( "The selenium server exec path is not set in " .
-                               "selenium_settings.ini. Cannot start server \n" .
-                               "as requested - terminating RunSeleniumTests\n" );
-               }
-               $this->serverManager = new SeleniumServerManager( 'true',
-                       $this->selenium->getPort(),
-                       $this->seleniumServerExecPath );
-               switch ( $this->serverManager->start() ) {
-                       case 'started':
-                               break;
-                       case 'failed':
-                               die( "Unable to start the Selenium Server - " .
-                                       "terminating RunSeleniumTests\n" );
-                       case 'running':
-                               echo "Warning: The Selenium Server is " .
-                                       "already running\n";
-                               break;
-               }
-
-               return;
-       }
-
-       protected function stopServer() {
-               if ( !isset( $this->serverManager ) ) {
-                       echo "Warning: Request to stop Selenium Server, but it was " .
-                               "not stared by RunSeleniumTests\n" .
-                               "RunSeleniumTests cannot stop a Selenium Server it " .
-                               "did not start\n";
-               } else {
-                       switch ( $this->serverManager->stop() ) {
-                               case 'stopped':
-                                       break;
-                               case 'failed':
-                                       echo "unable to stop the Selenium Server\n";
-                       }
-               }
-               return;
-       }
-
-       protected function runTests( $seleniumTestSuites = array() ) {
-               $result = new PHPUnit_Framework_TestResult;
-               $result->addListener( new SeleniumTestListener( $this->selenium->getLogger() ) );
-               if ( $this->selenium->getJUnitLogFile() ) {
-                       $jUnitListener = new PHPUnit_Util_Log_JUnit( $this->selenium->getJUnitLogFile(), true );
-                       $result->addListener( $jUnitListener );
-               }
-
-               foreach ( $seleniumTestSuites as $testSuiteName => $testSuiteFile ) {
-                       require $testSuiteFile;
-                       $suite = new $testSuiteName();
-                       $suite->setName( $testSuiteName );
-                       $suite->addTests();
-
-                       try {
-                               $suite->run( $result );
-                       } catch ( Testing_Selenium_Exception $e ) {
-                               $suite->tearDown();
-                               throw new MWException( $e->getMessage() );
-                       }
-               }
-
-               if ( $this->selenium->getJUnitLogFile() ) {
-                       $jUnitListener->flush();
-               }
-       }
-
-       public function execute() {
-               global $wgServer, $wgScriptPath, $wgHooks;
-
-               $seleniumSettings = array();
-               $seleniumBrowsers = array();
-               $seleniumTestSuites = array();
-
-               $configFile = $this->getOption( 'seleniumConfig', '' );
-               if ( strlen( $configFile ) > 0 ) {
-                       $this->output( "Using Selenium Configuration file: " . $configFile . "\n" );
-                       SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                               $seleniumBrowsers,
-                               $seleniumTestSuites,
-                               $configFile );
-               } elseif ( !isset( $wgHooks['SeleniumSettings'] ) ) {
-                       $this->output( "No command line, configuration file or configuration hook found.\n" );
-                       SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                               $seleniumBrowsers,
-                               $seleniumTestSuites
-                       );
-               } else {
-                       $this->output( "Using 'SeleniumSettings' hook for configuration.\n" );
-                       wfRunHooks( 'SeleniumSettings', array( $seleniumSettings,
-                               $seleniumBrowsers,
-                               $seleniumTestSuites ) );
-               }
-
-               // State for starting/stopping the Selenium server has nothing to do with the Selenium
-               // class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but
-               // the Maintenance class does not have a setOption()
-               if ( !isset( $seleniumSettings['startserver'] ) ) {
-                       $this->getOption( 'startserver', true );
-               }
-               if ( !isset( $seleniumSettings['stopserver'] ) ) {
-                       $this->getOption( 'stopserver', true );
-               }
-               if ( !isset( $seleniumSettings['seleniumserverexecpath'] ) ) {
-                       $seleniumSettings['seleniumserverexecpath'] = '';
-               }
-               $this->seleniumServerExecPath = $seleniumSettings['seleniumserverexecpath'];
-
-               //set reasonable defaults if we did not find the settings
-               if ( !isset( $seleniumBrowsers ) ) {
-                       $seleniumBrowsers = array( 'firefox' => '*firefox' );
-               }
-               if ( !isset( $seleniumSettings['host'] ) ) {
-                       $seleniumSettings['host'] = $wgServer . $wgScriptPath;
-               }
-               if ( !isset( $seleniumSettings['port'] ) ) {
-                       $seleniumSettings['port'] = '4444';
-               }
-               if ( !isset( $seleniumSettings['wikiUrl'] ) ) {
-                       $seleniumSettings['wikiUrl'] = 'http://localhost';
-               }
-               if ( !isset( $seleniumSettings['username'] ) ) {
-                       $seleniumSettings['username'] = '';
-               }
-               if ( !isset( $seleniumSettings['userPassword'] ) ) {
-                       $seleniumSettings['userPassword'] = '';
-               }
-               if ( !isset( $seleniumSettings['testBrowser'] ) ) {
-                       $seleniumSettings['testBrowser'] = 'firefox';
-               }
-               if ( !isset( $seleniumSettings['jUnitLogFile'] ) ) {
-                       $seleniumSettings['jUnitLogFile'] = false;
-               }
-               if ( !isset( $seleniumSettings['runAgainstGrid'] ) ) {
-                       $seleniumSettings['runAgainstGrid'] = false;
-               }
-
-               // Setup Selenium class
-               $this->selenium = new Selenium();
-               $this->selenium->setAvailableBrowsers( $seleniumBrowsers );
-               $this->selenium->setRunAgainstGrid( $this->getOption( 'runAgainstGrid', $seleniumSettings['runAgainstGrid'] ) );
-               $this->selenium->setUrl( $this->getOption( 'wikiUrl', $seleniumSettings['wikiUrl'] ) );
-               $this->selenium->setBrowser( $this->getOption( 'testBrowser', $seleniumSettings['testBrowser'] ) );
-               $this->selenium->setPort( $this->getOption( 'port', $seleniumSettings['port'] ) );
-               $this->selenium->setHost( $this->getOption( 'host', $seleniumSettings['host'] ) );
-               $this->selenium->setUser( $this->getOption( 'username', $seleniumSettings['username'] ) );
-               $this->selenium->setPass( $this->getOption( 'userPassword', $seleniumSettings['userPassword'] ) );
-               $this->selenium->setVerbose( $this->hasOption( 'verbose' ) );
-               $this->selenium->setJUnitLogFile( $this->getOption( 'jUnitLogFile', $seleniumSettings['jUnitLogFile'] ) );
-
-               if ( $this->hasOption( 'list-browsers' ) ) {
-                       $this->listBrowsers();
-                       exit( 0 );
-               }
-               if ( $this->hasOption( 'startserver' ) ) {
-                       $this->startServer();
-               }
-
-               $logger = new SeleniumTestConsoleLogger;
-               $this->selenium->setLogger( $logger );
-
-               $this->runTests( $seleniumTestSuites );
-
-               if ( $this->hasOption( 'stopserver' ) ) {
-                       $this->stopServer();
-               }
-       }
-}
-
-$maintClass = "SeleniumTester";
-
-require_once RUN_MAINTENANCE_IF_MAIN;
index 9f8887b..d7237f7 100644 (file)
@@ -73,6 +73,7 @@ $wgAutoloadClasses += array(
 
        # tests/phpunit/includes/parser
        'NewParserTest' => "$testDir/phpunit/includes/parser/NewParserTest.php",
+       'MediaWikiParserTest' => "$testDir/phpunit/includes/parser/MediaWikiParserTest.php",
 
        # tests/phpunit/includes/libs
        'GenericArrayObjectTest' => "$testDir/phpunit/includes/libs/GenericArrayObjectTest.php",
@@ -85,6 +86,8 @@ $wgAutoloadClasses += array(
        'MockFSFile' => "$testDir/phpunit/mocks/filebackend/MockFSFile.php",
        'MockFileBackend' => "$testDir/phpunit/mocks/filebackend/MockFileBackend.php",
        'MockBitmapHandler' => "$testDir/phpunit/mocks/media/MockBitmapHandler.php",
+       'MockImageHandler' => "$testDir/phpunit/mocks/media/MockBitmapHandler.php",
+       'MockSvgHandler' => "$testDir/phpunit/mocks/media/MockBitmapHandler.php",
 
        # tests/phpunit/languages
        'LanguageClassesTestCase' => "$testDir/phpunit/languages/LanguageClassesTestCase.php",
@@ -95,15 +98,4 @@ $wgAutoloadClasses += array(
        # tests/parser
        'ParserTest' => "$testDir/parser/parserTest.inc",
        'ParserTestParserHook' => "$testDir/parser/parserTestsParserHook.php",
-
-       # tests/selenium
-       'Selenium' => "$testDir/selenium/Selenium.php",
-       'SeleniumLoader' => "$testDir/selenium/SeleniumLoader.php",
-       'SeleniumTestCase' => "$testDir/selenium/SeleniumTestCase.php",
-       'SeleniumTestConsoleLogger' => "$testDir/selenium/SeleniumTestConsoleLogger.php",
-       'SeleniumTestConstants' => "$testDir/selenium/SeleniumTestConstants.php",
-       'SeleniumTestHTMLLogger' => "$testDir/selenium/SeleniumTestHTMLLogger.php",
-       'SeleniumTestListener' => "$testDir/selenium/SeleniumTestListener.php",
-       'SeleniumTestSuite' => "$testDir/selenium/SeleniumTestSuite.php",
-       'SeleniumConfig' => "$testDir/selenium/SeleniumConfig.php",
 );
index 972ad8f..4efd708 100644 (file)
@@ -1,6 +1,8 @@
 <?php
 /**
- * Helper code for the MediaWiki parser test suite.
+ * Helper code for the MediaWiki parser test suite. Some code is duplicated
+ * in PHPUnit's NewParserTests.php, so you'll probably want to update both
+ * at the same time.
  *
  * Copyright © 2004, 2010 Brion Vibber <brion@pobox.com>
  * http://www.mediawiki.org/
@@ -210,6 +212,61 @@ class ParserTest {
                        $wgStyleDirectory = "$IP/skins";
                }
 
+               self::setupInterwikis();
+       }
+
+       /**
+        * Insert hardcoded interwiki in the lookup table.
+        *
+        * This function insert a set of well known interwikis that are used in
+        * the parser tests. They can be considered has fixtures are injected in
+        * the interwiki cache by using the 'InterwikiLoadPrefix' hook.
+        * Since we are not interested in looking up interwikis in the database,
+        * the hook completely replace the existing mechanism (hook returns false).
+        */
+       public static function setupInterwikis() {
+               # Hack: insert a few Wikipedia in-project interwiki prefixes,
+               # for testing inter-language links
+               Hooks::register( 'InterwikiLoadPrefix', function ( $prefix, &$iwData ) {
+                       static $testInterwikis = array(
+                               'wikipedia' => array(
+                                       'iw_url' => 'http://en.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 0 ),
+                               'meatball' => array(
+                                       'iw_url' => 'http://www.usemod.com/cgi-bin/mb.pl?$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 0 ),
+                               'zh' => array(
+                                       'iw_url' => 'http://zh.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
+                               'es' => array(
+                                       'iw_url' => 'http://es.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
+                               'fr' => array(
+                                       'iw_url' => 'http://fr.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
+                               'ru' => array(
+                                       'iw_url' => 'http://ru.wikipedia.org/wiki/$1',
+                                       'iw_api' => '',
+                                       'iw_wikiid' => '',
+                                       'iw_local' => 1 ),
+                       );
+                       if( array_key_exists( $prefix, $testInterwikis ) ) {
+                               $iwData = $testInterwikis[$prefix];
+                       }
+
+                       // We only want to rely on the above fixtures
+                       return false;
+               } );// hooks::register
        }
 
        public function setupRecorder( $options ) {
@@ -681,6 +738,8 @@ class ParserTest {
                        'wgNoFollowDomainExceptions' => array(),
                        'wgThumbnailScriptPath' => false,
                        'wgUseImageResize' => true,
+                       'wgSVGConverter' => 'null',
+                       'wgSVGConverters' => array( 'null' => 'echo "1">$output' ),
                        'wgLocaltimezone' => 'UTC',
                        'wgAllowExternalImages' => true,
                        'wgUseTidy' => false,
@@ -825,41 +884,6 @@ class ParserTest {
                                'user_name' => 'Anonymous' ) );
                }
 
-               # Hack: insert a few Wikipedia in-project interwiki prefixes,
-               # for testing inter-language links
-               $this->db->insert( 'interwiki', array(
-                       array( 'iw_prefix' => 'wikipedia',
-                               'iw_url' => 'http://en.wikipedia.org/wiki/$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 0 ),
-                       array( 'iw_prefix' => 'meatball',
-                               'iw_url' => 'http://www.usemod.com/cgi-bin/mb.pl?$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 0 ),
-                       array( 'iw_prefix' => 'zh',
-                               'iw_url' => 'http://zh.wikipedia.org/wiki/$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 1 ),
-                       array( 'iw_prefix' => 'es',
-                               'iw_url' => 'http://es.wikipedia.org/wiki/$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 1 ),
-                       array( 'iw_prefix' => 'fr',
-                               'iw_url' => 'http://fr.wikipedia.org/wiki/$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 1 ),
-                       array( 'iw_prefix' => 'ru',
-                               'iw_url' => 'http://ru.wikipedia.org/wiki/$1',
-                               'iw_api' => '',
-                               'iw_wikiid' => '',
-                               'iw_local' => 1 ),
-               ) );
-
                # Update certain things in site_stats
                $this->db->insert( 'site_stats', array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ) );
 
@@ -869,6 +893,8 @@ class ParserTest {
                # Clear the message cache
                MessageCache::singleton()->clear();
 
+               // Remember to update newParserTests.php after changing the below
+               // (and it uses a slightly different syntax just for teh lulz)
                $this->uploadDir = $this->setupUploadDir();
                $user = User::createNew( 'WikiSysop' );
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.jpg' ) );
@@ -902,6 +928,19 @@ class ParserTest {
                        'fileExists' => true
                ), $this->db->timestamp( '20130225203040' ), $user );
 
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.svg' ) );
+               $image->recordUpload2( '', 'Upload of some lame SVG', 'Some lame SVG', array(
+                               'size'        => 12345,
+                               'width'       => 240,
+                               'height'      => 180,
+                               'bits'        => 24,
+                               'media_type'  => MEDIATYPE_DRAWING,
+                               'mime'        => 'image/svg+xml',
+                               'metadata'    => serialize( array() ),
+                               'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                               'fileExists'  => true
+               ), $this->db->timestamp( '20010115123500' ), $user );
+
                # This image will be blacklisted in [[MediaWiki:Bad image list]]
                $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
                $image->recordUpload2( '', 'zomgnotcensored', 'Borderline image', array(
@@ -985,7 +1024,11 @@ class ParserTest {
                copy( "$IP/skins/monobook/wiki.png", "$dir/e/ea/Thumb.png" );
                wfMkdirParents( $dir . '/0/09', null, __METHOD__ );
                copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
-
+               wfMkdirParents( $dir . '/f/ff', null, __METHOD__ );
+               copy( "$IP/skins/monobook/headbg.jpg", "$dir/f/ff/Foobar.svg" );
+               file_put_contents( "$dir/f/ff/Foobar.svg",
+                       '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg" />' );
                return $dir;
        }
 
@@ -1035,6 +1078,14 @@ class ParserTest {
 
                                "$dir/0/09/Bad.jpg",
 
+                               "$dir/f/ff/Foobar.svg",
+                               "$dir/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png",
+                               "$dir/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png",
+                               "$dir/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png",
+                               "$dir/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png",
+                               "$dir/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png",
+                               "$dir/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png",
+
                                "$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
                        )
                );
@@ -1048,10 +1099,13 @@ class ParserTest {
                                "$dir/thumb/3/3a/Foobar.jpg",
                                "$dir/thumb/3/3a",
                                "$dir/thumb/3",
-
                                "$dir/e/ea",
                                "$dir/e",
-
+                               "$dir/f/ff/",
+                               "$dir/f/",
+                               "$dir/thumb/f/ff/Foobar.svg",
+                               "$dir/thumb/f/ff/",
+                               "$dir/thumb/f/",
                                "$dir/0/09/",
                                "$dir/0/",
                                "$dir/thumb",
index f7296bd..b720ab2 100644 (file)
@@ -3079,6 +3079,15 @@ External link containing double-single-quotes with no space separating the url f
 </p>
 !! end
 
+!! test
+External link with comments in link text
+!! input
+[http://www.google.com Google <!-- comment -->]
+!! result
+<p><a rel="nofollow" class="external text" href="http://www.google.com">Google </a>
+</p>
+!! end
+
 !! test
 URL-encoding in URL functions (single parameter)
 !! input
@@ -3871,6 +3880,15 @@ Piped link
 </p>
 !! end
 
+!! test
+Piped link with comment in link text
+!! input
+[[Main Page|The Main<!--front--> Page]]
+!! result
+<p><a href="/wiki/Main_Page" title="Main Page">The Main Page</a>
+</p>
+!! end
+
 !! test
 Broken link
 !! input
@@ -5053,6 +5071,33 @@ Single-comment whitespace lines dont break lists, but multi-comment whitespace l
 
 !!end
 
+!!test
+Test the li-hack
+(Cannot test this with PHP parser since it relies on Tidy for the hack)
+!!options
+parsoid=wt2html,wt2wt
+!!input
+* foo
+* <li>li-hack
+* {{echo|<li>templated li-hack}}
+* <!--foo--> <li> unsupported li-hack with preceding comments
+
+<ul>
+<li><li>not a li-hack
+</li>
+</ul>
+!!result
+<ul><li> foo</li>
+<li>li-hack</li>
+<li about="#mwt1" typeof="mw:Transclusion" data-mw='{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<li>templated li-hack"}}}'>templated li-hack</li>
+<li> <!--foo--> </li><li> li-hack with preceding comments</li></ul>
+
+<ul>
+<li></li><li>not a li-hack
+</li>
+</ul>
+!!end
+
 ###
 ### Magic Words
 ###
@@ -5216,7 +5261,7 @@ Magic Word: {{NUMBEROFFILES}}
 !! input
 {{NUMBEROFFILES}}
 !! result
-<p>3
+<p>4
 </p>
 !! end
 
@@ -7400,9 +7445,9 @@ Special:RecentChanges/param
 !! options
 msg
 !! input
-{{#special:foobarnonexistent}}
+{{#special:foobar nonexistent}}
 !! result
-No such special page
+Special:Foobar nonexistent
 !! end
 
 !! test
@@ -7430,9 +7475,9 @@ Special:RecentChanges/param
 !! options
 msg
 !! input
-{{#speciale:foobarnonexistent}}
+{{#speciale:foobar nonexistent}}
 !! result
-No_such_special_page
+Special:Foobar_nonexistent
 !! end
 
 ###
@@ -7757,6 +7802,37 @@ Thumbnail image caption with a free URL and explicit alt
 
 !! end
 
+
+!! test
+SVG thumbnails with no language set
+!! options
+!! input
+[[File:Foobar.svg|thumb|width=200]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+
+!! end
+
+!! test
+SVG thumbnails with language de
+!! options
+!! input
+[[File:Foobar.svg|thumb|width=200|lang=de]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+
+!! end
+
+!! test
+SVG thumbnails with invalid language code
+!! options
+!! input
+[[File:Foobar.svg|thumb|width=200|lang=invalid.language.code]]
+!! result
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>lang=invalid.language.code</div></div></div>
+
+!! end
+
 !! test
 BUG 1887: A ISBN with a thumbnail
 !! input
@@ -7967,7 +8043,7 @@ parsoid
 <p>
 <span class="mw-default-size" typeof="mw:Image">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
 </a>
 </span>
 </p>
@@ -7983,7 +8059,7 @@ parsoid
 <p>
 <span class="mw-default-size" typeof="mw:Image">
 <span>
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
 </span>
 </span>
 </p>
@@ -7999,7 +8075,7 @@ parsoid
 <p>
 <span class="mw-default-size" typeof="mw:Image">
 <a href="Main_Page">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg" height="220" width="1941">
 </a>
 </span>
 </p>
@@ -8015,7 +8091,7 @@ parsoid
 <p>
 <span class="mw-valign-middle" typeof="mw:Image">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
 </a>
 </span>
 </p>
@@ -8031,7 +8107,7 @@ parsoid
 <p>
 <span class="mw-valign-baseline" typeof="mw:Image" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/89px-Foobar.jpg" height="10" width="89">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/89px-Foobar.jpg" height="10" width="89">
 </a>
 </span>
 </p>
@@ -8047,7 +8123,7 @@ parsoid
 <p>
 <span class="mw-image-border" typeof="mw:Image" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50">
 </a>
 </span>
 </p>
@@ -8062,7 +8138,7 @@ parsoid
 !! result
 <figure class="mw-default-size mw-halign-left mw-valign-baseline" typeof="mw:Image/Thumb">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/180px-Foobar.jpg" height="21" width="180" />
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/180px-Foobar.jpg" height="21" width="180" />
 </a>
 <figcaption class="mw-figcaption">caption content</figcaption>
 </figure>
@@ -8077,7 +8153,7 @@ parsoid
 !! result
 <figure class="mw-halign-right mw-valign-middle" typeof="mw:Image/Thumb">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" />
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/50px-Foobar.jpg" height="6" width="50" />
 </a>
 <figcaption class="mw-figcaption">caption</figcaption>
 </figure>
@@ -8092,7 +8168,7 @@ parsoid
 !! result
 <figure typeof="mw:Image/Frame">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 <figcaption class="mw-figcaption">caption</figcaption>
 </figure>
@@ -8107,7 +8183,7 @@ parsoid
 !! result
 <figure class="mw-halign-left mw-valign-baseline" typeof="mw:Image/Frame">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 <figcaption class="mw-figcaption">caption</figcaption>
 </figure>
@@ -8123,7 +8199,7 @@ parsoid
 <p>
 <span class="mw-image-border" typeof="mw:Image/Frameless" data-mw="{&quot;caption&quot;:&quot;caption&quot;}">
 <a href="File:Foobar.jpg">
-<img resource="./File:Foobar.jpg" src="http://upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
+<img resource="./File:Foobar.jpg" src="//upload.wikimedia.org/wikipedia/commons/3/3a/Foobar.jpg/442px-Foobar.jpg" height="50" width="442" />
 </a>
 </p>
 !! end
@@ -13938,6 +14014,19 @@ abc
 </p>
 !! end
 
+!!test
+Special parser function
+!! input
+{{#special:RandomPage}}
+{{#special:BaDtItLe}}
+{{#special:Foobar}}
+!! result
+<p>Special:Random
+Special:Badtitle
+Special:Foobar
+</p>
+!! end
+
 !!test
 Bug 34939 - Case insensitive link parsing ([HttP://])
 !! input
@@ -13965,6 +14054,7 @@ HttP://MediaWiki.Org/
 </p>
 !! end
 
+
 ###
 ### Parsoids-specific tests
 ### Parsoid-PHP parser incompatibilities
@@ -13986,6 +14076,353 @@ parsoid=wt2html,wt2wt
 </span><dl about="#mwt3"><dd>a</dd></dl>
 !!end
 
+#### ----------------------------------------------------------------
+#### Parsoid-only testing of Parsoid's impl of <ref> and <references>
+#### tags. Parsoid's output for these tags differs from that of the
+#### PHP parser.
+#### ----------------------------------------------------------------
+
+!!test
+Ref: 1. ref-location should be replaced with an index span
+!!options
+parsoid
+!!input
+A <ref>foo</ref>
+B <ref name="x">foo</ref>
+C <ref name="y" />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span>
+B <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-2">[2]</a></span>
+C <span about="#mwt3" class="reference" data-mw='{"name":"ref","attrs":{"name":"y"}}' id="cite_ref-y-3-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-y-3">[3]</a></span></p>
+!!end
+
+!!test
+Ref: 2. ref-tags with identical names should all get the same index
+!!options
+parsoid
+!!input
+A <ref name="x">foo</ref>
+B <ref name="x" />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
+B <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span></p>
+!!end
+
+!!test
+Ref: 3. spaces in ref-names should be ignored
+!!options
+parsoid
+!!input
+A <ref name="x">foo</ref>
+B <ref name=" x " />
+C <ref name= x  />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"x"}}' id="cite_ref-x-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
+B <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span>
+C <span about="#mwt3" class="reference" data-mw='{"name":"ref","attrs":{"name":"x"}}' id="cite_ref-x-1-2" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-x-1">[1]</a></span></p>
+!!end
+
+!!test
+Ref: 4. 'constructor' should be accepted as a valid ref-name
+(NOTE: constructor is a predefined property in JS and constructor as a ref-name can clash with it if not handled properly)
+!!options
+parsoid
+!!input
+A <ref name="constructor">foo</ref>
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"constructor"}}' id="cite_ref-constructor-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-constructor-1">[1]</a></span></p>
+!!end
+
+!!test
+Ref: 5. body should accept generic wikitext
+!!options
+parsoid
+!!input
+A <ref>
+ This is a '''[[bolded link]]''' and this is a {{echo|transclusion}}
+</ref>
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"This is a <b data-parsoid=\"{&amp;quot;dsr&amp;quot;:[19,40,3,3]}\"><a rel=\"mw:WikiLink\" href=\"./Bolded_link\" data-parsoid=\"{&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Bolded_link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;bolded link&amp;quot;},&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;dsr&amp;quot;:[22,37,2,2]}\">bolded link</a></b> and this is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;transclusion&amp;quot;}}}\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;{{echo|transclusion}}&amp;quot;,&amp;quot;dsr&amp;quot;:[55,76,null,null]}\">transclusion</span>\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> This is a <b><a rel="mw:WikiLink" href="./Bolded_link">bolded link</a></b> and this is a <span about="#mwt3" typeof="mw:Transclusion" data-mw='{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}}}'>transclusion</span>
+</li></ol>
+!!end
+
+!!test
+Ref: 6. indent-pres should not be output in ref-body
+!!options
+parsoid
+!!input
+A <ref>
+ foo
+ bar
+ baz
+</ref>
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo\n bar\n baz\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo
+ bar
+ baz
+</li></ol>
+!!end
+
+!!test
+Ref: 6. No p-wrapping in ref-body
+!!options
+parsoid
+!!input
+A <ref>
+foo
+
+bar
+
+
+baz
+
+
+
+booz
+</ref>
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo\n\nbar\n\n\nbaz\n\n\n\nbooz\n"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo
+
+bar
+
+
+baz
+
+
+
+booz
+</li></ol>
+!!end
+
+!!test
+Ref: 8. transclusion wikitext has lower precedence
+!!options
+parsoid
+!!input
+A <ref> foo {{echo|</ref> B C}}
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo <span typeof=\"mw:Nowiki\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;{{&amp;quot;,&amp;quot;dsr&amp;quot;:[12,14,2,null]}\">{{</span>echo|"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B C<span typeof="mw:Nowiki">}}</span></p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <span typeof="mw:Nowiki">{{</span>echo|</li></ol>
+!!end
+
+!!test
+Ref: 9. unclosed comments should not leak out of ref-body
+!!options
+parsoid
+!!input
+A <ref> foo <!--</ref> B C
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo <!---->"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B C</p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo <!----></li></ol>
+!!end
+
+!!test
+Ref: 10. Unclosed HTML tags should not leak out of ref-body
+!!options
+parsoid
+!!input
+A <ref> <b> foo </ref> B C
+
+<references />
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"<b data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;autoInsertedEnd&amp;quot;:true,&amp;quot;dsr&amp;quot;:[8,16,3,0]}\"> foo </b>"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B C</p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references">
+<li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> <b> foo </b></li></ol>
+!!end
+
+!!test
+Ref: 11. ref-tags acts like an inline element wrt P-wrapping
+!!options
+parsoid
+!!input
+A <ref>foo</ref> B
+C <ref>bar</ref> D
+!!result
+<p>A <span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> B
+C <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[2]</a></span> D</p>
+!!end
+
+!!test
+Ref: 12. ref-tags act as trailing newline migration barrier
+!!options
+parsoid
+!!input
+<!--the newline at the end of this line moves out of the p-tag-->a
+
+b<!--the newline at the end of this line stays inside the p-tag--> <ref />
+<ref />
+
+c
+!!result
+<p><!--the newline at the end of this line moves out of the p-tag-->a</p>
+
+
+<p>b<!--the newline at the end of this line stays inside the p-tag--> <span about="#mwt1" class="reference" data-mw='{"name":"ref","attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span>
+<span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[2]</a></span></p>
+
+
+<p>c</p>
+!!end
+
+!!test
+Ref: 13. ref-tags are not SOL-transparent and block indent-pres
+!!options
+parsoid
+!!input
+<ref>foo</ref> A
+<ref>bar
+</ref> B
+!!result
+<p><span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> A
+<span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"bar\n"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[2]</a></span> B</p>
+!!end
+
+!!test
+Ref: 14. A nested ref-tag should be emitted as plain text
+!!options
+parsoid
+!!input
+<ref>foo <ref>bar</ref> baz</ref>
+
+<references />
+!!result
+<p><span about="#mwt1" class="reference" data-mw='{"name":"ref","body":{"html":"foo &amp;lt;ref&amp;gt;bar"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> baz&lt;/ref&gt;</p>
+
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo &lt;ref&gt;bar</li></ol>
+!!end
+
+!!test
+Ref: 15. ref-tags with identical names should get identical indexes
+!!options
+parsoid
+!!input
+A1 <ref name="a">foo</ref> A2 <ref name="a" />
+B1 <ref name="b" /> B2 <ref name="b">bar</ref>
+
+<references />
+!!result
+<p>A1 <span about="#mwt3" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"name":"a"}}' id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-a-1">[1]</a></span> A2 <span about="#mwt4" class="reference" data-mw='{"name":"ref","attrs":{"name":"a"}}' id="cite_ref-a-1-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-a-1">[1]</a></span>
+B1 <span about="#mwt7" class="reference" data-mw='{"name":"ref","attrs":{"name":"b"}}' id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-b-2">[2]</a></span> B2 <span about="#mwt8" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}' id="cite_ref-b-2-1" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-b-2">[2]</a></span></p>
+
+<ol about="#mwt10" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy">↑ <a href="#cite_ref-a-1-0">1.0</a> <a href="#cite_ref-a-1-1">1.1</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy">↑ <a href="#cite_ref-b-2-0">2.0</a> <a href="#cite_ref-b-2-1">2.1</a></span> bar</li></ol>
+!!end
+
+!!test
+References: 1. references tag without any refs should be handled properly
+!!options
+parsoid
+!!input
+<references />
+!!result
+<ol about="#mwt2" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"></ol>
+!!end
+
+!!test
+References: 2. references tag with group only outputs references from that group
+!!options
+parsoid
+!!input
+A <ref group="a">foo</ref>
+B <ref group="b">bar</ref>
+
+<references group='a' />
+!!result
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
+B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[b 1]</a></span></p>
+
+<ol about="#mwt6" class="references" data-mw='{"name":"references","attrs":{"group":"a"}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol>
+!!end
+
+!!test
+References: 3. ref list should be cleared after processing references
+!!options
+parsoid
+!!input
+A <ref>foo</ref>
+
+<references />
+
+B <ref>bar</ref>
+
+<references />
+!!result
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt4" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol>
+
+<p>B <span about="#mwt6" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt8" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> bar</li></ol>
+!!end
+
+!!test
+References: 4. only referenced group should be cleared after processing references
+!!options
+parsoid
+!!input
+A <ref group="a">afoo</ref>
+B <ref>bfoo</ref>
+
+<references group="a"/>
+
+C <ref>cfoo</ref>
+
+<references />
+!!result
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"afoo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
+B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bfoo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref" data-parsoid='{"src":"<ref>bfoo</ref>","dsr":[30,45,5,6]}'><a href="#cite_note-1">[1]</a></span></p>
+
+<ol about="#mwt6" class="references" data-mw='{"name":"references","attrs":{"group":"a"}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> afoo</li></ol>
+
+<p>C <span about="#mwt8" class="reference" data-mw='{"name":"ref","body":{"html":"cfoo"},"attrs":{}}' id="cite_ref-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-2">[2]</a></span></p>
+
+<ol about="#mwt10" class="references" data-mw='{"name":"references","attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> bfoo</li><li about="#cite_note-2" id="cite_note-2"><span rel="mw:referencedBy"><a href="#cite_ref-2-0">↑</a></span> cfoo</li></ol>
+!!end
+
+!!test
+References: 5. ref tags in references should be processed while ignoring all other content
+!!options
+parsoid
+!!input
+A <ref name="a" />
+B <ref name="b">bar</ref>
+
+<references>
+<ref name="a">foo</ref>
+This should just get lost.
+</references>
+!!result
+<p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","attrs":{"name":"a"}}' id="cite_ref-a-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-a-1">[1]</a></span>
+B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"name":"b"}}' id="cite_ref-b-2-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-b-2">[2]</a></span></p>
+
+<ol about="#mwt7" class="references" data-mw='{"name":"references","body":{"extsrc":"<ref name=\"a\">foo</ref>\nThis should just get lost."},"attrs":{}}' typeof="mw:Extension/references"><li about="#cite_note-a-1" id="cite_note-a-1"><span rel="mw:referencedBy"><a href="#cite_ref-a-1-0">↑</a></span> foo</li><li about="#cite_note-b-2" id="cite_note-b-2"><span rel="mw:referencedBy"><a href="#cite_ref-b-2-0">↑</a></span> bar</li></ol>
+!!end
+
+#### ----------------------------------------------------------------
 #### The following section of tests are primarily to test
 #### wikitext escaping capabilities of Parsoid.  Given that
 #### escaping can be done any number of ways, the wikitext (input)
@@ -13995,6 +14432,7 @@ parsoid=wt2html,wt2wt
 #### We are marking several tests as parsoid-only since the
 #### HTML in the result section is different from what the
 #### PHP parser generates for it.
+#### ----------------------------------------------------------------
 
 
 #### --------------- Headings ---------------
@@ -14034,10 +14472,15 @@ Headings: 1. Nested inside html
 parsoid
 !! input
 =<nowiki>=foo=</nowiki>=
+
 ==<nowiki>=foo=</nowiki>==
+
 ===<nowiki>=foo=</nowiki>===
+
 ====<nowiki>=foo=</nowiki>====
+
 =====<nowiki>=foo=</nowiki>=====
+
 ======<nowiki>=foo=</nowiki>======
 !! result
 <h1><span typeof="mw:Nowiki">=foo=</span></h1>
@@ -14055,8 +14498,10 @@ parsoid
 !! input
 =foo=
 <nowiki>*bar</nowiki>
+
 =foo=
 =bar
+
 =foo=
 <nowiki>=bar=</nowiki>
 !! result
@@ -14081,12 +14526,19 @@ Headings: 4a. No escaping needed (testing just h1 and h2)
 parsoid
 !! input
 ==foo=
+
 =foo==
+
 = =foo= =
+
 ==foo= bar=
+
 ===foo==
+
 ==foo===
+
 =''=''foo==
+
 =<nowiki>=</nowiki>=
 !! result
 <h1>=foo</h1>
@@ -14120,10 +14572,15 @@ Headings: 5. Empty headings
 parsoid
 !! input
 =<nowiki/>=
+
 ==<nowiki/>==
+
 ===<nowiki/>===
+
 ====<nowiki/>====
+
 =====<nowiki/>=====
+
 ======<nowiki/>======
 !! result
 <h1></h1>
@@ -14135,15 +14592,78 @@ parsoid
 !!end
 
 !! test
-Headings: 6. Heading chars in SOL context
+Headings: 6a. Heading chars in SOL context (with trailing spaces)
 !! options
 parsoid
 !! input
-<!--cmt--><nowiki>=h1=</nowiki>
-<!--cmt--><nowiki> =h1= </nowiki>
 !! result
-<p><!--cmt--><span typeof="mw:Nowiki">=h1=</span>
-<!--cmt--><span typeof="mw:Nowiki"> =h1= </span></p>
+<p>=a=</p>
+<p>=a= </p>
+<p>=a= </p>
+<p>=a=         </p>
+!!end
+
+!! test
+Headings: 6b. Heading chars in SOL context (with trailing newlines)
+!! options
+parsoid
+!! input
+<nowiki>=a=
+b</nowiki>
+
+<nowiki>=a= 
+b</nowiki>
+
+<nowiki>=a=    
+b</nowiki>
+
+<nowiki>=a=     
+b</nowiki>
+!! result
+<p>=a=
+b</p>
+<p>=a= 
+b</p>
+<p>=a= 
+b</p>
+<p>=a=  
+b</p>
+</p>
+!!end
+
+!! test
+Headings: 6c. Heading chars in SOL context (leading newline break)
+!! options
+parsoid
+!! input
+<nowiki>a
+=b=</nowiki>
+!! result
+<p>a
+=b=</p>
+!!end
+
+!! test
+Headings: 6d. Heading chars in SOL context (with interspersed comments)
+!! options
+parsoid
+!! input
+<!--c0--><nowiki>=a=</nowiki>
+<!--c1-->
+<nowiki>=a= </nowiki><!--c2-->  <!--c3-->
+!! result
+<p><!--c0-->=a=</p>
+<p><!--c1-->=a= <!--c2-->       <!--c3--></p>
+!!end
+
+!! test
+Headings: 6d. Heading chars in SOL context (No escaping needed)
+!! options
+parsoid=html2wt
+!! input
+=a=<div>b</div>
+!! result
+=a=<div>b</div>
 !!end
 
 #### --------------- Lists ---------------
@@ -14554,7 +15074,7 @@ disabled
 
 !! end
 
-#### --------------- Links ---------------
+#### --------------- Links ----------------
 #### 1. Quote marks in link text
 #### 2. Wikilinks: Escapes needed
 #### 3. Wikilinks: No escapes needed
@@ -14685,7 +15205,7 @@ parsoid
 </p>
 !! end
 
-#### --------------- Paragraphs ---------------
+#### ----------- Paragraphs ---------------
 #### 1. No unnecessary escapes
 #### --------------------------------------
 
@@ -14710,27 +15230,51 @@ bar <span><nowiki>[[foo]]</nowiki></span>
 </p>
 !!end
 
-#### --------------- PRE ------------------
-#### 1. Leading space in SOL context should be escaped
-#### --------------------------------------
+#### ----------------------- PRE --------------------------
+#### 1. Leading whitespace in SOL context should be escaped
+#### ------------------------------------------------------
 !! test
-1. Leading space in SOL context should be escaped
+1. Leading whitespace in SOL context should be escaped
 !! options
 parsoid
 !! input
-<nowiki> foo</nowiki>
-<!--cmt--><nowiki> foo</nowiki>
+<nowiki> a</nowiki>
+
+<nowiki>  a</nowiki>
+
+<nowiki>       a(tab)</nowiki>
+
+<nowiki>       a</nowiki>
+<!--cmt-->
+<nowiki>  a</nowiki>
+
+<nowiki>a
+ b</nowiki>
+
+<nowiki>a
+       b</nowiki>
+
+<nowiki>a
+        b</nowiki>
 !! result
-<p> foo
-<!--cmt--> foo
-</p>
+<p> a</p>
+<p>  a</p>
+<p>    a(tab)</p>
+<p>    a</p>
+<p><!--cmt-->  a</p>
+<p>a
+ b</p>
+<p>a
+       b</p>
+<p>a
+        b</p>
 !! end
 
 #### --------------- HTML tags ---------------
 #### 1. a tags
 #### 2. other tags
 #### 3. multi-line html tag
-#### --------------------------------------
+#### -----------------------------------------
 !! test
 1. a tags
 !! options
diff --git a/tests/phpunit/includes/SeleniumConfigurationTest.php b/tests/phpunit/includes/SeleniumConfigurationTest.php
deleted file mode 100644 (file)
index 4b49f63..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-<?php
-
-class SeleniumConfigurationTest extends MediaWikiTestCase {
-
-       /**
-        * The file where the test temporarity stores the selenium config.
-        * This should be cleaned up as part of teardown.
-        */
-       private $tempFileName;
-
-       /**
-        * String containing the a sample selenium settings
-        */
-       private $testConfig0 = '
-[SeleniumSettings]
-browsers[firefox]      = "*firefox"
-browsers[iexplorer] = "*iexploreproxy"
-browsers[chrome]       = "*chrome"
-host                           = "localhost"
-port                           = "foobarr"
-wikiUrl                        = "http://localhost/deployment"
-username                       = "xxxxxxx"
-userPassword           = ""
-testBrowser            = "chrome"
-startserver            =
-stopserver             =
-jUnitLogFile   =
-runAgainstGrid = false
-
-[SeleniumTests]
-testSuite[SimpleSeleniumTestSuite] = "tests/selenium/SimpleSeleniumTestSuite.php"
-testSuite[TestSuiteName] = "testSuitePath"
-';
-       /**
-        * Array of expected browsers from $testConfig0
-        */
-       private $testBrowsers0 = array( 'firefox' => '*firefox',
-               'iexplorer' => '*iexploreproxy',
-               'chrome' => '*chrome'
-       );
-       /**
-        * Array of expected selenium settings from $testConfig0
-        */
-       private $testSettings0 = array(
-               'host' => 'localhost',
-               'port' => 'foobarr',
-               'wikiUrl' => 'http://localhost/deployment',
-               'username' => 'xxxxxxx',
-               'userPassword' => '',
-               'testBrowser' => 'chrome',
-               'startserver' => null,
-               'stopserver' => null,
-               'seleniumserverexecpath' => null,
-               'jUnitLogFile' => null,
-               'runAgainstGrid' => null
-       );
-       /**
-        * Array of expected testSuites from $testConfig0
-        */
-       private $testSuites0 = array(
-               'SimpleSeleniumTestSuite' => 'tests/selenium/SimpleSeleniumTestSuite.php',
-               'TestSuiteName' => 'testSuitePath'
-       );
-
-       /**
-        * Another sample selenium settings file contents
-        */
-       private $testConfig1 =
-               '
-[SeleniumSettings]
-host                           = "localhost"
-testBrowser            = "firefox"
-';
-       /**
-        * Expected browsers from $testConfig1
-        */
-       private $testBrowsers1 = null;
-       /**
-        * Expected selenium settings from $testConfig1
-        */
-       private $testSettings1 = array(
-               'host' => 'localhost',
-               'port' => null,
-               'wikiUrl' => null,
-               'username' => null,
-               'userPassword' => null,
-               'testBrowser' => 'firefox',
-               'startserver' => null,
-               'stopserver' => null,
-               'seleniumserverexecpath' => null,
-               'jUnitLogFile' => null,
-               'runAgainstGrid' => null
-       );
-       /**
-        * Expected test suites from $testConfig1
-        */
-       private $testSuites1 = null;
-
-
-       protected function setUp() {
-               parent::setUp();
-               if ( !defined( 'SELENIUMTEST' ) ) {
-                       define( 'SELENIUMTEST', true );
-               }
-       }
-
-       /**
-        * Clean up the temporary file used to store the selenium settings.
-        */
-       protected function tearDown() {
-               if ( strlen( $this->tempFileName ) > 0 ) {
-                       unlink( $this->tempFileName );
-                       unset( $this->tempFileName );
-               }
-               parent::tearDown();
-       }
-
-       /**
-        * @expectedException MWException
-        * @group SeleniumFramework
-        */
-       public function testErrorOnIncorrectConfigFile() {
-               $seleniumSettings = array();
-               $seleniumBrowsers = array();
-               $seleniumTestSuites = array();
-
-               SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                       $seleniumBrowsers,
-                       $seleniumTestSuites,
-                       "Some_fake_settings_file.ini" );
-       }
-
-       /**
-        * @expectedException MWException
-        * @group SeleniumFramework
-        */
-       public function testErrorOnMissingConfigFile() {
-               $seleniumSettings = array();
-               $seleniumBrowsers = array();
-               $seleniumTestSuites = array();
-               $this->setMwGlobals( 'wgSeleniumConfigFile', '' );
-
-               SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                       $seleniumBrowsers,
-                       $seleniumTestSuites );
-       }
-
-       /**
-        * @group SeleniumFramework
-        */
-       public function testUsesGlobalVarForConfigFile() {
-               $seleniumSettings = array();
-               $seleniumBrowsers = array();
-               $seleniumTestSuites = array();
-               $this->writeToTempFile( $this->testConfig0 );
-               $this->setMwGlobals( 'wgSeleniumConfigFile', $this->tempFileName );
-
-               SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                       $seleniumBrowsers,
-                       $seleniumTestSuites );
-               $this->assertEquals( $seleniumSettings, $this->testSettings0,
-                       'The selenium settings should have been read from the file defined in $wgSeleniumConfigFile'
-               );
-               $this->assertEquals( $seleniumBrowsers, $this->testBrowsers0,
-                       'The available browsers should have been read from the file defined in $wgSeleniumConfigFile'
-               );
-               $this->assertEquals( $seleniumTestSuites, $this->testSuites0,
-                       'The test suites should have been read from the file defined in $wgSeleniumConfigFile'
-               );
-       }
-
-       /**
-        * @group SeleniumFramework
-        * @dataProvider sampleConfigs
-        */
-       public function testgetSeleniumSettings( $sampleConfig, $expectedSettings, $expectedBrowsers, $expectedSuites ) {
-               $this->writeToTempFile( $sampleConfig );
-               $seleniumSettings = array();
-               $seleniumBrowsers = array();
-               $seleniumTestSuites = null;
-
-               SeleniumConfig::getSeleniumSettings( $seleniumSettings,
-                       $seleniumBrowsers,
-                       $seleniumTestSuites,
-                       $this->tempFileName );
-
-               $this->assertEquals( $seleniumSettings, $expectedSettings,
-                       "The selenium settings for the following test configuration was not retrieved correctly" . $sampleConfig
-               );
-               $this->assertEquals( $seleniumBrowsers, $expectedBrowsers,
-                       "The available browsers for the following test configuration was not retrieved correctly" . $sampleConfig
-               );
-               $this->assertEquals( $seleniumTestSuites, $expectedSuites,
-                       "The test suites for the following test configuration was not retrieved correctly" . $sampleConfig
-               );
-       }
-
-       /**
-        * create a temp file and write text to it.
-        * @param $testToWrite the text to write to the temp file
-        */
-       private function writeToTempFile( $textToWrite ) {
-               $this->tempFileName = tempnam( sys_get_temp_dir(), 'test_settings.' );
-               $tempFile = fopen( $this->tempFileName, "w" );
-               fwrite( $tempFile, $textToWrite );
-               fclose( $tempFile );
-       }
-
-       /**
-        * Returns an array containing:
-        *     The contents of the selenium cingiguration ini file
-        *  The expected selenium configuration array that getSeleniumSettings should return
-        *  The expected available browsers array that getSeleniumSettings should return
-        *  The expected test suites arrya that getSeleniumSettings should return
-        */
-       public function sampleConfigs() {
-               return array(
-                       array( $this->testConfig0, $this->testSettings0, $this->testBrowsers0, $this->testSuites0 ),
-                       array( $this->testConfig1, $this->testSettings1, $this->testBrowsers1, $this->testSuites1 )
-               );
-       }
-}
index f0eb76f..6ae995e 100644 (file)
@@ -402,41 +402,78 @@ class TitlePermissionTest extends MediaWikiLangTestCase {
        function testCssAndJavascriptPermissions() {
                $this->setUser( $this->userName );
 
+               $this->setTitle( NS_USER, $this->userName . '/test.js' );
+               $this->runCSSandJSPermissions(
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+                       array( array( 'badaccess-group0' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomjsprotected' ) ),
+                       array( array( 'badaccess-group0' ) )
+               );
+
+               $this->setTitle( NS_USER, $this->userName . '/test.css' );
+               $this->runCSSandJSPermissions(
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+                       array( array( 'badaccess-group0' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) ),
+                       array( array( 'badaccess-group0' ) ),
+                       array( array( 'badaccess-group0' ), array( 'mycustomcssprotected' ) )
+               );
+
                $this->setTitle( NS_USER, $this->altUserName . '/test.js' );
                $this->runCSSandJSPermissions(
                        array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
                        array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
-                       array( array( 'badaccess-group0' ) ) );
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+                       array( array( 'badaccess-group0' ) )
+               );
 
                $this->setTitle( NS_USER, $this->altUserName . '/test.css' );
                $this->runCSSandJSPermissions(
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
                        array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ) );
+                       array( array( 'badaccess-group0' ), array( 'customcssprotected' ) )
+               );
 
                $this->setTitle( NS_USER, $this->altUserName . '/tempo' );
                $this->runCSSandJSPermissions(
                        array( array( 'badaccess-group0' ) ),
                        array( array( 'badaccess-group0' ) ),
-                       array( array( 'badaccess-group0' ) ) );
+                       array( array( 'badaccess-group0' ) ),
+                       array( array( 'badaccess-group0' ) ),
+                       array( array( 'badaccess-group0' ) )
+               );
        }
 
-       function runCSSandJSPermissions( $result0, $result1, $result2 ) {
+       function runCSSandJSPermissions( $result0, $result1, $result2, $result3, $result4 ) {
                $this->setUserPerm( '' );
                $this->assertEquals( $result0,
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
 
-               $this->setUserPerm( 'editusercss' );
+               $this->setUserPerm( 'editmyusercss' );
                $this->assertEquals( $result1,
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
 
-               $this->setUserPerm( 'edituserjs' );
+               $this->setUserPerm( 'editmyuserjs' );
                $this->assertEquals( $result2,
                        $this->title->getUserPermissionsErrors( 'bogus',
                                $this->user ) );
 
+               $this->setUserPerm( 'editusercss' );
+               $this->assertEquals( $result3,
+                       $this->title->getUserPermissionsErrors( 'bogus',
+                               $this->user ) );
+
+               $this->setUserPerm( 'edituserjs' );
+               $this->assertEquals( $result4,
+                       $this->title->getUserPermissionsErrors( 'bogus',
+                               $this->user ) );
+
                $this->setUserPerm( 'editusercssjs' );
                $this->assertEquals( array( array( 'badaccess-group0' ) ),
                        $this->title->getUserPermissionsErrors( 'bogus',
diff --git a/tests/phpunit/includes/XmlTypeCheckTest.php b/tests/phpunit/includes/XmlTypeCheckTest.php
new file mode 100644 (file)
index 0000000..18f363f
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+/**
+ * PHPUnit tests for XMLTypeCheck.
+ * @author physikerwelt
+ * @group ?
+ * @covers XMLTypeCheck
+ */
+class XmlTypeCheckTest extends MediaWikiTestCase {
+       const WELL_FORMED_XML = "<root><child /></root>";
+       const MAL_FORMED_XML = "<root><child /></error>";
+
+       /**
+        * @covers XMLTypeCheck::newFromString
+        * @covers XMLTypeCheck::getRootElement
+        */
+       public function testWellFormedXML() {
+               $testXML = XmlTypeCheck::newFromString( self::WELL_FORMED_XML );
+               $this->assertTrue( $testXML->wellFormed );
+               $this->assertEquals( 'root', $testXML->getRootElement() );
+       }
+
+       /**
+        * @covers XMLTypeCheck::newFromString
+        */
+       public function testMalFormedXML() {
+               $testXML = XmlTypeCheck::newFromString( self::MAL_FORMED_XML );
+               $this->assertFalse( $testXML->wellFormed );
+       }
+
+}
\ No newline at end of file
index 2904472..c345513 100644 (file)
@@ -431,18 +431,4 @@ class DummyContentForTesting extends AbstractContent {
        public function getParserOutput( Title $title, $revId = null, ParserOptions $options = null, $generateHtml = true ) {
                return new ParserOutput( $this->getNativeData() );
        }
-
-       /**
-        * @see AbstractContent::fillParserOutput()
-        *
-        * @param $title        Title Context title for parsing
-        * @param $revId        int|null Revision ID (for {{REVISIONID}})
-        * @param $options      ParserOptions|null Parser options
-        * @param $generateHtml bool Whether or not to generate HTML
-        * @param $output       ParserOutput The output object to fill (reference).
-        */
-       protected function fillParserOutput( Title $title, $revId,
-                       ParserOptions $options, $generateHtml, ParserOutput &$output ) {
-               $output = new ParserOutput( $this->getNativeData() );
-       }
 }
index 61716f9..1c45820 100644 (file)
@@ -5,7 +5,7 @@
  * @group Database
  *        ^--- needed, because we do need the database to test link updates
  */
-class CssContentTest extends JavaScriptContentTest {
+class CssContentTest extends MediaWikiTestCase {
 
        protected function setUp() {
                parent::setUp();
index d7dde37..c7138b7 100644 (file)
@@ -7,21 +7,14 @@
  */
 class TextContentTest extends MediaWikiLangTestCase {
        protected $context;
-       protected $savedContentGetParserOutput;
 
        protected function setUp() {
-               global $wgHooks;
-
                parent::setUp();
 
                // Anon user
                $user = new User();
                $user->setName( '127.0.0.1' );
 
-               $this->context = new RequestContext( new FauxRequest() );
-               $this->context->setTitle( Title::newFromText( 'Test' ) );
-               $this->context->setUser( $user );
-
                $this->setMwGlobals( array(
                        'wgUser' => $user,
                        'wgTextModelsToParse' => array(
@@ -33,22 +26,9 @@ class TextContentTest extends MediaWikiLangTestCase {
                        'wgAlwaysUseTidy' => false,
                ) );
 
-               // bypass hooks that force custom rendering
-               if ( isset( $wgHooks['ContentGetParserOutput'] )  ) {
-                       $this->savedContentGetParserOutput = $wgHooks['ContentGetParserOutput'];
-                       unset( $wgHooks['ContentGetParserOutput'] );
-               }
-       }
-
-       public function teardown() {
-               global $wgHooks;
-
-               // restore hooks that force custom rendering
-               if ( $this->savedContentGetParserOutput !== null ) {
-                       $wgHooks['ContentGetParserOutput'] = $this->savedContentGetParserOutput;
-               }
-
-               parent::teardown();
+               $this->context = new RequestContext( new FauxRequest() );
+               $this->context->setTitle( Title::newFromText( 'Test' ) );
+               $this->context->setUser( $user );
        }
 
        public function newContent( $text ) {
index 632eb52..a1b87f6 100644 (file)
@@ -151,14 +151,11 @@ class CSSJanusTest extends MediaWikiTestCase {
                                '#settings td p strong'
                        ),
                        array(
-                               # Not sure how 4+ values should behave,
-                               # testing to make sure changes are detected
-                               '.foo { x-unknown: 1 2 3 4 5; }',
-                               '.foo { x-unknown: 1 4 3 2 5; }',
+                               // Do not mangle 5 or more values
+                               '.foo { -x-unknown: 1 2 3 4 5; }'
                        ),
                        array(
-                               '.foo { x-unknown: 1 2 3 4 5 6; }',
-                               '.foo { x-unknown: 1 4 3 2 5 6; }',
+                               '.foo { -x-unknown: 1 2 3 4 5 6; }'
                        ),
 
                        // Shorthand / Three notation
index 22737b3..87dc41c 100644 (file)
@@ -11,12 +11,79 @@ require_once __DIR__ . '/NewParserTest.php';
  */
 class MediaWikiParserTest {
 
-       public static function suite() {
-               global $wgParserTestFiles;
+       /**
+        * @defgroup filtering_constants Filtering constants
+        *
+        * Limit inclusion of parser tests files coming from MediaWiki core
+        * @{
+        */
 
-               $suite = new PHPUnit_Framework_TestSuite;
+       /** Include files shipped with MediaWiki core */
+       const CORE_ONLY = 1;
+       /** Include non core files as set in $wgParserTestFiles */
+       const NO_CORE = 2;
+       /** Include anything set via $wgParserTestFiles */
+       const WITH_ALL  = 3;  # CORE_ONLY | NO_CORE
+
+       /** @} */
+
+       /**
+        * Get a PHPUnit test suite of parser tests. Optionally filtered with
+        * $flags.
+        *
+        * @par Examples:
+        * Get a suite of parser tests shipped by MediaWiki core:
+        * @code
+        * MediaWikiParserTest::suite( MediaWikiParserTest::CORE_ONLY );
+        * @endcode
+        * Get a suite of various parser tests, like extensions:
+        * @code
+        * MediaWikiParserTest::suite( MediaWikiParserTest::NO_CORE );
+        * @endcode
+        * Get any test defined via $wgParserTestFiles:
+        * @code
+        * MediaWikiParserTest::suite( MediaWikiParserTest::WITH_ALL );
+        * @endcode
+        *
+        * @param $flags bitwise flag to filter out the $wgParserTestFiles that
+        * will be included.  Default: MediaWikiParserTest::CORE_ONLY
+        *
+        * @return PHPUnit_Framework_TestSuite
+        */
+       public static function suite( $flags = self::CORE_ONLY ) {
+               if( is_string( $flags ) ) {
+                       $flags = self::CORE_ONLY;
+               }
+               global $wgParserTestFiles, $IP;
+
+               $mwTestDir = $IP.'/tests/';
+
+               # Human friendly helpers
+               $wantsCore = ($flags & self::CORE_ONLY);
+               $wantsRest = ($flags & self::NO_CORE);
+
+               # Will hold the .txt parser test files we will include
+               $filesToTest = array();
+
+               # Filter out .txt files
+               foreach( $wgParserTestFiles as $parserTestFile ) {
+                       $isCore = ( 0 === strpos( $parserTestFile, $mwTestDir ) );
 
-               foreach ( $wgParserTestFiles as $fileName ) {
+                       if( $isCore && $wantsCore ) {
+                               self::debug( "included core parser tests: $parserTestFile" );
+                               $filesToTest[] = $parserTestFile;
+                       } elseif( !$isCore && $wantsRest ) {
+                               self::debug( "included non core parser tests: $parserTestFile" );
+                               $filesToTest[] = $parserTestFile;
+                       } else {
+                               self::debug( "skipped parser tests: $parserTestFile" );
+                       }
+               }
+               self::debug( 'parser tests files: '
+                       . implode(' ', $filesToTest) );
+
+               $suite = new PHPUnit_Framework_TestSuite;
+               foreach ( $filesToTest as $fileName ) {
                        $testsName = basename( $fileName, '.txt' );
                        $escapedFileName = strtr( $fileName, array( "'" => "\\'", '\\' => '\\\\' ) );
                        /* This used to be ucfirst( basename( dirname( $filename ) ) )
@@ -37,11 +104,17 @@ class $parserTestClassName extends NewParserTest {
 EOT;
 
                        eval( $parserTestClassDefinition );
-
-                       $parserTester = new $parserTestClassName( $testsName );
-                       $suite->addTestSuite( new ReflectionClass ( $parserTester ) );
+                       self::debug( "Adding test class $parserTestClassName" );
+                       $suite->addTestSuite( $parserTestClassName );
                }
-
                return $suite;
        }
+
+       /**
+        * Write $msg under log group 'tests-parser'
+        * @param string $msg Message to log
+        */
+       protected static function debug( $msg ) {
+               return wfDebugLog( 'tests-parser', wfGetCaller() . ' ' . $msg );
+       }
 }
index 8cee07b..93923fd 100644 (file)
@@ -31,6 +31,11 @@ class NewParserTest extends MediaWikiTestCase {
 
        protected $file = false;
 
+       public static function setUpBeforeClass() {
+               // Inject ParserTest well-known interwikis
+               ParserTest::setupInterwikis();
+       }
+
        protected function setUp() {
                global $wgNamespaceAliases;
                global $wgHooks, $IP;
@@ -102,6 +107,10 @@ class NewParserTest extends MediaWikiTestCase {
 
                $tmpGlobals['wgParser'] = new StubObject( 'wgParser', $GLOBALS['wgParserConf']['class'], array( $GLOBALS['wgParserConf'] ) );
 
+               $tmpGlobals['wgFileExtensions'][] = 'svg';
+               $tmpGlobals['wgSVGConverter'] = 'rsvg';
+               $tmpGlobals['wgSVGConverters']['rsvg'] = '$path/rsvg-convert -w $width -h $height $input -o $output';
+
                if ( $GLOBALS['wgStyleDirectory'] === false ) {
                        $tmpGlobals['wgStyleDirectory'] = "$IP/skins";
                }
@@ -113,6 +122,8 @@ class NewParserTest extends MediaWikiTestCase {
                foreach ( $wgMediaHandlers as $type => $handler ) {
                        $tmpGlobals['wgMediaHandlers'][$type] = 'MockBitmapHandler';
                }
+               // Vector images have to be handled slightly differently
+               $tmpGlobals['wgMediaHandlers']['image/svg+xml'] = 'MockSvgHandler';
 
                $tmpHooks = $wgHooks;
                $tmpHooks['ParserTestParser'][] = 'ParserTestParserHook::setup';
@@ -149,50 +160,9 @@ class NewParserTest extends MediaWikiTestCase {
 
        function addDBData() {
                $this->tablesUsed[] = 'site_stats';
-               $this->tablesUsed[] = 'interwiki';
                # disabled for performance
                #$this->tablesUsed[] = 'image';
 
-               # Hack: insert a few Wikipedia in-project interwiki prefixes,
-               # for testing inter-language links
-               $this->db->insert( 'interwiki', array(
-                               array( 'iw_prefix' => 'wikipedia',
-                                       'iw_url' => 'http://en.wikipedia.org/wiki/$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 0 ),
-                               array( 'iw_prefix' => 'meatball',
-                                       'iw_url' => 'http://www.usemod.com/cgi-bin/mb.pl?$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 0 ),
-                               array( 'iw_prefix' => 'zh',
-                                       'iw_url' => 'http://zh.wikipedia.org/wiki/$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 1 ),
-                               array( 'iw_prefix' => 'es',
-                                       'iw_url' => 'http://es.wikipedia.org/wiki/$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 1 ),
-                               array( 'iw_prefix' => 'fr',
-                                       'iw_url' => 'http://fr.wikipedia.org/wiki/$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 1 ),
-                               array( 'iw_prefix' => 'ru',
-                                       'iw_url' => 'http://ru.wikipedia.org/wiki/$1',
-                                       'iw_api' => '',
-                                       'iw_wikiid' => '',
-                                       'iw_local' => 1 ),
-                               /**
-                                * @todo Fixme! Why are we inserting duplicate data here? Shouldn't
-                                * need this IGNORE or shouldn't need the insert at all.
-                                */
-                       ), __METHOD__, array( 'IGNORE' )
-               );
-
                # Update certain things in site_stats
                $this->db->insert( 'site_stats',
                        array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ),
@@ -270,6 +240,20 @@ class NewParserTest extends MediaWikiTestCase {
                                $this->db->timestamp( '20010115123500' ), $user
                        );
                }
+               $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.svg' ) );
+               if ( !$this->db->selectField( 'image', '1', array( 'img_name' => $image->getName() ) ) ) {
+                       $image->recordUpload2( '', 'Upload of some lame SVG', 'Some lame SVG', array(
+                                       'size'        => 12345,
+                                       'width'       => 200,
+                                       'height'      => 200,
+                                       'bits'        => 24,
+                                       'media_type'  => MEDIATYPE_DRAWING,
+                                       'mime'        => 'image/svg+xml',
+                                       'metadata'    => serialize( array() ),
+                                       'sha1'        => wfBaseConvert( '', 16, 36, 31 ),
+                                       'fileExists'  => true
+                       ), $this->db->timestamp( '20010115123500' ), $user );
+               }
        }
 
        //ParserTest setup/teardown functions
@@ -440,6 +424,19 @@ class NewParserTest extends MediaWikiTestCase {
                $backend->store( array(
                        'src' => "$IP/skins/monobook/headbg.jpg", 'dst' => "$base/local-public/0/09/Bad.jpg"
                ) );
+
+               // No helpful SVG file to copy, so make one ourselves
+               $tmpDir = wfTempDir();
+               $tempFsFile = new TempFSFile( "$tmpDir/Foobar.svg" );
+               $tempFsFile->autocollect(); // destroy file when $tempFsFile leaves scope
+               file_put_contents( "$tmpDir/Foobar.svg",
+                       '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>' );
+
+               $backend->prepare( array( 'dir' => "$base/local-public/f/ff" ) );
+               $backend->quickStore( array(
+                       'src' => "$tmpDir/Foobar.svg", 'dst' => "$base/local-public/f/ff/Foobar.svg"
+               ) );
        }
 
        /**
@@ -492,6 +489,14 @@ class NewParserTest extends MediaWikiTestCase {
 
                                "$base/local-public/0/09/Bad.jpg",
 
+                               "$base/local-public/f/ff/Foobar.svg",
+                               "$base/local-thumb/f/ff/Foobar.svg/180px-Foobar.svg.jpg",
+                               "$base/local-thumb/f/ff/Foobar.svg/270px-Foobar.svg.jpg",
+                               "$base/local-thumb/f/ff/Foobar.svg/360px-Foobar.svg.jpg",
+                               "$base/local-thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.jpg",
+                               "$base/local-thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.jpg",
+                               "$base/local-thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.jpg",
+
                                "$base/local-public/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
                        )
                );
index d19cdd0..e947c34 100644 (file)
@@ -17,6 +17,7 @@ class MockSearch extends SearchEngine {
 
 /**
  * @group Search
+ * @group Database
  */
 class SearchUpdateTest extends MediaWikiTestCase {
 
@@ -25,17 +26,8 @@ class SearchUpdateTest extends MediaWikiTestCase {
                $this->setMwGlobals( 'wgSearchType', 'MockSearch' );
        }
 
-       function update( $text, $title = 'Test', $id = 1 ) {
-               $u = new SearchUpdate( $id, $title, $text );
-               $u->doUpdate();
-
-               return array( MockSearch::$title, MockSearch::$text );
-       }
-
        function updateText( $text ) {
-               list( , $resultText ) = $this->update( $text );
-               $resultText = trim( $resultText ); // abstract from some implementation details
-               return $resultText;
+               return trim( SearchUpdate::updateText( $text ) );
        }
 
        function testUpdateText() {
index d687dbb..42be936 100644 (file)
@@ -494,6 +494,7 @@ class LanguageTest extends LanguageClassesTestCase {
        public static function provideUnknownLanguageTags() {
                return array(
                        array( 'mw', 'non-existent two-letter code' ),
+                       array( 'foo"<bar', 'very invalid language code' ),
                );
        }
 
index 31deaf7..e046328 100644 (file)
@@ -32,7 +32,7 @@
  * @ingroup FileBackend
  */
 class MockFSFile extends FSFile {
-       private $sha1Base36 = null; // File Sha1Base36
+       protected $sha1Base36 = null; // File Sha1Base36
 
        public function exists() {
                return true;
index 2ae30a3..742b41e 100644 (file)
  * @ingroup Media
  */
 
+class MockBitmapHandler extends BitmapHandler {
+       function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
+               return MockImageHandler::doFakeTransform( $this, $image, $dstPath, $dstUrl, $params, $flags );
+       }
+       function doClientImage( $image, $scalerParams ) {
+                       return $this->getClientScalingThumbnailImage( $image, $scalerParams );
+       }
+}
+class MockSvgHandler extends SvgHandler {
+       function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
+               return MockImageHandler::doFakeTransform( $this, $image, $dstPath, $dstUrl, $params, $flags );
+       }
+}
 /**
  * Mock handler for images.
  *
@@ -28,7 +41,7 @@
  *
  * @ingroup Media
  */
-class MockBitmapHandler extends BitmapHandler {
+class MockImageHandler {
 
        /**
         * Override BitmapHandler::doTransform() making sure we do not generate
@@ -36,14 +49,14 @@ class MockBitmapHandler extends BitmapHandler {
         * will be consumed by the unit test.  There is no need to create a real
         * thumbnail on the filesystem.
         */
-       function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
+       static function doFakeTransform( $that, $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
                # Example of what we receive:
                # $image: LocalFile
                # $dstPath: /tmp/transform_7d0a7a2f1a09-1.jpg
                # $dstUrl : http://example.com/images/thumb/0/09/Bad.jpg/320px-Bad.jpg
                # $params:  width: 320,  descriptionUrl http://trunk.dev/wiki/File:Bad.jpg
 
-               $this->normaliseParams( $image, $params );
+               $that->normaliseParams( $image, $params );
 
                $scalerParams = array(
                        # The size to which the image will be resized
@@ -67,9 +80,11 @@ class MockBitmapHandler extends BitmapHandler {
                # In some cases, we do not bother generating a thumbnail.
                if ( !$image->mustRender() &&
                        $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
-                       && $scalerParams['physicalHeight'] == $scalerParams['srcHeight'] ) {
+                       && $scalerParams['physicalHeight'] == $scalerParams['srcHeight']
+               ) {
                        wfDebug( __METHOD__ . ": returning unscaled image\n" );
-                       return $this->getClientScalingThumbnailImage( $image, $scalerParams );
+                       // getClientScalingThumbnailImage is protected
+                       return $that->doClientImage( $image, $scalerParams );
                }
 
                return new ThumbnailImage( $image, $dstUrl, false, $params );
index deef745..e4cb6b6 100755 (executable)
@@ -103,12 +103,17 @@ class PHPUnitMaintClass extends Maintenance {
 $maintClass = 'PHPUnitMaintClass';
 require RUN_MAINTENANCE_IF_MAIN;
 
-require_once 'PHPUnit/Runner/Version.php';
+if ( !class_exists( 'PHPUnit_Runner_Version') ) {
+       require_once 'PHPUnit/Runner/Version.php';
+}
 
 if ( PHPUnit_Runner_Version::id() !== '@package_version@'
        && version_compare( PHPUnit_Runner_Version::id(), '3.6.7', '<' )
 ) {
        die( 'PHPUnit 3.6.7 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
 }
-require_once 'PHPUnit/Autoload.php';
+
+if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
+       require_once 'PHPUnit/Autoload.php';
+}
 MediaWikiPHPUnitCommand::main();
index 844c853..7a9122f 100644 (file)
@@ -2,17 +2,18 @@
 
 <!-- colors don't work on Windows! -->
 <phpunit bootstrap="./bootstrap.php"
-         colors="true"
-         backupGlobals="false"
-         convertErrorsToExceptions="true"
-         convertNoticesToExceptions="true"
-         convertWarningsToExceptions="true"
-         stopOnFailure="false"
-                timeoutForSmallTests="10"
-                timeoutForMediumTests="30"
-                timeoutForLargeTests="60"
-         strict="true"
-                verbose="true">
+       colors="true"
+       backupGlobals="false"
+       convertErrorsToExceptions="true"
+       convertNoticesToExceptions="true"
+       convertWarningsToExceptions="true"
+       forceCoversAnnotation="true"
+       stopOnFailure="false"
+       timeoutForSmallTests="10"
+       timeoutForMediumTests="30"
+       timeoutForLargeTests="60"
+       strict="true"
+       verbose="true">
        <testsuites>
                <testsuite name="includes">
                        <directory>includes</directory>
@@ -36,6 +37,7 @@
                </testsuite>
                <testsuite name="extensions">
                        <file>suites/ExtensionsTestSuite.php</file>
+                       <file>suites/ExtensionsParserTestSuite.php</file>
                </testsuite>
        </testsuites>
        <groups>
diff --git a/tests/phpunit/suites/ExtensionsParserTestSuite.php b/tests/phpunit/suites/ExtensionsParserTestSuite.php
new file mode 100644 (file)
index 0000000..3d68b24
--- /dev/null
@@ -0,0 +1,8 @@
+<?php
+class ExtensionsParserTestSuite extends PHPUnit_Framework_TestSuite {
+
+       public static function suite() {
+               return MediaWikiParserTest::suite( MediaWikiParserTest::NO_CORE );
+       }
+
+}
index 88bbf5c..b2a6fd5 100644 (file)
@@ -1,16 +1,11 @@
 ( function ( $ ) {
-       var uacount, uas, testMap;
 
        QUnit.module( 'jquery.client', QUnit.newMwEnvironment() );
 
-       /** Number of user-agent defined */
-       uacount = 0;
-
-       uas = ( function () {
-
+       var uacount = 0,
                // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
                // Info based on results from http://toolserver.org/~krinkle/testswarm/job/174/
-               var uas = {
+               uas = {
                        // Internet Explorer 6
                        // Internet Explorer 7
                        'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)': {
                                        rtl: true
                                }
                        },
+                       // Iceweasel 15.0.1
+                       'Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 Iceweasel/15.0.1': {
+                               title: 'Iceweasel 15.0.1',
+                               platform: 'Linux',
+                               profile: {
+                                       name: 'iceweasel',
+                                       layout: 'gecko',
+                                       layoutVersion: 20100101,
+                                       platform: 'linux',
+                                       version: '15.0.1',
+                                       versionBase: '15',
+                                       versionNumber: 15
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
                        // Firefox 5
                        // Safari 3
                        // Safari 4
                                }
                        },
                        // Safari 5
+                       // Safari 6
+                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.29.13 (KHTML, like Gecko) Version/6.0.4 Safari/536.29.13': {
+                               title: 'Safari 6',
+                               platform: 'MacIntel',
+                               profile: {
+                                       name: 'safari',
+                                       layout: 'webkit',
+                                       layoutVersion: 536,
+                                       platform: 'mac',
+                                       version: '6.0.4',
+                                       versionBase: '6',
+                                       versionNumber: 6
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
+                       // Safari 6.0.5+ (doesn't have the comma in "KHTML, like Gecko")
+                       'Mozilla/5.0 (Macintosh; Intel Mac OS X 1084) AppleWebKit/536.30.1 (KHTML like Gecko) Version/6.0.5 Safari/536.30.1': {
+                               title: 'Safari 6',
+                               platform: 'MacIntel',
+                               profile: {
+                                       name: 'safari',
+                                       layout: 'webkit',
+                                       layoutVersion: 536,
+                                       platform: 'mac',
+                                       version: '6.0.5',
+                                       versionBase: '6',
+                                       versionNumber: 6
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
                        // Opera 10+
                        'Opera/9.80 (Windows NT 5.1)': {
                                title: 'Opera 10+ (exact version unspecified)',
                                        rtl: true
                                }
                        },
+                       // Android WebKit Browser 2.3
+                       'Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1': {
+                               title: 'Android WebKit Browser 2.3',
+                               platform: 'Linux armv7l',
+                               profile: {
+                                       name: 'android',
+                                       layout: 'webkit',
+                                       layoutVersion: 533,
+                                       platform: 'linux',
+                                       version: '2.3.5',
+                                       versionBase: '2',
+                                       versionNumber: 2.3
+                               },
+                               wikiEditor: {
+                                       ltr: true,
+                                       rtl: true
+                               }
+                       },
                        // Bug #34924
                        'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
                                title: 'Rekonq',
                                        rtl: true
                                }
                        }
-               };
-               $.each( uas, function () {
-                       uacount++;
-               } );
-               return uas;
-       }() );
-
-       QUnit.test( 'profile userAgent support', uacount, function ( assert ) {
-               // Generate a client profile object and compare recursively
-               var uaTest = function ( rawUserAgent, data ) {
-                       var ret = $.client.profile( {
-                               userAgent: rawUserAgent,
-                               platform: data.platform
-                       } );
-                       assert.deepEqual( ret, data.profile, 'Client profile support check for ' + data.title + ' (' + data.platform + '): ' + rawUserAgent );
-               };
+               },
+               testMap = {
+                       // Example from WikiEditor
+                       // Make sure to use raw numbers, a string like "7.0" would fail on a
+                       // version 10 browser since in string comparaison "10" is before "7.0" :)
+                       'ltr': {
+                               'msie': [['>=', 7.0]],
+                               'firefox': [['>=', 2]],
+                               'opera': [['>=', 9.6]],
+                               'safari': [['>=', 3]],
+                               'chrome': [['>=', 3]],
+                               'netscape': [['>=', 9]],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       },
+                       'rtl': {
+                               'msie': [['>=', 8]],
+                               'firefox': [['>=', 2]],
+                               'opera': [['>=', 9.6]],
+                               'safari': [['>=', 3]],
+                               'chrome': [['>=', 3]],
+                               'netscape': [['>=', 9]],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       }
+               }
+       ;
 
-               // Loop through and run tests
-               $.each( uas, uaTest );
+       // Count test cases
+       $.each( uas, function () {
+               uacount++;
        } );
 
-       QUnit.test( 'profile return validation for current user agent', 7, function ( assert ) {
+       QUnit.test( 'profile( navObject )', 7, function ( assert ) {
                var p = $.client.profile();
 
                function unknownOrType( val, type, summary ) {
                assert.equal( typeof p.versionNumber, 'number', 'p.versionNumber is a number' );
        } );
 
-       // Example from WikiEditor
-       // Make sure to use raw numbers, a string like "7.0" would fail on a
-       // version 10 browser since in string comparaison "10" is before "7.0" :)
-       testMap = {
-               'ltr': {
-                       'msie': [['>=', 7.0]],
-                       'firefox': [['>=', 2]],
-                       'opera': [['>=', 9.6]],
-                       'safari': [['>=', 3]],
-                       'chrome': [['>=', 3]],
-                       'netscape': [['>=', 9]],
-                       'blackberry': false,
-                       'ipod': false,
-                       'iphone': false
-               },
-               'rtl': {
-                       'msie': [['>=', 8]],
-                       'firefox': [['>=', 2]],
-                       'opera': [['>=', 9.6]],
-                       'safari': [['>=', 3]],
-                       'chrome': [['>=', 3]],
-                       'netscape': [['>=', 9]],
-                       'blackberry': false,
-                       'ipod': false,
-                       'iphone': false
-               }
-       };
+       QUnit.test( 'profile( navObject ) - samples', uacount, function ( assert ) {
+               // Loop through and run tests
+               $.each( uas, function ( rawUserAgent, data ) {
+                       // Generate a client profile object and compare recursively
+                       var ret = $.client.profile( {
+                               userAgent: rawUserAgent,
+                               platform: data.platform
+                       } );
+                       assert.deepEqual( ret, data.profile, 'Client profile support check for ' + data.title + ' (' + data.platform + '): ' + rawUserAgent );
+               } );
+       } );
 
-       QUnit.test( 'test', 1, function ( assert ) {
+       QUnit.test( 'test( testMap )', 4, function ( assert ) {
                // .test() uses eval, make sure no exceptions are thrown
                // then do a basic return value type check
-               var testMatch = $.client.test( testMap );
+               var testMatch = $.client.test( testMap ),
+                       ie7Profile = $.client.profile( {
+                               'userAgent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
+                               'platform': ''
+                       } );
+
+               assert.equal( typeof testMatch, 'boolean', 'map with ltr/rtl split returns a boolean value' );
+
+               testMatch = $.client.test( testMap.ltr );
+
+               assert.equal( typeof testMatch, 'boolean', 'simple map (without ltr/rtl split) returns a boolean value' );
+
+               assert.equal( $.client.test( {
+                       'msie': null
+               }, ie7Profile ), true, 'returns true if any version of a browser are allowed (null)' );
+
+               assert.equal( $.client.test( {
+                       'msie': false
+               }, ie7Profile ), false, 'returns false if all versions of a browser are not allowed (false)' );
+       } );
+
+       QUnit.test( 'test( testMap, exactMatchOnly )', 2, function ( assert ) {
+               var ie7Profile = $.client.profile( {
+                       'userAgent': 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
+                       'platform': ''
+               } );
 
-               assert.equal( typeof testMatch, 'boolean', 'test returns a boolean value' );
+               assert.equal( $.client.test( {
+                       'firefox': [['>=', 2]]
+               }, ie7Profile, false ), true, 'returns true if browser not found and exactMatchOnly not set' );
 
+               assert.equal( $.client.test( {
+                       'firefox': [['>=', 2]]
+               }, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
        } );
 
-       QUnit.test( 'User-agent matches against WikiEditor\'s compatibility map', uacount * 2, function ( assert ) {
+       QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
                var $body = $( 'body' ),
                        bodyClasses = $body.attr( 'class' );
 
index 7c8503b..4353464 100644 (file)
                        $table.find( '.headerSort:eq(0)' ).click();
                }
        );
+       tableTest(
+               'Basic planet table: ascending by name (multiple clicks)',
+               header,
+               planets,
+               ascendingName,
+               function ( $table ) {
+                       $table.tablesorter();
+                       $table.find( '.headerSort:eq(0)' ).click();
+                       $table.find( '.headerSort:eq(1)' ).click();
+                       $table.find( '.headerSort:eq(0)' ).click();
+               }
+       );
        tableTest(
                'Basic planet table: descending by name',
                header,
                        $table.data( 'tablesorter' ).sort();
                }
        );
+       tableTest(
+               'Sort via click event after having initialized the tablesorter with initial sorting',
+               header,
+               initial,
+               descasc,
+               function ( $table ) {
+                       $table.tablesorter(
+                               { sortList: [ { 0: 'asc' }, { 1: 'asc' } ] }
+                       );
+                       $table.find( '.headerSort:eq(0)' ).click();
+               }
+       );
+       tableTest(
+               'Multi-sort via click event after having initialized the tablesorter with initial sorting',
+               header,
+               initial,
+               asc,
+               function ( $table ) {
+                       $table.tablesorter(
+                               { sortList: [ { 0: 'desc' }, { 1: 'desc' } ] }
+                       );
+                       $table.find( '.headerSort:eq(0)' ).click();
+
+                       // Pretend to click while pressing the multi-sort key
+                       var event = $.Event( 'click' );
+                       event[$table.data( 'tablesorter' ).config.sortMultiSortKey] = true;
+                       $table.find( '.headerSort:eq(1)' ).trigger( event );
+               }
+       );
        QUnit.test( 'Reset sorting making table appear unsorted', 3, function ( assert ) {
                var $table = tableCreate( header, initial );
                $table.tablesorter(
                        $table.find( '.headerSort:eq(0)' ).click();
                }
        );
+       tableTest( 'Sorting with colspanned headers: sort spanned column twice',
+               header,
+               initial,
+               [ caa4, bbc2, abc3, aab5, aaa1 ],
+               function ( $table ) {
+                       // Make colspanned header for test
+                       $table.find( 'tr:eq(0) th:eq(1), tr:eq(0) th:eq(2)' ).remove();
+                       $table.find( 'tr:eq(0) th:eq(0)' ).prop( 'colspan', '3' );
+
+                       $table.tablesorter();
+                       $table.find( '.headerSort:eq(0)' ).click();
+                       $table.find( '.headerSort:eq(0)' ).click();
+               }
+       );
        tableTest( 'Sorting with colspanned headers: subsequent column',
                header,
                initial,
                        $table.find( '.headerSort:eq(1)' ).click();
                }
        );
+       tableTest( 'Sorting with colspanned headers: sort subsequent column twice',
+               header,
+               initial,
+               [ aab5, caa4, abc3, bbc2, aaa1 ],
+               function ( $table ) {
+                       // Make colspanned header for test
+                       $table.find( 'tr:eq(0) th:eq(1), tr:eq(0) th:eq(2)' ).remove();
+                       $table.find( 'tr:eq(0) th:eq(0)' ).prop( 'colspan', '3' );
+
+                       $table.tablesorter();
+                       $table.find( '.headerSort:eq(1)' ).click();
+                       $table.find( '.headerSort:eq(1)' ).click();
+               }
+       );
+
 
        // Regression tests!
        tableTest(
diff --git a/tests/selenium/Selenium.php b/tests/selenium/Selenium.php
deleted file mode 100644 (file)
index 935d692..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-<?php
-/**
- * Selenium connector
- * This is implemented as a singleton.
- */
-
-require 'Testing/Selenium.php';
-
-class Selenium {
-       protected static $_instance = null;
-
-       public $isStarted = false;
-       public $tester;
-
-       protected $port;
-       protected $host;
-       protected $browser;
-       protected $browsers;
-       protected $logger;
-       protected $user;
-       protected $pass;
-       protected $timeout = 30000;
-       protected $verbose;
-       protected $junitlogfile; //processed by phpUnderControl
-       protected $runagainstgrid = false;
-
-       /**
-        * @todo this shouldn't have to be static
-        */
-       static protected $url;
-
-       /**
-        * Override parent
-        */
-       public function __construct() {
-               /**
-                * @todo this is an ugly hack to make information available to
-                * other tests.  It should be fixed.
-                */
-               if ( null === self::$_instance ) {
-                       self::$_instance = $this;
-               } else {
-                       throw new MWException( "Already have one Selenium instance." );
-               }
-       }
-
-       public function start() {
-               $this->tester = new Testing_Selenium( $this->browser, self::$url, $this->host,
-                       $this->port, $this->timeout );
-               if ( method_exists( $this->tester, "setVerbose" ) ) {
-                       $this->tester->setVerbose( $this->verbose );
-               }
-
-               $this->tester->start();
-               $this->isStarted = true;
-       }
-
-       public function stop() {
-               $this->tester->stop();
-               $this->tester = null;
-               $this->isStarted = false;
-       }
-
-       public function login() {
-               if ( strlen( $this->user ) == 0 ) {
-                       return;
-               }
-               $this->open( self::$url . '/index.php?title=Special:Userlogin' );
-               $this->type( 'wpName1', $this->user );
-               $this->type( 'wpPassword1', $this->pass );
-               $this->click( "//input[@id='wpLoginAttempt']" );
-               $this->waitForPageToLoad( 10000 );
-
-               // after login we redirect to the main page. So check whether the "Prefernces" top menu item exists
-               $value = $this->isElementPresent( "//li[@id='pt-preferences']" );
-
-               if ( $value != true ) {
-                       throw new Testing_Selenium_Exception( "Login Failed" );
-               }
-
-       }
-
-       public static function getInstance() {
-               if ( null === self::$_instance ) {
-                       throw new MWException( "No instance set yet" );
-               }
-
-               return self::$_instance;
-       }
-
-       public function loadPage( $title, $action ) {
-               $this->open( self::$url . '/index.php?title=' . $title . '&action=' . $action );
-       }
-
-       public function setLogger( $logger ) {
-               $this->logger = $logger;
-       }
-
-       public function getLogger() {
-               return $this->logger;
-       }
-
-       public function log( $message ) {
-               $this->logger->write( $message );
-       }
-
-       public function setUrl( $url ) {
-               self::$url = $url;
-       }
-
-       public static function getUrl() {
-               return self::$url;
-       }
-
-       public function setPort( $port ) {
-               $this->port = $port;
-       }
-
-       public function getPort() {
-               return $this->port;
-       }
-
-       public function setUser( $user ) {
-               $this->user = $user;
-       }
-
-       // Function to get username
-       public function getUser() {
-               return $this->user;
-       }
-
-
-       public function setPass( $pass ) {
-               $this->pass = $pass;
-       }
-
-       //add function to get password
-       public function getPass() {
-               return $this->pass;
-       }
-
-       public function setHost( $host ) {
-               $this->host = $host;
-       }
-
-       public function setVerbose( $verbose ) {
-               $this->verbose = $verbose;
-       }
-
-       public function setAvailableBrowsers( $availableBrowsers ) {
-               $this->browsers = $availableBrowsers;
-       }
-
-       public function setJUnitLogfile( $junitlogfile ) {
-               $this->junitlogfile = $junitlogfile;
-       }
-
-       public function getJUnitLogfile() {
-               return $this->junitlogfile;
-       }
-
-       public function setRunAgainstGrid( $runagainstgrid ) {
-               $this->runagainstgrid = $runagainstgrid;
-       }
-
-       public function setBrowser( $b ) {
-               if ( $this->runagainstgrid ) {
-                       $this->browser = $b;
-                       return true;
-               }
-               if ( !isset( $this->browsers[$b] ) ) {
-                       throw new MWException( "Invalid Browser: $b.\n" );
-               }
-
-               $this->browser = $this->browsers[$b];
-       }
-
-       public function getAvailableBrowsers() {
-               return $this->browsers;
-       }
-
-       public function __call( $name, $args ) {
-               $t = call_user_func_array( array( $this->tester, $name ), $args );
-               return $t;
-       }
-
-       // Prevent external cloning
-       protected function __clone() {}
-       // Prevent external construction
-       // protected function __construct() {}
-}
diff --git a/tests/selenium/SeleniumConfig.php b/tests/selenium/SeleniumConfig.php
deleted file mode 100644 (file)
index 0823275..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-if ( !defined( 'SELENIUMTEST' ) ) {
-       die( 1 );
-}
-
-class SeleniumConfig {
-
-       /**
-        * Retreives the Selenium configuration values from an ini file.
-        * See sample config file in selenium_settings.ini.sample
-        *
-        */
-       public static function getSeleniumSettings( &$seleniumSettings,
-                                                                                               &$seleniumBrowsers,
-                                                                                               &$seleniumTestSuites,
-                                                                                               $seleniumConfigFile = null ) {
-               if ( strlen( $seleniumConfigFile ) == 0 ) {
-                       global $wgSeleniumConfigFile;
-                       if ( isset( $wgSeleniumConfigFile ) ) {
-                               $seleniumConfigFile = $wgSeleniumConfigFile;
-                       }
-               }
-
-               if ( strlen( $seleniumConfigFile ) == 0 || !file_exists( $seleniumConfigFile ) ) {
-                       throw new MWException( "Unable to read local Selenium Settings from " . $seleniumConfigFile . "\n" );
-               }
-
-               $configArray = parse_ini_file( $seleniumConfigFile, true );
-               if ( $configArray === false ) {
-                       throw new MWException( "Error parsing " . $seleniumConfigFile . "\n" );
-               }
-
-               if ( array_key_exists( 'SeleniumSettings', $configArray ) ) {
-                       wfSuppressWarnings();
-                       //we may need to change how this is set. But for now leave it in the ini file
-                       $seleniumBrowsers = $configArray['SeleniumSettings']['browsers'];
-
-                       $seleniumSettings['host'] = $configArray['SeleniumSettings']['host'];
-                       $seleniumSettings['port'] = $configArray['SeleniumSettings']['port'];
-                       $seleniumSettings['wikiUrl'] = $configArray['SeleniumSettings']['wikiUrl'];
-                       $seleniumSettings['username'] = $configArray['SeleniumSettings']['username'];
-                       $seleniumSettings['userPassword'] = $configArray['SeleniumSettings']['userPassword'];
-                       $seleniumSettings['testBrowser'] = $configArray['SeleniumSettings']['testBrowser'];
-                       $seleniumSettings['startserver'] = $configArray['SeleniumSettings']['startserver'];
-                       $seleniumSettings['stopserver'] = $configArray['SeleniumSettings']['stopserver'];
-                       $seleniumSettings['seleniumserverexecpath'] = $configArray['SeleniumSettings']['seleniumserverexecpath'];
-                       $seleniumSettings['jUnitLogFile'] = $configArray['SeleniumSettings']['jUnitLogFile'];
-                       $seleniumSettings['runAgainstGrid'] = $configArray['SeleniumSettings']['runAgainstGrid'];
-
-                       wfRestoreWarnings();
-               }
-               if ( array_key_exists( 'SeleniumTests', $configArray ) ) {
-                       wfSuppressWarnings();
-                       $seleniumTestSuites = $configArray['SeleniumTests']['testSuite'];
-                       wfRestoreWarnings();
-               }
-               return true;
-       }
-
-       private static function parse_ini_line( $iniLine ) {
-               static $specialValues = array( 'false' => false, 'true' => true, 'null' => null );
-               list( $key, $value ) = explode( '=', $iniLine, 2 );
-               $key = trim( $key );
-               $value = trim( $value );
-
-               if ( isset( $specialValues[$value] ) ) {
-                       $value = $specialValues[$value];
-               } else {
-                       $value = trim( $value, '"' );
-               }
-
-               /* Support one-level arrays */
-               if ( preg_match( '/^([A-Za-z]+)\[([A-Za-z]+)\]/', $key, $m ) ) {
-                       $key = $m[1];
-                       $value = array( $m[2] => $value );
-               }
-
-               return array( $key => $value );
-       }
-}
diff --git a/tests/selenium/SeleniumLoader.php b/tests/selenium/SeleniumLoader.php
deleted file mode 100644 (file)
index 1a860f4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-class SeleniumLoader {
-       static function load() {
-               require_once 'Testing/Selenium.php';
-               require_once 'PHPUnit/Framework.php';
-               require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
-       }
-}
diff --git a/tests/selenium/SeleniumServerManager.php b/tests/selenium/SeleniumServerManager.php
deleted file mode 100644 (file)
index 1a1ee00..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class SeleniumServerManager {
-       private $SeleniumStartServer = false;
-       private $OS = '';
-       private $SeleniumServerPid = 'NaN';
-       private $SeleniumServerPort = 4444;
-       private $SeleniumServerStartTimeout = 10; // 10 secs.
-       private $SeleniumServerExecPath;
-
-       public function __construct( $startServer,
-                                                                $serverPort,
-                                                                $serverExecPath ) {
-               $this->OS = (string)PHP_OS;
-
-               if ( isset( $startServer ) ) {
-                       $this->SeleniumStartServer = $startServer;
-               }
-
-               if ( isset( $serverPort ) ) {
-                       $this->SeleniumServerPort = $serverPort;
-               }
-
-               if ( isset( $serverExecPath ) ) {
-                       $this->SeleniumServerExecPath = $serverExecPath;
-               }
-
-               return;
-       }
-
-       // Getters for certain private attributes. No setters, since they
-       // should not change after the manager object is created.
-
-       public function getSeleniumStartServer() {
-               return $this->SeleniumStartServer;
-       }
-
-       public function getSeleniumServerPort() {
-               return $this->SeleniumServerPort;
-       }
-
-       public function getSeleniumServerPid() {
-               return $this->SeleniumServerPid;
-       }
-
-       // Changing value of SeleniumStartServer allows starting server after
-       // creation of the class instance. Only allow setting SeleniumStartServer
-       // to true, since after server is started, it is shut down by stop().
-
-       public function setSeleniumStartServer( $startServer ) {
-               if ( $startServer == true ) {
-                       $this->SeleniumStartServer = true;
-               }
-       }
-
-       // return values are: 1) started - server started, 2) failed -
-       // server not started, 3) running - instructed to start server, but
-       // server already running
-
-       public function start() {
-
-               if ( !$this->SeleniumStartServer ) {
-                       return 'failed';
-               }
-
-               // commented out cases are untested
-
-               switch ( $this->OS ) {
-                       case "Linux":
-#                      case' CYGWIN_NT-5.1':
-                       case 'Darwin':
-#                      case 'FreeBSD':
-#                      case 'HP-UX':
-#                      case 'IRIX64':
-#                      case 'NetBSD':
-#                      case 'OpenBSD':
-#                      case 'SunOS':
-#                      case 'Unix':
-                               // *nix based OS
-                               return $this->startServerOnUnix();
-                               break;
-                       case "Windows":
-                       case "WIN32":
-                       case "WINNT":
-                               // Windows
-                               return $this->startServerOnWindows();
-                               break;
-                       default:
-                               // An untested OS
-                               return 'failed';
-                               break;
-               }
-       }
-
-       public function stop() {
-
-               // commented out cases are untested
-
-               switch ( $this->OS ) {
-                       case "Linux":
-#                      case' CYGWIN_NT-5.1':
-                       case 'Darwin':
-#                      case 'FreeBSD':
-#                      case 'HP-UX':
-#                      case 'IRIX64':
-#                      case 'NetBSD':
-#                      case 'OpenBSD':
-#                      case 'SunOS':
-#                      case 'Unix':
-                               // *nix based OS
-                               return $this->stopServerOnUnix();
-                               break;
-                       case "Windows":
-                       case "WIN32":
-                       case "WINNT":
-                               // Windows
-                               return $this->stopServerOnWindows();
-                               break;
-                       default:
-                               // An untested OS
-                               return 'failed';
-                               break;
-               }
-       }
-
-       private function startServerOnUnix() {
-
-               $output = array();
-               $user = $_ENV['USER'];
-               // @todo FIXME: This should be a little more generalized :)
-               if ( PHP_OS == 'Darwin' ) {
-                       // Mac OS X's ps barfs on the 'w' param, but doesn't need it.
-                       $ps = "ps -U %s";
-               } else {
-                       // Good on Linux
-                       $ps = "ps -U %s w";
-               }
-               $psCommand = sprintf( $ps, escapeshellarg( $user ) );
-               exec( $psCommand . " | grep -i selenium-server", $output );
-
-               // Start server. If there is already a server running,
-               // return running.
-
-               if ( isset( $this->SeleniumServerExecPath ) ) {
-                       $found = 0;
-                       foreach ( $output as $string ) {
-                               $found += preg_match(
-                                       '~^(.*)java(.+)-jar(.+)selenium-server~',
-                                       $string );
-                       }
-                       if ( $found == 0 ) {
-
-                               // Didn't find the selenium server. Start it up.
-                               // First set up comamand line suffix.
-                               // NB: $! is pid of last job run in background
-                               // The echo guarentees it is put into $op when
-                               // the exec command is run.
-
-                               $commandSuffix = ' > /dev/null 2>&1' . ' & echo $!';
-                               $portText = ' -port ' . $this->SeleniumServerPort;
-                               $command = "java -jar " .
-                                       escapeshellarg( $this->SeleniumServerExecPath ) .
-                                       $portText . $commandSuffix;
-                               exec( $command, $op );
-                               $pid = (int)$op[0];
-                               if ( $pid != "" ) {
-                                       $this->SeleniumServerPid = $pid;
-                               } else {
-                                       $this->SeleniumServerPid = 'NaN';
-                                       // Server start failed.
-                                       return 'failed';
-                               }
-                               // Wait for the server to startup and listen
-                               // on its port. Note: this solution kinda
-                               // stinks, since it uses a wait loop - dnessett
-
-                               wfSuppressWarnings();
-                               for ( $cnt = 1;
-                                         $cnt <= $this->SeleniumServerStartTimeout;
-                                         $cnt++ ) {
-                                       $fp = fsockopen( 'localhost',
-                                               $this->SeleniumServerPort,
-                                               $errno, $errstr, 0 );
-                                       if ( !$fp ) {
-                                               sleep( 1 );
-                                               continue;
-                                               // Server start succeeded.
-                                       } else {
-                                               fclose( $fp );
-                                               return 'started';
-                                       }
-                               }
-                               wfRestoreWarnings();
-                               echo "Starting Selenium server timed out.\n";
-                               return 'failed';
-                       } else {
-                               // server already running.
-                               return 'running';
-                       }
-
-               }
-
-               // No Server execution path defined.
-               return 'failed';
-       }
-
-       private function startServerOnWindows() {
-               // Unimplemented.
-               return 'failed';
-       }
-
-       private function stopServerOnUnix() {
-
-               if ( !empty( $this->SeleniumServerPid ) &&
-                       $this->SeleniumServerPid != 'NaN'
-               ) {
-                       exec( "kill -9 " . $this->SeleniumServerPid );
-                       return 'stopped';
-               } else {
-                       return 'failed';
-               }
-       }
-
-       private function stopServerOnWindows() {
-               // Unimplemented.
-               return 'failed';
-
-       }
-}
diff --git a/tests/selenium/SeleniumTestCase.php b/tests/selenium/SeleniumTestCase.php
deleted file mode 100644 (file)
index a2676ca..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-<?php
-include 'SeleniumTestConstants.php';
-
-class SeleniumTestCase extends PHPUnit_Framework_TestCase { // PHPUnit_Extensions_SeleniumTestCase
-       protected $selenium;
-
-       public function setUp() {
-               set_time_limit( 60 );
-               $this->selenium = Selenium::getInstance();
-       }
-
-       public function tearDown() {
-
-       }
-
-       public function __call( $method, $args ) {
-               return call_user_func_array( array( $this->selenium, $method ), $args );
-       }
-
-       public function assertSeleniumAttributeEquals( $attribute, $value ) {
-               $attr = $this->getAttribute( $attribute );
-               $this->assertEquals( $attr, $value );
-       }
-
-       public function assertSeleniumHTMLContains( $element, $text ) {
-               $innerHTML = $this->getText( $element );
-               // or assertContains
-               $this->assertRegExp( "/$text/", $innerHTML );
-       }
-
-
-       /**
-        * Create a test fixture page if one does not exist
-        * @param $pageName The fixture page name. If none is supplied, it uses SeleniumTestConstants::WIKI_INTERNAL_LINK
-        */
-       function createTestPageIfMissing( $pageName = null ) {
-               if ( $pageName == null ) {
-                       $pageName = SeleniumTestConstants::WIKI_INTERNAL_LINK;
-               }
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_START . $pageName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $location = $this->getLocation() . "\n";
-               if ( strpos( $location, '&redlink=1' ) !== false ) {
-                       $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
-                       $this->click( SeleniumTestConstants::BUTTON_SAVE );
-                       $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-                       $this->assertTrue( $this->isTextPresent( $pageName ),
-                               $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
-               }
-       }
-
-       /**
-        * Create a test page using date as part of the name so that it is unique
-        * @param $pagePrefix The prefix to use for the page name. The current date will be appended to this to make it unique
-        * @param $watchThis Whether to add the page to my watchlist. Defaults to false.
-        */
-       function createNewTestPage( $pagePrefix, $watchThis = false ) {
-               $pageName = $pagePrefix . date( "Ymd-His" );
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_START . $pageName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $location = $this->getLocation() . "\n";
-               $this->assertContains( '&redlink=1', $location ) .
-                       $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
-               if ( $watchThis ) {
-                       $this->click( "wpWatchthis" );
-               }
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertTrue( $this->isTextPresent( $pageName ),
-                       $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
-               return $pageName;
-       }
-
-       public function getExistingPage() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( "searchInput", "new" );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( "30000" );
-       }
-
-       public function getNewPage( $pageName ) {
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( "searchInput", $pageName );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( "30000" );
-               $this->click( "link=" . $pageName );
-               $this->waitForPageToLoad( "600000" );
-
-
-       }
-
-       // Loading the mediawiki editor
-       public function loadWikiEditor() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-       }
-
-       // Clear the content of the mediawiki editor
-       public function clearWikiEditor() {
-               $this->type( "wpTextbox1", "" );
-       }
-
-       // Click on the 'Show preview' button of the mediawiki editor
-       public function clickShowPreviewBtn() {
-               $this->click( "wpPreview" );
-       }
-
-       // Click on the 'Save Page' button of the mediawiki editor
-       public function clickSavePageBtn() {
-               $this->click( "wpSave" );
-       }
-
-       // Click on the 'Edit' link
-       public function clickEditLink() {
-               $this->click( "link=Edit" );
-               $this->waitForPageToLoad( "30000" );
-       }
-}
diff --git a/tests/selenium/SeleniumTestConsoleLogger.php b/tests/selenium/SeleniumTestConsoleLogger.php
deleted file mode 100644 (file)
index b6f5496..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-class SeleniumTestConsoleLogger {
-       public function __construct() {
-               // Prepare testsuite for immediate output
-               @ini_set( 'zlib.output_compression', 0 );
-               @ini_set( 'implicit_flush', 1 );
-               for ( $i = 0; $i < ob_get_level(); $i++ ) {
-                       ob_end_flush();
-               }
-               ob_implicit_flush( 1 );
-       }
-
-       public function write( $message, $mode = false ) {
-               $out = '';
-               // if ( $mode == SeleniumTestSuite::RESULT_OK ) $out .= '<font color="green">';
-               $out .= htmlentities( $message );
-               // if ( $mode == SeleniumTestSuite::RESULT_OK ) $out .= '</font>';
-               if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) {
-                       $out .= "\n";
-               }
-
-               echo $out;
-       }
-}
diff --git a/tests/selenium/SeleniumTestConstants.php b/tests/selenium/SeleniumTestConstants.php
deleted file mode 100644 (file)
index 1defb73..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-class SeleniumTestConstants {
-       const WIKI_TEST_WAIT_TIME = 3000; // Waiting time
-
-       //commonly used links
-       const LINK_MAIN_PAGE = 'link=Main page';
-       const LINK_RANDOM_PAGE = 'link=Random article';
-       const TEXT_PAGE_HEADING = 'firstHeading';
-
-       const LINK_START = 'link=';
-       const TEXT_EDITOR = 'wpTextbox1';
-       const LINK_PREVIEW = 'wpPreview';
-       const LINK_EDIT = 'link=Edit';
-
-       const WIKI_SEARCH_PAGE = 'Hair (musical)'; // Page name to search
-       const WIKI_TEXT_SEARCH = 'TV'; // Text to search
-       const WIKI_INTERNAL_LINK = 'Wikieditor-Fixture-Page'; // Exisiting page name to add as an internal tag
-
-       const INPUT_SEARCH_BOX = 'searchInput';
-       const BUTTON_SEARCH = 'mw-searchButton';
-       const BUTTON_SAVE = 'wpSave';
-}
-
diff --git a/tests/selenium/SeleniumTestHTMLLogger.php b/tests/selenium/SeleniumTestHTMLLogger.php
deleted file mode 100644 (file)
index 2d4e964..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-class SeleniumTestHTMLLogger {
-       public function setHeaders() {
-               global $wgOut;
-               $wgOut->addHeadItem( 'selenium', '<style>
-               .selenium pre {
-                       overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */
-                       white-space: pre-wrap; /* css-3 */
-                       white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
-                       white-space: -pre-wrap; /* Opera 4-6 */
-                       white-space: -o-pre-wrap; /* Opera 7 */
-                       /* width: 99%; */
-                       word-wrap: break-word; /* Internet Explorer 5.5+ */
-               }
-               .selenium-success { color: green }
-               </style>' );
-       }
-
-       public function write( $message, $mode = false ) {
-               global $wgOut;
-               $out = '';
-               if ( $mode == SeleniumTestSuite::RESULT_OK ) {
-                       $out .= '<span class="selenium-success">';
-               }
-               $out .= htmlspecialchars( $message );
-               if ( $mode == SeleniumTestSuite::RESULT_OK ) {
-                       $out .= '</span>';
-               }
-               if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) {
-                       $out .= '<br />';
-               }
-
-               $wgOut->addHTML( $out );
-       }
-}
diff --git a/tests/selenium/SeleniumTestListener.php b/tests/selenium/SeleniumTestListener.php
deleted file mode 100644 (file)
index dc0ac66..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-
-class SeleniumTestListener implements PHPUnit_Framework_TestListener {
-       private $logger;
-       private $tests_ok = 0;
-       private $tests_failed = 0;
-
-       public function __construct( $loggerInstance ) {
-               $this->logger = $loggerInstance;
-       }
-
-       public function addError( PHPUnit_Framework_Test $test, Exception $e, $time ) {
-               $this->logger->write( 'Error: ' . $e->getMessage() );
-               $this->tests_failed++;
-       }
-
-       public function addFailure( PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time ) {
-               $this->logger->write( 'Failed: ' . $e->getMessage() );
-               $this->tests_failed++;
-       }
-
-       public function addIncompleteTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
-               $this->logger->write( 'Incomplete.' );
-               $this->tests_failed++;
-       }
-
-       public function addSkippedTest( PHPUnit_Framework_Test $test, Exception $e, $time ) {
-               $this->logger->write( 'Skipped.' );
-               $this->tests_failed++;
-       }
-
-       public function startTest( PHPUnit_Framework_Test $test ) {
-               $this->logger->write(
-                       'Testing ' . $test->getName() . ' ... ',
-                       SeleniumTestSuite::CONTINUE_LINE
-               );
-       }
-
-       public function endTest( PHPUnit_Framework_Test $test, $time ) {
-               if ( !$test->hasFailed() ) {
-                       $this->logger->write( 'OK', SeleniumTestSuite::RESULT_OK );
-                       $this->tests_ok++;
-               }
-       }
-
-       public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) {
-               $this->logger->write( 'Testsuite ' . $suite->getName() . ' started.' );
-               $this->tests_ok = 0;
-               $this->tests_failed = 0;
-       }
-
-       public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) {
-               $this->logger->write( 'Testsuite ' . $suite->getName() . ' ended.' );
-               if ( $this->tests_ok > 0 || $this->tests_failed > 0 ) {
-                       $this->logger->write( ' OK: ' . $this->tests_ok . ' Failed: ' . $this->tests_failed );
-               }
-               $this->tests_ok = 0;
-               $this->tests_failed = 0;
-       }
-
-       public function statusMessage( $message ) {
-               $this->logger->write( $message );
-       }
-}
-
diff --git a/tests/selenium/SeleniumTestSuite.php b/tests/selenium/SeleniumTestSuite.php
deleted file mode 100644 (file)
index 8c21f21..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-
-abstract class SeleniumTestSuite extends PHPUnit_Framework_TestSuite {
-       private $selenium;
-       private $isSetUp = false;
-       private $loginBeforeTests = true;
-       private $triggerClientTestResources = true;
-
-       // Do not add line break after test output
-       const CONTINUE_LINE = 1;
-       const RESULT_OK = 2;
-       const RESULT_ERROR = 3;
-
-       abstract public function addTests();
-
-       public function setUp() {
-               // Hack because because PHPUnit version 3.0.6 which is on prototype does not
-               // run setUp as part of TestSuite::run
-               if ( $this->isSetUp ) {
-                       return;
-               }
-               $this->isSetUp = true;
-               $this->selenium = Selenium::getInstance();
-               $this->selenium->start();
-               if ( $this->triggerClientTestResources ) {
-                       $this->selenium->open( $this->selenium->getUrl() . '/index.php?setupTestSuite=' . $this->getName() );
-                       //wait a little longer for the db operation
-                       $this->selenium->waitForPageToLoad( 6000 );
-               }
-               if ( $this->loginBeforeTests ) {
-                       $this->login();
-               }
-       }
-
-       public function tearDown() {
-               if ( $this->triggerClientTestResources ) {
-                       $this->selenium->open( $this->selenium->getUrl() . '/index.php?clearTestSuite=' . $this->getName() );
-               }
-               $this->selenium->stop();
-       }
-
-       public function login() {
-               $this->selenium->login();
-       }
-
-       public function loadPage( $title, $action ) {
-               $this->selenium->loadPage( $title, $action );
-       }
-
-       protected function setLoginBeforeTests( $loginBeforeTests = true ) {
-               $this->loginBeforeTests = $loginBeforeTests;
-       }
-
-       protected function setTriggerClientTestResources( $triggerClientTestResources = true ) {
-               $this->triggerClientTestResources = $triggerClientTestResources;
-       }
-}
diff --git a/tests/selenium/data/SimpleSeleniumTestDB.sql b/tests/selenium/data/SimpleSeleniumTestDB.sql
deleted file mode 100644 (file)
index 99ae477..0000000
+++ /dev/null
@@ -1,1453 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.41, for debian-linux-gnu (x86_64)
---
--- Host: localhost    Database: test_wiki
--- ------------------------------------------------------
--- Server version      5.1.41-3ubuntu12.7
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `mw_archive`
---
-
-DROP TABLE IF EXISTS `mw_archive`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_archive` (
-  `ar_namespace` int(11) NOT NULL DEFAULT '0',
-  `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `ar_text` mediumblob NOT NULL,
-  `ar_comment` tinyblob NOT NULL,
-  `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
-  `ar_flags` tinyblob NOT NULL,
-  `ar_rev_id` int(10) unsigned DEFAULT NULL,
-  `ar_text_id` int(10) unsigned DEFAULT NULL,
-  `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `ar_len` int(10) unsigned DEFAULT NULL,
-  `ar_page_id` int(10) unsigned DEFAULT NULL,
-  `ar_parent_id` int(10) unsigned DEFAULT NULL,
-  KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
-  KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
-  KEY `ar_revid` (`ar_rev_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_archive`
---
-
-LOCK TABLES `mw_archive` WRITE;
-/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_category`
---
-
-DROP TABLE IF EXISTS `mw_category`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_category` (
-  `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `cat_pages` int(11) NOT NULL DEFAULT '0',
-  `cat_subcats` int(11) NOT NULL DEFAULT '0',
-  `cat_files` int(11) NOT NULL DEFAULT '0',
-  `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`cat_id`),
-  UNIQUE KEY `cat_title` (`cat_title`),
-  KEY `cat_pages` (`cat_pages`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_category`
---
-
-LOCK TABLES `mw_category` WRITE;
-/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_categorylinks`
---
-
-DROP TABLE IF EXISTS `mw_categorylinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_categorylinks` (
-  `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
-  `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `cl_collation` varbinary(32) NOT NULL DEFAULT '',
-  `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
-  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
-  KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
-  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
-  KEY `cl_collation` (`cl_collation`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_categorylinks`
---
-
-LOCK TABLES `mw_categorylinks` WRITE;
-/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_change_tag`
---
-
-DROP TABLE IF EXISTS `mw_change_tag`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_change_tag` (
-  `ct_rc_id` int(11) DEFAULT NULL,
-  `ct_log_id` int(11) DEFAULT NULL,
-  `ct_rev_id` int(11) DEFAULT NULL,
-  `ct_tag` varchar(255) NOT NULL,
-  `ct_params` blob,
-  UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
-  UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
-  UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
-  KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_change_tag`
---
-
-LOCK TABLES `mw_change_tag` WRITE;
-/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_external_user`
---
-
-DROP TABLE IF EXISTS `mw_external_user`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_external_user` (
-  `eu_local_id` int(10) unsigned NOT NULL,
-  `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  PRIMARY KEY (`eu_local_id`),
-  UNIQUE KEY `eu_external_id` (`eu_external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_external_user`
---
-
-LOCK TABLES `mw_external_user` WRITE;
-/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_externallinks`
---
-
-DROP TABLE IF EXISTS `mw_externallinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_externallinks` (
-  `el_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `el_to` blob NOT NULL,
-  `el_index` blob NOT NULL,
-  KEY `el_from` (`el_from`,`el_to`(40)),
-  KEY `el_to` (`el_to`(60),`el_from`),
-  KEY `el_index` (`el_index`(60))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_externallinks`
---
-
-LOCK TABLES `mw_externallinks` WRITE;
-/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
-INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents'),(1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings'),(1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ'),(1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
-/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_filearchive`
---
-
-DROP TABLE IF EXISTS `mw_filearchive`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_filearchive` (
-  `fa_id` int(11) NOT NULL AUTO_INCREMENT,
-  `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
-  `fa_storage_group` varbinary(16) DEFAULT NULL,
-  `fa_storage_key` varbinary(64) DEFAULT '',
-  `fa_deleted_user` int(11) DEFAULT NULL,
-  `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `fa_deleted_reason` text,
-  `fa_size` int(10) unsigned DEFAULT '0',
-  `fa_width` int(11) DEFAULT '0',
-  `fa_height` int(11) DEFAULT '0',
-  `fa_metadata` mediumblob,
-  `fa_bits` int(11) DEFAULT '0',
-  `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
-  `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
-  `fa_description` tinyblob,
-  `fa_user` int(10) unsigned DEFAULT '0',
-  `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
-  `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`fa_id`),
-  KEY `fa_name` (`fa_name`,`fa_timestamp`),
-  KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
-  KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
-  KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_filearchive`
---
-
-LOCK TABLES `mw_filearchive` WRITE;
-/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_hitcounter`
---
-
-DROP TABLE IF EXISTS `mw_hitcounter`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_hitcounter` (
-  `hc_id` int(10) unsigned NOT NULL
-) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_hitcounter`
---
-
-LOCK TABLES `mw_hitcounter` WRITE;
-/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_image`
---
-
-DROP TABLE IF EXISTS `mw_image`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_image` (
-  `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `img_size` int(10) unsigned NOT NULL DEFAULT '0',
-  `img_width` int(11) NOT NULL DEFAULT '0',
-  `img_height` int(11) NOT NULL DEFAULT '0',
-  `img_metadata` mediumblob NOT NULL,
-  `img_bits` int(11) NOT NULL DEFAULT '0',
-  `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
-  `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
-  `img_description` tinyblob NOT NULL,
-  `img_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
-  `img_sha1` varbinary(32) NOT NULL DEFAULT '',
-  PRIMARY KEY (`img_name`),
-  KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
-  KEY `img_size` (`img_size`),
-  KEY `img_timestamp` (`img_timestamp`),
-  KEY `img_sha1` (`img_sha1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_image`
---
-
-LOCK TABLES `mw_image` WRITE;
-/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_imagelinks`
---
-
-DROP TABLE IF EXISTS `mw_imagelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_imagelinks` (
-  `il_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `il_from` (`il_from`,`il_to`),
-  UNIQUE KEY `il_to` (`il_to`,`il_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_imagelinks`
---
-
-LOCK TABLES `mw_imagelinks` WRITE;
-/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_interwiki`
---
-
-DROP TABLE IF EXISTS `mw_interwiki`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_interwiki` (
-  `iw_prefix` varchar(32) NOT NULL,
-  `iw_url` blob NOT NULL,
-  `iw_api` blob NOT NULL,
-  `iw_wikiid` varchar(64) NOT NULL,
-  `iw_local` tinyint(1) NOT NULL,
-  `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
-  UNIQUE KEY `iw_prefix` (`iw_prefix`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_interwiki`
---
-
-LOCK TABLES `mw_interwiki` WRITE;
-/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
-INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0),('advogato','http://www.advogato.org/$1','','',0,0),('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0),('arxiv','http://www.arxiv.org/abs/$1','','',0,0),('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0),('cache','http://www.google.com/search?q=cache:$1','','',0,0),('commons','http://commons.wikimedia.org/wiki/$1','','',0,0),('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0),('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0),('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0),('docbook','http://wiki.docbook.org/topic/$1','','',0,0),('doi','http://dx.doi.org/$1','','',0,0),('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0),('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0),('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0),('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0),('foldoc','http://foldoc.org/?$1','','',0,0),('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0),('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0),('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0),('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0),('google','http://www.google.com/search?q=$1','','',0,0),('googlegroups','http://groups.google.com/groups?q=$1','','',0,0),('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0),('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0),('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0),('imdb','http://us.imdb.com/Title?$1','','',0,0),('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0),('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0),('keiki','http://kei.ki/en/$1','','',0,0),('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0),('linuxwiki','http://linuxwiki.de/$1','','',0,0),('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0),('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0),('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0),('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0),('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0),('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0),('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0),('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0),('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0),('metawikimedia','http://meta.wikimedia.org/wiki/$1','','',0,0),('moinmoin','http://purl.net/wiki/moin/$1','','',0,0),('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0),('mw','http://www.mediawiki.org/wiki/$1','','',0,0),('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0),('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0),('openwiki','http://openwiki.com/?$1','','',0,0),('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0),('ppr','http://c2.com/cgi/wiki?$1','','',0,0),('pythoninfo','http://wiki.python.org/moin/$1','','',0,0),('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0),('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0),('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0),('seattlewireless','http://seattlewireless.net/?$1','','',0,0),('senseislibrary','http://senseis.xmp.net/?$1','','',0,0),('sourceforge','http://sourceforge.net/$1','','',0,0),('squeak','http://wiki.squeak.org/squeak/$1','','',0,0),('susning','http://www.susning.nu/$1','','',0,0),('svgwiki','http://wiki.svg.org/$1','','',0,0),('tavi','http://tavi.sourceforge.net/$1','','',0,0),('tejo','http://www.tejo.org/vikio/$1','','',0,0),('theopedia','http://www.theopedia.com/$1','','',0,0),('tmbw','http://www.tmbw.net/wiki/$1','','',0,0),('tmnet','http://www.technomanifestos.net/?$1','','',0,0),('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0),('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0),('uea','http://www.tejo.org/uea/$1','','',0,0),('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0),('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0),('vinismo','http://vinismo.com/en/$1','','',0,0),('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0),('why','http://clublet.com/c/c/why?$1','','',0,0),('wiki','http://c2.com/cgi/wiki?$1','','',0,0),('wikia','http://www.wikia.com/wiki/$1','','',0,0),('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0),('wikicities','http://www.wikia.com/wiki/$1','','',0,0),('wikif1','http://www.wikif1.org/$1','','',0,0),('wikihow','http://www.wikihow.com/$1','','',0,0),('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0),('wikinews','http://en.wikinews.org/wiki/$1','','',1,0),('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0),('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0),('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0),('wikisource','http://wikisource.org/wiki/$1','','',1,0),('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0),('wikitravel','http://wikitravel.org/en/$1','','',0,0),('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0),('wikt','http://en.wiktionary.org/wiki/$1','','',1,0),('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0),('wlug','http://www.wlug.org.nz/$1','','',0,0),('zwiki','http://zwiki.org/$1','','',0,0),('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
-/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_ipblocks`
---
-
-DROP TABLE IF EXISTS `mw_ipblocks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_ipblocks` (
-  `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
-  `ipb_address` tinyblob NOT NULL,
-  `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
-  `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `ipb_reason` tinyblob NOT NULL,
-  `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
-  `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
-  `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
-  `ipb_range_start` tinyblob NOT NULL,
-  `ipb_range_end` tinyblob NOT NULL,
-  `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`ipb_id`),
-  UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
-  KEY `ipb_user` (`ipb_user`),
-  KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
-  KEY `ipb_timestamp` (`ipb_timestamp`),
-  KEY `ipb_expiry` (`ipb_expiry`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_ipblocks`
---
-
-LOCK TABLES `mw_ipblocks` WRITE;
-/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_iwlinks`
---
-
-DROP TABLE IF EXISTS `mw_iwlinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_iwlinks` (
-  `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
-  `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
-  UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_iwlinks`
---
-
-LOCK TABLES `mw_iwlinks` WRITE;
-/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_job`
---
-
-DROP TABLE IF EXISTS `mw_job`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_job` (
-  `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `job_cmd` varbinary(60) NOT NULL DEFAULT '',
-  `job_namespace` int(11) NOT NULL,
-  `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `job_params` blob NOT NULL,
-  PRIMARY KEY (`job_id`),
-  KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_job`
---
-
-LOCK TABLES `mw_job` WRITE;
-/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_l10n_cache`
---
-
-DROP TABLE IF EXISTS `mw_l10n_cache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_l10n_cache` (
-  `lc_lang` varbinary(32) NOT NULL,
-  `lc_key` varchar(255) NOT NULL,
-  `lc_value` mediumblob NOT NULL,
-  KEY `lc_lang_key` (`lc_lang`,`lc_key`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_l10n_cache`
---
-
-LOCK TABLES `mw_l10n_cache` WRITE;
-/*!40000 ALTER TABLE `mw_l10n_cache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_l10n_cache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_langlinks`
---
-
-DROP TABLE IF EXISTS `mw_langlinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_langlinks` (
-  `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `ll_lang` varbinary(20) NOT NULL DEFAULT '',
-  `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
-  KEY `ll_lang` (`ll_lang`,`ll_title`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_langlinks`
---
-
-LOCK TABLES `mw_langlinks` WRITE;
-/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_log_search`
---
-
-DROP TABLE IF EXISTS `mw_log_search`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_log_search` (
-  `ls_field` varbinary(32) NOT NULL,
-  `ls_value` varchar(255) NOT NULL,
-  `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
-  UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
-  KEY `ls_log_id` (`ls_log_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_log_search`
---
-
-LOCK TABLES `mw_log_search` WRITE;
-/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_logging`
---
-
-DROP TABLE IF EXISTS `mw_logging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_logging` (
-  `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `log_type` varbinary(32) NOT NULL DEFAULT '',
-  `log_action` varbinary(32) NOT NULL DEFAULT '',
-  `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
-  `log_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `log_namespace` int(11) NOT NULL DEFAULT '0',
-  `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `log_page` int(10) unsigned DEFAULT NULL,
-  `log_comment` varchar(255) NOT NULL DEFAULT '',
-  `log_params` blob NOT NULL,
-  `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`log_id`),
-  KEY `type_time` (`log_type`,`log_timestamp`),
-  KEY `user_time` (`log_user`,`log_timestamp`),
-  KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
-  KEY `times` (`log_timestamp`),
-  KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
-  KEY `log_page_id_time` (`log_page`,`log_timestamp`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_logging`
---
-
-LOCK TABLES `mw_logging` WRITE;
-/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
-INSERT INTO `mw_logging` VALUES (1,'patrol','patrol','20110110173131',1,'WikiSysop',0,'TestResources',2,'','2\n0\n1',0);
-/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_math`
---
-
-DROP TABLE IF EXISTS `mw_math`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_math` (
-  `math_inputhash` varbinary(16) NOT NULL,
-  `math_outputhash` varbinary(16) NOT NULL,
-  `math_html_conservativeness` tinyint(4) NOT NULL,
-  `math_html` text,
-  `math_mathml` text,
-  UNIQUE KEY `math_inputhash` (`math_inputhash`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_math`
---
-
-LOCK TABLES `mw_math` WRITE;
-/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_module_deps`
---
-
-DROP TABLE IF EXISTS `mw_module_deps`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_module_deps` (
-  `md_module` varbinary(255) NOT NULL,
-  `md_skin` varbinary(32) NOT NULL,
-  `md_deps` mediumblob NOT NULL,
-  UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_module_deps`
---
-
-LOCK TABLES `mw_module_deps` WRITE;
-/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
-INSERT INTO `mw_module_deps` VALUES ('ext.vector.collapsibleNav','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/portal-break.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/open.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/closed-ltr.png\"]'),('jquery.wikiEditor','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\"]'),('jquery.wikiEditor.toolbar','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/button-sprite.png\",\"3\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-right.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-left.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-down.png\",\"7\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading-small.gif\"}'),('mediawiki.legacy.shared','vector','[\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/feed-icon.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/remove.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/add.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/ajax-loader.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/spinner.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question-hover.gif\"]'),('skins.vector','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/border.png\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-fade.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-break.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-normal-fade.png\",\"6\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-current-fade.png\",\"8\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/arrow-down-icon.png\",\"11\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/search-fade.png\",\"12\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/portal-break.png\",\"14\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-break.png\",\"16\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-fade.png\",\"17\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-base.png\",\"18\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/bullet-icon.png\",\"19\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/external-link-ltr-icon.png\",\"20\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/lock-icon.png\",\"21\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/mail-icon.png\",\"22\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/news-icon.png\",\"23\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/file-icon.png\",\"24\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/talk-icon.png\",\"25\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/audio-icon.png\",\"26\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/video-icon.png\",\"27\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/document-icon.png\",\"28\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/user-icon.png\",\"29\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icons.png\",\"30\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icon-loading.gif\"}');
-/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_msg_resource`
---
-
-DROP TABLE IF EXISTS `mw_msg_resource`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_msg_resource` (
-  `mr_resource` varbinary(255) NOT NULL,
-  `mr_lang` varbinary(32) NOT NULL,
-  `mr_blob` mediumblob NOT NULL,
-  `mr_timestamp` binary(14) NOT NULL,
-  UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_msg_resource`
---
-
-LOCK TABLES `mw_msg_resource` WRITE;
-/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
-INSERT INTO `mw_msg_resource` VALUES ('ext.vector.collapsibleNav','en','{\"vector-collapsiblenav-more\":\"More languages\"}','20110108005000'),('ext.vector.collapsibleTabs','en','{}','20110108005000'),('ext.vector.simpleSearch','en','{\"vector-simplesearch-search\":\"Search\",\"vector-simplesearch-containing\":\"containing...\"}','20110108005000'),('ext.wikiEditor','en','{}','20110110172914'),('ext.wikiEditor.toolbar','en','{\"wikieditor-toolbar-loading\":\"Loading...\",\"wikieditor-toolbar-tool-bold\":\"Bold\",\"wikieditor-toolbar-tool-bold-example\":\"Bold text\",\"wikieditor-toolbar-tool-italic\":\"Italic\",\"wikieditor-toolbar-tool-italic-example\":\"Italic text\",\"wikieditor-toolbar-tool-ilink\":\"Internal link\",\"wikieditor-toolbar-tool-ilink-example\":\"Link title\",\"wikieditor-toolbar-tool-xlink\":\"External link (remember http:\\/\\/ prefix)\",\"wikieditor-toolbar-tool-xlink-example\":\"http:\\/\\/www.example.com link title\",\"wikieditor-toolbar-tool-link\":\"Link\",\"wikieditor-toolbar-tool-link-title\":\"Insert link\",\"wikieditor-toolbar-tool-link-int\":\"To a wiki page\",\"wikieditor-toolbar-tool-link-int-target\":\"Target page or URL:\",\"wikieditor-toolbar-tool-link-int-target-tooltip\":\"Page title or URL\",\"wikieditor-toolbar-tool-link-int-text\":\"Text to display:\",\"wikieditor-toolbar-tool-link-int-text-tooltip\":\"Text to be displayed\",\"wikieditor-toolbar-tool-link-ext\":\"To an external web page\",\"wikieditor-toolbar-tool-link-ext-target\":\"Link URL:\",\"wikieditor-toolbar-tool-link-ext-text\":\"Link text:\",\"wikieditor-toolbar-tool-link-insert\":\"Insert link\",\"wikieditor-toolbar-tool-link-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-link-int-target-status-exists\":\"Page exists\",\"wikieditor-toolbar-tool-link-int-target-status-notexists\":\"Page does not exist\",\"wikieditor-toolbar-tool-link-int-target-status-invalid\":\"Invalid title\",\"wikieditor-toolbar-tool-link-int-target-status-external\":\"External link\",\"wikieditor-toolbar-tool-link-int-target-status-loading\":\"Checking page existence...\",\"wikieditor-toolbar-tool-link-int-invalid\":\"The title you specified is invalid.\",\"wikieditor-toolbar-tool-link-lookslikeinternal\":\"The URL you specified looks like it was intended as a link to another wiki page.\\nDo you want to make it an internal link?\",\"wikieditor-toolbar-tool-link-lookslikeinternal-int\":\"Internal link\",\"wikieditor-toolbar-tool-link-lookslikeinternal-ext\":\"External link\",\"wikieditor-toolbar-tool-link-empty\":\"You did not enter anything to link to.\",\"wikieditor-toolbar-tool-file\":\"Embedded file\",\"wikieditor-toolbar-tool-file-pre\":\"$1{{ns:file}}:\",\"wikieditor-toolbar-tool-file-example\":\"Example.jpg\",\"wikieditor-toolbar-tool-reference\":\"Reference\",\"wikieditor-toolbar-tool-reference-title\":\"Insert reference\",\"wikieditor-toolbar-tool-reference-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-reference-text\":\"Reference text\",\"wikieditor-toolbar-tool-reference-insert\":\"Insert\",\"wikieditor-toolbar-tool-reference-example\":\"Insert footnote text here\",\"wikieditor-toolbar-tool-signature\":\"Signature and timestamp\",\"wikieditor-toolbar-section-advanced\":\"Advanced\",\"wikieditor-toolbar-tool-heading\":\"Heading\",\"wikieditor-toolbar-tool-heading-1\":\"Level 1\",\"wikieditor-toolbar-tool-heading-2\":\"Level 2\",\"wikieditor-toolbar-tool-heading-3\":\"Level 3\",\"wikieditor-toolbar-tool-heading-4\":\"Level 4\",\"wikieditor-toolbar-tool-heading-5\":\"Level 5\",\"wikieditor-toolbar-tool-heading-example\":\"Heading text\",\"wikieditor-toolbar-group-format\":\"Format\",\"wikieditor-toolbar-tool-ulist\":\"Bulleted list\",\"wikieditor-toolbar-tool-ulist-example\":\"Bulleted list item\",\"wikieditor-toolbar-tool-olist\":\"Numbered list\",\"wikieditor-toolbar-tool-olist-example\":\"Numbered list item\",\"wikieditor-toolbar-tool-indent\":\"Indentation\",\"wikieditor-toolbar-tool-indent-example\":\"Indented line\",\"wikieditor-toolbar-tool-nowiki\":\"No wiki formatting\",\"wikieditor-toolbar-tool-nowiki-example\":\"Insert non-formatted text here\",\"wikieditor-toolbar-tool-redirect\":\"Redirect\",\"wikieditor-toolbar-tool-redirect-example\":\"Target page name\",\"wikieditor-toolbar-tool-big\":\"Big\",\"wikieditor-toolbar-tool-big-example\":\"Big text\",\"wikieditor-toolbar-tool-small\":\"Small\",\"wikieditor-toolbar-tool-small-example\":\"Small text\",\"wikieditor-toolbar-tool-superscript\":\"Superscript\",\"wikieditor-toolbar-tool-superscript-example\":\"Superscript text\",\"wikieditor-toolbar-tool-subscript\":\"Subscript\",\"wikieditor-toolbar-tool-subscript-example\":\"Subscript text\",\"wikieditor-toolbar-group-insert\":\"Insert\",\"wikieditor-toolbar-tool-gallery\":\"Picture gallery\",\"wikieditor-toolbar-tool-gallery-example\":\"{{ns:file}}:Example.jpg|Caption1\\n{{ns:file}}:Example.jpg|Caption2\",\"wikieditor-toolbar-tool-newline\":\"New line\",\"wikieditor-toolbar-tool-table\":\"Table\",\"wikieditor-toolbar-tool-table-example-old\":\"-\\n! header 1\\n! header 2\\n! header 3\\n|-\\n| row 1, cell 1\\n| row 1, cell 2\\n| row 1, cell 3\\n|-\\n| row 2, cell 1\\n| row 2, cell 2\\n| row 2, cell 3\",\"wikieditor-toolbar-tool-table-example-cell-text\":\"Cell text\",\"wikieditor-toolbar-tool-table-example\":\"Example\",\"wikieditor-toolbar-tool-table-example-header\":\"Header text\",\"wikieditor-toolbar-tool-table-title\":\"Insert table\",\"wikieditor-toolbar-tool-table-dimensions-rows\":\"Rows\",\"wikieditor-toolbar-tool-table-dimensions-columns\":\"Columns\",\"wikieditor-toolbar-tool-table-dimensions-header\":\"Add header row\",\"wikieditor-toolbar-tool-table-wikitable\":\"Style with borders\",\"wikieditor-toolbar-tool-table-sortable\":\"Make table sortable\",\"wikieditor-toolbar-tool-table-insert\":\"Insert\",\"wikieditor-toolbar-tool-table-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-table-example-text\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec purus diam. Sed aliquam imperdiet nunc quis lacinia. Donec rutrum consectetur placerat. Sed volutpat neque non purus faucibus id ultricies enim euismod.\",\"wikieditor-toolbar-tool-table-toomany\":\"Inserting a table with more than $1 cells is not possible with this dialog.\",\"wikieditor-toolbar-tool-table-invalidnumber\":\"You have not entered a valid number of rows or columns.\",\"wikieditor-toolbar-tool-table-zero\":\"You cannot insert a table with zero rows or columns.\",\"wikieditor-toolbar-tool-replace\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-title\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-search\":\"Search for:\",\"wikieditor-toolbar-tool-replace-replace\":\"Replace with:\",\"wikieditor-toolbar-tool-replace-case\":\"Match case\",\"wikieditor-toolbar-tool-replace-regex\":\"Treat search string as a regular expression\",\"wikieditor-toolbar-tool-replace-button-findnext\":\"Find next\",\"wikieditor-toolbar-tool-replace-button-replacenext\":\"Replace next\",\"wikieditor-toolbar-tool-replace-button-replaceall\":\"Replace all\",\"wikieditor-toolbar-tool-replace-close\":\"Close\",\"wikieditor-toolbar-tool-replace-nomatch\":\"Your search did not match anything.\",\"wikieditor-toolbar-tool-replace-success\":\"$1 replacement(s) made.\",\"wikieditor-toolbar-tool-replace-emptysearch\":\"You did not enter anything to search for.\",\"wikieditor-toolbar-tool-replace-invalidregex\":\"The regular expression you entered is invalid: $1\",\"wikieditor-toolbar-section-characters\":\"Special characters\",\"wikieditor-toolbar-characters-page-latin\":\"Latin\",\"wikieditor-toolbar-characters-page-latinextended\":\"Latin extended\",\"wikieditor-toolbar-characters-page-ipa\":\"IPA\",\"wikieditor-toolbar-characters-page-symbols\":\"Symbols\",\"wikieditor-toolbar-characters-page-greek\":\"Greek\",\"wikieditor-toolbar-characters-page-cyrillic\":\"Cyrillic\",\"wikieditor-toolbar-characters-page-arabic\":\"Arabic\",\"wikieditor-toolbar-characters-page-persian\":\"Persian\",\"wikieditor-toolbar-characters-page-hebrew\":\"Hebrew\",\"wikieditor-toolbar-characters-page-bangla\":\"Bangla\",\"wikieditor-toolbar-characters-page-telugu\":\"Telugu\",\"wikieditor-toolbar-characters-page-sinhala\":\"Sinhala\",\"wikieditor-toolbar-characters-page-gujarati\":\"Gujarati\",\"wikieditor-toolbar-characters-page-thai\":\"Thai\",\"wikieditor-toolbar-characters-page-lao\":\"Lao\",\"wikieditor-toolbar-characters-page-khmer\":\"Khmer\",\"wikieditor-toolbar-section-help\":\"Help\",\"wikieditor-toolbar-help-heading-description\":\"Description\",\"wikieditor-toolbar-help-heading-syntax\":\"What you type\",\"wikieditor-toolbar-help-heading-result\":\"What you get\",\"wikieditor-toolbar-help-page-format\":\"Formatting\",\"wikieditor-toolbar-help-page-link\":\"Links\",\"wikieditor-toolbar-help-page-heading\":\"Headings\",\"wikieditor-toolbar-help-page-list\":\"Lists\",\"wikieditor-toolbar-help-page-file\":\"Files\",\"wikieditor-toolbar-help-page-reference\":\"References\",\"wikieditor-toolbar-help-page-discussion\":\"Discussion\",\"wikieditor-toolbar-help-content-bold-description\":\"Bold\",\"wikieditor-toolbar-help-content-bold-syntax\":\"\'\'\'Bold text\'\'\'\",\"wikieditor-toolbar-help-content-bold-result\":\"<strong>Bold text<\\/strong>\",\"wikieditor-toolbar-help-content-italic-description\":\"Italic\",\"wikieditor-toolbar-help-content-italic-syntax\":\"\'\'Italic text\'\'\",\"wikieditor-toolbar-help-content-italic-result\":\"<em>Italic text<\\/em>\",\"wikieditor-toolbar-help-content-bolditalic-description\":\"Bold &amp; italic\",\"wikieditor-toolbar-help-content-bolditalic-syntax\":\"\'\'\'\'\'Bold &amp; italic text\'\'\'\'\'\",\"wikieditor-toolbar-help-content-bolditalic-result\":\"<strong><em>Bold &amp; italic text<\\/em><\\/strong>\",\"wikieditor-toolbar-help-content-ilink-description\":\"Internal link\",\"wikieditor-toolbar-help-content-ilink-syntax\":\"[[Page title|Link label]]<br \\/>[[Page title]]\",\"wikieditor-toolbar-help-content-ilink-result\":\"<a href=\'#\'>Link label<\\/a><br \\/><a href=\'#\'>Page title<\\/a>\",\"wikieditor-toolbar-help-content-xlink-description\":\"External link\",\"wikieditor-toolbar-help-content-xlink-syntax\":\"[http:\\/\\/www.example.org Link label]<br \\/>[http:\\/\\/www.example.org]<br \\/>http:\\/\\/www.example.org\",\"wikieditor-toolbar-help-content-xlink-result\":\"<a href=\'#\' class=\'external\'>Link label<\\/a><br \\/><a href=\'#\' class=\'external autonumber\'>[1]<\\/a><br \\/><a href=\'#\' class=\'external\'>http:\\/\\/www.example.org<\\/a>\",\"wikieditor-toolbar-help-content-heading1-description\":\"&lt;wikieditor-toolbar-help-content-heading1-description&gt;\",\"wikieditor-toolbar-help-content-heading1-syntax\":\"&lt;wikieditor-toolbar-help-content-heading1-syntax&gt;\",\"wikieditor-toolbar-help-content-heading1-result\":\"&lt;wikieditor-toolbar-help-content-heading1-result&gt;\",\"wikieditor-toolbar-help-content-heading2-description\":\"2nd level heading\",\"wikieditor-toolbar-help-content-heading2-syntax\":\"== Heading text ==\",\"wikieditor-toolbar-help-content-heading2-result\":\"<h2>Heading text<\\/h2>\",\"wikieditor-toolbar-help-content-heading3-description\":\"3rd level heading\",\"wikieditor-toolbar-help-content-heading3-syntax\":\"=== Heading text ===\",\"wikieditor-toolbar-help-content-heading3-result\":\"<h3>Heading text<\\/h3>\",\"wikieditor-toolbar-help-content-heading4-description\":\"4th level heading\",\"wikieditor-toolbar-help-content-heading4-syntax\":\"==== Heading text ====\",\"wikieditor-toolbar-help-content-heading4-result\":\"<h4>Heading text<\\/h4>\",\"wikieditor-toolbar-help-content-heading5-description\":\"5th level heading\",\"wikieditor-toolbar-help-content-heading5-syntax\":\"===== Heading text =====\",\"wikieditor-toolbar-help-content-heading5-result\":\"<h5>Heading text<\\/h5>\",\"wikieditor-toolbar-help-content-ulist-description\":\"Bulleted list\",\"wikieditor-toolbar-help-content-ulist-syntax\":\"* List item<br \\/>* List item\",\"wikieditor-toolbar-help-content-ulist-result\":\"<ul><li>List item<\\/li><li>List item<\\/li><\\/ul>\",\"wikieditor-toolbar-help-content-olist-description\":\"Numbered list\",\"wikieditor-toolbar-help-content-olist-syntax\":\"# List item<br \\/># List item\",\"wikieditor-toolbar-help-content-olist-result\":\"<ol><li>List item<\\/li><li>List item<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-file-description\":\"Embedded file\",\"wikieditor-toolbar-help-content-file-syntax\":\"[[{{ns:file}}:Example.png|thumb|Caption text]]\",\"wikieditor-toolbar-help-content-file-result\":\"<div style=\'width:104px;\' class=\'thumbinner\'><a title=\'Caption text\' class=\'image\' href=\'#\'><img height=\'50\' width=\'100\' border=\'0\' class=\'thumbimage\' src=\'extensions\\/UsabilityInitiative\\/images\\/wikiEditor\\/toolbar\\/example-image.png\' alt=\'\'\\/><\\/a><div class=\'thumbcaption\'><div class=\'magnify\'><a title=\'Enlarge\' class=\'internal\' href=\'#\'><img height=\'11\' width=\'15\' alt=\'\' src=\'$1\\/common\\/images\\/magnify-clip.png\'\\/><\\/a><\\/div>Caption text<\\/div><\\/div>\",\"wikieditor-toolbar-help-content-reference-description\":\"Reference\",\"wikieditor-toolbar-help-content-reference-syntax\":\"Page text.&lt;ref name=\\\"test\\\"&gt;[http:\\/\\/www.example.org Link text], additional text.&lt;\\/ref&gt;\",\"wikieditor-toolbar-help-content-reference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-rereference-description\":\"Additional use of same reference\",\"wikieditor-toolbar-help-content-rereference-syntax\":\"&lt;ref name=\\\"test\\\" \\/&gt;\",\"wikieditor-toolbar-help-content-rereference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-showreferences-description\":\"Display references\",\"wikieditor-toolbar-help-content-showreferences-syntax\":\"&lt;references \\/&gt;\",\"wikieditor-toolbar-help-content-showreferences-result\":\"<ol class=\'references\'><li id=\'cite_note-test-0\'><b><a title=\'\' href=\'#\'>^<\\/a><\\/b> <a rel=\'nofollow\' title=\'http:\\/\\/www.example.org\' class=\'external text\' href=\'#\'>Link text<\\/a>, additional text.<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-signaturetimestamp-description\":\"Signature with timestamp\",\"wikieditor-toolbar-help-content-signaturetimestamp-syntax\":\"~~~~\",\"wikieditor-toolbar-help-content-signaturetimestamp-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>) 15:54, 10 June 2009 (UTC)\",\"wikieditor-toolbar-help-content-signature-description\":\"Signature\",\"wikieditor-toolbar-help-content-signature-syntax\":\"~~~\",\"wikieditor-toolbar-help-content-signature-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>)\",\"wikieditor-toolbar-help-content-indent-description\":\"Indent\",\"wikieditor-toolbar-help-content-indent-syntax\":\"Normal text<br \\/>:Indented text<br \\/>::Indented text\",\"wikieditor-toolbar-help-content-indent-result\":\"Normal text<dl><dd>Indented text<dl><dd>Indented text<\\/dd><\\/dl><\\/dd><\\/dl>\"}','20110110172914'),('jquery.async','en','{}','20110110172915'),('jquery.autoEllipsis','en','{}','20110110172915'),('jquery.checkboxShiftClick','en','{}','20110110172915'),('jquery.client','en','{}','20110110172915'),('jquery.cookie','en','{}','20110110172915'),('jquery.delayedBind','en','{}','20110110172915'),('jquery.highlightText','en','{}','20110110172915'),('jquery.makeCollapsible','en','{\"collapsible-expand\":\"Expand\",\"collapsible-collapse\":\"Collapse\"}','20110110172915'),('jquery.placeholder','en','{}','20110110172915'),('jquery.suggestions','en','{}','20110110172915'),('jquery.tabIndex','en','{}','20110110172915'),('jquery.textSelection','en','{}','20110110172915'),('jquery.wikiEditor','en','{\"wikieditor-wikitext-tab\":\"Wikitext\",\"wikieditor-loading\":\"Loading\"}','20110110172914'),('jquery.wikiEditor.toolbar','en','{}','20110110172914'),('mediawiki.action.watch.ajax','en','{}','20110110172915'),('mediawiki.language','en','{}','20110110172915'),('mediawiki.legacy.ajax','en','{\"watch\":\"Watch\",\"unwatch\":\"Unwatch\",\"watching\":\"Watching...\",\"unwatching\":\"Unwatching...\",\"tooltip-ca-watch\":\"Add this page to your watchlist\",\"tooltip-ca-unwatch\":\"Remove this page from your watchlist\"}','20110110172915'),('mediawiki.legacy.edit','en','{}','20110110172915'),('mediawiki.legacy.wikibits','en','{\"showtoc\":\"show\",\"hidetoc\":\"hide\"}','20110110172915'),('mediawiki.util','en','{}','20110110172915');
-/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_msg_resource_links`
---
-
-DROP TABLE IF EXISTS `mw_msg_resource_links`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_msg_resource_links` (
-  `mrl_resource` varbinary(255) NOT NULL,
-  `mrl_message` varbinary(255) NOT NULL,
-  UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_msg_resource_links`
---
-
-LOCK TABLES `mw_msg_resource_links` WRITE;
-/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
-INSERT INTO `mw_msg_resource_links` VALUES ('jquery.makeCollapsible','collapsible-collapse'),('jquery.makeCollapsible','collapsible-expand'),('mediawiki.legacy.wikibits','hidetoc'),('mediawiki.legacy.wikibits','showtoc'),('mediawiki.legacy.ajax','tooltip-ca-unwatch'),('mediawiki.legacy.ajax','tooltip-ca-watch'),('mediawiki.legacy.ajax','unwatch'),('mediawiki.legacy.ajax','unwatching'),('ext.vector.collapsibleNav','vector-collapsiblenav-more'),('ext.vector.simpleSearch','vector-simplesearch-containing'),('ext.vector.simpleSearch','vector-simplesearch-search'),('mediawiki.legacy.ajax','watch'),('mediawiki.legacy.ajax','watching'),('jquery.wikiEditor','wikieditor-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-arabic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-bangla'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-cyrillic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-greek'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-gujarati'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-hebrew'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-ipa'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-khmer'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-lao'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latin'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latinextended'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-persian'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-sinhala'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-symbols'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-telugu'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-thai'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-discussion'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-list'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-advanced'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-characters'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-help'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-pre'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-1'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-2'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-3'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-4'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-5'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-empty'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-exists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-external'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-notexists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-newline'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-findnext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replaceall'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replacenext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-case'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-close'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-emptysearch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-invalidregex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-nomatch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-regex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-search'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-success'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-signature'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-columns'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-rows'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-cell-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-old'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-invalidnumber'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-sortable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-toomany'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-wikitable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-zero'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink-example'),('jquery.wikiEditor','wikieditor-wikitext-tab');
-/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_objectcache`
---
-
-DROP TABLE IF EXISTS `mw_objectcache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_objectcache` (
-  `keyname` varbinary(255) NOT NULL DEFAULT '',
-  `value` mediumblob,
-  `exptime` datetime DEFAULT NULL,
-  PRIMARY KEY (`keyname`),
-  KEY `exptime` (`exptime`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_objectcache`
---
-
-LOCK TABLES `mw_objectcache` WRITE;
-/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_oldimage`
---
-
-DROP TABLE IF EXISTS `mw_oldimage`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_oldimage` (
-  `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
-  `oi_width` int(11) NOT NULL DEFAULT '0',
-  `oi_height` int(11) NOT NULL DEFAULT '0',
-  `oi_bits` int(11) NOT NULL DEFAULT '0',
-  `oi_description` tinyblob NOT NULL,
-  `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `oi_metadata` mediumblob NOT NULL,
-  `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
-  `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
-  `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
-  KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
-  KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
-  KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
-  KEY `oi_sha1` (`oi_sha1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_oldimage`
---
-
-LOCK TABLES `mw_oldimage` WRITE;
-/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page`
---
-
-DROP TABLE IF EXISTS `mw_page`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page` (
-  `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `page_namespace` int(11) NOT NULL,
-  `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `page_restrictions` tinyblob NOT NULL,
-  `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
-  `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `page_random` double unsigned NOT NULL,
-  `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `page_latest` int(10) unsigned NOT NULL,
-  `page_len` int(10) unsigned NOT NULL,
-  PRIMARY KEY (`page_id`),
-  UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
-  KEY `page_random` (`page_random`),
-  KEY `page_len` (`page_len`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page`
---
-
-LOCK TABLES `mw_page` WRITE;
-/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
-INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',3,0,1,0.045389076294,'20110107184113',1,438),(2,0,'TestResources','',0,0,1,0.227355086893,'20110110173217',2,57);
-/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page_props`
---
-
-DROP TABLE IF EXISTS `mw_page_props`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page_props` (
-  `pp_page` int(11) NOT NULL,
-  `pp_propname` varbinary(60) NOT NULL,
-  `pp_value` blob NOT NULL,
-  UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page_props`
---
-
-LOCK TABLES `mw_page_props` WRITE;
-/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page_restrictions`
---
-
-DROP TABLE IF EXISTS `mw_page_restrictions`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page_restrictions` (
-  `pr_page` int(11) NOT NULL,
-  `pr_type` varbinary(60) NOT NULL,
-  `pr_level` varbinary(60) NOT NULL,
-  `pr_cascade` tinyint(4) NOT NULL,
-  `pr_user` int(11) DEFAULT NULL,
-  `pr_expiry` varbinary(14) DEFAULT NULL,
-  `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  PRIMARY KEY (`pr_id`),
-  UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
-  KEY `pr_typelevel` (`pr_type`,`pr_level`),
-  KEY `pr_level` (`pr_level`),
-  KEY `pr_cascade` (`pr_cascade`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page_restrictions`
---
-
-LOCK TABLES `mw_page_restrictions` WRITE;
-/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_pagelinks`
---
-
-DROP TABLE IF EXISTS `mw_pagelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_pagelinks` (
-  `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `pl_namespace` int(11) NOT NULL DEFAULT '0',
-  `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
-  UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_pagelinks`
---
-
-LOCK TABLES `mw_pagelinks` WRITE;
-/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_protected_titles`
---
-
-DROP TABLE IF EXISTS `mw_protected_titles`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_protected_titles` (
-  `pt_namespace` int(11) NOT NULL,
-  `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `pt_user` int(10) unsigned NOT NULL,
-  `pt_reason` tinyblob,
-  `pt_timestamp` binary(14) NOT NULL,
-  `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
-  `pt_create_perm` varbinary(60) NOT NULL,
-  UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
-  KEY `pt_timestamp` (`pt_timestamp`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_protected_titles`
---
-
-LOCK TABLES `mw_protected_titles` WRITE;
-/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycache`
---
-
-DROP TABLE IF EXISTS `mw_querycache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycache` (
-  `qc_type` varbinary(32) NOT NULL,
-  `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
-  `qc_namespace` int(11) NOT NULL DEFAULT '0',
-  `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  KEY `qc_type` (`qc_type`,`qc_value`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycache`
---
-
-LOCK TABLES `mw_querycache` WRITE;
-/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycache_info`
---
-
-DROP TABLE IF EXISTS `mw_querycache_info`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycache_info` (
-  `qci_type` varbinary(32) NOT NULL DEFAULT '',
-  `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
-  UNIQUE KEY `qci_type` (`qci_type`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycache_info`
---
-
-LOCK TABLES `mw_querycache_info` WRITE;
-/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycachetwo`
---
-
-DROP TABLE IF EXISTS `mw_querycachetwo`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycachetwo` (
-  `qcc_type` varbinary(32) NOT NULL,
-  `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
-  `qcc_namespace` int(11) NOT NULL DEFAULT '0',
-  `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
-  `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  KEY `qcc_type` (`qcc_type`,`qcc_value`),
-  KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
-  KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycachetwo`
---
-
-LOCK TABLES `mw_querycachetwo` WRITE;
-/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_recentchanges`
---
-
-DROP TABLE IF EXISTS `mw_recentchanges`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_recentchanges` (
-  `rc_id` int(11) NOT NULL AUTO_INCREMENT,
-  `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
-  `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
-  `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `rc_namespace` int(11) NOT NULL DEFAULT '0',
-  `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_ip` varbinary(40) NOT NULL DEFAULT '',
-  `rc_old_len` int(11) DEFAULT NULL,
-  `rc_new_len` int(11) DEFAULT NULL,
-  `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_log_type` varbinary(255) DEFAULT NULL,
-  `rc_log_action` varbinary(255) DEFAULT NULL,
-  `rc_params` blob,
-  PRIMARY KEY (`rc_id`),
-  KEY `rc_timestamp` (`rc_timestamp`),
-  KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
-  KEY `rc_cur_id` (`rc_cur_id`),
-  KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
-  KEY `rc_ip` (`rc_ip`),
-  KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
-  KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_recentchanges`
---
-
-LOCK TABLES `mw_recentchanges` WRITE;
-/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
-INSERT INTO `mw_recentchanges` VALUES (1,'20110107184113','20110107184113',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'',''),(2,'20110110173131','20110110173131',1,'WikiSysop',0,'TestResources','Created page with \"Test the the SimpleSelenium database was loaded correctly\"',0,0,1,2,2,0,1,0,'',1,'::1',0,57,0,0,NULL,'','');
-/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_redirect`
---
-
-DROP TABLE IF EXISTS `mw_redirect`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_redirect` (
-  `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `rd_namespace` int(11) NOT NULL DEFAULT '0',
-  `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rd_interwiki` varchar(32) DEFAULT NULL,
-  `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
-  PRIMARY KEY (`rd_from`),
-  KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_redirect`
---
-
-LOCK TABLES `mw_redirect` WRITE;
-/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_revision`
---
-
-DROP TABLE IF EXISTS `mw_revision`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_revision` (
-  `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `rev_page` int(10) unsigned NOT NULL,
-  `rev_text_id` int(10) unsigned NOT NULL,
-  `rev_comment` tinyblob NOT NULL,
-  `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rev_len` int(10) unsigned DEFAULT NULL,
-  `rev_parent_id` int(10) unsigned DEFAULT NULL,
-  PRIMARY KEY (`rev_id`),
-  UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
-  KEY `rev_timestamp` (`rev_timestamp`),
-  KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
-  KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
-  KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_revision`
---
-
-LOCK TABLES `mw_revision` WRITE;
-/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
-INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20110107184113',0,0,438,0),(2,2,2,'Created page with \"Test the the SimpleSelenium database was loaded correctly\"',1,'WikiSysop','20110110173131',0,0,57,0);
-/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_searchindex`
---
-
-DROP TABLE IF EXISTS `mw_searchindex`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_searchindex` (
-  `si_page` int(10) unsigned NOT NULL,
-  `si_title` varchar(255) NOT NULL DEFAULT '',
-  `si_text` mediumtext NOT NULL,
-  UNIQUE KEY `si_page` (`si_page`),
-  FULLTEXT KEY `si_title` (`si_title`),
-  FULLTEXT KEY `si_text` (`si_text`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_searchindex`
---
-
-LOCK TABLES `mw_searchindex` WRITE;
-/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
-INSERT INTO `mw_searchindex` VALUES (1,'main page','  mediawiki hasu800 been successfully installed.  consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list '),(2,'testresources',' test theu800 theu800 simpleselenium database wasu800 loaded correctly ');
-/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_site_stats`
---
-
-DROP TABLE IF EXISTS `mw_site_stats`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_site_stats` (
-  `ss_row_id` int(10) unsigned NOT NULL,
-  `ss_total_views` bigint(20) unsigned DEFAULT '0',
-  `ss_total_edits` bigint(20) unsigned DEFAULT '0',
-  `ss_good_articles` bigint(20) unsigned DEFAULT '0',
-  `ss_total_pages` bigint(20) DEFAULT '-1',
-  `ss_users` bigint(20) DEFAULT '-1',
-  `ss_active_users` bigint(20) DEFAULT '-1',
-  `ss_admins` int(11) DEFAULT '-1',
-  `ss_images` int(11) DEFAULT '0',
-  UNIQUE KEY `ss_row_id` (`ss_row_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_site_stats`
---
-
-LOCK TABLES `mw_site_stats` WRITE;
-/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
-INSERT INTO `mw_site_stats` VALUES (1,3,2,1,2,1,-1,-1,0);
-/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_tag_summary`
---
-
-DROP TABLE IF EXISTS `mw_tag_summary`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_tag_summary` (
-  `ts_rc_id` int(11) DEFAULT NULL,
-  `ts_log_id` int(11) DEFAULT NULL,
-  `ts_rev_id` int(11) DEFAULT NULL,
-  `ts_tags` blob NOT NULL,
-  UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
-  UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
-  UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_tag_summary`
---
-
-LOCK TABLES `mw_tag_summary` WRITE;
-/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_templatelinks`
---
-
-DROP TABLE IF EXISTS `mw_templatelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_templatelinks` (
-  `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `tl_namespace` int(11) NOT NULL DEFAULT '0',
-  `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
-  UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_templatelinks`
---
-
-LOCK TABLES `mw_templatelinks` WRITE;
-/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_text`
---
-
-DROP TABLE IF EXISTS `mw_text`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_text` (
-  `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `old_text` mediumblob NOT NULL,
-  `old_flags` tinyblob NOT NULL,
-  PRIMARY KEY (`old_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_text`
---
-
-LOCK TABLES `mw_text` WRITE;
-/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
-INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8'),(2,'Test the the SimpleSelenium database was loaded correctly','utf-8');
-/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_trackbacks`
---
-
-DROP TABLE IF EXISTS `mw_trackbacks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_trackbacks` (
-  `tb_id` int(11) NOT NULL AUTO_INCREMENT,
-  `tb_page` int(11) DEFAULT NULL,
-  `tb_title` varchar(255) NOT NULL,
-  `tb_url` blob NOT NULL,
-  `tb_ex` text,
-  `tb_name` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`tb_id`),
-  KEY `tb_page` (`tb_page`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_trackbacks`
---
-
-LOCK TABLES `mw_trackbacks` WRITE;
-/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_transcache`
---
-
-DROP TABLE IF EXISTS `mw_transcache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_transcache` (
-  `tc_url` varbinary(255) NOT NULL,
-  `tc_contents` text,
-  `tc_time` binary(14) DEFAULT NULL,
-  UNIQUE KEY `tc_url_idx` (`tc_url`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_transcache`
---
-
-LOCK TABLES `mw_transcache` WRITE;
-/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_updatelog`
---
-
-DROP TABLE IF EXISTS `mw_updatelog`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_updatelog` (
-  `ul_key` varchar(255) NOT NULL,
-  `ul_value` blob,
-  PRIMARY KEY (`ul_key`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_updatelog`
---
-
-LOCK TABLES `mw_updatelog` WRITE;
-/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
-INSERT INTO `mw_updatelog` VALUES ('cl_fields_update',NULL),('convert transcache field',NULL),('mime_minor_length',NULL),('populate category',NULL),('populate rev_len',NULL),('populate rev_parent_id',NULL),('updatelist-1.18alpha-1294425799','a:128:{i:0;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:6:\"ipb_id\";i:3;s:18:\"patch-ipblocks.sql\";}i:1;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:10:\"ipb_expiry\";i:3;s:20:\"patch-ipb_expiry.sql\";}i:2;a:1:{i:0;s:17:\"doInterwikiUpdate\";}i:3;a:1:{i:0;s:13:\"doIndexUpdate\";}i:4;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"hitcounter\";i:2;s:20:\"patch-hitcounter.sql\";}i:5;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:7:\"rc_type\";i:3;s:17:\"patch-rc_type.sql\";}i:6;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_real_name\";i:3;s:23:\"patch-user-realname.sql\";}i:7;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"querycache\";i:2;s:20:\"patch-querycache.sql\";}i:8;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"objectcache\";i:2;s:21:\"patch-objectcache.sql\";}i:9;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"categorylinks\";i:2;s:23:\"patch-categorylinks.sql\";}i:10;a:1:{i:0;s:16:\"doOldLinksUpdate\";}i:11;a:1:{i:0;s:22:\"doFixAncientImagelinks\";}i:12;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_ip\";i:3;s:15:\"patch-rc_ip.sql\";}i:13;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:7:\"PRIMARY\";i:3;s:28:\"patch-image_name_primary.sql\";}i:14;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_id\";i:3;s:15:\"patch-rc_id.sql\";}i:15;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_patrolled\";i:3;s:19:\"patch-rc-patrol.sql\";}i:16;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"logging\";i:2;s:17:\"patch-logging.sql\";}i:17;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:10:\"user_token\";i:3;s:20:\"patch-user_token.sql\";}i:18;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"watchlist\";i:2;s:24:\"wl_notificationtimestamp\";i:3;s:28:\"patch-email-notification.sql\";}i:19;a:1:{i:0;s:17:\"doWatchlistUpdate\";}i:20;a:4:{i:0;s:9:\"dropField\";i:1;s:4:\"user\";i:2;s:33:\"user_emailauthenticationtimestamp\";i:3;s:30:\"patch-email-authentication.sql\";}i:21;a:1:{i:0;s:21:\"doSchemaRestructuring\";}i:22;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:10:\"log_params\";i:3;s:20:\"patch-log_params.sql\";}i:23;a:4:{i:0;s:8:\"checkBin\";i:1;s:7:\"logging\";i:2;s:9:\"log_title\";i:3;s:23:\"patch-logging-title.sql\";}i:24;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:9:\"ar_rev_id\";i:3;s:24:\"patch-archive-rev_id.sql\";}i:25;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"page\";i:2;s:8:\"page_len\";i:3;s:18:\"patch-page_len.sql\";}i:26;a:4:{i:0;s:9:\"dropField\";i:1;s:8:\"revision\";i:2;s:17:\"inverse_timestamp\";i:3;s:27:\"patch-inverse_timestamp.sql\";}i:27;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_text_id\";i:3;s:21:\"patch-rev_text_id.sql\";}i:28;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_deleted\";i:3;s:21:\"patch-rev_deleted.sql\";}i:29;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:9:\"img_width\";i:3;s:19:\"patch-img_width.sql\";}i:30;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:12:\"img_metadata\";i:3;s:22:\"patch-img_metadata.sql\";}i:31;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:16:\"user_email_token\";i:3;s:26:\"patch-user_email_token.sql\";}i:32;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_text_id\";i:3;s:25:\"patch-archive-text_id.sql\";}i:33;a:1:{i:0;s:15:\"doNamespaceSize\";}i:34;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:14:\"img_media_type\";i:3;s:24:\"patch-img_media_type.sql\";}i:35;a:1:{i:0;s:17:\"doPagelinksUpdate\";}i:36;a:4:{i:0;s:9:\"dropField\";i:1;s:5:\"image\";i:2;s:8:\"img_type\";i:3;s:23:\"patch-drop_img_type.sql\";}i:37;a:1:{i:0;s:18:\"doUserUniqueUpdate\";}i:38;a:1:{i:0;s:18:\"doUserGroupsUpdate\";}i:39;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:14:\"ss_total_pages\";i:3;s:27:\"patch-ss_total_articles.sql\";}i:40;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"user_newtalk\";i:2;s:22:\"patch-usernewtalk2.sql\";}i:41;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"transcache\";i:2;s:20:\"patch-transcache.sql\";}i:42;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:8:\"iw_trans\";i:3;s:25:\"patch-interwiki-trans.sql\";}i:43;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"trackbacks\";i:2;s:20:\"patch-trackbacks.sql\";}i:44;a:1:{i:0;s:15:\"doWatchlistNull\";}i:45;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"logging\";i:2;s:5:\"times\";i:3;s:29:\"patch-logging-times-index.sql\";}i:46;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_range_start\";i:3;s:25:\"patch-ipb_range_start.sql\";}i:47;a:1:{i:0;s:18:\"doPageRandomUpdate\";}i:48;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_registration\";i:3;s:27:\"patch-user_registration.sql\";}i:49;a:1:{i:0;s:21:\"doTemplatelinksUpdate\";}i:50;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"externallinks\";i:2;s:23:\"patch-externallinks.sql\";}i:51;a:3:{i:0;s:8:\"addTable\";i:1;s:3:\"job\";i:2;s:13:\"patch-job.sql\";}i:52;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:9:\"ss_images\";i:3;s:19:\"patch-ss_images.sql\";}i:53;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"langlinks\";i:2;s:19:\"patch-langlinks.sql\";}i:54;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"querycache_info\";i:2;s:24:\"patch-querycacheinfo.sql\";}i:55;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"filearchive\";i:2;s:21:\"patch-filearchive.sql\";}i:56;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:13:\"ipb_anon_only\";i:3;s:23:\"patch-ipb_anon_only.sql\";}i:57;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:14:\"rc_ns_usertext\";i:3;s:31:\"patch-recentchanges-utindex.sql\";}i:58;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_user_text\";i:3;s:28:\"patch-rc_user_text-index.sql\";}i:59;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_newpass_time\";i:3;s:27:\"patch-user_newpass_time.sql\";}i:60;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"redirect\";i:2;s:18:\"patch-redirect.sql\";}i:61;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"querycachetwo\";i:2;s:23:\"patch-querycachetwo.sql\";}i:62;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:20:\"ipb_enable_autoblock\";i:3;s:32:\"patch-ipb_optional_autoblock.sql\";}i:63;a:1:{i:0;s:26:\"doBacklinkingIndicesUpdate\";}i:64;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_old_len\";i:3;s:16:\"patch-rc_len.sql\";}i:65;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_editcount\";i:3;s:24:\"patch-user_editcount.sql\";}i:66;a:1:{i:0;s:20:\"doRestrictionsUpdate\";}i:67;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:6:\"log_id\";i:3;s:16:\"patch-log_id.sql\";}i:68;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:13:\"rev_parent_id\";i:3;s:23:\"patch-rev_parent_id.sql\";}i:69;a:4:{i:0;s:8:\"addField\";i:1;s:17:\"page_restrictions\";i:2;s:5:\"pr_id\";i:3;s:35:\"patch-page_restrictions_sortkey.sql\";}i:70;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:7:\"rev_len\";i:3;s:17:\"patch-rev_len.sql\";}i:71;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_deleted\";i:3;s:20:\"patch-rc_deleted.sql\";}i:72;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:11:\"log_deleted\";i:3;s:21:\"patch-log_deleted.sql\";}i:73;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_deleted\";i:3;s:20:\"patch-ar_deleted.sql\";}i:74;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_deleted\";i:3;s:21:\"patch-ipb_deleted.sql\";}i:75;a:4:{i:0;s:8:\"addField\";i:1;s:11:\"filearchive\";i:2;s:10:\"fa_deleted\";i:3;s:20:\"patch-fa_deleted.sql\";}i:76;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:6:\"ar_len\";i:3;s:16:\"patch-ar_len.sql\";}i:77;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_block_email\";i:3;s:22:\"patch-ipb_emailban.sql\";}i:78;a:1:{i:0;s:28:\"doCategorylinksIndicesUpdate\";}i:79;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"oldimage\";i:2;s:11:\"oi_metadata\";i:3;s:21:\"patch-oi_metadata.sql\";}i:80;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"archive\";i:2;s:18:\"usertext_timestamp\";i:3;s:28:\"patch-archive-user-index.sql\";}i:81;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:22:\"img_usertext_timestamp\";i:3;s:26:\"patch-image-user-index.sql\";}i:82;a:4:{i:0;s:8:\"addIndex\";i:1;s:8:\"oldimage\";i:2;s:21:\"oi_usertext_timestamp\";i:3;s:29:\"patch-oldimage-user-index.sql\";}i:83;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_page_id\";i:3;s:25:\"patch-archive-page_id.sql\";}i:84;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:8:\"img_sha1\";i:3;s:18:\"patch-img_sha1.sql\";}i:85;a:3:{i:0;s:8:\"addTable\";i:1;s:16:\"protected_titles\";i:2;s:26:\"patch-protected_titles.sql\";}i:86;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_by_text\";i:3;s:21:\"patch-ipb_by_text.sql\";}i:87;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"page_props\";i:2;s:20:\"patch-page_props.sql\";}i:88;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"updatelog\";i:2;s:19:\"patch-updatelog.sql\";}i:89;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"category\";i:2;s:18:\"patch-category.sql\";}i:90;a:1:{i:0;s:20:\"doCategoryPopulation\";}i:91;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:12:\"ar_parent_id\";i:3;s:22:\"patch-ar_parent_id.sql\";}i:92;a:4:{i:0;s:8:\"addField\";i:1;s:12:\"user_newtalk\";i:2;s:19:\"user_last_timestamp\";i:3;s:29:\"patch-user_last_timestamp.sql\";}i:93;a:1:{i:0;s:18:\"doPopulateParentId\";}i:94;a:4:{i:0;s:8:\"checkBin\";i:1;s:16:\"protected_titles\";i:2;s:8:\"pt_title\";i:3;s:27:\"patch-pt_title-encoding.sql\";}i:95;a:1:{i:0;s:28:\"doMaybeProfilingMemoryUpdate\";}i:96;a:1:{i:0;s:26:\"doFilearchiveIndicesUpdate\";}i:97;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:15:\"ss_active_users\";i:3;s:25:\"patch-ss_active_users.sql\";}i:98;a:1:{i:0;s:17:\"doActiveUsersInit\";}i:99;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:18:\"ipb_allow_usertalk\";i:3;s:28:\"patch-ipb_allow_usertalk.sql\";}i:100;a:1:{i:0;s:14:\"doUniquePlTlIl\";}i:101;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"change_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:102;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"tag_summary\";i:2;s:20:\"patch-change_tag.sql\";}i:103;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"valid_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:104;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"user_properties\";i:2;s:25:\"patch-user_properties.sql\";}i:105;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"log_search\";i:2;s:20:\"patch-log_search.sql\";}i:106;a:1:{i:0;s:21:\"doLogSearchPopulation\";}i:107;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:13:\"log_user_text\";i:3;s:23:\"patch-log_user_text.sql\";}i:108;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"l10n_cache\";i:2;s:20:\"patch-l10n_cache.sql\";}i:109;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"external_user\";i:2;s:23:\"patch-external_user.sql\";}i:110;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"log_search\";i:2;s:12:\"ls_field_val\";i:3;s:33:\"patch-log_search-rename-index.sql\";}i:111;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"change_tag\";i:2;s:17:\"change_tag_rc_tag\";i:3;s:28:\"patch-change_tag-indexes.sql\";}i:112;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"redirect\";i:2;s:12:\"rd_interwiki\";i:3;s:22:\"patch-rd_interwiki.sql\";}i:113;a:1:{i:0;s:23:\"doUpdateTranscacheField\";}i:114;a:1:{i:0;s:14:\"renameEuWikiId\";}i:115;a:1:{i:0;s:22:\"doUpdateMimeMinorField\";}i:116;a:1:{i:0;s:16:\"doPopulateRevLen\";}i:117;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"iwlinks\";i:2;s:17:\"patch-iwlinks.sql\";}i:118;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_title_from\";i:3;s:27:\"patch-rename-iwl_prefix.sql\";}i:119;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"updatelog\";i:2;s:8:\"ul_value\";i:3;s:18:\"patch-ul_value.sql\";}i:120;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:6:\"iw_api\";i:3;s:27:\"patch-iw_api_and_wikiid.sql\";}i:121;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:10:\"iwl_prefix\";i:3;s:25:\"patch-kill-iwl_prefix.sql\";}i:122;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_from_title\";i:3;s:22:\"patch-kill-iwl_pft.sql\";}i:123;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"categorylinks\";i:2;s:12:\"cl_collation\";i:3;s:40:\"patch-categorylinks-better-collation.sql\";}i:124;a:1:{i:0;s:16:\"doClFieldsUpdate\";}i:125;a:1:{i:0;s:17:\"doCollationUpdate\";}i:126;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"msg_resource\";i:2;s:22:\"patch-msg_resource.sql\";}i:127;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"module_deps\";i:2;s:21:\"patch-module_deps.sql\";}}');
-/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user`
---
-
-DROP TABLE IF EXISTS `mw_user`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user` (
-  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `user_password` tinyblob NOT NULL,
-  `user_newpassword` tinyblob NOT NULL,
-  `user_newpass_time` binary(14) DEFAULT NULL,
-  `user_email` tinytext NOT NULL,
-  `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `user_email_authenticated` binary(14) DEFAULT NULL,
-  `user_email_token` binary(32) DEFAULT NULL,
-  `user_email_token_expires` binary(14) DEFAULT NULL,
-  `user_registration` binary(14) DEFAULT NULL,
-  `user_editcount` int(11) DEFAULT NULL,
-  PRIMARY KEY (`user_id`),
-  UNIQUE KEY `user_name` (`user_name`),
-  KEY `user_email_token` (`user_email_token`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user`
---
-
-LOCK TABLES `mw_user` WRITE;
-/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
-INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:9c595470:df2c1237ae75896744457e7dfbeb7f90','',NULL,'','','20110110173136','5e3b582786fa8150118cfa78f18de0c5',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20110107184113',1);
-/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_groups`
---
-
-DROP TABLE IF EXISTS `mw_user_groups`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_groups` (
-  `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ug_group` varbinary(16) NOT NULL DEFAULT '',
-  UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
-  KEY `ug_group` (`ug_group`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_groups`
---
-
-LOCK TABLES `mw_user_groups` WRITE;
-/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
-INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat'),(1,'sysop');
-/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_newtalk`
---
-
-DROP TABLE IF EXISTS `mw_user_newtalk`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_newtalk` (
-  `user_id` int(11) NOT NULL DEFAULT '0',
-  `user_ip` varbinary(40) NOT NULL DEFAULT '',
-  `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  KEY `user_id` (`user_id`),
-  KEY `user_ip` (`user_ip`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_newtalk`
---
-
-LOCK TABLES `mw_user_newtalk` WRITE;
-/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_properties`
---
-
-DROP TABLE IF EXISTS `mw_user_properties`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_properties` (
-  `up_user` int(11) NOT NULL,
-  `up_property` varbinary(32) NOT NULL,
-  `up_value` blob,
-  UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
-  KEY `user_properties_property` (`up_property`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_properties`
---
-
-LOCK TABLES `mw_user_properties` WRITE;
-/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_valid_tag`
---
-
-DROP TABLE IF EXISTS `mw_valid_tag`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_valid_tag` (
-  `vt_tag` varchar(255) NOT NULL,
-  PRIMARY KEY (`vt_tag`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_valid_tag`
---
-
-LOCK TABLES `mw_valid_tag` WRITE;
-/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_watchlist`
---
-
-DROP TABLE IF EXISTS `mw_watchlist`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_watchlist` (
-  `wl_user` int(10) unsigned NOT NULL,
-  `wl_namespace` int(11) NOT NULL DEFAULT '0',
-  `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
-  UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
-  KEY `namespace_title` (`wl_namespace`,`wl_title`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_watchlist`
---
-
-LOCK TABLES `mw_watchlist` WRITE;
-/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
-UNLOCK TABLES;
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2011-01-10  9:34:34
diff --git a/tests/selenium/data/SimpleSeleniumTestImages.zip b/tests/selenium/data/SimpleSeleniumTestImages.zip
deleted file mode 100644 (file)
index 0374a1f..0000000
Binary files a/tests/selenium/data/SimpleSeleniumTestImages.zip and /dev/null differ
diff --git a/tests/selenium/data/Wikipedia-logo-v2-de.png b/tests/selenium/data/Wikipedia-logo-v2-de.png
deleted file mode 100644 (file)
index 7038524..0000000
Binary files a/tests/selenium/data/Wikipedia-logo-v2-de.png and /dev/null differ
diff --git a/tests/selenium/data/mediawiki118_fresh_installation.sql b/tests/selenium/data/mediawiki118_fresh_installation.sql
deleted file mode 100644 (file)
index 7beb9e6..0000000
+++ /dev/null
@@ -1,1543 +0,0 @@
--- MySQL dump 10.13  Distrib 5.1.41, for Win32 (ia32)
---
--- Host: localhost    Database: test_wiki
--- ------------------------------------------------------
--- Server version      5.1.41
-
-/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
-/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
-/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
-/*!40101 SET NAMES utf8 */;
-/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
-/*!40103 SET TIME_ZONE='+00:00' */;
-/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
-/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
-/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
-
---
--- Table structure for table `mw_archive`
---
-
-DROP TABLE IF EXISTS `mw_archive`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_archive` (
-  `ar_namespace` int(11) NOT NULL DEFAULT '0',
-  `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `ar_text` mediumblob NOT NULL,
-  `ar_comment` tinyblob NOT NULL,
-  `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
-  `ar_flags` tinyblob NOT NULL,
-  `ar_rev_id` int(10) unsigned DEFAULT NULL,
-  `ar_text_id` int(10) unsigned DEFAULT NULL,
-  `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `ar_len` int(10) unsigned DEFAULT NULL,
-  `ar_page_id` int(10) unsigned DEFAULT NULL,
-  `ar_parent_id` int(10) unsigned DEFAULT NULL,
-  KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
-  KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
-  KEY `ar_page_revid` (`ar_namespace`,`ar_title`,`ar_rev_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_archive`
---
-
-LOCK TABLES `mw_archive` WRITE;
-/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_category`
---
-
-DROP TABLE IF EXISTS `mw_category`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_category` (
-  `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `cat_pages` int(11) NOT NULL DEFAULT '0',
-  `cat_subcats` int(11) NOT NULL DEFAULT '0',
-  `cat_files` int(11) NOT NULL DEFAULT '0',
-  `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`cat_id`),
-  UNIQUE KEY `cat_title` (`cat_title`),
-  KEY `cat_pages` (`cat_pages`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_category`
---
-
-LOCK TABLES `mw_category` WRITE;
-/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_categorylinks`
---
-
-DROP TABLE IF EXISTS `mw_categorylinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_categorylinks` (
-  `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
-  `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `cl_collation` varbinary(32) NOT NULL DEFAULT '',
-  `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
-  UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
-  KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
-  KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
-  KEY `cl_collation` (`cl_collation`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_categorylinks`
---
-
-LOCK TABLES `mw_categorylinks` WRITE;
-/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_change_tag`
---
-
-DROP TABLE IF EXISTS `mw_change_tag`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_change_tag` (
-  `ct_rc_id` int(11) DEFAULT NULL,
-  `ct_log_id` int(11) DEFAULT NULL,
-  `ct_rev_id` int(11) DEFAULT NULL,
-  `ct_tag` varchar(255) NOT NULL,
-  `ct_params` blob,
-  UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
-  UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
-  UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
-  KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_change_tag`
---
-
-LOCK TABLES `mw_change_tag` WRITE;
-/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_external_user`
---
-
-DROP TABLE IF EXISTS `mw_external_user`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_external_user` (
-  `eu_local_id` int(10) unsigned NOT NULL,
-  `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  PRIMARY KEY (`eu_local_id`),
-  UNIQUE KEY `eu_external_id` (`eu_external_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_external_user`
---
-
-LOCK TABLES `mw_external_user` WRITE;
-/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_externallinks`
---
-
-DROP TABLE IF EXISTS `mw_externallinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_externallinks` (
-  `el_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `el_to` blob NOT NULL,
-  `el_index` blob NOT NULL,
-  KEY `el_from` (`el_from`,`el_to`(40)),
-  KEY `el_to` (`el_to`(60),`el_from`),
-  KEY `el_index` (`el_index`(60))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_externallinks`
---
-
-LOCK TABLES `mw_externallinks` WRITE;
-/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
-INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents');
-INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings');
-INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ');
-INSERT INTO `mw_externallinks` VALUES (1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
-/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_filearchive`
---
-
-DROP TABLE IF EXISTS `mw_filearchive`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_filearchive` (
-  `fa_id` int(11) NOT NULL AUTO_INCREMENT,
-  `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
-  `fa_storage_group` varbinary(16) DEFAULT NULL,
-  `fa_storage_key` varbinary(64) DEFAULT '',
-  `fa_deleted_user` int(11) DEFAULT NULL,
-  `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `fa_deleted_reason` text,
-  `fa_size` int(10) unsigned DEFAULT '0',
-  `fa_width` int(11) DEFAULT '0',
-  `fa_height` int(11) DEFAULT '0',
-  `fa_metadata` mediumblob,
-  `fa_bits` int(11) DEFAULT '0',
-  `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
-  `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
-  `fa_description` tinyblob,
-  `fa_user` int(10) unsigned DEFAULT '0',
-  `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
-  `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`fa_id`),
-  KEY `fa_name` (`fa_name`,`fa_timestamp`),
-  KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
-  KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
-  KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_filearchive`
---
-
-LOCK TABLES `mw_filearchive` WRITE;
-/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_hitcounter`
---
-
-DROP TABLE IF EXISTS `mw_hitcounter`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_hitcounter` (
-  `hc_id` int(10) unsigned NOT NULL
-) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_hitcounter`
---
-
-LOCK TABLES `mw_hitcounter` WRITE;
-/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_image`
---
-
-DROP TABLE IF EXISTS `mw_image`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_image` (
-  `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `img_size` int(10) unsigned NOT NULL DEFAULT '0',
-  `img_width` int(11) NOT NULL DEFAULT '0',
-  `img_height` int(11) NOT NULL DEFAULT '0',
-  `img_metadata` mediumblob NOT NULL,
-  `img_bits` int(11) NOT NULL DEFAULT '0',
-  `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
-  `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
-  `img_description` tinyblob NOT NULL,
-  `img_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
-  `img_sha1` varbinary(32) NOT NULL DEFAULT '',
-  PRIMARY KEY (`img_name`),
-  KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
-  KEY `img_size` (`img_size`),
-  KEY `img_timestamp` (`img_timestamp`),
-  KEY `img_sha1` (`img_sha1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_image`
---
-
-LOCK TABLES `mw_image` WRITE;
-/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_imagelinks`
---
-
-DROP TABLE IF EXISTS `mw_imagelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_imagelinks` (
-  `il_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `il_from` (`il_from`,`il_to`),
-  UNIQUE KEY `il_to` (`il_to`,`il_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_imagelinks`
---
-
-LOCK TABLES `mw_imagelinks` WRITE;
-/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_interwiki`
---
-
-DROP TABLE IF EXISTS `mw_interwiki`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_interwiki` (
-  `iw_prefix` varchar(32) NOT NULL,
-  `iw_url` blob NOT NULL,
-  `iw_api` blob NOT NULL,
-  `iw_wikiid` varchar(64) NOT NULL,
-  `iw_local` tinyint(1) NOT NULL,
-  `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
-  UNIQUE KEY `iw_prefix` (`iw_prefix`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_interwiki`
---
-
-LOCK TABLES `mw_interwiki` WRITE;
-/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
-INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('advogato','http://www.advogato.org/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('arxiv','http://www.arxiv.org/abs/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('cache','http://www.google.com/search?q=cache:$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('commons','http://commons.wikimedia.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('docbook','http://wiki.docbook.org/topic/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('doi','http://dx.doi.org/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('foldoc','http://foldoc.org/?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('google','http://www.google.com/search?q=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('googlegroups','http://groups.google.com/groups?q=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('imdb','http://us.imdb.com/Title?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('keiki','http://kei.ki/en/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('linuxwiki','http://linuxwiki.de/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('metawikimedia','http://meta.wikimedia.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('moinmoin','http://purl.net/wiki/moin/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('mw','http://www.mediawiki.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('openwiki','http://openwiki.com/?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('ppr','http://c2.com/cgi/wiki?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('pythoninfo','http://wiki.python.org/moin/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('seattlewireless','http://seattlewireless.net/?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('senseislibrary','http://senseis.xmp.net/?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('sourceforge','http://sourceforge.net/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('squeak','http://wiki.squeak.org/squeak/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('susning','http://www.susning.nu/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('svgwiki','http://wiki.svg.org/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('tavi','http://tavi.sourceforge.net/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('tejo','http://www.tejo.org/vikio/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('theopedia','http://www.theopedia.com/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('tmbw','http://www.tmbw.net/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('tmnet','http://www.technomanifestos.net/?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('uea','http://www.tejo.org/uea/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('vinismo','http://vinismo.com/en/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('why','http://clublet.com/c/c/why?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wiki','http://c2.com/cgi/wiki?$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikia','http://www.wikia.com/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikicities','http://www.wikia.com/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikif1','http://www.wikif1.org/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikihow','http://www.wikihow.com/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikinews','http://en.wikinews.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikisource','http://wikisource.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikitravel','http://wikitravel.org/en/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wikt','http://en.wiktionary.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0);
-INSERT INTO `mw_interwiki` VALUES ('wlug','http://www.wlug.org.nz/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('zwiki','http://zwiki.org/$1','','',0,0);
-INSERT INTO `mw_interwiki` VALUES ('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
-/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_ipblocks`
---
-
-DROP TABLE IF EXISTS `mw_ipblocks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_ipblocks` (
-  `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
-  `ipb_address` tinyblob NOT NULL,
-  `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
-  `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `ipb_reason` tinyblob NOT NULL,
-  `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
-  `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
-  `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
-  `ipb_range_start` tinyblob NOT NULL,
-  `ipb_range_end` tinyblob NOT NULL,
-  `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
-  `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
-  PRIMARY KEY (`ipb_id`),
-  UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
-  KEY `ipb_user` (`ipb_user`),
-  KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
-  KEY `ipb_timestamp` (`ipb_timestamp`),
-  KEY `ipb_expiry` (`ipb_expiry`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_ipblocks`
---
-
-LOCK TABLES `mw_ipblocks` WRITE;
-/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_iwlinks`
---
-
-DROP TABLE IF EXISTS `mw_iwlinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_iwlinks` (
-  `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
-  `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
-  UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_iwlinks`
---
-
-LOCK TABLES `mw_iwlinks` WRITE;
-/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_job`
---
-
-DROP TABLE IF EXISTS `mw_job`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_job` (
-  `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `job_cmd` varbinary(60) NOT NULL DEFAULT '',
-  `job_namespace` int(11) NOT NULL,
-  `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `job_params` blob NOT NULL,
-  PRIMARY KEY (`job_id`),
-  KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_job`
---
-
-LOCK TABLES `mw_job` WRITE;
-/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_l10n_cache`
---
-
-DROP TABLE IF EXISTS `mw_l10n_cache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_l10n_cache` (
-  `lc_lang` varbinary(32) NOT NULL,
-  `lc_key` varchar(255) NOT NULL,
-  `lc_value` mediumblob NOT NULL,
-  KEY `lc_lang_key` (`lc_lang`,`lc_key`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
-
-
---
--- Table structure for table `mw_langlinks`
---
-
-DROP TABLE IF EXISTS `mw_langlinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_langlinks` (
-  `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `ll_lang` varbinary(20) NOT NULL DEFAULT '',
-  `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
-  KEY `ll_lang` (`ll_lang`,`ll_title`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_langlinks`
---
-
-LOCK TABLES `mw_langlinks` WRITE;
-/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_log_search`
---
-
-DROP TABLE IF EXISTS `mw_log_search`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_log_search` (
-  `ls_field` varbinary(32) NOT NULL,
-  `ls_value` varchar(255) NOT NULL,
-  `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
-  UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
-  KEY `ls_log_id` (`ls_log_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_log_search`
---
-
-LOCK TABLES `mw_log_search` WRITE;
-/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_logging`
---
-
-DROP TABLE IF EXISTS `mw_logging`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_logging` (
-  `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `log_type` varbinary(32) NOT NULL DEFAULT '',
-  `log_action` varbinary(32) NOT NULL DEFAULT '',
-  `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
-  `log_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `log_namespace` int(11) NOT NULL DEFAULT '0',
-  `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `log_page` int(10) unsigned DEFAULT NULL,
-  `log_comment` varchar(255) NOT NULL DEFAULT '',
-  `log_params` blob NOT NULL,
-  `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  PRIMARY KEY (`log_id`),
-  KEY `type_time` (`log_type`,`log_timestamp`),
-  KEY `user_time` (`log_user`,`log_timestamp`),
-  KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
-  KEY `times` (`log_timestamp`),
-  KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
-  KEY `log_page_id_time` (`log_page`,`log_timestamp`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_logging`
---
-
-LOCK TABLES `mw_logging` WRITE;
-/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_math`
---
-
-DROP TABLE IF EXISTS `mw_math`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_math` (
-  `math_inputhash` varbinary(16) NOT NULL,
-  `math_outputhash` varbinary(16) NOT NULL,
-  `math_html_conservativeness` tinyint(4) NOT NULL,
-  `math_html` text,
-  `math_mathml` text,
-  UNIQUE KEY `math_inputhash` (`math_inputhash`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_math`
---
-
-LOCK TABLES `mw_math` WRITE;
-/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_module_deps`
---
-
-DROP TABLE IF EXISTS `mw_module_deps`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_module_deps` (
-  `md_module` varbinary(255) NOT NULL,
-  `md_skin` varbinary(32) NOT NULL,
-  `md_deps` mediumblob NOT NULL,
-  UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_module_deps`
---
-
-LOCK TABLES `mw_module_deps` WRITE;
-/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_msg_resource`
---
-
-DROP TABLE IF EXISTS `mw_msg_resource`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_msg_resource` (
-  `mr_resource` varbinary(255) NOT NULL,
-  `mr_lang` varbinary(32) NOT NULL,
-  `mr_blob` mediumblob NOT NULL,
-  `mr_timestamp` binary(14) NOT NULL,
-  UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_msg_resource`
---
-
-LOCK TABLES `mw_msg_resource` WRITE;
-/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_msg_resource_links`
---
-
-DROP TABLE IF EXISTS `mw_msg_resource_links`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_msg_resource_links` (
-  `mrl_resource` varbinary(255) NOT NULL,
-  `mrl_message` varbinary(255) NOT NULL,
-  UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_msg_resource_links`
---
-
-LOCK TABLES `mw_msg_resource_links` WRITE;
-/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_objectcache`
---
-
-DROP TABLE IF EXISTS `mw_objectcache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_objectcache` (
-  `keyname` varbinary(255) NOT NULL DEFAULT '',
-  `value` mediumblob,
-  `exptime` datetime DEFAULT NULL,
-  PRIMARY KEY (`keyname`),
-  KEY `exptime` (`exptime`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_objectcache`
---
-
-LOCK TABLES `mw_objectcache` WRITE;
-/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:messages:en','K�2��.�2�R\ns\r\n���S�δ2��\ 5\0','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idhash:1-0!*!*!!en!*','�V[o�F\14�g~��\ f��\12\ 6B��P��m\12)$TK�\ fU�\ 6�\0�����8$\e\7f�9�a\rI�l��X>��ܹ�q�\aSa,��ʕ�\vx��?[~ʃ|\ 6�.\18Z\1e��\ 3\1e$�8Y�\'�I�Y�K�\16�-\04�U����J�\'&�uB)�:I�\18��\10���E�m�\1csk`�`k\ 3�Q�v��a��\13�\rZ��t�0����+P%GE\a�ـ�JX;\n\10\12\18-\14s\ 4\19P�@\17�B�b\13���8~�첒\19$�\18�ea\10\12�υ��f��+���0[,�F\18�x��d�\1d\'�\14z�0��BJ���=���\17J��c�\\��:�\14�&B��T��\'��C��Fdÿ׆Fq����Gd����%8G�0��A\16�I�\ 2�;                Ԙ\1d`�7�5�LI\r\ 1��(���{�c�����\18g+��8Qr�&�ͦ��A)�V��ЕPT��\\UƧtn�\1e�Z�\ 3e�SfJZ\1f(V\ 1\ 1\ fP�}��\b��0��O�N     �=j�\\H�\v�y�\\�\1eU[h]T:�\f��bd��u��\10+�j%\'�6k��f:E�\1c;�@Y\18ך��\144���Ȁ�\b�q�\v��\7fZ�º6<b�3��TU(d�\17�,\n���Y|�e�\'\a�5��T�\ 1\13fU�8}�\"��\ 4m�\ 3��/\10���}Uk�\119o��;��\ 3��|*R?�n���   3d��g1��y�\\f8gk\1e�����w\ 2��=�\18\1c\16\ 4�:/Y7���ۋ�^<�Ō����\15v#���i����\ 6C�#��6\Z�.0�Ua$4\19\11�=\Z���;�\ 1�4����\ 1Y=���5��\ 6�:kpΐq��Ŧ4��X���C��q\1fYߵ-��Lj�����D�f��\e��\f�:�\1e��\19�(3t��14C��J�#����\ 5����\15��WXT���Δy:�^�6�v�7����I�U�Ee�\a�(�p0��ga�6\7fMj��Sc�,ѫ@��ޅ+R\ 5\ f����A��xХ\'6���utǷbۛ��\17`j�8ؚ�G�IC<KS��\ 65�|�krJ\ 6\ry�\\b3xP���\ 3��ua�@�\ f���$SS�`��tQ.gw\17W��\r\19@\'���w�� ��\bxZ(�>5\ 4{�\v\ f��\adw�>�=J)\r�6\15t ��X��\12��M��\b�B�\n�ŖT��\13��b>�qg���\12\v\ 47�\f�z�n\ e7��vwr�-%u�-Qi�iX1��Ne\13���A#�v��\15ӧ�3��?','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idoptions:1','E��\ e�@\fD��\1f`�\v\"v�ƣ��Wh��,�b�!�\18⭙7�L+�\13\1c|}�t\f��I�$�<��\ 1�F\rpSl�4����OJN`\r\Z���\f\f\17ծ���)�\a�PY��$�K�\ f���գ9�Vjp72��E���c�Wp�2��\acVxu7\1e��\e        ����\b\12p#�r=.���[>y)\ f\ f\1fZp��\ 5','2010-12-31 13:16:31');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:3832ee25d9c44988461f5f339b9b6a48','+�26�Rr�MM�LTH�ɩV\0�Z(��(3�\ 4(R�d\r\0','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:aa0df16258ad99a1d249e796b5067ed9','+�2��Rr�MM�LTH�ɩN��K-�Q.,�L�NJ,R\0��s򋬔�\12\r���V�\Z\0','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:22814eeadc9cf0a9ebcd844e14198e66','m��r�0\f��y\f��\19��r�&Qޡמ!\n�\18qQ�Xq;}���$��ވ� �c!]]].o5S�\n�)Fq\f\ e��L^\18\ e�?�s�F�\ 2!\1d�O\a�M\\�������\0���N��\18Ɂ���լ�\ e���:��-�j��F��{ۅ�G�\13\"i�\ e� \11\Z�6�K����!��Y]=�F[�\ f~竍\17\12��䶃\16\b\12���`��\a9N�Ǵ���@�K��\11\ f|z�?1�A��\1f@J#_ԁ�7\'�l\18�1)\vJ�͵�).�3\vz�f�T�A���H\ eњ�[#)�BzRA�7֌��\"T�*~SW�\a\11\1c�/P���B�Ŏ;\Z�ay�6\1c����+U��?.$�6��-u\1dT�v@h��s�&�����Nإb\e�fJ�~\ 5�]\ 36\19��p��/q)�\12>\ f�E�1�\ 4�͔A\ne�L�g\ZE�`cW�����`fJ�E�a\19��>��b\n�ӑd�.u�do�\e�[\e�\nt��b�+�\1f��l\1f\Z?X*��Y�\1f(�օ\10;\e�L�\1cJqť\ 6ɝ\10���d$\19�\"�WzG�-@b~\ f+�#�kǞَ�Ƃ~������P)B  ���\16�q�Җ2��\11�r�Rl�\15���\ 1`\1cz   �\ f4�����ÝX�m�;�X݁t;r.�sA�\15�R��\ 5y)�kA�\nR�JT��J�U��*�W��_ߟ�4@�vt��f���\7f>\15\ 6���x���\ 3','2038-01-19 03:14:07');
-INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:dd9440c19c575629ac5ec90e489cf62e','+�21�R�\ 2��Ԕ�����L���Ĕ�\"��ĒT�j��̒T%+���ĔJ�ZMk.%k\0','2038-01-19 03:14:07');
-/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_oldimage`
---
-
-DROP TABLE IF EXISTS `mw_oldimage`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_oldimage` (
-  `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
-  `oi_width` int(11) NOT NULL DEFAULT '0',
-  `oi_height` int(11) NOT NULL DEFAULT '0',
-  `oi_bits` int(11) NOT NULL DEFAULT '0',
-  `oi_description` tinyblob NOT NULL,
-  `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `oi_metadata` mediumblob NOT NULL,
-  `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
-  `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
-  `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
-  `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
-  KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
-  KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
-  KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
-  KEY `oi_sha1` (`oi_sha1`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_oldimage`
---
-
-LOCK TABLES `mw_oldimage` WRITE;
-/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page`
---
-
-DROP TABLE IF EXISTS `mw_page`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page` (
-  `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `page_namespace` int(11) NOT NULL,
-  `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `page_restrictions` tinyblob NOT NULL,
-  `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
-  `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `page_random` double unsigned NOT NULL,
-  `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `page_latest` int(10) unsigned NOT NULL,
-  `page_len` int(10) unsigned NOT NULL,
-  PRIMARY KEY (`page_id`),
-  UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
-  KEY `page_random` (`page_random`),
-  KEY `page_len` (`page_len`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page`
---
-
-LOCK TABLES `mw_page` WRITE;
-/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
-INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',1,0,1,0.334989576352,'20101230131547',1,438);
-/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page_props`
---
-
-DROP TABLE IF EXISTS `mw_page_props`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page_props` (
-  `pp_page` int(11) NOT NULL,
-  `pp_propname` varbinary(60) NOT NULL,
-  `pp_value` blob NOT NULL,
-  UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page_props`
---
-
-LOCK TABLES `mw_page_props` WRITE;
-/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_page_restrictions`
---
-
-DROP TABLE IF EXISTS `mw_page_restrictions`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_page_restrictions` (
-  `pr_page` int(11) NOT NULL,
-  `pr_type` varbinary(60) NOT NULL,
-  `pr_level` varbinary(60) NOT NULL,
-  `pr_cascade` tinyint(4) NOT NULL,
-  `pr_user` int(11) DEFAULT NULL,
-  `pr_expiry` varbinary(14) DEFAULT NULL,
-  `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  PRIMARY KEY (`pr_id`),
-  UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
-  KEY `pr_typelevel` (`pr_type`,`pr_level`),
-  KEY `pr_level` (`pr_level`),
-  KEY `pr_cascade` (`pr_cascade`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_page_restrictions`
---
-
-LOCK TABLES `mw_page_restrictions` WRITE;
-/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_pagelinks`
---
-
-DROP TABLE IF EXISTS `mw_pagelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_pagelinks` (
-  `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `pl_namespace` int(11) NOT NULL DEFAULT '0',
-  `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
-  UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_pagelinks`
---
-
-LOCK TABLES `mw_pagelinks` WRITE;
-/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_protected_titles`
---
-
-DROP TABLE IF EXISTS `mw_protected_titles`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_protected_titles` (
-  `pt_namespace` int(11) NOT NULL,
-  `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `pt_user` int(10) unsigned NOT NULL,
-  `pt_reason` tinyblob,
-  `pt_timestamp` binary(14) NOT NULL,
-  `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
-  `pt_create_perm` varbinary(60) NOT NULL,
-  UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
-  KEY `pt_timestamp` (`pt_timestamp`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_protected_titles`
---
-
-LOCK TABLES `mw_protected_titles` WRITE;
-/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycache`
---
-
-DROP TABLE IF EXISTS `mw_querycache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycache` (
-  `qc_type` varbinary(32) NOT NULL,
-  `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
-  `qc_namespace` int(11) NOT NULL DEFAULT '0',
-  `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  KEY `qc_type` (`qc_type`,`qc_value`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycache`
---
-
-LOCK TABLES `mw_querycache` WRITE;
-/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycache_info`
---
-
-DROP TABLE IF EXISTS `mw_querycache_info`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycache_info` (
-  `qci_type` varbinary(32) NOT NULL DEFAULT '',
-  `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
-  UNIQUE KEY `qci_type` (`qci_type`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycache_info`
---
-
-LOCK TABLES `mw_querycache_info` WRITE;
-/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_querycachetwo`
---
-
-DROP TABLE IF EXISTS `mw_querycachetwo`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_querycachetwo` (
-  `qcc_type` varbinary(32) NOT NULL,
-  `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
-  `qcc_namespace` int(11) NOT NULL DEFAULT '0',
-  `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
-  `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  KEY `qcc_type` (`qcc_type`,`qcc_value`),
-  KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
-  KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_querycachetwo`
---
-
-LOCK TABLES `mw_querycachetwo` WRITE;
-/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_recentchanges`
---
-
-DROP TABLE IF EXISTS `mw_recentchanges`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_recentchanges` (
-  `rc_id` int(11) NOT NULL AUTO_INCREMENT,
-  `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
-  `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
-  `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
-  `rc_namespace` int(11) NOT NULL DEFAULT '0',
-  `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_ip` varbinary(40) NOT NULL DEFAULT '',
-  `rc_old_len` int(11) DEFAULT NULL,
-  `rc_new_len` int(11) DEFAULT NULL,
-  `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
-  `rc_log_type` varbinary(255) DEFAULT NULL,
-  `rc_log_action` varbinary(255) DEFAULT NULL,
-  `rc_params` blob,
-  PRIMARY KEY (`rc_id`),
-  KEY `rc_timestamp` (`rc_timestamp`),
-  KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
-  KEY `rc_cur_id` (`rc_cur_id`),
-  KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
-  KEY `rc_ip` (`rc_ip`),
-  KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
-  KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_recentchanges`
---
-
-LOCK TABLES `mw_recentchanges` WRITE;
-/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
-INSERT INTO `mw_recentchanges` VALUES (1,'20101230131547','20101230131547',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'','');
-/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_redirect`
---
-
-DROP TABLE IF EXISTS `mw_redirect`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_redirect` (
-  `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `rd_namespace` int(11) NOT NULL DEFAULT '0',
-  `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rd_interwiki` varchar(32) DEFAULT NULL,
-  `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
-  PRIMARY KEY (`rd_from`),
-  KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_redirect`
---
-
-LOCK TABLES `mw_redirect` WRITE;
-/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_revision`
---
-
-DROP TABLE IF EXISTS `mw_revision`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_revision` (
-  `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `rev_page` int(10) unsigned NOT NULL,
-  `rev_text_id` int(10) unsigned NOT NULL,
-  `rev_comment` tinyblob NOT NULL,
-  `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
-  `rev_len` int(10) unsigned DEFAULT NULL,
-  `rev_parent_id` int(10) unsigned DEFAULT NULL,
-  PRIMARY KEY (`rev_id`),
-  UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
-  KEY `rev_timestamp` (`rev_timestamp`),
-  KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
-  KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
-  KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_revision`
---
-
-LOCK TABLES `mw_revision` WRITE;
-/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
-INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20101230131547',0,0,438,0);
-/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_searchindex`
---
-
-DROP TABLE IF EXISTS `mw_searchindex`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_searchindex` (
-  `si_page` int(10) unsigned NOT NULL,
-  `si_title` varchar(255) NOT NULL DEFAULT '',
-  `si_text` mediumtext NOT NULL,
-  UNIQUE KEY `si_page` (`si_page`),
-  FULLTEXT KEY `si_title` (`si_title`),
-  FULLTEXT KEY `si_text` (`si_text`)
-) ENGINE=MyISAM DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_searchindex`
---
-
-LOCK TABLES `mw_searchindex` WRITE;
-/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
-INSERT INTO `mw_searchindex` VALUES (1,'main page','  mediawiki hasu800 been successfully installed.  consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list ');
-/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_site_stats`
---
-
-DROP TABLE IF EXISTS `mw_site_stats`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_site_stats` (
-  `ss_row_id` int(10) unsigned NOT NULL,
-  `ss_total_views` bigint(20) unsigned DEFAULT '0',
-  `ss_total_edits` bigint(20) unsigned DEFAULT '0',
-  `ss_good_articles` bigint(20) unsigned DEFAULT '0',
-  `ss_total_pages` bigint(20) DEFAULT '-1',
-  `ss_users` bigint(20) DEFAULT '-1',
-  `ss_active_users` bigint(20) DEFAULT '-1',
-  `ss_admins` int(11) DEFAULT '-1',
-  `ss_images` int(11) DEFAULT '0',
-  UNIQUE KEY `ss_row_id` (`ss_row_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_site_stats`
---
-
-LOCK TABLES `mw_site_stats` WRITE;
-/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_tag_summary`
---
-
-DROP TABLE IF EXISTS `mw_tag_summary`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_tag_summary` (
-  `ts_rc_id` int(11) DEFAULT NULL,
-  `ts_log_id` int(11) DEFAULT NULL,
-  `ts_rev_id` int(11) DEFAULT NULL,
-  `ts_tags` blob NOT NULL,
-  UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
-  UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
-  UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_tag_summary`
---
-
-LOCK TABLES `mw_tag_summary` WRITE;
-/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_templatelinks`
---
-
-DROP TABLE IF EXISTS `mw_templatelinks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_templatelinks` (
-  `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
-  `tl_namespace` int(11) NOT NULL DEFAULT '0',
-  `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
-  UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_templatelinks`
---
-
-LOCK TABLES `mw_templatelinks` WRITE;
-/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_text`
---
-
-DROP TABLE IF EXISTS `mw_text`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_text` (
-  `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `old_text` mediumblob NOT NULL,
-  `old_flags` tinyblob NOT NULL,
-  PRIMARY KEY (`old_id`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_text`
---
-
-LOCK TABLES `mw_text` WRITE;
-/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
-INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8');
-/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_trackbacks`
---
-
-DROP TABLE IF EXISTS `mw_trackbacks`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_trackbacks` (
-  `tb_id` int(11) NOT NULL AUTO_INCREMENT,
-  `tb_page` int(11) DEFAULT NULL,
-  `tb_title` varchar(255) NOT NULL,
-  `tb_url` blob NOT NULL,
-  `tb_ex` text,
-  `tb_name` varchar(255) DEFAULT NULL,
-  PRIMARY KEY (`tb_id`),
-  KEY `tb_page` (`tb_page`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_trackbacks`
---
-
-LOCK TABLES `mw_trackbacks` WRITE;
-/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_transcache`
---
-
-DROP TABLE IF EXISTS `mw_transcache`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_transcache` (
-  `tc_url` varbinary(255) NOT NULL,
-  `tc_contents` text,
-  `tc_time` binary(14) NOT NULL,
-  UNIQUE KEY `tc_url_idx` (`tc_url`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_transcache`
---
-
-LOCK TABLES `mw_transcache` WRITE;
-/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_updatelog`
---
-
-DROP TABLE IF EXISTS `mw_updatelog`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_updatelog` (
-  `ul_key` varchar(255) NOT NULL,
-  `ul_value` blob,
-  PRIMARY KEY (`ul_key`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_updatelog`
---
-
-LOCK TABLES `mw_updatelog` WRITE;
-/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user`
---
-
-DROP TABLE IF EXISTS `mw_user`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user` (
-  `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `user_password` tinyblob NOT NULL,
-  `user_newpassword` tinyblob NOT NULL,
-  `user_newpass_time` binary(14) DEFAULT NULL,
-  `user_email` tinytext NOT NULL,
-  `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  `user_email_authenticated` binary(14) DEFAULT NULL,
-  `user_email_token` binary(32) DEFAULT NULL,
-  `user_email_token_expires` binary(14) DEFAULT NULL,
-  `user_registration` binary(14) DEFAULT NULL,
-  `user_editcount` int(11) DEFAULT NULL,
-  PRIMARY KEY (`user_id`),
-  UNIQUE KEY `user_name` (`user_name`),
-  KEY `user_email_token` (`user_email_token`)
-) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user`
---
-
-LOCK TABLES `mw_user` WRITE;
-/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
-INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:b1373470:f7e87db0c9596055f39a1225b0c31508','',NULL,'','','20101230131552','de4ddde7c4eef6e3609f4287324a0a18',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20101230131547',0);
-/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_groups`
---
-
-DROP TABLE IF EXISTS `mw_user_groups`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_groups` (
-  `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
-  `ug_group` varbinary(16) NOT NULL DEFAULT '',
-  UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
-  KEY `ug_group` (`ug_group`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_groups`
---
-
-LOCK TABLES `mw_user_groups` WRITE;
-/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
-INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat');
-INSERT INTO `mw_user_groups` VALUES (1,'sysop');
-/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_newtalk`
---
-
-DROP TABLE IF EXISTS `mw_user_newtalk`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_newtalk` (
-  `user_id` int(11) NOT NULL DEFAULT '0',
-  `user_ip` varbinary(40) NOT NULL DEFAULT '',
-  `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
-  KEY `user_id` (`user_id`),
-  KEY `user_ip` (`user_ip`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_newtalk`
---
-
-LOCK TABLES `mw_user_newtalk` WRITE;
-/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_user_properties`
---
-
-DROP TABLE IF EXISTS `mw_user_properties`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_user_properties` (
-  `up_user` int(11) NOT NULL,
-  `up_property` varbinary(32) NOT NULL,
-  `up_value` blob,
-  UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
-  KEY `user_properties_property` (`up_property`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_user_properties`
---
-
-LOCK TABLES `mw_user_properties` WRITE;
-/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_valid_tag`
---
-
-DROP TABLE IF EXISTS `mw_valid_tag`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_valid_tag` (
-  `vt_tag` varchar(255) NOT NULL,
-  PRIMARY KEY (`vt_tag`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_valid_tag`
---
-
-LOCK TABLES `mw_valid_tag` WRITE;
-/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
-UNLOCK TABLES;
-
---
--- Table structure for table `mw_watchlist`
---
-
-DROP TABLE IF EXISTS `mw_watchlist`;
-/*!40101 SET @saved_cs_client     = @@character_set_client */;
-/*!40101 SET character_set_client = utf8 */;
-CREATE TABLE `mw_watchlist` (
-  `wl_user` int(10) unsigned NOT NULL,
-  `wl_namespace` int(11) NOT NULL DEFAULT '0',
-  `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
-  `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
-  UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
-  KEY `namespace_title` (`wl_namespace`,`wl_title`)
-) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-/*!40101 SET character_set_client = @saved_cs_client */;
-
---
--- Dumping data for table `mw_watchlist`
---
-
-LOCK TABLES `mw_watchlist` WRITE;
-/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
-/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
-UNLOCK TABLES;
-/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
-
-/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
-/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
-/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
-/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
-/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
-/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-
--- Dump completed on 2010-12-31  1:20:11
diff --git a/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php b/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php
deleted file mode 100644 (file)
index 9c060fa..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<?php
-/**
- * MediaWikiButtonsAvailabilityTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 30 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name :'Back' and 'Continue' button availability
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiButtonsAvailabilityTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify only 'Continue' button available on 'Language' page
-       public function testOnlyContinueButtonAvailability() {
-               parent::navigateLanguagePage();
-
-               // Verify only 'Continue' button avaialble
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-
-               // 'Back' button is not avaialble
-               $this->assertElementNotPresent( "submit-back" );
-       }
-
-       // Verify 'Continue' and 'Back' buttons availability
-       public function testBothButtonsAvailability() {
-               // Verify buttons availability on 'Welcome to MediaWiki' page
-               parent::navigateWelcometoMediaWikiPage();
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-               parent::restartInstallation();
-
-               // Verify buttons availability on 'Connect to Database' page
-               parent::navigateConnetToDatabasePage();
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-               parent::restartInstallation();
-
-               // Verify buttons availability on 'Database settings' page
-               $databaseName = DB_NAME_PREFIX . "_db_settings";
-               parent::navigateDatabaseSettingsPage( $databaseName );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-               parent::restartInstallation();
-
-               // Verify buttons availability on 'Name' page
-               $databaseName = DB_NAME_PREFIX . "_name";
-               parent::navigateNamePage( $databaseName );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-               parent::restartInstallation();
-
-               // Verify buttons availability on 'Options' page
-               $databaseName = DB_NAME_PREFIX . "_options";
-               parent::navigateOptionsPage( $databaseName );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-               parent::restartInstallation();
-
-               // Verify buttons availability on 'Install' page
-               $databaseName = DB_NAME_PREFIX . "_install";
-               parent::navigateInstallPage( $databaseName );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-continue" ) );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php b/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php
deleted file mode 100644 (file)
index 117e5c8..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * MediaWikiDifferentDatabaseAccountTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 04 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install MediaWiki with different Database accounts for web access.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiDifferentDatabaseAccountTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Install Mediawiki using 'MySQL' database type.
-       public function testDifferentDatabaseAccount() {
-               $databaseName = DB_NAME_PREFIX . "_dif_accounts";
-
-               // Navigate to the 'Database settings' page
-               parent::navigateDatabaseSettingsPage( $databaseName );
-
-               // Click on the 'Use the same account as for installation' check box
-               $this->click( "mysql__SameAccount" );
-
-               // Change the 'Database username'
-               $this->type( "mysql_wgDBuser", DB_WEB_USER );
-
-               // Enter 'Database password:'
-               $this->type( "mysql_wgDBpassword", DB_WEB_USER_PASSWORD );
-
-               // Select 'Create the account if it does not already exist' check box
-               $this->click( "mysql__CreateDBAccount" );
-               parent::clickContinueButton();
-
-               // 'Name' page
-               parent::completeNamePage();
-
-               // 'Options' page
-               parent::clickContinueButton();
-
-               // 'Install' page
-               $this->assertEquals( "Creating database user... done",
-                       $this->getText( LINK_FORM . "ul/li[3]" ) );
-               parent::clickContinueButton();
-
-               // 'Complete' page
-               parent::completePageSuccessfull();
-               $this->chooseCancelOnNextConfirmation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php b/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php
deleted file mode 100644 (file)
index ed08928..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-<?php
-/**
- * MediaWikiDifferntDatabasePrefixTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 02 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install MediaWiki with the same database and the different
- *                  database prefixes(Share one database between multiple wikis).
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiDifferntDatabasePrefixTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Install Mediawiki using 'MySQL' database type.
-       public function testDifferentDatabasePrefix() {
-               $databaseName = DB_NAME_PREFIX . "_db_prefix";
-               parent::navigateInstallPage( $databaseName );
-
-               // To 'Options' page
-               parent::clickBackButton();
-
-               // To 'Name' page
-               parent::clickBackButton();
-
-               // To 'Database settings' page
-               parent::clickBackButton();
-
-               // To 'Connect to database' page
-               parent::clickBackButton();
-
-               // From 'Connect to database' page without database prefix
-               parent::clickContinueButton();
-
-               // Verify upgrade existing message
-               $this->assertEquals( "Upgrade existing installation",
-                       $this->getText( LINK_DIV . "h2" ) );
-
-               // To 'Connect to database' page
-               parent::clickBackButton();
-
-               // Input the database prefix
-               $this->type( "mysql_wgDBprefix", DATABASE_PREFIX );
-
-               // From 'Connect to database' page with database prefix
-               parent::clickContinueButton();
-
-               // To 'Complete' page
-               parent::clickContinueButton();
-               parent::completeNamePage();
-               parent::clickContinueButton();
-
-               // Verify already installed warning message
-               $this->assertEquals( "Install",
-                       $this->getText( LINK_DIV . "h2" ) );
-               $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
-                       $this->getText( LINK_FORM . "div[1]" ) );
-
-               parent::clickContinueButton();
-               parent::completePageSuccessfull();
-               $this->chooseCancelOnNextConfirmation();
-               parent::restartInstallation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php b/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php
deleted file mode 100644 (file)
index da10eec..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-<?php
-/**
- * MediaWikiErrorsConnectToDatabasePageTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 09 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Invalid/ blank values for fields in 'Connect to database' page.
- * Version        : MediaWiki 1.18alpha
- */
-
-class MediaWikiErrorsConnectToDatabasePageTestCase extends MediaWikiInstallationCommonFunction {
-
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify warning messages for the 'Connet to database' page
-       public function testErrorsConnectToDatabasePage() {
-               parent::navigateConnetToDatabasePage();
-
-               // Verify warning mesage for invalid database host
-               $this->type( "mysql_wgDBserver", INVALID_DB_HOST );
-               parent::clickContinueButton();
-               $this->assertEquals( "DB connection error: php_network_getaddresses: getaddrinfo failed: No such host is known. (" . INVALID_DB_HOST . ").",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[1]" ) );
-               $this->assertEquals( "Check the host, username and password below and try again.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[2]" ) );
-               // Verify warning message for the blank database host
-               $this->type( "mysql_wgDBserver", "" );
-               parent::clickContinueButton();
-               $this->assertEquals( "MySQL 4.0.14 or later is required, you have .",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Valid Database Host
-               $this->type( "mysql_wgDBserver", VALID_DB_HOST );
-
-               // Verify warning message for the invalid database name
-               $this->type( "mysql_wgDBname", INVALID_DB_NAME );
-               parent::clickContinueButton();
-               $this->assertEquals( "Invalid database name \"" . INVALID_DB_NAME . "\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p" ) );
-
-               // Verify warning message for the blank database name
-               $this->type( "mysql_wgDBname", "" );
-               parent::clickContinueButton();
-               $this->assertEquals( "You must enter a value for \"Database name\"",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // valid Database name
-               $this->type( "mysql_wgDBname", VALID_DB_NAME );
-
-               // Verify warning message for the invalid databaase prefix
-               $this->type( "mysql_wgDBprefix", INVALID_DB_PREFIX );
-               parent::clickContinueButton();
-               $this->assertEquals( "Invalid database prefix \"" . INVALID_DB_PREFIX . "\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Valid Database prefix
-               $this->type( "mysql_wgDBprefix", VALID_DB_PREFIX );
-
-               // Verify warning message for the invalid database user name
-               $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
-               parent::clickContinueButton();
-               $this->assertEquals( "DB connection error: Access denied for user '" . INVALID_DB_USER_NAME . "'@'localhost' (using password: NO) (localhost).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[1]" ) );
-               $this->assertEquals( "Check the host, username and password below and try again.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[2]" ) );
-
-               // Verify warning message for the blank database user name
-               $this->type( "mysql__InstallUser", "" );
-               parent::clickContinueButton();
-               $this->assertEquals( "DB connection error: Access denied for user 'SYSTEM'@'localhost' (using password: NO) (localhost).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[1]" ) );
-               $this->assertEquals( "Check the host, username and password below and try again.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[2]" ) );
-
-               // Valid Database username
-               $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
-
-               // Verify warning message for the invalid password
-               $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
-               parent::clickContinueButton();
-
-               $this->assertEquals( "DB connection error: Access denied for user 'root'@'localhost' (using password: YES) (localhost).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[1]" ) );
-               $this->assertEquals( "Check the host, username and password below and try again.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[2]" ) );
-
-               // Verify warning message for the invalid username and password
-               $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
-               $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
-               parent::clickContinueButton();
-               $this->assertEquals( "DB connection error: Access denied for user '" . INVALID_DB_USER_NAME . "'@'localhost' (using password: YES) (localhost).",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[1]" ) );
-               $this->assertEquals( "Check the host, username and password below and try again.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]/p[2]" ) );
-
-               // Valid username and valid password
-               $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
-               $this->type( "mysql__InstallPassword", "" );
-               parent::clickContinueButton();
-
-               // successfully completes the 'Connect to database' page
-               $this->assertEquals( "Database settings",
-                       $this->getText( LINK_DIV . "h2" ) );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php b/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php
deleted file mode 100644 (file)
index 3b2f012..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?php
-/**
- * MediaWikiErrorsNamepageTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 10 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Invalid/ blank values for fields in 'Name' page.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiErrorsNamepageTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify warning message for the 'Name' page
-       public function testErrorsNamePage() {
-
-               $databaseName = DB_NAME_PREFIX . "_error_name";
-
-               parent::navigateNamePage( $databaseName );
-
-               // Verify warning message for all blank fields
-               parent::clickContinueButton();
-               $this->assertEquals( "Enter a site name.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-               $this->assertEquals( "Enter an administrator username.",
-                       $this->getText( LINK_DIV . "div[3]/div[2]" ) );
-               $this->assertEquals( "Enter a password for the administrator account.",
-                       $this->getText( LINK_DIV . "div[4]/div[2]" ) );
-
-               // Verify warning message for the blank 'Site name'
-               $this->type( "config__AdminName", VALID_YOUR_NAME );
-               $this->type( "config__AdminPassword", VALID_PASSWORD );
-               $this->type( "config__AdminPassword2", VALID_PASSWORD_AGAIN );
-               parent::clickContinueButton();
-               $this->assertEquals( "Enter a site name.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Input valid 'Site name'
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-
-               // Verify warning message for the invalid "Project namespace'
-               $this->click( "config__NamespaceType_other" );
-               $this->type( "config_wgMetaNamespace", INVALID_NAMESPACE );
-               parent::clickContinueButton();
-               $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Verify warning message for the blank 'Project namespace'
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-               $this->click( "config__NamespaceType_other" );
-               $this->type( "config_wgMetaNamespace", "" );
-               parent::clickContinueButton();
-               $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Valid 'Project namespace'
-               $this->click( "config__NamespaceType_other" );
-               $this->type( "config_wgMetaNamespace", VALID_NAMESPACE );
-               parent::clickContinueButton();
-
-               // Valid 'Site name'
-               $this->click( "config__NamespaceType_site-name" );
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-
-               // Verify warning message for blank 'Your name'
-               $this->type( "config__AdminName", " " );
-               parent::clickContinueButton();
-               $this->assertEquals( "Enter an administrator username.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-               // Verify warning message for blank 'Password'
-               $this->type( "config__AdminName", VALID_YOUR_NAME );
-               $this->type( "config__AdminPassword", " " );
-               parent::clickContinueButton();
-               $this->assertEquals( "Enter a password for the administrator account.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Verify warning message for the blank 'Password again'
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-               $this->type( "config__AdminPassword", VALID_PASSWORD );
-               $this->type( "config__AdminPassword2", " " );
-               parent::clickContinueButton();
-               $this->assertEquals( "The two passwords you entered do not match.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-
-               // Verify warning message for the different'Password' and 'Password again'
-               $this->type( "config_wgSitename", VALID_WIKI_NAME );
-               $this->type( "config__AdminPassword", VALID_PASSWORD );
-               $this->type( "config__AdminPassword2", INVALID_PASSWORD_AGAIN );
-               parent::clickContinueButton();
-               $this->assertEquals( "The two passwords you entered do not match.",
-                       $this->getText( LINK_DIV . "div[2]/div[2]" ) );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php b/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php
deleted file mode 100644 (file)
index f7f5910..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-<?php
-/**
- * MediaWikiHelpFieldHintTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 29 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Help field hint availability for the fields.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiHelpFieldHintTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify help field availability for the fields
-       public function testMySQLConnectToDatabaseFieldHint() {
-
-               parent::navigateConnetToDatabasePage();
-
-               // Verify help field for 'Database host'
-               $this->click( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[1]" );
-               $this->assertEquals( MYSQL_DATABASE_HOST_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[2]" ) );
-
-               // Verify help field for 'Database name'
-               $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[1]" );
-               $this->assertEquals( MYSQL_DATABASE_NAME_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]" ) );
-
-
-               // Verify help field for 'Database table prefix'
-               $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/div/span[1]" );
-               $this->assertEquals( MYSQL_DATABASE_TABLE_PREFIX_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]/p[1]" ) );
-
-               // Verify help field for 'Database username'
-               $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[1]" );
-               $this->assertEquals( MYSQL_DATBASE_USERNAME_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[2]" ) );
-
-               // Verify help field for 'Database password'
-               $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[1]" );
-               $this->assertEquals( MYSQL_DATABASE_PASSWORD_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[2]/p" ) );
-       }
-
-       public function testSQLiteConnectToDatabaseFieldHint() {
-               parent::navigateConnetToDatabasePage();
-               $this->click( "DBType_sqlite" );
-
-               //  Verify help field for 'SQLite data directory'
-               $this->click( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[1]" );
-               $this->assertEquals( SQLITE_DATA_DIRECTORY_HELP,
-                       $this->getText( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[2]" ) );
-
-               // Verify help field for 'Database name'
-               $this->click( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[1]" );
-               $this->assertEquals( SQLITE_DATABASE_NAME_HELP, $this->getText( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[2]/p" ) );
-       }
-
-       public function testDatabaseSettingsFieldHint() {
-
-               $databaseName = DB_NAME_PREFIX . "_db_field";
-               parent::navigateDatabaseSettingsPage( $databaseName );
-
-               // Verify help field for 'Search engine'
-               $this->click( LINK_FORM . "div[2]/span[1]" );
-               $this->assertEquals( SEARCH_ENGINE_HELP,
-                       $this->getText( LINK_FORM . "div[2]/span[2]" ) );
-
-               // Verify help field for 'Database character set'
-               $this->click( LINK_FORM . "div[4]/span[1]" );
-               $this->assertEquals( DATABASE_CHARACTER_SET_HELP,
-                       $this->getText( LINK_FORM . "div[4]/span[2]" ) );
-               parent::restartInstallation();
-       }
-
-       public function testNameFieldHint() {
-               $databaseName = DB_NAME_PREFIX . "_name_field";
-               parent::navigateNamePage( $databaseName );
-
-               // Verify help field for 'Name of Wiki'
-               $this->click( LINK_FORM . "div[1]/div[1]/div/span[1]" );
-               $this->assertEquals( NAME_OF_WIKI_HELP,
-                       $this->getText( LINK_FORM . "div[1]/div[1]/div/span[2]/p" ) );
-
-               // Verify help field for 'Project namespace'
-               $this->click( LINK_FORM . "div[2]/div[1]/div/span[1]" );
-               $this->assertEquals( PROJECT_NAMESPACE_HELP,
-                       $this->getText( LINK_FORM . "div[2]/div[1]/div/span[2]/p" ) );
-
-               // Verify help field for 'Your Name'
-               $this->click( LINK_FORM . "fieldset/div[1]/div[1]/div/span[1]" );
-               $this->assertEquals( USER_NAME_HELP,
-                       $this->getText( LINK_FORM . "fieldset/div[1]/div[1]/div/span[2]/p" ) );
-
-               // Verify help field for 'E mail address'
-               $this->click( LINK_FORM . "fieldset/div[4]/div[1]/div/span[1]" );
-               $this->assertEquals( EMAIL_ADDRESS_HELP,
-                       $this->getText( LINK_FORM . "fieldset/div[4]/div[1]/div/span[2]/p" ) );
-
-               parent::restartInstallation();
-       }
-}
-
diff --git a/tests/selenium/installer/MediaWikiInstallationCommonFunction.php b/tests/selenium/installer/MediaWikiInstallationCommonFunction.php
deleted file mode 100644 (file)
index 472d2ed..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-<?php
-/**
- * MediaWikiInstallationCommonFunction
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
-require_once __DIR__ . '/MediaWikiInstallationConfig.php';
-require_once __DIR__ . '/MediaWikiInstallationMessage.php';
-require_once __DIR__ . '/MediaWikiInstallationVariables.php';
-
-class MediaWikiInstallationCommonFunction extends PHPUnit_Extensions_SeleniumTestCase {
-       function setUp() {
-               $this->setBrowser( TEST_BROWSER );
-               $this->setBrowserUrl( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/" );
-       }
-
-       public function navigateInitialpage() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/" );
-       }
-
-       // Navigate to the 'Language' page
-       public function navigateLanguagePage() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-       }
-
-       // Navigate to the 'Welcome to MediaWiki' page
-       public function navigateWelcometoMediaWikiPage() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-               $this->click( "submit-continue " );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate yo 'Connect to Database' page
-       public function navigateConnetToDatabasePage() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate to the 'Database Settings' page
-       public function navigateDatabaseSettingsPage( $databaseName ) {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate to the 'Name' page
-       public function navigateNamePage( $databaseName ) {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Database settings
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate 'Options' page
-       public function navigateOptionsPage( $databaseName ) {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Database settings
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Name
-               $this->type( "config_wgSitename", NAME_OF_WIKI );
-               $this->type( "config__AdminName", ADMIN_USER_NAME );
-               $this->type( "config__AdminPassword", ADMIN_PASSWORD );
-               $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
-               $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
-
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate 'Install' page
-       public function navigateInstallPage( $databaseName ) {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Database settings
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Name
-               $this->type( "config_wgSitename", NAME_OF_WIKI );
-               $this->type( "config__AdminName", ADMIN_USER_NAME );
-               $this->type( "config__AdminPassword", ADMIN_PASSWORD );
-               $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
-               $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
-
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Options page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Navigate to 'Complete' page
-       public function navigateCompletePage( $databaseName ) {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // 'Welcome to MediaWiki!' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Connect to Database' page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Database settings
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Name
-               $this->type( "config_wgSitename", NAME_OF_WIKI );
-               $this->type( "config__AdminName", ADMIN_USER_NAME );
-               $this->type( "config__AdminPassword", ADMIN_PASSWORD );
-               $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
-               $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
-
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Options page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Install page
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->chooseCancelOnNextConfirmation();
-       }
-
-       // Complete the Name page fields
-       public function completeNamePage() {
-               $this->type( "config_wgSitename", NAME_OF_WIKI );
-               $this->type( "config__AdminName", ADMIN_USER_NAME );
-               $this->type( "config__AdminPassword", ADMIN_PASSWORD );
-               $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
-               $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Clicking on the 'Continue' button in any MediaWiki page
-       public function clickContinueButton() {
-               $this->click( "submit-continue" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Clicking on the 'Back' button in any MediaWiki page
-       public function clickBackButton() {
-               $this->click( "submit-back" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Restarting the installation
-       public function restartInstallation() {
-               $this->click( "link=Restart installation" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->click( "submit-restart" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-       }
-
-       // Verify 'MediaWiki' logo available in the initial screen
-       public function mediaWikiLogoPresentInitialScreen() {
-               $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ) );
-       }
-
-       // Verify 'MediaWiki' logo available
-       public function mediaWikiLogoPresent() {
-               $this->assertTrue( $this->isElementPresent( "//div[@id='p-logo']/a" ) );
-       }
-
-       public function completePageSuccessfull() {
-               $this->assertEquals( "Complete!",
-                       $this->getText( "//div[@id='bodyContent']/div/div/h2" ) );
-
-               // 'Congratulations!' text should be available in the 'Complete!' page.
-               $this->assertEquals( "Congratulations!",
-                       $this->getText( "//div[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]/p[1]/b" ) );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiInstallationConfig.php b/tests/selenium/installer/MediaWikiInstallationConfig.php
deleted file mode 100644 (file)
index 86a4624..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<?php
-/**
- * MediaWikiInstallationConfig
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-/**
- * MediaWikiInstallerTestSuite.php can be run one time successfully
- * with current value of the 'DB_NAME_PREFIX'.
- * If you wish to run the suite more than one time, you need to change
- * the value of the 'DB_NAME_PREFIX'.
- */
-define( 'DB_NAME_PREFIX', "database_name" );
-define( 'DIRECTORY_NAME', "mediawiki" );
-define( 'PORT', "8080" );
-define( 'HOST_NAME', "localhost" );
-
-/**
- *  Use the followings to run the test suite in different browsers.
- *  Firefox : *firefox
- *  IE :  *iexplore
- *  Google chrome : *googlechrome
- *  Opera :  *opera
- */
-define ( 'TEST_BROWSER', "*firefox" );
diff --git a/tests/selenium/installer/MediaWikiInstallationMessage.php b/tests/selenium/installer/MediaWikiInstallationMessage.php
deleted file mode 100644 (file)
index 2b7d48e..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * MediaWikiInstallationConfig
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-// 'MySQL' database type help field hint
-define( 'MYSQL_DATABASE_HOST_HELP', "If your database server is on different server, enter the host name or IP address here. \nIf you are using shared web hosting, your hosting provider should give you the correct host name in their documentation. \nIf you are installing on a Windows server and using MySQL, using \"localhost\" may not work for the server name. If it does not, try \"127.0.0.1\" for the local IP address." );
-define( 'MYSQL_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens. \nIf you are using shared web hosting, your hosting provider will either give you a specific database name to use or let you create databases via a control panel." );
-define( 'MYSQL_DATABASE_TABLE_PREFIX_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens." );
-define( 'MYSQL_DATBASE_USERNAME_HELP', "Enter the username that will be used to connect to the database during the installation process. This is not the username of the MediaWiki account; this is the username for your database." );
-define( 'MYSQL_DATABASE_PASSWORD_HELP', "Enter the password that will be used to connect to the database during the installation process. This is not the password for the MediaWiki account; this is the password for your database." );
-
-
-// 'SQLite' database type help field hint
-define( 'SQLITE_DATA_DIRECTORY_HELP', "SQLite stores all data in a single file. \nThe directory you provide must be writable by the webserver during installation. \nIt should not be accessible via the web, this is why we're not putting it where your PHP files are. \nThe installer will write a .htaccess file along with it, but if that fails someone can gain access to your raw database. That includes raw user data (e-mail addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki. \nConsider putting the database somewhere else altogether, for example in /var/lib/mediawiki/yourwiki." );
-define( 'SQLITE_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. Do not use spaces or hyphens. This will be used for the SQLite data file name." );
-
-
-// 'Database settings' page hel0p field hint
-define( 'SEARCH_ENGINE_HELP', "InnoDB is almost always the best option, since it has good concurrency support. \nMyISAM may be faster in single-user or read-only installations. MyISAM databases tend to get corrupted more often than InnoDB databases." );
-define( 'DATABASE_CHARACTER_SET_HELP', "In binary mode, MediaWiki stores UTF-8 text to the database in binary fields. This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters. \nIn UTF-8 mode, MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the Basic Multilingual Plane." );
-
-
-// 'Name' page help field hint
-define( 'NAME_OF_WIKI_HELP', "This will appear in the title bar of the browser and in various other places." );
-define( 'PROJECT_NAMESPACE_HELP', "Following Wikipedia's example, many wikis keep their policy pages separate from their content pages, in a \"project namespace\". All page titles in this namespace start with a certain prefix, which you can specify here. Traditionally, this prefix is derived from the name of the wiki, but it cannot contain punctuation characters such as \"#\" or \":\"." );
-define( 'USER_NAME_HELP', "Enter your preferred username here, for example \"Joe Bloggs\". This is the name you will use to log in to the wiki." );
-define( 'EMAIL_ADDRESS_HELP', "Enter an e-mail address here to allow you to receive e-mail from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist." );
-define( 'SUBSCRIBE_MAILING_LIST_HELP', "This is a low-volume mailing list used for release announcements, including important security announcements. You should subscribe to it and update your MediaWiki installation when new versions come out." );
-
-
-
diff --git a/tests/selenium/installer/MediaWikiInstallationVariables.php b/tests/selenium/installer/MediaWikiInstallationVariables.php
deleted file mode 100644 (file)
index 3d7996b..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * MediaWikiInstallationConfig
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-// Common variables
-define( 'PAGE_LOAD_TIME', "80000" );
-
-// Common links
-define( 'LINK_DIV', "//div[@id='bodyContent']/div/div/" );
-define( 'LINK_FORM', "//div[@id='bodyContent']/div/div/div[2]/form/" );
-define( 'LINK_RIGHT_FRAMEWORK', "//div[@id='bodyContent']/div/div/div[1]/ul[1]/" );
-
-// 'Name' page input values
-define( 'NAME_OF_WIKI', "Site Name" );
-define( 'ADMIN_USER_NAME', "My Name" );
-define( 'ADMIN_PASSWORD', "12345" );
-define ( 'ADMIN_RETYPE_PASSWORD', "12345" );
-define ( 'ADMIN_EMAIL_ADDRESS', "admin@example.com" );
-
-
-// 'Name' page input values for warning messages
-define( 'VALID_WIKI_NAME', "MyWiki" );
-define( 'VALID_YOUR_NAME', "FirstName LastName" );
-define( 'VALID_PASSWORD', "12345" );
-define( 'VALID_PASSWORD_AGAIN', "12345" );
-define( 'INVALID_PASSWORD_AGAIN', "123" );
-define( 'VALID_NAMESPACE', "Mynamespace" );
-define( 'INVALID_NAMESPACE', "##..##" );
-
-
-// 'Database settings' page input values
-define( 'DB_WEB_USER', "different" );
-define( 'DB_WEB_USER_PASSWORD', "12345" );
-
-
-// 'Connet to database' page input values
-define( 'DATABASE_PREFIX', "databaseprefix" );
-
-
-// 'Connet to database' page input values for warning messages
-define( 'VALID_DB_HOST', "localhost" );
-define( 'INVALID_DB_HOST', "local" );
-define( 'INVALID_DB_NAME', "my-wiki" );
-define( 'VALID_DB_NAME', "my_wiki1" );
-define( 'INVALID_DB_PREFIX', "database prefix" );
-define( 'VALID_DB_PREFIX', "database_prefix" );
-define( 'INVALID_DB_USER_NAME', "roots" );
-define( 'VALID_DB_USER_NAME', "root" );
-define( 'INVALID_DB_PASSWORD', "12345" );
-
-
diff --git a/tests/selenium/installer/MediaWikiInstallerTestSuite.php b/tests/selenium/installer/MediaWikiInstallerTestSuite.php
deleted file mode 100644 (file)
index e32a9e6..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-/**
- * MediaWikiInstallerTestSuite
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-if ( PHP_SAPI != 'cli' ) {
-       die( "Run me from the command line please.\n" );
-}
-
-require_once 'PHPUnit/Framework/TestSuite.php';
-
-require_once __DIR__ . '/MediaWikiUserInterfaceTestCase.php';
-require_once __DIR__ . '/MediaWikiButtonsAvailabilityTestCase.php';
-require_once __DIR__ . '/MediaWikiHelpFieldHintTestCase.php';
-require_once __DIR__ . '/MediaWikiRightFrameworkLinksTestCase.php';
-require_once __DIR__ . '/MediaWikiRestartInstallationTestCase.php';
-require_once __DIR__ . '/MediaWikiErrorsConnectToDatabasePageTestCase.php';
-require_once __DIR__ . '/MediaWikiErrorsNamepageTestCase.php';
-require_once __DIR__ . '/MediaWikiMySQLDataBaseTestCase.php';
-require_once __DIR__ . '/MediaWikiMySQLiteDataBaseTestCase.php';
-require_once __DIR__ . '/MediaWikiUpgradeExistingDatabaseTestCase.php';
-require_once __DIR__ . '/MediaWikiDifferntDatabasePrefixTestCase.php';
-require_once __DIR__ . '/MediaWikiDifferentDatabaseAccountTestCase.php';
-require_once __DIR__ . '/MediaWikiOnAlreadyInstalledTestCase.php';
-
-$suite = new PHPUnit_Framework_TestSuite( 'ArrayTest' );
-$result = new PHPUnit_Framework_TestResult;
-
-$suite->run( $result );
diff --git a/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php
deleted file mode 100644 (file)
index 823bb8c..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-<?php
-/**
- * MediaWikiOnAlreadyInstalledTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 01 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
- * Version        : MediaWiki 1.18alpha
- */
-
-class MediaWikiMySQLDataBaseTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify  MediaWiki installation using 'MySQL' database type
-       public function testMySQLDatabaseSuccess() {
-               $databaseName = DB_NAME_PREFIX . "_sql_db";
-
-               parent::navigateConnetToDatabasePage();
-
-               // Verify 'MySQL" is selected as the default database type
-               $this->assertEquals( "MySQL settings", $this->getText( "//div[@id='DB_wrapper_mysql']/h3" ) );
-
-               // Change 'Database name'
-               $defaultDbName = $this->getText( "mysql_wgDBname" );
-               $this->type( "mysql_wgDBname", " " );
-               $this->type( "mysql_wgDBname", $databaseName );
-               $this->assertNotEquals( $defaultDbName, $databaseName );
-
-               // 'Database settings' page
-               parent::clickContinueButton();
-
-               // 'Name' page
-               parent::clickContinueButton();
-               parent::completeNamePage();
-
-               // 'Options page
-               parent::clickContinueButton();
-
-               // 'Install' page
-               parent::clickContinueButton();
-
-               // 'Complete' page
-               parent::completePageSuccessfull();
-               parent::restartInstallation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php
deleted file mode 100644 (file)
index 11d0437..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * MediaWikiMySQLiteataBaseTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 06 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
- * Version        : MediaWiki 1.18alpha
- */
-
-class MediaWikiMySQLiteDataBaseTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify  MediaWiki installation using 'MySQL' database type
-       public function testMySQLDatabaseSuccess() {
-               $databaseName = DB_NAME_PREFIX . "_sqlite_db";
-
-               parent::navigateConnetToDatabasePage();
-               $this->click( "DBType_sqlite" );
-
-               // Select 'SQLite' database type
-               $this->assertEquals( "SQLite settings", $this->getText( "//div[@id='DB_wrapper_sqlite']/h3" ) );
-
-               // Change database name
-               $defaultDbName = $this->getText( "sqlite_wgDBname" );
-               $this->type( "sqlite_wgDBname", " " );
-               $this->type( "sqlite_wgDBname", $databaseName );
-               $this->assertNotEquals( $defaultDbName, $databaseName );
-
-               // 'Database settings' page
-               parent::clickContinueButton();
-
-               // 'Name' page
-               parent::clickContinueButton();
-               parent::completeNamePage();
-
-               // 'Options page
-               parent::clickContinueButton();
-
-               // 'Install' page
-               parent::clickContinueButton();
-
-               // 'Complete' page
-               parent::completePageSuccessfull();
-               parent::restartInstallation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php b/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php
deleted file mode 100644 (file)
index 6c77dee..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-
-/**
- * Test Case ID   : 03 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install mediawiki on a already installed Mediawiki.]
- * Version        : MediaWiki 1.18alpha
- */
-
-class MediaWikiOnAlreadyInstalledTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Install Mediawiki using 'MySQL' database type.
-       public function testInstallOnAlreadyInstalled() {
-               $databaseName = DB_NAME_PREFIX . "_already_installed";
-               parent::navigateInstallPage( $databaseName );
-
-               // 'Options' page
-               parent::clickBackButton();
-
-               // Install page
-               parent::clickContinueButton();
-
-               // 'Install' page should display after the 'Option' page
-               $this->assertEquals( "Install", $this->getText( LINK_DIV . "h2" ) );
-
-               // Verify warning text displayed
-               $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
-                       $this->getText( LINK_FORM . "div[1]/div[2]" ) );
-
-               // Complete page
-               parent::clickContinueButton();
-               parent::completePageSuccessfull();
-               $this->chooseCancelOnNextConfirmation();
-               parent::restartInstallation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php b/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php
deleted file mode 100644 (file)
index 1a026f1..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-<?php
-/**
- * MediaWikiRestartInstallationTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 11, 12 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install mediawiki on a already installed Mediawiki.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiRestartInstallationTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Verify restarting the installation
-       public function testSuccessRestartInstallation() {
-               $dbNameBeforeRestart = DB_NAME_PREFIX . "_db_before";
-               parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart );
-
-               // Verify 'Restart installation' link available
-               $this->assertTrue( $this->isElementPresent( "link=Restart installation" ) );
-
-               // Click 'Restart installation'
-               $this->click( "link=Restart installation " );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Restart Installation' page displayed
-               $this->assertEquals( "Restart installation", $this->getText( LINK_DIV . "h2" ) );
-
-               // Restart warning message displayed
-               $this->assertTrue( $this->isTextPresent( "exact:Do you want to clear all saved data that you have entered and restart the installation process?" ) );
-
-               // Click on the 'Yes, restart' button
-               $this->click( "submit-restart" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Navigate to the initial installation page(Language).
-               $this->assertEquals( "Language", $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Welcome to MediaWiki!' page
-               parent::clickContinueButton();
-
-               // 'Connect to database' page
-               parent::clickContinueButton();
-
-               // saved data should be deleted
-               $dbNameAfterRestart = $this->getValue( "mysql_wgDBname" );
-               $this->assertNotEquals( $dbNameBeforeRestart, $dbNameAfterRestart );
-       }
-
-       // Verify cancelling restart
-       public function testCancelRestartInstallation() {
-               $dbNameBeforeRestart = DB_NAME_PREFIX . "_cancel_restart";
-
-               parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart );
-               // Verify 'Restart installation' link available
-               $this->assertTrue( $this->isElementPresent( "link=Restart installation" ) );
-
-               $this->click( "link=Restart installation" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Restart Installation' page displayed
-               $this->assertEquals( "Restart installation", $this->getText( LINK_DIV . "h2" ) );
-
-               // Restart warning message displayed
-               $this->assertTrue( $this->isTextPresent( "Do you want to clear all saved data that you have entered and restart the installation process?" ) );
-
-               // Click on the 'Back' button
-               parent::clickBackButton();
-
-               // Navigates to the previous page
-               $this->assertEquals( "Database settings", $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Connect to database' page
-               parent::clickBackButton();
-
-               // Saved data remain on the page.
-               $dbNameAfterRestart = $this->getValue( "mysql_wgDBname" );
-               $this->assertEquals( $dbNameBeforeRestart, $dbNameAfterRestart );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php b/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php
deleted file mode 100644 (file)
index 709085f..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-<?php
-/**
- * MediaWikiRightFrameworkLinksTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 14, 15, 16, 17 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : User selects 'Read me' link.
- *                  User selects 'Release notes' link.
- *                  User selects 'Copying' link.
- *                  User selects 'Upgrading' link.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiRightFrameworkLinksTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       public function testLinksAvailability() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // Verify 'Read me' link availability
-               $this->assertTrue( $this->isElementPresent( "link=Read me" ) );
-
-               // Verify 'Release notes' link availability
-               $this->assertTrue( $this->isElementPresent( "link=Release notes" ) );
-
-               //  Verify 'Copying' link availability
-               $this->assertTrue( $this->isElementPresent( "link=Copying" ) );
-       }
-
-       public function testPageNavigation() {
-               $this->open( "http://" . HOST_NAME . ":" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-
-               // Navigate to the 'Read me' page
-               $this->click( "link=Read me" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->assertEquals( "Read me", $this->getText( LINK_DIV . "h2[1]" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               parent::clickBackButton();
-
-               // Navigate to the 'Release notes' page
-               $this->click( "link=Release notes" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->assertEquals( "Release notes", $this->getText( LINK_DIV . "h2[1]" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               parent::clickBackButton();
-
-               // Navigate to the 'Copying' page
-               $this->click( "link=Copying" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->assertEquals( "Copying", $this->getText( LINK_DIV . "h2[1]" ) );
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-               parent::clickBackButton();
-
-               // Navigate to the 'Upgrading' page
-               $this->click( "link=Upgrading" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->assertEquals( "Upgrading", $this->getText( LINK_DIV . "h2[1]" ) );
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php b/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php
deleted file mode 100644 (file)
index 0f969b7..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * MediaWikiUpgradeExistingDatabaseTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 05 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : Install Mediawiki by updating the existing database.
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiUpgradeExistingDatabaseTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       // Install Mediawiki using 'MySQL' database type.
-       public function testUpgradeExistingDatabase() {
-
-               $databaseName = DB_NAME_PREFIX . "_upgrade_existing";
-               parent::navigateInstallPage( $databaseName );
-
-               $this->open( "http://localhost:" . PORT . "/" . DIRECTORY_NAME . "/config/index.php" );
-               $this->assertEquals( "Install", $this->getText( LINK_DIV . "h2" ) );
-               $this->assertEquals(
-                       "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
-                       $this->getText( LINK_DIV . "div[2]/form/div[1]/div[2]" )
-               );
-
-               // 'Optionis' page
-               parent::clickBackButton();
-
-               // 'Name' page
-               parent::clickBackButton();
-
-               // 'Database settings' page
-               parent::clickBackButton();
-
-               // 'Connect to database' page
-               parent::clickBackButton();
-               $this->type( "mysql_wgDBname", $databaseName );
-               parent::clickContinueButton();
-
-               // 'Upgrade existing installation' page  displayed next to the 'Connect to database' page.
-               $this->assertEquals( "Upgrade existing installation", $this->getText( LINK_DIV . "h2" ) );
-
-               // Warning message displayed.
-               $this->assertEquals( "There are MediaWiki tables in this database. To upgrade them to MediaWiki 1.18alpha, click Continue.",
-                       $this->getText( LINK_DIV . "div[2]/form/div[1]/div[2]" ) );
-
-               parent::clickContinueButton();
-               $this->assertEquals( "Upgrade existing installation",
-                       $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Upgrade complete.' text display
-               $this->assertEquals( "Upgrade complete.",
-                       $this->getText( "//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[1]" ) );
-
-               $this->assertEquals( "You can now Folder/index.php start using your wiki.",
-                       $this->getText( "//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[2]" ) );
-
-               $this->assertEquals( "Folder/index.php start using your wiki",
-                       $this->getText( "link=Folder/index.php start using your wiki" ) );
-
-               $this->assertTrue( $this->isElementPresent( "submit-regenerate" ) );
-               $this->click( "submit-regenerate" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-               $this->assertEquals( "Database settings",
-                       $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Database settings' page
-               parent::clickContinueButton();
-
-               // Name page
-               parent::completeNamePage();
-
-               // Options page
-               parent::clickContinueButton();
-
-               // Install page
-               $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
-                       $this->getText( LINK_FORM . "div[1]/div[2]" ) );
-               parent::clickContinueButton();
-
-               // complete
-               parent::completePageSuccessfull();
-               $this->chooseCancelOnNextConfirmation();
-               parent::restartInstallation();
-       }
-}
diff --git a/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php b/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php
deleted file mode 100644 (file)
index 71ef684..0000000
+++ /dev/null
@@ -1,494 +0,0 @@
-<?php
-/**
- * MediaWikiUserInterfaceTestCase
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once __DIR__ . '/MediaWikiInstallationCommonFunction.php';
-
-/**
- * Test Case ID   : 18 - 27 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
- * Test Case Name : UI of MediaWiki initial/ Language/ Welcome to MediaWiki!/ Connect to database/
- * Database settings/ Name/ Options/ Install/ Complete/ Restart Inslation pages
- * Version        : MediaWiki 1.18alpha
- */
-class MediaWikiUserInterfaceTestCase extends MediaWikiInstallationCommonFunction {
-       function setUp() {
-               parent::setUp();
-       }
-
-       public function testInitialPageUI() {
-
-               parent::navigateInitialpage();
-
-               // MediaWiki logo available
-               $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ) );
-
-               // 'MediaWiki 1.18alpha' text available
-               $this->assertEquals( "MediaWiki 1.18alpha", $this->getText( "//h1" ) );
-
-               // 'LocalSettings.php not found.' text available
-               $this->assertEquals( "LocalSettings.php not found.", $this->getText( "//p[1]" ) );
-
-               // 'Please set up the wiki first' text available
-               $this->assertEquals( "Please set up the wiki first.", $this->getText( "//p[2]" ) );
-
-               // 'set up the wiki' link available
-               $this->assertTrue( $this->isElementPresent( "link=set up the wiki" ) );
-       }
-
-       public function testlanguagePageUI() {
-               parent::navigateLanguagePage();
-
-               // Verify 'Language' heading
-               $this->assertEquals( "Language", $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Your language' label available
-               $this->assertEquals( "Your language:",
-                       $this->getText( LINK_FORM . "div[1]/div[1]/label" ) );
-
-               // 'Your language' dropdown available
-               $this->assertTrue( $this->isElementPresent( "UserLang" ) );
-
-               // 'Wiki language' label available
-               $this->assertEquals( "Wiki language:",
-                       $this->getText( LINK_FORM . "div[2]/div[1]/label" ) );
-
-               // 'Wiki language' dropdown available
-               $this->assertTrue( $this->isElementPresent( "ContLang" ) );
-       }
-
-       public function testWelcometoMediaWikiUI() {
-               parent::navigateWelcometoMediaWikiPage();
-
-               // Verify 'Welcome to MediaWiki!' heading
-               $this->assertEquals( "Welcome to MediaWiki!",
-                       $this->getText( LINK_DIV . "h2" ) );
-
-               // Verify environment ok text displayed.
-               $this->assertEquals( "The environment has been checked.You can install MediaWiki.",
-                       $this->getText( LINK_DIV . "div[6]/span" ) );
-       }
-
-       public function testConnectToDatabaseUI() {
-               parent::navigateConnetToDatabasePage();
-
-               //  'MYSQL radio button available
-               $this->assertEquals( "MySQL",
-                       $this->getText( LINK_FORM . "div[2]/div[2]/ul/li[1]/label" ) );
-               $this->assertTrue( $this->isElementPresent( LINK_FORM . "div[2]/div[2]/ul/li[1]" ) );
-
-               // 'SQLite' radio button available
-               $this->assertTrue( $this->isElementPresent( LINK_FORM . "div[2]/div[2]/ul/li[2]" ) );
-               $this->assertEquals( "SQLite", $this->getText( LINK_FORM . "div[2]/div[2]/ul/li[2]/label " ) );
-
-               // 'Database host' label available
-               $this->assertEquals( "Database host:", $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/label" ) );
-
-               // 'Database host' text box default to 'localhost'
-               $this->assertEquals( "localhost", $this->getValue( "mysql_wgDBserver" ) );
-
-               // 'Identify this wiki' section available
-               $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ) );
-
-               // 'Identify this wiki' label available
-               $this->assertEquals( "Identify this wiki", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ) );
-
-               // 'Database name' lable available
-               $this->assertEquals( "Database name:",
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/label" ) );
-
-               // Verify 'Database name:' text box is default to 'my_wiki'
-               $this->assertEquals( "my_wiki", $this->getValue( "mysql_wgDBname" ) );
-
-               // Verify 'Database table prefix:' label available
-               $this->assertEquals( "Database table prefix:",
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/label" ) );
-
-               // 'User account for installation' section available
-               $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ) );
-
-               // 'User account for installation' label available
-               $this->assertEquals( "User account for installation", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ) );
-
-               // 'Database username' label available
-               $this->assertEquals( "Database username:",
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/label" ) );
-
-               // 'Database username' text box defaults to 'root'
-               $this->assertEquals( "root", $this->getValue( "mysql__InstallUser" ) );
-
-               // 'Database password' label available
-               $this->assertEquals( "Database password:",
-                       $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/label" ) );
-       }
-
-       public function testDatabaseSettingsUI() {
-               $databaseName = DB_NAME_PREFIX . "_db_settings_UI";
-               parent::navigateDatabaseSettingsPage( $databaseName );
-
-               // 'Database settings' text available.
-               $this->assertEquals( "Database settings", $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Database account for web access' section available
-               $this->assertTrue( $this->isElementPresent( LINK_FORM . "fieldset" ) );
-
-               // 'Database account for web access' label available
-               $this->assertEquals( "Database account for web access", $this->getText( LINK_FORM . "fieldset/legend" ) );
-
-               // 'Use the same account as for installation' check box available
-               $this->assertEquals( "Use the same account as for installation", $this->getText( LINK_FORM . "fieldset/div[1]/label" ) );
-
-               // 'Use the same account as for installation' check box is selected by default
-               $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ) );
-
-               // 'Use the same account as for installation' check box deselected
-               $this->click( "mysql__SameAccount" );
-
-               // verify 'Use the same account as for installation' check box is not selected
-               $this->assertEquals( "off", $this->getValue( "mysql__SameAccount" ) );
-
-               // 'Database username' label available
-               $this->assertEquals( "Database username:", $this->getText( "//div[@id='dbOtherAccount']/div[1]/div[1]/label" ) );
-
-               // 'Database username' text box is default to the 'wikiuser'
-               $this->assertEquals( "wikiuser", $this->getValue( "mysql_wgDBuser" ) );
-
-               // 'Database password' label available
-               $this->assertEquals( "Database password:", $this->getText( "//div[@id='dbOtherAccount']/div[2]/div[1]/label" ) );
-
-               // 'Create the account if it does not already exist' label available
-               $this->assertEquals( "Create the account if it does not already exist", $this->getText( "//div[@id='dbOtherAccount']/div[4]/label" ) );
-
-               // 'Create the account if it does not already exist' check box is not selected by default
-               $this->assertEquals( "off", $this->getValue( "mysql__CreateDBAccount" ) );
-
-               //  'Create the account if it does not already exist' check box selected
-               $this->click( "mysql__CreateDBAccount" );
-
-               // Verify  'Create the account if it does not already exist' check box is selected
-               $this->assertEquals( "on", $this->getValue( "mysql__CreateDBAccount" ) );
-               $this->click( "mysql__SameAccount" );
-               $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ) );
-
-               // 'Storage engine' label available
-               $this->assertEquals( "Storage engine:",
-                       $this->getText( LINK_FORM . "div[1]/div[1]/label" ) );
-
-               // 'InnoDB' label available
-               $this->assertEquals( "InnoDB",
-                       $this->getText( LINK_FORM . "div[1]/div[2]/ul/li[1]/label" ) );
-
-               // 'InnoDB' radio button available
-               $this->assertTrue( $this->isElementPresent( "mysql__MysqlEngine_InnoDB" ) );
-
-               // 'MyISAM' label available
-               $this->assertEquals( "MyISAM", $this->getText( LINK_FORM . "div[1]/div[2]/ul/li[2]/label" ) );
-
-               // 'MyISAM' radio button available
-               $this->assertTrue( $this->isElementPresent( "mysql__MysqlEngine_MyISAM" ) );
-
-               // 'Database character set' label available
-               $this->assertEquals( "Database character set:",
-                       $this->getText( LINK_FORM . "div[3]/div[1]/label" ) );
-
-               // 'Binary' radio button available
-               $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_binary" ) );
-
-               // 'Binary' radio button available
-               $this->assertEquals( "Binary", $this->getText( LINK_FORM . "div[3]/div[2]/ul/li[1]/label" ) );
-
-               // 'UTF-8' radio button available
-               $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_utf8" ) );
-
-               // 'UTF-8' label available
-               $this->assertEquals( "UTF-8", $this->getText( LINK_FORM . "div[3]/div[2]/ul/li[2]/label" ) );
-
-               // 'Binary' radio button is selected
-               $this->assertEquals( "on", $this->getValue( "mysql__MysqlCharset_binary" ) );
-       }
-
-       public function testNamePageUI() {
-               $databaseName = DB_NAME_PREFIX . "_name_UI";
-               parent::navigateNamePage( $databaseName );
-
-               // 'Name of wiki' text box available
-               $this->assertEquals( "Name of wiki:",
-                       $this->getText( LINK_FORM . "div[1]/div[1]/label" ) );
-
-               $this->assertTrue( $this->isElementPresent( "config_wgSitename" ) );
-
-               // 'Project namespace' label available
-               $this->assertEquals( "Project namespace:",
-                       $this->getText( LINK_FORM . "div[2]/div[1]/label" ) );
-
-               // 'Same as the wiki name' radio button available
-               $this->assertTrue( $this->isElementPresent( "config__NamespaceType_site-name" ) );
-
-               // 'Project' radio button available
-               $this->assertTrue( $this->isElementPresent( "config__NamespaceType_generic" ) );
-
-               // 'Project' radio button available
-               $this->assertTrue( $this->isElementPresent( "config__NamespaceType_other" ) );
-
-               // 'Same as the wiki name' label available
-               $this->assertEquals( "Same as the wiki name:",
-                       $this->getText( LINK_FORM . "div[2]/div[2]/ul/li[1]/label" ) );
-
-               // 'Project' label available
-               $this->assertEquals( "Project",
-                       $this->getText( LINK_FORM . "div[2]/div[2]/ul/li[2]/label" ) );
-
-               // 'Project' label available
-               $this->assertEquals( "Other (specify)",
-                       $this->getText( LINK_FORM . "div[2]/div[2]/ul/li[3]/label" ) );
-
-               //  'Same as the wiki name' radio button selected by default
-               $this->assertEquals( "on", $this->getValue( "config__NamespaceType_site-name" ) );
-
-               // 'Administrator account' section available
-               $this->assertTrue( $this->isElementPresent( LINK_FORM . "fieldset" ) );
-
-               // 'Administrator account' label available
-               $this->assertEquals( "Administrator account",
-                       $this->getText( LINK_FORM . "fieldset/legend" ) );
-
-               // 'Your Name' label available
-               $this->assertEquals( "Your name:",
-                       $this->getText( LINK_FORM . "fieldset/div[1]/div[1]/label" ) );
-
-               // 'Your Name' text box available
-               $this->assertTrue( $this->isElementPresent( "config__AdminName" ) );
-
-               // 'Password' label available
-               $this->assertEquals( "Password:",
-                       $this->getText( LINK_FORM . "fieldset/div[2]/div[1]/label" ) );
-
-               // 'Password' text box available
-               $this->assertTrue( $this->isElementPresent( "config__AdminPassword" ) );
-
-               // 'Password again' label available
-               $this->assertEquals( "Password again:",
-                       $this->getText( LINK_FORM . "fieldset/div[3]/div[1]/label" ) );
-
-               // 'Password again' text box available
-               $this->assertTrue( $this->isElementPresent( "config__AdminPassword2" ) );
-
-               // 'Email address' label avaialble
-               $this->assertEquals( "E-mail address:",
-                       $this->getText( LINK_FORM . "fieldset/div[4]/div[1]/label" ) );
-
-               // 'Email address' text box available
-               $this->assertTrue( $this->isElementPresent( "config__AdminEmail" ) );
-
-               // Message displayed
-               $this->assertEquals( "You are almost done! You can now skip the remaining configuration and install the wiki right now.",
-                       $this->getText( LINK_FORM . "/div[4]/div[2]/p" ) );
-
-               // 'Ask me more questions.' radio button available
-               $this->assertTrue( $this->isElementPresent( "config__SkipOptional_continue" ) );
-
-               // 'Ask me more questions.' label available
-               $this->assertEquals( "Ask me more questions.",
-                       $this->getText( LINK_FORM . "div[5]/div[2]/ul/li[1]/label" ) );
-
-               // 'I'm bored already, just install the wiki' radio button is avaiable
-               $this->assertTrue( $this->isElementPresent( "config__SkipOptional_skip" ) );
-
-               // 'I'm bored already, just install the wiki' label available
-               $this->assertEquals( "I'm bored already, just install the wiki.",
-                       $this->getText( LINK_FORM . "div[5]/div[2]/ul/li[2]/label" ) );
-
-               //  'Ask me more questions.' radio button is default selected
-               $this->assertEquals( "on", $this->getValue( "config__SkipOptional_continue" ) );
-       }
-
-       public function testOptionPageUI() {
-               $databaseName = DB_NAME_PREFIX . "_options_UI";
-               parent::navigateOptionsPage( $databaseName );
-
-               // 'Options' label available
-               $this->assertEquals( "Options", $this->getText( LINK_DIV . "h2" ) );
-
-               // 'Return e-mail address' label available
-               $this->assertEquals( "Return e-mail address:", $this->getText( "//div[@id='emailwrapper']/div[1]/div[1]/label" ) );
-
-               //    'Return e-mail address' text box available
-               $this->assertTrue( $this->isElementPresent( "config_wgPasswordSender" ) );
-
-               // Text 'apache@localhost' is default value of the 'Return e-mail address' text box
-               $this->assertEquals( "apache@localhost", $this->getValue( "config_wgPasswordSender" ) );
-
-               // 'Logo URL' label available
-               $this->assertEquals( "Logo URL:", $this->getText( LINK_FORM . "fieldset[2]/div[3]/div[1]/label" ) );
-
-               // 'Logo URL' text box available
-               $this->assertTrue( $this->isElementPresent( "config_wgLogo" ) );
-
-               // Correct path available in the 'Logo URL' text box
-               $this->assertEquals( "/wiki/skins/common/images/wiki.png", $this->getValue( "config_wgLogo" ) );
-
-               // 'Enable file uploads' radio button available
-               $this->assertTrue( $this->isElementPresent( "config_wgEnableUploads" ) );
-
-               // 'Enable file uploads' label available
-               $this->assertEquals( "Enable file uploads",
-                       $this->getText( LINK_FORM . "fieldset[2]/div[1]/label" ) );
-
-               // 'Enable file uploads' check box is not selected
-               $this->assertEquals( "off", $this->getValue( "config_wgEnableUploads" ) );
-
-               $this->click( "config_wgEnableUploads" );
-
-               // 'Directory for deleted files' label available
-               $this->assertEquals( "Directory for deleted files:",
-                       $this->getText( "//div[@id='uploadwrapper']/div/div[1]/label" ) );
-
-               // 'Directory for deleted files' text box available
-               $this->assertTrue( $this->isElementPresent( "config_wgDeletedDirectory" ) );
-
-               // Correct path available in the 'Directory for deleted files' text box
-               $this->assertEquals( "C:\\wamp\\www\\" . DIRECTORY_NAME . "/images/deleted",
-                       $this->getValue( "config_wgDeletedDirectory" ) );
-       }
-
-       public function testInstallPageUI() {
-               $databaseName = DB_NAME_PREFIX . "_install_UI";
-               parent::navigateInstallPage( $databaseName );
-
-               // Verify installation done messages display
-               $this->assertEquals( "Setting up database... done",
-                       $this->getText( LINK_FORM . "ul/li[1]" ) );
-               $this->assertEquals( "Creating tables... done",
-                       $this->getText( LINK_FORM . "ul/li[2]" ) );
-               $this->assertEquals( "Creating database user... done",
-                       $this->getText( LINK_FORM . "ul/li[3]" ) );
-               $this->assertEquals( "Populating default interwiki table... done",
-                       $this->getText( LINK_FORM . "ul/li[4]" ) );
-               $this->assertEquals( "Generating secret key... done",
-                       $this->getText( LINK_FORM . "ul/li[5]" ) );
-               $this->assertEquals( "Generating default upgrade key... done",
-                       $this->getText( LINK_FORM . "ul/li[6]" ) );
-               $this->assertEquals( "Creating administrator user account... done",
-                       $this->getText( LINK_FORM . "ul/li[7]" ) );
-               $this->assertEquals( "Creating main page with default content... done",
-                       $this->getText( LINK_FORM . "ul/li[8]" ) );
-       }
-
-       public function testCompletePageUI() {
-               $databaseName = DB_NAME_PREFIX . "_complete_UI";
-               parent::navigateCompletePage( $databaseName );
-
-               // 'Congratulations!' text display
-               $this->assertEquals( "Congratulations!",
-                       $this->getText( LINK_FORM . "div[1]/div[2]/p[1]/b" ) );
-               // 'LocalSettings.php' generated message display
-               $this->assertEquals( "The installer has generated a LocalSettings.php file. It contains all your configuration.",
-                       $this->getText( LINK_FORM . "div[1]/div[2]/p[2]" ) );
-
-               // 'Download LocalSettings.php'' link available
-               $this->assertTrue( $this->isElementPresent( "link=Download LocalSettings.php" ) );
-
-               // 'enter your wiki' link available
-               $this->assertTrue( $this->isElementPresent( "link=Folder/index.php enter your wiki" ) );
-       }
-
-       public function testRestartInstallation() {
-               parent::navigateConnetToDatabasePage();
-               $this->click( "link=Restart installation" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // Restart installation' label should be available.
-               $this->assertEquals( "Restart installation", $this->getText( LINK_DIV . "h2" ) );
-
-               //'Do you want to clear all saved data that you have entered and restart the installation process?' label available
-               $this->assertEquals( "Do you want to clear all saved data that you have entered and restart the installation process?",
-                       $this->getText( "//*[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]" ) );
-               // 'Back' button available
-               $this->assertTrue( $this->isElementPresent( "submit-back" ) );
-
-               // 'Restart' button available
-               $this->assertTrue( $this->isElementPresent( "submit-restart" ) );
-       }
-
-       public function testMediaWikiLogoAvailability() {
-               $databaseName = DB_NAME_PREFIX . "_mediawiki_logo";
-               parent::navigateInitialpage();
-               parent::mediaWikiLogoPresentInitialScreen();
-               $this->click( "link=set up the wiki" );
-               $this->waitForPageToLoad( PAGE_LOAD_TIME );
-
-               // 'Language' page
-               parent::mediaWikiLogoPresent();
-               parent::clickContinueButton();
-
-               // 'Welcome to MediaWiki' page
-               parent::mediaWikiLogoPresent();
-               parent::clickContinueButton();
-
-               // 'Connet to database' page
-               parent::mediaWikiLogoPresent();
-               $this->type( "mysql_wgDBname", $databaseName );
-               parent::clickContinueButton();
-
-               // 'Database setting' page
-               parent::mediaWikiLogoPresent();
-               parent::clickContinueButton();
-
-               // 'Name' page
-               parent::mediaWikiLogoPresent();
-               parent::completeNamePage();
-               parent::clickContinueButton();
-
-               // 'Options' page
-               parent::mediaWikiLogoPresent();
-               parent::clickContinueButton();
-
-               // 'Install' page
-               parent::mediaWikiLogoPresent();
-       }
-
-       public function testRightFramework() {
-               parent::navigateLanguagePage();
-               // Verfy right framework texts display
-               $this->assertEquals( "Language",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[1]" ) );
-               $this->assertEquals( "Existing wiki",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[2]" ) );
-               $this->assertEquals( "Welcome to MediaWiki!",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[3]" ) );
-               $this->assertEquals( "Connect to database",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[4]" ) );
-               $this->assertEquals( "Upgrade existing installation",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[5]" ) );
-               $this->assertEquals( "Database settings",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[6]" ) );
-               $this->assertEquals( "Name",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[7]" ) );
-               $this->assertEquals( "Options",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[8]" ) );
-               $this->assertEquals( "Install",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[9]" ) );
-               $this->assertEquals( "Complete!",
-                       $this->getText( LINK_RIGHT_FRAMEWORK . "li[10]/span" ) );
-       }
-}
diff --git a/tests/selenium/installer/README.txt b/tests/selenium/installer/README.txt
deleted file mode 100644 (file)
index bc880a8..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-== Details==
-
-Automated Selenium test scripts written for MediaWiki Installer is available at https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/core.git;a=tree;f=tests/selenium/installer;hb=HEAD.
-Detailed test cases available at http://www.mediawiki.org/wiki/New_installer/Test_plan.
-
-Version : MediaWiki 1.18alpha
-Date   : 27/12/2010
-
-== Running tests ==
-
-Test cases can be run independently or can run all the test cases using MediaWikiInstallerTestSuite.php within PHPUnit/Selenium.
-
-
-== Dependencies == 
-
-MediaWikiInstallationConfig.php
-
-Value of the 'DB_NAME_PREFIX' should be replace with the database name prefix. Several DB instances will get created to cover different installation scenarios starting with the above prefix.
-You need to change the value of the 'DB_NAME_PREFIX' in MediaWikiInstallationConfig everytime you planned to
-run the tests.
-'DIRECTORY_NAME', 'PORT' and the 'HOST_NAME' should be replaced with your local values.
-You may specify the test browser you wish to run the test using 'TEST_BROWSER'.  Default browser is Firefox.
-
-Note : MediaWikiInstallerTestSuite.php has no dependency on 'Selenium' test framework.
-
-
-== Known problems ==
-
-If you run the MediaWikiInstallerTestSuite.php twice without changing the name of the database, the second run should be falied.
-(Please read the more information on how to change the database name which is avaialable under 'Dependencies' section)
-
-
diff --git a/tests/selenium/selenium_settings.ini.sample b/tests/selenium/selenium_settings.ini.sample
deleted file mode 100644 (file)
index b1d8819..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-[SeleniumSettings]
-
-; Set up the available browsers that Selenium can control.
-browsers[firefox]      = "*firefox"
-browsers[iexplorer] = "*iexploreproxy"
-browsers[chrome]       = "*chrome"
-
-; The simple configurations above usually work on Linux, but Windows and
-; Mac OS X hosts may need to specify a full path:
-;browsers[firefox] = "*firefox /Applications/Firefox.app/Contents/MacOS/firefox-bin"
-;browsers[firefox] = "*firefox C:\Program Files\Mozilla Firefox\firefox.exe"
-
-host                           = "localhost"
-port                           = "4444"
-wikiUrl                        = "http://localhost/deployment"
-username                       = "wikiuser"
-userPassword           = "wikipass"
-testBrowser            = "firefox"
-startserver                    =
-stopserver                     =
-jUnitLogFile           =
-runAgainstGrid         = false
-
-; To let the test runner start and stop the selenium server, it needs the full
-; path to selenium-server.jar from the selenium-remote-control package.
-seleniumserverexecpath = "/opt/local/selenium-remote-control-1.0.3/selenium-server-1.0.3/selenium-server.jar"
-
-[SeleniumTests]
-
-testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
-testSuite[WikiEditorTestSuite] = "extensions/WikiEditor/selenium/WikiEditorTestSuite.php"
-
diff --git a/tests/selenium/selenium_settings_grid.ini.sample b/tests/selenium/selenium_settings_grid.ini.sample
deleted file mode 100644 (file)
index 3bbd534..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-[SeleniumSettings]
-
-host                   = "grid.tesla.usability.wikimedia.org"
-port                   = "4444"
-wikiUrl                        = "http://208.80.152.253:5001"
-username               = "wikiuser"
-userPassword   = "wikipass"
-testBrowser            = "Safari on OS X Snow Leopard"
-jUnitLogFile   =
-runAgainstGrid = true
-startserver = false
-stopserver = false
-
-[SeleniumTests]
-
-testSuite[SimpleSeleniumTestSuite]     = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
diff --git a/tests/selenium/suites/AddContentToNewPageTestCase.php b/tests/selenium/suites/AddContentToNewPageTestCase.php
deleted file mode 100644 (file)
index 1237bb5..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class AddContentToNewPageTestCase extends SeleniumTestCase {
-       // Add bold text and verify output
-       public function testAddBoldText() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "//*[@id='mw-editbutton-bold']" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify bold text displayed on mediawiki preview
-               $this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/p/b" ) );
-               $this->assertTrue( $this->isTextPresent( "Bold text" ) );
-       }
-
-       // Add italic text and verify output
-       public function testAddItalicText() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "//*[@id='mw-editbutton-italic']" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify italic text displayed on mediawiki preview
-               $this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/p/i" ) );
-               $this->assertTrue( $this->isTextPresent( "Italic text" ) );
-       }
-
-       // Add internal link for a new page and verify output in the preview
-       public function testAddInternalLinkNewPage() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "//*[@id='mw-editbutton-link']" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify internal link displayed on mediawiki preview
-               $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
-               $correct = strstr( $source, "Link title" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Link title" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify internal link open as a new page - editing mode
-               $source = $this->getText( "firstHeading" );
-               $correct = strstr( $source, "Editing Link title" );
-               $this->assertEquals( $correct, true );
-       }
-
-       // Add external link and verify output in the preview
-       public function testAddExternalLink() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "//*[@id='mw-editbutton-extlink']" );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, "[http://www.google.com Google]" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify external links displayed on mediawiki preview
-               $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
-               $correct = strstr( $source, "Google" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Google" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify external link opens
-               $source = $this->getTitle();
-               $correct = strstr( $source, "Google" );
-               $this->assertEquals( $correct, true );
-       }
-
-       // Add level 2 headline and verify output in the preview
-       public function testAddLevel2HeadLine() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "mw-editbutton-headline" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/h2" ) );
-
-               // Verify level 2 headline displayed on mediawiki preview
-               $source = $this->getText( "//*[@id='Headline_text']" );
-               $correct = strstr( $source, "Headline text" );
-               $this->assertEquals( $correct, true );
-       }
-
-       // Add text with ignore wiki format and verify output the preview
-       public function testAddNoWikiFormat() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "//*[@id='mw-editbutton-nowiki']" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify ignore wiki format text displayed on mediawiki preview
-               $source = $this->getText( "//div[@id='wikiPreview']/p" );
-               $correct = strstr( $source, "Insert non-formatted text here" );
-               $this->assertEquals( $correct, true );
-       }
-
-       // Add signature and verify output in the preview
-       public function testAddUserSignature() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "mw-editbutton-signature" );
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify signature displayed on mediawiki preview
-               $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
-               $username = $this->getText( "//*[@id='pt-userpage']/a" );
-               $correct = strstr( $source, $username );
-               $this->assertEquals( $correct, true );
-       }
-
-       // Add horizontal line and verify output in the preview
-       public function testHorizontalLine() {
-               $this->getExistingPage();
-               $this->clickEditLink();
-               $this->loadWikiEditor();
-               $this->clearWikiEditor();
-               $this->click( "mw-editbutton-hr" );
-
-               $this->clickShowPreviewBtn();
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify horizontal line displayed on mediawiki preview
-               $this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/hr" ) );
-               $this->deletePage( "new" );
-       }
-}
diff --git a/tests/selenium/suites/AddNewPageTestCase.php b/tests/selenium/suites/AddNewPageTestCase.php
deleted file mode 100644 (file)
index c70af33..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class AddNewPageTestCase extends SeleniumTestCase {
-       // Verify adding a new page
-       public function testAddNewPage() {
-               $newPage = "new";
-               $displayName = "New";
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( "searchInput", $newPage );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify 'Search results' text available
-               $source = $this->gettext( "firstHeading" );
-               $correct = strstr( $source, "Search results" );
-               $this->assertEquals( $correct, true );
-
-               // Verify  'Create the page "<page name>" on this wiki' text available
-               $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p/b" );
-               $correct = strstr( $source, "Create the page \"New\" on this wiki!" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( SeleniumTestConstants::LINK_START . $displayName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->assertTrue( $this->isElementPresent( SeleniumTestConstants::LINK_START . "Create" ) );
-               $this->type( "wpTextbox1", "add new test page" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-
-               // Verify new page added
-               $source = $this->gettext( "firstHeading" );
-               $correct = strstr( $source, $displayName );
-               $this->assertEquals( $correct, true );
-       }
-}
diff --git a/tests/selenium/suites/CreateAccountTestCase.php b/tests/selenium/suites/CreateAccountTestCase.php
deleted file mode 100644 (file)
index a603f99..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-Class CreateAccountTestCase extends SeleniumTestCase {
-       // Change these values before run the test
-       private $userName = "yourname4000";
-       private $password = "yourpass4000";
-
-       // Verify 'Log in/create account' link existance in Main page.
-       public function testMainPageLink() {
-
-               $this->click( "link=Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-               $this->assertTrue( $this->isElementPresent( "link=Log in / create account" ) );
-       }
-
-       // Verify 'Create an account' link existance in 'Log in / create account' Page.
-       public function testCreateAccountPageLink() {
-
-               $this->click( "link=Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-
-               // click Log in / create account link to open Log in / create account' page
-               $this->click( "link=Log in / create account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertTrue( $this->isElementPresent( "link=Create an account" ) );
-       }
-
-       // Verify Create account
-       public function testCreateAccount() {
-
-               $this->click( "link=Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-
-               $this->click( "link=Log in / create account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->click( "link=Create an account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify for blank user name
-               $this->type( "wpName2", "" );
-               $this->click( "wpCreateaccount" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n You have not specified a valid user name.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               // Verify for invalid user name
-               $this->type( "wpName2", "@" );
-               $this->click( "wpCreateaccount" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n You have not specified a valid user name.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               // start of test for blank password
-               $this->type( "wpName2", $this->userName );
-               $this->type( "wpPassword2", "" );
-               $this->click( "wpCreateaccount" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n Passwords must be at least 1 character.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               $this->type( "wpName2", $this->userName );
-               $this->type( "wpPassword2", $this->password );
-               $this->click( "wpCreateaccount" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n The passwords you entered do not match.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               $this->type( "wpName2", $this->userName );
-               $this->type( "wpPassword2", $this->password );
-               $this->type( "wpRetype", $this->password );
-               $this->click( "wpCreateaccount" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify successful account creation for valid combination of 'Username', 'Password', 'Retype password'
-               $this->assertEquals( "Welcome, " . ucfirst( $this->userName ) . "!",
-                       $this->getText( "Welcome,_" . ucfirst( $this->userName ) . "!" ) );
-       }
-}
-
diff --git a/tests/selenium/suites/DeletePageAdminTestCase.php b/tests/selenium/suites/DeletePageAdminTestCase.php
deleted file mode 100644 (file)
index f0005cd..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class DeletePageAdminTestCase extends SeleniumTestCase {
-       // Verify adding a new page
-       public function testDeletePage() {
-
-               $newPage = "new";
-               $displayName = "New";
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-
-               $this->type( "searchInput", $newPage );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_START . $displayName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage . " text" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_START . "Log in / create account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "wpName1", $this->selenium->getUser() );
-               $this->type( "wpPassword1", $this->selenium->getPass() );
-               $this->click( "wpLoginAttempt" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->type( "searchInput", "new" );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify  'Delete' link displayed
-               $source = $this->gettext( SeleniumTestConstants::LINK_START . "Delete" );
-               $correct = strstr( $source, "Delete" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Delete" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify 'Delete' button available
-               $this->assertTrue( $this->isElementPresent( "wpConfirmB" ) );
-
-               $this->click( "wpConfirmB" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify  'Action complete' text displayed
-               $source = $this->gettext( "firstHeading" );
-               $correct = strstr( $source, "Action complete" );
-               $this->assertEquals( $correct, true );
-
-               // Verify  '<Page Name> has been deleted. See deletion log for a record of recent deletions.' text displayed
-               $source = $this->gettext( "//div[@id='bodyContent']/p[1]" );
-               $correct = strstr( $source, "\"New\" has been deleted. See deletion log for a record of recent deletions." );
-               $this->assertEquals( $correct, true );
-       }
-}
diff --git a/tests/selenium/suites/EmailPasswordTestCase.php b/tests/selenium/suites/EmailPasswordTestCase.php
deleted file mode 100644 (file)
index 77282e4..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class EmailPasswordTestCase extends SeleniumTestCase {
-       // change user name for each and every test (with in 24 hours)
-       private $userName = "test1";
-
-       public function testEmailPasswordButton() {
-               $this->click( SeleniumTestConstants::LINK_START . "Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-
-               // click Log in / create account link to open Log in / create account' page
-               $this->click( SeleniumTestConstants::LINK_START . "Log in / create account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertTrue( $this->isElementPresent( "wpMailmypassword" ) );
-       }
-
-       // Verify Email password functionality
-       public function testEmailPasswordMessages() {
-               $this->click( SeleniumTestConstants::LINK_START . "Log out" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->open( $this->getUrl() . '/index.php?title=Main_Page' );
-
-               // click Log in / create account link to open Log in / create account' page
-               $this->click( SeleniumTestConstants::LINK_START . "Log in / create account" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "wpName1", "" );
-               $this->click( "wpMailmypassword" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n You have not specified a valid user name.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               $this->type( "wpName1", $this->userName );
-               $this->click( "wpMailmypassword" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               //  Can not run on localhost
-               $this->assertEquals( "A new password has been sent to the e-mail address registered for " . ucfirst( $this->userName ) . ". Please log in again after you receive it.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-
-               $this->type( "wpName1", $this->userName );
-               $this->click( "wpMailmypassword" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Login error\n A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]" ) );
-       }
-}
-
diff --git a/tests/selenium/suites/MediaWikiEditorConfig.php b/tests/selenium/suites/MediaWikiEditorConfig.php
deleted file mode 100644 (file)
index 7fd8e07..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class MediaWikiEditorConfig {
-       public static function getSettings( &$includeFiles, &$globalConfigs ) {
-               $includes = array(
-                       //files that needed to be included would go here
-                       //commenting out because this does not exist
-                       //'tests/selenium/suites/MediaWikiCommonFunction.php'
-               );
-               $configs = array(
-                       'wgPageLoadTime' => "600000"
-               );
-               $includeFiles = array_merge( $includeFiles, $includes );
-               $globalConfigs = array_merge( $globalConfigs, $configs );
-               return true;
-       }
-}
-
diff --git a/tests/selenium/suites/MediaWikiEditorTestSuite.php b/tests/selenium/suites/MediaWikiEditorTestSuite.php
deleted file mode 100644 (file)
index f9cfb7f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-class MediaWikiEditorTestSuite extends SeleniumTestSuite {
-       public function setUp() {
-               $this->setLoginBeforeTests( true );
-               parent::setUp();
-       }
-
-       public function addTests() {
-               $testFiles = array(
-                       'tests/selenium/suites/AddNewPageTestCase.php',
-                       'tests/selenium/suites/AddContentToNewPageTestCase.php',
-                       'tests/selenium/suites/PreviewPageTestCase.php',
-                       'tests/selenium/suites/SavePageTestCase.php',
-               );
-               parent::addTestFiles( $testFiles );
-       }
-}
-
diff --git a/tests/selenium/suites/MediaWikiExtraTestSuite.php b/tests/selenium/suites/MediaWikiExtraTestSuite.php
deleted file mode 100644 (file)
index 8993907..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?php
-
-class MediaWikiExtraTestSuite extends SeleniumTestSuite {
-       public function setUp() {
-               $this->setLoginBeforeTests( true );
-               parent::setUp();
-       }
-
-       public function addTests() {
-               $testFiles = array(
-                       'tests/selenium/suites/MyContributionsTestCase.php',
-                       'tests/selenium/suites/MyWatchListTestCase.php',
-                       'tests/selenium/suites/UserPreferencesTestCase.php',
-                       'tests/selenium/suites/MovePageTestCase.php',
-                       'tests/selenium/suites/PageSearchTestCase.php',
-                       'tests/selenium/suites/EmailPasswordTestCase.php',
-                       'tests/selenium/suites/CreateAccountTestCase.php'
-               );
-               parent::addTestFiles( $testFiles );
-       }
-}
diff --git a/tests/selenium/suites/MediawikiCoreSmokeTestCase.php b/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
deleted file mode 100644 (file)
index 4491afd..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-<?php
-/*
- * Stub of tests be need as part of the hack-a-ton
- */
-class MediawikiCoreSmokeTestCase extends SeleniumTestCase {
-       public function testUserLogin() {
-
-       }
-
-       public function testChangeUserPreference() {
-
-       }
-
-       /**
-        * TODO: generalize this test to be reusable for different skins
-        */
-       public function testCreateNewPageVector() {
-
-       }
-
-       /**
-        * TODO: generalize this test to be reusable for different skins
-        */
-       public function testEditExistingPageVector() {
-
-       }
-
-       /**
-        * TODO: generalize this test to be reusable for different skins
-        */
-       public function testCreateNewPageMonobook() {
-
-       }
-
-       /**
-        * TODO: generalize this test to be reusable for different skins
-        */
-       public function testEditExistingPageMonobook() {
-
-       }
-
-       public function testImageUpload() {
-               $this->login();
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Special:Upload' );
-               $this->type( 'wpUploadFile', __DIR__ .
-                       "\\..\\data\\Wikipedia-logo-v2-de.png" );
-               $this->check( 'wpIgnoreWarning' );
-               $this->click( 'wpUpload' );
-               $this->waitForPageToLoad( 30000 );
-
-               $this->assertSeleniumHTMLContains(
-                       '//h1[@class="firstHeading"]', "Wikipedia-logo-v2-de.png"
-               );
-
-               /*
-               $this->open( $this->getUrl() . '/index.php?title=Image:'
-                       . ucfirst( $this->filename ) . '&action=delete' );
-               $this->type( 'wpReason', 'Remove test file' );
-               $this->click( 'mw-filedelete-submit' );
-               $this->waitForPageToLoad( 10000 );
-
-               // Todo: This message is localized
-               $this->assertSeleniumHTMLContains( '//div[@id="bodyContent"]/p',
-                       ucfirst( $this->filename ) . '.*has been deleted.' );
-                */
-       }
-
-
-}
diff --git a/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php b/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
deleted file mode 100644 (file)
index fc69e3c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-/**
- * Stubs for now. We're going to start populating this test.
- */
-class MediawikiCoreSmokeTestSuite extends SeleniumTestSuite {
-       public function setUp() {
-               $this->setLoginBeforeTests( false );
-               parent::setUp();
-       }
-
-       public function addTests() {
-               $testFiles = array(
-                       'tests/selenium/suites/MediawikiCoreSmokeTestCase.php'
-               );
-               parent::addTestFiles( $testFiles );
-       }
-
-
-}
diff --git a/tests/selenium/suites/MovePageTestCase.php b/tests/selenium/suites/MovePageTestCase.php
deleted file mode 100644 (file)
index d2eaa40..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class MovePageTestCase extends SeleniumTestCase {
-       // Verify move(rename) wiki page
-       public function testMovePage() {
-               $newPage = "mypage99";
-               $displayName = "Mypage99";
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( "searchInput", $newPage );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( "link=" . $displayName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage . " text" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify link 'Move' available
-               $this->assertTrue( $this->isElementPresent( "link=Move" ) );
-
-               $this->click( "link=Move" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify correct page name displayed under 'Move Page' field
-               $this->assertEquals( $displayName,
-                       $this->getText( "//table[@id='mw-movepage-table']/tbody/tr[1]/td[2]/strong/a" ) );
-               $movePageName = $this->getText( "//table[@id='mw-movepage-table']/tbody/tr[1]/td[2]/strong/a" );
-
-               // Verify 'To new title' field has current page name as the default name
-               $newTitle = $this->getValue( "wpNewTitle" );
-               $correct = strstr( $movePageName, $newTitle );
-               $this->assertEquals( $correct, true );
-
-               $this->type( "wpNewTitle", $displayName );
-               $this->click( "wpMove" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify warning message for the same source and destination titles
-               $this->assertEquals( "Source and destination titles are the same; cannot move a page over itself.",
-                       $this->getText( "//div[@id='bodyContent']/p[4]/strong" ) );
-
-               // Verify warning message for the blank title
-               $this->type( "wpNewTitle", "" );
-               $this->click( "wpMove" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify warning message for the blank title
-               $this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
-                       $this->getText( "//div[@id='bodyContent']/p[4]/strong" ) );
-
-               //  Verify warning messages for the invalid titles
-               $this->type( "wpNewTitle", "# < > [ ] | { }" );
-               $this->click( "wpMove" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
-                       $this->getText( "//div[@id='bodyContent']/p[4]/strong" ) );
-
-               $this->type( "wpNewTitle", $displayName . "move" );
-               $this->click( "wpMove" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify move success message displayed correctly
-               $this->assertEquals( "\"" . $displayName . "\" has been moved to \"" . $displayName . "move" . "\"",
-                       $this->getText( "//div[@id='bodyContent']/p[1]/b" ) );
-
-               $this->type( "searchInput", $newPage . "move" );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify search using new page name
-               $this->assertEquals( $displayName . "move", $this->getText( "firstHeading" ) );
-
-               $this->type( "searchInput", $newPage );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify search using old page name
-               $redirectPageName = $this->getText( "//*[@id='contentSub']" );
-               $this->assertEquals( "(Redirected from " . $displayName . ")", $redirectPageName );
-
-               // newpage delete
-               $this->deletePage( $newPage . "move" );
-               $this->deletePage( $newPage );
-       }
-}
-
diff --git a/tests/selenium/suites/MyContributionsTestCase.php b/tests/selenium/suites/MyContributionsTestCase.php
deleted file mode 100644 (file)
index 81e3a4d..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once dirname( __DIR__ ) . '/SeleniumTestConstants.php';
-
-class MyContributionsTestCase extends SeleniumTestCase {
-       // Verify user contributions
-       public function testRecentChangesAvailability() {
-               $newPage = $this->createNewTestPage( "MyContributionsTest" );
-
-               // Verify My contributions Link available
-               $this->assertTrue( $this->isElementPresent( "link=Contributions" ) );
-
-
-               $this->click( "link=Contributions" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify recent page adding available on My Contributions list
-               $this->assertEquals( $newPage, $this->getText( "link=" . $newPage ) );
-
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $newPage );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->click( SeleniumTestConstants::LINK_EDIT );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage . " text changed" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( "link=Contributions" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify recent page changes available on My Contributions
-               $this->assertTrue( $this->isTextPresent( $newPage ) );
-       }
-}
-
diff --git a/tests/selenium/suites/MyWatchListTestCase.php b/tests/selenium/suites/MyWatchListTestCase.php
deleted file mode 100644 (file)
index 842108f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-require_once dirname( __DIR__ ) . '/SeleniumTestConstants.php';
-
-class MyWatchListTestCase extends SeleniumTestCase {
-       // Verify user watchlist
-       public function testMyWatchlist() {
-               $pageName = $this->createNewTestPage( "MyWatchListTest", true );
-               // Verify link 'My Watchlist' available
-               $this->assertTrue( $this->isElementPresent( SeleniumTestConstants::LINK_START . "Watchlist" ) );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Watchlist" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify newly added page to the watchlist is available
-               $this->assertEquals( $pageName, $this->getText( SeleniumTestConstants::LINK_START . $pageName ) );
-
-               $this->click( SeleniumTestConstants::LINK_START . $pageName );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_EDIT );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( "wpWatchthis" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-               $this->assertFalse( $this->isElementPresent( SeleniumTestConstants::LINK_START . $pageName ) );
-               //todo watch using the dropdown menu
-       }
-}
-
diff --git a/tests/selenium/suites/PageDeleteTestSuite.php b/tests/selenium/suites/PageDeleteTestSuite.php
deleted file mode 100644 (file)
index e43ffa8..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-class PageDeleteTestSuite extends SeleniumTestSuite {
-       public function setUp() {
-               $this->setLoginBeforeTests( true );
-               parent::setUp();
-       }
-
-       public function addTests() {
-               $testFiles = array(
-                       'tests/selenium/suites/DeletePageAdminTestCase.php'
-               );
-               parent::addTestFiles( $testFiles );
-       }
-}
diff --git a/tests/selenium/suites/PageSearchTestCase.php b/tests/selenium/suites/PageSearchTestCase.php
deleted file mode 100644 (file)
index 5fdc5c8..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class PageSearchTestCase extends SeleniumTestCase {
-       // Verify the functionality of the 'Go' button
-       public function testPageSearchBtnGo() {
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "calcey qa" );
-               $this->click( "searchGoButton" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify  no page matched with the entered search text
-               $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p/b" );
-               $correct = strstr( $source, "Create the page \"Calcey qa\" on this wiki!" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( "link=Calcey qa" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, "Calcey QA team" );
-               $this->click( "wpSave" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-       }
-
-       // Verify the functionality of the 'Search' button
-       public function testPageSearchBtnSearch() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify  no page is available as the search text
-               $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p[2]/b" );
-               $correct = strstr( $source, "Create the page \"Calcey web\" on this wiki!" );
-               $this->assertEquals( $correct, true );
-
-               $this->click( "link=Calcey web" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, "Calcey web team" );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify saved page is opened  when the exact page name is given
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify exact page matched with the entered search text using 'Search' button
-               $source = $this->getText( "//*[@id='bodyContent']/div[4]/p/b" );
-               $correct = strstr( $source, "There is a page named \"Calcey web\" on this wiki." );
-               $this->assertEquals( $correct, true );
-
-               // Verify resutls available when partial page name is entered as the search text
-               $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey" );
-               $this->click( SeleniumTestConstants::BUTTON_SEARCH );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               //  Verify text avaialble in the search result under the page titles
-               if ( $this->isElementPresent( "Page_title_matches" ) ) {
-                       $textPageTitle = $this->getText( "//*[@id='bodyContent']/div[4]/ul[1]/li[1]/div[1]/a" );
-                       $this->assertContains( 'Calcey', $textPageTitle );
-               }
-
-               //  Verify text avaialble in the search result under the page text
-               if ( $this->isElementPresent( "Page_text_matches" ) ) {
-                       $textPageText = $this->getText( "//*[@id='bodyContent']/div[4]/ul[2]/li[2]/div[2]/span" );
-                       $this->assertContains( 'Calcey', $textPageText );
-               }
-               $this->deletePage( "Calcey QA" );
-               $this->deletePage( "Calcey web" );
-       }
-}
diff --git a/tests/selenium/suites/PreviewPageTestCase.php b/tests/selenium/suites/PreviewPageTestCase.php
deleted file mode 100644 (file)
index 036201f..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class PreviewPageTestCase extends SeleniumTestCase {
-       // Verify adding a new page
-       public function testPreviewPage() {
-               $wikiText = "Adding this page to test the \n Preview button functionality";
-               $newPage = "Test Preview Page";
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->getNewPage( $newPage );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText . "" );
-               $this->assertTrue( $this->isElementPresent( "//*[@id='wpPreview']" ) );
-
-               $this->click( "wpPreview" );
-
-               // Verify saved page available
-               $source = $this->gettext( "firstHeading" );
-               $correct = strstr( $source, "Test Preview Page" );
-               $this->assertEquals( $correct, true );
-
-               // Verify page content previewed succesfully
-               $contentOfPreviewPage = $this->getText( "//*[@id='content']" );
-               $this->assertContains( $wikiText, $contentOfPreviewPage );
-       }
-}
diff --git a/tests/selenium/suites/SavePageTestCase.php b/tests/selenium/suites/SavePageTestCase.php
deleted file mode 100644 (file)
index 1e4cc2d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class SavePageTestCase extends SeleniumTestCase {
-       // Verify adding a new page
-       public function testSavePage() {
-               $wikiText = "Adding this page to test the Save button functionality";
-               $newPage = "Test Save Page";
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->getNewPage( $newPage );
-               $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText );
-
-               // verify 'Save' button available
-               $this->assertTrue( $this->isElementPresent( SeleniumTestConstants::BUTTON_SAVE ) );
-               $this->click( SeleniumTestConstants::BUTTON_SAVE );
-
-               // Verify saved page available
-               $source = $this->gettext( "firstHeading" );
-               $correct = strstr( $source, "Test Save Page" );
-
-               // Verify Saved page name displayed correctly
-               $this->assertEquals( $correct, true );
-
-               // Verify page content saved succesfully
-               $contentOfSavedPage = $this->getText( "//*[@id='content']" );
-               $this->assertContains( $wikiText, $contentOfSavedPage );
-               $this->deletePage( $newPage );
-       }
-}
diff --git a/tests/selenium/suites/SimpleSeleniumConfig.php b/tests/selenium/suites/SimpleSeleniumConfig.php
deleted file mode 100644 (file)
index a693511..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?php
-class SimpleSeleniumConfig {
-
-       public static function getSettings( &$includeFiles, &$globalConfigs, &$resourceFiles ) {
-               global $IP;
-               $includes = array(
-                       //files that needed to be included would go here
-               );
-               $configs = array(
-                       'wgDBprefix' => 'mw_',
-                       'wgDBTableOptions' => 'ENGINE=InnoDB, DEFAULT CHARSET=binary',
-                       'wgDBmysql5' => 'false',
-                       'wgMainCacheType' => 'CACHE_NONE',
-                       'wgParserCacheType' => 'CACHE_NONE',
-                       'wgMemCachedServers' => array(),
-                       'wgLanguageCode' => 'en',
-                       'wgSitename' => 'test_wiki',
-                       'wgDefaultSkin' => 'chick'
-               );
-               $resources = array(
-                       'db' => "$IP/tests/selenium/data/SimpleSeleniumTestDB.sql",
-                       'images' => "$IP/tests/selenium/data/SimpleSeleniumTestImages.zip"
-               );
-
-               $includeFiles = array_merge( $includeFiles, $includes );
-               $globalConfigs = array_merge( $globalConfigs, $configs );
-               $resourceFiles = array_merge( $resourceFiles, $resources );
-               return true;
-       }
-}
diff --git a/tests/selenium/suites/SimpleSeleniumTestCase.php b/tests/selenium/suites/SimpleSeleniumTestCase.php
deleted file mode 100644 (file)
index 14c9e6b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/*
- * This test case is part of the SimpleSeleniumTestSuite.
- * Configuration for these tests are documented as part of SimpleSeleniumTestSuite.php
- */
-class SimpleSeleniumTestCase extends SeleniumTestCase {
-       public function testBasic() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Selenium&action=edit' );
-               $this->type( "wpTextbox1", "This is a basic test" );
-               $this->click( "wpPreview" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // check result
-               $source = $this->getText( "//div[@id='wikiPreview']/p" );
-               $correct = strstr( $source, "This is a basic test" );
-               $this->assertEquals( $correct, true );
-       }
-
-       /**
-        * All this test really does is verify that a global var was set.
-        * It depends on $wgDefaultSkin = 'chick'; being set
-        */
-       public function testGlobalVariableForDefaultSkin() {
-               $this->open( $this->getUrl() . '/index.php' );
-               $bodyClass = $this->getAttribute( "//body/@class" );
-               $this->assertContains( 'skin-chick', $bodyClass, 'Chick skin not set' );
-       }
-
-       /**
-        * Just verify that the test db was loaded correctly
-        */
-       public function testDatabaseResourceLoadedCorrectly() {
-               $this->open( $this->getUrl() . '/index.php/TestResources?action=purge' );
-               $testString = $this->gettext( "//body//*[@id='firstHeading']" );
-               $this->assertEquals( 'TestResources', $testString, 'Article that should be present in the test db was not found.' );
-       }
-
-}
diff --git a/tests/selenium/suites/SimpleSeleniumTestSuite.php b/tests/selenium/suites/SimpleSeleniumTestSuite.php
deleted file mode 100644 (file)
index 9fe6fb8..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * Sample test suite.
- * Two ways to configure MW for these tests
- * 1) If you are running multiple test suites, add the following in LocalSettings.php
- * require_once "tests/selenium/SimpleSeleniumConfig.php";
- * $wgSeleniumTestConfigs['SimpleSeleniumTestSuite'] = 'SimpleSeleniumConfig::getSettings';
- * OR
- * 2) Add the following to your Localsettings.php
- * $wgDefaultSkin = 'chick';
- */
-class SimpleSeleniumTestSuite extends SeleniumTestSuite {
-       public function setUp() {
-               $this->setLoginBeforeTests( false );
-               parent::setUp();
-       }
-
-       public function addTests() {
-               $testFiles = array(
-                       'selenium/suites/SimpleSeleniumTestCase.php'
-               );
-               parent::addTestFiles( $testFiles );
-       }
-
-
-}
diff --git a/tests/selenium/suites/UserPreferencesTestCase.php b/tests/selenium/suites/UserPreferencesTestCase.php
deleted file mode 100644 (file)
index c70e38f..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-<?php
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Testing
- * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
- * http://www.calcey.com/
- *
- * 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.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-class UserPreferencesTestCase extends SeleniumTestCase {
-       // Verify user information
-       public function testUserInfoDisplay() {
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify correct username displayed in User Preferences
-               $this->assertEquals( $this->getText( "//li[@id='pt-userpage']/a" ),
-                       $this->getText( "//table[@id='mw-htmlform-info']/tbody/tr[1]/td[2]" ) );
-
-               // Verify existing Signature Displayed correctly
-               $this->assertEquals( $this->selenium->getUser(),
-                       $this->getTable( "mw-htmlform-signature.0.1" ) );
-       }
-
-       // Verify change password
-       public function testChangePassword() {
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Change password" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "wpPassword", "12345" );
-               $this->type( "wpNewPassword", "54321" );
-               $this->type( "wpRetype", "54321" );
-               $this->click( "//input[@value='Change password']" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->assertEquals( "Preferences", $this->getText( "firstHeading" ) );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Change password" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "wpPassword", "54321" );
-               $this->type( "wpNewPassword", "12345" );
-               $this->type( "wpRetype", "12345" );
-               $this->click( "//input[@value='Change password']" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->assertEquals( "Preferences", $this->getText( "firstHeading" ) );
-
-               $this->click( SeleniumTestConstants::LINK_START . "Change password" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "wpPassword", "54321" );
-               $this->type( "wpNewPassword", "12345" );
-               $this->type( "wpRetype", "12345" );
-               $this->click( "//input[@value='Change password']" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-       }
-
-       // Verify successful preferences save
-       public function testSuccessfullSave() {
-
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "mw-input-realname", "Test User" );
-               $this->click( "prefcontrol" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify  "Your preferences have been saved." message
-               $this->assertEquals( "Your preferences have been saved.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ) );
-               $this->type( "mw-input-realname", "" );
-               $this->click( "prefcontrol" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-       }
-
-       // Verify change signature
-       public function testChangeSignature() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->type( "mw-input-nickname", "TestSignature" );
-               $this->click( "prefcontrol" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify change user signature
-               $this->assertEquals( "TestSignature", $this->getText( SeleniumTestConstants::LINK_START . "TestSignature" ) );
-               $this->type( "mw-input-nickname", "Test" );
-               $this->click( "prefcontrol" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-       }
-
-       // Verify change date format
-       public function testChangeDateFormatTimeZone() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-               $this->click( SeleniumTestConstants::LINK_START . "Date and time" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               $this->click( "mw-input-date-dmy" );
-               $this->select( "mw-input-timecorrection", "label=Asia/Colombo" );
-               $this->click( "prefcontrol" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify Date format and time zome saved
-               $this->assertEquals( "Your preferences have been saved.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ) );
-       }
-
-       // Verify restoring all default settings
-       public function testSetAllDefault() {
-               $this->open( $this->getUrl() .
-                       '/index.php?title=Main_Page&action=edit' );
-               $this->click( SeleniumTestConstants::LINK_START . "My preferences" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify restoring all default settings
-               $this->assertEquals( "Restore all default settings",
-                       $this->getText( SeleniumTestConstants::LINK_START . "Restore all default settings" ) );
-
-               $this->click( "//*[@id='preferences']/div/a" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify 'This can not be undone' warning message displayed
-               $this->assertTrue( $this->isElementPresent( "//input[@value='Restore all default settings']" ) );
-
-               // Verify 'Restore all default settings' button available
-               $this->assertEquals( "You can use this page to reset your preferences to the site defaults. This cannot be undone.",
-                       $this->getText( "//div[@id='bodyContent']/p" ) );
-
-               $this->click( "//input[@value='Restore all default settings']" );
-               $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
-
-               // Verify preferences saved successfully
-               $this->assertEquals( "Your preferences have been saved.",
-                       $this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ) );
-       }
-}
-