Merge "Escape return of {{int:}} if message not exists"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Wed, 19 Aug 2015 17:31:48 +0000 (17:31 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Wed, 19 Aug 2015 17:31:48 +0000 (17:31 +0000)
489 files changed:
.jscsrc
.jshintignore
Gruntfile.js
RELEASE-NOTES-1.26
autoload.php
composer.json
docs/extension.schema.json
docs/hooks.txt
includes/DefaultSettings.php
includes/Defines.php
includes/EditPage.php
includes/GlobalFunctions.php
includes/Hooks.php
includes/HttpFunctions.php
includes/Linker.php
includes/MWNamespace.php
includes/MovePage.php
includes/OutputPage.php
includes/Preferences.php
includes/ProtectionForm.php
includes/Revision.php
includes/Sanitizer.php
includes/Status.php
includes/User.php
includes/WebStart.php
includes/XmlSelect.php
includes/actions/Action.php
includes/actions/DeleteAction.php
includes/actions/EditAction.php
includes/actions/InfoAction.php
includes/actions/RevertAction.php
includes/actions/RollbackAction.php
includes/actions/WatchAction.php
includes/api/ApiBase.php
includes/api/ApiCreateAccount.php
includes/api/ApiDelete.php
includes/api/ApiEditPage.php
includes/api/ApiFeedRecentChanges.php
includes/api/ApiFileRevert.php
includes/api/ApiFormatJson.php
includes/api/ApiImageRotate.php
includes/api/ApiImport.php
includes/api/ApiLogin.php
includes/api/ApiMain.php
includes/api/ApiMove.php
includes/api/ApiParse.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllUsers.php
includes/api/ApiQueryBacklinksprop.php
includes/api/ApiQueryBlocks.php
includes/api/ApiQueryCategories.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryExtLinksUsage.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryIWBacklinks.php
includes/api/ApiQueryIWLinks.php
includes/api/ApiQueryInfo.php
includes/api/ApiQueryLangBacklinks.php
includes/api/ApiQueryLangLinks.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryPagesWithProp.php
includes/api/ApiQueryProtectedTitles.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQuerySearch.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryTags.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryUserInfo.php
includes/api/ApiQueryUsers.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiQueryWatchlistRaw.php
includes/api/ApiRevisionDelete.php
includes/api/ApiRollback.php
includes/api/ApiUndelete.php
includes/api/i18n/ca.json
includes/api/i18n/en.json
includes/api/i18n/es.json
includes/api/i18n/eu.json
includes/api/i18n/fi.json
includes/api/i18n/fr.json
includes/api/i18n/gl.json
includes/api/i18n/he.json
includes/api/i18n/hu.json
includes/api/i18n/ia.json
includes/api/i18n/ko.json
includes/api/i18n/ksh.json
includes/api/i18n/lb.json
includes/api/i18n/lv.json
includes/api/i18n/mk.json
includes/api/i18n/pl.json
includes/api/i18n/qqq.json
includes/api/i18n/shn.json [new file with mode: 0644]
includes/api/i18n/uk.json
includes/api/i18n/vi.json
includes/api/i18n/zh-hans.json
includes/cache/LinkCache.php
includes/cache/MessageCache.php
includes/changes/CategoryMembershipChange.php [new file with mode: 0644]
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/OldChangesList.php
includes/changes/RCCacheEntryFactory.php
includes/changes/RecentChange.php
includes/changetags/ChangeTags.php
includes/changetags/ChangeTagsLogList.php
includes/clientpool/RedisConnectionPool.php
includes/compat/normal/.gitignore [deleted file]
includes/content/CssContent.php
includes/content/CssContentHandler.php
includes/context/DerivativeContext.php
includes/context/MutableContext.php [new file with mode: 0644]
includes/context/RequestContext.php
includes/dao/DBAccessObjectUtils.php [new file with mode: 0644]
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabaseSqlite.php
includes/debug/logger/LegacyLogger.php
includes/debug/logger/monolog/LineFormatter.php [new file with mode: 0644]
includes/deferred/LinksUpdate.php
includes/exception/MWExceptionHandler.php
includes/filebackend/SwiftFileBackend.php
includes/filerepo/FileBackendDBRepoWrapper.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/file/File.php
includes/htmlform/HTMLForm.php
includes/htmlform/HTMLSelectAndOtherField.php
includes/htmlform/HTMLSelectOrOtherField.php
includes/htmlform/HTMLTitleTextField.php
includes/htmlform/HTMLUserTextField.php
includes/installer/DatabaseUpdater.php
includes/installer/Installer.php
includes/installer/PostgresUpdater.php
includes/installer/WebInstaller.php
includes/installer/WebInstallerPage.php
includes/installer/i18n/bn.json
includes/installer/i18n/eo.json
includes/installer/i18n/eu.json
includes/installer/i18n/ia.json
includes/installer/i18n/ko.json
includes/installer/i18n/ksh.json
includes/installer/i18n/lv.json
includes/installer/i18n/mg.json
includes/installer/i18n/mk.json
includes/installer/i18n/nap.json
includes/installer/i18n/sah.json
includes/installer/i18n/tt-cyrl.json
includes/installer/i18n/uk.json
includes/installer/i18n/zh-hans.json
includes/installer/i18n/zh-hant.json
includes/jobqueue/JobQueueRedis.php
includes/jobqueue/JobRunner.php
includes/jobqueue/jobs/EnqueueJob.php
includes/jobqueue/jobs/RefreshLinksJob.php
includes/jobqueue/jobs/ThumbnailRenderJob.php
includes/libs/BufferingStatsdDataFactory.php
includes/libs/CSSMin.php
includes/libs/JavaScriptMinifier.php
includes/libs/MultiHttpClient.php
includes/libs/ObjectFactory.php
includes/libs/SamplingStatsdClient.php [new file with mode: 0644]
includes/libs/ScopedPHPTimeout.php [deleted file]
includes/libs/objectcache/APCBagOStuff.php
includes/libs/objectcache/BagOStuff.php
includes/libs/objectcache/EmptyBagOStuff.php
includes/libs/objectcache/HashBagOStuff.php
includes/libs/objectcache/ReplicatedBagOStuff.php
includes/libs/objectcache/WANObjectCache.php
includes/libs/objectcache/WinCacheBagOStuff.php
includes/libs/objectcache/XCacheBagOStuff.php
includes/logging/LogFormatter.php
includes/logging/ProtectLogFormatter.php [new file with mode: 0644]
includes/mail/EmailNotification.php
includes/mail/UserMailer.php
includes/media/WebP.php
includes/objectcache/MemcachedBagOStuff.php
includes/objectcache/MemcachedPeclBagOStuff.php
includes/objectcache/MemcachedPhpBagOStuff.php
includes/objectcache/MultiWriteBagOStuff.php
includes/objectcache/ObjectCache.php
includes/objectcache/ObjectCacheSessionHandler.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/page/Article.php
includes/page/WikiPage.php
includes/parser/Parser.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/rcfeed/RCFeedFormatter.php
includes/registration/ExtensionProcessor.php
includes/registration/ExtensionRegistry.php
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderSiteModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/site/CachingSiteStore.php
includes/site/DBSiteStore.php
includes/skins/Skin.php
includes/skins/SkinTemplate.php
includes/specialpage/ChangesListSpecialPage.php
includes/specialpage/SpecialPage.php
includes/specials/SpecialAllMessages.php
includes/specials/SpecialAllPages.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialChangeContentModel.php
includes/specials/SpecialConfirmemail.php
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialImport.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialListusers.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialPreferences.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRandompage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialStatistics.php
includes/specials/SpecialTags.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/utils/BatchRowIterator.php [new file with mode: 0644]
includes/utils/BatchRowUpdate.php [new file with mode: 0644]
includes/utils/BatchRowWriter.php [new file with mode: 0644]
includes/utils/IP.php
includes/utils/RowUpdateGenerator.php [new file with mode: 0644]
includes/utils/iterators/IteratorDecorator.php [new file with mode: 0644]
includes/utils/iterators/NotRecursiveIterator.php [new file with mode: 0644]
includes/widget/NamespaceInputWidget.php
languages/Names.php
languages/i18n/aeb-arab.json
languages/i18n/af.json
languages/i18n/an.json
languages/i18n/ar.json
languages/i18n/as.json
languages/i18n/ase.json [new file with mode: 0644]
languages/i18n/ast.json
languages/i18n/az.json
languages/i18n/azb.json
languages/i18n/bcl.json
languages/i18n/be-tarask.json
languages/i18n/be.json
languages/i18n/bg.json
languages/i18n/bgn.json
languages/i18n/bn.json
languages/i18n/bs.json
languages/i18n/ca.json
languages/i18n/ce.json
languages/i18n/crh-cyrl.json
languages/i18n/crh-latn.json
languages/i18n/cs.json
languages/i18n/cu.json
languages/i18n/cv.json
languages/i18n/cy.json
languages/i18n/da.json
languages/i18n/de.json
languages/i18n/diq.json
languages/i18n/dty.json
languages/i18n/el.json
languages/i18n/en.json
languages/i18n/eo.json
languages/i18n/es.json
languages/i18n/et.json
languages/i18n/eu.json
languages/i18n/fa.json
languages/i18n/fi.json
languages/i18n/fo.json
languages/i18n/fr.json
languages/i18n/frc.json
languages/i18n/frp.json
languages/i18n/frr.json
languages/i18n/fy.json
languages/i18n/ga.json
languages/i18n/gd.json
languages/i18n/gl.json
languages/i18n/gom-deva.json
languages/i18n/gom-latn.json
languages/i18n/grc.json
languages/i18n/gsw.json
languages/i18n/gu.json
languages/i18n/he.json
languages/i18n/hi.json
languages/i18n/hr.json
languages/i18n/hsb.json
languages/i18n/ht.json
languages/i18n/hu.json
languages/i18n/hy.json
languages/i18n/ia.json
languages/i18n/id.json
languages/i18n/ilo.json
languages/i18n/is.json
languages/i18n/it.json
languages/i18n/ja.json
languages/i18n/ka.json
languages/i18n/kk-cyrl.json
languages/i18n/km.json
languages/i18n/ko.json
languages/i18n/krc.json
languages/i18n/ksh.json
languages/i18n/ku-latn.json
languages/i18n/ky.json
languages/i18n/lb.json
languages/i18n/li.json
languages/i18n/lrc.json
languages/i18n/lt.json
languages/i18n/lus.json
languages/i18n/luz.json
languages/i18n/lv.json
languages/i18n/mg.json
languages/i18n/mk.json
languages/i18n/ml.json
languages/i18n/mt.json
languages/i18n/my.json
languages/i18n/myv.json
languages/i18n/mzn.json
languages/i18n/nan.json
languages/i18n/nap.json
languages/i18n/nb.json
languages/i18n/ne.json
languages/i18n/nl.json
languages/i18n/nn.json
languages/i18n/pam.json
languages/i18n/pdc.json
languages/i18n/pfl.json
languages/i18n/pl.json
languages/i18n/pms.json
languages/i18n/pnb.json
languages/i18n/pt-br.json
languages/i18n/pt.json
languages/i18n/qqq.json
languages/i18n/ro.json
languages/i18n/roa-tara.json
languages/i18n/ru.json
languages/i18n/rue.json
languages/i18n/sa.json
languages/i18n/sah.json
languages/i18n/scn.json
languages/i18n/sgs.json
languages/i18n/sk.json
languages/i18n/sl.json
languages/i18n/sq.json
languages/i18n/sr-ec.json
languages/i18n/sr-el.json
languages/i18n/sv.json
languages/i18n/ta.json
languages/i18n/th.json
languages/i18n/tl.json
languages/i18n/tr.json
languages/i18n/tt-cyrl.json
languages/i18n/uk.json
languages/i18n/vec.json
languages/i18n/vi.json
languages/i18n/war.json
languages/i18n/xmf.json
languages/i18n/yi.json
languages/i18n/yue.json
languages/i18n/zh-hans.json
languages/i18n/zh-hant.json
languages/messages/MessagesAzb.php
languages/messages/MessagesLuz.php
languages/messages/MessagesSdh.php [new file with mode: 0644]
maintenance/dev/includes/php.sh [changed mode: 0755->0644]
maintenance/dev/includes/require-php.sh [changed mode: 0755->0644]
maintenance/fixSlaveDesync.php [deleted file]
maintenance/jsduck/categories.json
maintenance/jsduck/eg-iframe.html
maintenance/jsduck/external.js
maintenance/language/generateNormalizerDataAr.php
maintenance/language/generateNormalizerDataMl.php
maintenance/refreshLinks.php
mw-config/config.css
resources/Resources.php
resources/ResourcesOOUI.php
resources/lib/oojs-ui/i18n/km.json
resources/lib/oojs-ui/i18n/ko.json
resources/lib/oojs-ui/i18n/vi.json
resources/lib/oojs-ui/oojs-ui-apex-noimages.css
resources/lib/oojs-ui/oojs-ui-apex.js
resources/lib/oojs-ui/oojs-ui-mediawiki-noimages.css
resources/lib/oojs-ui/oojs-ui-mediawiki.js
resources/lib/oojs-ui/oojs-ui.js
resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/icons-layout.json
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg [new file with mode: 0644]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png [deleted file]
resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg [deleted file]
resources/src/mediawiki.action/mediawiki.action.edit.stash.js
resources/src/mediawiki.api/mediawiki.api.js
resources/src/mediawiki.legacy/ajax.js [deleted file]
resources/src/mediawiki.legacy/images/feed-icon.png [deleted file]
resources/src/mediawiki.legacy/images/feed-icon.svg [deleted file]
resources/src/mediawiki.legacy/shared.css
resources/src/mediawiki.legacy/wikibits.js
resources/src/mediawiki.page/mediawiki.page.patrol.ajax.js
resources/src/mediawiki.page/mediawiki.page.ready.js
resources/src/mediawiki.page/mediawiki.page.startup.js
resources/src/mediawiki.page/mediawiki.page.watch.ajax.js
resources/src/mediawiki.special/mediawiki.special.preferences.css
resources/src/mediawiki.special/mediawiki.special.preferences.js
resources/src/mediawiki.special/mediawiki.special.search.css
resources/src/mediawiki.special/mediawiki.special.search.js
resources/src/mediawiki.special/mediawiki.special.unwatchedPages.js
resources/src/mediawiki.special/templates/thumbnail.html
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js [new file with mode: 0644]
resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less [new file with mode: 0644]
resources/src/mediawiki/images/feed-icon.png [new file with mode: 0644]
resources/src/mediawiki/images/feed-icon.svg [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Upload.Dialog.js [new file with mode: 0644]
resources/src/mediawiki/mediawiki.Upload.js
resources/src/mediawiki/mediawiki.feedback.js
resources/src/mediawiki/mediawiki.feedlink.css [new file with mode: 0644]
resources/src/mediawiki/mediawiki.filewarning.less
resources/src/mediawiki/mediawiki.js
resources/src/mediawiki/mediawiki.notification.css
resources/src/mediawiki/mediawiki.notification.js
resources/src/mediawiki/mediawiki.notify.js
resources/src/mediawiki/mediawiki.searchSuggest.js
resources/src/mediawiki/mediawiki.storage.js [new file with mode: 0644]
resources/src/moment-local-dmy.js [new file with mode: 0644]
resources/src/startup.js
tests/parser/parserTests.txt
tests/phpunit/LessFileCompilationTest.php
tests/phpunit/includes/OutputPageTest.php
tests/phpunit/includes/api/ApiBlockTest.php
tests/phpunit/includes/api/ApiEditPageTest.php
tests/phpunit/includes/api/ApiLoginTest.php
tests/phpunit/includes/api/ApiRevisionDeleteTest.php
tests/phpunit/includes/api/ApiUnblockTest.php
tests/phpunit/includes/api/ApiUploadTest.php
tests/phpunit/includes/changes/EnhancedChangesListTest.php
tests/phpunit/includes/changes/RecentChangeTest.php
tests/phpunit/includes/changes/TestRecentChangesHelper.php
tests/phpunit/includes/content/CssContentHandlerTest.php [new file with mode: 0644]
tests/phpunit/includes/content/CssContentTest.php
tests/phpunit/includes/db/DatabaseSqliteTest.php
tests/phpunit/includes/debug/logger/LegacyLoggerTest.php
tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php [new file with mode: 0644]
tests/phpunit/includes/deferred/LinksUpdateTest.php
tests/phpunit/includes/filebackend/SwiftFileBackendTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/JavaScriptMinifierTest.php
tests/phpunit/includes/libs/ObjectFactoryTest.php
tests/phpunit/includes/libs/SamplingStatsdClientTest.php [new file with mode: 0644]
tests/phpunit/includes/logging/LogFormatterTestCase.php
tests/phpunit/includes/logging/ProtectLogFormatterTest.php [new file with mode: 0644]
tests/phpunit/includes/objectcache/BagOStuffTest.php
tests/phpunit/includes/registration/ExtensionProcessorTest.php
tests/phpunit/includes/registration/ExtensionRegistryTest.php
tests/phpunit/includes/resourceloader/ResourceLoaderStartUpModuleTest.php
tests/phpunit/includes/site/DBSiteStoreTest.php
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/includes/utils/BatchRowUpdateTest.php [new file with mode: 0644]
tests/qunit/QUnitTestResources.php
tests/qunit/data/generateJqueryMsgData.php
tests/qunit/data/mediawiki.jqueryMsg.data.js
tests/qunit/data/testrunner.js
tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js [new file with mode: 0644]
thumb.php

diff --git a/.jscsrc b/.jscsrc
index 98b81db..6a3c564 100644 (file)
--- a/.jscsrc
+++ b/.jscsrc
@@ -3,5 +3,17 @@
 
        "disallowQuotedKeysInObjects": null,
        "requireSpacesInsideParentheses": null,
-       "requireSpacesInsideArrayBrackets": null
+       "requireSpacesInsideArrayBrackets": null,
+
+       "excludeFiles": [
+               "docs/**",
+               "extensions/**",
+               "node_modules/**",
+               "resources/lib/**",
+               "resources/src/jquery.tipsy/**",
+               "resources/src/jquery/jquery.farbtastic.js",
+               "resources/src/mediawiki.libs/**",
+               "skins/**",
+               "vendor/**"
+       ]
 }
index 1882151..fdde7d0 100644 (file)
@@ -8,4 +8,5 @@ resources/lib/**
 resources/src/jquery.tipsy/**
 resources/src/jquery/jquery.farbtastic.js
 resources/src/mediawiki.libs/**
-tests/frontend/node_modules/**
+skins/**
+vendor/**
index 868fa4a..e1e5e4a 100644 (file)
@@ -19,34 +19,16 @@ module.exports = function ( grunt ) {
                        options: {
                                jshintrc: true
                        },
-                       all: [
-                               '*.js',
-                               '{includes,languages,resources,tests}/**/*.js'
-                       ]
+                       all: '.'
                },
                jscs: {
-                       all: [
-                               '<%= jshint.all %>',
-                               // Auto-generated file with JSON (double quotes)
-                               '!tests/qunit/data/mediawiki.jqueryMsg.data.js',
-                               // Skip functions are stored as script files but wrapped in a function when
-                               // executed. node-jscs trips on the would-be "Illegal return statement".
-                               '!resources/src/*-skip.js'
-
-                       // Exclude all files ignored by jshint
-                       ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) {
-                               // Filter out empty lines
-                               if ( pattern.length && pattern[0] !== '#' ) {
-                                       patterns.push( '!' + pattern );
-                               }
-                               return patterns;
-                       }, [] ) )
+                       all: '.'
                },
                jsonlint: {
                        all: [
                                '.jscsrc',
-                               '{languages,maintenance,resources}/**/*.json',
-                               'package.json'
+                               '**/*.json',
+                               '!{docs/js,extensions,node_modules,skins,vendor}/**'
                        ]
                },
                banana: {
@@ -56,10 +38,9 @@ module.exports = function ( grunt ) {
                },
                watch: {
                        files: [
-                               '<%= jscs.all %>',
-                               '<%= jsonlint.all %>',
-                               '.jshintignore',
-                               '.jshintrc'
+                               '.js*',
+                               '**/*',
+                               '!{docs,extensions,node_modules,skins,vendor}/**'
                        ],
                        tasks: 'test'
                },
index f22a546..19e3eaa 100644 (file)
@@ -16,8 +16,16 @@ production.
   use the 'rawcontinue' parameter to receive raw query-continue data, but the
   new style is encouraged as it's harder to implement incorrectly.
 * Deprecated API formats dump and wddx have been completely removed.
+* (T7645) The "Signature" button on the edit toolbar is now hidden by default
+  in non-talk namespaces. A new configuration variable,
+  $wgExtraSignatureNamespaces, controls in which subject (non-talk) namespaces
+  the "Signature" button on the edit toolbar will be displayed.
+* $wgResourceLoaderUseESI was deprecated and removed. This was an experimental
+  feature that was never enabled by default.
 
 === New features in 1.26 ===
+* (T9148) Changes to category membership are now shown in watchlists and recent
+  changes. This can be configured in user preferences.
 * (T51506) Now action=info gives estimates of actual watchers for a page.
   See $wgRCMaxAge, $wgWatchersMaxAge and $wgUnwatchedPageSecret
   to learn how to configure if needed.
@@ -47,6 +55,12 @@ production.
   the $wgMainCacheType settings.
 * Callers needing fast light-weight data stores use $wgMainStash to select
   the store type from $wgObjectCaches. The default is the local database.
+* Interface message overrides in the MediaWiki namespace will now be cached in
+  memcached and APC (if available), rather than memcached and local files.
+* Added a new hook, 'RandomPageQuery', to allow modification of the query used
+  by Special:Random to select random pages.
+* $wgTransactionalTimeLimit was added, which controls the request time limit
+  for potentially slow POST requests that need to be as atomic as possible.
 
 ==== External libraries ====
 * Update es5-shim from v4.0.0 to v4.1.5.
@@ -59,6 +73,7 @@ production.
 === Bug fixes in 1.26 ===
 * (T53283) load.php sometimes sends 304 response without full headers
 * (T65198) Talk page tabs now have a "rel=discussion" attribute
+* (T98841) {{msgnw:}} now preserves comments even when subst: is not used.
 
 === Action API changes in 1.26 ===
 * New-style continuation is now the default for action=continue. Clients may
@@ -87,9 +102,10 @@ regularly. Below only new and removed languages are listed, as well as
 changes to languages because of Phabricator reports.
 
 * Languages added:
+** ase (American sign language), thanks to translator Icemandeaf
 ** dty (डोटेली/Doteli), thanks to translators जनक राज भट्ट, बिप्लब आनन्द,
    मेश सिंह बोहरा, and राम प्रसाद जोशी
-** luz (Ù\84ئرÛ\8c Ø¬Ø¦Ù\86Ù\88Ù\99Ú¤ی / Southern Luri)
+** luz (Ù\84ئرÛ\8c Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86ی / Southern Luri)
 
 === Other changes in 1.26 ===
 * ChangeTags::tagDescription() will return false if the interface message
@@ -135,6 +151,10 @@ changes to languages because of Phabricator reports.
 * SpecialPageFactory::setGroup was removed (deprecated in 1.21).
 * SpecialPageFactory::getGroup was removed (deprecated in 1.21).
 * DatabaseBase::ignoreErrors() is now protected.
+* BREAKING CHANGE: mediawiki.legacy.ajax has been removed, following
+  a lengthy deprecation period.
+* The ScopedPHPTimeout class was removed.
+* Removed maintenance script fixSlaveDesync.php.
 
 == Compatibility ==
 
index a8940c4..48e0b88 100644 (file)
@@ -157,6 +157,9 @@ $wgAutoloadLocalClasses = array(
        'BagOStuff' => __DIR__ . '/includes/libs/objectcache/BagOStuff.php',
        'BaseDump' => __DIR__ . '/maintenance/backupPrefetch.inc',
        'BaseTemplate' => __DIR__ . '/includes/skins/BaseTemplate.php',
+       'BatchRowIterator' => __DIR__ . '/includes/utils/BatchRowIterator.php',
+       'BatchRowUpdate' => __DIR__ . '/includes/utils/BatchRowUpdate.php',
+       'BatchRowWriter' => __DIR__ . '/includes/utils/BatchRowWriter.php',
        'BatchedQueryRunner' => __DIR__ . '/maintenance/runBatchedQuery.php',
        'BcryptPassword' => __DIR__ . '/includes/password/BcryptPassword.php',
        'BenchHttpHttps' => __DIR__ . '/maintenance/benchmarks/bench_HTTP_HTTPS.php',
@@ -197,6 +200,7 @@ $wgAutoloadLocalClasses = array(
        'CapsCleanup' => __DIR__ . '/maintenance/cleanupCaps.php',
        'Category' => __DIR__ . '/includes/Category.php',
        'CategoryFinder' => __DIR__ . '/includes/CategoryFinder.php',
+       'CategoryMembershipChange' => __DIR__ . '/includes/changes/CategoryMembershipChange.php',
        'CategoryPage' => __DIR__ . '/includes/page/CategoryPage.php',
        'CategoryPager' => __DIR__ . '/includes/specials/SpecialCategories.php',
        'CategoryViewer' => __DIR__ . '/includes/CategoryViewer.php',
@@ -279,6 +283,7 @@ $wgAutoloadLocalClasses = array(
        'CurlHttpRequest' => __DIR__ . '/includes/HttpFunctions.php',
        'DBAccessBase' => __DIR__ . '/includes/dao/DBAccessBase.php',
        'DBAccessError' => __DIR__ . '/includes/db/LBFactory.php',
+       'DBAccessObjectUtils' => __DIR__ . '/includes/dao/DBAccessObjectUtils.php',
        'DBConnRef' => __DIR__ . '/includes/db/DBConnRef.php',
        'DBConnectionError' => __DIR__ . '/includes/db/DatabaseError.php',
        'DBError' => __DIR__ . '/includes/db/DatabaseError.php',
@@ -443,7 +448,6 @@ $wgAutoloadLocalClasses = array(
        'FixBug20757' => __DIR__ . '/maintenance/storage/fixBug20757.php',
        'FixDoubleRedirects' => __DIR__ . '/maintenance/fixDoubleRedirects.php',
        'FixExtLinksProtocolRelative' => __DIR__ . '/maintenance/fixExtLinksProtocolRelative.php',
-       'FixSlaveDesync' => __DIR__ . '/maintenance/fixSlaveDesync.php',
        'FixTimestamps' => __DIR__ . '/maintenance/fixTimestamps.php',
        'FixUserRegistration' => __DIR__ . '/maintenance/fixUserRegistration.php',
        'ForeignAPIFile' => __DIR__ . '/includes/filerepo/file/ForeignAPIFile.php',
@@ -572,6 +576,7 @@ $wgAutoloadLocalClasses = array(
        'InstallerOverrides' => __DIR__ . '/mw-config/overrides.php',
        'Interwiki' => __DIR__ . '/includes/interwiki/Interwiki.php',
        'InvalidPassword' => __DIR__ . '/includes/password/InvalidPassword.php',
+       'IteratorDecorator' => __DIR__ . '/includes/utils/iterators/IteratorDecorator.php',
        'IuConverter' => __DIR__ . '/languages/classes/LanguageIu.php',
        'JSCompilerContext' => __DIR__ . '/includes/libs/jsminplus.php',
        'JSMinPlus' => __DIR__ . '/includes/libs/jsminplus.php',
@@ -752,6 +757,7 @@ $wgAutoloadLocalClasses = array(
        'MediaWiki\\Logger\\MonologSpi' => __DIR__ . '/includes/debug/logger/MonologSpi.php',
        'MediaWiki\\Logger\\Monolog\\LegacyFormatter' => __DIR__ . '/includes/debug/logger/monolog/LegacyFormatter.php',
        'MediaWiki\\Logger\\Monolog\\LegacyHandler' => __DIR__ . '/includes/debug/logger/monolog/LegacyHandler.php',
+       'MediaWiki\\Logger\\Monolog\\LineFormatter' => __DIR__ . '/includes/debug/logger/monolog/LineFormatter.php',
        'MediaWiki\\Logger\\Monolog\\SyslogHandler' => __DIR__ . '/includes/debug/logger/monolog/SyslogHandler.php',
        'MediaWiki\\Logger\\Monolog\\WikiProcessor' => __DIR__ . '/includes/debug/logger/monolog/WikiProcessor.php',
        'MediaWiki\\Logger\\NullSpi' => __DIR__ . '/includes/debug/logger/NullSpi.php',
@@ -798,6 +804,7 @@ $wgAutoloadLocalClasses = array(
        'MultiHttpClient' => __DIR__ . '/includes/libs/MultiHttpClient.php',
        'MultiWriteBagOStuff' => __DIR__ . '/includes/objectcache/MultiWriteBagOStuff.php',
        'MutableConfig' => __DIR__ . '/includes/config/MutableConfig.php',
+       'MutableContext' => __DIR__ . '/includes/context/MutableContext.php',
        'MwSql' => __DIR__ . '/maintenance/sql.php',
        'MyLocalSettingsGenerator' => __DIR__ . '/mw-config/overrides.php',
        'MySQLField' => __DIR__ . '/includes/db/DatabaseMysqlBase.php',
@@ -814,6 +821,7 @@ $wgAutoloadLocalClasses = array(
        'NewPagesPager' => __DIR__ . '/includes/specials/SpecialNewpages.php',
        'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
        'NolinesImageGallery' => __DIR__ . '/includes/gallery/NolinesImageGallery.php',
+       'NotRecursiveIterator' => __DIR__ . '/includes/utils/iterators/NotRecursiveIterator.php',
        'NukeNS' => __DIR__ . '/maintenance/nukeNS.php',
        'NukePage' => __DIR__ . '/maintenance/nukePage.php',
        'NullFileJournal' => __DIR__ . '/includes/filebackend/filejournal/FileJournal.php',
@@ -939,6 +947,7 @@ $wgAutoloadLocalClasses = array(
        'ProfilerXhprof' => __DIR__ . '/includes/profiler/ProfilerXhprof.php',
        'Protect' => __DIR__ . '/maintenance/protect.php',
        'ProtectAction' => __DIR__ . '/includes/actions/ProtectAction.php',
+       'ProtectLogFormatter' => __DIR__ . '/includes/logging/ProtectLogFormatter.php',
        'ProtectedPagesPager' => __DIR__ . '/includes/specials/SpecialProtectedpages.php',
        'ProtectedTitlesPager' => __DIR__ . '/includes/specials/SpecialProtectedtitles.php',
        'ProtectionForm' => __DIR__ . '/includes/ProtectionForm.php',
@@ -1051,16 +1060,17 @@ $wgAutoloadLocalClasses = array(
        'RightsLogFormatter' => __DIR__ . '/includes/logging/RightsLogFormatter.php',
        'RollbackAction' => __DIR__ . '/includes/actions/RollbackAction.php',
        'RollbackEdits' => __DIR__ . '/maintenance/rollbackEdits.php',
+       'RowUpdateGenerator' => __DIR__ . '/includes/utils/RowUpdateGenerator.php',
        'RunJobs' => __DIR__ . '/maintenance/runJobs.php',
        'RunningStat' => __DIR__ . '/includes/libs/RunningStat.php',
        'SQLiteField' => __DIR__ . '/includes/db/DatabaseSqlite.php',
        'SVGMetadataExtractor' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
        'SVGReader' => __DIR__ . '/includes/media/SVGMetadataExtractor.php',
+       'SamplingStatsdClient' => __DIR__ . '/includes/libs/SamplingStatsdClient.php',
        'Sanitizer' => __DIR__ . '/includes/Sanitizer.php',
        'SavepointPostgres' => __DIR__ . '/includes/db/DatabasePostgres.php',
        'ScopedCallback' => __DIR__ . '/includes/libs/ScopedCallback.php',
        'ScopedLock' => __DIR__ . '/includes/filebackend/lockmanager/ScopedLock.php',
-       'ScopedPHPTimeout' => __DIR__ . '/includes/libs/ScopedPHPTimeout.php',
        'SearchDatabase' => __DIR__ . '/includes/search/SearchDatabase.php',
        'SearchDump' => __DIR__ . '/maintenance/dumpIterator.php',
        'SearchEngine' => __DIR__ . '/includes/search/SearchEngine.php',
index 5740921..af9aeab 100644 (file)
                "cssjanus/cssjanus": "1.1.1",
                "ext-iconv": "*",
                "leafo/lessphp": "0.5.0",
-               "liuggio/statsd-php-client": "1.0.12",
+               "liuggio/statsd-php-client": "1.0.16",
                "mediawiki/at-ease": "1.0.0",
-               "oojs/oojs-ui": "0.12.1",
+               "oojs/oojs-ui": "0.12.5",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
                "wikimedia/assert": "0.2.2",
                "wikimedia/composer-merge-plugin": "1.2.1",
                "wikimedia/utfnormal": "1.0.2",
+               "wikimedia/wrappedstring": "2.0.0",
                "zordius/lightncandy": "0.21"
        },
        "require-dev": {
                "mediawiki/mediawiki-codesniffer": "0.3.0"
        },
        "suggest": {
-               "ext-fileinfo": "*",
-               "ext-intl": "*",
-               "ext-mbstring": "*",
-               "ext-wikidiff2": "*",
-               "ext-apc": "*",
-               "monolog/monolog": "*"
+               "ext-fileinfo": "Improved mime magic detection",
+               "ext-intl": "ICU integration",
+               "ext-mbstring": "Multibyte string support",
+               "ext-wikidiff2": "Diff accelerator",
+               "ext-apc": "Local data and opcode cache",
+               "monolog/monolog": "Flexible debug logging system",
+               "pear/mail": "Mail sending support",
+               "pear/mail_mime": "Mail sending support",
+               "pear/mail_mime-decode": "Mail sending support"
        },
        "autoload": {
                "psr-0": {
@@ -60,7 +64,6 @@
                "pre-install-cmd": "ComposerHookHandler::onPreInstall"
        },
        "config": {
-               "classmap-authoritative": true,
                "prepend-autoloader": false,
                "optimize-autoloader": true
        },
index c9f629c..1d78ecc 100644 (file)
                                                                "bottom",
                                                                "top"
                                                        ]
+                                               },
+                                               "templates": {
+                                                       "type": "object",
+                                                       "description": "Templates to be loaded for client-side usage"
                                                }
                                        }
                                }
                        "description": "Registry of factory functions to create Config objects"
                },
                "namespaces": {
-                       "type": "object",
+                       "type": "array",
                        "description": "Method to add extra namespaces",
-                       "properties": {
-                               "id": {
-                                       "type": "integer"
-                               },
-                               "constant": {
-                                       "type": "string"
-                               },
-                               "name": {
-                                       "type": "string"
-                               },
-                               "gender": {
-                                       "type": "object",
-                                       "properties": {
-                                               "male": {
-                                                       "type": "string"
-                                               },
-                                               "female": {
-                                                       "type": "string"
+                       "items": {
+                               "type": "object",
+                               "properties": {
+                                       "id": {
+                                               "type": "integer"
+                                       },
+                                       "constant": {
+                                               "type": "string"
+                                       },
+                                       "name": {
+                                               "type": "string"
+                                       },
+                                       "gender": {
+                                               "type": "object",
+                                               "properties": {
+                                                       "male": {
+                                                               "type": "string"
+                                                       },
+                                                       "female": {
+                                                               "type": "string"
+                                                       }
                                                }
+                                       },
+                                       "subpages": {
+                                               "type": "boolean",
+                                               "default": false
+                                       },
+                                       "content": {
+                                               "type": "boolean",
+                                               "default": false
+                                       },
+                                       "defaultcontentmodel": {
+                                               "type": "string"
+                                       },
+                                       "protection": {
+                                               "type": ["string", "array"],
+                                               "description": "Userright(s) required to edit in this namespace"
+                                       },
+                                       "capitallinkoverride": {
+                                               "type": "boolean",
+                                               "description": "Set $wgCapitalLinks on a per-namespace basis"
                                        }
                                },
-                               "subpages": {
-                                       "type": "boolean",
-                                       "default": false
-                               },
-                               "content": {
-                                       "type": "boolean",
-                                       "default": false
-                               },
-                               "defaultcontentmodel": {
-                                       "type": "string"
-                               }
+                               "required": ["id", "constant", "name"]
                        }
                },
                "TrackingCategories": {
                },
                "config": {
                        "type": "object",
-                       "description": "Configuration options for this extension"
+                       "description": "Configuration options for this extension",
+                       "patternProperties": {
+                               "^[a-zA-Z_\u007f-\u00ff][a-zA-Z0-9_\u007f-\u00ff]*$": {
+                                       "type": ["object", "array", "string", "integer", "null", "boolean"],
+                                       "properties": {
+                                               "_merge_strategy": {
+                                                       "type": "string",
+                                                       "enum": [
+                                                               "array_merge_recursive",
+                                                               "array_plus_2d",
+                                                               "array_plus",
+                                                               "array_merge"
+                                                       ],
+                                                       "default": "array_merge"
+                                               }
+                                       }
+                               }
+                       }
                },
                "ParserTestFiles": {
                        "type": "array",
index 65ae988..bf55997 100644 (file)
@@ -2407,6 +2407,12 @@ shown.
 $article: the page the form is shown for
 $out: OutputPage object
 
+'RandomPageQuery': Lets you modify the query used by Special:Random to select
+random pages.
+&$tables: Database tables to be used in the query
+&$conds: Conditions to be applied in the query
+&$joinConds: Join conditions to be applied in the query
+
 'RawPageViewBeforeOutput': Right before the text is blown out in action=raw.
 &$obj: RawAction object
 &$text: The text that's going to be the output
index baefef9..34fe7ee 100644 (file)
@@ -1021,7 +1021,7 @@ $wgSVGConverterPath = '';
 /**
  * Don't scale a SVG larger than this
  */
-$wgSVGMaxSize = 2048;
+$wgSVGMaxSize = 5120;
 
 /**
  * Don't read SVG metadata beyond this point.
@@ -2078,6 +2078,14 @@ $wgMaxArticleSize = 2048;
  */
 $wgMemoryLimit = "50M";
 
+/**
+ * The minimum amount of time that MediaWiki needs for "slow" write request,
+ * particularly ones with multiple non-atomic writes that *should* be as
+ * transactional as possible; MediaWiki will call set_time_limit() if needed.
+ * @since 1.26
+ */
+$wgTransactionalTimeLimit = 120;
+
 /** @} */ # end performance hacks }
 
 /************************************************************************//**
@@ -3510,13 +3518,6 @@ $wgResourceLoaderMaxage = array(
  */
 $wgResourceLoaderDebug = false;
 
-/**
- * Enable embedding of certain resources using Edge Side Includes. This will
- * improve performance but only works if there is something in front of the
- * web server (e..g a Squid or Varnish server) configured to process the ESI.
- */
-$wgResourceLoaderUseESI = false;
-
 /**
  * Put each statement on its own line when minifying JavaScript. This makes
  * debugging in non-debug mode a bit easier.
@@ -3531,28 +3532,27 @@ $wgResourceLoaderMinifierStatementsOnOwnLine = false;
 $wgResourceLoaderMinifierMaxLineLength = 1000;
 
 /**
- * Whether to include the mediawiki.legacy JS library (old wikibits.js), and its
- * dependencies.
+ * Whether to ensure the mediawiki.legacy library is loaded before other modules.
+ *
+ * @deprecated since 1.26: Always declare dependencies.
  */
 $wgIncludeLegacyJavaScript = true;
 
 /**
- * Whether to preload the mediawiki.util module as blocking module in the top
- * queue.
+ * Whether to ensure the mediawiki.util is loaded before other modules.
  *
- * Before MediaWiki 1.19, modules used to load slower/less asynchronous which
- * allowed modules to lack dependencies on 'popular' modules that were likely
- * loaded already.
+ * Before MediaWiki 1.19, modules used to load less asynchronous which allowed
+ * modules to lack dependencies on 'popular' modules that were likely loaded already.
  *
  * This setting is to aid scripts during migration by providing mediawiki.util
- * unconditionally (which was the most commonly missed dependency).
- * It doesn't cover all missing dependencies obviously but should fix most of
- * them.
+ * unconditionally (which was the most commonly missed dependency). It doesn't
+ * cover all missing dependencies obviously but should fix most of them.
  *
  * This should be removed at some point after site/user scripts have been fixed.
  * Enable this if your wiki has a large amount of user/site scripts that are
  * lacking dependencies.
- * @todo Deprecate
+ *
+ * @deprecated since 1.26: Always declare dependencies.
  */
 $wgPreloadJavaScriptMwUtil = false;
 
@@ -3969,6 +3969,15 @@ $wgTrackingCategories = array();
  */
 $wgContentNamespaces = array( NS_MAIN );
 
+/**
+ * Array of namespaces, in addition to the talk namespaces, where signatures
+ * (~~~~) are likely to be used. This determines whether to display the
+ * Signature button on the edit toolbar, and may also be used by extensions.
+ * For example, "traditional" style wikis, where content and discussion are
+ * intermixed, could place NS_MAIN and NS_PROJECT namespaces in this array.
+ */
+$wgExtraSignatureNamespaces = array();
+
 /**
  * Max number of redirects to follow when resolving redirects.
  * 1 means only the first redirect is followed (default behavior).
@@ -4494,6 +4503,7 @@ $wgDefaultUserOptions = array(
        'gender' => 'unknown',
        'hideminor' => 0,
        'hidepatrolled' => 0,
+       'hidecategorization' => 0,
        'imagesize' => 2,
        'math' => 1,
        'minordefault' => 0,
@@ -4525,6 +4535,7 @@ $wgDefaultUserOptions = array(
        'watchlisthideminor' => 0,
        'watchlisthideown' => 0,
        'watchlisthidepatrolled' => 0,
+       'watchlisthidecategorization' => 0,
        'watchmoves' => 0,
        'watchrollback' => 0,
        'wllimit' => 250,
@@ -6938,7 +6949,6 @@ $wgLogHeaders = array(
  */
 $wgLogActions = array(
        'protect/modify' => 'modifiedarticleprotection',
-       'protect/move_prot' => 'movedarticleprotection',
        'protect/protect' => 'protectedarticle',
        'protect/unprotect' => 'unprotectedarticle',
 );
@@ -6968,6 +6978,7 @@ $wgLogActionsHandlers = array(
        'move/move' => 'MoveLogFormatter',
        'move/move_redir' => 'MoveLogFormatter',
        'patrol/patrol' => 'PatrolLogFormatter',
+       'protect/move_prot' => 'ProtectLogFormatter',
        'rights/autopromote' => 'RightsLogFormatter',
        'rights/rights' => 'RightsLogFormatter',
        'suppress/block' => 'BlockLogFormatter',
@@ -7712,6 +7723,16 @@ $wgVirtualRestConfig = array(
        )
 );
 
+/**
+ * Controls the percentage of zero-result search queries with suggestions that
+ * run the suggestion automatically. Must be a number between 0 and 1.  This
+ * can be lowered to reduce query volume at the expense of result quality.
+ *
+ * @var float
+ * @since 1.26
+ */
+$wgSearchRunSuggestedQueryPercent = 1;
+
 /**
  * For really cool vim folding this needs to be at the end:
  * vim: foldmarker=@{,@} foldmethod=marker
index d55bbcf..38f2d42 100644 (file)
@@ -170,6 +170,7 @@ define( 'RC_EDIT', 0 );
 define( 'RC_NEW', 1 );
 define( 'RC_LOG', 3 );
 define( 'RC_EXTERNAL', 5 );
+define( 'RC_CATEGORIZE', 6 );
 /**@}*/
 
 /**@{
index 0233b11..f3a41c4 100644 (file)
@@ -1943,7 +1943,7 @@ class EditPage {
                        $this->summary,
                        $flags,
                        false,
-                       null,
+                       $wgUser,
                        $content->getDefaultFormat()
                );
 
@@ -2545,7 +2545,7 @@ class EditPage {
                $wgOut->addHTML( $this->editFormTextBeforeContent );
 
                if ( !$this->isCssJsSubpage && $showToolbar && $wgUser->getOption( 'showtoolbar' ) ) {
-                       $wgOut->addHTML( EditPage::getEditToolbar() );
+                       $wgOut->addHTML( EditPage::getEditToolbar( $this->mTitle ) );
                }
 
                if ( $this->blankArticle ) {
@@ -3686,13 +3686,18 @@ HTML
         * Shows a bulletin board style toolbar for common editing functions.
         * It can be disabled in the user preferences.
         *
+        * @param $title Title object for the page being edited (optional)
         * @return string
         */
-       static function getEditToolbar() {
+       static function getEditToolbar( $title = null ) {
                global $wgContLang, $wgOut;
                global $wgEnableUploads, $wgForeignFileRepos;
 
                $imagesAvailable = $wgEnableUploads || count( $wgForeignFileRepos );
+               $showSignature = true;
+               if ( $title ) {
+                        $showSignature = MWNamespace::wantSignatures( $title->getNamespace() );
+               }
 
                /**
                 * $toolarray is an array of arrays each of which includes the
@@ -3760,13 +3765,13 @@ HTML
                                'sample' => wfMessage( 'nowiki_sample' )->text(),
                                'tip'    => wfMessage( 'nowiki_tip' )->text(),
                        ),
-                       array(
+                       $showSignature ? array(
                                'id'     => 'mw-editbutton-signature',
                                'open'   => '--~~~~',
                                'close'  => '',
                                'sample' => '',
                                'tip'    => wfMessage( 'sig_tip' )->text(),
-                       ),
+                       ) : false,
                        array(
                                'id'     => 'mw-editbutton-hr',
                                'open'   => "\n----\n",
index 167305d..c3740a0 100644 (file)
@@ -24,7 +24,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
        die( "This file is part of MediaWiki, it is not a valid entry point" );
 }
 
-use Liuggio\StatsdClient\StatsdClient;
 use Liuggio\StatsdClient\Sender\SocketSender;
 use MediaWiki\Logger\LoggerFactory;
 
@@ -1259,7 +1258,7 @@ function wfLogProfilingData() {
                        $statsdHost = $statsdServer[0];
                        $statsdPort = isset( $statsdServer[1] ) ? $statsdServer[1] : 8125;
                        $statsdSender = new SocketSender( $statsdHost, $statsdPort );
-                       $statsdClient = new StatsdClient( $statsdSender, true, false );
+                       $statsdClient = new SamplingStatsdClient( $statsdSender, true, false );
                        $statsdClient->send( $context->getStats()->getBuffer() );
                } catch ( Exception $ex ) {
                        MWExceptionHandler::logException( $ex );
@@ -3462,8 +3461,9 @@ function wfResetSessionID() {
  * @param bool $sessionId
  */
 function wfSetupSession( $sessionId = false ) {
-       global $wgSessionsInMemcached, $wgSessionsInObjectCache, $wgCookiePath, $wgCookieDomain,
-                       $wgCookieSecure, $wgCookieHttpOnly, $wgSessionHandler;
+       global $wgSessionsInMemcached, $wgSessionsInObjectCache, $wgSessionHandler;
+       global $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly;
+
        if ( $wgSessionsInObjectCache || $wgSessionsInMemcached ) {
                ObjectCacheSessionHandler::install();
        } elseif ( $wgSessionHandler && $wgSessionHandler != ini_get( 'session.save_handler' ) ) {
@@ -3471,6 +3471,7 @@ function wfSetupSession( $sessionId = false ) {
                # hasn't already been set to the desired value (that causes errors)
                ini_set( 'session.save_handler', $wgSessionHandler );
        }
+
        session_set_cookie_params(
                0, $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly );
        session_cache_limiter( 'private, must-revalidate' );
@@ -3479,9 +3480,14 @@ function wfSetupSession( $sessionId = false ) {
        } else {
                wfFixSessionID();
        }
+
        MediaWiki\suppressWarnings();
        session_start();
        MediaWiki\restoreWarnings();
+
+       if ( $wgSessionsInObjectCache || $wgSessionsInMemcached ) {
+               ObjectCacheSessionHandler::renewCurrentSession();
+       }
 }
 
 /**
@@ -3842,9 +3848,9 @@ function wfStripIllegalFilenameChars( $name ) {
 }
 
 /**
- * Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit;
+ * Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit
  *
- * @return int Value the memory limit was set to.
+ * @return int Resulting value of the memory limit.
  */
 function wfMemoryLimit() {
        global $wgMemoryLimit;
@@ -3868,6 +3874,26 @@ function wfMemoryLimit() {
        return $memlimit;
 }
 
+/**
+ * Set PHP's time limit to the larger of php.ini or $wgTransactionalTimeLimit
+ *
+ * @return int Prior time limit
+ * @since 1.26
+ */
+function wfTransactionalTimeLimit() {
+       global $wgTransactionalTimeLimit;
+
+       $timeLimit = ini_get( 'max_execution_time' );
+       // Note that CLI scripts use 0
+       if ( $timeLimit > 0 && $wgTransactionalTimeLimit > $timeLimit ) {
+               set_time_limit( $wgTransactionalTimeLimit );
+       }
+
+       ignore_user_abort( true ); // ignore client disconnects
+
+       return $timeLimit;
+}
+
 /**
  * Converts shorthand byte notation to integer form
  *
index 036d65c..c726538 100644 (file)
@@ -135,6 +135,10 @@ class Hooks {
         *   returning null) is equivalent to returning true.
         */
        public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
+               $stats = RequestContext::getMain()->getStats();
+               $metric = $stats->increment( 'hooks.' . $event );
+               $metric->setSampleRate( 0.001 );
+
                foreach ( self::getHandlers( $event ) as $hook ) {
                        // Turn non-array values into an array. (Can't use casting because of objects.)
                        if ( !is_array( $hook ) ) {
index 7b43a2d..fec8adc 100644 (file)
@@ -25,6 +25,8 @@
  * @defgroup HTTP HTTP
  */
 
+use MediaWiki\Logger\LoggerFactory;
+
 /**
  * Various HTTP related functions
  * @ingroup HTTP
@@ -73,11 +75,14 @@ class Http {
                $req = MWHttpRequest::factory( $url, $options, $caller );
                $status = $req->execute();
 
-               $content = false;
                if ( $status->isOK() ) {
-                       $content = $req->getContent();
+                       return $req->getContent();
+               } else {
+                       $errors = $status->getErrorsByType( 'error' );
+                       $logger = LoggerFactory::getInstance( 'http' );
+                       $logger->warning( $status->getWikiText(), array( 'caller' => $caller ) );
+                       return false;
                }
-               return $content;
        }
 
        /**
index bb65cdf..d6a4056 100644 (file)
@@ -1704,8 +1704,7 @@ class Linker {
        }
 
        /**
-        * Generate a table of contents from a section tree
-        * Currently unused.
+        * Generate a table of contents from a section tree.
         *
         * @param array $tree Return value of ParserOutput::getSections()
         * @param string|Language|bool $lang Language for the toc title, defaults to user language
index bd68551..731b62e 100644 (file)
@@ -296,6 +296,18 @@ class MWNamespace {
                return $index == NS_MAIN || in_array( $index, $wgContentNamespaces );
        }
 
+       /**
+        * Might pages in this namespace require the use of the Signature button on
+        * the edit toolbar?
+        *
+        * @param int $index Index to check
+        * @return bool
+        */
+       public static function wantSignatures( $index ) {
+               global $wgExtraSignatureNamespaces;
+               return self::isTalk( $index ) || in_array( $index, $wgExtraSignatureNamespaces );
+       }
+
        /**
         * Can pages in a namespace be watched?
         *
index 9891106..2cd9698 100644 (file)
@@ -305,8 +305,8 @@ class MovePage {
                                __METHOD__,
                                array( 'IGNORE' )
                        );
-                       # Update the protection log
-                       $log = new LogPage( 'protect' );
+
+                       // Build comment for log
                        $comment = wfMessage(
                                'prot_1movedto2',
                                $this->oldTitle->getPrefixedText(),
@@ -315,14 +315,6 @@ class MovePage {
                        if ( $reason ) {
                                $comment .= wfMessage( 'colon-separator' )->inContentLanguage()->text() . $reason;
                        }
-                       // @todo FIXME: $params?
-                       $logId = $log->addEntry(
-                               'move_prot',
-                               $this->newTitle,
-                               $comment,
-                               array( $this->oldTitle->getPrefixedText() ),
-                               $user
-                       );
 
                        // reread inserted pr_ids for log relation
                        $insertedPrIds = $dbw->select(
@@ -335,7 +327,18 @@ class MovePage {
                        foreach ( $insertedPrIds as $prid ) {
                                $logRelationsValues[] = $prid->pr_id;
                        }
-                       $log->addRelations( 'pr_id', $logRelationsValues, $logId );
+
+                       // Update the protection log
+                       $logEntry = new ManualLogEntry( 'protect', 'move_prot' );
+                       $logEntry->setTarget( $this->newTitle );
+                       $logEntry->setComment( $comment );
+                       $logEntry->setPerformer( $user );
+                       $logEntry->setParameters( array(
+                               '4::oldtitle' => $this->oldTitle->getPrefixedText(),
+                       ) );
+                       $logEntry->setRelations( array( 'pr_id' => $logRelationsValues ) );
+                       $logId = $logEntry->insert();
+                       $logEntry->publish( $logId );
                }
 
                // Update *_from_namespace fields as needed
@@ -416,6 +419,13 @@ class MovePage {
                        $redirectContent = null;
                }
 
+               // Figure out whether the content model is no longer the default
+               $oldDefault = ContentHandler::getDefaultModelFor( $this->oldTitle );
+               $contentModel = $this->oldTitle->getContentModel();
+               $newDefault = ContentHandler::getDefaultModelFor( $nt );
+               $defaultContentModelChanging = ( $oldDefault !== $newDefault
+                       && $oldDefault === $contentModel );
+
                // bug 57084: log_page should be the ID of the *moved* page
                $oldid = $this->oldTitle->getArticleID();
                $logTitle = clone $this->oldTitle;
@@ -493,6 +503,16 @@ class MovePage {
                $newpage->doEditUpdates( $nullRevision, $user,
                        array( 'changed' => false, 'moved' => true, 'oldcountable' => $oldcountable ) );
 
+               // If the default content model changes, we need to populate rev_content_model
+               if ( $defaultContentModelChanging ) {
+                       $dbw->update(
+                               'revision',
+                               array( 'rev_content_model' => $contentModel ),
+                               array( 'rev_page' => $nt->getArticleID(), 'rev_content_model IS NULL' ),
+                               __METHOD__
+                       );
+               }
+
                if ( !$moveOverRedirect ) {
                        WikiPage::onArticleCreate( $nt );
                }
index a551fe1..8d4720b 100644 (file)
@@ -21,6 +21,7 @@
  */
 
 use MediaWiki\Logger\LoggerFactory;
+use WrappedString\WrappedString;
 
 /**
  * This class should be covered by a general architecture document which does
@@ -1817,6 +1818,11 @@ class OutputPage extends ContextSource {
                        }
                }
 
+               // enable OOUI if requested via ParserOutput
+               if ( $parserOutput->getEnableOOUI() ) {
+                       $this->enableOOUI();
+               }
+
                // Link flags are ignored for now, but may in the future be
                // used to mark individual language links.
                $linkFlags = array();
@@ -2286,9 +2292,10 @@ class OutputPage extends ContextSource {
                        // add skin specific modules
                        $modules = $sk->getDefaultModules();
 
-                       // enforce various default modules for all skins
+                       // Enforce various default modules for all skins
                        $coreModules = array(
-                               // keep this list as small as possible
+                               // Keep this list as small as possible
+                               'site',
                                'mediawiki.page.startup',
                                'mediawiki.user',
                        );
@@ -2695,16 +2702,14 @@ class OutputPage extends ContextSource {
                }
 
                $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
+               $ret .= $this->getInlineHeadScripts() . "\n";
+               $ret .= $this->buildCssLinks() . "\n";
+               $ret .= $this->getExternalHeadScripts() . "\n";
 
                foreach ( $this->getHeadLinksArray() as $item ) {
                        $ret .= $item . "\n";
                }
 
-               // No newline after buildCssLinks since makeResourceLoaderLink did that already
-               $ret .= $this->buildCssLinks();
-
-               $ret .= $this->getHeadScripts() . "\n";
-
                foreach ( $this->mHeadItems as $item ) {
                        $ret .= $item . "\n";
                }
@@ -2761,23 +2766,22 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * @todo Document
+        * Construct neccecary html and loader preset states to load modules on a page.
+        *
+        * Use getHtmlFromLoaderLinks() to convert this array to HTML.
+        *
         * @param array|string $modules One or more module names
         * @param string $only ResourceLoaderModule TYPE_ class constant
-        * @param bool $useESI
-        * @param array $extraQuery Array with extra query parameters to add to each
-        *   request. array( param => value ).
-        * @param bool $loadCall If true, output an (asynchronous) mw.loader.load()
-        *   call rather than a "<script src='...'>" tag.
-        * @return string The html "<script>", "<link>" and "<style>" tags
-        */
-       public function makeResourceLoaderLink( $modules, $only, $useESI = false,
-               array $extraQuery = array(), $loadCall = false
-       ) {
+        * @param array $extraQuery [optional] Array with extra query parameters for the request
+        * @return array A list of HTML strings and array of client loader preset states
+        */
+       public function makeResourceLoaderLink( $modules, $only, array $extraQuery = array() ) {
                $modules = (array)$modules;
 
                $links = array(
-                       'html' => '',
+                       // List of html strings
+                       'html' => array(),
+                       // Associative array of module names and their states
                        'states' => array(),
                );
 
@@ -2794,8 +2798,8 @@ class OutputPage extends ContextSource {
                        if ( ResourceLoader::inDebugMode() ) {
                                // Recursively call us for every item
                                foreach ( $modules as $name ) {
-                                       $link = $this->makeResourceLoaderLink( $name, $only, $useESI );
-                                       $links['html'] .= $link['html'];
+                                       $link = $this->makeResourceLoaderLink( $name, $only, $extraQuery );
+                                       $links['html'] = array_merge( $links['html'], $link['html'] );
                                        $links['states'] += $link['states'];
                                }
                                return $links;
@@ -2809,7 +2813,6 @@ class OutputPage extends ContextSource {
                // Create keyed-by-source and then keyed-by-group list of module objects from modules list
                $sortedModules = array();
                $resourceLoader = $this->getResourceLoader();
-               $resourceLoaderUseESI = $this->getConfig()->get( 'ResourceLoaderUseESI' );
                foreach ( $modules as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        # Check that we're allowed to include this module on this page
@@ -2875,19 +2878,18 @@ class OutputPage extends ContextSource {
 
                                // Inline private modules. These can't be loaded through load.php for security
                                // reasons, see bug 34907. Note that these modules should be loaded from
-                               // getHeadScripts() before the first loader call. Otherwise other modules can't
+                               // getExternalHeadScripts() before the first loader call. Otherwise other modules can't
                                // properly use them as dependencies (bug 30914)
                                if ( $group === 'private' ) {
                                        if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
-                                               $links['html'] .= Html::inlineStyle(
+                                               $links['html'][] = Html::inlineStyle(
                                                        $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                );
                                        } else {
-                                               $links['html'] .= ResourceLoader::makeInlineScript(
+                                               $links['html'][] = ResourceLoader::makeInlineScript(
                                                        $resourceLoader->makeModuleResponse( $context, $grpModules )
                                                );
                                        }
-                                       $links['html'] .= "\n";
                                        continue;
                                }
 
@@ -2905,48 +2907,38 @@ class OutputPage extends ContextSource {
                                $moduleContext = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
                                $url = $resourceLoader->createLoaderURL( $source, $moduleContext, $extraQuery );
 
-                               if ( $useESI && $resourceLoaderUseESI ) {
-                                       $esi = Xml::element( 'esi:include', array( 'src' => $url ) );
-                                       if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
-                                               $link = Html::inlineStyle( $esi );
-                                       } else {
-                                               $link = Html::inlineScript( $esi );
-                                       }
+                               // Automatically select style/script elements
+                               if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
+                                       $media = $group === 'print' ? 'print' : 'all';
+                                       $link = Html::linkedStyle( $url, $media );
                                } else {
-                                       // Automatically select style/script elements
-                                       if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
-                                               $link = Html::linkedStyle( $url );
-                                       } elseif ( $loadCall ) {
+                                       if ( $context->getRaw() || $isRaw ) {
+                                               // Startup module can't load itself, needs to use <script> instead of mw.loader.load
+                                               $link = Html::element( 'script', array(
+                                                       // In SpecialJavaScriptTest, QUnit must load synchronous
+                                                       'async' => !isset( $extraQuery['sync'] ),
+                                                       'src' => $url
+                                               ) );
+                                       } else {
                                                $link = ResourceLoader::makeInlineScript(
-                                                       Xml::encodeJsCall( 'mw.loader.load', array( $url, 'text/javascript', true ) )
+                                                       Xml::encodeJsCall( 'mw.loader.load', array( $url ) )
                                                );
-                                       } else {
-                                               $link = Html::linkedScript( $url );
-                                               if ( !$context->getRaw() && !$isRaw ) {
-                                                       // Wrap only=script / only=combined requests in a conditional as
-                                                       // browsers not supported by the startup module would unconditionally
-                                                       // execute this module. Otherwise users will get "ReferenceError: mw is
-                                                       // undefined" or "jQuery is undefined" from e.g. a "site" module.
-                                                       $link = ResourceLoader::makeInlineScript(
-                                                               Xml::encodeJsCall( 'document.write', array( $link ) )
-                                                       );
-                                               }
+                                       }
 
-                                               // For modules requested directly in the html via <link> or <script>,
-                                               // tell mw.loader they are being loading to prevent duplicate requests.
-                                               foreach ( $grpModules as $key => $module ) {
-                                                       // Don't output state=loading for the startup module..
-                                                       if ( $key !== 'startup' ) {
-                                                               $links['states'][$key] = 'loading';
-                                                       }
+                                       // For modules requested directly in the html via <script> or mw.loader.load
+                                       // tell mw.loader they are being loading to prevent duplicate requests.
+                                       foreach ( $grpModules as $key => $module ) {
+                                               // Don't output state=loading for the startup module.
+                                               if ( $key !== 'startup' ) {
+                                                       $links['states'][$key] = 'loading';
                                                }
                                        }
                                }
 
                                if ( $group == 'noscript' ) {
-                                       $links['html'] .= Html::rawElement( 'noscript', array(), $link ) . "\n";
+                                       $links['html'][] = Html::rawElement( 'noscript', array(), $link );
                                } else {
-                                       $links['html'] .= $link . "\n";
+                                       $links['html'][] = $link;
                                }
                        }
                }
@@ -2960,24 +2952,26 @@ class OutputPage extends ContextSource {
         * @return string HTML
         */
        protected static function getHtmlFromLoaderLinks( array $links ) {
-               $html = '';
+               $html = array();
                $states = array();
                foreach ( $links as $link ) {
                        if ( !is_array( $link ) ) {
-                               $html .= $link;
+                               $html[] = $link;
                        } else {
-                               $html .= $link['html'];
+                               $html = array_merge( $html, $link['html'] );
                                $states += $link['states'];
                        }
                }
+               // Filter out empty values
+               $html = array_filter( $html, 'strlen' );
 
                if ( count( $states ) ) {
-                       $html = ResourceLoader::makeInlineScript(
+                       array_unshift( $html, ResourceLoader::makeInlineScript(
                                ResourceLoader::makeLoaderStateScript( $states )
-                       ) . "\n" . $html;
+                       ) );
                }
 
-               return $html;
+               return WrappedString::join( "\n", $html );
        }
 
        /**
@@ -2987,9 +2981,46 @@ class OutputPage extends ContextSource {
         * @return string HTML fragment
         */
        function getHeadScripts() {
-               // Startup - this will immediately load jquery and mediawiki modules
+               return $this->getInlineHeadScripts() . "\n" . $this->getExternalHeadScripts();
+       }
+
+       /**
+        * <script src="..."> tags for "<head>". This is the startup module
+        * and other modules marked with position 'top'.
+        *
+        * @return string HTML fragment
+        */
+       function getExternalHeadScripts() {
+               $links = array();
+
+               // Startup - this provides the client with the module manifest and loads jquery and mediawiki base modules
+               $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS );
+
+               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
+                       $links[] = $this->getScriptsForBottomQueue();
+               }
+
+               return self::getHtmlFromLoaderLinks( $links );
+       }
+
+       /**
+        * <script>...</script> tags to put in "<head>".
+        *
+        * @return string HTML fragment
+        */
+       function getInlineHeadScripts() {
                $links = array();
-               $links[] = $this->makeResourceLoaderLink( 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
+
+               // Client profile classes for <html>. Allows for easy hiding/showing of UI components.
+               // Must be done synchronously on every page to avoid flashes of wrong content.
+               // Note: This class distinguishes MediaWiki-supported JavaScript from the rest.
+               // The "rest" includes browsers that support JavaScript but not supported by our runtime.
+               // For the performance benefit of the majority, this is added unconditionally here and is
+               // then fixed up by the startup module for unsupported browsers.
+               $links[] = Html::inlineScript(
+                       'document.documentElement.className = document.documentElement.className'
+                       . '.replace( /(^|\s)client-nojs(\s|$)/, "$1client-js$2" );'
+               );
 
                // Load config before anything else
                $links[] = ResourceLoader::makeInlineScript(
@@ -3004,12 +3035,6 @@ class OutputPage extends ContextSource {
                // Separate user.tokens as otherwise caching will be allowed (T84960)
                $links[] = $this->makeResourceLoaderLink( 'user.tokens', ResourceLoaderModule::TYPE_COMBINED );
 
-               // Scripts and messages "only" requests marked for top inclusion
-               $links[] = $this->makeResourceLoaderLink(
-                       $this->getModuleScripts( true, 'top' ),
-                       ResourceLoaderModule::TYPE_SCRIPTS
-               );
-
                // Modules requests - let the client calculate dependencies and batch requests as it likes
                // Only load modules that have marked themselves for loading at the top
                $modules = $this->getModules( true, 'top' );
@@ -3019,9 +3044,11 @@ class OutputPage extends ContextSource {
                        );
                }
 
-               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
-                       $links[] = $this->getScriptsForBottomQueue( true );
-               }
+               // "Scripts only" modules marked for top inclusion
+               $links[] = $this->makeResourceLoaderLink(
+                       $this->getModuleScripts( true, 'top' ),
+                       ResourceLoaderModule::TYPE_SCRIPTS
+               );
 
                return self::getHtmlFromLoaderLinks( $links );
        }
@@ -3033,23 +3060,21 @@ class OutputPage extends ContextSource {
         * 'bottom', legacy scripts ($this->mScripts), user preferences, site JS
         * and user JS.
         *
-        * @param bool $inHead If true, this HTML goes into the "<head>",
-        *   if false it goes into the "<body>".
+        * @param bool $unused Previously used to let this method change its output based
+        *  on whether it was called by getExternalHeadScripts() or getBottomScripts().
         * @return string
         */
-       function getScriptsForBottomQueue( $inHead ) {
+       function getScriptsForBottomQueue( $unused = null ) {
                // Scripts "only" requests marked for bottom inclusion
                // If we're in the <head>, use load() calls rather than <script src="..."> tags
                $links = array();
 
                $links[] = $this->makeResourceLoaderLink( $this->getModuleScripts( true, 'bottom' ),
-                       ResourceLoaderModule::TYPE_SCRIPTS, /* $useESI = */ false, /* $extraQuery = */ array(),
-                       /* $loadCall = */ $inHead
+                       ResourceLoaderModule::TYPE_SCRIPTS
                );
 
                $links[] = $this->makeResourceLoaderLink( $this->getModuleStyles( true, 'bottom' ),
-                       ResourceLoaderModule::TYPE_STYLES, /* $useESI = */ false, /* $extraQuery = */ array(),
-                       /* $loadCall = */ $inHead
+                       ResourceLoaderModule::TYPE_STYLES
                );
 
                // Modules requests - let the client calculate dependencies and batch requests as it likes
@@ -3057,49 +3082,54 @@ class OutputPage extends ContextSource {
                $modules = $this->getModules( true, 'bottom' );
                if ( $modules ) {
                        $links[] = ResourceLoader::makeInlineScript(
-                               Xml::encodeJsCall( 'mw.loader.load', array( $modules, null, true ) )
+                               Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
                        );
                }
 
                // Legacy Scripts
-               $links[] = "\n" . $this->mScripts;
-
-               // Add site JS if enabled
-               $links[] = $this->makeResourceLoaderLink( 'site', ResourceLoaderModule::TYPE_SCRIPTS,
-                       /* $useESI = */ false, /* $extraQuery = */ array(), /* $loadCall = */ $inHead
-               );
+               $links[] = $this->mScripts;
 
                // Add user JS if enabled
+               // This must use TYPE_COMBINED instead of only=scripts so that its request is handled by
+               // mw.loader.implement() which ensures that execution is scheduled after the "site" module.
                if ( $this->getConfig()->get( 'AllowUserJs' )
                        && $this->getUser()->isLoggedIn()
                        && $this->getTitle()
                        && $this->getTitle()->isJsSubpage()
                        && $this->userCanPreview()
                ) {
-                       # XXX: additional security check/prompt?
-                       // We're on a preview of a JS subpage
-                       // Exclude this page from the user module in case it's in there (bug 26283)
-                       $links[] = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_SCRIPTS, false,
-                               array( 'excludepage' => $this->getTitle()->getPrefixedDBkey() ), $inHead
+                       // We're on a preview of a JS subpage. Exclude this page from the user module (T28283)
+                       // and include the draft contents as a raw script instead.
+                       $links[] = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_COMBINED,
+                               array( 'excludepage' => $this->getTitle()->getPrefixedDBkey() )
                        );
                        // Load the previewed JS
-                       $links[] = Html::inlineScript( "\n"
-                                       . $this->getRequest()->getText( 'wpTextbox1' ) . "\n" ) . "\n";
+                       $links[] = ResourceLoader::makeInlineScript(
+                               Xml::encodeJsCall( 'mw.loader.using', array(
+                                       array( 'user', 'site' ),
+                                       new XmlJsCode(
+                                               'function () {'
+                                                       . Xml::encodeJsCall( '$.globalEval', array(
+                                                               $this->getRequest()->getText( 'wpTextbox1' )
+                                                       ) )
+                                                       . '}'
+                                       )
+                               ) )
+                       );
 
                        // FIXME: If the user is previewing, say, ./vector.js, his ./common.js will be loaded
                        // asynchronously and may arrive *after* the inline script here. So the previewed code
-                       // may execute before ./common.js runs. Normally, ./common.js runs before ./vector.js...
+                       // may execute before ./common.js runs. Normally, ./common.js runs before ./vector.js.
+                       // Similarly, when previewing ./common.js and the user module does arrive first, it will
+                       // arrive without common.js and the inline script runs after. Thus running common after
+                       // the excluded subpage.
                } else {
                        // Include the user module normally, i.e., raw to avoid it being wrapped in a closure.
-                       $links[] = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_SCRIPTS,
-                               /* $useESI = */ false, /* $extraQuery = */ array(), /* $loadCall = */ $inHead
-                       );
+                       $links[] = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_COMBINED );
                }
 
                // Group JS is only enabled if site JS is enabled.
-               $links[] = $this->makeResourceLoaderLink( 'user.groups', ResourceLoaderModule::TYPE_COMBINED,
-                       /* $useESI = */ false, /* $extraQuery = */ array(), /* $loadCall = */ $inHead
-               );
+               $links[] = $this->makeResourceLoaderLink( 'user.groups', ResourceLoaderModule::TYPE_COMBINED );
 
                return self::getHtmlFromLoaderLinks( $links );
        }
@@ -3112,17 +3142,11 @@ class OutputPage extends ContextSource {
                // In case the skin wants to add bottom CSS
                $this->getSkin()->setupSkinUserCss( $this );
 
-               // Optimise jQuery ready event cross-browser.
-               // This also enforces $.isReady to be true at </body> which fixes the
-               // mw.loader bug in Firefox with using document.write between </body>
-               // and the DOMContentReady event (bug 47457).
-               $html = Html::inlineScript( 'if(window.jQuery)jQuery.ready();' );
-
-               if ( !$this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
-                       $html .= $this->getScriptsForBottomQueue( false );
+               if ( $this->getConfig()->get( 'ResourceLoaderExperimentalAsyncLoading' ) ) {
+                       // Already handled by getExternalHeadScripts()
+                       return '';
                }
-
-               return $html;
+               return $this->getScriptsForBottomQueue();
        }
 
        /**
@@ -3641,7 +3665,7 @@ class OutputPage extends ContextSource {
                        'noscript' => array()
                );
                $links = array();
-               $otherTags = ''; // Tags to append after the normal <link> tags
+               $otherTags = array(); // Tags to append after the normal <link> tags
                $resourceLoader = $this->getResourceLoader();
 
                $moduleStyles = $this->getModuleStyles( true, 'top' );
@@ -3657,10 +3681,10 @@ class OutputPage extends ContextSource {
                ) {
                        // We're on a preview of a CSS subpage
                        // Exclude this page from the user module in case it's in there (bug 26283)
-                       $link = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_STYLES, false,
+                       $link = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_STYLES,
                                array( 'excludepage' => $this->getTitle()->getPrefixedDBkey() )
                        );
-                       $otherTags .= $link['html'];
+                       $otherTags = array_merge( $otherTags, $link['html'] );
 
                        // Load the previewed CSS
                        // If needed, Janus it first. This is user-supplied CSS, so it's
@@ -3669,7 +3693,7 @@ class OutputPage extends ContextSource {
                        if ( $this->getLanguage()->getDir() !== $wgContLang->getDir() ) {
                                $previewedCSS = CSSJanus::transform( $previewedCSS, true, false );
                        }
-                       $otherTags .= Html::inlineStyle( $previewedCSS ) . "\n";
+                       $otherTags[] = Html::inlineStyle( $previewedCSS ) . "\n";
                } else {
                        // Load the user styles normally
                        $moduleStyles[] = 'user';
@@ -3683,9 +3707,17 @@ class OutputPage extends ContextSource {
                        if ( !$module ) {
                                continue;
                        }
+                       if ( $name === 'site' ) {
+                               // HACK: The site module shouldn't be fragmented with a cache group and
+                               // http request. But in order to ensure its styles are separated and after the
+                               // ResourceLoaderDynamicStyles marker, pretend it is in a group called 'site'.
+                               // The scripts remain ungrouped and rides the bottom queue.
+                               $styles['site'][] = $name;
+                               continue;
+                       }
                        $group = $module->getGroup();
-                       // Modules in groups different than the ones listed on top (see $styles assignment)
-                       // will be placed in the "other" group
+                       // Modules in groups other than the ones needing special treatment (see $styles assignment)
+                       // will be placed in the "other" style category.
                        $styles[isset( $styles[$group] ) ? $group : 'other'][] = $name;
                }
 
@@ -3702,9 +3734,9 @@ class OutputPage extends ContextSource {
                $links[] = Html::element(
                        'meta',
                        array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' )
-               ) . "\n";
+               );
 
-               // Add site, private and user styles
+               // Add site-specific and user-specific styles
                // 'private' at present only contains user.options, so put that before 'user'
                // Any future private modules will likely have a similar user-specific character
                foreach ( array( 'site', 'noscript', 'private', 'user' ) as $group ) {
@@ -3714,7 +3746,7 @@ class OutputPage extends ContextSource {
                }
 
                // Add stuff in $otherTags (previewed user CSS if applicable)
-               return self::getHtmlFromLoaderLinks( $links ) . $otherTags;
+               return self::getHtmlFromLoaderLinks( $links ) . implode( '', $otherTags );
        }
 
        /**
@@ -3946,21 +3978,34 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Add ResourceLoader module styles for OOUI and set up the PHP implementation of it for use with
-        * MediaWiki and this OutputPage instance.
+        * Helper function to setup the PHP implementation of OOUI to use in this request.
         *
-        * @since 1.25
+        * @since 1.26
+        * @param String $skinName The Skin name to determine the correct OOUI theme
+        * @param String $dir Language direction
         */
-       public function enableOOUI() {
+       public static function setupOOUI( $skinName = '', $dir = 'ltr' ) {
                $themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
                // Make keys (skin names) lowercase for case-insensitive matching.
                $themes = array_change_key_case( $themes, CASE_LOWER );
-               $skinName = strtolower( $this->getSkin()->getSkinName() );
                $theme = isset( $themes[ $skinName ] ) ? $themes[ $skinName ] : 'MediaWiki';
                // For example, 'OOUI\MediaWikiTheme'.
                $themeClass = "OOUI\\{$theme}Theme";
                OOUI\Theme::setSingleton( new $themeClass() );
-               OOUI\Element::setDefaultDir( $this->getLanguage()->getDir() );
+               OOUI\Element::setDefaultDir( $dir );
+       }
+
+       /**
+        * Add ResourceLoader module styles for OOUI and set up the PHP implementation of it for use with
+        * MediaWiki and this OutputPage instance.
+        *
+        * @since 1.25
+        */
+       public function enableOOUI() {
+               self::setupOOUI(
+                       strtolower( $this->getSkin()->getSkinName() ),
+                       $this->getLanguage()->getDir()
+               );
                $this->addModuleStyles( array(
                        'oojs-ui.styles',
                        'oojs-ui.styles.icons',
index 9497ee7..fbb7b51 100644 (file)
@@ -124,6 +124,7 @@ class Preferences {
 
                $disable = !$user->isAllowed( 'editmyoptions' );
 
+               $defaultOptions = User::getDefaultOptions();
                ## Prod in defaults from the user
                foreach ( $defaultPreferences as $name => &$info ) {
                        $prefFromUser = self::getOptionFromUser( $name, $info, $user );
@@ -131,7 +132,6 @@ class Preferences {
                                $info['disabled'] = 'disabled';
                        }
                        $field = HTMLForm::loadInputFromParameters( $name, $info, $dummyForm ); // For validation
-                       $defaultOptions = User::getDefaultOptions();
                        $globalDefault = isset( $defaultOptions[$name] )
                                ? $defaultOptions[$name]
                                : null;
@@ -888,6 +888,12 @@ class Preferences {
                        'section' => 'rc/advancedrc',
                );
 
+               $defaultPreferences['hidecategorization'] = array(
+                       'type' => 'toggle',
+                       'label-message' => 'tog-hidecategorization',
+                       'section' => 'rc/advancedrc',
+               );
+
                if ( $user->useRCPatrol() ) {
                        $defaultPreferences['hidepatrolled'] = array(
                                'type' => 'toggle',
@@ -995,6 +1001,12 @@ class Preferences {
                        'label-message' => 'tog-watchlisthideliu',
                );
 
+               $defaultPreferences['watchlisthidecategorization'] = array(
+                       'type' => 'toggle',
+                       'section' => 'watchlist/advancedwatchlist',
+                       'label-message' => 'tog-watchlisthidecategorization',
+               );
+
                if ( $user->useRCPatrol() ) {
                        $defaultPreferences['watchlisthidepatrolled'] = array(
                                'type' => 'toggle',
index 1443d1c..4cad7b7 100644 (file)
@@ -384,7 +384,12 @@ class ProtectionForm {
                                "mwProtect-$action-expires"
                        );
 
-                       $expiryFormOptions = '';
+                       $expiryFormOptions = new XmlSelect( "wpProtectExpirySelection-$action", "mwProtectExpirySelection-$action", $this->mExpirySelection[$action] );
+                       $expiryFormOptions->setAttribute( 'tabindex', '2' );
+                       if ( $this->disabled ) {
+                               $expiryFormOptions->setAttribute( 'disabled', 'disabled' );
+                       }
+
                        if ( $this->mExistingExpiry[$action] ) {
                                if ( $this->mExistingExpiry[$action] == 'infinity' ) {
                                        $existingExpiryMessage = $context->msg( 'protect-existing-expiry-infinity' );
@@ -394,29 +399,17 @@ class ProtectionForm {
                                        $t = $lang->userTime( $this->mExistingExpiry[$action], $user );
                                        $existingExpiryMessage = $context->msg( 'protect-existing-expiry', $timestamp, $d, $t );
                                }
-                               $expiryFormOptions .=
-                                       Xml::option(
-                                               $existingExpiryMessage->text(),
-                                               'existing',
-                                               $this->mExpirySelection[$action] == 'existing'
-                                       ) . "\n";
+                               $expiryFormOptions->addOption( $existingExpiryMessage->text(), 'existing' );
                        }
 
-                       $expiryFormOptions .= Xml::option(
-                               $context->msg( 'protect-othertime-op' )->text(),
-                               "othertime"
-                       ) . "\n";
+                       $expiryFormOptions->addOption( $context->msg( 'protect-othertime-op' )->text(), 'othertime' );
                        foreach ( explode( ',', $scExpiryOptions ) as $option ) {
                                if ( strpos( $option, ":" ) === false ) {
                                        $show = $value = $option;
                                } else {
                                        list( $show, $value ) = explode( ":", $option );
                                }
-                               $expiryFormOptions .= Xml::option(
-                                       $show,
-                                       htmlspecialchars( $value ),
-                                       $this->mExpirySelection[$action] === $value
-                               ) . "\n";
+                               $expiryFormOptions->addOption( $show, htmlspecialchars( $value ) );
                        }
                        # Add expiry dropdown
                        if ( $showProtectOptions && !$this->disabled ) {
@@ -426,12 +419,7 @@ class ProtectionForm {
                                                        {$mProtectexpiry}
                                                </td>
                                                <td class='mw-input'>" .
-                                                       Xml::tags( 'select',
-                                                               array(
-                                                                       'id' => "mwProtectExpirySelection-$action",
-                                                                       'name' => "wpProtectExpirySelection-$action",
-                                                                       'tabindex' => '2' ) + $this->disabledAttrib,
-                                                               $expiryFormOptions ) .
+                                                       $expiryFormOptions->getHTML() .
                                                "</td>
                                        </tr></table>";
                        }
@@ -576,18 +564,18 @@ class ProtectionForm {
                );
 
                $id = 'mwProtect-level-' . $action;
-               $attribs = array(
-                       'id' => $id,
-                       'name' => $id,
-                       'size' => count( $levels ),
-               ) + $this->disabledAttrib;
 
-               $out = Xml::openElement( 'select', $attribs );
+               $select = new XmlSelect( $id, $id, $selected );
+               $select->setAttribute( 'size', count( $levels ) );
+               if ( $this->disabled ) {
+                       $select->setAttribute( 'disabled', 'disabled' );
+               }
+
                foreach ( $levels as $key ) {
-                       $out .= Xml::option( $this->getOptionLabel( $key ), $key, $key == $selected );
+                       $select->addOption( $this->getOptionLabel( $key ), $key );
                }
-               $out .= Xml::closeElement( 'select' );
-               return $out;
+
+               return $select->getHTML();
        }
 
        /**
index 71bdf58..32ee259 100644 (file)
@@ -1641,8 +1641,9 @@ class Revision implements IDBAccessObject {
                                $row['content_format'] = $current->rev_content_format;
                        }
 
+                       $row['title'] = Title::makeTitle( $current->page_namespace, $current->page_title );
+
                        $revision = new Revision( $row );
-                       $revision->setTitle( Title::makeTitle( $current->page_namespace, $current->page_title ) );
                } else {
                        $revision = null;
                }
index ddaf1b2..e8f06c4 100644 (file)
@@ -966,7 +966,8 @@ class Sanitizer {
                $value = self::normalizeCss( $value );
 
                // Reject problematic keywords and control characters
-               if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ) {
+               if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ||
+                       strpos( $value, UtfNormal\Constants::UTF8_REPLACEMENT ) !== false ) {
                        return '/* invalid control char */';
                } elseif ( preg_match(
                        '! expression
@@ -1276,9 +1277,10 @@ class Sanitizer {
                        # Double-quoted
                        return $set[3];
                } elseif ( !isset( $set[2] ) ) {
-                       # In XHTML, attributes must have a value.
-                       # For 'reduced' form, return explicitly the attribute name here.
-                       return $set[1];
+                       # In XHTML, attributes must have a value so return an empty string.
+                       # See "Empty attribute syntax",
+                       # http://www.w3.org/TR/html5/syntax.html#syntax-attribute-name
+                       return "";
                } else {
                        throw new MWException( "Tag conditions not met. This should never happen and is a bug." );
                }
@@ -1398,15 +1400,19 @@ class Sanitizer {
        }
 
        /**
-        * Returns true if a given Unicode codepoint is a valid character in XML.
+        * Returns true if a given Unicode codepoint is a valid character in
+        * both HTML5 and XML.
         * @param int $codepoint
         * @return bool
         */
        private static function validateCodepoint( $codepoint ) {
+               # U+000C is valid in HTML5 but not allowed in XML.
+               # U+000D is valid in XML but not allowed in HTML5.
+               # U+007F - U+009F are disallowed in HTML5 (control characters).
                return $codepoint == 0x09
                        || $codepoint == 0x0a
-                       || $codepoint == 0x0d
-                       || ( $codepoint >= 0x20 && $codepoint <= 0xd7ff )
+                       || ( $codepoint >= 0x20 && $codepoint <= 0x7e )
+                       || ( $codepoint >= 0xa0 && $codepoint <= 0xd7ff )
                        || ( $codepoint >= 0xe000 && $codepoint <= 0xfffd )
                        || ( $codepoint >= 0x10000 && $codepoint <= 0x10ffff );
        }
@@ -1808,6 +1814,11 @@ class Sanitizer {
 
                        $host = preg_replace( $strip, '', $host );
 
+                       // IPv6 host names are bracketed with [].  Url-decode these.
+                       if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 && preg_match( '!^//%5B(.*?)%5D((:\d+)?)$!', $host, $matches ) ) {
+                               $host = '//[' . $matches[1] . ']' . $matches[2];
+                       }
+
                        // @todo FIXME: Validate hostnames here
 
                        return $protocol . $host . $rest;
index fbb5daa..28af7f5 100644 (file)
@@ -281,7 +281,7 @@ class Status {
         * Otherwise, if its an array, just use the first value as the
         * message and the remaining items as the params.
         *
-        * @return string
+        * @return Message
         */
        protected function getErrorMessage( $error ) {
                if ( is_array( $error ) ) {
@@ -316,9 +316,9 @@ class Status {
        }
 
        /**
-        * Return an array with the wikitext for each item in the array.
+        * Return an array with a Message object for each error.
         * @param array $errors
-        * @return array
+        * @return Message[]
         */
        protected function getErrorMessageArray( $errors ) {
                return array_map( array( $this, 'getErrorMessage' ), $errors );
index cefbe62..9b958f4 100644 (file)
@@ -519,19 +519,24 @@ class User implements IDBAccessObject {
         * If the code is invalid or has expired, returns NULL.
         *
         * @param string $code Confirmation code
+        * @param int $flags User::READ_* bitfield
         * @return User|null
         */
-       public static function newFromConfirmationCode( $code ) {
-               $dbr = wfGetDB( DB_SLAVE );
-               $id = $dbr->selectField( 'user', 'user_id', array(
-                       'user_email_token' => md5( $code ),
-                       'user_email_token_expires > ' . $dbr->addQuotes( $dbr->timestamp() ),
-                       ) );
-               if ( $id !== false ) {
-                       return User::newFromId( $id );
-               } else {
-                       return null;
-               }
+       public static function newFromConfirmationCode( $code, $flags = 0 ) {
+               $db = ( $flags & self::READ_LATEST ) == self::READ_LATEST
+                       ? wfGetDB( DB_MASTER )
+                       : wfGetDB( DB_SLAVE );
+
+               $id = $db->selectField(
+                       'user',
+                       'user_id',
+                       array(
+                               'user_email_token' => md5( $code ),
+                               'user_email_token_expires > ' . $db->addQuotes( $db->timestamp() ),
+                       )
+               );
+
+               return $id ? User::newFromId( $id ) : null;
        }
 
        /**
@@ -3454,7 +3459,7 @@ class User implements IDBAccessObject {
                        $dbw = wfGetDB( DB_MASTER );
                        $dbw->update( 'watchlist',
                                array( /* SET */ 'wl_notificationtimestamp' => null ),
-                               array( /* WHERE */ 'wl_user' => $id ),
+                               array( /* WHERE */ 'wl_user' => $id, 'wl_notificationtimestamp IS NOT NULL' ),
                                __METHOD__
                        );
                        // We also need to clear here the "you have new message" notification for the own user_talk page;
index f97dc6a..f5a4f93 100644 (file)
@@ -136,3 +136,8 @@ if ( ob_get_level() == 0 ) {
 if ( !defined( 'MW_NO_SETUP' ) ) {
        require_once "$IP/includes/Setup.php";
 }
+
+# Multiple DBs or commits might be used; keep the request as transactional as possible
+if ( isset( $_SERVER['REQUEST_METHOD'] ) && $_SERVER['REQUEST_METHOD'] === 'POST' ) {
+       ignore_user_abort( true );
+}
index 1cd04ae..e765eed 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Class to generate XML <select>.
+ * Class for generating HTML <select> elements.
  *
  * 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
@@ -21,7 +21,7 @@
  */
 
 /**
- * Module of static functions for generating XML <select> elements
+ * Class for generating HTML <select> elements.
  */
 class XmlSelect {
        protected $options = array();
@@ -51,7 +51,7 @@ class XmlSelect {
 
        /**
         * @param string $name
-        * @param array $value
+        * @param string $value
         */
        public function setAttribute( $name, $value ) {
                $this->attributes[$name] = $value;
@@ -59,7 +59,7 @@ class XmlSelect {
 
        /**
         * @param string $name
-        * @return array|null
+        * @return string|null
         */
        public function getAttribute( $name ) {
                if ( isset( $this->attributes[$name] ) ) {
@@ -70,14 +70,12 @@ class XmlSelect {
        }
 
        /**
-        * @param string $name
-        * @param bool $value
+        * @param string $label
+        * @param string $value If not given, assumed equal to $label
         */
-       public function addOption( $name, $value = false ) {
-               // Stab stab stab
-               $value = $value !== false ? $value : $name;
-
-               $this->options[] = array( $name => $value );
+       public function addOption( $label, $value = false ) {
+               $value = $value !== false ? $value : $label;
+               $this->options[] = array( $label => $value );
        }
 
        /**
@@ -92,12 +90,12 @@ class XmlSelect {
        }
 
        /**
-        * This accepts an array of form
+        * This accepts an array of form:
         * label => value
         * label => ( label => value, label => value )
         *
         * @param array $options
-        * @param bool $default
+        * @param string $default
         * @return string
         */
        static function formatOptions( $options, $default = false ) {
index bb6a4d5..43f03c3 100644 (file)
@@ -407,4 +407,14 @@ abstract class Action {
         * @throws ErrorPageError
         */
        abstract public function show();
+
+       /**
+        * Call wfTransactionalTimeLimit() if this request was POSTed
+        * @since 1.26
+        */
+       protected function useTransactionalTimeLimit() {
+               if ( $this->getRequest()->wasPosted() ) {
+                       wfTransactionalTimeLimit();
+               }
+       }
 }
index be21a6f..841a94d 100644 (file)
@@ -41,6 +41,8 @@ class DeleteAction extends FormlessAction {
        }
 
        public function show() {
+               $this->useTransactionalTimeLimit();
+
                $out = $this->getOutput();
                if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $out->addModuleStyles( array(
index 6c8440a..eb53f19 100644 (file)
@@ -41,6 +41,8 @@ class EditAction extends FormlessAction {
        }
 
        public function show() {
+               $this->useTransactionalTimeLimit();
+
                if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
                        $out = $this->getOutput();
                        $out->addModuleStyles( array(
index 5491f81..f3670a8 100644 (file)
@@ -62,13 +62,17 @@ class InfoAction extends FormlessAction {
         *
         * @since 1.22
         * @param Title $title Title to clear cache for
+        * @param int|null $revid Revision id to clear
         */
-       public static function invalidateCache( Title $title ) {
+       public static function invalidateCache( Title $title, $revid = null ) {
                $cache = ObjectCache::getMainWANInstance();
 
-               $revision = Revision::newFromTitle( $title, 0, Revision::READ_LATEST );
-               if ( $revision !== null ) {
-                       $key = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $revision->getId() );
+               if ( !$revid ) {
+                       $revision = Revision::newFromTitle( $title, 0, Revision::READ_LATEST );
+                       $revid = $revision ? $revision->getId() : null;
+               }
+               if ( $revid !== null ) {
+                       $key = wfMemcKey( 'infoaction', sha1( $title->getPrefixedText() ), $revid );
                        $cache->delete( $key );
                }
        }
index d025878..c7f3346 100644 (file)
@@ -107,6 +107,8 @@ class RevertAction extends FormAction {
        }
 
        public function onSubmit( $data ) {
+               $this->useTransactionalTimeLimit();
+
                $source = $this->page->getFile()->getArchiveVirtualUrl(
                        $this->getRequest()->getText( 'oldimage' )
                );
index 76d70d7..93669cf 100644 (file)
@@ -36,6 +36,9 @@ class RollbackAction extends FormlessAction {
        }
 
        public function onView() {
+               // TODO: use $this->useTransactionalTimeLimit(); when POST only
+               wfTransactionalTimeLimit();
+
                $details = null;
 
                $request = $this->getRequest();
index 9647340..8b6e329 100644 (file)
@@ -64,7 +64,7 @@ class WatchAction extends FormAction {
                $this->checkCanExecute( $user );
 
                // Must have valid token for this action/title
-               $salt = array( $this->getName(), $this->getTitle()->getDBkey() );
+               $salt = array( $this->getName(), $this->getTitle()->getPrefixedDBkey() );
 
                if ( $user->matchEditToken( $this->getRequest()->getVal( 'token' ), $salt ) ) {
                        $this->onSubmit( array() );
index 393ff49..7b71e6c 100644 (file)
@@ -1229,7 +1229,7 @@ abstract class ApiBase extends ContextSource {
                                $this->dieUsage( 'Specified user does not exist', 'bad_wlowner' );
                        }
                        $token = $user->getOption( 'watchlisttoken' );
-                       if ( $token == '' || $token != $params['token'] ) {
+                       if ( $token == '' || !hash_equals( $token, $params['token'] ) ) {
                                $this->dieUsage(
                                        'Incorrect watchlist token provided -- please set a correct token in Special:Preferences',
                                        'bad_wltoken'
@@ -2870,6 +2870,16 @@ abstract class ApiBase extends ContextSource {
                return $this->getResult()->getData();
        }
 
+       /**
+        * Call wfTransactionalTimeLimit() if this request was POSTed
+        * @since 1.26
+        */
+       protected function useTransactionalTimeLimit() {
+               if ( $this->getRequest()->wasPosted() ) {
+                       wfTransactionalTimeLimit();
+               }
+       }
+
        /**@}*/
 }
 
index b3a543a..5443fac 100644 (file)
@@ -21,6 +21,7 @@
  *
  * @file
  */
+use MediaWiki\Logger\LoggerFactory;
 
 /**
  * Unit to authenticate account registration attempts to the current wiki.
@@ -95,6 +96,10 @@ class ApiCreateAccount extends ApiBase {
                $loginForm->load();
 
                $status = $loginForm->addNewaccountInternal();
+               LoggerFactory::getInstance( 'authmanager' )->info( 'Account creation attempt via API', array(
+                       'event' => 'accountcreation',
+                       'status' => $status,
+               ) );
                $result = array();
                if ( $status->isGood() ) {
                        // Success!
index 6279dfd..bdf02bf 100644 (file)
@@ -39,6 +39,8 @@ class ApiDelete extends ApiBase {
         * result object.
         */
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $params = $this->extractRequestParams();
 
                $pageObj = $this->getTitleOrPageId( $params, 'fromdbmaster' );
index b623849..2f1c01c 100644 (file)
@@ -35,6 +35,8 @@
  */
 class ApiEditPage extends ApiBase {
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $user = $this->getUser();
                $params = $this->extractRequestParams();
 
index d24112c..5adde87 100644 (file)
@@ -155,6 +155,7 @@ class ApiFeedRecentChanges extends ApiBase {
                        'hideliu' => false,
                        'hidepatrolled' => false,
                        'hidemyself' => false,
+                       'hidecategorization' => false,
 
                        'tagfilter' => array(
                                ApiBase::PARAM_TYPE => 'string',
index 5517ee0..a49397d 100644 (file)
@@ -38,6 +38,8 @@ class ApiFileRevert extends ApiBase {
        protected $params;
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $this->params = $this->extractRequestParams();
                // Extract the file and archiveName from the request parameters
                $this->validateParameters();
index 43877b7..9538842 100644 (file)
@@ -35,6 +35,15 @@ class ApiFormatJson extends ApiFormatBase {
        public function __construct( ApiMain $main, $format ) {
                parent::__construct( $main, $format );
                $this->isRaw = ( $format === 'rawfm' );
+
+               if ( $this->getMain()->getCheck( 'callback' ) ) {
+                       # T94015: jQuery appends a useless '_' parameter in jsonp mode.
+                       # Mark the parameter as used in that case to avoid a warning that's
+                       # outside the control of the end user.
+                       # (and do it here because ApiMain::reportUnusedParams() gets called
+                       # before our ::execute())
+                       $this->getMain()->getCheck( '_' );
+               }
        }
 
        public function getMimeType() {
index c8390b6..7a544ec 100644 (file)
@@ -49,6 +49,8 @@ class ApiImageRotate extends ApiBase {
        }
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $params = $this->extractRequestParams();
                $rotation = $params['rotation'];
 
index 4154083..735cc7f 100644 (file)
@@ -32,6 +32,8 @@
 class ApiImport extends ApiBase {
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $user = $this->getUser();
                $params = $this->extractRequestParams();
 
index c4e7022..8c65310 100644 (file)
@@ -24,6 +24,7 @@
  *
  * @file
  */
+use MediaWiki\Logger\LoggerFactory;
 
 /**
  * Unit to authenticate log-in attempts to the current wiki.
@@ -174,6 +175,12 @@ class ApiLogin extends ApiBase {
                }
 
                $this->getResult()->addValue( null, 'login', $result );
+
+               LoggerFactory::getInstance( 'authmanager' )->info( 'Login attempt', array(
+                       'event' => 'login',
+                       'successful' => $authRes === LoginForm::SUCCESS,
+                       'status' => LoginForm::$statusCodes[$authRes],
+               ) );
        }
 
        public function mustBePosted() {
index f2059d7..8ce505a 100644 (file)
@@ -1089,8 +1089,14 @@ class ApiMain extends ApiBase {
 
                $this->checkAsserts( $params );
 
+               $stats = $this->getContext()->getStats();
+               $statsPath = 'api.modules.' . strtr( $module->getModulePath(), '+', '.' );
+               $metric = $stats->increment( $statsPath );
+               $metric->setSampleRate( 0.001 );
+
                // Execute
                $module->execute();
+
                Hooks::run( 'APIAfterExecute', array( &$module ) );
 
                $this->reportUnusedParams();
index e42958b..aca4378 100644 (file)
@@ -31,6 +31,8 @@
 class ApiMove extends ApiBase {
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $user = $this->getUser();
                $params = $this->extractRequestParams();
 
index 577b525..1b8f6d9 100644 (file)
@@ -260,6 +260,7 @@ class ApiParse extends ApiBase {
                $result_array = array();
 
                $result_array['title'] = $titleObj->getPrefixedText();
+               $result_array['pageid'] = $pageid ? $pageid : $pageObj->getId();
 
                if ( !is_null( $oldid ) ) {
                        $result_array['revid'] = intval( $oldid );
index 5378e92..8959a46 100644 (file)
@@ -276,6 +276,7 @@ class ApiQuery extends ApiBase {
                }
 
                $cacheMode = $this->mPageSet->getCacheMode();
+               $stats =  $this->getContext()->getStats();
 
                // Execute all unfinished modules
                /** @var $module ApiQueryBase */
@@ -283,6 +284,11 @@ class ApiQuery extends ApiBase {
                        $params = $module->extractRequestParams();
                        $cacheMode = $this->mergeCacheMode(
                                $cacheMode, $module->getCacheMode( $params ) );
+
+                       $statsPath = 'api.modules.' . strtr( $module->getModulePath(), '+', '.' );
+                       $metric = $stats->increment( $statsPath );
+                       $metric->setSampleRate( 0.001 );
+
                        $module->execute();
                        Hooks::run( 'APIQueryAfterExecute', array( &$module ) );
                }
index cc0b71a..0711c90 100644 (file)
@@ -186,7 +186,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                        'prop' => array(
                                ApiBase::PARAM_TYPE => array( 'size', 'hidden' ),
                                ApiBase::PARAM_DFLT => '',
-                               ApiBase::PARAM_ISMULTI => true
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                );
        }
index fadecfb..347da89 100644 (file)
@@ -255,6 +255,7 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_TYPE => array_merge(
                                        array( 'ids', 'title' ), array_keys( $this->props )
                                ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'namespace' => array(
                                ApiBase::PARAM_DFLT => $this->dfltNamespace,
index b52b1c6..eb3e553 100644 (file)
@@ -340,7 +340,8 @@ class ApiQueryAllUsers extends ApiQueryBase {
                                        'rights',
                                        'editcount',
                                        'registration'
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'limit' => array(
                                ApiBase::PARAM_DFLT => 10,
index dbed36c..a50d58b 100644 (file)
@@ -335,6 +335,7 @@ class ApiQueryBacklinksprop extends ApiQueryGeneratorBase {
                                ),
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_DFLT => 'pageid|title',
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'namespace' => array(
                                ApiBase::PARAM_ISMULTI => true,
index 25f0bf7..d004020 100644 (file)
@@ -303,7 +303,8 @@ class ApiQueryBlocks extends ApiQueryBase {
                                        'range',
                                        'flags'
                                ),
-                               ApiBase::PARAM_ISMULTI => true
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'show' => array(
                                ApiBase::PARAM_TYPE => array(
index 7b3e6e3..9e82fe7 100644 (file)
@@ -184,7 +184,8 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
                                        'sortkey',
                                        'timestamp',
                                        'hidden',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'show' => array(
                                ApiBase::PARAM_ISMULTI => true,
index 4042bd7..6dcfe0e 100644 (file)
@@ -314,7 +314,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                                        'sortkeyprefix',
                                        'type',
                                        'timestamp',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'namespace' => array(
                                ApiBase::PARAM_ISMULTI => true,
index 3f65a19..38eba12 100644 (file)
@@ -155,7 +155,8 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
                                        'ids',
                                        'title',
                                        'url'
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'offset' => array(
                                ApiBase::PARAM_TYPE => 'integer',
index 5488984..8156edb 100644 (file)
@@ -274,6 +274,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
                                        'bitdepth',
                                        'archivename',
                                ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'limit' => array(
                                ApiBase::PARAM_DFLT => 10,
index 618387d..2fe4bd9 100644 (file)
@@ -186,6 +186,7 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
                                        'iwprefix',
                                        'iwtitle',
                                ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'dir' => array(
                                ApiBase::PARAM_DFLT => 'ascending',
index aca3f70..82619cc 100644 (file)
@@ -151,7 +151,8 @@ class ApiQueryIWLinks extends ApiQueryBase {
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array(
                                        'url',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'prefix' => null,
                        'title' => null,
index c45e0ef..b05c75c 100644 (file)
@@ -37,7 +37,7 @@ class ApiQueryInfo extends ApiQueryBase {
                $fld_notificationtimestamp = false,
                $fld_preload = false, $fld_displaytitle = false;
 
-       private $params, $titles, $missing, $everything, $pageCounter;
+       private $params, $titles, $missing, $everything;
 
        private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched,
                $pageLatest, $pageLength;
index 7be18b2..9f77b84 100644 (file)
@@ -185,6 +185,7 @@ class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
                                        'lllang',
                                        'lltitle',
                                ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'dir' => array(
                                ApiBase::PARAM_DFLT => 'ascending',
index 8f8a17d..25e534e 100644 (file)
@@ -146,7 +146,8 @@ class ApiQueryLangLinks extends ApiQueryBase {
                                        'url',
                                        'langname',
                                        'autonym',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'lang' => null,
                        'title' => null,
index 7b2381f..d87ad1e 100644 (file)
@@ -401,7 +401,8 @@ class ApiQueryLogEvents extends ApiQueryBase {
                                        'parsedcomment',
                                        'details',
                                        'tags'
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'type' => array(
                                ApiBase::PARAM_TYPE => $config->get( 'LogTypes' )
index 7bcaf24..ad641a4 100644 (file)
@@ -140,7 +140,8 @@ class ApiQueryPagesWithProp extends ApiQueryGeneratorBase {
                                        'ids',
                                        'title',
                                        'value',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'continue' => array(
                                ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
index 033310d..5ef2f70 100644 (file)
@@ -216,7 +216,8 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
                                        'parsedcomment',
                                        'expiry',
                                        'level'
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'continue' => array(
                                ApiBase::PARAM_HELP_MSG => 'api-help-param-continue',
index 74bccc2..b559144 100644 (file)
@@ -636,7 +636,8 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                        'loginfo',
                                        'tags',
                                        'sha1',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'token' => array(
                                ApiBase::PARAM_DEPRECATED => true,
@@ -667,14 +668,9 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
                        ),
                        'type' => array(
-                               ApiBase::PARAM_DFLT => 'edit|new|log',
+                               ApiBase::PARAM_DFLT => 'edit|new|log|categorize',
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => array(
-                                       'edit',
-                                       'external',
-                                       'new',
-                                       'log'
-                               )
+                               ApiBase::PARAM_TYPE => RecentChange::getChangeTypes()
                        ),
                        'toponly' => false,
                        'continue' => array(
index 349e7fa..65fd727 100644 (file)
@@ -316,18 +316,19 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
                                        'size',
                                        'wordcount',
                                        'timestamp',
-                                       'score',
                                        'snippet',
                                        'titlesnippet',
                                        'redirecttitle',
                                        'redirectsnippet',
                                        'sectiontitle',
                                        'sectionsnippet',
-                                       'hasrelated',
                                        'isfilematch',
                                        'categorysnippet',
+                                       'score', // deprecated
+                                       'hasrelated', // deprecated
                                ),
                                ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'offset' => array(
                                ApiBase::PARAM_DFLT => 0,
index 1ce5761..bcd5d9e 100644 (file)
@@ -854,7 +854,8 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        'variables',
                                        'protocols',
                                        'defaultoptions',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'filteriw' => array(
                                ApiBase::PARAM_TYPE => array(
index 45f73b2..284bb82 100644 (file)
@@ -163,7 +163,8 @@ class ApiQueryTags extends ApiQueryBase {
                                        'source',
                                        'active',
                                ),
-                               ApiBase::PARAM_ISMULTI => true
+                               ApiBase::PARAM_ISMULTI => true,
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        )
                );
        }
index 480a1ab..e303094 100644 (file)
@@ -491,7 +491,8 @@ class ApiQueryContributions extends ApiQueryBase {
                                        'flags',
                                        'patrolled',
                                        'tags'
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'show' => array(
                                ApiBase::PARAM_ISMULTI => true,
index e003e31..75a0adb 100644 (file)
@@ -268,10 +268,12 @@ class ApiQueryUserInfo extends ApiQueryBase {
                                        'registrationdate',
                                        'unreadcount',
                                ),
-                               ApiBase::PARAM_HELP_MSG => array(
-                                       'apihelp-query+userinfo-param-prop',
-                                       self::WL_UNREAD_LIMIT - 1,
-                                       self::WL_UNREAD_LIMIT . '+',
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(
+                                       'unreadcount' => array(
+                                               'apihelp-query+userinfo-paramvalue-prop-unreadcount',
+                                               self::WL_UNREAD_LIMIT - 1,
+                                               self::WL_UNREAD_LIMIT . '+',
+                                       ),
                                ),
                        )
                );
index 8b1a075..1d0048c 100644 (file)
@@ -305,7 +305,8 @@ class ApiQueryUsers extends ApiQueryBase {
                                        'registration',
                                        'emailable',
                                        'gender',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'users' => array(
                                ApiBase::PARAM_ISMULTI => true
index 648d259..9d35a55 100644 (file)
@@ -483,14 +483,9 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                )
                        ),
                        'type' => array(
-                               ApiBase::PARAM_DFLT => 'edit|new|log',
+                               ApiBase::PARAM_DFLT => 'edit|new|log|categorize',
                                ApiBase::PARAM_ISMULTI => true,
-                               ApiBase::PARAM_TYPE => array(
-                                       'edit',
-                                       'external',
-                                       'new',
-                                       'log',
-                               )
+                               ApiBase::PARAM_TYPE => RecentChange::getChangeTypes()
                        ),
                        'owner' => array(
                                ApiBase::PARAM_TYPE => 'user'
index f45d7d7..fc7b80c 100644 (file)
@@ -171,7 +171,8 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
                                ApiBase::PARAM_ISMULTI => true,
                                ApiBase::PARAM_TYPE => array(
                                        'changed',
-                               )
+                               ),
+                               ApiBase::PARAM_HELP_MSG_PER_VALUE => array(),
                        ),
                        'show' => array(
                                ApiBase::PARAM_ISMULTI => true,
index 2896231..bb5c145 100644 (file)
@@ -32,6 +32,8 @@
 class ApiRevisionDelete extends ApiBase {
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $params = $this->extractRequestParams();
                $user = $this->getUser();
 
index 02e62a0..6a3346f 100644 (file)
@@ -40,6 +40,8 @@ class ApiRollback extends ApiBase {
        private $mUser = null;
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $user = $this->getUser();
                $params = $this->extractRequestParams();
 
index 28702b1..cd50ee6 100644 (file)
@@ -30,6 +30,8 @@
 class ApiUndelete extends ApiBase {
 
        public function execute() {
+               $this->useTransactionalTimeLimit();
+
                $params = $this->extractRequestParams();
 
                if ( !$this->getUser()->isAllowed( 'undelete' ) ) {
index febe5cc..4aacd1a 100644 (file)
@@ -4,7 +4,8 @@
                        "Toniher",
                        "Macofe",
                        "Xavier Dengra",
-                       "F3RaN"
+                       "F3RaN",
+                       "Eduardo Martinez"
                ]
        },
        "apihelp-main-param-format": "El format de la sortida.",
@@ -47,7 +48,7 @@
        "apihelp-query+pageswithprop-example-generator": "Obtenir informació addicional sobre les 10 primeres pàgines utilitzant <code>__NOTOC__</code>.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Afegeix el títol de la pàgina.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Afegeix l'usuari que ha fet l'edició.",
-       "apihelp-query+watchlist-paramvalue-prop-userid": "Afegeix l'identificador d'usuari que ha fet l'edició.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Afegeix l'IDentificador de l'usuari que ha fet l'edició.",
        "apihelp-query+watchlist-paramvalue-prop-comment": "Afegeix comentari de l'edició.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "Afegeix timestamp de l'edició.",
        "apihelp-query+watchlist-paramvalue-prop-patrol": "Etiqueta les modificacions que són vigilades.",
index 6c7ce81..49331c4 100644 (file)
        "apihelp-emailuser-param-subject": "Subject header.",
        "apihelp-emailuser-param-text": "Mail body.",
        "apihelp-emailuser-param-ccme": "Send a copy of this mail to me.",
-       "apihelp-emailuser-example-email": "Send an email to the User <kbd>WikiSysop</kbd> with the text <kbd>Content</kbd>.",
+       "apihelp-emailuser-example-email": "Send an email to user <kbd>WikiSysop</kbd> with the text <kbd>Content</kbd>.",
 
        "apihelp-expandtemplates-description": "Expands all templates in wikitext.",
        "apihelp-expandtemplates-param-title": "Title of page.",
        "apihelp-feedrecentchanges-param-hideliu": "Hide changes made by registered users.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Hide patrolled changes.",
        "apihelp-feedrecentchanges-param-hidemyself": "Hide changes made by the current user.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Hide category membership changes.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filter by tag.",
        "apihelp-feedrecentchanges-param-target": "Show only changes on pages linked from this page.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Show changes on pages linked to the selected page instead.",
        "apihelp-opensearch-param-warningsaserror": "If warnings are raised with <kbd>format=json</kbd>, return an API error instead of ignoring them.",
        "apihelp-opensearch-example-te": "Find pages beginning with <kbd>Te</kbd>.",
 
-       "apihelp-options-description": "Change preferences of the current user.\n\nOnly options which are registered in core or in one of installed extensions, or options with keys prefixed with \"userjs-\" (intended to be used by user scripts), can be set.",
+       "apihelp-options-description": "Change preferences of the current user.\n\nOnly options which are registered in core or in one of installed extensions, or options with keys prefixed with <code>userjs-</code> (intended to be used by user scripts), can be set.",
        "apihelp-options-param-reset": "Resets preferences to the site defaults.",
        "apihelp-options-param-resetkinds": "List of types of options to reset when the <var>$1reset</var> option is set.",
        "apihelp-options-param-change": "List of changes, formatted name=value (e.g. skin=vector). Value cannot contain pipe characters. If no value is given (not even an equals sign), e.g., optionname|otheroption|..., the option will be reset to its default value.",
-       "apihelp-options-param-optionname": "A name of a option which should be set to the value given by <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "A value of the option specified by <var>$1optionname</var>, can contain pipe characters.",
+       "apihelp-options-param-optionname": "The name of the option that should be set to the value given by <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "The value for the option specified by <var>$1optionname</var>, can contain pipe characters.",
        "apihelp-options-example-reset": "Reset all preferences.",
        "apihelp-options-example-change": "Change <kbd>skin</kbd> and <kbd>hideminor</kbd> preferences.",
        "apihelp-options-example-complex": "Reset all preferences, then set <kbd>skin</kbd> and <kbd>nickname</kbd>.",
        "apihelp-query+allcategories-param-min": "Only return categories with at least this many members.",
        "apihelp-query+allcategories-param-max": "Only return categories with at most this many members.",
        "apihelp-query+allcategories-param-limit": "How many categories to return.",
-       "apihelp-query+allcategories-param-prop": "Which properties to get:\n;size:Adds number of pages in the category.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-param-prop": "Which properties to get:",
+       "apihelp-query+allcategories-paramvalue-prop-size": "Adds number of pages in the category.",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "Tags categories that are hidden with <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+allcategories-example-size": "List categories with information on the number of pages in each.",
        "apihelp-query+allcategories-example-generator": "Retrieve info about the category page itself for categories beginning <kbd>List</kbd>.",
 
        "apihelp-query+allfileusages-param-to": "The title of the file to stop enumerating at.",
        "apihelp-query+allfileusages-param-prefix": "Search for all file titles that begin with this value.",
        "apihelp-query+allfileusages-param-unique": "Only show distinct file titles. Cannot be used with $1prop=ids.\nWhen used as a generator, yields target pages instead of source pages.",
-       "apihelp-query+allfileusages-param-prop": "Which pieces of information to include:\n;ids:Adds the page IDs of the using pages (cannot be used with $1unique).\n;title:Adds the title of the file.",
+       "apihelp-query+allfileusages-param-prop": "Which pieces of information to include:",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "Adds the page IDs of the using pages (cannot be used with $1unique).",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "Adds the title of the file.",
        "apihelp-query+allfileusages-param-limit": "How many total items to return.",
        "apihelp-query+allfileusages-param-dir": "The direction in which to list.",
        "apihelp-query+allfileusages-example-B": "List file titles, including missing ones, with page IDs they are from, starting at <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "The title of the link to stop enumerating at.",
        "apihelp-query+alllinks-param-prefix": "Search for all linked titles that begin with this value.",
        "apihelp-query+alllinks-param-unique": "Only show distinct linked titles. Cannot be used with <kbd>$1prop=ids</kbd>.\nWhen used as a generator, yields target pages instead of source pages.",
-       "apihelp-query+alllinks-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID of the linking page (cannot be used with <var>$1unique</var>).\n;title:Adds the title of the link.",
+       "apihelp-query+alllinks-param-prop": "Which pieces of information to include:",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "Adds the page ID of the linking page (cannot be used with <var>$1unique</var>).",
+       "apihelp-query+alllinks-paramvalue-prop-title": "Adds the title of the link.",
        "apihelp-query+alllinks-param-namespace": "The namespace to enumerate.",
        "apihelp-query+alllinks-param-limit": "How many total items to return.",
        "apihelp-query+alllinks-param-dir": "The direction in which to list.",
        "apihelp-query+allredirects-param-to": "The title of the redirect to stop enumerating at.",
        "apihelp-query+allredirects-param-prefix": "Search for all target pages that begin with this value.",
        "apihelp-query+allredirects-param-unique": "Only show distinct target pages. Cannot be used with $1prop=ids|fragment|interwiki.\nWhen used as a generator, yields target pages instead of source pages.",
-       "apihelp-query+allredirects-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID of the redirecting page (cannot be used with <var>$1unique</var>).\n;title:Adds the title of the redirect.\n;fragment:Adds the fragment from the redirect, if any (cannot be used with <var>$1unique</var>).\n;interwiki:Adds the interwiki prefix from the redirect, if any (cannot be used with <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-prop": "Which pieces of information to include:",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "Adds the page ID of the redirecting page (cannot be used with <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-title": "Adds the title of the redirect.",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "Adds the fragment from the redirect, if any (cannot be used with <var>$1unique</var>).",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "Adds the interwiki prefix from the redirect, if any (cannot be used with <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "The namespace to enumerate.",
        "apihelp-query+allredirects-param-limit": "How many total items to return.",
        "apihelp-query+allredirects-param-dir": "The direction in which to list.",
        "apihelp-query+alltransclusions-param-to": "The title of the transclusion to stop enumerating at.",
        "apihelp-query+alltransclusions-param-prefix": "Search for all transcluded titles that begin with this value.",
        "apihelp-query+alltransclusions-param-unique": "Only show distinct transcluded titles. Cannot be used with $1prop=ids.\nWhen used as a generator, yields target pages instead of source pages.",
-       "apihelp-query+alltransclusions-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID of the transcluding page (cannot be used with $1unique).\n;title:Adds the title of the transclusion.",
+       "apihelp-query+alltransclusions-param-prop": "Which pieces of information to include:",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "Adds the page ID of the transcluding page (cannot be used with $1unique).",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "Adds the title of the transclusion.",
        "apihelp-query+alltransclusions-param-namespace": "The namespace to enumerate.",
        "apihelp-query+alltransclusions-param-limit": "How many total items to return.",
        "apihelp-query+alltransclusions-param-dir": "The direction in which to list.",
        "apihelp-query+allusers-param-group": "Only include users in the given groups.",
        "apihelp-query+allusers-param-excludegroup": "Exclude users in the given groups.",
        "apihelp-query+allusers-param-rights": "Only include users with the given rights. Does not include rights granted by implicit or auto-promoted groups like *, user, or autoconfirmed.",
-       "apihelp-query+allusers-param-prop": "Which pieces of information to include:\n;blockinfo:Adds the information about a current block on the user.\n;groups:Lists groups that the user is in. This uses more server resources and may return fewer results than the limit.\n;implicitgroups:Lists all the groups the user is automatically in.\n;rights:Lists rights that the user has.\n;editcount:Adds the edit count of the user.\n;registration:Adds the timestamp of when the user registered if available (may be blank).",
+       "apihelp-query+allusers-param-prop": "Which pieces of information to include:",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "Adds the information about a current block on the user.",
+       "apihelp-query+allusers-paramvalue-prop-groups": "Lists groups that the user is in. This uses more server resources and may return fewer results than the limit.",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "Lists all the groups the user is automatically in.",
+       "apihelp-query+allusers-paramvalue-prop-rights": "Lists rights that the user has.",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "Adds the edit count of the user.",
+       "apihelp-query+allusers-paramvalue-prop-registration": "Adds the timestamp of when the user registered if available (may be blank).",
        "apihelp-query+allusers-param-limit": "How many total user names to return.",
        "apihelp-query+allusers-param-witheditsonly": "Only list users who have made edits.",
        "apihelp-query+allusers-param-activeusers": "Only list users active in the last $1 {{PLURAL:$1|day|days}}.",
        "apihelp-query+backlinks-param-namespace": "The namespace to enumerate.",
        "apihelp-query+backlinks-param-dir": "The direction in which to list.",
        "apihelp-query+backlinks-param-filterredir": "How to filter for redirects. If set to <kbd>nonredirects</kbd> when <var>$1redirect</var> is enabled, this is only applied to the second level.",
-       "apihelp-query+backlinks-param-limit": "How many total pages to return. If <var>$1redirect</var> is enabled, limit applies to each level separately (which means up to 2 * <var>$1limit</var> results may be returned).",
+       "apihelp-query+backlinks-param-limit": "How many total pages to return. If <var>$1redirect</var> is enabled, the limit applies to each level separately (which means up to 2 * <var>$1limit</var> results may be returned).",
        "apihelp-query+backlinks-param-redirect": "If linking page is a redirect, find all pages that link to that redirect as well. Maximum limit is halved.",
        "apihelp-query+backlinks-example-simple": "Show links to <kbd>Main page<kbd>.",
        "apihelp-query+backlinks-example-generator": "Get information about pages linking to <kbd>Main page<kbd>.",
        "apihelp-query+blocks-param-users": "List of users to search for (optional).",
        "apihelp-query+blocks-param-ip": "Get all blocks applying to this IP or CIDR range, including range blocks.\nCannot be used together with <var>$3users</var>. CIDR ranges broader than IPv4/$1 or IPv6/$2 are not accepted.",
        "apihelp-query+blocks-param-limit": "The maximum number of blocks to list.",
-       "apihelp-query+blocks-param-prop": "Which properties to get:\n;id:Adds the ID of the block.\n;user:Adds the username of the blocked user.\n;userid:Adds the user ID of the blocked user.\n;by:Adds the username of the blocking user.\n;byid:Adds the user ID of the blocking user.\n;timestamp:Adds the timestamp of when the block was given.\n;expiry:Adds the timestamp of when the block expires.\n;reason:Adds the reason given for the block.\n;range:Adds the range of IP addresses affected by the block.\n;flags:Tags the ban with (autoblock, anononly, etc.).",
+       "apihelp-query+blocks-param-prop": "Which properties to get:",
+       "apihelp-query+blocks-paramvalue-prop-id": "Adds the ID of the block.",
+       "apihelp-query+blocks-paramvalue-prop-user": "Adds the username of the blocked user.",
+       "apihelp-query+blocks-paramvalue-prop-userid": "Adds the user ID of the blocked user.",
+       "apihelp-query+blocks-paramvalue-prop-by": "Adds the username of the blocking user.",
+       "apihelp-query+blocks-paramvalue-prop-byid": "Adds the user ID of the blocking user.",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "Adds the timestamp of when the block was given.",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "Adds the timestamp of when the block expires.",
+       "apihelp-query+blocks-paramvalue-prop-reason": "Adds the reason given for the block.",
+       "apihelp-query+blocks-paramvalue-prop-range": "Adds the range of IP addresses affected by the block.",
+       "apihelp-query+blocks-paramvalue-prop-flags": "Tags the ban with (autoblock, anononly, etc.).",
        "apihelp-query+blocks-param-show": "Show only items that meet these criteria.\nFor example, to see only indefinite blocks on IP addresses, set <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "List blocks.",
        "apihelp-query+blocks-example-users": "List blocks of users <kbd>Alice</kbd> and <kbd>Bob</kbd>.",
 
        "apihelp-query+categories-description": "List all categories the pages belong to.",
-       "apihelp-query+categories-param-prop": "Which additional properties to get for each category:\n;sortkey:Adds the sortkey (hexadecimal string) and sortkey prefix (human-readable part) for the category.\n;timestamp:Adds timestamp of when the category was added.\n;hidden:Tags categories that are hidden with _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-prop": "Which additional properties to get for each category:",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "Adds the sortkey (hexadecimal string) and sortkey prefix (human-readable part) for the category.",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "Adds timestamp of when the category was added.",
+       "apihelp-query+categories-paramvalue-prop-hidden": "Tags categories that are hidden with <code>_&#95;HIDDENCAT_&#95;</code>.",
        "apihelp-query+categories-param-show": "Which kind of categories to show.",
        "apihelp-query+categories-param-limit": "How many categories to return.",
        "apihelp-query+categories-param-categories": "Only list these categories. Useful for checking whether a certain page is in a certain category.",
        "apihelp-query+categorymembers-description": "List all pages in a given category.",
        "apihelp-query+categorymembers-param-title": "Which category to enumerate (required). Must include the <kbd>{{ns:category}}:</kbd> prefix. Cannot be used together with <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "Page ID of the category to enumerate. Cannot be used together with <var>$1title</var>.",
-       "apihelp-query+categorymembers-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID.\n;title:Adds the title and namespace ID of the page.\n;sortkey:Adds the sortkey used for sorting in the category (hexadecimal string).\n;sortkeyprefix:Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).\n;type:Adds the type that the page has been categorised as (page, subcat or file).\n;timestamp:Adds the timestamp of when the page was included.",
+       "apihelp-query+categorymembers-param-prop": "Which pieces of information to include:",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "Adds the page ID.",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "Adds the sortkey used for sorting in the category (hexadecimal string).",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "Adds the type that the page has been categorised as (page, subcat or file).",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "Adds the timestamp of when the page was included.",
        "apihelp-query+categorymembers-param-namespace": "Only include pages in these namespaces. Note that <kbd>$1type=subcat</kbd> or <kbd>$1type=file</kbd> may be used instead of <kbd>$1namespace=14</kbd> or <kbd>6</kbd>.",
        "apihelp-query+categorymembers-param-type": "Which type of category members to include. Ignored when <kbd>$1sort=timestamp</kbd> is set.",
        "apihelp-query+categorymembers-param-limit": "The maximum number of pages to return.",
        "apihelp-query+categorymembers-param-start": "Timestamp to start listing from. Can only be used with <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-end": "Timestamp to end listing at. Can only be used with <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-starthexsortkey": "Sortkey to start listing from, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
-       "apihelp-query+categorymembers-param-endhexsortkey": "Sortkey to end listing from, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Sortkey to end listing at, as returned by <kbd>$1prop=sortkey</kbd>. Can only be used with <kbd>$1sort=sortkey</kbd>.",
        "apihelp-query+categorymembers-param-startsortkeyprefix": "Sortkey prefix to start listing from. Can only be used with <kbd>$1sort=sortkey</kbd>. Overrides <var>$1starthexsortkey</var>.",
-       "apihelp-query+categorymembers-param-endsortkeyprefix": "Sortkey prefix to end listing BEFORE (not at, if this value occurs it will not be included!). Can only be used with $1sort=sortkey. Overrides $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Sortkey prefix to end listing <strong>before</strong> (not <strong>at</strong>; if this value occurs it will not be included!). Can only be used with $1sort=sortkey. Overrides $1endhexsortkey.",
        "apihelp-query+categorymembers-param-startsortkey": "Use $1starthexsortkey instead.",
        "apihelp-query+categorymembers-param-endsortkey": "Use $1endhexsortkey instead.",
        "apihelp-query+categorymembers-example-simple": "Get first 10 pages in <kbd>Category:Physics</kbd>.",
        "apihelp-query+deletedrevs-param-excludeuser": "Don't list revisions by this user.",
        "apihelp-query+deletedrevs-param-namespace": "Only list pages in this namespace.",
        "apihelp-query+deletedrevs-param-limit": "The maximum amount of revisions to list.",
-       "apihelp-query+deletedrevs-param-prop": "Which properties to get:\n;revid:Adds the revision ID of the deleted revision.\n;parentid:Adds the revision ID of the previous revision to the page.\n;user:Adds the user who made the revision.\n;userid:Adds the user ID whom made the revision.\n;comment:Adds the comment of the revision.\n;parsedcomment:Adds the parsed comment of the revision.\n;minor:Tags if the revision is minor.\n;len:Adds the length (bytes) of the revision.\n;sha1:Adds the SHA-1 (base 16) of the revision.\n;content:Adds the content of the revision.\n;token:<span class=\"apihelp-deprecated\">Deprecated.</span> Gives the edit token.\n;tags:Tags for the revision.",
+       "apihelp-query+deletedrevs-param-prop": "Which properties to get:\n;revid:Adds the revision ID of the deleted revision.\n;parentid:Adds the revision ID of the previous revision to the page.\n;user:Adds the user who made the revision.\n;userid:Adds the ID of the user who made the revision.\n;comment:Adds the comment of the revision.\n;parsedcomment:Adds the parsed comment of the revision.\n;minor:Tags if the revision is minor.\n;len:Adds the length (bytes) of the revision.\n;sha1:Adds the SHA-1 (base 16) of the revision.\n;content:Adds the content of the revision.\n;token:<span class=\"apihelp-deprecated\">Deprecated.</span> Gives the edit token.\n;tags:Tags for the revision.",
        "apihelp-query+deletedrevs-example-mode1": "List the last deleted revisions of the pages <kbd>Main Page</kbd> and <kbd>Talk:Main Page</kbd>, with content (mode 1).",
        "apihelp-query+deletedrevs-example-mode2": "List the last 50 deleted contributions by <kbd>Bob</kbd> (mode 2).",
        "apihelp-query+deletedrevs-example-mode3-main": "List the first 50 deleted revisions in the main namespace (mode 3).",
        "apihelp-query+extlinks-example-simple": "Get a list of external links on <kbd>Main Page<kbd>.",
 
        "apihelp-query+exturlusage-description": "Enumerate pages that contain a given URL.",
-       "apihelp-query+exturlusage-param-prop": "Which pieces of information to include:\n;ids:Adds the ID of page.\n;title:Adds the title and namespace ID of the page.\n;url:Adds the URL used in the page.",
-       "apihelp-query+exturlusage-param-protocol": "Protocol of the URL. If empty and <var>$1query</var> set, the protocol is <kbd>http</kbd>. Leave both this and <var>$1query</var> empty to list all external links.",
+       "apihelp-query+exturlusage-param-prop": "Which pieces of information to include:",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "Adds the ID of page.",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "Adds the URL used in the page.",
+       "apihelp-query+exturlusage-param-protocol": "Protocol of the URL. If empty and <var>$1query</var> is set, the protocol is <kbd>http</kbd>. Leave both this and <var>$1query</var> empty to list all external links.",
        "apihelp-query+exturlusage-param-query": "Search string without protocol. See [[Special:LinkSearch]]. Leave empty to list all external links.",
        "apihelp-query+exturlusage-param-namespace": "The page namespaces to enumerate.",
        "apihelp-query+exturlusage-param-limit": "How many pages to return.",
        "apihelp-query+filearchive-param-dir": "The direction in which to list.",
        "apihelp-query+filearchive-param-sha1": "SHA1 hash of image. Overrides $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "SHA1 hash of image in base 36 (used in MediaWiki).",
-       "apihelp-query+filearchive-param-prop": "Which image information to get:\n;sha1:Adds SHA-1 hash for the image.\n;timestamp:Adds timestamp for the uploaded version.\n;user:Adds user who uploaded the image version.\n;size:Adds the size of the image in bytes and the height, width and page count (if applicable).\n;dimensions:Alias for size.\n;description:Adds description the image version.\n;parseddescription:Parse the description on the version.\n;mime:Adds MIME of the image.\n;mediatype:Adds the media type of the image.\n;metadata:Lists Exif metadata for the version of the image.\n;bitdepth:Adds the bit depth of the version.\n;archivename:Adds the filename of the archive version for non-latest versions.",
+       "apihelp-query+filearchive-param-prop": "Which image information to get:",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "Adds SHA-1 hash for the image.",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "Adds timestamp for the uploaded version.",
+       "apihelp-query+filearchive-paramvalue-prop-user": "Adds user who uploaded the image version.",
+       "apihelp-query+filearchive-paramvalue-prop-size": "Adds the size of the image in bytes and the height, width and page count (if applicable).",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "Alias for size.",
+       "apihelp-query+filearchive-paramvalue-prop-description": "Adds description of the image version.",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "Parse the description of the version.",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "Adds MIME of the image.",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "Adds the media type of the image.",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "Lists Exif metadata for the version of the image.",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "Adds the bit depth of the version.",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "Adds the filename of the archive version for non-latest versions.",
        "apihelp-query+filearchive-example-simple": "Show a list of all deleted files.",
 
        "apihelp-query+filerepoinfo-description": "Return meta information about image repositories configured on the wiki.",
        "apihelp-query+filerepoinfo-example-simple": "Get information about file repositories.",
 
        "apihelp-query+fileusage-description": "Find all pages that use the given files.",
-       "apihelp-query+fileusage-param-prop": "Which properties to get:\n;pageid:Page ID of each page.\n;title:Title of each page.\n;redirect:Flag if the page is a redirect.",
+       "apihelp-query+fileusage-param-prop": "Which properties to get:",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "Page ID of each page.",
+       "apihelp-query+fileusage-paramvalue-prop-title": "Title of each page.",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "Flag if the page is a redirect.",
        "apihelp-query+fileusage-param-namespace": "Only include pages in these namespaces.",
        "apihelp-query+fileusage-param-limit": "How many to return.",
        "apihelp-query+fileusage-param-show": "Show only items that meet these criteria:\n;redirect:Only show redirects.\n;!redirect:Only show non-redirects.",
        "apihelp-query+info-paramvalue-prop-url": "Gives a full URL, an edit URL, and the canonical URL for each page.",
        "apihelp-query+info-paramvalue-prop-readable": "Whether the user can read this page.",
        "apihelp-query+info-paramvalue-prop-preload": "Gives the text returned by EditFormPreloadText.",
-       "apihelp-query+info-paramvalue-prop-displaytitle": "Gives the way the page title is actually displayed.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Gives the manner in which the page title is actually displayed.",
        "apihelp-query+info-param-testactions": "Test whether the current user can perform certain actions on the page.",
        "apihelp-query+info-param-token": "Use [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] instead.",
        "apihelp-query+info-example-simple": "Get information about the page <kbd>Main Page</kbd>.",
        "apihelp-query+iwbacklinks-param-prefix": "Prefix for the interwiki.",
        "apihelp-query+iwbacklinks-param-title": "Interwiki link to search for. Must be used with <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "How many total pages to return.",
-       "apihelp-query+iwbacklinks-param-prop": "Which properties to get:\n;iwprefix:Adds the prefix of the interwiki.\n;iwtitle:Adds the title of the interwiki.",
+       "apihelp-query+iwbacklinks-param-prop": "Which properties to get:",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "Adds the prefix of the interwiki.",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "Adds the title of the interwiki.",
        "apihelp-query+iwbacklinks-param-dir": "The direction in which to list.",
        "apihelp-query+iwbacklinks-example-simple": "Get pages linking to [[wikibooks:Test]].",
        "apihelp-query+iwbacklinks-example-generator": "Get information about pages linking to [[wikibooks:Test]].",
 
        "apihelp-query+iwlinks-description": "Returns all interwiki links from the given pages.",
        "apihelp-query+iwlinks-param-url": "Whether to get the full URL (cannot be used with $1prop).",
-       "apihelp-query+iwlinks-param-prop": "Which additional properties to get for each interlanguage link:\n;url:Adds the full URL.",
+       "apihelp-query+iwlinks-param-prop": "Which additional properties to get for each interlanguage link:",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "Adds the full URL.",
        "apihelp-query+iwlinks-param-limit": "How many interwiki links to return.",
        "apihelp-query+iwlinks-param-prefix": "Only return interwiki links with this prefix.",
        "apihelp-query+iwlinks-param-title": "Interwiki link to search for. Must be used with <var>$1prefix</var>.",
        "apihelp-query+langbacklinks-param-lang": "Language for the language link.",
        "apihelp-query+langbacklinks-param-title": "Language link to search for. Must be used with $1lang.",
        "apihelp-query+langbacklinks-param-limit": "How many total pages to return.",
-       "apihelp-query+langbacklinks-param-prop": "Which properties to get:\n;lllang:Adds the language code of the language link.\n;lltitle:Adds the title of the language link.",
+       "apihelp-query+langbacklinks-param-prop": "Which properties to get:",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "Adds the language code of the language link.",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "Adds the title of the language link.",
        "apihelp-query+langbacklinks-param-dir": "The direction in which to list.",
        "apihelp-query+langbacklinks-example-simple": "Get pages linking to [[:fr:Test]].",
        "apihelp-query+langbacklinks-example-generator": "Get information about pages linking to [[:fr:Test]].",
        "apihelp-query+langlinks-description": "Returns all interlanguage links from the given pages.",
        "apihelp-query+langlinks-param-limit": "How many langlinks to return.",
        "apihelp-query+langlinks-param-url": "Whether to get the full URL (cannot be used with <var>$1prop</var>).",
-       "apihelp-query+langlinks-param-prop": "Which additional properties to get for each interlanguage link:\n;url:Adds the full URL.\n;langname:Adds the localised language name (best effort). Use <var>$1inlanguagecode</var> to control the language.\n;autonym:Adds the native language name.",
+       "apihelp-query+langlinks-param-prop": "Which additional properties to get for each interlanguage link:",
+       "apihelp-query+langlinks-paramvalue-prop-url": "Adds the full URL.",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "Adds the localised language name (best effort). Use <var>$1inlanguagecode</var> to control the language.",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "Adds the native language name.",
        "apihelp-query+langlinks-param-lang": "Only return language links with this language code.",
        "apihelp-query+langlinks-param-title": "Link to search for. Must be used with <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "The direction in which to list.",
        "apihelp-query+links-example-namespaces": "Get links from the page <kbd>Main Page</kbd> in the {{ns:user}} and {{ns:template}} namespaces.",
 
        "apihelp-query+linkshere-description": "Find all pages that link to the given pages.",
-       "apihelp-query+linkshere-param-prop": "Which properties to get:\n;pageid:Page ID of each page.\n;title:Title of each page.\n;redirect:Flag if the page is a redirect.",
+       "apihelp-query+linkshere-param-prop": "Which properties to get:",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "Page ID of each page.",
+       "apihelp-query+linkshere-paramvalue-prop-title": "Title of each page.",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "Flag if the page is a redirect.",
        "apihelp-query+linkshere-param-namespace": "Only include pages in these namespaces.",
        "apihelp-query+linkshere-param-limit": "How many to return.",
        "apihelp-query+linkshere-param-show": "Show only items that meet these criteria:\n;redirect:Only show redirects.\n;!redirect:Only show non-redirects.",
        "apihelp-query+linkshere-example-generator": "Get information about pages linking to the [[Main Page]].",
 
        "apihelp-query+logevents-description": "Get events from logs.",
-       "apihelp-query+logevents-param-prop": "Which properties to get:\n;ids:Adds the ID of the log event.\n;title:Adds the title of the page for the log event.\n;type:Adds the type of log event.\n;user:Adds the user responsible for the log event.\n;userid:Adds the user ID who was responsible for the log event.\n;timestamp:Adds the timestamp for the event.\n;comment:Adds the comment of the event.\n;parsedcomment:Adds the parsed comment of the event.\n;details:Lists additional details about the event.\n;tags:Lists tags for the event.",
+       "apihelp-query+logevents-param-prop": "Which properties to get:",
+       "apihelp-query+logevents-paramvalue-prop-ids": "Adds the ID of the log event.",
+       "apihelp-query+logevents-paramvalue-prop-title": "Adds the title of the page for the log event.",
+       "apihelp-query+logevents-paramvalue-prop-type": "Adds the type of log event.",
+       "apihelp-query+logevents-paramvalue-prop-user": "Adds the user responsible for the log event.",
+       "apihelp-query+logevents-paramvalue-prop-userid": "Adds the user ID who was responsible for the log event.",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "Adds the timestamp for the log event.",
+       "apihelp-query+logevents-paramvalue-prop-comment": "Adds the comment of the log event.",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "Adds the parsed comment of the log event.",
+       "apihelp-query+logevents-paramvalue-prop-details": "Lists additional details about the log event.",
+       "apihelp-query+logevents-paramvalue-prop-tags": "Lists tags for the log event.",
        "apihelp-query+logevents-param-type": "Filter log entries to only this type.",
        "apihelp-query+logevents-param-action": "Filter log actions to only this action. Overrides <var>$1type</var>. Wildcard actions like <kbd>action/*</kbd> allows to specify any string for the asterisk.",
        "apihelp-query+logevents-param-start": "The timestamp to start enumerating from.",
 
        "apihelp-query+pageswithprop-description": "List all pages using a given page property.",
        "apihelp-query+pageswithprop-param-propname": "Page prop for which to enumerate pages.",
-       "apihelp-query+pageswithprop-param-prop": "Which pieces of information to include:\n;ids:Adds the page ID.\n;title:Adds the title and namespace ID of the page.\n;value:Adds the value of the page prop.",
+       "apihelp-query+pageswithprop-param-prop": "Which pieces of information to include:",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "Adds the page ID.",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "Adds the value of the page prop.",
        "apihelp-query+pageswithprop-param-limit": "The maximum number of pages to return.",
        "apihelp-query+pageswithprop-param-dir": "In which direction to sort.",
        "apihelp-query+pageswithprop-example-simple": "List the first 10 pages using <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+prefixsearch-param-limit": "Maximum number of results to return.",
        "apihelp-query+prefixsearch-param-offset": "Number of results to skip.",
        "apihelp-query+prefixsearch-example-simple": "Search for page titles beginning with <kbd>meaning</kbd>.",
+
        "apihelp-query+protectedtitles-description": "List all titles protected from creation.",
        "apihelp-query+protectedtitles-param-namespace": "Only list titles in these namespaces.",
        "apihelp-query+protectedtitles-param-level": "Only list titles with these protection levels.",
        "apihelp-query+protectedtitles-param-limit": "How many total pages to return.",
        "apihelp-query+protectedtitles-param-start": "Start listing at this protection timestamp.",
        "apihelp-query+protectedtitles-param-end": "Stop listing at this protection timestamp.",
-       "apihelp-query+protectedtitles-param-prop": "Which properties to get:\n;timestamp:Adds the timestamp of when protection was added.\n;user:Adds the user that added the protection.\n;userid:Adds the user ID that added the protection.\n;comment:Adds the comment for the protection.\n;parsedcomment:Adds the parsed comment for the protection.\n;expiry:Adds the timestamp of when the protection will be lifted.\n;level:Adds the protection level.",
+       "apihelp-query+protectedtitles-param-prop": "Which properties to get:",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "Adds the timestamp of when protection was added.",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "Adds the user that added the protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "Adds the user ID that added the protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "Adds the comment for the protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "Adds the parsed comment for the protection.",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "Adds the timestamp of when the protection will be lifted.",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "Adds the protection level.",
        "apihelp-query+protectedtitles-example-simple": "List protected titles.",
        "apihelp-query+protectedtitles-example-generator": "Find links to protected titles in the main namespace.",
 
        "apihelp-query+recentchanges-param-user": "Only list changes by this user.",
        "apihelp-query+recentchanges-param-excludeuser": "Don't list changes by this user.",
        "apihelp-query+recentchanges-param-tag": "Only list changes tagged with this tag.",
-       "apihelp-query+recentchanges-param-prop": "Include additional pieces of information:\n;user:Adds the user responsible for the edit and tags if they are an IP.\n;userid:Adds the user ID responsible for the edit.\n;comment:Adds the comment for the edit.\n;parsedcomment:Adds the parsed comment for the edit.\n;flags:Adds flags for the edit.\n;timestamp:Adds timestamp of the edit.\n;title:Adds the page title of the edit.\n;ids:Adds the page ID, recent changes ID and the new and old revision ID.\n;sizes:Adds the new and old page length in bytes.\n;redirect:Tags edit if page is a redirect.\n;patrolled:Tags patrollable edits as being patrolled or unpatrolled.\n;loginfo:Adds log information (log ID, log type, etc) to log entries.\n;tags:Lists tags for the entry.\n;sha1:Adds the content checksum for entries associated with a revision.",
+       "apihelp-query+recentchanges-param-prop": "Include additional pieces of information:",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "Adds the user responsible for the edit and tags if they are an IP.",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "Adds the user ID responsible for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "Adds the comment for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "Adds the parsed comment for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "Adds flags for the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "Adds timestamp of the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "Adds the page title of the edit.",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "Adds the page ID, recent changes ID and the new and old revision ID.",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "Adds the new and old page length in bytes.",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "Tags edit if page is a redirect.",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "Tags patrollable edits as being patrolled or unpatrolled.",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "Adds log information (log ID, log type, etc) to log entries.",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "Lists tags for the entry.",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "Adds the content checksum for entries associated with a revision.",
        "apihelp-query+recentchanges-param-token": "Use <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> instead.",
        "apihelp-query+recentchanges-param-show": "Show only items that meet these criteria. For example, to see only minor edits done by logged-in users, set $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "How many total changes to return.",
        "apihelp-query+recentchanges-example-generator": "Get page info about recent unpatrolled changes.",
 
        "apihelp-query+redirects-description": "Returns all redirects to the given pages.",
-       "apihelp-query+redirects-param-prop": "Which properties to get:\n;pageid:Page ID of each redirect.\n;title:Title of each redirect.\n;fragment:Fragment of each redirect, if any.",
+       "apihelp-query+redirects-param-prop": "Which properties to get:",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "Page ID of each redirect.",
+       "apihelp-query+redirects-paramvalue-prop-title": "Title of each redirect.",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "Fragment of each redirect, if any.",
        "apihelp-query+redirects-param-namespace": "Only include pages in these namespaces.",
        "apihelp-query+redirects-param-limit": "How many redirects to return.",
        "apihelp-query+redirects-param-show": "Show only items that meet these criteria:\n;fragment:Only show redirects with a fragment.\n;!fragment:Only show redirects without a fragment.",
        "apihelp-query+revisions-example-first5-after": "Get first 5 revisions of the <kbd>Main Page</kbd> made after 2006-05-01.",
        "apihelp-query+revisions-example-first5-not-localhost": "Get first 5 revisions of the <kbd>Main Page</kbd> that were not made by anonymous user <kbd>127.0.0.1</kbd>.",
        "apihelp-query+revisions-example-first5-user": "Get first 5 revisions of the <kbd>Main Page</kbd> that were made by the user <kbd>MediaWiki default</kbd>.",
+
        "apihelp-query+revisions+base-param-prop": "Which properties to get for each revision:",
        "apihelp-query+revisions+base-paramvalue-prop-ids": "The ID of the revision.",
        "apihelp-query+revisions+base-paramvalue-prop-flags": "Revision flags (minor).",
        "apihelp-query+revisions+base-param-parse": "Parse revision content (requires $1prop=content). For performance reasons, if this option is used, $1limit is enforced to 1.",
        "apihelp-query+revisions+base-param-section": "Only retrieve the content of this section number.",
        "apihelp-query+revisions+base-param-diffto": "Revision ID to diff each revision to. Use <kbd>prev</kbd>, <kbd>next</kbd> and <kbd>cur</kbd> for the previous, next and current revision respectively.",
-       "apihelp-query+revisions+base-param-difftotext": "Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text",
+       "apihelp-query+revisions+base-param-difftotext": "Text to diff each revision to. Only diffs a limited number of revisions. Overrides <var>$1diffto</var>. If <var>$1section</var> is set, only that section will be diffed against this text.",
        "apihelp-query+revisions+base-param-contentformat": "Serialization format used for <var>$1difftotext</var> and expected for output of content.",
 
        "apihelp-query+search-description": "Perform a full text search.",
        "apihelp-query+search-param-namespace": "Search only within these namespaces.",
        "apihelp-query+search-param-what": "Which type of search to perform.",
        "apihelp-query+search-param-info": "Which metadata to return.",
-       "apihelp-query+search-param-prop": "Which properties to return:\n;size:Adds the size of the page in bytes.\n;wordcount:Adds the word count of the page.\n;timestamp:Adds the timestamp of when the page was last edited.\n;snippet:Adds a parsed snippet of the page.\n;titlesnippet:Adds a parsed snippet of the page title.\n;redirectsnippet:Adds a parsed snippet of the redirect title.\n;redirecttitle:Adds the title of the matching redirect.\n;sectionsnippet:Adds a parsed snippet of the matching section title.\n;sectiontitle:Adds the title of the matching section.\n;categorysnippet:Adds a parsed snippet of the matching category.\n;isfilematch:Adds a boolean indicating if the search matched file content.\n;score:<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
+       "apihelp-query+search-param-prop": "Which properties to return:",
+       "apihelp-query+search-paramvalue-prop-size": "Adds the size of the page in bytes.",
+       "apihelp-query+search-paramvalue-prop-wordcount": "Adds the word count of the page.",
+       "apihelp-query+search-paramvalue-prop-timestamp": "Adds the timestamp of when the page was last edited.",
+       "apihelp-query+search-paramvalue-prop-snippet": "Adds a parsed snippet of the page.",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "Adds a parsed snippet of the page title.",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "Adds a parsed snippet of the redirect title.",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "Adds the title of the matching redirect.",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "Adds a parsed snippet of the matching section title.",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "Adds the title of the matching section.",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "Adds a parsed snippet of the matching category.",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "Adds a boolean indicating if the search matched file content.",
+       "apihelp-query+search-paramvalue-prop-score": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "<span class=\"apihelp-deprecated\">Deprecated and ignored.</span>",
        "apihelp-query+search-param-limit": "How many total pages to return.",
        "apihelp-query+search-param-interwiki": "Include interwiki results in the search, if available.",
        "apihelp-query+search-param-backend": "Which search backend to use, if not the default.",
        "apihelp-query+search-example-generator": "Get page info about the pages returned for a search for <kbd>meaning</kbd>.",
 
        "apihelp-query+siteinfo-description": "Return general information about the site.",
-       "apihelp-query+siteinfo-param-prop": "Which information to get:\n;general:Overall system information.\n;namespaces:List of registered namespaces and their canonical names.\n;namespacealiases:List of registered namespace aliases.\n;specialpagealiases:List of special page aliases.\n;magicwords:List of magic words and their aliases.\n;statistics:Returns site statistics.\n;interwikimap:Returns interwiki map (optionally filtered, optionally localised by using <var>$1inlanguagecode</var>).\n;dbrepllag:Returns database server with the highest replication lag.\n;usergroups:Returns user groups and the associated permissions.\n;libraries:Returns libraries installed on the wiki.\n;extensions:Returns extensions installed on the wiki.\n;fileextensions:Returns list of file extensions allowed to be uploaded.\n;rightsinfo:Returns wiki rights (license) information if available.\n;restrictions:Returns information on available restriction (protection) types.\n;languages:Returns a list of languages MediaWiki supports (optionally localised by using <var>$1inlanguagecode</var>).\n;skins:Returns a list of all enabled skins (optionally localised by using <var>$1inlanguagecode</var>, otherwise in the content language).\n;extensiontags:Returns a list of parser extension tags.\n;functionhooks:Returns a list of parser function hooks.\n;showhooks:Returns a list of all subscribed hooks (contents of <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:Returns a list of variable IDs.\n;protocols:Returns a list of protocols that are allowed in external links.\n;defaultoptions:Returns the default values for user preferences.",
+       "apihelp-query+siteinfo-param-prop": "Which information to get:",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "Overall system information.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "List of registered namespaces and their canonical names.",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "List of registered namespace aliases.",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "List of special page aliases.",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "List of magic words and their aliases.",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "Returns site statistics.",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "Returns interwiki map (optionally filtered, optionally localised by using <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "Returns database server with the highest replication lag.",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "Returns user groups and the associated permissions.",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "Returns libraries installed on the wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "Returns extensions installed on the wiki.",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "Returns list of file extensions allowed to be uploaded.",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "Returns wiki rights (license) information if available.",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "Returns information on available restriction (protection) types.",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "Returns a list of languages MediaWiki supports (optionally localised by using <var>$1inlanguagecode</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "Returns a list of all enabled skins (optionally localised by using <var>$1inlanguagecode</var>, otherwise in the content language).",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "Returns a list of parser extension tags.",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "Returns a list of parser function hooks.",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "Returns a list of all subscribed hooks (contents of <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "Returns a list of variable IDs.",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "Returns a list of protocols that are allowed in external links.",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "Returns the default values for user preferences.",
        "apihelp-query+siteinfo-param-filteriw": "Return only local or only nonlocal entries of the interwiki map.",
        "apihelp-query+siteinfo-param-showalldb": "List all database servers, not just the one lagging the most.",
        "apihelp-query+siteinfo-param-numberingroup": "Lists the number of users in user groups.",
 
        "apihelp-query+tags-description": "List change tags.",
        "apihelp-query+tags-param-limit": "The maximum number of tags to list.",
-       "apihelp-query+tags-param-prop": "Which properties to get:\n;name:Adds name of tag.\n;displayname:Adds system message for the tag.\n;description:Adds description of the tag.\n;hitcount:Adds the number of revisions and log entries that have this tag.\n;defined:Indicate whether the tag is defined.\n;source:Gets the sources of the tag, which may include <samp>extension</samp> for extension-defined tags and <samp>manual</samp> for tags that may be applied manually by users.\n;active:Whether the tag is still being applied.",
+       "apihelp-query+tags-param-prop": "Which properties to get:",
+       "apihelp-query+tags-paramvalue-prop-name": "Adds name of tag.",
+       "apihelp-query+tags-paramvalue-prop-displayname": "Adds system message for the tag.",
+       "apihelp-query+tags-paramvalue-prop-description": "Adds description of the tag.",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "Adds the number of revisions and log entries that have this tag.",
+       "apihelp-query+tags-paramvalue-prop-defined": "Indicate whether the tag is defined.",
+       "apihelp-query+tags-paramvalue-prop-source": "Gets the sources of the tag, which may include <samp>extension</samp> for extension-defined tags and <samp>manual</samp> for tags that may be applied manually by users.",
+       "apihelp-query+tags-paramvalue-prop-active": "Whether the tag is still being applied.",
        "apihelp-query+tags-example-simple": "List available tags.",
 
        "apihelp-query+templates-description": "Returns all pages transcluded on the given pages.",
        "apihelp-query+tokens-example-types": "Retrieve a watch token and a patrol token.",
 
        "apihelp-query+transcludedin-description": "Find all pages that transclude the given pages.",
-       "apihelp-query+transcludedin-param-prop": "Which properties to get:\n;pageid:Page ID of each page.\n;title:Title of each page.\n;redirect:Flag if the page is a redirect.",
+       "apihelp-query+transcludedin-param-prop": "Which properties to get:",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "Page ID of each page.",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "Title of each page.",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "Flag if the page is a redirect.",
        "apihelp-query+transcludedin-param-namespace": "Only include pages in these namespaces.",
        "apihelp-query+transcludedin-param-limit": "How many to return.",
        "apihelp-query+transcludedin-param-show": "Show only items that meet these criteria:\n;redirect:Only show redirects.\n;!redirect:Only show non-redirects.",
        "apihelp-query+usercontribs-param-user": "The users to retrieve contributions for.",
        "apihelp-query+usercontribs-param-userprefix": "Retrieve contributions for all users whose names begin with this value. Overrides $1user.",
        "apihelp-query+usercontribs-param-namespace": "Only list contributions in these namespaces.",
-       "apihelp-query+usercontribs-param-prop": "Include additional pieces of information:\n;ids:Adds the page ID and revision ID.\n;title:Adds the title and namespace ID of the page.\n;timestamp:Adds the timestamp of the edit.\n;comment:Adds the comment of the edit.\n;parsedcomment:Adds the parsed comment of the edit.\n;size:Adds the new size of the edit.\n;sizediff:Adds the size delta of the edit against its parent.\n;flags:Adds flags of the edit.\n;patrolled:Tags patrolled edits.\n;tags:Lists tags for the edit.",
+       "apihelp-query+usercontribs-param-prop": "Include additional pieces of information:",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "Adds the page ID and revision ID.",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "Adds the title and namespace ID of the page.",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "Adds the timestamp of the edit.",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "Adds the comment of the edit.",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "Adds the parsed comment of the edit.",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "Adds the new size of the edit.",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "Adds the size delta of the edit against its parent.",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "Adds flags of the edit.",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "Tags patrolled edits.",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "Lists tags for the edit.",
        "apihelp-query+usercontribs-param-show": "Show only items that meet these criteria, e.g. non minor edits only: <kbd>$2show=!minor</kbd>.\n\nIf <kbd>$2show=patrolled</kbd> or <kbd>$2show=!patrolled</kbd> is set, revisions older than <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|second|seconds}}) won't be shown.",
        "apihelp-query+usercontribs-param-tag": "Only list revisions tagged with this tag.",
        "apihelp-query+usercontribs-param-toponly": "Only list changes which are the latest revision.",
        "apihelp-query+usercontribs-example-ipprefix": "Show contributions from all IP addresses with prefix <kbd>192.0.2.</kbd>.",
 
        "apihelp-query+userinfo-description": "Get information about the current user.",
-       "apihelp-query+userinfo-param-prop": "Which pieces of information to include:\n;blockinfo:Tags if the current user is blocked, by whom, and for what reason.\n;hasmsg:Adds a tag <samp>messages</samp> if the current user has pending messages.\n;groups:Lists all the groups the current user belongs to.\n;implicitgroups:Lists all the groups the current user is automatically a member of.\n;rights:Lists all the rights the current user has.\n;changeablegroups:Lists the groups the current user can add to and remove from.\n;options:Lists all preferences the current user has set.\n;preferencestoken:<span class=\"apihelp-deprecated\">Deprecated.</span> Get a token to change current user's preferences.\n;editcount:Adds the current user's edit count.\n;ratelimits:Lists all rate limits applying to the current user.\n;realname:Adds the user's real name.\n;email:Adds the user's email address and email authentication date.\n;acceptlang:Echoes the <code>Accept-Language</code> header sent by the client in a structured format.\n;registrationdate:Adds the user's registration date.\n;unreadcount:Adds the count of unread pages on the user's watchlist (maximum $1; returns <samp>$2</samp> if more).",
+       "apihelp-query+userinfo-param-prop": "Which pieces of information to include:",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "Tags if the current user is blocked, by whom, and for what reason.",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "Adds a tag <samp>messages</samp> if the current user has pending messages.",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "Lists all the groups the current user belongs to.",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "Lists all the groups the current user is automatically a member of.",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "Lists all the rights the current user has.",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "Lists the groups the current user can add to and remove from.",
+       "apihelp-query+userinfo-paramvalue-prop-options": "Lists all preferences the current user has set.",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "<span class=\"apihelp-deprecated\">Deprecated.</span> Get a token to change current user's preferences.",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "Adds the current user's edit count.",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "Lists all rate limits applying to the current user.",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "Adds the user's real name.",
+       "apihelp-query+userinfo-paramvalue-prop-email": "Adds the user's email address and email authentication date.",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "Echoes the <code>Accept-Language</code> header sent by the client in a structured format.",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "Adds the user's registration date.",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "Adds the count of unread pages on the user's watchlist (maximum $1; returns <samp>$2</samp> if more).",
        "apihelp-query+userinfo-example-simple": "Get information about the current user.",
        "apihelp-query+userinfo-example-data": "Get additional information about the current user.",
 
        "apihelp-query+users-description": "Get information about a list of users.",
-       "apihelp-query+users-param-prop": "Which pieces of information to include:\n;blockinfo:Tags if the user is blocked, by whom, and for what reason.\n;groups:Lists all the groups each user belongs to.\n;implicitgroups:Lists all the groups a user is automatically a member of.\n;rights:Lists all the rights each user has.\n;editcount:Adds the user's edit count.\n;registration:Adds the user's registration timestamp.\n;emailable:Tags if the user can and wants to receive email through [[Special:Emailuser]].\n;gender:Tags the gender of the user. Returns \"male\", \"female\", or \"unknown\".",
+       "apihelp-query+users-param-prop": "Which pieces of information to include:",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "Tags if the user is blocked, by whom, and for what reason.",
+       "apihelp-query+users-paramvalue-prop-groups": "Lists all the groups each user belongs to.",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "Lists all the groups a user is automatically a member of.",
+       "apihelp-query+users-paramvalue-prop-rights": "Lists all the rights each user has.",
+       "apihelp-query+users-paramvalue-prop-editcount": "Adds the user's edit count.",
+       "apihelp-query+users-paramvalue-prop-registration": "Adds the user's registration timestamp.",
+       "apihelp-query+users-paramvalue-prop-emailable": "Tags if the user can and wants to receive email through [[Special:Emailuser]].",
+       "apihelp-query+users-paramvalue-prop-gender": "Tags the gender of the user. Returns \"male\", \"female\", or \"unknown\".",
        "apihelp-query+users-param-users": "A list of users to obtain information for.",
        "apihelp-query+users-param-token": "Use <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> instead.",
        "apihelp-query+users-example-simple": "Return information for user <kbd>Example</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Adds the old and new lengths of the page.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Adds timestamp of when the user was last notified about the edit.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Adds log information where appropriate.",
-
        "apihelp-query+watchlist-param-show": "Show only items that meet these criteria. For example, to see only minor edits done by logged-in users, set $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "Which types of changes to show:\n;edit:Regular page edits.\n;external:External changes.\n;new:Page creations.\n;log:Log entries.",
+       "apihelp-query+watchlist-param-type": "Which types of changes to show:\n;edit:Regular page edits.\n;external:External changes.\n;new:Page creations.\n;log:Log entries.\n;categorize:Category membership changes.",
        "apihelp-query+watchlist-param-owner": "Used along with $1token to access a different user's watchlist.",
        "apihelp-query+watchlist-param-token": "A security token (available in the user's [[Special:Preferences#mw-prefsection-watchlist|preferences]]) to allow access to another user's watchlist.",
        "apihelp-query+watchlist-example-simple": "List the top revision for recently changed pages on the current user's watchlist.",
        "apihelp-query+watchlistraw-description": "Get all pages on the current user's watchlist.",
        "apihelp-query+watchlistraw-param-namespace": "Only list pages in the given namespaces.",
        "apihelp-query+watchlistraw-param-limit": "How many total results to return per request.",
-       "apihelp-query+watchlistraw-param-prop": "Which additional properties to get:\n;changed:Adds timestamp of when the user was last notified about the edit.",
+       "apihelp-query+watchlistraw-param-prop": "Which additional properties to get:",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "Adds timestamp of when the user was last notified about the edit.",
        "apihelp-query+watchlistraw-param-show": "Only list items that meet these criteria.",
        "apihelp-query+watchlistraw-param-owner": "Used along with $1token to access a different user's watchlist.",
        "apihelp-query+watchlistraw-param-token": "A security token (available in the user's [[Special:Preferences#mw-prefsection-watchlist|preferences]]) to allow access to another user's watchlist.",
        "apihelp-rsd-description": "Export an RSD (Really Simple Discovery) schema.",
        "apihelp-rsd-example-simple": "Export the RSD schema.",
 
-       "apihelp-setnotificationtimestamp-description": "Update the notification timestamp for watched pages.\n\nThis affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"Email me when a page on my watchlist is changed\" preference is enabled.",
+       "apihelp-setnotificationtimestamp-description": "Update the notification timestamp for watched pages.\n\nThis affects the highlighting of changed pages in the watchlist and history, and the sending of email when the \"{{int:tog-enotifwatchlistpages}}\" preference is enabled.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Work on all watched pages.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Timestamp to which to set the notification timestamp.",
        "apihelp-setnotificationtimestamp-param-torevid": "Revision to set the notification timestamp to (one page only).",
        "apihelp-tag-param-add": "Tags to add. Only manually defined tags can be added.",
        "apihelp-tag-param-remove": "Tags to remove. Only tags that are either manually defined or completely undefined can be removed.",
        "apihelp-tag-param-reason": "Reason for the change.",
-       "apihelp-tag-example-rev": "Add the <kbd>vandalism</kbd> tag from revision ID 123 without specifying a reason",
+       "apihelp-tag-example-rev": "Add the <kbd>vandalism</kbd> tag to revision ID 123 without specifying a reason",
        "apihelp-tag-example-log": "Remove the <kbd>spam</kbd> tag from log entry ID 123 with the reason <kbd>Wrongly applied</kbd>",
 
        "apihelp-tokens-description": "Get tokens for data-modifying actions.\n\nThis module is deprecated in favor of [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
index 885bc77..94a5af2 100644 (file)
        "apihelp-feedrecentchanges-param-hideliu": "Ocultar los cambios realizados por usuarios registrados.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Ocultar los cambios patrullados.",
        "apihelp-feedrecentchanges-param-hidemyself": "Ocultar los cambios realizados por el usuario actual.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Ocultar los cambios de pertenencia a categorías.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrar por etiquetas.",
        "apihelp-feedrecentchanges-param-target": "Mostrar solo los cambios en las páginas enlazadas en esta.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Mostrar los cambios en páginas enlazadas con la página seleccionada.",
        "apihelp-login-example-gettoken": "Recuperar clave de inicio de sesión.",
        "apihelp-login-example-login": "Acceder",
        "apihelp-logout-description": "Salir y vaciar los datos de la sesión.",
-       "apihelp-logout-example-logout": "Cerrar la sesión del usuario actual",
+       "apihelp-logout-example-logout": "Cerrar la sesión del usuario actual.",
        "apihelp-managetags-description": "Realizar tareas de administración relacionadas con el cambio de etiquetas.",
        "apihelp-managetags-param-operation": "Qué operación realizar:\n;create: Crear una nueva etiqueta de cambio de uso manual.\n;delete: Eliminar una etiqueta de cambio de la base de datos, eliminando la etiqueta de todas las revisiones, cambios en entradas recientes y registros en los que se ha utilizado.\n;activate: Activar una etiqueta de cambio, permitiendo a los usuarios aplicarla manualmente.\n;deactivate: Desactivar una etiqueta de cambio, evitando que los usuarios la apliquen manualmente.",
        "apihelp-managetags-param-tag": "Etiqueta para crear, eliminar, activar o desactivar. Para crear una etiqueta, esta debe no existir. Para eliminarla, debe existir. Para activarla, debe existir y no estar en uso por ninguna extensión. Para desactivarla, debe estar activada y definida manualmente.",
        "apihelp-opensearch-param-format": "El formato de salida.",
        "apihelp-opensearch-param-warningsaserror": "Si las advertencias están planteadas con <kbd>format=json</kbd>, devolver un error de API en lugar de hacer caso omiso de ellas.",
        "apihelp-opensearch-example-te": "Buscar páginas que empiecen por <kbd>Te</kbd>.",
-       "apihelp-options-description": "Cambiar preferencias del usuario actual.\n\nSolo se pueden establecer opciones que estén registradas en el núcleo o en una de las extensiones instaladas u opciones con claves predefinidas con \"usersjs-\" (diseñadas para utilizarse con scripts de usuario).",
+       "apihelp-options-description": "Cambiar preferencias del usuario actual.\n\nSolo se pueden establecer opciones que estén registradas en el núcleo o en una de las extensiones instaladas u opciones con claves predefinidas con <code>userjs-</code> (diseñadas para utilizarse con scripts de usuario).",
        "apihelp-options-param-reset": "Restablece las preferencias de la página web a sus valores predeterminados.",
        "apihelp-options-param-resetkinds": "Lista de tipos de opciones a restablecer cuando la opción <var>$1reset</var> esté establecida.",
        "apihelp-options-param-change": "Lista de cambios con el formato name=value (por ejemplo: skin=vector). El valor no puede contener caracteres de barras verticales. Si no se da ningún valor (ni siquiera un signo de igual), por ejemplo: optionname|otheroption|..., la opción se restablecerá a sus valores predeterminados.",
-       "apihelp-options-param-optionname": "Un nombre de una opción que debe establecerse en el valor dado por <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "Un valor de la opción especificada por <var>$1optionname</var>, puede contener barras verticales.",
+       "apihelp-options-param-optionname": "El nombre de la opción que debe establecerse en el valor dado por <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "El valor de la opción especificada por <var>$1optionname</var>, puede contener barras verticales.",
        "apihelp-options-example-reset": "Restablecer todas las preferencias",
        "apihelp-options-example-change": "Cambiar las preferencias <kbd>skin</kbd> y <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Restablecer todas las preferencias y establecer <kbd>skin</kbd> y <kbd>nickname</kbd>.",
        "apihelp-query+allusers-param-activeusers": "Solo listar usuarios activos en {{PLURAL:$1|el último día|los $1 últimos días}}.",
        "apihelp-query+allusers-example-Y": "Listar usuarios que empiecen por <kbd>Y</kbd>.",
        "apihelp-query+backlinks-param-pageid": "Identificador de página que buscar. No puede usarse junto con <var>$1title</var>",
+       "apihelp-query+backlinks-param-limit": "Cuántas páginas en total se devolverán. Si está activo <var>$1redirect</var>, el límite aplica a cada nivel por separado (lo que significa que se pueden devolver hasta 2 * <var>$1limit</var> resultados).",
        "apihelp-query+backlinks-example-simple": "Mostrar enlaces a la <kbd>Portada<kbd>.",
        "apihelp-query+blocks-description": "Listar todos los usuarios y direcciones IP bloqueadas.",
        "apihelp-query+blocks-param-users": "Lista de usuarios a buscar (opcional).",
        "apihelp-query+embeddedin-param-filterredir": "Cómo filtrar las redirecciones.",
        "apihelp-query+embeddedin-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+extlinks-param-limit": "Cuántos enlaces se devolverán.",
+       "apihelp-query+exturlusage-param-protocol": "Protocolo del URL. Si está vacío y se establece <var>$1query</var>, el protocolo es <kbd>http</kbd>. Deja vacío esto y <var>$1query</var> para listar todos los enlaces externos.",
        "apihelp-query+exturlusage-param-limit": "Cuántas páginas se devolverán.",
        "apihelp-query+exturlusage-example-simple": "Mostrar páginas que enlacen con <kbd>http://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-param-from": "El título de imagen para comenzar la enumeración",
        "apihelp-query+info-paramvalue-prop-protection": "Listar el nivel de protección de cada página.",
        "apihelp-query+info-paramvalue-prop-subjectid": "La ID de página de la página principal de cada página de discusión.",
        "apihelp-query+info-paramvalue-prop-readable": "Si el usuario puede leer esta página.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Proporciona la manera en que se muestra realmente el título de la página",
        "apihelp-query+info-param-token": "Usa [[Special:ApiHelp/query+tokens|action=query&meta=tokens]] en su lugar.",
        "apihelp-query+info-example-simple": "Obtener información acerca de la página <kbd>Main Page</kbd>.",
        "apihelp-query+info-example-protection": "Obtén información general y protección acerca de la página <kb>Página principal</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "Añade la longitud vieja y la nueva de la página.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Añade fecha y hora de cuando el usuario fue notificado por última vez acerca de la edición.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Añade información del registro cuando corresponda.",
+       "apihelp-query+watchlist-param-type": "Qué tipos de cambios mostrar:\n;edit:ediciones comunes a páginas.\n;external:cambios externos.\n;new:creaciones de páginas.\n;log:entradas de registros.\n;categorize:cambios de pertenencia a categorías.",
        "apihelp-query+watchlistraw-param-show": "Sólo listar los elementos que cumplen estos criterios.",
        "apihelp-query+watchlistraw-param-fromtitle": "Título (con el prefijo de espacio de nombres) desde el que se empezará a enumerar.",
        "apihelp-query+watchlistraw-param-totitle": "Título (con el prefijo de espacio de nombres) desde el que se dejará de enumerar.",
        "apihelp-rollback-param-summary": "Resumen de edición personalizado. Si se deja vacío se utilizará el predeterminado.",
        "apihelp-tag-param-logid": "Uno o más identificadores de entradas del registro a los que agregar o eliminar la etiqueta.",
        "apihelp-tag-param-reason": "Motivo del cambio.",
+       "apihelp-tag-example-rev": "Añadir la etiqueta <kbd>vandalism</kbd> al identificador de revisión 123 sin especificar un motivo",
        "apihelp-tag-example-log": "Eliminar la etiqueta <kbd>spam</kbd> de la entrada del registro con identificador 123 con el motivo <kbd>aplicada incorrectamente</kbd>",
        "apihelp-unblock-description": "Desbloquear un usuario.",
        "apihelp-unblock-param-reason": "Motivo del desbloqueo.",
index 2bb9890..b6a64dd 100644 (file)
@@ -6,13 +6,16 @@
                ]
        },
        "apihelp-block-description": "Blokeatu erabiltzaile bat.",
+       "apihelp-block-param-reason": "Blokeatzeko arrazoia.",
        "apihelp-createaccount-description": "Erabiltzaile kontu berria sortu.",
+       "apihelp-createaccount-param-name": "Erabiltzaile izena.",
        "apihelp-createaccount-param-email": "Erabiltzailearen helbide elektronikoa (aukerakoa).",
        "apihelp-createaccount-param-realname": "Erabiltzailearen benetako izena (aukerakoa).",
        "apihelp-delete-description": "Orrialde bat ezabatu.",
        "apihelp-edit-description": "Orrialdeak sortu eta aldatu.",
        "apihelp-edit-param-minor": "Aldaketa txikia.",
        "apihelp-edit-example-edit": "Orrialde bat aldatu",
+       "apihelp-emailuser-description": "Erabiltzaileari e-maila bidali",
        "apihelp-expandtemplates-param-title": "Orrialdearen izenburua.",
        "apihelp-feedcontributions-param-year": "Urtetik aurrera (eta lehenagotik)",
        "apihelp-feedcontributions-param-month": "Hilabetetik aurrera (eta lehenagotik)",
        "apihelp-feedrecentchanges-param-tagfilter": "Iragazi etiketen arabera.",
        "apihelp-feedrecentchanges-example-simple": "Erakutsi aldaketa berriak",
        "apihelp-feedrecentchanges-example-30days": "Erakutsi aldaketa berriak 30 egunez",
+       "apihelp-filerevert-param-comment": "Iruzkina igo.",
        "apihelp-imagerotate-description": "Irudi bat edo gehiago biratu.",
+       "apihelp-login-param-name": "Erabiltzaile izena.",
        "apihelp-login-param-password": "Pasahitza.",
        "apihelp-login-param-domain": "Domeinua (hautazkoa).",
        "apihelp-login-example-login": "Saioa hasi",
        "apihelp-move-description": "Orrialde bat mugitu",
+       "apihelp-move-param-reason": "Berrizenpenaren arrazoia.",
        "apihelp-options-example-reset": "Berrezarri hobespen guztiak.",
        "apihelp-protect-example-protect": "Orrialde bat babestu",
        "apihelp-query+allusers-param-witheditsonly": "Bakarrik zerrendatu aldaketak egin dituzten erabiltzaileak.",
index b1a7e8c..829be6d 100644 (file)
@@ -2,9 +2,12 @@
        "@metadata": {
                "authors": [
                        "Nike",
-                       "MrTapsa"
+                       "MrTapsa",
+                       "Pitke"
                ]
        },
+       "apihelp-emailuser-example-email": "Lähetä käyttäjälle <kbd>WikiSysop</kbd> sähköposti, jossa lukee <kbd>Content</kbd>.",
        "apihelp-query+linkshere-param-show": "Näytä vain kohteet, jotka täyttävät nämä kriteerit:\n;redirect:Näytä vain uudelleenohjaukset.\n;!redirect:Näytä vain ei-uudelleenohjaukset",
+       "apihelp-tag-example-rev": "Lisää tunniste <kbd>vandalism</kbd> versioon 123 antamatta perustelua.",
        "apihelp-upload-param-stash": "Mikäli valittu, palvelin säilöö tiedoston väliaikaisesti tallentamisen sijaan."
 }
index 8bbecfa..522aa3f 100644 (file)
@@ -17,7 +17,9 @@
                        "Lucky",
                        "Freak2fast4u",
                        "Urhixidur",
-                       "Wladek92"
+                       "Wladek92",
+                       "Ash Crow",
+                       "L"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentation]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Liste de diffusion]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Annonces de l’API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Bogues et demandes]\n</div>\n<strong>État :</strong> Toutes les fonctionnalités affichées sur cette page devraient fonctionner, mais l’API est encore en cours de développement et peut changer à tout moment. Inscrivez-vous à [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ la liste de diffusion mediawiki-api-announce] pour être informé des mises à jour.\n\n<strong>Requêtes erronées :</strong> Si des requêtes erronées sont envoyées à l’API, un en-tête HTTP sera renvoyé avec la clé « MediaWiki-API-Error ». La valeur de cet en-tête et le code d’erreur renvoyé prendront la même valeur. Pour plus d’information, voyez [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-feedrecentchanges-param-hideliu": "Masquer les modifications faites par des utilisateurs enregistrés.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Masquer les modifications contrôlées.",
        "apihelp-feedrecentchanges-param-hidemyself": "Masquer les modifications faites par l'utilisateur actuel.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Masquer les changements de la catégorie d'appartenance.",
        "apihelp-feedrecentchanges-param-tagfilter": "Filtrer par balise.",
        "apihelp-feedrecentchanges-param-target": "Afficher uniquement les modifications sur les pages liées depuis cette page.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Afficher les modifications plutôt sur les pages liées vers la page sélectionnée.",
        "apihelp-opensearch-param-format": "Le format de sortie.",
        "apihelp-opensearch-param-warningsaserror": "Si des avertissements sont levés avec <kbd>format=json</kbd>, renvoyer une erreur d’API au lieu de les ignorer.",
        "apihelp-opensearch-example-te": "Trouver les pages commençant par <kbd>Te</kbd>.",
-       "apihelp-options-description": "Modifier les préférences de l’utilisateur courant.\n\nSeules les options enregistrées dans le cœur ou dans l’une des extensions installées, ou les options avec une clé préfixée par « userjs- » (devant être utilisées dans les scripts utilisateur), peuvent être définies.",
+       "apihelp-options-description": "Modifier les préférences de l’utilisateur courant.\n\nSeules les options enregistrées dans le cœur ou dans l’une des extensions installées, ou les options avec des clés préfixées par <code>userjs-</code> (devant être utilisées dans les scripts utilisateur), peuvent être définies.",
        "apihelp-options-param-reset": "Réinitialise les préférences aux valeurs par défaut du site.",
        "apihelp-options-param-resetkinds": "Liste des types d’option à réinitialiser quand l’option <var>$1reset</var> est définie.",
        "apihelp-options-param-change": "Liste des modifications, au format nom=valeur (par ex. skin=vector). La valeur ne peut pas contenir de caractère barre verticale. Si aucune valeur n’est fournie (pas même un signe égal), par ex., nomoption|autreoption|…, l’option sera réinitialisée à sa valeur par défaut.",
        "apihelp-query+categorymembers-param-starthexsortkey": "Clé de tri à laquelle démarrer le listage, telle que renvoyée par <kbd>$1prop=sortkey</kbd>. Utilisable uniquement avec <kbd>$1sort=sortkey</kbd>.",
        "apihelp-query+categorymembers-param-endhexsortkey": "Clé de tri à laquelle arrêter le listage, telle que renvoyée par <kbd>$1prop=sortkey</kbd>. Utilisable uniquement avec <kbd>$1sort=sortkey</kbd>.",
        "apihelp-query+categorymembers-param-startsortkeyprefix": "Préfixe de la clé de tri à laquelle démarrer le listage. Utilisable uniquement avec <kbd>$1sort=sortkey</kbd>. Écrase <var>$1starthexsortkey</var>.",
-       "apihelp-query+categorymembers-param-endsortkeyprefix": "Préfixe de la clé de tri AVANT laquelle se termine le listage (et non pas à, si cette valeur existe elle ne sera pas incluse !). Utilisable uniquement avec $1sort=sortkey. Écrase $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Préfixe de la clé de tri <strong>avant</strong> laquelle se termine le listage (et non pas <strong>à</strong> ;  si cette valeur existe elle ne sera pas incluse !). Utilisable uniquement avec $1sort=sortkey. Écrase $1endhexsortkey.",
        "apihelp-query+categorymembers-param-startsortkey": "Utiliser plutôt $1starthexsortkey.",
        "apihelp-query+categorymembers-param-endsortkey": "Utiliser plutôt $1endhexsortkey.",
        "apihelp-query+categorymembers-example-simple": "Obtenir les 10 premières pages de <kbd>Category:Physics</kbd>.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Ajoute l’horodatage de la dernière notification de la modification à l’utilisateur.",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "Ajoute l’information de trace le cas échéant.",
        "apihelp-query+watchlist-param-show": "Afficher uniquement les éléments qui correspondent à ces critères. Par exemple, pour voir uniquement les modifications mineures faites par des utilisateurs connectés, mettre $1show=minor|!anon.",
-       "apihelp-query+watchlist-param-type": "Quels types de modification afficher :\n;edit:Modifications de page normale.\n;external:Modifications externes.\n;new:Créations de page.\n;log:Entrées du journal.",
+       "apihelp-query+watchlist-param-type": "Quels types de modification afficher :\n;edit:Modifications ordinaires de page.\n;external:Modifications externes.\n;new:Créations de page.\n;log:Entrées du journal.\n;categorize:changements dans la catégorie d'appartenance.",
        "apihelp-query+watchlist-param-owner": "Utilisé avec $1token pour accéder à la liste de suivi d’un autre utilisateur.",
        "apihelp-query+watchlist-param-token": "Un jeton de sécurité (disponible dans les [[Special:Preferences#mw-prefsection-watchlist|préférences]] de l’utilsiateur) pour autoriser l’accès à la liste de suivi d&un autre utilisateur.",
        "apihelp-query+watchlist-example-simple": "Lister la révision de tête des pages récemment modifiées dans la liste de suivi de l’utilisateur actuel",
        "apihelp-rollback-example-summary": "Annuler les dernières modifications de la page <kbd>Main Page</kbd> par l’utilisateur à l’adresse IP <kbd>192.0.2.5</kbd> avec le résumé <kbd>Annulation de vandalisme<kbd>, et marquer ces modifications et l’annulation comme modifications de robots.",
        "apihelp-rsd-description": "Exporter un schéma RSD (Découverte Très Simple).",
        "apihelp-rsd-example-simple": "Exporter le schéma RSD",
-       "apihelp-setnotificationtimestamp-description": "Mettre à jour l’horodatage de notification pour les pages suivies.\n\nCela affecte la mise en évidence des pages modifiées dans la liste de suivi et l’historique, et l’envoi de courriel quand la préférence « M’envoyer un courriel quand une page de ma liste de suivi est modifiée » est activée.",
+       "apihelp-setnotificationtimestamp-description": "Mettre à jour l’horodatage de notification pour les pages suivies.\n\nCela affecte la mise en évidence des pages modifiées dans la liste de suivi et l’historique, et l’envoi de courriel quand la préférence « {{int:tog-enotifwatchlistpages}} » est activée.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Travailler sur toutes les pages suivies.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Horodatage auquel dater la notification.",
        "apihelp-setnotificationtimestamp-param-torevid": "Révision pour laquelle fixer l’horodatage de notification (une page uniquement).",
index 442dbc7..43c71e2 100644 (file)
@@ -6,7 +6,8 @@
                        "Chairego apc",
                        "VaiPolaSombra",
                        "Banjo",
-                       "Fisterraeomar"
+                       "Fisterraeomar",
+                       "Toliño"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Documentación]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Lista de discusión]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Anuncios da API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Erros e solicitudes]\n</div>\n<strong>Estado:</strong> Tódalas funcionalidades mostradas nesta páxina deberían estar funcionanado, pero a API aínda está desenrolo, e pode ser modificada en calquera momento. Apúntese na [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ lista de discusión mediawiki-api-announce] para estar informado acerca das actualizacións.\n\n<strong>Solicitudes incorrectas:</strong> Cando se envían solicitudes incorrectas á API, envíase unha cabeceira HTTP coa chave \"MediaWiki-API-Error\" e, a seguir, tanto o valor da cabeceira como o código de erro retornado serán definidos co mesmo valor. Para máis información, consulte [[mw:API:Errors_and_warnings|API: Erros e avisos]].",
        "apihelp-opensearch-param-format": "O formato de saída.",
        "apihelp-opensearch-param-warningsaserror": "Se os avisos son recibidos con <kbd>format=json</kbd>, devolver un erro de API no canto de ignoralos.",
        "apihelp-opensearch-example-te": "Atopar páxinas que comezan por <kbd>Te</kbd>.",
-       "apihelp-options-description": "Cambiar as preferencias do usuario actual.\n\nSó se poden cambiar opcións que estean rexistradas no núcleo ou nunha das extensións instaladas, ou opcións con claves prefixadas con \"userjs-\" (previstas para ser usadas por scripts de usuario).",
-       "apihelp-options-param-reset": "Reiniciar preferencias ás iniciais do sitio.",
+       "apihelp-options-description": "Cambiar as preferencias do usuario actual.\n\nSó se poden cambiar opcións que estean rexistradas no núcleo ou nunha das extensións instaladas, ou aquelas opcións con claves prefixadas con <code>userjs-</code> (previstas para ser usadas por escrituras de usuario).",
+       "apihelp-options-param-reset": "Reinicia as preferencias ás iniciais do sitio.",
        "apihelp-options-param-resetkinds": "Lista de tipos de opcións a reinicializar cando a opción <var>$1reset</var> está definida.",
        "apihelp-options-param-change": "Lista de cambios, con formato nome=valor (p. ex. skin=vector). O valor non pode ter caracteres de barra vertical. Se non se indica un valor (sen u signo igual), p. ex. nomeopcion|outraopcion|..., a opción será gardada co seu valor por defecto.",
-       "apihelp-options-param-optionname": "Nome dunha opción que debe ser fixado ó valor dado por <var>$1optionvalue</var>.",
-       "apihelp-options-param-optionvalue": "Valor da opción especificada por <var>$1optionname</var>, pode conter o caracter da barra vertical.",
-       "apihelp-options-example-reset": "Restablecer tódaalas preferencias",
+       "apihelp-options-param-optionname": "O nome da opción que debe fixarse no valor dado por <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "O valor para a opción especificada por <var>$1optionname</var>. Pode conter barras verticais.",
+       "apihelp-options-example-reset": "Restablecer todas as preferencias.",
        "apihelp-options-example-change": "Cambiar as preferencias <kbd>skin</kbd> and <kbd>hideminor</kbd>.",
        "apihelp-options-example-complex": "Restaurar todas as preferencias, logo fixar <kbd>skin</kbd> e <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "Obter información sobre módulos API.",
        "apihelp-protect-param-protections": "Lista dos niveis de protección, con formato <kbd>action=level</kbd> (p.ex. <kbd>edit=sysop</kbd>).\n\n<strong>Nota:</strong> Todas as accións que non estean listadas terán restriccións para ser eliminadas.",
        "apihelp-protect-param-expiry": "Selos de tempo de caducidade. Se só se indica un selo de tempo, usarase para todas as proteccións. Use <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd>, ou <kbd>never</kbd>, para unha protección sen caducidade.",
        "apihelp-protect-param-reason": "Razón para (des)protexer.",
-       "apihelp-protect-param-cascade": "Activar protección en cascada (p. ex. protexer modelos transcluídos e imaxes usadas nesta páxina). Ignorado se ningún dos niveis de protección proporcionados soportan o uso en cascada.",
+       "apihelp-protect-param-cascade": "Activar a protección en cascada (por exemplo, protexer os modelos transcluídos e as imaxes usadas nesta páxina). Ignórase se ningún dos niveis de protección soporta a protección en cascada.",
        "apihelp-protect-param-watch": "Se se define este parámetro, engadir a páxina que se (des)protexe á lista de vixilancia do usuario actual.",
        "apihelp-protect-param-watchlist": "Engadir ou eliminar sen condicións a páxina da lista de vixiancia do usuario actual, use as preferencias ou non cambie a vixiancia.",
        "apihelp-protect-example-protect": "Protexer unha páxina",
        "apihelp-query+categorymembers-param-dir": "En que dirección ordenar.",
        "apihelp-query+categorymembers-param-start": "Selo de tempo para comezar o listado. Só pode usarse con <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-end": "Selo de tempo co que rematar o listado. Só pode usarse con <kbd>$1sort=timestamp</kbd>.",
-       "apihelp-query+categorymembers-param-starthexsortkey": "Chave de ordenación coa que comezar o listado, como se indique en <kbd>$1prop=sortkey</kbd>. Pode usarse só con <kbd>$1sort=sortkey</kbd>.",
-       "apihelp-query+categorymembers-param-endhexsortkey": "Chave de ordenación coa que rematar o listado, como se indique en <kbd>$1prop=sortkey</kbd>. Pode usarse só con <kbd>$1sort=sortkey</kbd>.",
-       "apihelp-query+categorymembers-param-startsortkeyprefix": "Prefixo da chave de ordenación coa que comezar o listado. Pode usarse só con <kbd>$1sort=sortkey</kbd>. Ignórase <var>$1starthexsortkey</var>.",
-       "apihelp-query+categorymembers-param-endsortkeyprefix": "Prefixo da chave de ordenación ANTES de rematar o listado (e non a, se existe este valor entón non será incluído!). Pode usarse só con <kbd>$1sort=sortkey</kbd>. Ignórase $1endhexsortkey.",
-       "apihelp-query+categorymembers-param-startsortkey": "Usar $1starthexsortkey no canto.",
-       "apihelp-query+categorymembers-param-endsortkey": "Usar $1endhexsortkey no canto.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "Clave de ordenación coa que comezar a lista, como se indique en <kbd>$1prop=sortkey</kbd>. Pode usarse só con <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Clave de ordenación na que rematar a lista, como se indique en <kbd>$1prop=sortkey</kbd>. Pode usarse só con <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "Prefixo da clave de ordenación co que comezar a lista. Pode usarse só con <kbd>$1sort=sortkey</kbd>. Sobrescríbese <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Prefixo da clave de ordenación no que rematar a lista <strong>antes</strong> (e non <strong>en</strong>; se existe este valor entón non será incluído!). Pode usarse só con $1sort=sortkey. Sobrescríbese $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-startsortkey": "Usar $1starthexsortkey no seu lugar.",
+       "apihelp-query+categorymembers-param-endsortkey": "Usar $1endhexsortkey no seu lugar.",
        "apihelp-query+categorymembers-example-simple": "Obter as dez primeiras páxinas de <kbd>Category:Physics</kbd>.",
        "apihelp-query+categorymembers-example-generator": "Obter a información das primeiras dez páxinas de <kbd>Category:Physics</kbd>.",
        "apihelp-query+contributors-description": "Obter a lista de contribuidores conectados e o número de contribuidores anónimos dunha páxina.",
        "apihelp-rollback-example-summary": "Desfacer as últimas edicións á páxina <kbd>Main Page</kbd> polo usuario da dirección IP <kbd>192.0.2.5</kbd> co resumo de edición <kbd>Revertindo vandalismo</kbd>, marcar esas edicións e a reversión como edicións de bot.",
        "apihelp-rsd-description": "Exportar un esquema RSD (Really Simple Discovery, Descubrimento Moi Simple).",
        "apihelp-rsd-example-simple": "Exportar o esquema RSD.",
-       "apihelp-setnotificationtimestamp-description": "Actualiza o selo de tempo de notificación das páxinas vixiadas.\n\nIsto afecta ó resalte das páxinas modificadas na lista de vixiancia e historial, e o envío de correo cando a preferencia \"Mandarme un correo cando cambie unha páxina da miña lista de vixiancia\" está activa.",
+       "apihelp-setnotificationtimestamp-description": "Actualizar a data e hora da notificación das páxinas vixiadas.\n\nIsto afecta ao realce das páxinas modificadas na lista de vixiancia e no historial, e ao envío de correos cando a preferencia \"{{int:tog-enotifwatchlistpages}}\" está activada.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Traballar en tódalas páxinas vixiadas.",
        "apihelp-setnotificationtimestamp-param-timestamp": "Selo de tempo ó que fixar a notificación.",
        "apihelp-setnotificationtimestamp-param-torevid": "Modificación á que fixar o selo de tempo de modificación (só unha páxina).",
        "apihelp-tag-param-add": "Etiquetas a engadir. Só poden engadirse etiquetas definidas manualmente.",
        "apihelp-tag-param-remove": "Etiquetas a eliminar. Só se poden eliminar as etiquetas definidas manualmente ou que non teñen ningunha definición.",
        "apihelp-tag-param-reason": "Razón para o cambio.",
-       "apihelp-tag-example-rev": "Engadir a marca <kbd>vandalismo</kbd> á modificación con identificador 123 sen indicar unha razón.",
+       "apihelp-tag-example-rev": "Engadir a etiqueta <kbd>vandalismo</kbd> á revisión con identificador 123 sen indicar un motivo",
        "apihelp-tag-example-log": "Eliminar a etiqueta <kbd>publicidade</kbd> da entrada do rexistro con identificador 123 co motivo <kbd>aplicada incorrectamente</kbd>",
        "apihelp-tokens-description": "Obter os identificadores para accións de modificación de datos.\n\nEste módulo está obsoleto e foi reemprazado por [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
        "apihelp-tokens-param-type": "Tipos de identificadores a consultar.",
index c885f4e..9e118c6 100644 (file)
@@ -21,7 +21,7 @@
        "apihelp-main-param-requestid": "כל ערך שיינתן כאן ייכלל בתשובה. אפשר להשתמש בזה כדי להבדיל בין בקשות.",
        "apihelp-main-param-servedby": "לכלול את שם המארח ששירת את הבקשה בתוצאות.",
        "apihelp-main-param-curtimestamp": "הכללת חותם־הזמן הנוכחי בתוצאה.",
-       "apihelp-main-param-origin": "×\91עת ×\92×\99ש×\94 ×\9cÖ¾API ×¢×\9d ×\91קשת AJAX ×\97×\95צ×\94 ×\9eת×\97×\9e×\99×\9d (CORS), ×\99ש ×\9c×\94צ×\99×\91 ×\9b×\90×\9f ×\90ת ×\94×\9eת×\97×\9d ×©×\9e×\9e× ×\95 ×\99×\95צ×\90ת ×\94×\91קש×\94. זה היה להיות כלול בכל בקשה מקדימה, ולכן הוא חייב להיות חלק מה־URI של הבקשה (לא גוף ה־POST). זה חייב להיות תואם במדויק לאחד המקורות בכותרת <code>Origin</code>, כך שזה צריך להיות מוגדר למשהו כמו <kbd>https://en.wikipedia.org</kbd> או <kbd>https://meta.wikimedia.org</kbd>. אם הפרמטר הזה אינו תואם לכותרת <code>Origin</code>, תוחזר תשובת 403. אם הפרמטר הזה תורם לכותרת <code>Origin</code> והמקור נמצא ברשימה הלבנה, תוגדר כותרת <code>Access-Control-Allow-Origin</code>.",
+       "apihelp-main-param-origin": "×\91עת ×\92×\99ש×\94 ×\9cÖ¾API ×¢×\9d ×\91קשת AJAX ×\97×\95צ×\94 ×\9eת×\97×\9e×\99×\9d (CORS), ×\99ש ×\9c×\94צ×\99×\91 ×\9b×\90×\9f ×\90ת ×\94×\9eת×\97×\9d ×©×\94×\91קש×\94 ×\99×\95צ×\90ת ×\9e×\9e× ×\95. זה היה להיות כלול בכל בקשה מקדימה, ולכן הוא חייב להיות חלק מה־URI של הבקשה (לא גוף ה־POST). זה חייב להיות תואם במדויק לאחד המקורות בכותרת <code>Origin</code>, כך שזה צריך להיות מוגדר למשהו כמו <kbd>https://en.wikipedia.org</kbd> או <kbd>https://meta.wikimedia.org</kbd>. אם הפרמטר הזה אינו תואם לכותרת <code>Origin</code>, תוחזר תשובת 403. אם הפרמטר הזה תורם לכותרת <code>Origin</code> והמקור נמצא ברשימה הלבנה, תוגדר כותרת <code>Access-Control-Allow-Origin</code>.",
        "apihelp-main-param-uselang": "באיזו שפה להשתמש לתרגומי הודעות. אפשר לקבל רשימת קודים מ־<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd> עם <kbd>siprop=languages</kbd> או לציין <kbd>user</kbd> כדי להשתמש בהעדפת השפה של המשתמש הנוכחי, או להגדיר את <kbd>content</kbd> להשתמש בקוד השפה של הוויקי הזה.",
        "apihelp-block-description": "חסימת משתמש.",
        "apihelp-block-param-user": "שם משתמש, כתובת IP, או טווח IP שהנך רוצה לחסום.",
        "apihelp-edit-param-watch": "הוספת העמוד לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-edit-param-unwatch": "הסרת הדף מרשימת המעקב של של המשתמש הנוכחי.",
        "apihelp-edit-param-watchlist": "להוסיף את הדף לרשימת המעקב של המשתמש הנוכחי או להסיר אותו משם, להשתמש בהעדפות, או לא לשנות את מצב המעקב.",
+       "apihelp-edit-param-md5": "גיבוב MD5 של הפרמטר $1text או צירוף של הפטמטרים $1prependtext ו־$1appendtext. אם זה מוגדר, העריכה לא תיעשה אלא אם כן הגיבוב נכון.",
        "apihelp-edit-param-prependtext": "הוספת הטקסט הזה לתחילת הדף. דורס את $1text.",
+       "apihelp-edit-param-appendtext": "הוספת הטקסט הזה לסוף הדף. דורס את $1text.\n\nיש להשתמש ב־$1section=new כדי להוסיף פסקה חדשה, ולא בפרמטר הזה.",
+       "apihelp-edit-param-undo": "לבטל את הגרסה הזאת. דורס את $1text‏, $1prependtext ו־$1appendtext.",
+       "apihelp-edit-param-undoafter": "ביטול כל הגרסאות מ־$1undo עד כאן. אם זה לא מוגדר, לבטל רק גרסה אחת.",
        "apihelp-edit-param-redirect": "לפתור הפניות אוטומטית.",
        "apihelp-edit-param-contentformat": "תסדיר להסדרת תוכן שמשמש את טקסט הקלט.",
+       "apihelp-edit-param-contentmodel": "מודל התוכן של התוכן החדש.",
+       "apihelp-edit-param-token": "האסימון תמיד צריך להישלח בתור הפרמטר האחרון, או לפחות אחרי הפרמטר $1text parameter.",
        "apihelp-edit-example-edit": "עריכת דף",
+       "apihelp-edit-example-prepend": "הוספת <kbd>_&#95;NOTOC_&#95;</kbd> לתחילת העמוד.",
+       "apihelp-edit-example-undo": "ביטול גרסאות מ־13579 עד 13585 עם תקציר אוטומטי.",
        "apihelp-emailuser-description": "שליחת דוא\"ל למשתמש.",
        "apihelp-emailuser-param-target": "לאיזה משתמש לשלוח דוא\"ל.",
        "apihelp-emailuser-param-subject": "כותרת נושא.",
        "apihelp-emailuser-param-text": "גוף הדואר.",
        "apihelp-emailuser-param-ccme": "שליחת עותק של הדואר הזה אליי.",
+       "apihelp-emailuser-example-email": "שליחת דוא\"ל למשתמש <kbd>WikiSysop</kbd> עם הטקסט <kbd>Content</kbd>.",
        "apihelp-expandtemplates-description": "הרחבת כל התבניות בקוד הוויקי.",
        "apihelp-expandtemplates-param-title": "כותרת הדף.",
        "apihelp-expandtemplates-param-text": "איזה קוד ויקי להמיר.",
+       "apihelp-expandtemplates-param-revid": "מזהה גרסה, עבור <nowiki>{{REVISIONID}}</nowiki> ומשתנים דומים.",
        "apihelp-expandtemplates-param-prop": "אילו חלקי מידע לקבל.\n\nיש לשים לכך שאם לא נבחרו ערכים, התוצאה תכיל את קוד הוויקי, אבל הפלט יהיה בתסדיר מיושן.",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "קוד הוויקי המורחב.",
+       "apihelp-expandtemplates-paramvalue-prop-categories": "קטגוריות כלשהן שקיימות בקלט ואינן מיוצגות בפלט הוויקיטקסט.",
+       "apihelp-expandtemplates-paramvalue-prop-properties": "מאפייני דף המוגדרים במילות קסם מורחבות בקוד ויקי.",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "האם הפלט הוא נדיף ואין להשתמש בו במקום אחר בעמוד.",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "הזמן המרבי שאחריו המטמונים של התוצאה צריכים לפוג.",
        "apihelp-expandtemplates-paramvalue-prop-modules": "כל יחידות ה־ResourceLoader שפונקציות מפענח ביקשו לוסיף לפלט. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
        "apihelp-expandtemplates-paramvalue-prop-parsetree": "עץ פענוח XML של הקלט.",
        "apihelp-expandtemplates-param-includecomments": "האם לכלול הערות HTML בפלט.",
        "apihelp-expandtemplates-param-generatexml": "יצירת עץ פענוח XML (מוחלף ב־$1prop=parsetree).",
+       "apihelp-expandtemplates-example-simple": "להרחיב את קוד הוויקי <kbd><nowiki>{{Project:Sandbox}}</nowiki></kbd>.",
        "apihelp-feedcontributions-description": "החזרת הזנת תרומות משתמש.",
        "apihelp-feedcontributions-param-feedformat": "תסדיר ההזנה.",
        "apihelp-feedcontributions-param-user": "לקבל תרומות של אילו משמשים.",
        "apihelp-feedrecentchanges-param-hideliu": "הסתרת שינויים שנעשו על ידי משתמשים רשומים.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "הסתרת שינויים שנבדקו.",
        "apihelp-feedrecentchanges-param-hidemyself": "הסתרת שינוים שנעשו על ידי המשתמש הנוכחי.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "להסתיר שינויים בחברות בקטגוריה.",
        "apihelp-feedrecentchanges-param-tagfilter": "סינון לפי תגית.",
        "apihelp-feedrecentchanges-param-target": "הצגת שינויים שנעשו בדפים המקושרים לדף זה בלבד.",
        "apihelp-feedrecentchanges-param-showlinkedto": "להציג את השינויים בדפים שמקושרים לדף שנבחר במקום זה.",
        "apihelp-filerevert-param-filename": "שם קובץ היעד, ללא התחילית File:.",
        "apihelp-filerevert-param-comment": "הערת העלאה.",
        "apihelp-filerevert-param-archivename": "שם הארכיון של הגרסה שאליה ישוחזר הקובץ.",
+       "apihelp-filerevert-example-revert": "לשחזר את <kbd>Wiki.png</kbd> לגרסה מ־<kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "הצגת עזרה עבור היחידות שצוינו.",
        "apihelp-help-param-modules": "עזרה של אילו יחידות להציג (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>.",
        "apihelp-help-param-submodules": "לכלול עזרה לתת־יחידות ליחידה שצוינה.",
        "apihelp-help-param-recursivesubmodules": "לכלול עזרה לתת־יחידות באופן רקורסיבי.",
        "apihelp-help-param-helpformat": "תסדיר פלט העזרה.",
+       "apihelp-help-param-wrap": "לעטוף את הפלט במבנה תשובת API תקני.",
        "apihelp-help-param-toc": "לכלול תוכן עניינים בפלט HTML.",
        "apihelp-help-example-main": "עזרה ליחידה הראשית.",
        "apihelp-help-example-recursive": "כל העזרה בדף אחד.",
        "apihelp-import-param-namespace": "לייבא למרחב השם הזה. לא ניתן להשתמש בזה יחד עם <var>$1rootpage</var>.",
        "apihelp-import-param-rootpage": "לייבא בתור תת־משנה של הדף הזה. לא ניתן להשתמש בזה יחד עם <var>$1namespace</var>.",
        "apihelp-import-example-import": "לייבא את [[meta:Help:ParserFunctions]] למרחב השם 100 עם היסטוריה מלאה.",
+       "apihelp-login-description": "להיכנס ולקבל עוגיות אימות.\n\nבמקרה של כניסה מוצלחת, העוגיות הדרושות תיכללנה בכותרות תשובות של HTTP. במקרה של כניסה לא מוצלחת, הניסיונות הבאים עשויים להיות חנוקים כדי להגביל תקיפות ניחוש ססמה אוטומטי.",
        "apihelp-login-param-name": "שם משתמש.",
        "apihelp-login-param-password": "ססמה.",
        "apihelp-login-param-domain": "שם מתחם (רשות).",
        "apihelp-logout-description": "יציאה וניקוי של נתוני הפעילות.",
        "apihelp-logout-example-logout": "הוצאת המשתמש הנוכחי.",
        "apihelp-managetags-description": "ביצוע פעולות ניהוליות הקשורות בשינוי תגיות.",
+       "apihelp-managetags-param-operation": "איזו פעולה לבצע:\n;create:יצירת תג שינוי חדש לשימוש ידני.\n;delete:הסרת תג שינוי ממסד הנתונים, כולל הסרת התג מכל הגרסאות, עיולי שינויים אחרונים ועיולי יומן שהוא משמש בהן.\n;activate:הפעלת תג שינוי, ואפשור למשתמש להחיל אותו ידנית.\n;deactivate:כיבוי תג שינוי, ומניעה ממשתמשים להחיל אותו ידנית.",
+       "apihelp-managetags-param-tag": "תג ליצירה, מחיקה, הפעלה או כיבוי. ליצירת תג, התג לא צריך להיות קיים. למחיקת תג, התג צריך להיות קיים. להפעלת תג, התג צריך להתקיים ולא להיות בשימוש של הרחבה. לכיבוי תג, התג צריך להיות קיים ומוגדר ידנית.",
+       "apihelp-managetags-param-reason": "סיבה אופציונלית ליצירה, מחיקה, הפעלה או כיבוי של תג.",
+       "apihelp-managetags-param-ignorewarnings": "האם להתעלם מכל האזהרות שמופיעות תוך כדי הפעולה.",
+       "apihelp-managetags-example-create": "יצירת תג בשם <kbd>spam</kbd> עם הסיבה <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-delete": "מחיקת התג <kbd>vandlaism</kbd> עם הסיבה <kbd>Misspelt</kbd>",
+       "apihelp-managetags-example-activate": "הפעלת התג <kbd>spam</kbd> עם הסיבה <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-deactivate": "כיבוי התג <kbd>spam</kbd> עם הסיבה <kbd>No longer required</kbd>",
        "apihelp-move-description": "העברת עמוד.",
+       "apihelp-move-param-from": "שם הדף ששמו ישונה. לא יכול לשמש יחד עם <var>$1fromid</var>.",
+       "apihelp-move-param-fromid": "מזהה הדף של הדף שצריך לשנות את שמו. לא יכול לשמש עם <var>$1from</var>.",
        "apihelp-move-param-to": "לאיזו כותרת לשנות את שם הדף.",
        "apihelp-move-param-reason": "הסיבה לשינוי השם.",
        "apihelp-move-param-movetalk": "שינוי שם דף השיחה, אם הוא קיים.",
        "apihelp-opensearch-param-format": "תסדיר הפלט.",
        "apihelp-opensearch-param-warningsaserror": "אם אזהרות מוּעלות עם <kbd>format=json</kbd>, להחזיר שגיאת API במקום להתעלם מהן.",
        "apihelp-opensearch-example-te": "חיפוש דפים שמתחילים ב־<kbd>Te</kbd>.",
+       "apihelp-options-description": "שינוי העדפות של המשתמש הנוכחי.\n\nרק אפשרויות שמוגדרות בליבה או באחת מההרחבות המותקנות, או אפשרויות עם מפתחות עם התחילית \"<code dir=\"ltr\">userjs-</code>\" (שמיועדות לשימוש תסריטי משתמשים) יכולות להיות מוגדרות.",
        "apihelp-options-param-reset": "אתחול ההעדפות לבררות המחדל של האתר.",
+       "apihelp-options-param-resetkinds": "רשימת סוגי אפשרויות לאתחל כאשר מוגדרת האפשרות <var>$1reset</var>.",
        "apihelp-options-param-change": "רשימת שינויים, בתסדיר name=value (למשל skin=vector). הערך אינו יכול להכיל תווי מקל (|). אם לא ניתן ערך, אפילו לא סימן שווה, למשל optionname|otheroption|...‎, האפשרות תאופס לערך בררת המחדל שלה.",
+       "apihelp-options-param-optionname": "שם האפשרות שצריך להגדיר לערך שניתן ב־<var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "ערך האפשרות שצוין ב־<var>$1optionname</var>, יכול להכיל תווי מקל.",
        "apihelp-options-example-reset": "אתחול כל ההעדפות.",
+       "apihelp-options-example-change": "לשנות את ההעדפות <kbd>skin</kbd> ו־<kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "לאתחל את כל ההעדפות ואז להגדיר את <kbd>skin</kbd> ואת <kbd>nickname</kbd>.",
        "apihelp-paraminfo-description": "קבלת מידע על יחידות של API.",
        "apihelp-paraminfo-param-modules": "רשימה של שמות יחידות (ערכים של הפרמטרים <var>action</var> ו־<var>format</var>, או <kbd>main</kbd>). אפשר להגדיר תת־יחידות עם <kbd>+</kbd>.",
        "apihelp-paraminfo-param-helpformat": "תסדיר מחרוזות העזרה.",
        "apihelp-paraminfo-param-formatmodules": "רשימת שמות תסדירים (ערכים של הפרמטר <var>format</var>). יש להשתמש ב־<var>$1modules</var> במקום זה.",
        "apihelp-paraminfo-example-1": "הצגת מידע עבור <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>‏, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>‏, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>‏, ו־<kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
        "apihelp-parse-description": "מפענח את התוכן ומחזיר פלט מפענח.\n\nר' את יחידת ה־prop השיונות של <kbd>[[Special:ApiHelp/query|action=query]]</kbd> כדי לקבל מידע על הגרסה הנוכחית של הדף.\n\nיש מספר דרכים לציין טקסט לפענוח:\n# ציון דף או גרסה באמצעות <var>$1page</var>‏, <var>$1pageid</var>, או <var>$1oldid</var>.\n# ציון התוכן במפורש, באמצעות <var>$1text</var>‏, <var>$1title</var>, ו־<var>$1contentmodel</var>.\n# ציון רק של  התקציר לפענוח. ל־<var>$1prop</var> צריך לתת ערך ריק.",
+       "apihelp-parse-param-title": "שם הדף שהטקסט שייך אליו. אם זה מושמט, יש לציין את <var>$1contentmodel</var>, ו־[[API]] ישמש ככותרת.",
+       "apihelp-parse-param-text": "הטקסט לפענוח. יש להשתמש ב־<var>$1title</var> או ב־<var>$1contentmodel</var>.",
        "apihelp-parse-param-summary": "התקציר שצריך לפענח.",
+       "apihelp-parse-param-page": "פענוח תוכן הדף הזה. לא יכול לשמש יחד עם <var>$1text</var> ו־<var>$1title</var>.",
+       "apihelp-parse-param-pageid": "לפענח את התוכן של הדף הזה. דורס את <var>$1page</var>.",
+       "apihelp-parse-param-redirects": "אם <var>$1page</var> או <var>$1pageid</var> מוגדרים להפניה, לפתור אותה.",
+       "apihelp-parse-param-oldid": "לפענח את התוכן של הגרסה הזאת. דורס את <var>$1page</var> ואת <var>$1pageid</var>.",
        "apihelp-parse-param-prop": "אילו פריטי מידע לקבל:",
        "apihelp-parse-paramvalue-prop-text": "נותן טקסט מפוענח של קוד הוויקי.",
        "apihelp-parse-paramvalue-prop-langlinks": "נותן קישורי שפה בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-sections": "מתן הפסקאות בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-revid": "הוספת מזהה הגרסה של הדף המפוענח.",
        "apihelp-parse-paramvalue-prop-displaytitle": "הוספת הכותרת של קוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-headitems": "נותן פריטים לשים ב־<code>&lt;head&gt;</code> של הדף.",
+       "apihelp-parse-paramvalue-prop-headhtml": "נותן את ה־<code>&lt;head&gt;</code> המפוענח של הדף.",
        "apihelp-parse-paramvalue-prop-modules": "מצן יחידות ResourceLoader שמשמשות בדף. יש לבקש את <kbd>jsconfigvars</kbd> או את <kbd>encodedjsconfigvars</kbd> יחד עם <kbd>modules</kbd>.",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה.",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "נותן משתני הגדרות של JavaScript שייחודיים לדף הזה בתור מחרוזת JSON.",
+       "apihelp-parse-paramvalue-prop-indicators": "נותן את ה־HTML של מחווני מצב דף שמשמשים בדף.",
        "apihelp-parse-paramvalue-prop-iwlinks": "מתן קישורי בינוויקי בקוד הוויקי המפוענח.",
        "apihelp-parse-paramvalue-prop-wikitext": "מתן קוד הוויקי המקורי שפוענח.",
+       "apihelp-parse-paramvalue-prop-properties": "נותן מאפיינים שונים שמוגדרים בקוד הוויקי המפוענח.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "נותן דו\"ח הגבלות בדרך מובנית. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "נותן את גרסת ה־HTML של דו\"ח ההגבלות. לא נותן שום נתונים כאשר מוגדר <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>)",
+       "apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
+       "apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform‏, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
+       "apihelp-parse-param-effectivelanglinks": "כולל קישור שפה שמספקות הרחבות (לשימוש עם <kbd>$1prop=langlinks</kbd>).",
+       "apihelp-parse-param-section": "לאחזר את התוכן של הפסקה עם המספר הזה, או, אם זה <kbd>new</kbd>, ליצור פסקה חדשה.\n\n<kbd>new</kbd> יכובד רק בעת ציון <var>text</var>.",
+       "apihelp-parse-param-sectiontitle": "כותרת פסקה חדשה כאשר <var>section</var> הוא <kbd>new</kbd>.\n\nבניגוד לעריכת דף, זה לא מתגבה ל־<var>summary</var> כשזה מושמט אם ריק.",
        "apihelp-parse-param-disablepp": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
        "apihelp-parse-param-disableeditsection": "להשמיט את קישורי עריכת הפסקאות מפלט המפענח.",
+       "apihelp-parse-param-generatexml": "יצירת עץ פענוח של XML (נדרש מודל תוכן <code>$1</code>; מוחלף ב־<kbd>$2prop=parsetree</kbd>).",
        "apihelp-parse-param-preview": "לפענח במצב תצוגה מקדימה.",
        "apihelp-parse-param-sectionpreview": "לפענח במצב תצוגה מקדימה של פסקה (מדליק גם את מצב תצוגה מקדימה).",
        "apihelp-parse-param-disabletoc": "להשמיט את תוכן העניינים בפלט.",
        "apihelp-parse-param-contentformat": "תסדיר הסדרת תוכן שישמש לטקסט הקלט. תקף רק עם $1text.",
+       "apihelp-parse-param-contentmodel": "מודל התוכן של טקסט הקלט. אם זה מושמט, יש לציין את $1title והערך ההתחלתי יהיה המודל של הכותרת שצוינה. תקין רק כאשר משמש עם $1text.",
        "apihelp-parse-example-page": "לפענח דף.",
        "apihelp-parse-example-text": "לפענח קוד ויקי.",
        "apihelp-parse-example-texttitle": "לפענח קוד, עם ציון כותרת דף.",
        "apihelp-protect-param-watch": "אם זה מוגדר, הוספת הדף שהגנה נוספת אליו או מוסרת ממנו לרשימת המעקב של המשתמש הנוכחי.",
        "apihelp-protect-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-protect-example-protect": "הגנה על דף.",
+       "apihelp-protect-example-unprotect": "להסיר את ההגנה מהדף על־ידי הגדרת מגבלות על <kbd>all</kbd>.",
        "apihelp-protect-example-unprotect2": "הסרת הגנה מדף על־ידי הגדרה של אפס הגבלות.",
        "apihelp-purge-description": "ניקוי המטמון לכותרות שניתנו.\n\nדורש בקשת POST אם המשתמש לא נכנס לחשבון.",
        "apihelp-purge-param-forcelinkupdate": "עדכון טבלאות הקישורים.",
+       "apihelp-purge-param-forcerecursivelinkupdate": "עדכון טבלת הקישורים ועדכון טבלאות הקישורים עבור כל דף שמשתמש בדף הזה בתור תבנית.",
        "apihelp-purge-example-simple": "ניקוי המטמון של הדפים <kbd>Main Page</kbd> ו־<kbd>API</kbd>.",
        "apihelp-purge-example-generator": "ניקוי 10 הדפים הראשונים במרחב הראשי.",
+       "apihelp-query-description": "אחזור נתונים ממדיה־ויקי ועליה.\n\nכל שינויי הנתונים יצטרכו תחילה להשתמש ב־query כדי לקבל אסימון למניעת שימוש לרעה מאתרים זדוניים.",
        "apihelp-query-param-prop": "אילו מאפיינים לקבל על הדפים בשאילתה.",
        "apihelp-query-param-list": "אילו רשימות לקבל.",
        "apihelp-query-param-meta": "אילו מטא־נתונים לקבל.",
+       "apihelp-query-param-indexpageids": "לכלול פסקת pageids נוספת עם רשימת כל מזהי הדף שהוחזרו.",
+       "apihelp-query-param-export": "יצוא הגרסאות הנוכחיות של כל הדפים הנתונים המחוללים.",
        "apihelp-query-param-exportnowrap": "להחזיר את ה־XML של היצוא בלי לעטוף אותו בתוצאת XML (אותו תסדיר כמו [[Special:Export]]). אפשר להשתמש בזה רק עם $1export.",
+       "apihelp-query-param-iwurl": "האם לקבל את ה־URL המלא אם הכותרת היא קישור בינוויקי.",
+       "apihelp-query-param-rawcontinue": "להחזיר נתוני <samp>query-continue</samp> גולמיים להמשך.",
+       "apihelp-query-example-revisions": "אחזור [[Special:ApiHelp/query+siteinfo|site info]] ו־[[Special:ApiHelp/query+revisions|revisions]] של <kbd>Main Page</kbd>.",
+       "apihelp-query-example-allpages": "אחזור גרסאת של דפים שמתחילים ב־<kbd>API/</kbd>.",
        "apihelp-query+allcategories-description": "למנות את כל הקטגוריות.",
        "apihelp-query+allcategories-param-from": "מאיזו קטגוריה להתחיל למנות.",
        "apihelp-query+allcategories-param-to": "באיזו קטגוריה להפסיק למנות.",
        "apihelp-query+allcategories-param-limit": "כמה קטגוריות להחזיר.",
        "apihelp-query+allcategories-param-prop": "אילו מאפיינים לקבל:\n;size:הוספת מספר הדפים בקטגוריה.\n;hidden:מתייג קטגוריות מוסתרות עם _&#95;HIDDENCAT_&#95;.",
        "apihelp-query+allcategories-example-size": "רשימת קטגוריות עם מידע על מספר הדפים בכל אחת מהן.",
+       "apihelp-query+allcategories-example-generator": "אחזור מידע על דף הקטגוריה עצמו עבור קטגוריות שמתחילות ב־<kbd>List</kbd>.",
        "apihelp-query+alldeletedrevisions-description": "רשימת כל הגרסאות המחוקות על־ידי משתמש או במרחב.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "יכול לשמש רק <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "לא יכול לשמש עם <var>$3user</var>.",
        "apihelp-query+alldeletedrevisions-param-user": "לרשום רק גרסאות מאת המשתמש הזה.",
        "apihelp-query+alldeletedrevisions-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
        "apihelp-query+alldeletedrevisions-param-namespace": "לרשום רק דפים במרחב השם הזה.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>לתשומת לבך:</strong> בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]], שימוש ב־<var>$1user</var> וב־<var>$1namespace</var> ביחד עלול להניב החזרה של פחות מ־<var>$1limit</var> תוצאות לפני המשך; במצבים קיצוניים יכולות להיות מוחזרות אפס תוצאות.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "בעת שימוש בתור מחולל, לחולל כותרת במקום מזהי גרסה.",
+       "apihelp-query+alldeletedrevisions-example-user": "לרשום את 50 התרומות המחוקות האחרונות של משתמש <kbd>Example<kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי.",
        "apihelp-query+allfileusages-description": "לרשום את כל שימושי הקובץ, כולל בלתי־קיימים.",
-       "apihelp-query+allfileusages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת קובץ להתחיל למנות.",
-       "apihelp-query+allfileusages-param-to": "ש×\9d ×\94ק×\95×\91×¥ ×©×\91×\95 ×ª×¡×ª×\99×\99×\9d ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+allfileusages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d קובץ להתחיל למנות.",
+       "apihelp-query+allfileusages-param-to": "ש×\9d ×\94ק×\95×\91×¥ ×©×\94×\9e× ×\99×\99×\94 ×ª×¡×ª×\99×\99×\9d ×\91×\95.",
        "apihelp-query+allfileusages-param-prefix": "חיפוש כל שמות הקבצים שמתחילים עם הערך הזה.",
+       "apihelp-query+allfileusages-param-unique": "להציג רק שמות קבצים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+allfileusages-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המשתמשים (לא יכול לשמש עם $1unique).\n;title:הוספת שם הקובץ.",
        "apihelp-query+allfileusages-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allfileusages-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allfileusages-example-B": "רשימת שמות קבצים, כולל חסרים, עם מזהי הדפים שהם מופיעים בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+allfileusages-example-unique": "רשימת שמות קבצים ייחודיים.",
        "apihelp-query+allfileusages-example-unique-generator": "קבלת כל שמות הקבצים, כולל חסרים.",
        "apihelp-query+allfileusages-example-generator": "קבלת דפים שמכילים את הקבצים.",
        "apihelp-query+allimages-description": "למנות את כל התמונות לפי הסדר.",
        "apihelp-query+allimages-param-sort": "לפי איזה מאפיין למיין.",
        "apihelp-query+allimages-param-dir": "באיזה כיוון לרשום.",
-       "apihelp-query+allimages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת תמונה להתחיל למנות. יכול לשמש רק עם $1sort=name.",
+       "apihelp-query+allimages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d תמונה להתחיל למנות. יכול לשמש רק עם $1sort=name.",
        "apihelp-query+allimages-param-to": "כותרת תמונה שבה תסתיים המניי. יכול לשמש רק עם $1sort=name.",
-       "apihelp-query+allimages-param-start": "×\91איזה חותם־זמן להתחיל למנות. יכול לשמש רק עם $1sort=timestamp.",
+       "apihelp-query+allimages-param-start": "×\9eאיזה חותם־זמן להתחיל למנות. יכול לשמש רק עם $1sort=timestamp.",
        "apihelp-query+allimages-param-end": "באיזה חותם זמן להפסיק לרשום. אפשר להשתמש בזה רק עם $1sort=timestamp.",
+       "apihelp-query+allimages-param-prefix": "חיפוש כל שמות התמונות שמתחילים בערך הזה. יכול לשמש רק עם $1sort=name.",
        "apihelp-query+allimages-param-minsize": "להגביל לתמונות עם מספר כזה של בתים לפחות.",
        "apihelp-query+allimages-param-maxsize": "להגביל לתמונות עם מספר כזה לכל היותר של בתים.",
        "apihelp-query+allimages-param-sha1": "גיבוב SHA1 של תמונה. דריסת $1sha1base36.",
        "apihelp-query+allimages-param-sha1base36": "גיבוב SHA1 של התמונה בבסיס 36 (הבסיס בו נעשה שימוש במדיה־ויקי).",
        "apihelp-query+allimages-param-user": "להחזיר רק קבצים שהועלו על־ידי המשתמש הזה. יכול לשמש רק עם $1sort=timestamp. לא יכול לשמש יחד עם $1filterbots.",
        "apihelp-query+allimages-param-filterbots": "איך לסנן קבצים שמעלים בוטים. יכול לשמש רק עם $1sort=timestamp. לא יכול לשמש יחד עם $1user.",
+       "apihelp-query+allimages-param-mime": "אילו סוגי MIME לחבפש, למשל <kbd>image/jpeg</kbd>.",
        "apihelp-query+allimages-param-limit": "כמה תמונות להחזיר בסך הכול.",
        "apihelp-query+allimages-example-B": "הצגת רשימה של קבצים שמתחילים באות <kbd>B</kbd>.",
+       "apihelp-query+allimages-example-recent": "הצגת רשימת קבצים שהועלו לאחרונה, דומה ל־[[Special:NewFiles]].",
+       "apihelp-query+allimages-example-mimetypes": "להציג רשימה של קבצות שסוג ה־MIME שלהם הוא <kbd>image/png</kbd> או <kbd>image/png</kbd>.",
        "apihelp-query+allimages-example-generator": "הצגת מידע על 4 קבצים המתחילים באות <kbd>T</kbd>.",
        "apihelp-query+alllinks-description": "למנות את כל הקישורים שמצביעים למרחב שם נתון.",
-       "apihelp-query+alllinks-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94ק×\99ש×\95ר ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
-       "apihelp-query+alllinks-param-to": "×\9b×\95תרת ×\94ק×\99ש×\95ר ×©×\91×\95 ×ª×¡×ª×\99×\99×\9d ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+alllinks-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d ×§×\99ש×\95ר ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
+       "apihelp-query+alllinks-param-to": "×\9b×\95תרת ×\94ק×\99ש×\95ר ×©×\94×\9e× ×\99×\99×\94 ×ª×¡×ª×\99×\99×\9d ×\91×\95.",
        "apihelp-query+alllinks-param-prefix": "חיפוש כל הכותרות המקושרות שמתחילות בערך הזה.",
+       "apihelp-query+alllinks-param-unique": "להציג רק שמות מקושרים ייחודיים. לא יכול לשמש עם <kbd>$1prop=ids</kbd>.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+alllinks-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדף המקשר (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת שם הקישור.",
        "apihelp-query+alllinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alllinks-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alllinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+alllinks-example-B": "רשימת כותרות מקושרות, כולל חסרות, עם מזהי הדפים שהן מופיעות בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+alllinks-example-unique": "רשימת כותרות מקושרים ייחודיות.",
        "apihelp-query+alllinks-example-unique-generator": "קבלת כל הכותרות המקושרות, וסימון החסרות.",
        "apihelp-query+alllinks-example-generator": "קבלת דפים שמכילים את הקישורים.",
        "apihelp-query+allmessages-description": "החזרת הודעות מהאתר הזה.",
+       "apihelp-query+allmessages-param-messages": "אילו הודעות לפלוט. כתיבת <kbd>*</kbd> (בררת מחדל) תפלוט את כל ההודעות.",
        "apihelp-query+allmessages-param-prop": "אלו מאפיינים לקבל.",
+       "apihelp-query+allmessages-param-enableparser": "יש להגדיר כדי להפעיל את המפענח, יעשה קדם־עיבוד לקוד ויקי של ההודעה (יחליף מילות קסם, יטפל בתבניות, וכו').",
        "apihelp-query+allmessages-param-nocontent": "אם זה מוגדר, לא לכלול את תוכן ההודעות בפלט.",
+       "apihelp-query+allmessages-param-includelocal": "לכלול גם הודעות מקומיות, כלומר הודעות שאינן קיימות בתכנה, אבל כן קיימות בתור דף מדיה־ויקי.\nזה רושם את כל דפי MediaWiki: כך שזה ירשום גם דפים שאינם באמת הודעות, כגון [[MediaWiki:Common.js|Common.js]].",
        "apihelp-query+allmessages-param-args": "ארגומנטים שיוחלפו לתוך ההודעה.",
        "apihelp-query+allmessages-param-filter": "החזרה רק של הודעות עם שמות שמכילים את המחרוזת הזאת.",
        "apihelp-query+allmessages-param-customised": "להחזיר רק הודעות במצב ההתאמה הזה.",
        "apihelp-query+allmessages-param-lang": "החזרת הודעת בשפה הזאת.",
        "apihelp-query+allmessages-param-from": "החזרת הודעת החל מההודעה הזאת.",
        "apihelp-query+allmessages-param-to": "החזרת הודעות עד ההודעה הזאת.",
+       "apihelp-query+allmessages-param-title": "שם דף לשימוש בתור הֶקשר בעת ענוח הודעה (עבור האפשרות $1enableparser).",
        "apihelp-query+allmessages-param-prefix": "החזרת הודעת עם התחילית הזאת.",
+       "apihelp-query+allmessages-example-ipb": "להציג הודעות שמתחילות ב־<kbd dir=\"ltr\">ipb-</kbd>.",
+       "apihelp-query+allmessages-example-de": "להציג את ההודעות <kbd>august</kbd> ו־<kbd>mainpage</kbd> בגרמנית.",
        "apihelp-query+allpages-description": "למנות את כל הדפים לפי הסדר במרחב שם נתון.",
-       "apihelp-query+allpages-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\93×£ ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
-       "apihelp-query+allpages-param-to": "×\9b×\95תרת ×\94×\93×£ ×©×\91×\95 ×ª×¡×ª×\99×\99×\9d ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+allpages-param-from": "×\9e×\90×\99×\96×\94 ×©×\9d ×\93×£ ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
+       "apihelp-query+allpages-param-to": "×\9b×\95תרת ×\94×\93×£ ×©×\94×\9e× ×\99×\99×\94 ×ª×¡×ª×\99×\99×\9d ×\91×\95.",
        "apihelp-query+allpages-param-prefix": "חיפוש כל שמות הדפים שמתחילים בערך הזה.",
        "apihelp-query+allpages-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+allpages-param-filterredir": "אילו דפים לרשום.",
        "apihelp-query+allpages-param-minsize": "להגביל לדפים עם מספר כזה לפחות של בתים.",
        "apihelp-query+allpages-param-maxsize": "להגביל לדפים שיש בהם לכל היותר מספר כזה של בתים.",
        "apihelp-query+allpages-param-prtype": "להגביל רק לדפים מוגנים.",
+       "apihelp-query+allpages-param-prlevel": "לסנו הגנות לפי רמת ההגנה (חייב לשמש עם $1prtype= parameter).",
+       "apihelp-query+allpages-param-prfiltercascade": "לסנן הגנות לפי דירוגיות (לא תקף כאשר $1prtype אינו מוגדר).",
        "apihelp-query+allpages-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+allpages-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allpages-param-filterlanglinks": "סינון על סמך קיום קישורים לשוניים בדף. יש לשים לב לכך שזה אולי לא יתייחס לקישורים לשוניים שנוספו על־ידי הרחבות.",
+       "apihelp-query+allpages-param-prexpiry": "לפי איזו תפוגת הגנה לסנן את הדף הזה:\n;indefinite:לקבל רק דפים מוגנית לצמיתות.\n;definite:לקבל רק דפים עם תפוגת הגנה מוגדרת.\n;all:לקבל דפים עם תפוגת הגנה כלשהי.",
        "apihelp-query+allpages-example-B": "להציג רשימה של דפים במתחילים באות <kbd>B</kbd>.",
        "apihelp-query+allpages-example-generator": "להציג מידע על 4 דפים שמתחילים באות <kbd>T</kbd>.",
        "apihelp-query+allpages-example-generator-revisions": "להציג את תוכן של 2 הדפים הראשונים שמתחילים ב־<kbd>Re</kbd> ושאינם דפי הפניה.",
        "apihelp-query+allredirects-param-from": "מאיזו כותרת הפניה להתחיל את מנייה.",
        "apihelp-query+allredirects-param-to": "כותרת ההפניה שהמנייה תיפסק בה.",
        "apihelp-query+allredirects-param-prefix": "חיפוש על דפי היעד שמתחילים בערך הזה.",
+       "apihelp-query+allredirects-param-unique": "להציג רק דפים ייחודיים. לא יכול לשמש עם $1prop=ids|fragment|interwiki.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+allredirects-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף של הדף המפנה (לא יכול לשמש עם <var>$1unique</var>).\n;title:הוספת כותרת ההפניה.\n;fragment:הוספת המובאה מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).\n;interwiki:הוספת תחילית הבינוויקי מההפניה, אם יש (לא יכול לשמש עם <var>$1unique</var>).",
        "apihelp-query+allredirects-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+allredirects-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+allredirects-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+allredirects-example-B": "רשימת דפי יעד, כולל חסרים, עם מזהי הדפים שהם מופיעים בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+allredirects-example-unique": "רשימת דפי יעד ייחודיים.",
        "apihelp-query+allredirects-example-unique-generator": "קבלת על דפי היעד, תוך כדי סימון החסרים.",
        "apihelp-query+allredirects-example-generator": "קבלת דפים שמכילים את ההפניות.",
        "apihelp-query+alltransclusions-description": "רשימת כל ההכללות (דפים שמוטבעים באמצעות &#123;&#123;x&#125;&#125;), כולל כאלה שאינם קיימים.",
-       "apihelp-query+alltransclusions-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\94×\9b×\9c×\9c×\94 ×\9c×\94ת×\97×\99×\9c ×\90ת ×\94×\9e× ×\99×\99×\94.",
+       "apihelp-query+alltransclusions-param-from": "×\9e×\90×\99×\96×\95 ×\9b×\95תרת ×\94×\94×\9b×\9c×\9c×\94 ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת.",
        "apihelp-query+alltransclusions-param-to": "כותרת ההכללה שהמנייה תיפסק בה.",
+       "apihelp-query+alltransclusions-param-prefix": "חיפוש כל הכותרות המוכללות שמתחילות הערך הזה.",
+       "apihelp-query+alltransclusions-param-unique": "להציג רק שמות מוכללים ייחודיים. לא יכול לשמש עם $1prop=ids.\nבעת שימוש בתור מחולל, נותן דפי יעד במקום דפי מקור.",
+       "apihelp-query+alltransclusions-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהי הדף של הדפים המכלילים (לא יכול לשמש עם $1unique).\n;title:הוספת כותרת ההכללה.",
        "apihelp-query+alltransclusions-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+alltransclusions-param-limit": "כמה פריטים להחזיר בסך הכול.",
        "apihelp-query+alltransclusions-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+alltransclusions-example-B": "רשימת כותרות מוכללות, כולל חסרות, עם מזהי הדפים שהן מופיעות בהם, החל מ־<kbd>B</kbd>.",
        "apihelp-query+alltransclusions-example-unique": "רשימת כותרת מוכללות ייחודיות.",
        "apihelp-query+alltransclusions-example-unique-generator": "קבלת כל כל הכותרות המוכללות, תוך כדי סימון החסרות.",
        "apihelp-query+alltransclusions-example-generator": "קבלת דפים שמכילים את ההכללות.",
        "apihelp-query+allusers-example-Y": "לרשום משתמשים שמתחילים ב־<kbd>Y</kbd>.",
        "apihelp-query+backlinks-description": "מציאת כל הדפים שמקשרים לדף הנתון.",
        "apihelp-query+backlinks-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם <var>$1pageid</var>.",
+       "apihelp-query+backlinks-param-pageid": "מזהה דף לחיפוש. לא ניתן להשתמש בזה יחד עם <var>$1title</var>.",
        "apihelp-query+backlinks-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+backlinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+backlinks-param-filterredir": "איך לסנן הפניות. אם זה מוגדר ל־<kbd>nonredirects</kbd> כש־<var>$1redirect</var> מופעל, זה חל רק על הרמה השנייה.",
+       "apihelp-query+backlinks-param-limit": "כמה דפים להחזיר בסך הכול. אם <var>$1redirect</var> מופעל, ההגבלה חלה על כל רמה בנפרד (כלומר יכולות להיות מוחזרות עד <span dir=\"ltr\">2 * <var>$1limit</var></span> תוצאות).",
+       "apihelp-query+backlinks-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
+       "apihelp-query+backlinks-example-simple": "הצגת קישורים ל־<kbd>Main Page</kbd>.",
+       "apihelp-query+backlinks-example-generator": "קבל מידע על דפים שמקשרים ל־<kbd>Main page<kbd>.",
+       "apihelp-query+blocks-description": "לרשום את כל המשתמשים וכתובות ה־IP שנחסמו.",
        "apihelp-query+blocks-param-start": "מאיזה חותם‏־זמן להתחיל למנות.",
        "apihelp-query+blocks-param-end": "באיזה חותם זמן להפסיק למנות.",
+       "apihelp-query+blocks-param-ids": "רשימת מזהי חסימות לרשום (לא חובה).",
+       "apihelp-query+blocks-param-users": "רשימת משתמשים לחיפוש (לא חובה).",
+       "apihelp-query+blocks-param-ip": "קבלת כל החסימות שחלות על טווח ה־IP או ה־CIDR הזה, כולל חסימות טווח.\nלא יכול לשמש יחד עם <var>$3users</var>. טווחי CIDR רחבים מ־IPv4/$1 או IPv6/$2 אינם מתקבלים.",
+       "apihelp-query+blocks-param-limit": "המספר המרבי של חסימות לרשום.",
        "apihelp-query+blocks-param-prop": "אילו מאפיינים לקבל:\n;id:הוספת מזהה החסימה.\n;user:הוספת שם המשתמש שנחסם.\n;userid:הוספת המזהה של המשמש שנחסם.\n;by:הוספת שם המשתמש שחסם.\n;byid:הוספת מזהה המשתמש שחסם.\n;timestamp:הוספת חותם־הזמן של החסימה.\n;expiry:הוספת חותם־הזמן של תפוגת החסימה.\n;reason:הוספת הסיבה שניתנה לחסימה.\n;range:הוספת טווח כתובות ה־IP שהחסימה משפיעה עליהן.\n;flags:מתייג את ההחרמה (autoblock‏, anononly, וכו'.).",
+       "apihelp-query+blocks-param-show": "להציג רק פריטים שמתאימים לאמות המידה האלו.\nלמשל, כדי לראות רק חסימות ללא לצמיתות על כתובות IP יש להגדיר <kbd>$1show=ip|!temp</kbd>.",
        "apihelp-query+blocks-example-simple": "רשימת חסימות.",
+       "apihelp-query+blocks-example-users": "רשימת חסימות של המשתמשים <kbd>Alice</kbd> ו־<kbd>Bob</kbd>.",
+       "apihelp-query+categories-description": "לרשום את כל הקטגוריות שהדף שייך אליהן.",
        "apihelp-query+categories-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קטגוריה:\n;sortkey:הוספת מפתח מיון (מחרוזת הקסדצימלית) ותחילית מפתח מיון (החלק הקריא) עבור קטגוריה.\n;timestamp:הוספת חותם־הזמן של יצירת הקטגוריה.\n;hidden:תיוג קטגוריות שהוסתרו באמצעות _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-show": "איזה סוג של קטגוריות להציג.",
        "apihelp-query+categories-param-limit": "כמה קטגוריות להחזיר.",
+       "apihelp-query+categories-param-categories": "לרשום רק את הקטגוריות האלו. שימושי לבדיקה עם דף מסוים נמצא בקטגוריה מסוימת.",
        "apihelp-query+categories-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+categories-example-simple": "קבלת רשימת קטגוריות שהם <kbd>Albert Einstein</kbd> שייך אליהן.",
+       "apihelp-query+categories-example-generator": "קבלת מידע על כל הקטגוריות שמשמשות בדף <kbd>Albert Einstein</kbd>.",
        "apihelp-query+categoryinfo-description": "החזרת מידע על הקטגוריות הנתונות.",
+       "apihelp-query+categoryinfo-example-simple": "קבחצ מידע על <kbd>Category:Foo</kbd> ועל <kbd>Category:Bar</kbd>.",
        "apihelp-query+categorymembers-description": "רשימת כל הדפים בקטגוריה נתונה.",
        "apihelp-query+categorymembers-param-title": "איזו קטגוריה למנות (נדרש). חייב לכלול את התחילית <kbd>{{ns:category}}:</kbd>. לא יכול לשמש יחד עם <var>$1pageid</var>.",
        "apihelp-query+categorymembers-param-pageid": "מזהה הדף של הקטגוריה שצריך למנות. לא יכול לשמש יחד עם <var>$1title</var>.",
        "apihelp-query+categorymembers-param-dir": "באיזה כיוון למיין.",
        "apihelp-query+categorymembers-param-start": "מאיזה חותם־זמן להתחיל לרשום. יכול לשמש רק עם <kbd>$1sort=timestamp</kbd>.",
        "apihelp-query+categorymembers-param-end": "באיזה חותם־זמן לסיים לרשום. יכול לשמש רק עם <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "מפתח מיון להתחיל לרשום ממנו, כפי שמוחזר על־ידי <kbd>$1prop=sortkey</kbd. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "מפתח מיון לסיים לרשום ממנו, כפי שמוחזר על־ידי <kbd>$1prop=sortkey</kbd>. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "תחילית מפתח מיון להתחיל לרשום ממנה. יכול לשמש רק עם <kbd>$1sort=sortkey</kbd>.  דורס את <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "תחילית מפתח מיון שהרשימה תסתיים <strong>לפניה</strong> (לא <strong>בה</strong>, אם הערך הזה מוגדר, הוא לא ייכלל!). יכול לשמש רק עם $1sort=sortkey. דורס את $1endhexsortkey.",
        "apihelp-query+categorymembers-param-startsortkey": "כדאי להשתמש ב־$1starthexsortkey במקום.",
        "apihelp-query+categorymembers-param-endsortkey": "כדאי להשתמש ב־$1endhexsortkey במקום.",
        "apihelp-query+categorymembers-example-simple": "קבלת עשרת העמודים הראשונים שתחת <kbd>קטגוריה:פיזיקה</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "קבל מידע על הדף עבור 10 הדפים הראשונים ב־<kbd>Category:Physics</kbd>.",
+       "apihelp-query+contributors-description": "קבלת רשימה של תורמים שנכנסו לחשבון ומניין של תורמים אלמוניים לדף.",
+       "apihelp-query+contributors-param-group": "לכלול רק משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-excludegroup": "לא לכלול משתמשים בקבוצות הנתונות. לא כולל קבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-rights": "לכלול רק משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
+       "apihelp-query+contributors-param-excluderights": "לא לכלול משתמשים עם ההרשאות הנתונות. לא כולל הרשאות שניתנו בקבוצות משתמעות או אוטומטיות כגון *, user או autoconfirmed.",
        "apihelp-query+contributors-param-limit": "כמה תורמים להחזיר.",
        "apihelp-query+contributors-example-simple": "הצגת תורמים לדף <kbd>עמוד ראשי</kbd>.",
        "apihelp-query+deletedrevisions-description": "קבלת מידע על גרסה מחוקה.\n\nיכול לשמש במספר דרכים:\n# קבלת גרסאות מחוקות עבור ערכת דפים, על־ידי הגדרת שמות או מזהי דף. ממוין לפי שם וחותם־זמן.\n# קבלת מידע על ערכת גרסאות מחוקות באמצעות הגדרת המזהים שלהם עם revid־ים. ממוין לפי מזהה גרסה.",
-       "apihelp-query+deletedrevisions-param-start": "×\91×\90×\99×\96×\94 ×\97×\95ת×\9dÖ¾×\96×\9e×\9f ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת. ×\9c×\90 ×ª×§×£ ×\91×¢×\99×\91×\95ר רשימת מזהי גרסה.",
+       "apihelp-query+deletedrevisions-param-start": "×\9e×\90×\99×\96×\94 ×\97×\95ת×\9dÖ¾×\96×\9e×\9f ×\9c×\94ת×\97×\99×\9c ×\9c×\9e× ×\95ת. ×\9c×\90 ×ª×§×£ ×\91×¢×\99×\91×\95×\93 רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-end": "באיזה חותם־זמן להפסיק למנות. לא תקף בעת עיבוד רשימת מזהי גרסה.",
        "apihelp-query+deletedrevisions-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+deletedrevisions-param-user": "לרשום רק גרסאות מאת המשתמש הזה.",
        "apihelp-query+deletedrevisions-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
+       "apihelp-query+deletedrevisions-example-titles": "רשימת גרסאות מחוקות של הדפים <kbd>Main Page</kbd> ו־<kbd>Talk:Main Page</kbd>, עם תוכן.",
+       "apihelp-query+deletedrevisions-example-revids": "קבלת מידע לגרסה המחוקה <kbd>123456</kbd>.",
        "apihelp-query+deletedrevs-description": "רשימת גרסאות מחוקות.\n\nפועל בשלושה אופנים:\n# רשימת גרסאות מחוקות לשמות שניתנו, ממוינות לפי חותם־זמן.\n# רשימת תרומות מחוקות של המשתמש שניתן, ממוינות לפי חותם־זמן (בלי לציין שמות).\n# רשימת כל הגרסאות המחוקות במרחב השם שניתן, ממוינות לפי שם וחותם־זמן (בלי לציין שמות, בלי להגדיר $1user).\n\nפרמטרים מסוימים חלים רק על חלק מהאופנים ולא תקפים באחרים.",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|מצב|מצבים}}: $2",
        "apihelp-query+deletedrevs-param-start": "באיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+deletedrevs-param-excludeuser": "לא לרשום גרסאות מאת המשתמש הזה.",
        "apihelp-query+deletedrevs-param-namespace": "לרשום רק דפים במרחב השם הזה.",
        "apihelp-query+deletedrevs-param-limit": "המספר המרבי של הגרסאות שיירשם.",
+       "apihelp-query+deletedrevs-param-prop": "אילו מאפיינים לקבל:\n;revid:הוספת מזהה הגרסה של הגרסה המחוקה.\n;parentid:הוספת מזהה הגרסה של הגרסה הקודמת של הדף.\n;user:הוספת המשתמש שעשה את הגרסה.\n;userid:הוספת מזהה המשתמש שעשה את הגרסה.\n;comment:הוספת ההערה על הגרסה.\n;parsedcomment:הוספת ההערה המפוענחת על הגרסה.\n;minor:מתייג אם הגרסה משנית.\n;len:מוסיף את האורך (בבתים) של הגרסה.\n;sha1:הוספת ה־SHA-1 (בסיס 16) של הגרסה.\n;content:הוספת התוכן של הגרסה.\n;token:<span class=\"apihelp-deprecated\">מיושן.</span> נותן אסימון עריכה.\n;tags:תגים עבור הגרסה.",
+       "apihelp-query+deletedrevs-example-mode1": "רשימת כל הגרסאות המחוקות של הדפים <kbd>Main Page</kbd> ו־<kbd>Talk:Main Page</kbd>, עם תוכן (mode 1).",
+       "apihelp-query+deletedrevs-example-mode2": "רשימת 50 העריכות המחוקות האחרונות של <kbd>Bob</kbd>‏ (mode 2).",
+       "apihelp-query+deletedrevs-example-mode3-main": "רשימת 50 הגרסאות המחוקות הראשונות במרחב הראשי (mode 3).",
+       "apihelp-query+deletedrevs-example-mode3-talk": "רשימת 50 הדפים המחוקים הראשונים במרחב השם {{ns:talk}}‏ (mode 3).",
        "apihelp-query+disabled-description": "יחידת ה־query הזאת כובתה.",
+       "apihelp-query+duplicatefiles-description": "רשימת כל הקבצים שהם כפולים של קבצים נתונים לפי ערכי הגיבוב.",
        "apihelp-query+duplicatefiles-param-limit": "כמה קבצים כפולים להחזיר.",
        "apihelp-query+duplicatefiles-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+duplicatefiles-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
        "apihelp-query+duplicatefiles-example-simple": "חיפוש אחר כפילויות של [[:קובץ:Albert Einstein Head.jpg]].",
        "apihelp-query+duplicatefiles-example-generated": "חיפוש אחר כפילויות בין כל הקבצים.",
+       "apihelp-query+embeddedin-description": "חיפוש כל הדפים שמטמיעים (מכלילים) את הכותרת הנתונה.",
        "apihelp-query+embeddedin-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
+       "apihelp-query+embeddedin-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
        "apihelp-query+embeddedin-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+embeddedin-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+embeddedin-param-filterredir": "איך לסנן עבור הפניות.",
        "apihelp-query+embeddedin-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+embeddedin-example-simple": "הצגת דפים שמכלילים את <kbd>Template:Stub</kbd>.",
+       "apihelp-query+embeddedin-example-generator": "קבלת מידע על דפים שמכלילים את <kbd>Template:Stub</kbd>.",
+       "apihelp-query+extlinks-description": "החזרת כל ה־URL־ים החיצוניים (לא בינוויקי) מהדפים הנתונים.",
        "apihelp-query+extlinks-param-limit": "כמה קישורים להחזיר.",
+       "apihelp-query+extlinks-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
+       "apihelp-query+extlinks-param-query": "מחרוזת חיפוש ללא פרוטוקול. שימושי לבדיקה האם דף מסוים מכיל url חיצוני מסוים.",
+       "apihelp-query+extlinks-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
+       "apihelp-query+extlinks-example-simple": "קבלת רשימת קישורים חיצוניים ב־<kbd>Main Page<kbd>.",
        "apihelp-query+exturlusage-description": "למנות דפים שמכילים URL נתון.",
+       "apihelp-query+exturlusage-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת ה־URL שמשמש בדף.",
+       "apihelp-query+exturlusage-param-protocol": "הפרוטוקול של ה־URL. אם זה ריק, ו־<var>$1query</var> מוגדר, הפרוטוקול הוא <kbd>http</kbd>. יש להשאיר את זה ואת <var>$1query</var> ריק כדי לרשום את כל הקישורים החיצוניים.",
+       "apihelp-query+exturlusage-param-query": "מחרוזת חיפוש ללא פרוטוקל. ר' [[Special:LinkSearch]]. יש להשאיר את זה ריק כדי לרשום את כל הקישורים החיצוניים.",
        "apihelp-query+exturlusage-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+exturlusage-param-limit": "כמה דפים להחזיר.",
+       "apihelp-query+exturlusage-param-expandurl": "הרחבת URL־ים בעלי פרוטוקול יחסי בפרוטוקול קנוני.",
+       "apihelp-query+exturlusage-example-simple": "הצגת דפים שמקשרים ל־<kbd>http://www.mediawiki.org</kbd>.",
        "apihelp-query+filearchive-description": "למנות את כל הקבצים המחוקים לפי הסדר.",
        "apihelp-query+filearchive-param-from": "מאיזו כותרת תמונה להתחיל למנות.",
        "apihelp-query+filearchive-param-to": "באיזו כותרת תמונה להפסיק למנות.",
+       "apihelp-query+filearchive-param-prefix": "חיפוש כל שמות התמונות שמתחילים בערך הזה.",
        "apihelp-query+filearchive-param-limit": "כמה תמונות להחזיר בסך הכול.",
        "apihelp-query+filearchive-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+filearchive-param-sha1": "גיבוב SHA1 של תמונה. דורס את $1sha1base36.",
        "apihelp-query+filearchive-param-sha1base36": "גיבוב SHA1 של תמונה בבסיס 36 (משמש במדיה־ויקי).",
        "apihelp-query+filearchive-param-prop": "איזה מידע על תמונה לקבל:\n;sha1:הוספת גיבוב SHA-1 עבור התמונה.\n;timestamp:הוספת חותם־זמן לגרסה המועלית.\n;user:הוספת המשתמש שהעלה על גרסת התמונה.\n;size:הוספת הגודל של התמונה בבתים והגובה, הרוחב ומניין הדפים (אם מתאים).\n;dimensions:כינוי ל־size.\n;description:הוספת תיאור לגרסת התמונה.\n;parseddescription:פענוח התיאור של הגרסה.\n;mime:הוספת ה־MIME של התמונה.\n;mediatype:הוספת סוג המדיה של התמונה.\n;metadata:רשימת מטא־נתוני Exif עבור גרסת הקובץ.\n;bitdepth:הוספת עומק הביטים של הגרסה.\n;archivename:הוספת שם הקובץ של גרסה מאורכבת עבור גרסאות שאינן האחרונה.",
+       "apihelp-query+filearchive-example-simple": "הצגת רשימת כל הקבצים המחוקים.",
+       "apihelp-query+filerepoinfo-description": "החזרת מידע מטא על מאגרי תמונות שמוגדרים בוויקי.",
+       "apihelp-query+filerepoinfo-param-prop": "אילו מאפייני מאגר לקבל (יכולים להיות יותר מזה באתרי ויקי אחדים):\n;apiurl:URL ל־API של המאגר – מועיל לקבלת מידע על התמונה מהמארח.\n;name:המפתח של המאגר – משמש למשל בערכים המוחזרים מ־<var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> ומ־[[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:שם קריא של אתר הוויקי של המאגר.\n;rooturl:URL שורש לנתיבי תמונות.\n;local:האם המאגר הוא מקומי או לא.",
+       "apihelp-query+filerepoinfo-example-simple": "קבלת מידע על מאגרי קבצים.",
+       "apihelp-query+fileusage-description": "מציאת כל הדפים שמשתמשים בקבצים הנתונים.",
+       "apihelp-query+fileusage-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+fileusage-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+fileusage-param-limit": "כמה להחזיר.",
        "apihelp-query+fileusage-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
+       "apihelp-query+fileusage-example-simple": "קבלת רשימת דפים שמשתמשים ב־[[:File:Example.jpg]].",
+       "apihelp-query+fileusage-example-generator": "קבלת מידע על דפים שמשתמשים ב־[[:File:Example.jpg]].",
        "apihelp-query+imageinfo-description": "החזרת מידע על קובץ והיסטורייה העלאה.",
        "apihelp-query+imageinfo-param-prop": "איזה מידע על הקובץ לקבל:",
        "apihelp-query+imageinfo-paramvalue-prop-timestamp": "הוספת חותם־זמן לגרסה שהועלתה.",
        "apihelp-query+imageinfo-paramvalue-prop-userid": "הוספת מזהה המשתמש שהעלה כל גרסה של קובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-comment": "תגובה על הגרסה.",
        "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "פענוח ההערה על גרסה.",
-       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "×\94×\95ספת ×©כותרת הקנונית של הקובץ.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "×\94×\95ספת ×\94כותרת הקנונית של הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-url": "מתן URL לקובץ ולדף התיאור.",
        "apihelp-query+imageinfo-paramvalue-prop-size": "הוספת הגודל של הקובץ בבתים והגובה, הרוחב ומניין הדפים (אם זה מתאים).",
-       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "×\9b×\99×\95× י ל־size.",
+       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "×\9b×\99× ×\95י ל־size.",
        "apihelp-query+imageinfo-paramvalue-prop-sha1": "הוספת גיבוב SHA-1 עבור הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-mime": "הוספת סוג ה־MIME של הקובץ.",
        "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "הוספת סוג ה־MIME של התמונה הממוזערת (נדרש url והפרמטר $1urlwidth).",
        "apihelp-query+imageinfo-param-limit": "כמה גרסאות של קובץ לכל קובץ.",
        "apihelp-query+imageinfo-param-start": "מאיז חותם־זמן להתחיל רשימה.",
        "apihelp-query+imageinfo-param-end": "באיזה חותם־זמן לסיים את הרשימה.",
+       "apihelp-query+imageinfo-param-urlwidth": "אם מוגדר $2prop=url, יוחזר URL לתמונה שגודלה הותאם לרוחב הזה.\nמסיבות של ביצועים, אם האפשרות הזאת משמשת, לא יוחזרו יותר מ־$1 תמונות.",
        "apihelp-query+imageinfo-param-urlheight": "דומה ל־$1urlwidth.",
+       "apihelp-query+imageinfo-param-metadataversion": "גרסת המטא־נתונים לשימוש. אם מוגדר <kbd>latest</kbd>, להשתמש בגרסה החדשה ביותר. בררת המחדל היא <kbd>1</kbd> לצורך תאימות אחורה.",
        "apihelp-query+imageinfo-param-extmetadatalanguage": "באיזו שפה לאחזר את המטא־נתונים. זה משפיע על אילו תרגומים לאחזר, האם יש כמה, וגם איך דברים כמו מספרים וערכים שונים מעוצבים.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "אם תרגומים של המאפיין extmetadata זמינים, לאחזר את כולם.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "אם זה מוגדר ולא ריק, רק המפתחות האלה יוחזרו עבור $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "מחרוזת פרמטר ייחודית למטפל. למשל, PDF־ים יכולים להשתמש ב־<kbd>page15-100px</kbd>.‏ <var>$1urlwidth</var> צריך לשמש ולהיות עקבי עם <var>$1urlparam</var>.",
        "apihelp-query+imageinfo-param-localonly": "חיפוש אחר קבצים במאגר המקומי בלבד.",
-       "apihelp-query+imageinfo-example-simple": "קבלת פרטים על הגרסה הנוכחית של [[:קובץ:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-simple": "קבלת מידע על הגרסה הנוכחית של [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-dated": "אחזור מידע על גרסאות של [[:File:Test.jpg]] מ־2008 ואחרי‏־כן.",
+       "apihelp-query+images-description": "להחזיר את כל הקבצים שמכילים הדפים הנתונים.",
        "apihelp-query+images-param-limit": "כמה קבצים להחזיר.",
+       "apihelp-query+images-param-images": "לרשום רק את הקבצים האלה. שימוש לבדיקת האם לדף מסוים יש קובץ מסוים.",
        "apihelp-query+images-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+images-example-simple": "קבלת רשימת קבצים שמשמשים ב־[[Main Page]].",
+       "apihelp-query+images-example-generator": "קבלת מידע על כל הקבצים שמשמשים ב־[[Main Page]].",
+       "apihelp-query+imageusage-description": "מציאת כל הדפים שמתמשים בשם התמונה הנתונה.",
        "apihelp-query+imageusage-param-title": "איזו כותרת לחפש. לא ניתן להשתמש בזה יחד עם $1pageid.",
-       "apihelp-query+imageusage-param-namespace": "איזה מרחב שם לרשום.",
+       "apihelp-query+imageusage-param-pageid": "מזהה דף לחיפוש. לא יכול לשמש יחד עם $1title.",
+       "apihelp-query+imageusage-param-namespace": "איזה מרחב שם למנות.",
        "apihelp-query+imageusage-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+imageusage-param-filterredir": "איך לסנן הפניות. אם זה מוגדר ל־nonredirects כש־$1redirect מופעל, זה חל רק על הרמה השנייה.",
+       "apihelp-query+imageusage-param-limit": "כמה דפים להחזיר בסך הכול. אם <var>$1redirect</var> מופעל, ההגבלה חלה על כל רמה בנפרד (כלומר יכולות להיות מוחזרות עד <span dir=\"ltr\">2 * <var>$1limit</var></span> תוצאות).",
+       "apihelp-query+imageusage-param-redirect": "אם הדף המקשר הוא הפניה, למצוא גם את כל הדפים שמקשרים לאותה ההפניה. ההגבלה המרבית מוקטנת בחצי.",
+       "apihelp-query+imageusage-example-simple": "הצגת דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageusage-example-generator": "קבלת פרטים על דפים שמשתמשים ב־[[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+info-description": "קבלת מידע בסיסי על הדף.",
+       "apihelp-query+info-param-prop": "אילו מאפיינים נוספים לקבל:",
+       "apihelp-query+info-paramvalue-prop-protection": "לרשום את רמת ההגנה של כל דף.",
+       "apihelp-query+info-paramvalue-prop-talkid": "מזהה הדף של דף השיחה עבור כל דף שאינו דף שיחה.",
+       "apihelp-query+info-paramvalue-prop-watched": "לרשום את מצב המעקב של כל דף.",
        "apihelp-query+info-paramvalue-prop-watchers": "מספר העוקבים, אם קיבלת הרשאה.",
        "apihelp-query+info-paramvalue-prop-notificationtimestamp": "חותם־זמן של הודעת רשימת מעקב של כל דף.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "מזהה הדף של הדף העיקרי של כל דף שיחה.",
+       "apihelp-query+info-paramvalue-prop-url": "נותן URL מלא, URL לעריכה ו־URL קנוני לכל דף.",
        "apihelp-query+info-paramvalue-prop-readable": "האם המשתמש יכול להציג דף זה.",
+       "apihelp-query+info-paramvalue-prop-preload": "נותן את הטקסט שמוחזר על־ידי EditFormPreloadText.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "נותן את האופן שבה שם הדף באמת מוצג.",
+       "apihelp-query+info-param-testactions": "בדיקה האם המשתמש הנוכחי יכול לבצע פעולות מסוימות על הדף.",
+       "apihelp-query+info-param-token": "להשתמש ב־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]] במקום.",
+       "apihelp-query+info-example-simple": "קבלת מידע על הדף <kbd>Main Page</kbd>",
+       "apihelp-query+info-example-protection": "קבלת מידע כללי ומידע על הגנה של הדף <kbd>Main Page</kbd>.",
+       "apihelp-query+iwbacklinks-description": "מציאות כל הדפים שמקשרים לקישור הבינוויקי הנתון.\n\nיכול לשמש למציאת כל הקישורים עם התחילית, או כל הקישורים לכותרת (עם תחילית נתונה). אי־שימוש בשום פרמטר אומר \"כל קישורי בינוויקי\".",
+       "apihelp-query+iwbacklinks-param-prefix": "תחילית לבינוויקי.",
        "apihelp-query+iwbacklinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1blprefix</var>.",
        "apihelp-query+iwbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+iwbacklinks-param-prop": "אילו מאפיינים לקבל:\n;iwprefix:הוספת התחילית של הבינוויקי.\n;iwtitle:הוספת הכותרת של הבינוויקי.",
        "apihelp-query+iwbacklinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+iwbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[wikibooks:Test]].",
+       "apihelp-query+iwbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[wikibooks:Test]].",
+       "apihelp-query+iwlinks-description": "החזרת כל קישורי הבינוויקי מהדפים הנתונים.",
+       "apihelp-query+iwlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם $1prop).",
+       "apihelp-query+iwlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.",
+       "apihelp-query+iwlinks-param-limit": "כמה קישורי בינוויקי להחזיר.",
+       "apihelp-query+iwlinks-param-prefix": "להחזיר רק קישורי בינוויקי עם התחילית הזאת.",
        "apihelp-query+iwlinks-param-title": "איזה קישור בינוויקי לחפש. צריך להשתמש בזה יחד עם <var>$1prefix</var>.",
        "apihelp-query+iwlinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+iwlinks-example-simple": "קבלת קישורי בינוויקי מהדף <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-description": "מציאת כל הדפים שמקשרים לקישור השפה הנתון.\n\nיכול לשמש למציאת כל הקישורים עם קוד שפה, או כל הקישורים לכותרת (עם שפה נתונה). אי־שימוש בשום פרמטר פירושו \"כל קישורי שפה\".\n\nנא לשים לב לכך שזה עשוי לא להתייחס לקישורי שפה שמוסיפות הרחבות.",
+       "apihelp-query+langbacklinks-param-lang": "שפה עבור קישור שפה.",
+       "apihelp-query+langbacklinks-param-title": "איזה קישור שפה לחפש. חייב לשמש עם $1lang.",
        "apihelp-query+langbacklinks-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+langbacklinks-param-prop": "אילו מאפיינים לקבל:\n;lllang:הוספת קוד השפה של קישור השפה.\n;lltitle:הוספת הכותרת של קישור השפה.",
        "apihelp-query+langbacklinks-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+langbacklinks-example-simple": "קבלת דפים שמקשרים ל־[[:fr:Test]].",
+       "apihelp-query+langbacklinks-example-generator": "קבלת מידע על דפים שמקשרים ל־[[:fr:Test]].",
+       "apihelp-query+langlinks-description": "החזרת כל הקישורים הבין־לשוניים מהדפים הנתונים.",
+       "apihelp-query+langlinks-param-limit": "כמה קישורי שפה להחזיר.",
+       "apihelp-query+langlinks-param-url": "האם לקבל את ה־URL המלא (לא יכול לשמש עם <var>$1prop</var>).",
+       "apihelp-query+langlinks-param-prop": "אילו מאפיינים נוספים לקבל עבור כל קישור בין־לשוני:\n;url:הוספת ה־URL המלא.\n;langname:הוספת שם השפה המתורגם (עם המאמץ הטוב ביותר). יש להשתמש ב־<var>$1inlanguagecode</var> כדי לשלוט בשפה.\n;autonym:הוספת השם הילידי של השפה.",
+       "apihelp-query+langlinks-param-lang": "להחזיר רק קישורי שפה עם קוד השפה הזה.",
        "apihelp-query+langlinks-param-title": "קישור לחיפוש. חובה להשתמש עם <var>$1lang</var>.",
        "apihelp-query+langlinks-param-dir": "באיזה כיוון לרשום.",
        "apihelp-query+langlinks-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות.",
+       "apihelp-query+langlinks-example-simple": "קבלת קישורים בין־לשוניים מהדף <kbd>Main Page</kbd>.",
        "apihelp-query+links-description": "החזרת כל הקישורים מהדפים שצוינו.",
+       "apihelp-query+links-param-namespace": "להציג קישורים רק במרחבי השם האלה.",
        "apihelp-query+links-param-limit": "כמה קישורים להחזיר.",
+       "apihelp-query+links-param-titles": "לרשום רק קישורים לכותרות האלו. שימושי לבדיקה האם דף מסוים מקשר לכותרת מסוימת.",
        "apihelp-query+links-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+links-example-simple": "קבלת קישורים מהדף <kbd>Main Page</kbd>",
+       "apihelp-query+links-example-generator": "קבלת מידע על דפי הקישור בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-namespaces": "קבלת קישורים מהדף <kbd>Main Page</kbd> במרחבי השם {{ns:user}} ו־{{ns:template}}.",
        "apihelp-query+linkshere-description": "מציאת כל הדפים שמקשרים לדפים הנתונים.",
+       "apihelp-query+linkshere-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+linkshere-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+linkshere-param-limit": "כמה להחזיר.",
        "apihelp-query+linkshere-param-show": "הצגת פריטים שתואמים את הדרישות הללו בלבד:\n;redirect:הצגת הפניות בלבד.\n;!redirect:הצגת קישורים שאינם הפניות בלבד.",
+       "apihelp-query+linkshere-example-simple": "קבלת רשימת דפים שמקשרים ל־[[Main Page]].",
+       "apihelp-query+linkshere-example-generator": "קבל מידע על דפים שמקשרים ל־[[Main Page]].",
        "apihelp-query+logevents-description": "קבלת אירועים מהרישומים.",
        "apihelp-query+logevents-param-prop": "אילו מאפיינים לקבל:\n;ids:הוספת המזהה של אירוע היומן.\n;title:הוספת שם הדף של אירוע היומן.\n;type:הוספת הסוג של אירוע היומן.\n;user:הוספת המשתמש האחראי על אירוע היומן.\n;userid:הוספת מזהה המשתמש האחראי על אירוע היומן.\n;timestamp:הוספת חותם־הזמן עבור האירוע.\n;comment:הוספת ההערה של האירוע.\n;parsedcomment:הוספת ההערה המפוענחת של האירוע.\n;details:הוספת פרטים נוספים על האירוע.\n;tags:רשימת התגים של האירוע.",
-       "apihelp-query+logevents-param-start": "באיזה חותם־זמן להתחיל למנות.",
+       "apihelp-query+logevents-param-type": "סינון עיולי יומן רק לסוג הזה.",
+       "apihelp-query+logevents-param-action": "סינון פעולות יומן רק לפעולה הזאת. דורס את <var>$1type</var>. פעולות עם תו־כולים כגון <kbd>action/*</kbd> מאפשרות לתת כל מחרוזת במקום הכוכבית.",
+       "apihelp-query+logevents-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+logevents-param-end": "באיזה חותם זמן להפסיק לרשום.",
-       "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו יימנו דפים.",
+       "apihelp-query+logevents-param-user": "לסנן את העיולים שעשה המשתמש הנתון.",
+       "apihelp-query+logevents-param-title": "סינון עיולים רק לכאלה שמתייחסים לדף.",
+       "apihelp-query+logevents-param-namespace": "סינון עיולים רק לכאלה במרחב השם הנתון.",
+       "apihelp-query+logevents-param-prefix": "סינון עיולים לכאלה שמתחילים עם התחילית הזאת.",
+       "apihelp-query+logevents-param-tag": "לרשום רק אירועים שמתויגם בתג הזה.",
+       "apihelp-query+logevents-param-limit": "כמה עיולי אירועים להחזיר בסך הכול.",
+       "apihelp-query+logevents-example-simple": "רשימת אירועי יומן אחרונים.",
+       "apihelp-query+pagepropnames-description": "רשימת כל שמות המאפיינים שמשמשים בוויקי.",
+       "apihelp-query+pagepropnames-param-limit": "המספר המרבי של השמות להחזיר.",
+       "apihelp-query+pagepropnames-example-simple": "לתת את 10 שמות המאפיינים הראשונים.",
+       "apihelp-query+pageprops-description": "קבלת מאפיינים שונים בתוכן הדף.",
+       "apihelp-query+pageprops-param-prop": "לרשום רק את המאפיינים האלה. שימושי לבדיקה האם דף מסוים משתמש במאפיין דף מסוים.",
+       "apihelp-query+pageprops-example-simple": "קבלת מאפיינים עבור הדפים <kbd>Main Page</kbd> ו־<kbd>MediaWiki</kbd>.",
+       "apihelp-query+pageswithprop-description": "לרשום את כל הדפים שמשתמשים במאפיין דף נתון.",
+       "apihelp-query+pageswithprop-param-propname": "מאפיין דף שעבורו למנות דפים.",
+       "apihelp-query+pageswithprop-param-prop": "אילו חלקי מידע לכלול:\n;ids:הוספת מזהה הדף.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;url:הוספת הערך של מאפיין הדף.",
        "apihelp-query+pageswithprop-param-limit": "מספר הדפים המרבי שיוחזר.",
        "apihelp-query+pageswithprop-param-dir": "באיזה כיוון לסדר.",
        "apihelp-query+pageswithprop-example-simple": "הצגת עשרת הדפים הראשונים שעושים שימוש ב־<code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
        "apihelp-query+pageswithprop-example-generator": "קבלת מידע נוסף על עשרת הדפים הראשונים המשתמשים ב־<code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-description": "ביצוע חיפוש תחילית של כותרות דפים.",
        "apihelp-query+prefixsearch-param-search": "מחרוזת לחיפוש.",
        "apihelp-query+prefixsearch-param-namespace": "שמות מתחם לחיפוש.",
        "apihelp-query+prefixsearch-param-limit": "מספר התוצאות המרבי להחזרה.",
        "apihelp-query+prefixsearch-param-offset": "מספר תוצאות לדילוג.",
+       "apihelp-query+prefixsearch-example-simple": "חיפוש שםות דפים שמתחילים ב־<kbd>meaning</kbd>.",
+       "apihelp-query+protectedtitles-description": "לרשום את כל הכותרות שמוגנות מפני יצירה.",
+       "apihelp-query+protectedtitles-param-namespace": "לרשום רק כותרות במרחבי השם האלה.",
+       "apihelp-query+protectedtitles-param-level": "לרשום רק שמות עם רמת ההגנה הזאת.",
        "apihelp-query+protectedtitles-param-limit": "כמה דפים להחזיר בסך הכול.",
        "apihelp-query+protectedtitles-param-start": "להתחיל לרשום בחותם־זמן ההגנה הזה.",
        "apihelp-query+protectedtitles-param-end": "באיזה חותם־זמן הגנה לסיים את הרשימה.",
        "apihelp-query+protectedtitles-param-prop": "אילו מאפיינים לקבל:\n;timestamp:הוספת חותם־הזמן של הוספת ההגנה.\n;user:הוספת המשתמש שהוסיף את ההגנה.\n;userid:הוספת מזהה המשתמש שהוסיף את ההגנה.\n;comment:הוספת ההערה עבור ההגנה.\n;parsedcomment:הוספת ההערה המפוענחת עבור ההגנה.\n;expiry:הוספת חותם־הזמן של הסרת ההגנה.\n;level:הוספת רמת ההגנה.",
+       "apihelp-query+protectedtitles-example-simple": "רשימת כותרות מוגנות.",
+       "apihelp-query+protectedtitles-example-generator": "חיפוש קישורים לכותרות מוגנות במרחב הראשי.",
+       "apihelp-query+querypage-description": "קבלת רשימה שמסופקת על־ידי דף מיוחד מבוסס־QueryPage.",
+       "apihelp-query+querypage-param-page": "שם הדף המיוחד. לתשומת לבך, זה תלוי־רישיות.",
        "apihelp-query+querypage-param-limit": "מספר תוצאות להחזרה.",
-       "apihelp-query+recentchanges-description": "מניית השינויים האחרונים.",
-       "apihelp-query+recentchanges-param-start": "באיזה חותם־זמן להתחיל למנות.",
+       "apihelp-query+querypage-example-ancientpages": "מחזיר תוצאות מ־[[Special:Ancientpages]].",
+       "apihelp-query+random-description": "קבלת ערכת דפים אקראיים.\n\nהדפים רשומים בסדר קבוע, ורק נקודת ההתחלה אקראית. זה אומר שאם, למשל, <samp>Main Page</samp> הוא הדף האקראי הראשון הרשימה, <samp>List of fictional monkeys</samp> יהיה <em>תמיד</em> השני, <samp>List of people on stamps of Vanuatu</samp> שלישי, וכו'.\n\nאם מספר הדפים במרחב השם נמוך מ־<var>$1limit</var>, יוחזרו פחות דפים. אותו הדף לא יוחזר פעמיים.",
+       "apihelp-query+random-param-namespace": "מחזיר דפים רק במרחבי השם האלה.",
+       "apihelp-query+random-param-limit": "להגביל את מספר הדפים האקראיים שיוחזרו.",
+       "apihelp-query+random-param-redirect": "לטעון הניה אקראית במקום דף אקראי.",
+       "apihelp-query+random-example-simple": "להחזיר שני דפים אקראיים מהמרחב הראשי.",
+       "apihelp-query+random-example-generator": "החזרת מידע על הדף על שני דפים אקראיים מהמרחב הראשי.",
+       "apihelp-query+recentchanges-description": "למנות שינויים אחרונים.",
+       "apihelp-query+recentchanges-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+recentchanges-param-end": "באיזה חותם זמן להפסיק לרשום.",
+       "apihelp-query+recentchanges-param-namespace": "לסנן את השינויים רק למרחבי השם האלה.",
        "apihelp-query+recentchanges-param-user": "לרשום רק שינויים של המשתמש הזה.",
        "apihelp-query+recentchanges-param-excludeuser": "Don't list changes by this user",
+       "apihelp-query+recentchanges-param-tag": "לרשום רק שינויים שמתויגים עם התג הזה.",
        "apihelp-query+recentchanges-param-prop": "לכלול פריטי מידע נוספים:\n;user:הוספת המשתמש האחראי על העריכה ותיוג אם זאת כתובת IP.\n;userid:הוספת המשתמש האחראי על העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת על העריכה.\n;flags:הוספת דגלים לעריכה.\n;timestamp:הוספת חותם־זמן של העריכה.\n;title:הוספת שם הדף של העריכה.\n;ids:הוספת מזהה הדף, מזהה שינויים אחרונים, והמזהה הגרסה החדשה והישנה.\n;sizes:הוספת אורך הדף החדש והישן בבתים.\n;redirect:מתייג שהדף הוא הפניה.\n;patrolled:מתייג עריכה בת־בדיקה בתור בדוקה או בלתי־בדוקה.\n;loginfo:הוספת מידע יומן (זהה יומן, סוג יומן וכו') לעיולי יומן.\n;tags:רשימת תגים עבור העיול.\n;sha1:הוספת סיכום־ביקורת תוכן לעיולים שמשויכים לגרסה.",
+       "apihelp-query+recentchanges-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
+       "apihelp-query+recentchanges-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
        "apihelp-query+recentchanges-param-limit": "כמה שינויים להחזיר בסך הכול.",
        "apihelp-query+recentchanges-param-type": "אילו סוגים של שינויים להציג.",
        "apihelp-query+recentchanges-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
        "apihelp-query+recentchanges-example-simple": "הצגת השינויים האחרונים.",
+       "apihelp-query+recentchanges-example-generator": "קבלת מידע על הדף על שינויים אחרונים שלא נבדקו.",
+       "apihelp-query+redirects-description": "מחזיר את כל ההפניות לדפים הנתונים.",
+       "apihelp-query+redirects-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל הפניה.\n;title:השם של כל הפניה.\n;fragment:מובאה מכל הפניה, אם יש.",
        "apihelp-query+redirects-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+redirects-param-limit": "כמה הפניות להחזיר.",
        "apihelp-query+redirects-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;fragment:להציג רק הפניות עם מקטע.\n;!fragment:להציג רק הפניות ללא מקטע.",
+       "apihelp-query+redirects-example-simple": "קבלת רשימת הפניות ל־[[Main Page]]",
+       "apihelp-query+redirects-example-generator": "קבלת מידע על כל ההפניות ל־[[Main Page]].",
+       "apihelp-query+revisions-description": "קבלת מידע על גרסה.\n\nיכול לשמש במספר דרכים:\n# קבלת נתונים על ערכת דפים (גרסה אחרונה), באמצעות כותרות או מזהי דף.\n# קבלת גרסאות עבור דף נתון אחד, באמצעות שימוש בכותרות או במזהי דף עם start‏, end או limit.\n# קבלת נתונים על ערכת גרסאות באמצעות הגדרת המזהים שלהם עם revid־ים.",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "יכול לשמש רק עם דף בודד (mode #2).",
        "apihelp-query+revisions-param-startid": "מאיזה מזהה גרסה להתחיל למנות.",
        "apihelp-query+revisions-param-endid": "באיזה מזהה גרסה להפסיק את מניית הגרסאות.",
        "apihelp-query+revisions-param-start": "מאיזה חותם־זמן של גרסה להתחיל למנות.",
        "apihelp-query+revisions-param-end": "למנות עד חותם־הזמן הזה.",
+       "apihelp-query+revisions-param-user": "לכלול רק גרסאות מאת משתמש.",
+       "apihelp-query+revisions-param-excludeuser": "לא לכלול שינויים מאת משתמש.",
        "apihelp-query+revisions-param-tag": "לרשום רק גרסאות עם התג הזה.",
+       "apihelp-query+revisions-param-token": "אילו אסימונים לקבל עבור כל גרסה.",
+       "apihelp-query+revisions-example-content": "קבל נתונים על תוכן עבור הגרסאות האחרונות של הכותרות <kbd>API</kbd> ו־<kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-last5": "קבלת 5 הגרסאות האחרונות של <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd> שנעשו אחרי 2006-05-01.",
+       "apihelp-query+revisions-example-first5-not-localhost": "קבלת 5 הגרבאות הראשונות של <kbd>Main Page</kbd> שלא נעשו על־ידי המשתמש האלמוני <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "קבלת 5 הגרסאות הראשונות של <kbd>Main Page</kbd> שנעשו על־ידי המשתמש <kbd>MediaWiki default</kbd>.",
+       "apihelp-query+revisions+base-param-prop": "אילו מאפיינים לקבל עבור כל גרסה:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "מזהה הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "דגלי גרסה (משני).",
        "apihelp-query+revisions+base-paramvalue-prop-timestamp": "חותם־הזמן של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "המתמש שעשה את הגרסה",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "מזהה המשתמש של יוצר הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "אורך (בבתים) של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (בבסיס 16) של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "מזהה מודל התוכן של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "הערה מאת המשתמש על הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "הערה מפוענחת מאת המשתמש על הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "הטקסט של הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "התגים עבור הגרסה.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "עץ פענוח XML של תוכן הגרסה (דורש מודל תוכן <code>$1</code>).",
        "apihelp-query+revisions+base-param-limit": "הגבלת מספר הגרסאות שיוחזרו.",
+       "apihelp-query+revisions+base-param-expandtemplates": "להרחיב תבניות בתוכן הגרסה (דורש $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "יצירת עץ פענוח XML עבור תוכן הגרסה (דורש את $1prop=content; מוחלף ב־<kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "פענוח תוכן הגרסה (דורש $1prop=content). מסיבות של ביצועים, אם האפשרות הזאת משמשת, $1limit נכפה לערך 1.",
+       "apihelp-query+revisions+base-param-section": "לאחזר רק את התוכן של הפִסקה עם המספר הזה.",
+       "apihelp-query+revisions+base-param-diffto": "מזהה הגרסה שאליו תושווה כל גרסה. יש להשתמש ב־<kbd>prev</kbd>‏, <kbd>next</kbd> ו־<kbd>cur</kbd> עבור הגרסה הקודמת, הבא והנוכחית, בהתאמה.",
+       "apihelp-query+revisions+base-param-difftotext": "הטקסט שאליו תושווה כל גרסה. מבצע השוואה רק של מספר מוגבל של גרסאות. דורס את <var>$1diffto</var>. אם מוגדר <var>$1section</var>, רק הפסקה הזאת תושווה אל מול הטקסט הזה.",
        "apihelp-query+revisions+base-param-contentformat": "תסדיר ההסדרה שמשמש את <var>$1difftotext</var> וצפוי לפלט של תוכן.",
        "apihelp-query+search-description": "ביצוע חיפוש בכל הטקסט.",
+       "apihelp-query+search-param-search": "חיפוש שמות דפים או תוכן שמתאים לערך הזה. אפשר להשתמש בחיפוש מחרוזת כדי לקרוא לאפשרויות חיפוש מתקדמות, בהתאם למה שממומש בשרת החיפוש של הוויקי.",
+       "apihelp-query+search-param-namespace": "חיפוש רק במרחבי השם האלה.",
        "apihelp-query+search-param-what": "איזה סוג חיפוש לבצע.",
        "apihelp-query+search-param-info": "אילו מטא־נתונים להחזיר.",
        "apihelp-query+search-param-prop": "אילו מאפיינים להחזיר:\n;size:הוספת גודל הדף בבתים.\n;wordcount:הוספת מניין המילים של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה האחרונה של הדף.\n;snippet:הוספת קטע קצר מפוענח מהדף.\n;titlesnippet:הוספת קטע קצר מפוענח משם הדף.\n;redirectsnippet:הוספת קטע קצר מפוענח משם ההפניה.\n;redirecttitle:הוספת שם ההפניה התואמת.\n;sectionsnippet:הוספת קטע קצר מפוענח של שם הפסקה התואמת.\n;sectiontitle:הוספת שם הפסקה התואמת.\n;categorysnippet:הוספת קטע קצר מפוענח של הקטגוריה התואמת.\n;isfilematch:הוספת בוליאני שמציין אם החיפוש תאם לתוכן של קובץ.\n;score:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">מיושן וחסר־תוקן.</span>",
        "apihelp-query+search-param-limit": "כמה דפים להחזיר בסך הכול.",
+       "apihelp-query+search-param-interwiki": "לכלול תוצאות בינוויקי בחיפוש ם זמין.",
+       "apihelp-query+search-param-backend": "באיזה שרת חיפוש להשתמש אם לא בבררת המחדל.",
+       "apihelp-query+search-example-simple": "חיפוש <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-text": "חיפוש טקסטים עבור <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-generator": "קבלת מידע על הדף עבור שמוחזרים מחיפוש אחרי <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-description": "החזרת מידע כללי על האתר.",
+       "apihelp-query+siteinfo-param-prop": "איזה מיד לקבל:\n;general:מידע מערכת כללי.\n;namespaces:רשימת מרחבי שם רשומים והשמות הקנוניים שלהם.\n;namespacealiases:רשימת כינויי מרחבי שם רשומים.\n;specialpagealiases:רשימת כינויים דפים מיוחדים.\n;magicwords:רשימות מילות קסם וכינוייהן.\n;statistics:החזרזת סטטיסטיקות אתר.\n;interwikimap:החזרת מפת בינוויקי (אפשר שתהיה מסוננת, אפשר שתהיה מותאמת מקומית באמצעות <var>$1inlanguagecode</var>).\n;dbrepllag:החזרת שרת מסד־נתונים עם שיהוי השכפול הגבוה ביותר.\n;usergroups:החזרת קבוצות משתמשים וההרשאות המשויכות.\n;libraries:החזרת הספריות המותקנות בוויקי.\n;extensions:החזרת ההרחבות המותקנות בוויקי.\n;fileextensions:החזרת רשימת סיומות קבצים שאפשר להעלות.\n;rightsinfo:החזרת הזכויות (הרישיון) של הוויקי, אם זמין.\n;restrictions:החזרת מידע על ההגבלות (ההגנות) הזמינות.\n;languages:החזרת השפות שמדיה־ויקי תומכת בהן (זה יכול להיות מותאם מקומים עם <var>$1inlanguagecode</var>).\n;skins:החזרת רשימת כל העיצובים הזמינים (זה יכול להיות מותאם מקומית באמצעות <var>$1inlanguagecode</var>, אחרת זה יהיה בשפת התוכן).\n;extensiontags:החזרת רשימת תגי הרחבת מפענח.\n;functionhooks:החזרת hook־ים של הרחבות מפענח.\n;showhooks:החזרת כל ה־hook־ים המנויים (תוכן של <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:החזרת מזהי משתנים.\n;protocols:החזרת רשימת הפרוטוקולים המותרים בקישורים חיצוניים.\n;defaultoptions:החזרת הערכים ההתחלתיים של העדפות משתמש.",
+       "apihelp-query+siteinfo-param-filteriw": "החזרה רק של עיולים מקומיים או רק של עיולים לא מקומיים ממפת הבינוויקי.",
+       "apihelp-query+siteinfo-param-showalldb": "רשימת כל שרתי מסד הנתונים, לא רק אלה שהכי מתעכבים.",
+       "apihelp-query+siteinfo-param-numberingroup": "רשימת מספרי משתמשים בקבוצות משתמשים.",
        "apihelp-query+siteinfo-param-inlanguagecode": "קוד שפה ששמות שפות מתורגמות (מאמץ טוב ביותר) ושמות עיצובים.",
        "apihelp-query+siteinfo-example-simple": "איזור מידע על האתר.",
+       "apihelp-query+siteinfo-example-interwiki": "אחזור תחיליות בינוויקי מקומיות.",
+       "apihelp-query+siteinfo-example-replag": "בדיקת שיהוי השכפול הנוכחי.",
+       "apihelp-query+stashimageinfo-description": "החזרת מידע על הקובץ עבור הקבצים המוסלקים.",
        "apihelp-query+stashimageinfo-param-filekey": "מפתח שמזהה העלאה קודמת שהונחה בצד באופן זמני.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "כינוי ל־$1filekey, לתאימות אחורה.",
+       "apihelp-query+stashimageinfo-example-simple": "החזרת מידע על קובץ מוסלק.",
+       "apihelp-query+stashimageinfo-example-params": "החזרת תמונות ממוזערות עבור שני קבצים מוסלקים.",
        "apihelp-query+tags-description": "רשימת תגי שינוי.",
+       "apihelp-query+tags-param-limit": "המספר המרבי של תגים לרשום.",
+       "apihelp-query+tags-param-prop": "אילו מאפיינים לקבל:\n;name:הוספת שם התג.\n;displayname:הוספת הודעת המערכת עבור התג.\n;description:הוספת תיאור התג.\n;hitcount:הוספת מספר הגרסאות ועיולי היומן עם התג הזה.\n;defined:ציון האם התג מוגדר.\n;source:קבלת מקורות התג, שיכולים להיות <samp>extension</samp> עבור תגים שמגדירות הרחבות ו־<samp>manual</samp> עבור תגים שמשתמשים יכולים להחיל ידנית.\n;active:האם התג עדיין מוּחל.",
        "apihelp-query+tags-example-simple": "רשימת תגים זמינים.",
+       "apihelp-query+templates-description": "החזרת כל הדפים המוכללים בדפים הנתונים.",
+       "apihelp-query+templates-param-namespace": "הצגת תבניות רק במרחב השם הזה.",
        "apihelp-query+templates-param-limit": "כמה תבניות להחזיר.",
+       "apihelp-query+templates-param-templates": "לרשום רק את התבניות האלו. שימושי לבדיקה האם דף מסוים משתמש בתבנית מסוימת.",
        "apihelp-query+templates-param-dir": "באיזה כיוון לרשום.",
+       "apihelp-query+templates-example-simple": "קבלת התבניות המשמשות בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-generator": "קבלת מידע על דפי התבנית שמשמשים ב־<kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-namespaces": "קבלת מידע במרחבי השם {{ns:user}} ו־{{ns:template}} שמוכללים בדף <kbd>Main Page</kbd>.",
+       "apihelp-query+tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.",
        "apihelp-query+tokens-param-type": "סוגי האסימונים לבקש.",
        "apihelp-query+tokens-example-simple": "אחזור אסימון csrf (בררת המחדל).",
        "apihelp-query+tokens-example-types": "אחזור אסימון של רשימת המעקב ואסימון של ניטור",
+       "apihelp-query+transcludedin-description": "מציאת כל הדפים שמכלילים את הדפים הנתונים.",
+       "apihelp-query+transcludedin-param-prop": "אילו מאפיינים לקבל:\n;pageid:מזהה הדף של כל דף.\n;title:השם של כל דף.\n;redirect:דגל אם הדף הוא הפניה.",
        "apihelp-query+transcludedin-param-namespace": "לכלול רק דפים במרחבי השם האלה.",
        "apihelp-query+transcludedin-param-limit": "כמה להחזיר.",
        "apihelp-query+transcludedin-param-show": "לחפש רק פריטים שמתאימים לאמות המידה הבאות:\n;redirect:להציג רק הפניות.\n;!redirect:לא להציג הפניות.",
+       "apihelp-query+transcludedin-example-simple": "קבלת רשימה של דפים שמכלילים את <kbd>Main Page</kbd>.",
+       "apihelp-query+transcludedin-example-generator": "קבלת מידע על הדפים שמכלילים את <kbd>Main Page</kbd>.",
        "apihelp-query+usercontribs-description": "קבלת כל העריכות של המשתמש.",
        "apihelp-query+usercontribs-param-limit": "המספר המרבי של התרומות להחזיר.",
        "apihelp-query+usercontribs-param-start": "באיזה חותם־הזמן להתחיל.",
        "apihelp-query+usercontribs-param-end": "באיזה חותם־הזמן לסיים",
        "apihelp-query+usercontribs-param-user": "עבור אילו משתמשים לאחזר תרומות.",
+       "apihelp-query+usercontribs-param-userprefix": "אחזור תרומות עבור כל המשתמשים שהשמות שלהם מתחילים בערך הזה. דורס את $1user.",
+       "apihelp-query+usercontribs-param-namespace": "לרשום רק תרומות במרחבי השם האלה.",
        "apihelp-query+usercontribs-param-prop": "לכלול פריטי מידע נוספים:\n;ids:הוספת מזהה הדף ומזהה הגרסה.\n;title:הוספת השם ומזהה מרחב השם של הדף.\n;timestamp:הוספת חותם־הזמן של העריכה.\n;comment:הוספת ההערה על העריכה.\n;parsedcomment:הוספת ההערה המפוענחת של העריכה.\n;size:הוספת הגודל החדש של העריכה.\n;sizediff:הוספת ההפרש של העריכה אל מול ההורה שלה.\n;flags:הוספת הדגלים של העריכה.\n;patrolled:מתייג עריכות בדוקות.\n;tags:רשימת תגים עבור עריכות.",
+       "apihelp-query+usercontribs-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלה, למשל רק עריכות לא־משניות.\n\nאם מוגדר <kbd>$2show=patrolled</kbd> או <kbd>$2show=!patrolled</kbd>, גרסאות ישנות מ־<var dir=\"ltr\">[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var>‏ ({{PLURAL:$1|שנייה אחת|$1 שניות}}) לא תוצגנה.",
        "apihelp-query+usercontribs-param-tag": "לרשום רק גרסאות עם התג הזה.",
        "apihelp-query+usercontribs-param-toponly": "לרשום רק שינויים שהם הגרסה האחרונה.",
+       "apihelp-query+usercontribs-example-user": "הצגת התרומות של המשתמש <kbd>Example</kbd>.",
+       "apihelp-query+usercontribs-example-ipprefix": "הצגת תרומות מכל כתובות ה־IP שמתחילות ב־<kbd dir=\"ltr\">192.0.2.</kbd>.",
+       "apihelp-query+userinfo-description": "קבלת מידע על המשתמש הנוכחי.",
        "apihelp-query+userinfo-param-prop": "אילו חלקי מידע לכלול:\n;blockinfo:מתייג אם המשתמש הנוכחי נחסם, על־ידי מי ומאיזו סיבה.\n;hasmsg:הוספת התג <samp>messages</samp> אם למשתמש הנוכחי יש הודעות ממתינות.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש שייך אליהן באופן אוטומטי.\n;rights:רשימת כל ההרשאות שיש למשתמש הזה.\n;changeablegroups:רשימת הקבוצות שהמשתמש הנוכחי יכול להוסיף אליהן ולגרוע מהן.\n;options:רשימת כל ההעדפות שהמשתמש הנוכחי הגדיר.\n;preferencestoken:<span class=\"apihelp-deprecated\">מיושן.</span> קבלת אסימון לשינוי ההעדפות של המשתמש הנוכחי.\n;editcount:הוספת מניין העריכות של המשתמש הנוכחי.\n;ratelimits:רשימת כל מגבלות הקצב שחלות על המשתמש הנוכחי.\n;realname:הוספת השם האמתי של המשתמש.\n;email:הוספת כתובת הדוא\"ל ותאריך אימות כתובת הדוא\"ל.\n;acceptlang:מדפיס את כותרת <code>Accept-Language</code> ששלח הלקוח בתסדיר מובנה.\n;registrationdate:הוספת תאריך הרישום של המשתמש.\n;unreadcount:הוספת מניין הדפים שלא נקראו ברשימת המעקב של המשתמש (לכל היותר $1; מחזיר <samp>$2</samp> אם יש יותר).",
+       "apihelp-query+userinfo-example-simple": "קבלת מידע על המשתמש הנוכחי.",
+       "apihelp-query+userinfo-example-data": "קבלת מידע נוסף על המשתמש הנוכחי.",
+       "apihelp-query+users-description": "קבלת מידע על רשימת משתמשים.",
        "apihelp-query+users-param-prop": "אילו חלקי מידע לקבל:\n;blockinfo:מתייג אם המשתמש חסום, על־ידי מי, ומאיזו סיבה.\n;groups:רשימת כל הקבוצות שהמשתמש שייך אליהן.\n;implicitgroups:רשימת כל הקבוצות שהמשתמש חבר בהן אוטומטית.\n;rights:רשימת כל ההרשאות שיש למשתמש.\n;editcount:הוספת מניין העריכות של המשתמש.\n;registration:הוספת חותם־הזמן של רישום המשתמש.\n;emailable:מתייג אם המשתמש יכול ורוצה לקבל דואר אלקטרוני דרך [[Special:Emailuser]].\n;gender:מתייג את המגדר של המשתמש. מחזיר \"male\"‏, \"female\" או \"unknown\".",
+       "apihelp-query+users-param-users": "רשימת משתמשים שעליהם צריך לקבל מידע.",
+       "apihelp-query+users-param-token": "יש להשתמש ב־<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd> במקום.",
+       "apihelp-query+users-example-simple": "החזרת מידע עבור המשתמש <kbd>Example</kbd>.",
+       "apihelp-query+watchlist-description": "קבלת שינויים אחרונים לדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-param-allrev": "לכלול גרסאות מרובות של אותו הדף בתוך מסגרת הזמן הנתונה.",
        "apihelp-query+watchlist-param-start": "מאיזה חותם־זמן להתחיל למנות.",
        "apihelp-query+watchlist-param-end": "באיזה חותם זמן להפסיק לרשום.",
+       "apihelp-query+watchlist-param-namespace": "סינון שינויים רק למרחבי השם שניתנו.",
        "apihelp-query+watchlist-param-user": "לרשום רק שינויים של המשתמש הזה.",
        "apihelp-query+watchlist-param-excludeuser": "Don't list changes by this user",
        "apihelp-query+watchlist-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
+       "apihelp-query+watchlist-param-prop": "אילו מאפיינים נוספים לקבל:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "הוספת מזהי גסה ומזהי דף.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "הוספת שם הדף.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "הוספת דגלים לעריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "הוספת המשתמש שעשה את העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "הוספת מזהה המשתמש של מי שעשה את העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "הוספת ההערה של העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "הוספת ההערכה המפוענחת של העריכה.",
        "apihelp-query+watchlist-paramvalue-prop-timestamp": "הוספת חותם־זמן של העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "תיוג עריכות שנבדקו.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "הוספת האורך החדש והישן של הדף.",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "הוספת חותם־זמן של ההודעה האחרונה למשתמש על העריכה.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "הוספת מידע מהיומן איפה שמתאים.",
+       "apihelp-query+watchlist-param-show": "הצגה רק של פריטים שמתאימים לאמות המידה האלו. למשל, כדי לראות רק עריכות משניות שעשו משתמשים שנכנסו לחשבון, יש להגדיר $1show=minor|!anon.",
+       "apihelp-query+watchlist-param-type": "אולי סוגי שינויים להציג:\n;edit:עריכות דף רגילות.\n;external:שינויים חיצוניים.\n;new:יצירות דף.\n;log:עיולי יומן.\n;categorize:שינויים בחברות בקטגוריה.",
+       "apihelp-query+watchlist-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlist-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlist-example-simple": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-props": "אחזור מידע נוסף על הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-allrev": "אחזור מידע על כל השינויים האחרונים לדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-generator": "אחזור מידע על הדף עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-generator-rev": "אחזור מידע על הגרסה עבור דפים שהשתנו לאחרונה ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlist-example-wlowner": "לרשום את הגרסה האחרונה עבור דפים שהשתנו לאחרונה ברשימת המעקב של משתמש <kbd>Example</kbd>.",
+       "apihelp-query+watchlistraw-description": "קבלת כל הדפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlistraw-param-namespace": "לרשום רק דפים במרחב השם הנתון.",
        "apihelp-query+watchlistraw-param-limit": "כמה תוצאות סך הכול להחזיר בכל בקשה.",
        "apihelp-query+watchlistraw-param-prop": "אילו מאפיינים נוספים לקבל:\n;changed:הוספת חותם־הזמן של ההודעה האחרונה למשתמש על העריכה.",
-       "apihelp-query+watchlistraw-param-fromtitle": "מאיזו כותרת (עם תחילית מרחב שם) להתחיל את המנייה.",
+       "apihelp-query+watchlistraw-param-show": "לרשום רק פריטים שעונים על אמות המידה האלו.",
+       "apihelp-query+watchlistraw-param-owner": "משמש יחד עם $1token לגישה לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlistraw-param-token": "אסימון אבטחה (זמין ב־[[Special:Preferences#mw-prefsection-watchlist|העדפות]]) שמאפשר לגשת לרשימת מעקב של משתמש אחר.",
+       "apihelp-query+watchlistraw-param-fromtitle": "מאיזו כותרת (עם תחילית מרחב שם) להתחיל למנות.",
        "apihelp-query+watchlistraw-param-totitle": "באיזו כותרת (עם תחילית מרחב שם) להפסיק למנות.",
+       "apihelp-query+watchlistraw-example-simple": "לרשום דפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-query+watchlistraw-example-generator": "אחזור מידע על הדפים עבור דפים ברשימת המעקב של המשתמש הנוכחי.",
+       "apihelp-revisiondelete-description": "מחיקה ושחזור ממחיקה של גרסאות.",
+       "apihelp-revisiondelete-param-type": "סוג מחיקת הגרסה שמתבצע.",
+       "apihelp-revisiondelete-param-target": "שם הדף למחיקת גרסה, אם זה נחוץ לסוג.",
+       "apihelp-revisiondelete-param-ids": "מזהים של הגרסה שתימחק.",
+       "apihelp-revisiondelete-param-hide": "מה להסתיר עבור כל גרסה.",
+       "apihelp-revisiondelete-param-show": "הסתרה של מה לבטל עבור כל גרסה.",
+       "apihelp-revisiondelete-param-suppress": "האם להעלים נתונים ממפעילים ומאחרים.",
+       "apihelp-revisiondelete-param-reason": "סיבה למחיקה או לשחזור ממחיקה.",
+       "apihelp-revisiondelete-example-revision": "הסתרת התוכן של הגרסה <kbd>12345</kbd> בדף <kbd>Main Page</kbd>.",
+       "apihelp-revisiondelete-example-log": "הסתרת כל הנתוהים על עיול היומן <kbd>67890</kbd> עם הסיבה <kbd>BLP violation</kbd>.",
+       "apihelp-rollback-description": "ביטול העריכה האחרונה לדף.\n\nאם המשמש האחרון שערך את הדף עשה מספר עריכות זו אחר זו, הן תשוחזרנה.",
+       "apihelp-rollback-param-title": "שם הדף לשחזור. לא יכול לשמש יחד עם <var>$1pageid</var>.",
+       "apihelp-rollback-param-pageid": "מזהה הדף לשחזור. לא יכול לשמש יחד עם <var>$1title</var>.",
+       "apihelp-rollback-param-user": "שם המשתמשים שהעריכות שלו תשוחזרנה.",
+       "apihelp-rollback-param-summary": "תקציר עריכה מותאם. אם ריק, ישמש תקציר לפי בררת מחדל.",
+       "apihelp-rollback-param-markbot": "לסמן את העריכות ששוחזרו ואת השחזור בתור עריכות בוט.",
        "apihelp-rollback-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
-       "apihelp-setnotificationtimestamp-description": "עדכון חותם־הזמן של ההודעה עבור דפים במעקב.\n\nזה משפיע על הדגשת הדפים שהשתנו ברשימת המעקב ובהיסטוריה, ושליחת דואר אלקטרוני כאשר ההעדפה \"לשלוח אליי דואר אלקטרוני כאשר נעשה שינוי בדף או בקובץ ברשימת המעקב שלי\" מופעלת.",
+       "apihelp-rollback-example-simple": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> על־ידי המשתמש <kbd>Example</kbd>.",
+       "apihelp-rollback-example-summary": "שחזור העריכות האחרונות לדף <kbd>Main Page</kbd> מאת משתמש ה־IP‏ <kbd>192.0.2.5</kbd> עם התקציר <kbd>Reverting vandalism</kbd> וסימון של העריכות האלה ושל השחזור בתור עריכות בוט.",
+       "apihelp-rsd-description": "יצוא סכמת RSD‏ (Really Simple Discovery).",
+       "apihelp-rsd-example-simple": "יצוא סכמת ה־RSD.",
+       "apihelp-setnotificationtimestamp-description": "עדכון חותם־הזמן של ההודעה עבור דפים במעקב.\n\nזה משפיע על הדגשת הדפים שהשתנו ברשימת המעקב ובהיסטוריה, ושליחת דואר אלקטרוני כאשר ההעדפה \"{{int:tog-enotifwatchlistpages}}\" מופעלת.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "לעבוד על כל הדפים שבמעקב.",
        "apihelp-setnotificationtimestamp-param-timestamp": "חותם־הזמן להגדרת חותם־זמן של הודעה.",
        "apihelp-setnotificationtimestamp-param-torevid": "לאיזו גרסה להגדיר את חותם הזמן (רק דף אחד).",
        "apihelp-setnotificationtimestamp-param-newerthanrevid": "הגרסה שחותם־הזמן של ההודעה יוגדר בתור חדש ממנה (רק דף אחד).",
+       "apihelp-setnotificationtimestamp-example-all": "אתחול מצב ההודעה עבור כל רשימת המעקב.",
+       "apihelp-setnotificationtimestamp-example-page": "אתחול מצב ההודעה עבור <kbd>Main Page</kbd>.",
        "apihelp-setnotificationtimestamp-example-pagetimestamp": "הגדרת חותם־הזמן להודעה ל־<kbd>Main page</kbd> כך שכל העריכות מאז 1 בינואר 2012 מוגדרות בתור כאלה שלא נצפו.",
+       "apihelp-setnotificationtimestamp-example-allpages": "אתחול מצב ההודעה עבור דפים במרחב השם <kbd>{{ns:user}}</kbd>.",
+       "apihelp-tag-description": "הוספת או הסרה של תגים מגרסאות בודדות או עיולי יומן בודדים.",
+       "apihelp-tag-param-rcid": "מזהה שינוי אחרון אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
+       "apihelp-tag-param-revid": "מזהה גרסה אחד או יותר שתג יתווסף אליה או יוסר ממנה.",
+       "apihelp-tag-param-logid": "מזהה עיול יומן אחד או יותר שתג יתווסף אליו או יוסר ממנו.",
+       "apihelp-tag-param-add": "התגים להוספה. אפשר להוסיף רק תגים קיימים.",
+       "apihelp-tag-param-remove": "תגים להסרה. רק תגים שהוגדרו ידנית או שאינם מוגדרים כלל יכולים להיות מוסרים.",
        "apihelp-tag-param-reason": "סיבה לשינוי.",
+       "apihelp-tag-example-rev": "הוספת התג <kbd>vandalism</kbd> לגרסה עם המזהה 123 בלי לציין סיבה",
+       "apihelp-tag-example-log": "הסרת התג <kbd>spam</kbd> מעיול עם המזהה 123 עם הסיבה <kbd>Wrongly applied</kbd>",
        "apihelp-tokens-description": "קבלת אסימונים לפעולות שמשנות נתונים.\n\nהיחידה הזאת הוכרזה בתור מיושנת לטובת [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-param-type": "סוגי האסימונים לבקש.",
+       "apihelp-tokens-example-edit": "אחזור אסימון עריכה (בררת המחדל).",
+       "apihelp-tokens-example-emailmove": "אחזור אסימון דוא\"ל ואסימון העברה.",
+       "apihelp-unblock-description": "שחרור משתמש מחסימה.",
+       "apihelp-unblock-param-id": "מזהה החסימה לשחרור (מתקבל דרך <kbd>list=blocks</kbd>). לא יכול לשמש יחד עם <var>$1user</var>.",
+       "apihelp-unblock-param-user": "שם משתמש, כתובת IP או טווח IP לחסימה. לא יכול לשמש יחד עם <var>$1id</var>",
+       "apihelp-unblock-param-reason": "סיבה להסרת חסימה.",
+       "apihelp-unblock-example-id": "לשחרר את החסימה עם מזהה #<kbd>105</kbd>.",
+       "apihelp-unblock-example-user": "לשחרר את החסימה של המשתמש <kbd>Bob</kbd> עם הסיבה <kbd>Sorry Bob</kbd>.",
        "apihelp-undelete-description": "שחזור גרסאות של דף מחוק.\n\nאפשר לאחזר רשימת גרסאות מחוקות (כולל חותמי־זמן) דרך [[Special:ApiHelp/query+deletedrevs|list=deletedrevs]], ואפשר לאחזר רשימת מזהי קבצים מחוקים דרך [[Special:ApiHelp/query+filearchive|list=filearchive]].",
+       "apihelp-undelete-param-title": "שם הדף לשחזור ממחיקה.",
        "apihelp-undelete-param-reason": "סיבה לשחזור.",
        "apihelp-undelete-param-timestamps": "חותמי־זמן של הגרסה לשחזור. אם גם <var>$1timestamps</var> וגם <var>$1fileids</var> ריקים, הכול ישוחזר.",
+       "apihelp-undelete-param-fileids": "מזהי גרסאות הקובץ לשחזור. אם גם <var>$1timestamps</var> וגם <var>$1fileids</var> ריקים, הכול ישוחזר.",
        "apihelp-undelete-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
+       "apihelp-undelete-example-page": "שחזור ממחיקה של הדף <kbd>Main Page</kbd>.",
+       "apihelp-undelete-example-revisions": "שחזור שתי גרסאות של הדף <kbd>Main Page</kbd>.",
+       "apihelp-upload-description": "העלאת קובץ, או קבלת מצב ההעלאות הממתינות.\n\nיש מספר שיטות:\n* להעלות את הקובץ ישירות, באמצעות הפרמטר <var>$1file</var>.\n* להעלות את הקובץ בחלקים, באמצעות הפרמטרים <var>$1filesize</var>‏, <var>$1chunk</var> ו־<var>$1offset</var>.\n* לגרום לשרת מדיה־ויקי לאחזר את הקובץ מ־URL באמצעות הפרמטר <var>$1url</var>.\n* להשלים העלאה קודמת שנכשלה בשל אזהרות באמצעות הפרמטר <var>$1filekey</var>.\nלתשומך לבך, יש לעשות את HTTP POST בתור העלאת קובץ (כלומר באמצעות <code>multipart/form-data</code>) בעת שליחת ה־<var>$1file</var>.",
        "apihelp-upload-param-filename": "שם קובץ היעד.",
+       "apihelp-upload-param-comment": "הערת העלאה. משמש גם בתור טקסט הדף ההתחלתי עבור קבצים חדשים אם <var>$1text</var> אינו מצוין.",
+       "apihelp-upload-param-text": "טקסט הדף ההתחלתי לקבצים חדשים.",
+       "apihelp-upload-param-watch": "לעקוב אחרי הדף.",
        "apihelp-upload-param-watchlist": "הוספה או הסרה של הדף ללא תנאי מרשימת המעקב של המשתמש הנוכחי, להשתמש בהעדפות או לא לשנות את המעקב.",
        "apihelp-upload-param-ignorewarnings": "להתעלם מכל האזהרות.",
+       "apihelp-upload-param-file": "תוכן הקובץ.",
+       "apihelp-upload-param-url": "URL לאחזור הקובץ.",
        "apihelp-upload-param-filekey": "מפתח שמזהה העלאה קודמת שהונחה בצד באופן זמני.",
+       "apihelp-upload-param-sessionkey": "אותו דבר כמו $1filekey, מושאר לצור תאימות אחורה.",
+       "apihelp-upload-param-stash": "אם זה מוגדר, השרת יסליק את הקובץ זמנית במקום להוסיף אותו למאגר.",
+       "apihelp-upload-param-filesize": "גודל הקובץ של כל ההעלאה.",
+       "apihelp-upload-param-offset": "היסט החתיכה בבתים.",
+       "apihelp-upload-param-chunk": "תוכן החתיכה.",
+       "apihelp-upload-param-async": "להפוך פעולות קבצים גדולות לאסינכרוניות כשאפשר.",
+       "apihelp-upload-param-asyncdownload": "להפוך אחזור URL לאסינכרוני.",
+       "apihelp-upload-param-leavemessage": "אם משמש asyncdownload, להשאיר הודעה על דף שיחת משתמש אם זה מסתיים.",
+       "apihelp-upload-param-statuskey": "לאחזר את מצב העלאת הקובץ עבור מפתח הקובץ הזה (העלאה באמצעות URL).",
+       "apihelp-upload-param-checkstatus": "לאחזר רק מצב העלאה עבור מפתח הקובץ שניתן.",
+       "apihelp-upload-example-url": "להעלות מ־URL.",
+       "apihelp-upload-example-filekey": "להשלים העלאה שנכשלה בשל אזהרות.",
+       "apihelp-userrights-description": "שינוי חברות בקבוצות של המשתמש.",
        "apihelp-userrights-param-user": "שם משתמש.",
+       "apihelp-userrights-param-userid": "מזהה משתמש.",
+       "apihelp-userrights-param-add": "הוספת המשתמש לקבוצות האלו.",
+       "apihelp-userrights-param-remove": "הסרת משתמש מהקבוצות האלו.",
        "apihelp-userrights-param-reason": "סיבה לשינוי.",
+       "apihelp-userrights-example-user": "הוספת המשתמש <kbd>FooBot</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-userid": "הוספת המשתמש עם המזהה <kbd>123</kbd> לקבוצה <kbd>bot</kbd> והסרתו מהקבוצות <kbd>sysop</kbd> ו־<kbd>bureaucrat</kbd>.",
+       "apihelp-watch-description": "להוסיף דפים לרשימת המעקב של המשתמש הנוכחי או הסרתם ממנה.",
+       "apihelp-watch-param-title": "הדף להוסיף לרשימת המעקב או להסיר ממנה. יש להשתמש במקום זאת ב־<var>$1titles</var>.",
+       "apihelp-watch-param-unwatch": "אם זה מוגדר, הדף יהיה לא במעקב במקום להיות במעקב.",
+       "apihelp-watch-example-watch": "לעקוב אחרי הדף <kbd>Main Page</kbd>.",
+       "apihelp-watch-example-unwatch": "להפסיק את המעקב אחרי הדף <kbd>Main Page</kbd>.",
+       "apihelp-watch-example-generator": "לעקוב אחרי הדפים הראשונים במרחב הראשי.",
        "apihelp-format-example-generic": "להחזיר את תוצאות השאילתה בתסדיר $1.",
        "apihelp-dbg-description": "לפלוט נתונים בתסדיר <code dir=\"ltr\">var_export()</code> של PHP.",
        "apihelp-dbgfm-description": "לפלוט את הנתונים בתסדיר <code dir=\"ltr\">var_export()</code> של PHP (עם הדפסה יפה ב־HTML).",
        "apihelp-json-description": "לפלוט נתונים בתסדיר JSON.",
+       "apihelp-json-param-callback": "אם זה צוין, עוטף את הפלט לתוך קריאת פונקציה נתונה. למען הבטיחות, כל הנתונים הייחודיים למשתמש יוגבלו.",
        "apihelp-json-param-utf8": "אם זה צוין, רוב התווים שאינם ASCII (אבל לא כולם) יקודדו בתור UTF-8 במקום להתחלף בסדרות חילוף הקסדצימליות. זאת בררת המחדל אם הערך של <var>formatversion</var> הוא לא <kbd>1</kbd>.",
        "apihelp-json-param-ascii": "אם זה צוין, לקודד את כל מה שאינו ASCII בסדרות חילוף הקסדצימליות. זאת בררת המחדל כש־<var>formatversion</var> היא <kbd>1</kbd>.",
        "apihelp-json-param-formatversion": "תסדיר הפלט:\n;1:תסדיר עם תאימות אחורה (ערכים בוליאניים בסגנון XML, מפתחות <samp>*</samp> לצומתי תוכן, וכו').\n;2:תסדיר מודרני ניסיוני. הפרטים יכולים להשתנות!\n;latest:להשתמש בתסדיר החדש ביותר (כרגע <kbd>2</kbd>), יכול להשתנות ללא התראה.",
        "apihelp-txtfm-description": "לפלוט את הנתונים בתסדיר <code dir=\"ltr\">print_r()</code> של PHP (עם הדפסה יפה ב־HTML).",
        "apihelp-xml-description": "לפלוט נתונים בתסדיר XML.",
        "apihelp-xml-param-xslt": "אם צוין, יש להוסיף את שם הדף כגיליון עיצוב XSL. על הערך להיות כותרת ב {{ns:mediawiki}} במרחב שם המשתמש, המסתיים ב-  <code>.xsl</code>.",
+       "apihelp-xml-param-includexmlnamespace": "אם זה צוין, מוסיף מרחב שם של XML.",
        "apihelp-xmlfm-description": "לפלוט נתונים בתסדיר XML (עם הדפסה יפה ב־HTML).",
        "apihelp-yaml-description": "לפלוט את הנתונים בתסדיר YAML.",
        "apihelp-yamlfm-description": "לפלוט נתונים בתסדיר YAML (עם הדפסה יפה ב־HTML).",
        "api-format-title": "תוצאה של API של מדיה־ויקי",
        "api-format-prettyprint-header": "זהו ייצוג ב־HTML של תסדיר $1. תסדיר HTML טוב לתיקון שגיאות, אבל אינו מתאים ליישומים.\n\nיש לציין את הפרמטר <var>format</var> כדי לשנות את תסדיר הפלט. כדי לראות ייצוג של תסדיר $1 לא ב־HTML יש לרשום <kbd>format=$2</kbd>.\n\nר' את [[mw:API|התיעוד המלא]], או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
+       "api-format-prettyprint-header-only-html": "זה ייצוג HTML שמיועד לניפוי שגיאות ואינו מתאים לשימוש ביישומים.\n\nר' את [[mw:API|התיעוד המלא]] או את [[Special:ApiHelp/main|העזרה של API]] למידע נוסף.",
        "api-orm-param-props": "באילו שדות לעשות שאילתה.",
        "api-orm-param-limit": "מספר מרבי של שורות להחזיר.",
        "api-pageset-param-titles": "רשימת כותרות.",
        "api-pageset-param-pageids": "רשימת מזהי דף לעבוד עליהם.",
        "api-pageset-param-revids": "רשימת מזהי גרסה לעבוד עליהם.",
        "api-pageset-param-generator": "קבלת רשימת דפים לעבוד עליהם על־ידי הרצת יחידת ה־query שצוינה.\n\n<strong>לתשומת לבך:</strong> לשמות בפרמטר generator צריכה להיות התחילית \"g\", ר' דוגמאות.",
-       "api-pageset-param-redirects-generator": "פתרון אוטומטי של הפניות ב־<var>$1titles</var>, ב־<var>$1pageids</var>, וב־<var>$1revids</var>, ודפים שמחזיר <var>$1generator</var>.",
+       "api-pageset-param-redirects-generator": "פתר×\95×\9f ×\90×\95×\98×\95×\9e×\98×\99 ×©×\9c ×\94פנ×\99×\95ת ×\91Ö¾<var>$1titles</var>, ×\91Ö¾<var>$1pageids</var>, ×\95×\91Ö¾<var>$1revids</var>, ×\95×\91×\93פ×\99×\9d ×©×\9e×\97×\96×\99ר <var>$1generator</var>.",
        "api-pageset-param-redirects-nogenerator": "פתרון אוטומטי של הפניות ב־<var>$1titles</var>, ב־<var>$1pageids</var> וב־<var>$1pageids</var>.",
-       "api-pageset-param-converttitles": "המרת כותרות לסוגי כתב אחרים אם זה נחוץ. זה עובד רק אם שפת הכותרת של הוויקי תומכת בהמרת סוגי כתב. השפות שתמכות בהמרת סוגי כתב הן $1.",
+       "api-pageset-param-converttitles": "×\94×\9eרת ×\9b×\95תר×\95ת ×\9cס×\95×\92×\99 ×\9bת×\91 ×\90×\97ר×\99×\9d ×\90×\9d ×\96×\94 × ×\97×\95×¥. ×\96×\94 ×¢×\95×\91×\93 ×¨×§ ×\90×\9d ×©×¤×ª ×\94×\9b×\95תרת ×©×\9c ×\94×\95×\95×\99ק×\99 ×ª×\95×\9e×\9bת ×\91×\94×\9eרת ×¡×\95×\92×\99 ×\9bת×\91. ×\94שפ×\95ת ×©×ª×\95×\9e×\9b×\95ת ×\91×\94×\9eרת ×¡×\95×\92×\99 ×\9bת×\91 ×\94×\9f $1.",
        "api-help-title": "עזרה של MediaWiki API",
        "api-help-lead": "זהו דף תיעוד של API שנוצר באופן אוטומטי.\n\nתיעוד ודוגמאות: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "יחידה ראשית",
        "api-help-param-required": "פרמטר זה נדרש.",
        "api-help-datatypes-header": "סוגי נתונים",
        "api-help-datatypes": "חלק מסוגי הפרמטרים בבקשות API דורשים הסבר נוסף:\n;בוליאני (boolean)\n:פרמטרים בוליאניים עובדים כמו תיבות סימון של HTML: אם הפרמטר צוין, בלי קשר לערך שלו, הוא אמת (true). בשביל ערך שקר (false), יש להשמיט את הפרמטר לגמרי.\n;חותם־זמן (timestamp)\n:אפשר לכתוב חותמי־זמן במספר תסדירים. תאריך ושעה לפי ISO 8601 הוא הדבר המומלת. כל הזמנים מצוינים ב־ UTC, לא תהיה השפעה לשום אזור זמן שיצוין.\n:* תאריך ושעה לפי ISO 8601‏, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (לא חובה לכתוב פיסוק ו־<kbd>Z</kbd>)\n:* תאריך ושעה לפי ISO 8601 עם חלקי שנייה (שלא תהיה להם שום השפעה), <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (לא חובה לכתוב קווים מפרידים, נקודתיים ו־<kbd>Z</kbd>)\n:* תסדיר MediaWiki‏, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* תסדיר מספרי כללי, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (לאזור זמן אופציונלי של <kbd>GMT</kbd>‏, <kbd dir=\"ltr\">+<var>##</var></kbd>, או <kbd dir=\"ltr\">-<var>##</var></kbd> אין השפעה)\n:* תסדיר EXIF‏, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 2822 (אפשר להשמיט את אזור הזמן), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר RFC 850 (אפשר להשמיט את אזור הזמן), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* תסדיר C ctime‏, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* שניות מאז 1970-01-01T00:00:00Z בתור מספר שלך בין 1 ל־13 (לא כולל <kbd>0</kbd>)\n:* המחרוזת <kbd>now</kbd>",
+       "api-help-param-type-limit": "סוג: מספר שלם או <kbd>max</kbd>",
        "api-help-param-type-integer": "סוג: {{PLURAL:$1|1=מספר שלם|2=רשימת מספרים שלמים}}",
        "api-help-param-type-boolean": "סוג: בוליאני ([[Special:ApiHelp/main#main/datatypes|פרטים]])",
        "api-help-param-type-timestamp": "סוג: {{PLURAL:$1|חותם־זמן|רשימת חותמי־זמן}} ([[Special:ApiHelp/main#main/datatypes|תסדירים מורשים]])",
+       "api-help-param-type-user": "סוג: {{PLURAL:$1|1=שם משתמש|2=רשימת שמות משתמשים}}",
        "api-help-param-list": "{{PLURAL:$1|1=ערך אחד|2=ערכים (מופרדים באמצעות \"<kbd>{{!}}</kbd>\")}}: $2",
        "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=חייב להיות ריק|יכול להיות ריק או $2}}",
        "api-help-param-limit": "מספר הפרמטרים לא יכול להיות גדול מ־$1.",
        "api-help-param-multi-max": "מספר הערכים המרבי הוא {{PLURAL:$1|$1}} (עבור בוטים – {{PLURAL:$2|$2}}).",
        "api-help-param-default": "ברירת מחדל: $1",
        "api-help-param-default-empty": "ברירת מחדל: <span class=\"apihelp-empty\">(ריק)</span>",
-       "api-help-param-token": "אסימון \"$1\" אוחזר מ־[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token": "×\90ס×\99×\9e×\95×\9f \"$1\" ×©×\90×\95×\97×\96ר ×\9eÖ¾[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
        "api-help-param-token-webui": "לשם תאימות, גם האסימון שמשמש בממשק דפדפן מתקבל.",
        "api-help-param-disabled-in-miser-mode": "כבוי בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]].",
        "api-help-param-limited-in-miser-mode": "<strong>לתשומת לבך:</strong> בשל [[mw:Manual:$wgMiserMode|מצב חיסכון]], שימוש בזה יכול להוביל לפחות מ־<var>$1limit</var> תוצאות לפני המשך; במצבים קיצוניים ייתכן שיחזרו אפס תוצאות.",
index e36d585..7e6ecc4 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Csega",
                        "Dorgan",
-                       "Tacsipacsi"
+                       "Tacsipacsi",
+                       "ViDam"
                ]
        },
        "apihelp-main-param-action": "Milyen műveletet hajtson végre.",
@@ -18,7 +19,7 @@
        "apihelp-block-param-nocreate": "Új regisztráció megakadályozása",
        "apihelp-createaccount-param-name": "Felhasználónév.",
        "apihelp-delete-description": "Lap törlése.",
-       "apihelp-delete-example-simple": "Kezdőlap törlése.",
+       "apihelp-delete-example-simple": "<kbd>Kezdőlap</kbd> törlése.",
        "apihelp-edit-example-edit": "Lap szerkesztése",
        "apihelp-expandtemplates-param-title": "Lap címe.",
        "apihelp-userrights-param-userid": "Felhasználói azonosító."
index de9d65f..5201072 100644 (file)
@@ -23,6 +23,9 @@
        "apihelp-block-param-nocreate": "Impedir le creation de contos.",
        "apihelp-block-param-autoblock": "Blocar automaticamente le adresse IP usate le plus recentemente, e omne IPs successive desde le quales ille/-a tenta facer modificationes.",
        "apihelp-block-param-noemail": "Impedir que le usator invia e-mail per le wiki. (Require le derecto \"blockemail\").",
+       "apihelp-checktoken-param-type": "Typo de indicio a testar.",
+       "apihelp-checktoken-param-token": "Indicio a testar.",
+       "apihelp-createaccount-param-name": "Nomine de usator.",
        "apihelp-query+revisions-example-first5-not-localhost": "Obtener le prime 5 versiones del \"Pagina principal\" que non ha essite facite per le usator anonyme \"127.0.0.1\"",
        "api-credits": "Programmatores del API:\n* Roan Kattouw (programmator dirigente Sept. 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (creator, programmator dirigente Sept. 2006–Sept. 2007)\n* Brad Jorsch (programmator dirigente 2013–presente)\n\nInvia tu commentos, suggestiones e questiones a mediawiki-api@lists.wikimedia.org\no insere un reportage de bug a https://phabricator.wikimedia.org/."
 }
index 0d4877f..483b260 100644 (file)
@@ -6,7 +6,8 @@
                        "아라",
                        "LiteHell",
                        "Ysjbserver",
-                       "Alex00728"
+                       "Alex00728",
+                       "Hwangjy9"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [https://www.mediawiki.org/wiki/API:Main_page 설명문서]\n* [https://www.mediawiki.org/wiki/API:FAQ FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 메일링 리스트]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API 공지 사항] * [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 버그 및 요청] </div>\n<strong>상태:</strong> 이 페이지에 표시된 모든 기능은 정상 작동할 것이지만, API는 여전히 활발하게 개발되고 있으며, 언제든지 바뀔 수 있습니다. 업데이트 정보를 받아보려면 [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ the mediawiki-api-announce 메일링 리스트]를 구독하십시오.\n\n<strong>잘못된 요청:</strong> API에 잘못된 요청이 전송되면 HTTP 헤더에서 \"MediaWiki-API-Error\" 키를 보내고, 헤더 값과 오류 코드가 같게 설정됩니다. 자세한 정보에 대해서는 https://www.mediawiki.org/wiki/API:Errors_and_warnings 를 참고하십시오.",
        "apihelp-block-example-user-complex": "사용자 <kbd>Vandal</kbd>을 <kbd>Vandalism</kbd>이라는 이유로 무기한 차단하며 계정 생성 및 이메일 발송을 막기",
        "apihelp-createaccount-description": "새 사용자 계정을 만듭니다.",
        "apihelp-createaccount-param-name": "사용자 이름",
+       "apihelp-createaccount-param-email": "사용자 이메일 주소 (선택).",
+       "apihelp-createaccount-param-realname": "사용자 실명 (선택).",
        "apihelp-delete-description": "문서 삭제",
+       "apihelp-delete-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-delete-example-simple": "<kbd>Main Page</kbd>를 삭제합니다.",
        "apihelp-disabled-description": "이 모듈은 해제되었습니다.",
        "apihelp-edit-description": "문서를 만들고 편집합니다.",
        "apihelp-edit-param-minor": "사소한 편집.",
        "apihelp-edit-param-notminor": "사소하지 않은 편집.",
        "apihelp-edit-param-bot": "이 편집을 봇으로 표시.",
+       "apihelp-edit-param-unwatch": "문서를 현재 사용자의 주시문서 목록에서 제거합니다.",
        "apihelp-edit-example-edit": "문서 편집",
+       "apihelp-emailuser-description": "사용자에게 이메일을 보냅니다.",
+       "apihelp-emailuser-param-target": "이메일을 보낼 사용자.",
        "apihelp-expandtemplates-param-title": "문서 제목",
+       "apihelp-expandtemplates-param-text": "변환할 위키텍스트.",
+       "apihelp-feedrecentchanges-param-hideminor": "사소한 편집을 숨깁니다.",
+       "apihelp-feedrecentchanges-param-hidebots": "봇 편집을 숨깁니다.",
+       "apihelp-feedrecentchanges-param-hideanons": "익명 사용자의 편집을 숨깁니다.",
+       "apihelp-feedrecentchanges-param-hideliu": "등록된 사용자의 편집을 숨깁니다.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "검토된 편집을 숨깁니다.",
        "apihelp-feedrecentchanges-param-tagfilter": "태그로 분류",
+       "apihelp-feedrecentchanges-example-simple": "최근 바뀜을 봅니다.",
+       "apihelp-feedrecentchanges-example-30days": "30일간의 최근 바뀜을 봅니다.",
+       "apihelp-filerevert-description": "파일을 이전 판으로 되돌립니다.",
        "apihelp-login-param-name": "계정 이름.",
        "apihelp-login-param-password": "비밀번호.",
        "apihelp-login-example-login": "로그인.",
@@ -61,6 +77,7 @@
        "apihelp-query+pageswithprop-param-limit": "나타낼 문서의 최대 수입니다.",
        "apihelp-query+pageswithprop-param-dir": "정렬 순서",
        "apihelp-query+prefixsearch-param-search": "문자열 검색",
+       "apihelp-unblock-description": "사용자를 차단 해제합니다.",
        "api-help-title": "미디어위키 API 도움말",
        "api-help-lead": "이 페이지는 자동으로 생성된 미디어위키 API 도움말 문서입니다.\n\n설명 문서 및 예시: https://www.mediawiki.org/wiki/API",
        "api-help-main-header": "메인 모듈",
index ba6fb38..b005a4a 100644 (file)
@@ -4,7 +4,7 @@
                        "Purodha"
                ]
        },
-       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokemäntazjohn]]\n* [[mw:API:FAQ/de|Öff jefrohch]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mäileng_Leß]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Aanköndejonge zom <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Jemäldte Fähler un Wönsch]\n</div>\n<strong>Status:</strong> Alle op heh dä Sigg aanjzeischte Ußwahle sullte donn, ävver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> wee jrahd noch äntwekeld un et kann sesch alle Nahslangs jädd ändere. Holl Der de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ Mäileng_Leß med Aanköndejonge], öm automattesch övver Neujeschkeite enfommehrt ze wähde.\n\n<strong>Kapodde Aanfrohe:</strong> Wam_mer kapodde Aanfroheaan et API <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> schek, kritt mer ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i>-Kopp ußjejovve met däm Täx „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki-API-Error</code>“ dren, dä mer als ene Schlößel bedraachte kann. Mih dohzoh fengk met op dä Sigg [[mw:API:Errors_and_warnings|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: Fähler un Warnonge]].",
+       "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page/de|Dokemäntazjohn]]\n* [[mw:API:FAQ/de|Öff jefrohch]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Mäileng_Leß]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Aanköndejonge zom <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Jemäldte Fähler un Wönsch]\n</div>\n<strong>Status:</strong> Alle op heh dä Sigg aanjzeischte Ußwahle sullte donn, ävver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> weed jrahd noch äntwekeld un et kann sesch alle Nahslangs jädd ändere. Holl Der de [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ Mäileng_Leß med Aanköndejonge], öm automattesch övver Neujeschkeite enfommehrt ze wähde.\n\n<strong>Kapodde Aanfrohre:</strong> Wam_mer kapodde Aanfroheaan et API <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> schek, kritt mer ene <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">HTTP</i>-Kopp ußjejovve met däm Täx „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">MediaWiki-API-Error</code>“ dren, dä mer als ene Schlößel bedraachte kann. Mih dohzoh fengk met op dä Sigg [[mw:API:Errors_and_warnings|<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i>: Fähler un Warnonge]].",
        "apihelp-main-param-action": "Wat för en Aufjahb.",
        "apihelp-main-param-format": "Et Fommaht för ußzejävve.",
        "apihelp-main-param-maxlag": "Der hühste zohjelohße Verzoch kann jenumme wähde, wann MehdijaWikki obb enem Dahtebangk  replicated cluster enschtallehrt weed. Öm kein Opdräschd aan de Dahtebangk ze scheke, di dat noch schlemmer maache dähte, kam_mer övver heh dä Parramehter et Projramm affwahde lohße, bes dat  the replication lag onger däm aanjejovve Wäät lit. Wann dä Verzoch övvermähßesch jruhs es kritt mer dä Fähler <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">maxlag</samp> jemälldt en ene Nohreesch esu wi <samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Mer wahde op dä ẞööver $Maschihn un di es $Verzoch Sekonde hengerher</samp>.<br />Op dä [[mw:Manual:Maxlag_parameter|Hanndbohchsigg zom \n<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Maxlag</code>-Parramehter]] kam_mer noch mih zerdoh lässe.<!-- https://translatewiki.net/wiki/Thread:Support/About_MediaWiki:Apihelp-main-param-maxlag/ksh -->",
@@ -47,6 +47,7 @@
        "apihelp-createaccount-description": "Ene neue Zohjang för ene Metmaacher aanlähje.",
        "apihelp-createaccount-param-name": "Der Nahme för dä Metmaacher.",
        "apihelp-createaccount-param-password": "Et Paßwoot (Weed ävver it jebruc un övverjange, wann <code lang=\"en\" xml:lang=\"en\"><var>$1mailpassword</var></code> jesaz es)",
+       "apihelp-createaccount-param-domain": "De Domäijn för de Zohjangsdaht vun ußerhallef beschtähtech ze krijje. Kam_mer fott_lohße.",
        "apihelp-createaccount-param-token": "Der Makkehrongsschlößel för ene Zohjang aanzelähje, dä mer bei de eezde Aanfrohch krääje hät.",
        "apihelp-createaccount-param-email": "Däm Metmaacher sing Adräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i>, kann och fott bliive.",
        "apihelp-createaccount-param-realname": "Dämm Metmaacher singe reeschtejje Nahme - kann fott blihve.",
        "apihelp-expandtemplates-param-title": "De Övverschreff vun dä Sigg.",
        "apihelp-expandtemplates-param-text": "Dä Wikkitäx zom ömwandelle.",
        "apihelp-expandtemplates-param-revid": "De Kännong vun dä Väsjohn, för \n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\"><nowiki>{{REVISIONID}}</nowiki></code>“ un verwandte Wääte.",
+       "apihelp-expandtemplates-param-prop": "Wat för en Aanjahbe ze holle?\n\nOpjepaß: wann jaa kei Wääte ußjewähld sinn, kütt der Wikkitäx eruß, ävver de ßjahbe kumme en enem Fommaht, wat mer nit hann welle.",
        "apihelp-expandtemplates-paramvalue-prop-categories": "Alle Saachjroppe en dä Quällesigg, di em Wikkitäx vun de ußjejovve Sigg nit vorkumme.",
        "apihelp-expandtemplates-paramvalue-prop-properties": "De Sigge_Eijeschaffte, di vun de Zauberwööter em Wikkitäx faßjelaat wähde.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "De längste Zigg noh dä de zweschejescheijscherte jevonge Dahte nmmieh jöltesch sin sulle.",
        "apihelp-expandtemplates-param-includecomments": "Ov Aanmärkonge em <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Markup Language\">HTML</i>-Fommaht med ußjejovve wähde sulle.",
        "apihelp-expandtemplates-param-generatexml": "Donn ene Boum vum <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Paaser opboue. Es dorsch „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=parsetree</code>“ ässäz.",
        "apihelp-expandtemplates-example-simple": "Donn dä Wikkitäx <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\"><nowiki>{{Project:Sandbox}}</nowiki></kbd> en Täx wandelle.",
-       "apihelp-feedcontributions-description": "Jidd ene Kannahl met de Beidrähsch vun enem Metmaacher uß.",
+       "apihelp-feedcontributions-description": "Jidd ene Kannahl met de Beijdrähsch vun enem Metmaacher uß.",
        "apihelp-feedcontributions-param-feedformat": "Däm Kannahl sing Fommaht.",
        "apihelp-feedcontributions-param-user": "De Beijdrähsch för wat för en Metmaacher holle.",
        "apihelp-feedcontributions-param-namespace": "Wat för ene Appachtemang för de Beijdrähsch ußjeschloße wähde sull.",
        "apihelp-opensearch-param-limit": "De hühßte Aanzahl vun Äjeebnesse för zeröck ze jävve",
        "apihelp-opensearch-param-namespace": "En wällschem Appachtemang söhke.",
        "apihelp-opensearch-param-suggest": "Don nix wann „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var>“ op „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">false</code>“ jesaz es.",
-       "apihelp-opensearch-param-redirects": "Wi met Ömleidonge ömjonn?\n;return:Jivv de Ömleidonge sällver uß.\n;resolve:Jiff de Sigg uß, woh de Ömleidong hen jeiht. Dat künnt winnijer wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</code>“ Sigge ußjävve.\nTradizonäll es dä Schtandatt „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">return</code>“ för „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1format=json</code>“ un „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">resolve</code>“ för alle anndere.",
+       "apihelp-opensearch-param-redirects": "Wi met Ömleidonge ömjonn?\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">return</code>:Jivv de Ömleidonge sällver uß.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">resolve</code>:Jiff de Sigg uß, woh de Ömleidong hen jeiht. Dat künnt winnijer wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</code>“ Sigge ußjävve.\nTradizonäll es dä Schtandatt „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">return</code>“ för „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1format=json</code>“ un „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">resolve</code>“ för alle anndere.",
        "apihelp-opensearch-param-format": "Et Fommaht zom Ußjävve.",
        "apihelp-opensearch-param-warningsaserror": "Wann Warnonge opkumme met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">format=json</kbd>“, dann donn ene Fähler vum <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> ußjävve anschtat se ze övverjonn.",
        "apihelp-opensearch-example-te": "Fengk Sigge, di met <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Te</kbd> aanfange.",
        "apihelp-options-param-reset": "Säz de Enschtällonge op dem Wikki singe Standatt.",
        "apihelp-options-param-optionname": "Dä Nahme vun ene Enschtällong, di op dä Wäät jesaz wähde sulle, dä „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1optionvalue</var>“ aanjitt.",
-       "apihelp-options-param-optionvalue": "Ene Wäät vun dä Enschtällong, di vun „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1optionname</var>“ aanjejovve weed. Kann Sänkrääschte Schresche („|“) äänthallde.",
-       "apihelp-options-example-reset": "Alle enschtälloonge retuur schtälle.",
+       "apihelp-options-param-optionvalue": "Dä Wäät vun dä Enschtällong, di vun „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1optionname</var>“ aanjejovve weed. Kann Sänkrääschte Schresche („|“) ännthallde.",
+       "apihelp-options-example-reset": "Alle Enschtälloonge retuhr schtälle.",
        "apihelp-options-example-change": "Donn de „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skin</kbd>“ un „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hideminor</kbd>“ Enschtällonge ändere.",
        "apihelp-options-example-complex": "Donn alle Enschtällonge op der Schtandatt säze, dann säz „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">skin</kbd>“ un „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">nickname</kbd>“.",
        "apihelp-paraminfo-description": "Holl Aanjahbe övver dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Application Programming Interface\">API</i> ier Moduhle.",
        "apihelp-parse-paramvalue-prop-revid": "Deiht de Kännong vun de Väsjohn vun dä jepahßde Sigg derbei.",
        "apihelp-parse-paramvalue-prop-displaytitle": "Deiht de Övverschreff vum jepahßde Wikkitäx derbei.",
        "apihelp-parse-paramvalue-prop-modules": "Jitt dem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Delivery system in MediaWiki for the optimized run-time loading and managing of modules\">ResourceLoader</i> sing Moduhle uß, di en dä Sigg jebruch wähde. Äntwehder „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">jsconfigvars</kbd>“ udder „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">encodedjsconfigvars</kbd>“ moß mer met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">modules</kbd>“ zesamme aanforrdere.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Livvert de Varrejahble vun dä Ennschtällonge vum JavaSkrep, di äxtra för heh di Sigg enjeschtallt sin.",
        "apihelp-parse-paramvalue-prop-iwlinks": "Jitt de Engewikkilengks em jepahßde Wikkitäx uß.",
        "apihelp-parse-paramvalue-prop-wikitext": "Jitt de der ojinahl Wikkitäx us, dä jepahß woode es.",
        "apihelp-parse-paramvalue-prop-properties": "Jitt devärse Eijeschafte uß, di em jepahßde Wikkitäx faßjelaat woode sen.",
        "apihelp-parse-param-section": "Holl blohß dann der Ennhalld vun däm Affschnett met dä Nommer, udder wann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, maach ene neu Affschnett derbei.",
        "apihelp-parse-param-sectiontitle": "De Övverschreff för dä neuje Afschnet, wann <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">section</var> = <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd> es.\n\nAnders wi beim Beärbeide vun dä Sigg weed dä Parramehter nit dorsch de <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">summary</var> ußjetuusch, wann hä fottjelohße udder läddesch es.",
-       "apihelp-parse-param-disableeditsection": "Donn e lenks för Affschnedde ze änndere en de Ußjahbe vum Paaser affschallde.",
+       "apihelp-parse-param-disableeditsection": "Donn de Lenks för Affschnedde ze änndere en de Ußjahbe vum Paaser eruß lohße.",
        "apihelp-parse-param-disabletoc": "Donn et Ennhaldsverzeijscheneß en de Ußjahbe vottlohße.",
        "apihelp-parse-example-page": "Donn en Sigg pahse.",
        "apihelp-parse-example-text": "Donn Wikkitäx pahse.",
        "apihelp-query+allcategories-param-min": "Jiff blohß Saachjroppe us, di winneschsdens esu vill Metjlehder han.",
        "apihelp-query+allcategories-param-max": "Jiff blohß Saachjroppe us, di et mihts esu vill Metjlehder han.",
        "apihelp-query+allcategories-param-limit": "Wi vell Saachjroppe ußjävve?",
-       "apihelp-query+allcategories-param-prop": "Wat för en Eijeschaffte holle: \n;size:Deiht de Aanzahl Sigge en dä Saachjropp derbei.\n;hidden:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
+       "apihelp-query+allcategories-param-prop": "Wat för en Eijeschaffte holle: \n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>:Deiht de Aanzahl Sigge en dä Saachjropp derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hidden</code>:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
+       "apihelp-query+allcategories-example-generator": "Holl Ennfommazjuhne övver di Saaachjroppe_Sigg för Saachjroppe, di met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">List</kbd>“ bejenne.",
        "apihelp-query+alldeletedrevisions-description": "Donn alle fottjeschmeße Väsjohne vun enem Metmaacher udder en enem Appachemang opleßte.",
        "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Kam_mer blohß met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
        "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Kam_mer nit met <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3user</var> bruche.",
        "apihelp-query+allfileusages-param-to": "De Övverschreff vun dä Dattei, woh de Leß medd ophühre sull.",
        "apihelp-query+allfileusages-param-prefix": "Söhk noh alle Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+allfileusages-param-unique": "Donn blohß ongerscheidlijje Övverschreffte vun Datteije aanzeije. Kammer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids<code>“ bruche.\nWann als ene Jenerahtor ennjesaz, brängk et Zihlsigge, un kein Kwällesigge.",
-       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:\n;ids:Deiht de Kännonge vun dä Sigge derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;title:Deiht dä Dattei ehr Övverschreff derbei.",
+       "apihelp-query+allfileusages-param-prop": "Wat för en Aanjahbe ennschlehße:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">ids</code>:Deiht de Kännonge vun dä Sigge derbei, di dat bruche. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:Deiht dä Dattei ehr Övverschreff derbei.",
        "apihelp-query+allfileusages-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+allfileusages-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+allfileusages-example-B": "Donn Övverschreffte vun Datteije aanzeije, och vun Datteije, di (noch) nit doh sin, zesame met dä Kännonge vun dä Sigge, woh se vun sin, aanjevange vun <kbd>B</kbd>.",
        "apihelp-query+alllinks-param-to": "De Övverschreff vun dä Dattei, woh et Zälle ophühre sull.",
        "apihelp-query+alllinks-param-prefix": "Söhk noh alle verlengk Övverschreffte, di met heh däm Täx aanfange.",
        "apihelp-query+alllinks-param-unique": "Zeijsch blohß de ongerscheidlijje verlengk Sigge ier Övverschreffte. Kam_mer nit zesamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=ids</code>“ bruche. Wam_mer et als ene  Jenerahtor bruche deiht, kritt mer Zihlsiggge anschtatt vun Quällesigge.",
-       "apihelp-query+alllinks-param-prop": "Wat för en Aanjahbe ennschlehße:\n;ids:Deiht de Kännonge vun dä Sigge met däm Lengk derbei. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;title:Deiht däm lengk sing Övverschreff derbei.",
+       "apihelp-query+alllinks-param-prop": "Wat för en Aanjahbe ennschlehße:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">ids</code>:Deiht de Kännonge vun dä Sigge met däm Lengk derbei. Kam_mer nit zersamme met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1unique</code>“ bruche.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">title</code>:Deiht däm lengk sing Övverschreff derbei.",
        "apihelp-query+alllinks-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+alllinks-param-limit": "Wi vill sulle överhoup aanjezeisch wähde?",
        "apihelp-query+alllinks-param-dir": "En wälsche Reijefollsch?",
        "apihelp-query+backlinks-param-pageid": "De Känong vun dä Sigg zom Söhke. Kam_mer nit zesamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1title</var>“ bruche.",
        "apihelp-query+backlinks-param-namespace": "Dat Appachtemang zom opzälle.",
        "apihelp-query+backlinks-param-dir": "En wälsche Reijefollsch?",
+       "apihelp-query+backlinks-param-limit": "Wi vill Sigge ensjesamp ußjävve. Wann „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1redirect</var>“ ennjeschalld es, weed di Beschrängkong op jehden Nivoh äxtra aanjwandt, wat bedügg, dat bes op 2 * „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1limit</var> ußjejovve wähde künne.",
        "apihelp-query+backlinks-example-simple": "Zeijsch Lengks op de Sigg <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main page<kbd>.",
        "apihelp-query+backlinks-example-generator": "Holl Ennfommazjuhne övver Sigge, di op de Sigg „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</code>“ lengke donn.",
        "apihelp-query+blocks-description": "Donn alle jeschpächte Metmaacher un <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße opleßte.",
        "apihelp-query+blocks-param-users": "Leß vun dä Metmaacher för dernoh ze söhke. Kann fott blihve.",
        "apihelp-query+blocks-param-ip": "Holl alle Schpärre för heh di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß udder heh dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Classless Inter-Domain Routing\">CIDR</i>-Berätt, och Schpärre vun Berätte. Kam_mer nit zesamme met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$3users</var>“ bruche. <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Classless Inter-Domain Routing\">CIDR</i>-Berätte vun mieh wi <code dir=\"ltr\">IPv4/$1</code> udder <code dir=\"ltr\">IPv6/$2</code> wähde nit aanjenumme.",
        "apihelp-query+blocks-param-limit": "De hühßde Aanzahl Spärre zom opleste.",
-       "apihelp-query+blocks-param-prop": "Wat för en Eijeschaffte holle:\n;id:Deiht dä Spärr iehr Kännonge derbei.\n;user:Deiht dä Nahme vom jeschpächte Metmaacher derbei.\n;userid:Deiht de Kännong vum jeschpächte Metmaacher derbei.\n;by:Deiht dä Nahme vun däm Metmaacher derbei, dä jeschpächt hät.\n;byid:Deiht de Kännong vun däm Metmaacher derbei, dä jeschpächt hät.\n;timestamp:Deihd et Dattum un de Uhrzigg derbei, wann jeschpächt wood.\n;expiry:Deihd et Dattum un de Uhrzigg derbei, wann di Schparr eröm es.\n;reason:Deiht der Jrond för di Schparr derbei.\n;range:Deiht dä Berätt vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för di Schparr derbei.\n;flags:makkehrt di Spärr met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">autoblock</code>“, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">anononly</code>“, un esu.",
+       "apihelp-query+blocks-param-prop": "Wat för en Eijeschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">id</code>:Deiht dä Spärr iehr Kännonge derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</code>:Deiht dä Nahme vom jeschpächte Metmaacher derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">userid</code>:Deiht de Kännong vum jeschpächte Metmaacher derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">by</code>:Deiht dä Nahme vun däm Metmaacher derbei, dä jeschpächt hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">byid</code>:Deiht de Kännong vun däm Metmaacher derbei, dä jeschpächt hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">timestamp</code>:Deihd et Dattum un de Uhrzigg derbei, wann jeschpächt wood.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">expiry</code>:Deihd et Dattum un de Uhrzigg derbei, wann di Schparr eröm es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">reason</code>:Deiht der Jrond för di Schparr derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">range</code>:Deiht dä Berätt vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße för di Schparr derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">flags</code>:makkehrt di Spärr met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">autoblock</code>“, „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">anononly</code>“, un esu.",
        "apihelp-query+blocks-example-simple": "Schpärre opleßte.",
        "apihelp-query+blocks-example-users": "Donn de Schpärre vun dä Metmaacher <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Alice</kbd> un <lang=\"en\" xml:lang=\"en\" dir=\"ltr\" kbd>Bob</kbd> opleßte.",
        "apihelp-query+categories-description": "Donn alle Saachjroppe epleßte, woh di Sigge dren sin.",
-       "apihelp-query+categories-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle för jehde Saachjropp:\n;sortkey:Deiht dä Schlößel zom Zottehre vun dä Saachjropp derbei, en lange häxadezimahle Zahl, un der Schlößelvörsaz, woh ene Minsch jät med aanfange kann.\n;timestamp:Deihd en Dattom un en Zigg derbei, wann di Sachjrobb aanjelaat woode es.\n;hidden:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
+       "apihelp-query+categories-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle för jehde Saachjropp:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">sortkey</code>:Deiht dä Schlößel zom Zottehre vun dä Saachjropp derbei, en lange häxadezimahle Zahl, un der Schlößelvörsaz, woh ene Minsch jät med aanfange kann.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">timestamp</code>:Deihd en Dattom un en Zigg derbei, wann di Sachjrobb aanjelaat woode es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hidden</code>:Makehrt de veschtoche Sachjroppe met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">_&#95;HIDDENCAT_&#95;</code>“.",
        "apihelp-query+categories-param-show": "Wat för en Zoot Saachjroppe zeije.",
        "apihelp-query+categories-param-limit": "Wi vell Saachjroppe ußjävve?",
        "apihelp-query+categories-param-categories": "Donn blohß heh di Saachjroppe opleßte. Dadd es johd, öm eruß ze fenge ovv en beschtemmpte Sigg en en beschtemmpte Saachjropp dren es.",
        "apihelp-query+categorymembers-param-limit": "De jrüüßte Zahl Sigge för ußzejävve.",
        "apihelp-query+categorymembers-param-sort": "De Eijeschavv öm dernoh ze zottehre.",
        "apihelp-query+categorymembers-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Der Zoteerschlößel för de Leß opzehühre, wi mer en met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1prop=sortkey</kbd>“ kritt. Kann blohß met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sort=sortkey</kbd>“ jebruch wähde.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Der Aanfang vun däm Zoteerschlößel för de Leß opzehühre. Opühre deiht se <strong>för</strong>, un nit <strong>met</strong> däm. Wann dä Wäät opdouch, weed hä nit med ußjejovve. Kann blohß met „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sort=sortkey</code>“ jebruch wähde un överjeihd „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1endhexsortkey</code>“.",
        "apihelp-query+categorymembers-param-startsortkey": "Söhk „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1starthexsortkey</code>“ schtatt dämm.",
        "apihelp-query+categorymembers-param-endsortkey": "Söhk „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1endhexsortkey </code>“ schtatt dämm.",
        "apihelp-query+categorymembers-example-simple": "Holl de eezde zehn Sigge de dä <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Category:Physics</kbd>.",
        "apihelp-query+deletedrevs-param-excludeuser": "Donn kein Väsjohne vun heh däm Metmaacher opleßte.",
        "apihelp-query+deletedrevs-param-namespace": "Donn blohß Sigge en heh däm Appachtemang opleßte.",
        "apihelp-query+deletedrevs-param-limit": "De hühßde Aanzahl Väsjohne för opzeleßte.",
+       "apihelp-query+deletedrevs-param-prop": "Wat för en Eijeschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">revid</code>:Deiht de Kännong vun dä fottjeschmeße Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">parentid</code>:Deiht de Kännong vun dä vörijje Väsjohn vun dä Sigg derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</code>:Deiht dä Metmaacher derbei, dä di Väsjohn jemaat hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">userid</code>:Deiht de Kännong vun däm Metmaacher derbei, dä di Väsjohn jemaat hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">comment</code>:Deiht de koote Zesammefaßong vun dä Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">parsedcomment</code>:Adds dä de jepaaste koote Zesammefaßong vun dä Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">minor</code>:Tags, wann di Väsjohn en kleine Minni-Änderong wohr.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">len</code>:Deiht de Aanzahl <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i> vun dä Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">sha1</code>:Deiht dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1 (base 16)</i> vun dä Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">content</code>:Deiht dä Täx_Ennhalt vun dä Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">token</code>:<span class=\"apihelp-deprecated\">Nit mih jewönsch.</span> Livvert de Makehrong vun dä Änderong.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">tags</code>:Makehronge vun dä Väsjohn.",
        "apihelp-query+disabled-description": "Dat Moduhl för Frohre ze schtälle wohd affjeschalldt.",
        "apihelp-query+duplicatefiles-description": "Donn alle Datteije opleßte, di desällve Prööfsomm han wi de aanjejovve Datteije.",
        "apihelp-query+duplicatefiles-param-limit": "Wi vell datteije ußjävve.",
        "apihelp-query+embeddedin-param-dir": "En wälsche Reihjefollsch opleßte.",
        "apihelp-query+embeddedin-param-filterredir": "Wi de Ömleijdonge ußzottehre?",
        "apihelp-query+embeddedin-param-limit": "Wi vill Sigge ensjesammp zem ußjävve?",
+       "apihelp-query+embeddedin-example-simple": "Zeisch de Sigge, di di Schablohn „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Template:Stub</kbd>“ oprohfe.",
+       "apihelp-query+embeddedin-example-generator": "Holl Aanjahbe övve de Sigge, di di Schablohn „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Template:Stub</kbd>“ oprohfe.",
+       "apihelp-query+extlinks-description": "Jitt alle <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URLs</i> vun Lengks noh ußerhallef vum Wikki, ävver kein Engewiki_Lenks, vundä aanjejovve Sigge uß.",
        "apihelp-query+extlinks-param-limit": "Wi vill Lengks ußjävve?",
+       "apihelp-query+extlinks-example-simple": "Holl en Leß met Lengks noh ußerhallef vum Wikki uß dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“.",
+       "apihelp-query+exturlusage-description": "Donn alle Sigge upzälle med däm aanjejovve<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> dren.",
+       "apihelp-query+exturlusage-param-protocol": "Dat Schehma uß däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>. Wann et läddesch jelohße es un „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1query</var>“ aanjejogge es, es dat Schehma „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"HyperText Transfer Protocol\">http</kbd>“. Lohß beeds dat un „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">1query</var>“ läddesch, öm alle Lengks noh ußerhallef opzeleßte.",
+       "apihelp-query+exturlusage-param-namespace": "Dat appachtemang met dä Sigge zom opzälle.",
        "apihelp-query+exturlusage-param-limit": "Wi vill Sigge zem ußjävve?",
        "apihelp-query+filearchive-description": "Donn alle fottjeschmeße Datteije der Reih noh opzälle.",
        "apihelp-query+filearchive-param-from": "De Övverschreff vun däm Beld, woh de Leß medd aanfange sull.",
        "apihelp-query+filearchive-param-dir": "En wälsche Reijefollsch opleßte.",
        "apihelp-query+filearchive-param-sha1": "Däm Beld singe <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1</i>-Pröhvsomm. Övverjeiht „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sha1base36</code>“.",
        "apihelp-query+filearchive-param-sha1base36": "Däm Beld singe <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1</i>-Pröhvsomm em 36-jer Zahlesüßtehm. Weed em Mehdiajwikki jebruch.",
+       "apihelp-query+filearchive-param-prop": "Wat för en Aanjahbe zum Beld holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">sha1</code>:Deiht dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"secure hash algorithm\">SHA-1 (base 16)</i> vun dä Väsjohn vn däm Beld derbei.\n;timestamp:Adds timestamp for the uploaded version.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">user</code>:Deiht dä Metmaacher derbei, dä di Väsjohn huhjelahde hät.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>:Deiht de Aanzahl <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i> vun dä Dattei derbei, un, wann bikannt, de Hühde, de Wiggde, un de Aanzahl Sigge.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">dimensions</code>:Et sällve, wi <code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">size</code>.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">description</code>:Adds description för di Väsjohn vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">parseddescription</code>:Parse the description för di Väsjohn vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">mime</code>:Adds MIME vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">mediatype</code>:Adds the media type vun däm Beld.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">metadata</code>:Deiht de <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Exchangeable image file format\">EXIF</i>-Mettadahte för di Väsjohn vun däm Beld opleßte.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">bitdepth</code>:deiht de bit depth för di Väsjohn derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">archivename</code>:Deiht dä Nahme vun dä Dattei vun dä Aschihf_Väsjohn för alle Väsjohne, bes op de läzde, derbei.",
        "apihelp-query+filearchive-example-simple": "Zeijsch en leß met alle fottjeschmeße Datteije.",
        "apihelp-query+filerepoinfo-example-simple": "Holl ennfommazjuhne övver de Reppossetohreje met Datteije.",
        "apihelp-query+fileusage-description": "Fengk alle Sigge, di de aanjejovve Datteije bruche.",
        "apihelp-query+info-paramvalue-prop-subjectid": "De Kännong för de övverje'odente Sigg för jehde Klaafsigg.",
        "apihelp-query+info-paramvalue-prop-url": "Jidd en kumplätte <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i>, en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> för et Beärbeide, un en kannohnesche <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> för jehde Sigg uß.",
        "apihelp-query+info-paramvalue-prop-readable": "Ov dä Metmaacher heh di Sigg lässe kann.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Zeijsch de Maier, wi en Övverschreff vun en Sigg verhaftesch aanjezeijsch weed.",
        "apihelp-query+iwbacklinks-param-prefix": "De Engerwikki_Vörsaz.",
        "apihelp-query+iwbacklinks-param-title": "Der Engerwikki_Lengk för noh ze söhke. Moß met „<var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1blprefix</var>“ zersamme jebruch wähde.",
        "apihelp-query+iwbacklinks-param-limit": "Wi vill Sigge ensjesammp zem ußjävve?",
        "apihelp-query+search-param-what": "Wat för en Aat ze Söhke?",
        "apihelp-query+search-param-info": "Wat för en Metta_Dahte ußzejävve.",
        "apihelp-query+search-param-limit": "Wi vill Sigge ensjesamp ußjävve?",
+       "apihelp-query+search-param-interwiki": "Donn de Engerwiki Lengks met ußjävve beim Söhke, wann_er doh sin.",
        "apihelp-query+search-example-simple": "Söhk noh „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">meaning</kbd>“.",
        "apihelp-query+search-example-text": "Söhk en Täxte noh „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">meaning</kbd>“.",
        "apihelp-query+search-example-generator": "Holl anjahbe övver di Sigge, di jefonge wähde beim söhke noh \n„<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">meaning</kbd>“",
        "apihelp-query+siteinfo-description": "Jiff alljemeine Ennfommazjuhne övver heh di ẞaid_uß.",
+       "apihelp-query+siteinfo-param-filteriw": "Donn blohß de Enndrähsch för heh et Wikki udder blohß de Enndrähsch för ußerhallef en di Leß.",
+       "apihelp-query+siteinfo-param-showalldb": "Donn alle ẞööver för de Dahtebangke opleßte, nit blohß di am mihßte hengerher sin.",
        "apihelp-query+siteinfo-param-numberingroup": "Donn de Aanzahl Metmaacher en de Jroppe vun Metmaacher opleßte.",
+       "apihelp-query+siteinfo-param-inlanguagecode": "Schprohche_Köözelle för de Namhme vun Schprohche en heh dä Schprohch — der bäßte Träffer zällt - un de Namhe vun de Bedehnbovverfläsche.",
        "apihelp-query+siteinfo-example-simple": "Holl Ennfommazjuhe övver heh di ẞait.",
-       "apihelp-query+tags-param-limit": "De hühßde Aanzahl  tags zom opleste.",
+       "apihelp-query+siteinfo-example-interwiki": "Holl en Leß met de Vörsäz för de Engerwiki_Lenks em eije Wikki.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "Es et sällve wi „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1filekey</code>“ un kütt vun fröjere Väsjohne.",
+       "apihelp-query+tags-description": "Leß de Makehronge vun Änderonge.",
+       "apihelp-query+tags-param-limit": "De hühßde Zahl Makkehronge zom Opleste.",
        "apihelp-query+tags-param-prop": "Wat för en Eijschaffte holle:\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">name</code>:Deiht dä Nahme vun dä Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">displayname</code>:Deiht der Täx vum Wikki för de Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">description</code>:Deiht dä Beschrievongstäx vun dä Makkehrong derbei.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">hitcount</code>:Deiht de Aanzahl vun Väsjohne un Enndrähsch em Logbohch derbei, di di Makkehrong han.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">defined</code>:Jivv aan, ov di Makkehrong övverhoup doh es.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">source</code>:Hollt de Kwälle vun de Makkehrong, dat kann ömfaße: „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">extension</samp>“ för Makkehronge, di vun Zohsazprojramme faßjelaat wähde, un „<samp lang=\"en\" xml:lang=\"en\" dir=\"ltr\">manual</samp>“ för Makkehronge, di vun de Metmaacher vun Hand verjovve wohde.\n;<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">active</code>:Ov de Makkehrong emmer noch aktihv es.",
        "apihelp-query+tags-example-simple": "Leß de verföhschbahre Makkehronge op.",
        "apihelp-query+templates-description": "Jidd alle Datteije uß, di en dä aanjejovve Sigge enjebonge sin.",
        "apihelp-query+templates-param-namespace": "Zeijsch blohß de Schablohne en heh däm Appachtemang.",
        "apihelp-query+templates-param-limit": "Wi vill Schablohne sulle ußjejovve wähde?",
+       "apihelp-query+templates-param-templates": "Donn blohß heh die Schablohne opleßte. Johd ze bruche zom Pröhve, ov en beschtemmpte Sigg en beschtemmpte Schlohn bruche deiht.",
        "apihelp-query+templates-param-dir": "En wälsche Reihjefollsch opleßte.",
+       "apihelp-query+templates-example-simple": "Holl di Schablohne, di en dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ jebruch wähde.",
+       "apihelp-query+templates-example-generator": "Holl Ennfommazjuhneövver di Sigge met di Schablohne, di en dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ jebruch wähde.",
+       "apihelp-query+templates-example-namespaces": "Holl Sigge uß de {{ns:user}} un {{ns:template}} Appachtemangs, di en di Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ enjeschloße wähde.",
        "apihelp-query+transcludedin-description": "Fengk alle Sigge, di di aanjejovve Sigge enneschlehße.",
        "apihelp-query+transcludedin-param-namespace": "Donn blohß Sigge en heh dä Appachtemangs ennschlehße.",
        "apihelp-query+transcludedin-param-limit": "Wi vill ußjävve.",
+       "apihelp-query+transcludedin-example-simple": "Holl en Leß met Sigge, di en dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ ennjeschloße wähde.",
+       "apihelp-query+transcludedin-example-generator": "Holl Ennfommazjuhne övver Sigge, di vun dä Sigg „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Main Page</kbd>“ ohjerohfe wähde.",
        "apihelp-query+usercontribs-description": "Holl alle Änderonge vun enem Metmaacher.",
        "apihelp-query+usercontribs-param-limit": "De hühßte Aanzahl vun Meddeilonge för zeröck ze jävve",
+       "apihelp-query+usercontribs-param-start": "Dattom un Zigg vun woh aan ußjävve.",
+       "apihelp-query+usercontribs-param-end": "Dattom un Zigg bes woh hen ußjävve.",
        "apihelp-query+usercontribs-param-user": "De Metmaacher för di mer Beijdrähsch holle welle.",
+       "apihelp-query+usercontribs-param-userprefix": "Holl beijdrähsch för alle Metmaacher, dänne ier Nahme met heh däm Wääd aanfange. Övverschriehv „<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1user</code>“.",
        "apihelp-query+usercontribs-param-namespace": "Donn blohß Beijdrähsch en heh dä Appachtemangs opleßte.",
        "apihelp-query+usercontribs-param-tag": "Donn blohß Väsjohne met heh dä Makehrong opleßte.",
        "apihelp-query+usercontribs-param-toponly": "Bloß Änderonge aanzeije, woh de neußte Väsjohn beij eruß kohm.",
+       "apihelp-query+usercontribs-example-user": "Zeijsch dem Metmaacher „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>“ sing Beidrähch.",
+       "apihelp-query+usercontribs-example-ipprefix": "Zeijsch de Beidrähch vun alle <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße, di met „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">192.0.2.</kbd>“ bejenne.",
        "apihelp-query+userinfo-description": "Holl Aanjahbe övver dä aktoälle Metmaacher.",
        "apihelp-query+userinfo-example-simple": "Holl Aanjahbe övver dä aktoälle Metmaacher.",
        "apihelp-query+userinfo-example-data": "Holl zohsäzlejje Aanjahbe övver dä aktoälle Metmaacher.",
        "apihelp-query+users-description": "Holl Aanjahbe övver en Leß vun Metmaacher.",
        "apihelp-query+users-param-users": "En Leß vun Metmaacher för Aanjahbe drövver ze holle.",
        "apihelp-query+users-example-simple": "Holl Aanjahbe för dä Metmaacher <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Example</kbd>.",
+       "apihelp-query+watchlist-param-start": "Et Dattom un de Zigg vun woh aff opjezallt wähde sull.",
        "apihelp-query+watchlist-param-end": "Et Dattum un Uhrzigg, bes wann opzälle.",
+       "apihelp-query+watchlist-param-namespace": "Donn de Änderonge blohß us de aanjejovve Appachtemans nämme.",
        "apihelp-query+watchlist-param-user": "Donn blohß Änderonge vun heh däm Metmaacher opleßte.",
        "apihelp-query+watchlist-param-excludeuser": "Donn kein Änderonge vun heh däm Metmaacher opleßte.",
+       "apihelp-query+watchlist-param-limit": "Wi vell Äjehbneße ennsjesammp pro Oprohv ußjejovve wähde sulle.",
+       "apihelp-query+watchlist-param-prop": "Wat för en zohsäzlejje Eijeschaffte holle:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Donn de Kännong vun de Väsohne un de Sigge derbei,",
        "apihelp-query+watchlist-paramvalue-prop-title": "Mähd en Övverschhreff övver di Sigg.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "Deiht dä Metmaacher derbei, dä di Änderong jemaat hät.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Deiht de kännong vn äm Metmaacher derbei, dä di Änderong jemaat hät.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Deihd et Dattom un de Uhrzigg vun dä Änderong derbei.",
        "apihelp-query+watchlistraw-description": "Donn alle Sigge uß dem aktälle Metmaacher sing Oppaßleß holle.",
        "apihelp-query+watchlistraw-param-namespace": "Donn blohß Sigge en heh däm Appachtemang opleßte.",
        "apihelp-query+watchlistraw-example-simple": "Donn alle Sigge uß dem aktälle Metmaacher sing Oppaßleß opleßte.",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "Donn alle Sigge beärbeide, di en Oppaßleßte dren sin.",
        "apihelp-tag-description": "Donn Makkehronge vun einzel Väsjohne udder Enndraähsch em Logbohch fott nämme udder se verjävve.",
        "apihelp-tag-param-rcid": "Ein udder mih Kännonge uß de neuste Ännderonge, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
-       "apihelp-tag-param-revid": "Ein Kännong udder mieh, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
-       "apihelp-tag-param-logid": "Ein Kännong udder mieh uß de neuste Änderonge, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
+       "apihelp-tag-param-revid": "Ein Kännong udder mih, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
+       "apihelp-tag-param-logid": "Ein Kännong udder mih uß de neuste Änderonge, woh di Makkehrong derbei jedonn udder fott jenumme wähde sull.",
        "apihelp-tag-param-add": "De Makkehrong zom Zohföhje. Bloß de vun Hand aanjelaat Makkehronge künne heh zohjeföhsch wähde.",
        "apihelp-tag-param-remove": "Makkehronge zom fott nämme. Blohß vun Hand jesaz un kumplätt onjesaz Makkehronge künne fott jenumme wähde.",
        "apihelp-tag-param-reason": "Dä Jrond för di Änderong.",
index 426f580..dc73afe 100644 (file)
@@ -27,6 +27,7 @@
        "apihelp-edit-param-bot": "Dës Ännerung als Bot-Ännerung markéieren.",
        "apihelp-edit-param-watch": "D'Säit op dem aktuelle Benotzer seng Iwwerwaachungslëscht dobäisetzen.",
        "apihelp-edit-example-edit": "Eng Säit änneren",
+       "apihelp-emailuser-example-email": "Dem Benotzer <kbd>WikiSysop</kbd> eng E-Mail mam Text <kbd>Inhalt</kbd> schécken.",
        "apihelp-expandtemplates-param-title": "Titel vun der Säit.",
        "apihelp-expandtemplates-paramvalue-prop-ttl": "D'Maximalzäit no där den Tëschespäicher vum Resultat net méi valabel si soll.",
        "apihelp-feedcontributions-param-year": "Vum Joer (a virdrun).",
@@ -36,6 +37,7 @@
        "apihelp-feedrecentchanges-param-hideanons": "Ännerunge vun anonyme Benotzer verstoppen.",
        "apihelp-feedrecentchanges-param-hideliu": "Ännerunge vu registréierte Benotzer verstoppen.",
        "apihelp-feedrecentchanges-param-hidemyself": "Ännerunge vum aktuelle Benotzer verstoppen.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Ännerunge vun der Memberschaft a Kategorie verstoppen.",
        "apihelp-feedrecentchanges-example-simple": "Rezent Ännerunge weisen",
        "apihelp-help-example-main": "Hëllef fir den Haaptmodul.",
        "apihelp-help-example-recursive": "All Hëllef op enger Säit",
@@ -50,6 +52,8 @@
        "apihelp-move-description": "Eng Säit réckelen.",
        "apihelp-move-param-movetalk": "D'Diskussiounssäit ëmbenennen, wann et se gëtt.",
        "apihelp-move-param-ignorewarnings": "All Warnungen ignoréieren.",
+       "apihelp-options-description": "Astellunge fir den aktuelle Benotzer änneren.\n\nNëmmen Optiounen aus dem Haaptdeel (core) oder aus enger vun den installéierten Erweiderunge, oder Optioune mat Schlësselen déi viragestallt si mat <code>userjs-</code> (geduecht fir mat Benotzer-Scripte benotzt ze ginn), kënnen agestallt ginn.",
+       "apihelp-options-param-optionname": "Den Numm vun der Optioun deen op de Wäert vun <var>$1optionvalue</var> gesat gi muss",
        "apihelp-options-example-reset": "All Astellungen zrécksetzen",
        "apihelp-patrol-example-rcid": "Eng rezent Ännerung nokucken.",
        "apihelp-patrol-example-revid": "Eng Versioun nokucken.",
@@ -79,6 +83,7 @@
        "apihelp-query+info-paramvalue-prop-readable": "Ob de Benotzer dës Säit liese kann.",
        "apihelp-query+langlinks-param-lang": "Nëmme Sproochlinke mat dësem Sproochcode zréckginn.",
        "apihelp-query+links-param-namespace": "Nëmme Linken an dësen Nummräim weisen.",
+       "apihelp-query+pageswithprop-example-generator": "Zousätzlech Informatiounen iwwer déi 10 éischt Säite kréie mat <code>_&#95;NOTOC_&#95;</code>.",
        "apihelp-query+protectedtitles-param-namespace": "Nëmmen Titelen aus dësen Nummraim opzielen.",
        "apihelp-query+random-param-redirect": "Eng zoufälleg Viruleedung lueden aplaz vun enger zoufälleger Säit.",
        "apihelp-query+recentchanges-param-user": "Nëmmen Ännerunge vun dësem Benotzer opzielen.",
        "apihelp-query+watchlist-param-excludeuser": "Ännerunge vun dësem Benotzer net opzielen.",
        "apihelp-query+watchlist-paramvalue-prop-title": "Setzt den Titel vun der Säit derbäi.",
        "apihelp-query+watchlist-paramvalue-prop-user": "Setzt de Benotzer derbäi deen d'Ännerung gemaach huet.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Setzt d'Bemierkung vun der Ännerung derbäi.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Setzt den Zäitstempel vun der Ännerung derbäi.",
        "apihelp-query+watchlistraw-param-show": "Nëmmen Elementer opzielen déi dëse Critèren entspriechen.",
        "apihelp-query+watchlistraw-example-simple": "Säite vum aktuelle Benotzer senger Iwwerwaachungslëscht opzielen",
        "apihelp-revisiondelete-description": "Versioune läschen a restauréieren.",
index b24e5f6..08a1207 100644 (file)
@@ -1,8 +1,12 @@
 {
        "@metadata": {
                "authors": [
-                       "Papuass"
+                       "Papuass",
+                       "Silraks"
                ]
        },
+       "apihelp-block-description": "Bloķēt lietotāju",
+       "apihelp-block-param-reason": "Bloķēšanas iemesls:",
+       "apihelp-delete-description": "Dzēst lapas",
        "apihelp-userrights-param-userid": "Lietotāja ID:"
 }
index 9bf3e4e..318e346 100644 (file)
        "apihelp-imagerotate-param-rotation": "За колку степени да се сврти надесно.",
        "apihelp-imagerotate-example-simple": "Сврти ја <kbd>Податотека:Пример.png</kbd> за <kbd>90</kbd> степени.",
        "apihelp-imagerotate-example-generator": "Сврти ги сите слики во <kbd>Категорија:Некоја</kbd> за <kbd>180</kbd> степени.",
-       "apihelp-import-description": "Увези страница од друго вики или XML-податотека.\n\nИмајте на ум дека POST на HTTP мора да се изведе како подигање на податотеката (т.е. користејќи повеќеделни податоци/податоци од образец) кога ја испраќате податотеката за параметарот <var>xml</var>.",
+       "apihelp-import-description": "Увези страница од друго вики или од XML-податотека.\n\nИмајте на ум дека POST на HTTP мора да се изведе како подигање на податотеката (т.е. користејќи повеќеделни податоци/податоци од образец) кога ја испраќате податотеката за параметарот <var>xml</var>.",
        "apihelp-import-param-summary": "Увези опис.",
        "apihelp-import-param-xml": "Подигната XML-податотека.",
        "apihelp-import-param-interwikisource": "За меѓујазични увози: од кое вики да се увезе.",
        "apihelp-import-param-interwikipage": "За меѓујазични увози: страница за увоз.",
        "apihelp-import-param-fullhistory": "За меѓујазични увози:: увези ја целата историја, а не само тековната верзија.",
        "apihelp-import-param-templates": "За меѓујазични увози: увези ги и сите вклучени шаблони.",
-       "apihelp-import-param-namespace": "Увези Ð²Ð¾ Ð¾Ð²Ð¾Ñ\98 Ð¸Ð¼ÐµÐ½Ñ\81ки Ð¿Ñ\80оÑ\81Ñ\82оÑ\80. Ð¡Ðµ Ð½Ð°Ð¼ÐµÑ\82нÑ\83ва Ð²Ñ\80з Ð¿Ð°Ñ\80амеÑ\82аÑ\80оÑ\82 <kbd>$1rootpage</kbd>.",
-       "apihelp-import-param-rootpage": "Увези ÐºÐ°ÐºÐ¾ Ð¿Ð¾Ñ\82Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86ава. Ð¡Ðµ Ð·Ð°Ð½ÐµÐ¼Ð°Ñ\80Ñ\83ва Ð°ÐºÐ¾ Ðµ Ñ\83кажан Ð¿Ð°Ñ\80амеÑ\82аÑ\80оÑ\82 <kbd>$1namespace</kbd>.",
+       "apihelp-import-param-namespace": "Увези Ð²Ð¾ Ð¾Ð²Ð¾Ñ\98 Ð¸Ð¼ÐµÐ½Ñ\81ки Ð¿Ñ\80оÑ\81Ñ\82оÑ\80. Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е ÐºÐ¾Ñ\80иÑ\81Ñ\82и Ð·Ð°ÐµÐ´Ð½Ð¾ Ñ\81о <kbd>$1rootpage</kbd>.",
+       "apihelp-import-param-rootpage": "Увези ÐºÐ°ÐºÐ¾ Ð¿Ð¾Ñ\82Ñ\81Ñ\82Ñ\80аниÑ\86а Ð½Ð° Ñ\81Ñ\82Ñ\80аниÑ\86ава. Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е ÐºÐ¾Ñ\80иÑ\81Ñ\82и Ð·Ð°ÐµÐ´Ð½Ð¾ Ñ\81о <kbd>$1namespace</kbd>.",
        "apihelp-import-example-import": "Увези [[meta:Help:ParserFunctions]] во именскиот простор 100 со целата историја.",
        "apihelp-login-description": "Најавете се и добијте колачиња за заверка.\n\nВо случај кога ќе се најавите успешно, потребните колачиња ќе се придодадат кон заглавијата на HTTP-одѕивот. Во случај да не успеете да се најавите, понатамошните обиди може да се ограничат за да се ограничат нападите со автоматизирано погодување на лозинката.",
        "apihelp-login-param-name": "Корисничко име.",
        "apihelp-opensearch-param-redirects": "Како да се работи со пренасочувања:\n;return: Дај го самото пренасочување.\n;resolve: Дај ја целната страница. Може да даде помалку од $1limit резултати.\nОд историски причини, по основно е „return“ за $1format=json и „resolve“ за други формати.",
        "apihelp-opensearch-param-format": "Формат на изводот.",
        "apihelp-opensearch-example-te": "Најди страници што почнуваат со <kbd>Те</kbd>.",
-       "apihelp-options-description": "Смени ги нагодувањата на тековниот корисник.\n\nМожат да се зададат само можностите заведени во јадрото или во едно од воспоставените додатоци, или пак можности со клуч кој ја има претставката „userjs-“ (предвиден за употреба од кориснички скрипти).",
+       "apihelp-options-description": "Смени ги нагодувањата на тековниот корисник.\n\nМожат да се зададат само можностите заведени во јадрото или во едно од воспоставените додатоци, или пак можности со клуч кој ја има претставката <code>userjs-</code> (предвиден за употреба од кориснички скрипти).",
        "apihelp-options-param-reset": "Ги враќа поставките по основно.",
        "apihelp-options-param-resetkinds": "Писок на типови можности за повраток кога е зададена можноста <var>$1reset</var>.",
        "apihelp-options-param-change": "Список на промени во форматот name=value (на пр. skin=vector). Вредностите не треба да содржат исправени црти. Ако не зададете вредност (дури ни знак за равенство), на пр., можност|другаможност|..., ќе биде зададена вредноста на можноста по основно.",
        "apihelp-parse-param-summary": "Опис за расчленување.",
        "apihelp-parse-param-preview": "Расчлени во прегледен режим.",
        "apihelp-parse-param-sectionpreview": "Расчлени во прегледен режим на поднасловот (го овозможува и прегледниот режим).",
-       "apihelp-parse-param-disabletoc": "Ð\98зземи Ð³Ð¾ Ð¿Ñ\80еглед Ð½Ð° Ñ\81одÑ\80жинаÑ\82а Ð²Ð¾ Ð¸Ð·Ð²Ð¾Ð´ÐµÐ¾Ñ\82.",
+       "apihelp-parse-param-disabletoc": "Изземи го преглед на содржината во изводот.",
        "apihelp-parse-param-contentformat": "Формат на серијализацијата на содржината во вносниот текст. Важи само кога се користи со $1text.",
        "apihelp-parse-example-page": "Расчлени страница.",
        "apihelp-parse-example-text": "Расчлени викитекст.",
        "apihelp-watch-example-watch": "Набљудувај ја страницата <kbd>Главна страница</kbd>.",
        "apihelp-watch-example-unwatch": "Отстрани ја страницата <kbd>Главна страница</kbd> од набљудуваните.",
        "apihelp-watch-example-generator": "Набљудувај ги првите неколку страници во главниот именски простор",
-       "apihelp-format-example-generic": "ФоÑ\80маÑ\82иÑ\80аÑ\98 Ð³Ð¾ Ñ\80езÑ\83лÑ\82аÑ\82оÑ\82 Ð¾Ð´ Ð±Ð°Ñ\80аÑ\9aеÑ\82о Ð²Ð¾ $1-Ñ\84оÑ\80маÑ\82",
+       "apihelp-format-example-generic": "Ð\94аÑ\98 Ð³Ð¾ Ð¸Ñ\81Ñ\85одоÑ\82 Ð¾Ð´ Ð±Ð°Ñ\80аÑ\9aеÑ\82о Ð²Ð¾ $1-Ñ\84оÑ\80маÑ\82.",
        "apihelp-dbg-description": "Давај го изводот во PHP-форматот <code>var_export()</code> .",
        "apihelp-dbgfm-description": "Давај го изводот во PHP-форматот <code>var_export()</code> (подобрен испис во HTML).",
-       "apihelp-dump-description": "Давај го изводот во PHP-форматот <code>var_dump()</code>.",
-       "apihelp-dumpfm-description": "Давај го изводот во PHP-форматот <code>var_dump()</code> (подобрен испис во HTML).",
        "apihelp-json-description": "Давај го изводот во JSON-формат.",
        "apihelp-json-param-callback": "Ако е укажано, го обвива изводот во даден повик на функција. За безбедност, ќе се ограничат сите податоци што се однесуваат на корисниците.",
        "apihelp-json-param-utf8": "Ако е укажано, ги шифрира највеќето (но не сите) не-ASCII знаци како UTF-8 наместо да ги заменува со хексадецимални изводни низи. Ова е стандардно кога <var>formatversion</var> не е <kbd>1</kbd>.",
        "apihelp-rawfm-description": "Давај го изводот со елементи за отстранување грешки во JSON-формат (подобрен испис во HTML).",
        "apihelp-txt-description": "Давај го изводот во PHP-форматот <code>print_r()</code>.",
        "apihelp-txtfm-description": "Давај го изводот во PHP-форматот <code>print_r()</code> (подобрен испис во HTML).",
-       "apihelp-wddx-description": "Давај го изводот во WDDX-формат.",
-       "apihelp-wddxfm-description": "Давај го изводот во WDDX-формат (подобрен испис во HTML).",
        "apihelp-xml-description": "Давај го изводот во XML-формат.",
        "apihelp-xml-param-xslt": "Ако е укажано, ја додава именуваната страница како XSL-стилска страница. Вредноста мора да биде наслов во именскиот простор „{{ns:mediawiki}}“ што ќе завршува со <code>.xsl</code>.",
        "apihelp-xml-param-includexmlnamespace": "Ако е укажано, додава именски простор XML.",
index e295886..b7fdf54 100644 (file)
        "apihelp-opensearch-param-format": "Format danych wyjściowych.",
        "apihelp-opensearch-example-te": "Znajdź strony zaczynające się od <kbd>Te</kbd>.",
        "apihelp-options-param-reset": "Resetuj preferencje do domyślnych.",
+       "apihelp-options-param-optionname": "Nazwa opcji, która powinna być ustawiona na wartość <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "Wartość opcji, określona w <var>$1optionname</var>, może zawierać znaki pionowej kreski.",
        "apihelp-options-example-reset": "Resetuj wszystkie preferencje.",
        "apihelp-paraminfo-description": "Zdobądź informacje o modułach API.",
        "apihelp-paraminfo-param-helpformat": "Format tekstów pomocnicznych.",
index 95562d8..99d9c99 100644 (file)
        "apihelp-feedrecentchanges-param-hideliu": "{{doc-apihelp-param|feedrecentchanges|hideliu}}",
        "apihelp-feedrecentchanges-param-hidepatrolled": "{{doc-apihelp-param|feedrecentchanges|hidepatrolled}}",
        "apihelp-feedrecentchanges-param-hidemyself": "{{doc-apihelp-param|feedrecentchanges|hidemyself}}",
+       "apihelp-feedrecentchanges-param-hidecategorization": "{{doc-apihelp-param|feedrecentchanges|hidecategorization}}",
        "apihelp-feedrecentchanges-param-tagfilter": "{{doc-apihelp-param|feedrecentchanges|tagfilter}}",
        "apihelp-feedrecentchanges-param-target": "{{doc-apihelp-param|feedrecentchanges|target}}",
        "apihelp-feedrecentchanges-param-showlinkedto": "{{doc-apihelp-param|feedrecentchanges|showlinkedto}}",
        "apihelp-query+allcategories-param-min": "{{doc-apihelp-param|query+allcategories|min}}",
        "apihelp-query+allcategories-param-max": "{{doc-apihelp-param|query+allcategories|max}}",
        "apihelp-query+allcategories-param-limit": "{{doc-apihelp-param|query+allcategories|limit}}",
-       "apihelp-query+allcategories-param-prop": "{{doc-apihelp-param|query+allcategories|prop}}",
+       "apihelp-query+allcategories-param-prop": "{{doc-apihelp-param|query+allcategories|prop|paramvalues=1}}",
+       "apihelp-query+allcategories-paramvalue-prop-size": "{{doc-apihelp-paramvalue|query+allcategories|prop|size}}",
+       "apihelp-query+allcategories-paramvalue-prop-hidden": "{{doc-apihelp-paramvalue|query+allcategories|prop|hidden}}",
        "apihelp-query+allcategories-example-size": "{{doc-apihelp-example|query+allcategories}}",
        "apihelp-query+allcategories-example-generator": "{{doc-apihelp-example|query+allcategories}}",
        "apihelp-query+alldeletedrevisions-description": "{{doc-apihelp-description|query+alldeletedrevisions}}",
        "apihelp-query+allfileusages-param-to": "{{doc-apihelp-param|query+allfileusages|to}}",
        "apihelp-query+allfileusages-param-prefix": "{{doc-apihelp-param|query+allfileusages|prefix}}",
        "apihelp-query+allfileusages-param-unique": "{{doc-apihelp-param|query+allfileusages|unique}}",
-       "apihelp-query+allfileusages-param-prop": "{{doc-apihelp-param|query+allfileusages|prop}}",
+       "apihelp-query+allfileusages-param-prop": "{{doc-apihelp-param|query+allfileusages|prop|paramvalues=1}}",
+       "apihelp-query+allfileusages-paramvalue-prop-ids": "{{doc-apihelp-param|query+allfileusages|prop|ids}}",
+       "apihelp-query+allfileusages-paramvalue-prop-title": "{{doc-apihelp-param|query+allfileusages|prop|title}}",
        "apihelp-query+allfileusages-param-limit": "{{doc-apihelp-param|query+allfileusages|limit}}",
        "apihelp-query+allfileusages-param-dir": "{{doc-apihelp-param|query+allfileusages|dir}}",
        "apihelp-query+allfileusages-example-B": "{{doc-apihelp-example|query+allfileusages}}",
        "apihelp-query+alllinks-param-to": "{{doc-apihelp-param|query+alllinks|to}}",
        "apihelp-query+alllinks-param-prefix": "{{doc-apihelp-param|query+alllinks|prefix}}",
        "apihelp-query+alllinks-param-unique": "{{doc-apihelp-param|query+alllinks|unique}}",
-       "apihelp-query+alllinks-param-prop": "{{doc-apihelp-param|query+alllinks|prop}}",
+       "apihelp-query+alllinks-param-prop": "{{doc-apihelp-param|query+alllinks|prop|paramvalues=1}}",
+       "apihelp-query+alllinks-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+alllinks|prop|ids}}",
+       "apihelp-query+alllinks-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+alllinks|prop|title}}",
        "apihelp-query+alllinks-param-namespace": "{{doc-apihelp-param|query+alllinks|namespace}}",
        "apihelp-query+alllinks-param-limit": "{{doc-apihelp-param|query+alllinks|limit}}",
        "apihelp-query+alllinks-param-dir": "{{doc-apihelp-param|query+alllinks|dir}}",
        "apihelp-query+allredirects-param-to": "{{doc-apihelp-param|query+allredirects|to}}",
        "apihelp-query+allredirects-param-prefix": "{{doc-apihelp-param|query+allredirects|prefix}}",
        "apihelp-query+allredirects-param-unique": "{{doc-apihelp-param|query+allredirects|unique}}",
-       "apihelp-query+allredirects-param-prop": "{{doc-apihelp-param|query+allredirects|prop}}",
+       "apihelp-query+allredirects-param-prop": "{{doc-apihelp-param|query+allredirects|prop|paramvalue=1}}",
+       "apihelp-query+allredirects-paramvalue-prop-ids": "{{doc-apihelp-param|query+allredirects|prop|ids}}",
+       "apihelp-query+allredirects-paramvalue-prop-title": "{{doc-apihelp-param|query+allredirects|prop|title}}",
+       "apihelp-query+allredirects-paramvalue-prop-fragment": "{{doc-apihelp-param|query+allredirects|prop|fragment}}",
+       "apihelp-query+allredirects-paramvalue-prop-interwiki": "{{doc-apihelp-param|query+allredirects|prop|interwiki}}",
        "apihelp-query+allredirects-param-namespace": "{{doc-apihelp-param|query+allredirects|namespace}}",
        "apihelp-query+allredirects-param-limit": "{{doc-apihelp-param|query+allredirects|limit}}",
        "apihelp-query+allredirects-param-dir": "{{doc-apihelp-param|query+allredirects|dir}}",
        "apihelp-query+alltransclusions-param-to": "{{doc-apihelp-param|query+alltransclusions|to}}",
        "apihelp-query+alltransclusions-param-prefix": "{{doc-apihelp-param|query+alltransclusions|prefix}}",
        "apihelp-query+alltransclusions-param-unique": "{{doc-apihelp-param|query+alltransclusions|unique}}",
-       "apihelp-query+alltransclusions-param-prop": "{{doc-apihelp-param|query+alltransclusions|prop}}",
+       "apihelp-query+alltransclusions-param-prop": "{{doc-apihelp-param|query+alltransclusions|prop|paramvalues=1}}",
+       "apihelp-query+alltransclusions-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+alltransclusions|prop|ids}}",
+       "apihelp-query+alltransclusions-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+alltransclusions|prop|title}}",
        "apihelp-query+alltransclusions-param-namespace": "{{doc-apihelp-param|query+alltransclusions|namespace}}",
        "apihelp-query+alltransclusions-param-limit": "{{doc-apihelp-param|query+alltransclusions|limit}}",
        "apihelp-query+alltransclusions-param-dir": "{{doc-apihelp-param|query+alltransclusions|dir}}",
        "apihelp-query+allusers-param-group": "{{doc-apihelp-param|query+allusers|group}}",
        "apihelp-query+allusers-param-excludegroup": "{{doc-apihelp-param|query+allusers|excludegroup}}",
        "apihelp-query+allusers-param-rights": "{{doc-apihelp-param|query+allusers|rights}}",
-       "apihelp-query+allusers-param-prop": "{{doc-apihelp-param|query+allusers|prop}}",
+       "apihelp-query+allusers-param-prop": "{{doc-apihelp-param|query+allusers|prop|paramvalues=1}}",
+       "apihelp-query+allusers-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+allusers|prop|blockinfo}}",
+       "apihelp-query+allusers-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+allusers|prop|groups}}",
+       "apihelp-query+allusers-paramvalue-prop-implicitgroups": "{{doc-apihelp-paramvalue|query+allusers|prop|implicitgroups}}",
+       "apihelp-query+allusers-paramvalue-prop-rights": "{{doc-apihelp-paramvalue|query+allusers|prop|rights}}",
+       "apihelp-query+allusers-paramvalue-prop-editcount": "{{doc-apihelp-paramvalue|query+allusers|prop|editcount}}",
+       "apihelp-query+allusers-paramvalue-prop-registration": "{{doc-apihelp-paramvalue|query+allusers|prop|registration}}",
        "apihelp-query+allusers-param-limit": "{{doc-apihelp-param|query+allusers|limit}}",
        "apihelp-query+allusers-param-witheditsonly": "{{doc-apihelp-param|query+allusers|witheditsonly}}",
        "apihelp-query+allusers-param-activeusers": "{{doc-apihelp-param|query+allusers|activeusers|params=* $1 - Value of [[mw:Manual:$wgActiveUserDays]]|paramstart=2}}",
        "apihelp-query+blocks-param-users": "{{doc-apihelp-param|query+blocks|users}}",
        "apihelp-query+blocks-param-ip": "{{doc-apihelp-param|query+blocks|ip|params=* $1 - Minimum CIDR prefix for IPv4\n* $2 - Minimum CIDR prefix for IPv6|paramstart=3}}",
        "apihelp-query+blocks-param-limit": "{{doc-apihelp-param|query+blocks|limit}}",
-       "apihelp-query+blocks-param-prop": "{{doc-apihelp-param|query+blocks|prop}}",
+       "apihelp-query+blocks-param-prop": "{{doc-apihelp-param|query+blocks|prop|paramvalues=1}}",
+       "apihelp-query+blocks-paramvalue-prop-id": "{{doc-apihelp-paramvalue|query+blocks|prop|id}}",
+       "apihelp-query+blocks-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+blocks|prop|user}}",
+       "apihelp-query+blocks-paramvalue-prop-userid": "{{doc-apihelp-paramvalue|query+blocks|prop|userid}}",
+       "apihelp-query+blocks-paramvalue-prop-by": "{{doc-apihelp-paramvalue|query+blocks|prop|by}}",
+       "apihelp-query+blocks-paramvalue-prop-byid": "{{doc-apihelp-paramvalue|query+blocks|prop|byid}}",
+       "apihelp-query+blocks-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+blocks|prop|timestamp}}",
+       "apihelp-query+blocks-paramvalue-prop-expiry": "{{doc-apihelp-paramvalue|query+blocks|prop|expiry}}",
+       "apihelp-query+blocks-paramvalue-prop-reason": "{{doc-apihelp-paramvalue|query+blocks|prop|reason}}",
+       "apihelp-query+blocks-paramvalue-prop-range": "{{doc-apihelp-paramvalue|query+blocks|prop|range}}",
+       "apihelp-query+blocks-paramvalue-prop-flags": "{{doc-apihelp-paramvalue|query+blocks|prop|flags}}",
        "apihelp-query+blocks-param-show": "{{doc-apihelp-param|query+blocks|show}}",
        "apihelp-query+blocks-example-simple": "{{doc-apihelp-example|query+blocks}}",
        "apihelp-query+blocks-example-users": "{{doc-apihelp-example|query+blocks}}",
        "apihelp-query+categories-description": "{{doc-apihelp-description|query+categories}}",
-       "apihelp-query+categories-param-prop": "{{doc-apihelp-param|query+categories|prop}}",
+       "apihelp-query+categories-param-prop": "{{doc-apihelp-param|query+categories|prop|paramvalues=1}}",
+       "apihelp-query+categories-paramvalue-prop-sortkey": "{{doc-apihelp-paramvalue|query+categories|prop|sortkey}}",
+       "apihelp-query+categories-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+categories|prop|timestamp}}",
+       "apihelp-query+categories-paramvalue-prop-hidden": "{{doc-apihelp-paramvalue|query+categories|prop|hidden}}",
        "apihelp-query+categories-param-show": "{{doc-apihelp-param|query+categories|show}}",
        "apihelp-query+categories-param-limit": "{{doc-apihelp-param|query+categories|limit}}",
        "apihelp-query+categories-param-categories": "{{doc-apihelp-param|query+categories|categories}}",
        "apihelp-query+categorymembers-description": "{{doc-apihelp-description|query+categorymembers}}",
        "apihelp-query+categorymembers-param-title": "{{doc-apihelp-param|query+categorymembers|title}}",
        "apihelp-query+categorymembers-param-pageid": "{{doc-apihelp-param|query+categorymembers|pageid}}",
-       "apihelp-query+categorymembers-param-prop": "{{doc-apihelp-param|query+categorymembers|prop}}",
+       "apihelp-query+categorymembers-param-prop": "{{doc-apihelp-param|query+categorymembers|prop|paramvalues=1}}",
+       "apihelp-query+categorymembers-paramvalue-prop-ids": "{{doc-apihelp-param|query+categorymembers|prop|ids}}",
+       "apihelp-query+categorymembers-paramvalue-prop-title": "{{doc-apihelp-param|query+categorymembers|prop|title}}",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkey": "{{doc-apihelp-param|query+categorymembers|prop|sortkey}}",
+       "apihelp-query+categorymembers-paramvalue-prop-sortkeyprefix": "{{doc-apihelp-param|query+categorymembers|prop|sortkeyprefix}}",
+       "apihelp-query+categorymembers-paramvalue-prop-type": "{{doc-apihelp-param|query+categorymembers|prop|type}}",
+       "apihelp-query+categorymembers-paramvalue-prop-timestamp": "{{doc-apihelp-param|query+categorymembers|prop|timestamp}}",
        "apihelp-query+categorymembers-param-namespace": "{{doc-apihelp-param|query+categorymembers|namespace}}",
        "apihelp-query+categorymembers-param-type": "{{doc-apihelp-param|query+categorymembers|type}}",
        "apihelp-query+categorymembers-param-limit": "{{doc-apihelp-param|query+categorymembers|limit}}",
        "apihelp-query+extlinks-param-expandurl": "{{doc-apihelp-param|query+extlinks|expandurl}}",
        "apihelp-query+extlinks-example-simple": "{{doc-apihelp-example|query+extlinks}}",
        "apihelp-query+exturlusage-description": "{{doc-apihelp-description|query+exturlusage}}",
-       "apihelp-query+exturlusage-param-prop": "{{doc-apihelp-param|query+exturlusage|prop}}",
+       "apihelp-query+exturlusage-param-prop": "{{doc-apihelp-param|query+exturlusage|prop|paramvalues=1}}",
+       "apihelp-query+exturlusage-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+exturlusage|prop|ids}}",
+       "apihelp-query+exturlusage-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+exturlusage|prop|title}}",
+       "apihelp-query+exturlusage-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+exturlusage|prop|url}}",
        "apihelp-query+exturlusage-param-protocol": "{{doc-apihelp-param|query+exturlusage|protocol}}",
        "apihelp-query+exturlusage-param-query": "{{doc-apihelp-param|query+exturlusage|query}}",
        "apihelp-query+exturlusage-param-namespace": "{{doc-apihelp-param|query+exturlusage|namespace}}",
        "apihelp-query+filearchive-param-dir": "{{doc-apihelp-param|query+filearchive|dir}}",
        "apihelp-query+filearchive-param-sha1": "{{doc-apihelp-param|query+filearchive|sha1}}",
        "apihelp-query+filearchive-param-sha1base36": "{{doc-apihelp-param|query+filearchive|sha1base36}}",
-       "apihelp-query+filearchive-param-prop": "{{doc-apihelp-param|query+filearchive|prop}}",
+       "apihelp-query+filearchive-param-prop": "{{doc-apihelp-param|query+filearchive|prop|paramvalues=1}}",
+       "apihelp-query+filearchive-paramvalue-prop-sha1": "{{doc-apihelp-paramvalue|query+filearchive|prop|sha1}}",
+       "apihelp-query+filearchive-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+filearchive|prop|timestamp}}",
+       "apihelp-query+filearchive-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+filearchive|prop|user}}",
+       "apihelp-query+filearchive-paramvalue-prop-size": "{{doc-apihelp-paramvalue|query+filearchive|prop|size}}",
+       "apihelp-query+filearchive-paramvalue-prop-dimensions": "{{doc-apihelp-paramvalue|query+filearchive|prop|dimensions}}",
+       "apihelp-query+filearchive-paramvalue-prop-description": "{{doc-apihelp-paramvalue|query+filearchive|prop|description}}",
+       "apihelp-query+filearchive-paramvalue-prop-parseddescription": "{{doc-apihelp-paramvalue|query+filearchive|prop|parseddescription}}",
+       "apihelp-query+filearchive-paramvalue-prop-mime": "{{doc-apihelp-paramvalue|query+filearchive|prop|mime}}",
+       "apihelp-query+filearchive-paramvalue-prop-mediatype": "{{doc-apihelp-paramvalue|query+filearchive|prop|mediatype}}",
+       "apihelp-query+filearchive-paramvalue-prop-metadata": "{{doc-apihelp-paramvalue|query+filearchive|prop|metadata}}",
+       "apihelp-query+filearchive-paramvalue-prop-bitdepth": "{{doc-apihelp-paramvalue|query+filearchive|prop|bitdepth}}",
+       "apihelp-query+filearchive-paramvalue-prop-archivename": "{{doc-apihelp-paramvalue|query+filearchive|prop|archivename}}",
        "apihelp-query+filearchive-example-simple": "{{doc-apihelp-example|query+filearchive}}",
        "apihelp-query+filerepoinfo-description": "{{doc-apihelp-description|query+filerepoinfo}}",
        "apihelp-query+filerepoinfo-param-prop": "{{doc-apihelp-param|query+filerepoinfo|prop}}",
        "apihelp-query+filerepoinfo-example-simple": "{{doc-apihelp-example|query+filerepoinfo}}",
        "apihelp-query+fileusage-description": "{{doc-apihelp-description|query+fileusage}}",
-       "apihelp-query+fileusage-param-prop": "{{doc-apihelp-param|query+fileusage|prop}}",
+       "apihelp-query+fileusage-param-prop": "{{doc-apihelp-param|query+fileusage|prop|paramvalues=1}}",
+       "apihelp-query+fileusage-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+fileusage|prop|pageid}}",
+       "apihelp-query+fileusage-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+fileusage|prop|title}}",
+       "apihelp-query+fileusage-paramvalue-prop-redirect": "{{doc-apihelp-paramvalue|query+fileusage|prop|redirect}}",
        "apihelp-query+fileusage-param-namespace": "{{doc-apihelp-param|query+fileusage|namespace}}",
        "apihelp-query+fileusage-param-limit": "{{doc-apihelp-param|query+fileusage|limit}}",
        "apihelp-query+fileusage-param-show": "{{doc-apihelp-param|query+fileusage|show}}",
        "apihelp-query+iwbacklinks-param-prefix": "{{doc-apihelp-param|query+iwbacklinks|prefix}}",
        "apihelp-query+iwbacklinks-param-title": "{{doc-apihelp-param|query+iwbacklinks|title}}",
        "apihelp-query+iwbacklinks-param-limit": "{{doc-apihelp-param|query+iwbacklinks|limit}}",
-       "apihelp-query+iwbacklinks-param-prop": "{{doc-apihelp-param|query+iwbacklinks|prop}}",
+       "apihelp-query+iwbacklinks-param-prop": "{{doc-apihelp-param|query+iwbacklinks|prop|paramvalues=1}}",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwprefix": "{{doc-apihelp-paramvalue|query+iwbacklinks|prop|iwprefix}}",
+       "apihelp-query+iwbacklinks-paramvalue-prop-iwtitle": "{{doc-apihelp-paramvalue|query+iwbacklinks|prop|iwtitle}}",
        "apihelp-query+iwbacklinks-param-dir": "{{doc-apihelp-param|query+iwbacklinks|dir}}",
        "apihelp-query+iwbacklinks-example-simple": "{{doc-apihelp-example|query+iwbacklinks}}",
        "apihelp-query+iwbacklinks-example-generator": "{{doc-apihelp-example|query+iwbacklinks}}",
        "apihelp-query+iwlinks-description": "{{doc-apihelp-description|query+iwlinks}}",
        "apihelp-query+iwlinks-param-url": "{{doc-apihelp-param|query+iwlinks|url}}",
-       "apihelp-query+iwlinks-param-prop": "{{doc-apihelp-param|query+iwlinks|prop}}",
+       "apihelp-query+iwlinks-param-prop": "{{doc-apihelp-param|query+iwlinks|prop|paramvalues=1}}",
+       "apihelp-query+iwlinks-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+iwlinks|prop|url}}",
        "apihelp-query+iwlinks-param-limit": "{{doc-apihelp-param|query+iwlinks|limit}}",
        "apihelp-query+iwlinks-param-prefix": "{{doc-apihelp-param|query+iwlinks|prefix}}",
        "apihelp-query+iwlinks-param-title": "{{doc-apihelp-param|query+iwlinks|title}}",
        "apihelp-query+langbacklinks-param-lang": "{{doc-apihelp-param|query+langbacklinks|lang}}",
        "apihelp-query+langbacklinks-param-title": "{{doc-apihelp-param|query+langbacklinks|title}}",
        "apihelp-query+langbacklinks-param-limit": "{{doc-apihelp-param|query+langbacklinks|limit}}",
-       "apihelp-query+langbacklinks-param-prop": "{{doc-apihelp-param|query+langbacklinks|prop}}",
+       "apihelp-query+langbacklinks-param-prop": "{{doc-apihelp-param|query+langbacklinks|prop|paramvalues=1}}",
+       "apihelp-query+langbacklinks-paramvalue-prop-lllang": "{{doc-apihelp-param|query+langbacklinks|prop|lllang}}",
+       "apihelp-query+langbacklinks-paramvalue-prop-lltitle": "{{doc-apihelp-param|query+langbacklinks|prop|lltitle}}",
        "apihelp-query+langbacklinks-param-dir": "{{doc-apihelp-param|query+langbacklinks|dir}}",
        "apihelp-query+langbacklinks-example-simple": "{{doc-apihelp-example|query+langbacklinks}}",
        "apihelp-query+langbacklinks-example-generator": "{{doc-apihelp-example|query+langbacklinks}}",
        "apihelp-query+langlinks-description": "{{doc-apihelp-description|query+langlinks}}",
        "apihelp-query+langlinks-param-limit": "{{doc-apihelp-param|query+langlinks|limit}}",
        "apihelp-query+langlinks-param-url": "{{doc-apihelp-param|query+langlinks|url}}",
-       "apihelp-query+langlinks-param-prop": "{{doc-apihelp-param|query+langlinks|prop}}",
+       "apihelp-query+langlinks-param-prop": "{{doc-apihelp-param|query+langlinks|prop|paramvalues=1}}",
+       "apihelp-query+langlinks-paramvalue-prop-url": "{{doc-apihelp-paramvalue|query+langlinks|prop|url}}",
+       "apihelp-query+langlinks-paramvalue-prop-langname": "{{doc-apihelp-paramvalue|query+langlinks|prop|langname}}",
+       "apihelp-query+langlinks-paramvalue-prop-autonym": "{{doc-apihelp-paramvalue|query+langlinks|prop|autonym}}",
        "apihelp-query+langlinks-param-lang": "{{doc-apihelp-param|query+langlinks|lang}}",
        "apihelp-query+langlinks-param-title": "{{doc-apihelp-param|query+langlinks|title}}",
        "apihelp-query+langlinks-param-dir": "{{doc-apihelp-param|query+langlinks|dir}}",
        "apihelp-query+links-example-generator": "{{doc-apihelp-example|query+links}}",
        "apihelp-query+links-example-namespaces": "{{doc-apihelp-example|query+links}}",
        "apihelp-query+linkshere-description": "{{doc-apihelp-description|query+linkshere}}",
-       "apihelp-query+linkshere-param-prop": "{{doc-apihelp-param|query+linkshere|prop}}",
+       "apihelp-query+linkshere-param-prop": "{{doc-apihelp-param|query+linkshere|prop|paramvalues=1}}",
+       "apihelp-query+linkshere-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+linkshere|prop|pageid}}",
+       "apihelp-query+linkshere-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+linkshere|prop|title}}",
+       "apihelp-query+linkshere-paramvalue-prop-redirect": "{{doc-apihelp-paramvalue|query+linkshere|prop|redirect}}",
        "apihelp-query+linkshere-param-namespace": "{{doc-apihelp-param|query+linkshere|namespace}}",
        "apihelp-query+linkshere-param-limit": "{{doc-apihelp-param|query+linkshere|limit}}",
        "apihelp-query+linkshere-param-show": "{{doc-apihelp-param|query+linkshere|show}}",
        "apihelp-query+linkshere-example-simple": "{{doc-apihelp-example|query+linkshere}}",
        "apihelp-query+linkshere-example-generator": "{{doc-apihelp-example|query+linkshere}}",
        "apihelp-query+logevents-description": "{{doc-apihelp-description|query+logevents}}",
-       "apihelp-query+logevents-param-prop": "{{doc-apihelp-param|query+logevents|prop}}",
+       "apihelp-query+logevents-param-prop": "{{doc-apihelp-param|query+logevents|prop|paramvalues=1}}",
+       "apihelp-query+logevents-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+logevents|prop|ids}}",
+       "apihelp-query+logevents-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+logevents|prop|title}}",
+       "apihelp-query+logevents-paramvalue-prop-type": "{{doc-apihelp-paramvalue|query+logevents|prop|type}}",
+       "apihelp-query+logevents-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+logevents|prop|user}}",
+       "apihelp-query+logevents-paramvalue-prop-userid": "{{doc-apihelp-paramvalue|query+logevents|prop|userid}}",
+       "apihelp-query+logevents-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+logevents|prop|timestamp}}",
+       "apihelp-query+logevents-paramvalue-prop-comment": "{{doc-apihelp-paramvalue|query+logevents|prop|comment}}",
+       "apihelp-query+logevents-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|query+logevents|prop|parsedcomment}}",
+       "apihelp-query+logevents-paramvalue-prop-details": "{{doc-apihelp-paramvalue|query+logevents|prop|details}}",
+       "apihelp-query+logevents-paramvalue-prop-tags": "{{doc-apihelp-paramvalue|query+logevents|prop|tags}}",
        "apihelp-query+logevents-param-type": "{{doc-apihelp-param|query+logevents|type}}",
        "apihelp-query+logevents-param-action": "{{doc-apihelp-param|query+logevents|action}}",
        "apihelp-query+logevents-param-start": "{{doc-apihelp-param|query+logevents|start}}",
        "apihelp-query+pageprops-example-simple": "{{doc-apihelp-example|query+pageprops}}",
        "apihelp-query+pageswithprop-description": "{{doc-apihelp-description|query+pageswithprop}}",
        "apihelp-query+pageswithprop-param-propname": "{{doc-apihelp-param|query+pageswithprop|propname}}",
-       "apihelp-query+pageswithprop-param-prop": "{{doc-apihelp-param|query+pageswithprop|prop}}",
+       "apihelp-query+pageswithprop-param-prop": "{{doc-apihelp-param|query+pageswithprop|prop|paramvalues=1}}",
+       "apihelp-query+pageswithprop-paramvalue-prop-ids": "{{doc-apihelp-param|query+pageswithprop|prop|ids}}",
+       "apihelp-query+pageswithprop-paramvalue-prop-title": "{{doc-apihelp-param|query+pageswithprop|prop|title}}",
+       "apihelp-query+pageswithprop-paramvalue-prop-value": "{{doc-apihelp-param|query+pageswithprop|prop|value}}",
        "apihelp-query+pageswithprop-param-limit": "{{doc-apihelp-param|query+pageswithprop|limit}}",
        "apihelp-query+pageswithprop-param-dir": "{{doc-apihelp-param|query+pageswithprop|dir}}",
        "apihelp-query+pageswithprop-example-simple": "{{doc-apihelp-example|query+pageswithprop}}",
        "apihelp-query+protectedtitles-param-limit": "{{doc-apihelp-param|query+protectedtitles|limit}}",
        "apihelp-query+protectedtitles-param-start": "{{doc-apihelp-param|query+protectedtitles|start}}",
        "apihelp-query+protectedtitles-param-end": "{{doc-apihelp-param|query+protectedtitles|end}}",
-       "apihelp-query+protectedtitles-param-prop": "{{doc-apihelp-param|query+protectedtitles|prop}}",
+       "apihelp-query+protectedtitles-param-prop": "{{doc-apihelp-param|query+protectedtitles|prop|paramvalues=1}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|timestamp}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|user}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-userid": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|userid}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-comment": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|comment}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|parsedcomment}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-expiry": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|expiry}}",
+       "apihelp-query+protectedtitles-paramvalue-prop-level": "{{doc-apihelp-paramvalue|query+protectedtitles|prop|level}}",
        "apihelp-query+protectedtitles-example-simple": "{{doc-apihelp-example|query+protectedtitles}}",
        "apihelp-query+protectedtitles-example-generator": "{{doc-apihelp-example|query+protectedtitles}}",
        "apihelp-query+querypage-description": "{{doc-apihelp-description|query+querypage}}",
        "apihelp-query+recentchanges-param-user": "{{doc-apihelp-param|query+recentchanges|user}}",
        "apihelp-query+recentchanges-param-excludeuser": "{{doc-apihelp-param|query+recentchanges|excludeuser}}",
        "apihelp-query+recentchanges-param-tag": "{{doc-apihelp-param|query+recentchanges|tag}}",
-       "apihelp-query+recentchanges-param-prop": "{{doc-apihelp-param|query+recentchanges|prop}}",
+       "apihelp-query+recentchanges-param-prop": "{{doc-apihelp-param|query+recentchanges|prop|paramvalues=1}}",
+       "apihelp-query+recentchanges-paramvalue-prop-user": "{{doc-apihelp-paramvalue|query+recentchanges|prop|user}}",
+       "apihelp-query+recentchanges-paramvalue-prop-userid": "{{doc-apihelp-paramvalue|query+recentchanges|prop|userid}}",
+       "apihelp-query+recentchanges-paramvalue-prop-comment": "{{doc-apihelp-paramvalue|query+recentchanges|prop|comment}}",
+       "apihelp-query+recentchanges-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|query+recentchanges|prop|parsedcomment}}",
+       "apihelp-query+recentchanges-paramvalue-prop-flags": "{{doc-apihelp-paramvalue|query+recentchanges|prop|flags}}",
+       "apihelp-query+recentchanges-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+recentchanges|prop|timestamp}}",
+       "apihelp-query+recentchanges-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+recentchanges|prop|title}}",
+       "apihelp-query+recentchanges-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+recentchanges|prop|ids}}",
+       "apihelp-query+recentchanges-paramvalue-prop-sizes": "{{doc-apihelp-paramvalue|query+recentchanges|prop|sizes}}",
+       "apihelp-query+recentchanges-paramvalue-prop-redirect": "{{doc-apihelp-paramvalue|query+recentchanges|prop|redirect}}",
+       "apihelp-query+recentchanges-paramvalue-prop-patrolled": "{{doc-apihelp-paramvalue|query+recentchanges|prop|patrolled}}",
+       "apihelp-query+recentchanges-paramvalue-prop-loginfo": "{{doc-apihelp-paramvalue|query+recentchanges|prop|loginfo}}",
+       "apihelp-query+recentchanges-paramvalue-prop-tags": "{{doc-apihelp-paramvalue|query+recentchanges|prop|tags}}",
+       "apihelp-query+recentchanges-paramvalue-prop-sha1": "{{doc-apihelp-paramvalue|query+recentchanges|prop|sha1}}",
        "apihelp-query+recentchanges-param-token": "{{doc-apihelp-param|query+recentchanges|token}}",
        "apihelp-query+recentchanges-param-show": "{{doc-apihelp-param|query+recentchanges|show}}",
        "apihelp-query+recentchanges-param-limit": "{{doc-apihelp-param|query+recentchanges|limit}}",
        "apihelp-query+recentchanges-example-simple": "{{doc-apihelp-example|query+recentchanges}}",
        "apihelp-query+recentchanges-example-generator": "{{doc-apihelp-example|query+recentchanges}}",
        "apihelp-query+redirects-description": "{{doc-apihelp-description|query+redirects}}",
-       "apihelp-query+redirects-param-prop": "{{doc-apihelp-param|query+redirects|prop}}",
+       "apihelp-query+redirects-param-prop": "{{doc-apihelp-param|query+redirects|prop|paramvalues=1}}",
+       "apihelp-query+redirects-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+redirects|prop|pageid}}",
+       "apihelp-query+redirects-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+redirects|prop|title}}",
+       "apihelp-query+redirects-paramvalue-prop-fragment": "{{doc-apihelp-paramvalue|query+redirects|prop|fragment}}",
        "apihelp-query+redirects-param-namespace": "{{doc-apihelp-param|query+redirects|namespace}}",
        "apihelp-query+redirects-param-limit": "{{doc-apihelp-param|query+redirects|limit}}",
        "apihelp-query+redirects-param-show": "{{doc-apihelp-param|query+redirects|show}}",
        "apihelp-query+search-param-namespace": "{{doc-apihelp-param|query+search|namespace}}",
        "apihelp-query+search-param-what": "{{doc-apihelp-param|query+search|what}}",
        "apihelp-query+search-param-info": "{{doc-apihelp-param|query+search|info}}",
-       "apihelp-query+search-param-prop": "{{doc-apihelp-param|query+search|prop}}",
+       "apihelp-query+search-param-prop": "{{doc-apihelp-param|query+search|prop|paramvalues=1}}",
+       "apihelp-query+search-paramvalue-prop-size": "{{doc-apihelp-paramvalue|query+search|prop|size}}",
+       "apihelp-query+search-paramvalue-prop-wordcount": "{{doc-apihelp-paramvalue|query+search|prop|wordcount}}",
+       "apihelp-query+search-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+search|prop|timestamp}}",
+       "apihelp-query+search-paramvalue-prop-snippet": "{{doc-apihelp-paramvalue|query+search|prop|snippet}}",
+       "apihelp-query+search-paramvalue-prop-titlesnippet": "{{doc-apihelp-paramvalue|query+search|prop|titlesnippet}}",
+       "apihelp-query+search-paramvalue-prop-redirectsnippet": "{{doc-apihelp-paramvalue|query+search|prop|redirectsnippet}}",
+       "apihelp-query+search-paramvalue-prop-redirecttitle": "{{doc-apihelp-paramvalue|query+search|prop|redirecttitle}}",
+       "apihelp-query+search-paramvalue-prop-sectionsnippet": "{{doc-apihelp-paramvalue|query+search|prop|sectionsnippet}}",
+       "apihelp-query+search-paramvalue-prop-sectiontitle": "{{doc-apihelp-paramvalue|query+search|prop|sectiontitle}}",
+       "apihelp-query+search-paramvalue-prop-categorysnippet": "{{doc-apihelp-paramvalue|query+search|prop|categorysnippet}}",
+       "apihelp-query+search-paramvalue-prop-isfilematch": "{{doc-apihelp-paramvalue|query+search|prop|isfilematch}}",
+       "apihelp-query+search-paramvalue-prop-score": "{{doc-apihelp-paramvalue|query+search|prop|score}}",
+       "apihelp-query+search-paramvalue-prop-hasrelated": "{{doc-apihelp-paramvalue|query+search|prop|hasrelated}}",
        "apihelp-query+search-param-limit": "{{doc-apihelp-param|query+search|limit}}",
        "apihelp-query+search-param-interwiki": "{{doc-apihelp-param|query+search|interwiki}}",
        "apihelp-query+search-param-backend": "{{doc-apihelp-param|query+search|backend}}",
        "apihelp-query+search-example-text": "{{doc-apihelp-example|query+search}}",
        "apihelp-query+search-example-generator": "{{doc-apihelp-example|query+search}}",
        "apihelp-query+siteinfo-description": "{{doc-apihelp-description|query+siteinfo}}",
-       "apihelp-query+siteinfo-param-prop": "{{doc-apihelp-param|query+siteinfo|prop}}",
+       "apihelp-query+siteinfo-param-prop": "{{doc-apihelp-param|query+siteinfo|prop|paramvalues=1}}",
+       "apihelp-query+siteinfo-paramvalue-prop-general": "{{doc-apihelp-paramvalue|query+siteinfo|prop|general}}",
+       "apihelp-query+siteinfo-paramvalue-prop-namespaces": "{{doc-apihelp-paramvalue|query+siteinfo|prop|namespaces}}",
+       "apihelp-query+siteinfo-paramvalue-prop-namespacealiases": "{{doc-apihelp-paramvalue|query+siteinfo|prop|namespacealiases}}",
+       "apihelp-query+siteinfo-paramvalue-prop-specialpagealiases": "{{doc-apihelp-paramvalue|query+siteinfo|prop|specialpagealiases}}",
+       "apihelp-query+siteinfo-paramvalue-prop-magicwords": "{{doc-apihelp-paramvalue|query+siteinfo|prop|magicwords}}",
+       "apihelp-query+siteinfo-paramvalue-prop-statistics": "{{doc-apihelp-paramvalue|query+siteinfo|prop|statistics}}",
+       "apihelp-query+siteinfo-paramvalue-prop-interwikimap": "{{doc-apihelp-paramvalue|query+siteinfo|prop|interwikimap}}",
+       "apihelp-query+siteinfo-paramvalue-prop-dbrepllag": "{{doc-apihelp-paramvalue|query+siteinfo|prop|dbrepllag}}",
+       "apihelp-query+siteinfo-paramvalue-prop-usergroups": "{{doc-apihelp-paramvalue|query+siteinfo|prop|usergroups}}",
+       "apihelp-query+siteinfo-paramvalue-prop-libraries": "{{doc-apihelp-paramvalue|query+siteinfo|prop|libraries}}",
+       "apihelp-query+siteinfo-paramvalue-prop-extensions": "{{doc-apihelp-paramvalue|query+siteinfo|prop|extensions}}",
+       "apihelp-query+siteinfo-paramvalue-prop-fileextensions": "{{doc-apihelp-paramvalue|query+siteinfo|prop|fileextensions}}",
+       "apihelp-query+siteinfo-paramvalue-prop-rightsinfo": "{{doc-apihelp-paramvalue|query+siteinfo|prop|rightsinfo}}",
+       "apihelp-query+siteinfo-paramvalue-prop-restrictions": "{{doc-apihelp-paramvalue|query+siteinfo|prop|restrictions}}",
+       "apihelp-query+siteinfo-paramvalue-prop-languages": "{{doc-apihelp-paramvalue|query+siteinfo|prop|languages}}",
+       "apihelp-query+siteinfo-paramvalue-prop-skins": "{{doc-apihelp-paramvalue|query+siteinfo|prop|skins}}",
+       "apihelp-query+siteinfo-paramvalue-prop-extensiontags": "{{doc-apihelp-paramvalue|query+siteinfo|prop|extensiontags}}",
+       "apihelp-query+siteinfo-paramvalue-prop-functionhooks": "{{doc-apihelp-paramvalue|query+siteinfo|prop|functionhooks}}",
+       "apihelp-query+siteinfo-paramvalue-prop-showhooks": "{{doc-apihelp-paramvalue|query+siteinfo|prop|showhooks}}",
+       "apihelp-query+siteinfo-paramvalue-prop-variables": "{{doc-apihelp-paramvalue|query+siteinfo|prop|variables}}",
+       "apihelp-query+siteinfo-paramvalue-prop-protocols": "{{doc-apihelp-paramvalue|query+siteinfo|prop|protocols}}",
+       "apihelp-query+siteinfo-paramvalue-prop-defaultoptions": "{{doc-apihelp-paramvalue|query+siteinfo|prop|defaultoptions}}",
        "apihelp-query+siteinfo-param-filteriw": "{{doc-apihelp-param|query+siteinfo|filteriw}}",
        "apihelp-query+siteinfo-param-showalldb": "{{doc-apihelp-param|query+siteinfo|showalldb}}",
        "apihelp-query+siteinfo-param-numberingroup": "{{doc-apihelp-param|query+siteinfo|numberingroup}}",
        "apihelp-query+stashimageinfo-example-params": "{{doc-apihelp-example|query+stashimageinfo}}",
        "apihelp-query+tags-description": "{{doc-apihelp-description|query+tags}}",
        "apihelp-query+tags-param-limit": "{{doc-apihelp-param|query+tags|limit}}",
-       "apihelp-query+tags-param-prop": "{{doc-apihelp-param|query+tags|prop}}",
+       "apihelp-query+tags-param-prop": "{{doc-apihelp-param|query+tags|prop|paramvalues=1}}",
+       "apihelp-query+tags-paramvalue-prop-name": "{{doc-apihelp-paramvalue|query+tags|prop|name}}",
+       "apihelp-query+tags-paramvalue-prop-displayname": "{{doc-apihelp-paramvalue|query+tags|prop|displayname}}",
+       "apihelp-query+tags-paramvalue-prop-description": "{{doc-apihelp-paramvalue|query+tags|prop|description}}",
+       "apihelp-query+tags-paramvalue-prop-hitcount": "{{doc-apihelp-paramvalue|query+tags|prop|hitcount}}",
+       "apihelp-query+tags-paramvalue-prop-defined": "{{doc-apihelp-paramvalue|query+tags|prop|defined}}",
+       "apihelp-query+tags-paramvalue-prop-source": "{{doc-apihelp-paramvalue|query+tags|prop|source}}",
+       "apihelp-query+tags-paramvalue-prop-active": "{{doc-apihelp-paramvalue|query+tags|prop|active}}",
        "apihelp-query+tags-example-simple": "{{doc-apihelp-example|query+tags}}",
        "apihelp-query+templates-description": "{{doc-apihelp-description|query+templates}}",
        "apihelp-query+templates-param-namespace": "{{doc-apihelp-param|query+templates|namespace}}",
        "apihelp-query+tokens-example-simple": "{{doc-apihelp-example|query+tokens}}",
        "apihelp-query+tokens-example-types": "{{doc-apihelp-example|query+tokens}}",
        "apihelp-query+transcludedin-description": "{{doc-apihelp-description|query+transcludedin}}",
-       "apihelp-query+transcludedin-param-prop": "{{doc-apihelp-param|query+transcludedin|prop}}",
+       "apihelp-query+transcludedin-param-prop": "{{doc-apihelp-param|query+transcludedin|prop|paramvalues=1}}",
+       "apihelp-query+transcludedin-paramvalue-prop-pageid": "{{doc-apihelp-paramvalue|query+transcludedin|prop|pageid}}",
+       "apihelp-query+transcludedin-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+transcludedin|prop|title}}",
+       "apihelp-query+transcludedin-paramvalue-prop-redirect": "{{doc-apihelp-paramvalue|query+transcludedin|prop|redirect}}",
        "apihelp-query+transcludedin-param-namespace": "{{doc-apihelp-param|query+transcludedin|namespace}}",
        "apihelp-query+transcludedin-param-limit": "{{doc-apihelp-param|query+transcludedin|limit}}",
        "apihelp-query+transcludedin-param-show": "{{doc-apihelp-param|query+transcludedin|show}}",
        "apihelp-query+usercontribs-param-user": "{{doc-apihelp-param|query+usercontribs|user}}",
        "apihelp-query+usercontribs-param-userprefix": "{{doc-apihelp-param|query+usercontribs|userprefix}}",
        "apihelp-query+usercontribs-param-namespace": "{{doc-apihelp-param|query+usercontribs|namespace}}",
-       "apihelp-query+usercontribs-param-prop": "{{doc-apihelp-param|query+usercontribs|prop}}",
+       "apihelp-query+usercontribs-param-prop": "{{doc-apihelp-param|query+usercontribs|prop|paramvalues=1}}",
+       "apihelp-query+usercontribs-paramvalue-prop-ids": "{{doc-apihelp-paramvalue|query+usercontribs|prop|ids}}",
+       "apihelp-query+usercontribs-paramvalue-prop-title": "{{doc-apihelp-paramvalue|query+usercontribs|prop|title}}",
+       "apihelp-query+usercontribs-paramvalue-prop-timestamp": "{{doc-apihelp-paramvalue|query+usercontribs|prop|timestamp}}",
+       "apihelp-query+usercontribs-paramvalue-prop-comment": "{{doc-apihelp-paramvalue|query+usercontribs|prop|comment}}",
+       "apihelp-query+usercontribs-paramvalue-prop-parsedcomment": "{{doc-apihelp-paramvalue|query+usercontribs|prop|parsedcomment}}",
+       "apihelp-query+usercontribs-paramvalue-prop-size": "{{doc-apihelp-paramvalue|query+usercontribs|prop|size}}",
+       "apihelp-query+usercontribs-paramvalue-prop-sizediff": "{{doc-apihelp-paramvalue|query+usercontribs|prop|sizediff}}",
+       "apihelp-query+usercontribs-paramvalue-prop-flags": "{{doc-apihelp-paramvalue|query+usercontribs|prop|flags}}",
+       "apihelp-query+usercontribs-paramvalue-prop-patrolled": "{{doc-apihelp-paramvalue|query+usercontribs|prop|patrolled}}",
+       "apihelp-query+usercontribs-paramvalue-prop-tags": "{{doc-apihelp-paramvalue|query+usercontribs|prop|tags}}",
        "apihelp-query+usercontribs-param-show": "{{doc-apihelp-param|query+usercontribs|show|params=* $1 - Value of [[mw:Manual:$RCMaxAge|$RCMaxAge]]|paramstart=2}}",
        "apihelp-query+usercontribs-param-tag": "{{doc-apihelp-param|query+usercontribs|tag}}",
        "apihelp-query+usercontribs-param-toponly": "{{doc-apihelp-param|query+usercontribs|toponly}}",
        "apihelp-query+usercontribs-example-user": "{{doc-apihelp-example|query+usercontribs}}",
        "apihelp-query+usercontribs-example-ipprefix": "{{doc-apihelp-example|query+usercontribs}}",
        "apihelp-query+userinfo-description": "{{doc-apihelp-description|query+userinfo}}",
-       "apihelp-query+userinfo-param-prop": "{{doc-apihelp-param|query+userinfo|prop|params=* $1 - Maximum value for the \"unreadcount\" property.\n* $2 - Return value when there are more unread pages.|paramstart=3}}",
+       "apihelp-query+userinfo-param-prop": "{{doc-apihelp-param|query+userinfo|prop|paramvalues=1}}",
+       "apihelp-query+userinfo-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+userinfo|prop|blockinfo}}",
+       "apihelp-query+userinfo-paramvalue-prop-hasmsg": "{{doc-apihelp-paramvalue|query+userinfo|prop|hasmsg}}",
+       "apihelp-query+userinfo-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+userinfo|prop|groups}}",
+       "apihelp-query+userinfo-paramvalue-prop-implicitgroups": "{{doc-apihelp-paramvalue|query+userinfo|prop|implicitgroups}}",
+       "apihelp-query+userinfo-paramvalue-prop-rights": "{{doc-apihelp-paramvalue|query+userinfo|prop|rights}}",
+       "apihelp-query+userinfo-paramvalue-prop-changeablegroups": "{{doc-apihelp-paramvalue|query+userinfo|prop|changeablegroups}}",
+       "apihelp-query+userinfo-paramvalue-prop-options": "{{doc-apihelp-paramvalue|query+userinfo|prop|options}}",
+       "apihelp-query+userinfo-paramvalue-prop-preferencestoken": "{{doc-apihelp-paramvalue|query+userinfo|prop|preferencestoken}}",
+       "apihelp-query+userinfo-paramvalue-prop-editcount": "{{doc-apihelp-paramvalue|query+userinfo|prop|editcount}}",
+       "apihelp-query+userinfo-paramvalue-prop-ratelimits": "{{doc-apihelp-paramvalue|query+userinfo|prop|ratelimits}}",
+       "apihelp-query+userinfo-paramvalue-prop-realname": "{{doc-apihelp-paramvalue|query+userinfo|prop|realname}}",
+       "apihelp-query+userinfo-paramvalue-prop-email": "{{doc-apihelp-paramvalue|query+userinfo|prop|email}}",
+       "apihelp-query+userinfo-paramvalue-prop-acceptlang": "{{doc-apihelp-paramvalue|query+userinfo|prop|acceptlang}}",
+       "apihelp-query+userinfo-paramvalue-prop-registrationdate": "{{doc-apihelp-paramvalue|query+userinfo|prop|registrationdate}}",
+       "apihelp-query+userinfo-paramvalue-prop-unreadcount": "{{doc-apihelp-paramvalue|query+userinfo|prop|unreadcount|params=* $1 - Maximum value for the \"unreadcount\" property.\n* $2 - Return value when there are more unread pages.|paramstart=3}}",
        "apihelp-query+userinfo-example-simple": "{{doc-apihelp-example|query+userinfo}}",
        "apihelp-query+userinfo-example-data": "{{doc-apihelp-example|query+userinfo}}",
        "apihelp-query+users-description": "{{doc-apihelp-description|query+users}}",
-       "apihelp-query+users-param-prop": "{{doc-apihelp-param|query+users|prop}}",
+       "apihelp-query+users-param-prop": "{{doc-apihelp-param|query+users|prop|paramvalues=1}}",
+       "apihelp-query+users-paramvalue-prop-blockinfo": "{{doc-apihelp-paramvalue|query+users|prop|blockinfo}}",
+       "apihelp-query+users-paramvalue-prop-groups": "{{doc-apihelp-paramvalue|query+users|prop|groups}}",
+       "apihelp-query+users-paramvalue-prop-implicitgroups": "{{doc-apihelp-paramvalue|query+users|prop|implicitgroups}}",
+       "apihelp-query+users-paramvalue-prop-rights": "{{doc-apihelp-paramvalue|query+users|prop|rights}}",
+       "apihelp-query+users-paramvalue-prop-editcount": "{{doc-apihelp-paramvalue|query+users|prop|editcount}}",
+       "apihelp-query+users-paramvalue-prop-registration": "{{doc-apihelp-paramvalue|query+users|prop|registration}}",
+       "apihelp-query+users-paramvalue-prop-emailable": "{{doc-apihelp-paramvalue|query+users|prop|emailable}}",
+       "apihelp-query+users-paramvalue-prop-gender": "{{doc-apihelp-paramvalue|query+users|prop|gender}}",
        "apihelp-query+users-param-users": "{{doc-apihelp-param|query+users|users}}",
        "apihelp-query+users-param-token": "{{doc-apihelp-param|query+users|token}}",
        "apihelp-query+users-example-simple": "{{doc-apihelp-example|query+users}}",
        "apihelp-query+watchlistraw-description": "{{doc-apihelp-description|query+watchlistraw}}",
        "apihelp-query+watchlistraw-param-namespace": "{{doc-apihelp-param|query+watchlistraw|namespace}}",
        "apihelp-query+watchlistraw-param-limit": "{{doc-apihelp-param|query+watchlistraw|limit}}",
-       "apihelp-query+watchlistraw-param-prop": "{{doc-apihelp-param|query+watchlistraw|prop}}",
+       "apihelp-query+watchlistraw-param-prop": "{{doc-apihelp-param|query+watchlistraw|prop|paramvalues=1}}",
+       "apihelp-query+watchlistraw-paramvalue-prop-changed": "{{doc-apihelp-paramvalue|query+watchlistraw|prop|changed}}",
        "apihelp-query+watchlistraw-param-show": "{{doc-apihelp-param|query+watchlistraw|show}}",
        "apihelp-query+watchlistraw-param-owner": "{{doc-apihelp-param|query+watchlistraw|owner}}",
        "apihelp-query+watchlistraw-param-token": "{{doc-apihelp-param|query+watchlistraw|token}}",
diff --git a/includes/api/i18n/shn.json b/includes/api/i18n/shn.json
new file mode 100644 (file)
index 0000000..a5804f6
--- /dev/null
@@ -0,0 +1,8 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Saosukham"
+               ]
+       },
+       "apihelp-feedrecentchanges-param-hidecategorization": "သိူင်ႇပၢႆး ၽူႈၶဝ်ႈၸုမ်းလႅၵ်ႈလၢႆႈ"
+}
index b439fb0..3571b29 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "Ата",
                        "A1",
-                       "Ahonc"
+                       "Ahonc",
+                       "Base"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документація]]\n* [[mw:API:FAQ|FAQ]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Список розсилки]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Оголошення API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Баґи і запити]\n</div>\n<strong>Статус:</strong> Усі функції, вказані на цій сторінці, мають працювати, але API далі перебуває в активній розробці і може змінитися у будь-який момент. Підпишіться на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ список розсилки mediawiki-api-announce], щоб помічати оновлення.\n\n<strong>Хибні запити:</strong> Коли до API надсилаються хибні запити, буде відіслано HTTP-шапку з ключем «MediaWiki-API-Error», а тоді і значення шапки, і код помилки, надіслані назад, будуть встановлені з тим же значенням. Більше інформації див. на [[mw:API:Errors_and_warnings|API: Errors and warnings]].",
        "apihelp-feedrecentchanges-param-hideliu": "Приховати редагування зареєстрованих користувачів.",
        "apihelp-feedrecentchanges-param-hidepatrolled": "Приховати відпатрульовані редагування.",
        "apihelp-feedrecentchanges-param-hidemyself": "Приховати редагування поточного користувача.",
+       "apihelp-feedrecentchanges-param-hidecategorization": "Приховати зміни в членстві в категорії.",
        "apihelp-feedrecentchanges-param-tagfilter": "Фільтрувати за теґом.",
        "apihelp-feedrecentchanges-param-target": "Показати лише зміни на сторінках, на які посилається ця сторінка.",
        "apihelp-feedrecentchanges-param-showlinkedto": "Показати натомість лише зміни на сторінках, які посилаються на цю сторінку.",
        "apihelp-feedwatchlist-param-hours": "Список сторінок, змінених за цю кількість годин від зараз.",
        "apihelp-feedwatchlist-param-linktosections": "За можливості, посилатися безпосередньо на змінені розділи.",
        "apihelp-feedwatchlist-example-default": "Показати стрічку списку спостереження.",
+       "apihelp-feedwatchlist-example-all6hrs": "Показати всі зміни до спостережуваних сторінок за останні 6 годин.",
+       "apihelp-filerevert-description": "Повернути файл до старої версії.",
        "apihelp-filerevert-param-filename": "Цільова назва файлу, без префіксу File:.",
        "apihelp-filerevert-param-comment": "Завантажити коментар.",
        "apihelp-filerevert-param-archivename": "Архівна назва версії, до якої повернути.",
        "apihelp-filerevert-example-revert": "Повернути <kbd>Wiki.png</kbd> до версії <kbd>2011-03-05T15:27:40Z</kbd>.",
        "apihelp-help-description": "Відображати довідку для зазначених модулів.",
-       "apihelp-help-param-modules": "Модулі, для яких відображати довідку (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати під модулі через <kbd>+</kbd>.",
+       "apihelp-help-param-modules": "Модулі, для яких відображати довідку (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>.",
+       "apihelp-help-param-submodules": "Включити довідку для підмодулів вказаного модуля.",
        "apihelp-help-param-recursivesubmodules": "Включити довідку для підмодулів рекурсивно.",
        "apihelp-help-param-helpformat": "Формат результату довідки.",
        "apihelp-help-param-wrap": "Помістити результат у стандартну структуру API-відповіді.",
        "apihelp-logout-description": "Вийти й очистити дані сесії.",
        "apihelp-logout-example-logout": "Вийти з поточного облікового запису.",
        "apihelp-managetags-description": "Виконати керівні завдання щодо зміни теґів.",
+       "apihelp-managetags-param-operation": "Яку операцію виконати:\n;create:Створити нову мітку редагування для використання вручну.\n;delete:Вилучити мітку редагування з бази даних, включно з вилученням її з усіх версій, записів нових редагувань та записів журналів, де вона використана.\n;activate:Активувати мітку редагування, дозволивши користувачам застосовувати її вручну.\n;deactivate:Деактивувати мітку редагування, заборонивши користувачам застосовувати її вручну.",
+       "apihelp-managetags-param-tag": "Мітка для створення, вилучення, активування чи деактивування. Для створення мітки, вона повинна не існувати. Для вилучення мітки, вона повинна існувати. Для активування мітки, вона повинна існувати і не використовуватися жодним розширенням. Для деактивування мітки, вона має бути жива і визначена вручну.",
+       "apihelp-managetags-param-reason": "Необов'язкова причина створення, вилучення, активування чи деактивування мітки.",
+       "apihelp-managetags-param-ignorewarnings": "Чи ігнорувати усі попередження, що з'являються під час операції.",
+       "apihelp-managetags-example-create": "Створити мітку з назвою <kbd>spam</kbd> з причиною <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-delete": "Вилучити мітку <kbd>vandlaism</kbd> з причиною <kbd>Misspelt</kbd>",
+       "apihelp-managetags-example-activate": "Активувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>For use in edit patrolling</kbd>",
+       "apihelp-managetags-example-deactivate": "Деактивувати мітку з назвою <kbd>spam</kbd> з причиною <kbd>No longer required</kbd>",
+       "apihelp-move-description": "Перейменувати сторінку.",
+       "apihelp-move-param-from": "Назва сторінки для перейменування. Не можна використати разом з <var>$1fromid</var>.",
+       "apihelp-move-param-fromid": "ID сторінки для перейменування. Не можна використати разом з <var>$1from</var>.",
+       "apihelp-move-param-to": "Назва сторінки, на яку перейменувати.",
+       "apihelp-move-param-reason": "Причина перейменування.",
+       "apihelp-move-param-movetalk": "Перейменувати сторінку обговорення, якщо вона існує.",
+       "apihelp-move-param-movesubpages": "Перейменувати підсторінки, якщо можливо.",
+       "apihelp-move-param-noredirect": "Не створювати перенаправлення.",
+       "apihelp-move-param-watch": "Додати сторінку й перенаправлення у список спостереження поточного користувача.",
+       "apihelp-move-param-unwatch": "Вилучити сторінку й перенаправлення зі списку спостереження поточного користувача.",
+       "apihelp-move-param-watchlist": "Беззастережно додати або вилучити сторінку зі списку спостереження поточного користувача, використати налаштування або не змінювати спостереження.",
        "apihelp-move-param-ignorewarnings": "Ігнорувати всі попередження",
-       "api-help-datatypes-header": "Типи даних"
+       "apihelp-move-example-move": "Перейменувати <kbd>Badtitle</kbd> на <kbd>Goodtitle</kbd> без збереження перенаправлення.",
+       "apihelp-opensearch-description": "Шукати у вікі з використанням протоколу OpenSearch.",
+       "apihelp-opensearch-param-search": "Рядок пошуку.",
+       "apihelp-opensearch-param-limit": "Максимальна кількість результатів для виведення.",
+       "apihelp-opensearch-param-namespace": "Простори назв, у яких шукати.",
+       "apihelp-opensearch-param-suggest": "Нічого не робити, якщо <var>[[mw:Manual:$wgEnableOpenSearchSuggest|$wgEnableOpenSearchSuggest]]</var> хибний.",
+       "apihelp-opensearch-param-redirects": "Як обробляти перенаправлення:\n;return:Видати саме перенаправлення.\n;resolve:Видати цільову сторінку. Може видати менше, ніж $1limit результат{{PLURAL:$1limit||и|ів}}.\nЗ історичних причин, за замовчуванням стоїть «return» для $1format=json і «resolve» — для інших форматів.",
+       "apihelp-opensearch-param-format": "Формат виводу.",
+       "apihelp-opensearch-param-warningsaserror": "Якщо при <kbd>format=json</kbd> з'являються попередження, видати помилку API замість того, щоб їх ігнорувати.",
+       "apihelp-opensearch-example-te": "Знайти сторінки, що починаються з <kbd>Te</kbd>.",
+       "apihelp-options-description": "Змінити налаштування поточного користувача.\n\nМожна встановити лише опції, які зареєстровані у ядрі або в одному з інстальованих розширень, або опції з префіксом ключів <code>userjs-</code> (призначені для використання користувацькими скриптами).",
+       "apihelp-options-param-reset": "Встановлює налаштування сайту за замовчуванням.",
+       "apihelp-options-param-resetkinds": "Список типів опцій для перевстановлення, коли вказана опція <var>$1reset</var>.",
+       "apihelp-options-param-change": "Список змін, відформатованих як назва=значення (напр., skin=vector). Значення не може містити вертикальних рисок. Якщо значення не вказане (навіть немає знака рівності) , напр., optionname|otheroption|…, опцію буде перевстановлено до її значення за замовчуванням.",
+       "apihelp-options-param-optionname": "Назва опції, якій має бути присвоєне значення <var>$1optionvalue</var>.",
+       "apihelp-options-param-optionvalue": "Значення опції, вказане в <var>$1optionname</var>, може містити вертикальні риски.",
+       "apihelp-options-example-reset": "Скинути всі налаштування.",
+       "apihelp-options-example-change": "Змінити налаштування <kbd>skin</kbd> та <kbd>hideminor</kbd>.",
+       "apihelp-options-example-complex": "Скинути всі налаштування, потім встановити <kbd>skin</kbd> та <kbd>nickname</kbd>.",
+       "apihelp-paraminfo-description": "Отримати інформацію про модулі API.",
+       "apihelp-paraminfo-param-modules": "Список назв модулів (значення параметрів <var>action</var> і <var>format</var> або <kbd>main</kbd>). Можна вказати підмодулі через <kbd>+</kbd>.",
+       "apihelp-paraminfo-param-helpformat": "Формат рядків довідки.",
+       "apihelp-paraminfo-param-querymodules": "Список назв модулів запитів (значення параметра <var>prop</var>, <var>meta</var> або <var>list</var>). Використати <kbd>$1modules=query+foo</kbd> замість <kbd>$1querymodules=foo</kbd>.",
+       "apihelp-paraminfo-param-mainmodule": "Отримати інформацію також про основний модуль (топ-рівень). Використати натомість <kbd>$1modules=main</kbd>.",
+       "apihelp-paraminfo-param-pagesetmodule": "Отримати також інформацію про модуль pageset (з вказанням titles= і рідних).",
+       "apihelp-paraminfo-param-formatmodules": "Список назв модулів форматування (значення параметра <var>format</var>). Використати натомість <var>$1modules</var>.",
+       "apihelp-paraminfo-example-1": "Показати інформацію для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd> та <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
+       "apihelp-parse-description": "Аналізує вміст і видає парсер виходу.\n\nДив. різні prop-модулі <kbd>[[Special:ApiHelp/query|action=query]]</kbd>, щоб отримати інформацію з поточної версії сторінки.\n\nЄ декілька способів вказати текст для аналізу:\n# Вказати сторінку або версію, використавши <var>$1page</var>, <var>$1pageid</var> або <var>$1oldid</var>.\n# Вказати безпосередньо, використавши <var>$1text</var>, <var>$1title</var> і <var>$1contentmodel</var>.\n# Вказати лише підсумок аналізу. <var>$1prop</var> повинен мати порожнє значення.",
+       "apihelp-parse-param-title": "Назва сторінки, якій належить текст. Якщо пропущена, має бути вказано <var>$1contentmodel</var>, а як назву буде вжито [[API]].",
+       "apihelp-parse-param-text": "Текст для аналізу. Використати <var>$1title</var> або <var>$1contentmodel</var> для контролю моделі вмісту.",
+       "apihelp-parse-param-summary": "Підсумок для аналізу.",
+       "apihelp-parse-param-page": "Аналізувати вміст цієї сторінки. Не можна використати разом з <var>$1text</var> і <var>$1title</var>.",
+       "apihelp-parse-param-pageid": "Аналізувати вміст цієї сторінки. Перевизначає <var>$1page</var>.",
+       "apihelp-parse-param-redirects": "Якщо <var>$1page</var> або <var>$1pageid</var> вказані як перенаправлення, виправити це.",
+       "apihelp-parse-param-oldid": "Аналізувати вміст цієї версії. Перевизначає <var>$1page</var> та <var>$1pageid</var>.",
+       "apihelp-parse-param-prop": "Яку інформацію отримати?",
+       "apihelp-parse-paramvalue-prop-text": "Дає текст-аналіз вікітексту.",
+       "apihelp-parse-paramvalue-prop-langlinks": "Дає мовні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-categories": "Дає категорії в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-categorieshtml": "Дає HTML-версію категорій.",
+       "apihelp-parse-paramvalue-prop-links": "Дає зовнішні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-templates": "Дає шаблони в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-images": "Дає зображення в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-externallinks": "Дає зовнішні посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-sections": "Дає розділи в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-revid": "Додає ідентифікатор версії аналізованої сторінки.",
+       "apihelp-parse-paramvalue-prop-displaytitle": "Додає заголовок аналізованого вікітексту.",
+       "apihelp-parse-paramvalue-prop-headitems": "Дає елементи для вставки в <code>&lt;head&gt;</code> сторінки.",
+       "apihelp-parse-paramvalue-prop-headhtml": "Дає проаналізований <code>&lt;head&gt;</code> сторінки.",
+       "apihelp-parse-paramvalue-prop-modules": "Дає модулі ResourceLoader, використані на сторінці. Чи <kbd>jsconfigvars</kbd>, чи <kbd>encodedjsconfigvars</kbd> має бути запитано разом з <kbd>modules</kbd>.",
+       "apihelp-parse-paramvalue-prop-jsconfigvars": "Дає змінні конфігурації JavaScript, притаманні для сторінки.",
+       "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Дає змінні конфігурації JavaScript, притаманні для сторінки, як рядок JSON.",
+       "apihelp-parse-paramvalue-prop-indicators": "Дає HTML індикаторів стану сторінки, використаних на сторінці.",
+       "apihelp-parse-paramvalue-prop-iwlinks": "Дає інтервікі-посилання в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-wikitext": "Дає вихідний вікітекст, який було аналізовано.",
+       "apihelp-parse-paramvalue-prop-properties": "Дає різні властивості, визначені в аналізованому вікітексті.",
+       "apihelp-parse-paramvalue-prop-limitreportdata": "Дає звіт по обмеженнях у структурованому вигляді. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-limitreporthtml": "Дає HTML-версію звіту по обмеженнях. Не видає даних, якщо встановлено <var>$1disablepp</var>.",
+       "apihelp-parse-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>)",
+       "apihelp-parse-param-pst": "Зробіть трансформацію вхідних даних перед збереженням і аналізом. Дійсне лише при використанні з текстом.",
+       "apihelp-parse-param-onlypst": "Зробіть трансформацію вхідних даних перед збереженням (PST), але не аналізуйте. Видає той самий вікітекст, після застосування PST. Дійсне лише у разі використання з <var>$1text</var>.",
+       "apihelp-parse-param-effectivelanglinks": "Включає мовні посилання, додані розширеннями (для використання з <kbd>$1prop=langlinks</kbd>).",
+       "apihelp-parse-param-section": "Видає вміст лише розділу з цим номером або при <kbd>new</kbd> створенні нового розділу.\n\n<kbd>new</kbd> розділ відзначається лише при вказанні тексту <var>text</var>.",
+       "apihelp-parse-param-sectiontitle": "Заголовок нового розділу, коли <var>section</var> має значення <kbd>new</kbd>.\n\nНа відміну від редагування сторінки, це не повертається до <var>summary</var>, якщо пропустити чи лишити порожнім.",
+       "apihelp-parse-param-disablepp": "Пропустити звіт препроцесора («NewPP limit report») на виході аналізу.",
+       "apihelp-parse-param-disableeditsection": "Пропустити посилання на редагування розділів на виході аналізу.",
+       "apihelp-parse-param-generatexml": "Генерувати синтаксичне дерево XML (передбачає модель вмісту <code>$1</code>; замінено на <kbd>$2prop=parsetree</kbd>).",
+       "apihelp-parse-param-preview": "Аналізувати у режимі попереднього перегляду.",
+       "apihelp-parse-param-sectionpreview": "Аналізувати у режимі попереднього перегляду розділу (також вмикає попередній перегляд).",
+       "apihelp-parse-param-disabletoc": "Пропустити зміст на виході.",
+       "apihelp-parse-param-contentformat": "Формат серіалізації вмісту, використаний у вхідному тексті. Дійсний лише при використанні разом з $1text.",
+       "apihelp-parse-param-contentmodel": "Модель вмісту вхідного тексту. Якщо пропущено, має бути вказано $1title, і за замовчуванням буде модель вказаного заголовка. Дійсне лише при використанні з $1text.",
+       "apihelp-parse-example-page": "Аналізувати сторінку.",
+       "apihelp-parse-example-text": "Аналізувати вікітекст.",
+       "apihelp-parse-example-texttitle": "Аналізувати вікітекст, вказуючи назву сторінки.",
+       "apihelp-parse-example-summary": "Аналізувати опис.",
+       "apihelp-patrol-description": "Відпатрулювати сторінку чи версію.",
+       "apihelp-patrol-param-rcid": "ID нещодавніх змін для патрулювання.",
+       "apihelp-patrol-param-revid": "Ідентифікатор версії для патрулювання.",
+       "apihelp-patrol-example-rcid": "Відпатрулювати останню зміну.",
+       "apihelp-patrol-example-revid": "Відпатрулювати версію.",
+       "apihelp-protect-description": "Змінити рівень захисту сторінки.",
+       "apihelp-protect-param-title": "Заголовок сторінки для (зняття) захисту. Не може використовуватися разом із $1pageid.",
+       "apihelp-protect-param-pageid": "ID сторінки для (зняття) захисту. Не може використовуватися разом з $1title.",
+       "apihelp-protect-param-protections": "Список рівнів захисту у форматі <kbd>action=level</kbd> (напр., <kbd>edit=sysop</kbd>).\n\n<strong>Примітка:</strong> Обмеження на дії, яких нема в списку, буде знято.",
+       "apihelp-protect-param-expiry": "Часові мітки закінчення. Якщо встановлена лише одна мітка, її буде використано для усіх захистів. Для безстрокового захисту використовуйте <kbd>infinite</kbd>, <kbd>indefinite</kbd>, <kbd>infinity</kbd> або <kbd>never</kbd>.",
+       "apihelp-protect-param-reason": "Причина для (зняття) захисту.",
+       "apihelp-protect-param-cascade": "Увімкнути каскадний захист (тобто захистити включені шаблоні і зображення, використані на цій сторінці). Ігнорується, якщо жоден з вказаних рівнів захисту не підтримує каскадність.",
+       "apihelp-protect-param-watch": "Якщо вказано, додати сторінку, де додається/знімається захист, до списку спостереження поточного користувача.",
+       "apihelp-protect-param-watchlist": "Беззастережно додати або вилучити сторінку зі списку спостереження поточного користувача, використати налаштування або не змінювати спостереження.",
+       "apihelp-protect-example-protect": "Захистити сторінку.",
+       "apihelp-protect-example-unprotect": "Зняти захист зі сторінки, встановивши обмеження для <kbd>all</kbd>.",
+       "apihelp-protect-example-unprotect2": "Зняти захист з сторінки, встановивши відсутність обмежень.",
+       "apihelp-purge-description": "Очистити кеш для вказаних заголовків.\n\nВимагає запиту POST, якщо користувач не ввійшов у систему.",
+       "apihelp-purge-param-forcelinkupdate": "Оновити таблиці посилань.",
+       "apihelp-purge-param-forcerecursivelinkupdate": "Оновити таблицю посилань, і оновити таблиці посилань для кожної сторінки, що використовує цю сторінку як шаблон.",
+       "apihelp-purge-example-simple": "Очистити кеш <kbd>Main Page</kbd> і сторінки <kbd>API</kbd>.",
+       "apihelp-purge-example-generator": "Очистити кеш перших десяти сторінок у головному просторі назв.",
+       "apihelp-query-description": "Вибірка даних з і про MediaWiki.\n\nУсі зміни даних у першу чергу мають використовувати запит на отримання токена, щоб запобігти зловживанням зі шкідливих сайтів.",
+       "apihelp-query-param-prop": "Властивості, які потрібно отримати для запитуваних сторінок.",
+       "apihelp-query-param-list": "Які списки отримати.",
+       "apihelp-query-param-meta": "Які метадані отримати.",
+       "apihelp-query-param-indexpageids": "Включити додатковий розділ pageids зі списком усіх виданих ідентифікаторів сторінки.",
+       "apihelp-query-param-export": "Експортувати поточні версії усіх заданих або створюваних сторінок.",
+       "apihelp-query-param-exportnowrap": "Видати експорт XML без огортання його в XML-результат (той же формат, що й [[Special:Export]]). Може використовуватися лише з $1export.",
+       "apihelp-query-param-iwurl": "Чи отримувати повний URL, якщо назва є інтервікі-посиланням.",
+       "apihelp-query-param-rawcontinue": "Видати сирі дані <samp>query-continue</samp> для продовження.",
+       "apihelp-query-example-revisions": "Вибірка [[Special:ApiHelp/query+siteinfo|інформації про сайт]] та [[Special:ApiHelp/query+revisions|версій]] <kbd>Main Page</kbd>.",
+       "apihelp-query-example-allpages": "Вибрати версії сторінок, які починаються з <kbd>API/</kbd>.",
+       "apihelp-query+allcategories-description": "Перерахувати всі категорії.",
+       "apihelp-query+allcategories-param-from": "Категорія, з якої почати перелічувати.",
+       "apihelp-query+allcategories-param-to": "Категорія, на якій закінчити перелічувати.",
+       "apihelp-query+allcategories-param-prefix": "Шукати усі назви категорій, які починаються з цього значення.",
+       "apihelp-query+allcategories-param-dir": "Напрямок сортування.",
+       "apihelp-query+allcategories-param-min": "Видати лише категорії, які мають щонайменше стільки елементів.",
+       "apihelp-query+allcategories-param-max": "Видати лише категорії, які мають максимум стільки елементів.",
+       "apihelp-query+allcategories-param-limit": "Скільки категорій видати.",
+       "apihelp-query+allcategories-param-prop": "Які властивості отримати:\n;size:Додає номер сторінок у категорії.\n;hidden:Теґує категорії, приховані з _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+allcategories-example-size": "Перерахувати категорії з інформацією про кількість сторінок у кожній.",
+       "apihelp-query+allcategories-example-generator": "Отримати інформацію про саму сторінку категорії для категорій, що починаються з <kbd>List</kbd>.",
+       "apihelp-query+alldeletedrevisions-description": "Перерахувати усі вилучені версії за користувачем або у просторі назв.",
+       "apihelp-query+alldeletedrevisions-paraminfo-useronly": "Може використовуватися лише з <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-paraminfo-nonuseronly": "Не може використовуватися з <var>$3user</var>.",
+       "apihelp-query+alldeletedrevisions-param-start": "Часова мітка початку переліку.",
+       "apihelp-query+alldeletedrevisions-param-end": "Часова мітка закінчення переліку.",
+       "apihelp-query+alldeletedrevisions-param-from": "Почати перелік з цієї назви.",
+       "apihelp-query+alldeletedrevisions-param-to": "Закінчити перелік цією назвою.",
+       "apihelp-query+alldeletedrevisions-param-prefix": "Шукати усі назви сторінок, які починаються з цього значення.",
+       "apihelp-query+alldeletedrevisions-param-tag": "Перерахувати лише версії, помічені цим теґом.",
+       "apihelp-query+alldeletedrevisions-param-user": "Перерахувати лише версії цього користувача.",
+       "apihelp-query+alldeletedrevisions-param-excludeuser": "Не перераховувати версії цього користувача.",
+       "apihelp-query+alldeletedrevisions-param-namespace": "Перерахувати сторінки лише в цьому просторі назв.",
+       "apihelp-query+alldeletedrevisions-param-miser-user-namespace": "<strong>Примітка:</strong> через [[mw:Manual:$wgMiserMode|«скупий режим»]], використання <var>$1user</var> і <var>$1namespace</var> одночасно можуть вилитися у видачу результатів менше ніж <var>$1limit</var> перед продовженням; в особливих випадках можуть видаватися нульові результати.",
+       "apihelp-query+alldeletedrevisions-param-generatetitles": "Коли використовується як генератор, генерувати заголовки замість ідентифікаторів версій.",
+       "apihelp-query+alldeletedrevisions-example-user": "Перерахувати останні 50 вилучених редагувань користувача <kbd>Example<kbd>.",
+       "apihelp-query+alldeletedrevisions-example-ns-main": "Перерахувати останні 50 вилучених версій у головному просторі назв.",
+       "apihelp-query+allfileusages-description": "Перерахувати усі використання файлів, включно з тими, що не існують.",
+       "apihelp-query+allfileusages-param-from": "Назва файлу, з якої почати перераховувати.",
+       "apihelp-query+allfileusages-param-to": "Назва файлу, якою закінчувати перераховувати.",
+       "apihelp-query+allfileusages-param-prefix": "Шукати усі назви файлів, які починаються з цього значення.",
+       "apihelp-query+allfileusages-param-unique": "Показувати лише окремі назви файлів. Не може використовуватися разом з $1prop=ids.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
+       "apihelp-query+allfileusages-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатори сторінок, що використовують (не можна використати разом з $1unique).\n;title:Додає назву файлу.",
+       "apihelp-query+allfileusages-param-limit": "Скільки всього елементів виводити.",
+       "apihelp-query+allfileusages-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+allfileusages-example-B": "Перерахувати назви файлів, включно з відсутніми, з ідентифікаторами сторінок, на яких вони використані, починаючи з <kbd>B</kbd>.",
+       "apihelp-query+allfileusages-example-unique": "Перерахувати унікальні назви файлів.",
+       "apihelp-query+allfileusages-example-unique-generator": "Отримує всі назви файлів, позначаючи відсутні.",
+       "apihelp-query+allfileusages-example-generator": "Отримує сторінки, на яких є файли.",
+       "apihelp-query+allimages-description": "Перерахувати усі зображення послідовно.",
+       "apihelp-query+allimages-param-sort": "Властивість, за якою сортувати.",
+       "apihelp-query+allimages-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+allimages-param-from": "Назва зображення, з якої почати перерахунок. Можна використати лише з $1sort=name.",
+       "apihelp-query+allimages-param-to": "Назва зображення, якою закінчити перерахунок. Можна використати лише з $1sort=name.",
+       "apihelp-query+allimages-param-start": "Часова мітка, з якої почати перерахунок. Можна використати лише з $1sort=timestamp.",
+       "apihelp-query+allimages-param-end": "Часова мітка, якою закінчити перерахунок. Можна використати лише з $1sort=timestamp.",
+       "apihelp-query+allimages-param-prefix": "Шукати усі назви зображень, що починаються цим значенням. Можна використати лише разом з $1sort=name.",
+       "apihelp-query+allimages-param-minsize": "Обмежити до зображень, які мають щонайменше стільки байтів.",
+       "apihelp-query+allimages-param-maxsize": "Обмежити до зображень, які мають максимум стільки байтів.",
+       "apihelp-query+allimages-param-sha1": "SHA1-хеш зображення. Перевизначає $1sha1base36.",
+       "apihelp-query+allimages-param-sha1base36": "SHA1-хеш зображення у base 36 (використано в MediaWiki).",
+       "apihelp-query+allimages-param-user": "Видати лише файли, завантажені цим користувачем. Можна використати лише з $1sort=timestamp. Не можна використати разом з $1filterbots.",
+       "apihelp-query+allimages-param-filterbots": "Як фільтрувати файли, завантажені ботами. Можна використати лише з $1sort=timestamp. Не можна використати разом з $1user.",
+       "apihelp-query+allimages-param-mime": "Які MIME-типи шукати, напр., <kbd>image/jpeg</kbd>.",
+       "apihelp-query+allimages-param-limit": "Скільки всього зображень видати.",
+       "apihelp-query+allimages-example-B": "Показати список файлів, які починаються на літеру <kbd>B</kbd>.",
+       "apihelp-query+allimages-example-recent": "Показати список нещодавно завантажених файлів, подібно до [[Special:NewFiles]].",
+       "apihelp-query+allimages-example-mimetypes": "Показати список файлів з MIME-типом <kbd>image/png</kbd> або <kbd>image/gif</kbd>",
+       "apihelp-query+allimages-example-generator": "Показати інформацію про 4 файли, що починаються на літеру <kbd>T</kbd>.",
+       "apihelp-query+alllinks-description": "Перераховувати всі посилання, які вказують на заданий простір назв.",
+       "apihelp-query+alllinks-param-from": "Назва посилання, з якої почати перераховувати.",
+       "apihelp-query+alllinks-param-to": "Назва посилання, якою закінчити перераховувати.",
+       "apihelp-query+alllinks-param-prefix": "Шукати усі пов'язані назви, які починаються з цього значення.",
+       "apihelp-query+alllinks-param-unique": "Показувати лише окремі пов'язані назви. Не може використовуватися з <kbd>$1prop=ids</kbd>.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
+       "apihelp-query+alllinks-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатори сторінок, що має посилання (не можна використати разом з <var>$1unique</var>).\n;title:Додає назву посилання.",
+       "apihelp-query+alllinks-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+alllinks-param-limit": "Скільки всього елементів виводити.",
+       "apihelp-query+alllinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+alllinks-example-B": "Перерахувати пов'язані назви, включно з відсутніми, з ідентифікаторами сторінок, на яких вони використані, починаючи з <kbd>B</kbd>.",
+       "apihelp-query+alllinks-example-unique": "Перерахувати унікальні назви з посиланнями.",
+       "apihelp-query+alllinks-example-unique-generator": "Отримує всі назви з посиланнями, позначаючи відсутні.",
+       "apihelp-query+alllinks-example-generator": "Отримує сторінки, на яких є посилання.",
+       "apihelp-query+allmessages-description": "Видати повідомлення від цього сайту.",
+       "apihelp-query+allmessages-param-messages": "Які повідомлення виводити. <kbd>*</kbd> (за замовчуванням) означає усі повідомлення.",
+       "apihelp-query+allmessages-param-prop": "Які властивості отримати.",
+       "apihelp-query+allmessages-param-enableparser": "Встановити увімкнення парсеру, це попередньо обробить вікітекст повідомлення (підставити магічні слова, розкрити шаблони тощо).",
+       "apihelp-query+allmessages-param-nocontent": "Якщо вказано, не включати повідомлення вміст повідомлення у результат.",
+       "apihelp-query+allmessages-param-includelocal": "Також включити локальні повідомлення, тобто повідомлення, що не існують у програмному забезпеченні, але існують як сторінка MediaWiki:.\nЦе видає список усіх сторінок MediaWiki:, так що у ньому будуть сторінки, які насправді не є повідомленнями, як-то [[MediaWiki:Common.js|Common.js]].",
+       "apihelp-query+allmessages-param-args": "Аргументи будуть підставлятися в повідомлення.",
+       "apihelp-query+allmessages-param-filter": "Видати лише повідомлення з назвами, що місять цей рядок.",
+       "apihelp-query+allmessages-param-customised": "Видати лише повідомлення у цьому стані налаштувань.",
+       "apihelp-query+allmessages-param-lang": "Видає повідомлення цією мовою.",
+       "apihelp-query+allmessages-param-from": "Видає повідомлення, починаючи з цього повідомлення.",
+       "apihelp-query+allmessages-param-to": "Видає повідомлення, закінчуючи цим повідомленням.",
+       "apihelp-query+allmessages-param-title": "Назва сторінки для використання як контекст при аналізі повідомлення (для опції $1enableparser).",
+       "apihelp-query+allmessages-param-prefix": "Видати повідомлення з цим префіксом.",
+       "apihelp-query+allmessages-example-ipb": "Показати повідомлення, які починаються на <kbd>ipb-</kbd>.",
+       "apihelp-query+allmessages-example-de": "Показати повідомлення <kbd>august</kbd> і <kbd>mainpage</kbd> німецькою.",
+       "apihelp-query+allpages-description": "Перераховувати всі сторінки послідовно в заданому просторі назв.",
+       "apihelp-query+allpages-param-from": "Заголовок сторінки, з якого почати перелічувати.",
+       "apihelp-query+allpages-param-to": "Заголовок сторінки, яким закінчувати перелічувати.",
+       "apihelp-query+allpages-param-prefix": "Шукати усі назви сторінок, які починаються з цього значення.",
+       "apihelp-query+allpages-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+allpages-param-filterredir": "Які сторінки перерахувати.",
+       "apihelp-query+allpages-param-minsize": "Обмежити до сторінок, які мають щонайменше стільки байтів.",
+       "apihelp-query+allpages-param-maxsize": "Обмежити до сторінок, які мають максимум стільки байтів.",
+       "apihelp-query+allpages-param-prtype": "Обмежити до захищених сторінок.",
+       "apihelp-query+allpages-param-prlevel": "Фільтрувати захисти залежно від рівня (мусить використовуватися з $1prtype= parameter).",
+       "apihelp-query+allpages-param-prfiltercascade": "Фільтрувати захисти залежно від каскадності (ігнорується, коли $1prtype не вказано).",
+       "apihelp-query+allpages-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+allpages-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+allpages-param-filterlanglinks": "Фільтрувати залежно від наявності у сторінки мовних посилань. Зауважте, що це може не врахувати мовні посилання, додані розширеннями.",
+       "apihelp-query+allpages-param-prexpiry": "За якою тривалістю захисту фільтрувати сторінку:\n;indefinite:Отримати лише сторінки з нескінченним захистом.\n;definite:Отримати лише сторінки з визначеним терміном захисту.\n;all:Отримати сторінки з будь-яким терміном захисту.",
+       "apihelp-query+allpages-example-B": "Показати список сторінок, які починаються на літеру <kbd>B</kbd>.",
+       "apihelp-query+allpages-example-generator": "Показати інформацію про 4 сторінки, що починаються на літеру <kbd>T</kbd>.",
+       "apihelp-query+allpages-example-generator-revisions": "Показати вміст перших двох сторінок, що не є перенаправленнями і починаються на <kbd>Re</kbd>.",
+       "apihelp-query+allredirects-description": "Перерахувати усі перенаправлення на простір назв.",
+       "apihelp-query+allredirects-param-from": "Назва перенаправлення, з якої почати перераховувати.",
+       "apihelp-query+allredirects-param-to": "Назва перенаправлення, якою закінчувати перераховувати.",
+       "apihelp-query+allredirects-param-prefix": "Шукати усі цільові сторінки, які починаються з цього значення.",
+       "apihelp-query+allredirects-param-unique": "Показувати лише окремі цільові сторінки. Не може використовуватися разом з $1prop=ids|fragment|interwiki.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
+       "apihelp-query+allredirects-param-prop": "Які відомості включити:\n;ids:Додає ID сторінки-перенаправлення (не можна використати разом з <var>$1unique</var>).\n;title:Додає заголовок перенаправлення.\n;fragment:Додає фрагмент з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).\n;interwiki:Додає інтервікі-префікс з перенаправлення, якщо він є (не можна використати разом з <var>$1unique</var>).",
+       "apihelp-query+allredirects-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+allredirects-param-limit": "Скільки всього елементів виводити.",
+       "apihelp-query+allredirects-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+allredirects-example-B": "Перерахувати цільові сторінки, включно з відсутніми, з ідентифікаторами сторінок, на яких вони використані, починаючи з <kbd>B</kbd>.",
+       "apihelp-query+allredirects-example-unique": "Перерахувати унікальні цільові сторінки.",
+       "apihelp-query+allredirects-example-unique-generator": "Отримує всі цільові сторінки, позначаючи відсутні.",
+       "apihelp-query+allredirects-example-generator": "Отримує сторінки, які містять перенаправлення.",
+       "apihelp-query+alltransclusions-description": "Список усіх включень (сторінки, вставлені з використанням &#123;&#123;x&#125;&#125;), включно з неіснуючими.",
+       "apihelp-query+alltransclusions-param-from": "Назва включення, з якої почати перераховувати.",
+       "apihelp-query+alltransclusions-param-to": "Назва включення, якою закінчити перераховувати.",
+       "apihelp-query+alltransclusions-param-prefix": "Шукати усі включені назви, які починаються з цього значення.",
+       "apihelp-query+alltransclusions-param-unique": "Показувати лише окремі включені назви. Не може використовуватися разом з $1prop=ids.\nКоли використовується як генератор, видає цільові сторінки замість вихідних сторінок.",
+       "apihelp-query+alltransclusions-param-prop": "Які відомості включати:\n;ids:Додає ідентифікатор сторінки включення (не можна використати разом з $1unique).\n;title:Додає назву включення.",
+       "apihelp-query+alltransclusions-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+alltransclusions-param-limit": "Скільки всього елементів виводити.",
+       "apihelp-query+alltransclusions-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+alltransclusions-example-B": "Перерахувати включені назви, включно з відсутніми, з ідентифікаторами сторінок, на яких вони використані, починаючи з <kbd>B</kbd>.",
+       "apihelp-query+alltransclusions-example-unique": "Перерахувати унікальні включені назв.",
+       "apihelp-query+alltransclusions-example-unique-generator": "Отримує всі включені назви, позначаючи відсутні.",
+       "apihelp-query+alltransclusions-example-generator": "Отримує сторінки, на яких є включення.",
+       "apihelp-query+allusers-description": "Перерахувати усіх зареєстрованих користувачів.",
+       "apihelp-query+allusers-param-from": "Ім'я користувача, з якого почати перелічувати.",
+       "apihelp-query+allusers-param-to": "Ім'я користувача, на якому закінчити перелічувати.",
+       "apihelp-query+allusers-param-prefix": "Шукати усіх користувачів, які починаються з цього значення.",
+       "apihelp-query+allusers-param-dir": "Напрямок сортування.",
+       "apihelp-query+allusers-param-group": "Включати лише користувачів з даних груп.",
+       "apihelp-query+allusers-param-excludegroup": "Виключити користувачів у даних групах.",
+       "apihelp-query+allusers-param-rights": "Включати лише користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
+       "apihelp-query+allusers-param-prop": "Які саме відомості включати:\n;blockinfo:Додає інформацію про поточне блокування користувача.\n;groups:Перераховує групи, до яких користувач належить. Це використовує більше ресурсів сервера і може видати менше результатів, ніж ліміт.\n;implicitgroups:Перераховує усіх групи, до яких користувач належить автоматично.\n;rights:Перераховує права, які користувач має.\n;editcount:Додає кількість редагувань користувача.\n;registration:Додає часову мітку, коли користувач зареєструвався, якщо доступно (може бути пустою).",
+       "apihelp-query+allusers-param-limit": "Скільки всього виводити імен користувачів.",
+       "apihelp-query+allusers-param-witheditsonly": "Перерахувати лише користувачів, що зробили редагування.",
+       "apihelp-query+allusers-param-activeusers": "Перерахувати лише користувачів, що були активні $1 {{PLURAL:$1|останній день|останні дні|останніх днів}}.",
+       "apihelp-query+allusers-example-Y": "Перерахувати користувачів, починаючи з <kbd>Y</kbd>.",
+       "apihelp-query+backlinks-description": "Знайти усі сторінки, що посилаються на подану сторінку.",
+       "apihelp-query+backlinks-param-title": "Назва для пошуку. Не можна використати разом з <var>$1pageid</var>.",
+       "apihelp-query+backlinks-param-pageid": "ID сторінки для пошуку. Не можна використати разом з <var>$1title</var>.",
+       "apihelp-query+backlinks-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+backlinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+backlinks-param-filterredir": "Як відфільтрувати перенаправлення. Якщо встановлено <kbd>nonredirects</kbd> при увімкненому <var>$1redirect</var>, це застосовується лише до другого рівня.",
+       "apihelp-query+backlinks-param-limit": "Скільки всього виводити сторінок. Якщо увімкнено <var>$1redirect</var>, ліміт застосовується до кожного рівня окремо (це означає, що може бути видано до 2 * <var>$1limit</var> результатів).",
+       "apihelp-query+backlinks-param-redirect": "Якщо сторінка, яка посилається, є перенаправленням, знайти всі сторінки, які посилаються на це перенаправлення, теж. Максимальний ліміт зменшується наполовину.",
+       "apihelp-query+backlinks-example-simple": "Показати посилання на <kbd>Main page<kbd>.",
+       "apihelp-query+backlinks-example-generator": "Отримати інформацію про сторінки, що посилаються на <kbd>Main page<kbd>.",
+       "apihelp-query+blocks-description": "Перерахувати усіх заблокованих користувачів і IP-адреси.",
+       "apihelp-query+blocks-param-start": "Часова мітка, з якої почати перелік.",
+       "apihelp-query+blocks-param-end": "Часова мітка закінчення переліку.",
+       "apihelp-query+blocks-param-ids": "Вивести список заблокованих ID (необов'язково).",
+       "apihelp-query+blocks-param-users": "Список користувачів для пошуку (необов'язково).",
+       "apihelp-query+blocks-param-ip": "Отримати всі блокування, що стосуються цієї IP-адреси або CIDR-діапазону, включно з блокуваннями діапазонів. Не може бути використано разом з <var>$3users</var>. CIDR-діапазони, ширші, ніж IPv4/$1 чи IPv6/$2, не приймаються.",
+       "apihelp-query+blocks-param-limit": "Максимальна кількість блокувань у списку.",
+       "apihelp-query+blocks-param-prop": "Які властивості отримати:\n;id:Додає ID блокування.\n;user:Додає ім'я заблокованого користувача.\n;userid:Додає ID заблокованого користувача.\n;by:Додає ім'я користувача, який заблокував.\n;byid:Додає ID користувача, який заблокував.\n;timestamp:Додає часову мітку здійснення блокування.\n;expiry:Додає часову мітку закінчення терміну блокування.\n;reason:Додає причину, вказану при блокуванні.\n;range:Додає діапазон IP-адрес, на які поширюється блокування.\n;flags:Мітки бану (автоблокування, лише анонім тощо).",
+       "apihelp-query+blocks-param-show": "Показувати лише елементи, які відповідають цим критеріям.\nНаприклад, щоб побачити лише незалежні блокування IP-адрес, встановіть <kbd>$1show=ip|!temp</kbd>.",
+       "apihelp-query+blocks-example-simple": "Вивести список блокувань.",
+       "apihelp-query+blocks-example-users": "Вивести список блокувань користувачів <kbd>Alice</kbd> та <kbd>Bob</kbd>.",
+       "apihelp-query+categories-description": "Перерахувати категорії, до яких сторінки належать.",
+       "apihelp-query+categories-param-prop": "Які додаткові властивості отримати для кожної категорії:\n;sortkey:Додає ключ сортування (шістнадцятковий рядок) і префікс ключа сортування (людиночитна частина) для категорії.\n;timestamp:Додає мітку часу, коли категорію було додано.\n;hidden:Тегує приховані категорії з допомогою _&#95;HIDDENCAT_&#95;.",
+       "apihelp-query+categories-param-show": "Який тип категорій показувати.",
+       "apihelp-query+categories-param-limit": "Скільки категорій видати.",
+       "apihelp-query+categories-param-categories": "Перерахувати лише ці категорії. Корисно для перевірки, чи певна сторінка є в певній категорії.",
+       "apihelp-query+categories-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+categories-example-simple": "Отримати список категорій, до яких належить сторінка <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categories-example-generator": "Отримати інформацію про усі категорії, використані на сторінці <kbd>Albert Einstein</kbd>.",
+       "apihelp-query+categoryinfo-description": "Видає інформацію про подані категорії.",
+       "apihelp-query+categoryinfo-example-simple": "Отримати інформацію про <kbd>Category:Foo</kbd> і <kbd>Category:Bar</kbd>.",
+       "apihelp-query+categorymembers-description": "Перерахувати усі сторінки у поданій категорії.",
+       "apihelp-query+categorymembers-param-title": "Яку категорію вивести (обов'язково). Мусить включати префікс <kbd>{{ns:category}}:</kbd>. Не можна використати разом з <var>$1pageid</var>.",
+       "apihelp-query+categorymembers-param-pageid": "ID сторінки категорії для виведення. Не можна використати разом з <var>$1title</var>.",
+       "apihelp-query+categorymembers-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає назву й ID простору назв сторінки.\n;sortkey:Додає ключ сортування, використаний для сортування у категорії (шістнадцятковий рядок).\n;sortkeyprefix:Додає ключ сортування, використаний для сортування у категорії (людиночитна частина).\n;type:Додає тип, за яким категоризується сторінка (сторінка, підкатегорія або файл).\n;timestamp:Додає мітку часу, коли сторінка була включена.",
+       "apihelp-query+categorymembers-param-namespace": "Включати лише сторінки у цих просторах назв. Зверніть увагу, що <kbd>$1type=subcat</kbd> чи <kbd>$1type=file</kbd> можна використовувати замість <kbd>$1namespace=14</kbd> чи <kbd>6</kbd>.",
+       "apihelp-query+categorymembers-param-type": "Який тип елементів категорії включати. Ігнорується, коли вказано <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-limit": "Максимальна кількість сторінок для виведення.",
+       "apihelp-query+categorymembers-param-sort": "Властивість, за якою сортувати.",
+       "apihelp-query+categorymembers-param-dir": "У якому напрямку сортувати.",
+       "apihelp-query+categorymembers-param-start": "Часова мітка, з якої почати список. Можна використати лише разом з <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-end": "Часова мітка, якою закінчити список. Можна використати лише разом з <kbd>$1sort=timestamp</kbd>.",
+       "apihelp-query+categorymembers-param-starthexsortkey": "Ключ сортування, з якого почати список, як видає <kbd>$1prop=sortkey</kbd>. Можна використати лише разом з <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-endhexsortkey": "Ключ сортування, з якого почати список, як видає <kbd>$1prop=sortkey</kbd>. Можна використати лише разом з <kbd>$1sort=sortkey</kbd>.",
+       "apihelp-query+categorymembers-param-startsortkeyprefix": "Префікс ключа сортування, з якого почати список. Можна використати лише разом з <kbd>$1sort=sortkey</kbd>. Перевизначає <var>$1starthexsortkey</var>.",
+       "apihelp-query+categorymembers-param-endsortkeyprefix": "Префікс ключа сортування, <strong>перед</strong> яким закінчити список (не <strong>на</strong>; якщо це значення зустрінеться, його не буде включено!). Можна використати лише разом з $1sort=sortkey. Перевизначає $1endhexsortkey.",
+       "apihelp-query+categorymembers-param-startsortkey": "Використати натомість $1starthexsortkey.",
+       "apihelp-query+categorymembers-param-endsortkey": "Використати натомість $1endhexsortkey.",
+       "apihelp-query+categorymembers-example-simple": "Отримати перші 10 сторінок у <kbd>Category:Physics</kbd>.",
+       "apihelp-query+categorymembers-example-generator": "Отримати інформацію про перші 10 сторінок у <kbd>Category:Physics</kbd>.",
+       "apihelp-query+contributors-description": "Отримати список залогінених дописувачів і кількість анонімних дописувачів до сторінки.",
+       "apihelp-query+contributors-param-group": "Включати лише користувачів з даних груп. Не включає безумовні або автоматичні групи на зразок *, користувач або автопідтверджені.",
+       "apihelp-query+contributors-param-excludegroup": "Виключати користувачів з даних груп. Не включає безумовні або автоматичні групи на зразок *, користувач або автопідтверджені.",
+       "apihelp-query+contributors-param-rights": "Включати лише користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
+       "apihelp-query+contributors-param-excluderights": "Виключати користувачів з даними правами. Не включає права, надані безумовними або автоматичними групами на зразок *, користувач або автопідтверджені.",
+       "apihelp-query+contributors-param-limit": "Скільки дописувачів виводити.",
+       "apihelp-query+contributors-example-simple": "Показати дописувачів до сторінки <kbd>Main Page</kbd>.",
+       "apihelp-query+deletedrevisions-description": "Отримати інформацію про вилучену версію.\n\nМожна використати кількома способами:\n# Отримати вилучені версії набору сторінок, вказавши заголовки або ідентифікатори сторінок. Сортується за назвою і часовою міткою.\n# Отримати дані про набір вилучених версій, вказавши їх ID з ідентифікаторами версій. Сортується за ID версії.",
+       "apihelp-query+deletedrevisions-param-start": "Мітка часу, з якої почати перелік. Ігнорується, якщо обробляється список ідентифікаторів версій.",
+       "apihelp-query+deletedrevisions-param-end": "Мітка часу, якою закінчити перелік. Ігнорується, якщо обробляється список ідентифікаторів версій.",
+       "apihelp-query+deletedrevisions-param-tag": "Перерахувати лише версії, помічені цим теґом.",
+       "apihelp-query+deletedrevisions-param-user": "Перерахувати лише версії цього користувача.",
+       "apihelp-query+deletedrevisions-param-excludeuser": "Не перераховувати версії цього користувача.",
+       "apihelp-query+deletedrevisions-example-titles": "Перерахувати вилучені версії сторінок <kbd>Main Page</kbd> і <kbd>Talk:Main Page</kbd>, з вмістом.",
+       "apihelp-query+deletedrevisions-example-revids": "Вивести інформацію вилученої версії <kbd>123456</kbd>.",
+       "apihelp-query+deletedrevs-description": "Перелічити вилучені версії.\n\nПрацює у трьох режимах:\n# Перелічити вилучені версії поданих назв, відсортованих за часовою міткою.\n# Перелічити вилучений внесок поданого користувача, відсортований за часовою міткою (без вказання заголовків).\n# Перелічити усі вилучені версії у поданому просторі назв, відсортовані за назвою та часовою міткою (без вказання заголовків, $1user не вказаний).\n\nОкремі параметри можуть застосовуватися в одному режимі й ігноруватися в іншому.",
+       "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Режим|Режими}}: $2",
+       "apihelp-query+deletedrevs-param-start": "Часова мітка початку переліку.",
+       "apihelp-query+deletedrevs-param-end": "Часова мітка закінчення переліку.",
+       "apihelp-query+deletedrevs-param-from": "Почати перелік з цієї назви.",
+       "apihelp-query+deletedrevs-param-to": "Закінчити перелік цією назвою.",
+       "apihelp-query+deletedrevs-param-prefix": "Шукати усі назви сторінок, які починаються з цього значення.",
+       "apihelp-query+deletedrevs-param-unique": "Вивести лише одну версію кожної сторінки.",
+       "apihelp-query+deletedrevs-param-tag": "Перерахувати лише версії, помічені цим теґом.",
+       "apihelp-query+deletedrevs-param-user": "Перерахувати лише версії цього користувача.",
+       "apihelp-query+deletedrevs-param-excludeuser": "Не перераховувати версії цього користувача.",
+       "apihelp-query+deletedrevs-param-namespace": "Перерахувати сторінки лише в цьому просторі назв.",
+       "apihelp-query+deletedrevs-param-limit": "Максимальна кількість версій для переліку.",
+       "apihelp-query+deletedrevs-param-prop": "Які властивості отримати:\n;revid:Додає ID вилученої версії.\n;parentid:Додає ID попередньої версії сторінки.\n;user:Додає користувача, який створив версію.\n;userid:Додає ID користувача, який створив версію.\n;comment:Додає коментар до версії.\n;parsedcomment:Додає проаналізований коментар до версії.\n;minor:Позначає, якщо версія створена незначним редагуванням.\n;len:Додає довжину (байти) версії.\n;sha1:Додає SHA-1 (base 16) версії.\n;content:Додає вміст версії.\n;token:<span class=\"apihelp-deprecated\">Застаріло.</span> Дає токен редагування.\n;tags:Теґи версії.",
+       "apihelp-query+deletedrevs-example-mode1": "Перерахувати останні вилучені версії сторінок <kbd>Main Page</kbd> і <kbd>Talk:Main Page</kbd>, з вмістом (режим 1).",
+       "apihelp-query+deletedrevs-example-mode2": "Перерахувати останні 50 вилучених редагувань <kbd>Bob</kbd> (режим 2).",
+       "apihelp-query+deletedrevs-example-mode3-main": "Перерахувати перші 50 вилучених версій у головному просторі назв (режим 3).",
+       "apihelp-query+deletedrevs-example-mode3-talk": "Перерахувати перші 50 вилучених сторінок у просторі назв {{ns:talk}} (режим 3).",
+       "apihelp-query+disabled-description": "Цей модуль запитів було вимкнено.",
+       "apihelp-query+duplicatefiles-description": "Перерахувати усі файли, які є дублікатами поданих файлів з огляду на значення хешу.",
+       "apihelp-query+duplicatefiles-param-limit": "Скільки файлів-дублікатів виводити.",
+       "apihelp-query+duplicatefiles-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+duplicatefiles-param-localonly": "Шукати лише файли у локальному репозиторії.",
+       "apihelp-query+duplicatefiles-example-simple": "Шукати дублікати [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+duplicatefiles-example-generated": "Шукати дублікати усіх файлів.",
+       "apihelp-query+embeddedin-description": "Знайти всі сторінки, які вбудовують (включають) подану назву.",
+       "apihelp-query+embeddedin-param-title": "Назва для пошуку. Не можна використати разом з $1pageid.",
+       "apihelp-query+embeddedin-param-pageid": "ID сторінки для пошуку. Не можна використати разом з $1title.",
+       "apihelp-query+embeddedin-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+embeddedin-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+embeddedin-param-filterredir": "Як фільтрувати перенаправлення.",
+       "apihelp-query+embeddedin-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+embeddedin-example-simple": "Показати сторінки, які включають <kbd>Template:Stub</kbd>.",
+       "apihelp-query+embeddedin-example-generator": "Отримати інформацію про сторінки, які включають <kbd>Template:Stub</kbd>.",
+       "apihelp-query+extlinks-description": "Видати усі зовнішні URL (не інтервікі) з поданих сторінок.",
+       "apihelp-query+extlinks-param-limit": "Скільки посилань виводити.",
+       "apihelp-query+extlinks-param-protocol": "Протокол URL. Якщо пусто і вказано <var>$1query</var>, протокол <kbd>http</kbd>. Залиште пустими і це, і <var>$1query</var>, щоб перелічити усі зовнішні посилання.",
+       "apihelp-query+extlinks-param-query": "Шукати рядок без протоколу. Корисно для перевірки, чи містить певна сторінка певне зовнішнє посилання.",
+       "apihelp-query+extlinks-param-expandurl": "Розгорнути протокол-залежні URL за канонічним протоколом.",
+       "apihelp-query+extlinks-example-simple": "Отримати список зовнішніх посилань на <kbd>Main Page<kbd>.",
+       "apihelp-query+exturlusage-description": "Перерахувати сторінки, які містять поданий URL.",
+       "apihelp-query+exturlusage-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає заголовок і ID простору назв сторінки.\n;url:Додає URL, використаний на сторінці.",
+       "apihelp-query+exturlusage-param-protocol": "Протокол URL. Якщо пусто і вказано <var>$1query</var>, протокол <kbd>http</kbd>. Залиште пустими і це, і <var>$1query</var>, щоб перелічити усі зовнішні посилання.",
+       "apihelp-query+exturlusage-param-query": "Шукати рядок без протоколу. Див. [[Special:LinkSearch]]. Залиште пустим, щоб вивести усі зовнішні посилання.",
+       "apihelp-query+exturlusage-param-namespace": "Простори назв для переліку.",
+       "apihelp-query+exturlusage-param-limit": "Скільки сторінок виводити.",
+       "apihelp-query+exturlusage-param-expandurl": "Розгорнути протокол-залежні URL за канонічним протоколом.",
+       "apihelp-query+exturlusage-example-simple": "Показати сторінки, які посилаються на <kbd>http://www.mediawiki.org</kbd>.",
+       "apihelp-query+filearchive-description": "Перерахувати всі вилучені файли послідовно.",
+       "apihelp-query+filearchive-param-from": "Назва зображення, з якої почати перелічувати.",
+       "apihelp-query+filearchive-param-to": "Назва зображення, якою закінчити перелічувати.",
+       "apihelp-query+filearchive-param-prefix": "Шукати усі назви зображень, які починаються з цього значення.",
+       "apihelp-query+filearchive-param-limit": "Скільки всього зображень виводити.",
+       "apihelp-query+filearchive-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+filearchive-param-sha1": "SHA1-хеш зображення. Перевизначає $1sha1base36.",
+       "apihelp-query+filearchive-param-sha1base36": "SHA1-хеш зображення у base 36 (використано в MediaWiki).",
+       "apihelp-query+filearchive-param-prop": "Which image information to get:\n;sha1:Додає хеш SHA-1 до зображення.\n;timestamp:Додає часову мітку завантаженої версії.\n;user:Додає користувача, який завантажив версію зображення.\n;size:Додає розмір зображення у байтах, а також висоту, ширину і кількість сторінок (якщо є).\n;dimensions:Аліас розміру.\n;description:Додає опис версії зображення.\n;parseddescription:Аналіз опису зображення.\n;mime:Додає MIME-тип зображення.\n;mediatype:Додає медіатип зображення.\n;metadata:Вилає Exif-метадані версії зображення.\n;bitdepth:Додає бітну глибину версії.\n;archivename:Додає назву файлу архівної версії для неостанніх версій.",
+       "apihelp-query+filearchive-example-simple": "Показати список усіх вилучених файлів.",
+       "apihelp-query+filerepoinfo-description": "Видати мета-інформацію про репозиторії зображень, налаштовані на вікі.",
+       "apihelp-query+filerepoinfo-param-prop": "Які властивості репозиторію отримати (на деяких вікі може бути більше):\n;apiurl:URL до репозиторію API — корисне для отримання інформації про зображення з хосту.\n;name:Ключ репозиторію — використано в e.g. <var>[[mw:Manual:$wgForeignFileRepos|$wgForeignFileRepos]]</var> і значення [[Special:ApiHelp/query+imageinfo|imageinfo]].\n;displayname:Людиночита назва репозиторію вікі.\n;rooturl:Корінний URL для шляху зображення.\n;local:Чи репозиторій локальний, чи ні.",
+       "apihelp-query+filerepoinfo-example-simple": "Отримати інформацію про репозиторії файлів.",
+       "apihelp-query+fileusage-description": "Знайти всі сторінки, що використовують дані файли.",
+       "apihelp-query+fileusage-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+fileusage-param-namespace": "Включати сторінки лише в цих просторах назв.",
+       "apihelp-query+fileusage-param-limit": "Скільки результатів виводити.",
+       "apihelp-query+fileusage-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
+       "apihelp-query+fileusage-example-simple": "Отримати список сторінок, які використовують [[:File:Example.jpg]].",
+       "apihelp-query+fileusage-example-generator": "Отримати інформацію про сторінки, які використовують [[:File:Example.jpg]].",
+       "apihelp-query+imageinfo-description": "Видає інформацію про файл й історію завантаження.",
+       "apihelp-query+imageinfo-param-prop": "Яку інформацію отримати:",
+       "apihelp-query+imageinfo-paramvalue-prop-timestamp": "Додає мітку часу для завантаженої версії.",
+       "apihelp-query+imageinfo-paramvalue-prop-user": "Додає користувача, який завантажив кожну версію файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-userid": "Додати ідентифікатор користувача, який завантажив кожну версію файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-comment": "Коментар до версії.",
+       "apihelp-query+imageinfo-paramvalue-prop-parsedcomment": "Аналізований коментар версії.",
+       "apihelp-query+imageinfo-paramvalue-prop-canonicaltitle": "Додає канонічну назву файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-url": "Дає посилання на файл і сторінку опису.",
+       "apihelp-query+imageinfo-paramvalue-prop-size": "Додає розмір файлу в байтах, а також висоту, ширину і кількість сторінок (якщо це можливо).",
+       "apihelp-query+imageinfo-paramvalue-prop-dimensions": "Псевдонім для розміру.",
+       "apihelp-query+imageinfo-paramvalue-prop-sha1": "Додає SHA-1 хеш файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-mime": "Додає MIME-тип файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-thumbmime": "Додає MIME-мініатюри зображення (передбачає url і параметр $1urlwidth).",
+       "apihelp-query+imageinfo-paramvalue-prop-mediatype": "Додає медіатип файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-metadata": "Перелічує Exif-метадані версії файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-commonmetadata": "Перелічує метадані формату версії файлу.",
+       "apihelp-query+imageinfo-paramvalue-prop-extmetadata": "Перелічує форматовані метадані, поєднані з кількох джерел. Результати у форматі HTML.",
+       "apihelp-query+imageinfo-paramvalue-prop-archivename": "Додає назву файлу архівної версії для неостанніх версій.",
+       "apihelp-query+imageinfo-paramvalue-prop-bitdepth": "Додає бітну глибину версії.",
+       "apihelp-query+imageinfo-paramvalue-prop-uploadwarning": "Використовується на Special:Upload page для отримання інформації про наявний файл. Не призначено для використання поза ядром MediaWiki.",
+       "apihelp-query+imageinfo-param-limit": "Скільки виводити версій кожного файлу.",
+       "apihelp-query+imageinfo-param-start": "Часова мітка, з якої почати список.",
+       "apihelp-query+imageinfo-param-end": "Часова мітка, на якій закінчити список.",
+       "apihelp-query+imageinfo-param-urlwidth": "Якщо вказано $2prop=url, буде видано URL на масштабоване до цього розміру зображення.\nДля підвищення продуктивності, якщо використовується ця опція, не буде видано більше, ніж $1 {{PLURAL:$1|масштабоване зображення|масштабовані зображення|масштабованих зображень}}.",
+       "apihelp-query+imageinfo-param-urlheight": "Аналогічно до $1urlwidth.",
+       "apihelp-query+imageinfo-param-metadataversion": "Версія метаданих, яку використати. Якщо вказано <kbd>latest</kbd>, використати останню версію. За замовчуванням — <kbd>1</kbd> для зворотної сумісності.",
+       "apihelp-query+imageinfo-param-extmetadatalanguage": "Якою мовою вибирати метадані. Це стосується і того, який переклад вибирати, якщо є різні, і як форматувати різні числа та значення.",
+       "apihelp-query+imageinfo-param-extmetadatamultilang": "Якщо переклади властивості extmetadata доступні, вибрати їх усі.",
+       "apihelp-query+imageinfo-param-extmetadatafilter": "Якщо вказано і не порожньо, буде видано лише ці ключі для $1prop=extmetadata.",
+       "apihelp-query+imageinfo-param-urlparam": "Рядок окремого параметра. Наприклад, PDF-ки можуть використовувати <kbd>page15-100px</kbd>. <var>$1urlwidth</var> повинно використовуватись і бути сумісним з <var>$1urlparam</var>.",
+       "apihelp-query+imageinfo-param-localonly": "Шукати лише файли у локальному репозиторії.",
+       "apihelp-query+imageinfo-example-simple": "Вибрати інформацію про поточну версію [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageinfo-example-dated": "Вибрати інформацію про версії [[:File:Test.jpg]] від 2008 і раніше.",
+       "apihelp-query+images-description": "Видає усі файли, які містяться на вказаних сторінках.",
+       "apihelp-query+images-param-limit": "Скільки файлів виводити.",
+       "apihelp-query+images-param-images": "Перерахувати лише ці файли. Корисно для перевірки, чи певна сторінка має певний файл.",
+       "apihelp-query+images-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+images-example-simple": "Отримати список файлів, використаних на [[Main Page]].",
+       "apihelp-query+images-example-generator": "Отримати інформацію про всі файли, використані на [[Main Page]].",
+       "apihelp-query+imageusage-description": "Знайти всі сторінки, що використовують дану назву зображення.",
+       "apihelp-query+imageusage-param-title": "Назва для пошуку. Не можна використати разом з $1pageid.",
+       "apihelp-query+imageusage-param-pageid": "ID сторінки для пошуку. Не можна використати разом з $1title.",
+       "apihelp-query+imageusage-param-namespace": "Простір назв для переліку.",
+       "apihelp-query+imageusage-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+imageusage-param-filterredir": "Як відфільтрувати перенаправлення. Якщо встановлено для неперенаправлень при увімкненому $1redirect, це застосовується лише до другого рівня.",
+       "apihelp-query+imageusage-param-limit": "Скільки всього виводити сторінок. Якщо увімкнено <var>$1redirect</var>, ліміт застосовується до кожного рівня окремо (це означає, що може бути видано до 2 * <var>$1limit</var> результатів).",
+       "apihelp-query+imageusage-param-redirect": "Якщо сторінка, яка посилається, є перенаправленням, знайти всі сторінки, які посилаються на це перенаправлення, теж. Максимальний ліміт зменшується наполовину.",
+       "apihelp-query+imageusage-example-simple": "Показати сторінки, які використовують [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+imageusage-example-generator": "Отримати інформацію про сторінки, які використовують [[:File:Albert Einstein Head.jpg]].",
+       "apihelp-query+info-description": "Отримати основні відомості про сторінку.",
+       "apihelp-query+info-param-prop": "Які додаткові властивості отримати:",
+       "apihelp-query+info-paramvalue-prop-protection": "Вивести рівень захисту кожної сторінки.",
+       "apihelp-query+info-paramvalue-prop-talkid": "Ідентифікатор сторінки обговорення для кожної сторінки, що не є обговоренням.",
+       "apihelp-query+info-paramvalue-prop-watched": "Вивести статус спостереженості кожної сторінки.",
+       "apihelp-query+info-paramvalue-prop-watchers": "Кількість спостерігачів, якщо це дозволено.",
+       "apihelp-query+info-paramvalue-prop-notificationtimestamp": "Часова мітка сповіщення списку спостереження кожної сторінки.",
+       "apihelp-query+info-paramvalue-prop-subjectid": "Ідентифікатор батьківської сторінки для кожної сторінки обговорення.",
+       "apihelp-query+info-paramvalue-prop-url": "Дає повний URL, URL редагування та канонічний URL для кожної сторінки.",
+       "apihelp-query+info-paramvalue-prop-readable": "Чи користувач може редагувати цю сторінку.",
+       "apihelp-query+info-paramvalue-prop-preload": "Дає текст, виданий EditFormPreloadText.",
+       "apihelp-query+info-paramvalue-prop-displaytitle": "Дає спосіб, у який відображається назва сторінки.",
+       "apihelp-query+info-param-testactions": "Перевірити, чи поточний користувач може виконувати певні дії на сторінці.",
+       "apihelp-query+info-param-token": "Використати натомість [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-query+info-example-simple": "Отримати інформацію про сторінку <kbd>Main Page</kbd>.",
+       "apihelp-query+info-example-protection": "Отримати загальну інформацію і дані про захист сторінки <kbd>Main Page</kbd>.",
+       "apihelp-query+iwbacklinks-description": "Знайти всі сторінки, які посилаються на дане інтервікі-посилання.\n\nМоже використовуватися, щоб знайти всі посилання з префіксом або всі посилання на назву (з даним префіксом). Без використання жодного параметра це, по суті, «всі інтервікі-посилання».",
+       "apihelp-query+iwbacklinks-param-prefix": "Префікс для інтервікі.",
+       "apihelp-query+iwbacklinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1blprefix</var>.",
+       "apihelp-query+iwbacklinks-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+iwbacklinks-param-prop": "Які властивості отримати:\n;iwprefix:Додає префікс інтервікі.\n;iwtitle:Додає назву інтервікі.",
+       "apihelp-query+iwbacklinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+iwbacklinks-example-simple": "Отримати сторінки, що посилаються на [[wikibooks:Test]].",
+       "apihelp-query+iwbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[wikibooks:Test]].",
+       "apihelp-query+iwlinks-description": "Видає усі інтервікі-посилання із вказаних сторінок.",
+       "apihelp-query+iwlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з $1prop).",
+       "apihelp-query+iwlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:\n;url:Додає повну URL-адресу.",
+       "apihelp-query+iwlinks-param-limit": "Скільки інтервікі-посилання виводити.",
+       "apihelp-query+iwlinks-param-prefix": "Видавати інтервікі-посилання лише з цим префіксом.",
+       "apihelp-query+iwlinks-param-title": "Інтервікі-посилання для пошуку. Повинно використовуватися з <var>$1prefix</var>.",
+       "apihelp-query+iwlinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+iwlinks-example-simple": "Отримати інтервікі-посилання зі сторінки <kbd>Main Page</kbd>.",
+       "apihelp-query+langbacklinks-description": "Знайти всі сторінки, які посилаються на дане мовне посилання.\n\nМоже бути використано для пошуку всіх посилань з кодом мови або всіх посилань на назву (з урахуванням мови). \nБез жодного параметра це «усі мовні посилання».\n\nЗверніть увагу, що це може не розглядати мовні посилання, додані розширеннями.",
+       "apihelp-query+langbacklinks-param-lang": "Мова мовного посилання.",
+       "apihelp-query+langbacklinks-param-title": "Мовне посилання для пошуку. Мусить бути використане з $1lang.",
+       "apihelp-query+langbacklinks-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+langbacklinks-param-prop": "Які властивості отримати:\n;lllang:Додає код мови мовного посилання.\n;lltitle:Додає назву мовного посилання.",
+       "apihelp-query+langbacklinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+langbacklinks-example-simple": "Отримати сторінки, що посилаються на [[:fr:Test]].",
+       "apihelp-query+langbacklinks-example-generator": "Отримати інформацію про сторінки, що посилаються на [[:fr:Test]].",
+       "apihelp-query+langlinks-description": "Видає усі міжмовні посилання із вказаних сторінок.",
+       "apihelp-query+langlinks-param-limit": "Скільки мовних посилань виводити.",
+       "apihelp-query+langlinks-param-url": "Чи отримувати повну URL-адресу (не може використовуватися з <var>$1prop</var>).",
+       "apihelp-query+langlinks-param-prop": "Які додаткові властивості отримати для кожного міжмовного посилання:\n;url:Додає повну URL-адресу.\n;langname:Додає локалізовану назву мови (найкращий варіант). Використайте <var>$1inlanguagecode</var> для контролю мови.\n;autonym:Додає самоназву мови.",
+       "apihelp-query+langlinks-param-lang": "Видавати лише мовні посилання з кодом мови.",
+       "apihelp-query+langlinks-param-title": "Посилання для пошуку. Повинно використовуватися з <var>$1lang</var>.",
+       "apihelp-query+langlinks-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+langlinks-param-inlanguagecode": "Код мови для локалізованих назв мов.",
+       "apihelp-query+langlinks-example-simple": "Отримати міжмовні посилання зі сторінки <kbd>Main Page</kbd>.",
+       "apihelp-query+links-description": "Видає усі посилання із вказаних сторінок.",
+       "apihelp-query+links-param-namespace": "Показати посилання лише у цих просторах назв.",
+       "apihelp-query+links-param-limit": "Скільки посилань виводити.",
+       "apihelp-query+links-param-titles": "Перерахувати лише посилання на ці назви. Корисно для перевірки, чи певна сторінка посилається на певну назву.",
+       "apihelp-query+links-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+links-example-simple": "Отримати посилання зі сторінки <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-generator": "Отримати інформацію про сторінки посилань на сторінці <kbd>Main Page</kbd>.",
+       "apihelp-query+links-example-namespaces": "Отримати посилання зі сторінки <kbd>Main Page</kbd> у просторах назв {{ns:user}} і {{ns:template}}.",
+       "apihelp-query+linkshere-description": "Знайти усі сторінки, що посилаються на подані сторінки.",
+       "apihelp-query+linkshere-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+linkshere-param-namespace": "Включати сторінки лише в цих просторах назв.",
+       "apihelp-query+linkshere-param-limit": "Скільки результатів виводити.",
+       "apihelp-query+linkshere-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
+       "apihelp-query+linkshere-example-simple": "Отримати список сторінок, що посилаються на [[Main Page]].",
+       "apihelp-query+linkshere-example-generator": "Отримати інформацію про сторінки, що посилаються на [[Main Page]].",
+       "apihelp-query+logevents-description": "Отримати події з журналів.",
+       "apihelp-query+logevents-param-prop": "Які властивості отримати:\n;ids:Додає ID події в журналі.\n;title:Додає назву сторінки події в журналі.\n;type:Додає тип події в журналі.\n;user:Додає користувача, відповідального за подію в журналі.\n;userid:Додає ID користувача, відповідального за подію в журналі.\n;timestamp:Додає часову мітку події.\n;comment:Додає коментар події.\n;parsedcomment:Додає проаналізований коментар події.\n;details:Виводить додаткові деталі щодо події.\n;tags:Виводить мітки події.",
+       "apihelp-query+logevents-param-type": "Відфільтрувати записи журналу лише цього типу.",
+       "apihelp-query+logevents-param-action": "Відфільтрувати дії журналу до лише цієї дії. Перезаписує <var>$1type</var>. Джокери на зразок <kbd>action/*</kbd> дозволяють вказати будь-який рядок замість астеріска.",
+       "apihelp-query+logevents-param-start": "Часова мітка початку переліку.",
+       "apihelp-query+logevents-param-end": "Часова мітка завершення переліку.",
+       "apihelp-query+logevents-param-user": "Відфільтрувати серед записів зроблені поданим користувачем.",
+       "apihelp-query+logevents-param-title": "Відфільтрувати серед записів пов'язані зі сторінкою.",
+       "apihelp-query+logevents-param-namespace": "Відфільтрувати до записів у поданому просторі назв.",
+       "apihelp-query+logevents-param-prefix": "Відфільтрувати до записів, що починаються з цього префікса.",
+       "apihelp-query+logevents-param-tag": "Перерахувати лише записи подій, помічені цим теґом.",
+       "apihelp-query+logevents-param-limit": "Скільки всього виводити записів подій.",
+       "apihelp-query+logevents-example-simple": "Перелічити останні подій в журналі.",
+       "apihelp-query+pagepropnames-description": "Перелічити усі назви властивостей сторінки, що використовуються у вікі.",
+       "apihelp-query+pagepropnames-param-limit": "Максимальна кількість назв для виведення.",
+       "apihelp-query+pagepropnames-example-simple": "Отримати перші 10 назв властивостей.",
+       "apihelp-query+pageprops-description": "Дає різні властивості, визначені у вмісті сторінки.",
+       "apihelp-query+pageprops-param-prop": "Перерахувати лише ці властивості. Корисно для перевірки, чи певна сторінка використовує певну властивість сторінки.",
+       "apihelp-query+pageprops-example-simple": "Отримати властивості для сторінок <kbd>Main Page</kbd> і <kbd>MediaWiki</kbd>.",
+       "apihelp-query+pageswithprop-description": "Перелічити усі сторінки, що використовують подану властивість сторінки.",
+       "apihelp-query+pageswithprop-param-propname": "Властивість сторі́нки, для якої перелічити сторінки́.",
+       "apihelp-query+pageswithprop-param-prop": "Які відомості включати:\n;ids:Додає ID сторінки.\n;title:Додає заголовок і ID простору назв сторінки.\n;value:Додає значення властивості сторінки.",
+       "apihelp-query+pageswithprop-param-limit": "Максимальна кількість сторінок для виведення.",
+       "apihelp-query+pageswithprop-param-dir": "У якому напрямку сортувати.",
+       "apihelp-query+pageswithprop-example-simple": "Перелічити перші 10, що використовують <code>&#123;&#123;DISPLAYTITLE:&#125;&#125;</code>.",
+       "apihelp-query+pageswithprop-example-generator": "Отримати додаткову інформацію про перші 10 сторінок, що використовують <code>_&#95;NOTOC_&#95;</code>.",
+       "apihelp-query+prefixsearch-description": "Виконати пошук назв сторінок по префіксу.",
+       "apihelp-query+prefixsearch-param-search": "Рядок пошуку.",
+       "apihelp-query+prefixsearch-param-namespace": "Простори назв, у яких шукати.",
+       "apihelp-query+prefixsearch-param-limit": "Максимальна кількість результатів для виведення.",
+       "apihelp-query+prefixsearch-param-offset": "Кількість результатів, які пропустити.",
+       "apihelp-query+prefixsearch-example-simple": "Шукати назви сторінок, які починаються з <kbd>meaning</kbd>.",
+       "apihelp-query+protectedtitles-description": "Вивести список усіх назв, захищених від створення.",
+       "apihelp-query+protectedtitles-param-namespace": "Перерахувати назви лише в цих просторах назв.",
+       "apihelp-query+protectedtitles-param-level": "Перерахувати лише назви з цими рівням захисту.",
+       "apihelp-query+protectedtitles-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+protectedtitles-param-start": "Почати список з цієї часової мітки захисту.",
+       "apihelp-query+protectedtitles-param-end": "Закінчити список цією часовою міткою захисту.",
+       "apihelp-query+protectedtitles-param-prop": "Які властивості отримати:\n;timestamp:Додає часову мітку встановлення захисту.\n;user:Додає користувача, який встановив захист.\n;userid:Додає ID користувача, який встановив захист.\n;comment:Додає коментар захисту.\n;parsedcomment:Додає проаналізований коментар захисту.\n;expiry:Додає часову мітку закінчення захисту.\n;level:Додає рівень захисту.",
+       "apihelp-query+protectedtitles-example-simple": "Вивести список захищених назв.",
+       "apihelp-query+protectedtitles-example-generator": "Знайти посилання на захищені назви в основному просторі назв.",
+       "apihelp-query+querypage-description": "Отримати список, кий дає спеціальна сторінка на базі QueryPage.",
+       "apihelp-query+querypage-param-page": "Назва спеціальної сторінки. Зважте, що чутлива до регістру.",
+       "apihelp-query+querypage-param-limit": "Кількість результатів, які виводити.",
+       "apihelp-query+querypage-example-ancientpages": "Видати результати з [[Special:Ancientpages]].",
+       "apihelp-query+random-description": "Отримати набір випадкових сторінок.\n\nСторінки перелічені у певній послідовності, лише початкова точка рандомна. Це означає, що якщо, наприклад, <samp>Main Page</samp> є першою випадковою сторінкою у списку, <samp>List of fictional monkeys</samp> <em>завжди</em> буде другою, <samp>List of people on stamps of Vanuatu</samp> — третьою, і т. д.\n\nЯкщо кількість сторінок у просторі назв менша, ніж <var>$1limit</var>, буде показано менше сторінок. Та сама сторінка не виводиться двічі.",
+       "apihelp-query+random-param-namespace": "Вивести сторінки лише у цих просторах назв.",
+       "apihelp-query+random-param-limit": "Обмежити кількість випадкових сторінок, які буде видано.",
+       "apihelp-query+random-param-redirect": "Завантажити випадкове перенаправлення замість випадкової сторінки.",
+       "apihelp-query+random-example-simple": "Отримати дві випадкові сторінки з основного простору назв.",
+       "apihelp-query+random-example-generator": "Видати інформацію про дві випадкові сторінки з основного простору назв.",
+       "apihelp-query+recentchanges-description": "Перерахувати нещодавні зміни.",
+       "apihelp-query+recentchanges-param-start": "Часова мітка початку переліку.",
+       "apihelp-query+recentchanges-param-end": "Часова мітка завершення переліку.",
+       "apihelp-query+recentchanges-param-namespace": "Відфільтрувати до змін лише у цих просторах назв.",
+       "apihelp-query+recentchanges-param-user": "Перерахувати лише зміни, зроблені цим користувачем.",
+       "apihelp-query+recentchanges-param-excludeuser": "Не перераховувати зміни, зроблені цим користувачем.",
+       "apihelp-query+recentchanges-param-tag": "Перерахувати лише зміни, помічені цим теґом.",
+       "apihelp-query+recentchanges-param-prop": "Включити додаткові відомості:\n;user:Додає користувача, відповідального за редагування і мітки, якщо він IP.\n;userid:Додає ID користувача, відповідального за редагування.\n;comment:Додає коментар редагування.\n;parsedcomment:Додає проаналізований коментар редагування.\n;flags:Додає прапорці редагування.\n;timestamp:Додає часову мітку редагування.\n;title:Додає назву сторінки, де було редагування.\n;ids:Додає ID сторінки, ID нещодавніх змін, а також ID нової і старої версій.\n;sizes:Додає нову і стару довжину сторінки в байтах.\n;redirect:Помічає редагування, якщо сторінка є перенаправленням.\n;patrolled:Помічає редагування як відпатрульвані чи невідпатрульовані.\n;loginfo:Додає інформацію журналу (ID журналу, тип журналу тощо) до записів журналу.\n;tags:Виводить мітки запису.\n;sha1:Додає контрольну суму вмісту для записів, пов'язаних з версією.",
+       "apihelp-query+recentchanges-param-token": "Використати натомість <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+recentchanges-param-show": "Показати лише елементи, що задовільняють ці критерії. Наприклад, для перегляду лише незначних змін, здійснених користувачами, що увійшли до системи, вкажіть $1show=minor|!anon.",
+       "apihelp-query+recentchanges-param-limit": "Скільки всього змін виводити.",
+       "apihelp-query+recentchanges-param-type": "Які типи змін показувати.",
+       "apihelp-query+recentchanges-param-toponly": "Виводити лише зміни, які є останньою версією.",
+       "apihelp-query+recentchanges-example-simple": "Вивести нещодавні зміни.",
+       "apihelp-query+recentchanges-example-generator": "Отримати інформацію про сторінки з недавніми невідпатрульованими змінами.",
+       "apihelp-query+redirects-description": "Видає усі перенаправлення на дані сторінки.",
+       "apihelp-query+redirects-param-prop": "Які властивості отримати:\n;pageid:Ідентифікатор сторінки кожного перенаправлення.\n;title:Назва кожного перенаправлення.\n;fragment:Фрагмент кожного перенаправлення, якщо є.",
+       "apihelp-query+redirects-param-namespace": "Включати сторінки лише в цих просторах назв.",
+       "apihelp-query+redirects-param-limit": "Скільки перенаправлень виводити.",
+       "apihelp-query+redirects-param-show": "Показати лише елементи, які відповідають цим критеріям:\n;fragment:Показати лише перенаправлення з фрагментом.\n;!fragment:Показати лише перенаправлення без фрагмента.",
+       "apihelp-query+redirects-example-simple": "Отримати список перенаправлень на [[Main Page]].",
+       "apihelp-query+redirects-example-generator": "Отримати інформацію про всі перенаправлення на [[Main Page]].",
+       "apihelp-query+revisions-description": "Отримати інформацію про версію.\n\nМоже бути використано кількома способами:\n# Отримати дані про набір сторінок (останні версії), вказавши назви або ідентифікатори сторінок.\n# Отримати версії для однієї вказаної сторінки, використавши назви або ідентифікатори і початок, кінець чи ліміт.\n# Отримати дані про набір версій, встановивши їх ID й ідентифікатори версій.",
+       "apihelp-query+revisions-paraminfo-singlepageonly": "Може використовуватися тільки з однією сторінкою (режим #2).",
+       "apihelp-query+revisions-param-startid": "З якого ID версії почати перелік.",
+       "apihelp-query+revisions-param-endid": "Зупинити перелік версій на цьому ID версії.",
+       "apihelp-query+revisions-param-start": "З якої часової мітки версії почати перелік.",
+       "apihelp-query+revisions-param-end": "Перелічувати до цієї часової мітки.",
+       "apihelp-query+revisions-param-user": "Включати лише версій, зроблені цим користувачем.",
+       "apihelp-query+revisions-param-excludeuser": "Виключити версії, зроблені цим користувачем.",
+       "apihelp-query+revisions-param-tag": "Перелічити лише версії, позначені цією міткою.",
+       "apihelp-query+revisions-param-token": "Які токени отримати для кожної версії.",
+       "apihelp-query+revisions-example-content": "Отримати дані з вмістом останньої версії для заголовків <kbd>API</kbd> та <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-last5": "Отримати 5 останніх версії <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5": "Отримати 5 перших версій <kbd>Main Page</kbd>.",
+       "apihelp-query+revisions-example-first5-after": "Отримати 5 перших версій <kbd>Main Page</kbd>, зроблених після 2006-05-01.",
+       "apihelp-query+revisions-example-first5-not-localhost": "Отримати 5 перших версій <kbd>Main Page</kbd>, що не були зроблені анонімним користувачем <kbd>127.0.0.1</kbd>.",
+       "apihelp-query+revisions-example-first5-user": "Отримати 5 перших версій <kbd>Main Page</kbd>, що були зроблені користувачем <kbd>MediaWiki default</kbd>.",
+       "apihelp-query+revisions+base-param-prop": "Які властивості отримати для кожної версії:",
+       "apihelp-query+revisions+base-paramvalue-prop-ids": "ID версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-flags": "Позначки версії (незначні).",
+       "apihelp-query+revisions+base-paramvalue-prop-timestamp": "Часова мітка версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-user": "Користувач, який створив версію.",
+       "apihelp-query+revisions+base-paramvalue-prop-userid": "ID користувача, який створив версію.",
+       "apihelp-query+revisions+base-paramvalue-prop-size": "Довжина версії (в байтах).",
+       "apihelp-query+revisions+base-paramvalue-prop-sha1": "SHA-1 (base 16) версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-contentmodel": "ID моделі вмісту версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-comment": "Коментар користувача до версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsedcomment": "Проаналізований коментар користувача до версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-content": "Текст версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-tags": "Мітки версії.",
+       "apihelp-query+revisions+base-paramvalue-prop-parsetree": "Синтаксичне дерево XML вмісту версії (передбачає модель вмісту <code>$1</code>).",
+       "apihelp-query+revisions+base-param-limit": "Обмежити кількість версій, які буде видано.",
+       "apihelp-query+revisions+base-param-expandtemplates": "Розгорнути шаблони у вмісті версії (передбачає $1prop=content).",
+       "apihelp-query+revisions+base-param-generatexml": "Генерувати синтаксичне дерево XML для вмісту версії (передбачає $1prop=content; замінено на <kbd>$1prop=parsetree</kbd>).",
+       "apihelp-query+revisions+base-param-parse": "Аналізувати вміст версії (передбачає $1prop=content). З причин продуктивності, якщо використовується ця опція, $1limit встановлюється як 1.",
+       "apihelp-query+revisions+base-param-section": "Витягнути вміст лише розділу з цим номером.",
+       "apihelp-query+revisions+base-param-diffto": "ID версії, з якою порівняти кожну версію. Використайте <kbd>prev</kbd>, <kbd>next</kbd> і <kbd>cur</kbd> для попередньої, наступної та поточної версій відповідно.",
+       "apihelp-query+revisions+base-param-difftotext": "Текст, з яким порівняти кожну версію. Порівнює лише обмежену кількість версій. Перевизначає <var>$1diffto</var>. Якщо вказано <var>$1section</var>, лише ця версія буде порівняна з цим текстом.",
+       "apihelp-query+revisions+base-param-contentformat": "Формат серіалізації, використаний для <var>$1difftotext</var> й очікуваний для контенту-результату.",
+       "apihelp-query+search-description": "Виконати повнотекстовий пошук.",
+       "apihelp-query+search-param-search": "Шукати назви сторінок або вміст, що співпадає з цим значенням. Ви можете використати рядок пошуку для виклику спеціальних функцій пошуку, залежно від внутрішніх установок пошуку у вікі.",
+       "apihelp-query+search-param-namespace": "Шукати лише в межах цих просторів назв.",
+       "apihelp-query+search-param-what": "Який тип пошуку виконати.",
+       "apihelp-query+search-param-info": "Які метадані отримати.",
+       "apihelp-query+search-param-prop": "Які властивості отримати:\n;size:Додає розмір сторінки в байтах.\n;wordcount:Додає кількість слів на сторінці.\n;timestamp:Додає часову мітку останнього редагування сторінки.\n;snippet:Додає проаналізований уривок сторінки.\n;titlesnippet:Додає проаналізований уривок заголовка сторінки.\n;redirectsnippet:Додає проаналізований уривок перенаправлення.\n;redirecttitle:Додає заголовок відповідного перенаправлення.\n;sectionsnippet:Додає проаналізований уривок заголовка відповідного розділу.\n;sectiontitle:Додає заголовок відповідного розділу.\n;categorysnippet:Додає проаналізований уривок відповідної категорії.\n;isfilematch:Додає перемикач, який показує, є пошук знайшов вміст файлу.\n;score:<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>\n;hasrelated:<span class=\"apihelp-deprecated\">Застаріло й інгорується.</span>",
+       "apihelp-query+search-param-limit": "Скільки всього сторінок виводити.",
+       "apihelp-query+search-param-interwiki": "Включати інтервікі в результатах пошуку, якщо доступно.",
+       "apihelp-query+search-param-backend": "Який бекенд пошуку використовувати, якщо не за замовчуванням.",
+       "apihelp-query+search-example-simple": "Шукати <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-text": "Шукати в текстах <kbd>meaning</kbd>.",
+       "apihelp-query+search-example-generator": "Отримати інформацію про сторінки, на яких знайдено <kbd>meaning</kbd>.",
+       "apihelp-query+siteinfo-description": "Видати загальну інформацію про сайт.",
+       "apihelp-query+siteinfo-param-prop": "Яку інформацію отримати:\n;general:Загальна системна інформація.\n;namespaces:Список зареєстрованих просторів назв та їхні канонічні назви.\n;namespacealiases:Список зареєстрованих синонімів просторів назв.\n;specialpagealiases:Список аліасів спеціальної сторінки.\n;magicwords:Список магічних слів та їх аліасів.\n;statistics:Видає статистику сайту.\n;interwikimap:Видає карту інтервікі (за бажанням, фільтровану, за бажанням локалізовану з використанням <var>$1inlanguagecode</var>).\n;dbrepllag:Видає сервер бази даних з найбільшою затримкою відповіді.\n;usergroups:Видає групи користувачів і пов'язані дозволи.\n;libraries:Видає бібліотеки, встановлені у вікі.\n;extensions:Видає розширення, встановлені у вікі.\n;fileextensions:Видає список розширень файлів, які дозволено завантажувати.\n;rightsinfo:Видає інформацію щодо прав (ліцензії) вікі, якщо наявна.\n;restrictions:Видає інформацію про наявні типи обмежень (захисту).\n;languages:Видає список мов, які підтримує MediaWiki (за бажанням локалізовані через <var>$1inlanguagecode</var>).\n;skins:Видає список усіх доступних тем оформлення (опціонально локалізовані з використанням <var>$1inlanguagecode</var>, в іншому разі — мовою вмісту).\n;extensiontags:Видає список теґів розширення парсеру.\n;functionhooks:Видає список гуків парсерних функцій.\n;showhooks:Видає список усіх підписаних гуків (вміст <var>[[mw:Manual:$wgHooks|$wgHooks]]</var>).\n;variables:Видає список змінних ID.\n;protocols:Видає список протоколів, дозволених у зовнішніх посиланнях.\n;defaultoptions:Видає значення налаштувань користувача за замовчуванням.",
+       "apihelp-query+siteinfo-param-filteriw": "Видати лише локальні або лише нелокальні елементи карти інтервікі.",
+       "apihelp-query+siteinfo-param-showalldb": "Перелічити усі сервери баз даних, а не лише той, який робить найбільшу затримку.",
+       "apihelp-query+siteinfo-param-numberingroup": "Перераховує кількість користувачів у групах користувачів.",
+       "apihelp-query+siteinfo-param-inlanguagecode": "Код мови для локалізованих назв мов (найкращий варіант) і назв тем оформлення.",
+       "apihelp-query+siteinfo-example-simple": "Вибрати інформацію про сайт.",
+       "apihelp-query+siteinfo-example-interwiki": "Отримати список локальних інтервікі-префіксів.",
+       "apihelp-query+siteinfo-example-replag": "Перевірити поточне відставання реплікації.",
+       "apihelp-query+stashimageinfo-description": "Видає інформацію про приховані файли.",
+       "apihelp-query+stashimageinfo-param-filekey": "Ключ, який ідентифікує попереднє завантаження, що було тимчасово приховане.",
+       "apihelp-query+stashimageinfo-param-sessionkey": "Аліас для $1filekey, для зворотної сумісності.",
+       "apihelp-query+stashimageinfo-example-simple": "Видає інформацію про прихований файл.",
+       "apihelp-query+stashimageinfo-example-params": "Видає мініатюри для двох прихованих файлів.",
+       "apihelp-query+tags-description": "Перелічити мітки змін.",
+       "apihelp-query+tags-param-limit": "Максимальна кількість міток у списку.",
+       "apihelp-query+tags-param-prop": "Які властивості отримати:\n;name:Додає назву мітки.\n;displayname:Додає системне повідомлення для мітки.\n;description:Додає опис мітки.\n;hitcount:Додає кількість версій та записів журналу, які мають цю мітку.\n;defined:Показує, чи мітка визначена.\n;source:Отримує джерела мітки, що може включати <samp>extension</samp> для визначених розширеннями міток і <samp>manual</samp> для міток, які користувачі можуть застосовувати вручну.\n;active:Чи мітка ще застосовується.",
+       "apihelp-query+tags-example-simple": "Перелічити доступні мітки.",
+       "apihelp-query+templates-description": "Видає усі сторінки, які включені на вказаних сторінках.",
+       "apihelp-query+templates-param-namespace": "Показати шаблони лише у цьому просторі назв.",
+       "apihelp-query+templates-param-limit": "Скільки шаблонів виводити.",
+       "apihelp-query+templates-param-templates": "Перерахувати лише ці шаблони. Корисно для перевірки, чи певна сторінка використовує певний шаблон.",
+       "apihelp-query+templates-param-dir": "Напрямок, у якому перелічити.",
+       "apihelp-query+templates-example-simple": "Отримати шаблони, використані на сторінці <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-generator": "Отримати інформацію про сторінки шаблонів, використаних на сторінці <kbd>Main Page</kbd>.",
+       "apihelp-query+templates-example-namespaces": "Отримати сторінки у просторах назв {{ns:user}} і {{ns:template}}, які включені на сторінці <kbd>Main Page</kbd>.",
+       "apihelp-query+tokens-description": "Отримує токени для дій, що змінюють дані.",
+       "apihelp-query+tokens-param-type": "Типи токена для запиту.",
+       "apihelp-query+tokens-example-simple": "Отримати csrf-токен (за замовчуванням).",
+       "apihelp-query+tokens-example-types": "Отримати токен спостереження і токен патрулювання.",
+       "apihelp-query+transcludedin-description": "Знайти усі сторінки, що включають подані сторінки.",
+       "apihelp-query+transcludedin-param-prop": "Які властивості отримати:\n;pageid:ID кожної сторінки.\n;title:Назва кожної сторінки.\n;redirect:Помітка, якщо сторінка є перенаправленням.",
+       "apihelp-query+transcludedin-param-namespace": "Включати сторінки лише в цих просторах назв.",
+       "apihelp-query+transcludedin-param-limit": "Скільки результатів виводити.",
+       "apihelp-query+transcludedin-param-show": "Показати лише елементи, що відповідають цим критеріям:\n;redirect:Показати лише перенаправлення.\n;!redirect:Показати лише не перенаправлення.",
+       "apihelp-query+transcludedin-example-simple": "Отримати список сторінок, що включають <kbd>Main Page</kbd>.",
+       "apihelp-query+transcludedin-example-generator": "Отримати інформацію про сторінки, які включають <kbd>Main Page</kbd>.",
+       "apihelp-query+usercontribs-description": "Отримати всі редагування користувача.",
+       "apihelp-query+usercontribs-param-limit": "Максимальна кількість елементів внеску для виведення.",
+       "apihelp-query+usercontribs-param-start": "З якої часової мітки виводити.",
+       "apihelp-query+usercontribs-param-end": "До якої часової мітки виводити.",
+       "apihelp-query+usercontribs-param-user": "Користувачі, для яких отримати внесок.",
+       "apihelp-query+usercontribs-param-userprefix": "Отримати внесок усіх користувачів, чиї імена починаються цим значенням. Перевизначає $1user.",
+       "apihelp-query+usercontribs-param-namespace": "Перерахувати записи внеску лише в цих просторах назв.",
+       "apihelp-query+usercontribs-param-prop": "Включити додаткові відомомсті:\n;ids:Додає ID сторінки й ID версії.\n;title:Додає назву й ID простору назв сторінки.\n;timestamp:Додає часову мітку редагування.\n;comment:Додає коментар редагування.\n;parsedcomment:Додає проаналізований коментар редагування.\n;size:Додає новий розмір редагування.\n;sizediff:Додає зміну розміру порівняно з попереднім редагуванням.\n;flags:Додає прапорці редагування.\n;patrolled:Відзначає патрульовані редагування.\n;tags:Перелічує мітки редагування.",
+       "apihelp-query+usercontribs-param-show": "Показати лише елементи, що відповідають цим критеріям, наприклад, лише не незначні редагування: <kbd>$2show=!minor</kbd>.\n\nЯкщо вказано <kbd>$2show=patrolled</kbd> або <kbd>$2show=!patrolled</kbd>, версії, старіші ніж <var>[[mw:Manual:$wgRCMaxAge|$wgRCMaxAge]]</var> ($1 {{PLURAL:$1|секунда|секунди|секунд}}) не будуть показуватися.",
+       "apihelp-query+usercontribs-param-tag": "Перерахувати лише версії, помічені цим теґом.",
+       "apihelp-query+usercontribs-param-toponly": "Виводити лише зміни, які є останньою версією.",
+       "apihelp-query+usercontribs-example-user": "Показати внесок користувача <kbd>Example</kbd>.",
+       "apihelp-query+usercontribs-example-ipprefix": "Показати внесок з усіх IP-адрес з префіксом <kbd>192.0.2.</kbd>.",
+       "apihelp-query+userinfo-description": "Отримати інформацію про поточного користувача.",
+       "apihelp-query+userinfo-param-prop": "Які саме відомості включати:\n;blockinfo:Позначає, чи поточний користувач заблокований, ким, з якої причини.\n;hasmsg:Додає мітку <samp>messages</samp>, якщо у користувача є непроглянуті повідомлення.\n;groups:Перелічує усі групи, до яких належить поточний користувач.\n;implicitgroups:Перелічує усі групи, до яких поточний користувач належить автоматично.\n;rights:Перелічує усі права, які має поточний користувач.\n;changeablegroups:Перелічує групи, у які користувач може додавати і з яких вилучати.\n;options:Перелічує усі налаштування, які поточний користувач встановив.\n;preferencestoken:<span class=\"apihelp-deprecated\">Застаріло.</span> Отримати токен зміни налаштувань поточного користувача.\n;editcount:Додає кількість редагувань поточного користувача.\n;ratelimits:Перелічує усі ліміти оцінок, застосовні до поточного користувача.\n;realname:Додає справжнє ім'я користувача.\n;email:Додає електронну пошту користувача та дату її підтвердження.\n;acceptlang:Дублює шапку <code>Accept-Language</code>, надіслану клієнтом у структурованому форматі.\n;registrationdate:Додає дату реєстрації користувача.\n;unreadcount:Додає кількість непрочитаних сторінок у списку спостереження користувача (максимально $1; видає «<samp>$2</samp>», якщо більше).",
+       "apihelp-query+userinfo-example-simple": "Отримати інформацію про поточного користувача.",
+       "apihelp-query+userinfo-example-data": "Отримати додаткову інформацію про поточного користувача.",
+       "apihelp-query+users-description": "Отримати інформацію про список користувачів.",
+       "apihelp-query+users-param-prop": "Яку інформацію включити:\n;blockinfo:Мітки про те чи є користувач заблокованим, ким, і з якою причиною.\n;groups:Перелічує всі групи, до яких належить кожен з користувачів.\n;implicitgroups:Перелічує всі групи, членом яких користувач є автоматично.\n;rights:Перелічує всі права, які має кожен з користувачів.\n;editcount:Додає лічильник редагувань користувача.\n;registration:Додає часову мітку реєстрації користувача.\n;emailable:Помічає чи хоче користувач отримувати електронну пошту через [[Special:Emailuser]].\n;gender:Помічає стать користувача. Повертає \"male\", \"female\", або \"unknown\".",
+       "apihelp-query+users-param-users": "Список користувачів, для яких отримати інформацію.",
+       "apihelp-query+users-param-token": "Використати натомість <kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>.",
+       "apihelp-query+users-example-simple": "Вивести інформацію для користувача <kbd>Example</kbd>.",
+       "apihelp-query+watchlist-description": "Отримати нещодавні зміни сторінок у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-param-allrev": "Включити декілька версій тієї з сторінки у поданому часовому діапазоні.",
+       "apihelp-query+watchlist-param-start": "Часова мітка, з якої почати перелік.",
+       "apihelp-query+watchlist-param-end": "Часова мітка завершення переліку.",
+       "apihelp-query+watchlist-param-namespace": "Відфільтрувати до змін лише у поданих просторах назв.",
+       "apihelp-query+watchlist-param-user": "Перерахувати лише зміни, зроблені цим користувачем.",
+       "apihelp-query+watchlist-param-excludeuser": "Не перераховувати зміни, зроблені цим користувачем.",
+       "apihelp-query+watchlist-param-limit": "Скільки всього видати результатів за один запит.",
+       "apihelp-query+watchlist-param-prop": "Які додаткові властивості отримати:",
+       "apihelp-query+watchlist-paramvalue-prop-ids": "Додає ID версій та ID сторінок.",
+       "apihelp-query+watchlist-paramvalue-prop-title": "Додає заголовок сторінки.",
+       "apihelp-query+watchlist-paramvalue-prop-flags": "Додає прапорці редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-user": "Додає користувача, який зробив редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-userid": "Додає ідентифікатор користувача, який зробив редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-comment": "Додає коментар редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-parsedcomment": "Додає проаналізований коментар редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-timestamp": "Додає часову мітку редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-patrol": "Позначає відпатрульовані редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-sizes": "Додає стару і нову довжину сторінки.",
+       "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "Додає мітку часу, коли користувач був востаннє сповіщений про редагування.",
+       "apihelp-query+watchlist-paramvalue-prop-loginfo": "Додає інформацію журналу, де це доречно.",
+       "apihelp-query+watchlist-param-show": "Показати лише елементи, що задовільняють ці критерії. Наприклад, для перегляду лише незначних змін, здійснених користувачами, що увійшли до системи, вкажіть $1show=minor|!anon.",
+       "apihelp-query+watchlist-param-type": "Які типи змін показувати:\n;edit:Звичайні редагування сторінки.\n;external:Зовнішні зміни.\n;new:Створення сторінок.\n;log:Записи журналу.\n;categorize:Зміни в членстві в категоріях.",
+       "apihelp-query+watchlist-param-owner": "Використовується разом з $1token для доступу до списку спостереження різних користувачів.",
+       "apihelp-query+watchlist-param-token": "Токен безпеки (доступний у [[Special:Preferences#mw-prefsection-watchlist|налаштуваннях]] користувача) для отримання доступу до списку спостереження іншого користувача.",
+       "apihelp-query+watchlist-example-simple": "Перелічити верхні версії для нещодавно змінених сторінок у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-example-props": "Вибрати додаткову інформацію про верхню версію нещодавно змінених сторінок у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-example-allrev": "Вибрати інформацію про усі нещодавні зміни на сторінках у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-example-generator": "Видати інформацію про сторінку для нещодавно змінених сторінок у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-example-generator-rev": "Вибрати інформацію про версію для усіх нещодавніх змін на сторінках у списку спостереження поточного користувача.",
+       "apihelp-query+watchlist-example-wlowner": "Перелічити верхні версії для нещодавно змінених сторінок у списку спостереження користувача <kbd>Example</kbd>.",
+       "apihelp-query+watchlistraw-description": "Отримати усі сторінки у списку спостереження поточного користувача.",
+       "apihelp-query+watchlistraw-param-namespace": "Перерахувати сторінки лише в поданих просторах назв.",
+       "apihelp-query+watchlistraw-param-limit": "Скільки всього видати результатів за один запит.",
+       "apihelp-query+watchlistraw-param-prop": "Які додаткові властивості отримати:\n;changed:Додає мітку часу, коли користувач був востаннє сповіщений про редагування.",
+       "apihelp-query+watchlistraw-param-show": "Перелічити лише елементи, які відповідають цим критеріям.",
+       "apihelp-query+watchlistraw-param-owner": "Використовується разом з $1token для доступу до списку спостереження різних користувачів.",
+       "apihelp-query+watchlistraw-param-token": "Токен безпеки (доступний у [[Special:Preferences#mw-prefsection-watchlist|налаштуваннях]] користувача) для отримання доступу до списку спостереження іншого користувача.",
+       "apihelp-query+watchlistraw-param-fromtitle": "Назва (з префіксом простору назв), з якої почати перерахування.",
+       "apihelp-query+watchlistraw-param-totitle": "Назва (з префіксом простору назв), якою закінчити перерахування.",
+       "apihelp-query+watchlistraw-example-simple": "Перелічити сторінки у списку спостереження поточного користувача.",
+       "apihelp-query+watchlistraw-example-generator": "Вибрати інформацію про сторінку для сторінок у списку спостереження поточного користувача.",
+       "apihelp-revisiondelete-description": "Вилучити або відновити версії.",
+       "apihelp-revisiondelete-param-type": "Тип здійснюваного вилучення версії.",
+       "apihelp-revisiondelete-param-target": "Назва сторінки, версію якої вилучити, якщо вимагається для цього типу.",
+       "apihelp-revisiondelete-param-ids": "Ідентифікатори версій, які слід вилучити.",
+       "apihelp-revisiondelete-param-hide": "Що приховати у кожній з версій.",
+       "apihelp-revisiondelete-param-show": "Що показати у кожній з версії.",
+       "apihelp-revisiondelete-param-suppress": "Чи приховати дані від адміністраторів так само як від усіх інших.",
+       "apihelp-revisiondelete-param-reason": "Причина вилучення або відновлення.",
+       "apihelp-revisiondelete-example-revision": "Приховати вміст версії <kbd>12345</kbd> сторінки <kbd>Main Page</kbd>.",
+       "apihelp-revisiondelete-example-log": "Приховати всі дані у записі журналу <kbd>67890</kbd> з причиною <kbd>BLP violation</kbd>.",
+       "apihelp-rollback-description": "Скасувати останнє редагування цієї сторінки.\n\nЯкщо користувач, який редагував сторінку, зробив декілька редагувань підряд, їх усі буде відкочено.",
+       "apihelp-rollback-param-title": "Назва сторінки, у якій здійснити відкіт. Не може використовуватись разом з <var>$1pageid</var>.",
+       "apihelp-rollback-param-pageid": "Ідентифікатор сторінки у якій здійснити відкіт. Не може використовуватись разом з <var>$1title</var>.",
+       "apihelp-rollback-param-user": "Ім'я користувача чиї редагування слід відкотити.",
+       "apihelp-rollback-param-summary": "Нестандартний опис редагування. Якщо порожній, буде використано опис редагування за замовчуванням.",
+       "apihelp-rollback-param-markbot": "Позначити відкинуті редагування та відкіт як редагування бота.",
+       "apihelp-rollback-param-watchlist": "Безумовно додати або вилучити сторінку із списку спостереження поточного користувача, використати налаштування, або не змінювати статус (не)спостереження.",
+       "apihelp-rollback-example-simple": "Відкинути останні редагування сторінки <kbd>Main Page</kbd> здійснені користувачем <kbd>Example</kbd>.",
+       "apihelp-rollback-example-summary": "Відкинути останні редагування сторінки <kbd>Main Page</kbd> здійснені IP-користувачем <kbd>192.0.2.5</kbd> з причиною <kbd>Reverting vandalism</kbd>, та позначити ці редагування та відкіт як редагування бота.",
+       "apihelp-rsd-description": "Експортувати як схему RSD (Really Simple Discovery).",
+       "apihelp-rsd-example-simple": "Експортувати RSD-схему.",
+       "apihelp-setnotificationtimestamp-description": "Оновити часову мітку сповіщень для сторінок, що спостерігаються.\n\nЦе зачепить підсвічування змінених сторінок у списку спостереження та історії, а також надсилання електронного листа якщо опція налаштувань «{{int:tog-enotifwatchlistpages}}» увімкнена.",
+       "apihelp-setnotificationtimestamp-param-entirewatchlist": "Опрацювати всі сторінки, що спостерігаються.",
+       "apihelp-setnotificationtimestamp-param-timestamp": "Часова мітка, яку вказати у якості часової мітки сповіщень.",
+       "apihelp-setnotificationtimestamp-param-torevid": "Версія до якої вказати часову мітку сповіщень (лише одна сторінка).",
+       "apihelp-setnotificationtimestamp-param-newerthanrevid": "Версія, до новішої від якої вказати часову мітку сповіщень (лише одна сторінка).",
+       "apihelp-setnotificationtimestamp-example-all": "Стерти статус сповіщень для всього списку спостереження.",
+       "apihelp-setnotificationtimestamp-example-page": "Стерти статус сповіщень для <kbd>Main page</kbd>.",
+       "apihelp-setnotificationtimestamp-example-pagetimestamp": "Встановити часову мітку сповіщень для <kbd>Main page</kbd> так, що всі редагування після 1 січня 2012 будуть виглядати як не переглянуті.",
+       "apihelp-setnotificationtimestamp-example-allpages": "Стерти статус сповіщень для сторінок у просторі назв <kbd>{{ns:user}}</kbd>.",
+       "apihelp-tag-description": "Додати або вилучити зміни міток з окремих версій або записів журналу.",
+       "apihelp-tag-param-rcid": "Один або більше ідентифікаторів останніх змін, до яких додати або вилучити мітки.",
+       "apihelp-tag-param-revid": "Один або більше ідентифікатор з якого додати або вилучити мітку.",
+       "apihelp-tag-param-logid": "Один або більше ідентифікатор запису журналу з якого вилучити або додати мітку.",
+       "apihelp-tag-param-add": "Мітки, які слід додати. Лише визначені вручну мітки може бути додано.",
+       "apihelp-tag-param-remove": "Мітки, які слід вилучити. Лише мітки, які було визначено вручну, або взагалі не визначено, можуть бути вилучені.",
+       "apihelp-tag-param-reason": "Причина зміни.",
+       "apihelp-tag-example-rev": "Додати мітку <kbd>vandalism</kbd> до версії з ідентифікатором 123 без вказання причини",
+       "apihelp-tag-example-log": "Вилучити мітку <kbd>spam</kbd> з запису журналу з ідентифікатором 123 з причиною <kbd>Wrongly applied</kbd>",
+       "apihelp-tokens-description": "Отримати жетони для дій пов'язаних зі зміною даних.\n\nЦей модуль застарів на користь [[Special:ApiHelp/query+tokens|action=query&meta=tokens]].",
+       "apihelp-tokens-param-type": "Які типи жетонів запитати.",
+       "apihelp-tokens-example-edit": "Отримати жетон редагування (за замовчуванням).",
+       "apihelp-tokens-example-emailmove": "Отримати жетон електронної пошти та жетон перейменування.",
+       "apihelp-unblock-description": "Розблокувати користувача.",
+       "apihelp-unblock-param-id": "Ідентифікатор блоку чи розблокування (отриманий через <kbd>list=blocks</kbd>). Не може бути використано разом з <var>$1user</var>.",
+       "apihelp-unblock-param-user": "Ім'я користувача, IP-адреса чи IP-діапазон до розблокування. Не може бути використано разом з <var>$1id</var>.",
+       "apihelp-unblock-param-reason": "Причина розблокування.",
+       "apihelp-unblock-example-id": "Зняти блокування з ідентифікатором #<kbd>105</kbd>.",
+       "apihelp-unblock-example-user": "Розблокувати користувача <kbd>Bob</kbd> з причиною <kbd>Sorry Bob</kbd>.",
+       "apihelp-undelete-description": "Відновити версії вилученої сторінки.\n\nСписок вилучених версій (включено з часовими мітками) може бути отримано через [[Special:ApiHelp/query+deletedrevs|list=deletedrevs]], а список ідентифікаторів вилучених файлів може бути отримано через [[Special:ApiHelp/query+filearchive|list=filearchive]].",
+       "apihelp-undelete-param-title": "Назва сторінки, яку слід відновити.",
+       "apihelp-undelete-param-reason": "Причина відновлення.",
+       "apihelp-undelete-param-timestamps": "Часові мітки версій, які слід відновити. Якщо і <var>$1timestamps</var>, і <var>$1fileids</var> порожні, буде відновлено всі версії.",
+       "apihelp-undelete-param-fileids": "Ідентифікатори версій файлів, які слід відновити. Якщо і <var>$1timestamps</var>, і <var>$1fileids</var> порожні, буде відновлено всі версії.",
+       "apihelp-undelete-param-watchlist": "Безумовно додати або вилучити сторінку із списку спостереження поточного користувача, використати налаштування, або не змінювати статус (не)спостереження.",
+       "apihelp-undelete-example-page": "Відновити сторінку <kbd>Main Page</kbd>.",
+       "apihelp-undelete-example-revisions": "Відновити дві версії сторінки <kbd>Main Page</kbd>.",
+       "apihelp-upload-description": "Завантажити файл, або отримати статус завантажень у процесі.\n\nДоступні декілька методів:\n* Завантажити вміст файлу напряму, використовуючи параметр <var>$1file</var>.\n* Завантажити файл шматками, використовуючи параметри <var>$1filesize</var>, <var>$1chunk</var>, та <var>$1offset</var>.\n* Змусити сервер Медіавікі отримати файл за URL, використовуючи параметр <var>$1url</var>.\n* Завершити раніше розпочате завантаження, яке не вдалось через попередження, використовуючи параметр <var>$1filekey</var>.\nЗауважте, що HTTP POST повинен бути здійснений як завантаження файлу (наприклад, використовуючи <code>multipart/form-data</code>)",
+       "apihelp-upload-param-filename": "Цільова назва файлу.",
+       "apihelp-upload-param-comment": "Коментар завантаження. Також використовується як початковий текст сторінок для нових файлів, якщо <var>$1text</var> не вказано.",
+       "apihelp-upload-param-text": "Початковий текст сторінок для нових файлів.",
+       "apihelp-upload-param-watch": "Спостерігати за сторінкою.",
+       "apihelp-upload-param-watchlist": "Безумовно додати або вилучити сторінку із списку спостереження поточного користувача, використати налаштування, або не змінювати статус (не)спостереження.",
+       "apihelp-upload-param-ignorewarnings": "Ігнорувати всі попередження.",
+       "apihelp-upload-param-file": "Вміст файлу.",
+       "apihelp-upload-param-url": "URL з якого отримати файл.",
+       "apihelp-upload-param-filekey": "Ключ, що ідентифікує попереднє завантаження яке було відкладено тимчасово",
+       "apihelp-upload-param-sessionkey": "Те ж саме, що $1filekey, підтримується для зворотної сумісності.",
+       "apihelp-upload-param-stash": "Якщо вказано, сервер тимчасово відкладе файл замість додати його до репозиторію.",
+       "apihelp-upload-param-filesize": "Розмір файлу цілого завантаження.",
+       "apihelp-upload-param-offset": "Зміщення шматка в байтах.",
+       "apihelp-upload-param-chunk": "Шматок вмісту.",
+       "apihelp-upload-param-async": "Зробити операції з потенційно великими файлами асинхронними коли можливо.",
+       "apihelp-upload-param-asyncdownload": "Зробити отримання за URL асинхронним.",
+       "apihelp-upload-param-leavemessage": "Якщо використовується asyncdownload, залишити повідомлення на сторінці обговорення користувача при закінченні.",
+       "apihelp-upload-param-statuskey": "Отримати статус завантаження для цього ключа файлу (завантаження за URL)",
+       "apihelp-upload-param-checkstatus": "Отримувати статус завантаження лише для даного ключа файлу.",
+       "apihelp-upload-example-url": "Завантаження з URL.",
+       "apihelp-upload-example-filekey": "Завершити завантаження, що не вдалось через попередження.",
+       "apihelp-userrights-description": "Змінити членство користувача у групах.",
+       "apihelp-userrights-param-user": "Ім'я користувача.",
+       "apihelp-userrights-param-userid": "Ідентифікатор користувача.",
+       "apihelp-userrights-param-add": "Додати користувача до цих груп.",
+       "apihelp-userrights-param-remove": "Вилучити користувача із цих груп.",
+       "apihelp-userrights-param-reason": "Причина зміни.",
+       "apihelp-userrights-example-user": "Додати користувача <kbd>FooBot</kbd> до групи <kbd>bot</kbd> та вилучити із груп <kbd>sysop</kbd> та <kbd>bureaucrat</kbd>.",
+       "apihelp-userrights-example-userid": "Додати користувача з ідентифікатором <kbd>123</kbd> до групи <kbd>bot</kbd> та вилучити із груп <kbd>sysop</kbd> та <kbd>bureaucrat</kbd>.",
+       "apihelp-watch-description": "Додати або вилучити сторінки з списку спостереження поточного користувача.",
+       "apihelp-watch-param-title": "Сторінки до додання/вилучення. Використовуйте <var>$1titles</var> натомість.",
+       "apihelp-watch-param-unwatch": "Якщо вказано, сторінку буде вилучено зі списку спостереження замість додання до нього.",
+       "apihelp-watch-example-watch": "Спостерігати за сторінкою <kbd>Головна сторінка</kbd>.",
+       "apihelp-watch-example-unwatch": "Вилучити сторінку <kbd>Головна сторінка</kbd> зі списку спостереження.",
+       "apihelp-watch-example-generator": "Додати перші декілька сторінок основного простору назв до списку спостереження.",
+       "apihelp-format-example-generic": "Повернути результат запиту у форматі $1.",
+       "apihelp-dbg-description": "Вивести дані у форматі PHP <code>var_export()</code>.",
+       "apihelp-dbgfm-description": "Вивести дані у форматі PHP <code>var_export()</code> (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-json-description": "Вивести дані у форматі JSON.",
+       "apihelp-json-param-callback": "Якщо вказано, огортає вивід викликом даної функції. З міркувань безпеки, усі специфічні до користувача дані буде утримано.",
+       "apihelp-json-param-utf8": "Якщо вказано, кодує більшість (але не всі) не-ASCII символів як UTF-8, замість заміни їх шістнадцятковими екрануючими послідовностями. За замовчуванням коли <var>formatversion</var> не є <kbd>1</kbd>.",
+       "apihelp-json-param-ascii": "Якщо вказано, кодує всі не-ASCII використовуючи шістнадцяткові екрануючі послідовності. За замовчуванням коли <var>formatversion</var> є <kbd>1</kbd>.",
+       "apihelp-json-param-formatversion": "Форматування виводу:\n;1:Формат зворотної сумісності (булеви XML-стилю, <samp>*</samp> ключі для вузлів вмісту тощо).\n;2:Експериментальний сучасний формат. Деталі можуть змінюватись.\n;latest:Використовувати найостанніший формат (наразі <kbd>2</kbd>). Може змінюватись без попередження.",
+       "apihelp-jsonfm-description": "Вивести дані у форматі JSON (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-none-description": "Нічого не виводити.",
+       "apihelp-php-description": "Виводити дані у форматі серіалізованого PHP.",
+       "apihelp-php-param-formatversion": "Форматування виводу:\n;1:Формат зворотної сумісності (булеви XML-стилю, <samp>*</samp> ключі для вузлів вмісту тощо).\n;2:Експериментальний сучасний формат. Деталі можуть змінюватись.\n;latest:Використовувати найостанніший формат (наразі <kbd>2</kbd>). Може змінюватись без попередження.",
+       "apihelp-phpfm-description": "Виводити дані у форматі серіалізованого PHP (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-rawfm-description": "Виводити дані у форматі JSON разом з елементами налагодження (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-txt-description": "Виводити дані у форматі PHP <code>print_r()</code>.",
+       "apihelp-txtfm-description": "Виводити дані у форматі PHP <code>print_r()</code> (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-xml-description": "Виводити дані у форматі XML.",
+       "apihelp-xml-param-xslt": "Якщо вказано, додає названу сторінку як таблицю стилів XSL. Це значення повинне бути назвою у просторі назв {{ns:mediawiki}}, що закінчується на <code>.xsl</code>.",
+       "apihelp-xml-param-includexmlnamespace": "Якщо вказано, додає простір назв XML.",
+       "apihelp-xmlfm-description": "Вивести дані у форматі XML (вивід відформатованого коду за допомогою HTML).",
+       "apihelp-yaml-description": "Вивести дані у форматі YAML.",
+       "apihelp-yamlfm-description": "Вивести дані у форматі YAML (вивід відформатованого коду за допомогою HTML).",
+       "api-format-title": "Результат запиту до API MediaWiki",
+       "api-format-prettyprint-header": "Це HTML-представлення формату $1. HTML є гарним для налагодження, однак не придатний для прикладного використання.\n\nУкажіть значення для параметру <var>format</var>, для того щоб змінити формат. Для перегляду не-HTML-представлення формату, $1, вкажіть <kbd>format=$2</kbd>.\n\nДив. [[mw:API|повну документацію]], або [[Special:ApiHelp/main|довідку з API]] для детальнішої інформації.",
+       "api-format-prettyprint-header-only-html": "Це HTML-представлення призначене для налагодження, однак не придатне для прикладного використання.\n\nДив. [[mw:API|повну документацію]], або [[Special:ApiHelp/main|довідку з API]] для детальнішої інформації.",
+       "api-orm-param-props": "Поля до запиту.",
+       "api-orm-param-limit": "Яке максимальне число рядків повернути.",
+       "api-pageset-param-titles": "Список назв над якими працювати.",
+       "api-pageset-param-pageids": "Список ідентифікаторів сторінок над якими працювати.",
+       "api-pageset-param-revids": "Список ідентифікаторів версій над якими працювати.",
+       "api-pageset-param-generator": "Отримати список сторінок над якими працювати шляхом виконання вказаного модуля запиту.\n\n<strong>Примітка:</strong> Назви параметрів генератора повинні мати префікс «g», див. приклади.",
+       "api-pageset-param-redirects-generator": "Автоматично вирішувати перенаправлення у <var>$1titles</var>, <var>$1pageids</var>, і <var>$1revids</var>, та у сторінках, повернених <var>$1generator</var>.",
+       "api-pageset-param-redirects-nogenerator": "Автоматично вирішувати перенаправлення у <var>$1titles</var>, <var>$1pageids</var>, та <var>$1revids</var>.",
+       "api-pageset-param-converttitles": "Конвертувати назви в інші варіанти за необхідності. Працює лише для вікі, мова вмісту яких підтримує конвертування варіантів. Мовами, що підтримують конвертування варіантів є $1.",
+       "api-help-title": "Довідка API Медіавікі",
+       "api-help-lead": "Це автоматично генерована сторінка документації API Медіавікі.\n\nДокументація та приклади: https://www.mediawiki.org/wiki/API",
+       "api-help-main-header": "Головний модуль",
+       "api-help-flag-deprecated": "Цей модуль є застарілим.",
+       "api-help-flag-internal": "<strong>Цей модуль є внутрішнім або нестабільним.</strong> Його робота може бути змінена без сповіщення.",
+       "api-help-flag-readrights": "Цей модуль вимагає прав на читання.",
+       "api-help-flag-writerights": "Цей модуль вимагає прав на запис.",
+       "api-help-flag-mustbeposted": "Цей модуль приймає лише POST-запити.",
+       "api-help-flag-generator": "Цей модуль може бути використаний як генератор.",
+       "api-help-source": "Джерело: $1",
+       "api-help-source-unknown": "Джерело: <span class=\"apihelp-unknown\">невідоме</span>",
+       "api-help-license": "Ліцензія: [[$1|$2]]",
+       "api-help-license-noname": "Ліцензія: [[$1|див. посилання]]",
+       "api-help-license-unknown": "Ліцензія: <span class=\"apihelp-unknown\">невідома</span>",
+       "api-help-parameters": "{{PLURAL:$1|Параметр|Параметри}}:",
+       "api-help-param-deprecated": "Застарілий.",
+       "api-help-param-required": "Цей параметр є обов'язковим.",
+       "api-help-datatypes-header": "Типи даних",
+       "api-help-datatypes": "Деякі типи параметрів у запитах API потребують ширшого пояснення:\n;boolean\n:Логічні параметри працюють як галочки HTML: якщо параметр вказано, не залежно від значення, він вважається істинним. Щоб значення було хибним, пропустіть параметр зовсім.\n;timestamp\n:Часові мітки можуть бути вказані у кількох форматах. Рекомендується час і дата в ISO 8601. Усі значення часу в UTC, будь-які часові пояси ігноруються.\n:* Дата і час ISO 8601, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>Z</kbd> (пунктуація і <kbd>Z</kbd> необов'язокві)\n:* Дата і час ISO 8601 з (ігнорованими) частками секунди, <kbd><var>2001</var>-<var>01</var>-<var>15</var>T<var>14</var>:<var>56</var>:<var>00</var>.<var>00001</var>Z</kbd> (дефіси, двокрапки та <kbd>Z</kbd> необов'язкові)\n:* Формат MediaWiki, <kbd><var>2001</var><var>01</var><var>15</var><var>14</var><var>56</var><var>00</var></kbd>\n:* Загальний числовий формат, <kbd><var>2001</var>-<var>01</var>-<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd> (необов'язковий часовий пояс <kbd>GMT</kbd>, <kbd>+<var>##</var></kbd> або <kbd>-<var>##</var></kbd> ігнорується)\n:* Формат EXIF, <kbd><var>2001</var>:<var>01</var>:<var>15</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат RFC 2822 (часовий пояс може бути опущений), <kbd><var>Mon</var>, <var>15</var> <var>Jan</var> <var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат RFC 850 (часовий пояс може бути опущений), <kbd><var>Monday</var>, <var>15</var>-<var>Jan</var>-<var>2001</var> <var>14</var>:<var>56</var>:<var>00</var></kbd>\n:* Формат C ctime, <kbd><var>Mon</var> <var>Jan</var> <var>15</var> <var>14</var>:<var>56</var>:<var>00</var> <var>2001</var></kbd>\n:* Секунди від 1970-01-01T00:00:00Z у вигляді цілого числа від 1 до 13 цифр (без <kbd>0</kbd>)\n:* Рядок <kbd>now</kbd>",
+       "api-help-param-type-limit": "Тип: ціле число або <kbd>max</kbd>",
+       "api-help-param-type-integer": "Тип: {{PLURAL:$1|1=ціле число|2=список цілих чисел}}",
+       "api-help-param-type-boolean": "Тип: логічний ([[Special:ApiHelp/main#main/datatypes|деталі]])",
+       "api-help-param-type-timestamp": "Тип: {{PLURAL:$1|1=часова мітка|2=список часових міток}} ([[Special:ApiHelp/main#main/datatypes|дозволені формати]])",
+       "api-help-param-type-user": "Тип: {{PLURAL:$1|1=ім'я користувача|2=список імен користувачів}}",
+       "api-help-param-list": "{{PLURAL:$1|1=Одне значення|2=Значення (розділені через <kbd>{{!}}</kbd>)}}: $2",
+       "api-help-param-list-can-be-empty": "{{PLURAL:$1|0=Повинно бути пустим|Може бути пустим або $2}}",
+       "api-help-param-limit": "Дозволено не більше $1.",
+       "api-help-param-limit2": "Дозволено не більше $1 ($2 для ботів).",
+       "api-help-param-integer-min": "{{PLURAL:$1|1=Значення має бути|2=Значення мають бути}} не менше $2.",
+       "api-help-param-integer-max": "{{PLURAL:$1|1=Значення має бути|2=Значення мають бути}} не більше $3.",
+       "api-help-param-integer-minmax": "{{PLURAL:$1|1=Значення має бути|2=Значення мають бути}} між $2 і $3.",
+       "api-help-param-upload": "Повинно бути надіслано у формі надсилання файлу використовуючи multipart/form-data.",
+       "api-help-param-multi-separate": "Розділіть значення з допомогою <kbd>|</kbd>.",
+       "api-help-param-multi-max": "Максимальна кількість значень — {{PLURAL:$1|$1}} ({{PLURAL:$2|$2}} для ботів).",
+       "api-help-param-default": "За замовчуванням: $1",
+       "api-help-param-default-empty": "За замовчуванням: <span class=\"apihelp-empty\">(пусто)</span>",
+       "api-help-param-token": "Токен «$1» отримано з [[Special:ApiHelp/query+tokens|action=query&meta=tokens]]",
+       "api-help-param-token-webui": "Для сумісності, приймається також токен, використаний у користувацькому веб-інтерфейсі.",
+       "api-help-param-disabled-in-miser-mode": "Вимкнено через [[mw:Manual:$wgMiserMode|скупий режим]].",
+       "api-help-param-limited-in-miser-mode": "<strong>Примітка:</strong> через [[mw:Manual:$wgMiserMode|«скупий режим»]], використання цього може вилитися у видачу результатів менше ніж <var>$1limit</var> перед продовженням; в особливих випадках можуть видаватися нульові результати.",
+       "api-help-param-direction": "У якому напрямку перелічувати:\n;newer:Спочатку найстарші. Примітка: $1start має бути перед $1end.\n;older:Спочатку найновіші (за замовчуванням). Примітка: $1start має бути перед $1end.",
+       "api-help-param-continue": "Коли доступно більше результатів, використовуйте це, щоб продовжити.",
+       "api-help-param-no-description": "<span class=\"apihelp-empty\">(без опису)</span>",
+       "api-help-examples": "{{PLURAL:$1|Приклад|Приклади}}:",
+       "api-help-permissions": "{{PLURAL:$1|Дозвіл|Дозволи}}:",
+       "api-help-permissions-granted-to": "{{PLURAL:$1|Надано|Надані}}: $2",
+       "api-help-right-apihighlimits": "Використовувати вищі ліміти у запитах API (повільні запити: $1; швидкі запити: $2). Ліміти для повільних запитів також застосовуються до багатозначних параметрів.",
+       "api-credits-header": "Автор(и)",
+       "api-credits": "Розробники API:\n* Roan Kattouw (головний розробник вер. 2007–2009)\n* Victor Vasiliev\n* Bryan Tong Minh\n* Sam Reed\n* Yuri Astrakhan (творець, головний розробник вер. 2006 – вер. 2007)\n* Brad Jorsch (головний розробник 2013 – тепер)\n\nБудь ласка, надсилайте свої коментарі, пропозиції та запитання на mediawiki-api@lists.wikimedia.org\nабо зафайліть звіт про баґ на https://phabricator.wikimedia.org/."
 }
index 64bea5b..3ffc792 100644 (file)
@@ -14,6 +14,9 @@
        "apihelp-block-param-reason": "Lý do cấm.",
        "apihelp-block-param-nocreate": "Cấm tạo tài khoản.",
        "apihelp-block-param-reblock": "Nếu người dùng này đã bị khóa, ghi đè lên người này.",
+       "apihelp-checktoken-param-type": "Kiểu dấu hiệu được kiểm thử.",
+       "apihelp-checktoken-param-token": "Dấu hiệu để kiểm thử.",
+       "apihelp-checktoken-example-simple": "Kiểm thử dấu hiệu <kbd>csrf</kbd> có hợp lệ hay không.",
        "apihelp-clearhasmsg-description": "Xóa cờ <code>hasmsg</code> cho người dùng hiện tại.",
        "apihelp-clearhasmsg-example-1": "Xóa cờ <code>hasmsg</code> cho người dùng hiện tại",
        "apihelp-compare-param-fromtitle": "So sánh tiêu đề đầu tiên.",
        "apihelp-expandtemplates-description": "Bung tất cả bản mẫu trong văn bản wiki.",
        "apihelp-expandtemplates-param-title": "Tên trang.",
        "apihelp-expandtemplates-param-text": "Văn bản wiki để bung.",
+       "apihelp-expandtemplates-paramvalue-prop-parsetree": "Cây phân tích XML của đầu vào.",
+       "apihelp-feedcontributions-description": "Trả về nguồn cấp đóng góp người dùng.",
+       "apihelp-feedcontributions-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedcontributions-param-year": "Từ năm (trở về trước).",
+       "apihelp-feedcontributions-param-month": "Từ tháng (trở về trước).",
+       "apihelp-feedcontributions-param-deletedonly": "Chỉ hiện các đóng góp đã xóa.",
+       "apihelp-feedcontributions-param-toponly": "Chỉ hiện các phiên bản mới nhất.",
+       "apihelp-feedcontributions-param-newonly": "Chỉ hiện các sửa đổi tạo trang.",
+       "apihelp-feedcontributions-example-simple": "Trả về các đóng góp của người dùng <kbd>Ví dụ</kbd>.",
+       "apihelp-feedrecentchanges-description": "Trả về nguồn cấp thay đổi gần đây.",
+       "apihelp-feedrecentchanges-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedrecentchanges-param-hideminor": "Ẩn thay đổi nhỏ.",
+       "apihelp-feedrecentchanges-param-hidebots": "Ẩn thay đổi do bot thực hiện.",
+       "apihelp-feedrecentchanges-param-hideanons": "Ẩn thay đổi do người dùng vô danh thực hiện.",
+       "apihelp-feedrecentchanges-param-hideliu": "Ẩn thay đổi do người dùng đăng nhập thực hiện.",
+       "apihelp-feedrecentchanges-param-hidepatrolled": "Ẩn thay đổi đã tuần tra.",
+       "apihelp-feedrecentchanges-param-hidemyself": "Ẩn thay đổi do người dùng hiện tại thực hiện.",
+       "apihelp-feedrecentchanges-param-tagfilter": "Lọc theo thẻ.",
+       "apihelp-feedrecentchanges-example-simple": "Xem thay đổi gần đây.",
+       "apihelp-feedwatchlist-description": "Trả về nguồn cấp danh sách theo dõi.",
+       "apihelp-feedwatchlist-param-feedformat": "Định dạng nguồn cấp.",
+       "apihelp-feedwatchlist-example-default": "Xem nguồn cấp danh sách theo dõi.",
        "apihelp-filerevert-param-comment": "Tải lên bình luận.",
        "apihelp-filerevert-param-archivename": "Tên lưu trữ của bản sửa đổi để trở lại .",
        "apihelp-filerevert-example-revert": "Hoàn nguyên <kbd>Wiki.png</kbd> veef phiên bản 2011-03-05T15 : 27:40Z",
index e2d05e0..c75c5f4 100644 (file)
@@ -13,7 +13,8 @@
                        "Simon xianyu",
                        "Kuailong",
                        "Zhxy 519",
-                       "御坂美琴"
+                       "御坂美琴",
+                       "RyRubyy"
                ]
        },
        "apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|文档]]\n* [[mw:API:FAQ|常见问题]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api 邮件列表]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce API公告]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R 程序错误与功能请求]\n</div>\n<strong>状态信息:</strong>本页所展示的所有特性都应正常工作,但是API仍在开发当中,将会随时变化。请订阅[https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ mediawiki-api-announce 邮件列表]以便获得更新通知。\n\n<strong>错误请求:</strong>当API收到错误请求时,HTTP header将会返回一个包含\"MediaWiki-API-Error\"的值,随后header的值与error code将会送回并设置为相同的值。详细信息请参阅[[mw:API:Errors_and_warnings|API: 错误与警告]]。",
        "apihelp-expandtemplates-param-prop": "要获取的那条信息。\n\n注意如果没有选定值,结果将包含wiki文本,但将以弃用的格式显示。",
        "apihelp-expandtemplates-paramvalue-prop-wikitext": "扩充的wiki文本。",
        "apihelp-expandtemplates-paramvalue-prop-properties": "由wiki文本中扩充的魔术字定义的页面属性。",
+       "apihelp-expandtemplates-paramvalue-prop-volatile": "无论输出是否常常变动,均不应被在页面中其他任何位置重用。",
+       "apihelp-expandtemplates-paramvalue-prop-ttl": "结果缓存应无效化后的最长时间。",
        "apihelp-expandtemplates-paramvalue-prop-modules": "任何解析器函数请求添加至输出的ResourceLoader模块。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
        "apihelp-expandtemplates-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。",
        "apihelp-expandtemplates-paramvalue-prop-encodedjsconfigvars": "针对页面提供JavaScript配置变量为一个JSON字符串。",
        "apihelp-feedrecentchanges-param-hideliu": "隐藏注册用户做出的更改。",
        "apihelp-feedrecentchanges-param-hidepatrolled": "隐藏已巡查更改。",
        "apihelp-feedrecentchanges-param-hidemyself": "隐藏当前用户做出的更改。",
+       "apihelp-feedrecentchanges-param-hidecategorization": "隐藏分类成员更改。",
        "apihelp-feedrecentchanges-param-tagfilter": "按标签过滤。",
        "apihelp-feedrecentchanges-param-target": "仅仅显示从该页面链出的那些页面的变更。",
        "apihelp-feedrecentchanges-param-showlinkedto": "仅仅显示链入到该页面的那些页面的变更。",
        "apihelp-opensearch-param-format": "输出格式。",
        "apihelp-opensearch-param-warningsaserror": "如果警告通过<kbd>format=json</kbd>提升,返回一个API错误而不是忽略它们。",
        "apihelp-opensearch-example-te": "查找以<kbd>Te</kbd>开头的页面。",
-       "apihelp-options-description": "更改当前用户的偏好设置。\n\n只有注册在核心或者已安装扩展中的选项,或者具有\"userjs-\"键值前缀(旨在被用户脚本使用)的选项可被设置。",
+       "apihelp-options-description": "更改当前用户的偏好设置。\n\n只有注册在核心或者已安装扩展中的选项,或者具有<code>userjs-</code>键值前缀(旨在被用户脚本使用)的选项可被设置。",
        "apihelp-options-param-reset": "重置偏好设置到网站默认设置。",
        "apihelp-options-param-resetkinds": "当<var>$1reset</var>选项被设置时,要重置的选项类型列表。",
        "apihelp-options-param-change": "更改列表,以name=value格式化(例如skin=vector)。值不能包含管道字符。如果没提供值(甚至没有等号),例如optionname|otheroption|...,选项将重置为默认值。",
        "apihelp-options-param-optionname": "应设置为由<var>$1optionvalue</var>提供值的选项名称。",
-       "apihelp-options-param-optionvalue": "使用<var>$1选项名</var>指定的选项值中,可以包含管道字符。",
+       "apihelp-options-param-optionvalue": "用于由<var>$1optionname</var>指定的选项的值,可以包含管道字符。",
        "apihelp-options-example-reset": "重置所有用户设置。",
        "apihelp-options-example-change": "更改<kbd>skin</kbd>和<kbd>hideminor</kbd>设置。",
        "apihelp-options-example-complex": "重置所有设置,然后设置<kbd>skin</kbd>和<kbd>nickname</kbd>。",
        "apihelp-parse-paramvalue-prop-modules": "提供在页面中使用的ResourceLoader模块。无论<kbd>jsconfigvars</kbd>还是<kbd>encodedjsconfigvars</kbd>都必须与<kbd>modules</kbd>共同被请求。",
        "apihelp-parse-paramvalue-prop-jsconfigvars": "针对页面提供JavaScript配置变量。",
        "apihelp-parse-paramvalue-prop-encodedjsconfigvars": "针对页面提供JavaScript配置变量为一个JSON字符串。",
+       "apihelp-parse-paramvalue-prop-indicators": "提供页面上使用的页面状态指示器的HTML。",
        "apihelp-parse-paramvalue-prop-iwlinks": "在被解析的wiki文本中提供跨wiki链接。",
        "apihelp-parse-paramvalue-prop-wikitext": "提供被解析的原始wiki文本。",
        "apihelp-parse-paramvalue-prop-limitreportdata": "以结构化的方式提供限制报告。如果<var>$1disablepp</var>被设定则不提供数据。",
        "apihelp-query+allusers-param-group": "只包含指定组中的用户。",
        "apihelp-query+allusers-param-excludegroup": "排除指定组中的用户。",
        "apihelp-query+allusers-param-rights": "仅列出有所选权限的用户。不包括隐性的或自动加入的用户组别(如*、用户或自动确认用户)所授予的权限。",
-       "apihelp-query+allusers-param-prop": "要包含的信息束:\n;blockinfo:添加有关用户当前封禁的信息。\n;groups:列举用户所在的组。这使用更多服务器资源,并可能返回少于限制的结果。\n;implicitgroups:Lists all the groups the user is automatically in.\n;rights:Lists rights that the user has.\n;editcount:Adds the edit count of the user.\n;registration:Adds the timestamp of when the user registered if available (may be blank).",
+       "apihelp-query+allusers-param-prop": "要包含的信息束:\n;blockinfo:添加有关用户当前封禁的信息。\n;groups:列举用户所在的组。这使用更多服务器资源,并可能返回少于限制的结果。\n;implicitgroups:列出用户自动属于的所有组。\n;rights:用户拥有的权限列表。\n;editcount:添加用户的编辑计数。\n;registration:如果可能,添加用户注册时的时间戳(可能为空白)。",
        "apihelp-query+allusers-param-limit": "返回的总计用户数。",
        "apihelp-query+allusers-param-witheditsonly": "只列出有编辑的用户。",
        "apihelp-query+allusers-param-activeusers": "只列出最近$1{{PLURAL:$1|天}}内活跃的用户。",
        "apihelp-query+backlinks-param-dir": "罗列所采用的方向。",
        "apihelp-query+backlinks-param-filterredir": "如何过滤重定向。当<var>$1redirect</var>被启用时如果设置为<kbd>nonredirects</kbd>,这只会应用到第二级。",
        "apihelp-query+backlinks-param-limit": "返回总计页面数。如果<var>$1redirect</var>被启用,则限定分别适用于每一等级(这意味着将返回多达2 * <var>$1limit</var>个结果)。",
+       "apihelp-query+backlinks-param-redirect": "如果链入页面是一个重定向,则寻找所有链接至此重定向的页面。最大限制减半。",
        "apihelp-query+backlinks-example-simple": "显示至<kbd>Main page<kbd>的链接。",
        "apihelp-query+backlinks-example-generator": "获取关于链接至<kbd>Main page<kbd>的页面的信息。",
        "apihelp-query+blocks-description": "列出所有被封禁的用户和IP地址。",
        "apihelp-query+deletedrevisions-param-excludeuser": "不要列出此用户做出的修订。",
        "apihelp-query+deletedrevisions-example-titles": "列出页面<kbd>Main Page</kbd>和<kbd>Talk:Main Page</kbd>的已删除修订,包含内容。",
        "apihelp-query+deletedrevisions-example-revids": "列出已删除修订<kbd>123456</kbd>的信息。",
-       "apihelp-query+deletedrevs-description": "列出被删除修订。\n\n操作于三种模式中:\n# 为指定标题列举已删除修订,按时间戳排列。\n# List deleted contributions for the given user, sorted by timestamp (no titles specified).\n# List all deleted revisions in the given namespace, sorted by title and timestamp (no titles specified, $1user not set).\n\nCertain parameters only apply to some modes and are ignored in others.",
+       "apihelp-query+deletedrevs-description": "列出被删除修订。\n\n操作于三种模式中:\n# 为指定标题列举已删除修订,按时间戳排列。\n# 为指定用户列举已删除贡献,按时间戳排列(未指定标题)。\n# 在指定名字空间中列举所有已删除修订,按标题和时间戳排列(无指定标题,未设置$1user)。\n\n任一参数只应用于一些模式,并忽略其他参数。",
        "apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|模式}}:$2",
        "apihelp-query+deletedrevs-param-start": "枚举的起始时间戳。",
        "apihelp-query+deletedrevs-param-end": "枚举的结束时间戳。",
        "apihelp-query+embeddedin-param-filterredir": "如何过滤重定向。",
        "apihelp-query+embeddedin-param-limit": "返回的总计页面数。",
        "apihelp-query+embeddedin-example-simple": "显示嵌入<kbd>Template:Stub</kbd>的页面。",
-       "apihelp-query+embeddedin-example-generator": "è\8e·å¾\97有关显示嵌入<kbd>Template:Stub</kbd>的页面的信息。",
+       "apihelp-query+embeddedin-example-generator": "è\8e·å\8f\96有关显示嵌入<kbd>Template:Stub</kbd>的页面的信息。",
        "apihelp-query+extlinks-description": "从指定页面返回所有外部URL(非跨wiki链接)。",
        "apihelp-query+extlinks-param-limit": "返回多少链接。",
        "apihelp-query+extlinks-param-protocol": "URL协议。如果为空并且<var>$1query</var>被设置,协议为<kbd>http</kbd>。将此和<var>$1query</var>都留空以列举所有外部链接。",
        "apihelp-query+exturlusage-param-query": "不包括协议的搜索字符串。参见[[Special:LinkSearch]]。留空以列出所有外部链接。",
        "apihelp-query+exturlusage-param-namespace": "要列举的页面名字空间。",
        "apihelp-query+exturlusage-param-limit": "返回多少页面。",
+       "apihelp-query+exturlusage-param-expandurl": "用标准协议展开协议相关URL。",
        "apihelp-query+exturlusage-example-simple": "显示链接至<kbd>http://www.mediawiki.org</kbd>的页面。",
        "apihelp-query+filearchive-description": "循序列举所有被删除的文件。",
        "apihelp-query+filearchive-param-from": "枚举的起始图片标题。",
        "apihelp-query+logevents-param-start": "枚举的起始时间戳。",
        "apihelp-query+logevents-param-end": "枚举的结束时间戳。",
        "apihelp-query+logevents-param-prefix": "过滤以此前缀开头的记录。",
+       "apihelp-query+logevents-param-tag": "只列举带此标签的事件日志记录。",
+       "apihelp-query+logevents-param-limit": "返回的事件日志记录总数。",
        "apihelp-query+logevents-example-simple": "列出最近日志活动。",
        "apihelp-query+pagepropnames-description": "列出wiki中所有使用中的页面属性名称。",
        "apihelp-query+pagepropnames-param-limit": "返回名称的最大数量。",
        "apihelp-query+pagepropnames-example-simple": "获取前10个属性名称。",
+       "apihelp-query+pageprops-description": "获取页面内容中定义的各种属性。",
+       "apihelp-query+pageprops-param-prop": "只列出这些组。在检查某一页面是否使用某一个页面属性时有用。",
        "apihelp-query+pageprops-example-simple": "获取用于页面<kbd>Main Page</kbd>和<kbd>MediaWiki</kbd>的属性。",
        "apihelp-query+pageswithprop-description": "列出所有使用指定页面属性的页面。",
+       "apihelp-query+pageswithprop-param-propname": "要用于列举页面的页面属性。",
        "apihelp-query+pageswithprop-param-prop": "要包含的信息束:\n;ids:添加页面ID。\n;title:添加页面的标题和名字空间ID。\n;value:添加页面属性值。",
        "apihelp-query+pageswithprop-param-limit": "返回页面的最大数量。",
        "apihelp-query+pageswithprop-param-dir": "排序的方向。",
        "apihelp-query+prefixsearch-param-limit": "要返回的结果最大数。",
        "apihelp-query+prefixsearch-param-offset": "跳过的结果数。",
        "apihelp-query+prefixsearch-example-simple": "搜索以<kbd>meaning</kbd>开头的页面标题。",
+       "apihelp-query+protectedtitles-description": "列出所有被限制创建的标题。",
        "apihelp-query+protectedtitles-param-namespace": "只列出这些名字空间的标题。",
+       "apihelp-query+protectedtitles-param-level": "只列出带这些保护级别的标题。",
        "apihelp-query+protectedtitles-param-limit": "返回的总计页面数。",
        "apihelp-query+protectedtitles-example-simple": "受保护标题列表。",
        "apihelp-query+protectedtitles-example-generator": "找到主命名空间中已保护的标题的链接。",
        "apihelp-query+recentchanges-description": "枚举最近更改。",
        "apihelp-query+recentchanges-param-start": "枚举的起始时间戳。",
        "apihelp-query+recentchanges-param-end": "枚举的结束时间戳。",
+       "apihelp-query+recentchanges-param-namespace": "过滤更改为仅限这些名字空间。",
        "apihelp-query+recentchanges-param-user": "只列出此用户的更改。",
        "apihelp-query+recentchanges-param-excludeuser": "不要列出此用户的更改。",
        "apihelp-query+recentchanges-param-tag": "只列出带此标签的更改。",
+       "apihelp-query+recentchanges-param-prop": "包含的额外信息束:\n;user:Adds the user responsible for the edit and tags if they are an IP.\n;userid:Adds the user ID responsible for the edit.\n;comment:Adds the comment for the edit.\n;parsedcomment:Adds the parsed comment for the edit.\n;flags:为编辑添加标记。\n;timestamp:添加编辑的时间戳。\n;title:添加编辑的页面标题。\n;ids:添加页面ID、最近更改ID和新旧修订的ID。\n;sizes:Adds the new and old page length in bytes.\n;redirect:Tags edit if page is a redirect.\n;patrolled:Tags patrollable edits as being patrolled or unpatrolled.\n;loginfo:Adds log information (log ID, log type, etc) to log entries.\n;tags:Lists tags for the entry.\n;sha1:Adds the content checksum for entries associated with a revision.",
        "apihelp-query+recentchanges-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+recentchanges-param-limit": "返回总计更新数。",
        "apihelp-query+recentchanges-param-type": "显示的更改类型。",
        "apihelp-query+recentchanges-example-simple": "最近更改列表。",
+       "apihelp-query+recentchanges-example-generator": "获取有关最近未巡查更改的页面信息。",
        "apihelp-query+redirects-description": "返回至指定页面的所有重定向。",
        "apihelp-query+redirects-param-namespace": "只包含这些名字空间的页面。",
        "apihelp-query+redirects-param-limit": "返回多少重定向。",
        "apihelp-query+users-param-prop": "要包含的信息束:\n;blockinfo:如果用户被封禁就标记,并注明是谁封禁,以何种原因封禁的。\n;groups:列举每位用户属于的所有组。\n;implicitgroups:Lists all the groups a user is automatically a member of.\n;rights:Lists all the rights each user has.\n;editcount:Adds the user's edit count.\n;registration:Adds the user's registration timestamp.\n;emailable:Tags if the user can and wants to receive email through [[Special:Emailuser]].\n;gender:Tags the gender of the user. Returns \"male\", \"female\", or \"unknown\".",
        "apihelp-query+users-param-token": "请改用<kbd>[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]</kbd>。",
        "apihelp-query+users-example-simple": "返回用户<kbd>Example</kbd>的信息。",
+       "apihelp-query+watchlist-description": "在当前用户的监视列表中获取对页面的最近更改。",
        "apihelp-query+watchlist-param-start": "枚举的起始时间戳。",
        "apihelp-query+watchlist-param-end": "枚举的结束时间戳。",
        "apihelp-query+watchlist-param-user": "只列出此用户的更改。",
        "apihelp-query+watchlist-paramvalue-prop-sizes": "添加页面的旧有长度和新长度。",
        "apihelp-query+watchlist-paramvalue-prop-notificationtimestamp": "添加最近被通知有关编辑的用户的时间戳。",
        "apihelp-query+watchlist-paramvalue-prop-loginfo": "在适当位置添加日志信息。",
-       "apihelp-query+watchlist-param-type": "要显示的更改类型:\n;edit:定期页面编辑。\n;external:外部更改。\n;new:页面创建。\n;log:日志记录。",
+       "apihelp-query+watchlist-param-type": "要显示的更改类型:\n;edit:定期页面编辑。\n;external:外部更改。\n;new:页面创建。\n;log:日志记录。\n;categorize:分类成员更改。",
        "apihelp-query+watchlist-param-token": "允许访问其他用户监视列表的安全密钥(可通过用户的[[Special:Preferences#mw-prefsection-watchlist|参数设置]]找到)。",
+       "apihelp-query+watchlist-example-simple": "在当前用户的监视列表中列出用于最近更改页面的最新修订。",
+       "apihelp-query+watchlist-example-props": "在当前用户的监视列表中检索有关用于最近更改页面的最新修订的额外信息。",
+       "apihelp-query+watchlist-example-allrev": "在当前用户的监视列表中检索有关所有最近对页面的更改的信息。",
        "apihelp-query+watchlist-example-generator": "在当前用户的监视列表中检索用于最近更改页面的页面信息。",
+       "apihelp-query+watchlist-example-generator-rev": "在当前用户的监视列表中检索用于对页面最近更改的修订信息。",
+       "apihelp-query+watchlist-example-wlowner": "在用户<kbd>Example</kbd>的监视列表中列出用于最近更改页面的最新修订。",
        "apihelp-query+watchlistraw-description": "获得当前用户的监视列表上的所有页面。",
        "apihelp-query+watchlistraw-param-namespace": "只列出指定名字空间的页面。",
        "apihelp-query+watchlistraw-param-limit": "根据结果返回的结果总数。",
        "apihelp-query+watchlistraw-param-totitle": "要列举的最终标题(带名字空间前缀)。",
        "apihelp-query+watchlistraw-example-simple": "列出当前用户的监视列表中的页面。",
        "apihelp-revisiondelete-description": "删除和恢复修订版本。",
+       "apihelp-revisiondelete-param-ids": "用于将被删除的修订的标识符。",
        "apihelp-revisiondelete-param-hide": "每次修订要隐藏的东西。",
        "apihelp-revisiondelete-param-show": "每次修订要恢复显示的东西。",
        "apihelp-revisiondelete-param-reason": "删除或恢复的原因。",
        "apihelp-rollback-example-summary": "回退由IP用户<kbd>192.0.2.5</kbd>对页面<kbd>Main Page</kbd>做出的最近编辑,带编辑摘要<kbd>Reverting vandalism</kbd>,并将这些编辑和回退标记为机器人编辑。",
        "apihelp-rsd-description": "导出一个RSD(Really Simple Discovery)架构。",
        "apihelp-rsd-example-simple": "导出RSD架构。",
-       "apihelp-setnotificationtimestamp-description": "更新用于监视页面的通知时间戳。\n\n这会影响监视列表和历史中已更改页面的高亮度,并且如果“当我的监视列表中的页面被更改时发送电子邮件通知我”的设置被启用的话,也会影响电子邮件的发送。",
+       "apihelp-setnotificationtimestamp-description": "更新用于监视页面的通知时间戳。\n\n这会影响监视列表和历史中已更改页面的高亮度,并且如果“{{int:tog-enotifwatchlistpages}}”设置被启用的话,也会影响电子邮件的发送。",
        "apihelp-setnotificationtimestamp-param-entirewatchlist": "工作于所有已监视页面。",
        "apihelp-setnotificationtimestamp-param-timestamp": "要设置通知时间戳的时间戳。",
        "apihelp-setnotificationtimestamp-param-torevid": "要设置通知时间戳的修订(只限一个页面)。",
        "apihelp-tag-param-add": "要添加的标签。只有手动定义的标签可以添加。",
        "apihelp-tag-param-remove": "要移除的标签。只有手动定义或完全不明确的标签可以被移除。",
        "apihelp-tag-param-reason": "更改原因。",
-       "apihelp-tag-example-rev": "从修订ID 123添加<kbd>vandalism</kbd>标签,而不指定原因",
+       "apihelp-tag-example-rev": "将<kbd>vandalism</kbd>标签添加至修订ID 123,而不指定原因",
        "apihelp-tag-example-log": "从日志记录ID 123移除<kbd>spam</kbd>标签,原因为<kbd>Wrongly applied</kbd>",
        "apihelp-tokens-description": "获取可修改数据的操作的令牌。\n\n此模块被弃用以有利于[[Special:ApiHelp/query+tokens|action=query&meta=tokens]]。",
        "apihelp-tokens-param-type": "要请求的令牌类型。",
        "apihelp-undelete-param-fileids": "要恢复的文件修订ID。如果<var>$1timestamps</var>和<var>$1fileids</var>都为空,所有将被恢复。",
        "apihelp-undelete-example-page": "恢复页面<kbd>Main Page</kbd>。",
        "apihelp-undelete-example-revisions": "恢复<kbd>Main Page</kbd>的两个修订。",
+       "apihelp-upload-description": "上传一个文件,或获取正在等待中的上传的状态。\n\n可以使用的几种方法:\n* 直接上传文件内容,使用<var>$1file</var>参数。\n* 成批上传文件,使用<var>$1filesize</var>、<var>$1chunk</var>和<var>$1offset</var>参数。\n* 有MediaWiki服务器从URL检索一个文件,使用<var>$1url</var>参数。\n* Complete an earlier upload that failed due to warnings, using the <var>$1filekey</var> parameter.\nNote that the HTTP POST must be done as a file upload (i.e. using <code>multipart/form-data</code>) when sending the <var>$1file</var>.",
        "apihelp-upload-param-filename": "目标文件名。",
        "apihelp-upload-param-comment": "上传注释。如果没有指定<var>$1text</var>,那么它也被用于新文件的初始页面文本。",
        "apihelp-upload-param-watch": "监视页面。",
        "apihelp-upload-param-watchlist": "无条件地将页面加入至当前用户的监视列表或将其移除,使用设置或不更改监视。",
        "apihelp-upload-param-ignorewarnings": "忽略任何警告。",
        "apihelp-upload-param-file": "文件内容。",
+       "apihelp-upload-param-url": "要检索文件来源的URL。",
        "apihelp-upload-param-stash": "如果设置,服务器将临时藏匿文件而不是加入存储库。",
        "apihelp-upload-param-filesize": "全部上传的文件大小。",
        "apihelp-upload-param-offset": "块的偏移量(字节)。",
        "apihelp-upload-param-chunk": "大块内容。",
+       "apihelp-upload-param-leavemessage": "如果asyncdownload被使用,当完成时,在用户讨论页留下一条消息。",
        "apihelp-upload-example-url": "从URL上传。",
        "apihelp-upload-example-filekey": "完成一次由于警告而失败的上传。",
        "apihelp-userrights-description": "更改一位用户的组成员。",
index e8cc5e5..56c9256 100644 (file)
 class LinkCache {
        // Increment $mClassVer whenever old serialized versions of this class
        // becomes incompatible with the new version.
-       private $mClassVer = 4;
+       private $mClassVer = 5;
 
-       private $mGoodLinks = array();
-       private $mGoodLinkFields = array();
-       private $mBadLinks = array();
+       /**
+        * @var MapCacheLRU
+        */
+       private $mGoodLinks;
+       /**
+        * @var MapCacheLRU
+        */
+       private $mBadLinks;
        private $mForUpdate = false;
 
+       /**
+        * How many Titles to store. There are two caches, so the amount actually
+        * stored in memory can be up to twice this.
+        */
+       const MAX_SIZE = 10000;
+
        /**
         * @var LinkCache
         */
        protected static $instance;
 
+       public function __construct() {
+               $this->mGoodLinks = new MapCacheLRU( self::MAX_SIZE );
+               $this->mBadLinks = new MapCacheLRU( self::MAX_SIZE );
+       }
+
        /**
         * Get an instance of this class.
         *
@@ -90,8 +106,9 @@ class LinkCache {
         * @return int
         */
        public function getGoodLinkID( $title ) {
-               if ( array_key_exists( $title, $this->mGoodLinks ) ) {
-                       return $this->mGoodLinks[$title];
+               if ( $this->mGoodLinks->has( $title ) ) {
+                       $info = $this->mGoodLinks->get( $title );
+                       return $info['id'];
                } else {
                        return 0;
                }
@@ -106,8 +123,9 @@ class LinkCache {
         */
        public function getGoodLinkFieldObj( $title, $field ) {
                $dbkey = $title->getPrefixedDBkey();
-               if ( array_key_exists( $dbkey, $this->mGoodLinkFields ) ) {
-                       return $this->mGoodLinkFields[$dbkey][$field];
+               if ( $this->mGoodLinks->has( $dbkey ) ) {
+                       $info = $this->mGoodLinks->get( $dbkey );
+                       return $info[$field];
                } else {
                        return null;
                }
@@ -118,7 +136,8 @@ class LinkCache {
         * @return bool
         */
        public function isBadLink( $title ) {
-               return array_key_exists( $title, $this->mBadLinks );
+               // We need to use get here since has will not call ping.
+               return $this->mBadLinks->get( $title ) !== null;
        }
 
        /**
@@ -135,13 +154,13 @@ class LinkCache {
                $revision = 0, $model = null
        ) {
                $dbkey = $title->getPrefixedDBkey();
-               $this->mGoodLinks[$dbkey] = (int)$id;
-               $this->mGoodLinkFields[$dbkey] = array(
+               $this->mGoodLinks->set( $dbkey, array(
+                       'id' => (int)$id,
                        'length' => (int)$len,
                        'redirect' => (int)$redir,
                        'revision' => (int)$revision,
                        'model' => $model ? (string)$model : null,
-               );
+               ) );
        }
 
        /**
@@ -153,13 +172,13 @@ class LinkCache {
         */
        public function addGoodLinkObjFromRow( $title, $row ) {
                $dbkey = $title->getPrefixedDBkey();
-               $this->mGoodLinks[$dbkey] = intval( $row->page_id );
-               $this->mGoodLinkFields[$dbkey] = array(
+               $this->mGoodLinks->set( $dbkey, array(
+                       'id' => intval( $row->page_id ),
                        'length' => intval( $row->page_len ),
                        'redirect' => intval( $row->page_is_redirect ),
                        'revision' => intval( $row->page_latest ),
                        'model' => !empty( $row->page_content_model ) ? strval( $row->page_content_model ) : null,
-               );
+               ) );
        }
 
        /**
@@ -168,12 +187,12 @@ class LinkCache {
        public function addBadLinkObj( $title ) {
                $dbkey = $title->getPrefixedDBkey();
                if ( !$this->isBadLink( $dbkey ) ) {
-                       $this->mBadLinks[$dbkey] = 1;
+                       $this->mBadLinks->set( $dbkey, 1 );
                }
        }
 
        public function clearBadLink( $title ) {
-               unset( $this->mBadLinks[$title] );
+               $this->mBadLinks->clear( array( $title ) );
        }
 
        /**
@@ -181,17 +200,33 @@ class LinkCache {
         */
        public function clearLink( $title ) {
                $dbkey = $title->getPrefixedDBkey();
-               unset( $this->mBadLinks[$dbkey] );
-               unset( $this->mGoodLinks[$dbkey] );
-               unset( $this->mGoodLinkFields[$dbkey] );
+               $this->mBadLinks->clear( array( $dbkey ) );
+               $this->mGoodLinks->clear( array( $dbkey ) );
        }
 
+
+       /**
+        * @deprecated since 1.26
+        * @return array
+        */
        public function getGoodLinks() {
-               return $this->mGoodLinks;
+               wfDeprecated( __METHOD__, '1.26' );
+               $links = array();
+               foreach ( $this->mGoodLinks->getAllKeys() as $key ) {
+                       $info = $this->mGoodLinks->get( $key );
+                       $links[$key] = $info['id'];
+               }
+
+               return $links;
        }
 
+       /**
+        * @deprecated since 1.26
+        * @return array
+        */
        public function getBadLinks() {
-               return array_keys( $this->mBadLinks );
+               wfDeprecated( __METHOD__, '1.26' );
+               return $this->mBadLinks->getAllKeys();
        }
 
        /**
@@ -262,8 +297,7 @@ class LinkCache {
         * Clears cache
         */
        public function clear() {
-               $this->mGoodLinks = array();
-               $this->mGoodLinkFields = array();
-               $this->mBadLinks = array();
+               $this->mGoodLinks->clear();
+               $this->mBadLinks->clear();
        }
 }
index 67a7461..7945c8b 100644 (file)
@@ -25,7 +25,7 @@
  * MediaWiki message cache structure version.
  * Bump this whenever the message cache format has changed.
  */
-define( 'MSG_CACHE_VERSION', 1 );
+define( 'MSG_CACHE_VERSION', 2 );
 
 /**
  * Memcached timeout when loading a key.
@@ -58,6 +58,7 @@ class MessageCache {
         * second level is message key and the values are either message
         * content prefixed with space, or !NONEXISTENT for negative
         * caching.
+        * @var array $mCache
         */
        protected $mCache;
 
@@ -154,6 +155,8 @@ class MessageCache {
         * @param int $expiry Lifetime for cache. @see $mExpiry.
         */
        function __construct( $memCached, $useDB, $expiry ) {
+               global $wgUseLocalMessageCache;
+
                if ( !$memCached ) {
                        $memCached = wfGetCache( CACHE_NONE );
                }
@@ -162,6 +165,12 @@ class MessageCache {
                $this->mDisable = !$useDB;
                $this->mExpiry = $expiry;
 
+               if ( $wgUseLocalMessageCache ) {
+                       $this->localCache = ObjectCache::newAccelerator( array(), CACHE_NONE );
+               } else {
+                       $this->localCache = wfGetCache( CACHE_NONE );
+               }
+
                $this->wanCache = ObjectCache::getMainWANInstance();
        }
 
@@ -180,70 +189,25 @@ class MessageCache {
        }
 
        /**
-        * Try to load the cache from a local file.
+        * Try to load the cache from APC.
         *
-        * @param string $hash The hash of contents, to check validity.
         * @param string $code Optional language code, see documenation of load().
-        * @return array The cache array
+        * @return array|bool The cache array, or false if not in cache.
         */
-       function getLocalCache( $hash, $code ) {
-               global $wgCacheDirectory;
-
-               $filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
-
-               # Check file existence
-               MediaWiki\suppressWarnings();
-               $file = fopen( $filename, 'r' );
-               MediaWiki\restoreWarnings();
-               if ( !$file ) {
-                       return false; // No cache file
-               }
-
-               // Check to see if the file has the hash specified
-               $localHash = fread( $file, 32 );
-               if ( $hash === $localHash ) {
-                       // All good, get the rest of it
-                       $serialized = '';
-                       while ( !feof( $file ) ) {
-                               $serialized .= fread( $file, 100000 );
-                       }
-                       fclose( $file );
-
-                       return unserialize( $serialized );
-               } else {
-                       fclose( $file );
-
-                       return false; // Wrong hash
-               }
+       protected function getLocalCache( $code ) {
+               $cacheKey = wfMemcKey( __CLASS__, $code );
+               return $this->localCache->get( $cacheKey );
        }
 
        /**
-        * Save the cache to a local file.
-        * @param string $serialized
-        * @param string $hash
+        * Save the cache to APC.
+        *
         * @param string $code
+        * @param array $cache The cache array
         */
-       function saveToLocal( $serialized, $hash, $code ) {
-               global $wgCacheDirectory;
-
-               $filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
-               wfMkdirParents( $wgCacheDirectory, null, __METHOD__ ); // might fail
-
-               MediaWiki\suppressWarnings();
-               $file = fopen( $filename, 'w' );
-               MediaWiki\restoreWarnings();
-
-               if ( !$file ) {
-                       wfDebug( "Unable to open local cache file for writing\n" );
-
-                       return;
-               }
-
-               fwrite( $file, $hash . $serialized );
-               fclose( $file );
-               MediaWiki\suppressWarnings();
-               chmod( $filename, 0666 );
-               MediaWiki\restoreWarnings();
+       protected function saveToLocalCache( $code, $cache ) {
+               $cacheKey = wfMemcKey( __CLASS__, $code );
+               $this->localCache->set( $cacheKey, $cache );
        }
 
        /**
@@ -296,29 +260,30 @@ class MessageCache {
                # Loading code starts
                $success = false; # Keep track of success
                $staleCache = false; # a cache array with expired data, or false if none has been loaded
-               $hashExpired = false; # whether the cluster-local validation hash is stale
                $where = array(); # Debug info, delayed to avoid spamming debug log too much
 
-               # Local cache
-               # Hash of the contents is stored in memcache, to detect if local cache goes
-               # out of date (e.g. due to replace() on some other server)
-               if ( $wgUseLocalMessageCache ) {
-                       list( $hash, $hashExpired ) = $this->getValidationHash( $code );
-                       if ( $hash ) {
-                               $cache = $this->getLocalCache( $hash, $code );
-                               if ( !$cache ) {
-                                       $where[] = 'local cache is empty or has the wrong hash';
-                               } elseif ( $this->isCacheExpired( $cache ) ) {
-                                       $where[] = 'local cache is expired';
-                                       $staleCache = $cache;
-                               } elseif ( $hashExpired ) {
-                                       $where[] = 'local cache validation key is expired';
-                                       $staleCache = $cache;
-                               } else {
-                                       $where[] = 'got from local cache';
-                                       $success = true;
-                                       $this->mCache[$code] = $cache;
-                               }
+               # Hash of the contents is stored in memcache, to detect if data-center cache
+               # or local cache goes out of date (e.g. due to replace() on some other server)
+               list( $hash, $hashVolatile ) = $this->getValidationHash( $code );
+
+               if ( $wgUseLocalMessageCache && $hash ) {
+                       # Try the local cache and check against the cluster hash key...
+                       $cache = $this->getLocalCache( $code );
+                       if ( !$cache ) {
+                               $where[] = 'local cache is empty';
+                       } elseif ( !isset( $cache['HASH'] ) || $cache['HASH'] !== $hash ) {
+                               $where[] = 'local cache has the wrong hash';
+                               $staleCache = $cache;
+                       } elseif ( $this->isCacheExpired( $cache ) ) {
+                               $where[] = 'local cache is expired';
+                               $staleCache = $cache;
+                       } elseif ( $hashVolatile ) {
+                               $where[] = 'local cache validation key is expired/volatile';
+                               $staleCache = $cache;
+                       } else {
+                               $where[] = 'got from local cache';
+                               $success = true;
+                               $this->mCache[$code] = $cache;
                        }
                }
 
@@ -328,7 +293,7 @@ class MessageCache {
                        # the lock can't be acquired, wait for the other thread to finish
                        # and then try the global cache a second time.
                        for ( $failedAttempts = 0; $failedAttempts < 2; $failedAttempts++ ) {
-                               if ( $hashExpired && $staleCache ) {
+                               if ( $hashVolatile && $staleCache ) {
                                        # Do not bother fetching the whole cache blob to avoid I/O.
                                        # Instead, just try to get the non-blocking $statusKey lock
                                        # below, and use the local stale value if it was not acquired.
@@ -340,6 +305,12 @@ class MessageCache {
                                        } elseif ( $this->isCacheExpired( $cache ) ) {
                                                $where[] = 'global cache is expired';
                                                $staleCache = $cache;
+                                       } elseif ( $hashVolatile ) {
+                                               # DB results are slave lag prone until the holdoff TTL passes.
+                                               # By then, updates should be reflected in loadFromDBWithLock().
+                                               # One thread renerates the cache while others use old values.
+                                               $where[] = 'global cache is expired/volatile';
+                                               $staleCache = $cache;
                                        } else {
                                                $where[] = 'got from global cache';
                                                $this->mCache[$code] = $cache;
@@ -355,8 +326,8 @@ class MessageCache {
 
                                # We need to call loadFromDB. Limit the concurrency to one process.
                                # This prevents the site from going down when the cache expires.
+                               # Note that the slam-protection lock here is non-blocking.
                                if ( $this->loadFromDBWithLock( $code, $where ) ) {
-                                       # Load from DB complete, no need to retry
                                        $success = true;
                                        break;
                                } elseif ( $staleCache ) {
@@ -559,6 +530,8 @@ class MessageCache {
                }
 
                $cache['VERSION'] = MSG_CACHE_VERSION;
+               ksort( $cache );
+               $cache['HASH'] = md5( serialize( $cache ) );
                $cache['EXPIRY'] = wfTimestamp( TS_MW, time() + $this->mExpiry );
 
                return $cache;
@@ -666,12 +639,11 @@ class MessageCache {
                        $success = true;
                }
 
+               $this->setValidationHash( $code, $cache['HASH'] );
+
                # Save to local cache
                if ( $wgUseLocalMessageCache ) {
-                       $serialized = serialize( $cache );
-                       $hash = md5( $serialized );
-                       $this->setValidationHash( $code, $hash );
-                       $this->saveToLocal( $serialized, $hash, $code );
+                       $this->saveToLocalCache( $code, $cache );
                }
 
                return $success;
@@ -681,7 +653,7 @@ class MessageCache {
         * Get the md5 used to validate the local disk cache
         *
         * @param string $code
-        * @return array (hash or false, bool expiry status)
+        * @return array (hash or false, bool expiry/volatility status)
         */
        protected function getValidationHash( $code ) {
                $curTTL = null;
diff --git a/includes/changes/CategoryMembershipChange.php b/includes/changes/CategoryMembershipChange.php
new file mode 100644 (file)
index 0000000..8bc4cf5
--- /dev/null
@@ -0,0 +1,205 @@
+<?php
+/**
+ * Helper class for category membership changes
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Kai Nissen
+ * @since 1.26
+ */
+
+class CategoryMembershipChange {
+
+       const CATEGORY_ADDITION = 1;
+       const CATEGORY_REMOVAL = -1;
+
+       /** @var string Current timestamp, set during CategoryMembershipChange::__construct() */
+       private $timestamp;
+
+       /** @var Title Title instance of the categorized page */
+       private $pageTitle;
+
+       /** @var WikiPage WikiPage instance of the categorized page */
+       private $page;
+
+       /** @var Revision Latest Revision instance of the categorized page */
+       private $revision;
+
+       /**
+        * @var int
+        * Number of pages this WikiPage is embedded by; set by CategoryMembershipChange::setRecursive()
+        */
+       private $numTemplateLinks = 0;
+
+       /**
+        * @var User
+        * instance of the user that created CategoryMembershipChange::$revision
+        */
+       private $user;
+
+       /**
+        * @var null|RecentChange
+        * RecentChange that is referred to in CategoryMembershipChange::$revision
+        */
+       private $correspondingRC;
+
+       /**
+        * @param Title $pageTitle Title instance of the categorized page
+        * @param Revision $revision Latest Revision instance of the categorized page
+        * @throws MWException
+        */
+       public function __construct( Title $pageTitle, Revision $revision = null ) {
+               $this->pageTitle = $pageTitle;
+               $this->page = WikiPage::factory( $pageTitle );
+               $this->timestamp = wfTimestampNow();
+
+               # if no revision is given, the change was probably triggered by parser functions
+               if ( $revision ) {
+                       $this->revision = $revision;
+                       $this->correspondingRC = $this->revision->getRecentChange();
+                       $this->user = $this->getRevisionUser();
+               } else {
+                       $this->user = User::newFromId( 0 );
+               }
+       }
+
+       /**
+        * Determines the number of template links for recursive link updates
+        */
+       public function setRecursive() {
+               $this->numTemplateLinks = $this->pageTitle->getBacklinkCache()->getNumLinks( 'templatelinks' );
+       }
+
+       /**
+        * Create a recentchanges entry for category additions
+        * @param string $categoryName
+        */
+       public function pageAddedToCategory( $categoryName ) {
+               $this->createRecentChangesEntry( $categoryName, self::CATEGORY_ADDITION );
+       }
+
+       /**
+        * Create a recentchanges entry for category removals
+        * @param string $categoryName
+        */
+       public function pageRemovedFromCategory( $categoryName ) {
+               $this->createRecentChangesEntry( $categoryName, self::CATEGORY_REMOVAL );
+       }
+
+       /**
+        * Create a recentchanges entry using RecentChange::notifyCategorization()
+        * @param string $categoryName
+        * @param int $type
+        */
+       private function createRecentChangesEntry( $categoryName, $type ) {
+               $categoryTitle = Title::newFromText( $categoryName, NS_CATEGORY );
+               if ( !$categoryTitle ) {
+                       return;
+               }
+
+               $previousRevTimestamp = $this->getPreviousRevisionTimestamp();
+               $unpatrolled = $this->revision ? $this->revision->isUnpatrolled() : 0;
+
+               $lastRevId = 0;
+               $bot = 0;
+               $ip = '';
+               if ( $this->correspondingRC ) {
+                       $lastRevId = $this->correspondingRC->getAttribute( 'rc_last_oldid' ) ?: 0;
+                       $bot = $this->correspondingRC->getAttribute( 'rc_bot' ) ?: 0;
+                       $ip = $this->correspondingRC->getAttribute( 'rc_ip' ) ?: '';
+               }
+
+               RecentChange::notifyCategorization(
+                       $this->timestamp,
+                       $categoryTitle,
+                       $this->user,
+                       $this->getChangeMessage( $type, array(
+                               'prefixedUrl' => $this->page->getTitle()->getPrefixedURL(),
+                               'numTemplateLinks' => $this->numTemplateLinks
+                       ) ),
+                       $this->pageTitle,
+                       $lastRevId,
+                       $this->revision ? $this->revision->getId() : 0,
+                       $previousRevTimestamp,
+                       $bot,
+                       $ip,
+                       $unpatrolled ? 0 : 1,
+                       $this->revision ? $this->revision->getVisibility() & Revision::SUPPRESSED_USER : 0
+               );
+       }
+
+       /**
+        * Get the user who created the revision. may be an anonymous IP
+        * @return User
+        */
+       private function getRevisionUser() {
+               $userId = $this->revision->getUser( Revision::RAW );
+               if ( $userId === 0 ) {
+                       return User::newFromName( $this->revision->getUserText( Revision::RAW ), false );
+               } else {
+                       return User::newFromId( $userId );
+               }
+       }
+
+       /**
+        * Returns the change message according to the type of category membership change
+        *
+        * The message keys created in this method may be one of:
+        * - recentchanges-page-added-to-category
+        * - recentchanges-page-added-to-category-bundled
+        * - recentchanges-page-removed-from-category
+        * - recentchanges-page-removed-from-category-bundled
+        *
+        * @param int $type may be CategoryMembershipChange::CATEGORY_ADDITION
+        * or CategoryMembershipChange::CATEGORY_REMOVAL
+        * @param array $params
+        * - prefixedUrl: result of Title::->getPrefixedURL()
+        * - numTemplateLinks
+        * @return string
+        */
+       private function getChangeMessage( $type, array $params ) {
+               $msgKey = 'recentchanges-';
+
+               switch ( $type ) {
+                       case self::CATEGORY_ADDITION:
+                               $msgKey .= 'page-added-to-category';
+                               break;
+                       case self::CATEGORY_REMOVAL:
+                               $msgKey .= 'page-removed-from-category';
+                               break;
+               }
+
+               if ( intval( $params['numTemplateLinks'] ) > 0 ) {
+                       $msgKey .= '-bundled';
+               }
+
+               return wfMessage( $msgKey, $params )->inContentLanguage()->text();
+       }
+
+       /**
+        * Returns the timestamp of the page's previous revision or null if the latest revision
+        * does not refer to a parent revision
+        * @return null|string
+        */
+       private function getPreviousRevisionTimestamp() {
+               $latestRev = Revision::newFromId( $this->pageTitle->getLatestRevID() );
+               $previousRev = Revision::newFromId( $latestRev->getParentId() );
+
+               return $previousRev ? $previousRev->getTimestamp() : null;
+       }
+
+}
index fdc9944..249f53f 100644 (file)
@@ -456,6 +456,28 @@ class ChangesList extends ContextSource {
                }
        }
 
+       /**
+        * @param RCCacheEntry $rc
+        * @param array $query array of key/value pairs to append as a query string
+        * @return string
+        * @since 1.26
+        */
+       public function getDiffHistLinks( RCCacheEntry $rc, array $query ) {
+               $pageTitle = $rc->getTitle();
+               if ( intval( $rc->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE ) {
+                       $pageTitle = Title::newFromID( $rc->getAttribute( 'rc_cur_id' ) );
+               }
+
+               $retVal = ' ' . $this->msg( 'parentheses' )
+               ->rawParams( $rc->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
+                               $pageTitle,
+                               $this->message['hist'],
+                               array(),
+                               $query
+                       ) )->escaped();
+               return $retVal;
+       }
+
        /**
         * Check whether to enable recent changes patrol features
         *
@@ -630,4 +652,17 @@ class ChangesList extends ContextSource {
 
                return false;
        }
+
+       /**
+        * Determines whether a revision is linked to this change; this may not be the case
+        * when the categorization wasn't done by an edit but a conditional parser function
+        *
+        * @param RecentChange|RCCacheEntry $rcObj
+        * @return bool
+        */
+       protected function isCategorizationWithoutRevision( $rcObj ) {
+               return intval( $rcObj->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE
+               && intval( $rcObj->getAttribute( 'rc_this_oldid' ) ) === 0;
+       }
+
 }
index e5916bd..a1e9d28 100644 (file)
@@ -364,6 +364,8 @@ class EnhancedChangesList extends ChangesList {
 
                        if ( $rcObj->mAttribs['rc_type'] == RC_LOG ) {
                                $data['logEntry'] = $this->insertLogEntry( $rcObj );
+                       } elseif ( $this->isCategorizationWithoutRevision( $rcObj ) ) {
+                               $data['comment'] = $this->insertComment( $rcObj );
                        } else {
                                # User links
                                $data['userLink'] = $rcObj->userlink;
@@ -566,15 +568,9 @@ class EnhancedChangesList extends ChangesList {
                }
 
                # Diff and hist links
-               if ( $type != RC_LOG ) {
+               if ( intval( $type ) !== RC_LOG && intval( $type ) !== RC_CATEGORIZE ) {
                        $query['action'] = 'history';
-                       $data['historyLink'] = ' ' . $this->msg( 'parentheses' )
-                               ->rawParams( $rcObj->difflink . $this->message['pipe-separator'] . Linker::linkKnown(
-                                       $rcObj->getTitle(),
-                                       $this->message['hist'],
-                                       array(),
-                                       $query
-                               ) )->escaped();
+                       $data['historyLink'] = $this->getDiffHistLinks( $rcObj, $query );
                }
                $data['separatorAfterLinks'] = ' <span class="mw-changeslist-separator">. .</span> ';
 
@@ -589,10 +585,15 @@ class EnhancedChangesList extends ChangesList {
 
                if ( $type == RC_LOG ) {
                        $data['logEntry'] = $this->insertLogEntry( $rcObj );
+               } elseif ( $this->isCategorizationWithoutRevision( $rcObj ) ) {
+                       $data['comment'] = $this->insertComment( $rcObj );
                } else {
                        $data['userLink'] = $rcObj->userlink;
                        $data['userTalkLink'] = $rcObj->usertalklink;
                        $data['comment'] = $this->insertComment( $rcObj );
+                       if ( intval( $type ) === RC_CATEGORIZE ) {
+                               $data['historyLink'] = $this->getDiffHistLinks( $rcObj, $query );
+                       }
                        $data['rollback'] = $this->getRollback( $rcObj );
                }
 
index 4ce564d..1bd78ca 100644 (file)
@@ -88,7 +88,9 @@ class OldChangesList extends ChangesList {
                } else {
                        $unpatrolled = $this->showAsUnpatrolled( $rc );
 
-                       $this->insertDiffHist( $html, $rc, $unpatrolled );
+                       if ( !$this->isCategorizationWithoutRevision( $rc ) ) {
+                               $this->insertDiffHist( $html, $rc, $unpatrolled );
+                       }
                        # M, N, b and ! (minor, new, bot and unpatrolled)
                        $html .= $this->recentChangesFlags(
                                array(
@@ -113,6 +115,8 @@ class OldChangesList extends ChangesList {
 
                if ( $rc->mAttribs['rc_type'] == RC_LOG ) {
                        $html .= $this->insertLogEntry( $rc );
+               } elseif ( $this->isCategorizationWithoutRevision( $rc ) ) {
+                       $html .= $this->insertComment( $rc );
                } else {
                        # User tool links
                        $this->insertUserRelatedLinks( $html, $rc );
index c3fe183..e41f735 100644 (file)
@@ -209,6 +209,10 @@ class RCCacheEntryFactory {
                        $diffLink = $diffMessage;
                } elseif ( in_array( $cacheEntry->mAttribs['rc_type'], $logTypes ) ) {
                        $diffLink = $diffMessage;
+               } elseif ( intval( $cacheEntry->getAttribute( 'rc_type' ) ) === RC_CATEGORIZE ) {
+                       $pageTitle = Title::newFromID( $cacheEntry->getAttribute( 'rc_cur_id' ) );
+                       $diffUrl = htmlspecialchars( $pageTitle->getLinkURL( $queryParams ) );
+                       $diffLink = "<a href=\"$diffUrl\" tabindex=\"$counter\">$diffMessage</a>";
                } else {
                        $diffUrl = htmlspecialchars( $cacheEntry->getTitle()->getLinkURL( $queryParams ) );
                        $diffLink = "<a href=\"$diffUrl\" tabindex=\"$counter\">$diffMessage</a>";
index 77bf5df..9199e1f 100644 (file)
@@ -67,6 +67,7 @@ class RecentChange {
        const SRC_NEW = 'mw.new';
        const SRC_LOG = 'mw.log';
        const SRC_EXTERNAL = 'mw.external'; // obsolete
+       const SRC_CATEGORIZE = 'mw.categorize';
 
        public $mAttribs = array();
        public $mExtra = array();
@@ -89,6 +90,17 @@ class RecentChange {
         */
        public $counter = -1;
 
+       /**
+        * @var array Array of change types
+        */
+       private static $changeTypes = array(
+               'edit' => RC_EDIT,
+               'new' => RC_NEW,
+               'log' => RC_LOG,
+               'external' => RC_EXTERNAL,
+               'categorize' => RC_CATEGORIZE,
+       );
+
        # Factory methods
 
        /**
@@ -119,18 +131,10 @@ class RecentChange {
                        return $retval;
                }
 
-               switch ( $type ) {
-                       case 'edit':
-                               return RC_EDIT;
-                       case 'new':
-                               return RC_NEW;
-                       case 'log':
-                               return RC_LOG;
-                       case 'external':
-                               return RC_EXTERNAL;
-                       default:
-                               throw new MWException( "Unknown type '$type'" );
+               if ( !array_key_exists( $type, self::$changeTypes ) ) {
+                       throw new MWException( "Unknown type '$type'" );
                }
+               return self::$changeTypes[$type];
        }
 
        /**
@@ -140,24 +144,15 @@ class RecentChange {
         * @return string $type
         */
        public static function parseFromRCType( $rcType ) {
-               switch ( $rcType ) {
-                       case RC_EDIT:
-                               $type = 'edit';
-                               break;
-                       case RC_NEW:
-                               $type = 'new';
-                               break;
-                       case RC_LOG:
-                               $type = 'log';
-                               break;
-                       case RC_EXTERNAL:
-                               $type = 'external';
-                               break;
-                       default:
-                               $type = "$rcType";
-               }
+               return array_search( $rcType, self::$changeTypes, true ) ?: "$rcType";
+       }
 
-               return $type;
+       /**
+        * Get an array of all change types
+        * @return array
+        */
+       public static function getChangeTypes() {
+               return array_keys( self::$changeTypes );
        }
 
        /**
@@ -382,6 +377,13 @@ class RecentChange {
                        /** @var $formatter RCFeedFormatter */
                        $formatter = is_object( $feed['formatter'] ) ? $feed['formatter'] : new $feed['formatter']();
                        $line = $formatter->getLine( $feed, $this, $actionComment );
+                       if ( !$line ) {
+                               // T109544
+                               // If a feed formatter returns null, this will otherwise cause an
+                               // error in at least RedisPubSubFeedEngine.
+                               // Not sure where/how this should best be handled.
+                               continue;
+                       }
 
                        $engine->send( $feed, $line );
                }
@@ -746,6 +748,72 @@ class RecentChange {
                return $rc;
        }
 
+       /**
+        * Makes an entry in the database corresponding to a categorization
+        *
+        * @param string $timestamp Timestamp of the recent change to occur
+        * @param Title $categoryTitle Title of the category a page is being added to or removed from
+        * @param User $user User object of the user that made the change
+        * @param string $comment Change summary
+        * @param Title $pageTitle Title of the page that is being added or removed
+        * @param int $oldRevId Parent revision ID of this change
+        * @param int $newRevId Revision ID of this change
+        * @param string $lastTimestamp Parent revision timestamp of this change
+        * @param bool $bot true, if the change was made by a bot
+        * @param string $ip IP address of the user, if the change was made anonymously
+        * @param int $patrol Indicates whether the change is patrolled/unpatrolled
+        * @param int $deleted Indicates whether the change has been deleted
+        * @param array|null $params Additional parameters as explained on
+        * https://www.mediawiki.org/wiki/Manual:Logging_table#log_params
+        * @return RecentChange
+        * @throws MWException
+        * @since 1.26
+        */
+       public static function notifyCategorization( $timestamp, Title $categoryTitle, User $user = null,
+                       $comment, Title $pageTitle, $oldRevId, $newRevId, $lastTimestamp, $bot, $ip = '',
+                       $patrol = 0, $deleted = 0, $params = null ) {
+
+               $rc = new RecentChange;
+               $rc->mTitle = $categoryTitle;
+               $rc->mPerformer = $user;
+               $rc->mAttribs = array(
+                       'rc_timestamp' => $timestamp,
+                       'rc_namespace' => $categoryTitle->getNamespace(),
+                       'rc_title' => $categoryTitle->getDBkey(),
+                       'rc_type' => RC_CATEGORIZE,
+                       'rc_source' => self::SRC_CATEGORIZE,
+                       'rc_minor' => 0,
+                       'rc_cur_id' => $pageTitle->getArticleID(),
+                       'rc_user' => $user ? $user->getId() : 0,
+                       'rc_user_text' => $user ? $user->getName() : '',
+                       'rc_comment' => $comment,
+                       'rc_this_oldid' => $newRevId,
+                       'rc_last_oldid' => $oldRevId,
+                       'rc_bot' => $bot ? 1 : 0,
+                       'rc_ip' => self::checkIPAddress( $ip ),
+                       'rc_patrolled' => intval( $patrol ),
+                       'rc_new' => 0, # obsolete
+                       'rc_old_len' => 0,
+                       'rc_new_len' => 0,
+                       'rc_deleted' => $deleted,
+                       'rc_logid' => 0,
+                       'rc_log_type' => null,
+                       'rc_log_action' => '',
+                       'rc_params' => $params ? serialize( $params ) : ''
+               );
+
+               $rc->mExtra = array(
+                       'prefixedDBkey' => $categoryTitle->getPrefixedDBkey(),
+                       'lastTimestamp' => $lastTimestamp,
+                       'oldSize' => 0,
+                       'newSize' => 0,
+                       'pageStatus' => 'changed'
+               );
+               $rc->save();
+
+               return $rc;
+       }
+
        /**
         * Initialises the members of this object from a mysql row object
         *
index bf8386f..12f738f 100644 (file)
@@ -153,8 +153,10 @@ class ChangeTags {
         *
         * @since 1.25
         */
-       public static function updateTags( $tagsToAdd, $tagsToRemove, &$rc_id = null,
-               &$rev_id = null, &$log_id = null, $params = null ) {
+       public static function updateTags(
+               $tagsToAdd, $tagsToRemove,
+               &$rc_id = null, &$rev_id = null, &$log_id = null, $params = null
+       ) {
 
                $tagsToAdd = array_filter( (array)$tagsToAdd ); // Make sure we're submitting all tags...
                $tagsToRemove = array_filter( (array)$tagsToRemove );
@@ -169,18 +171,28 @@ class ChangeTags {
                // Might as well look for rcids and so on.
                if ( !$rc_id ) {
                        // Info might be out of date, somewhat fractionally, on slave.
+                       // LogEntry/LogPage and WikiPage match rev/log/rc timestamps,
+                       // so use that relation to avoid full table scans.
                        if ( $log_id ) {
                                $rc_id = $dbw->selectField(
-                                       'recentchanges',
+                                       array( 'logging', 'recentchanges' ),
                                        'rc_id',
-                                       array( 'rc_logid' => $log_id ),
+                                       array(
+                                               'log_id' => $log_id,
+                                               'rc_timestamp = log_timestamp',
+                                               'rc_logid = log_id'
+                                       ),
                                        __METHOD__
                                );
                        } elseif ( $rev_id ) {
                                $rc_id = $dbw->selectField(
-                                       'recentchanges',
+                                       array( 'revision', 'recentchanges' ),
                                        'rc_id',
-                                       array( 'rc_this_oldid' => $rev_id ),
+                                       array(
+                                               'rev_id' => $rev_id,
+                                               'rc_timestamp = rev_timestamp',
+                                               'rc_this_oldid = rev_id'
+                                       ),
                                        __METHOD__
                                );
                        }
index fe80695..4526ee3 100644 (file)
@@ -42,7 +42,8 @@ class ChangeTagsLogList extends ChangeTagsList {
                        $queryInfo['fields'],
                        $queryInfo['conds'],
                        $queryInfo['join_conds'],
-                       $queryInfo['options']
+                       $queryInfo['options'],
+                       ''
                );
                return $db->select(
                        $queryInfo['tables'],
index dc95727..117bd2d 100644 (file)
  * @author Aaron Schulz
  */
 
+use MediaWiki\Logger\LoggerFactory;
+use Psr\Log\LoggerAwareInterface;
+use Psr\Log\LoggerInterface;
+
 /**
  * Helper class to manage Redis connections.
  *
@@ -35,7 +39,7 @@
  * @ingroup Redis
  * @since 1.21
  */
-class RedisConnectionPool {
+class RedisConnectionPool implements LoggerAwareInterface {
        /**
         * @name Pool settings.
         * Settings there are shared for any connection made in this pool.
@@ -68,6 +72,11 @@ class RedisConnectionPool {
        /** integer; seconds to cache servers as "down". */
        const SERVER_DOWN_TTL = 30;
 
+       /**
+        * @var LoggerInterface
+        */
+       protected $logger;
+
        /**
         * @param array $options
         * @throws MWException
@@ -77,6 +86,11 @@ class RedisConnectionPool {
                        throw new MWException( __CLASS__ . ' requires a Redis client library. ' .
                                'See https://www.mediawiki.org/wiki/Redis#Setup' );
                }
+               if ( isset( $options['logger'] ) ) {
+                       $this->setLogger( $options['logger'] );
+               } else {
+                       $this->setLogger( LoggerFactory::getInstance( 'redis' ) );
+               }
                $this->connectTimeout = $options['connectTimeout'];
                $this->readTimeout = $options['readTimeout'];
                $this->persistent = $options['persistent'];
@@ -92,6 +106,14 @@ class RedisConnectionPool {
                }
        }
 
+       /**
+        * @param LoggerInterface $logger
+        * @return null
+        */
+       public function setLogger( LoggerInterface $logger ) {
+               $this->logger = $logger;
+       }
+
        /**
         * @param array $options
         * @return array
@@ -136,7 +158,9 @@ class RedisConnectionPool {
                // Initialize the object at the hash as needed...
                if ( !isset( self::$instances[$id] ) ) {
                        self::$instances[$id] = new self( $options );
-                       wfDebug( "Creating a new " . __CLASS__ . " instance with id $id.\n" );
+                       LoggerFactory::getInstance( 'redis' )->debug(
+                               "Creating a new " . __CLASS__ . " instance with id $id."
+                       );
                }
 
                return self::$instances[$id];
@@ -161,8 +185,11 @@ class RedisConnectionPool {
                                unset( $this->downServers[$server] );
                        } else {
                                // Server is dead
-                               wfDebug( "server $server is marked down for another " .
-                                       ( $this->downServers[$server] - $now ) . " seconds, can't get connection\n" );
+                               $this->logger->debug(
+                                       'Server "{redis_server}" is marked down for another ' .
+                                       ( $this->downServers[$server] - $now ) . 'seconds',
+                                       array( 'redis_server' => $server )
+                               );
 
                                return false;
                        }
@@ -175,7 +202,9 @@ class RedisConnectionPool {
                                        $connection['free'] = false;
                                        --$this->idlePoolSize;
 
-                                       return new RedisConnRef( $this, $server, $connection['conn'] );
+                                       return new RedisConnRef(
+                                               $this, $server, $connection['conn'], $this->logger
+                                       );
                                }
                        }
                }
@@ -189,7 +218,7 @@ class RedisConnectionPool {
                } else {
                        // TCP connection
                        $hostPort = IP::splitHostAndPort( $server );
-                       if ( !$hostPort ) {
+                       if ( !$server || !$hostPort ) {
                                throw new MWException( __CLASS__ . ": invalid configured server \"$server\"" );
                        }
                        list( $host, $port ) = $hostPort;
@@ -206,7 +235,10 @@ class RedisConnectionPool {
                                $result = $conn->connect( $host, $port, $this->connectTimeout );
                        }
                        if ( !$result ) {
-                               wfDebugLog( 'redis', "Could not connect to server $server" );
+                               $this->logger->error(
+                                       'Could not connect to server "{redis_server}"',
+                                       array( 'redis_server' => $server )
+                               );
                                // Mark server down for some time to avoid further timeouts
                                $this->downServers[$server] = time() + self::SERVER_DOWN_TTL;
 
@@ -214,12 +246,21 @@ class RedisConnectionPool {
                        }
                        if ( $this->password !== null ) {
                                if ( !$conn->auth( $this->password ) ) {
-                                       wfDebugLog( 'redis', "Authentication error connecting to $server" );
+                                       $this->logger->error(
+                                               'Authentication error connecting to "{redis_server}"',
+                                               array( 'redis_server' => $server )
+                                       );
                                }
                        }
                } catch ( RedisException $e ) {
                        $this->downServers[$server] = time() + self::SERVER_DOWN_TTL;
-                       wfDebugLog( 'redis', "Redis exception connecting to $server: " . $e->getMessage() );
+                       $this->logger->error(
+                               'Redis exception connecting to "{redis_server}"',
+                               array(
+                                       'redis_server' => $server,
+                                       'exception' => $e,
+                               )
+                       );
 
                        return false;
                }
@@ -229,7 +270,7 @@ class RedisConnectionPool {
                        $conn->setOption( Redis::OPT_SERIALIZER, $this->serializer );
                        $this->connections[$server][] = array( 'conn' => $conn, 'free' => false );
 
-                       return new RedisConnRef( $this, $server, $conn );
+                       return new RedisConnRef( $this, $server, $conn, $this->logger );
                } else {
                        return false;
                }
@@ -304,7 +345,13 @@ class RedisConnectionPool {
         */
        public function handleError( RedisConnRef $cref, RedisException $e ) {
                $server = $cref->getServer();
-               wfDebugLog( 'redis', "Redis exception on server $server: " . $e->getMessage() . "\n" );
+               $this->logger->error(
+                       'Redis exception on server "{redis_server}"',
+                       array(
+                               'redis_server' => $server,
+                               'exception' => $e,
+                       )
+               );
                foreach ( $this->connections[$server] as $key => $connection ) {
                        if ( $cref->isConnIdentical( $connection['conn'] ) ) {
                                $this->idlePoolSize -= $connection['free'] ? 1 : 0;
@@ -333,7 +380,10 @@ class RedisConnectionPool {
        public function reauthenticateConnection( $server, Redis $conn ) {
                if ( $this->password !== null ) {
                        if ( !$conn->auth( $this->password ) ) {
-                               wfDebugLog( 'redis', "Authentication error connecting to $server" );
+                               $this->logger->error(
+                                       'Authentication error connecting to "{redis_server}"',
+                                       array( 'redis_server' => $server )
+                               );
 
                                return false;
                        }
@@ -381,15 +431,22 @@ class RedisConnRef {
        protected $server; // string
        protected $lastError; // string
 
+       /**
+        * @var LoggerInterface
+        */
+       protected $logger;
+
        /**
         * @param RedisConnectionPool $pool
         * @param string $server
         * @param Redis $conn
+        * @param LoggerInterface $logger
         */
-       public function __construct( RedisConnectionPool $pool, $server, Redis $conn ) {
+       public function __construct( RedisConnectionPool $pool, $server, Redis $conn, LoggerInterface $logger ) {
                $this->pool = $pool;
                $this->server = $server;
                $this->conn = $conn;
+               $this->logger = $logger;
        }
 
        /**
@@ -428,7 +485,10 @@ class RedisConnRef {
                                $this->pool->reauthenticateConnection( $this->server, $conn );
                                $conn->clearLastError();
                                $res = call_user_func_array( array( $conn, $name ), $arguments );
-                               wfDebugLog( 'redis', "Used automatic re-authentication for method '$name'." );
+                               $this->logger->info(
+                                       "Used automatic re-authentication for method '$name'.",
+                                       array( 'redis_server' => $this->server )
+                               );
                        }
                } catch ( RedisException $e ) {
                        $this->pool->resetTimeout( $conn ); // restore
@@ -465,17 +525,29 @@ class RedisConnRef {
                        $this->pool->reauthenticateConnection( $server, $conn );
                        $conn->clearLastError();
                        $res = $conn->eval( $script, $params, $numKeys );
-                       wfDebugLog( 'redis', "Used automatic re-authentication for Lua script $sha1." );
+                       $this->logger->info(
+                               "Used automatic re-authentication for Lua script '$sha1'.",
+                               array( 'redis_server' => $server )
+                       );
                }
                // If the script is not in cache, use eval() to retry and cache it
                if ( preg_match( '/^NOSCRIPT/', $conn->getLastError() ) ) {
                        $conn->clearLastError();
                        $res = $conn->eval( $script, $params, $numKeys );
-                       wfDebugLog( 'redis', "Used eval() for Lua script $sha1." );
+                       $this->logger->info(
+                               "Used eval() for Lua script '$sha1'.",
+                               array( 'redis_server' => $server )
+                       );
                }
 
                if ( $conn->getLastError() ) { // script bug?
-                       wfDebugLog( 'redis', "Lua script error on server $server: " . $conn->getLastError() );
+                       $this->logger->error(
+                               'Lua script error on server "{redis_server}": {lua_error}',
+                               array(
+                                       'redis_server' => $server,
+                                       'lua_error' => $conn->getLastError()
+                               )
+                       );
                }
 
                $this->lastError = $conn->getLastError() ?: $this->lastError;
diff --git a/includes/compat/normal/.gitignore b/includes/compat/normal/.gitignore
deleted file mode 100644 (file)
index 5af0afa..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-/CompositionExclusions.txt
-/DerivedNormalizationProps.txt
-/NormalizationCorrections.txt
-/NormalizationTest.txt
-/UnicodeData.txt
-/testdata
index 8290603..b4f5196 100644 (file)
  */
 class CssContent extends TextContent {
 
+       /**
+        * @var bool|Title|null
+        */
+       private $redirectTarget = false;
+
        /**
         * @param string $text CSS code.
         * @param string $modelId the content content model
@@ -74,4 +79,43 @@ class CssContent extends TextContent {
                return $html;
        }
 
+       /**
+        * @param Title $target
+        * @return CssContent
+        */
+       public function updateRedirect( Title $target ) {
+               if ( !$this->isRedirect() ) {
+                       return $this;
+               }
+
+               return $this->getContentHandler()->makeRedirectContent( $target );
+       }
+
+       /**
+        * @return Title|null
+        */
+       public function getRedirectTarget() {
+               if ( $this->redirectTarget !== false ) {
+                       return $this->redirectTarget;
+               }
+               $this->redirectTarget = null;
+               $text = $this->getNativeData();
+               if ( strpos( $text, '/* #REDIRECT */' ) === 0 ) {
+                       // Extract the title from the url
+                       preg_match( '/title=(.*?)&action=raw/', $text, $matches );
+                       if ( isset( $matches[1] ) ) {
+                               $title = Title::newFromText( $matches[1] );
+                               if ( $title ) {
+                                       // Have a title, check that the current content equals what
+                                       // the redirect content should be
+                                       if ( $this->equals( $this->getContentHandler()->makeRedirectContent( $title ) ) ) {
+                                               $this->redirectTarget = $title;
+                                       }
+                               }
+                       }
+               }
+
+               return $this->redirectTarget;
+       }
+
 }
index b2a8676..dfa01e2 100644 (file)
@@ -39,4 +39,23 @@ class CssContentHandler extends CodeContentHandler {
        protected function getContentClass() {
                return 'CssContent';
        }
+
+       public function supportsRedirects() {
+               return true;
+       }
+
+       /**
+        * Create a redirect that is also valid CSS
+        *
+        * @param Title $destination
+        * @param string $text ignored
+        * @return JavaScriptContent
+        */
+       public function makeRedirectContent( Title $destination, $text = '' ) {
+               // The parameters are passed as a string so the / is not url-encoded by wfArrayToCgi
+               $url = $destination->getFullURL( 'action=raw&ctype=text/css', false, PROTO_RELATIVE );
+               $class = $this->getContentClass();
+               return new $class( '/* #REDIRECT */@import ' . CSSMin::buildUrlValue( $url ) . ';' );
+       }
+
 }
index aaa1fa7..09c3939 100644 (file)
@@ -26,7 +26,7 @@
  *     a different Title instance set on it.
  * @since 1.19
  */
-class DerivativeContext extends ContextSource {
+class DerivativeContext extends ContextSource implements MutableContext {
        /**
         * @var WebRequest
         */
diff --git a/includes/context/MutableContext.php b/includes/context/MutableContext.php
new file mode 100644 (file)
index 0000000..6358f11
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Request-dependant objects containers.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @since 1.26
+ *
+ * @file
+ */
+
+interface MutableContext {
+       /**
+        * Set the Config object
+        *
+        * @param Config $c
+        */
+       public function setConfig( Config $c );
+
+       /**
+        * Set the WebRequest object
+        *
+        * @param WebRequest $r
+        */
+       public function setRequest( WebRequest $r );
+
+       /**
+        * Set the Title object
+        *
+        * @param Title $t
+        */
+       public function setTitle( Title $t );
+
+       /**
+        * Set the WikiPage object
+        *
+        * @param WikiPage $p
+        */
+       public function setWikiPage( WikiPage $p );
+
+       /**
+        * Set the OutputPage object
+        *
+        * @param OutputPage $o
+        */
+       public function setOutput( OutputPage $o );
+
+       /**
+        * Set the User object
+        *
+        * @param User $u
+        */
+       public function setUser( User $u );
+
+       /**
+        * Set the Language object
+        *
+        * @param Language|string $l Language instance or language code
+        */
+       public function setLanguage( $l );
+
+       /**
+        * Set the Skin object
+        *
+        * @param Skin $s
+        */
+       public function setSkin( Skin $s );
+
+}
index 99c1a06..76b5e52 100644 (file)
@@ -25,7 +25,7 @@
 /**
  * Group all the pieces relevant to the context of a request into one instance
  */
-class RequestContext implements IContextSource {
+class RequestContext implements IContextSource, MutableContext {
        /**
         * @var WebRequest
         */
diff --git a/includes/dao/DBAccessObjectUtils.php b/includes/dao/DBAccessObjectUtils.php
new file mode 100644 (file)
index 0000000..ad7804c
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * This file contains database access object related constants.
+ *
+ * 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
+ */
+
+/**
+ * Helper class for DAO classes
+ *
+ * @since 1.26
+ */
+class DBAccessObjectUtils {
+       /**
+        * @param integer $bitfield
+        * @param integer $flags IDBAccessObject::READ_* constant
+        * @return bool Bitfield has flag $flag set
+        */
+       public static function hasFlags( $bitfield, $flags ) {
+               return ( $bitfield & $flags ) == $flags;
+       }
+
+       /**
+        * Get an appropriate DB index and options for a query
+        *
+        * @param integer $bitfield
+        * @return array (DB_MASTER/DB_SLAVE, SELECT options array)
+        */
+       public static function getDBOptions( $bitfield ) {
+               $index = self::hasFlags( $bitfield, IDBAccessObject::READ_LATEST )
+                       ? DB_MASTER
+                       : DB_SLAVE;
+
+               $options = array();
+               if ( self::hasFlags( $bitfield, IDBAccessObject::READ_EXCLUSIVE ) ) {
+                       $options[] = 'FOR UPDATE';
+               } elseif ( self::hasFlags( $bitfield, IDBAccessObject::READ_LOCKING ) ) {
+                       $options[] = 'LOCK IN SHARE MODE';
+               }
+
+               return array( $index, $options );
+       }
+}
index 2ee4545..aa8e2a0 100644 (file)
@@ -3189,6 +3189,17 @@ abstract class DatabaseBase implements IDatabase {
                return false;
        }
 
+       /**
+        * Determines if the given query error was a connection drop
+        * STUB
+        *
+        * @param integer|string $errno
+        * @return bool
+        */
+       public function wasConnectionError( $errno ) {
+               return false;
+       }
+
        /**
         * Perform a deadlock-prone transaction.
         *
@@ -3205,7 +3216,8 @@ abstract class DatabaseBase implements IDatabase {
         * iteration, or false on error, for example if the retry limit was
         * reached.
         *
-        * @return bool
+        * @return mixed
+        * @throws DBQueryError
         */
        public function deadlockLoop() {
                $args = func_get_args();
@@ -3219,6 +3231,7 @@ abstract class DatabaseBase implements IDatabase {
 
                $this->begin( __METHOD__ );
 
+               $retVal = null;
                $e = null;
                do {
                        try {
index 86950a8..928de61 100644 (file)
@@ -329,12 +329,19 @@ class DBQueryError extends DBExpectedError {
         * @param string $fname
         */
        function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) {
-               $message = "A database error has occurred. Did you forget to run " .
-                       "maintenance/update.php after upgrading?  See: " .
-                       "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
-                       "Query: $sql\n" .
-                       "Function: $fname\n" .
-                       "Error: $errno $error\n";
+               if ( $db->wasConnectionError( $errno ) ) {
+                       $message = "A connection error occured. \n" .
+                               "Query: $sql\n" .
+                               "Function: $fname\n" .
+                               "Error: $errno $error\n";
+               } else {
+                       $message = "A database error has occurred. Did you forget to run " .
+                               "maintenance/update.php after upgrading?  See: " .
+                               "https://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+                               "Query: $sql\n" .
+                               "Function: $fname\n" .
+                               "Error: $errno $error\n";
+               }
                parent::__construct( $db, $message );
 
                $this->error = $error;
index 846da1c..be34242 100644 (file)
@@ -1055,6 +1055,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        ( $this->lastErrno() == 1290 && strpos( $this->lastError(), '--read-only' ) !== false );
        }
 
+       function wasConnectionError( $errno ) {
+               return $errno == 2013 || $errno == 2006;
+       }
+
        /**
         * Get the underlying binding handle, mConn
         *
index 2bad711..9c93951 100644 (file)
@@ -964,7 +964,36 @@ class DatabaseSqlite extends DatabaseBase {
                        }
                }
 
-               return $this->query( $sql, $fname );
+               $res = $this->query( $sql, $fname );
+
+               // Take over indexes
+               $indexList = $this->query( 'PRAGMA INDEX_LIST(' . $this->addQuotes( $oldName ) . ')' );
+               foreach ( $indexList as $index ) {
+                       if ( strpos( $index->name, 'sqlite_autoindex' ) === 0 ) {
+                               continue;
+                       }
+
+                       if ( $index->unique ) {
+                               $sql = 'CREATE UNIQUE INDEX';
+                       } else {
+                               $sql = 'CREATE INDEX';
+                       }
+                       // Try to come up with a new index name, given indexes have database scope in SQLite
+                       $indexName = $newName . '_' . $index->name;
+                       $sql .= ' ' . $indexName . ' ON ' . $newName;
+
+                       $indexInfo = $this->query( 'PRAGMA INDEX_INFO(' . $this->addQuotes( $index->name ) . ')' );
+                       $fields = array();
+                       foreach ( $indexInfo as $indexInfoRow ) {
+                               $fields[ $indexInfoRow->seqno ] = $indexInfoRow->name;
+                       }
+
+                       $sql .= '(' . implode( ',', $fields ) . ')';
+
+                       $this->query( $sql );
+               }
+
+               return $res;
        }
 
        /**
index ea4e1b1..b6439b8 100644 (file)
@@ -222,7 +222,7 @@ class LegacyLogger extends AbstractLogger {
                        $context['exception'] instanceof Exception
                ) {
                        $text .= MWExceptionHandler::getRedactedTraceAsString(
-                               $context['exception']->getTraceAsString()
+                               $context['exception']
                        ) . "\n";
                }
 
@@ -343,7 +343,7 @@ class LegacyLogger extends AbstractLogger {
                        if ( is_nan( $item ) ) {
                                return 'NaN';
                        }
-                       return $data;
+                       return $item;
                }
 
                if ( is_scalar( $item ) ) {
diff --git a/includes/debug/logger/monolog/LineFormatter.php b/includes/debug/logger/monolog/LineFormatter.php
new file mode 100644 (file)
index 0000000..e593d63
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use Exception;
+use Monolog\Formatter\LineFormatter as MonologLineFormatter;
+use MWExceptionHandler;
+
+/**
+ * Formats incoming records into a one-line string.
+ *
+ * Exceptions that are logged with this formatter will optional have their
+ * stack traces appended. If that is done,
+ * MWExceptionHandler::getRedactedTraceAsString() will be used to redact the
+ * trace information.
+ *
+ * @since 1.26
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @copyright © 2015 Bryan Davis and Wikimedia Foundation.
+ */
+class LineFormatter extends MonologLineFormatter {
+
+       /**
+        * @param string $format The format of the message
+        * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
+        * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries
+        * @param bool $ignoreEmptyContextAndExtra
+        * @param bool $includeStacktraces
+        */
+       public function __construct(
+               $format = null, $dateFormat = null, $allowInlineLineBreaks = false,
+               $ignoreEmptyContextAndExtra = false, $includeStacktraces = false
+       ) {
+               parent::__construct(
+                       $format, $dateFormat, $allowInlineLineBreaks,
+                       $ignoreEmptyContextAndExtra
+               );
+               $this->includeStacktraces( $includeStacktraces );
+       }
+
+
+       /**
+        * Convert an Exception to a string.
+        *
+        * @param Exception $e
+        * @return string
+        */
+       protected function normalizeException( Exception $e ) {
+               $str = '[Exception ' . get_class( $e ) . '] (' .
+                       $e->getFile() . ':' . $e->getLine() . ') ' .
+                       $e->getMessage();
+
+               $prev = $e->getPrevious();
+               while ( $prev ) {
+                       $str .= ', [Exception ' . get_class( $prev ) . '] (' .
+                               $prev->getFile() . ':' . $prev->getLine() . ') ' .
+                               $prev->getMessage();
+                       $prev = $prev->getPrevious();
+               }
+
+               if ( $this->includeStacktraces ) {
+                       $str .= "\n[stacktrace]\n" .
+                               MWExceptionHandler::getRedactedTraceAsString( $e ) .
+                               "\n";
+               }
+
+               return $str;
+       }
+}
index e9ec7ff..36cc865 100644 (file)
@@ -61,6 +61,12 @@ class LinksUpdate extends SqlDataUpdate {
        /** @var bool Whether to queue jobs for recursive updates */
        public $mRecursive;
 
+       /** @var bool Whether this job was triggered by a recursive update job */
+       private $mTriggeredRecursive;
+
+       /** @var Revision Revision for which this update has been triggered */
+       private $mRevision;
+
        /**
         * @var null|array Added links if calculated.
         */
@@ -147,7 +153,6 @@ class LinksUpdate extends SqlDataUpdate {
        }
 
        protected function doIncrementalUpdate() {
-
                # Page links
                $existing = $this->getExistingLinks();
                $this->linkDeletions = $this->getLinkDeletions( $existing );
@@ -199,6 +204,27 @@ class LinksUpdate extends SqlDataUpdate {
                $this->invalidateCategories( $categoryUpdates );
                $this->updateCategoryCounts( $categoryInserts, $categoryDeletes );
 
+               # Category membership changes
+               if ( !$this->mTriggeredRecursive && ( $categoryInserts || $categoryDeletes ) ) {
+                       try {
+                               $catMembChange = new CategoryMembershipChange( $this->mTitle, $this->mRevision );
+
+                               if ( $this->mRecursive ) {
+                                       $catMembChange->setRecursive();
+                               }
+
+                               foreach ( $categoryInserts as $categoryName => $value ) {
+                                       $catMembChange->pageAddedToCategory( $categoryName );
+                               }
+
+                               foreach ( $categoryDeletes as $categoryName => $value ) {
+                                       $catMembChange->pageRemovedFromCategory( $categoryName );
+                               }
+                       } catch ( MWException $e ) {
+                               MWExceptionHandler::logException( $e );
+                       }
+               }
+
                # Page properties
                $existing = $this->getExistingProperties();
 
@@ -863,6 +889,21 @@ class LinksUpdate extends SqlDataUpdate {
                return $this->mImages;
        }
 
+       /**
+        * Set this object as being triggered by a recursive LinksUpdate
+        */
+       public function setTriggeredRecursive() {
+               $this->mTriggeredRecursive = true;
+       }
+
+       /**
+        * Set the revision corresponding to this LinksUpdate
+        * @param Revision $revision
+        */
+       public function setRevision( Revision $revision ) {
+               $this->mRevision = $revision;
+       }
+
        /**
         * Invalidate any necessary link lists related to page property changes
         * @param array $changed
index 3f25930..def653f 100644 (file)
@@ -522,8 +522,6 @@ TXT;
         * @param Exception $e
         */
        public static function logException( Exception $e ) {
-               global $wgLogExceptionBacktrace;
-
                if ( !( $e instanceof MWException ) || $e->isLoggable() ) {
                        $logger = LoggerFactory::getInstance( 'exception' );
                        $logger->error(
@@ -549,8 +547,6 @@ TXT;
         * @param string $channel
        */
        protected static function logError( ErrorException $e, $channel ) {
-               global $wgLogExceptionBacktrace;
-
                // The set_error_handler callback is independent from error_reporting.
                // Filter out unwanted errors manually (e.g. when MediaWiki\suppressWarnings is active).
                $suppressed = ( error_reporting() & $e->getSeverity() ) === 0;
@@ -566,7 +562,7 @@ TXT;
                $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK );
                if ( $json !== false ) {
                        $logger = LoggerFactory::getInstance( "{$channel}-json" );
-                       $logger->error( $json, array( 'private' => true )  );
+                       $logger->error( $json, array( 'private' => true ) );
                }
 
                Hooks::run( 'LogException', array( $e, $suppressed ) );
index 2ccafe4..6a0f2ee 100644 (file)
@@ -173,30 +173,40 @@ class SwiftFileBackend extends FileBackendStore {
 
        /**
         * Sanitize and filter the custom headers from a $params array.
-        * We only allow certain Content- and X-Content- headers.
+        * Only allows certain "standard" Content- and X-Content- headers.
         *
         * @param array $params
         * @return array Sanitized value of 'headers' field in $params
         */
        protected function sanitizeHdrs( array $params ) {
+               return isset( $params['headers'] )
+                       ? $this->getCustomHeaders( $params['headers'] )
+                       : array();
+
+       }
+
+       /**
+        * @param array $rawHeaders
+        * @return array Custom non-metadata HTTP headers
+        */
+       protected function getCustomHeaders( array $rawHeaders ) {
                $headers = array();
 
                // Normalize casing, and strip out illegal headers
-               if ( isset( $params['headers'] ) ) {
-                       foreach ( $params['headers'] as $name => $value ) {
-                               $name = strtolower( $name );
-                               if ( preg_match( '/^content-(type|length)$/', $name ) ) {
-                                       continue; // blacklisted
-                               } elseif ( preg_match( '/^(x-)?content-/', $name ) ) {
-                                       $headers[$name] = $value; // allowed
-                               } elseif ( preg_match( '/^content-(disposition)/', $name ) ) {
-                                       $headers[$name] = $value; // allowed
-                               }
+               foreach ( $rawHeaders as $name => $value ) {
+                       $name = strtolower( $name );
+                       if ( preg_match( '/^content-(type|length)$/', $name ) ) {
+                               continue; // blacklisted
+                       } elseif ( preg_match( '/^(x-)?content-/', $name ) ) {
+                               $headers[$name] = $value; // allowed
+                       } elseif ( preg_match( '/^content-(disposition)/', $name ) ) {
+                               $headers[$name] = $value; // allowed
                        }
                }
                // By default, Swift has annoyingly low maximum header value limits
                if ( isset( $headers['content-disposition'] ) ) {
                        $disposition = '';
+                       // @note: assume FileBackend::makeContentDisposition() already used
                        foreach ( explode( ';', $headers['content-disposition'] ) as $part ) {
                                $part = trim( $part );
                                $new = ( $disposition === '' ) ? $part : "{$disposition};{$part}";
@@ -212,6 +222,35 @@ class SwiftFileBackend extends FileBackendStore {
                return $headers;
        }
 
+       /**
+        * @param array $rawHeaders
+        * @return array Custom metadata headers
+        */
+       protected function getMetadataHeaders( array $rawHeaders ) {
+               $headers = array();
+               foreach ( $rawHeaders as $name => $value ) {
+                       $name = strtolower( $name );
+                       if ( strpos( $name, 'x-object-meta-' ) === 0 ) {
+                               $headers[$name] = $value;
+                       }
+               }
+
+               return $headers;
+       }
+
+       /**
+        * @param array $rawHeaders
+        * @return array Custom metadata headers with prefix removed
+        */
+       protected function getMetadata( array $rawHeaders ) {
+               $metadata = array();
+               foreach ( $this->getMetadataHeaders( $rawHeaders ) as $name => $value ) {
+                       $metadata[substr( $name, strlen( 'x-object-meta-' ) )] = $value;
+               }
+
+               return $metadata;
+       }
+
        protected function doCreateInternal( array $params ) {
                $status = Status::newGood();
 
@@ -670,10 +709,10 @@ class SwiftFileBackend extends FileBackendStore {
                $ps = Profiler::instance()->scopedProfileIn( __METHOD__ . "-{$this->name}" );
                wfDebugLog( 'SwiftBackend', __METHOD__ . ": $path was not stored with SHA-1 metadata." );
 
+               $objHdrs['x-object-meta-sha1base36'] = false;
+
                $auth = $this->getAuthentication();
                if ( !$auth ) {
-                       $objHdrs['x-object-meta-sha1base36'] = false;
-
                        return $objHdrs; // failed
                }
 
@@ -693,6 +732,8 @@ class SwiftFileBackend extends FileBackendStore {
                                                'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
                                        ) );
                                        if ( $rcode >= 200 && $rcode <= 299 ) {
+                                               $this->deleteFileCache( $path );
+
                                                return $objHdrs; // success
                                        }
                                }
@@ -700,7 +741,6 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                wfDebugLog( 'SwiftBackend', __METHOD__ . ": unable to set SHA-1 metadata for $path" );
-               $objHdrs['x-object-meta-sha1base36'] = false;
 
                return $objHdrs; // failed
        }
@@ -1549,22 +1589,16 @@ class SwiftFileBackend extends FileBackendStore {
         */
        protected function getStatFromHeaders( array $rhdrs ) {
                // Fetch all of the custom metadata headers
-               $metadata = array();
-               foreach ( $rhdrs as $name => $value ) {
-                       if ( strpos( $name, 'x-object-meta-' ) === 0 ) {
-                               $metadata[substr( $name, strlen( 'x-object-meta-' ) )] = $value;
-                       }
-               }
+               $metadata = $this->getMetadata( $rhdrs );
                // Fetch all of the custom raw HTTP headers
                $headers = $this->sanitizeHdrs( array( 'headers' => $rhdrs ) );
+
                return array(
                        // Convert various random Swift dates to TS_MW
                        'mtime' => $this->convertSwiftDate( $rhdrs['last-modified'], TS_MW ),
                        // Empty objects actually return no content-length header in Ceph
                        'size'  => isset( $rhdrs['content-length'] ) ? (int)$rhdrs['content-length'] : 0,
-                       'sha1'  => isset( $rhdrs['x-object-meta-sha1base36'] )
-                               ? $rhdrs['x-object-meta-sha1base36']
-                               : null,
+                       'sha1'  => isset( $metadata['sha1base36'] ) ? $metadata['sha1base36'] : null,
                        // Note: manifiest ETags are not an MD5 of the file
                        'md5'   => ctype_xdigit( $rhdrs['etag'] ) ? $rhdrs['etag'] : null,
                        'xattr' => array( 'metadata' => $metadata, 'headers' => $headers )
index 0401d0c..c83e5b1 100644 (file)
@@ -46,7 +46,7 @@ class FileBackendDBRepoWrapper extends FileBackend {
        protected $dbHandleFunc;
        /** @var ProcessCacheLRU */
        protected $resolvedPathCache;
-       /** @var Array Map of (index => DBConnRef) */
+       /** @var DBConnRef[] */
        protected $dbs;
 
        public function __construct( array $config ) {
@@ -95,7 +95,6 @@ class FileBackendDBRepoWrapper extends FileBackend {
         */
        public function getBackendPaths( array $paths, $latest = true ) {
                $db = $this->getDB( $latest ? DB_MASTER : DB_SLAVE );
-               $origBasePath = $this->backend->getContainerStoragePath( "{$this->repoName}-original" );
 
                // @TODO: batching
                $resolved = array();
@@ -105,7 +104,7 @@ class FileBackendDBRepoWrapper extends FileBackend {
                                continue;
                        }
 
-                       list( , $container, $rel ) = FileBackend::splitStoragePath( $path );
+                       list( , $container ) = FileBackend::splitStoragePath( $path );
 
                        if ( $container === "{$this->repoName}-public" ) {
                                $name = basename( $path );
@@ -258,7 +257,7 @@ class FileBackendDBRepoWrapper extends FileBackend {
        }
 
        public function getScopedLocksForOps( array $ops, Status $status ) {
-               return $this->backend->getScopedFileLocks( $ops, $status );
+               return $this->backend->getScopedLocksForOps( $ops, $status );
        }
 
        /**
@@ -271,7 +270,7 @@ class FileBackendDBRepoWrapper extends FileBackend {
         */
        public function getPathForSHA1( $sha1 ) {
                if ( strlen( $sha1 ) < 3 ) {
-                       throw new MWException( "Invalid file SHA-1." );
+                       throw new InvalidArgumentException( "Invalid file SHA-1." );
                }
                return $this->backend->getContainerStoragePath( "{$this->repoName}-original" ) .
                        "/{$sha1[0]}/{$sha1[1]}/{$sha1[2]}/{$sha1}";
@@ -284,11 +283,11 @@ class FileBackendDBRepoWrapper extends FileBackend {
         * @return DBConnRef
         */
        protected function getDB( $index ) {
-               if ( !isset( $this->db[$index] ) ) {
+               if ( !isset( $this->dbs[$index] ) ) {
                        $func = $this->dbHandleFunc;
-                       $this->db[$index] = $func( $index );
+                       $this->dbs[$index] = $func( $index );
                }
-               return $this->db[$index];
+               return $this->dbs[$index];
        }
 
        /**
index ec84762..4ffbf4a 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup FileRepo
  */
 
+use MediaWiki\Logger\LoggerFactory;
+
 /**
  * A foreign repository with a remote MediaWiki with an API thingy
  *
@@ -521,7 +523,8 @@ class ForeignAPIRepo extends FileRepo {
                if ( $status->isOK() ) {
                        return $req->getContent();
                } else {
-                       wfDebug( "ForeignAPIRepo: ERROR on GET: " . $status->getWikiText() );
+                       $logger = LoggerFactory::getInstance( 'http' );
+                       $logger->warning( $status->getWikiText(), array( 'caller' => 'ForeignAPIRepo::httpGet' ) );
                        return false;
                }
        }
index 1852912..6a2c064 100644 (file)
@@ -595,7 +595,7 @@ class LocalRepo extends FileRepo {
                        wfDebug( __METHOD__ . ": skipped because storage uses sha1 paths\n" );
                        return Status::newGood();
                } else {
-                       return call_user_func_array('parent::' . $function, $args );
+                       return call_user_func_array( 'parent::' . $function, $args );
                }
        }
 }
index 72b3ae9..3677a14 100644 (file)
@@ -423,7 +423,10 @@ abstract class File implements IDBAccessObject {
                if ( !isset( $this->fsFile ) ) {
                        $starttime = microtime( true );
                        $this->fsFile = $this->repo->getLocalReference( $this->getPath() );
-                       RequestContext::getMain()->getStats()->timing( 'media.thumbnail.generate.fetchoriginal', microtime( true ) - $starttime );
+
+                       $statTiming = microtime( true ) - $starttime;
+                       RequestContext::getMain()->getStats()->timing(
+                               'media.thumbnail.generate.fetchoriginal', 1000 * $statTiming );
 
                        if ( !$this->fsFile ) {
                                $this->fsFile = false; // null => false; cache negative hits
@@ -1120,7 +1123,8 @@ abstract class File implements IDBAccessObject {
                $thumb = $handler->doTransform( $this, $tmpThumbPath, $thumbUrl, $transformParams );
                $tmpFile->bind( $thumb ); // keep alive with $thumb
 
-               $stats->timing( 'media.thumbnail.generate.transform', microtime( true ) - $starttime );
+               $statTiming = microtime( true ) - $starttime;
+               $stats->timing( 'media.thumbnail.generate.transform', 1000 * $statTiming );
 
                if ( !$thumb ) { // bad params?
                        $thumb = false;
@@ -1143,14 +1147,13 @@ abstract class File implements IDBAccessObject {
                                $thumb = $this->transformErrorOutput( $thumbPath, $thumbUrl, $transformParams, $flags );
                        }
 
-                       $stats->timing( 'media.thumbnail.generate.store', microtime( true ) - $starttime );
+                       $statTiming = microtime( true ) - $starttime;
+                       $stats->timing( 'media.thumbnail.generate.store', 1000 * $statTiming );
 
                        // Give extensions a chance to do something with this thumbnail...
                        Hooks::run( 'FileTransformed', array( $this, $thumb, $tmpThumbPath, $thumbPath ) );
                }
 
-               wfDebugLog( 'thumbnailaccess', time() . ' ' . $thumbPath . ' ' . filesize( $tmpThumbPath ) . ' Generated ' );
-
                return $thumb;
        }
 
@@ -1182,8 +1185,6 @@ abstract class File implements IDBAccessObject {
 
                $params = $this->getHandler()->sanitizeParamsForBucketing( $params );
 
-               $bucketName = $this->getBucketThumbName( $bucket );
-
                $tmpFile = $this->makeTransformTmpFile( $bucketPath );
 
                if ( !$tmpFile ) {
@@ -1203,7 +1204,8 @@ abstract class File implements IDBAccessObject {
                // this object exists
                $tmpFile->bind( $this );
 
-               RequestContext::getMain()->getStats()->timing( 'media.thumbnail.generate.bucket', $buckettime );
+               RequestContext::getMain()->getStats()->timing(
+                       'media.thumbnail.generate.bucket', 1000 * $buckettime );
 
                return true;
        }
index 48cc828..da58f20 100644 (file)
  *    'size'                -- the length of text fields
  *    'filter-callback      -- a function name to give you the chance to
  *                             massage the inputted value before it's processed.
- *                             @see HTMLForm::filter()
+ *                             @see HTMLFormField::filter()
  *    'validation-callback' -- a function name to give you the chance
  *                             to impose extra validation on the field input.
- *                             @see HTMLForm::validate()
+ *                             @see HTMLFormField::validate()
  *    'name'                -- By default, the 'name' attribute of the input field
  *                             is "wp{$fieldname}".  If you want a different name
  *                             (eg one without the "wp" prefix), specify it here and
@@ -1302,11 +1302,14 @@ class HTMLForm extends ContextSource {
         * @return HTMLForm $this for chaining calls (since 1.20)
         */
        public function setMethod( $method = 'post' ) {
-               $this->mMethod = $method;
+               $this->mMethod = strtolower( $method );
 
                return $this;
        }
 
+       /**
+        * @return string Always lowercase
+        */
        public function getMethod() {
                return $this->mMethod;
        }
index 23ca3bf..0e4f4f3 100644 (file)
@@ -64,6 +64,10 @@ class HTMLSelectAndOtherField extends HTMLSelectField {
                return "$select<br />\n$textbox";
        }
 
+       function getInputOOUI( $value ) {
+               return false;
+       }
+
        /**
         * @param WebRequest $request
         *
index cbf7d12..3e7acdf 100644 (file)
@@ -62,6 +62,10 @@ class HTMLSelectOrOtherField extends HTMLTextField {
                return "$select<br />\n$textbox";
        }
 
+       function getInputOOUI( $value ) {
+               return false;
+       }
+
        /**
         * @param WebRequest $request
         *
index e1bc1a0..a225c67 100644 (file)
@@ -7,10 +7,12 @@ use MediaWiki\Widget\TitleInputWidget;
  * Automatically does validation that the title is valid,
  * as well as autocompletion if using the OOUI display format.
  *
- * FIXME: Does not work for forms that support GET requests.
+ * Note: Forms using GET requests will need to make sure the title value is not
+ * an empty string.
  *
  * Optional parameters:
  * 'namespace' - Namespace the page must be in
+ * 'relative' - If true and 'namespace' given, strip/add the namespace from/to the title as needed
  * 'creatable' - Whether to validate the title is creatable (not a special page)
  * 'exists' - Whether to validate that the title already exists
  *
@@ -20,6 +22,7 @@ class HTMLTitleTextField extends HTMLTextField {
        public function __construct( $params ) {
                $params += array(
                        'namespace' => false,
+                       'relative' => false,
                        'creatable' => false,
                        'exists' => false,
                );
@@ -28,8 +31,20 @@ class HTMLTitleTextField extends HTMLTextField {
        }
 
        public function validate( $value, $alldata ) {
+               if ( $this->mParent->getMethod() === 'get' && $value === '' ) {
+                       // If the form is a GET form and has no value, assume it hasn't been
+                       // submitted yet, and skip validation
+                       return parent::validate( $value, $alldata );
+               }
                try {
-                       $title = Title::newFromTextThrow( $value );
+                       if ( !$this->mParams['relative'] ) {
+                               $title = Title::newFromTextThrow( $value );
+                       } else {
+                               // Can't use Title::makeTitleSafe(), because it doesn't throw useful exceptions
+                               global $wgContLang;
+                               $namespaceName = $wgContLang->getNsText( $this->mParams['namespace'] );
+                               $title = Title::newFromTextThrow( $namespaceName . ':' . $value );
+                       }
                } catch ( MalformedTitleException $e ) {
                        $msg = $this->msg( $e->getErrorMessage() );
                        $params = $e->getErrorMessageParameters();
@@ -60,7 +75,7 @@ class HTMLTitleTextField extends HTMLTextField {
                if ( $this->mParams['namespace'] !== false ) {
                        $params['namespace'] = $this->mParams['namespace'];
                }
-               $params['relative'] = false;
+               $params['relative'] = $this->mParams['relative'];
                return new TitleInputWidget( $params );
        }
 }
index 949fefd..5869002 100644 (file)
@@ -17,6 +17,7 @@ class HTMLUserTextField extends HTMLTextField {
        public function __construct( $params ) {
                $params += array(
                        'exists' => false,
+                       'ipallowed' => false,
                );
 
                parent::__construct( $params );
@@ -24,11 +25,14 @@ class HTMLUserTextField extends HTMLTextField {
 
        public function validate( $value, $alldata ) {
                // check, if a user exists with the given username
-               $user = User::newFromName( $value );
+               $user = User::newFromName( $value, false );
 
                if ( !$user ) {
                        return $this->msg( 'htmlform-user-not-valid', $value )->parse();
-               } elseif ( $this->mParams['exists'] && $user->getId() === 0 ) {
+               } elseif (
+                       ( $this->mParams['exists'] && $user->getId() === 0 ) &&
+                       !( $this->mParams['ipallowed'] && User::isIP( $value ) )
+               ) {
                        return $this->msg( 'htmlform-user-not-exists', $user->getName() )->parse();
                }
 
index 702f850..7070790 100644 (file)
@@ -145,15 +145,26 @@ abstract class DatabaseUpdater {
                        return; // already loaded
                }
                $vars = Installer::getExistingLocalSettings();
-               if ( !$vars ) {
-                       return; // no LocalSettings found
+
+               $registry = ExtensionRegistry::getInstance();
+               $queue = $registry->getQueue();
+               // Don't accidentally load extensions in the future
+               $registry->clearQueue();
+
+               // This will automatically add "AutoloadClasses" to $wgAutoloadClasses
+               $data = $registry->readFromQueue( $queue );
+               $hooks = array( 'wgHooks' => array( 'LoadExtensionSchemaUpdates' => array() ) );
+               if ( isset( $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
+                       $hooks = $data['globals']['wgHooks']['LoadExtensionSchemaUpdates'];
                }
-               if ( !isset( $vars['wgHooks'] ) || !isset( $vars['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
-                       return;
+               if ( $vars && isset( $vars['wgHooks']['LoadExtensionSchemaUpdates'] ) ) {
+                       $hooks = array_merge_recursive( $hooks, $vars['wgHooks']['LoadExtensionSchemaUpdates'] );
                }
                global $wgHooks, $wgAutoloadClasses;
-               $wgHooks['LoadExtensionSchemaUpdates'] = $vars['wgHooks']['LoadExtensionSchemaUpdates'];
-               $wgAutoloadClasses = $wgAutoloadClasses + $vars['wgAutoloadClasses'];
+               $wgHooks['LoadExtensionSchemaUpdates'] = $hooks;
+               if ( $vars && isset( $vars['wgAutoloadClasses'] ) ) {
+                       $wgAutoloadClasses += $vars['wgAutoloadClasses'];
+               }
        }
 
        /**
index 2818349..662469b 100644 (file)
@@ -538,6 +538,10 @@ abstract class Installer {
                global $wgAutoloadClasses;
                $wgAutoloadClasses = array();
 
+               // LocalSettings.php should not call functions, except wfLoadSkin/wfLoadExtensions
+               // Define the required globals here, to ensure, the functions can do it work correctly.
+               global $wgExtensionDirectory, $wgStyleDirectory;
+
                MediaWiki\suppressWarnings();
                $_lsExists = file_exists( "$IP/LocalSettings.php" );
                MediaWiki\restoreWarnings();
index 4410271..e1063b0 100644 (file)
@@ -408,7 +408,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'changeFieldPurgeTable', 'l10n_cache', 'lc_value', 'bytea',
                                "replace(lc_value,'\','\\\\')::bytea" ),
                        // 1.23.9
-                       array( 'rebuildTextSearch'),
+                       array( 'rebuildTextSearch' ),
 
                        // 1.24
                        array( 'addPgField', 'page_props', 'pp_sortkey', 'float NULL' ),
index 4930826..74904f1 100644 (file)
@@ -696,11 +696,11 @@ class WebInstaller extends Installer {
                $text = wfMessage( $msg, $args )->useDatabase( false )->plain();
                $html = $this->parse( $text, true );
 
-               return "<div class=\"mw-help-field-container\">\n" .
-                       "<span class=\"mw-help-field-hint\" title=\"" .
+               return "<div class=\"config-help-field-container\">\n" .
+                       "<span class=\"config-help-field-hint\" title=\"" .
                        wfMessage( 'config-help-tooltip' )->escaped() . "\">" .
                        wfMessage( 'config-help' )->escaped() . "</span>\n" .
-                       "<span class=\"mw-help-field-data\">" . $html . "</span>\n" .
+                       "<span class=\"config-help-field-data\">" . $html . "</span>\n" .
                        "</div>\n";
        }
 
index f7910ba..8715d51 100644 (file)
@@ -287,10 +287,10 @@ class WebInstallerLanguage extends WebInstallerPage {
        public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
                global $wgDummyLanguageCodes;
 
-               $s = $helpHtml;
+               $output = $helpHtml;
 
-               $s .= Html::openElement( 'select', array( 'id' => $name, 'name' => $name,
-                               'tabindex' => $this->parent->nextTabIndex() ) ) . "\n";
+               $select = new XmlSelect( $name, $name, $selectedCode );
+               $select->setAttribute( 'tabindex', $this->parent->nextTabIndex() );
 
                $languages = Language::fetchLanguageNames();
                ksort( $languages );
@@ -298,11 +298,11 @@ class WebInstallerLanguage extends WebInstallerPage {
                        if ( isset( $wgDummyLanguageCodes[$code] ) ) {
                                continue;
                        }
-                       $s .= "\n" . Xml::option( "$code - $lang", $code, $code == $selectedCode );
+                       $select->addOption( "$code - $lang", $code );
                }
-               $s .= "\n</select>\n";
 
-               return $this->parent->label( $label, $name, $s );
+               $output .= $select->getHTML();
+               return $this->parent->label( $label, $name, $output );
        }
 
 }
@@ -833,8 +833,6 @@ class WebInstallerName extends WebInstallerPage {
         * @return bool
         */
        public function submit() {
-               global $wgPasswordPolicy;
-
                $retVal = true;
                $this->parent->setVarsFromRequest( array( 'wgSitename', '_NamespaceType',
                        '_AdminName', '_AdminPassword', '_AdminPasswordConfirm', '_AdminEmail',
index 1d8cd9c..f40bc3e 100644 (file)
@@ -12,7 +12,7 @@
        "config-desc": "মিডিয়াউইকির জন্য ইন্সটলার",
        "config-title": "মিডিয়াউইকি $1 ইন্সটলেশন",
        "config-information": "তথ্য",
-       "config-localsettings-upgrade": "A <code>LocalSettings.php</code> ফাইলটি মুছে ফেলা হয়েছে। এ ইন্সটলেশনটি আরো উন্নত করতে দয়া করে <code>$wgUpgradeKey</code> কোডটি বক্সে দিন। আপনি এটি পাবেন এখানে <code>LocalSettings.php</code>.",
+       "config-localsettings-upgrade": "<code>LocalSettings.php</code> ফাইলটি মুছে ফেলা হয়েছে। এই ইন্সটলেশনটি আরো উন্নত করতে দয়া করে <code>$wgUpgradeKey</code> কোডটি বক্সে দিন। আপনি এটি <code>LocalSettings.php</code> -এ পাবেন।",
        "config-localsettings-key": "হালনাগাদ কি",
        "config-localsettings-badkey": "আপনি যেই চাবিটি দিয়েছেন তা সঠিক নয়।",
        "config-session-error": "সেশন শুরুতে ত্রুটি: $1",
index 7aebc86..0653a72 100644 (file)
@@ -4,7 +4,9 @@
                        "Airon90",
                        "Yekrats",
                        "KuboF",
-                       "Fitoschido"
+                       "Fitoschido",
+                       "Ochilov",
+                       "Tlustulimu"
                ]
        },
        "config-desc": "Instalilo de MediaWiki",
        "config-db-name": "Nomo de datumbazo:",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-type-mysql": "MySQL (aŭ kongrua)",
+       "config-mysql-utf8": "UTF-8",
+       "config-site-name": "Nomo de vikio:",
+       "config-ns-generic": "Projekto",
+       "config-admin-name": "Via uzantonomo:",
        "config-admin-password": "Pasvorto:",
        "config-admin-password-confirm": "Retajpu pasvorton:",
        "config-admin-name-blank": "Enigu salutnomon de administranto.",
index baab24a..57140d3 100644 (file)
@@ -3,7 +3,8 @@
                "authors": [
                        "An13sa",
                        "පසිඳු කාවින්ද",
-                       "Subi"
+                       "Subi",
+                       "Sator"
                ]
        },
        "config-desc": "MediaWiki instalatzailea",
@@ -74,6 +75,7 @@
        "config-email-settings": "E-posta hobespenak",
        "config-logo": "Logo URL:",
        "config-extensions": "Luzapenak",
+       "config-skins": "Itxurak",
        "config-install-step-done": "egina",
        "config-help": "Laguntza",
        "mainpagetext": "'''MediaWiki arrakastaz instalatu da.'''",
index 0e8f597..9c7acd6 100644 (file)
        "config-env-bad": "Le ambiente ha essite verificate.\nTu non pote installar MediaWiki.",
        "config-env-php": "PHP $1 es installate.",
        "config-env-hhvm": "HHVM $1 es installate.",
-       "config-unicode-using-utf8": "utf8_normalize.so per Brion Vibber es usate pro le normalisation Unicode.",
        "config-unicode-using-intl": "Le [http://pecl.php.net/intl extension PECL intl] es usate pro le normalisation Unicode.",
        "config-unicode-pure-php-warning": "'''Aviso''': Le [http://pecl.php.net/intl extension PECL intl] non es disponibile pro exequer le normalisation Unicode; le systema recurre al implementation lente in PHP pur.\nSi tu sito ha un alte volumine de traffico, tu deberea informar te un poco super le [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations normalisation Unicode].",
        "config-unicode-update-warning": "'''Aviso''': Le version installate del bibliotheca inveloppante pro normalisation Unicode usa un version ancian del bibliotheca del [http://site.icu-project.org/ projecto ICU].\nTu deberea [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations actualisar lo] si le uso de Unicode importa a te.",
-       "config-no-db": "Non poteva trovar un driver appropriate pro le base de datos! Es necessari installar un driver de base de datos pro PHP.\nLe sequente typos de base de datos es supportate: $1.\n\nSi tu compilava PHP tu mesme, reconfigura lo con un cliente de base de datos activate, per exemplo usante <code>./configure --with-mysqli</code>.\nSi tu installava PHP ex un pacchetto Debian o Ubuntu, tu debe installar equalmente, per exemplo, le modulo <code>php5-mysql</code>.",
+       "config-no-db": "Non poteva trovar un driver appropriate pro le base de datos! Es necessari installar un driver de base de datos pro PHP.\nLe sequente {{PLURAL:$2|typo|typos}} de base de datos es supportate: $1.\n\nSi tu compilava PHP tu mesme, reconfigura lo con un cliente de base de datos activate, per exemplo, usante <code>./configure --with-mysqli</code>.\nSi tu installava PHP ex un pacchetto Debian o Ubuntu, tu debe etiam installar, per exemplo, le modulo <code>php5-mysql</code>.",
        "config-outdated-sqlite": "'''Attention''': tu ha SQLite $1, que es inferior al version minimal requirite, $2. SQLite essera indisponibile.",
        "config-no-fts3": "'''Attention''': SQLite es compilate sin [//sqlite.org/fts3.html modulo FTS3]; functionalitate de recerca non essera disponibile in iste back-end.",
        "config-register-globals-error": "<strong>Error: Le option <code>[http://php.net/register_globals register_globals]</code> de PHP es active.\nIllo debe esser disactivate pro continuar le installation.</strong>\nVide [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] pro obtener adjuta sur como facer lo.",
@@ -61,7 +60,7 @@
        "config-magic-quotes-sybase": "'''Fatal: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] es active!'''\nIste option corrumpe le entrata de datos imprevisibilemente.\nTu non pote installar o usar MediaWiki si iste option non es disactivate.",
        "config-mbstring": "'''Fatal: [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] es active!'''\nIste option causa errores e pote corrumper datos imprevisibilemente.\nTu non pote installar o usar MediaWiki si iste option non es disactivate.",
        "config-safe-mode": "'''Aviso:''' Le [http://www.php.net/features.safe-mode modo secur] de PHP es active.\nIsto pote causar problemas, particularmente si es usate le incargamento de files e le supporto de <code>math</code>.",
-       "config-xml-bad": "Le modulo XML de PHP es mancante.\nMediaWiki require functiones de iste modulo e non functionara in iste configuration.\nSi tu usa Mandrake, installa le pacchetto php-xml.",
+       "config-xml-bad": "Le modulo XML de PHP es mancante.\nMediaWiki require functiones de iste modulo e non functionara in iste configuration.\nEs possibile que tu debe installar le pacchetto RPM php-xml.",
        "config-pcre-old": "<strong>Fatal:</strong> PCRE $1 o plus tarde es necessari.\nTu binario de PHP binary es ligate con PCRE $2.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Plus information].",
        "config-pcre-no-utf8": "'''Fatal''': Le modulo PCRE de PHP pare haber essite compilate sin supporto de PCRE_UTF8.\nMediaWiki require supporto de UTF-8 pro functionar correctemente.",
        "config-memory-raised": "Le <code>memory_limit</code> de PHP es $1, elevate a $2.",
        "config-db-install-account": "Conto de usator pro installation",
        "config-db-username": "Nomine de usator del base de datos:",
        "config-db-password": "Contrasigno del base de datos:",
-       "config-db-password-empty": "Per favor entra un contrasigno pro le nove usator del base de datos: $1.\nBen que il es possibile crear usatores sin contrasigno, isto non es secur.",
-       "config-db-username-empty": "Es necessari entrar un valor pro \"{{int:config-db-username}}\".",
        "config-db-install-username": "Entra le nomine de usator que essera usate pro connecter al base de datos durante le processo de installation. Isto non es le nomine de usator del conto MediaWiki; isto es le nomine de usator pro tu base de datos.",
        "config-db-install-password": "Entra le contrasigno que essera usate pro connecter al base de datos durante le processo de installation. Isto non es le contrasigno del conto MediaWiki; isto es le contrasigno pro tu base de datos.",
        "config-db-install-help": "Entra le nomine de usator e contrasigno que essera usate pro connecter al base de datos durante le processo de installation.",
index 8cd8dfe..cef7efe 100644 (file)
        "config-help-restart": "입력한 모든 저장된 데이터를 지우고 설치 과정을 다시 시작하겠습니까?",
        "config-restart": "예, 다시 시작합니다",
        "config-welcome": "=== 사용 환경 검사 ===\n기본 검사는 지금 이 환경이 미디어위키 설치에 적합한지 수행합니다.\n설치를 완료하는 방법에 대한 지원을 찾는다면 이 정보를 포함해야 하는 것을 기억하세요.",
-       "config-copyright": "=== 저작권 및 약관 ===\n\n$1\n\n이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.\n\n이 프로그램이 유용하게 사용될 수 있기를 바라지만 '''상용으로 사용'''되거나 '''특정 목적에 맞을 것'''이라는 것을 '''보증하지 않습니다'''.\n자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.\n\n당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
+       "config-copyright": "=== 저작권 및 약관 ===\n\n$1\n\n이 프로그램은 자유 소프트웨어입니다. 당신은 자유 소프트웨어 재단이 발표한 GNU 일반 공중 사용 허가서 버전 2나 그 이후 버전에 따라 이 프로그램을 재배포하거나 수정할 수 있습니다.\n\n이 프로그램이 유용하게 사용될 수 있기를 바라지만 <strong>상용으로 사용</strong>되거나 <strong>특정 목적에 맞을 것</strong>이라는 것을 <strong>보증하지 않습니다</strong>.\n자세한 내용은 GNU 일반 공중 사용 허가서를 참고하십시오.\n\n당신은 이 프로그램을 통해 <doclink href=Copying>GNU 일반 공중 사용 허가서 전문</doclink>을 받았습니다. 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA로 편지를 보내주시거나 [http://www.gnu.org/copyleft/gpl.html 온라인으로 읽어보시기] 바랍니다.",
        "config-sidebar": "* [//www.mediawiki.org 미디어위키 홈]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents 사용자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents 관리자 가이드]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ FAQ]\n----\n* <doclink href=Readme>읽어보기</doclink>\n* <doclink href=ReleaseNotes>릴리스 노트</doclink>\n* <doclink href=Copying>전문</doclink>\n* <doclink href=UpgradeDoc>업그레이드하기</doclink>",
        "config-env-good": "환경이 확인되었습니다.\n미디어위키를 설치할 수 있습니다.",
        "config-env-bad": "환경이 확인되었습니다.\n미디어위키를 설치할 수 없습니다.",
        "config-env-php": "PHP $1이(가) 설치되어 있습니다.",
        "config-env-hhvm": "HHMV $1이(가) 설치되어 있습니다.",
        "config-unicode-using-intl": "유니코드 정규화에 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용합니다.",
-       "config-unicode-pure-php-warning": "<strong>경고</strong>: 유니코드 정규화를 처리할 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용할 수 없기 때문에 느린 pure-PHP 구현을 대신 사용합니다.\n트래픽이 높은 사이트에서 실행하시려면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 유니코드 정규화]를 읽어보셔야 합니다.",
-       "config-unicode-update-warning": "<strong>경고</strong>: 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.\n만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 업그레이드]해야합니다.",
+       "config-unicode-pure-php-warning": "<strong>경고:</strong> 유니코드 정규화를 처리할 [http://pecl.php.net/intl intl PECL 확장 기능]을 사용할 수 없기 때문에 느린 pure-PHP 구현을 대신 사용합니다.\n트래픽이 높은 사이트에서 실행하시려면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 유니코드 정규화]를 읽어보셔야 합니다.",
+       "config-unicode-update-warning": "<strong>경고:</strong> 유니코드 정규화 래퍼의 설치된 버전은 [http://site.icu-project.org/ ICU 프로젝트]의 라이브러리의 이전 버전을 사용합니다.\n만약 유니코드를 사용하는 것에 대해 우려가 된다면 [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations 업그레이드]해야합니다.",
        "config-no-db": "적절한 데이터베이스 드라이버를 찾을 수 없습니다! PHP용 데이터베이스 드라이버를 설치해야 합니다.\n다음 데이터베이스 {{PLURAL:$2|유형을 지원합니다}}: $1.\n\nPHP를 직접 컴파일했다면, 예를 들어 <code>./configure --with-mysql</code>을 사용하여, 데이터베이스 클라이언트를 활성화하도록 다시 설정하세요.\n데비안이나 우분투 패키지에서 PHP를 설치했다면 <code>php5-mysql</code> 모듈도 설치해야 합니다.",
-       "config-outdated-sqlite": "<strong>경고</strong>: 최소인 $2 버전보다 낮은 SQLite $1(이)가 있습니다. SQLite를 사용할 수 없습니다.",
-       "config-no-fts3": "<strong>경고</strong>: SQLite를 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일하며, 검색 기능은 백엔드에 사용할 수 없습니다.",
+       "config-outdated-sqlite": "<strong>경고:</strong> 최소인 $2 버전보다 낮은 SQLite $1(이)가 있습니다. SQLite를 사용할 수 없습니다.",
+       "config-no-fts3": "<strong>경고:</strong> SQLite를 [//sqlite.org/fts3.html FTS3 모듈] 없이 컴파일하며, 검색 기능은 백엔드에 사용할 수 없습니다.",
        "config-register-globals-error": "<strong>오류: PHP의 <code>[http://php.net/register_globals register_globals]</code> 옵션이 활성화되어 있습니다.\n설치를 계속하려면 비활성화해야 합니다.</strong>\n어떻게 하는지에 대한 도움말에 대해서는 [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals]를 보세요.",
        "config-magic-quotes-gpc": "<strong>치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]이 활성화되어 있습니다!</strong>\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상을 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
        "config-magic-quotes-runtime": "<strong>치명: [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]이 활성화되어 있습니다!</strong>\n이 옵션은 데이터를 입력하는 데 예기치 않는 손상이 일으킵니다.\n이 옵션을 비활성화하지 않는 한 미디어위키를 설치하고 사용할 수 없습니다.",
        "config-pcre-old": "<strong>치명:</strong> PCRE $1 또는 그 이상이 필요합니다.\nPHP 바이너리는 PCRE $2에 연결되어 있습니다. [https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE 자세한 정보].",
        "config-pcre-no-utf8": "<strong>치명:</strong> PHP의 PCRE 모듈은 RCRE_UTF8 지원 없이 컴파일된 것 같습니다.\n미디어위키가 올바르게 작동하려면 UTF-8을 지원해야 합니다.",
        "config-memory-raised": "PHP의 <code>memory_limit</code>는 $1이며 $2(으)로 늘렸습니다.",
-       "config-memory-bad": "'''경고:''' PHP의 <code>memory_limit</code>는 $1입니다.\n아마도 너무 낮은 것 같습니다.\n설치가 실패할 수 있습니다!",
-       "config-ctype": "'''치명''': PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]을 지원하도록 하여 컴파일해야 합니다.",
+       "config-memory-bad": "<strong>경고:</strong> PHP의 <code>memory_limit</code>는 $1입니다.\n아마도 너무 낮은 것 같습니다.\n설치가 실패할 수 있습니다!",
+       "config-ctype": "<strong>치명</strong>: PHP는 [http://www.php.net/manual/en/ctype.installation.php Ctype 확장 기능]을 지원하도록 하여 컴파일해야 합니다.",
        "config-iconv": "<strong>치명</strong>: PHP는 [http://www.php.net/manual/en/iconv.installation.php iconv 확장 기능]을 지원하도록 하여 컴파일해야 합니다.",
-       "config-json": "'''치명:''' PHP가 JSON 지원이 없이 컴파일되었습니다.\n미디어위키를 설치하기 전에 PHP JSON 확장 기능이나 [http://pecl.php.net/package/jsonc PECL jsonc] 확장 기능 중 하나를 설치해야 합니다.\n* PHP 확장 기능은 Red Hat Enterprise Linux (CentOS) 5와 6에 포함되어 있지만, <code>/etc/php.ini</code>나 <code>/etc/php.d/json.ini</code>에서 활성화해야 합니다.\n* 2013년 5월 이후에 출시된 일부 리눅스 배포판은 PHP 확장 기능이 생략된 대신, <code>php5-json</code>이나 <code>php-pecl-jsonc</code>로 PECL 확장 기능이 포장되어 있습니다.",
+       "config-json": "<strong>치명:</strong> PHP가 JSON 지원이 없이 컴파일되었습니다.\n미디어위키를 설치하기 전에 PHP JSON 확장 기능이나 [http://pecl.php.net/package/jsonc PECL jsonc] 확장 기능 중 하나를 설치해야 합니다.\n* PHP 확장 기능은 Red Hat Enterprise Linux (CentOS) 5와 6에 포함되어 있지만, <code>/etc/php.ini</code>나 <code>/etc/php.d/json.ini</code>에서 활성화해야 합니다.\n* 2013년 5월 이후에 출시된 일부 리눅스 배포판은 PHP 확장 기능이 생략된 대신, <code>php5-json</code>이나 <code>php-pecl-jsonc</code>로 PECL 확장 기능이 포장되어 있습니다.",
        "config-xcache": "[http://xcache.lighttpd.net/ XCache]가 설치되었습니다",
        "config-apc": "[http://www.php.net/apc APC]가 설치되었습니다",
        "config-wincache": "[http://www.iis.net/download/WinCacheForPhp WinCache]가 설치되었습니다",
-       "config-no-cache": "'''경고:''' [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] 또는 [http://www.iis.net/download/WinCacheForPhp WinCache]를 찾을 수 없습니다.\n개체 캐싱을 활성화하지 않습니다.",
-       "config-mod-security": "'''경고''': 웹 서버에 [http://modsecurity.org/ mod_security]가 허용되었습니다. 잘못 설정된 경우 미디어위키나 사용자가 임의의 내용을 게시할 수 있는 다른 소프트웨어에 대한 문제를 일으킬 수 있습니다.\n[http://modsecurity.org/documentation/ mod_security] 문서를 참고하거나 임의의 오류가 발생할 경우 호스트의 지원 요청에 문의하십시오.",
+       "config-no-cache": "<strong>경고:</strong> [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] 또는 [http://www.iis.net/download/WinCacheForPhp WinCache]를 찾을 수 없습니다.\n개체 캐싱을 활성화하지 않습니다.",
+       "config-mod-security": "<strong>경고:</strong> 웹 서버에 [http://modsecurity.org/ mod_security]가 허용되었습니다. 잘못 설정된 경우 미디어위키나 사용자가 임의의 내용을 게시할 수 있는 다른 소프트웨어에 대한 문제를 일으킬 수 있습니다.\n[http://modsecurity.org/documentation/ mod_security] 문서를 참고하거나 임의의 오류가 발생할 경우 호스트의 지원 요청에 문의하십시오.",
        "config-diff3-bad": "GNU diff3를 찾을 수 없습니다.",
        "config-git": "Git 버전 관리 소프트웨어를 찾았습니다: <code>$1</code>.",
        "config-git-bad": "Git 버전 관리 소프트웨어를 찾을 수 없습니다.",
        "config-imagemagick": "ImageMagick를 찾았습니다: <code>$1</code>.\n올리기를 활성화할 경우 그림 섬네일이 활성화됩니다.",
        "config-gd": "내장된 GD 그래픽 라이브러리를 찾았습니다.\n올리기를 활성화할 경우 그림 섬네일이 활성화됩니다.",
        "config-no-scaling": "GD 라이브러리나 ImageMagick를 찾을 수 없습니다.\n그림 섬네일이 비활성화됩니다.",
-       "config-no-uri": "'''오류:''' 현재 URI를 확인할 수 없습니다.\n설치가 중단되었습니다.",
-       "config-no-cli-uri": "'''경고''': 기본값을 사용하여 <code>--scriptpath</code>를 지정하지 않았습니다: <code>$1</code>.",
+       "config-no-uri": "<strong>오류:</strong> 현재 URI를 확인할 수 없습니다.\n설치가 중단되었습니다.",
+       "config-no-cli-uri": "<strong>경고:</strong> 기본값을 사용하여 <code>--scriptpath</code>를 지정하지 않았습니다: <code>$1</code>.",
        "config-using-server": "\"<nowiki>$1</nowiki>\"(을)를 서버 이름으로 사용합니다.",
        "config-using-uri": "\"<nowiki>$1$2</nowiki>\"(을)를 서버 URL로 사용합니다.",
-       "config-uploads-not-safe": "'''경고:''' 올리기에 대한 기본 디렉터리(<code>$1</code>)는 임의의 스크립트 실행에 취약합니다.\n미디어위키는 보안 위협 때문에 모든 올려진 파일을 검사하지만, 올리기를 활성화하기 전에 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security 이 보안 취약점을 해결할 것]을 매우 권장합니다.",
-       "config-no-cli-uploads-check": "'''경고:''' 올리기를 위한 기본 디렉터리(<code>$1</code>)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.",
+       "config-uploads-not-safe": "<strong>경고:</strong> 올리기에 대한 기본 디렉터리(<code>$1</code>)는 임의의 스크립트 실행에 취약합니다.\n미디어위키는 보안 위협 때문에 모든 올려진 파일을 검사하지만, 올리기를 활성화하기 전에 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security 이 보안 취약점을 해결할 것]을 매우 권장합니다.",
+       "config-no-cli-uploads-check": "<strong>경고:</strong> 올리기를 위한 기본 디렉터리(<code>$1</code>)는 CLI를 설치하는 동안 임의의 스크립트 실행에 대한 취약점에 대해 검사되지 않습니다.",
        "config-brokenlibxml": "시스템에 버그가 있는 PHP와 libxml2의 조합이 있으며 미디어위키나 다른 웹 어플리케이션에 숨겨진 데이터 손상을 일으킬 수 있습니다.\nlibxml2 2.7.3 이후 버전으로 업그레이드하세요. ([https://bugs.php.net/bug.php?id=45996 PHP에 제기한 버그])\n설치가 중단되었습니다.",
        "config-suhosin-max-value-length": "수호신(Suhosin)이 설치되고 $1 바이트로 GET 매개 변수 <code>length</code>를 제한하고 있습니다.\n미디어위키의 ResourceLoader 구성 요소는 이 제한을 회피하지만 성능이 저하됩니다.\n가능하면 <code>php.ini</code>의 <code>suhosin.get.max_value_length</code>를 1024 이상으로 설정하고 <code>LocalSettings.php</code>의 <code>$wgResourceLoaderMaxQueryLength</code>를 같은 값으로 설정해야 합니다.",
        "config-db-type": "데이터베이스 종류:",
        "config-db-install-account": "설치를 위한 사용자 계정",
        "config-db-username": "데이터베이스 사용자 이름:",
        "config-db-password": "데이터베이스 비밀번호:",
-       "config-db-password-empty": "새 데이터베이스 사용자의 비밀번호를 입력하세요: $1.\n비밀번호 없이 사용자를 만들 수도 있지만 안전하지 않습니다.",
-       "config-db-username-empty": "\"{{int:config-db-username}}\"에 대한 값을 입력해야 합니다.",
        "config-db-install-username": "설치 과정 도중 데이터베이스에 연결할 때 사용할 사용자 이름을 입력하세요.\n미디어위키 계정의 사용자 이름이 아닌 데이터베이스의 사용자 이름입니다.",
        "config-db-install-password": "설치 과정 도중 데이터베이스에 연결할 때 사용할 비밀번호을 입력하세요.\n미디어위키 계정의 비밀번호가 아닌 데이터베이스의 비밀번호입니다.",
        "config-db-install-help": "설치 과정 중에 데이터베이스에 연결할 때 사용할 사용자 이름과 비밀번호를 입력하세요.",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 바이너리",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-charset-mysql4": "MySQL 4.0 UTF-8 하위 호환성",
-       "config-charset-help": "'''경고:''' MySQL 4.1에서 '''하위 호환 가능 UTF-8'''을 사용하고 나서 <code>mysqldump</code>로 데이터베이스를 백업하면 ASCII가 아닌 모든 문자를 파괴하고 손상된 백업을 되돌릴 수 없습니다!\n\n'''바이너리 모드'''에서 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.\nMySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.\n'''UTF-8 모드'''에서는 MySQL이 데이터를 사용하는 문자 집합을 알고 있기 때문에 적절하게 표현하고 변환할 수 있지만\n[//ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4#.EA.B8.B0.EB.B3.B8_.EB.8B.A4.EA.B5.AD.EC.96.B4_.ED.8F.89.EB.A9.B4 기본 다국어 평면] 밖에 있는 문자를 저장할 수 없습니다.",
+       "config-charset-help": "<strong>경고:</strong> MySQL 4.1에서 <strong>하위 호환 가능 UTF-8</strong>을 사용하고 나서 <code>mysqldump</code>로 데이터베이스를 백업하면 ASCII가 아닌 모든 문자를 파괴하고 손상된 백업을 되돌릴 수 없습니다!\n\n<strong>바이너리 모드</strong>에서 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.\nMySQL의 UTF-8 모드를 보다 더 효율적이고 유니코드 문자의 전체 범위를 사용할 수 있습니다.\n<strong>UTF-8 모드</strong>에서는 MySQL이 데이터를 사용하는 문자 집합을 알고 있기 때문에 적절하게 표현하고 변환할 수 있지만\n[//ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4#.EA.B8.B0.EB.B3.B8_.EB.8B.A4.EA.B5.AD.EC.96.B4_.ED.8F.89.EB.A9.B4 기본 다국어 평면] 밖에 있는 문자를 저장할 수 없습니다.",
        "config-mysql-old": "MySQL $1 이상이 필요하나 $2(이)가 있습니다.",
        "config-db-port": "데이터베이스 포트:",
        "config-db-schema": "미디어위키에 대한 스키마:",
        "config-db-schema-help": "보통 이 스키마는 문제가 없습니다.\n필요한 경우에만 바꾸세요.",
-       "config-pg-test-error": "'''$1''' 데이터베이스에 연결할 수 없습니다: $2",
+       "config-pg-test-error": "<strong>$1</strong> 데이터베이스에 연결할 수 없습니다: $2",
        "config-sqlite-dir": "SQLite 데이터 디렉터리:",
        "config-sqlite-dir-help": "SQLite는 하나의 파일에 모든 데이터를 저장합니다.\n\n입력한 디렉토리는 설치하는 동안 웹 서버가 쓸 수 있어야 합니다.\n\n이 디렉토리는 웹을 통해 접근할 수 <strong>없어야</strong> 합니다. PHP 파일이 있는 곳에 넣을 수 없는 것은 이 때문입니다.\n\n설치 관리자는 <code>.htaccess</code> 파일을 작성하지만, 이것이 실패하면 누군가가 원본 데이터베이스에 접근할 수 있습니다.\n데이터베이스는 원본 사용자 데이터(이메일 주소, 해시한 비밀번호)뿐만 아니라 삭제된 판과 위키의 다른 제한된 데이터를 포함합니다.\n\n예를 들어 <code>/var/lib/mediawiki/yourwiki</code>와 같이 다른 곳에 데이터베이스를 넣는 것이 좋습니다.",
        "config-oracle-def-ts": "기본 테이블공간:",
        "config-sqlite-readonly": "<code>$1</code> 파일은 쓸 수 없습니다.",
        "config-sqlite-cant-create-db": "<code>$1</code> 데이터베이스 파일을 만들 수 없습니다.",
        "config-sqlite-fts3-downgrade": "PHP가 FTS3 지원이 없어졌습니다. 테이블을 다운그레이드합니다",
-       "config-can-upgrade": "이 데이터베이스에 미디어위키 테이블이 있습니다.\n미디어위키 $1(으)로 업그레이드하려면 '''계속'''을 클릭하세요.",
-       "config-upgrade-done": "업그레이드가 완료되었습니다.\n\n이제 [$1 위키를 시작]할 수 있습니다.\n\n만약 <code>LocalSettings.php</code> 파일을 다시 만들고 싶다면 아래의 버튼을 클릭하세요.\n위키에 문제가 있지 않는 한 '''권장하지 않습니다'''.",
+       "config-can-upgrade": "이 데이터베이스에 미디어위키 테이블이 있습니다.\n미디어위키 $1(으)로 업그레이드하려면 <strong>계속</strong>을 클릭하세요.",
+       "config-upgrade-done": "업그레이드가 완료되었습니다.\n\n이제 [$1 위키를 시작]할 수 있습니다.\n\n만약 <code>LocalSettings.php</code> 파일을 다시 만들고 싶다면 아래의 버튼을 클릭하세요.\n위키에 문제가 있지 않는 한 <strong>권장하지 않습니다</strong>.",
        "config-upgrade-done-no-regenerate": "업그레이드가 완료되었습니다.\n\n이제 [$1 위키를 시작]할 수 있습니다.",
        "config-regenerate": "LocalSettings.php 다시 생성 →",
        "config-show-table-status": "<code>SHOW TABLE STATUS</code> 쿼리를 실패했습니다!",
-       "config-unknown-collation": "'''경고:''' 데이터베이스가 인식하지 않는 정렬을 사용하고 있습니다.",
+       "config-unknown-collation": "<strong>경고:</strong> 데이터베이스가 인식하지 않는 집합을 사용하고 있습니다.",
        "config-db-web-account": "웹 접근을 위한 데이터베이스 계정",
        "config-db-web-help": "위키의 일반적인 작업을 수행하는 동안 데이터베이스 서버에 연결하는 데 사용할 웹 서버의 계정 이름과 비밀번호를 선택하세요.",
        "config-db-web-account-same": "설치를 위해 같은 계정 사용",
        "config-mysql-engine": "저장소 엔진:",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
-       "config-mysql-myisam-dep": "'''경고''': MySQL을 위한 저장소 엔진으로 MyISAM을 선택하였습니다. MyISAM을 미디어위키에 사용하는 것은 좋지 않습니다.  이유는:\n* 테이블 잠금 때문에 동시 실행을 지원하지 않습니다\n* 다른 엔진보다 더 손상되는 경향이 있습니다\n* 미디어위키 코드베이스가 항상 정상적으로 MyISAM을 처리하지 않습니다\n\nMySQL이 InnoDB를 지원한다면, InnoDB를 선택할 것을 매우 권장합니다.\nMySQL이 InnoDB를 지원하지 않는다면, 업그레이드를 하시는 편이 좋습니다.",
-       "config-mysql-only-myisam-dep": "'''경고''': MyISAM은 이 기계에  유일하게 사용할 수 있는 MySQL용 저장소 엔진이며, 미디어위키에 사용하는 것은 좋지 않습니다. 이유는:\n* 테이블 잠금 때문에 동시 실행을 지원하지 않습니다\n* 다른 엔진보다 더 손상시키는 경향이 있습니다\n* 미디어위키 코드베이스가 항상 정상적으로 MyISAM을 처리하지 않습니다\n\n당신의 MySQL은 InnoDB를 지원하지 않으며, 업그레이드를 하는 것이 좋습니다.",
-       "config-mysql-engine-help": "'''InnoDB'''는 동시 실행 지원이 우수하기 때문에 대부분의 경우 최고의 옵션입니다.\n\n'''MyISAM'''은 단일 사용자나 읽기 전용 설치에서 더 빠를 수 있습니다.\nMyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실될 수 있습니다.",
+       "config-mysql-myisam-dep": "<strong>경고:</strong> MySQL을 위한 저장소 엔진으로 MyISAM을 선택하였습니다. MyISAM을 미디어위키에 사용하는 것은 좋지 않습니다.  이유는:\n* 테이블 잠금 때문에 동시 실행을 지원하지 않습니다\n* 다른 엔진보다 더 손상되는 경향이 있습니다\n* 미디어위키 코드베이스가 항상 정상적으로 MyISAM을 처리하지 않습니다\n\nMySQL이 InnoDB를 지원한다면, InnoDB를 선택할 것을 매우 권장합니다.\nMySQL이 InnoDB를 지원하지 않는다면, 업그레이드를 하시는 편이 좋습니다.",
+       "config-mysql-only-myisam-dep": "<strong>경고:</strong> MyISAM은 이 기계에  유일하게 사용할 수 있는 MySQL용 저장소 엔진이며, 미디어위키에 사용하는 것은 좋지 않습니다. 이유는:\n* 테이블 잠금 때문에 동시 실행을 지원하지 않습니다\n* 다른 엔진보다 더 손상시키는 경향이 있습니다\n* 미디어위키 코드베이스가 항상 정상적으로 MyISAM을 처리하지 않습니다\n\n당신의 MySQL은 InnoDB를 지원하지 않으며, 업그레이드를 하는 것이 좋습니다.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong>는 동시 실행 지원이 우수하기 때문에 대부분의 경우 최고의 옵션입니다.\n\n<strong>MyISAM</strong>은 단일 사용자나 읽기 전용 설치에서 더 빠를 수 있습니다.\nMyISAM 데이터베이스는 InnoDB 데이터베이스보다 더 자주 손실될 수 있습니다.",
        "config-mysql-charset": "데이터베이스 문자 집합:",
        "config-mysql-binary": "바이너리",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "'''바이너리 모드'''에서 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.\nMySQL의 UTF-8 모드보다 더 효율적이고, 유니코드 문자의 전체 범위를 사용할 수 있습니다.\n'''UTF-8 모드'''에서는 MySQL이 데이터를 사용하는 문자 집합을 알고 있기 때문에 적절하게 표현하고 변환할 수 있지만\n[//ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4#.EA.B8.B0.EB.B3.B8_.EB.8B.A4.EA.B5.AD.EC.96.B4_.ED.8F.89.EB.A9.B4 기본 다국어 평면] 밖에 있는 문자를 저장할 수 없습니다.",
+       "config-mysql-charset-help": "<strong>바이너리 모드</strong>에서 미디어위키는 바이너리 필드의 데이터베이스에 UTF-8 텍스트를 저장합니다.\nMySQL의 UTF-8 모드보다 더 효율적이고, 유니코드 문자의 전체 범위를 사용할 수 있습니다.\n<strong>UTF-8 모드</strong>에서는 MySQL이 데이터를 사용하는 문자 집합을 알고 있기 때문에 적절하게 표현하고 변환할 수 있지만\n[//ko.wikipedia.org/wiki/%EC%9C%A0%EB%8B%88%EC%BD%94%EB%93%9C_%ED%8F%89%EB%A9%B4#.EA.B8.B0.EB.B3.B8_.EB.8B.A4.EA.B5.AD.EC.96.B4_.ED.8F.89.EB.A9.B4 기본 다국어 평면] 밖에 있는 문자를 저장할 수 없습니다.",
        "config-mssql-auth": "인증 형식:",
        "config-mssql-install-auth": "설치 과정 중 데이터베이스에 연결하는 데 사용할 인증 형식을 선택하세요.\n\"{{int:config-mssql-windowsauth}}\"을 선택하시면 웹서버를 실행 중인 아무 사용자의 자격 증명이 사용됩니다.",
        "config-mssql-web-auth": "위키가 일반적인 작업을 수행하는 동안 데이터베이스 서버에 연결하는 데 사용할 인증 형식을 선택하세요.\n\n\"{{int:config-mssql-windowsauth}}\"을 선택하시면 웹서버를 실행 중인 아무 사용자의 자격 증명이 사용됩니다.",
        "config-profile-no-anon": "계정 만들기 필요",
        "config-profile-fishbowl": "승인된 편집자만",
        "config-profile-private": "비공개 위키",
-       "config-profile-help": "위키는 가능한 많은 사람들이 편집할 수 있도록 할 때 가장 뛰어난 역할을 합니다.\n미디어위키에서는 최근 바뀜을 검토하기 쉽고, 미숙하거나 악의적인 사용자의 어떠한 손실을 되돌리는 것이 쉽습니다.\n\n그러나 많은 사람이 미디어위키가 다양한 역할을 수행하는 데 유용하다는 것을 알고 있지만, 때로는 모든 사람에게 위키 방식의 장점을 설득하기 쉽지 않을 지도 모릅니다.\n그래서 선택할 수 있습니다.\n\n'''{{int:config-profile-wiki}}''' 모델은 로그인하지 않고도 누구나 편집할 수 있습니다.\n'''{{int:config-profile-no-anon}}'''인 위키에서는 편집자에게 추가적인 책임을 부여하지만, 부담 없는 기여를 저해할 수도 있습니다.\n\n'''{{int:config-profile-fishbowl}}''' 시나리오에서는 승인된 사용자만 편집할 수 있지만, 일반 사용자도 문서(문서 역사 포함)는 볼 수 있습니다.\n'''{{int:config-profile-private}}'''는 승인된 사용자만 문서를 볼 수 있으며, 승인된 사용자 그룹이 편집할 수 있습니다.\n\n더 복잡한 사용자 권한 설정은 설치한 후 사용할 수 있으며 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 관련 설명서 항목]을 참고하세요.",
+       "config-profile-help": "위키는 가능한 많은 사람들이 편집할 수 있도록 할 때 가장 뛰어난 역할을 합니다.\n미디어위키에서는 최근 바뀜을 검토하기 쉽고, 미숙하거나 악의적인 사용자의 어떠한 손실을 되돌리는 것이 쉽습니다.\n\n그러나 많은 사람이 미디어위키가 다양한 역할을 수행하는 데 유용하다는 것을 알고 있지만, 때로는 모든 사람에게 위키 방식의 장점을 설득하기 쉽지 않을 지도 모릅니다.\n그래서 선택할 수 있습니다.\n\n<strong>{{int:config-profile-wiki}}/<strong> 모델은 로그인하지 않고도 누구나 편집할 수 있습니다.\n<strong>{{int:config-profile-no-anon}}</strong>인 위키에서는 편집자에게 추가적인 책임을 부여하지만, 부담 없는 기여를 저해할 수도 있습니다.\n\n<strong>{{int:config-profile-fishbowl}}</strong> 시나리오에서는 승인된 사용자만 편집할 수 있지만, 일반 사용자도 문서(문서 역사 포함)는 볼 수 있습니다.\n<strong>{{int:config-profile-private}}</strong>는 승인된 사용자만 문서를 볼 수 있으며, 승인된 사용자 그룹이 편집할 수 있습니다.\n\n더 복잡한 사용자 권한 설정은 설치한 후 사용할 수 있으며 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 관련 설명서 항목]을 참조하세요.",
        "config-license": "저작권 및 라이선스:",
        "config-license-none": "라이선스 바닥글 없음",
        "config-license-cc-by-sa": "크리에이티브 커먼즈 저작자표시-동일조건변경허락",
        "config-email-watchlist": "주시문서 목록 알림 활성화",
        "config-email-watchlist-help": "환경 설정에서 활성화한 경우 사용자가 주시한 문서에 대한 알림을 받도록 활성화합니다.",
        "config-email-auth": "이메일 인증 활성화",
-       "config-email-auth-help": "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 바꿀 때마다 링크를 사용하여 이메일 주소를 확인해야 합니다.\n인증된 이메일 주소만 다른 사용자로부터의 이메일이나 바뀜 알림 이메일을 받을 수 있습니다.\n이메일 기능의 남용 가능성이 있기 때문에 공개 위키에서는 이 옵션을 설정할 것을 '''권장'''합니다.",
+       "config-email-auth-help": "이 설정이 활성화되어 있으면 사용자는 이메일 주소를 설정하거나 바꿀 때마다 링크를 사용하여 이메일 주소를 확인해야 합니다.\n인증된 이메일 주소만 다른 사용자로부터의 이메일이나 바뀜 알림 이메일을 받을 수 있습니다.\n이메일 기능의 남용 가능성이 있기 때문에 공개 위키에서는 이 옵션을 설정할 것을 <strong>권장</strong>합니다.",
        "config-email-sender": "반송 이메일 주소",
        "config-email-sender-help": "발신한 이메일에 대한 반송 주소로 사용할 이메일 주소를 입력하세요.\n반송할 때 보내는 주소입니다.\n대부분의 메일 서버는 적어도 도메인 이름 부분은 유효합니다.",
        "config-upload-settings": "그림과 파일 올리기",
        "config-upload-enable": "파일 올리기 활성화",
-       "config-upload-help": "파일 올리기는 서버에 잠재적인 보안 위험에 쉽게 노출될 수 있습니다.\n자세한 내용은 매뉴얼의 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security 보안 문단]을 참하세요.\n\n파일 올리기를 활성화하려면 미디어위키의 루트 디렉토리에 있는 <code>images</code> 하위 디렉토리에서 웹 서버가 기록할 수 있도록 모드를 바꿉니다.\n그 다음 이 옵션을 활성화합니다.",
+       "config-upload-help": "파일 올리기는 서버에 잠재적인 보안 위험에 쉽게 노출될 수 있습니다.\n자세한 내용은 매뉴얼의 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security 보안 문단]을 참하세요.\n\n파일 올리기를 활성화하려면 미디어위키의 루트 디렉토리에 있는 <code>images</code> 하위 디렉토리에서 웹 서버가 기록할 수 있도록 모드를 바꿉니다.\n그 다음 이 옵션을 활성화합니다.",
        "config-upload-deleted": "삭제된 파일에 대한 디렉터리:",
        "config-upload-deleted-help": "삭제된 파일을 보관할 디렉토리를 선택하세요.\n이상적으로 웹에서 접근할 수 없게 해야 합니다.",
        "config-logo": "로고 URL:",
        "config-logo-help": "미디어위키의 기본 스킨은 사이드바 메뉴 위에 135×160 픽셀의 로고의 공간을 포함하고 있습니다.\n적당한 크기로 그림을 올리고 여기에 URL을 입력하세요.\n\n로고가 상대적인 경로에 있으면 <code>$wgStylePath</code>나 <code>$wgScriptPath</code>를 사용할 수 있습니다.\n\n로고 사용을 원하지 않으면 이 상자를 비우세요.",
        "config-instantcommons": "인스턴트 공용 기능 활성화",
-       "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 인스턴트 공용]은 [//commons.wikimedia.org/ 위키미디어 공용] 사이트에서 찾을 수 있는 그림, 소리 및 다른 미디어를 위키에서 사용할 수 있도록 하는 기능입니다.\n이렇게 하려면 미디어위키가 인터넷에 접근해야합니다.\n\n위키미디어 공용 외에 기타 위키를 설정하는 방법에 대한 지침을 포함한, 기능에 대한 자세한 내용은 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 매뉴얼]을 참하세요.",
+       "config-instantcommons-help": "[//www.mediawiki.org/wiki/InstantCommons 인스턴트 공용]은 [//commons.wikimedia.org/ 위키미디어 공용] 사이트에서 찾을 수 있는 그림, 소리 및 다른 미디어를 위키에서 사용할 수 있도록 하는 기능입니다.\n이렇게 하려면 미디어위키가 인터넷에 접근해야합니다.\n\n위키미디어 공용 외에 기타 위키를 설정하는 방법에 대한 지침을 포함한, 기능에 대한 자세한 내용은 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgForeignFileRepos 매뉴얼]을 참하세요.",
        "config-cc-error": "크리에이티브 커먼즈 라이선스 선택기에 결과가 없습니다.\n수동으로 라이선스 이름을 입력하세요.",
        "config-cc-again": "다시 선택...",
        "config-cc-not-chosen": "원하는 크리에이티브 커먼즈 라이선스를 선택하고 \"진행\"을 클릭하세요.",
        "config-skins-missing": "스킨을 찾을 수 없습니다; 미디어위키는 당신이 적절한 스킨을 설치할 때까지 대체 스킨을 사용합니다.",
        "config-skins-must-enable-some": "적어도 활성화활 스킨 하나를 선택해야 합니다.",
        "config-skins-must-enable-default": "기본값으로 설정한 스킨은 반드시 활성화해야 합니다.",
-       "config-install-alreadydone": "'''경고:''' 이미 미디어위키를 설치했고 다시 설치하려고 합니다.\n다음 페이지로 진행하세요.",
+       "config-install-alreadydone": "<strong>경고:</strong> 이미 미디어위키를 설치했고 다시 설치하려고 합니다.\n다음 페이지로 진행하세요.",
        "config-install-begin": "\"{{int:config-continue}}\"을 누르면 미디어위키의 설치를 시작합니다.\n그래도 바꾸는 것을 원한다면 \"{{int:config-back}}\"를 누르세요.",
        "config-install-step-done": "완료",
        "config-install-step-failed": "실패",
        "config-install-user-missing": "지정한 \"$1\" 사용자가 존재하지 않습니다.",
        "config-install-user-missing-create": "지정된 \"$1\" 사용자가 존재하지 않습니다.\n사용자를 만드려면 아래의 \"계정 만들기\" 확인 상자를 클릭하세요.",
        "config-install-tables": "테이블을 만드는 중",
-       "config-install-tables-exist": "'''경고''': 미디어위키 테이블이 이미 있는 것 같습니다.\n테이블 만들기를 생략합니다.",
-       "config-install-tables-failed": "'''오류''': 다음 오류로 인해 테이블 만들기에 실패했습니다: $1",
+       "config-install-tables-exist": "<strong>경고:</strong> 미디어위키 테이블이 이미 있는 것 같습니다.\n테이블 만들기를 생략합니다.",
+       "config-install-tables-failed": "<strong>오류</strong>: 다음 오류로 인해 테이블 만들기에 실패했습니다: $1",
        "config-install-interwiki": "기본 인터위키 테이블을 채우는 중",
        "config-install-interwiki-list": "<code>interwiki.list</code> 파일을 불러올 수 없습니다.",
-       "config-install-interwiki-exists": "'''경고''': 인터위키 테이블이 이미 항목을 갖고 있는 것 같습니다.\n기본 목록을 건너뜁니다.",
+       "config-install-interwiki-exists": "<strong>경고:</strong> 인터위키 테이블이 이미 항목을 갖고 있는 것 같습니다.\n기본 목록을 건너뜁니다.",
        "config-install-stats": "통계를 초기화하는 중",
        "config-install-keys": "보안 키를 만드는 중",
-       "config-insecure-keys": "'''경고:''' 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)는 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 바꾸는 것을 고려하세요.",
+       "config-insecure-keys": "<strong>경고:</strong> 설치 중에 생성한 {{PLURAL:$2|보안 키}} ($1)는 완전히 안전하지 {{PLURAL:$2|않습니다}}. 직접 바꾸는 것을 고려하세요.",
        "config-install-updates": "불필요한 업데이트 실행 방지",
        "config-install-updates-failed": "<strong>오류:</strong> 다음 오류로 테이블 안에 업데이트 키를 넣기에 실패했습니다: $1",
        "config-install-sysop": "관리자 사용자 계정을 만드는 중",
        "config-help-tooltip": "확장하려면 클릭",
        "config-nofile": "\"$1\" 파일을 찾을 수 없습니다. 이미 삭제되었나요?",
        "config-extension-link": "당신의 위키가 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions 확장 기능]을 지원한다는 것을 알고 계십니까?\n\n[//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category 분류별 확장 기능]을 찾아보실 수 있습니다.",
-       "mainpagetext": "'''미디어위키가 성공적으로 설치되었습니다.'''",
+       "mainpagetext": "<strong>미디어위키가 성공적으로 설치되었습니다.</strong>",
        "mainpagedocfooter": "[//meta.wikimedia.org/wiki/Help:Contents 이곳]에서 위키 소프트웨어에 대한 정보를 얻을 수 있습니다.\n\n== 시작하기 ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings 설정하기 목록]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ 미디어위키 FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 릴리스 메일링 리스트]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources 내 언어로 미디어위키 지역화]"
 }
index 15debcb..03ef46d 100644 (file)
        "config-localsettings-incomplete": "Mer han en Dattei <code lang=\"en\"><code>LocalSettings.php</code>:</code> jefonge, ävver di schingk nit kumplätt ze sin.\nDe Varijable <code lang=\"en\">$1</code> es nit jesatz.\nBes esu joot, un donn di Dattei esu aanpaße, dat se jesaz ea, un dann donn op „{{int:config-continue}}“ klecke.",
        "config-localsettings-connection-error": "Ene Fähler es opjetrodde wi mer en Verbendong noh de Datebangk opmaache wullte met dä Enschtällonge uß dä Dattei <code lang=\"en\">LocalSettings</code> un et hät nit jeflupp. Bes esu joot un don dat repareere un versöhg et dann norr_ens.\n\n$1\n\n$1",
        "config-session-error": "Ene Fähler es opjetrodde beim Aanmelde för en Sezung: $1",
-       "config-session-expired": "De Daate för Ding Setzung sinn wall övverholld of afjeloufe.\nDe Setzungunge sin esu enjeshtallt, nit mieh wi $1 ze doore.\nDat kanns De verlängere, endämm dat De de <code lang=\"en\">session.gc_maxlifetime</code> en dä Dattei <code>php.ini</code> jrüüßer määß.\nDon dat Projramm för et Opsäze norr_ens aanschmiiße.",
+       "config-session-expired": "De Daate för Ding Setzung sinn wall övverholld of afjeloufe.\nDe Setzungunge sin esu enjeshtallt, nit mih wi $1 ze doore.\nDat kanns De verlängere, endämm dat De de <code lang=\"en\">session.gc_maxlifetime</code> en dä Dattei <code>php.ini</code> jrüüßer määß.\nDon dat Projramm för et Opsäze norr_ens aanschmiiße.",
        "config-no-session": "De Daate för Ding Setzung sinn verschött jejange.\nDonn en dä Dattei <code>php.ini</code> nohloore, ov dä <code lang=\"en\">session.save_path</code> op e zopaß Verzeijschneß zeisch.",
        "config-your-language": "De Schprohch beim Enreeschte:",
        "config-your-language-help": "Donn heh di Schprohch ußsöhke, di dat Enschtallzjuhnsprojramm kalle sull.",
        "config-wiki-language": "Dem Wiki sing Schprohch:",
        "config-wiki-language-help": "Donn heh di Schprohch ußsöhke, di et Wiki schtandattmääßesch kalle sull.",
-       "config-back": "← Retuur",
+       "config-back": "← Retuhr",
        "config-continue": "Wigger →",
        "config-page-language": "Schprohch",
        "config-page-welcome": "Wellkumme beim MehdijaWikki!",
@@ -40,7 +40,7 @@
        "config-page-copying": "Ben aam Kopeere",
        "config-page-upgradedoc": "Ben op der neuste Stand aam bränge",
        "config-page-existingwiki": "Mer han ald e Wiki!",
-       "config-help-restart": "Wells De all Ding enjejovve Sachee fottjeschmesse han, un dä janze Vörjang vun fürre aan neu aanfange?",
+       "config-help-restart": "Wells De all Ding enjejovve Saache fottjeschmeße han, un dä janze Vörjang vun fürre aan neu aanfange?",
        "config-restart": "Joh, neu aanfange!",
        "config-welcome": "=== Ömjevong Pröhfe ===\nMer maache en Aanzahl jrundlääje Pröhvunge, öm erus ze fenge, ov di Ömjävvong heh paß för Mediawiki opzesäze.\nWann de Hölp bem Opsäze hölls, saach wigger, wat heh erus kohm, alsu wat heh schteiht.",
        "config-copyright": "=== Urhävverrääsch un Lizänzbedengunge ===\n\n$1\n\nDat  Projramm heh es frei, mer kann et wiggerjävve un verdeijle un och verändere onger dä Bedengunge vun de  GNU <i lang=\"en\">General Public License</i> (Alljemeine öffentlesche Lizänz) wi se vun de <i lang=\"en\">Free Software Foundation</i> (de Schteftung för frei Projramme) veröffentlesch woode es. Dobei kanns De Der de Version 2 vun dä Lizanz ußsöhke, udder jeede Version donoh, wi et Der jefällt.\n\nDat Projramm weed wigger jejovve met dä Hoffnung, dat et jät nöz, ävver <strong>der ohne Jarrantie</strong>, sujaa der ohne de onußjeshproche Jarantie, <strong>verkoufbaa</strong> ze sin, udder <strong>för öhnds_ene beshtemmpte Zweck ze bruche</strong> ze sin.\nLiß de GNU <i lang=\"en\">General Public License</i> sellver, öm mieh ze erfahre.\n\nDo sullts en <doclink href=Copying>Kopie vun dä alljemene öffentlesche Lizänz vun dä GNU</doclink> (<i lang=\"en\">GNU General Public License</i>) zosamme met heh däm Projramm krääje han. Wann dat nit esu es, schrief aan de <i lang=\"en\">Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</i>, udder [http://www.gnu.org/copyleft/gpl.html liß se online övver et Internet].",
        "config-outdated-sqlite": "'''Opjepaß:''' <i lang=\"en\">SQLite</i> $1 es enschtaleert. Avver MediaWiki bruch <i lang=\"en\">SQLite</i> $2 udder hühter. <i lang=\"en\">SQLite</i> kann dröm nit enjesaz wääde.",
        "config-no-fts3": "'''Opjepaß:''' De Projramme vum <i lang=\"en\">SQLite</i> sin der ohne et [//sqlite.org/fts3.html FTS3-Modul] övversaz, dröm wääde de Funxjohne för et Söhke fähle.",
        "config-register-globals-error": "<strong>Fähler: dem PHP sing Enschtällong <code>[http://php.net/register_globals register_globals]</code> es aanjeschalldt.\nSe moß ußjeschalldt sin, domet mer heh wigger maache kann.</strong>\nLoor op dä Sigg [https://www.mediawiki.org/wiki/register_globals https://www.mediawiki.org/wiki/register_globals] wi mer se ußschallde kann.",
-       "config-magic-quotes-gpc": "'''Dä!''' Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]</code> es enjeschalldt.\nDä määt enjejovve Daate kapott, un doh draan kam_mer dann nix mieh repareere.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
-       "config-magic-quotes-runtime": "'''Dä!''' Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]</code> es enjeschalldt.\nDä määt enjejovve Daate kapott, un doh draan kam_mer dann nix mieh repareere.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
+       "config-magic-quotes-gpc": "<strong>Dä!</strong> Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-gpc magic_quotes_gpc]</code> es enjeschalldt.\nDä määt enjejovve Daate kapott, un doh draan kam_mer dann nix mih repareere.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
+       "config-magic-quotes-runtime": "<strong>Dä!</strong> Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]</code> es enjeschalldt.\nDä määt enjejovve Daate kapott, un doh draan kam_mer dann nix mieh repareere.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
        "config-magic-quotes-sybase": "'''Dä!''' Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase]</code> es enjeschalldt.\nDä määt enjejovve Daate kapott, un doh draan kam_mer dann nix mieh repareere.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
-       "config-mbstring": "'''Dä!''' Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]</code> es enjeschalldt.\nDat sorresch för Fähler un kann enjejovve Daate esu kapott maach, dat doh draan nix mieh ze repareere es.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
+       "config-mbstring": "<strong>Dä!</strong> Dem PHP singe Schallder <code lang=\"en\">[http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload]</code> es enjeschalldt.\nDat sorresch för Fähler un kann enjejovve Daate esu kapott maach, dat doh draan nix mih ze repareere es.\nDomet kam_mer MediaWiki nit ennreeshte un och nit loufe lohße.\nDat heiß, mer moß en affschallde, söns jeiht nix.",
        "config-safe-mode": "'''Opjepaß:''' Dem PHP singe <code lang=\"en\">[http://www.php.net/features.safe-mode safe mode]</code> es aanjeschalldt. Dat kann Ärjer maache, besönders beim Datteie Huhlaade bei de Ongershtözung för <code lang=\"en\">math</code>-Befähle.",
        "config-xml-bad": "Dem <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"PHP Hypertext Preprocessor\">PHP</i> sing <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Moduhl es nit ze fenge.\nMediaWiki bruch Funxjohne en däm Moduhl un deiht et esu nit.\nDe künns et nühdesch han, dat Pakätt \n„<code lang=\"en\" xml:lang=\"en\" dir=\"ltr\">php-xml</code>“ ze enschtallehre.",
        "config-pcre-old": "<strong>Fähler:</strong> PCRE $1 udder neuer es nüüdesch.\nPHP es jäz ävver met PCRE $2 zesamme jebonge.\n[https://www.mediawiki.org/wiki/Manual:Errors_and_symptoms/PCRE Mieh dohzoh].",
        "config-db-wiki-account": "Dä Name vun däm Aanwender för dä Zohjref op de Daatebangk em nomaale Bedrief:",
        "config-db-wiki-help": "Jiv ene Nahme un e Paßwoot aan, för dä Aanwänder för dä Zohjref op de Dahtebangk, wann et Wikki nommahl aam Loufe es.\nWann et dä Nahme en der Dahtebangk noch nit jit, un dä Aanwender för dä Zohjrevv op de Dahtebangk beim Enschtallehre jenohch Berääschtejonge hät, läht dä heh dä Aanwänder en der Dahtebangk aan un jidd_em di Rääschde, di dä nühdesch hät, ävver nit mih.",
        "config-db-prefix": "Vörsaz för de Name vun de Tabälle en de Daatebangk:",
-       "config-db-prefix-help": "Wann ein Daatebangk för mieh wi ein Wiki udder e Wiki uns söns jät zosamme jebruch weed, dann kam_mer noch jet vör de Tabälle ier Name säze. Esu ene Vörsaz sull dubblte Tabällename vermeide hälfe.\nDonn kein Zwescheräum enjävve!\n\nJewöhnlesch bliev dat Feld heh ävver läddesch.",
+       "config-db-prefix-help": "Wann ein Daatebangk för mih wi ein Wiki udder e Wiki uns söns jät zosamme jebruch weed, dann kam_mer noch jet vör de Tabälle ier Name säze. Esu ene Vörsaz sull dubblte Tabällename vermeide hälfe.\nDonn kein Zwescheräum enjävve!\n\nJewöhnlesch bliev dat Feld heh ävver läddesch.",
        "config-db-charset": "Dä Daatebangk iere Zeischesaz",
        "config-charset-mysql5-binary": "MySQL (4.1 udder 5.0) binär",
        "config-charset-mysql5": "MySQL (4.1 udder 5.0) UTF-8",
        "config-mysql-myisam": "MyISAM",
        "config-mysql-myisam-dep": "'''Opjepaß:''' <i lang=\"en\">MyISAM</i> es als Speicher för <i lang=\"en\">MySQL</i> nit besönders joot för et Zosammeschpell met MediaWiki zo bruche:\n* Dorj_et kumplätte Sperre vun Tabälle, künne koum ens Saache parrallel en dä Daatebangk jedonn wääde.\n* Dat Fomaat es anfällesch för Probleme met de Daate.\n* Et weed vun MediaWiki nit ėmmer zopaß ongerschtöz.\n\nWann Ding <i lang=\"en\">MySQL</i> et Schpeischere en <i lang=\"en\">InnoDB</i>-Datteije ongerschtöze deiht, dom_mer dat nohdröcklesch ämfähle.\nKann dä ẞööver dat nit, künnd et joode jelääjeheit sin, dä ens op der neuste Schtand ze bränge.",
        "config-mysql-only-myisam-dep": "'''Opjepaß:''' <i lang=\"en\" xml:lang=\"en\">MyISAM</i> es de einzeje Zoot Schpeischerprojramm för <i lang=\"en\" xml:lang=\"en\">MySQL</i> op dä Maschiin. Di es nit för MediaWiki ze ämfähle es, weil:\n* wääje dem Schpärre vun jannze Tabälle sin koum paralleele Axjuhne en dä Daatebangk möjjelesch,\n* ed es aanfällesch för Probleeme met de Daate es, un\n* et weed vun MediaWiki nit emmer jood ongerschtöz.\n\nDing Enschtallazjuhn vum <i lang=\"en\" xml:lang=\"en\">MySQL</i> kann nit met <i lang=\"en\" xml:lang=\"en\">InnoDB</i> ömjonn.\nWi wöhr et med ene neuere Väsjohn vum <i lang=\"en\" xml:lang=\"en\">MySQL</i>?",
-       "config-mysql-engine-help": "'''InnoDB''' es fö jewöhnlesch et beß, weil vill Zohjreffe op eijmohl joot ongershtöz wääde.\n\n'''MyISAM''' es flöcker op Rääschnere met bloß einem Minsch draan, un bei Wikis, di mer bloß lässe un nit schrieeve kann.\nMyISAM-Daatebangke han em Schnett mieh Fähler un jon flöcker kappott, wi InnoDB-Daatebangke.",
+       "config-mysql-engine-help": "<strong>InnoDB</strong> es fö jewöhnlesch et beß, weil vill Zohjreffe op eijmohl joot ongershtöz wääde.\n\n<strong>MyISAM</strong> es flöcker op Rääschnere met bloß einem Minsch draan, un bei Wikis, di mer bloß lässe un nit schrieeve kann.\nMyISAM-Daatebangke han em Schnett mih Fähler un jon flöcker kappott, wi InnoDB-Daatebangke.",
        "config-mysql-charset": "Dä Daatebangk iere Zeischesaz:",
        "config-mysql-binary": "binär",
        "config-mysql-utf8": "UTF-8",
index eb66bbb..6a17762 100644 (file)
@@ -2,7 +2,8 @@
        "@metadata": {
                "authors": [
                        "GreenZeb",
-                       "Papuass"
+                       "Papuass",
+                       "Silraks"
                ]
        },
        "config-information": "Informācija",
        "config-page-readme": "Lasīt mani",
        "config-page-releasenotes": "Informācija par laidienu",
        "config-page-copying": "Kopē",
+       "config-restart": "Jā, restartēt",
        "config-env-php": "PHP $1 ir uzstādīts.",
        "config-diff3-bad": "GNU diff3 nav atrasts.",
+       "config-db-username": "Datubāzes lietotājvārds:",
+       "config-db-password": "Datubāzes parole:",
        "config-db-charset": "Datubāzes rakstzīmju kopa",
        "config-charset-mysql5-binary": "MySQL 4.1/5.0 binārs",
        "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
        "config-header-mssql": "Microsoft SQL servera iestatījumi",
        "config-mysql-innodb": "InnoDB",
        "config-mysql-myisam": "MyISAM",
+       "config-admin-password": "Parole:",
+       "config-admin-password-confirm": "Parole vēlreiz:",
+       "config-admin-email": "E-pasta adrese:",
+       "config-cc-again": "Izvēlies vēlreiz...",
+       "config-install-step-done": "Gatavs",
+       "config-help": "palīdzība",
+       "config-help-tooltip": "uzspiediet, lai izvērstu",
        "mainpagetext": "'''MediaWiki veiksmīgi ieinstalēts'''",
        "mainpagedocfooter": "Izlasi [//meta.wikimedia.org/wiki/Help:Contents Lietotāja pamācību], lai iegūtu vairāk informācijas par Wiki programmatūras lietošanu.\n\n== Pirmie soļi ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Konfigurācijas iespēju saraksts]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki J&A]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Parakstīties uz paziņojumiem par jaunām MediaWiki versijām]"
 }
index e9deb7b..3916233 100644 (file)
        "config-unicode-pure-php-warning": "<strong>Fampitandremana: </strong>  Ny [http://pecl.php.net/intl itatra PECL intl] dia tsy misy mba hahazakana ny fampifenerana Unicode, ka mitontona amin'ny implementasiona PHP ranoray noho ny tsifisiany.\nRaha hametraka tranonkala be mpamangy ianao dia tokony mamaky ny [//www.mediawiki.org/wiki/Special:MyLanguage/Unicode_normalization_considerations ''Unicode normalization''] (amin'ny teny anglisy)",
        "config-db-username": "Anaram-pikamban'ny banky angona :",
        "config-db-password": "Tenimiafin'ny banky angona :",
+       "config-charset-mysql5-binary": "roafototra MySQL 4.1/5.0",
+       "config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
+       "config-charset-mysql4": "MySQL 4.0 miverinjaka UTF-8",
+       "config-db-port": "Seranam-banky angona:",
        "config-header-mysql": "Parametatr'i MySQL",
        "config-header-sqlite": "Parametatr'i SQLite",
        "config-header-oracle": "Parametatr'i Oracle",
index 582919d..76bfc04 100644 (file)
@@ -89,7 +89,7 @@
        "config-suhosin-max-value-length": "Suhosin е воспоставен и ја ограничува должината на параметарот GET на $1 бајти. Делот ResourceLoader на МедијаВики ќе ја заобиколува ова граница, но со тоа ќе се влоши делотворноста. Ако е воопшто можно, на <code>suhosin.get.max_value_length</code> треба да го наместите на 1024 или повеќе во <code>php.ini</code>, и да му ја зададете истата вредност на <code>$wgResourceLoaderMaxQueryLength</code> во <code>LocalSettings.php</code>.",
        "config-db-type": "Тип на база:",
        "config-db-host": "Домаќин на базата:",
-       "config-db-host-help": "Ð\90ко Ð²Ð°Ñ\88аÑ\82а Ð±Ð°Ð·Ð° Ðµ Ð½Ð° Ð´Ñ\80Ñ\83г Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87, Ñ\82огаÑ\88 Ñ\82Ñ\83ка Ð²Ð½ÐµÑ\81еÑ\82е Ð³Ð¾ Ð¸Ð¼ÐµÑ\82о Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð¸Ð»Ð¸ IP-адÑ\80еÑ\81аÑ\82а.\n\nÐ\90ко ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð·Ð°ÐµÐ´Ð½Ð¸Ñ\87ко (Ñ\81поделено) Ð²Ð´Ð¾Ð¼Ñ\83ваÑ\9aе, Ñ\82огаÑ\88 Ð²Ð°Ñ\88иоÑ\82 Ð²Ð´Ð¾Ð¼Ð¸Ñ\82ел Ñ\82Ñ\80еба Ð´Ð° Ð³Ð¾ Ð½Ð°Ð²ÐµÐ´Ðµ Ñ\82оÑ\87ноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð²Ð¾ Ð½ÐµÐ³Ð¾Ð²Ð°Ñ\82а Ð´Ð¾ÐºÑ\83менÑ\82аÑ\86иÑ\98а.\n\nÐ\90ко Ð²Ð¾Ñ\81поÑ\81Ñ\82авÑ\83ваÑ\82е Ð½Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87 Ð½Ð° Windows Ð¸ ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е MySQL, Ð¼Ð¾Ð¶Ð½Ð¾Ñ\81Ñ\82а â\80\9elocalhostâ\80\9c Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð½Ðµ Ñ\84Ñ\83нкÑ\86иониÑ\80а Ð·Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87коÑ\82о Ð¸Ð¼Ðµ. Ð\92о Ñ\82оÑ\98 Ñ\81лÑ\83Ñ\87аÑ\98, Ð¾Ð±Ð¸Ð´ÐµÑ\82е Ñ\81е Ñ\81о Ð²Ð½ÐµÑ\81Ñ\83ваÑ\9aе Ð½Ð° â\80\9e127.0.0.1â\80\9c ÐºÐ°ÐºÐ¾ Ð»Ð¾ÐºÐ°Ð»на IP-адреса.\n\nАко користите PostgreSQL, оставете го полево празно за да се поврзете преку Unix-приклучок.",
+       "config-db-host-help": "Ð\90ко Ð²Ð°Ñ\88аÑ\82а Ð±Ð°Ð·Ð° Ðµ Ð½Ð° Ð´Ñ\80Ñ\83г Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87, Ñ\82огаÑ\88 Ñ\82Ñ\83ка Ð²Ð½ÐµÑ\81еÑ\82е Ð³Ð¾ Ð¸Ð¼ÐµÑ\82о Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð¸Ð»Ð¸ IP-адÑ\80еÑ\81аÑ\82а.\n\nÐ\90ко ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð·Ð°ÐµÐ´Ð½Ð¸Ñ\87ко (Ñ\81поделено) Ð²Ð´Ð¾Ð¼Ñ\83ваÑ\9aе, Ñ\82огаÑ\88 Ð²Ð°Ñ\88иоÑ\82 Ð²Ð´Ð¾Ð¼Ð¸Ñ\82ел Ñ\82Ñ\80еба Ð´Ð° Ð³Ð¾ Ð½Ð°Ð²ÐµÐ´Ðµ Ñ\82оÑ\87ноÑ\82о Ð¸Ð¼Ðµ Ð½Ð° Ð´Ð¾Ð¼Ð°Ñ\9cиноÑ\82 Ð²Ð¾ Ð½ÐµÐ³Ð¾Ð²Ð°Ñ\82а Ð´Ð¾ÐºÑ\83менÑ\82аÑ\86иÑ\98а.\n\nÐ\90ко Ð²Ð¾Ñ\81поÑ\81Ñ\82авÑ\83ваÑ\82е Ð½Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87 Ð½Ð° Windows Ð¸ ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е MySQL, Ð¼Ð¾Ð¶Ð½Ð¾Ñ\81Ñ\82а â\80\9elocalhostâ\80\9c Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ð½Ðµ Ñ\84Ñ\83нкÑ\86иониÑ\80а Ð·Ð° Ð¾Ð¿Ñ\81лÑ\83жÑ\83ваÑ\87коÑ\82о Ð¸Ð¼Ðµ. Ð\92о Ñ\82оÑ\98 Ñ\81лÑ\83Ñ\87аÑ\98, Ð¾Ð±Ð¸Ð´ÐµÑ\82е Ñ\81е Ñ\81о Ð²Ð½ÐµÑ\81Ñ\83ваÑ\9aе Ð½Ð° â\80\9e127.0.0.1â\80\9c ÐºÐ°ÐºÐ¾ Ð¼ÐµÑ\81на IP-адреса.\n\nАко користите PostgreSQL, оставете го полево празно за да се поврзете преку Unix-приклучок.",
        "config-db-host-oracle": "TNS на базата:",
        "config-db-host-oracle-help": "Внесете важечко [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm месно име за поврзување]. На оваа воспоставка мора да ѝ биде видлива податотеката tnsnames.ora.<br />Ако користите клиентски библиотеки 10g или понови, тогаш можете да го користите и методот на иметнување на [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
        "config-db-wiki-settings": "Идентификувај го викиво",
        "config-db-install-account": "Корисничка смета за воспоставка",
        "config-db-username": "Корисничко име за базата:",
        "config-db-password": "Лозинка за базата:",
-       "config-db-password-empty": "Внесете лозинка за новиот корисник на базата: $1.\nИако може да се создаваат корисници без лозинка, тоа не е безбедно.",
-       "config-db-username-empty": "Мора да внесете вредност за „{{int:config-db-username}}“.",
        "config-db-install-username": "Внесете корисничко име што ќе се користи за поврзување со базата во текот на воспоставката. Ова не е корисничкото име од сметката на МедијаВики, туку посебно корисничко име за вашата база на податоци.",
        "config-db-install-password": "Внесете клозинка што ќе се користи за поврзување со базата во текот на воспоставката. Ова не е лозинката од сметката на МедијаВики, туку посебна лозинка за вашата база на податоци.",
        "config-db-install-help": "Внесете го корисничкото име и лозинката што ќе се користи за поврзување со базата на податоци во текот на воспоставката.",
index 741c198..da15667 100644 (file)
        "config-db-install-account": "Cunto utente pe' l'installazione",
        "config-db-username": "Nomme utente p' 'o database:",
        "config-db-password": "Password d' 'o database:",
-       "config-db-password-empty": "Avita nzertà na password pe' l'utente nuovo d' 'o database: $1.\nPure si fosse possibbele 'e crià ll'utente senza password chisto nun fosse sicuro.",
-       "config-db-username-empty": "Avita miette nu valore p' 'o \"{{int:config-db-username}}\"",
        "config-db-install-username": "Nzertate 'o nomme utente ca s'aussarrà pe' ve cullegà ô database pe' tramente ca se fà l'installazione. Chistu nun è 'o nomme utente d' 'o cunto MediaWiki; ma chillo p' 'o database vuosto.",
        "config-db-install-password": "Nzertate 'a password che s'ausarrà pe' ve putè cullegà ô database pe' tramente ca se fa l'installazione.\nChista nun è 'a password d' 'o cunto 'e MediaWiki; ma chilla p' 'o database vuosto.",
        "config-db-install-help": "Miette 'o nomme utente e 'a password ca sarrà usata quanno ve cullegate ô database pe' tramente ca facite 'a installazione.",
        "config-db-account-lock": "Aúsa 'o stisso nomme utente e password pe' l'operazione normale.",
-       "config-db-wiki-account": "Account utente p' 'o funzionamento nurmale",
+       "config-db-wiki-account": "Cunto utente p' 'o funzionamento nurmale",
        "config-db-wiki-help": "Miette 'o nomme utente e 'a password ca sarrà ausata pe' se cullegà ô database pe' l'operazione normale d' 'o wiki. Si 'o cunto nun esiste, e 'o cunto e installazione téne diritte sufficiente, sarrà criato ch' 'e diritte minime necessarie pe' putè faticà ncopp' 'o wiki.",
        "config-db-prefix": "Prefisso d' 'a tavolozza d' 'o database:",
        "config-db-prefix-help": "Si tenite abbesuogno 'e spartì nu database nfra cchiù wiki, o nfra MediaWiki e n'at'apprecazione web, putite scegliere d'azzeccà nu prefisso a tutte 'e nomme 'e tabbella, pe putè evità cunflitte.\nNun ausate abbacante.\n\n'O solito, stu campo se lassasse abbacante.",
        "config-regenerate": "Rigennera LocalSettings.php →",
        "config-show-table-status": "'A query <code>SHOW TABLE STATUS</code> è fallita!",
        "config-unknown-collation": "<strong>Attenziò:</strong> 'O database sta ausanno reule 'e cunfronto nun ricanusciute.",
-       "config-db-web-account": "Account d' 'o database pe' ne fà acciesso web",
+       "config-db-web-account": "Cunto d' 'o database pe' ne fà acciesso web",
        "config-db-web-help": "Scigliete 'o nomme utente e passwrod ca 'o web server ausarrà pe' se cullegà 'o server database, pe' tramente ca se fa' operazione normale d' 'o wiki.",
        "config-db-web-account-same": "Aúsa 'o stisso cunto comme quanno s'è fatta 'a installazione",
        "config-db-web-create": "Crìa 'o cunto si nun esiste ancora",
        "config-admin-error-password": "Errore interno quanno se steva a mpustà na password pe ll'ammenistratore \"<nowiki>$1</nowiki>\": <pre>$2</pre>",
        "config-admin-error-bademail": "Avite miso n'indirizzo e-mail invalido.",
        "config-subscribe": "Mettiteve dint' 'a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list 'e ll'annunciazione 'e verziune d' 'o software rilassate].",
+       "config-almost-done": "Avite quase fernuto!\nMo' putite zumpà 'a parta r' 'a configurazione e sempricemente installà 'a wiki.",
        "config-optional-continue": "Spiate cchiù dimanne.",
        "config-optional-skip": "Me so' scucciato già, installa surtanto 'o wiki.",
        "config-profile": "Profilo 'e deritte utente:",
        "config-profile-private": "Wiki privato",
        "config-license": "Copyright e licienza:",
        "config-license-none": "Nisciuno piede 'e paggena p' 'a licienza",
+       "config-license-cc-by-sa": "Creative Commons Attribuziona-SparteEguale",
+       "config-license-cc-by": "Creative Commons Attribuziona",
+       "config-license-cc-by-nc-sa": "Creative Commons Attribuziona-NunCommerciale-SparteEguale",
+       "config-license-cc-0": "Creative Commons Zero (Pubbreco dumminio)",
+       "config-license-gfdl": "GNU Free Documentation License 1.3 o verziune aroppo",
        "config-license-pd": "Pubbreco duminio",
+       "config-license-cc-choose": "Sciglite na licienza Creative Commons ca vulite",
+       "config-email-settings": "Mpustaziune email",
+       "config-enable-email": "Premmette mmasciate elettroniche r'asciuta",
+       "config-email-user": "Premmette email utente-utente",
+       "config-email-user-help": "Cunzente a ll'utente 'e mannà uno a ll'ato le mail si 'e teneno appicciate dint' 'e preferenze lloro.",
+       "config-email-usertalk": "Premmette notifiche p' 'e paggene 'e chiacchiera utente",
+       "config-email-usertalk-help": "Premmette ll'utente 'e ricevere notifiche p' 'e cagnamiente r' 'e paggene 'e chiacchiera lloro, si l'avessero appicciato dint' 'e preferenze lloro.",
+       "config-email-watchlist": "Appiccia notifica 'osservati speciale",
+       "config-email-auth": "Appiccia autenticaziona via email",
+       "config-email-sender": "Innerizo email e ritorno:",
+       "config-upload-settings": "Immaggene e upload",
+       "config-upload-enable": "Premmette 'a carreca 'e file",
+       "config-upload-deleted": "Cartella p' 'e file scancellate:",
+       "config-upload-deleted-help": "Sciglite na cartella addò s'astipassero 'e file scancellate.\nIdealmente a sta cartella nun s'avess'a trasì r' 'a web",
        "config-logo": "URL d\"o logo:",
-       "config-cc-again": "Selezziona 'e novo...",
+       "config-instantcommons": "Appiccia Instant Commons",
+       "config-cc-error": "'O selettore 'e licienze Creative Commons nun mmustaje nisciuno risultato.\nNzertate manualmente 'o nomme d' 'a licienza.",
+       "config-cc-again": "Selezziona n'ata vota...",
+       "config-cc-not-chosen": "Sciglite quale licienza Creative Commons desiderate e cliccate ncopp' 'a \"prucede\".",
+       "config-advanced-settings": "Configurazione avanzata",
+       "config-cache-options": "Mpustaziune p' 'a cache d'oggette:",
+       "config-memcached-servers": "Server memcached:",
+       "config-memcached-help": "Elenco 'e ll'indirizzi IP p' 'e putè ausà p' 'o Memcached.\nS'avess'a specificà uno pe' riga e scrivere 'a porta 'e trasuta. P'esempio:\n 127.0.0.1:11211\n 192.168.1.25:1234",
+       "config-memcache-needservers": "È stato scigliuto 'o tipo 'e caching Memcached, ma nun è stato mpustato 'a nisciunu server.",
+       "config-memcache-badip": "È stat'azzeccato nu indirizzo IP nun valido p' 'o Memcached: $1.",
+       "config-memcache-noport": "Nun avite specificato na porta p'ausà 'o server Memcached: $1. Si nun sapite 'a porta, chill' 'e default è 11211.",
+       "config-memcache-badport": "'E nummere 'e porta 'e Memcached avesser'a stà nfra $1 e $2.",
+       "config-extensions": "Estenziune",
+       "config-skins": "Skin",
        "config-install-step-done": "fatto",
+       "config-install-step-failed": "fallito",
+       "config-install-extensions": "Ncludenno 'estenziune",
+       "config-install-database": "Configurazione database",
+       "config-install-schema": "Crianno schema",
+       "config-install-pg-schema-not-exist": "'O schema PostgreSQL nun esiste.",
+       "config-install-pg-commit": "Mannann' 'e cagnamiente",
+       "config-install-pg-plpgsql": "Cuntrollo p' 'o lenguaggio PL/pgSQL",
+       "config-install-user": "Crianno utente 'e database",
+       "config-install-stats": "Inizializzaziona d' 'e statistiche",
+       "config-install-keys": "Generaziona d' 'e chiave segrete",
        "config-install-updates": "Mpiccià ll'agghiurnamiente ca nun fossero necessarie",
-       "config-help": "ajùto"
+       "config-install-sysop": "Crianno nu cunto utente ammenistratore",
+       "config-install-subscribe-fail": "Nun se pò sottoscrivere mediawiki-announce: $1",
+       "config-install-mainpage": "Crianno 'a paggena prencepale ch' 'e cuntenute predefinite",
+       "config-install-extension-tables": "Crianno tabelle pe' estenziune appicciate",
+       "config-install-mainpage-failed": "Nun se pò nzertà 'a paggena prencepale: $1",
+       "config-download-localsettings": "Scarreca <code>LocalSettings.php</code>",
+       "config-help": "ajùto",
+       "config-help-tooltip": "cliccà pe' 'o spannere",
+       "config-nofile": "'O file \"$1\" nun se trova. Forse è stato scancellato?",
+       "mainpagetext": "<strong>MediaWiki è stato nstallato.</strong>"
 }
index 14233aa..ab257dd 100644 (file)
@@ -1,5 +1,12 @@
 {
-       "@metadata": [],
+       "@metadata": {
+               "authors": [
+                       "HalanTul"
+               ]
+       },
+       "config-desc": "MediaWiki инсталлятора",
+       "config-title": "MediaWiki $1 туруоруу",
+       "config-information": "Бу туһунан",
        "mainpagetext": "'''«MediaWiki» сөпкө туруорулунна.'''",
        "mainpagedocfooter": "Биики программатын туһунан [//meta.wikimedia.org/wiki/Help:Contents справочникка] көрүөххүн сөп.\n\n== Саҕаланыыта ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Конфигурация уларытыытын параметрдара]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай испииһэгэ]"
 }
index 16f2e54..c4a230c 100644 (file)
@@ -2,9 +2,14 @@
        "@metadata": {
                "authors": [
                        "KhayR",
-                       "Seb35"
+                       "Seb35",
+                       "Ильнар"
                ]
        },
+       "config-back": "← Артка",
+       "config-continue": "Киләсе →",
+       "config-page-language": "Тел",
+       "config-page-welcome": "MediaWiki проектына рәхим итегез!",
        "mainpagetext": "«MediaWiki» уңышлы куелды.",
        "mainpagedocfooter": "Бу вики турында мәгълүматны [//meta.wikimedia.org/wiki/Help:Contents биредә] табып була.\n\n== Кайбер файдалы ресурслар ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Көйләнмәләр исемлеге (инг.)];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ MediaWiki турында еш бирелгән сораулар һәм җаваплар (инг.)];\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның яңа версияләре турында хәбәрләр яздырып алу];\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Localise MediaWiki for your language]."
 }
index 73e1764..b4a03cb 100644 (file)
        "config-db-install-account": "Обліковий запис користувача для встановлення",
        "config-db-username": "Ім'я користувача бази даних:",
        "config-db-password": "Пароль бази даних:",
-       "config-db-password-empty": "Будь ласка, введіть пароль для нового користувача бази даних: $1.\nХоча можна створювати користувачів без паролів, це не є безпечним.",
-       "config-db-username-empty": "Ви повинні ввести значення для \"{{int:config-db username}}\"",
        "config-db-install-username": "Введіть ім'я користувача, яке буде використано для підключення до бази даних під час процесу встановлення.\nЦе не ім'я користувача облікового запису MediaWiki; це ім'я користувача для Вашої бази даних.",
        "config-db-install-password": "Введіть пароль, який буде використано для підключення до бази даних під час процесу встановлення.\nЦе не пароль облікового запису MediaWiki; це пароль для Вашої бази даних.",
        "config-db-install-help": "Введіть ім'я користувача і пароль, які буде використано для підключення до бази даних у процесі встановлення.",
        "config-ns-site-name": "Те ж саме, що й назва вікі: $1",
        "config-ns-other": "Інше (вкажіть)",
        "config-ns-other-default": "MyWiki",
-       "config-project-namespace-help": "За прикладом Вікіпедії, чимало вікі тримають свої сторінки правил окремо від сторінок основного вмісту, у \"'''просторі імен проекту'''\".\nУсі назви сторінок у цьому просторі імен починаються з певного префікса, який Ви можете вказати тут.\nТрадиційно цей префікс виводиться з назви вікі, але не може містити знаки пунктуація, як-то \"#\" чи \":\".",
-       "config-ns-invalid": "Вказаний простір імен \"<nowiki>$1</nowiki>\" не припустимий.\nВкажіть інший простір імен проекту.",
-       "config-ns-conflict": "Вказаний простір імен \"<nowiki>$1</nowiki>\" конфліктує зі стандартним простором імен MediaWiki.\nВкажіть інший простір імен проекту.",
+       "config-project-namespace-help": "За прикладом Вікіпедії, чимало вікі тримають свої сторінки правил окремо від сторінок основного вмісту, у «'''просторі назв проекту'''».\nУсі назви сторінок у цьому просторі назв починаються з певного префікса, який Ви можете вказати тут.\nЗазвичай цей префікс виводиться з назви вікі, але не може містити знаки пунктуації, як-то «#» чи «:».",
+       "config-ns-invalid": "Вказаний простір назв «<nowiki>$1</nowiki>» не припустимий.\nВкажіть інший простір назв проекту.",
+       "config-ns-conflict": "Вказаний простір назв «<nowiki>$1</nowiki>» конфліктує зі стандартним простором назв MediaWiki.\nВкажіть інший простір назв проекту.",
        "config-admin-box": "Обліковий запис адміністратора",
        "config-admin-name": "Ваше ім'я користувача:",
        "config-admin-password": "Пароль:",
index 4713f45..414b6e9 100644 (file)
        "config-db-install-account": "用于安装的用户帐号",
        "config-db-username": "数据库用户名:",
        "config-db-password": "数据库密码:",
-       "config-db-password-empty": "请为新数据库用户$1输入密码。尽管您可以创建不使用密码的用户,但这样做并不安全。",
-       "config-db-username-empty": "您必须输入用于“{{int:config-db-username}}”的值。",
        "config-db-install-username": "请输入在安装过程中用于连接数据库的用户名。请勿输入MediaWiki帐号的用户名,请输入您数据库的用户名。",
        "config-db-install-password": "请输入在安装过程中用于连接数据库的密码。请勿输入MediaWiki帐号的密码,请输入您数据库的密码。",
        "config-db-install-help": "请输入在安装过程中用于连接数据库的用户名和密码。",
index 5dbe66e..d6f88a7 100644 (file)
        "config-mysql-charset": "資料庫字元集:",
        "config-mysql-binary": "二進制",
        "config-mysql-utf8": "UTF-8",
-       "config-mysql-charset-help": "在 <strong>二進制模式</strong> 下,MediaWiki 將 UTF-8 的文字儲存在二進位型態的欄位。\n這個模式比 MySQL 的 UTF-8 模式還要更有效,並且可以讓您使用完整的 Unicode 字元集。\n\n在 <storng>UTF-8 模式</strong> 下,MySQL 可以知道您的資料使用何種編碼儲存,您可以正常的取得與轉換內容,但此個模式只支援到 Unicode 中的  [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 基本多文種平面] 字元。",
+       "config-mysql-charset-help": "在 <strong>二進制模式</strong> 下,MediaWiki 將 UTF-8 的文字儲存在二進位型態的欄位。\n這個模式比 MySQL 的 UTF-8 模式還要更有效,並且可以讓您使用完整的 Unicode 字元集。\n\n在 <strong>UTF-8 模式</strong> 下,MySQL 可以知道您的資料使用何種編碼儲存,您可以正常的取得與轉換內容,但此個模式只支援到 Unicode 中的  [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes 基本多文種平面] 字元。",
        "config-mssql-auth": "身份驗證類型:",
        "config-mssql-install-auth": "請選擇安裝程序中要用來連線資料庫使用的身份驗證類型。\n若您選擇 \"{{int:config-mssql-windowsauth}}\",不論網頁伺服器是使用何種身份執行都會使用這組驗證資料。",
        "config-mssql-web-auth": "請選擇一般操作中要用來連線資料庫使用的身份驗證類型。\n若您選擇 \"{{int:config-mssql-windowsauth}}\",不論網頁伺服器是使用何種身份執行都會使用這組驗證資料。",
index e021d99..1b1a193 100644 (file)
@@ -365,6 +365,7 @@ LUA;
                        throw new UnexpectedValueException( "Job of type '{$job->getType()}' has no UUID." );
                }
 
+               $uuid = $job->metadata['uuid'];
                $conn = $this->getConnection();
                try {
                        static $script =
@@ -381,13 +382,13 @@ LUA;
                                        $this->getQueueKey( 'z-claimed' ), # KEYS[1]
                                        $this->getQueueKey( 'h-attempts' ), # KEYS[2]
                                        $this->getQueueKey( 'h-data' ), # KEYS[3]
-                                       $job->metadata['uuid'] # ARGV[1]
+                                       $uuid # ARGV[1]
                                ),
                                3 # number of first argument(s) that are keys
                        );
 
                        if ( !$res ) {
-                               wfDebugLog( 'JobQueueRedis', "Could not acknowledge {$this->type} job." );
+                               wfDebugLog( 'JobQueueRedis', "Could not acknowledge {$this->type} job $uuid." );
 
                                return false;
                        }
@@ -446,6 +447,7 @@ LUA;
                        // Get the last time this root job was enqueued
                        $timestamp = $conn->get( $this->getRootJobCacheKey( $params['rootJobSignature'] ) );
                } catch ( RedisException $e ) {
+                       $timestamp = false;
                        $this->throwRedisException( $conn, $e );
                }
 
index 3982134..ac5a6fd 100644 (file)
@@ -203,8 +203,8 @@ class JobRunner implements LoggerAwareInterface {
                                if ( $readyTs ) {
                                        // Record time to run for the job type
                                        $pickupDelay = $popTime - $readyTs;
-                                       $stats->timing( 'jobqueue.pickup_delay.all', $pickupDelay );
-                                       $stats->timing( "jobqueue.pickup_delay.$jType", $pickupDelay );
+                                       $stats->timing( 'jobqueue.pickup_delay.all', 1000 * $pickupDelay );
+                                       $stats->timing( "jobqueue.pickup_delay.$jType", 1000 * $pickupDelay );
                                }
 
                                // Mark the job as done on success or when the job cannot be retried
@@ -263,7 +263,10 @@ class JobRunner implements LoggerAwareInterface {
                                }
 
                                // Bail if near-OOM instead of in a job
-                               $this->assertMemoryOK();
+                               if ( !$this->checkMemoryOK() ) {
+                                       $response['reached'] = 'memory-limit';
+                                       break;
+                               }
                        }
                } while ( $job ); // stop when there are no jobs
 
@@ -392,9 +395,9 @@ class JobRunner implements LoggerAwareInterface {
        /**
         * Make sure that this script is not too close to the memory usage limit.
         * It is better to die in between jobs than OOM right in the middle of one.
-        * @throws MWException
+        * @return bool
         */
-       private function assertMemoryOK() {
+       private function checkMemoryOK() {
                static $maxBytes = null;
                if ( $maxBytes === null ) {
                        $m = array();
@@ -408,8 +411,14 @@ class JobRunner implements LoggerAwareInterface {
                }
                $usedBytes = memory_get_usage();
                if ( $maxBytes && $usedBytes >= 0.95 * $maxBytes ) {
-                       throw new MWException( "Detected excessive memory usage ($usedBytes/$maxBytes)." );
+                       $msg = "Detected excessive memory usage ($usedBytes/$maxBytes).";
+                       $this->debugCallback( $msg );
+                       $this->logger->error( $msg );
+
+                       return false;
                }
+
+               return true;
        }
 
        /**
index ca597ca..c7ee9b6 100644 (file)
@@ -59,6 +59,8 @@ final class EnqueueJob extends Job {
         * @return EnqueueJob
         */
        public static function newFromJobsByWiki( array $jobsByWiki ) {
+               $deduplicate = true;
+
                $jobMapsByWiki = array();
                foreach ( $jobsByWiki as $wiki => $jobs ) {
                        $jobMapsByWiki[$wiki] = array();
@@ -68,10 +70,19 @@ final class EnqueueJob extends Job {
                                } else {
                                        throw new InvalidArgumentException( "Jobs must be of type JobSpecification." );
                                }
+                               $deduplicate = $deduplicate && $job->ignoreDuplicates();
                        }
                }
 
-               return new self( Title::newMainPage(), array( 'jobsByWiki' => $jobMapsByWiki ) );
+               $eJob = new self(
+                       Title::makeTitle( NS_SPECIAL, 'Badtitle/' . __CLASS__ ),
+                       array( 'jobsByWiki' => $jobMapsByWiki )
+               );
+               // If *all* jobs to be pushed are to be de-duplicated (a common case), then
+               // de-duplicate this whole job itself to avoid build up in high traffic cases
+               $eJob->removeDuplicates = $deduplicate;
+
+               return $eJob;
        }
 
        public function run() {
index dec944a..c66da41 100644 (file)
@@ -83,6 +83,7 @@ class RefreshLinksJob extends Job {
                        } else {
                                $extraParams['masterPos'] = false;
                        }
+                       $extraParams['triggeredRecursive'] = true;
                        // Convert this into no more than $wgUpdateRowsPerJob RefreshLinks per-title
                        // jobs and possibly a recursive RefreshLinks job for the rest of the backlinks
                        $jobs = BacklinkJobUtils::partitionBacklinkJob(
@@ -196,6 +197,12 @@ class RefreshLinksJob extends Job {
                }
 
                $updates = $content->getSecondaryDataUpdates( $title, null, false, $parserOutput );
+               foreach ( $updates as $key => $update ) {
+                       if ( $update instanceof LinksUpdate && isset( $this->params['triggeredRecursive'] ) ) {
+                               $update->setTriggeredRecursive();
+                       }
+               }
+
                DataUpdate::runUpdates( $updates );
 
                InfoAction::invalidateCache( $title );
index a58fa8b..f558c48 100644 (file)
@@ -50,16 +50,16 @@ class ThumbnailRenderJob extends Job {
                                        return false;
                                }
                        } elseif ( $wgUploadThumbnailRenderMethod === 'http' ) {
-                               $status = $this->hitThumbUrl( $file, $transformParams );
+                               $thumbUrl = '';
+                               $status = $this->hitThumbUrl( $file, $transformParams, $thumbUrl );
 
                                wfDebug( __METHOD__ . ": received status {$status}\n" );
 
-                               if ( $status === 200 || $status === 301 || $status === 302 ) {
+                               // 400 happens when requesting a size greater or equal than the original
+                               if ( $status === 200 || $status === 301 || $status === 302 || $status === 400 ) {
                                        return true;
                                } elseif ( $status ) {
-                                       // Note that this currently happens (500) when requesting sizes larger then or
-                                       // equal to the original, which is harmless.
-                                       $this->setLastError( __METHOD__ . ': incorrect HTTP status ' . $status );
+                                       $this->setLastError( __METHOD__ . ': incorrect HTTP status ' . $status . ' when hitting ' . $thumbUrl );
                                        return false;
                                } else {
                                        $this->setLastError( __METHOD__ . ': HTTP request failure' );
@@ -75,7 +75,7 @@ class ThumbnailRenderJob extends Job {
                }
        }
 
-       protected function hitThumbUrl( $file, $transformParams ) {
+       protected function hitThumbUrl( $file, $transformParams, &$thumbUrl ) {
                global $wgUploadThumbnailRenderHttpCustomHost, $wgUploadThumbnailRenderHttpCustomDomain;
 
                $thumbName = $file->thumbName( $transformParams );
index 3d7fad5..100d2a4 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  */
 
+use Liuggio\StatsdClient\Entity\StatsdData;
 use Liuggio\StatsdClient\Entity\StatsdDataInterface;
 use Liuggio\StatsdClient\Factory\StatsdDataFactory;
 
@@ -75,6 +76,9 @@ class BufferingStatsdDataFactory extends StatsdDataFactory {
                return $entity;
        }
 
+       /**
+        * @return StatsdData[]
+        */
        public function getBuffer() {
                return $this->buffer;
        }
index f415c9b..b386a92 100644 (file)
@@ -406,9 +406,9 @@ class CSSMin {
                        // Path to the actual file on the filesystem
                        $localFile = "{$local}/{$file}";
                        if ( file_exists( $localFile ) ) {
-                               // Add version parameter as a time-stamp in ISO 8601 format,
-                               // using Z for the timezone, meaning GMT
-                               $url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $localFile ), -2 ) );
+                               // Add version parameter as the first five hex digits
+                               // of the MD5 hash of the file's contents.
+                               $url .= '?' . substr( md5_file( $localFile ), 0, 5 );
                                if ( $embed ) {
                                        $data = self::encodeImageAsDataURI( $localFile );
                                        if ( $data !== false ) {
index 2990782..141a515 100644 (file)
@@ -565,6 +565,14 @@ class JavaScriptMinifier {
                                $out .= ' ';
                                $lineLength++;
                        }
+                       if (
+                               $type === self::TYPE_LITERAL
+                               && ( $token === 'true' || $token === 'false' )
+                               && ( $state === self::EXPRESSION || $state === self::PROPERTY_EXPRESSION )
+                               && $last !== '.'
+                       ) {
+                               $token = ( $token === 'true' ) ? '!0' : '!1';
+                       }
 
                        $out .= $token;
                        $lineLength += $end - $pos; // += strlen( $token )
index 2e7ef88..6af3ed5 100644 (file)
@@ -72,7 +72,9 @@ class MultiHttpClient {
                                throw new Exception( "Cannot find CA bundle: " . $this->caBundlePath );
                        }
                }
-               static $opts = array( 'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost', 'proxy' );
+               static $opts = array(
+                       'connTimeout', 'reqTimeout', 'usePipelining', 'maxConnsPerHost', 'proxy'
+               );
                foreach ( $opts as $key ) {
                        if ( isset( $options[$key] ) ) {
                                $this->$key = $options[$key];
@@ -222,15 +224,17 @@ class MultiHttpClient {
                        $ch = $handles[$index];
                        curl_multi_remove_handle( $chm, $ch );
 
-                       $info = $infos[(int)$ch];
-
-                       $errno = $info['result'];
-                       if ( $errno !== 0 ) {
-                               $req['response']['error'] = "(curl error: $errno)";
-
-                               if ( function_exists( 'curl_strerror' ) ) {
-                                       $req['response']['error'] .= " " . curl_strerror( $errno );
+                       if ( isset( $infos[(int)$ch] ) ) {
+                               $info = $infos[(int)$ch];
+                               $errno = $info['result'];
+                               if ( $errno !== 0 ) {
+                                       $req['response']['error'] = "(curl error: $errno)";
+                                       if ( function_exists( 'curl_strerror' ) ) {
+                                               $req['response']['error'] .= " " . curl_strerror( $errno );
+                                       }
                                }
+                       } else {
+                               $req['response']['error'] = "(curl error: no status set)";
                        }
 
                        // For convenience with the list() operator
index ec8c36a..1cb544b 100644 (file)
@@ -49,6 +49,13 @@ class ObjectFactory {
         * constructor/callable. This behavior can be suppressed by adding
         * closure_expansion => false to the specification.
         *
+        * The specification may also contain a 'calls' key that describes method
+        * calls to make on the newly created object before returning it. This
+        * pattern is often known as "setter injection". The value of this key is
+        * expected to be an associative array with method names as keys and
+        * argument lists as values. The argument list will be expanded (or not)
+        * in the same way as the 'args' key for the main object.
+        *
         * @param array $spec Object specification
         * @return object
         * @throws InvalidArgumentException when object specification does not
@@ -58,18 +65,11 @@ class ObjectFactory {
         */
        public static function getObjectFromSpec( $spec ) {
                $args = isset( $spec['args'] ) ? $spec['args'] : array();
+               $expandArgs = !isset( $spec['closure_expansion'] ) ||
+                       $spec['closure_expansion'] === true;
 
-               if ( !isset( $spec['closure_expansion'] ) ||
-                       $spec['closure_expansion'] === true
-               ) {
-                       $args = array_map( function ( $value ) {
-                               if ( is_object( $value ) && $value instanceof Closure ) {
-                                       // If an argument is a Closure, call it.
-                                       return $value();
-                               } else {
-                                       return $value;
-                               }
-                       }, $args );
+               if ( $expandArgs ) {
+                       $args = static::expandClosures( $args );
                }
 
                if ( isset( $spec['class'] ) ) {
@@ -88,6 +88,33 @@ class ObjectFactory {
                        );
                }
 
+               if ( isset( $spec['calls'] ) && is_array( $spec['calls'] ) ) {
+                       // Call additional methods on the newly created object
+                       foreach ( $spec['calls'] as $method => $margs ) {
+                               if ( $expandArgs ) {
+                                       $margs = static::expandClosures( $margs );
+                               }
+                               call_user_func_array( array( $obj, $method ), $margs );
+                       }
+               }
+
                return $obj;
        }
+
+       /**
+        * Iterate a list and call any closures it contains.
+        *
+        * @param array $list List of things
+        * @return array List with any Closures replaced with their output
+        */
+       protected static function expandClosures( $list ) {
+               return array_map( function ( $value ) {
+                       if ( is_object( $value ) && $value instanceof Closure ) {
+                               // If $value is a Closure, call it.
+                               return $value();
+                       } else {
+                               return $value;
+                       }
+               }, $list );
+       }
 }
diff --git a/includes/libs/SamplingStatsdClient.php b/includes/libs/SamplingStatsdClient.php
new file mode 100644 (file)
index 0000000..f7afdb5
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Copyright 2015
+ *
+ * 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
+ */
+
+use Liuggio\StatsdClient\StatsdClient;
+use Liuggio\StatsdClient\Entity\StatsdData;
+use Liuggio\StatsdClient\Entity\StatsdDataInterface;
+
+/**
+ * A statsd client that applies the sampling rate to the data items before sending them.
+ *
+ * @since 1.26
+ */
+class SamplingStatsdClient extends StatsdClient {
+       /**
+        * Sets sampling rate for all items in $data.
+        * The sample rate specified in a StatsdData entity overrides the sample rate specified here.
+        *
+        * {@inheritDoc}
+        */
+       public function appendSampleRate( $data, $sampleRate = 1 ) {
+               if ( $sampleRate < 1 ) {
+                       array_walk( $data, function( $item ) use ( $sampleRate ) {
+                               /** @var $item StatsdData */
+                               if ( $item->getSampleRate() === 1 ) {
+                                       $item->setSampleRate( $sampleRate );
+                               }
+                       } );
+               }
+
+               return $data;
+       }
+
+       /**
+        * Sample the metrics according to their sample rate and send the remaining ones.
+        *
+        * {@inheritDoc}
+        */
+       public function send( $data, $sampleRate = 1 ) {
+               if ( !is_array( $data ) ) {
+                       $data = array( $data );
+               }
+               if ( !$data ) {
+                       return;
+               }
+               foreach ( $data as $item ) {
+                       if ( !( $item instanceof StatsdDataInterface ) ) {
+                               throw new InvalidArgumentException(
+                                       'SamplingStatsdClient does not accept stringified messages' );
+                       }
+               }
+
+               // add sampling
+               if ( $sampleRate < 1 ) {
+                       $data = $this->appendSampleRate( $data, $sampleRate );
+               }
+               $data = $this->sampleData( $data );
+
+               $messages = array_map( 'strval', $data );
+
+               // reduce number of packets
+               if ( $this->getReducePacket() ) {
+                       $data = $this->reduceCount( $data );
+               }
+               //failures in any of this should be silently ignored if ..
+               $written = 0;
+               try {
+                       $fp = $this->getSender()->open();
+                       if ( !$fp ) {
+                               return;
+                       }
+                       foreach ( $messages as $message ) {
+                               $written += $this->getSender()->write( $fp, $message );
+                       }
+                       $this->getSender()->close( $fp );
+               } catch ( Exception $e ) {
+                       $this->throwException( $e );
+               }
+
+               return $written;
+       }
+
+       /**
+        * Throw away some of the data according to the sample rate.
+        * @param StatsdDataInterface[] $data
+        * @return array
+        * @throws LogicException
+        */
+       protected function sampleData( $data ) {
+               $newData = array();
+               $mt_rand_max = mt_getrandmax();
+               foreach ( $data as $item ) {
+                       $samplingRate = $item->getSampleRate();
+                       if ( $samplingRate <= 0.0 || $samplingRate > 1.0 ) {
+                               throw new LogicException( 'Sampling rate shall be within ]0, 1]' );
+                       }
+                       if (
+                               $samplingRate === 1 ||
+                               ( mt_rand() / $mt_rand_max <= $samplingRate )
+                       ) {
+                               $newData[] = $item;
+                       }
+               }
+               return $newData;
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       protected function throwException( Exception $exception ) {
+               if ( !$this->getFailSilently() ) {
+                       throw $exception;
+               }
+       }
+}
diff --git a/includes/libs/ScopedPHPTimeout.php b/includes/libs/ScopedPHPTimeout.php
deleted file mode 100644 (file)
index d1493c3..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?php
-/**
- * Expansion of the PHP execution time limit feature for a function call.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * Class to expand PHP execution time for a function call.
- * Use this when performing changes that should not be interrupted.
- *
- * On construction, set_time_limit() is called and set to $seconds.
- * If the client aborts the connection, PHP will continue to run.
- * When the object goes out of scope, the timer is restarted, with
- * the original time limit minus the time the object existed.
- */
-class ScopedPHPTimeout {
-       protected $startTime; // float; seconds
-       protected $oldTimeout; // integer; seconds
-       protected $oldIgnoreAbort; // boolean
-
-       protected static $stackDepth = 0; // integer
-       protected static $totalCalls = 0; // integer
-       protected static $totalElapsed = 0; // float; seconds
-
-       /* Prevent callers in infinite loops from running forever */
-       const MAX_TOTAL_CALLS = 1000000;
-       const MAX_TOTAL_TIME = 300; // seconds
-
-       /**
-        * @param $seconds integer
-        */
-       public function __construct( $seconds ) {
-               if ( ini_get( 'max_execution_time' ) > 0 ) { // CLI uses 0
-                       if ( self::$totalCalls >= self::MAX_TOTAL_CALLS ) {
-                               trigger_error( "Maximum invocations of " . __CLASS__ . " exceeded." );
-                       } elseif ( self::$totalElapsed >= self::MAX_TOTAL_TIME ) {
-                               trigger_error( "Time limit within invocations of " . __CLASS__ . " exceeded." );
-                       } elseif ( self::$stackDepth > 0 ) { // recursion guard
-                               trigger_error( "Resursive invocation of " . __CLASS__ . " attempted." );
-                       } else {
-                               $this->oldIgnoreAbort = ignore_user_abort( true );
-                               $this->oldTimeout = ini_set( 'max_execution_time', $seconds );
-                               $this->startTime = microtime( true );
-                               ++self::$stackDepth;
-                               ++self::$totalCalls; // proof against < 1us scopes
-                       }
-               }
-       }
-
-       /**
-        * Restore the original timeout.
-        * This does not account for the timer value on __construct().
-        */
-       public function __destruct() {
-               if ( $this->oldTimeout ) {
-                       $elapsed = microtime( true ) - $this->startTime;
-                       // Note: a limit of 0 is treated as "forever"
-                       set_time_limit( max( 1, $this->oldTimeout - (int)$elapsed ) );
-                       // If each scoped timeout is for less than one second, we end up
-                       // restoring the original timeout without any decrease in value.
-                       // Thus web scripts in an infinite loop can run forever unless we
-                       // take some measures to prevent this. Track total time and calls.
-                       self::$totalElapsed += $elapsed;
-                       --self::$stackDepth;
-                       ignore_user_abort( $this->oldIgnoreAbort );
-               }
-       }
-}
index cc54fe7..0dbbaba 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Cache
  */
 class APCBagOStuff extends BagOStuff {
-
        /**
         * @var string String to append to each APC key. This may be changed
         *  whenever the handling of values is changed, to prevent existing code
@@ -35,7 +34,7 @@ class APCBagOStuff extends BagOStuff {
         **/
        const KEY_SUFFIX = ':1';
 
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                $val = apc_fetch( $key . self::KEY_SUFFIX );
 
                $casToken = $val;
index 65ff0ee..1e929e6 100644 (file)
@@ -59,6 +59,9 @@ abstract class BagOStuff implements LoggerAwareInterface {
        const ERR_UNREACHABLE = 2; // can't connect
        const ERR_UNEXPECTED = 3; // response gave some error
 
+       /** Bitfield constants for get()/getMulti() */
+       const READ_LATEST = 1; // use latest data for replicated stores
+
        public function __construct( array $params = array() ) {
                if ( isset( $params['logger'] ) ) {
                        $this->setLogger( $params['logger'] );
@@ -86,9 +89,10 @@ abstract class BagOStuff implements LoggerAwareInterface {
         * Get an item with the given key. Returns false if it does not exist.
         * @param string $key
         * @param mixed $casToken [optional]
+        * @param integer $flags Bitfield; supports READ_LATEST [optional]
         * @return mixed Returns false on failure
         */
-       abstract public function get( $key, &$casToken = null );
+       abstract public function get( $key, &$casToken = null, $flags = 0 );
 
        /**
         * Set an item.
@@ -138,11 +142,17 @@ abstract class BagOStuff implements LoggerAwareInterface {
         */
        protected function mergeViaCas( $key, $callback, $exptime = 0, $attempts = 10 ) {
                do {
+                       $this->clearLastError();
                        $casToken = null; // passed by reference
                        $currentValue = $this->get( $key, $casToken );
+                       if ( $this->getLastError() ) {
+                               return false; // don't spam retries (retry only on races)
+                       }
+
                        // Derive the new value from the old value
                        $value = call_user_func( $callback, $this, $key, $currentValue );
 
+                       $this->clearLastError();
                        if ( $value === false ) {
                                $success = true; // do nothing
                        } elseif ( $currentValue === false ) {
@@ -152,6 +162,9 @@ abstract class BagOStuff implements LoggerAwareInterface {
                                // Try to update the key, failing if it gets changed in the meantime
                                $success = $this->cas( $casToken, $key, $value, $exptime );
                        }
+                       if ( $this->getLastError() ) {
+                               return false; // IO error; don't spam retries
+                       }
                } while ( !$success && --$attempts );
 
                return $success;
@@ -185,14 +198,17 @@ abstract class BagOStuff implements LoggerAwareInterface {
                        return false;
                }
 
+               $this->clearLastError();
                $currentValue = $this->get( $key );
-               // Derive the new value from the old value
-               $value = call_user_func( $callback, $this, $key, $currentValue );
+               if ( !$this->getLastError() ) {
+                       // Derive the new value from the old value
+                       $value = call_user_func( $callback, $this, $key, $currentValue );
 
-               if ( $value === false ) {
-                       $success = true; // do nothing
-               } else {
-                       $success = $this->set( $key, $value, $exptime ); // set the new value
+                       if ( $value === false ) {
+                               $success = true; // do nothing
+                       } else {
+                               $success = $this->set( $key, $value, $exptime ); // set the new value
+                       }
                }
 
                if ( !$this->unlock( $key ) ) {
@@ -206,22 +222,23 @@ abstract class BagOStuff implements LoggerAwareInterface {
        /**
         * @param string $key
         * @param int $timeout Lock wait timeout; 0 for non-blocking [optional]
-        * @param int $expiry Lock expiry [optional]
+        * @param int $expiry Lock expiry [optional]; 1 day maximum
         * @return bool Success
         */
        public function lock( $key, $timeout = 6, $expiry = 6 ) {
+               $expiry = min( $expiry ?: INF, 86400 );
+
                $this->clearLastError();
                $timestamp = microtime( true ); // starting UNIX timestamp
                if ( $this->add( "{$key}:lock", 1, $expiry ) ) {
                        return true;
-               } elseif ( $this->getLastError() ) {
-                       return false;
+               } elseif ( $this->getLastError() || $timeout <= 0 ) {
+                       return false; // network partition or non-blocking
                }
 
                $uRTT = ceil( 1e6 * ( microtime( true ) - $timestamp ) ); // estimate RTT (us)
                $sleep = 2 * $uRTT; // rough time to do get()+set()
 
-               $locked = false; // lock acquired
                $attempts = 0; // failed attempts
                do {
                        if ( ++$attempts >= 3 && $sleep <= 5e5 ) {
@@ -233,7 +250,7 @@ abstract class BagOStuff implements LoggerAwareInterface {
                        $this->clearLastError();
                        $locked = $this->add( "{$key}:lock", 1, $expiry );
                        if ( $this->getLastError() ) {
-                               return false;
+                               return false; // network partition
                        }
                } while ( !$locked && ( microtime( true ) - $timestamp ) < $timeout );
 
@@ -248,6 +265,42 @@ abstract class BagOStuff implements LoggerAwareInterface {
                return $this->delete( "{$key}:lock" );
        }
 
+       /**
+        * Get a lightweight exclusive self-unlocking lock
+        *
+        * Note that the same lock cannot be acquired twice.
+        *
+        * This is useful for task de-duplication or to avoid obtrusive
+        * (though non-corrupting) DB errors like INSERT key conflicts
+        * or deadlocks when using LOCK IN SHARE MODE.
+        *
+        * @param string $key
+        * @param int $timeout Lock wait timeout; 0 for non-blocking [optional]
+        * @param int $expiry Lock expiry [optional]; 1 day maximum
+        * @return ScopedLock|null Returns null on failure
+        * @since 1.26
+        */
+       final public function getScopedLock( $key, $timeout = 6, $expiry = 30 ) {
+               $expiry = min( $expiry ?: INF, 86400 );
+
+               if ( !$this->lock( $key, $timeout, $expiry ) ) {
+                       return null;
+               }
+
+               $lSince = microtime( true ); // lock timestamp
+               $that = $this;
+
+               return new ScopedCallback( function() use ( $that, $key, $lSince, $expiry ) {
+                       $latency = .050; // latency skew (err towards keeping lock present)
+                       $age = ( microtime( true ) - $lSince + $latency );
+                       if ( ( $age + $latency ) >= $expiry ) {
+                               $this->logger->warning( "Lock for $key held too long ($age sec)." );
+                               return; // expired; it's not "safe" to delete the key
+                       }
+                       $that->unlock( $key );
+               } );
+       }
+
        /**
         * Delete all objects expiring before a certain date.
         * @param string $date The reference date in MW format
@@ -262,14 +315,13 @@ abstract class BagOStuff implements LoggerAwareInterface {
                return false;
        }
 
-       /* *** Emulated functions *** */
-
        /**
         * Get an associative array containing the item for each of the keys that have items.
         * @param array $keys List of strings
+        * @param integer $flags Bitfield; supports READ_LATEST [optional]
         * @return array
         */
-       public function getMulti( array $keys ) {
+       public function getMulti( array $keys, $flags = 0 ) {
                $res = array();
                foreach ( $keys as $key ) {
                        $val = $this->get( $key );
index 4ccf270..55e84b0 100644 (file)
@@ -27,7 +27,7 @@
  * @ingroup Cache
  */
 class EmptyBagOStuff extends BagOStuff {
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                return false;
        }
 
index 2c8b05a..e03c83f 100644 (file)
@@ -48,7 +48,7 @@ class HashBagOStuff extends BagOStuff {
                return true;
        }
 
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                if ( !isset( $this->bag[$key] ) ) {
                        return false;
                }
@@ -76,12 +76,4 @@ class HashBagOStuff extends BagOStuff {
 
                return true;
        }
-
-       public function lock( $key, $timeout = 6, $expiry = 6 ) {
-               return true;
-       }
-
-       function unlock( $key ) {
-               return true;
-       }
 }
index 1b24616..20e146d 100644 (file)
@@ -72,12 +72,16 @@ class ReplicatedBagOStuff extends BagOStuff {
                $this->readStore->setDebug( $debug );
        }
 
-       public function get( $key, &$casToken = null ) {
-               return $this->readStore->get( $key, $casToken );
+       public function get( $key, &$casToken = null, $flags = 0 ) {
+               return ( $flags & self::READ_LATEST )
+                       ? $this->writeStore->get( $key, $casToken, $flags )
+                       : $this->readStore->get( $key, $casToken, $flags );
        }
 
-       public function getMulti( array $keys ) {
-               return $this->readStore->getMulti( $keys );
+       public function getMulti( array $keys, $flags = 0 ) {
+               return ( $flags & self::READ_LATEST )
+                       ? $this->writeStore->getMulti( $keys, $flags )
+                       : $this->readStore->getMulti( $keys, $flags );
        }
 
        public function set( $key, $value, $exptime = 0 ) {
index e8837b3..36250b0 100644 (file)
@@ -128,9 +128,9 @@ class WANObjectCache {
         * Fetch the value of a key from cache
         *
         * If passed in, $curTTL is set to the remaining TTL (current time left):
-        *   - a) INF; if the key exists and has no TTL
-        *   - b) float (>=0); if the key exists and has a TTL
-        *   - c) float (<0); if the key is tombstoned or expired by $checkKeys
+        *   - a) INF; if the key exists, has no TTL, and is not expired by $checkKeys
+        *   - b) float (>=0); if the key exists, has a TTL, and is not expired by $checkKeys
+        *   - c) float (<0); if the key is tombstoned or existing but expired by $checkKeys
         *   - d) null; if the key does not exist and is not tombstoned
         *
         * If a key is tombstoned, $curTTL will reflect the time since delete().
@@ -258,7 +258,9 @@ class WANObjectCache {
         *
         * This instantiates a hold-off period where the key cannot be
         * written to avoid race conditions where dependent keys get updated
-        * with a stale value (e.g. from a DB slave).
+        * with a stale value (e.g. from a DB slave). This is implemented by
+        * storing a special "tombstone" value at the cache key that this
+        * class recognizes; get() calls will return false for the key.
         *
         * This should only be called when the underlying data (being cached)
         * changes in a significant way. If called twice on the same key, then
index 5362574..c480aa0 100644 (file)
  * @ingroup Cache
  */
 class WinCacheBagOStuff extends BagOStuff {
-
-       /**
-        * Get a value from the WinCache object cache
-        *
-        * @param string $key Cache key
-        * @param int $casToken [optional] Cas token
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                $val = wincache_ucache_get( $key );
 
                $casToken = $val;
@@ -48,14 +40,6 @@ class WinCacheBagOStuff extends BagOStuff {
                return $val;
        }
 
-       /**
-        * Store a value in the WinCache object cache
-        *
-        * @param string $key Cache key
-        * @param mixed $value Value to store
-        * @param int $expire Expiration time
-        * @return bool
-        */
        public function set( $key, $value, $expire = 0 ) {
                $result = wincache_ucache_set( $key, serialize( $value ), $expire );
 
@@ -64,25 +48,10 @@ class WinCacheBagOStuff extends BagOStuff {
                return ( is_array( $result ) && $result === array() ) || $result;
        }
 
-       /**
-        * Store a value in the WinCache object cache, race condition-safe
-        *
-        * @param int $casToken Cas token
-        * @param string $key Cache key
-        * @param int $value Object to store
-        * @param int $exptime Expiration time
-        * @return bool
-        */
        protected function cas( $casToken, $key, $value, $exptime = 0 ) {
                return wincache_ucache_cas( $key, $casToken, serialize( $value ) );
        }
 
-       /**
-        * Remove a value from the WinCache object cache
-        *
-        * @param string $key Cache key
-        * @return bool
-        */
        public function delete( $key ) {
                wincache_ucache_delete( $key );
 
index cfee923..9dbff6f 100644 (file)
  * @ingroup Cache
  */
 class XCacheBagOStuff extends BagOStuff {
-       /**
-        * Get a value from the XCache object cache
-        *
-        * @param string $key Cache key
-        * @param mixed $casToken Cas token
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                $val = xcache_get( $key );
 
                if ( is_string( $val ) ) {
@@ -51,14 +44,6 @@ class XCacheBagOStuff extends BagOStuff {
                return $val;
        }
 
-       /**
-        * Store a value in the XCache object cache
-        *
-        * @param string $key Cache key
-        * @param mixed $value Object to store
-        * @param int $expire Expiration time
-        * @return bool
-        */
        public function set( $key, $value, $expire = 0 ) {
                if ( !$this->isInteger( $value ) ) {
                        $value = serialize( $value );
@@ -68,12 +53,6 @@ class XCacheBagOStuff extends BagOStuff {
                return true;
        }
 
-       /**
-        * Remove a value from the XCache object cache
-        *
-        * @param string $key Cache key
-        * @return bool
-        */
        public function delete( $key ) {
                xcache_unset( $key );
                return true;
index 0145b02..f31a42a 100644 (file)
@@ -273,6 +273,10 @@ class LogFormatter {
                                                $text = wfMessage( 'modifiedarticleprotection' )
                                                        ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
                                                break;
+                                       case 'move_prot':
+                                               $text = wfMessage( 'movedarticleprotection' )
+                                                       ->rawParams( $target, $parameters['4::oldtitle'] )->inContentLanguage()->escaped();
+                                               break;
                                }
                                break;
 
diff --git a/includes/logging/ProtectLogFormatter.php b/includes/logging/ProtectLogFormatter.php
new file mode 100644 (file)
index 0000000..5327e07
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Formatter for protect log entries.
+ *
+ * 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
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ * @since 1.26
+ */
+
+/**
+ * This class formats protect log entries.
+ *
+ * @since 1.26
+ */
+class ProtectLogFormatter extends LogFormatter {
+       public function getPreloadTitles() {
+               $subtype = $this->entry->getSubtype();
+               if ( $subtype === 'move_prot' ) {
+                       $params = $this->extractParameters();
+                       return array( Title::newFromText( $params[3] ) );
+               }
+               return array();
+       }
+
+       protected function getMessageParameters() {
+               $params = parent::getMessageParameters();
+
+               $subtype = $this->entry->getSubtype();
+               if ( $subtype === 'move_prot' ) {
+                       $oldname = $this->makePageLink( Title::newFromText( $params[3] ), array( 'redirect' => 'no' ) );
+                       $params[3] = Message::rawParam( $oldname );
+               }
+
+               return $params;
+       }
+
+       protected function getParametersForApi() {
+               $entry = $this->entry;
+               $params = $entry->getParameters();
+
+               static $map = array(
+                       // param keys for move_prot sub type
+                       '4:title:oldtitle',
+                       '4::oldtitle' => '4:title:oldtitle',
+               );
+               foreach ( $map as $index => $key ) {
+                       if ( isset( $params[$index] ) ) {
+                               $params[$key] = $params[$index];
+                               unset( $params[$index] );
+                       }
+               }
+
+               return $params;
+       }
+}
index 0eed450..01b6afa 100644 (file)
  * Visit the documentation pages under http://meta.wikipedia.com/Enotif
  */
 class EmailNotification {
+
+       /**
+        * Notification is due to user's user talk being edited
+        */
+       const USER_TALK = 'user_talk';
+       /**
+        * Notification is due to a watchlisted page being edited
+        */
+       const WATCHLIST = 'watchlist';
+       /**
+        * Notification because user is notified for all changes
+        */
+       const ALL_CHANGES = 'all_changes';
+
        protected $subject, $body, $replyto, $from;
        protected $timestamp, $summary, $minorEdit, $oldid, $composed_common, $pageStatus;
        protected $mailTargets = array();
@@ -203,7 +217,7 @@ class EmailNotification {
        public function actuallyNotifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit,
                $oldid, $watchers, $pageStatus = 'changed' ) {
                # we use $wgPasswordSender as sender's address
-               global $wgEnotifWatchlist;
+               global $wgEnotifWatchlist, $wgBlockDisablesLogin;
                global $wgEnotifMinorEdits, $wgEnotifUserTalk;
 
                # The following code is only run, if several conditions are met:
@@ -236,21 +250,23 @@ class EmailNotification {
                                && $this->canSendUserTalkEmail( $editor, $title, $minorEdit )
                        ) {
                                $targetUser = User::newFromName( $title->getText() );
-                               $this->compose( $targetUser );
+                               $this->compose( $targetUser, self::USER_TALK );
                                $userTalkId = $targetUser->getId();
                        }
 
                        if ( $wgEnotifWatchlist ) {
                                // Send updates to watchers other than the current editor
+                               // and don't send to watchers who are blocked and cannot login
                                $userArray = UserArray::newFromIDs( $watchers );
                                foreach ( $userArray as $watchingUser ) {
                                        if ( $watchingUser->getOption( 'enotifwatchlistpages' )
                                                && ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) )
                                                && $watchingUser->isEmailConfirmed()
                                                && $watchingUser->getID() != $userTalkId
+                                               && !( $wgBlockDisablesLogin && $watchingUser->isBlocked() )
                                        ) {
                                                if ( Hooks::run( 'SendWatchlistEmailNotification', array( $watchingUser, $title, $this ) ) ) {
-                                                       $this->compose( $watchingUser );
+                                                       $this->compose( $watchingUser, self::WATCHLIST );
                                                }
                                        }
                                }
@@ -264,7 +280,7 @@ class EmailNotification {
                                continue;
                        }
                        $user = User::newFromName( $name );
-                       $this->compose( $user );
+                       $this->compose( $user, self::ALL_CHANGES );
                }
 
                $this->sendMails();
@@ -277,7 +293,7 @@ class EmailNotification {
         * @return bool
         */
        private function canSendUserTalkEmail( $editor, $title, $minorEdit ) {
-               global $wgEnotifUserTalk;
+               global $wgEnotifUserTalk, $wgBlockDisablesLogin;
                $isUserTalkPage = ( $title->getNamespace() == NS_USER_TALK );
 
                if ( $wgEnotifUserTalk && $isUserTalkPage ) {
@@ -287,6 +303,8 @@ class EmailNotification {
                                wfDebug( __METHOD__ . ": user talk page edited, but user does not exist\n" );
                        } elseif ( $targetUser->getId() == $editor->getId() ) {
                                wfDebug( __METHOD__ . ": user edited their own talk page, no notification sent\n" );
+                       } elseif ( $wgBlockDisablesLogin && $targetUser->isBlocked() ) {
+                               wfDebug( __METHOD__ . ": talk page owner is blocked and cannot login, no notification sent\n" );
                        } elseif ( $targetUser->getOption( 'enotifusertalkpages' )
                                && ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) )
                        ) {
@@ -423,8 +441,9 @@ class EmailNotification {
         *
         * Call sendMails() to send any mails that were queued.
         * @param User $user
+        * @param string $source
         */
-       function compose( $user ) {
+       function compose( $user, $source ) {
                global $wgEnotifImpersonal;
 
                if ( !$this->composed_common ) {
@@ -434,7 +453,7 @@ class EmailNotification {
                if ( $wgEnotifImpersonal ) {
                        $this->mailTargets[] = MailAddress::newFromUser( $user );
                } else {
-                       $this->sendPersonalised( $user );
+                       $this->sendPersonalised( $user, $source );
                }
        }
 
@@ -454,10 +473,11 @@ class EmailNotification {
         * Returns true if the mail was sent successfully.
         *
         * @param User $watchingUser
+        * @param string $source
         * @return bool
         * @private
         */
-       function sendPersonalised( $watchingUser ) {
+       function sendPersonalised( $watchingUser, $source ) {
                global $wgContLang, $wgEnotifUseRealName;
                // From the PHP manual:
                //   Note: The to parameter cannot be an address in the form of
@@ -478,8 +498,14 @@ class EmailNotification {
                                $wgContLang->userTime( $this->timestamp, $watchingUser ) ),
                        $this->body );
 
+               $headers = array();
+               if ( $source === self::WATCHLIST ) {
+                       $headers['List-Help'] = 'https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Watchlist';
+               }
+
                return UserMailer::send( $to, $this->from, $this->subject, $body, array(
                        'replyTo' => $this->replyto,
+                       'headers' => $headers,
                ) );
        }
 
index d83ae93..7c5f18d 100644 (file)
@@ -43,7 +43,7 @@ class UserMailer {
        protected static function sendWithPear( $mailer, $dest, $headers, $body ) {
                $mailResult = $mailer->send( $dest, $headers, $body );
 
-               # Based on the result return an error string,
+               // Based on the result return an error string,
                if ( PEAR::isError( $mailResult ) ) {
                        wfDebug( "PEAR::Mail failed: " . $mailResult->getMessage() . "\n" );
                        return Status::newFatal( 'pear-mail-error', $mailResult->getMessage() );
@@ -105,6 +105,7 @@ class UserMailer {
         * @param array $options:
         *              'replyTo' MailAddress
         *              'contentType' string default 'text/plain; charset=UTF-8'
+        *              'headers' array Extra headers to set
         *
         * Previous versions of this function had $replyto as the 5th argument and $contentType
         * as the 6th. These are still supported for backwards compatability, but deprecated.
@@ -116,9 +117,11 @@ class UserMailer {
        public static function send( $to, $from, $subject, $body, $options = array() ) {
                global $wgSMTP, $wgEnotifMaxRecips, $wgAdditionalMailParams, $wgAllowHTMLEmail;
                $contentType = 'text/plain; charset=UTF-8';
+               $headers = array();
                if ( is_array( $options ) ) {
                        $replyto = isset( $options['replyTo'] ) ? $options['replyTo'] : null;
                        $contentType = isset( $options['contentType'] ) ? $options['contentType'] : $contentType;
+                       $headers = isset( $options['headers'] ) ? $options['headers'] : $headers;
                } else {
                        // Old calling style
                        wfDeprecated( __METHOD__ . ' with $replyto as 5th parameter', '1.26' );
@@ -163,7 +166,7 @@ class UserMailer {
 
                wfDebug( __METHOD__ . ': sending mail to ' . implode( ', ', $to ) . "\n" );
 
-               # Make sure we have at least one address
+               // Make sure we have at least one address
                $has_address = false;
                foreach ( $to as $u ) {
                        if ( $u->address ) {
@@ -175,32 +178,32 @@ class UserMailer {
                        return Status::newFatal( 'user-mail-no-addy' );
                }
 
-               # Forge email headers
-               # -------------------
-               #
-               # WARNING
-               #
-               # DO NOT add To: or Subject: headers at this step. They need to be
-               # handled differently depending upon the mailer we are going to use.
-               #
-               # To:
-               #  PHP mail() first argument is the mail receiver. The argument is
-               #  used as a recipient destination and as a To header.
-               #
-               #  PEAR mailer has a recipient argument which is only used to
-               #  send the mail. If no To header is given, PEAR will set it to
-               #  to 'undisclosed-recipients:'.
-               #
-               #  NOTE: To: is for presentation, the actual recipient is specified
-               #  by the mailer using the Rcpt-To: header.
-               #
-               # Subject:
-               #  PHP mail() second argument to pass the subject, passing a Subject
-               #  as an additional header will result in a duplicate header.
-               #
-               #  PEAR mailer should be passed a Subject header.
-               #
-               # -- hashar 20120218
+               // Forge email headers
+               // -------------------
+               //
+               // WARNING
+               //
+               // DO NOT add To: or Subject: headers at this step. They need to be
+               // handled differently depending upon the mailer we are going to use.
+               //
+               // To:
+               //  PHP mail() first argument is the mail receiver. The argument is
+               //  used as a recipient destination and as a To header.
+               //
+               //  PEAR mailer has a recipient argument which is only used to
+               //  send the mail. If no To header is given, PEAR will set it to
+               //  to 'undisclosed-recipients:'.
+               //
+               //  NOTE: To: is for presentation, the actual recipient is specified
+               //  by the mailer using the Rcpt-To: header.
+               //
+               // Subject:
+               //  PHP mail() second argument to pass the subject, passing a Subject
+               //  as an additional header will result in a duplicate header.
+               //
+               //  PEAR mailer should be passed a Subject header.
+               //
+               // -- hashar 20120218
 
                $headers['From'] = $from->toString();
                $returnPath = $from->address;
@@ -208,9 +211,9 @@ class UserMailer {
 
                // Hook to generate custom VERP address for 'Return-Path'
                Hooks::run( 'UserMailerChangeReturnPath', array( $to, &$returnPath ) );
-               # Add the envelope sender address using the -f command line option when PHP mail() is used.
-               # Will default to the $from->address when the UserMailerChangeReturnPath hook fails and the
-               # generated VERP address when the hook runs effectively.
+               // Add the envelope sender address using the -f command line option when PHP mail() is used.
+               // Will default to the $from->address when the UserMailerChangeReturnPath hook fails and the
+               // generated VERP address when the hook runs effectively.
                $extraParams .= ' -f ' . $returnPath;
 
                $headers['Return-Path'] = $returnPath;
@@ -225,8 +228,8 @@ class UserMailer {
                $headers['List-Unsubscribe'] = '<' . SpecialPage::getTitleFor( 'Preferences' )
                        ->getFullURL( '', false, PROTO_CANONICAL ) . '>';
 
-               # Line endings need to be different on Unix and Windows due to
-               # the bug described at http://trac.wordpress.org/ticket/2603
+               // Line endings need to be different on Unix and Windows due to
+               // the bug described at http://trac.wordpress.org/ticket/2603
                if ( wfIsWindows() ) {
                        $endl = "\r\n";
                } else {
@@ -241,7 +244,10 @@ class UserMailer {
                                // remove the html body for text email fall back
                                $body = $body['text'];
                        } else {
-                               require_once 'Mail/mime.php';
+                               // Check if pear/mail_mime is already loaded (via composer)
+                               if ( !class_exists( 'Mail_mime' ) ) {
+                                       require_once 'Mail/mime.php';
+                               }
                                if ( wfIsWindows() ) {
                                        $body['text'] = str_replace( "\n", "\r\n", $body['text'] );
                                        $body['html'] = str_replace( "\n", "\r\n", $body['html'] );
@@ -278,14 +284,14 @@ class UserMailer {
                }
 
                if ( is_array( $wgSMTP ) ) {
-                       #
-                       # PEAR MAILER
-                       #
-
-                       if ( !stream_resolve_include_path( 'Mail.php' ) ) {
-                               throw new MWException( 'PEAR mail package is not installed' );
+                       // Check if pear/mail is already loaded (via composer)
+                       if ( !class_exists( 'Mail' ) ) {
+                               // PEAR MAILER
+                               if ( !stream_resolve_include_path( 'Mail.php' ) ) {
+                                       throw new MWException( 'PEAR mail package is not installed' );
+                               }
+                               require_once 'Mail.php';
                        }
-                       require_once 'Mail.php';
 
                        MediaWiki\suppressWarnings();
 
@@ -301,17 +307,17 @@ class UserMailer {
 
                        $headers['Subject'] = self::quotedPrintable( $subject );
 
-                       # When sending only to one recipient, shows it its email using To:
+                       // When sending only to one recipient, shows it its email using To:
                        if ( count( $to ) == 1 ) {
                                $headers['To'] = $to[0]->toString();
                        }
 
-                       # Split jobs since SMTP servers tends to limit the maximum
-                       # number of possible recipients.
+                       // Split jobs since SMTP servers tends to limit the maximum
+                       // number of possible recipients.
                        $chunks = array_chunk( $to, $wgEnotifMaxRecips );
                        foreach ( $chunks as $chunk ) {
                                $status = self::sendWithPear( $mail_object, $chunk, $headers, $body );
-                               # FIXME : some chunks might be sent while others are not!
+                               // FIXME : some chunks might be sent while others are not!
                                if ( !$status->isOK() ) {
                                        MediaWiki\restoreWarnings();
                                        return $status;
@@ -320,9 +326,9 @@ class UserMailer {
                        MediaWiki\restoreWarnings();
                        return Status::newGood();
                } else {
-                       #
-                       # PHP mail()
-                       #
+                       //
+                       // PHP mail()
+                       //
                        if ( count( $to ) > 1 ) {
                                $headers['To'] = 'undisclosed-recipients:;';
                        }
@@ -418,7 +424,7 @@ class UserMailer {
         * @return string
         */
        public static function quotedPrintable( $string, $charset = '' ) {
-               # Probably incomplete; see RFC 2045
+               // Probably incomplete; see RFC 2045
                if ( empty( $charset ) ) {
                        $charset = 'UTF-8';
                }
index 05d12c4..ff4dcee 100644 (file)
@@ -219,8 +219,8 @@ class WebPHandler extends BitmapHandler {
 
                return array(
                        'compression' => 'unknown',
-                       'animated' => ($flags[1] & self::VP8X_ANIM) == self::VP8X_ANIM,
-                       'transparency' => ($flags[1] & self::VP8X_ALPHA) == self::VP8X_ALPHA,
+                       'animated' => ( $flags[1] & self::VP8X_ANIM ) == self::VP8X_ANIM,
+                       'transparency' => ( $flags[1] & self::VP8X_ALPHA ) == self::VP8X_ALPHA,
                        'width' => ( $width[1] & 0xFFFFFF ) + 1,
                        'height' => ( $height[1] & 0xFFFFFF ) + 1
                );
@@ -271,7 +271,7 @@ class WebPHandler extends BitmapHandler {
                $ser = $image->getMetadata();
                if ( $ser ) {
                        $metadata = unserialize( $ser );
-                       if ( isset($metadata['animated']) && $metadata['animated'] === true ) {
+                       if ( isset( $metadata['animated'] ) && $metadata['animated'] === true ) {
                                return true;
                        }
                }
index eeca9b1..e545aa5 100644 (file)
@@ -57,12 +57,7 @@ class MemcachedBagOStuff extends BagOStuff {
                return $params;
        }
 
-       /**
-        * @param string $key
-        * @param mixed $casToken [optional]
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                return $this->client->get( $this->encodeKey( $key ), $casToken );
        }
 
index f2c4928..7e6a4d7 100644 (file)
@@ -115,12 +115,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                $this->client->addServers( $servers );
        }
 
-       /**
-        * @param string $key
-        * @param float $casToken [optional]
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                $this->debugLog( "get($key)" );
                $result = $this->client->get( $this->encodeKey( $key ), null, $casToken );
                $result = $this->checkResult( $key, $result );
@@ -238,11 +233,7 @@ class MemcachedPeclBagOStuff extends MemcachedBagOStuff {
                return $result;
        }
 
-       /**
-        * @param array $keys
-        * @return array
-        */
-       public function getMulti( array $keys ) {
+       public function getMulti( array $keys, $flags = 0 ) {
                $this->debugLog( 'getMulti(' . implode( ', ', $keys ) . ')' );
                $callback = array( $this, 'encodeKey' );
                $result = $this->client->getMulti( array_map( $callback, $keys ) );
index 6fba61b..69792ad 100644 (file)
@@ -57,11 +57,7 @@ class MemcachedPhpBagOStuff extends MemcachedBagOStuff {
                $this->client->set_debug( $debug );
        }
 
-       /**
-        * @param array $keys
-        * @return array
-        */
-       public function getMulti( array $keys ) {
+       public function getMulti( array $keys, $flags = 0 ) {
                $callback = array( $this, 'encodeKey' );
                return $this->client->get_multi( array_map( $callback, $keys ) );
        }
index be54e4d..b5f3bd9 100644 (file)
@@ -29,7 +29,7 @@
  * @ingroup Cache
  */
 class MultiWriteBagOStuff extends BagOStuff {
-       /** @var array BagOStuff[] */
+       /** @var BagOStuff[] */
        protected $caches;
 
        /**
@@ -61,14 +61,9 @@ class MultiWriteBagOStuff extends BagOStuff {
                $this->doWrite( 'setDebug', $debug );
        }
 
-       /**
-        * @param string $key
-        * @param mixed $casToken [optional]
-        * @return bool|mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                foreach ( $this->caches as $cache ) {
-                       $value = $cache->get( $key );
+                       $value = $cache->get( $key, $casToken, $flags );
                        if ( $value !== false ) {
                                return $value;
                        }
index c5850b6..8a99f53 100644 (file)
@@ -29,9 +29,13 @@ use MediaWiki\Logger\LoggerFactory;
  * The word "cache" has two main dictionary meanings, and both
  * are used in this factory class. They are:
  *   - a) A place to store copies or computations on existing data
- *     for higher access speeds (the computer science definition)
+ *        for higher access speeds (the computer science definition)
  *   - b) A place to store lightweight data that is not canonically
- *     stored anywhere else (e.g. a "hoard" of objects)
+ *        stored anywhere else (e.g. a "hoard" of objects)
+ *
+ * The former should always use strongly consistent stores, so callers don't
+ * have to deal with stale reads. The later may be eventually consistent, but
+ * callers can use BagOStuff:READ_LATEST to see the latest available data.
  *
  * @ingroup Cache
  */
@@ -238,9 +242,10 @@ class ObjectCache {
         * In general, this means avoiding updates on idempotent HTTP requests and
         * avoiding an assumption of perfect serializability (or accepting anomalies).
         * Reads may be eventually consistent or data might rollback as nodes flap.
+        * Callers can use BagOStuff:READ_LATEST to see the latest available data.
         *
-        * @since 1.26
         * @return BagOStuff
+        * @since 1.26
         */
        static function getMainStashInstance() {
                global $wgMainStash;
index ae3850f..2a5d695 100644 (file)
@@ -21,6 +21,8 @@
  * @ingroup Cache
  */
 
+use MediaWiki\Logger\LoggerFactory;
+
 /**
  * Session storage in object cache.
  * Used if $wgSessionsInObjectCache is true.
@@ -31,8 +33,6 @@ class ObjectCacheSessionHandler {
        /** @var array Map of (session ID => SHA-1 of the data) */
        protected static $hashCache = array();
 
-       const TTL_REFRESH_WINDOW = 600; // refresh if expiring in 10 minutes
-
        /**
         * Install a session handler for the current web request
         */
@@ -108,7 +108,11 @@ class ObjectCacheSessionHandler {
         * @return mixed Session data
         */
        static function read( $id ) {
+               $stime = microtime( true );
                $data = self::getCache()->get( self::getKey( $id ) );
+               $real = microtime( true ) - $stime;
+
+               RequestContext::getMain()->getStats()->timing( "session.read", 1000 * $real );
 
                self::$hashCache = array( $id => self::getHash( $data ) );
 
@@ -129,7 +133,11 @@ class ObjectCacheSessionHandler {
                if ( !isset( self::$hashCache[$id] )
                        || self::getHash( $data ) !== self::$hashCache[$id]
                ) {
+                       $stime = microtime( true );
                        self::getCache()->set( self::getKey( $id ), $data, $wgObjectCacheSessionExpiry );
+                       $real = microtime( true ) - $stime;
+
+                       RequestContext::getMain()->getStats()->timing( "session.write", 1000 * $real );
                }
 
                return true;
@@ -142,7 +150,11 @@ class ObjectCacheSessionHandler {
         * @return bool Success
         */
        static function destroy( $id ) {
+               $stime = microtime( true );
                self::getCache()->delete( self::getKey( $id ) );
+               $real = microtime( true ) - $stime;
+
+               RequestContext::getMain()->getStats()->timing( "session.destroy", 1000 * $real );
 
                return true;
        }
@@ -163,20 +175,33 @@ class ObjectCacheSessionHandler {
         * See the comment inside ObjectCacheSessionHandler::install for rationale.
         */
        static function handleShutdown() {
+               session_write_close();
+       }
+
+       /**
+        * Pre-emptive session renewal function
+        */
+       static function renewCurrentSession() {
                global $wgObjectCacheSessionExpiry;
 
+               // Once a session is at half TTL, renew it
+               $window = $wgObjectCacheSessionExpiry / 2;
+               $logger = LoggerFactory::getInstance( 'SessionHandler' );
+
                $now = microtime( true );
                // Session are only written in object stores when $_SESSION changes,
                // which also renews the TTL ($wgObjectCacheSessionExpiry). If a user
                // is active but not causing session data changes, it may suddenly
-               // as they view a form, blocking the first submission.
+               // expire as they view a form, blocking the first submission.
                // Make a dummy change every so often to avoid this.
-               if ( !isset( $_SESSION['wsExpiresUnix'] )
-                       || ( $now + self::TTL_REFRESH_WINDOW ) > isset( $_SESSION['wsExpiresUnix'] )
-               ) {
+               if ( !isset( $_SESSION['wsExpiresUnix'] ) ) {
                        $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
-               }
 
-               session_write_close();
+                       $logger->info( "Set expiry for session " . session_id(), array() );
+               } elseif ( ( $now + $window ) > $_SESSION['wsExpiresUnix'] ) {
+                       $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
+
+                       $logger->info( "Renewed session " . session_id(), array() );
+               }
        }
 }
index b8a0dd5..a9af9b1 100644 (file)
@@ -80,7 +80,7 @@ class RedisBagOStuff extends BagOStuff {
                }
        }
 
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
 
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
@@ -174,7 +174,7 @@ class RedisBagOStuff extends BagOStuff {
                return $result;
        }
 
-       public function getMulti( array $keys ) {
+       public function getMulti( array $keys, $flags = 0 ) {
 
                $batches = array();
                $conns = array();
@@ -372,31 +372,30 @@ class RedisBagOStuff extends BagOStuff {
                        }
                }
 
-               foreach ( $candidates as $tag ) {
+               while ( ( $tag = array_shift( $candidates ) ) !== null ) {
                        $server = $this->serverTagMap[$tag];
-
                        $conn = $this->redisPool->getConnection( $server );
                        if ( !$conn ) {
                                continue;
                        }
 
-                       try {
-                               $info = $conn->info();
-                               // Check if this server has an unreachable redis master
-                               if ( $info['role'] === 'slave'
-                                       && $info['master_link_status'] === 'down'
-                                       && $this->automaticFailover
-                               ) {
-                                       // If the master cannot be reached, fail-over to the next server.
-                                       // If masters are in data-center A, and slaves in data-center B,
-                                       // this helps avoid the case were fail-over happens in A but not
-                                       // to the corresponding server in B (e.g. read/write mismatch).
+                       // If automatic failover is enabled, check that the server's link
+                       // to its master (if any) is up -- but only if there are other
+                       // viable candidates left to consider.
+                       if ( $this->automaticFailover && $candidates ) {
+                               try {
+                                       if ( $this->getMasterLinkStatus( $conn ) === 'down' ) {
+                                               // If the master cannot be reached, fail-over to the next server.
+                                               // If masters are in data-center A, and slaves in data-center B,
+                                               // this helps avoid the case were fail-over happens in A but not
+                                               // to the corresponding server in B (e.g. read/write mismatch).
+                                               continue;
+                                       }
+                               } catch ( RedisException $e ) {
+                                       // Server is not accepting commands
+                                       $this->handleException( $conn, $e );
                                        continue;
                                }
-                       } catch ( RedisException $e ) {
-                               // Server is not accepting commands
-                               $this->handleException( $conn, $e );
-                               continue;
                        }
 
                        return array( $server, $conn );
@@ -407,6 +406,19 @@ class RedisBagOStuff extends BagOStuff {
                return array( false, false );
        }
 
+       /**
+        * Check the master link status of a Redis server that is configured as a slave.
+        * @param RedisConnRef $conn
+        * @return string|null Master link status (either 'up' or 'down'), or null
+        *  if the server is not a slave.
+        */
+       protected function getMasterLinkStatus( RedisConnRef $conn ) {
+               $info = $conn->info();
+               return isset( $info['master_link_status'] )
+                       ? $info['master_link_status']
+                       : null;
+       }
+
        /**
         * Log a fatal error
         * @param string $msg
index 3b46249..e08fec9 100644 (file)
@@ -220,12 +220,7 @@ class SqlBagOStuff extends BagOStuff {
                }
        }
 
-       /**
-        * @param string $key
-        * @param mixed $casToken [optional]
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
+       public function get( $key, &$casToken = null, $flags = 0 ) {
                $values = $this->getMulti( array( $key ) );
                if ( array_key_exists( $key, $values ) ) {
                        $casToken = $values[$key];
@@ -234,11 +229,7 @@ class SqlBagOStuff extends BagOStuff {
                return false;
        }
 
-       /**
-        * @param array $keys
-        * @return array
-        */
-       public function getMulti( array $keys ) {
+       public function getMulti( array $keys, $flags = 0 ) {
                $values = array(); // array of (key => value)
 
                $keysByTable = array();
index e58ffc8..54db19c 100644 (file)
@@ -1270,7 +1270,13 @@ class Article implements Page {
                                $text = wfMessage( 'noarticletext-nopermission' )->plain();
                        }
 
-                       $outputPage->addWikiText( "<div class='noarticletext'>\n$text\n</div>" );
+                       $dir = $this->getContext()->getLanguage()->getDir();
+                       $lang = $this->getContext()->getLanguage()->getCode();
+                       $outputPage->addWikiText( Xml::openElement( 'div', array(
+                               'class' => "noarticletext mw-content-$dir",
+                               'dir' => $dir,
+                               'lang' => $lang,
+                       ) ) . "\n$text\n</div>" );
                }
        }
 
index f7f2528..c173ac9 100644 (file)
@@ -361,18 +361,18 @@ class WikiPage implements Page, IDBAccessObject {
                        return;
                }
 
-               if ( $from === self::READ_LOCKING ) {
-                       $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle, array( 'FOR UPDATE' ) );
-               } elseif ( $from === self::READ_LATEST ) {
-                       $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle );
-               } elseif ( $from === self::READ_NORMAL ) {
-                       $data = $this->pageDataFromTitle( wfGetDB( DB_SLAVE ), $this->mTitle );
+               if ( is_int( $from ) ) {
+                       list( $index, $opts ) = DBAccessObjectUtils::getDBOptions( $from );
+                       $data = $this->pageDataFromTitle( wfGetDB( $index ), $this->mTitle, $opts );
+
                        if ( !$data
+                               && $index == DB_SLAVE
                                && wfGetLB()->getServerCount() > 1
                                && wfGetLB()->hasOrMadeRecentMasterChanges()
                        ) {
                                $from = self::READ_LATEST;
-                               $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle );
+                               list( $index, $opts ) = DBAccessObjectUtils::getDBOptions( $from );
+                               $data = $this->pageDataFromTitle( wfGetDB( $index ), $this->mTitle, $opts );
                        }
                } else {
                        // No idea from where the caller got this data, assume slave database.
@@ -2180,6 +2180,9 @@ class WikiPage implements Page, IDBAccessObject {
                        $updates = $content->getSecondaryDataUpdates(
                                $this->getTitle(), null, $recursive, $editInfo->output );
                        foreach ( $updates as $update ) {
+                               if ( $update instanceof LinksUpdate ) {
+                                       $update->setRevision( $revision );
+                               }
                                DeferredUpdates::addUpdate( $update );
                        }
                }
@@ -2257,7 +2260,7 @@ class WikiPage implements Page, IDBAccessObject {
                if ( $options['created'] ) {
                        self::onArticleCreate( $this->mTitle );
                } elseif ( $options['changed'] ) { // bug 50785
-                       self::onArticleEdit( $this->mTitle );
+                       self::onArticleEdit( $this->mTitle, $revision );
                }
        }
 
@@ -3213,8 +3216,9 @@ class WikiPage implements Page, IDBAccessObject {
         * Purge caches on page update etc
         *
         * @param Title $title
+        * @param Revision|null $revision Revision that was just saved, may be null
         */
-       public static function onArticleEdit( Title $title ) {
+       public static function onArticleEdit( Title $title, Revision $revision = null ) {
                // Invalidate caches of articles which include this page
                DeferredUpdates::addHTMLCacheUpdate( $title, 'templatelinks' );
 
@@ -3224,9 +3228,12 @@ class WikiPage implements Page, IDBAccessObject {
                // Purge squid for this page only
                $title->purgeSquid();
 
+               $revid = $revision ? $revision->getId() : null;
                // Clear file cache for this page only
                HTMLFileCache::clearFileCache( $title );
-               InfoAction::invalidateCache( $title );
+               DeferredUpdates::addCallableUpdate( function() use ( $title, $revid ) {
+                       InfoAction::invalidateCache( $title, $revid );
+               } );
        }
 
        /**#@-*/
index 65d8182..2eec08b 100644 (file)
@@ -87,7 +87,11 @@ class Parser {
        # \p{Zs} is unicode 'separator, space' category. It covers the space 0x20
        # as well as U+3000 is IDEOGRAPHIC SPACE for bug 19052
        const EXT_LINK_URL_CLASS = '[^][<>"\\x00-\\x20\\x7F\p{Zs}]';
-       const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)([^][<>"\\x00-\\x20\\x7F\p{Zs}]+)
+       # Simplified expression to match an IPv4 or IPv6 address, or
+       # at least one character of a host name (embeds EXT_LINK_URL_CLASS)
+       const EXT_LINK_ADDR = '(?:[0-9.]+|\\[(?i:[0-9a-f:.]+)\\]|[^][<>"\\x00-\\x20\\x7F\p{Zs}])';
+       # RegExp to make image URLs (embeds IPv6 part of EXT_LINK_ADDR)
+       const EXT_IMAGE_REGEX = '/^(http:\/\/|https:\/\/)((?:\\[(?i:[0-9a-f:.]+)\\])?[^][<>"\\x00-\\x20\\x7F\p{Zs}]+)
                \\/([A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF]+)\\.((?i)gif|png|jpg|jpeg)$/Sxu';
 
        # Regular expression for a non-newline space
@@ -254,7 +258,8 @@ class Parser {
                $this->mConf = $conf;
                $this->mUrlProtocols = wfUrlProtocols();
                $this->mExtLinkBracketedRegex = '/\[(((?i)' . $this->mUrlProtocols . ')' .
-                       self::EXT_LINK_URL_CLASS . '+)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su';
+                       self::EXT_LINK_ADDR .
+                       self::EXT_LINK_URL_CLASS . '*)\p{Zs}*([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/Su';
                if ( isset( $conf['preprocessorClass'] ) ) {
                        $this->mPreprocessorClass = $conf['preprocessorClass'];
                } elseif ( defined( 'HPHP_VERSION' ) ) {
@@ -1378,20 +1383,23 @@ class Parser {
        public function doMagicLinks( $text ) {
                $prots = wfUrlProtocolsWithoutProtRel();
                $urlChar = self::EXT_LINK_URL_CLASS;
+               $addr = self::EXT_LINK_ADDR;
                $space = self::SPACE_NOT_NL; #  non-newline space
                $spdash = "(?:-|$space)"; # a dash or a non-newline space
                $spaces = "$space++"; # possessive match of 1 or more spaces
                $text = preg_replace_callback(
-                       '!(?:                           # Start cases
-                               (<a[ \t\r\n>].*?</a>) |     # m[1]: Skip link text
-                               (<.*?>) |                   # m[2]: Skip stuff inside HTML elements' . "
-                               (\b(?i:$prots)$urlChar+) |  # m[3]: Free external links
-                               \b(?:RFC|PMID) $spaces      # m[4]: RFC or PMID, capture number
+                       '!(?:                            # Start cases
+                               (<a[ \t\r\n>].*?</a>) |      # m[1]: Skip link text
+                               (<.*?>) |                    # m[2]: Skip stuff inside
+                                                            #       HTML elements' . "
+                               (\b(?i:$prots)($addr$urlChar*)) | # m[3]: Free external links
+                                                            # m[4]: Post-protocol path
+                               \b(?:RFC|PMID) $spaces       # m[5]: RFC or PMID, capture number
                                        ([0-9]+)\b |
-                               \bISBN $spaces (            # m[5]: ISBN, capture number
-                                       (?: 97[89] $spdash? )?   # optional 13-digit ISBN prefix
-                                       (?: [0-9]  $spdash? ){9} # 9 digits with opt. delimiters
-                                       [0-9Xx]                 # check digit
+                               \bISBN $spaces (             # m[6]: ISBN, capture number
+                                       (?: 97[89] $spdash? )?   #  optional 13-digit ISBN prefix
+                                       (?: [0-9]  $spdash? ){9} #  9 digits with opt. delimiters
+                                       [0-9Xx]                  #  check digit
                                )\b
                        )!xu", array( &$this, 'magicLinkCallback' ), $text );
                return $text;
@@ -1411,28 +1419,28 @@ class Parser {
                        return $m[0];
                } elseif ( isset( $m[3] ) && $m[3] !== '' ) {
                        # Free external link
-                       return $this->makeFreeExternalLink( $m[0] );
-               } elseif ( isset( $m[4] ) && $m[4] !== '' ) {
+                       return $this->makeFreeExternalLink( $m[0], strlen( $m[4] ) );
+               } elseif ( isset( $m[5] ) && $m[5] !== '' ) {
                        # RFC or PMID
                        if ( substr( $m[0], 0, 3 ) === 'RFC' ) {
                                $keyword = 'RFC';
                                $urlmsg = 'rfcurl';
                                $cssClass = 'mw-magiclink-rfc';
-                               $id = $m[4];
+                               $id = $m[5];
                        } elseif ( substr( $m[0], 0, 4 ) === 'PMID' ) {
                                $keyword = 'PMID';
                                $urlmsg = 'pubmedurl';
                                $cssClass = 'mw-magiclink-pmid';
-                               $id = $m[4];
+                               $id = $m[5];
                        } else {
                                throw new MWException( __METHOD__ . ': unrecognised match type "' .
                                        substr( $m[0], 0, 20 ) . '"' );
                        }
                        $url = wfMessage( $urlmsg, $id )->inContentLanguage()->text();
                        return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $cssClass );
-               } elseif ( isset( $m[5] ) && $m[5] !== '' ) {
+               } elseif ( isset( $m[6] ) && $m[6] !== '' ) {
                        # ISBN
-                       $isbn = $m[5];
+                       $isbn = $m[6];
                        $space = self::SPACE_NOT_NL; #  non-newline space
                        $isbn = preg_replace( "/$space/", ' ', $isbn );
                        $num = strtr( $isbn, array(
@@ -1453,11 +1461,12 @@ class Parser {
         * Make a free external link, given a user-supplied URL
         *
         * @param string $url
-        *
+        * @param int $numPostProto
+        *   The number of characters after the protocol.
         * @return string HTML
         * @private
         */
-       public function makeFreeExternalLink( $url ) {
+       public function makeFreeExternalLink( $url, $numPostProto ) {
 
                $trail = '';
 
@@ -1496,6 +1505,12 @@ class Parser {
                        $url = substr( $url, 0, -$numSepChars );
                }
 
+               # Verify that we still have a real URL after trail removal, and
+               # not just lone protocol
+               if ( strlen( $trail ) >= $numPostProto ) {
+                       return $url . $trail;
+               }
+
                $url = Sanitizer::cleanUrl( $url );
 
                # Is this an external image?
@@ -5406,9 +5421,10 @@ class Parser {
                                                case 'gallery-internal-link':
                                                        $linkValue = strip_tags( $this->replaceLinkHoldersText( $match ) );
                                                        $chars = self::EXT_LINK_URL_CLASS;
+                                                       $addr = self::EXT_LINK_ADDR;
                                                        $prots = $this->mUrlProtocols;
                                                        //check to see if link matches an absolute url, if not then it must be a wiki link.
-                                                       if ( preg_match( "/^($prots)$chars+$/u", $linkValue ) ) {
+                                                       if ( preg_match( "/^($prots)$addr$chars*$/u", $linkValue ) ) {
                                                                $link = $linkValue;
                                                        } else {
                                                                $localLinkTitle = Title::newFromText( $linkValue );
@@ -5590,13 +5606,14 @@ class Parser {
                                                        break;
                                                case 'link':
                                                        $chars = self::EXT_LINK_URL_CLASS;
+                                                       $addr = self::EXT_LINK_ADDR;
                                                        $prots = $this->mUrlProtocols;
                                                        if ( $value === '' ) {
                                                                $paramName = 'no-link';
                                                                $value = true;
                                                                $validated = true;
                                                        } elseif ( preg_match( "/^((?i)$prots)/", $value ) ) {
-                                                               if ( preg_match( "/^((?i)$prots)$chars+$/u", $value, $m ) ) {
+                                                               if ( preg_match( "/^((?i)$prots)$addr$chars*$/u", $value, $m ) ) {
                                                                        $paramName = 'link-url';
                                                                        $this->mOutput->addExternalLink( $value );
                                                                        if ( $this->mOptions->getExternalLinkTarget() ) {
@@ -6435,4 +6452,15 @@ class Parser {
                        return $this;
                }
        }
+
+       /**
+        * Set's up the PHP implementation of OOUI for use in this request
+        * and instructs OutputPage to enable OOUI for itself.
+        *
+        * @since 1.26
+        */
+       public function enableOOUI() {
+               OutputPage::setupOOUI();
+               $this->mOutput->setEnableOOUI( true );
+       }
 }
index 7068bd7..15321c2 100644 (file)
@@ -49,7 +49,8 @@ class ParserOutput extends CacheTime {
                $mProperties = array(),       # Name/value pairs to be cached in the DB
                $mTOCHTML = '',               # HTML of the TOC
                $mTimestamp,                  # Timestamp of the revision
-               $mTOCEnabled = true;          # Whether TOC should be shown, can't override __NOTOC__
+               $mTOCEnabled = true,          # Whether TOC should be shown, can't override __NOTOC__
+               $mEnableOOUI = false;         # Whether OOUI should be enabled
        private $mIndexPolicy = '';       # 'index' or 'noindex'?  Any other value will result in no change.
        private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys)
        private $mExtensionData = array(); # extra data used by extensions
@@ -232,6 +233,10 @@ class ParserOutput extends CacheTime {
                return $this->mTOCEnabled;
        }
 
+       public function getEnableOOUI() {
+               return $this->mEnableOOUI;
+       }
+
        public function setText( $text ) {
                return wfSetVar( $this->mText, $text );
        }
@@ -283,6 +288,17 @@ class ParserOutput extends CacheTime {
                $this->mIndicators[$id] = $content;
        }
 
+       /**
+        * Enables OOUI, if true, in any OutputPage instance this ParserOutput
+        * object is added to.
+        *
+        * @since 1.26
+        * @param bool $enable If OOUI should be enabled or not
+        */
+       public function setEnableOOUI( $enable = false ) {
+               $this->mEnableOOUI = $enable;
+       }
+
        public function addLanguageLink( $t ) {
                $this->mLanguageLinks[] = $t;
        }
index 718ca35..8a09be8 100644 (file)
@@ -1203,9 +1203,11 @@ class PPFrame_DOM implements PPFrame {
                                } elseif ( $contextNode->nodeName == 'comment' ) {
                                        # HTML-style comment
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
-                                       if ( $this->parser->ot['html']
+                                       # Not in RECOVER_COMMENTS mode (msgnw) though.
+                                       if ( ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
                                                || ( $flags & PPFrame::STRIP_COMMENTS )
+                                               ) && !( $flags & PPFrame::RECOVER_COMMENTS )
                                        ) {
                                                $out .= '';
                                        } elseif ( $this->parser->ot['wiki'] && !( $flags & PPFrame::RECOVER_COMMENTS ) ) {
index d1ad39c..8ddb401 100644 (file)
@@ -1124,9 +1124,11 @@ class PPFrame_Hash implements PPFrame {
                                } elseif ( $contextNode->name == 'comment' ) {
                                        # HTML-style comment
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
-                                       if ( $this->parser->ot['html']
+                                       # Not in RECOVER_COMMENTS mode (msgnw) though.
+                                       if ( ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
                                                || ( $flags & PPFrame::STRIP_COMMENTS )
+                                               ) && !( $flags & PPFrame::RECOVER_COMMENTS )
                                        ) {
                                                $out .= '';
                                        } elseif ( $this->parser->ot['wiki'] && !( $flags & PPFrame::RECOVER_COMMENTS ) ) {
index 2f15659..f7e62ee 100644 (file)
@@ -32,7 +32,8 @@ interface RCFeedFormatter {
         * @param RecentChange $rc The RecentChange object showing what sort
         *                         of event has taken place.
         * @param string|null $actionComment
-        * @return string The text to send.
+        * @return string|null The text to send.  If the formatter returns null,
+        *  the line will not be sent.
         */
        public function getLine( array $feed, RecentChange $rc, $actionComment );
 }
index 273e9ef..68e5a17 100644 (file)
@@ -46,6 +46,27 @@ class ExtensionProcessor implements Processor {
                'ValidSkinNames',
        );
 
+       /**
+        * Mapping of global settings to their specific merge strategies.
+        *
+        * @see ExtensionRegistry::exportExtractedData
+        * @see getExtractedInfo
+        * @var array
+        */
+       protected static $mergeStrategies = array(
+               'wgGroupPermissions' => 'array_plus_2d',
+               'wgRevokePermissions' => 'array_plus_2d',
+               'wgHooks' => 'array_merge_recursive',
+               // credits are handled in the ExtensionRegistry
+               //'wgExtensionCredits' => 'array_merge_recursive',
+               'wgExtraNamespaces' => 'array_plus',
+               'wgExtraGenderNamespaces' => 'array_plus',
+               'wgNamespacesWithSubpages' => 'array_plus',
+               'wgNamespaceContentModels' => 'array_plus',
+               'wgNamespaceProtection' => 'array_plus',
+               'wgCapitalLinkOverrides' => 'array_plus',
+       );
+
        /**
         * Keys that are part of the extension credits
         *
@@ -156,6 +177,13 @@ class ExtensionProcessor implements Processor {
        }
 
        public function getExtractedInfo() {
+               // Make sure the merge strategies are set
+               foreach ( $this->globals as $key => $val ) {
+                       if ( isset( self::$mergeStrategies[$key] ) ) {
+                               $this->globals[$key][ExtensionRegistry::MERGE_STRATEGY] = self::$mergeStrategies[$key];
+                       }
+               }
+
                return array(
                        'globals' => $this->globals,
                        'defines' => $this->defines,
@@ -198,6 +226,12 @@ class ExtensionProcessor implements Processor {
                                if ( isset( $ns['defaultcontentmodel'] ) ) {
                                        $this->globals['wgNamespaceContentModels'][$id] = $ns['defaultcontentmodel'];
                                }
+                               if ( isset( $ns['protection'] ) ) {
+                                       $this->globals['wgNamespaceProtection'][$id] = $ns['protection'];
+                               }
+                               if ( isset( $ns['capitallinkoverride'] ) ) {
+                                       $this->globals['wgCapitalLinkOverrides'][$id] = $ns['capitallinkoverride'];
+                               }
                        }
                }
        }
index d48a1bd..7414925 100644 (file)
@@ -21,6 +21,18 @@ class ExtensionRegistry {
         */
        const OLDEST_MANIFEST_VERSION = 1;
 
+       /**
+        * Bump whenever the registration cache needs resetting
+        */
+       const CACHE_VERSION = 1;
+
+       /**
+        * Special key that defines the merge strategy
+        *
+        * @since 1.26
+        */
+       const MERGE_STRATEGY = '_merge_strategy';
+
        /**
         * @var BagOStuff
         */
@@ -102,7 +114,7 @@ class ExtensionRegistry {
                }
 
                // See if this queue is in APC
-               $key = wfMemcKey( 'registration', md5( json_encode( $this->queued ) ) );
+               $key = wfMemcKey( 'registration', md5( json_encode( $this->queued ) ), self::CACHE_VERSION );
                $data = $this->cache->get( $key );
                if ( $data ) {
                        $this->exportExtractedData( $data );
@@ -118,6 +130,24 @@ class ExtensionRegistry {
                $this->queued = array();
        }
 
+       /**
+        * Get the current load queue. Not intended to be used
+        * outside of the installer.
+        *
+        * @return array
+        */
+       public function getQueue() {
+               return $this->queued;
+       }
+
+       /**
+        * Clear the current load queue. Not intended to be used
+        * outside of the installer.
+        */
+       public function clearQueue() {
+               $this->queued = array();
+       }
+
        /**
         * Process a queue of extensions and return their extracted data
         *
@@ -157,31 +187,61 @@ class ExtensionRegistry {
                foreach ( $data['credits'] as $credit ) {
                        $data['globals']['wgExtensionCredits'][$credit['type']][] = $credit;
                }
+               $data['globals']['wgExtensionCredits'][self::MERGE_STRATEGY] = 'array_merge_recursive';
                $data['autoload'] = $autoloadClasses;
                return $data;
        }
 
        protected function exportExtractedData( array $info ) {
                foreach ( $info['globals'] as $key => $val ) {
+                       // If a merge strategy is set, read it and remove it from the value
+                       // so it doesn't accidentally end up getting set.
+                       // Need to check $val is an array for PHP 5.3 which will return
+                       // true on isset( 'string'['foo'] ).
+                       if ( isset( $val[self::MERGE_STRATEGY] ) && is_array( $val ) ) {
+                               $mergeStrategy = $val[self::MERGE_STRATEGY];
+                               unset( $val[self::MERGE_STRATEGY] );
+                       } else {
+                               $mergeStrategy = 'array_merge';
+                       }
+
+                       // Optimistic: If the global is not set, or is an empty array, replace it entirely.
+                       // Will be O(1) performance.
                        if ( !isset( $GLOBALS[$key] ) || ( is_array( $GLOBALS[$key] ) && !$GLOBALS[$key] ) ) {
                                $GLOBALS[$key] = $val;
-                       } elseif ( $key === 'wgHooks' || $key === 'wgExtensionCredits' ) {
-                               // Special case $wgHooks and $wgExtensionCredits, which require a recursive merge.
-                               // Ideally it would have been taken care of in the first if block though.
-                               $GLOBALS[$key] = array_merge_recursive( $GLOBALS[$key], $val );
-                       } elseif ( $key === 'wgGroupPermissions' ) {
-                               // First merge individual groups
-                               foreach ( $GLOBALS[$key] as $name => &$groupVal ) {
-                                       if ( isset( $val[$name] ) ) {
-                                               $groupVal += $val[$name];
+                               continue;
+                       }
+
+                       if ( !is_array( $GLOBALS[$key] ) || !is_array( $val ) ) {
+                               // config setting that has already been overridden, don't set it
+                               continue;
+                       }
+
+                       switch ( $mergeStrategy ) {
+                               case 'array_merge_recursive':
+                                       $GLOBALS[$key] = array_merge_recursive( $GLOBALS[$key], $val );
+                                       break;
+                               case 'array_plus_2d':
+                                       // First merge items that are in both arrays
+                                       foreach ( $GLOBALS[$key] as $name => &$groupVal ) {
+                                               if ( isset( $val[$name] ) ) {
+                                                       $groupVal += $val[$name];
+                                               }
                                        }
-                               }
-                               // Now merge groups that didn't exist yet
-                               $GLOBALS[$key] += $val;
-                       } elseif ( is_array( $GLOBALS[$key] ) && is_array( $val ) ) {
-                               $GLOBALS[$key] = array_merge( $val, $GLOBALS[$key] );
-                       } // else case is a config setting where it has already been overriden, so don't set it
+                                       // Now add items that didn't exist yet
+                                       $GLOBALS[$key] += $val;
+                                       break;
+                               case 'array_plus':
+                                       $GLOBALS[$key] = $val + $GLOBALS[$key];
+                                       break;
+                               case 'array_merge':
+                                       $GLOBALS[$key] = array_merge( $val, $GLOBALS[$key] );
+                                       break;
+                               default:
+                                       throw new UnexpectedValueException( "Unknown merge strategy '$mergeStrategy'" );
+                       }
                }
+
                foreach ( $info['defines'] as $name => $val ) {
                        define( $name, $val );
                }
index 508be2f..cecb6a2 100644 (file)
@@ -25,6 +25,7 @@
 use Psr\Log\LoggerAwareInterface;
 use Psr\Log\LoggerInterface;
 use Psr\Log\NullLogger;
+use WrappedString\WrappedString;
 
 /**
  * Dynamic JavaScript and CSS resource loading system.
@@ -180,7 +181,7 @@ class ResourceLoader implements LoggerAwareInterface {
         * @param string $data Text to filter, such as JavaScript or CSS text
         * @param array $options For back-compat, can also be the boolean value for "cacheReport". Keys:
         *  - (bool) cache: Whether to allow caching this data. Default: true.
-        *  - (bool) cacheReport: Whether to include the "cache key" report comment. Default: true.
+        *  - (bool) cacheReport: Whether to include the "cache key" report comment. Default: false.
         * @return string Filtered data, or a comment containing an error message
         */
        public function filter( $filter, $data, $options = array() ) {
@@ -189,7 +190,7 @@ class ResourceLoader implements LoggerAwareInterface {
                        $options = array( 'cacheReport' => $options );
                }
                // Defaults
-               $options += array( 'cache' => true, 'cacheReport' => true );
+               $options += array( 'cache' => true, 'cacheReport' => false );
 
                // Don't filter empty content
                if ( trim( $data ) === '' ) {
@@ -204,7 +205,7 @@ class ResourceLoader implements LoggerAwareInterface {
                }
 
                if ( !$options['cache'] ) {
-                       $result = $this->applyFilter( $filter, $data );
+                       $result = self::applyFilter( $filter, $data, $this->config );
                } else {
                        $key = wfGlobalCacheKey( 'resourceloader', 'filter', $filter, self::$filterCacheVersion, md5( $data ) );
                        $cache = wfGetCache( wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING );
@@ -218,9 +219,10 @@ class ResourceLoader implements LoggerAwareInterface {
                                $stats = RequestContext::getMain()->getStats();
                                $statStart = microtime( true );
 
-                               $result = $this->applyFilter( $filter, $data );
+                               $result = self::applyFilter( $filter, $data, $this->config );
 
-                               $stats->timing( "resourceloader_cache.$filter.miss", microtime( true ) - $statStart );
+                               $statTiming = microtime( true ) - $statStart;
+                               $stats->timing( "resourceloader_cache.$filter.miss", 1000 * $statTiming );
                                if ( $options['cacheReport'] ) {
                                        $result .= "\n/* cache key: $key */";
                                }
@@ -238,12 +240,12 @@ class ResourceLoader implements LoggerAwareInterface {
                return $result;
        }
 
-       private function applyFilter( $filter, $data ) {
+       private static function applyFilter( $filter, $data, Config $config ) {
                switch ( $filter ) {
                        case 'minify-js':
                                return JavaScriptMinifier::minify( $data,
-                                       $this->config->get( 'ResourceLoaderMinifierStatementsOnOwnLine' ),
-                                       $this->config->get( 'ResourceLoaderMinifierMaxLineLength' )
+                                       $config->get( 'ResourceLoaderMinifierStatementsOnOwnLine' ),
+                                       $config->get( 'ResourceLoaderMinifierMaxLineLength' )
                                );
                        case 'minify-css':
                                return CSSMin::minify( $data );
@@ -1105,7 +1107,18 @@ MESSAGE;
                $name, $scripts, $styles, $messages, $templates
        ) {
                if ( is_string( $scripts ) ) {
-                       $scripts = new XmlJsCode( "function ( $, jQuery ) {\n{$scripts}\n}" );
+                       // Site and user module are a legacy scripts that run in the global scope (no closure).
+                       // Transportation as string instructs mw.loader.implement to use globalEval.
+                       if ( $name === 'site' || $name === 'user' ) {
+                               // Minify manually because the general makeModuleResponse() minification won't be
+                               // effective here due to the script being a string instead of a function. (T107377)
+                               if ( !ResourceLoader::inDebugMode() ) {
+                                       $scripts = self::applyFilter( 'minify-js', $scripts,
+                                               ConfigFactory::getDefaultInstance()->makeConfig( 'main' ) );
+                               }
+                       } else {
+                               $scripts = new XmlJsCode( "function ( $, jQuery ) {\n{$scripts}\n}" );
+                       }
                } elseif ( !is_array( $scripts ) ) {
                        throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );
                }
@@ -1368,7 +1381,7 @@ MESSAGE;
         * @return string
         */
        public static function makeLoaderConditionalScript( $script ) {
-               return "if(window.mw){\n" . trim( $script ) . "\n}";
+               return "window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n" . trim( $script ) . "\n} );";
        }
 
        /**
@@ -1378,11 +1391,15 @@ MESSAGE;
         * only if the client has adequate support for MediaWiki JavaScript code.
         *
         * @param string $script JavaScript code
-        * @return string HTML
+        * @return WrappedString HTML
         */
        public static function makeInlineScript( $script ) {
                $js = self::makeLoaderConditionalScript( $script );
-               return Html::inlineScript( $js );
+               return new WrappedString(
+                       Html::inlineScript( $js ),
+                       "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n",
+                       "\n} );</script>"
+               );
        }
 
        /**
@@ -1393,11 +1410,13 @@ MESSAGE;
         * @return string
         */
        public static function makeConfigSetScript( array $configuration ) {
-               return Xml::encodeJsCall(
-                       'mw.config.set',
-                       array( $configuration ),
-                       ResourceLoader::inDebugMode()
-               );
+               if ( ResourceLoader::inDebugMode() ) {
+                       return Xml::encodeJsCall( 'mw.config.set', array( $configuration ), true );
+               }
+
+               $config = RequestContext::getMain()->getConfig();
+               $js = Xml::encodeJsCall( 'mw.config.set', array( $configuration ), false );
+               return self::applyFilter( 'minify-js', $js, $config );
        }
 
        /**
@@ -1459,7 +1478,7 @@ MESSAGE;
         * @param string $source Name of the ResourceLoader source
         * @param ResourceLoaderContext $context
         * @param array $extraQuery
-        * @return string URL to load.php. May be protocol-relative (if $wgLoadScript is procol-relative)
+        * @return string URL to load.php. May be protocol-relative if $wgLoadScript is, too.
         */
        public function createLoaderURL( $source, ResourceLoaderContext $context,
                $extraQuery = array()
@@ -1485,7 +1504,7 @@ MESSAGE;
         * @param bool $printable Printable mode
         * @param bool $handheld Handheld mode
         * @param array $extraQuery Extra query parameters to add
-        * @return string URL to load.php. May be protocol-relative (if $wgLoadScript is procol-relative)
+        * @return string URL to load.php. May be protocol-relative if $wgLoadScript is, too.
         */
        public static function makeLoaderURL( $modules, $lang, $skin, $user = null,
                $version = null, $debug = false, $only = null, $printable = false,
index b734def..efb151e 100644 (file)
@@ -526,19 +526,16 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
        }
 
        /**
-        * Helper method to gather file mtimes for getDefinitionSummary.
+        * Helper method to gather file hashes for getDefinitionSummary.
         *
-        * Last modified timestamps are calculated from the highest last modified
-        * timestamp of this module's constituent files as well as the files it
-        * depends on. This function is context-sensitive, only performing
-        * calculations on files relevant to the given language, skin and debug
-        * mode.
+        * This function is context-sensitive, only computing hashes of files relevant to the
+        * given language, skin, etc.
         *
         * @see ResourceLoaderModule::getFileDependencies
         * @param ResourceLoaderContext $context
         * @return array
         */
-       protected function getFileMtimes( ResourceLoaderContext $context ) {
+       protected function getFileHashes( ResourceLoaderContext $context ) {
                $files = array();
 
                // Flatten style files into $files
@@ -577,13 +574,10 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // entry point Less file we already know about.
                $files = array_values( array_unique( $files ) );
 
-               // Don't max() because older files are significant.
-               // While the associated file names are significant, that is already taken care of by the
-               // definition summary. Avoid creating an array keyed by file path here because those are
-               // absolute file paths. Including that would needlessly cause global cache invalidation
-               // when the MediaWiki installation path changes (which is quite common in cases like
-               // Wikimedia where the installation path reflects the MediaWiki branch name).
-               return array_map( array( __CLASS__, 'safeFilemtime' ), $files );
+               // Don't include keys or file paths here, only the hashes. Including that would needlessly
+               // cause global cache invalidation when files move or if e.g. the MediaWiki path changes.
+               // Any significant ordering is already detected by the definition summary.
+               return array_map( array( __CLASS__, 'safeFileHash' ), $files );
        }
 
        /**
@@ -597,6 +591,9 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
 
                $options = array();
                foreach ( array(
+                       // T104950: Do not include localBasePath! That path may vary over time and needlessly
+                       // invalidate cache. If the path changes in a way that makes relative file paths point
+                       // to something else, getFileHashes() will incorporate that already.
                        'scripts',
                        'debugScripts',
                        'loaderScripts',
@@ -611,9 +608,6 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        'group',
                        'position',
                        'skipFunction',
-                       // FIXME: localBasePath includes the MediaWiki installation path and
-                       // needlessly causes cache invalidation.
-                       'localBasePath',
                        'remoteBasePath',
                        'debugRaw',
                        'raw',
@@ -623,7 +617,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
 
                $summary[] = array(
                        'options' => $options,
-                       'fileMtimes' => $this->getFileMTimes( $context ),
+                       'fileHashes' => $this->getFileHashes( $context ),
                        'msgBlobMtime' => $this->getMsgBlobMtime( $context->getLanguage() ),
                );
                return $summary;
index 46b786d..1243f23 100644 (file)
@@ -572,8 +572,8 @@ abstract class ResourceLoaderModule {
 
                $statTiming = microtime( true ) - $statStart;
                $statName = strtr( $this->getName(), '.', '_' );
-               $stats->timing( "resourceloader_build.all", $statTiming );
-               $stats->timing( "resourceloader_build.$statName", $statTiming );
+               $stats->timing( "resourceloader_build.all", 1000 * $statTiming );
+               $stats->timing( "resourceloader_build.$statName", 1000 * $statTiming );
 
                return $content;
        }
@@ -835,16 +835,30 @@ abstract class ResourceLoaderModule {
        }
 
        /**
-        * Safe version of filemtime(), which doesn't throw a PHP warning if the file doesn't exist
-        * but returns 1 instead.
-        * @param string $filename File name
+        * Safe version of filemtime(), which doesn't throw a PHP warning if the file doesn't exist.
+        * Defaults to 1.
+        *
+        * @param string $filePath File path
         * @return int UNIX timestamp
         */
-       protected static function safeFilemtime( $filename ) {
+       protected static function safeFilemtime( $filePath ) {
                MediaWiki\suppressWarnings();
-               $mtime = filemtime( $filename ) ?: 1;
+               $mtime = filemtime( $filePath ) ?: 1;
                MediaWiki\restoreWarnings();
-
                return $mtime;
        }
+
+       /**
+        * Safe version of sha1_file(), which doesn't throw a PHP warning if the file doesn't exist.
+        * Defaults to empty string.
+        *
+        * @param string $filePath File path
+        * @return string Hash
+        */
+       protected static function safeFileHash( $filePath ) {
+               MediaWiki\suppressWarnings();
+               $hash = sha1_file( $filePath ) ?: '';
+               MediaWiki\restoreWarnings();
+               return $hash;
+       }
 }
index 19e0bae..380b7a5 100644 (file)
@@ -47,13 +47,4 @@ class ResourceLoaderSiteModule extends ResourceLoaderWikiModule {
                }
                return $pages;
        }
-
-       /**
-        * Get group name
-        *
-        * @return string
-        */
-       public function getGroup() {
-               return 'site';
-       }
 }
index a578ece..c704c1a 100644 (file)
@@ -88,6 +88,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
                        'wgSiteName' => $conf->get( 'Sitename' ),
                        'wgDBname' => $conf->get( 'DBname' ),
+                       'wgExtraSignatureNamespaces' => $conf->get( 'ExtraSignatureNamespaces' ),
                        'wgAvailableSkins' => Skin::getSkinNames(),
                        'wgExtensionAssetsPath' => $conf->get( 'ExtensionAssetsPath' ),
                        // MediaWiki sets cookies to have this prefix by default
@@ -100,6 +101,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ),
                        'wgResourceLoaderStorageVersion' => $conf->get( 'ResourceLoaderStorageVersion' ),
                        'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ),
+                       'wgResourceLoaderLegacyModules' => self::getLegacyModules(),
                );
 
                Hooks::run( 'ResourceLoaderGetConfigVars', array( &$vars ) );
@@ -187,6 +189,9 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
 
                $resourceLoader = $context->getResourceLoader();
                $target = $context->getRequest()->getVal( 'target', 'desktop' );
+               // Bypass target filter if this request is from a unit test context. To prevent misuse in
+               // production, this is only allowed if testing is enabled server-side.
+               $byPassTargetFilter = $this->getConfig()->get( 'EnableJavaScriptTest' ) && $target === 'test';
 
                $out = '';
                $registryData = array();
@@ -195,7 +200,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                foreach ( $resourceLoader->getModuleNames() as $name ) {
                        $module = $resourceLoader->getModule( $name );
                        $moduleTargets = $module->getTargets();
-                       if ( !in_array( $target, $moduleTargets ) ) {
+                       if ( !$byPassTargetFilter && !in_array( $target, $moduleTargets ) ) {
                                continue;
                        }
 
@@ -268,7 +273,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                }
 
                // Register modules
-               $out .= ResourceLoader::makeLoaderRegisterScript( $registrations );
+               $out .= "\n" . ResourceLoader::makeLoaderRegisterScript( $registrations );
 
                return $out;
        }
@@ -289,6 +294,20 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                return array( 'jquery', 'mediawiki' );
        }
 
+       public static function getLegacyModules() {
+               global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil;
+
+               $legacyModules = array();
+               if ( $wgIncludeLegacyJavaScript ) {
+                       $legacyModules[] = 'mediawiki.legacy.wikibits';
+               }
+               if ( $wgPreloadJavaScriptMwUtil ) {
+                       $legacyModules[] = 'mediawiki.util';
+               }
+
+               return $legacyModules;
+       }
+
        /**
         * Get the load URL of the startup modules.
         *
@@ -321,40 +340,25 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
         */
        public function getScript( ResourceLoaderContext $context ) {
                global $IP;
+               if ( $context->getOnly() !== 'scripts' ) {
+                       return '/* Requires only=script */';
+               }
 
                $out = file_get_contents( "$IP/resources/src/startup.js" );
-               if ( $context->getOnly() === 'scripts' ) {
 
-                       // Startup function
-                       $configuration = $this->getConfigSettings( $context );
-                       $registrations = $this->getModuleRegistrations( $context );
+               $pairs = array_map( function ( $value ) {
+                       $value = FormatJson::encode( $value, ResourceLoader::inDebugMode(), FormatJson::ALL_OK );
                        // Fix indentation
-                       $registrations = str_replace( "\n", "\n\t", trim( $registrations ) );
-                       $mwMapJsCall = Xml::encodeJsCall(
-                               'mw.Map',
-                               array( $this->getConfig()->get( 'LegacyJavaScriptGlobals' ) )
-                       );
-                       $mwConfigSetJsCall = Xml::encodeJsCall(
-                               'mw.config.set',
-                               array( $configuration ),
-                               ResourceLoader::inDebugMode()
-                       );
-
-                       $out .= "var startUp = function () {\n" .
-                               "\tmw.config = new " .
-                               $mwMapJsCall . "\n" .
-                               "\t$registrations\n" .
-                               "\t" . $mwConfigSetJsCall .
-                               "};\n";
-
-                       // Conditional script injection
-                       $scriptTag = Html::linkedScript( self::getStartupModulesUrl( $context ) );
-                       $out .= "if ( isCompatible() ) {\n" .
-                               "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) .
-                               "\n}";
-               }
-
-               return $out;
+                       $value = str_replace( "\n", "\n\t", $value );
+                       return $value;
+               }, array(
+                       '$VARS.wgLegacyJavaScriptGlobals' => $this->getConfig()->get( 'LegacyJavaScriptGlobals' ),
+                       '$VARS.configuration' => $this->getConfigSettings( $context ),
+                       '$VARS.baseModulesUri' => self::getStartupModulesUrl( $context ),
+               ) );
+               $pairs['$CODE.registrations()'] = str_replace( "\n", "\n\t", trim( $this->getModuleRegistrations( $context ) ) );
+
+               return strtr( $out, $pairs );
        }
 
        /**
index 9243f12..077dbc0 100644 (file)
@@ -168,9 +168,11 @@ class CachingSiteStore implements SiteStore {
        }
 
        /**
-        * Purges the internal and external cache of the site list, forcing the list
+        * Purges the internal and external cache of the site list, forcing the list.
         * of sites to be reloaded.
         *
+        * Only use this for testing, as APC is typically used and is per-server
+        *
         * @since 1.25
         */
        public function reset() {
@@ -182,6 +184,8 @@ class CachingSiteStore implements SiteStore {
        /**
         * Clears the list of sites stored.
         *
+        * Only use this for testing, as APC is typically used and is per-server.
+        *
         * @see SiteStore::clear()
         *
         * @return bool Success
index f167584..1193bd6 100644 (file)
@@ -153,7 +153,11 @@ class DBSiteStore implements SiteStore {
        protected function loadSites() {
                $this->sites = new SiteList();
 
-               foreach ( $this->sitesTable->select() as $siteRow ) {
+               $siteRows = $this->sitesTable->select( null, array(), array(
+                       'ORDER BY' => 'site_global_key'
+               ) );
+
+               foreach ( $siteRows as $siteRow ) {
                        $this->sites[] = $this->siteFromRow( $siteRow );
                }
 
index 327ef7c..53af3e7 100644 (file)
@@ -180,8 +180,7 @@ abstract class Skin extends ContextSource {
         * @return array Array of modules with helper keys for easy overriding
         */
        public function getDefaultModules() {
-               global $wgIncludeLegacyJavaScript, $wgPreloadJavaScriptMwUtil, $wgUseAjax,
-                       $wgAjaxWatch, $wgEnableAPI, $wgEnableWriteAPI;
+               global $wgUseAjax, $wgAjaxWatch, $wgEnableAPI, $wgEnableWriteAPI;
 
                $out = $this->getOutput();
                $user = $out->getUser();
@@ -191,7 +190,7 @@ abstract class Skin extends ContextSource {
                                'mediawiki.page.ready',
                        ),
                        // modules that exist for legacy reasons
-                       'legacy' => array(),
+                       'legacy' => ResourceLoaderStartUpModule::getLegacyModules(),
                        // modules relating to search functionality
                        'search' => array(),
                        // modules relating to functionality relating to watching an article
@@ -199,18 +198,9 @@ abstract class Skin extends ContextSource {
                        // modules which relate to the current users preferences
                        'user' => array(),
                );
-               if ( $wgIncludeLegacyJavaScript ) {
-                       $modules['legacy'][] = 'mediawiki.legacy.wikibits';
-               }
-
-               if ( $wgPreloadJavaScriptMwUtil ) {
-                       $modules['legacy'][] = 'mediawiki.util';
-               }
 
                // Add various resources if required
                if ( $wgUseAjax ) {
-                       $modules['legacy'][] = 'mediawiki.legacy.ajax';
-
                        if ( $wgEnableAPI ) {
                                if ( $wgEnableWriteAPI && $wgAjaxWatch && $user->isLoggedIn()
                                        && $user->isAllowed( 'writeapi' )
index ae78b2c..a1844a8 100644 (file)
@@ -51,12 +51,16 @@ class SkinTemplate extends Skin {
         * @param OutputPage $out
         */
        function setupSkinUserCss( OutputPage $out ) {
-               $out->addModuleStyles( array(
+               $moduleStyles = array(
                        'mediawiki.legacy.shared',
                        'mediawiki.legacy.commonPrint',
                        'mediawiki.ui.button',
                        'mediawiki.sectionAnchor'
-               ) );
+               );
+               if ( $out->isSyndicated() ) {
+                       $moduleStyles[] = 'mediawiki.feedlink';
+               }
+               $out->addModuleStyles( $moduleStyles );
        }
 
        /**
index 23bd394..0938316 100644 (file)
@@ -144,6 +144,7 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                $opts->add( 'hideliu', false );
                $opts->add( 'hidepatrolled', false );
                $opts->add( 'hidemyself', false );
+               $opts->add( 'hidecategorization', false );
 
                $opts->add( 'namespace', '', FormOptions::INTNULL );
                $opts->add( 'invert', false );
@@ -249,6 +250,9 @@ abstract class ChangesListSpecialPage extends SpecialPage {
                                $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $user->getName() );
                        }
                }
+               if ( $opts['hidecategorization'] === true ) {
+                       $conds[] = 'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE );
+               }
 
                // Namespace filtering
                if ( $opts['namespace'] !== '' ) {
index eb18b8f..65a4eb9 100644 (file)
@@ -686,4 +686,14 @@ class SpecialPage {
        protected function getGroupName() {
                return 'other';
        }
+
+       /**
+        * Call wfTransactionalTimeLimit() if this request was POSTed
+        * @since 1.26
+        */
+       protected function useTransactionalTimeLimit() {
+               if ( $this->getRequest()->wasPosted() ) {
+                       wfTransactionalTimeLimit();
+               }
+       }
 }
index 41c2f93..762658c 100644 (file)
@@ -206,7 +206,7 @@ class AllMessagesTablePager extends TablePager {
                        Xml::label( $this->msg( 'table_pager_limit_label' )->text(), 'mw-table_pager_limit_label' ) .
                        '</td>
                        <td class="mw-input">' .
-                       $this->getLimitSelect() .
+                       $this->getLimitSelect( array( 'id' => 'mw-table_pager_limit_label' ) ) .
                        '</td>
                        <tr>
                                <td></td>
@@ -445,7 +445,7 @@ class AllMessagesTablePager extends TablePager {
                } elseif ( $field === 'am_title' ) {
                        return array( 'class' => $field );
                } else {
-                       return array( 'lang' => $this->langcode, 'dir' => $this->lang->getDir(), 'class' => $field );
+                       return array( 'lang' => wfBCP47( $this->langcode ), 'dir' => $this->lang->getDir(), 'class' => $field );
                }
        }
 
index 74b1f7b..c4a67c0 100644 (file)
@@ -25,6 +25,7 @@
  * Implements Special:Allpages
  *
  * @ingroup SpecialPage
+ * @todo Rewrite using IndexPager
  */
 class SpecialAllPages extends IncludableSpecialPage {
 
@@ -179,6 +180,7 @@ class SpecialAllPages extends IncludableSpecialPage {
                $toList = $this->getNamespaceKeyAndText( $namespace, $to );
                $namespaces = $this->getContext()->getLanguage()->getNamespaces();
                $n = 0;
+               $prevTitle = null;
 
                if ( !$fromList || !$toList ) {
                        $out = $this->msg( 'allpagesbadtitle' )->parseAsBlock();
@@ -191,15 +193,13 @@ class SpecialAllPages extends IncludableSpecialPage {
                        list( , $toKey, $to ) = $toList;
 
                        $dbr = wfGetDB( DB_SLAVE );
-                       $conds = array(
-                               'page_namespace' => $namespace,
-                               'page_title >= ' . $dbr->addQuotes( $fromKey )
-                       );
-
+                       $filterConds = array( 'page_namespace' => $namespace );
                        if ( $hideredirects ) {
-                               $conds['page_is_redirect'] = 0;
+                               $filterConds['page_is_redirect'] = 0;
                        }
 
+                       $conds = $filterConds;
+                       $conds[] = 'page_title >= ' . $dbr->addQuotes( $fromKey );
                        if ( $toKey !== "" ) {
                                $conds[] = 'page_title <= ' . $dbr->addQuotes( $toKey );
                        }
@@ -234,6 +234,35 @@ class SpecialAllPages extends IncludableSpecialPage {
                        } else {
                                $out = '';
                        }
+
+                       if ( $fromKey !== '' && !$this->including() ) {
+                               # Get the first title from previous chunk
+                               $prevConds = $filterConds;
+                               $prevConds[] = 'page_title < ' . $dbr->addQuotes( $fromKey );
+                               $prevKey = $dbr->selectField(
+                                       'page',
+                                       'page_title',
+                                       $prevConds,
+                                       __METHOD__,
+                                       array( 'ORDER BY' => 'page_title DESC', 'OFFSET' => $this->maxPerPage - 1 )
+                               );
+
+                               if ( $prevKey === false ) {
+                                       # The previous chunk is not complete, need to link to the very first title
+                                       # available in the database
+                                       $prevKey = $dbr->selectField(
+                                               'page',
+                                               'page_title',
+                                               $prevConds,
+                                               __METHOD__,
+                                               array( 'ORDER BY' => 'page_title' )
+                                       );
+                               }
+
+                               if ( $prevKey !== false ) {
+                                       $prevTitle = Title::makeTitle( $namespace, $prevKey );
+                               }
+                       }
                }
 
                if ( $this->including() ) {
@@ -241,44 +270,6 @@ class SpecialAllPages extends IncludableSpecialPage {
                        return;
                }
 
-               if ( $from == '' ) {
-                       // First chunk; no previous link.
-                       $prevTitle = null;
-               } else {
-                       # Get the last title from previous chunk
-                       $dbr = wfGetDB( DB_SLAVE );
-                       $res_prev = $dbr->select(
-                               'page',
-                               'page_title',
-                               array( 'page_namespace' => $namespace, 'page_title < ' . $dbr->addQuotes( $from ) ),
-                               __METHOD__,
-                               array( 'ORDER BY' => 'page_title DESC',
-                                       'LIMIT' => $this->maxPerPage, 'OFFSET' => ( $this->maxPerPage - 1 )
-                               )
-                       );
-
-                       # Get first title of previous complete chunk
-                       if ( $dbr->numrows( $res_prev ) >= $this->maxPerPage ) {
-                               $pt = $dbr->fetchObject( $res_prev );
-                               $prevTitle = Title::makeTitle( $namespace, $pt->page_title );
-                       } else {
-                               # The previous chunk is not complete, need to link to the very first title
-                               # available in the database
-                               $options = array( 'LIMIT' => 1 );
-                               if ( !$dbr->implicitOrderby() ) {
-                                       $options['ORDER BY'] = 'page_title';
-                               }
-                               $reallyFirstPage_title = $dbr->selectField( 'page', 'page_title',
-                                       array( 'page_namespace' => $namespace ), __METHOD__, $options );
-                               # Show the previous link if it s not the current requested chunk
-                               if ( $from != $reallyFirstPage_title ) {
-                                       $prevTitle = Title::makeTitle( $namespace, $reallyFirstPage_title );
-                               } else {
-                                       $prevTitle = null;
-                               }
-                       }
-               }
-
                $self = $this->getPageTitle();
 
                $topLinks = array(
@@ -287,7 +278,7 @@ class SpecialAllPages extends IncludableSpecialPage {
                $bottomLinks = array();
 
                # Do we put a previous link ?
-               if ( $prevTitle && $pt = $prevTitle->getText() ) {
+               if ( $prevTitle ) {
                        $query = array( 'from' => $prevTitle->getText() );
 
                        if ( $namespace ) {
@@ -300,7 +291,7 @@ class SpecialAllPages extends IncludableSpecialPage {
 
                        $prevLink = Linker::linkKnown(
                                $self,
-                               $this->msg( 'prevpage', $pt )->escaped(),
+                               $this->msg( 'prevpage', $prevTitle->getText() )->escaped(),
                                array(),
                                $query
                        );
index b4d4220..e0f35c6 100644 (file)
@@ -97,7 +97,6 @@ class SpecialBlock extends FormSpecialPage {
        protected function alterForm( HTMLForm $form ) {
                $form->setWrapperLegendMsg( 'blockip-legend' );
                $form->setHeaderText( '' );
-               $form->setSubmitCallback( array( __CLASS__, 'processUIForm' ) );
                $form->setSubmitDestructive();
 
                $msg = $this->alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit';
@@ -597,17 +596,8 @@ class SpecialBlock extends FormSpecialPage {
        }
 
        /**
-        * Submit callback for an HTMLForm object, will simply pass
-        * @param array $data
-        * @param HTMLForm $form
-        * @return bool|string
-        */
-       public static function processUIForm( array $data, HTMLForm $form ) {
-               return self::processForm( $data, $form->getContext() );
-       }
-
-       /**
-        * Given the form data, actually implement a block
+        * Given the form data, actually implement a block. This is also called from ApiBlock.
+        *
         * @param array $data
         * @param IContextSource $context
         * @return bool|string
@@ -962,11 +952,11 @@ class SpecialBlock extends FormSpecialPage {
        /**
         * Process the form on POST submission.
         * @param array $data
+        * @param HTMLForm $form
         * @return bool|array True for success, false for didn't-try, array of errors on failure
         */
-       public function onSubmit( array $data ) {
-               // This isn't used since we need that HTMLForm that's passed in the
-               // second parameter. See alterForm for the real function
+       public function onSubmit( array $data, HTMLForm $form = null ) {
+               return self::processForm( $data, $form->getContext() );
        }
 
        /**
index 8a9aefd..9defaba 100644 (file)
@@ -65,6 +65,9 @@ class SpecialBlockList extends SpecialPage {
                        return;
                }
 
+               # setup BlockListPager here to get the actual default Limit
+               $pager = $this->getBlockListPager();
+
                # Just show the block list
                $fields = array(
                        'Target' => array(
@@ -77,11 +80,11 @@ class SpecialBlockList extends SpecialPage {
                        ),
                        'Options' => array(
                                'type' => 'multiselect',
-                               'options' => array(
-                                       $this->msg( 'blocklist-userblocks' )->text() => 'userblocks',
-                                       $this->msg( 'blocklist-tempblocks' )->text() => 'tempblocks',
-                                       $this->msg( 'blocklist-addressblocks' )->text() => 'addressblocks',
-                                       $this->msg( 'blocklist-rangeblocks' )->text() => 'rangeblocks',
+                               'options-messages' => array(
+                                       'blocklist-userblocks' => 'userblocks',
+                                       'blocklist-tempblocks' => 'tempblocks',
+                                       'blocklist-addressblocks' => 'addressblocks',
+                                       'blocklist-rangeblocks' => 'rangeblocks',
                                ),
                                'flatlist' => true,
                        ),
@@ -96,7 +99,7 @@ class SpecialBlockList extends SpecialPage {
                                        $lang->formatNum( 500 ) => 500,
                                ),
                                'name' => 'limit',
-                               'default' => 50,
+                               'default' => $pager->getLimit(),
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
@@ -109,10 +112,14 @@ class SpecialBlockList extends SpecialPage {
                $form->prepareForm();
 
                $form->displayForm( '' );
-               $this->showList();
+               $this->showList( $pager );
        }
 
-       function showList() {
+       /**
+        * Setup a new BlockListPager instance.
+        * @return BlockListPager
+        */
+       protected function getBlockListPager() {
                $conds = array();
                # Is the user allowed to see hidden blocks?
                if ( !$this->getUser()->isAllowed( 'hideuser' ) ) {
@@ -163,12 +170,20 @@ class SpecialBlockList extends SpecialPage {
                        $conds[] = "ipb_range_end = ipb_range_start";
                }
 
+               return new BlockListPager( $this, $conds );
+       }
+
+       /**
+        * Show the list of blocked accounts matching the actual filter.
+        * @param BlockListPager $pager The BlockListPager instance for this page
+        */
+       protected function showList( BlockListPager $pager ) {
+               $out = $this->getOutput();
+
                # Check for other blocks, i.e. global/tor blocks
                $otherBlockLink = array();
                Hooks::run( 'OtherBlockLogLink', array( &$otherBlockLink, $this->target ) );
 
-               $out = $this->getOutput();
-
                # Show additional header for the local block only when other blocks exists.
                # Not necessary in a standard installation without such extensions enabled
                if ( count( $otherBlockLink ) ) {
@@ -177,7 +192,6 @@ class SpecialBlockList extends SpecialPage {
                        );
                }
 
-               $pager = new BlockListPager( $this, $conds );
                if ( $pager->getNumRows() ) {
                        $out->addParserOutputContent( $pager->getFullOutput() );
                } elseif ( $this->target ) {
@@ -249,7 +263,7 @@ class BlockListPager extends TablePager {
        function formatValue( $name, $value ) {
                static $msg = null;
                if ( $msg === null ) {
-                       $msg = array(
+                       $keys = array(
                                'anononlyblock',
                                'createaccountblock',
                                'noautoblockblock',
@@ -258,17 +272,22 @@ class BlockListPager extends TablePager {
                                'unblocklink',
                                'change-blocklink',
                        );
-                       $msg = array_combine( $msg, array_map( array( $this, 'msg' ), $msg ) );
+
+                       foreach ( $keys as $key ) {
+                               $msg[$key] = $this->msg( $key )->escaped();
+                       }
                }
 
                /** @var $row object */
                $row = $this->mCurrentRow;
 
+               $language = $this->getLanguage();
+
                $formatted = '';
 
                switch ( $name ) {
                        case 'ipb_timestamp':
-                               $formatted = $this->getLanguage()->userTimeAndDate( $value, $this->getUser() );
+                               $formatted = htmlspecialchars( $language->userTimeAndDate( $value, $this->getUser() ) );
                                break;
 
                        case 'ipb_target':
@@ -294,7 +313,10 @@ class BlockListPager extends TablePager {
                                break;
 
                        case 'ipb_expiry':
-                               $formatted = $this->getLanguage()->formatExpiry( $value, /* User preference timezone */true );
+                               $formatted = htmlspecialchars( $language->formatExpiry(
+                                       $value,
+                                       /* User preference timezone */true
+                               ) );
                                if ( $this->getUser()->isAllowed( 'block' ) ) {
                                        if ( $row->ipb_auto ) {
                                                $links[] = Linker::linkKnown(
@@ -317,7 +339,7 @@ class BlockListPager extends TablePager {
                                                'span',
                                                array( 'class' => 'mw-blocklist-actions' ),
                                                $this->msg( 'parentheses' )->rawParams(
-                                                       $this->getLanguage()->pipeList( $links ) )->escaped()
+                                                       $language->pipeList( $links ) )->escaped()
                                        );
                                }
                                break;
@@ -355,7 +377,7 @@ class BlockListPager extends TablePager {
                                        $properties[] = $msg['blocklist-nousertalk'];
                                }
 
-                               $formatted = $this->getLanguage()->commaList( $properties );
+                               $formatted = $language->commaList( $properties );
                                break;
 
                        default:
index 7647999..cce5da5 100644 (file)
@@ -44,22 +44,10 @@ class SpecialChangeContentModel extends FormSpecialPage {
                        // No form input yet
                        return true;
                }
-               try {
-                       $titleObj = Title::newFromTextThrow( $title );
-               } catch ( MalformedTitleException $e ) {
-                       $msg = $this->msg( $e->getErrorMessage() );
-                       $params = $e->getErrorMessageParameters();
-                       if ( $params ) {
-                               $msg->params( $params );
-                       }
-                       return $msg->parse();
-               }
-               if ( !$titleObj->canExist() ) {
-                       return $this->msg(
-                               'changecontentmodel-title-cantexist',
-                               $titleObj->getPrefixedText()
-                       )->escaped();
-               }
+
+               // Already validated by HTMLForm, but if not, throw
+               // and exception instead of a fatal
+               $titleObj = Title::newFromTextThrow( $title );
 
                $this->oldRevision = Revision::newFromTitle( $titleObj ) ?: false;
 
@@ -79,7 +67,8 @@ class SpecialChangeContentModel extends FormSpecialPage {
                $that = $this;
                $fields = array(
                        'pagetitle' => array(
-                               'type' => 'text',
+                               'type' => 'title',
+                               'creatable' => true,
                                'name' => 'pagetitle',
                                'default' => $this->par,
                                'label-message' => 'changecontentmodel-title-label',
index b6ab112..6356155 100644 (file)
@@ -120,7 +120,7 @@ class EmailConfirmation extends UnlistedSpecialPage {
         * @param string $code Confirmation code
         */
        function attemptConfirm( $code ) {
-               $user = User::newFromConfirmationCode( $code );
+               $user = User::newFromConfirmationCode( $code, User::READ_LATEST );
                if ( !is_object( $user ) ) {
                        $this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
 
@@ -164,7 +164,7 @@ class EmailInvalidation extends UnlistedSpecialPage {
         * @param string $code Confirmation code
         */
        function attemptInvalidate( $code ) {
-               $user = User::newFromConfirmationCode( $code );
+               $user = User::newFromConfirmationCode( $code, User::READ_LATEST );
                if ( !is_object( $user ) ) {
                        $this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
 
index 8c7f0c8..44352a7 100644 (file)
@@ -477,7 +477,7 @@ class DeletedContributionsPage extends SpecialPage {
                        if ( ( $id !== null ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
                                # Block / Change block / Unblock links
                                if ( $this->getUser()->isAllowed( 'block' ) ) {
-                                       if ( $userObj->isBlocked() ) {
+                                       if ( $userObj->isBlocked() && $userObj->getBlock()->getType() !== Block::TYPE_AUTO ) {
                                                $tools[] = Linker::linkKnown( # Change block link
                                                        SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
                                                        $this->msg( 'change-blocklink' )->escaped()
index 910fe25..3d68813 100644 (file)
@@ -102,7 +102,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
 
                        case self::EDIT_NORMAL:
                        default:
-                       $this->executeViewEditWatchlist();
+                               $this->executeViewEditWatchlist();
                                break;
                }
        }
index f9b8ac3..4cdf6dd 100644 (file)
@@ -57,6 +57,8 @@ class SpecialImport extends SpecialPage {
         * @throws ReadOnlyError
         */
        function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $this->setHeaders();
                $this->outputHeader();
 
index 4c73f16..fbdefea 100644 (file)
@@ -205,13 +205,27 @@ HTML;
                        'lang' => $this->getLanguage()->getCode(),
                        'skin' => $this->getSkin()->getSkinName(),
                        'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
+                       'target' => 'test',
                );
                $embedContext = new ResourceLoaderContext( $rl, new FauxRequest( $query ) );
                $query['only'] = 'scripts';
                $startupContext = new ResourceLoaderContext( $rl, new FauxRequest( $query ) );
 
+               $query['raw'] = true;
+
                $modules = $rl->getTestModuleNames( 'qunit' );
 
+               // Disable autostart because we load modules asynchronously. By default, QUnit would start
+               // at domready when there are no tests loaded and also fire 'QUnit.done' which then instructs
+               // Karma to end the run before the tests even started.
+               $qunitConfig = 'QUnit.config.autostart = false;'
+                       . 'if (window.__karma__) {'
+                       // karma-qunit's use of autostart=false and QUnit.start conflicts with ours.
+                       // Hack around this by replacing 'karma.loaded' with a no-op and call it ourselves later.
+                       // See <https://github.com/karma-runner/karma-qunit/issues/27>.
+                       . 'window.__karma__.loaded = function () {};'
+                       . '}';
+
                // The below is essentially a pure-javascript version of OutputPage::getHeadScripts.
                $startup = $rl->makeModuleResponse( $startupContext, array(
                        'startup' => $rl->getModule( 'startup' ),
@@ -225,37 +239,42 @@ HTML;
                        'user.options' => $rl->getModule( 'user.options' ),
                        'user.tokens' => $rl->getModule( 'user.tokens' ),
                ) );
-               $code .= Xml::encodeJsCall( 'mw.loader.load', array( $modules ) );
+               // Catch exceptions (such as "dependency missing" or "unknown module") so that we
+               // always start QUnit. Re-throw so that they are caught and reported as global exceptions
+               // by QUnit and Karma.
+               $code .= '(function () {'
+                       . 'var start = window.__karma__ ? window.__karma__.start : QUnit.start;'
+                       . 'try {'
+                       . 'mw.loader.using( ' . Xml::encodeJsVar( $modules ) . ' ).always( start );'
+                       . '} catch ( e ) { start(); throw e; }'
+                       . '}());';
 
                header( 'Content-Type: text/javascript; charset=utf-8' );
                header( 'Cache-Control: private, no-cache, must-revalidate' );
                header( 'Pragma: no-cache' );
+               echo $qunitConfig;
                echo $startup;
-               echo "\n";
-               // Note: The following has to be wrapped in a script tag because the startup module also
-               // writes a script tag (the one loading mediawiki.js). Script tags are synchronous, block
-               // each other, and run in order. But they don't nest. The code appended after the startup
-               // module runs before the added script tag is parsed and executed.
-               echo Xml::encodeJsCall( 'document.write', array( Html::inlineScript( $code ) ) );
+               // The following has to be deferred via RLQ because the startup module is asynchronous.
+               echo ResourceLoader::makeLoaderConditionalScript( $code );
        }
 
        private function plainQUnit() {
                $out = $this->getOutput();
                $out->disable();
 
-               $url = $this->getPageTitle( 'qunit/export' )->getFullURL( array(
-                       'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
-               ) );
-
-               $styles = $out->makeResourceLoaderLink(
-                       'jquery.qunit', ResourceLoaderModule::TYPE_STYLES, false
+               $styles = $out->makeResourceLoaderLink( 'jquery.qunit',
+                       ResourceLoaderModule::TYPE_STYLES
                );
-               // Use 'raw' since this is a plain HTML page without ResourceLoader
-               $scripts = $out->makeResourceLoaderLink(
-                       'jquery.qunit', ResourceLoaderModule::TYPE_SCRIPTS, false, array( 'raw' => 'true' )
+
+               // Use 'raw' because QUnit loads before ResourceLoader initialises (omit mw.loader.state call)
+               // Use 'test' to ensure OutputPage doesn't use the "async" attribute because QUnit must
+               // load before qunit/export.
+               $scripts = $out->makeResourceLoaderLink( 'jquery.qunit',
+                       ResourceLoaderModule::TYPE_SCRIPTS,
+                       array( 'raw' => true, 'sync' => true )
                );
 
-               $head = trim( $styles['html'] . $scripts['html'] );
+               $head = implode( "\n", array_merge( $styles['html'], $scripts['html'] ) );
                $summary = $this->getSummaryHtml();
                $html = <<<HTML
 <!DOCTYPE html>
@@ -264,6 +283,10 @@ $head
 $summary
 <div id="qunit"></div>
 HTML;
+
+               $url = $this->getPageTitle( 'qunit/export' )->getFullURL( array(
+                       'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
+               ) );
                $html .= "\n" . Html::linkedScript( $url );
 
                header( 'Content-Type: text/html; charset=utf-8' );
index 56c4eb5..9e7dc00 100644 (file)
@@ -285,13 +285,14 @@ class UsersPager extends AlphabeticPager {
                        ) . ' ';
 
                # Group drop-down list
-               $out .= Xml::label( $this->msg( 'group' )->text(), 'group' ) . ' ' .
-                       Xml::openElement( 'select', array( 'name' => 'group', 'id' => 'group' ) ) .
-                       Xml::option( $this->msg( 'group-all' )->text(), '' );
+               $sel = new XmlSelect( 'group', 'group', $this->requestedGroup );
+               $sel->addOption( $this->msg( 'group-all' )->text(), '' );
                foreach ( $this->getAllGroups() as $group => $groupText ) {
-                       $out .= Xml::option( $groupText, $group, $group == $this->requestedGroup );
+                       $sel->addOption( $groupText, $group );
                }
-               $out .= Xml::closeElement( 'select' ) . '<br />';
+
+               $out .= Xml::label( $this->msg( 'group' )->text(), 'group' ) . ' ';
+               $out .= $sel->getHTML() . '<br />';
                $out .= Xml::checkLabel(
                        $this->msg( 'listusers-editsonly' )->text(),
                        'editsOnly',
index 6c7133f..64d4982 100644 (file)
@@ -35,7 +35,7 @@ class MIMEsearchPage extends QueryPage {
        }
 
        function isExpensive() {
-               return false;
+               return true;
        }
 
        function isSyndicated() {
index 1f0b6d4..7edf961 100644 (file)
@@ -109,6 +109,8 @@ class SpecialMergeHistory extends SpecialPage {
        }
 
        public function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $this->checkPermissions();
                $this->checkReadOnly();
 
index 5682657..e77479f 100644 (file)
@@ -64,6 +64,8 @@ class MovePageForm extends UnlistedSpecialPage {
        }
 
        public function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $this->checkReadOnly();
 
                $this->setHeaders();
index 7371da7..f2a315e 100644 (file)
@@ -50,7 +50,11 @@ class SpecialPreferences extends SpecialPage {
 
                if ( $this->getRequest()->getCheck( 'success' ) ) {
                        $out->wrapWikiMsg(
-                               "<div class=\"successbox\">\n$1\n</div>",
+                               Xml::tags(
+                                       'div',
+                                       array( 'class' => 'successbox', 'id' => 'mw-preferences-success' ),
+                                       '$1'
+                               ),
                                'savedprefs'
                        );
                }
index e21eaeb..7cf6b0a 100644 (file)
@@ -70,15 +70,15 @@ class SpecialRandomInCategory extends FormSpecialPage {
        protected function getFormFields() {
                $this->addHelpLink( 'Help:RandomInCategory' );
 
-               $form = array(
+               return array(
                        'category' => array(
-                               'type' => 'text',
+                               'type' => 'title',
+                               'namespace' => NS_CATEGORY,
+                               'relative' => true,
                                'label-message' => 'randomincategory-category',
                                'required' => true,
                        )
                );
-
-               return $form;
        }
 
        public function requiresWrite() {
@@ -89,6 +89,10 @@ class SpecialRandomInCategory extends FormSpecialPage {
                return false;
        }
 
+       protected function getDisplayFormat() {
+               return 'ooui';
+       }
+
        protected function alterForm( HTMLForm $form ) {
                $form->setSubmitTextMsg( 'randomincategory-submit' );
        }
index 73a88b9..9f7ef66 100644 (file)
@@ -135,20 +135,26 @@ class RandomPage extends SpecialPage {
 
        protected function getQueryInfo( $randstr ) {
                $redirect = $this->isRedirect() ? 1 : 0;
+               $tables = array( 'page' );
+               $conds = array_merge( array(
+                       'page_namespace' => $this->namespaces,
+                       'page_is_redirect' => $redirect,
+                       'page_random >= ' . $randstr
+               ), $this->extra );
+               $joinConds = array();
+
+               // Allow extensions to modify the query
+               Hooks::run( 'RandomPageQuery', array( &$tables, &$conds, &$joinConds ) );
 
                return array(
-                       'tables' => array( 'page' ),
+                       'tables' => $tables,
                        'fields' => array( 'page_title', 'page_namespace' ),
-                       'conds' => array_merge( array(
-                               'page_namespace' => $this->namespaces,
-                               'page_is_redirect' => $redirect,
-                               'page_random >= ' . $randstr
-                       ), $this->extra ),
+                       'conds' => $conds,
                        'options' => array(
                                'ORDER BY' => 'page_random',
                                'LIMIT' => 1,
                        ),
-                       'join_conds' => array()
+                       'join_conds' => $joinConds
                );
        }
 
index 96d512c..4b2d2d4 100644 (file)
@@ -83,6 +83,7 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                $opts->add( 'hideliu', false );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'hidepatrolled' ) );
                $opts->add( 'hidemyself', false );
+               $opts->add( 'hidecategorization', $user->getBoolOption( 'hidecategorization' ) );
 
                $opts->add( 'categories', '' );
                $opts->add( 'categories_any', false );
@@ -138,6 +139,9 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        if ( 'hidemyself' === $bit ) {
                                $opts['hidemyself'] = true;
                        }
+                       if ( 'hidecategorization' === $bit ) {
+                               $opts['hidecategorization'] = true;
+                       }
 
                        if ( is_numeric( $bit ) ) {
                                $opts['limit'] = $bit;
@@ -723,7 +727,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        'hideanons' => 'rcshowhideanons',
                        'hideliu' => 'rcshowhideliu',
                        'hidepatrolled' => 'rcshowhidepatr',
-                       'hidemyself' => 'rcshowhidemine'
+                       'hidemyself' => 'rcshowhidemine',
+                       'hidecategorization' => 'rcshowhidecategorization'
                );
 
                $showhide = array( 'show', 'hide' );
@@ -741,7 +746,8 @@ class SpecialRecentChanges extends ChangesListSpecialPage {
                        // The following messages are used here:
                        // rcshowhideminor-show, rcshowhideminor-hide, rcshowhidebots-show, rcshowhidebots-hide,
                        // rcshowhideanons-show, rcshowhideanons-hide, rcshowhideliu-show, rcshowhideliu-hide,
-                       // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide.
+                       // rcshowhidepatr-show, rcshowhidepatr-hide, rcshowhidemine-show, rcshowhidemine-hide,
+                       // rcshowhidecategorization-show, rcshowhidecategorization-hide.
                        $linkMessage = $this->msg( $msg . '-' . $showhide[1 - $options[$key]] );
                        // Extensions can define additional filters, but don't need to define the corresponding
                        // messages. If they don't exist, just fall back to 'show' and 'hide'.
index 77ebac3..7c27ac4 100644 (file)
@@ -110,6 +110,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
        }
 
        public function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $this->checkPermissions();
                $this->checkReadOnly();
 
index a8fab92..af2dc94 100644 (file)
@@ -68,6 +68,11 @@ class SpecialSearch extends SpecialPage {
         */
        protected $fulltext;
 
+       /**
+        * @var bool
+        */
+       protected $runSuggestion = true;
+
        const NAMESPACES_CURRENT = 'sense';
 
        public function __construct() {
@@ -169,6 +174,7 @@ class SpecialSearch extends SpecialPage {
                }
 
                $this->fulltext = $request->getVal( 'fulltext' );
+               $this->runSuggestion = (bool)$request->getVal( 'runsuggestion', true );
                $this->profile = $profile;
        }
 
@@ -214,7 +220,6 @@ class SpecialSearch extends SpecialPage {
                $search->setNamespaces( $this->namespaces );
                $search->prefix = $this->mPrefix;
                $term = $search->transformSearchTerm( $term );
-               $didYouMeanHtml = '';
 
                Hooks::run( 'SpecialSearchSetupEngine', array( $this, $this->profile, $search ) );
 
@@ -265,37 +270,17 @@ class SpecialSearch extends SpecialPage {
                }
 
                // did you mean... suggestions
-               if ( $showSuggestion && $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
-                       # mirror Go/Search behavior of original request ..
-                       $didYouMeanParams = array( 'search' => $textMatches->getSuggestionQuery() );
-
-                       if ( $this->fulltext != null ) {
-                               $didYouMeanParams['fulltext'] = $this->fulltext;
-                       }
-
-                       $stParams = array_merge(
-                               $didYouMeanParams,
-                               $this->powerSearchOptions()
-                       );
-
-                       $suggestionSnippet = $textMatches->getSuggestionSnippet();
-
-                       if ( $suggestionSnippet == '' ) {
-                               $suggestionSnippet = null;
+               $didYouMeanHtml = '';
+               if ( $showSuggestion && $textMatches && !$textStatus ) {
+                       if ( $this->shouldRunSuggestedQuery( $textMatches ) ) {
+                               $newMatches = $search->searchText( $textMatches->getSuggestionQuery() );
+                               if ( $newMatches instanceof SearchResultSet && $newMatches->numRows() > 0 ) {
+                                       $didYouMeanHtml = $this->getDidYouMeanRewrittenHtml( $term, $textMatches );
+                                       $textMatches = $newMatches;
+                               }
+                       } elseif ( $textMatches->hasSuggestion() ) {
+                               $didYouMeanHtml = $this->getDidYouMeanHtml( $textMatches );
                        }
-
-                       $suggestLink = Linker::linkKnown(
-                               $this->getPageTitle(),
-                               $suggestionSnippet,
-                               array(),
-                               $stParams
-                       );
-
-                       # html of did you mean... search suggestion link
-                       $didYouMeanHtml =
-                               Xml::openElement( 'div', array( 'class' => 'searchdidyoumean' ) ) .
-                               $this->msg( 'search-suggest' )->rawParams( $suggestLink )->text() .
-                               Xml::closeElement( 'div' );
                }
 
                if ( !Hooks::run( 'SpecialSearchResultsPrepend', array( $this, $out, $term ) ) ) {
@@ -328,7 +313,6 @@ class SpecialSearch extends SpecialPage {
                $num = $titleMatchesNum + $textMatchesNum;
                $totalRes = $numTitleMatches + $numTextMatches;
 
-               $out->enableOOUI();
                $out->addHtml(
                        # This is an awful awful ID name. It's not a table, but we
                        # named it poorly from when this was a table so now we're
@@ -406,16 +390,108 @@ class SpecialSearch extends SpecialPage {
                                $this->showCreateLink( $title, $num, $titleMatches, $textMatches );
                        }
                }
-               $out->addHtml( "</div>" );
 
                if ( $prevnext ) {
                        $out->addHTML( "<p class='mw-search-pager-bottom'>{$prevnext}</p>\n" );
                }
 
+               $out->addHtml( "</div>" );
+
                Hooks::run( 'SpecialSearchResultsAppend', array( $this, $out ) );
 
        }
 
+       /**
+        * Decide if the suggested query should be run, and it's results returned
+        * instead of the provided $textMatches
+        *
+        * @param SearchResultSet $textMatches The results of a users query
+        * @return bool
+        */
+       protected function shouldRunSuggestedQuery( SearchResultSet $textMatches ) {
+               if ( !$this->runSuggestion ||
+                       !$textMatches->hasSuggestion() ||
+                       $textMatches->numRows() > 0 ||
+                       $textMatches->searchContainedSyntax()
+               ) {
+                       return false;
+               }
+
+               // Generate a random number between 0 and 1. If the
+               // number is less than the desired percentages run it.
+               $rand = rand( 0, getrandmax() ) / getrandmax();
+               return $this->getConfig()->get( 'SearchRunSuggestedQueryPercent' ) > $rand;
+       }
+
+       /**
+        * Generates HTML shown to the user when we have a suggestion about a query
+        * that might give more results than their current query.
+        */
+       protected function getDidYouMeanHtml( SearchResultSet $textMatches ) {
+               # mirror Go/Search behavior of original request ..
+               $params = array( 'search' => $textMatches->getSuggestionQuery() );
+               if ( $this->fulltext != null ) {
+                       $params['fulltext'] = $this->fulltext;
+               }
+               $stParams = array_merge( $params, $this->powerSearchOptions() );
+
+               $suggest = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       $textMatches->getSuggestionSnippet() ?: null,
+                       array(),
+                       $stParams
+               );
+
+               # html of did you mean... search suggestion link
+               return Html::rawElement(
+                       'div',
+                       array( 'class' => 'searchdidyoumean' ),
+                       $this->msg( 'search-suggest' )->rawParams( $suggest )->parse()
+               );
+       }
+
+       /**
+        * Generates HTML shown to user when their query has been internally rewritten,
+        * and the results of the rewritten query are being returned.
+        *
+        * @param string $term The users search input
+        * @param SearchResultSet $textMatches The response to the users initial search request
+        * @return string HTML linking the user to their original $term query, and the one
+        *  suggested by $textMatches.
+        */
+       protected function getDidYouMeanRewrittenHtml( $term, SearchResultSet $textMatches ) {
+               // Showing results for '$rewritten'
+               // Search instead for '$orig'
+
+               $params = array( 'search' => $textMatches->getSuggestionQuery() );
+               if ( $this->fulltext != null ) {
+                       $params['fulltext'] = $this->fulltext;
+               }
+               $stParams = array_merge( $params, $this->powerSearchOptions() );
+
+               $rewritten = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       $textMatches->getSuggestionSnippet() ?: null,
+                       array(),
+                       $stParams
+               );
+
+               $stParams['search'] = $term;
+               $stParams['runsuggestion'] = 0;
+               $original = Linker::linkKnown(
+                       $this->getPageTitle(),
+                       htmlspecialchars( $term ),
+                       array(),
+                       $stParams
+               );
+
+               return Html::rawElement(
+                       'div',
+                       array( 'class' => 'searchdidyoumean' ),
+                       $this->msg( 'search-rewritten' )->rawParams( $rewritten, $original )->escaped()
+               );
+       }
+
        /**
         * @param Title $title
         * @param int $num The number of search results found
@@ -1079,23 +1155,21 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function shortDialog( $term, $resultsShown, $totalNum ) {
-               $out =
-                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
-                       Html::hidden( 'profile', $this->profile ) .
-                       Html::hidden( 'fulltext', 'Search' ) .
-                       new MediaWiki\Widget\TitleInputWidget( array(
-                               'type' => 'search',
-                               'icon' => 'search',
-                               'id' => 'searchText',
-                               'name' => 'search',
-                               'autofocus' => trim( $term ) === '',
-                               'value' => $term,
-                       ) ) .
-                       new OOUI\ButtonInputWidget( array(
-                               'type' => 'submit',
-                               'label' => $this->msg( 'searchbutton' )->text(),
-                               'flags' => array( 'progressive', 'primary' ),
-                       ) );
+               $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
+               $out .= Html::hidden( 'profile', $this->profile ) . "\n";
+               // Term box
+               $out .= Html::input( 'search', $term, 'search', array(
+                       'id' => $this->isPowerSearch() ? 'powerSearchText' : 'searchText',
+                       'size' => '50',
+                       'autofocus' => trim( $term ) === '',
+                       'class' => 'mw-ui-input mw-ui-input-inline',
+               ) ) . "\n";
+               $out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
+               $out .= Html::submitButton(
+                       $this->msg( 'searchbutton' )->text(),
+                       array( 'class' => 'mw-ui-button mw-ui-progressive' ),
+                       array( 'mw-ui-progressive' )
+               ) . "\n";
 
                // Results-info
                if ( $totalNum > 0 && $this->offset < $totalNum ) {
index 652ea82..8de6f8b 100644 (file)
@@ -107,11 +107,11 @@ class SpecialStatistics extends SpecialPage {
        ) {
                if ( $descMsg ) {
                        $msg = $this->msg( $descMsg, $descMsgParam );
-                       if ( $msg->exists() ) {
-                               $descriptionText = $this->msg( 'parentheses' )->rawParams( $msg->parse() )
+                       if ( !$msg->isDisabled() ) {
+                               $descriptionHtml = $this->msg( 'parentheses' )->rawParams( $msg->parse() )
                                        ->escaped();
-                               $text .= "<br />" . Xml::element( 'small', array( 'class' => 'mw-statistic-desc' ),
-                                       " $descriptionText" );
+                               $text .= "<br />" . Html::rawElement( 'small', array( 'class' => 'mw-statistic-desc' ),
+                                       " $descriptionHtml" );
                        }
                }
 
@@ -134,7 +134,8 @@ class SpecialStatistics extends SpecialPage {
                                $this->formatRow( Linker::linkKnown( SpecialPage::getTitleFor( 'Allpages' ),
                                        $this->msg( 'statistics-articles' )->parse() ),
                                        $this->getLanguage()->formatNum( $this->good ),
-                                       array( 'class' => 'mw-statistics-articles' ) ) .
+                                       array( 'class' => 'mw-statistics-articles' ),
+                                       'statistics-articles-desc' ) .
                                $this->formatRow( $this->msg( 'statistics-pages' )->parse(),
                                        $this->getLanguage()->formatNum( $this->total ),
                                        array( 'class' => 'mw-statistics-pages' ),
index a6847e1..70eee9f 100644 (file)
@@ -216,15 +216,17 @@ class SpecialTags extends SpecialPage {
                $newRow .= Xml::tags( 'td', null, $this->msg( $activeMsg )->escaped() );
 
                $hitcountLabel = $this->msg( 'tags-hitcount' )->numParams( $hitcount )->escaped();
-               $hitcountLink = Linker::link(
-                       SpecialPage::getTitleFor( 'Recentchanges' ),
-                       $hitcountLabel,
-                       array(),
-                       array( 'tagfilter' => $tag )
-               );
+               if ( $this->getConfig()->get( 'UseTagFilter' ) ) {
+                       $hitcountLabel = Linker::link(
+                               SpecialPage::getTitleFor( 'Recentchanges' ),
+                               $hitcountLabel,
+                               array(),
+                               array( 'tagfilter' => $tag )
+                       );
+               }
 
                // add raw $hitcount for sorting, because tags-hitcount contains numbers and letters
-               $newRow .= Xml::tags( 'td', array( 'data-sort-value' => $hitcount ), $hitcountLink );
+               $newRow .= Xml::tags( 'td', array( 'data-sort-value' => $hitcount ), $hitcountLabel );
 
                // actions
                if ( $showActions ) { // we've already checked that the user had the requisite userright
index d7e75bc..a66a3d1 100644 (file)
@@ -771,6 +771,8 @@ class SpecialUndelete extends SpecialPage {
        }
 
        function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $user = $this->getUser();
 
                $this->setHeaders();
@@ -999,7 +1001,7 @@ class SpecialUndelete extends SpecialPage {
                        return;
                }
 
-               if ( $this->mPreview || !$isText ) {
+               if ( ( $this->mPreview || !$isText ) && $content ) {
                        // NOTE: non-text content has no source view, so always use rendered preview
 
                        // Hide [edit]s
index 6b0bf41..44be81c 100644 (file)
@@ -152,6 +152,8 @@ class SpecialUpload extends SpecialPage {
         * @throws UserBlockedError
         */
        public function execute( $par ) {
+               $this->useTransactionalTimeLimit();
+
                $this->setHeaders();
                $this->outputHeader();
 
index ad329d3..dd90590 100644 (file)
@@ -58,6 +58,8 @@ class SpecialUploadStash extends UnlistedSpecialPage {
         * @return bool Success
         */
        public function execute( $subPage ) {
+               $this->useTransactionalTimeLimit();
+
                $this->stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash( $this->getUser() );
                $this->checkPermissions();
 
index 8491f89..5b6d22b 100644 (file)
@@ -20,6 +20,7 @@
  * @file
  * @ingroup SpecialPage
  */
+use MediaWiki\Logger\LoggerFactory;
 
 /**
  * Implements Special:UserLogin
@@ -43,6 +44,24 @@ class LoginForm extends SpecialPage {
        const WRONG_TOKEN = 13;
        const USER_MIGRATED = 14;
 
+       public static $statusCodes = array(
+               self::SUCCESS => 'success',
+               self::NO_NAME => 'no_name',
+               self::ILLEGAL => 'illegal',
+               self::WRONG_PLUGIN_PASS => 'wrong_plugin_pass',
+               self::NOT_EXISTS => 'not_exists',
+               self::WRONG_PASS => 'wrong_pass',
+               self::EMPTY_PASS => 'empty_pass',
+               self::RESET_PASS => 'reset_pass',
+               self::ABORTED => 'aborted',
+               self::CREATE_BLOCKED => 'create_blocked',
+               self::THROTTLED => 'throttled',
+               self::USER_BLOCKED => 'user_blocked',
+               self::NEED_TOKEN => 'need_token',
+               self::WRONG_TOKEN => 'wrong_token',
+               self::USER_MIGRATED => 'user_migrated',
+       );
+
        /**
         * Valid error and warning messages
         *
@@ -338,6 +357,10 @@ class LoginForm extends SpecialPage {
                }
 
                $status = $this->addNewAccountInternal();
+               LoggerFactory::getInstance( 'authmanager' )->info( 'Account creation attempt with mailed password', array(
+                       'event' => 'accountcreation',
+                       'status' => $status,
+               ) );
                if ( !$status->isGood() ) {
                        $error = $status->getMessage();
                        $this->mainLoginForm( $error->toString() );
@@ -375,6 +398,11 @@ class LoginForm extends SpecialPage {
 
                # Create the account and abort if there's a problem doing so
                $status = $this->addNewAccountInternal();
+               LoggerFactory::getInstance( 'authmanager' )->info( 'Account creation attempt', array(
+                       'event' => 'accountcreation',
+                       'status' => $status,
+               ) );
+
                if ( !$status->isGood() ) {
                        $error = $status->getMessage();
                        $this->mainLoginForm( $error->toString() );
@@ -531,7 +559,13 @@ class LoginForm extends SpecialPage {
                $u = User::newFromName( $this->mUsername, 'creatable' );
                if ( !$u ) {
                        return Status::newFatal( 'noname' );
-               } elseif ( 0 != $u->idForName( User::READ_LOCKING ) ) {
+               }
+
+               # Make sure the user does not exist already
+               $lock = $wgMemc->getScopedLock( wfGlobalCacheKey( 'account', md5( $this->mUsername ) ) );
+               if ( !$lock ) {
+                       return Status::newFatal( 'usernameinprogress' );
+               } elseif ( $u->idForName( User::READ_LOCKING ) ) {
                        return Status::newFatal( 'userexists' );
                }
 
@@ -911,7 +945,8 @@ class LoginForm extends SpecialPage {
                global $wgMemc, $wgLang, $wgSecureLogin, $wgPasswordAttemptThrottle,
                        $wgInvalidPasswordReset;
 
-               switch ( $this->authenticateUserData() ) {
+               $authRes = $this->authenticateUserData();
+               switch ( $authRes ) {
                        case self::SUCCESS:
                                # We've verified now, update the real record
                                $user = $this->getUser();
@@ -1034,6 +1069,12 @@ class LoginForm extends SpecialPage {
                        default:
                                throw new MWException( 'Unhandled case value' );
                }
+
+               LoggerFactory::getInstance( 'authmanager' )->info( 'Login attempt', array(
+                       'event' => 'login',
+                       'successful' => $authRes === self::SUCCESS,
+                       'status' => LoginForm::$statusCodes[$authRes],
+               ) );
        }
 
        /**
index 4fb6772..f6fa5ea 100644 (file)
@@ -215,6 +215,10 @@ class SpecialVersion extends SpecialPage {
                }
                $software[$dbr->getSoftwareLink()] = $dbr->getServerInfo();
 
+               if ( IcuCollation::getICUVersion() ) {
+                       $software['[http://site.icu-project.org/ ICU]'] = IcuCollation::getICUVersion();
+               }
+
                // Allow a hook to add/remove items.
                Hooks::run( 'SoftwareInfo', array( &$software ) );
 
@@ -541,6 +545,10 @@ class SpecialVersion extends SpecialPage {
                                return $arr['name'];
                        }, $info['authors'] );
                        $authors = $this->listAuthors( $authors, false, "$IP/vendor/$name" );
+
+                       // We can safely assume that the libraries' names and descriptions
+                       // are written in English and aren't going to be translated,
+                       // so set appropriate lang and dir attributes
                        $out .= Html::openElement( 'tr' )
                                . Html::rawElement(
                                        'td',
@@ -551,9 +559,9 @@ class SpecialVersion extends SpecialPage {
                                                array( 'class' => 'mw-version-library-name' )
                                        )
                                )
-                               . Html::element( 'td', array(), $info['version'] )
-                               . Html::element( 'td', array(), $this->listToText( $info['licenses'] ) )
-                               . Html::element( 'td', array(), $info['description'] )
+                               . Html::element( 'td', array( 'dir' => 'auto' ), $info['version'] )
+                               . Html::element( 'td', array( 'dir' => 'auto' ), $this->listToText( $info['licenses'] ) )
+                               . Html::element( 'td', array( 'lang' => 'en', 'dir' => 'ltr' ), $info['description'] )
                                . Html::rawElement( 'td', array(), $authors )
                                . Html::closeElement( 'tr' );
                }
index 20f5776..088a3fe 100644 (file)
@@ -110,6 +110,7 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) );
                $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) );
                $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) );
+               $opts->add( 'hidecategorization', $user->getBoolOption( 'watchlisthidecategorization' ) );
 
                $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) );
 
@@ -423,7 +424,8 @@ class SpecialWatchlist extends ChangesListSpecialPage {
                        'hideanons' => 'rcshowhideanons',
                        'hideliu' => 'rcshowhideliu',
                        'hidemyself' => 'rcshowhidemine',
-                       'hidepatrolled' => 'rcshowhidepatr'
+                       'hidepatrolled' => 'rcshowhidepatr',
+                       'hidecategorization' => 'rcshowhidecategorization',
                );
                foreach ( $this->getCustomFilters() as $key => $params ) {
                        $filters[$key] = $params['msg'];
index 69a8074..39980d2 100644 (file)
@@ -155,7 +155,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        $conds['pagelinks'][] = 'rd_from is NOT NULL';
                }
 
-               $queryFunc = function ( $dbr, $table, $fromCol ) use (
+               $queryFunc = function ( IDatabase $dbr, $table, $fromCol ) use (
                        $conds, $target, $limit, $useLinkNamespaceDBFields
                ) {
                        // Read an extra row as an at-end check
@@ -170,11 +170,12 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        }
                        // Inner LIMIT is 2X in case of stale backlinks with wrong namespaces
                        $subQuery = $dbr->selectSqlText(
-                               array( $table, 'page', 'redirect' ),
+                               array( $table, 'redirect', 'page' ),
                                array( $fromCol, 'rd_from' ),
                                $conds[$table],
                                __CLASS__ . '::showIndirectLinks',
-                               array( 'ORDER BY' => $fromCol, 'LIMIT' => 2 * $queryLimit ),
+                               // Force JOIN order per T106682 to avoid large filesorts
+                               array( 'ORDER BY' => $fromCol, 'LIMIT' => 2 * $queryLimit, 'STRAIGHT_JOIN' ),
                                array(
                                        'page' => array( 'INNER JOIN', "$fromCol = page_id" ),
                                        'redirect' => array( 'LEFT JOIN', $on )
@@ -267,6 +268,14 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                }
                $prevId = $from;
 
+               // use LinkBatch to make sure, that all required data (associated with Titles)
+               // is loaded in one query
+               $lb = new LinkBatch();
+               foreach ( $rows as $row ) {
+                       $lb->add( $row->page_namespace, $row->page_title );
+               }
+               $lb->execute();
+
                if ( $level == 0 ) {
                        if ( !$this->including() ) {
                                $out->addHTML( $this->whatlinkshereForm() );
@@ -314,7 +323,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                static $msgcache = null;
                if ( $msgcache === null ) {
                        static $msgs = array( 'isredirect', 'istemplate', 'semicolon-separator',
-                               'whatlinkshere-links', 'isimage', 'edit' );
+                               'whatlinkshere-links', 'isimage', 'editlink' );
                        $msgcache = array();
                        foreach ( $msgs as $msg ) {
                                $msgcache[$msg] = $this->msg( $msg )->escaped();
@@ -355,7 +364,7 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                }
 
                # Space for utilities links, with a what-links-here link provided
-               $wlhLink = $this->wlhLink( $nt, $msgcache['whatlinkshere-links'], $msgcache['edit'] );
+               $wlhLink = $this->wlhLink( $nt, $msgcache['whatlinkshere-links'], $msgcache['editlink'] );
                $wlh = Xml::wrapClass(
                        $this->msg( 'parentheses' )->rawParams( $wlhLink )->escaped(),
                        'mw-whatlinkshere-tools'
@@ -376,23 +385,33 @@ class SpecialWhatLinksHere extends IncludableSpecialPage {
                        $title = $this->getPageTitle();
                }
 
-               $editLink = '';
-               if ( $this->getUser()->isAllowed( 'edit' ) ) {
-                       $editLink = $this->msg( 'pipe-separator' )->escaped() .
-                               Linker::linkKnown(
-                                       $target,
-                                       $editText,
-                                       array(),
-                                       array( 'action' => 'edit' )
-                               );
+               // always show a "<- Links" link
+               $links = array(
+                       'links' => Linker::linkKnown(
+                               $title,
+                               $text,
+                               array(),
+                               array( 'target' => $target->getPrefixedText() )
+                       ),
+               );
+
+               // if the page is editable, add an edit link
+               if (
+                       // check user permissions
+                       $this->getUser()->isAllowed( 'edit' ) &&
+                       // check, if the content model is editable through action=edit
+                       ContentHandler::getForTitle( $target )->supportsDirectEditing()
+               ) {
+                       $links['edit'] = Linker::linkKnown(
+                               $target,
+                               $editText,
+                               array(),
+                               array( 'action' => 'edit' )
+                       );
                }
 
-               return Linker::linkKnown(
-                       $title,
-                       $text,
-                       array(),
-                       array( 'target' => $target->getPrefixedText() )
-               ) . $editLink;
+               // build the links html
+               return $this->getLanguage()->pipeList( $links );
        }
 
        function makeSelfLink( $text, $query ) {
diff --git a/includes/utils/BatchRowIterator.php b/includes/utils/BatchRowIterator.php
new file mode 100644 (file)
index 0000000..9441608
--- /dev/null
@@ -0,0 +1,278 @@
+<?php
+/**
+ * Allows iterating a large number of rows in batches transparently.
+ * By default when iterated over returns the full query result as an
+ * array of rows.  Can be wrapped in RecursiveIteratorIterator to
+ * collapse those arrays into a single stream of rows queried in batches.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+class BatchRowIterator implements RecursiveIterator {
+
+       /**
+        * @var DatabaseBase $db The database to read from
+        */
+       protected $db;
+
+       /**
+        * @var string $table The name of the table to read from
+        */
+       protected $table;
+
+       /**
+        * @var array $primaryKey The name of the primary key(s)
+        */
+       protected $primaryKey;
+
+       /**
+        * @var integer $batchSize The number of rows to fetch per iteration
+        */
+       protected $batchSize;
+
+       /**
+        * @var array $conditions Array of strings containing SQL conditions
+        *  to add to the query
+        */
+       protected $conditions = array();
+
+       /**
+        * @var array $joinConditions
+        */
+       protected $joinConditions = array();
+
+       /**
+        * @var array $fetchColumns List of column names to select from the
+        *  table suitable for use with DatabaseBase::select()
+        */
+       protected $fetchColumns;
+
+       /**
+        * @var string $orderBy SQL Order by condition generated from $this->primaryKey
+        */
+       protected $orderBy;
+
+       /**
+        * @var array $current The current iterator value
+        */
+       private $current = array();
+
+       /**
+        * @var integer key 0-indexed number of pages fetched since self::reset()
+        */
+       private $key;
+
+       /**
+        * @param DatabaseBase $db         The database to read from
+        * @param string       $table      The name of the table to read from
+        * @param string|array $primaryKey The name or names of the primary key columns
+        * @param integer      $batchSize  The number of rows to fetch per iteration
+        * @throws MWException
+        */
+       public function __construct( DatabaseBase $db, $table, $primaryKey, $batchSize ) {
+               if ( $batchSize < 1 ) {
+                       throw new MWException( 'Batch size must be at least 1 row.' );
+               }
+               $this->db = $db;
+               $this->table = $table;
+               $this->primaryKey = (array) $primaryKey;
+               $this->fetchColumns = $this->primaryKey;
+               $this->orderBy = implode( ' ASC,', $this->primaryKey ) . ' ASC';
+               $this->batchSize = $batchSize;
+       }
+
+       /**
+        * @param array $condition Query conditions suitable for use with
+        *  DatabaseBase::select
+        */
+       public function addConditions( array $conditions ) {
+               $this->conditions = array_merge( $this->conditions, $conditions );
+       }
+
+       /**
+        * @param array $condition Query join conditions suitable for use
+        *  with DatabaseBase::select
+        */
+       public function addJoinConditions( array $conditions ) {
+               $this->joinConditions = array_merge( $this->joinConditions, $conditions );
+       }
+
+       /**
+        * @param array $columns List of column names to select from the
+        *  table suitable for use with DatabaseBase::select()
+        */
+       public function setFetchColumns( array $columns ) {
+               // If it's not the all column selector merge in the primary keys we need
+               if ( count( $columns ) === 1 && reset( $columns ) === '*' ) {
+                       $this->fetchColumns = $columns;
+               } else {
+                       $this->fetchColumns = array_unique( array_merge(
+                               $this->primaryKey,
+                               $columns
+                       ) );
+               }
+       }
+
+       /**
+        * Extracts the primary key(s) from a database row.
+        *
+        * @param stdClass $row An individual database row from this iterator
+        * @return array Map of primary key column to value within the row
+        */
+       public function extractPrimaryKeys( $row ) {
+               $pk = array();
+               foreach ( $this->primaryKey as $column ) {
+                       $pk[$column] = $row->$column;
+               }
+               return $pk;
+       }
+
+       /**
+        * @return array The most recently fetched set of rows from the database
+        */
+       public function current() {
+               return $this->current;
+       }
+
+       /**
+        * @return integer 0-indexed count of the page number fetched
+        */
+       public function key() {
+               return $this->key;
+       }
+
+       /**
+        * Reset the iterator to the begining of the table.
+        */
+       public function rewind() {
+               $this->key = -1; // self::next() will turn this into 0
+               $this->current = array();
+               $this->next();
+       }
+
+       /**
+        * @return boolean True when the iterator is in a valid state
+        */
+       public function valid() {
+               return (bool) $this->current;
+       }
+
+       /**
+        * @return boolean True when this result set has rows
+        */
+       public function hasChildren() {
+               return $this->current && count( $this->current );
+       }
+
+       /**
+        * @return RecursiveIterator
+        */
+       public function getChildren() {
+               return new NotRecursiveIterator( new ArrayIterator( $this->current ) );
+       }
+
+       /**
+        * Fetch the next set of rows from the database.
+        */
+       public function next() {
+               $res = $this->db->select(
+                       $this->table,
+                       $this->fetchColumns,
+                       $this->buildConditions(),
+                       __METHOD__,
+                       array(
+                               'LIMIT' => $this->batchSize,
+                               'ORDER BY' => $this->orderBy,
+                       ),
+                       $this->joinConditions
+               );
+
+               // The iterator is converted to an array because in addition to
+               // returning it in self::current() we need to use the end value
+               // in self::buildConditions()
+               $this->current = iterator_to_array( $res );
+               $this->key++;
+       }
+
+       /**
+        * Uses the primary key list and the maximal result row from the
+        * previous iteration to build an SQL condition sufficient for
+        * selecting the next page of results.  All except the final key use
+        * `=` conditions while the final key uses a `>` condition
+        *
+        * Example output:
+        *        array( '( foo = 42 AND bar > 7 ) OR ( foo > 42 )' )
+        *
+        * @return array The SQL conditions necessary to select the next set
+        *  of rows in the batched query
+        */
+       protected function buildConditions() {
+               if ( !$this->current ) {
+                       return $this->conditions;
+               }
+
+               $maxRow = end( $this->current );
+               $maximumValues = array();
+               foreach ( $this->primaryKey as $column ) {
+                       $maximumValues[$column] = $this->db->addQuotes( $maxRow->$column );
+               }
+
+               $pkConditions = array();
+               // For example: If we have 3 primary keys
+               // first run through will generate
+               //   col1 = 4 AND col2 = 7 AND col3 > 1
+               // second run through will generate
+               //   col1 = 4 AND col2 > 7
+               // and the final run through will generate
+               //   col1 > 4
+               while ( $maximumValues ) {
+                       $pkConditions[] = $this->buildGreaterThanCondition( $maximumValues );
+                       array_pop( $maximumValues );
+               }
+
+               $conditions = $this->conditions;
+               $conditions[] = sprintf( '( %s )', implode( ' ) OR ( ', $pkConditions ) );
+
+               return $conditions;
+       }
+
+       /**
+        * Given an array of column names and their maximum value  generate
+        * an SQL condition where all keys except the last match $quotedMaximumValues
+        * exactly and the last column is greater than the matching value in
+        * $quotedMaximumValues
+        *
+        * @param array $quotedMaximumValues The maximum values quoted with
+        *  $this->db->addQuotes()
+        * @return string An SQL condition that will select rows where all
+        *  columns match the maximum value exactly except the last column
+        *  which must be greater than the provided maximum value
+        */
+       protected function buildGreaterThanCondition( array $quotedMaximumValues ) {
+               $keys = array_keys( $quotedMaximumValues );
+               $lastColumn = end( $keys );
+               $lastValue = array_pop( $quotedMaximumValues );
+               $conditions = array();
+               foreach ( $quotedMaximumValues as $column => $value ) {
+                       $conditions[] = "$column = $value";
+               }
+               $conditions[] = "$lastColumn > $lastValue";
+
+               return implode( ' AND ', $conditions );
+       }
+}
diff --git a/includes/utils/BatchRowUpdate.php b/includes/utils/BatchRowUpdate.php
new file mode 100644 (file)
index 0000000..a4257a5
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/*
+ * Ties together the batch update components to provide a composable
+ * method of batch updating rows in a database. To use create a class
+ * implementing the RowUpdateGenerator interface and configure the
+ * BatchRowIterator and BatchRowWriter for access to the correct table.
+ * The components will handle reading, writing, and waiting for slaves
+ * while the generator implementation handles generating update arrays
+ * for singular rows.
+ *
+ * Instantiate:
+ *   $updater = new BatchRowUpdate(
+ *       new BatchRowIterator( $dbr, 'some_table', 'primary_key_column', 500 ),
+ *       new BatchRowWriter( $dbw, 'some_table', 'clusterName' ),
+ *       new MyImplementationOfRowUpdateGenerator
+ *   );
+ *
+ * Run:
+ *   $updater->execute();
+ *
+ * An example maintenance script utilizing the BatchRowUpdate can be
+ * located in the Echo extension file maintenance/updateSchema.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 Maintenance
+ */
+class BatchRowUpdate {
+       /**
+        * @var BatchRowIterator $reader Iterator that returns an array of
+        *  database rows
+        */
+       protected $reader;
+
+       /**
+        * @var BatchRowWriter $writer Writer capable of pushing row updates
+        *  to the database
+        */
+       protected $writer;
+
+       /**
+        * @var RowUpdateGenerator $generator Generates single row updates
+        *  based on the rows content
+        */
+       protected $generator;
+
+       /**
+        * @var callable $output Output callback
+        */
+       protected $output;
+
+       /**
+        * @param BatchRowIterator   $reader    Iterator that returns an
+        *  array of database rows
+        * @param BatchRowWriter     $writer    Writer capable of pushing
+        *  row updates to the database
+        * @param RowUpdateGenerator $generator Generates single row updates
+        *  based on the rows content
+        */
+       public function __construct( BatchRowIterator $reader, BatchRowWriter $writer, RowUpdateGenerator $generator ) {
+               $this->reader = $reader;
+               $this->writer = $writer;
+               $this->generator = $generator;
+               $this->output = function() {
+               }; // nop
+       }
+
+       /**
+        * Runs the batch update process
+        */
+       public function execute() {
+               foreach ( $this->reader as $rows ) {
+                       $updates = array();
+                       foreach ( $rows as $row ) {
+                               $update = $this->generator->update( $row );
+                               if ( $update ) {
+                                       $updates[] = array(
+                                               'primaryKey' => $this->reader->extractPrimaryKeys( $row ),
+                                               'changes' => $update,
+                                       );
+                               }
+                       }
+
+                       if ( $updates ) {
+                               $this->output( "Processing " . count( $updates ) . " rows\n" );
+                               $this->writer->write( $updates );
+                       }
+               }
+
+               $this->output( "Completed\n" );
+       }
+
+       /**
+        * Accepts a callable which will receive a single parameter
+        * containing string status updates
+        *
+        * @param callable $output A callback taking a single string
+        *  parameter to output
+        *
+        * @throws MWException
+        */
+       public function setOutput( $output ) {
+               if ( !is_callable( $output ) ) {
+                       throw new MWException(
+                               'Provided $output param is required to be callable.'
+                       );
+               }
+               $this->output = $output;
+       }
+
+       /**
+        * Write out a status update
+        *
+        * @param string $text The value to print
+        */
+       protected function output( $text ) {
+               call_user_func( $this->output, $text );
+       }
+}
diff --git a/includes/utils/BatchRowWriter.php b/includes/utils/BatchRowWriter.php
new file mode 100644 (file)
index 0000000..04c00a3
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Updates database rows by primary key in batches.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+class BatchRowWriter {
+       /**
+        * @var DatabaseBase $db The database to write to
+        */
+       protected $db;
+
+       /**
+        * @var string $table The name of the table to update
+        */
+       protected $table;
+
+       /**
+        * @var string $clusterName A cluster name valid for use with LBFactory
+        */
+       protected $clusterName;
+
+       /**
+        * @param DatabaseBase $db          The database to write to
+        * @param string       $table       The name of the table to update
+        * @param string|bool  $clusterName A cluster name valid for use with LBFactory
+        */
+       public function __construct( DatabaseBase $db, $table, $clusterName = false ) {
+               $this->db = $db;
+               $this->table = $table;
+               $this->clusterName = $clusterName;
+       }
+
+       /**
+        * @param array $updates Array of arrays each containing two keys, 'primaryKey'
+        *  and 'changes'. primaryKey must contain a map of column names to values
+        *  sufficient to uniquely identify the row changes must contain a map of column
+        *  names to update values to apply to the row.
+        */
+       public function write( array $updates ) {
+               $this->db->begin();
+
+               foreach ( $updates as $update ) {
+                       $this->db->update(
+                               $this->table,
+                               $update['changes'],
+                               $update['primaryKey'],
+                               __METHOD__
+                       );
+               }
+
+               $this->db->commit();
+               wfWaitForSlaves( false, false, $this->clusterName );
+       }
+}
index dfcbe78..ae3736a 100644 (file)
@@ -240,7 +240,7 @@ class IP {
         * A bare IPv6 address is accepted despite the lack of square brackets.
         *
         * @param string $both The string with the host and port
-        * @return array
+        * @return array|false Array normally, false on certain failures
         */
        public static function splitHostAndPort( $both ) {
                if ( substr( $both, 0, 1 ) === '[' ) {
diff --git a/includes/utils/RowUpdateGenerator.php b/includes/utils/RowUpdateGenerator.php
new file mode 100644 (file)
index 0000000..6a4792c
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Interface for generating updates to single rows in the database.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+interface RowUpdateGenerator {
+       /**
+        * Given a database row, generates an array mapping column names to
+        * updated value within the database row.
+        *
+        * Sample Response:
+        *   return array(
+        *       'some_col' => 'new value',
+        *       'other_col' => 99,
+        *   );
+        *
+        * @param stdClass $row A row from the database
+        * @return array Map of column names to updated value within the
+        *  database row. When no update is required returns an empty array.
+        */
+       public function update( $row );
+}
diff --git a/includes/utils/iterators/IteratorDecorator.php b/includes/utils/iterators/IteratorDecorator.php
new file mode 100644 (file)
index 0000000..288a311
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Allows extending classes to decorate an Iterator with
+ * reduced boilerplate.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+abstract class IteratorDecorator implements Iterator {
+       protected $iterator;
+
+       public function __construct( Iterator $iterator ) {
+               $this->iterator = $iterator;
+       }
+
+       public function current() {
+               return $this->iterator->current();
+       }
+
+       public function key() {
+               return $this->iterator->key();
+       }
+
+       public function next() {
+               return $this->iterator->next();
+       }
+
+       public function rewind() {
+               return $this->iterator->rewind();
+       }
+
+       public function valid() {
+               return $this->iterator->valid();
+       }
+}
diff --git a/includes/utils/iterators/NotRecursiveIterator.php b/includes/utils/iterators/NotRecursiveIterator.php
new file mode 100644 (file)
index 0000000..52ca61b
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+/**
+ * Wraps a non-recursive iterator with methods to be recursive
+ * without children.
+ *
+ * Alternatively wraps a recursive iterator to prevent recursing deeper
+ * than the wrapped iterator.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+class NotRecursiveIterator extends IteratorDecorator implements RecursiveIterator {
+       public function hasChildren() {
+               return false;
+       }
+
+       public function getChildren() {
+               return null;
+       }
+}
index 2d69ed7..f10ea70 100644 (file)
@@ -103,7 +103,7 @@ class NamespaceInputWidget extends \OOUI\Widget {
                $namespaceOptions = \Html::namespaceSelectorOptions( $namespaceOptionsParams );
 
                $options = array();
-               foreach( $namespaceOptions as $id => $name ) {
+               foreach ( $namespaceOptions as $id => $name ) {
                        $options[] = array(
                                'data' => (string)$id,
                                'label' => $name,
index d44e68f..fdc44b7 100644 (file)
@@ -59,6 +59,7 @@
        'ary' => 'Maġribi',    # Moroccan Spoken Arabic
        'arz' => 'مصرى',    # Egyptian Spoken Arabic
        'as' => 'অসমীয়া',        # Assamese
+       'ase' => 'American sign language',      # American sign language
        'ast' => 'asturianu',   # Asturian
        'av' => 'авар',     # Avar
        'avk' => 'Kotava', # Kotava
        'lt' => 'lietuvių',    # Lithuanian
        'ltg' => 'latgaļu',    # Latgalian
        'lus' => 'Mizo ţawng', # Mizo/Lushai
-       'luz' => 'Ù\84ئرÛ\8c Ø¬Ø¦Ù\86Ù\88Ù\99Ú¤ی', # Southern Luri
+       'luz' => 'Ù\84ئرÛ\8c Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86ی', # Southern Luri
        'lv' => 'latviešu',    # Latvian
        'lzh' => '文言',      # Literary Chinese, bug 8217
        'lzz' => 'Lazuri',      # Laz
        'sco' => 'Scots',       # Scots
        'sd' => 'سنڌي',     # Sindhi
        'sdc' => 'Sassaresu',   # Sassarese
+       'sdh' => 'کوردی خوارگ',       # Southern Kurdish
        'se' => 'sámegiella',  # Northern Sami
        'sei' => 'Cmique Itom', # Seri
        'ses' => 'Koyraboro Senni',     # Koyraboro Senni
index 721b6d6..291ff16 100644 (file)
@@ -7,7 +7,8 @@
                        "Malekbr",
                        "아라",
                        "Aħmedbaɛl",
-                       "GeekEmad"
+                       "GeekEmad",
+                       "Nemo bis"
                ]
        },
        "tog-usenewrc": ")جمّع التعديلات حسب الصفحة في أحدث التغييرات وقائمة المراقبة (يتطلب جافاسكربت",
@@ -61,6 +62,7 @@
        "versionrequiredtext": "تلزم النسخة $1 من ميدياويكي لاستعمال هذه الصفحة. انظر [[Special:Version|صفحة النسخة]]",
        "youhavenewmessages": "توجد لديك $1 ($2).",
        "youhavenewmessagesmulti": "لديك رسائل جديدة على $1",
+       "viewdeleted": "أأعرض $1؟",
        "restorelink": "{{PLURAL:$1|$1 تعديل محذوف|تعديلا واحدا محذوفا|تعديلين محذوفين|$1 تعديلات محذوفة|$1 تعديلا محذوفا|$1 تعديلا محذوفا}}",
        "feedlinks": "التغذية:",
        "feed-invalid": "نوع اشتراك التلقيم غير صحيح.",
        "resetpass-wrong-oldpass": "كلمة سر حالية أو مؤقتة غير صحيحة.\nربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.",
        "resetpass-temp-password": "كلمة سر مؤقتة:",
        "passwordreset": "إعادة ضبط كلمة السر",
-       "passwordreset-legend": "إعادة تعيين كلمة السر",
        "passwordreset-disabled": "عُطّلت إعادة تعيين كلمة السر على هذه الويكي.",
        "passwordreset-username": "اسم المستخدم:",
        "passwordreset-domain": "النطاق:",
index 923e65e..7a6bc77 100644 (file)
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
 }
index 79d4200..a3d10dc 100644 (file)
        "special-characters-group-gujarati": "Gujaratí",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Laosiano",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM"
 }
index aa9f7ac..94ed9b8 100644 (file)
        "readonly_lag": "تم قفل قاعدة البيانات تلقائيا حتى تستطيع الخواديم التابعة ملاحقة الخادوم الرئيسي",
        "internalerror": "عطل داخلي",
        "internalerror_info": "عطل داخلي: $1",
+       "internalerror-fatal-exception": "استثناء مميت من النوع \"$1\"",
        "filecopyerror": "تعذّر نسخ الملف \"$1\" إلى \"$2\".",
        "filerenameerror": "تعذّر تغيير اسم الملف \"$1\" إلى \"$2\".",
        "filedeleteerror": "تعذّر حذف الملف \"$1\".",
        "actionthrottled": "تم كبح الفعل",
        "actionthrottledtext": "احترازا من السُّخام، يُحظر إجراء هذا الفعل مرات كثيرة في فترة زمنية قصيرة، و لقد تجاوزت هذا الحد.\nمن فضلك حاول مجددا بعد عدة دقائق.",
        "protectedpagetext": "هذه الصفحة تمت حمايتها لمنع التعديل أو أية عمليات أخرى.",
-       "viewsourcetext": "تمكنك مطالعة و نسخ مصدر هذه الصفحة:",
-       "viewyourtext": "Ù\8aÙ\85Ù\83Ù\86Ù\83 Ø§Ø³ØªØ¹Ø±Ø§Ø¶ Ù\88 Ù\86سخ Ù\85صدر ''' ØªØ¹Ø¯Ù\8aÙ\84اتÙ\83 ''' Ù\81Ù\8a Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة:",
+       "viewsourcetext": "يمكنك مطالعة و نسخ مصدر هذه الصفحة.",
+       "viewyourtext": "Ù\8aÙ\85Ù\83Ù\86Ù\83 Ø±Ø¤Ù\8aØ© Ù\88 Ù\86سخ Ù\85صدر <strong>تعدÙ\8aÙ\84اتÙ\83</strong> Ù\84Ù\87Ø°Ù\87 Ø§Ù\84صÙ\81حة.",
        "protectedinterface": "توفر هذه الصفحة نص الواجهة للبرنامج على هذا الويكي، وهي محمية لمنع سوء أستخدامها.\nلإضافة أو تغيير الترجمات لجميع مشاريع الويكي، رجاءً أستخدم [//translatewiki.net/ translatewiki.net]، مشروع الترجمة الخاص بميدياويكي.",
        "editinginterface": "<strong>تنبيه:</strong> تعديل هذه الصفحة سيحفظ في هذا الويكي فقط. لتعميم التعديل على جميع مشاريع ميدياويكي، عدلها في [//translatewiki.net/ مشروع ترجمة الويكي].",
        "translateinterface": "من أجل إضافة أو تعديل ترجمات في كل مشاريع الويكي يرجى استخدم [//translatewiki.net/ translatewiki.net]، مشروع ميدياويكي لترجمة الواجهة.",
        "yourdiff": "الفروق",
        "copyrightwarning": "من فضلك لاحظ أن جميع المساهمات ل {{SITENAME}} خاضعة وصادرة تحت ترخيص $2 (انظر في $1 للمزيد من التفاصيل)\nإذا لم ترد أن تخضع كتابتك للتعديل والتوزيع الحر، لا تضعها هنا<br />.\nكما أنك تتعهد بأنك قمت بكتابة ما هو موجود بنفسك، أو قمت بنسخها من مصدر يخضع ضمن الملكية العامة، أو مصدر حر آخر.\n'''لا ترسل أي عمل ذي حقوق محفوظة بدون الإذن من صاحب الحق'''.",
        "copyrightwarning2": "من فضلك لاحظ أن جميع المساهمات في {{SITENAME}} يمكن أن تعدل أو تتغير أو تزال من قبل المساهمين الآخرين.\nإذا لم تكن ترغب أن تعدل مشاركاتك بهذا الشكل، لا تضعها هنا.<br />\nأنت تقر أيضا أنك كتبت هذا بنفسك، أو نسخته من مصدر يخضع للملكية العامة، أو مصدر حر آخر (انظر $1 للتفاصيل).\n'''لا تضف أي عمل ذي حقوق محفوظة بدون تصريح!'''",
+       "editpage-cannot-use-custom-model": "نموذج المحتوى لهذه الصفحة لا يمكن تغييره.",
        "longpageerror": "'''خطأ: النص الذي قمت بإدخاله {{PLURAL:$1|واحد كيلوبايت|$1 كيلوبيات}} أطول, وهو أطول من الحد الأقصى {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.'''\nو يتعذر حفظه.",
        "readonlywarning": "'''تحذير: لقد أغلقت قاعدة البيانات للصيانة، لذلك لن تتمكن من حفظ التعديلات التي قمت بها حاليا.\nإذا رغبت بإمكانك أن تنسخ النص الذي تعمل عليه وتحفظه في ملف نصي إلى وقت لاحق.'''\n\nالإداري الذي أغلقها أعطى هذا التفسير: $1",
        "protectedpagewarning": "'''تحذير: تمت حماية هذه الصفحة حتى يمكن للمستخدمين ذوي الصلاحيات الإدارية فقط تعديلها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
        "semiprotectedpagewarning": "'''ملاحظة:''' هذه الصفحة محمية بحيث يمكن للمستخدمين المسجلين وحدهم تعديلها.",
-       "cascadeprotectedwarning": "'''تحذير:''' تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":",
+       "cascadeprotectedwarning": "<strong>تحذير:</strong> تمت حماية هذه الصفحة بحيث يستطيع المستخدمون ذوو الصلاحيات الإدارية فقط تعديلها، وذلك لأنها مدمجة في {{PLURAL:$1||الصفحة التالية والتي تمت حمايتها|الصفحتين التاليتين واللتين تمت حمايتها|الصفحات التالية والتي تمت حمايتها}} بخاصية \"حماية الصفحات المدمجة\":",
        "titleprotectedwarning": "'''تحذير:  هذه الصفحة تمت حمايتها بحيث أن [[Special:ListGroupRights|صلاحيات معينة]] مطلوبة لإنشائها.'''\nآخر مدخلة سجل موفرة بالأسفل كمرجع:",
        "templatesused": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه الصفحة:",
        "templatesusedpreview": "{{PLURAL:$1||القالب المستخدم|القالبان المستخدمان|القوالب المستخدمة}} في هذه المعاينة:",
        "rev-showdeleted": "أظهر",
        "revisiondelete": "حذف/استرجاع المراجعات",
        "revdelete-nooldid-title": "مراجعة هدف غير صحيحة",
-       "revdelete-nooldid-text": "إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.",
+       "revdelete-nooldid-text": "إما أنك لم تحدد مراجعة معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.",
        "revdelete-no-file": "الملف المحدد غير موجود.",
        "revdelete-show-file-confirm": "هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف \"<nowiki>$1</nowiki>\" بتاريخ $2 الساعة $3؟",
        "revdelete-show-file-submit": "نعم",
        "search-category": "(التصنيف $1)",
        "search-file-match": "(يطابق محتوى الملف)",
        "search-suggest": "أتقصد: $1",
+       "search-rewritten": "عرض النتائج ل$1. ابحث بدلا من ذلك عن $2.",
        "search-interwiki-caption": "المشاريع الشقيقة",
        "search-interwiki-default": "نتائح من $1:",
        "search-interwiki-more": "(المزيد)",
        "badsig": "توقيع خام غير صحيح؛ تحقق من وسوم HTML.",
        "badsiglength": "توقيعك طويل جدا.\nيجب أن يكون أقل من $1 {{PLURAL:$1|حرف|حروف}}.",
        "yourgender": "كيف تفضل أن توصف؟",
-       "gender-unknown": "Ø£Ù\81ضÙ\84 Ø¹Ø¯Ù\85 Ø§Ù\84Ø¥Ù\81صاح",
+       "gender-unknown": "عÙ\86د Ø°Ù\83رÙ\83Ø\8c Ø§Ù\84برÙ\86اÙ\85ج Ø³Ù\8aستخدÙ\85 Ù\83Ù\84Ù\85ات Ù\85حاÙ\8aدة Ø§Ù\84Ù\86Ù\88ع Ù\85تÙ\89 Ù\85ا Ù\83اÙ\86 Ø°Ù\84Ù\83 Ù\85Ù\85Ù\83Ù\86ا",
        "gender-male": "هو يعدل صفحات الويكي",
        "gender-female": "هي تعدل صفحات الويكي",
        "prefs-help-gender": "ضبط هذا التفضيل اختياري.\nيستخدم البرنامج هذه القيمة لمخاطبتك ومخاطبة الآخرين عنك وفقا للصيغة النحوية الملائمة للجنس.\nستكون هذه المعلومة علنية.",
        "userrights-lookup-user": "أدِر مجموعات المستخدم",
        "userrights-user-editname": "أدخل اسم مستخدم:",
        "editusergroup": "عدل مجموعات المستخدم",
-       "editinguser": "تغيير صلاحيات {{GENDER:$1|المستخدم|المستخدمة}} '''[[User:$1|$1]]''' $2",
+       "editinguser": "تغيير صلاحيات {{GENDER:$1|المستخدم|المستخدمة}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "تعديل مجموعات المستخدم",
        "saveusergroups": "احفظ مجموعات المستخدم",
        "userrights-groupsmember": "عضو في:",
        "emailccsubject": "نسخة من رسالتك إلى $1: $2",
        "emailsent": "أُرسل البريد الإلكتروني",
        "emailsenttext": "أُرسلت رسالتك الإلكترونية.",
-       "emailuserfooter": "هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة \"مراسلة المستخدم\" في {{SITENAME}}.",
+       "emailuserfooter": "هذا البريد الإلكتروني تم إرساله بواسطة $1 إلى $2 بواسطة وظيفة \"{{int:emailpage}}\" في {{SITENAME}}.",
        "usermessage-summary": "ترك رسالة نظام.",
        "usermessage-editor": "مراسل النظام",
        "watchlist": "قائمة مراقبتي",
        "watchlistanontext": "الرجاء $1 لعرض أو تعديل الصفحات في قائمة مراقبتك.",
        "watchnologin": "غير مسجل الدخول",
        "addwatch": "إضافة إلى قائمة المراقبة",
-       "addedwatchtext": "أضيفت الصفحة  \"[[:$1]]\" إلى [[Special:Watchlist|قائمة مراقبتك]].\nالتغييرات القادمة على هذه الصفحة وصفحة نقاشها سيتم وضعها هناك.",
+       "addedwatchtext": "\"[[:$1]]\" وصفحة نقاشها أضيفتا إلى [[Special:Watchlist|قائمة مراقبتك]].",
        "addedwatchtext-short": "أضيفت صفحة \"$1\" إلى قائمة مراقبتك.",
        "removewatch": "إزالة من قائمة المراقبة",
-       "removedwatchtext": "أزيلت الصفحة \"[[:$1]]\" من [[Special:Watchlist|قائمة مراقبتك]].",
+       "removedwatchtext": "\"[[:$1]]\" وصفحة نقاشها أزيلتا من [[Special:Watchlist|قائمة مراقبتك]].",
        "removedwatchtext-short": "أزيلت صفحة \"$1\" من قائمة مراقبتك.",
        "watch": "راقب",
        "watchthispage": "راقب هذه الصفحة",
        "rollback-success": "استرجع تعديلات $1؛\nاسترجع حتى آخر نسخة بواسطة $2.",
        "sessionfailure-title": "فشل في الجلسة",
        "sessionfailure": "يبدو أنه هناك مشكلة في هذه جلسة الدخول الخاصة بك؛\nلذلك فقد ألغيت هذه العملية كإجراء احترازي ضد الاختراق.\nمن فضلك اضغط على مفتاح \"رجوع\" لتحميل الصفحة التي جئت منها، ثم حاول مرة أخرى.",
+       "changecontentmodel": "غير نموذج المحتوى لصفحة",
+       "changecontentmodel-legend": "غير نموذج المحتوى",
        "changecontentmodel-title-label": "عنوان الصفحة",
        "changecontentmodel-model-label": "نموذج محتوى جديد",
        "changecontentmodel-reason-label": "السبب:",
+       "changecontentmodel-success-title": "نموذج المحتوى تم تغييره",
+       "changecontentmodel-success-text": "نوع المحتوى ل[[:$1]] تم تغييره.",
+       "changecontentmodel-cannot-convert": "المحتوى على [[:$1]] لا يمكن تحويله لنوع من $2.",
+       "changecontentmodel-nodirectediting": "نموذج المحتوى $1 لا يدعم التعديل المباشر",
+       "log-name-contentmodel": "سجل تغيير نموذج المحتوى",
+       "log-description-contentmodel": "الأحداث المرتبطة بنماذج المحتوى لصفحة",
        "logentry-contentmodel-change-revertlink": "استرجع",
        "logentry-contentmodel-change-revert": "استرجع",
        "protectlogpage": "سجل الحماية",
        "protect-locked-blocked": "لا يمكنك تغيير مستويات الحماية وأنت ممنوع.\nالإعدادات الحالية للصفحة '''$1''' هي:",
        "protect-locked-dblock": "لا يمكن تغيير مستويات الحماية بسبب غلق قاعدة البيانات حاليا.\nالإعدادات الحالية للصفحة '''$1''' هي:",
        "protect-locked-access": "لا يملك حسابك هذا صلاحية تغيير مستوى حماية الصفحة.\nالإعدادات الحالية للصفحة '''$1''' هي:",
-       "protect-cascadeon": "هذه الصفحة محمية لكونها مضمنة في {{PLURAL:$1||الصفحة التالية|الصفحتين التاليتين|الصفحات التالية}}، والتي بها خيار حماية الصفحات المدمجة فعال.\nلن يؤثر تغيير مستوى حماية هذه الصفحة على حماية الصفحات المدمجة.",
+       "protect-cascadeon": "هذه الصفحة محمية حاليا لكونها مضمنة في {{PLURAL:$1||الصفحة التالية|الصفحتين التاليتين|الصفحات التالية}}، والتي بها خيار حماية الصفحات المدمجة فعال.\nلن يؤثر تغيير مستوى حماية هذه الصفحة على حماية الصفحات المدمجة.",
        "protect-default": "اسمح لكل المستخدمين",
        "protect-fallback": "السماح فقط للمستخدمين ذوي الصلاحية \"$1\"",
        "protect-level-autoconfirmed": "السماح فقط للمستخدمين المؤكدين تلقائيا",
        "thumbnail_image-failure-limit": "هناك الكثير من المحاولات الفاشلة مؤخراً ($1 أو أكثر) لتَصْيير هذه الصورة المصغرة. الرجاء المحاولة مرة أخرى لاحقاً.",
        "import": "استيراد صفحات",
        "importinterwiki": "استورد من ويكي أخرى",
-       "import-interwiki-text": "اختر ويكي وعنوان الصفحة للاستيراد.\nتواريخ المراجعات وأسماء المحررين سيتم حفظها.\nكل أفعال الاستيراد عبر الويكي يتم تسجيلها في [[Special:Log/import|سجل الاستيراد]].",
+       "import-interwiki-text": "اختر ويكي وعنوان الصفحة للاستيراد.\nتواريخ المراجعات وأسماء المحررين سيتم حفظها.\nكل أفعال الاستيراد من الويكيات الأخرى يتم تسجيلها في [[Special:Log/import|سجل الاستيراد]].",
        "import-interwiki-sourcewiki": "الويكي المصدر:",
        "import-interwiki-sourcepage": "الصفحة المصدر:",
        "import-interwiki-history": "انسخ كل نسخ التاريخ لهذه الصفحة",
        "import-interwiki-templates": "ضمن كل القوالب",
        "import-interwiki-submit": "استيراد",
+       "import-mapping-default": "استورد للمواقع القياسية",
        "import-mapping-namespace": "استورد إلى نطاق:",
+       "import-mapping-subpage": "استورد كصفحات فرعية للصفحة التالية:",
        "import-upload-filename": "اسم الملف:",
        "import-comment": "تعليق:",
        "importtext": "من فضلك صدر الملف من الويكي المصدر باستخدام [[Special:Export|أداة التصدير]].\nاحفظها على حاسوبك ثم ارفعها هنا.",
        "importcantopen": "لم يمكن فتح ملف الاستيراد",
        "importbadinterwiki": "وصلة إنترويكي سيئة",
        "importsuccess": "الاستيراد انتهى!",
-       "importnosources": "لم يتم تعريف مصادر للاستيراد عبر الويكي وعمليات رفع التاريخ المباشرة معطلة.",
+       "importnosources": "لا ويكيات للاستيراد منها تم تعريفها وعمليات رفع التاريخ المباشرة معطلة.",
        "importnofile": "لم يتم رفع ملف استيراد.",
        "importuploaderrorsize": "رفع ملف الاستيراد فشل.\nالملف أكبر من حجم الرفع المسموح.",
        "importuploaderrorpartial": "فشل رفع ملف الاستيراد. لم يتم رفع الملف إلا جزئياً.",
        "pageinfo-robot-index": "مسموحة",
        "pageinfo-robot-noindex": "غير مسموحة",
        "pageinfo-watchers": "عدد المراقبين",
+       "pageinfo-visiting-watchers": "عدد مراقبي الصفحة الذين زاروا التعديلات الأخيرة",
        "pageinfo-few-watchers": "أقل من {{PLURAL:$1||مراقب واحد|مراقبين اثنين|$1 مراقبين|$1 مراقباً|$1 مراقب}}",
        "pageinfo-redirects-name": "عدد التحويلات إلى هذه الصفحة",
        "pageinfo-subpages-name": "الصفحات الفرعية لهذه الصفحة",
        "tags-active-yes": "نعم",
        "tags-active-no": "لا",
        "tags-source-extension": "يعرفه امتداد",
+       "tags-source-manual": "تم تطبيقه يدويا بواسطة المستخدمين والبوتات.",
+       "tags-source-none": "لم يعد قيد الاستخدام",
        "tags-edit": "عدل",
        "tags-delete": "احذف",
        "tags-activate": "نشط",
        "tags-deactivate-reason": "سبب",
        "tags-deactivate-not-allowed": "من غير الممكن تعطيل الوسم \"$1\".",
        "tags-deactivate-submit": "عطل",
+       "tags-apply-not-allowed-one": "السوم \"$1\" غير مسموح أن يتم تطبيقه يدويا.",
+       "tags-apply-not-allowed-multi": "{{PLURAL:$2|الوسم|الوسوم}} التالية غير مسموح أن يتم تطبيقها يدويا: $1",
+       "tags-update-no-permission": "أنت لا تمتلك السماح لإضافة أو إزالة وسوم التغيير من المراجعات أو مدخلات السجل الفردية.",
+       "tags-update-add-not-allowed-one": "الوسم \"$1\" غير مسموح أن تتم إضافته يدويا.",
+       "tags-update-add-not-allowed-multi": "The following {{PLURAL:$2|الوسم|الوسوم}} التالية غير مسموح أن تتم إضافتها يدويا: $1",
        "tags-update-remove-not-allowed-one": "من غير المسموح بإزالة وسم \"$1\".",
+       "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|الوسم|الوسوم}} التالية غير مسموح أن تتم إزالتها يدويا: $1",
        "tags-edit-title": "تعديل الوسوم",
        "tags-edit-manage-link": "التحكم بالوسوم",
+       "tags-edit-revision-selected": "{{PLURAL:$1|مراجعة مختارة|مراجعات مختارة}} من [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|حدث سجل مختار|أحداث سجل مختارة}}:",
+       "tags-edit-revision-legend": "أضف أو أزل الوسوم من {{PLURAL:$1|هذه المراجعة|كل $1 المراجعات}}",
        "tags-edit-existing-tags": "الوسوم الموجودة:",
        "tags-edit-existing-tags-none": "\"لا وسوم\"",
        "tags-edit-new-tags": "وسوم جديدة:",
        "tags-edit-chosen-placeholder": "اختر بعض الوسوم",
        "tags-edit-chosen-no-results": "لا وسوم مطابقة",
        "tags-edit-reason": "السبب:",
+       "tags-edit-revision-submit": "طبق التغييرات ل{{PLURAL:$1|هذه المراجعة|$1 مراجعات}}",
+       "tags-edit-logentry-submit": "طبق التغييرات ل{{PLURAL:$1|مدخلة السجل هذه|$1 مدخلات السجل}}",
        "tags-edit-success": "طبقت التغييرات بنجاح.",
        "tags-edit-failure": "التغييرات لم تطبق: $1",
        "tags-edit-nooldid-title": "مراجعة هدف غير صالحة",
+       "tags-edit-none-selected": "من فضلك اختر على الأقل وسما واحدا للإضافة أو الإزالة.",
        "comparepages": "قارن صفحات",
        "compare-page1": "صفحة 1",
        "compare-page2": "صفحة 2",
        "htmlform-cloner-create": "إضافة المزيد",
        "htmlform-cloner-delete": "إزالة",
        "htmlform-cloner-required": "مطلوب قيمة واحدة على الأقل.",
+       "htmlform-title-badnamespace": "[[:$1]] ليس في نطاق \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" ليس عنوان صفحة يمكن إنشاؤه",
+       "htmlform-title-not-exists": "[[:$1]] غير موجود.",
        "htmlform-user-not-exists": "<strong>$1</strong> غير موجود",
        "htmlform-user-not-valid": "اسم المستخدم <strong>$1</strong> غير صالح.",
        "sqlite-has-fts": "$1 بدعم البحث في كامل النص",
        "revdelete-restricted": "طبق الضوابط لمديري النظام",
        "revdelete-unrestricted": "أزال الضوابط لمديري النظام",
        "logentry-block-block": "{{GENDER:$2|منع|منعت}} $1 {{GENDER:$4|$3}} لفترة زمنية مدتها $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|رفع منع}} {{GENDER:$4|$3}}",
        "logentry-suppress-block": "{{GENDER:$2|منع|منعت}} $1 {{GENDER:$4|$3}} لفترة زمنية مدتها $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|استورد}} $3 بواسطة رفع ملف",
        "logentry-import-interwiki": "$1 {{GENDER:$2|استورد|استوردت}} $3 من ويكي أخرى",
        "logentry-merge-merge": "{{GENDER:$2|دمج|دمجت}} $1 $3 إلى $4 (المراجعات حتى $5).",
        "logentry-move-move": "{{GENDER:$2|نقل|نقلت}} $1 صفحة $3 إلى $4",
        "feedback-cancel": "إلغاء",
        "feedback-close": "تم",
        "feedback-external-bug-report-button": "أرسل تقرير علة تقنية",
+       "feedback-dialog-title": "أرسل تغذية راجعة",
        "feedback-error-title": "خطأ",
        "feedback-error1": "خطأ: لا يمكن التعرف عليها من API",
        "feedback-error2": "خطأ: فشل في تحرير",
        "mediastatistics-header-archive": "صيغ مضغوطة",
        "json-warn-trailing-comma": "تمت إزالة {{PLURAL:$1|فاصلة انتهائية واحدة|فاصلتين انتهائيتين|$1 فاصلات انتهائية|$1 فاصلة انتهائية}} من JSON",
        "json-error-unknown": "وقعت مشكلة مع JSON. رسالة الخطأ: $1",
+       "json-error-depth": "عمق الستاك الأقصى تم تجاوزه",
+       "json-error-state-mismatch": "JSON غير صحيح أو غير مهيأ",
        "json-error-ctrl-char": "خطأ في محرف التحكم، ربما نتيجة سوء ترميزه.",
        "json-error-syntax": "خطأ صياغة",
        "json-error-utf8": "خطأ في تشكيل محارف UTF-8، ربما نتيجة سوء ترميزها.",
        "special-characters-title-endash": "واصلة قصيرة",
        "special-characters-title-emdash": "واصلة طويلة",
        "special-characters-title-minus": "علامة الطرح",
+       "mw-widgets-dateinput-no-date": "لا تاريخ تم اختياره",
        "mw-widgets-titleinput-description-new-page": "الصفحة غير موجودة بعد",
        "mw-widgets-titleinput-description-redirect": "تحويل إلى $1"
 }
index bf23b71..694c504 100644 (file)
        "sp-contributions-search": "বৰঙণিসমূহৰ কাৰণে সন্ধান কৰক",
        "sp-contributions-username": "আই.পি. ঠিকনা অথবা ব্যৱহাৰকৰ্তাৰ নাম:",
        "sp-contributions-toponly": "কেৱল সাম্প্ৰতিক সংস্কৰণৰ অন্তৰ্গত সম্পাদনাসমূহ দেখুৱাওক",
+       "sp-contributions-newonly": "কেৱল পৃষ্ঠা সৃষ্টি কৰা সম্পাদনাসমূহ দেখুৱাওক",
        "sp-contributions-submit": "সন্ধান কৰক",
        "whatlinkshere": "ইয়ালৈ থকা সংযোগসমূহ",
        "whatlinkshere-title": "\"$1\"লৈ সংযোজিত পৃষ্ঠাসমূহ",
diff --git a/languages/i18n/ase.json b/languages/i18n/ase.json
new file mode 100644 (file)
index 0000000..fe87d88
--- /dev/null
@@ -0,0 +1,612 @@
+{
+       "@metadata": {
+               "authors": [
+                       "Icemandeaf"
+               ]
+       },
+       "tog-underline": "M521x525S1ce10499x476S1ce48479x476S20a00491x510 M523x518S15a1a478x483S19201477x499S26506508x501 S38a00464x490",
+       "tog-hideminor": "M536x534S35610482x483S10601513x506S21600525x501S30a30488x489 M518x590S10609493x554S10621482x570S21100495x541S2df20474x526S30a00482x483 S38700463x496 M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M515x512S1f010486x488S2f900502x507 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "tog-hidepatrolled": "M536x534S35610482x483S10601513x506S21600525x501S30a30488x489 M518x590S10609493x554S10621482x570S21100495x541S2df20474x526S30a00482x483 S38700463x496 M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M537x524S10e50516x494S26a10463x476S26a00510x476S10e58469x494 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "tog-newpageshidepatrolled": "M518x560S15a16490x548S2880f453x527S20e00476x538S1821d488x535S30a00482x483 M518x558S15a37484x534S1f550490x541S20e00470x545S26502452x544S30a00482x483 M518x610S14402482x556S1440a475x532S22b04497x580S30a00482x483 S38700463x496 M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M537x524S10e50516x494S26a10463x476S26a00510x476S10e58469x494 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tog-extendwatchlist": "M518x534S14702496x489S1470a483x479S22704501x506S22700484x467S22a04501x519 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509 M521x531S10012491x516S15a18479x503S26620486x469 M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 S38700463x496 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M518x521S10000483x491S2ef00500x479 M521x524S1f740501x509S1f748479x498S20e00503x494S22a00502x476 M536x534S35610482x483S10601513x506S21600525x501",
+       "tog-usenewrc": "L536x534S35610482x483S10601513x506S21600525x501S30a30488x489 L518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 R526x572S10e50511x542S26500510x524S10e58475x542S26510477x524S30a00482x483 R518x610S14402482x556S1440a475x532S22b04497x580S30a00482x483 S38700463x496 M514x533S19a20486x468S27106495x493 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M521x508S1f748479x493S1f740501x493",
+       "tog-showtoolbar": "M521x531S10012491x516S15a18479x503S26620486x469 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x521S15a18482x494S1c501493x480S20600496x506 M512x531S1ec27488x470S22b04491x501",
+       "tog-editondblclick": "M516x523S1c520485x495S26a00489x478 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tog-editsectiononrightclick": "M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M524x525S15a3a477x493S15a41478x476S2d60a501x505S21100506x488 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M521x508S1f748479x493S1f740501x493 M512x518S12420489x488S22104500x482 M524x525S15a3a477x493S15a41478x476S2d60a501x505S21100506x488 M525x528S11010508x501S11018476x501S2df1e475x473S2df06505x473",
+       "tog-watchcreations": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M531x566S20302492x532S2030a488x549S21100508x551S26900515x529S26910467x548S30a00482x483 S38700463x496 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M539x579S10e27506x534S10e09480x534S22a07495x565S22a17469x564S21b00531x528S21b00504x528S30a00482x483 S38700463x496 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M514x514S15a01491x487S20500487x503 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchdefault": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M514x514S15a01491x487S20500487x503 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchmoves": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M569x549S18520505x534S18528466x534S26626539x532S30a00482x483 S38700463x496 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M514x514S15a01491x487S20500487x503 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchdeletion": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M536x577S1ea40482x556S1f540521x523S22a07506x549S2f700521x513S30a00482x483 S38700463x496 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M514x514S15a01491x487S20500487x503 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchrollback": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M536x561S10043506x528S20500495x550S30a00482x483 M518x595S10004492x534S2b705493x571S30a00482x483 S38700463x496 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M514x514S15a01491x487S20500487x503 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-minordefault": "M520x525S15a18480x490S10a02483x476S23100494x508S20e00500x494 M536x514S26506521x499S11502472x498S20e00507x500S15a28465x487 M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M515x512S1f010486x488S2f900502x507",
+       "tog-previewontop": "M521x531S10012491x516S15a18479x503S26620486x469 M538x612S2ff00482x483S10001513x517S2e305488x487S19a20510x547S27106518x572 M520x519S26504502x504S15a0a480x481S15a02493x487 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M522x534S10050501x467S10058484x467S23b34506x501S23b02501x515S23b3c479x501S23b1a479x515",
+       "tog-previewonfirst": "M521x531S10012491x516S15a18479x503S26620486x469 M538x612S2ff00482x483S10001513x517S2e305488x487S19a20510x547S27106518x572 M521x508S1f748479x493S1f740501x493 M519x514S1f548481x490S10002489x487 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "tog-enotifwatchlistpages": "M518x558S15a01492x531S20500488x547S30a00482x483 M526x572S10e50511x542S26500510x524S10e58475x542S26510477x524S30a00482x483 M518x610S14402482x556S1440a475x532S22b04497x580S30a00482x483 M532x561S18049468x526S18041507x526S20500486x550S20500504x550S30a00482x483 M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 M522x524S16d18479x476S10012492x486S26904498x506",
+       "tog-enotifusertalkpages": "M518x558S15a01492x531S20500488x547S30a00482x483 M525x570S15a56498x558S11520502x527S20e00488x544S26a02473x537S30a00482x483 M524x577S15a37480x534S10041487x547S20600502x547S30a00482x483 M518x558S15a37484x534S1f550490x541S20e00470x545S26502452x544S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 M522x524S16d18479x476S10012492x486S26904498x506",
+       "tog-enotifminoredits": "M529x562S15a37499x531S1f550505x538S20e00485x542S26a02468x535S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 M520x546S1f748478x531S1f740500x531S30a00482x483 M518x558S1f010482x534S2f900498x553S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 M514x533S19a20486x468S27106495x493 M522x524S16d18479x476S10012492x486S26904498x506",
+       "tog-enotifrevealaddr": "M538x522S18517516x486S1851f461x495S30a00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478 M529x567S16d18479x542S10012492x552S26b00502x528S30a00482x483 S38700463x496 M521x531S10012491x516S15a18479x503S26620486x469 M514x514S15a01491x487S20500487x503 M525x520S16d18475x495S10012488x505S26b00498x481",
+       "tog-shownumberswatching": "M521x531S10012491x516S15a18479x503S26620486x469 M535x536S20330516x521S20338470x521S22a10471x502S22a00517x502S14c30511x465S14c38465x465 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M537x524S10e50516x494S26a10463x476S26a00510x476S10e58469x494",
+       "tog-oldsig": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506 M518x518S15a37483x483S11551491x493 S38a00464x490",
+       "tog-fancysig": "M518x518S15a37483x483S11551491x493 M514x533S19a20486x468S27106495x493 M513x654S18620491x450S19220492x483S14020478x506S19220492x540S1fb20493x563S14a20492x586S10620487x605S1fb20493x635 S38b00470x493 M520x525S15a18480x490S10a02483x476S23100494x508S20e00500x494 M521x525S1ce10499x476S1ce48479x476S20a00491x510 M532x518S17610516x502S17618469x502S26500517x483S26510470x483 S38b04470x493",
+       "tog-uselivepreview": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M515x553S1dc20486x447S19220494x481S10e20495x504S14a20494x538 M538x612S2ff00482x483S10001513x517S2e305488x487S19a20510x547S27106518x572",
+       "tog-forceeditsummary": "M543x522S30a00482x483S19200505x503S20600521x493 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 M555x568S14c40531x521S14c48447x537S26502516x534S26516469x552S20340496x534S20348488x551S30a00482x483 M531x564S17610515x548S17618468x548S26500516x529S26510469x529S30a00482x483 S38700463x496 M524x518S15a59476x482S15a51488x495S20600502x488 M535x525S1dc20511x475S1dc28466x475S22a00522x510S22a10466x510",
+       "tog-watchlisthideown": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M514x514S15a01491x487S20500487x503 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchlisthidebots": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M508x533S14720493x468S17620492x494S1fb20493x514  M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchlisthideminor": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M515x512S1f010486x488S2f900502x507 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchlisthideliu": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489   M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchlisthideanons": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489   M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-watchlisthidepatrolled": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M518x560S2035a492x545S10e50501x522S31500482x483   M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tog-ccmeonemails": "M536x561S10043506x528S20500495x550S30a00482x483 M521x568S16d18478x543S10012491x553S26900500x529S30a00482x483 M523x563S1f550474x548S2a208500x527S30a00482x483 M525x570S15a56498x558S11520502x527S20e00488x544S26a02473x537S30a00482x483 S38700463x496 M522x524S16d18479x476S10012492x486S26904498x506 M514x533S19a20486x468S27106495x493",
+       "tog-diffonly": "M559x512S15a57477x489S15a51501x489S26612441x490S26606529x488 M521x531S10012491x516S15a18479x503S26620486x469 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M531x518S15a06499x506S1d151506x482S20a10469x488 M523x520S15a1a496x480S2c600478x482S1f540501x496 M543x512S10021495x491S10029476x491S26506528x489S26512458x489",
+       "tog-showhiddencats": "M521x531S10012491x516S15a18479x503S26620486x469 M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487",
+       "tog-norollbackdiff": "M518x595S10004492x534S2b705493x571S30a00482x483 M532x588S14c30507x526S2a204509x560S2a21c471x560S14c38471x526S30a00482x483 S38700463x496 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M543x512S10021495x491S10029476x491S26506528x489S26512458x489",
+       "tog-useeditwarning": "M543x522S30a00482x483S19200505x503S20600521x493 M536x561S10043506x528S20500495x550S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 M518x558S15a37484x534S1f550490x541S20e00470x545S26502452x544S30a00482x483 M534x542S30a00482x483S26500520x505S20e00521x526S1f540493x518 M519x559S20600497x527S10e02487x544S20302480x534S30a00482x483 S38700463x496 M524x518S15a59476x482S15a51488x495S20600502x488 M535x525S1dc20511x475S1dc28466x475S22a00522x510S22a10466x510",
+       "tog-prefershttps": "M543x522S30a00482x483S19200505x503S20600521x493 M551x571S2a200510x530S20b00475x558S11530536x532S15a37475x533S11551483x543S30a00482x483 S38700463x496 M513x525S10000492x495S2ea06488x476 M527x522S15a56500x510S11520504x479S20e00490x496S26502473x495 M557x519S37600488x496S20307505x482S2030f474x482S2810a525x495S28112443x495 M545x527S1c510503x499S1c518472x499S2c500505x474S2c514455x473 M534x525S1ce10497x475S1ce18481x475S20a00491x510S26502519x491S26516467x491S2fb02497x489",
+       "underline-always": "M513x525S10000492x495S2ea06488x476",
+       "underline-never": "M524x533S15a50476x468S15a40477x506S24103492x482",
+       "sunday": "M534x530S2e508511x503S15d28473x471S15d20508x471S2e510467x503",
+       "monday": "M512x528S2e508489x501S18d00488x472",
+       "tuesday": "M512x525S2e508489x498S1fb00494x476",
+       "wednesday": "M512x531S2e508489x504S18600492x470",
+       "thursday": "M518x535S2e508495x508S1fb20498x465S11502483x489",
+       "friday": "M513x530S2e508490x503S1ce00487x470",
+       "saturday": "M512x523S2e508489x496S20300493x477",
+       "sun": "M513x530S2e508490x503S15d20487x471",
+       "mon": "M512x528S2e508489x501S18d00488x472",
+       "tue": "M512x525S2e508489x498S1fb00494x476",
+       "wed": "M512x531S2e508489x504S18600492x470",
+       "thu": "M518x524S2e508495x497S11502483x477",
+       "fri": "M513x530S2e508490x503S1ce00487x470",
+       "sat": "M512x523S2e508489x496S20300493x477",
+       "january": "M521x543S19220500x474S1f720495x498S11920494x517S2a20c479x457",
+       "february": "M511x538S1ce20489x463S14a20490x497S14720491x516",
+       "march": "M515x560S18d20495x440S1f720495x469S11a20500x487S16d20498x521S11502485x545",
+       "april": "M518x566S1f720492x435S14051483x451S11a20497x478S19220497x512S1dc20488x536",
+       "may_long": "M514x534S18d20488x467S1f720488x497S19a20486x514",
+       "june": "M521x559S19220500x458S2a20c479x441S11520500x480S11920494x513S14a20500x544",
+       "july": "M521x563S19220500x455S2a20c479x438S11520500x477S1dc20491x511S19a20493x543",
+       "august": "M515x534S1f720495x466S11520500x484S1f040486x519",
+       "september": "M516x540S20320498x461S14a20498x480S14051485x495S1fb20498x521",
+       "october": "M509x532S17620493x469S16d20492x489S1fb20494x513",
+       "november": "M511x540S11920490x461S17620495x491S10e20496x510",
+       "december": "M509x537S10120493x464S14a20494x498S16d20492x517",
+       "january-gen": "M521x543S19220500x474S1f720495x498S11920494x517S2a20c479x457",
+       "february-gen": "M511x538S1ce20489x463S14a20490x497S14720491x516",
+       "march-gen": "M515x560S18d20495x440S1f720495x469S11a20500x487S16d20498x521S11502485x545",
+       "april-gen": "M518x566S1f720492x435S14051483x451S11a20497x478S19220497x512S1dc20488x536",
+       "may-gen": "M514x534S18d20488x467S1f720488x497S19a20486x514",
+       "june-gen": "M521x559S19220500x458S2a20c479x441S11520500x480S11920494x513S14a20500x544",
+       "july-gen": "M521x563S19220500x455S2a20c479x438S11520500x477S1dc20491x511S19a20493x543",
+       "august-gen": "M515x534S1f720495x466S11520500x484S1f040486x519",
+       "september-gen": "M516x540S20320498x461S14a20498x480S14051485x495S1fb20498x521",
+       "october-gen": "M509x532S17620493x469S16d20492x489S1fb20494x513",
+       "november-gen": "M511x540S11920490x461S17620495x491S10e20496x510",
+       "december-gen": "M509x537S10120493x464S14a20494x498S16d20492x517",
+       "jan": "M521x543S19220500x474S1f720495x498S11920494x517S2a20c479x457",
+       "feb": "M511x538S1ce20489x463S14a20490x497S14720491x516",
+       "mar": "M515x560S18d20495x440S1f720495x469S11a20500x487S16d20498x521S11502485x545",
+       "apr": "M518x566S1f720492x435S14051483x451S11a20497x478S19220497x512S1dc20488x536",
+       "may": "M514x534S18d20488x467S1f720488x497S19a20486x514",
+       "jun": "M521x559S19220500x458S2a20c479x441S11520500x480S11920494x513S14a20500x544",
+       "jul": "M521x563S19220500x455S2a20c479x438S11520500x477S1dc20491x511S19a20493x543",
+       "aug": "M515x534S1f720495x466S11520500x484S1f040486x519",
+       "sep": "M516x540S20320498x461S14a20498x480S14051485x495S1fb20498x521",
+       "oct": "M509x532S17620493x469S16d20492x489S1fb20494x513",
+       "nov": "M511x540S11920490x461S17620495x491S10e20496x510",
+       "dec": "M509x537S10120493x464S14a20494x498S16d20492x517",
+       "january-date": "M521x543S19220500x474S1f720495x498S11920494x517S2a20c479x457 $1",
+       "february-date": "M511x538S1ce20489x463S14a20490x497S14720491x516 $1",
+       "march-date": "M515x560S18d20495x440S1f720495x469S11a20500x487S16d20498x521S11502485x545 $1",
+       "april-date": "M518x566S1f720492x435S14051483x451S11a20497x478S19220497x512S1dc20488x536 $1",
+       "may-date": "M514x534S18d20488x467S1f720488x497S19a20486x514 $1",
+       "june-date": "M521x559S19220500x458S2a20c479x441S11520500x480S11920494x513S14a20500x544 $1",
+       "july-date": "M521x563S19220500x455S2a20c479x438S11520500x477S1dc20491x511S19a20493x543 $1",
+       "august-date": "M515x534S1f720495x466S11520500x484S1f040486x519 $1",
+       "september-date": "M516x540S20320498x461S14a20498x480S14051485x495S1fb20498x521 $1",
+       "october-date": "M509x532S17620493x469S16d20492x489S1fb20494x513 $1",
+       "november-date": "M511x540S11920490x461S17620495x491S10e20496x510 $1",
+       "december-date": "M509x537S10120493x464S14a20494x498S16d20492x517 $1",
+       "pagecategories": "{{PLURAL:$1|M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487|M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487}}",
+       "category_header": "M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M525x528S11010508x501S11018476x501S2df1e475x473S2df06505x473 $1 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "subcategories": "M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487",
+       "category-media-header": "M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M525x528S11010508x501S11018476x501S2df1e475x473S2df06505x473 \"$1\" M523x564S15a20476x537S2ff00482x483S22b03490x519S16d10506x491S20500491x546 M526x527S14c20475x484S15a56476x515S2a400501x473 M565x520S10a11502x494S10a19471x494S21800502x480S21800481x480S26606535x501S26612436x502",
+       "category-empty": "<em>M508x525S10004493x475S22a04494x510 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M534x520S22a14475x505S19a00506x481S19a08467x481S22a04513x505 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M523x564S15a20476x537S2ff00482x483S22b03490x519S16d10506x491S20500491x546 M526x527S14c20475x484S15a56476x515S2a400501x473 M565x520S10a11502x494S10a19471x494S21800502x480S21800481x480S26606535x501S26612436x502 M532x518S17610516x502S17618469x502S26500517x483S26510470x483 S38800464x496</em>",
+       "hidden-categories": "{{PLURAL:$1|M529x533S2ff00482x482S1f711483x511S20600507x516 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487|M529x533S2ff00482x482S1f711483x511S20600507x516 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487}}",
+       "hidden-category-category": "M529x533S2ff00482x482S1f711483x511S20600507x516 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487",
+       "category-subcat-count": "{{PLURAL:$2|M508x525S10004493x475S22a04494x510 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 M518x521S10000483x491S2ef00500x479 M508x525S10004493x475S22a04494x510 M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 S38800464x496|M508x525S10004493x475S22a04494x510 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 {{PLURAL:$1|M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487|$1 M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487}} M530x529S10018470x471S10641507x501S26505486x480S21600500x494 $2 S38800464x496}}",
+       "category-subcat-count-limited": "M508x525S10004493x475S22a04494x510 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 {{PLURAL:$1|M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487|$1 M521x525S1f540506x476S1f548479x476S2880d497x505 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487}} S38800464x496",
+       "category-file-count-limited": "M508x525S10004493x475S22a04494x510 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 {{PLURAL:$1|$1 M520x523S14c19480x496S15a01497x497S20710483x477}} S38800464x496",
+       "listingcontinuesabbrev": "M521x526S1f750501x511S1f758480x511S26620493x474",
+       "categoryviewer-pagedlinks": "S38b00470x493 $1 S38b04470x493 S38b00470x493 $2 S38b04470x493",
+       "about": "M527x520S18518474x505S10012497x502S2ef00507x480",
+       "article": "M531x518S15a06499x506S1d151506x482S20a10469x488 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "newwindow": "S38b00470x493 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M535x525S1dc20511x475S1dc28466x475S22a00522x510S22a10466x510 S38b04470x493",
+       "cancel": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501",
+       "moredotdotdot": "M526x508S18510501x493S18518475x493",
+       "morenotlisted": "M519x539S14402488x485S1440a481x461S22b04503x509 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 S38800464x496",
+       "mypage": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "mytalk": "M522x522S15a37478x479S10041485x492S20600500x492",
+       "anontalk": "M522x522S15a37478x479S10041485x492S20600500x492 M536x521S2ff00482x483S10011515x491S28108515x461 M508x525S10004493x475S22a04494x510 M517x524S19220496x477S14051483x500 M534x519S1f70a475x499S1f702512x499S22f10466x481S20e00494x483S22f00509x481",
+       "navigation": "M523x527S1ce40501x472S1ce48478x472S28800510x505S28818479x505 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "and": "&#32;M543x512S14c02458x489S26506496x492S18500519x494",
+       "qbfind": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "qbbrowse": "M541x523S10e50504x493S10e58460x493S2920a510x477S2921a466x477",
+       "qbedit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "qbpageoptions": "M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "qbmyoptions": "M514x514S15a01491x487S20500487x503 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "faq": "M517x538S1ce20495x462S1f720491x496S1f051483x515",
+       "faqpage": "Project:M516x538S1ce20494x462S1f720490x496S1f051484x515",
+       "actions": "M531x526S16d51511x474S16d59470x474S26c02514x499S26c12473x499",
+       "namespaces": "M524x514S11541500x487S1154a477x490 M511x528S19220490x473S10120490x498",
+       "variants": "M566x517S10051501x483S10059469x495S24906530x498S24912434x483",
+       "navigation-heading": "M511x540S11920489x461S1f720490x491S10e20496x510 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518",
+       "errorpagetitle": "M518x526S2ff00482x483S19a00487x506",
+       "tagline": "M530x529S10018470x471S10641507x501S26505486x480S21600500x494 {{SITENAME}}",
+       "help": "M512x518S15a37489x495S1f540488x482",
+       "search": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "searchbutton": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "go": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "searcharticle": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "history": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M514x523S11541487x478S22f04489x509",
+       "history_short": "M514x523S11541487x478S22f04489x509",
+       "updatedmarker": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M557x536S36d00479x503S10001536x498S10009510x506S2b711518x476S2b700531x465 M521x517S10043491x483S20500479x506 M527x525S19241500x476S19249474x479S20e00496x494S22a04496x510 M525x524S2ff00482x483S10e00507x494S26500511x474",
+       "printableversion": "M521x513S15a37480x487S1f420492x498S22104505x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "permalink": "M525x521S1f550501x506S1f558476x506S26500510x487S26510477x487S2f900511x479S2f900479x479 M521x525S1ce10499x476S1ce48479x476S20a00491x510",
+       "print": "M521x513S15a37480x487S1f420492x498S22104505x489",
+       "view": "M525x524S2ff00482x483S10e00507x494S26500511x474",
+       "view-foreign": "M525x524S2ff00482x483S10e00507x494S26500511x474 $1",
+       "edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "edit-local": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x520S20348488x505S14c51483x481S21100505x505 M545x536S1ce40504x486S1ce48473x464S27100505x521S27114455x500",
+       "create": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501",
+       "create-local": "M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M518x520S20348488x505S14c51483x481S21100505x505 M545x536S1ce40504x486S1ce48473x464S27100505x521S27114455x500",
+       "editthispage": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "create-this-page": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "delete": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468",
+       "deletethispage": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "undeletethispage": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "undelete_short": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 {{PLURAL:$1|M508x515S10000493x485 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468|$1 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468}}",
+       "viewdeleted_short": "M525x524S2ff00482x483S10e00507x494S26500511x474 {{PLURAL:$1|M508x515S10000493x485 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468|$1 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468}}",
+       "protect": "M512x519S15a19488x482S15a11489x482S20600488x508",
+       "protect_change": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "protectthispage": "M512x519S15a19488x482S15a11489x482S20600488x508 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "unprotect": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x519S15a19488x482S15a11489x482S20600488x508",
+       "unprotectthispage": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M512x519S15a19488x482S15a11489x482S20600488x508",
+       "newpage": "M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "talkpage": "M522x522S15a37478x479S10041485x492S20600500x492 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "talkpagelinktext": "M522x522S15a37478x479S10041485x492S20600500x492",
+       "specialpage": "M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "articlepage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M531x518S15a06499x506S1d151506x482S20a10469x488 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "talk": "M522x522S15a37478x479S10041485x492S20600500x492",
+       "views": "M517x524S15a02484x477S15a20489x484S21100504x492S22a04504x509",
+       "toolbox": "M518x521S15a18482x494S1c501493x480S20600496x506 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "userpage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "projectpage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M539x530S14011508x506S15a07489x493S2b700507x480S19220488x472S2a20c461x470 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "imagepage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M520x523S14c19480x496S15a01497x497S20710483x477 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "mediawikipage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "templatepage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M510x522S15c10490x513S16d12490x495S22a04494x478 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "viewhelppage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M512x518S15a37489x495S1f540488x482 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "categorypage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "viewtalkpage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M522x522S15a37478x479S10041485x492S20600500x492",
+       "otherlanguages": "M525x524S2ff00482x483S10e00507x494S26500511x474 M525x518S1f550476x503S2a208502x482 M563x515S1dc50505x485S1dc58473x485S26606533x499S26612438x499",
+       "lastmodifiedat": "M530x530S15a30477x471S15a30512x471S2e508507x503S2e510470x503 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M536x533S35610482x482S10601513x505S21600525x500 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 $1 M515x518S10050485x488S15a56488x483 $2 S38800464x496",
+       "viewcount": "M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M524x539S14402493x485S1440a486x461S22b00508x509S22b10476x483 {{PLURAL:$1|M522x521S15a48479x488S10002492x506S20e00494x491S22a07504x479|$1 M522x518S10050490x488S15a56495x482S20500478x483}} S38800464x496",
+       "protectedpage": "M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M512x519S15a19488x482S15a11489x482S20600488x508",
+       "jumpto": "M521x534S10020506x495S10028479x504S2b700502x467S2b711479x478 S38a00464x490",
+       "jumptonavigation": "M523x527S1ce40501x472S1ce48478x472S28800510x505S28818479x505 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "jumptosearch": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "pool-errorunknown": "M536x518S2ff00482x483S15a11513x486S28108513x453 M518x526S2ff00482x483S19a00487x506",
+       "poolcounter-usage-error": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x526S2ff00482x483S19a00487x506 S38700463x496 $1",
+       "aboutsite": "M527x520S18518474x505S10012497x502S2ef00507x480 {{SITENAME}}",
+       "aboutpage": "Project:M527x520S18518474x505S10012497x502S2ef00507x480",
+       "currentevents": "M534x520S22a14475x505S19a00506x481S19a08467x481S22a04513x505 M529x530S10030511x500S10038476x500S2a200506x471S2a218472x471",
+       "currentevents-url": "Project:M534x520S22a14475x505S19a00506x481S19a08467x481S22a04513x505 M529x530S10030511x500S10038476x500S2a200506x471S2a218472x471",
+       "disclaimers": "M525x516S15a57475x484S20600503x485S15a51490x493",
+       "disclaimerpage": "Project:M547x514S15a41501x491S15a49477x491S2d610453x486S2d608518x486 M525x516S15a57475x484S20600503x485S15a51490x493",
+       "edithelp": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x518S15a37489x495S1f540488x482",
+       "helppage-top-gethelp": "M512x518S15a37489x495S1f540488x482",
+       "mainpage": "M519x514S1f548481x490S10002489x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "mainpage-description": "M519x514S1f548481x490S10002489x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "policy-url": "Project:M521x526S20500496x514S22a04508x507S15a18482x499S14250480x474",
+       "portal": "M524x535S15a11501x465S15a19476x465S2e112479x490S2e106501x491 M556x522S2d612445x502S2d60a533x502S14048468x477S14040504x477",
+       "portal-url": "Project:M524x535S15a11501x465S15a19476x465S2e112479x490S2e106501x491 M556x522S2d612445x502S2d60a533x502S14048468x477S14040504x477",
+       "privacy": "M529x533S2ff00482x482S1f711483x511S20600507x516 M521x526S20500496x514S22a04508x507S15a18482x499S14250480x474",
+       "privacypage": "Project:M529x533S2ff00482x482S1f711483x511S20600507x516 M521x526S20500496x514S22a04508x507S15a18482x499S14250480x474",
+       "badaccess": "M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M518x526S2ff00482x483S19a00487x506",
+       "badaccess-group0": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M547x525S18040516x510S18048454x510S26610466x475S26600520x475 M531x526S16d51511x474S16d59470x474S26c02514x499S26c12473x499 M508x523S10040493x493S26500493x477 M515x527S2b704501x473S15a18488x500S2b715486x473S15a10501x500 S38800464x496",
+       "ok": "M515x525S17620499x475S14020485x495",
+       "retrievedfrom": "M513x542S1ce50491x458S22a00492x492S14c50487x511 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 $1",
+       "youhavenewmessages": "{{PLURAL:$3|M508x523S10040493x493S26500493x477 M532x518S18049468x483S18041507x483S20500486x507S20500504x507}} $1 S38b00470x493 $2 S38b04470x493 S38800464x496",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|M508x523S10040493x493S26500493x477 M532x518S18049468x483S18041507x483S20500486x507S20500504x507}} $1 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 {{PLURAL:$3|M535x520S1f550465x505S2a208489x480S1f530511x505 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489|$3 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489}} S38b00470x493 $2 S38b04470x493 S38800464x496",
+       "youhavenewmessagesmanyusers": "M508x523S10040493x493S26500493x477 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 $1 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 M535x536S20300516x521S20308470x521S26500516x502S26510470x502S14c30511x465S14c38465x465 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 S38b00470x493 $2 S38b04470x493 S38800464x496",
+       "newmessageslinkplural": "{{PLURAL:$1|M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506}}",
+       "newmessagesdifflinkplural": "M536x534S35610482x483S10601513x506S21600525x501 {{PLURAL:$1|M521x532S10609498x496S10621487x512S21100500x483S2df20479x468}}",
+       "youhavenewmessagesmulti": "$1 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506",
+       "editsection": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "editold": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "viewsourceold": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
+       "editlink": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "viewsourcelink": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
+       "editsectionhint": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M524x525S15a3a477x493S15a41478x476S2d60a501x505S21100506x488 S38700463x496 $1",
+       "toc": "M531x518S15a06499x506S1d151506x482S20a10469x488",
+       "showtoc": "M521x531S10012491x516S15a18479x503S26620486x469",
+       "hidetoc": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "collapsible-collapse": "M518x534S14702496x490S1470a483x480S22700500x507S22704486x467S22a00502x519",
+       "collapsible-expand": "M518x534S14702496x489S1470a483x479S22704501x506S22700484x467S22a04501x519",
+       "confirmable-confirm": "{{GENDER:$1|M521x541S10010486x511S30a00482x483S26500507x517}} S38900464x493",
+       "confirmable-yes": "M509x519S20320493x481S22e04492x501",
+       "confirmable-no": "M516x513S13f20487x498S22104484x488",
+       "thisisdeleted": "M525x524S30a00482x483S26500511x474S10e00507x494 S38700463x496 M518x588S2b700490x527S18527495x561S30a00482x483 M531x554S15a39475x527S28802509x526S18250484x539S30a00482x483 $1 S38900464x493",
+       "viewdeleted": "$1 M525x524S30a00482x483S26500511x474S10e00507x494 S38900464x493",
+       "restorelink": "{{PLURAL:$1|M508x515S10000493x485 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468|$1 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468}}",
+       "feedlinks": "M524x533S14402493x486S1440a476x511S22f20488x468 S38700463x496",
+       "site-rss-feed": "$1 M511x537S11a20490x463S20320490x497S20320490x516 M524x533S14402493x486S1440a476x511S22f20488x468",
+       "site-atom-feed": "$1 M511x544S1f720490x457S1fb20496x476S17620495x499S18d20490x519 M524x533S14402493x486S1440a476x511S22f20488x468",
+       "page-rss-feed": "$1 M511x537S11a20490x463S20320490x497S20320490x516 M524x533S14402493x486S1440a476x511S22f20488x468",
+       "page-atom-feed": "$1 M511x544S1f720490x457S1fb20496x476S17620495x499S18d20490x519 M524x533S14402493x486S1440a476x511S22f20488x468",
+       "red-link-title": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 $1 M524x543S33500476x483S15a01471x520S2890a487x513",
+       "sort-descending": "M525x530S14c0a476x507S1dc40476x471S28801505x490",
+       "sort-ascending": "M525x530S14c0a476x507S1dc40476x471S28801505x490",
+       "nstab-main": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-user": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-media": "M513x560S18d20487x440S14a20492x469S10120492x488S19220492x522S1f720487x545 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-special": "M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-project": "M539x530S14011508x506S15a07489x493S2b700507x480S19220488x472S2a20c461x470 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-image": "M520x523S14c19480x496S15a01497x497S20710483x477",
+       "nstab-mediawiki": "M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506",
+       "nstab-template": "M510x522S15c10490x513S16d12490x495S22a04494x478",
+       "nstab-help": "M512x518S15a37489x495S1f540488x482 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "nstab-category": "M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487",
+       "nosuchaction": "M531x526S16d51511x474S16d59470x474S26c02514x499S26c12473x499 M524x543S33500476x483S15a01471x520S2890a487x513",
+       "nosuchspecialpage": "M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M524x543S33500476x483S15a01471x520S2890a487x513",
+       "error": "M518x526S2ff00482x483S19a00487x506",
+       "databaseerror": "M508x528S10120492x472S14720493x506 M518x526S2ff00482x483S19a00487x506",
+       "databaseerror-error": "M518x526S2ff00482x483S19a00487x506 S38700463x496 $1",
+       "missingarticle-diff": "S38b00470x493 M543x512S10021495x491S10029476x491S26506528x489S26512458x489 S38a00464x490 $1 S38700463x496 $2 S38b04470x493",
+       "internalerror": "M528x518S20710494x499S17644473x502S18512481x482 M518x526S2ff00482x483S19a00487x506",
+       "internalerror_info": "M528x518S20710494x499S17644473x502S18512481x482 M518x526S2ff00482x483S19a00487x506 S38700463x496 $1",
+       "filecopyerror": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M537x516S15a18463x484S18510512x500S26506494x500S15710473x490 M520x523S14c19480x496S15a01497x497S20710483x477 $1 M519x515S10050482x485S26506504x493 $2 S38800464x496",
+       "filerenameerror": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M524x514S11541500x487S1154a477x490 M520x523S14c19480x496S15a01497x497S20710483x477 $1 M519x515S10050482x485S26506504x493 $2 S38800464x496",
+       "filedeleteerror": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M520x523S14c19480x496S15a01497x497S20710483x477 $1 S38800464x496",
+       "filenotfound": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M513x542S1ce50491x458S22a00492x492S14c50487x511 M520x523S14c19480x496S15a01497x497S20710483x477 $1 S38800464x496",
+       "cannotdelete-title": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 $1",
+       "badtitle": "M518x566S24b04490x540S2ff00482x483S15a00494x509 M525x528S11010508x501S11018476x501S2df1e475x473S2df06505x473",
+       "viewsource": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
+       "viewsource-title": "M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530 M536x521S2ff00482x483S10011515x491S28108515x461 $1",
+       "viewsourcetext": "M518x584S10004492x534S22a04493x569S30a00482x483 M518x558S15a37484x534S1f550490x541S20e00470x545S26502452x544S30a00482x483 M518x615S16d20491x526S17620492x550S10120492x567S14a20493x600S30a00482x483 S38700463x496 M508x523S10040493x493S26500493x477 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M525x524S2ff00482x483S10e00507x494S26500511x474 S38700463x496 M537x516S15a18463x484S18510512x500S26506494x500S15710473x490 S38800464x496",
+       "mypreferencesprotected": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M507x523S15a28494x496S26500493x477 M525x542S1c507500x517S20600478x519S2ff00482x483 S38800464x496",
+       "ns-specialprotected": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 S38800464x496",
+       "exception-nologin": "M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "welcomeuser": "M513x524S2c604491x476S1821d488x507 $1 S38810463x495",
+       "welcomecreation-msg": "M507x523S15a28494x496S26500493x477 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 S38800464x496 M543x522S30a00482x483S19200505x503S20600521x493 M518x573S10040493x543S26500493x527S30a00482x483 M535x590S15038467x559S15030509x559S26514474x528S26504513x528S21600516x547S21600477x547S30a00482x483 S38700463x496 M508x523S10040493x493S26500493x477 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M507x523S15a28494x496S26500493x477 {{SITENAME}} [[Special:Preferences|M525x542S1c507500x517S20600478x519S2ff00482x483]] S38800464x496",
+       "yourname": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490 S38a00464x490",
+       "userlogin-yourname": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490",
+       "userlogin-yourname-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M507x523S15a28494x496S26500493x477 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490",
+       "createacct-another-username-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490",
+       "yourpassword": "M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 S38a00464x490",
+       "userlogin-yourpassword": "M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "userlogin-yourpassword-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M507x523S15a28494x496S26500493x477 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "createacct-yourpassword-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "yourpasswordagain": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 M528x514S15a39472x487S28802506x486S18250481x499 S38a00464x490",
+       "createacct-yourpasswordagain": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 M528x514S15a39472x487S28802506x486S18250481x499",
+       "createacct-yourpasswordagain-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 M528x514S15a39472x487S28802506x486S18250481x499",
+       "remembermypassword": "M538x567S1f548504x543S1f520513x534S1f520513x481S22b04522x499S2ff00482x483 M514x514S15a01491x487S20500487x503 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M536x521S2ff00482x483S10011515x491S28108515x461 M508x525S10004493x475S22a04494x510 M523x528S14011492x504S15a00477x495S2b800483x473 S38b00470x493 M536x521S2ff00482x483S10011515x491S28108515x461 M519x530S18210496x475S18218482x471S20b00496x483S22b00495x500 $1 {{PLURAL:$1|M526x534S15a1a499x522S10010507x467S28903478x486S37706474x522S37700520x495}} S38b04470x493",
+       "userlogin-remembermypassword": "M521x526S1f750501x511S1f758480x511S26620493x474 M521x517S10043491x483S20500479x506 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "password-change-forbidden": "M518x584S10004492x534S22a04493x569S30a00482x483 M518x633S19220493x614S14020479x583S19220493x561S18620491x530S30a00482x483 S38700463x496 M508x523S10040493x493S26500493x477 M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 S38800464x496",
+       "login": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "nav-login-createaccount": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38700463x496 M538x518S2b700511x460S14410516x487S2ff00482x483 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "userlogin": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38700463x496 M538x518S2b700511x460S14410516x487S2ff00482x483 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "userloginnocreate": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "logout": "M538x518S2a208496x483S15a37462x483S11530523x487S11551470x493",
+       "userlogout": "M538x518S2a208496x483S15a37462x483S11530523x487S11551470x493",
+       "notloggedin": "M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "userlogin-noaccount": "M534x542S30a00482x483S26500520x505S20e00521x526S1f540493x518 M532x561S18049468x526S18041507x526S20500486x550S20500504x550S30a00482x483 M524x567S15a30488x539S1f750490x534S20500502x556S22a04511x545S30a00482x483 S38900464x493",
+       "userlogin-joinproject": "M522x524S16d48478x476S11541487x487S26501509x511 {{SITENAME}}",
+       "nologin": "M534x542S30a00482x483S26500520x505S20e00521x526S1f540493x518 M532x561S18049468x526S18041507x526S20500486x550S20500504x550S30a00482x483 M524x567S15a30488x539S1f750490x534S20500502x556S22a04511x545S30a00482x483 S38900464x493 $1 S38800464x496",
+       "nologinlink": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S269M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "createaccount": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "gotaccount": "M532x588S14c30507x526S2a204509x560S2a21c471x560S14c38471x526S30a00482x483 M532x561S18049468x526S18041507x526S20500486x550S20500504x550S30a00482x483 M524x567S15a30488x539S1f750490x534S20500502x556S22a04511x545S30a00482x483 S38900464x493 $1 S38800464x496",
+       "gotaccountlink": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "userlogin-resetlink": "M572x518S30a00482x483S1f502557x467S20e00522x477S26506538x476S15a02492x477 M518x574S15a28494x547S26500493x528S30a00482x483 M551x571S2a200510x530S20b00475x558S11530536x532S15a37475x533S11551483x543S30a00482x483 M538x522S18517516x486S1851f461x495S30a00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478 S38900464x493",
+       "userlogin-resetpassword-link": "M572x518S30a00482x483S1f502557x467S20e00522x477S26506538x476S15a02492x477 M518x574S15a28494x547S26500493x528S30a00482x483 M518x531S33b00482x483S30a00482x483S1f711482x509 M518x560S10018486x530S1f010489x530S30a00482x483 S38900464x493",
+       "userlogin-helplink2": "M512x518S15a37489x495S1f540488x482 M521x508S1f748479x493S1f740501x493 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "userlogin-loggedin": "M508x523S10040493x493S26500493x477 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M516x515S10050501x485S10058484x485 {{GENDER:$1|$1}} S38800464x496 M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M538x522S18517516x486S1851f461x495S2ff00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M543x512S10021495x491S10029476x491S26506528x489S26512458x489 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 S38800464x496",
+       "userlogin-createanother": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M535x520S1f550465x505S2a208489x480S1f530511x505 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "createacct-emailrequired": "M525x520S16d18475x495S10012488x505S26b00498x481 M534x519S1f70a475x499S1f702512x499S22f10466x481S20e00494x483S22f00509x481",
+       "createacct-emailoptional": "M525x520S16d18475x495S10012488x505S26b00498x481 M534x519S1f70a475x499S1f702512x499S22f10466x481S20e00494x483S22f00509x481 S38b00470x493 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M513x532S15a48488x468S10a40498x486S26524490x517 S38b04470x493",
+       "createacct-email-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M507x523S15a28494x496S26500493x477 M525x520S16d18475x495S10012488x505S26b00498x481 M534x519S1f70a475x499S1f702512x499S22f10466x481S20e00494x483S22f00509x481",
+       "createacct-another-email-ph": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M525x520S16d18475x495S10012488x505S26b00498x481 M534x519S1f70a475x499S1f702512x499S22f10466x481S20e00494x483S22f00509x481",
+       "createacct-realname": "M521x541S10010486x511S2ff00482x483S26500507x517 M524x514S11541500x487S1154a477x490 S38b00470x493 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M513x532S15a48488x468S10a40498x486S26524490x517 S38b04470x493",
+       "createaccountreason": "M547x518S30a00482x483S22124511x473S1c517522x483 S38900464x493",
+       "createacct-reason": "M547x518S30a00482x483S22124511x473S1c517522x483",
+       "createacct-reason-ph": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M535x520S1f550465x505S2a208489x480S1f530511x505 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M547x518S30a00482x483S22124511x473S1c517522x483 S38900464x493",
+       "createacct-submit": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M507x523S15a28494x496S26500493x477 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "createacct-another-submit": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M535x520S1f550465x505S2a208489x480S1f530511x505 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "createacct-benefit-heading": "M533x545S14250501x455S14258468x479S2eb00518x489S2eb4c470x513 M514x533S19a20486x468S27106495x493 M508x523S10040493x493S26500493x477 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 {{SITENAME}} S38800464x496",
+       "createacct-benefit-body1": "{{PLURAL:$1|M521x532S10609498x496S10621487x512S21100500x483S2df20479x468}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498|M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489}}",
+       "createacct-benefit-body3": "M536x534S35610482x483S10601513x506S21600525x501 {{PLURAL:$1|M523x524S15a40510x476S15a48478x476S22a04510x509S22a14478x509 M525x535S10610510x499S10618476x509S2b700505x466S2b711476x479|M533x545S14250501x455S14258468x479S2eb00518x489S2eb4c470x513 M525x535S10610510x499S10618476x509S2b700505x466S2b711476x479}}",
+       "badretype": "M518x560S10e00491x530S30a00482x483 M518x531S33b00482x483S30a00482x483S1f711482x509 M518x560S10018486x530S1f010489x530S30a00482x483 M518x573S10040493x543S26500493x527S30a00482x483 M534x573S14c50507x542S14c58468x542S22520502x527S22520464x527S30a00482x483 S38700463x496 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M529x522S14e0a471x492S14e02498x497S20700491x478",
+       "userexists": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 M532x518S18049468x483S18041507x483S20500486x507S20500504x507 S38800464x496 M515x515S15a01492x485S21100486x501 M515x543S26504493x492S1ce20493x513S1d120485x457 M543x512S10021495x491S10029476x491S26506528x489S26512458x489 M524x514S11541500x487S1154a477x490 S38800464x496",
+       "loginerror": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M518x526S2ff00482x483S19a00487x506",
+       "createacct-error": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M518x526S2ff00482x483S19a00487x506",
+       "createaccounterror": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 S38700463x496 $1",
+       "loginsuccesstitle": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M547x547S33500476x483S10011507x517S10019472x517S28111451x506S28109525x505",
+       "login-userblocked": "M508x525S10004493x475S22a04494x510 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M512x523S15a19488x500S15a11489x500S26520492x478 S38800464x496 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 S38800464x496",
+       "wrongpassword": "M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M517x522S1000a487x507S10041483x479 S38800464x496 M515x515S15a01492x485S21100486x501 M534x522S2d200508x499S2d211467x499S20320513x478S20328473x478 M528x514S15a39472x487S28802506x486S18250481x499 S38800464x496",
+       "accountcreated": "M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469",
+       "accountcreatedtext": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M536x521S2ff00482x483S10011515x491S28108515x461 [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|M522x522S15a37478x479S10041485x492S20600500x492]]) M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 S38800464x496",
+       "loginlanguagelabel": "M567x516S1dc50505x485S1dc58473x485S26606537x500S26612434x500 S38700463x496 $1",
+       "pt-login": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "pt-login-button": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "pt-createaccount": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "pt-userlogout": "M538x518S2a208496x483S15a37462x483S11530523x487S11551470x493",
+       "changepassword": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "resetpass_header": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "resetpass_submit": "M525x520S15a1a476x508S1f540479x481S2c300499x490 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 S38700463x496 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "resetpass-submit-loggedin": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "resetpass-submit-cancel": "M515x538S15a0a486x463S10050500x467S2330b485x516S20e00491x501",
+       "passwordreset": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "passwordreset-username": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M524x514S11541500x487S1154a477x490 S38a00464x490",
+       "passwordreset-capture": "M525x524S30a00482x483S26500511x474S10e00507x494 M518x531S33b00482x483S30a00482x483S1f711482x509 M518x560S10018486x530S1f010489x530S30a00482x483 M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 M529x567S16d18479x542S10012492x552S26b00502x528S30a00482x483 S38900464x493",
+       "passwordreset-emailtitle": "M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M538x522S18517516x486S1851f461x495S2ff00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478 M536x521S2ff00482x483S10011515x491S28108515x461 {{SITENAME}}",
+       "bold_sample": "M531x518S32a00482x483S15410516x488 M516x515S10018484x485S1f010487x485",
+       "bold_tip": "M531x518S32a00482x483S15410516x488 M516x515S10018484x485S1f010487x485",
+       "italic_sample": "M516x515S10018484x485S1f010487x485 M537x516S15a17514x493S15a19474x493S26906504x486S26916464x485",
+       "italic_tip": "M516x515S10018484x485S1f010487x485 M537x516S15a17514x493S15a19474x493S26906504x486S26916464x485",
+       "media_tip": "M520x523S14c19480x496S15a01497x497S20710483x477 M521x525S1ce10499x476S1ce48479x476S20a00491x510",
+       "sig_tip": "M507x523S15a28494x496S26500493x477 M518x518S15a37483x483S11551491x493 M521x508S1f748479x493S1f740501x493 M522x518S10050490x488S15a56495x482S20500478x483 M518x516S20b00483x503S15a37495x486S20340491x485",
+       "summary": "M554x524S14c40530x477S14c48446x493S26502515x490S26516468x508S20340495x490S20348487x507 S38a00464x490",
+       "minoredit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M515x512S1f010486x488S2f900502x507",
+       "savearticle": "M519x513S10e02489x498S20302482x488 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "showpreview": "M525x524S2ff00482x483S10e00507x494S26500511x474 M538x612S2ff00482x483S10001513x517S2e305488x487S19a20510x547S27106518x572",
+       "showdiff": "M521x531S10012491x516S15a18479x503S26620486x469 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "loginreqtitle": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M513x532S15a48488x468S10a40498x486S26524490x517",
+       "loginreqlink": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "editing": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 $1",
+       "templatesused": "M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 {{PLURAL:$1|M510x522S15c10490x513S16d12490x495S22a04494x478}} S38a00464x490",
+       "template-protected": "S38b00470x493 M520x525S26f20480x476S20313489x493S20311490x504 S38b04470x493",
+       "nocreate-loggedin": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 S38800464x496",
+       "permissionserrors": "M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M518x526S2ff00482x483S19a00487x506",
+       "permissionserrorstext": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 {{PLURAL:$1|M547x518S30a00482x483S22124511x473S1c517522x483}} S38900464x493",
+       "permissionserrorstext-withaction": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 $2 {{PLURAL:$1|M547x518S30a00482x483S22124511x473S1c517522x483}} S38900464x493",
+       "log-fulllog": "M525x524S2ff00482x483S10e00507x494S26500511x474 M520x529S20e00493x504S20348493x486S15a51497x471S26503480x516 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "cantcreateaccounttitle": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "viewpagelogs": "M525x524S2ff00482x483S10e00507x494S26500511x474 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "currentrev-asof": "M521x524S1f740501x509S1f748479x498S20e00503x494S22a00502x476 M536x534S35610482x483S10601513x506S21600525x501 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M557x536S36d00479x503S10001536x498S10009510x506S2b711518x476S2b700531x465 $1",
+       "revisionasof": "M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509 M536x521S2ff00482x483S10011515x491S28108515x461 $1",
+       "cur": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506",
+       "last": "M520x519S26504502x504S15a0a480x481S15a02493x487",
+       "history-feed-item-nocomment": "$1 S38700463x496 $2",
+       "revdel-restore": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M530x519S2ff00482x483S19200509x500 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M525x524S2ff00482x483S10e00507x494S26500511x474",
+       "mergelog": "M526x535S14c58481x478S14c50494x466S2d60d500x505S2d615475x513 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "revertmerge": "M547x522S14c58481x491S28912453x499S14c50494x479S2890a518x487",
+       "lineno": "M545x510S1ed28456x491S1ed20484x491S26606515x494 $1 S38a00464x490",
+       "editundo": "M520x527S15a0a488x473S10041499x478S2330b481x505S20e00487x489 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "searchresults": "M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "searchresults-title": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M519x539S14402488x485S1440a481x461S22b04503x509 M536x521S2ff00482x483S10011515x491S28108515x461 ''$1''",
+       "prevn": "M520x519S26504502x504S15a0a480x481S15a02493x487 {{PLURAL:$1|$1}}",
+       "nextn": "M520x520S2b700499x480S15a0a480x502S15a02493x508 {{PLURAL:$1|$1}}",
+       "prevn-title": "M520x519S26504502x504S15a0a480x481S15a02493x487 $1 {{PLURAL:$1|M513x542S1ce50491x458S22a00492x492S14c50487x511|M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509}}",
+       "nextn-title": "M520x520S2b700499x480S15a0a480x502S15a02493x508 $1 {{PLURAL:$1|M513x542S1ce50491x458S22a00492x492S14c50487x511|M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509}}",
+       "shown-title": "M521x531S10012491x516S15a18479x503S26620486x469 $1 {{PLURAL:$1|M513x542S1ce50491x458S22a00492x492S14c50487x511}} M516x529S1f548485x484S1f540501x472S20e00503x499S22a04503x514 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "viewprevnext": "M525x524S2ff00482x483S10e00507x494S26500511x474 S38b00470x493 $1 S38700463x496 $2 S38b04470x493 S38b00470x493 $3 S38b04470x493",
+       "searchmenu-new": "<strong>M538x518S2b700511x460S14410516x487S2ff00482x483 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 [[:$1]] M530x530S15a30477x471S15a30512x471S2e508507x503S2e510470x503 M518x552S19220497x533S14020483x502S19220497x480S18620495x449 S38800464x496</strong> {{PLURAL:$2|0=|M514x533S19a20486x468S27106495x493 M525x524S2ff00482x483S10e00507x494S26500511x474 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M507x523S15a28494x496S26500493x477 M546x525S2ff00482x483S16d10492x505S2e502519x502 M513x542S1ce50491x458S22a00492x492S14c50487x511 S38800464x496|M514x533S19a20486x468S27106495x493 M525x524S2ff00482x483S10e00507x494S26500511x474 M546x525S2ff00482x483S16d10492x505S2e502519x502 M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509 S38800464x496}}",
+       "searchprofile-articles": "M531x518S15a06499x506S1d151506x482S20a10469x488 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "searchprofile-everything": "M535x535S1f738481x466S1f730494x475S26503478x494S26515510x494S20e00495x492S26612484x508S15d38516x509S26606485x518S15d30465x509",
+       "searchprofile-advanced": "M546x525S18010516x510S18018454x510S22b00520x475S22b10466x475",
+       "searchprofile-articles-tooltip": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M544x518S2ff00482x483S15a41521x483S15a49456x483S26517480x469S26501507x469 $1",
+       "searchprofile-images-tooltip": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M520x523S14c19480x496S15a01497x497S20710483x477",
+       "searchprofile-everything-tooltip": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M531x518S15a06499x506S1d151506x482S20a10469x488 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 S38700463x496 M530x522S16d48470x496S18551481x485S20700491x507S28802508x478S22105477x485 M522x522S15a37478x479S10041485x492S20600500x492 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "search-result-size": "$1 S38b00470x493 {{PLURAL:$2|$2 M516x515S10018484x485S1f010487x485}} S38b04470x493",
+       "search-redirect": "S38b00470x493 M552x509S18520488x494S18528449x494S26626522x492 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 $1 S38b04470x493",
+       "search-suggest": "M518x581S10040492x551S26500499x528S30a00482x483 M531x522S15a48469x495S10e12478x503S2c300505x479S20600481x487 S38a00464x490 $1 S38900464x493",
+       "search-interwiki-more": "S38b00470x493 M526x508S18510501x493S18518475x493 S38b04470x493",
+       "searchall": "M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490",
+       "search-nonefound": "M513x542S1ce50491x458S22a00492x492S14c50487x511 M519x539S14402488x485S1440a481x461S22b04503x509 M529x522S14e0a471x492S14e02498x497S20700491x478 M546x525S2ff00482x483S16d10492x505S2e502519x502 M532x518S17610516x502S17618469x502S26500517x483S26510470x483 S38800464x496",
+       "mypreferences": "M525x542S1c507500x517S20600478x519S2ff00482x483",
+       "prefsnologintext2": "M551x571S2a200510x530S20b00475x558S11530536x532S15a37475x533S11551483x543S30a00482x483 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M507x523S15a28494x496S26500493x477 M525x542S1c507500x517S20600478x519S2ff00482x483 S38800464x496",
+       "prefs-resetpass": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485",
+       "searchresultshead": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "prefs-help-recentchangescount": "M508x525S10004493x475S22a04494x510 M524x526S18512485x490S17644477x510S28802502x475 M536x534S35610482x483S10601513x506S21600525x501 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 S38700463x496 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M514x523S11541487x478S22f04489x509 S38700463x496 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513 S38800464x496",
+       "timezonelegend": "M522x518S10050490x488S15a56495x482S20500478x483 M513x526S14c50489x474S2e732488x510 S38a00464x490",
+       "localtime": "M518x520S20348488x505S14c51483x481S21100505x505 M522x518S10050490x488S15a56495x482S20500478x483 S38a00464x490",
+       "prefs-searchoptions": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "prefs-registration": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M522x518S10050490x488S15a56495x482S20500478x483 S38a00464x490",
+       "yourrealname": "M521x541S10010486x511S2ff00482x483S26500507x517 M524x514S11541500x487S1154a477x490 S38700463x496",
+       "prefs-timeoffset": "M522x518S10050490x488S15a56495x482S20500478x483 M542x514S15a10512x487S15a18458x487S26506527x496S26516473x496",
+       "prefs-help-prefershttps": "M523x566S2b700502x526S15a0a483x548S15a02496x554S30a00482x483 M551x571S2a200510x530S20b00475x558S11530536x532S15a37475x533S11551483x543S30a00482x483 S38700463x496 M508x525S10004493x475S22a04494x510 M525x542S1c507500x517S20600478x519S2ff00482x483 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 S38800464x496",
+       "userrights-no-interwiki": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M525x518S1f550476x503S2a208502x482 M518x552S19220497x533S14020483x502S19220497x480S18620495x449 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x537S15a36487x509S21100486x492S2c600482x463S15a41495x514 S38800464x496",
+       "userrights-notallowed": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x537S15a36487x509S21100486x492S2c600482x463S15a41495x514 S38800464x496",
+       "right-createaccount": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "right-browsearchive": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "right-suppressionlog": "M525x524S2ff00482x483S10e00507x494S26500511x474 M528x531S33b00482x483S1f711482x509S20600506x518 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "right-viewmywatchlist": "M525x524S2ff00482x483S10e00507x494S26500511x474 M507x523S15a28494x496S26500493x477 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "right-viewmyprivateinfo": "M525x524S2ff00482x483S10e00507x494S26500511x474 M507x523S15a28494x496S26500493x477 M528x531S33b00482x483S1f711482x509S20600506x518 M538x522S18517516x486S1851f461x495S2ff00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478 S38b00470x493 M536x569S2ff00482x483S10011515x491S27106517x529S19a20488x540 M525x520S16d18475x495S10012488x505S26b00498x481 S38700463x496 M521x541S10010486x511S2ff00482x483S26500507x517 M524x514S11541500x487S1154a477x490 S38b04470x493",
+       "right-passwordreset": "M525x524S2ff00482x483S10e00507x494S26500511x474 M518x531S33b00482x483S1f711482x509 M516x515S10018484x485S1f010487x485 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M525x520S16d18475x495S10012488x505S26b00498x481",
+       "newuserlogpage": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M538x518S2b700511x460S14410516x487S2ff00482x483 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "rightslog": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x537S15a36487x509S21100486x492S2c600482x463S15a41495x514 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "action-edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "action-createaccount": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M508x525S10004493x475S22a04494x510 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "action-history": "M525x524S2ff00482x483S10e00507x494S26500511x474 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M514x523S11541487x478S22f04489x509",
+       "action-deletedhistory": "M525x524S2ff00482x483S10e00507x494S26500511x474 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M514x523S11541487x478S22f04489x509",
+       "action-browsearchive": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "action-suppressionlog": "M525x524S2ff00482x483S10e00507x494S26500511x474 M508x525S10004493x475S22a04494x510 M528x531S33b00482x483S1f711482x509S20600506x518 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "action-viewmywatchlist": "M525x524S2ff00482x483S10e00507x494S26500511x474 M507x523S15a28494x496S26500493x477 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "enhancedrc-history": "M514x523S11541487x478S22f04489x509",
+       "recentchanges": "M536x533S35610482x482S10601513x505S21600525x500 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "recentchanges-label-newpage": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "recentchanges-label-minor": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M515x512S1f010486x488S2f900502x507",
+       "rcshowhideminor": "$1 M515x512S1f010486x488S2f900502x507 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "rcshowhideminor-hide": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "rcshowhidebots-show": "M521x531S10012491x516S15a18479x503S26620486x469",
+       "rcshowhideliu": "$1 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489",
+       "rcshowhideliu-hide": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "rcshowhideanons-hide": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "rcshowhidemine": "$1 M514x514S15a01491x487S20500487x503 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "rcshowhidemine-hide": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "diff": "M543x512S10021495x491S10029476x491S26506528x489S26512458x489",
+       "hist": "M514x523S11541487x478S22f04489x509",
+       "hide": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508",
+       "show": "M521x531S10012491x516S15a18479x503S26620486x469",
+       "minoreditletter": "M510x512S18d20490x487",
+       "newpageletter": "M510x513S11920489x487",
+       "boteditletter": "M507x511S14720493x489",
+       "rc-change-size-new": "M518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 M532x588S14c30507x526S2a204509x560S2a21c471x560S14c38471x526S30a00482x483 S38700463x496 $1 {{PLURAL:$1|M514x544S14720493x456S19a20486x482S1fb20493x506S14a20493x529|M514x554S14720493x447S19a20486x473S1fb20493x497S14a20493x520S20320493x539}}",
+       "recentchangeslinked-toolbox": "M521x525S1ce10499x476S1ce48479x476S20a00491x510 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "recentchangeslinked-page": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M524x514S11541500x487S1154a477x490 S38a00464x490",
+       "upload": "M535x526S10e27502x481S10e09476x481S22a07491x512S22a17465x511S21b00527x475S21b00500x475 M520x523S14c19480x496S15a01497x497S20710483x477",
+       "uploadnologin": "M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "uploadlogpage": "M535x526S10e27502x481S10e09476x481S22a07491x512S22a17465x511S21b00527x475S21b00500x475 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "filedesc": "M554x524S14c40530x477S14c48446x493S26502515x490S26516468x508S20340495x490S20348487x507",
+       "upload-file-error": "M528x518S20710494x499S17644473x502S18512481x482 M518x526S2ff00482x483S19a00487x506",
+       "license": "M525x524S1dc20501x476S1dc28475x476S20600490x513 S38a00464x490",
+       "license-header": "M525x524S1dc20501x476S1dc28475x476S20600490x513",
+       "listfiles-userdoesnotexist": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 $1 M544x597S30122482x476S35f30495x509S26b04517x579S15a04524x547 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 S38800464x496",
+       "file-anchor-link": "M520x523S14c19480x496S15a01497x497S20710483x477",
+       "filehist": "M520x523S14c19480x496S15a01497x497S20710483x477 M514x523S11541487x478S22f04489x509",
+       "filehist-revert": "M527x539S10004512x461S1000c473x477S2b705513x498S2b714475x515S2fd04496x530",
+       "filehist-current": "M535x520S19a00507x481S19a08465x481S22f14465x506S22f04509x506",
+       "filehist-datetime": "M526x534S15a1a499x522S10010507x467S28903478x486S37706474x522S37700520x495 S38700463x496 M522x518S10050490x488S15a56495x482S20500478x483",
+       "filehist-thumb": "M515x512S1f010486x488S2f900502x507 M523x564S15a20476x537S2ff00482x483S22b03490x519S16d10506x491S20500491x546",
+       "filehist-thumbtext": "M515x512S1f010486x488S2f900502x507 M523x564S15a20476x537S2ff00482x483S22b03490x519S16d10506x491S20500491x546 M536x521S2ff00482x483S10011515x491S28108515x461 $1",
+       "filehist-user": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489",
+       "filehist-dimensions": "M529x516S19a20501x496S19a28471x496S20500487x485S20500502x485",
+       "filehist-comment": "M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506",
+       "imagelinks": "M520x523S14c19480x496S15a01497x497S20710483x477 M527x522S15a56500x510S11520504x479S20e00490x496S26502473x495 M517x520S10020502x483S2710e483x480",
+       "randompage": "M543x512S10021495x491S10029476x491S26506528x489S26512458x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "nbytes": "$1 {{PLURAL:$1|M514x543S14720494x458S19a20486x481S1fb20493x505S14a20493x528}}",
+       "protectedpages-timestamp": "M522x518S10050490x488S15a56495x482S20500478x483 M518x516S20b00483x503S15a37495x486S20340491x485",
+       "listusers-desc": "M525x530S14c0a476x507S1dc40476x471S28801505x490 M526x527S14c49474x500S10012489x503S2c300500x473S21300475x480 M521x508S1f748479x493S1f740501x493 M527x525S19241500x476S19249474x479S20e00496x494S22a04496x510",
+       "newpages": "M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "move": "M552x509S18520488x494S18528449x494S26626522x492",
+       "log": "M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "all-logs-page": "M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M547x514S15a41501x491S15a49477x491S2d610453x486S2d608518x486 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "showhideselectedlogentries": "M518x615S26504492x564S1ce20492x585S1d120484x529S30a00482x483 M520x599S15a37485x528S18550495x539S15a37485x572S15a51488x576S30a00482x483 M562x556S1ed28473x537S1ed20501x537S26606532x540S30a00482x483 S38700463x496 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M525x524S2ff00482x483S10e00507x494S26500511x474",
+       "allpagessubmit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "cachedspecial-refresh-now": "M525x524S2ff00482x483S10e00507x494S26500511x474 M536x534S35610482x483S10601513x506S21600525x501 S38800464x496",
+       "categories": "M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487",
+       "linksearch-ok": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "watchlist": "M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "mywatchlist": "M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "watchlistanontext": "M518x574S15a28494x547S26500493x528S30a00482x483 M526x572S10e50511x542S26500510x524S10e58475x542S26510477x524S30a00482x483 M518x610S14402482x556S1440a475x532S22b04497x580S30a00482x483 L525x524S30a00482x483S26500511x474S10e00507x494 S38700463x496 R518x589S10609492x553S10621481x569S21100494x540S2df20473x525S30a00482x483 S38700463x496 M515x515S15a01492x485S21100486x501 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38800464x496",
+       "watchnologin": "M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493",
+       "watch": "M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476",
+       "dellogpage": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "deletionlog": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M514x523S11541487x478S22f04489x509",
+       "rollbacklink": "M508x531S10004493x470S2b705494x507",
+       "protectlogpage": "M512x519S15a19488x482S15a11489x482S20600488x508 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "protectedarticle": "\"[[$1]]\" M512x519S15a19488x482S15a11489x482S20600488x508",
+       "protect-othertime": "M525x518S1f550476x503S2a208502x482 M522x518S10050490x488S15a56495x482S20500478x483 S38a00464x490",
+       "restriction-type": "M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 S38700463x496",
+       "undelete": "M525x524S2ff00482x483S10e00507x494S26500511x474 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "viewdeletedpage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "undeletelink": "M525x524S2ff00482x483S10e00507x494S26500511x474 S38700463x496 M512x531S2b700488x470S18527493x504 M528x514S15a39472x487S28802506x486S18250481x499",
+       "undeleteviewlink": "M525x524S2ff00482x483S10e00507x494S26500511x474",
+       "undelete-search-title": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "undelete-search-submit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "namespace": "M524x514S11541500x487S1154a477x490 M511x528S19220490x473S10120490x498 S38a00464x490",
+       "blanknamespace": "S38b00470x493 M529x544S2ff00482x483S20500519x504S18517503x517 S38b04470x493",
+       "mycontris": "M531x521S1f437507x491S22113512x480S22115469x480S1f43f472x491",
+       "contributions-userdoesnotexist": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 $1 M544x597S30122482x476S35f30495x509S26b04517x579S15a04524x547 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 S38800464x496",
+       "sp-contributions-blocklog": "M512x523S15a19488x500S15a11489x500S26520492x478 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "sp-contributions-logs": "M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "sp-contributions-talk": "M522x522S15a37478x479S10041485x492S20600500x492",
+       "sp-contributions-submit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "whatlinkshere": "M521x525S1ce10499x476S1ce48479x476S20a00491x510 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "whatlinkshere-page": "M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 S38a00464x490",
+       "isimage": "M520x523S14c19480x496S15a01497x497S20710483x477 M521x525S1ce10499x476S1ce48479x476S20a00491x510",
+       "whatlinkshere-hideimages": "$1 M520x523S14c19480x496S15a01497x497S20710483x477 M521x525S1ce10499x476S1ce48479x476S20a00491x510",
+       "ipbcreateaccount": "M512x523S15a19488x500S15a11489x500S26520492x478 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "ipbother": "M525x518S1f550476x503S2a208502x482 M522x518S10050490x488S15a56495x482S20500478x483 S38a00464x490",
+       "ipboptions": "M515x533S15a18485x470S10e10498x467S2e800500x501:2 hours,M507x515S10000492x485 M526x534S15a1a499x522S10010507x467S28903478x486S37706474x522S37700520x495:1 day,M528x534S15a1a497x522S11e00505x467S28903476x486S37706472x522S37700518x495:3 days,M507x515S10000492x485 M528x518S15a36472x506S10050476x482S20e00498x499S26506513x498:1 week,M528x518S15a36472x506S10e50476x482S20e00498x499S26506513x498:2 weeks,M507x515S10000492x485 M519x527S10028482x474S10002489x477S22a04505x512S21100505x495:1 month,M518x529S10028483x482S11e02488x471S22a04504x514S21100504x497:3 months,M517x526S10028483x479S18702488x474S22a04503x511S21100503x494:6 months,M507x515S10000492x485 M522x518S20348479x503S20340487x489S2e734506x483:1 year,M525x521S1f550501x506S1f558476x506S26500510x487S26510477x487S2f900511x479S2f900479x479:infinite",
+       "ipblocklist": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 M512x523S15a19488x500S15a11489x500S26520492x478",
+       "blocklist-userblocks": "M546x533S15a56519x474S2ff00482x483S2c601516x507S1f740521x487S1f711484x508 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M512x523S15a19488x500S15a11489x500S26520492x478",
+       "blocklist-timestamp": "M522x518S10050490x488S15a56495x482S20500478x483 M518x516S20b00483x503S15a37495x486S20340491x485",
+       "ipblocklist-submit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "createaccountblock": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505",
+       "blocklink": "M512x522S15a19488x499S15a11489x499S26520492x477",
+       "unblocklink": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M512x522S15a19488x499S15a11489x499S26520492x477",
+       "change-blocklink": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M512x522S15a19488x499S15a11489x499S26520492x477",
+       "contribslink": "M512x521S1f437488x491S22113493x480",
+       "blocklogpage": "M512x523S15a19488x500S15a11489x500S26520492x478 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "block-log-flags-nocreate": "M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505",
+       "movenotallowed": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M552x509S18520488x494S18528449x494S26626522x492 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 S38800464x496",
+       "cant-move-category-page": "M508x523S10040493x493S26500493x477 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M531x528S15a40511x472S15a48478x472S2d200505x505S2d211470x505 M552x509S18520488x494S18528449x494S26626522x492 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 S38800464x496",
+       "movelogpage": "M552x509S18520488x494S18528449x494S26626522x492 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "revertmove": "M527x539S10004512x461S1000c473x477S2b705513x498S2b714475x515S2fd04496x530",
+       "allmessagesname": "M524x514S11541500x487S1154a477x490",
+       "thumbnail-more": "M556x528S1dc20506x472S1dc28470x472S22b05532x504S22b13444x504",
+       "thumbnail_error": "M527x521S10059473x479S10051497x479S20e00494x491S22a04493x506 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M515x512S1f010486x488S2f900502x507 M523x564S15a20476x537S2ff00482x483S22b03490x519S16d10506x491S20500491x546 M547x518S30a00482x483S22124511x473S1c517522x483 S38900464x493 $1",
+       "thumbnail_error_remote": "M518x526S2ff00482x483S19a00487x506 M523x533S1c148482x467S1c110497x472S20e00494x512S26a06509x506S26a12477x506 M530x529S10018470x471S10641507x501S26505486x480S21600500x494 $1 S38700463x496\n$2",
+       "importlogpage": "M534x518S1852f466x482S18527486x483S2d60c505x505 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "tooltip-pt-userpage": "M507x523S15a28494x496S26500493x477 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-pt-mytalk": "M507x523S15a28494x496S26500493x477 M522x522S15a37478x479S10041485x492S20600500x492 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-pt-preferences": "M507x523S15a28494x496S26500493x477 M525x542S1c507500x517S20600478x519S2ff00482x483",
+       "tooltip-pt-watchlist": "M524x555S15a37494x531S1f550500x538S20e00480x542S26502462x541S30a00482x483 M518x610S14402481x556S1440a474x532S22b04496x580S30a00482x483 M532x561S18049468x526S18041507x526S20500486x550S20500504x550S30a00482x483 M518x591S10609493x555S10621482x571S21100495x542S2df20474x527S30a00482x483 S38700463x496 M508x523S10040493x493S26500493x477 M526x524S10e50511x494S26500510x476S10e58475x494S26510477x476",
+       "tooltip-pt-mycontris": "M508x523S10040493x493S26500493x477 M531x521S1f437507x491S22113512x480S22115469x480S1f43f472x491 M519x539S14402488x485S1440a481x461S22b04503x509",
+       "tooltip-pt-login": "M532x519S18240508x504S18248469x504S26500512x482S26510475x482 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38700463x496 M538x517S10021495x496S10029476x496S2880a516x483S28812463x483 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M513x532S15a48488x468S10a40498x486S26524490x517",
+       "tooltip-pt-logout": "M538x518S2a208496x483S15a37462x483S11530523x487S11551470x493",
+       "tooltip-pt-createaccount": "M532x519S18240508x504S18248469x504S26500512x482S26510475x482 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38700463x496 M538x517S10021495x496S10029476x496S2880a516x483S28812463x483 M534x542S2ff00482x483S26500520x505S20e00521x526S1f540493x518 M513x532S15a48488x468S10a40498x486S26524490x517",
+       "tooltip-ca-talk": "M522x522S15a37478x479S10041485x492S20600500x492 M527x520S18518474x505S10012497x502S2ef00507x480 M531x518S15a06499x506S1d151506x482S20a10469x488 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-edit": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M508x525S10004493x475S22a04494x510 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-addsection": "M526x527S14c49474x500S10012489x503S2c300500x473S21300475x480 M532x517S15a16505x505S2880f468x484S20e00491x495S1821d503x492 M524x525S15a3a477x493S15a41478x476S2d60a501x505S21100506x488",
+       "tooltip-ca-viewsource": "M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498 M520x525S26f20480x476S20313489x493S20311490x504 S38800464x496 M508x523S10040493x493S26500493x477 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M525x524S2ff00482x483S10e00507x494S26500511x474 M509x545S16d20492x456S17620493x480S10120493x497S14a20494x530",
+       "tooltip-ca-history": "M541x523S36d00479x492S15a00528x477S26504527x508 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M536x521S2ff00482x483S10011515x491S28108515x461 M508x525S10004493x475S22a04494x510 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tooltip-ca-protect": "M512x519S15a19488x482S15a11489x482S20600488x508 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-delete": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-move": "M552x509S18520488x494S18528449x494S26626522x492 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tooltip-search": "M546x525S2ff00482x483S16d10492x505S2e502519x502 {{SITENAME}}",
+       "tooltip-search-fulltext": "M546x525S2ff00482x483S16d10492x505S2e502519x502 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M536x521S2ff00482x483S10011515x491S28108515x461 M529x522S14e0a471x492S14e02498x497S20700491x478",
+       "tooltip-p-logo": "M525x524S2ff00482x483S10e00507x494S26500511x474 M519x514S1f548481x490S10002489x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-n-mainpage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M519x514S1f548481x490S10002489x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-n-mainpage-description": "M525x524S2ff00482x483S10e00507x494S26500511x474 M519x514S1f548481x490S10002489x487 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-n-portal": "M527x520S18518474x505S10012497x502S2ef00507x480 M539x530S14011508x506S15a07489x493S2b700507x480S19220488x472S2a20c461x470 S38700463x496 M554x520S2711e446x480S27106539x480S14c31504x486S14c39468x486 M508x523S10040493x493S26500493x477 M525x517S20350510x483S20350476x483S22a04511x502S22a14478x502 M532x519S18240508x504S18248469x504S26500512x482S26510475x482 S38700463x496 M513x542S1ce50491x458S22a00492x492S14c50487x511 M537x522S18507516x486S1850f461x495S2ff00482x483S14c30513x436S14c38458x445S26500518x471S26510463x480 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510",
+       "tooltip-n-recentchanges": "M519x539S14402488x485S1440a481x461S22b04503x509 M536x521S2ff00482x483S10011515x491S28108515x461 M536x533S35610482x482S10601513x505S21600525x500 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "tooltip-n-randompage": "M525x524S2ff00482x483S10e00507x494S26500511x474 M543x512S10021495x491S10029476x491S26506528x489S26512458x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-n-help": "M521x532S15a37480x506S14c51494x506S22a00504x489S18551494x468 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510",
+       "tooltip-t-whatlinkshere": "M519x539S14402488x485S1440a481x461S22b04503x509 M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M518x552S19220497x533S14020483x502S19220497x480S18620495x449 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489 M521x525S1ce10499x476S1ce48479x476S20a00491x510 M525x525S10004510x475S22a04511x510S1000c476x475S22a14477x510",
+       "tooltip-feed-atom": "M511x544S1f720490x457S1fb20496x476S17620495x499S18d20490x519 M524x533S14402493x486S1440a476x511S22f20488x468 M536x521S2ff00482x483S10011515x491S28108515x461 M508x525S10004493x475S22a04494x510 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tooltip-t-upload": "M535x526S10e27502x481S10e09476x481S22a07491x512S22a17465x511S21b00527x475S21b00500x475 M520x523S14c19480x496S15a01497x497S20710483x477",
+       "tooltip-t-specialpages": "M519x539S14402488x485S1440a481x461S22b04503x509 M536x521S2ff00482x483S10011515x491S28108515x461 M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490 M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tooltip-ca-nstab-main": "M525x524S2ff00482x483S10e00507x494S26500511x474 M531x518S15a06499x506S1d151506x482S20a10469x488 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-nstab-user": "M525x524S2ff00482x483S10e00507x494S26500511x474 M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-nstab-project": "M525x524S2ff00482x483S10e00507x494S26500511x474 M539x530S14011508x506S15a07489x493S2b700507x480S19220488x472S2a20c461x470 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-nstab-image": "M525x524S2ff00482x483S10e00507x494S26500511x474 M520x523S14c19480x496S15a01497x497S20710483x477 M531x512S15a37501x488S1f550507x495S20e00487x499S26502469x498",
+       "tooltip-ca-nstab-template": "M525x524S2ff00482x483S10e00507x494S26500511x474 M510x522S15c10490x513S16d12490x495S22a04494x478",
+       "tooltip-ca-nstab-category": "M525x524S2ff00482x483S10e00507x494S26500511x474 M544x514S16d10505x494S16d18478x494S2df06524x487S2df1e456x487 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "tooltip-minoredit": "M536x514S26506521x499S11502472x498S20e00507x500S15a28465x487 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M515x512S1f010486x488S2f900502x507",
+       "tooltip-save": "M519x513S10e02489x498S20302482x488 M507x523S15a28494x496S26500493x477 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468",
+       "tooltip-rollback": "M508x531S10004493x470S2b705494x507 M531x522S15a48469x495S10e12478x503S2c300505x479S20600481x487 M527x539S10004512x461S1000c473x477S2b705513x498S2b714475x515S2fd04496x530 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M520x519S26504502x504S15a0a480x481S15a02493x487 M521x508S1f748479x493S1f740501x493 M515x523S1c520485x495S26500491x478",
+       "tooltip-summary": "M535x523S14c50508x492S14c58469x492S22520503x477S22520465x477 M529x528S11541487x496S11549471x501S20e00503x488S26507516x473 M554x523S14c40530x476S14c48446x492S26502515x489S26516468x507S20340495x489S20348487x506",
+       "patrol-log-page": "M518x560S2035a492x545S10e50501x522S31500482x483 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "patrol-log-header": "M508x525S10004493x475S22a04494x510 M518x560S2035a492x545S10e50501x522S31500482x483 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "log-show-hide-tag": "$1 M519x514S15a28482x487S11502489x498 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "filedeleteerror-short": "M527x532S1ea40473x511S1f540512x478S22a07497x504S2f700512x468 M520x523S14c19480x496S15a01497x497S20710483x477 M518x526S2ff00482x483S19a00487x506 S38700463x496 $1",
+       "ilsubmit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "metadata": "M520x523S14c19480x496S15a01497x497S20710483x477 M538x522S18517516x486S1851f461x495S2ff00482x483S14c00513x436S14c08461x445S26a00511x469S26a10459x478",
+       "exif-exposureprogram-1": "M545x536S1ce40504x486S1ce48473x464S27100505x521S27114455x500",
+       "namespacesall": "M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490",
+       "monthsall": "M538x518S15a21515x483S15a07463x482S15a01466x483S2a20c493x490",
+       "confirm_purge_button": "M515x525S17620499x475S14020485x495",
+       "confirm-watch-button": "M515x525S17620499x475S14020485x495",
+       "confirm-unwatch-button": "M515x525S17620499x475S14020485x495",
+       "brackets": "S38b00470x493 $1 S38b04470x493",
+       "fileduplicatesearch-submit": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "specialpages": "M516x546S10008501x516S1ce51488x489S20800485x513S22b20494x454 M531x516S15a37501x485S1f550507x492S20e00487x496S26a02470x489",
+       "specialpages-group-login": "M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38700463x496 M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495",
+       "specialpages-group-changes": "M536x534S35610482x483S10601513x506S21600525x501 M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 S38700463x496 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "htmlform-cloner-create": "M527x524S18548473x482S18540497x486S2880f507x504S22104500x476 M526x508S18510501x493S18518475x493",
+       "logentry-newusers-newusers": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 $1 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 {{GENDER:$2|M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501}}",
+       "logentry-newusers-create2": "$1 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 {{GENDER:$2|M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501}} M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 $3",
+       "logentry-newusers-autocreate": "M526x522S15a56499x510S11520503x479S20e00489x496S26a02474x489 M518x517S15a30482x489S1f750484x484S20500496x506S22a04505x495 $1 M531x531S14c30506x469S2a204508x503S2a21c470x503S14c38470x469 {{GENDER:$2|M532x519S20302493x485S2030a489x502S21100509x504S26900516x482S26910468x501}} M520x525S15a18480x490S10a02483x476S23100494x508S20e00500x494",
+       "log-name-managetags": "M519x514S15a28482x487S11502489x498 M530x529S10640507x503S10648479x489S26c08503x484S26c18470x471 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "log-name-tag": "M519x514S15a28482x487S11502489x498 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513",
+       "feedback-error-title": "M518x526S2ff00482x483S19a00487x506",
+       "searchsuggest-search": "M546x525S2ff00482x483S16d10492x505S2e502519x502",
+       "api-error-mustbeloggedin": "M539x579S10e27506x534S10e09480x534S22a07495x565S22a17469x564S21b00531x528S21b00504x528S30a00482x483 M520x576S14c19480x549S15a01497x550S20710483x530S30a00482x483 S38700463x496 M516x519S10651485x482S22a04493x504 M538x521S2a200497x480S20b00462x508S11530523x482S15a37462x483S11551470x493 S38800464x496",
+       "api-error-unclassified": "M536x518S2ff00482x483S15a11513x486S28108513x453 M518x526S2ff00482x483S19a00487x506 M528x529S10030509x499S10038477x499S2a200505x472S2a218473x472",
+       "api-error-unknownerror": "M536x518S2ff00482x483S15a11513x486S28108513x453 M518x526S2ff00482x483S19a00487x506 S38700463x496 $1",
+       "expandtemplates": "M554x524S14c40530x477S14c48446x493S26506515x490S26512468x508S20340495x490S20348487x507 M510x522S15c10490x513S16d12490x495S22a04494x478",
+       "expand_templates_ok": "M515x525S17620499x475S14020485x495",
+       "log-name-pagelang": "M521x532S10609498x496S10621487x512S21100500x483S2df20479x468 M563x515S1dc50505x485S1dc58473x485S26606533x499S26612438x499 M518x536S15a37483x465S18550493x476S15a37483x509S15a51486x513"
+}
index a6b5c69..d22ff19 100644 (file)
@@ -18,6 +18,7 @@
        "tog-hideminor": "Anubrir les ediciones menores nos cambeos recientes",
        "tog-hidepatrolled": "Anubrir les ediciones vixilaes nos cambeos recientes",
        "tog-newpageshidepatrolled": "Anubrir les páxines vixilaes na llista de páxines nueves",
+       "tog-hidecategorization": "Tapecer la categorización de páxines",
        "tog-extendwatchlist": "Espander la llista de siguimientu p'amosar tolos cambeos, non solo los más recientes",
        "tog-usenewrc": "Agrupar los cambeos por páxina nos cambeos recientes y na llista de siguimientu",
        "tog-numberheadings": "Autonumberar los encabezaos",
@@ -47,6 +48,7 @@
        "tog-watchlisthideliu": "Anubrir les ediciones d'usuarios identificaos na llista de siguimientu",
        "tog-watchlisthideanons": "Anubrir les ediciones d'usuarios anónimos na llista de siguimientu",
        "tog-watchlisthidepatrolled": "Anubrir les ediciones patrullaes na llista de siguimientu",
+       "tog-watchlisthidecategorization": "Tapecer la categorización de páxines",
        "tog-ccmeonemails": "Mandame copies de los correos qu'unvio a otros usuarios",
        "tog-diffonly": "Nun amosar el conteníu de la páxina embaxo de les diferencies",
        "tog-showhiddencats": "Amosar categoríes anubríes",
        "actionthrottled": "Aición llendada",
        "actionthrottledtext": "Como midida anti-spam, nun se pue repetir esta aición munches vegaes en pocu tiempu, y trespasasti esi llímite.\nPor favor vuelvi intentalo nunos minutos.",
        "protectedpagetext": "Esta páxina ta candada pa torgar ediciones y otres aiciones.",
-       "viewsourcetext": "Pues ver y copiar la fonte d'esta páxina:",
-       "viewyourtext": "Pues ver y copiar la fonte de '''les tos ediciones''' d'esta páxina:",
+       "viewsourcetext": "Pues ver y copiar la fonte d'esta páxina.",
+       "viewyourtext": "Pues ver y copiar la fonte de <strong>les tos ediciones</strong> d'esta páxina.",
        "protectedinterface": "Esta páxina proporciona'l testu de la interfaz del software d'esta wiki, y ta candada pa torgar abusos.\nP'amestar o cambiar les traducciones de toles wikis, por favor usa [//translatewiki.net/translatewiki.net], el proyeutu de llocalización de MediaWiki.",
        "editinginterface": "<strong>Avisu:</strong> Tas editando una páxina que s'usa pa proporcionar el testu de la interfaz del programa.\nLos cambeos nesta páxina afeutarán al aspeutu de la interfaz pa otros usuarios d'esta wiki.",
        "translateinterface": "P'amestar o camudar les traducciones pa toles wikis, usa [//translatewiki.net/ translatewiki.net], el proyeutu de traducción de MediaWiki.",
        "search-category": "(categoría $1)",
        "search-file-match": "(casa col conteníu del ficheru)",
        "search-suggest": "Quixisti dicir: $1",
+       "search-rewritten": "Amosando los resultaos pa $1. O meyor, buscar $2.",
        "search-interwiki-caption": "Proyeutos hermanos",
        "search-interwiki-default": "Resultaos de $1:",
        "search-interwiki-more": "(más)",
        "rcshowhidemine": "$1 les mios ediciones",
        "rcshowhidemine-show": "Amosar",
        "rcshowhidemine-hide": "Anubrir",
+       "rcshowhidecategorization": "$1 la categorización de páxina",
+       "rcshowhidecategorization-show": "Amosar",
+       "rcshowhidecategorization-hide": "Tapecer",
        "rclinks": "Amosar los caberos $1 cambeos de los caberos $2 díes <br />$3",
        "diff": "dif",
        "hist": "hist",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuariu|ususarios}} vixilando]",
-       "rc_categories": "Llímite pa les categoríes (dixebrar con \"|\")",
-       "rc_categories_any": "Cualesquiera",
+       "rc_categories": "Llendar a les categoríes (dixebrar con \"|\"):",
+       "rc_categories_any": "Cualquiera de les esbillaes",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} dempués del cambiu",
        "newsectionsummary": "/* $1 */ nueva seición",
        "rc-enhanced-expand": "Amosar detalles",
        "recentchangeslinked-summary": "Esta ye una llista de los caberos cambios fechos nes páxines enllaciaes dende una páxina determinada (o nos miembros d'una categoría determinada).\nLes páxines de [[Special:Watchlist|la to llista de siguimientu]] tán en <strong>negrina</strong>.",
        "recentchangeslinked-page": "Nome de la páxina:",
        "recentchangeslinked-to": "Amosar los cambios de les páxines qu'enllacen en cuenta de los de la páxina dada",
+       "recentchanges-page-added-to-category": "[[:$1]] amestóse a la categoría",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} amestaes a la categoría",
+       "recentchanges-page-removed-from-category": "[[:$1]] desanicióse de la categoría",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y {{PLURAL:$2|otra páxina|otres $2 páxines}} desaniciaes de la categoría",
        "upload": "Xubir ficheru",
        "uploadbtn": "Xubir ficheru",
        "reuploaddesc": "Cancelar la xubida y tornar al formulariu de xubíes",
        "upload-too-many-redirects": "La URL contenía demasiaes redireiciones",
        "upload-http-error": "Hebo un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "La xubida de copies nun ta disponible dende esti dominiu.",
+       "upload-dialog-title": "Xubir ficheru",
+       "upload-dialog-error": "Hebo un error",
+       "upload-dialog-warning": "Hebo un avisu",
+       "upload-dialog-button-cancel": "Encaboxar",
+       "upload-dialog-button-done": "Fecho",
+       "upload-dialog-button-save": "Guardar",
+       "upload-dialog-button-upload": "Xubir",
+       "upload-dialog-label-select-file": "Seleiciona un ficheru",
+       "upload-dialog-label-infoform-title": "Detalles",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descripción",
+       "upload-dialog-label-usage-title": "Usu",
+       "upload-dialog-label-usage-filename": "Nome del ficheru",
        "backend-fail-stream": "Nun se pudo tresmitir el ficheru $1.",
        "backend-fail-backup": "Nun se pudo facer copia de seguridá del ficheru $1.",
        "backend-fail-notexists": "El ficheru $1 nun esiste.",
        "watchlistanontext": "Por favor, anicia sesión pa ver o editar entraes de la to llista de siguimientu.",
        "watchnologin": "Non identificáu",
        "addwatch": "Amestar a la llista de siguimientu",
-       "addedwatchtext": "La páxina \"[[:$1]]\" s'amestó a la to [[Special:Watchlist|llista de llista de siguimientu]].\nLos cambeos futuros nesta páxina y na so páxina d'alderique asociada apaecerán allí.",
+       "addedwatchtext": "«[[:$1]]» y la so páxina d'alderique amestáronse a la to [[Special:Watchlist|llista de siguimientu]].",
        "addedwatchtext-short": "Amestóse la páxina «$1» a la to llista de siguimientu.",
        "removewatch": "Desaniciar de la llista de siguimientu",
-       "removedwatchtext": "La páxina \"[[:$1]]\" desanicióse de la [[Special:Watchlist|to llista de siguimientu]].",
+       "removedwatchtext": "«[[:$1]]» y la so páxina d'alderique desaniciáronse de la to [[Special:Watchlist|llista de siguimientu]].",
        "removedwatchtext-short": "Desanicióse la páxina «$1» de la to llista de siguimientu.",
        "watch": "Vixilar",
        "watchthispage": "Vixilar esta páxina",
        "changecontentmodel-success-title": "Cambióse'l modelu de conteníu",
        "changecontentmodel-success-text": "Cambióse'l tipu de conteníu de [[:$1]].",
        "changecontentmodel-cannot-convert": "El conteníu de [[:$1]] nun puede convertise a un tipu de $2.",
-       "changecontentmodel-title-cantexist": "Nun ye posible tener una páxina en $1.",
        "changecontentmodel-nodirectediting": "El modelu de conteníu $1 nun tien encontu pa edición direuta",
        "log-name-contentmodel": "Rexistru de cambios del modelu de conteníu",
        "log-description-contentmodel": "Socesos rellacionaos colos modelos de conteníu d'una páxina",
        "undeletepagetext": "{{PLURAL:$1|La siguiente páxina foi esborrada pero tovía ta nel archivu y pue ser restauráu|Les $1 páxines siguientes foron esborraes pero tovía tán nel archivu y puen ser restauraes}}. L'archivu pue ser purgáu periódicamente.",
        "undelete-fieldset-title": "Restaurar revisiones",
        "undeleteextrahelp": "Pa restaurar l'historial ensembre de la páxina, desmarca toles caxelles y calca en '''''{{int:undeletebtn}}'''''.\nPa realizar una restauración selectiva, seleiciona les caxelles de la revisión que quies restaurar y calca en '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revisión archivada|revisiones archivaes}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisión desaniciada|revisiones desaniciaes}}",
        "undeletehistory": "Si restaures la páxina, restauraránse toles revisiones al historial.\nSi se creó una páxina col mesmu nome dende que fuera esborrada, les revisiones restauraes van apaecer nel historial anterior.",
        "undeleterevdel": "Nun se fadrá la restauración si ésta provoca un esborráu parcial de la páxina cimera o de la revisión\ndel archivu. Nestos casos, tienes que desmarcar o amosar les revisiones esborraes más recién.",
        "undeletehistorynoadmin": "Esta páxina foi esborrada. El motivu del esborráu amuésase\nnel resume d'embaxo, amás de detalles de los usuarios qu'editaron esta páxina enantes\nde ser esborrada. El testu actual d'estes revisiones esborraes ta disponible namái pa los alministradores.",
        "spam_reverting": "Revirtiendo a la cabera versión que nun contien enllaces a $1",
        "spam_blanking": "Toles revisiones teníen enllaces a $1; dexando en blanco",
        "spam_deleting": "Toles revisiones teníen enllaces a $1, desaniciando",
-       "simpleantispam-label": "Comprobación anti-spam.\n¡'''NUN''' rellenes esto!",
+       "simpleantispam-label": "Comprobación anti-spam.\n¡<strong>Nun</strong> rellenes esto!",
        "pageinfo-title": "Información sobro \"$1\"",
        "pageinfo-not-current": "Sentimoslo, ye imposible dar esta información de les revisiones antigües.",
        "pageinfo-header-basic": "Información básica",
        "special-characters-title-endash": "guión curtiu",
        "special-characters-title-emdash": "guión llargu",
        "special-characters-title-minus": "signu menos",
+       "mw-widgets-dateinput-no-date": "Nenguna data seleicionada",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "la páxina inda nun esiste",
        "mw-widgets-titleinput-description-redirect": "redirixir a $1"
 }
index dcc2dbc..278c26f 100644 (file)
        "passwordreset": "Parolu yenilə",
        "passwordreset-text-one": "Parolunuzu sıfırlamaq üçün bu formanı doldurun.",
        "passwordreset-text-many": "{{PLURAL:$1|Parolunuzu sıfırlamaq üçün sahələrdən birini doldurun.}}",
-       "passwordreset-legend": "Parolu yenilə",
        "passwordreset-disabled": "Yenidən qurulma parolu bu vikidə işləmir",
        "passwordreset-emaildisabled": "Bu wiki-dəki e-poçt özəllikləri bağlandı.",
        "passwordreset-username": "İstifadəçi adı:",
        "fewestrevisions": "Az dəyişiklik edilmiş məqalələr",
        "nbytes": "$1 {{PLURAL:$1|bayt|bayt}}",
        "ncategories": "$1 {{PLURAL:$1|kateqoriya|kateqoriya}}",
-       "nlinks": "$1 {{PLURAL:$1|keçid|keçidlər}}",
+       "nlinks": "$1 {{PLURAL:$1|keçid|keçid}}",
        "nmembers": "$1 {{PLURAL:$1|üzv|üzv}}",
        "nrevisions": "$1 dəyişiklik",
-       "nviews": "$1 baxış",
        "nimagelinks": "$1 səhifədə istifadə olunmur",
        "ntransclusions": "$1 səhifədə istifadə olunur",
        "specialpage-empty": "Bu səhifə boşdur.",
index 9b63b13..45623a6 100644 (file)
                        "아라",
                        "Koroğlu",
                        "Baloch Afghanistan",
-                       "Macofe"
+                       "Macofe",
+                       "Sadiqr"
                ]
        },
-       "tog-underline": "باغلانتیلارین آلتینی خطله:",
+       "tog-underline": "باغلانتیلارین آلتینی خطله:",
        "tog-hideminor": "سوْن دییشیکلیکلرده کیچیکلری گیزلت",
        "tog-hidepatrolled": "سوْن دییشیکلیکلرده نظارتلنمیش دَییشیکلیکلری گیزلت",
        "tog-newpageshidepatrolled": "نظارتلنمیش صحیفه‌لری یئنی صحیفه‌لر لیستین‌دن گیزلت",
-       "tog-extendwatchlist": "گؤزله‌دیکلری، یالنیز یئنیلر اۆچون یوْخ، بۆتون دییشیکلیکلری گؤسترمک اۆچون، گئنیشلندیر.",
-       "tog-usenewrc": "دَییشیکلیکلری سون دَییشیکلیکلر صحیفه‌سینده ایزله‌دیکلر صحیفه‌سینده گروپ‌لا (جاوااسکریپت لازیم‌دیر)",
-       "tog-numberheadings": "باشلیقلاری اوْتوماتیک نۆمره‌له",
-       "tog-showtoolbar": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ú© Ø¢Ø±Ø§Ø¬-Ú\86Û\87بÙ\88غÙ\88Ù\86Ù\88 Ú¯Ø¤Ø³ØªØ±",
-       "tog-editondblclick": "صحیفه‌‌لری ایکی کیلیک‌ده دَییشدیر",
-       "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیقلارین اۆزرینده ساغ‌کلیک ائتمک‌له ایجازه وئر",
-       "tog-watchcreations": "ياراتدیغیم صحیفه‌‌لری و يۆکله‌دیگیم فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
-       "tog-watchdefault": "دَییشدیردیگیم صحیفه‌‌لری و فايل‌لاری، گؤزله‌دیکلریمه آرتیر",
+       "tog-extendwatchlist": "ایزله‌دیک‌لری، یالنیز یئنی‌لر اۆچون یوْخ، بۆتون دییشیک‌لیک‌لری گؤرستمک اۆچون، گنیشلندیر.",
+       "tog-usenewrc": "دَییشیک‌لیک‌لری سوْن دَییشیک‌لیک‌لر صفحه‌سینده ایزله‌دیک‌لر صفحه‌سینده گروپ‌لا (جاوااسکریپت گرک‌دیر)",
+       "tog-numberheadings": "باشلیقلاری اوْتوماتیک نۆمره‌له",
+       "tog-showtoolbar": "دÙ\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ú© Ø¢Ø±Ø§Ø¬-Ú\86Û\87بÙ\88غÙ\88Ù\86Ù\88 Ú¯Ø¤Ø±Ø³Øª",
+       "tog-editondblclick": "صفحه‌‌لری ایکی کیلیک‌ده دَییشدیر",
+       "tog-editsectiononrightclick": "بؤلوم‌لرین دَییشدیرمه‌سینی، باشلیق‌لارین اۆستونده ساغ‌کلیک ائتمک‌‌له ایجازه وئر",
+       "tog-watchcreations": "ياراتدیغیم صفحه‌‌لری و يۆکله‌دیگیم فايل‌لاری، ایزله‌دیک‌لریمه آرتیر",
+       "tog-watchdefault": "دَییشدیردیگیم صفحه‌‌لری و فايل‌لاری، ایزله‌دیک‌لریمه آرتیر",
        "tog-watchmoves": "داشیدیغیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
        "tog-watchdeletion": "سیلدیگیم صحیفه‌‌لری و فايل‌لاری گؤزله‌دیکلریمه آرتیر",
        "tog-watchrollback": "قایتاریلمیش صفحه لری ایزلدیکلریمه آرتیر",
-       "tog-minordefault": "وارساییلان اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی نیشانلا",
-       "tog-previewontop": "اؤÙ\86â\80\8cگؤسترÛ\8cØ´Û\8cØ\8c Ù\8aازÙ\85اÙ\82 Ù\82Û\87تÙ\88سÙ\88Ù\86داÙ\86 Ù\82اباÙ\82 Ú¯Ø¤Ø³ØªØ±",
-       "tog-previewonfirst": "اÛ\8cÙ\84Ú© Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87â\80\8cدÙ\87 Ø§Ø¤Ù\86â\80\8cگؤسترÛ\8cØ´Û\8c Ú¯Ø¤Ø³ØªØ±",
-       "tog-enotifwatchlistpages": "گؤزله‌دیکلریم‌ده اولان بیر صحیفه یا فایل دَییشدیریلنده، منه ایمیل گؤندر",
+       "tog-minordefault": "دفالت اوْلاراق، بۆتون دَییشدیر‌مه‌لری کیچیک کیمی علامتله",
+       "tog-previewontop": "اؤÙ\86â\80\8cگؤسترÛ\8cØ´Û\8cØ\8c Ù\8aازÙ\85اÙ\82 Ù\82Û\87تÙ\88سÙ\88Ù\86داÙ\86 Ù\82اباÙ\82 Ú¯Ø¤Ø±Ø³Øª",
+       "tog-previewonfirst": "اÛ\8cÙ\84Ú© Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\85Ù\87â\80\8cدÙ\87 Ø§Ø¤Ù\86â\80\8cگؤسترÛ\8cØ´Û\8c Ú¯Ø¤Ø±Ø³Øª",
+       "tog-enotifwatchlistpages": "ایزله‌دیکلریم‌ده اولان بیر صفحه یا فایل دَییشدیریلن‌ده، منه ایمیل گؤندر",
        "tog-enotifusertalkpages": "دانیشیق صحیفه‌‌م دَییشدیریلنده منه ایمیل گؤندر",
        "tog-enotifminoredits": "صحیفه‌لرده و فایل‌لاردا کیچیک دَییشیکلیکلر اولسا دا منه ایمیل گؤندر",
        "tog-enotifrevealaddr": "منیم ایمیل آدرسیمی بیلدیریش ایمیل‌لرینده گؤستر",
        "tog-oldsig": "ایندی‌کی ایمضا:",
        "tog-fancysig": "ایمضانی ویکی-متن کیمی نظره آل (اوْتوماتیک باغلانتی‌سیز)",
        "tog-uselivepreview": "دیری اؤن‌گؤستریش ایشلت (تِست مرحله‌سینده)",
-       "tog-forceeditsummary": "دَییشیکلیک قیساسی بوش قالاندا منی بیلدیر",
-       "tog-watchlisthideown": "منیم دَییشیکلیکلریمی گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthidebots": "بوْت دَییشیکلیکلرینی گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthideminor": "کیچیک دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
-       "tog-watchlisthideliu": "Ú¯Û\8cرÙ\85Û\8cØ´ Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©لردن گیزلت",
-       "tog-watchlisthideanons": "تاÙ\86Û\8cÙ\86Ù\85اÙ\85Û\8cØ´ Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©Ù\84رÛ\8cÙ\86Û\8c Ú¯Ø¤Ø²Ù\84Ù\87â\80\8cدÛ\8cÚ©لردن گیزلت",
+       "tog-forceeditsummary": "دَییشیکلیک قیساسی بوْش قالاندا منه بیلیندیر",
+       "tog-watchlisthideown": "منیم دَییشیک‌لیک‌لریمی ایزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthidebots": "بوْت دَییشیک‌لیک‌لرینی ایزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthideminor": "کیچیک دَییشیک‌لیک‌لری ایزله‌دیک‌لردن گیزلت",
+       "tog-watchlisthideliu": "Ú¯Û\8cرÙ\85Û\8cØ´ Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cÙ\84رÛ\8cÙ\86Û\8c Ø§Û\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ©â\80\8cلردن گیزلت",
+       "tog-watchlisthideanons": "تاÙ\86Û\8cÙ\86Ù\85اÙ\85Û\8cØ´ Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÛ\8cÙ\86 Ø¯Ù\8eÛ\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cÙ\84رÛ\8cÙ\86Û\8c Ø§Û\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ©â\80\8cلردن گیزلت",
        "tog-watchlisthidepatrolled": "نظارتلنمیش دَییشیکلیکلری گؤزله‌دیکلردن گیزلت",
-       "tog-ccmeonemails": "Ø¢Û\8cرÛ\8c Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88Ù\92Ù¾Û\8cÙ\84رÛ\8cÙ\86Û\8c Ù\85Ù\86Ù\87 Ú¯Ø¤Ù\86در",
-       "tog-diffonly": "مۇقاییسه‌لر آلیتندا صحیفه‌لرین ایچینده‌کیلرینی گؤسترمه",
-       "tog-showhiddencats": "Ú¯Û\8cزÙ\84Û\8c Ø¨Ø¤Ù\84Ù\85Ù\87â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø³ØªØ±",
-       "tog-norollbackdiff": "Ù\82اÛ\8cتاراÙ\86داÙ\86 Ø³Ù\88Ù\86را Ù\85Ù\88Ù\82اÛ\8cÛ\8cسÙ\87 Ú¯Ø¤Ø³ØªØ±مه",
-       "tog-useeditwarning": "دَییشدیرمه صحیفه‌سیندن چیخاندا، قئید ائدیلمه‌میش دَییشدیرمه اوْلسا، منه هشدار وئر",
+       "tog-ccmeonemails": "باشÙ\82ا Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84رÙ\87 Ú¯Ø¤Ù\86دردÛ\8cÚ¯Û\8cÙ\85 Ø§Û\8cÙ\85Û\8cÙ\84â\80\8cÙ\84رÛ\8cÙ\86 Ú©Ù\88Ù\92Ù¾Û\8câ\80\8cÙ\84رÛ\8cÙ\86Û\8c Ù\85Ù\86Ù\87 Ú¯Ø¤Ù\86در",
+       "tog-diffonly": "مقایسه‌لر آلیتندا صفحه‌لرین ایچینده‌کی‌لرینی گؤرستمه",
+       "tog-showhiddencats": "Ú¯Û\8cزÙ\84Û\8c Ø¨Ø¤Ù\84Ù\85Ù\87â\80\8cÙ\84رÛ\8c Ú¯Ø¤Ø±Ø³Øª",
+       "tog-norollbackdiff": "Ù\82اÛ\8cتاراÙ\86داÙ\86 Ø³Ù\88Ù\92Ù\86را Ù\85Ù\82اÛ\8cسÙ\87 Ú¯Ø¤Ø±Ø³Øªمه",
+       "tog-useeditwarning": "دَییشدیرمه صفحه‌سیندن چیخاندا، ذخیره اولونمامیش دَییشدیرمه اوْلسا، منه تذکر وئر",
        "tog-prefershttps": "هر زامان گیریش ائتمگه امن باغلانتی ایشلت",
        "underline-always": "هر زامان",
        "underline-never": "هئچ واخت",
        "no-null-revision": "\"$1\" صحیفه‌سی اوچون یئنی بوش بیر نوسخه یارادیلا بیلمه‌دی",
        "badtitle": "پیس باشلیق",
        "badtitletext": "آختاریلان صحیفه‌‌ آدی سهودیر و يا بوْشدور، يا دا دۆزگون اوْلمايان دیللر‌آراسی، ياخود ویکیلرآراسی کئچید ایستیفاده ائدیلیب. \nباشلیقلاردا ایستیفاده ائدیلمه‌سی قاداغان اوْلونان بیر و يا داها چوْخ سیمووْل ایستیفاده ائدیلمیش اوْلا بیلر.",
+       "title-invalid-empty": "آختاردیٛغیٛنیٛز صفحه‌‌نین آدیٛ بوْشدۇر و یا آدلارفضاسیٛندا یالنیٛز آدیٛ وار.",
+       "title-invalid-utf8": "ایستنیلن صفحه‌نین آدیندا بیر یانلیش UTF-8 کاراکتِری وار.",
+       "title-invalid-interwiki": "آختاردیٛغیٛنیٛز صفحه‌ آدیٛیٛندا بیر ایستیفاده‌ اوْلۇنا بیلمه‌‌ین اینتئر ویکی باغلانتیٛسیٛ وار.",
+       "title-invalid-characters": "ایستنیلن صفحه‌نین آدیندا، یانلیش کاراکتِرلر وار: «$1»",
        "perfcached": "بو بیلگی، کَش اولوب‌دور و اولا بیلر گونجل اولماسین. چوخو {{PLURAL:$1|بیر نتیجه|$1 نتیجه}} کَش‌ده‌دیر.",
        "perfcachedts": "بو بیلگی کَش اولوب‌دور، سون دفعه $1 واختیندا گونجلیب‌دیر. چوخو {{PLURAL:$4|بیر نتیجه|$4 نتیجه}} کَش‌ده‌دیر.",
        "querypage-no-updates": "بو یارپاق‌دا گونجل‌له‌مک ایندی باغلانیب‌دیر.\nبورداکی بیلگیلر یئنی‌لشمیه‌جکلر.",
        "actionthrottled": "سیزین چالیشمانیزین قاباغی آلیندی",
        "actionthrottledtext": "آنتی-ایسپام حرکت‌لری گؤره، بیر حرکتی قیسا بیر زامان آرالیغیندا چوخئتمه‌نیز انگللندی، و سیز حدی آشمیسینیز. لطفاً بیر نئچه دقیقه سونرا یئنی‌دن یوخلایین.",
        "protectedpagetext": "بو صحیفه دیَیشدیرمک و باشقا ایشلر اوچون باغلی‌دیر.",
-       "viewsourcetext": "سیز بو صحیفه‌نین مزمونونو گؤره و کؤچوره بیلرسینیز:",
-       "viewyourtext": "'''اؤز دَییشیکلیکلرینیز''' ین کودونو گؤروب و بو صحیفه‌یه کوپی ائده بیلرسینیز:",
+       "viewsourcetext": "سیز بو صفحه‌نین قایناغینی گؤروب و کؤچوره بیلرسینیز.",
+       "viewyourtext": "سیز بو صفحه‌ده <strong>اؤز دَییشیکلیکلرینیزین</strong> قایناغینی گؤروب و کوپی ائده بیلرسینیز.",
        "protectedinterface": "بو صحیفه‌ده پروقرام تأمیناتی اوچون سیستئم بیلگی‌لری وار و سوی-ایستیفاده‌نین قارشی‌سینی آلماق اوچون محافظه اولونما‌لی‌دیر.",
        "editinginterface": "<strong>دیقت:</strong> سیز بیر یازیلیم آرا-اوزونه یازی تعمین ائدن صحیفه‌نی دَییشدیرمک‌ده‌سینیز.\nبو صحیفه‌نی دَییشدیرمک، بو ویکی‌نی ایستیفاده ائدن باشقا ایستیفاده‌چیلرین گؤرونوشونو دَییشه‌جک‌دیر.",
        "translateinterface": "ترجومه و یا اونون دَییشدیرمک هامی ویکی لر اوچون [//translatewiki.net/ translatewiki.net]،مدیا ویکی نین یئرلری ائتمک پروژه سیندن ایستفاده ائدین",
        "storedversion": "قئید ائدیلمیش نوسخه",
        "nonunicodebrowser": "' 'دیققت: آختاریش برنامه نیز اویغون دئییل.\nصحیفه‌لری اعتبارلا دییشدیرمیینیزه ایجازه وئرمک اوچون: آسجیی اولمایان کاراکتئرلر دییشدیرمه قوتوسوندا اونالتیلیک کودلار اولا‌راق گؤرونه‌جک.' '",
        "editingold": "'دیققت! سیز بو صحیفه‌نین کؤهنه نوسخه سین دییشدیر ائدیرسینیز. مقالنی یادداشدا ساخلایاجاغینیز حالدا بو نوسخه سونرا ائدیلمیش هر بیر دییشیک‌لیک ایتیریله‌جک.'",
-       "yourdiff": "فرقلر",
+       "yourdiff": "فرقلر",
        "copyrightwarning": "خاهیش اولونور دقته آلاسینیز کی، {{SITENAME}}داکی بوتون فالیت‌لرینیز $2 لیسئنزیاسینا تابع اولدوغو حساب ائدیلیر (تفرروات اوچون باخ: $1). اگر یازدیق‌لارینیزین اساس‌لی شکیلده رئداکته ائدیلمه‌سینی و ایستنیلدیگی واخت باشقا یئره اؤتورولمه‌سینی ایستمیرسینیزسه، یازی‌لارینیزی بورادا درج ائتمیین.\n<br />\nسیز عینی زاماندا سؤز وئریرسینیز کی، بو یازی‌لاری سیز اؤزونوز یازمیسینیز و یا اونلاری هامییا آچیق موهیت‌دن یا دا بونا بنزر منبع‌دن کؤچورموسونوز.\n\n----\n\n</div> ایستیلئ=\"فونت-weight: بولد؛ فونت-سیزئ: 110%؛ جولور:رئد؛\">موللیف حقوق‌لاری ایله قورونموش هئچ بیر ایشی ایجازه‌سیز درج ائتمیین!</div>",
        "copyrightwarning2": "خاهیش ائدیریک، {{SITENAME}} سایتینا ائده‌جه‌یم بوتون روسوم دیگر عضو‌لر طرفین‌دن دوزئنلئنئبیلئجئغینی، دییش‌دیریله و یا سیلینئبیلئجئغینی خاتیرلایین. یازی‌لارینین مئرهامئتسیزجئ دئغیشتیریلی بیلمسینه راضی‌لیق گؤسترمیرسه بورا ایشتیراک ائتمیین. <br />\nآیریجا بو علاوه یازینی سیزین یازدیغینیزدان یا دا سربست کوپیالاما ایجازه‌سی وئرن بیر قایناق‌دان کوپیالادیغینیزی بیزه اؤهده‌لرینه ائتمکدسینیز (دئتال‌لار اوچون ایستیناد: $1).",
        "longpageerror": "خطا: داخیل متنین اوزون‌لوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL:$2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخ‌دور و {{PLURAL:$1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگونده‌دیر.'\nدییشیک‌لیگی‌نین کایدئدیلئمئز.",
        "history-title": "«$1»-ین گئچمیشی",
        "difference-title": "«$1» نوسخه‌لرینین آراسینداکی فرقلری",
        "difference-title-multipage": "«$1» و «$2» صحیفه‌لرین آراسینداکی فرقلر",
-       "difference-multipage": "(صحیفه‌لر آراسینداکی فرقلر)",
+       "difference-multipage": "(صفحه‌لر آراسینداکی فرق‌لر)",
        "lineno": "خط $1:",
        "compareselectedversions": "سئچیلمیش نوسخه‌لری قارشیلاشدیر",
        "showhideselectedversions": "سئچیلمیش نوسخه‌لری گؤستر/گیزلد",
        "prefs-personal": "ایشلدن وئری‌لری",
        "prefs-rc": "سون دَییشیکلیکلر",
        "prefs-watchlist": "ایزله‌دیکلر",
-       "prefs-editwatchlist": "اÛ\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ¯Û\8cÙ\85 ØµØ­Û\8cÙ\81ه‌‌لری دَییشدیر",
+       "prefs-editwatchlist": "اÛ\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ©Ù\84رÛ\8cÙ\85 ØµÙ\81Ø­ه‌‌لری دَییشدیر",
        "prefs-editwatchlist-label": "هامی ایزلدیکلرینیزین دَییشدیرمه سی:",
        "prefs-editwatchlist-edit": "ایزلدیکلرینیزدن گورمک هابئله باشلیق لارین سیلمک",
        "prefs-editwatchlist-raw": "ایزله‌دیگیم خام لیستی دَییشدیر",
        "prefs-editwatchlist-clear": "ایزله دیگیم لیستی سیلمک",
-       "prefs-watchlist-days": "ایزله‌دیکلرده گؤستریلن گونلر",
+       "prefs-watchlist-days": "ایزله‌دیک‌لریمده گؤرسدیلن گۆن‌لر",
        "prefs-watchlist-days-max": "چوخو {{PLURAL:$1|بیر|$1}} گون",
-       "prefs-watchlist-edits": "گنیشلنمیش ایزله‌مه‌لرده گؤستریلن دَییشیکلیکلرین چوخو:",
+       "prefs-watchlist-edits": "گنیشلنمیش ایزله‌ دیک لرده گؤرسدیلن دَییشیک‌لیک‌لرین چوْخو:",
        "prefs-watchlist-edits-max": "چوخ سایی: ۱۰۰۰",
-       "prefs-watchlist-token": "ایزله‌دیکلر نیشانی:",
+       "prefs-watchlist-token": "ایزله‌دیک‌لر آدرسی:",
        "prefs-misc": "باشقا",
        "prefs-resetpass": "رمزی دَییشدیر",
        "prefs-changeemail": "ایمیل آدرسینی دَییشدیر",
        "prefs-setemail": "بیر ایمیل آدرسی وئر",
        "prefs-email": "ایمیل ترجیحلری",
        "prefs-rendering": "گؤرونوش",
-       "saveprefs": "قئید ائت",
+       "saveprefs": "ذخیره ائت",
        "restoreprefs": "بوتون ایلک ترجیح‌لری قایتار",
        "prefs-editing": "دَییشدیرمک‌ده",
        "rows": "سطرلر:",
-       "columns": "سوتونلار",
+       "columns": "سوتونلار",
        "searchresultshead": "آختار",
-       "stub-threshold": "<a href=\"#\" class=\"stub\">کئچیدسیز لینکی</a> فورمات ائتمک اوچون حدود (بایت‌لارلا):",
+       "stub-threshold": "<a href=\"#\" class=\"stub\">باغلانتی‌سیز لینکی</a> دییشدیرمک اوچون حدود (بایت‌لارلا):",
        "stub-threshold-disabled": "چالیشمایان",
-       "recentchangesdays": "سÙ\88Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©â\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø³ØªØ±Û\8cÙ\84Ù\86 Ú¯Ù\88Ù\86â\80\8cÙ\84رÛ\8cÙ\86 Ù\85Û\8cÙ\82دارÛ\8c:",
+       "recentchangesdays": "سÙ\88Ù\92Ù\86 Ø¯Û\8cÛ\8cØ´Û\8cÚ©â\80\8câ\80\8cÙ\84ردÙ\87 Ú¯Ø¤Ø±Ø³Ø¯Û\8cÙ\84Ù\86 Ú¯Û\86Ù\86â\80\8cÙ\84ر:",
        "recentchangesdays-max": "ماکسیموم $1 {{PLURAL:$1|گون |گون}}",
-       "recentchangescount": "سÙ\88Ù\86 Ø¯Ù\8aÙ\8eÛ\8cØ´Û\8cÚ©Ù\84Û\8cÚ©لرده باشلیق سايی:",
+       "recentchangescount": "سÙ\88Ù\92Ù\86 Ø¯Ù\8aÙ\8eÛ\8cØ´Û\8cÚ©â\80\8cÙ\84Û\8cÚ©â\80\8cلرده باشلیق سايی:",
        "prefs-help-recentchangescount": "بورایا یئنی دییشیک‌لیک‌لر، صحیفه‌لرین و ژورنال‌لارین تاریخچه‌سی داخیل‌دیر.",
        "prefs-help-watchlist-token2": "بو کیلید ایزلدیگیز لیستین وب تغذیه سی رمزی دیر.\nهر کیم اونا ال تاپسا ایزلدیکلرینیز لیستی اوخویا بیلر بئله لیکله اونا پایلاشمایین [[Special:ResetTokens|لازیم اولسا اونو دَییشدیرمک اوچون بورانی باسین]].",
        "savedprefs": "سئچیمینیز قئيد ائدیلدی.",
        "localtime": "یئرلی چاغ:",
        "timezoneuseserverdefault": "ویکی اؤن‌فرضینی ایشلد ($1)",
        "timezoneuseoffset": "باشقا (چاغ فرقینی بیلدیر)",
-       "servertime": "Ø®Û\8cدÙ\85تÚ\86Û\8c چاغی:",
+       "servertime": "سرÙ\88ر چاغی:",
        "guesstimezone": "براوزِردن دولدور",
        "timezoneregion-africa": "آفریقا",
        "timezoneregion-america": "آمریکا",
        "timezoneregion-europe": "اوروپا",
        "timezoneregion-indian": "هیند اوقیانوسو",
        "timezoneregion-pacific": "بؤیوک اوقیانوس",
-       "allowemail": "باشÙ\82ا Ø§Û\8cستÛ\8cÙ\81ادÙ\87â\80\8cÚ\86Û\8cÙ\84ردÙ\86 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ù\84Ù\85اغÛ\8c Ø¢Ú\86",
+       "allowemail": "باشÙ\82ا Ø§Û\8cØ´Ù\84دÙ\86â\80\8cÙ\84ردÙ\86 Ø§Û\8cÙ\85Û\8cÙ\84 Ø¢Ù\84Ù\85اغÛ\8c Ø¢Ú\86",
        "prefs-searchoptions": "آختار",
        "prefs-namespaces": "آدلار فضاسی:",
        "default": "فرض ائدیلن",
        "prefs-emailconfirm-label": "ایمیل دوغرولاماسی:",
        "youremail": "ایمیل:",
        "username": "{{GENDER:$1|ایشلدن آدی}}:",
-       "prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} قروپ {{GENDER:$2|عوضو}}و:",
-       "prefs-registration": "یازیلماق تاریخی:",
+       "prefs-memberingroups": "{{PLURAL:$1|بیر|$1}} گروه {{GENDER:$2|عوضو}}و:",
+       "prefs-registration": "آد یازدیرما تاریخی:",
        "yourrealname": "دوغرو آد:",
        "yourlanguage": "دیل:",
        "yourvariant": "دیل واریانتی:",
        "yourgender": "ترجیح وئریرسیز نجور توصیف اولونسون؟",
        "gender-unknown": "ترجیح وئریرم بیلیندیرمییم",
        "gender-male": "کیشی",
-       "gender-female": "قادین",
+       "gender-female": "خانیم",
        "prefs-help-gender": "بو ترجیح ایستگه باغلی‌دیر.\nبونون میقداری، سیزی باشقالارا دوزگون آدرس وئرمک اوچون ایشلنه‌جکدیر.\nبو بیلگی، عمومی اولاجاق‌دیر.",
        "email": "ایمیل",
        "prefs-help-realname": "اصلی آد ایختیاری دیر.\nاگر اونو وئرماغی سئچسز، سیزین ایشلرینیزی سیزه مونتسب ائدن‌ده، بو اصلی آد ایشلنه‌جک‌دیر.",
        "prefs-i18n": "اولوسلارآراسی‌لاشدیرما",
        "prefs-signature": "ایمضا",
        "prefs-dateformat": "تاریخ فورمتی",
-       "prefs-timeoffset": "ساعات قورشاغینین فرقی",
+       "prefs-timeoffset": "چاغ بؤلگه‌سینین فرقی",
        "prefs-advancedediting": "گنل تنظیم‌لر",
        "prefs-editor": "دَییشدیرن",
        "prefs-preview": "اؤن‌گؤستریش",
        "prefs-advancedwatchlist": "گلیشمیش سئچَنکلر",
        "prefs-displayrc": "گؤرونتو سئچَنکلری",
        "prefs-displaywatchlist": "گؤرونتو سئچَنکلری",
-       "prefs-tokenwatchlist": "سÛ\8cÙ\85Ú¯Ù\87",
-       "prefs-diffs": "فرقلر",
+       "prefs-tokenwatchlist": "آدرس",
+       "prefs-diffs": "فرقلر",
        "prefs-help-prefershttps": "سیزین بو ترجیحینیزین اثری سیزین سونراکی گیریشینیز دن سونرا اولاجاق.",
        "prefswarning-warning": "ترجیحلرینیزه اولان دَییشیک لر هله آرتیریلمیب.\nایر بو صفحه نین \"$1\" اوستونه باسیلمامیشدان اونجه ترک ائتسز ترجیحلرینیز آرتیریلمییاجاق.",
        "prefs-tabs-navigation-hint": "ایپ اوجو : سیز ائلیه بیلرسیز ساغ و سول جهت نیما کیلید لریندن نیشانه نه نین دولانماسی نیشانه لر لیستینده ایستفاده ائده سیز.",
        "boteditletter": "ب",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|بیر|$1}} ایزله‌ین ایستیفاده‌چی]",
        "rc_categories": "بؤلمه‌لره محدودلاشدیر («|» ایله آییر)",
-       "rc_categories_any": "هر",
+       "rc_categories_any": "سئچیلمیشلرین هر بیریسی",
        "rc-change-size-new": "دَییشیکلیک‌دن سونرا {{PLURAL:|بیر|$1}} بایت",
        "newsectionsummary": "/* $1 */ یئنی بؤلمه",
        "rc-enhanced-expand": "تفصیل‌لری گؤستر",
        "randomincategory-nopages": "[[:Category:$1|$1]] بؤلمه‌سین‌ده، هئچ صحیفه یوخدور.",
        "randomincategory-category": "بؤلمه:",
        "randomincategory-legend": "بؤلمه‌ده راست‌گله صفحه",
+       "randomincategory-submit": "گئت",
        "randomredirect": "راست‌گله یول‌لاندیرما",
        "randomredirect-nopages": "«$1» آدفضاسیندا هئچ بیر یول‌لاندیرما یوخدور.",
        "statistics": "آمارلار",
        "statistics-header-pages": "صحیفه آمارلاری",
        "statistics-header-edits": "دَییشمه آمارلاری",
-       "statistics-header-users": "اÛ\8cØ´Ù\84دÙ\86â\80\8cÙ\84ر Ø³Ø§Û\8cÛ\8cÙ\85â\80\8cلاری",
+       "statistics-header-users": "اÛ\8cØ´Ù\84دÙ\86â\80\8cÙ\84ر Ø¢Ù\85ارلاری",
        "statistics-header-hooks": "باشقا آمارلار",
        "statistics-articles": "مقاله‌لر",
        "statistics-pages": "صحیفه‌لر:",
        "tooltip-pt-logout": "چیخیش",
        "tooltip-pt-createaccount": "سیزدن دعوت اولونور ایشلدن حسابی آچیب و گیریش ائده‌سیز؛ آنجاق حساب یاراتماق ایستگه باغلی‌دیر",
        "tooltip-ca-talk": "ایچینده‌کیلره گؤره دانیشیق",
-       "tooltip-ca-edit": "سÛ\8cز Ø¨Ù\88 ØµÙ\81Ø­Ù\87â\80\8cÙ\86Û\8c Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cرÙ\87 Ø¨Û\8cÙ\84رسÛ\8cÙ\86Û\8cز. Ù\84Ø·Ù\81اÙ\8b Ù\82ئÛ\8cد Ø§Ø¦ØªÙ\85Ù\87â\80\8cدÙ\86 Ù\82اباÙ\82 Ø§Ø¤Ù\86â\80\8cگؤسترÛ\8cØ´ Ø¯Ù\88Ú¯Ù\85Ù\87â\80\8cسÛ\8cÙ\86Û\8c Ø§Û\8cØ´Ù\84دÛ\8cÙ\86",
+       "tooltip-ca-edit": "بÛ\87 ØµÙ\81Ø­Ù\87â\80\8câ\80\8cÙ\86Û\8c Ø¯Ù\8eÛ\8cÛ\8cشدÛ\8cر",
        "tooltip-ca-addsection": "یئنی بؤلوم یارات",
        "tooltip-ca-viewsource": "بو صحیفه‌‌ قورونوب‌دور.\nاونون قایناغینا باخا بیلرسیز",
        "tooltip-ca-history": "بو صفحه‌نین گئچمیش سۆروملری",
        "previousdiff": "اسکی دَییشدیرمه",
        "nextdiff": "یئنی دَییشدیرمه",
        "mediawarning": "'''خبردارلیق: بو ​​فایل نوعو پیس نیت‌لی کودلار اولا بیلر.\nبونو ایشلتمک، سیستئمینیزی تهلوکه‌یه آتا بیلر.",
-       "imagemaxsize": "شکیلین ماکسیمال توتومو:<br />(فایلین تصویری صحیفه‌لری اوچون)'",
+       "imagemaxsize": "گؤرونتو ماکسیمال توتومو:<br />(فایلین تصویری صفحه‌لری اۆچون)'",
        "thumbsize": "کیچیک اؤلچو:",
        "widthheightpage": "$1 × $2، $3 {{PLURAL:$3|صحیف|صحیفه‌لر}}",
        "file-info": "فایلین اؤلچوسو: $1، MIME تیپی: $2",
        "autosumm-newblank": "بوش صحفه یاراندی",
        "lag-warn-normal": "$1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌ده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمه‌يه.",
        "lag-warn-high": "وئریلنلر بازاسی سونوجوسونداکی هددیندن آرتیق گئجیکمه‌دن گؤره، $1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌دن}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرونمئيئبیلیر.",
-       "watchlistedit-normal-title": "اÛ\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ¯Û\8cÙ\85 ØµØ­Û\8cÙ\81ه‌‌لری دَییشدیر",
+       "watchlistedit-normal-title": "اÛ\8cزÙ\84Ù\87â\80\8cدÛ\8cÚ©Ù\84رÛ\8cÙ\85 ØµÙ\81Ø­ه‌‌لری دَییشدیر",
        "watchlistedit-normal-legend": "ایزله‌مه سیياهیسیندان باشلیقلارین سیلینمه‌سی",
        "watchlistedit-normal-explain": "ایزله‌مه سیياهینیزدا باشلیقلار آشاغیدا گؤستریلمیشدیر. \nبیر باشلیغی چیخارماق اوچون، يانینداکی قوتوجوغو ایشارله‌يین و «{{int:Watchlistedit-normal-submit}}» دويمه‌سینی باسین. \n[[Special:EditWatchlist/raw|سطرلر سیياهیسینی]] ده تشکیل ائده بیلرسینیز",
        "watchlistedit-normal-submit": "باشلیقین سیلینمه‌سی",
        "watchlistedit-raw-done": "ایزله‌دیکلرینیز گونجل‌لندی.",
        "watchlistedit-raw-added": "{{PLURAL:$1|بیر|$1}} باشلیق آرلیریلدی:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|بیر|$1}} باشلیق چیخاریلدی:",
+       "watchlistedit-clear-legend": "ایزلدیکلریمین لیستین سیل",
        "watchlistedit-clear-titles": "باشلیق‌لار:",
+       "watchlisttools-clear": "ایزلدیکلریمین لیستین سیل",
        "watchlisttools-view": "ایلگیلی دَییشیکلیکلره باخین",
        "watchlisttools-edit": "ایزله‌دیکلره باخ و اونلاری دَییشدیر",
        "watchlisttools-raw": "چیی ایزله‌دیکلری دَییشدیر",
        "version-libraries": "نصب اولونموش کیتابخانا",
        "version-libraries-library": "کیتاب‌ائوی",
        "version-libraries-version": "نوسخه‌",
+       "version-libraries-authors": "یازارلار",
        "redirect": "فایل، ایستیفاده‌چی، صفحه یا نوسخه آی‌دی-سی ایله یول‌لاندیرما",
        "redirect-legend": "بیر فایل یا صحیفه‌یه یول‌لاندیرما",
        "redirect-summary": "بو اؤزل صحیفه، بیر فایلا (فایل آدی ایله)، صفحه‌یه (نوسخه یا صفحه آی‌دی-سی ایله) یا ایستیفاده‌چی صفحه‌سینه (ایستیفاده‌چی نومره آی‌دی-سی ایله) یول‌لاندیریر. ایشلتمک: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]]، یا [[{{#Special:Redirect}}/user/101]].",
        "tags-active-no": "یوْخ",
        "tags-edit": "دَییشدیر",
        "tags-delete": "سیل",
+       "tags-activate": "ائتکینلشدیر",
        "tags-hitcount": "$1 {{PLURAL:$1|دییشیکلیک|دییشیک‌لیک}}",
        "tags-create-submit": "یارات",
        "tags-edit-title": "اِتیکِتلری دَییشدیر",
        "htmlform-cloner-create": "چوْخراق آرتیر",
        "htmlform-cloner-delete": "سیل",
        "htmlform-cloner-required": "ان آزی بیر دیَر گرکلیدیر.",
+       "htmlform-title-badnamespace": "[[:$1]]، «{{ns:$2}}» آدفضاسیندا دئییل.",
+       "htmlform-title-not-creatable": "«$1» بیر یارانا بیلن صفحه آدی دئییل",
+       "htmlform-title-not-exists": "[[:$1]] یوخدور.",
+       "htmlform-user-not-exists": "<strong>$1</strong> یوخدور.",
+       "htmlform-user-not-valid": "<strong>$1</strong> بیر دوزگون ایشلدن آدی دئییل.",
        "sqlite-has-fts": "$1 بوتون یازی آختارما دستگی‌له",
        "sqlite-no-fts": "$1 بوتون یازی آختارماماق‌لا",
        "logentry-delete-delete": "$1، $3 صحیفه‌سینی {{GENDER:$2|سیلدی}}",
        "pagelang-name": "صفحه",
        "pagelang-language": "دیل",
        "pagelang-select-lang": "دیل سئچمه‌سی",
+       "right-pagelang": "صفحه دیلینی دَییشدیر",
+       "action-pagelang": "صفحه دیلینی دَییشدیر",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (ائتکین)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ائتکیسیز''')",
+       "mediastatistics": "مئدیا آمارلاری",
+       "mediastatistics-nbytes": "{{PLURAL:$1|$1}} بایت ($2؛ ٪$3)",
+       "mediastatistics-table-mimetype": "MIME تیپی",
        "mediastatistics-table-count": "فایل‌لارین سایی",
        "mediastatistics-header-unknown": "بیلینمه‌ین",
        "mediastatistics-header-bitmap": "بیت‌مپ گؤرونتولر",
        "mediastatistics-header-audio": "سس",
        "mediastatistics-header-video": "ویدیولار",
        "mediastatistics-header-office": "دفتر",
+       "mediastatistics-header-text": "یازیلی",
        "headline-anchor-title": "بو بؤلومه باغلانتی",
        "special-characters-group-latin": "لاتین",
        "special-characters-group-latinextended": "لاتین گئنیشلندیریلمیش",
        "special-characters-group-khmer": "خمر",
        "special-characters-title-endash": "آرالیق خطی دی",
        "special-characters-title-emdash": "آرالیق خطی چکیلیب",
-       "special-characters-title-minus": "منفی علامتی"
+       "special-characters-title-minus": "منفی علامتی",
+       "mw-widgets-dateinput-no-date": "تاریخ سئچیلمه‌ییب",
+       "mw-widgets-titleinput-description-new-page": "صفحه هله‌لیک یوخدور",
+       "mw-widgets-titleinput-description-redirect": "$1-ه یول‌لاندیر"
 }
index 010629d..1b0e2ed 100644 (file)
        "expand_templates_remove_comments": "Tanggalon an mga komento",
        "expand_templates_remove_nowiki": "Pugulan an mga taktak na <nowiki> sa resulta",
        "expand_templates_generate_xml": "Ipahiling an panlunhay na kahoy nin XML",
-       "expand_templates_preview": "Patânaw"
+       "expand_templates_preview": "Patânaw",
+       "mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA",
+       "mw-widgets-dateinput-placeholder-month": "TTTT-BB"
 }
index fda2f23..b721869 100644 (file)
@@ -21,6 +21,7 @@
        "tog-hideminor": "Хаваць дробныя праўкі ў сьпісе апошніх зьменаў",
        "tog-hidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе апошніх зьменаў",
        "tog-newpageshidepatrolled": "Хаваць патруляваныя старонкі ў сьпісе новых старонак",
+       "tog-hidecategorization": "Схаваць катэгарызацыю старонак",
        "tog-extendwatchlist": "Пашырыць сьпіс назіраньня, каб ён паказваў усе зьмены, а ня толькі апошнія",
        "tog-usenewrc": "Групаваць зьмены па старонках у апошніх зьменах і сьпісе назіраньня",
        "tog-numberheadings": "Аўтаматычная нумарацыя загалоўкаў",
@@ -50,6 +51,7 @@
        "tog-watchlisthideliu": "Хаваць праўкі зарэгістраваных удзельнікаў у сьпісе назіраньня",
        "tog-watchlisthideanons": "Хаваць праўкі ананімаў у сьпісе назіраньня",
        "tog-watchlisthidepatrolled": "Хаваць патруляваныя праўкі ў сьпісе назіраньня",
+       "tog-watchlisthidecategorization": "Хаваць катэгарызацыю старонак",
        "tog-ccmeonemails": "Адпраўляць мне копіі лістоў, якія я дасылаю іншым удзельнікам",
        "tog-diffonly": "Не паказваць зьмест старонкі пад параўнаньнем зьменаў",
        "tog-showhiddencats": "Паказваць схаваныя катэгорыі",
        "actionthrottled": "Дзеяньне прытрыманае",
        "actionthrottledtext": "У межах барацьбы са спамам Вы абмежаваныя ў надта частым выкананьні гэтага дзеяньня за кароткі прамежак часу, і Вы перавысілі гэтае абмежаваньне. Калі ласка, паспрабуйце яшчэ раз празь некалькі хвілінаў.",
        "protectedpagetext": "Гэтая старонка была абароненая для прадухіленьня зьменаў ці іншых дзеяньняў.",
-       "viewsourcetext": "Вы можаце праглядаць і капіяваць крынічны тэкст гэтай старонкі:",
-       "viewyourtext": "Вы можаце праглядзець і скапіяваць крынічны тэкст <strong>вашых рэдагаваньняў</strong> на гэтай старонцы:",
+       "viewsourcetext": "Вы можаце праглядаць і капіяваць крынічны тэкст гэтай старонкі.",
+       "viewyourtext": "Вы можаце праглядзець і скапіяваць крынічны тэкст <strong>вашых рэдагаваньняў</strong> на гэтай старонцы.",
        "protectedinterface": "Гэтая старонка ўтрымлівае інтэрфэйснае паведамленьне праграмнага забесьпячэньня, і яе зьмена забаронена. Каб дадаць ці зьмяніць пераклад ва ўсіх праектах, зьвярніцеся на [//translatewiki.net/ translatewiki.net], праект для перакладу MediaWiki.",
        "editinginterface": "<strong>Увага:</strong> Вы рэдагуеце старонку, якая ўтрымлівае тэкст інтэрфэйсу праграмнага забесьпячэньня.\nЯе зьмена паўплывае на вонкавы выгляд інтэрфэйсу іншых удзельнікаў у гэтай вікі.",
        "translateinterface": "Каб дадаць ці зьмяніць пераклады для ўсіх вікі, калі ласка, карыстайцеся [//translatewiki.net/ translatewiki.net], лякалізацыйным праектам MediaWiki.",
        "search-category": "(катэгорыя $1)",
        "search-file-match": "(супадае зь зьмесьцівам файла)",
        "search-suggest": "Магчыма, вы мелі на ўвазе: $1",
+       "search-rewritten": "Паказаныя вынікі для $1. Замест гэтага шукаць $2.",
        "search-interwiki-caption": "Сумежныя праекты",
        "search-interwiki-default": "Вынікі з $1:",
        "search-interwiki-more": "(яшчэ)",
        "right-autoconfirmed": "ня дзейнічаюць абмежаваньні хуткасьці па IP",
        "right-bot": "лічыцца аўтаматычным працэсам",
        "right-nominornewtalk": "не паведамляць удзельнікам пра новыя паведамленьні на іх старонках гутарак, калі зробленыя там праўкі былі дробнымі",
-       "right-apihighlimits": "Ð\9cенш абмежаваньняў на выкананьне API-запытаў",
+       "right-apihighlimits": "менш абмежаваньняў на выкананьне API-запытаў",
        "right-writeapi": "выкарыстаньне API для запісаў",
        "right-delete": "выдаленьне старонак",
        "right-bigdelete": "Выдаленьне старонак зь вялікімі гісторыямі",
        "recentchanges-noresult": "Зьмены, што пасуюць дадзенаму пэрыяду і крытэрам, ня знойдзеныя.",
        "recentchanges-feed-description": "Сачыце за апошнімі зьменамі ў {{GRAMMAR:месны|{{SITENAME}}}} праз гэтую стужку.",
        "recentchanges-label-newpage": "Гэтым рэдагаваньнем была створаная новая старонка",
-       "recentchanges-label-minor": "Гэтае рэдагаваньне — дробнае",
+       "recentchanges-label-minor": "Гэта дробнае рэдагаваньне",
        "recentchanges-label-bot": "Гэтае рэдагаваньне зробленае робатам",
        "recentchanges-label-unpatrolled": "Гэтае рэдагаваньне яшчэ не было адпатруляванае",
        "recentchanges-label-plusminus": "Памер старонкі зьмяніўся на такую колькасьць байтаў",
        "rcshowhidemine": "$1 мае праўкі",
        "rcshowhidemine-show": "Паказаць",
        "rcshowhidemine-hide": "Схаваць",
+       "rcshowhidecategorization": "$1 катэгарызацыю старонак",
+       "rcshowhidecategorization-show": "Паказаць",
        "rclinks": "Паказаць апошнія $1 зьменаў за мінулыя $2 дзён<br />$3",
        "diff": "розьн",
        "hist": "гіст",
        "newpageletter": "Н",
        "boteditletter": "р",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|назіральнік|назіральнікі|назіральнікаў}}]",
-       "rc_categories": "Абмежаваць катэгорыямі (разьдзяляйце знакам «|»)",
-       "rc_categories_any": "УÑ\81е",
+       "rc_categories": "Абмежаваць катэгорыямі (разьдзяляйце знакам «|»):",
+       "rc_categories_any": "Ð\9bÑ\8eбаÑ\8f Ð· Ð°Ð±Ñ\80анÑ\8bÑ\85",
        "rc-change-size-new": "$1 {{PLURAL:$1|байт|байты|байтаў}} пасьля зьмены",
        "newsectionsummary": "/* $1 */ новая сэкцыя",
        "rc-enhanced-expand": "Паказаць падрабязнасьці",
        "upload-too-many-redirects": "URL-адрас утрымлівае зашмат перанакіраваньняў",
        "upload-http-error": "Узьнікла памылка HTTP: $1",
        "upload-copy-upload-invalid-domain": "Капіяваньне загрузак не дазволенае ў гэтым дамэне.",
+       "upload-dialog-title": "Загрузка файла",
+       "upload-dialog-error": "Адбылася памылка",
        "backend-fail-stream": "Немагчыма накіраваць файл $1.",
        "backend-fail-backup": "Немагчыма зрабіць рэзэрвовую копію файла $1.",
        "backend-fail-notexists": "Файл $1 не існуе.",
        "watchlistanontext": "Калі ласка, увайдзіце ў сыстэму, каб праглядаць альбо рэдагаваць сьпіс назіраньня.",
        "watchnologin": "Вы не ўвайшлі ў сыстэму",
        "addwatch": "Дадаць ў сьпіс назіраньня",
-       "addedwatchtext": "Старонка «[[:$1]]» была дададзеная да Вашага [[Special:Watchlist|сьпісу назіраньня]].\nНаступныя зьмены ў гэтай старонцы і зьвязанай зь ёю старонцы абмеркаваньняў будуць бачныя там.",
+       "addedwatchtext": "Старонка «[[:$1]]» і яе старонка абмеркаваньня былі дададзеная да Вашага [[Special:Watchlist|сьпісу назіраньня]].",
        "addedwatchtext-short": "Старонка «$1» была дададзеная ў ваш сьпіс назіраньня.",
        "removewatch": "Выдаліць са сьпісу назіраньня",
-       "removedwatchtext": "Старонка «[[:$1]]» была выдаленая з [[Special:Watchlist|Вашага сьпісу назіраньня]].",
+       "removedwatchtext": "Старонка «[[:$1]]» і яе старонка абмеркаваньня былі выдаленыя з Вашага [[Special:Watchlist|сьпісу назіраньня]].",
        "removedwatchtext-short": "Старонка «$1» была выдаленая з вашага сьпісу назіраньня.",
        "watch": "Назіраць",
        "watchthispage": "Назіраць за гэтай старонкай",
        "changecontentmodel-success-title": "Мадэль зьместу была зьмененая",
        "changecontentmodel-success-text": "Тып зьместу [[:$1]] быў зьменены.",
        "changecontentmodel-cannot-convert": "Зьмест [[:$1]] ня можа быць ператвораны ў тып $2.",
-       "changecontentmodel-title-cantexist": "Немагчыма мець старонку ў $1.",
        "changecontentmodel-nodirectediting": "Мадэль зьместу $1 не падтрымлівае наўпроставае рэдагаваньне",
        "log-name-contentmodel": "Журнал зьменаў мадэляў зьместу",
        "log-description-contentmodel": "Падзеі, зьвязаныя з мадэлямі зьместу старонак",
        "undeletepagetext": "{{PLURAL:$1|1=Наступная старонка была выдаленая, але яна знаходзіцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.\nАрхіў пэрыядычна чысьціцца.",
        "undelete-fieldset-title": "Аднавіць вэрсіі",
        "undeleteextrahelp": "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.\nДля частковага аднаўленьня, пазначце тыя вэрсіі старонкі, якія трэба аднавіць і націсьніце '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "У архіве $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
+       "undeleterevisions": "{{PLURAL:$1|Выдаленая|Выдаленыя}} $1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
        "undeletehistory": "Калі Вы адновіце старонку, будуць адноўленыя ўсе яе вэрсіі разам з журналам падзеяў.\nКалі пасьля выдаленьня была створаная новая старонка з такой жа назвай, адноўленыя вэрсіі зьявяцца ў гісторыі перад новымі вэрсіямі.",
        "undeleterevdel": "Аднаўленьня не адбудзецца, калі ў яго выніку будзе выдаленая апошняя вэрсія старонкі ці файла.\nУ гэтым выпадку, Вам трэба зьняць адзнакі, ці паказаць апошнія выдаленыя вэрсіі.",
        "undeletehistorynoadmin": "Гэтая старонка была выдаленая.\nПрычына выдаленьня пададзена ніжэй, разам са зьвесткамі ўдзельніка, які рэдагаваў старонку перад выдаленьнем.\nТэкст выдаленай старонкі могуць глядзець толькі адміністратары.",
        "spam_reverting": "Адкат да апошняй вэрсіі без спасылак на $1",
        "spam_blanking": "Усе вэрсіі ўтрымліваюць спасылкі на $1, чыстка",
        "spam_deleting": "Усе вэрсіі ўтрымлівалі спасылкі на $1, выдаляем",
-       "simpleantispam-label": "Праверка анты-спаму.\n'''НЕ''' запаўняйце тут нічога!",
+       "simpleantispam-label": "Праверка анты-спаму.\n<strong>Не</strong> запаўняйце тут нічога!",
        "pageinfo-title": "Інфармацыя пра «$1»",
        "pageinfo-not-current": "Даруйце, мы ня можам падаць гэтыя зьвесткі для старых вэрсіяў.",
        "pageinfo-header-basic": "Асноўныя зьвесткі",
        "tags-deactivate-not-allowed": "Немагчыма дэактываваць метку «$1».",
        "tags-deactivate-submit": "Адключыць",
        "tags-apply-no-permission": "Вы ня маеце права прымяняць меткі да вашых рэдагаваньняў.",
+       "tags-apply-not-allowed-one": "Метка «$1» ня можа быць прызначаная ўручную.",
        "tags-edit-title": "Рэдагаваньне метак",
        "tags-edit-manage-link": "Кіраваньне меткамі",
        "tags-edit-revision-selected": "{{PLURAL:$1|1=Абраная вэрсія|Абраныя вэрсіі}} [[:$2]]:",
        "special-characters-title-endash": "кароткі працяжнік",
        "special-characters-title-emdash": "доўгі працяжнік",
        "special-characters-title-minus": "мінус",
+       "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "mw-widgets-titleinput-description-new-page": "старонка яшчэ не існуе"
 }
index f1c9dc3..61b60cb 100644 (file)
        "parser-template-loop-warning": "Цыклічнае ўключэнне шаблона: [[$1]]",
        "parser-template-recursion-depth-warning": "Вычарпаны ліміт глыбіні ўключэння шаблонаў ($1)",
        "language-converter-depth-warning": "Перавышана глыбіня моўнага канвертэра ($1)",
-       "node-count-exceeded-category": "СÑ\82аÑ\80онкÑ\96, Ñ\8fкÑ\96Ñ\8f Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83лÑ\96 ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c Ð²Ñ\83злоÑ\9e",
-       "node-count-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b Ð¿ÐµÑ\80авÑ\8bÑ\88ана Ð¼Ð°ÐºÑ\81Ñ\96малÑ\8cнаÑ\8f ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c Ð²Ñ\83злоÑ\9e.",
-       "node-count-exceeded-warning": "СÑ\82аÑ\80онка Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83ла ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c Ð²Ñ\83злоÑ\9e",
+       "node-count-exceeded-category": "СÑ\82аÑ\80онкÑ\96, Ñ\8fкÑ\96Ñ\8f Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83лÑ\96 ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c ÐºÑ\80опак",
+       "node-count-exceeded-category-desc": "Ð\9dа Ñ\81Ñ\82аÑ\80онÑ\86Ñ\8b Ð¿ÐµÑ\80авÑ\8bÑ\88ана Ð¼Ð°ÐºÑ\81Ñ\96малÑ\8cнаÑ\8f ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c ÐºÑ\80опак.",
+       "node-count-exceeded-warning": "СÑ\82аÑ\80онка Ð¿ÐµÑ\80аÑ\81Ñ\8fгнÑ\83ла ÐºÐ¾Ð»Ñ\8cкаÑ\81Ñ\86Ñ\8c ÐºÑ\80опак",
        "expansion-depth-exceeded-category": "Старонкі, якія перасягнулі глыбіню разгортвання",
        "expansion-depth-exceeded-category-desc": "На старонцы перасягнута максімальная глыбіня разгортвання.",
        "expansion-depth-exceeded-warning": "Старонка перасягнула глыбіню разгортвання",
        "limitreport-cputime-value": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
        "limitreport-walltime": "Выкарыстанне рэальнага часу",
        "limitreport-walltime-value": "$1 {{PLURAL:$1|секунда|секунды|секунд}}",
-       "limitreport-ppvisitednodes": "Ð\9aолÑ\8cкаÑ\81Ñ\86Ñ\8c Ð²Ñ\83злоÑ\9e, наведаных прэпрацэсарам",
-       "limitreport-ppgeneratednodes": "Ð\9aолÑ\8cкаÑ\81Ñ\86Ñ\8c Ð²Ñ\83злоÑ\9e, створаных прэпрацэсарам",
+       "limitreport-ppvisitednodes": "Ð\9aолÑ\8cкаÑ\81Ñ\86Ñ\8c ÐºÑ\80опак, наведаных прэпрацэсарам",
+       "limitreport-ppgeneratednodes": "Ð\9aолÑ\8cкаÑ\81Ñ\86Ñ\8c ÐºÑ\80опак, створаных прэпрацэсарам",
        "limitreport-postexpandincludesize": "Памер уключэнняў па разгортванні",
        "limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|байт|байты|байтаў}}",
        "limitreport-templateargumentsize": "Памер аргументаў шаблона",
index e931c0d..5f71422 100644 (file)
        "special-characters-group-khmer": "кхмерски",
        "special-characters-title-endash": "средно тире",
        "special-characters-title-emdash": "дълго тире",
-       "special-characters-title-minus": "знак минус"
+       "special-characters-title-minus": "знак минус",
+       "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ"
 }
index 6e2d5bd..cf12609 100644 (file)
        "no-null-revision": "پوچ ئین نخسه ئی جوڑ کورتینئ امکان  په  «$1» ئی تاکدیما موجود نه اینت",
        "badtitle": "خرابین ئنوان",
        "badtitletext": "شمی درخواستین ئنوان نا موتبر،خالی،یا میان زبانین یا میان ویکی ئین ئنوان و یا شه خرابین لینکی ات.\nممکن اینت که یک یا چینکه نویسگ داشته بیئت که نتوانن آوانا بی ئنوانی تا استفاده کنن.",
+       "title-invalid-empty": "تاکدیمئ عنوان که شما لۆٹیته ئیت خالی اینت یا فقط نامئ خالیگاه گوشته بوته.",
+       "title-invalid-utf8": "شمی موردي نظرین تاکدیمئ عنوان خرابین یونیکدین نویسگ داریت.",
+       "title-invalid-interwiki": "شمئ  لۆٹیته بوته ئین تاکدیم مانجین ویکی داریت که نتوانن شه آیی به عنوانانی تا پایده گ گێرن.",
+       "title-invalid-talk-namespace": "شمئ لۆٹیته بوته ئین عنوان په گپ ئی تاکدیما موجود نه اینت.",
+       "title-invalid-characters": "شمئ لۆٹیته بوته ئین تاکدیمئ عنوان «$1» ئی خرابین نویسگ داریت.",
+       "title-invalid-magic-tilde": "لۆٹیته بوته ئین تاکدیمئ عنوان بي اعتبارین جادوئین عبارتي داریت (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "شمئ لۆٹیته بوته ئین تاکدیمئ عنوان باز تچک اینت. نباید گیشتیر شه $1 {{PLURAL:$1|بایٹ|بایٹ}} یونیکدین نویسگ ئان بیت.",
+       "title-invalid-leading-colon": "شمئ لۆٹیته بوته ئین تاکدیم، به وتي اولسرا یک بي اعتبارین عنوانئ داریت.",
        "perfcached": "همراهی کنوکین دیتا شه نهانی ئین حافظهٔ ئا فراخوانی بوته و ممکن اینت کاملاً اپڈیٹ نه بوته. حداکثر {{PLURAL:$1|یک نتیجه| $1 نتیجه}} بي نهانی ئین حافظهٔ تا دسترس ئی وڈ اینت.",
        "perfcachedts": "همرای کنوکین دیتا شه نهانی ئین حافظه ئا فرخوانی بوته و آخرین وار  بئ  $1 ئی تا اپڈیٹ بوته. حداکثر {{PLURAL:$4|یک نتیجه|$4 نتیجه}} بئ نهانی ئین حافظه تا دسترس ئی وڈ اینت.",
        "querypage-no-updates": "ای تاکدیمی اپڈیٹ کورتین انون غیر فئال بوته.\nای تاکدیمی مئلومات ممکن اینت که نوک نه بوته انت.",
        "protectedinterface": "ای تاکدیم یک متنی ئا ارایه ئه کنت که ای ویکی ئی تا یک سافٹ ایرئ  په واسط بی کار زوروکانی مانجینا اینت و په دیمگیری ئا شه خرابکاری ئی  خاتیرا قُلپ بوته.\nپه اضافه کورتین یا تغیر داتین ترجمه په موچین ویکی ئان ، مهربانی بکنیت شه [//translatewiki.net/ translatewiki.net]، میڈیا ویکی ئی محلی کورتینی پروژه ئا ، استفاده بکنیت.",
        "editinginterface": "<strong>هشدار:</strong> تاکدیمی که ایڈیٹ ئه کنیت متنی ئا شامل ئه بیئت که بی ای کار زوروکئ واسط ئی سافت ایر تا به کار گیپته بوته.\nای تاکدیمی تغییر  منجر بئ کار زوروکئ واسط ئی  ظاهر ئین تغیر ای سافت ایر په دیگه کار زوروکان ئه بیئت.",
        "translateinterface": "په اضافه کورتین یا تغیر داتین ترجمه ئی په موچین ویکی ئان،مهربانی بکنیت شه [//translatewiki.net/ translatewiki.net]، مییڈیا ویکی  محلی کورتینی پروژه ئا، استفاده بکنیت.",
-       "cascadeprotected": "ای تاکدیم بئ ایڈیٹتانی مقابلا قُلپ بوته چونکه بی جهلگین قُلپ بوته ئین  {{PLURAL:$1|تاکدیم|تاکدیمانئ}} تا بئ {{PLURAL:$1|آوان|آوانئ}} تا «آپشاری» ئی گزینه انتخاب بوته:\n$2",
+       "cascadeprotected": "ای تاکدیم بئ ایڈیٹتانی مقابلا قُلپ بوته چونکه بی جهلگین قُلپ بوته ئین  {{PLURAL:$1|تاکدیم|تاکدیمانئ}} تا به {{PLURAL:$1|آوان|آوانئ}} تا «آپشارین» مینو انتخاب بوته:\n$2",
        "namespaceprotected": "شما '''$1''' ئی تاکدیمانئ فضای نامئ ایڈیٹ کورتین ئی اجازه ئا  نداریت.",
        "customcssprotected": "شما ای سی اس اس ئی تاکدیمئ ایڈیٹ ئی اجازه ئا نداریت، په خاتیریکه ایشی تا یک کار زوروکئ شخصی ئین تنظیمات هستنت.",
        "customjsprotected": "شما ای جاوااسکریپت ئی تاکدیمئ ایڈیٹ ئی اجازه ئا نداریت، په خاتیریکه ایشی تا یک کار زوروکئ شخصی ئین تنظیمات هستنت.",
        "noemail": "هیچ ایمیل ادرسئ په  «$1» کار زوروکا ثبت نه بوته.",
        "noemailcreate": "باید یک موتبرین ایمیل ادرسئ داخل بکنیت",
        "passwordsent": "نوکین چیهرگال بئ سبت بوته ئین ایمیل ادرس ئا په «$1» ئا دیم داته بوت.\nمهربانی بکنیت شه آیی گیپتین ئا پد لوگین به ییت.",
+       "blocked-mailpassword": "شمئ آی پي ادرس شه دستکاری کورتینا بلاک بوته، په ای خاطرا شه پاسوردا پایده گ زورته ئه نه کنیت شه سوءاستفاده ئی دیمگیري ئی خاطرا.",
        "mailerror": "خطا بی ایمیلی داتینی تا: $1",
        "emailauthenticated": "شمی ایمیلی ادرس بی $2 سائت $3  تا تصدیق ئه بیئت.",
        "emailnotauthenticated": "شمی ایمیلئ ادرس تا انون قبول نه بوته.\nایمیل په هیچ یک شه ویژه گی ئان دیم داته ئه نه بیئت.",
        "missingcommenttext": "مهربانی بکنیت جهلگا توضیح دهیت.",
        "summary-preview": "دیم دیست ئی خلاصه:",
        "subject-preview": "موضو ئی دیم دیست/ئنوان:",
+       "previewerrortext": "وختیکه شوما په وتي تغیراني نشان داتینا کوشش ئه کورتێت، یک خطاي مانجینا آت.",
        "blockedtitle": "کار زوروک بسته بوته",
+       "blockedtext": "<strong>شمئ کارزورکین حساب یا آی پي ادرس بسته بوته.</strong>\n\nای بسته بوتین شه $1 ئی نیمگاه بوته.\nای نفر وتي دلیلا، ایرنگ گوشته: <em>$2</em>\n\n* بلاک یا بستین ئی شروع: $8\n* پاچ بوتین یا بلاک ئی الاسي: $6\n* هدفین بلاک بوته ئین کارزوروک: $7\n\nشوما توانێت که گۆ $1 یا گۆ [[{{MediaWiki:Grouppage-sysop}}|یک دیگرێن مدیري]] تماس بگیرێت و بئ ائ باره ئا هبر دهیت.\nتوجه کنیت که شما نه توانتیت شه  «ایمیل په ای کارزوروکا» استفاده بکنیت مگه ايکه یک معتبریندایمیل ادرسئ به وتي [[Special:Preferences|کارزوروکین حسابئ]] تا ثبت کورته به ئیت و هم  باید ای قابلیتئ امکان شه شوما گیپته مه بيت.\nشمئ انونین آی پي ادرس $3 و شمئ بلاک بوتینئ شماره $5 اینت.\nمهرباني بکنیت موچین مالوماتانا به وتئ درخواست ئانی تا ذکر بکنیت.",
        "blockednoreason": "دلیلی مشخص نه بوته",
        "whitelistedittext": "په مقاله ئانی ایڈیٹ ئا باید $1.",
        "nosuchsectiontitle": "ایرنگی بخشئ ودئ نه بوت",
        "storedversion": "ذخیره بوته ئین نخسه",
        "editingold": "'''توجه: شما به ای تاکدیمێ کهنگین نخسه ئی جۆڑ کورتينێ حالا هستیت.'''\nاگه ایشیرا ذخیره‌بکنیت ، هر تغییری که پدا شه ای نخسه ئا بوته انت شه بێن ئه رونت.",
        "yourdiff": "تفاوت‌هان",
+       "editpage-cannot-use-custom-model": "ای تاکدیمئ محتوائین موڈل نتوانت بدل بیت.",
        "templatesused": "{{PLURAL:$1|تراشوان|تراشوانان}} استفاده بوته انت بی ای تاکدیمئ تا:",
        "templatesusedpreview": "ای دیم دیست ئی تا استفاده بوته ئین {{PLURAL:$1|تراشوان|تراشوانان}} :",
        "templatesusedsection": "ای بخش ئی تا استفاده بوته ئین {{PLURAL:$1|تراشوان|تراشوانان}} :",
        "history-feed-description": "ای تاکدیمی ایڈیٹ ئی تاریخچه بئ ویکی ئی تا",
        "history-feed-item-nocomment": "$1 بی $2",
        "history-feed-empty": "لۆٹیته بوته ئین دیم موجود نه اینت.\nممکن اینت که شه ویکی ئی تا پاک بوته بیئت یا که نامی تغیر بوته.\nنوکین تاکدیمانا په مربوتین موریدان بئ ای ویکی ئی تا [[Special:Search|بگردیت]].",
+       "history-edit-tags": "اي نخسه ئانی ٹاپه ئانی دستکاری انتخاب بوته انت",
        "rev-deleted-comment": "(ایڈیٹ ئی خلاصه پاک بوت)",
        "rev-deleted-user": "(کار زوروکین نام پاک بوت)",
        "rev-deleted-event": "(سیاه چال ئی جزئیات پاک بوته انت)",
        "rev-deleted-text-permission": "ای ایڈیٹ شه ای تاکدیما '''پاک بوته'''.\nممکن اینت آیی باره ها مئلومات بئ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} پاک بوته ئین سیاه چال] ئی تا موجود بیئت.",
        "rev-suppressed-text-permission": "ای ایڈیٹ شه ای تاکدیما '''پاک بوته'''.\nشما توانیت آیرا بگیندیت؛ ممکن اینت آی باره ئا مئلومات بئ [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} پاک بوته ئین سیاه چال] ئی تا موجود بیئت.",
        "rev-deleted-text-unhide": "ای دستکاری شه ای دیما '''پاک بوته'''.\nممکن اینت که آیی مربوتین مه لوماتانا بئ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} پاک بوته ئانی سیاهه] ئی تا موجود به ینت.\nشما اگه لوتیته به ییت توانیت که [ای نخسه ئی $1 ئا بگیندیت ].",
+       "rev-suppressed-text-unhide": "ای دستکاری شه ای دیما '''اوشتارینته بوته'''.\nممکن اینت که آیی مربوتین ما لوماتانا به [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} اوشتارینته بوته ئانی لیست] ئی تا موجود به ینت.\nشما اگه لوتیته به ییت توانیت که [ای نخسه ئی $1 ئا بگیندیت ].",
        "rev-deleted-text-view": "ای ایڈیٹ شه ای تاکدیما '''پاک بوته'''.\nشما توانیت آیرا بگیندیت؛ ممکن اینت آیی مربوتین مئلوماتانا بئ [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} پاک بوته ئین سیاه چال ] تا ودئ بکنیت.",
+       "rev-suppressed-text-view": "ای دستکاری شه ای دیما '''خالی بوته بوته'''.\nشما توانیت آیرا بگیندیت؛ ممکن اینت که آی مربوتین مالوماتانا به [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} خالی بوته ئین] ئانی لیستئ تا موجود به ینت.",
        "rev-delundel": "نمایش/نهفتن",
        "rev-showdeleted": "نشان داتین",
        "revisiondelete": "پاک کورتین/نخسه ئی پدا جۆڑ کورتین",
        "editcomment": "ایڈیٹ ئی خلاصه ایش ات: «''$1''».",
        "rollback-success": "$1 ئی ایڈیٹ بیئرگردینته بوتنت؛\nتاکدیم بئ اخیرین ایڈیٹ شه $2 ئا بیئرگردینته بوت.",
        "sessionfailure-title": "کار زوروکئ نشست ئی خطا",
+       "changecontentmodel": "یک تاکدیمئ محتوائین رقمی دستکاری کورتین",
+       "changecontentmodel-legend": "محتوائین رقمئ گردینتین",
+       "changecontentmodel-title-label": "تاکدیمئ عنوان",
+       "changecontentmodel-model-label": "نۆکین محتوائي رقم",
+       "changecontentmodel-reason-label": "دلیل:",
+       "changecontentmodel-success-title": "محتوائین رقم تغیر کورت",
+       "changecontentmodel-success-text": "[[:$1]] ئی محتوائین رقم تغیر کورت",
+       "logentry-contentmodel-change-revertlink": "بیرگردینتین",
+       "logentry-contentmodel-change-revert": "بیرگردینتین",
        "protectlogpage": "سیاهگئ قُلپ",
        "protectedarticle": "«[[$1]]» ئا قُلپ کورت",
        "modifiedarticleprotection": "«[[$1]]» قُلپ ئی وزيیتا گردینت",
        "undelete-error-long": "بی پدا  جۆڑ کورتین ئی وختا خطا رخ دات:\n\n$1",
        "undelete-show-file-confirm": "آیا شما مطمئن وێت که لوٹیت یک پاک بوته ئین نخسه شه فایل \"<nowiki>$1</nowiki>\" مورخ $2 سائت $3 ئا بگیندیت؟",
        "undelete-show-file-submit": "هان",
-       "namespace": "نامی فضا:",
+       "namespace": "نامئ اؤرکجاه:",
        "invert": "انتخاب سرچپی بیئت",
        "tooltip-invert": "ای جئبه ئا ئلامت بجنیت تا که پزای نام تا ئین انتخاب بوته ئین تاکدیمانی تغیرات (و دیگرین ئلامت جته بوته ئین پزای نام ئان) چیهر به ینت",
        "namespace_association": "Associated namespace",
index 0bb94da..3a8cf97 100644 (file)
@@ -32,6 +32,7 @@
        "tog-hideminor": "অনুল্লেখ্য সম্পাদনাগুলো সাম্প্রতিক পরিবর্তনসমূহে আড়াল করো",
        "tog-hidepatrolled": "পরীক্ষিত সম্পাদনা গুলো সাম্প্রতিক পরিবর্তনসমূহে আড়াল করো",
        "tog-newpageshidepatrolled": "পরীক্ষিত পাতা গুলো নতুন পাতার তালিকায় আড়াল করো",
+       "tog-hidecategorization": "পাতার শ্রেণীবদ্ধকরণ লুকান",
        "tog-extendwatchlist": "শুধু সাম্প্রতিক পরিবর্তনই নয়, সকল পরিবর্তন দেখতে নজর তালিকা সম্প্রসারণ করুন",
        "tog-usenewrc": "সাম্প্রতিক পরিবর্তনসমূহ এবং নজরতালিকা পাতায় পরিবর্তনগুলো একত্রে প্রদর্শন",
        "tog-numberheadings": "শিরোনামগুলোকে স্বয়ংক্রিয়ভাবে ক্রমিক নম্বর দাও",
@@ -61,6 +62,7 @@
        "tog-watchlisthideliu": "নজরতালিকাতে অ্যাকাউন্টে লগ-ইন করা ব্যবহারকারীদের সম্পাদনা আড়ালে রাখা হোক",
        "tog-watchlisthideanons": "নজরতালিকাতে বেনামী ব্যবহারকারীদের সম্পাদনা আড়ালে রাখা হোক",
        "tog-watchlisthidepatrolled": "পরীক্ষিত সম্পাদনা গুলো নজরতালিকায় আড়াল করো",
+       "tog-watchlisthidecategorization": "পাতার শ্রেণীবদ্ধকরণ লুকান",
        "tog-ccmeonemails": "অন্য ব্যবহারকারীর কাছে আমার পাঠানো ইমেইলের একটি অনুলিপি আমাকে পাঠানো হোক",
        "tog-diffonly": "পার্থক্যের নিচে পাতার বিষয়বস্তু না দেখানো হোক",
        "tog-showhiddencats": "লুকায়িত বিষয়শ্রেণীসমূহ দেখাও",
        "actionthrottled": "কাজের গতি ধীরকরণ",
        "actionthrottledtext": "স্প্যাম-রোধী সমাধান হিসেবে এই কাজটি খুব কম সময়ে অনেক বেশিবার সম্পাদনা করার সীমা বেঁধে দেওয়া হয়েছে। আপনি সেই সীমা অতিক্রম করেছেন। অনুগ্রহ করে কয়েক মিনিট পরে আবার চেষ্টা করুন।",
        "protectedpagetext": "সম্পাদনা অথবা স্থানান্তর এড়াতে এ পাতাটির ব্যবহার নিয়ন্ত্রণ করা হয়েছে।",
-       "viewsourcetext": "এ পাতাটি আপনি দেখতে এবং উৎসের অনুলিপি নিতে পারবেন:",
-       "viewyourtext": "আপনি এই পাতায় <strong>আপনার সম্পাদনা</strong>দেখতে এবং অনুলিপি করতে পারেন:",
+       "viewsourcetext": "এ পাতাটি আপনি দেখতে এবং উৎসের অনুলিপি নিতে পারবেন",
+       "viewyourtext": "আপনি এই পাতায় <strong>আপনার সম্পাদনা</strong>দেখতে এবং অনুলিপি করতে পারেন",
        "protectedinterface": "এই পাতার বিষয়বস্তু এই উইকি সফটওয়্যারের একটি ইন্টারফেস বার্তা প্রদান করে, তাই এটিকে সুরক্ষিত করে রাখা হয়েছে।\nসকল উইকির অনুবাদে কোনো ধরনের সংযোজন বা পরিবর্তন করতে, অনুগ্রহ করে মিডিয়াউইকি স্থানীয়করন প্রকল্প [//translatewiki.net/ translatewiki.net] ব্যবহার করুন।",
        "editinginterface": "<strong>সতর্কীকরণ:</strong> আপনি এমন একটি পাতা সম্পাদনা করছেন যা সফটওয়্যারের জন্য ইন্টারফেস টেক্সট প্রদান করে।\nএই পাতাতে সংঘটিত পরিবর্তন এই উইকির ব্যবহারকারীদের ইন্টারফেসে প্রভাব ফেলবে, যা অন্য ব্যবহারকারীরা দেখতে পাবেন।",
        "translateinterface": "সকল উইকির জন্য অনুবাদ যোগ বা পরিবর্তন করতে, দয়া করে [//translatewiki.net/ translatewiki.net], মিডিয়াউইকি স্থানীয়করণ প্রকল্প ব্যবহার করুন।",
        "search-category": "(বিষয়শ্রেণী $1)",
        "search-file-match": "(নথির বিষয়বস্তু মিলে যায়)",
        "search-suggest": "আপনি সম্ভবত বুঝাতে চাইছেন: $1",
+       "search-rewritten": "$1-এর জন্য ফলাফল দেখানো হচ্ছে। এর পরিবর্তে $2-এর জন্য অনুসন্ধান করুন।",
        "search-interwiki-caption": "সহপ্রকল্পসমূহ",
        "search-interwiki-default": "$1 থেকে ফলাফলসমূহ:",
        "search-interwiki-more": "(আরও)",
        "rcshowhidemine": "আমার সম্পাদনাগুলো $1",
        "rcshowhidemine-show": "দেখাও",
        "rcshowhidemine-hide": "আড়াল করো",
+       "rcshowhidecategorization": "পাতা শ্রেণীবদ্ধকরণ $1",
+       "rcshowhidecategorization-show": "দেখাও",
+       "rcshowhidecategorization-hide": "আড়াল করো",
        "rclinks": "'''প্রদর্শনের ধরন'''<br />\n* বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও\n* $3",
        "diff": "পরিবর্তন",
        "hist": "ইতিহাস",
        "newpageletter": "ন",
        "boteditletter": "ব",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|জন ব্যবহারকারী|জন ব্যবহারকারী}} এই পাতার উপর নজর রাখছেন]",
-       "rc_categories": "à¦\8fà¦\87 à¦¬à¦¿à¦·à¦¯à¦¼à¦¶à§\8dরà§\87ণà§\80à¦\97à§\81লিতà§\87 à¦¸à§\80মাবদà§\8dধ à¦\95রা à¦¹à§\8bà¦\95 (\"|\" à¦¦à¦¿à¦¯à¦¼à§\87 à¦\86লাদা à¦\95রà§\87 à¦²à¦¿à¦\96à§\81ন)",
-       "rc_categories_any": "যà§\87à¦\95à§\8bনà§\8b",
+       "rc_categories": "বিষয়শà§\8dরà§\87ণà§\80à¦\97à§\81লিতà§\87 à¦¸à§\80মা (\"|\" à¦¦à¦¿à¦¯à¦¼à§\87 à¦\86লাদা à¦\95রà§\81ন):",
+       "rc_categories_any": "à¦\9aয়নà§\87র à¦\9cনà§\8dয à¦¯à§\87à¦\95à§\8bনà§\8b à¦\95িà¦\9bà§\81",
        "rc-change-size-new": "পরিবর্তনের পর $1 {{PLURAL:$1|বাইট}}",
        "newsectionsummary": "/* $1 */ নতুন অনুচ্ছেদ",
        "rc-enhanced-expand": "বিস্তারিত দেখাও",
        "recentchangeslinked-summary": "একটি নির্দিষ্ট পাতা (অথবা নির্দিষ্ট বিষয়শ্রেণীতে) থেকে সংযুক্ত এ পাতার সাম্প্রতিক পরিবর্তনের তালিকা দেওয়া হয়েছে। আপনার [[Special:Watchlist|আপনার নজরতালিকায়]] রাখা পাতাগুলি '''গাঢ়''' করে দেখানো হয়েছে।",
        "recentchangeslinked-page": "পাতার নাম:",
        "recentchangeslinked-to": "প্রদত্ত পাতায় সংযুক্ত আছে এমন পাতাগুলোর পরিবর্তন দেখাও",
+       "recentchanges-page-added-to-category": "বিষয়শ্রেণীতে [[:$1]] যোগ করা হয়েছে",
+       "recentchanges-page-added-to-category-bundled": "বিষয়শ্রেণীতে [[:$1]] এবং {{PLURAL:$2|একটি পাতা|$2টি পাতা}} যোগ করা হয়েছে",
+       "recentchanges-page-removed-from-category": "বিষয়শ্রেণী থেকে [[:$1]] সরানো হয়েছে",
+       "recentchanges-page-removed-from-category-bundled": "বিষয়শ্রেণী থেকে [[:$1]] এবং {{PLURAL:$2|একটি পাতা|$2টি পাতা}} সরানো হয়েছে",
        "upload": "আপলোড",
        "uploadbtn": "ফাইল আপলোড করুন",
        "reuploaddesc": "আপলোড বাতিল করো এবং আপলোড ফর্মে ফেরত যাও।",
        "upload-too-many-redirects": "এই ইউআরএলটিতে অনেক বেশি পুনর্নির্দেশনা রয়েছে",
        "upload-http-error": "একটি এইচটিটিপি ত্রুটি দেখা দিয়েছে: $1",
        "upload-copy-upload-invalid-domain": "এই ডোমেইন থেকে আপলোড সম্ভব নয়।",
+       "upload-dialog-title": "ফাইল আপলোড করুন",
+       "upload-dialog-error": "একটি ত্রুটি দেখা দিয়েছে",
+       "upload-dialog-warning": "একটি সতর্কবার্তা দেখা দিয়েছে",
+       "upload-dialog-button-cancel": "বাতিল",
+       "upload-dialog-button-done": "সম্পন্ন",
+       "upload-dialog-button-save": "সংরক্ষণ",
+       "upload-dialog-button-upload": "আপলোড",
+       "upload-dialog-label-select-file": "ফাইল নির্বাচন করুন",
+       "upload-dialog-label-infoform-title": "বিস্তারিত",
+       "upload-dialog-label-infoform-name": "নাম",
+       "upload-dialog-label-infoform-description": "বিবরণ",
+       "upload-dialog-label-usage-title": "ব্যবহার",
+       "upload-dialog-label-usage-filename": "ফাইলের নাম",
        "backend-fail-stream": "\"$1\" ফাইলের স্ট্রিম দেখানো যাচ্ছে না।",
        "backend-fail-backup": "\"$1\" ফাইলের ব্যাকআপ তৈরী সম্ভব নয়।",
        "backend-fail-notexists": "\"$1\" নামের কোনো ফাইল নেই।",
        "watchlistanontext": "আপনার নজরতালিকার আইটেমগুলি দেখতে বা সম্পাদনা করতে অনুগ্রহ করে প্রবেশ করুন।",
        "watchnologin": "আপনি এখনও লগ-ইন করেননি।",
        "addwatch": "নজরতালিকায় যোগ করো",
-       "addedwatchtext": "\"[[:$1]]\" à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\86পনার [[Special:Watchlist|নà¦\9cরতালিà¦\95াতà§\87]] à¦¯à§\8bà¦\97 à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bà§\87।\nভবিষà§\8dযতà§\87 à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾ à¦\93 à¦\8fà¦\87 à¦ªà¦¾à¦¤à¦¾à¦° à¦¸à¦¾à¦¥à§\87 à¦¸à¦®à§\8dপরà§\8dà¦\95িত à¦\86লà§\8bà¦\9aনা à¦ªà¦¾à¦¤à¦¾à¦¯à¦¼ à¦¸à¦\82à¦\98à¦\9fিত à¦¯à¦¾à¦¬à¦¤à§\80য় à¦ªà¦°à¦¿à¦¬à¦°à§\8dতন à¦\8fà¦\96ানà§\87 à¦¤à¦¾à¦²à¦¿à¦\95াভà§\81à¦\95à§\8dত à¦¹à¦¬ে।",
+       "addedwatchtext": "\"[[:$1]]\" à¦\93 à¦\8fর à¦\86লà§\8bà¦\9aনা à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\86পনার [[Special:Watchlist|নà¦\9cরতালিà¦\95াতà§\87]] à¦¯à§\8bà¦\97 à¦\95রা à¦¹à¦¯à¦¼à§\87à¦\9bে।",
        "addedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকায় যোগ করা হয়েছে।",
        "removewatch": "নজরতালিকা থেকে অপসারণ",
-       "removedwatchtext": "\"[[:$1]]\" à¦ªà¦¾à¦¤à¦¾à¦\9fি [[Special:Watchlist|নà¦\9cর à¦¤à¦¾à¦²à¦¿à¦\95া]] à¦¥à§\87à¦\95à§\87 à¦\85পসারিত হয়েছে।",
+       "removedwatchtext": "\"[[:$1]]\" à¦\93 à¦\8fর à¦\86লà§\8bà¦\9aনা à¦ªà¦¾à¦¤à¦¾à¦\9fি à¦\86পনার [[Special:Watchlist|নà¦\9cরতালিà¦\95া]] à¦¥à§\87à¦\95à§\87 à¦¸à¦°à¦¾à¦¨à§\8b হয়েছে।",
        "removedwatchtext-short": "\"$1\" পাতাটি আপনার নজরতালিকা থেকে সরিয়ে নেয়া হয়েছে।",
        "watch": "নজর রাখুন",
        "watchthispage": "নজরে রাখুন",
        "undeletepagetext": "নিচের {{PLURAL:$1|পাতা মুছে ফেলা হয়েছে কিন্তু|$1 পাতাগুলি মুছে ফেলা হয়েছে কিন্তু}} এগুলি এখনও আর্কাইভে আছে ও পুনরুদ্ধার করা সম্ভব। আর্কাইভ পর্যায়ক্রমিকভাবে পরিস্কার করা হতে পারে।",
        "undelete-fieldset-title": "সংশোধন পুনরুদ্ধার",
        "undeleteextrahelp": "সম্পূর্ণ পাতাটি পুনরুদ্ধার করার জন্য সবগুলি টিকবাক্স অনির্বাচিত করুন এবং '''''{{int:undeletebtn}}''''' বোতামে ক্লিক করুন।\nনির্বাচিত পুনরুদ্ধারের জন্য যেসব সংশোধন পুনরুদ্ধার করতে চান, তার পাশের বাক্সে টিক দিন এবং '''''{{int:undeletebtn}}''''' বোতামে ক্লিক করুন।",
-       "undeleterevisions": "$1 {{PLURAL:$1|টি সংশোধন|টি সংশোধন}} আর্কাইভে আছে",
+       "undeleterevisions": "$1{{PLURAL:$1|টি সংশোধন}} অপসারিত",
        "undeletehistory": "আপনি যদি পাতাটি পুনরুদ্ধার করেন, তবে সবগুলি সংশোধন ইতিহাসে ফিরিয়ে আনা হবে।\nযদি মুছে ফেলার পর একই নামে আরেকটি পাতা সৃষ্টি করা হয়ে থাকে, তবে পুনরুদ্ধারকৃত সংশোধনগুলি পূর্বের ইতিহাসে স্থান পাবে।",
        "undeleterevdel": "শীর্ষে অবস্থিত সংশোধনটি যদি আংশিক মুছে যায়, তবে মুছে ফেলা বাতিল করা যাবে না।\nএ ধরনের ক্ষেত্রে আপনাকে অবশ্যই নতুনতম মুছে ফেলা সংশোধনগুলি অনির্বাচিত করতে হবে।",
        "undeletehistorynoadmin": "এই পাতাটি মুছে ফেলা হয়েছে। মুছে ফেলার কারণ নিচের সারাংশে দেখানো হল। সেই সাথে মুছে ফেলার আগে যেসমস্ত ব্যবহারকারী পাতাটি সম্পাদনা করেছেন, তাদের সম্পর্কেও বিস্তারিত দেখানো হল। এই মুছে ফেলা সংশোধনগুলির বিষয়বস্তু  কেবল প্রশাসকদের কাছে লভ্য।",
        "spam_reverting": "$1-এর প্রতি কোন সংযোগ নেই, এমন সর্বশেষ সংস্করণে ফেরত নেওয়া হচ্ছে।",
        "spam_blanking": "$1-এর প্রতি সংযোগ অন্তর্ভুক্ত আছে এমন সমস্ত সংশোধন খালি করা হচ্ছে",
        "spam_deleting": "$1-এর প্রতি সংযোগ অন্তর্ভুক্ত আছে এমন সমস্ত সংশোধন অপসারণ করা হচ্ছে",
-       "simpleantispam-label": "এন্টি স্প্যাম যাচাই।\nএটা পূরণ করবেন '''না'''!",
+       "simpleantispam-label": "এন্টি-স্প্যাম যাচাই।\nএটা পূরণ করবেন <strong>না</strong>!",
        "pageinfo-title": "\"$1\" এর তথ্য",
        "pageinfo-not-current": "দুঃখিত, পুরাতন সংস্করণের জন্য এই তথ্য প্রদর্শন সম্ভব নয়।",
        "pageinfo-header-basic": "সাধারণ তথ্য",
index ab02ac4..5ec7a30 100644 (file)
@@ -66,7 +66,7 @@
        "tog-prefershttps": "Uvijek koristi sigurnu konekciju kada sam prijavljen.",
        "underline-always": "Uvijek",
        "underline-never": "Nikad",
-       "underline-default": "Po standardu izgleda ili preglednika",
+       "underline-default": "Prema predodređenim postavkama teme ili preglednika",
        "editfont-style": "Stil fonta u okviru za uređivanje:",
        "editfont-default": "Po postavkama preglednika",
        "editfont-monospace": "Slova sa jednostrukim razmakom",
        "cancel": "Odustani",
        "moredotdotdot": "Više...",
        "morenotlisted": "Ovaj spisak nije potpun.",
-       "mypage": "Korisnička stranica",
+       "mypage": "Stranica",
        "mytalk": "Razgovor",
        "anontalk": "Razgovor za ovu IP adresu",
        "navigation": "Navigacija",
        "and": "&#32;i",
        "qbfind": "Pronađite",
-       "qbbrowse": "Prelistajte",
+       "qbbrowse": "Potraži",
        "qbedit": "Uredi",
        "qbpageoptions": "Opcije stranice",
        "qbmyoptions": "Moje opcije",
        "variants": "Varijante",
        "navigation-heading": "Navigacija",
        "errorpagetitle": "Greška",
-       "returnto": "Povratak na $1.",
+       "returnto": "Nazad na $1.",
        "tagline": "Izvor: {{SITENAME}}",
        "help": "Pomoć",
        "search": "Pretraga",
        "updatedmarker": "promjene od moje posljednje posjete",
        "printableversion": "Za štampanje",
        "permalink": "Trajni link",
-       "print": "Štampa",
+       "print": "Štampaj",
        "view": "Pogled",
        "view-foreign": "Vidi na $1",
        "edit": "Uredi",
        "undeletethispage": "Povrati ovu stranicu",
        "undelete_short": "Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}",
        "viewdeleted_short": "Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}",
-       "protect": "Zaštitite",
+       "protect": "Zaštiti",
        "protect_change": "promijeni",
        "protectthispage": "Zaštitite ovu stranicu",
        "unprotect": "Promijeni zaštitu",
-       "unprotectthispage": "Promijeni zaštitu za ovu stranicu",
+       "unprotectthispage": "Promijeni zaštitu ove stranice",
        "newpage": "Nova stranica",
        "talkpage": "Razgovor o stranici",
-       "talkpagelinktext": "Razgovor",
-       "specialpage": "Posebna Stranica",
+       "talkpagelinktext": "razgovor",
+       "specialpage": "Posebna stranica",
        "personaltools": "Lični alati",
        "articlepage": "Pogledaj članak",
        "talk": "Razgovor",
        "templatepage": "Pogledajte stranicu za šablone",
        "viewhelppage": "Pogledajte stranicu za pomoć",
        "categorypage": "Pogledaj stranicu kategorije",
-       "viewtalkpage": "Pogledaj raspravu",
-       "otherlanguages": "Na drugim jezicima",
+       "viewtalkpage": "Pogledaj razgovor",
+       "otherlanguages": "Drugi jezici",
        "redirectedfrom": "(Preusmjereno sa $1)",
-       "redirectpagesub": "Preusmjeri stranicu",
+       "redirectpagesub": "Preusmjerenje",
        "redirectto": "Preusmjerenje na:",
        "lastmodifiedat": "Ova stranica je posljednji put izmijenjena $2, $1",
        "viewcount": "Ovoj stranici je pristupljeno {{PLURAL:$1|$1 put|$1 puta}}.",
        "aboutpage": "Project:O_projektu_{{SITENAME}}",
        "copyright": "Sadržaj je dostupan pod licencom $1 osim ako je navedeno drugačije.",
        "copyrightpage": "{{ns:project}}:Autorska_prava",
-       "currentevents": "Trenutni događaji",
+       "currentevents": "Novosti",
        "currentevents-url": "Project:Novosti",
        "disclaimers": "Odricanje odgovornosti",
        "disclaimerpage": "Project:Uslovi korištenja, pravne napomene i odricanje odgovornosti",
        "mainpage": "Početna strana",
        "mainpage-description": "Početna strana",
        "policy-url": "Project:Pravila",
-       "portal": "Portal zajednice",
-       "portal-url": "Project:Portal zajednice",
+       "portal": "Vrata zajednice",
+       "portal-url": "Project:Vrata zajednice",
        "privacy": "Politika privatnosti",
        "privacypage": "Project:Pravila o anonimnosti",
        "badaccess": "Greška pri odobrenju",
        "versionrequired": "Potrebna je verzija $1 MediaWikija",
        "versionrequiredtext": "Potrebna je verzija $1 MediaWikija da bi se koristila ova strana. Pogledaj [[Special:Version|verziju]].",
        "ok": "U redu",
-       "retrievedfrom": "Dobavljeno iz \"$1\"",
+       "retrievedfrom": "Preuzeto iz \"$1\"",
        "youhavenewmessages": "Imate $1 ($2).",
        "youhavenewmessagesfromusers": "Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).",
        "youhavenewmessagesmanyusers": "Imate $1 od mnogo korisnika ($2).",
        "viewsourcelink": "pogledaj izvor",
        "editsectionhint": "Uredi sekciju: $1",
        "toc": "Sadržaj",
-       "showtoc": "pokaži",
+       "showtoc": "prikaži",
        "hidetoc": "sakrij",
        "collapsible-collapse": "sklopi",
        "collapsible-expand": "Proširi",
        "confirmable-confirm": "Da li {{GENDER:$1|ste}} sigurni?",
        "confirmable-yes": "Da",
        "confirmable-no": "Ne",
-       "thisisdeleted": "Pogledaj ili vrati $1?",
+       "thisisdeleted": "Pogledati ili vratiti $1?",
        "viewdeleted": "Pogledaj $1?",
        "restorelink": "{{PLURAL:$1|$1 izbrisana izmjena|$1 izbrisanih izmjena}}",
        "feedlinks": "Fid:",
        "red-link-title": "$1 (stranica ne postoji)",
        "sort-descending": "Poredaj opadajuće",
        "sort-ascending": "Poredaj rastuće",
-       "nstab-main": "Članak",
+       "nstab-main": "Stranica",
        "nstab-user": "Korisnička stranica",
        "nstab-media": "Mediji",
        "nstab-special": "Posebna stranica",
        "nstab-template": "Šablon",
        "nstab-help": "Pomoć",
        "nstab-category": "Kategorija",
-       "nosuchaction": "Nema takve akcije",
+       "nosuchaction": "Ova radnja ne postoji",
        "nosuchactiontext": "Akcija navedena u URL-u nije valjana.\nMožda ste pogriješili pri unosu URL-a ili ste slijedili pokvaren link.\nMoguće je i da je ovo greška u {{SITENAME}} softveru.",
        "nosuchspecialpage": "Nema takve posebne stranice",
-       "nospecialpagetext": "<strong>Tražili ste nevaljanu posebnu stranicu.</strong>\n\nSpisak valjanih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Tražili ste neispravnu posebnu stranicu.</strong>\n\nSpisak ispravnih posebnih stranica se može naći na [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Greška",
-       "databaseerror": "Greška u bazi",
+       "databaseerror": "Greška u bazi podataka",
        "databaseerror-text": "Došlo je do greške u upitu baze podataka. \nMožda je u pitanju softverska greška.",
        "databaseerror-textcl": "Došlo je do greške u upitu baze podataka.",
        "databaseerror-query": "Upit: $1",
        "perfcached": "Sljedeći podaci su keširani i možda neće biti u potpunosti ažurirani. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata}}.",
        "perfcachedts": "Sljedeći podaci nalaze se u memoriji i posljednji put ažurirani su $1. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.",
        "querypage-no-updates": "Ažuriranje ove stranice je isključeno.\nPodaci koji se ovdje nalaze ne moraju biti aktuelni.",
-       "viewsource": "Pogledaj izvor",
+       "viewsource": "Prikaži 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.",
        "protectedpagetext": "Ova stranica je zaključana da bi se spriječile izmjene.",
-       "viewsourcetext": "Možete vidjeti i kopirati izvorni tekst ove stranice:",
+       "viewsourcetext": "Možete vidjeti i kopirati izvorni kôd ove stranice.",
        "viewyourtext": "Možete da pogledate i kopirate izvor '''vaših izmjena''' na ovoj stranici:",
        "protectedinterface": "Ova stranica sadrži tekst korisničkog okruženja za softver na ovom wikiju i zaštićena je radi sprečavanja zloupotrebe.\nDa biste dodali ili izmjenili prijevode svih wikija, posjetite [//translatewiki.net/  translatewiki.net], projekat za lokalizaciju Mediawikija.",
        "editinginterface": "<strong>Upozorenje:</strong> Mijenjate stranicu koja sadrži aktivan tekst programa.\nPromjene na ovoj stranici dovode i do promjena za druge korisnike ovog wikija.\nZa dodavanje ili promjene prijevoda za sve wikije, molimo Vas koristite [//translatewiki.net/ translatewiki.net], projekt prijevoda za MediaWiki.",
        "invalidtitle-unknownnamespace": "Neispravan naslov s imenskim prostorom br. $1 i tekstom \"$2\"",
        "exception-nologin": "Niste prijavljeni",
        "exception-nologin-text": "Prijavite se da biste pristupili ovoj stranici ili radnji.",
-       "exception-nologin-text-manual": "Molimo $1 da biste pristupili ovoj stranici ili radnji.",
+       "exception-nologin-text-manual": "Morate biti $1 da biste pristupili ovoj stranici ili radnji.",
        "virus-badscanner": "Loša konfiguracija: nepoznati anti-virus program: ''$1''",
        "virus-scanfailed": "skeniranje nije uspjelo (code $1)",
        "virus-unknownscanner": "nepoznati anti-virus program:",
        "userlogin-yourpassword": "Lozinka",
        "userlogin-yourpassword-ph": "Unesite Vašu lozinku",
        "createacct-yourpassword-ph": "Unesite lozinku",
-       "yourpasswordagain": "Ponovite šifru:",
+       "yourpasswordagain": "Ponovo upišite šifru:",
        "createacct-yourpasswordagain": "Potvrdite lozinku",
        "createacct-yourpasswordagain-ph": "Unesite lozinku opet",
-       "remembermypassword": "Zapamti moju šifru na ovom računaru (najviše $1 {{PLURAL:$1|dan|dana|dana}})",
+       "remembermypassword": "Zapamti moju šifru na ovom pregledniku (najduže $1 {{PLURAL:$1|dan|dana}})",
        "userlogin-remembermypassword": "Ostavi me prijavljenog/-u",
        "userlogin-signwithsecure": "Koristite sigurnu konekciju",
        "yourdomainname": "Vaš domen:",
        "password-change-forbidden": "Ne možete da promjenite lozinku na ovom wikiju.",
        "externaldberror": "Došlo je do greške pri vanjskoj autorizaciji baze podataka ili vam nije dopušteno osvježavanje Vašeg vanjskog korisničkog računa.",
-       "login": "Prijavi se",
+       "login": "Prijavi me",
        "nav-login-createaccount": "Prijavi se / Registruj se",
        "userlogin": "Prijavi se / Registruj se",
        "userloginnocreate": "Prijavi se",
        "userlogin-noaccount": "Nemate korisnički račun?",
        "userlogin-joinproject": "Pridružite se {{GRAMMAR:dativ|{{SITENAME}}}}",
        "nologin": "Nemate korisničko ime? $1.",
-       "nologinlink": "Napravite nalog",
+       "nologinlink": "Otvorite račun",
        "createaccount": "Napravi korisnički račun",
        "gotaccount": "Već imate korisnički račun? $1.",
-       "gotaccountlink": "Prijavi se",
+       "gotaccountlink": "Prijavite se",
        "userlogin-resetlink": "Zaboravili ste detalje vaše prijave?",
        "userlogin-resetpassword-link": "Zaboravili ste lozinku?",
        "userlogin-helplink2": "Pomoć pri prijavljivanju",
        "createacct-benefit-body2": "{{PLURAL:$1|stranica|stranice|stranica}}",
        "createacct-benefit-body3": "nedavnih {{PLURAL:$1|doprinosa}}",
        "badretype": "Šifre koje ste unijeli se ne poklapaju.",
-       "userexists": "Korisničko ime koje ste unijeli je već u upotrebi.\nMolimo Vas da izaberete drugo ime.",
+       "userexists": "Korisničko ime je već u upotrebi.\nIzaberite drugo.",
        "loginerror": "Greška pri prijavljivanju",
        "createacct-error": "Došlo je do greške pri otvaranju naloga",
        "createaccounterror": "Ne može se napraviti račun: $1",
-       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem računaru. Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
+       "nocookiesnew": "Korisnički nalog je napravljen, ali niste prijavljeni.\n{{SITENAME}} koristi kolačiće (cookies) da bi se korisnici prijavili.\nVi ste isključili kolačiće na Vašem računaru.\nMolimo Vas da ih uključite, a onda se prijavite sa svojim novim korisničkim imenom i šifrom.",
        "nocookieslogin": "{{SITENAME}} koristi kolačiće (''cookies'') da bi se korisnici prijavili.  Vi ste onemogućili kolačiće na Vašem kompjuteru.  Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
        "nocookiesfornew": "Korisnički račun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.\nProvjerite da li su cookies omogućeni, ponovo učitajte ovu stranicu i pokušajte ponovo.",
        "noname": "Niste izabrali ispravno korisničko ime.",
        "nosuchusershort": "Ne postoji korisnik s imenom \"$1\".\nProvjerite jeste li dobro ukucali.",
        "nouserspecified": "Morate izabrati korisničko ime.",
        "login-userblocked": "Ovaj korisnik je blokiran. Prijava nije dopuštena.",
-       "wrongpassword": "Unijeli ste neispravnu šifru.\nMolimo Vas da pokušate ponovno.",
-       "wrongpasswordempty": "Šifra je bila prazna.\nMolimo Vas da pokušate ponovno.",
+       "wrongpassword": "Šifra koju ste unijeli je netačna.\nPokušate ponovno.",
+       "wrongpasswordempty": "Šifra koju ste unijeli je bila prazna.\nMolimo Vas da pokušate ponovno.",
        "passwordtooshort": "Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.",
        "passwordtoolong": "Šifre ne mogu biti duže od {{PLURAL:$1|jednog znaka|$1 znaka|$1 znakova}}.",
        "password-name-match": "Vaša šifra mora biti različita od Vašeg korisničkog imena.",
        "password-login-forbidden": "Korištenje ovih korisničkih imena i šifara je zabranjeo.",
        "mailmypassword": "Poništi lozinku",
-       "passwordremindertitle": "Nova privremena šifra za {{SITENAME}}",
+       "passwordremindertitle": "{{SITENAME}} - privremena šifra",
        "passwordremindertext": "Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}}  ($4). Privremena šifra za korisnika \"$2\" je napravljena i glasi \"$3\". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.\nVaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.\n\nAko je neko drugi napravio ovaj zahtjev ili ako ste se sjetili vaše šifre i ne želite više da je promjenite, možete da ignorišete ovu poruku i da nastavite koristeći vašu staru šifru.",
        "noemail": "Ne postoji adresa e-pošte za korisnika \"$1\".",
        "noemailcreate": "Morate da navedete validnu e-mail adresu",
-       "passwordsent": "Nova šifra je poslata na adresu e-pošte korisnika \"$1\".\nMolimo Vas da se prijavite pošto je primite.",
+       "passwordsent": "Nova šifra je poslata na adresu e-pošte korisnika \"$1\".\nMolimo Vas da se prijavite nakon što je primite.",
        "blocked-mailpassword": "Da bi se spriječila nedozvoljena akcija, Vašoj IP adresi je onemogućeno uređivanje stranica kao i mogućnost zahtijevanje nove šifre.",
-       "eauthentsent": "Na navedenu adresu poslana je e-poruka s potvrdom.\nPrije nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da je račun zaista Vaš.",
+       "eauthentsent": "Na navedenu adresu e-pošte poslana je poruka s potvrdom.\nPrije nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da je račun zaista Vaš.",
        "throttled-mailpassword": "Već Vam je poslan e-mail za promjenu šifre u {{PLURAL:$1|posljednjih sat vremena|posljednja $1 sata|posljednjih $1 sati}}.\nDa bi se spriječila zloupotreba, može se poslati samo jedan e-mail za promjenu šifre {{PLURAL:$1|svakih sat vremena|svaka $1 sata|svakih $1 sati}}.",
        "mailerror": "Greška pri slanju e-pošte: $1",
        "acct_creation_throttle_hit": "Posjetioci na ovoj wiki koji koriste Vašu IP adresu su već napravili {{PLURAL:$1|$1 račun|$1 računa}} u zadnjih nekoliko dana, što je najveći broj dopuštenih napravljenih računa za ovaj period.\nKao rezultat, posjetioci koji koriste ovu IP adresu ne mogu trenutno praviti više računa.",
        "php-mail-error-unknown": "Nepoznata greška u PHP funkciji mail()",
        "user-mail-no-addy": "Pokušaj slanja e-maila bez navedene e-mail adrese.",
        "user-mail-no-body": "Pokušano slanje e-poruke s praznim ili nerazumno kratkim sadržajem.",
-       "changepassword": "Promijeni lozinku",
+       "changepassword": "Promijeni šifru",
        "resetpass_announce": "Da biste završili prijavu, morate postaviti novu šifru.",
        "resetpass_text": "<!-- Unesi tekst ovdje -->",
        "resetpass_header": "Obnovi šifru za račun",
        "oldpassword": "Stara šifra:",
        "newpassword": "Nova šifra:",
-       "retypenew": "Unesite ponovo novu šifru:",
+       "retypenew": "Ponovo upišite novu šifru:",
        "resetpass_submit": "Odredi šifru i prijavi se",
        "changepassword-success": "Vaša šifra/lozinka je uspiješno promjenjena!",
        "changepassword-throttled": "Previše puta ste se pokušali prijaviti.\nMolimo Vas da sačekate $1 prije nego što pokušate ponovo.",
        "resetpass_forbidden": "Šifre ne mogu biti promjenjene",
-       "resetpass-no-info": "Morate biti prijavljeni da bi ste pristupili ovoj stranici direktno.",
+       "resetpass-no-info": "Morate biti prijavljeni da biste pristupili ovoj stranici direktno.",
        "resetpass-submit-loggedin": "Promijeni šifru",
        "resetpass-submit-cancel": "Odustani",
        "resetpass-wrong-oldpass": "Privremena ili trenutna šifra nije validna.\nMožda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.",
        "passwordreset-emailsent": "Podsjetnik na lozinku poslan je na Vašu e-mail adresu.",
        "passwordreset-emailsent-capture": "Poslan je podsjetnik preko e-pošte (prikazano ispod).",
        "passwordreset-emailerror-capture": "E-poruka za resetiranje lozinke, prikazano ispod, poslana je, ali slanje {{GENDER:$2|korisniku|korisnici}} nije uspjelo: $1",
-       "changeemail": "Promijeni e-mail adresu",
-       "changeemail-text": "Ispunite ovaj formular da biste promijenili svoju e-mail adresu. Morat ćete upisati svoj pasvord da potvrdite ovu promjenu.",
+       "changeemail": "Promjena e-adrese",
+       "changeemail-text": "Ispunite ovaj formular da biste promijenili svoju adresu e-pošte, odnosno e-adresu. Morat ćete upisati svoju šifru kako biste potvrdili ovu promjenu.",
        "changeemail-no-info": "Morate biti prijavljeni za direktan pristup ovoj stranici.",
-       "changeemail-oldemail": "Trenutna e-mail adresa:",
-       "changeemail-newemail": "Nova e-mail adresa:",
+       "changeemail-oldemail": "Trenutna adresa e-pošte:",
+       "changeemail-newemail": "Nova adresa e-pošte:",
        "changeemail-none": "(ništa)",
-       "changeemail-password": "Tvoja šifra/lozinka za {{SITENAME}}:",
-       "changeemail-submit": "Promijeni e-mail",
+       "changeemail-password": "Vaša šifra za {{SITENAME}}:",
+       "changeemail-submit": "Promijeni adresu e-pošte",
        "changeemail-throttled": "Previše puta ste se pokušali prijaviti.\nMolimo Vas da sačekate $1 prije nego što pokušate ponovo.",
        "resettokens": "Resetovanje žetona",
        "resettokens-text": "Možete ponovno postaviti tokene koji će vam omogućiti pristup određenim privatnim podacima povezanim sa vašim računom ovdje.\n\nTrebali bi to učiniti ako ih mimo volje podijelite s nekim ili ako je vaš račun ugrožen.",
        "subject": "Tema/naslov:",
        "minoredit": "Ovo je manja izmjena",
        "watchthis": "Prati ovu stranicu",
-       "savearticle": "Sačuvaj",
+       "savearticle": "Sačuvaj stranicu",
        "preview": "Pregled stranice",
        "showpreview": "Prikaži izgled",
        "showdiff": "Prikaži izmjene",
        "missingsummary": "'''Napomena:''' Niste unijeli sažetak izmjene.\nAko kliknete na Sačuvaj, Vaša izmjena će biti sačuvana bez sažetka.",
        "selfredirect": "<strong>Upozorenje:</strong> Preusmjerili ste stranicu na samu sebe.\nMožda ste naveli pogrešan cilj preusmjeravanja ili ste uređivali pogrešnu stranicu.\nAko ponovno kliknete \"{{int:savearticle}}\", ipak će nastati preusmjerenje.",
        "missingcommenttext": "Molimo unesite komentar ispod.",
-       "missingcommentheader": "'''Podsjetnik:''' Niste napisali temu/naslov za ovaj komentar.\nAko ponovo kliknete na ''{{int:savearticle}}'', Vaše izmjene će biti spašene bez teme/naslova.",
+       "missingcommentheader": "<strong>Podsjetnik:</strong> Niste napisali temu/naslov za ovaj komentar.\nAko ponovo kliknete na \"{{int:savearticle}}\", vaša izmjena će biti sačuvana bez teme/naslova.",
        "summary-preview": "Pregled sažetka:",
        "subject-preview": "Pregled tema/naslova:",
        "previewerrortext": "Dogodila se greška prilikom prikazivanja vaših izmjena.",
        "blockedtext": "'''Vaše korisničko ime ili IP-adresa je blokirana.'''\n\nBlokada izvršena od strane $1.\nDati razlog je sljedeći: ''$2''.\n\n*Početak blokade: $8\n*Kraj perioda blokade: $6\n*Ime blokiranog korisnika: $7\n\nMožete kontaktirati sa $1 ili nekim drugim [[{{MediaWiki:Grouppage-sysop}}|administratorom]] da biste razgovarali o blokadi.\n\nNe možete koristiti opciju ''Pošalji e-mail korisniku'' osim ako niste unijeli e-mail adresu u [[Special:Preferences|Vaše postavke]].\nVaša trenutna IP-adresa je $3, a oznaka blokade je #$5.\nMolimo Vas da navedete gornje podatke pri zahtjevu za deblokadu.",
        "autoblockedtext": "Vaša IP-adresa automatski je blokirana jer ju je koristio drugi korisnik, a blokirao ju je $1.\nNaveden je sljedeći razlog:\n\n:''$2''\n\n* Početak blokade: $8\n* Kraj blokade: $6\n* Blokirani korisnik: $7\n\nMožete kontaktirati sa $1 ili nekim drugim iz grupe [[{{MediaWiki:Grouppage-sysop}}|administratora]] i zahtijevati da Vas deblokira.\n\nZapamtite da ne možete koristiti opciju \"pošalji e-mail ovom korisniku\" sve dok ne unesete validnu e-mail adresu pri registraciji u Vašim [[Special:Preferences|korisničkim postavkama]] i dok niste spriječeni (blokadom) da je koristite.\n\nVaša trenutna IP-adresa je $3, a ID blokade je $5.\nMolimo da navedete sve gore navedene detalje u zahtjevu za deblokadu.",
        "blockednoreason": "razlog nije naveden",
-       "whitelistedittext": "Da bi ste uređivali stranice, morate se $1.",
+       "whitelistedittext": "Morate biti $1 da biste uređivali stranice.",
        "confirmedittext": "Morate potvrditi Vašu e-mail adresu prije nego počnete mijenjati stranice.\nMolimo da postavite i verifikujete Vašu e-mail adresu putem Vaših [[Special:Preferences|korisničkih opcija]].",
        "nosuchsectiontitle": "Ne mogu pronaći sekciju",
        "nosuchsectiontext": "Pokušali ste uređivati sekciju koja ne postoji.\nMožda je premještena ili obrisana dok ste pregledavali stranicu.",
-       "loginreqtitle": "Potrebno je prijavljivanje",
-       "loginreqlink": "prijavi se",
-       "loginreqpagetext": "Morate $1 da bi ste vidjeli druge strane.",
+       "loginreqtitle": "Potrebna je prijava",
+       "loginreqlink": "prijavljeni",
+       "loginreqpagetext": "Morate biti $1 da biste vidjeli druge stranice.",
        "accmailtitle": "Šifra poslana.",
        "accmailtext": "Nasumično odabrana šifra za [[User talk:$1|$1]] je poslata na adresu $2.\n\nŠifra/lozinka za ovaj novi račun može biti promijenjena na stranici ''[[Special:ChangePassword|izmjene šifre]]'' nakon prijave.",
        "newarticle": "(Novi)",
        "userinvalidcssjstitle": "'''Upozorenje:''' Ne postoji interfejs pod imenom \"$1\".\nNe zaboravite da imena stranica s .css i .js kodom počinju malim slovom, npr, {{ns:user}}:Foo/vector.css, a ne {{ns:user}}:Foo/Vector.css.",
        "updated": "(Osvježeno)",
        "note": "'''Pažnja:'''",
-       "previewnote": "'''Ne zaboravite da je ovo samo pregled'''\nIzmjene stranice nisu još sačuvane!",
+       "previewnote": "<strong>Ne zaboravite da je ovo samo pregled.</strong>\nVaše izmjene još nisu sačuvane!",
        "continue-editing": "Idi na područje uređivanja",
        "previewconflict": "Ovaj pregled prikazuje kako će tekst u gornjem polju\nizgledati ako kliknete \"Sačuvaj članak\".",
-       "session_fail_preview": "'''Izvinjavamo se! Nismo mogli obraditi vašu izmjenu zbog gubitka podataka o prijavi. Molimo pokušajte ponovno. Ako i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]] i ponovno prijaviti.'''",
+       "session_fail_preview": "<strong>Izvinjavamo se! Nismo mogli obraditi vašu izmjenu zbog gubitka podataka o prijavi.\nMolimo pokušajte ponovno.\nAko i dalje ne bude radilo, pokušajte se [[Special:UserLogout|odjaviti]] i ponovno prijaviti.</strong>",
        "session_fail_preview_html": "'''Žao nam je! Nismo mogli da obradimo vašu izmjenu zbog gubitka podataka.'''\n\n''Zbog toga što {{SITENAME}} ima omogućen izvorni HTML, predpregled je sakriven kao predostrožnost protiv JavaScript napada.''\n\n'''Ako ste pokušali da napravite pravu izmjenu, molimo pokušajte ponovo. Ako i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
        "token_suffix_mismatch": "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.\nIzmjena je odbačena da bi se spriječilo uništavanje teksta stranice.\nTo se događa ponekad kad korisite problematični anonimni proxy koji je baziran na web-u.'''",
        "edit_form_incomplete": "'''Neki dijelovi uređivačkog obrasca nisu došli do servera; dvaput provjerite da su vaše izmjene nepromjenjene i pokušajte ponovno.'''",
        "editconflict": "Sukob izmjena: $1",
        "explainconflict": "Neko drugi je promijenio ovu stranicu otkad ste je Vi počeli mijenjati.\nGornje tekstualno polje sadrži tekst stranice koji trenutno postoji.\nVaše izmjene prikazane su u donjem tekstu.\nMorat ćete unijeti svoje promjene u postojeći tekst.\n'''Samo''' tekst u gornjem tekstualnom polju bit će sačuvan kad\nkliknete \"{{int:savearticle}}\".",
        "yourtext": "Vaš tekst",
-       "storedversion": "Uskladištena verzija",
+       "storedversion": "Sačuvana verzija",
        "nonunicodebrowser": "'''UPOZORENJE: Vaš preglednik ne podržava Unicode zapis znakova.\nMolimo Vas promijenite ga prije sljedećeg uređivanja članaka. Znakovi koji nisu po ASCII standardu će se u prozoru za izmjene pojaviti kao heksadecimalni kodovi.'''",
        "editingold": "'''PAŽNJA:  Vi mijenjate stariju\nreviziju ove stranice.\nAko je snimite, sve promjene učinjene od ove revizije će biti izgubljene.'''",
        "yourdiff": "Razlike",
        "content-model-css": "CSS",
        "content-json-empty-object": "Prazan objekat",
        "content-json-empty-array": "Prazan niz",
-       "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] sa više od jedne vrijednosti za paramentar \"$3\". Bit će prikazana samo posljednja vrijednosti.",
+       "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] sa više od jedne vrijednosti za parametar \"$3\". Koristit će se samo posljednja navedena vrijednost.",
        "duplicate-args-category": "Stranice sa istim argumentima kod poziva šablona",
        "duplicate-args-category-desc": "Stranica sadrži pozive šablona koji koriste argumente dvojnike, kao što su <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ili <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previše poziva opterećujućih parserskih funkcija.\n\nTrebalo bi imati manje od $2 {{PLURAL:$2|poziv|poziva}}, a sad ima {{PLURAL:$1|$1 poziv|$1 poziva}}.",
        "parser-unstrip-loop-warning": "Pronađena petlja",
        "parser-unstrip-recursion-limit": "Prekoračeno ograničenje rekurzije ($1)",
        "converter-manual-rule-error": "Pronađena je greška u pravilu za ručno pretvaranje jezika",
-       "undo-success": "Izmjena se može vratiti.\nMolimo da provjerite usporedbu ispod da budete sigurni da to želite učiniti, a zatim spremite promjene da bi ste završili vraćanje izmjene.",
-       "undo-failure": "Izmjene se ne mogu vratiti zbog konflikta sa izmjenama u međuvremenu.",
+       "undo-success": "Izmjena se može vratiti.\nMolimo da provjerite usporedbu ispod da budete sigurni da ovo želite uraditi, a zatim sačuvajte promjene da bi ste završili vraćanje izmjene.",
+       "undo-failure": "Izmjena se ne može vratiti zbog sukoba izmjena.",
        "undo-norev": "Izmjena se ne može vratiti jer ne postoji ranija ili je obrisana.",
        "undo-nochange": "Izgleda da je izmjena već vraćena.",
-       "undo-summary": "Vraćena izmjena $1 [[Special:Contributions/$2|korisnika $2]] ([[User talk:$2|razgovor]])",
+       "undo-summary": "Vraćena izmjena $1 {{GENDER:$2|korisnika|korisnice}} [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]])",
        "undo-summary-username-hidden": "Poništi izmjenu $1 od skrivenog korisnika",
        "cantcreateaccounttitle": "Nije moguće napraviti korisnički račun",
        "cantcreateaccount-text": "Pravljenje korisničkog računa sa ove IP adrese ('''$1''') je blokirano od strane [[User:$3|$3]].\n\nRazlog koji je naveo $3 je ''$2''",
        "cantcreateaccount-range-text": "Pravljenje računa sa IP adresa u rasponu '''$1''', koji uključuje i vašu IP adresu ('''$4'''), je blokirao korisnik [[User:$3|$3]].\n\nNavedeni razlog korisnika $3 je ''$2''",
-       "viewpagelogs": "Pogledaj protokol ove stranice",
+       "viewpagelogs": "Pogledaj zapisnike ove stranice",
        "nohistory": "Ne postoji historija izmjena za ovu stranicu.",
        "currentrev": "Trenutna revizija",
        "currentrev-asof": "Trenutna revizija na dan $1",
-       "revisionasof": "Revizija od $1",
+       "revisionasof": "Verzija od $1",
        "revision-info": "Izmjena od $1 od {{GENDER:$6|$2}}$7",
-       "previousrevision": "←Starije izmjene",
+       "previousrevision": "← Starija izmjena",
        "nextrevision": "Novija izmjena →",
        "currentrevisionlink": "Trenutna verzija",
        "cur": "tren",
        "rev-deleted-diff-view": "Jedna od revizija u ovoj razlici je '''obrisana'''.\nVi možete vidjeti ovu razliku; detalji o tome se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku brisanja].",
        "rev-suppressed-diff-view": "Jedna od revizija u ovoj razlici je '''sakrivena'''.\nVi možete vidjeti ovu razliku; detalji se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zapisniku sakrivanja].",
        "rev-delundel": "pokaži/sakrij",
-       "rev-showdeleted": "Pokaži",
+       "rev-showdeleted": "prikaži",
        "revisiondelete": "Obriši/vrati revizije",
        "revdelete-nooldid-title": "Nije unesena tačna revizija",
        "revdelete-nooldid-text": "Niste odredili odredišnu verziju da se izvrši ova funkcija, ili ta verzija ne postoji, ili pokušavate sakriti trenutnu verziju.",
        "mergelog": "Zapisnik spajanja",
        "revertmerge": "Vrati spajanje",
        "mergelogpagetext": "Ispod je spisak nedavnih spajanja historija stranica.",
-       "history-title": "Historija revizija \"$1\"",
-       "difference-title": "Razlike između revizija od \"$1\"",
+       "history-title": "Historija izmjena stranice \"$1\"",
+       "difference-title": "Razlike između verzija stranice \"$1\"",
        "difference-title-multipage": "Razlika između stranica \"$1\" i \"$2\"",
        "difference-multipage": "(Razlika između stranica)",
-       "lineno": "Linija $1:",
+       "lineno": "Red $1:",
        "compareselectedversions": "Uporedite označene verzije",
        "showhideselectedversions": "Pokaži/sakrij odabrane verzije",
-       "editundo": "ukloni ovu izmjenu",
+       "editundo": "vrati",
        "diff-empty": "(Nema razlike)",
        "diff-multi-sameuser": "({{PLURAL:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije}} istog korisnika)",
        "diff-multi-otherusers": "(Nije prikazana {{PLURAL:$1|jedna međuverzija|$1 međuverzija}} {{PLURAL:$2|drugog korisnika|$2 korisnika}})",
        "searchresults-title": "Rezultati pretrage za \"$1\"",
        "titlematches": "Naslov članka odgovara",
        "textmatches": "Tekst stranice odgovara",
-       "notextmatches": "Tekst članka ne odgovara",
+       "notextmatches": "Nijedan tekst stranice ne odgovara",
        "prevn": "{{PLURAL:$1|prethodni $1|prethodnih $1}}",
        "nextn": "{{PLURAL:$1|sljedeći $1|sljedećih $1}}",
        "prev-page": "prethodna stranica",
        "prevn-title": "{{PLURAL:$1|Prethodni $1 rezultat|Prethodna $1 rezultata|Prethodnih $1 rezultata}}",
        "nextn-title": "{{PLURAL:$1|Sljedeći $1 rezultat|Sljedeća $1 rezultata|Sljedećih $1 rezultata}}",
        "shown-title": "Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici",
-       "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3).",
+       "viewprevnext": "Pogledaj ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''Postoji stranica pod nazivom \"[[:$1]]\" na ovoj wiki'''",
        "searchmenu-new": "<strong>Napravi stranicu \"[[:$1]]\" na ovoj wiki!</strong> {{PLURAL:$2|0=|Pogledajte također straniu pronađenu vašom pretragom.|Pogledajte također i vaše rezultate pretrage.}}",
        "searchprofile-articles": "Stranice sadržaja",
        "search-relatedarticle": "Povezano",
        "searchrelated": "povezano",
        "searchall": "sve",
-       "showingresults": "Dolje {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
+       "showingresults": "Dolje {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano '''$1''' rezultata}} počev od #<strong>$2</strong>.",
        "showingresultsinrange": "Ispod {{PLURAL:$1|je prikazan <strong>1</strong> rezultat|su prikazana <strong>$1</strong> rezultata|je prikazano <strong>$1</strong> rezultata}}, u rasponu od <strong>$2</strong> do <strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Rezultat <strong>$1</strong> od <strong>$3</strong>|Rezultati <strong>$1 - $2</strong> od <strong>$3</strong>}}",
        "search-nonefound": "Nisu pronađeni rezultati koji odgovaraju upitu.",
        "powersearch-togglenone": "Ništa",
        "powersearch-remember": "Zapamti izbor za buduće pretrage",
        "search-external": "Vanjska pretraga",
-       "searchdisabled": "<p>Izvinjavamo se!  Puno pretraga teksta je privremeno onemogućena.  U međuvremenu, možete koristiti Google za pretragu.  Indeks može biti stariji.",
+       "searchdisabled": "Pretraga na stranici {{SITENAME}} je onemogućena.\nU međuvremenu možete tražiti preko Googlea.\nUpamtite da ispisi stranice {{SITENAME}} mogu biti zastarjeli.",
        "search-error": "Desila se greška prilikom pretraživanja: $1",
        "preferences": "Postavke",
        "mypreferences": "Postavke",
        "prefs-editing": "Uređivanje",
        "rows": "Redova:",
        "columns": "Kolona:",
-       "searchresultshead": "Podešavanja rezultata pretrage",
+       "searchresultshead": "Pretraga",
        "stub-threshold": "Formatiranje <a href=\"#\" class=\"stub\">linkova stranica u začetku</a> (bajtova):",
        "stub-threshold-disabled": "Isključeno",
        "recentchangesdays": "Broj dana za prikaz u nedavnim izmjenama:",
        "yourlanguage": "Jezik:",
        "yourvariant": "Varijanta jezika:",
        "prefs-help-variant": "Vaša preferirana varijanta ili pravopis za prikaz sadržaja stranica na ovoj wiki.",
-       "yournick": "Nadimak (za potpise):",
+       "yournick": "Novi potpis:",
        "prefs-help-signature": "Komentari na stranicama za razgovor trebaju biti potpisani sa \"<nowiki>~~~~</nowiki>\" koje će biti pretvoreno u vaš potpis i vrijeme.",
        "badsig": "Loš sirovi potpis.\nProvjerite HTML tagove.",
        "badsiglength": "Vaš potpis je predug.\nMora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.",
        "email-address-validity-invalid": "Neophodna valjana adresa!",
        "userrights": "Postavke korisničkih prava",
        "userrights-lookup-user": "Menadžment korisničkih grupa",
-       "userrights-user-editname": "Unesi korisničko ime:",
+       "userrights-user-editname": "Upišite korisničko ime:",
        "editusergroup": "Uredi korisničke grupe",
        "editinguser": "Mijenjate korisnička prava korisnika <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Uredi korisničke grupe",
        "newuserlogpage": "Zapisnik novih korisnika",
        "newuserlogpagetext": "Ovo je zapis o registraciji novih korisnika.",
        "rightslog": "Zapisnik korisničkih prava",
-       "rightslogtext": "Ovo je zapis promjena korisničkih prava.",
+       "rightslogtext": "Ovo je zapisnik promjena korisničkih prava.",
        "action-read": "čitate ovu stranicu",
        "action-edit": "uređujete ovu stranicu",
        "action-createpage": "napravite stranicu",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|spisak novih stranica]])",
        "rcnotefrom": "Ispod {{PLURAL:$5|je izmjena|su izmjene}} od <strong>$3, $4</strong> (do <strong>$1</strong> prikazano).",
        "rclistfrom": "Prikaži nove izmjene počev od $3 $2",
-       "rcshowhideminor": "$1 male izmjene",
-       "rcshowhideminor-show": "Pokaži",
+       "rcshowhideminor": "$1 manje izmjene",
+       "rcshowhideminor-show": "Prikaži",
        "rcshowhideminor-hide": "Sakrij",
        "rcshowhidebots": "$1 botove",
-       "rcshowhidebots-show": "Pokaži",
+       "rcshowhidebots-show": "Prikaži",
        "rcshowhidebots-hide": "Sakrij",
        "rcshowhideliu": "$1 registrovane korisnike",
-       "rcshowhideliu-show": "Pokaži",
+       "rcshowhideliu-show": "Prikaži",
        "rcshowhideliu-hide": "Sakrij",
        "rcshowhideanons": "$1 anonimne korisnike",
-       "rcshowhideanons-show": "Pokaži",
+       "rcshowhideanons-show": "Prikaži",
        "rcshowhideanons-hide": "Sakrij",
        "rcshowhidepatr": "$1 patrolirane izmjene",
-       "rcshowhidepatr-show": "Pokaži",
+       "rcshowhidepatr-show": "Prikaži",
        "rcshowhidepatr-hide": "Sakrij",
        "rcshowhidemine": "$1 moje izmjene",
-       "rcshowhidemine-show": "Pokaži",
+       "rcshowhidemine-show": "Prikaži",
        "rcshowhidemine-hide": "Sakrij",
-       "rclinks": "Prikaži najskorijih $1 izmjena u posljednjih $2 dana<br />$3",
+       "rclinks": "Prikaži posljednjih $1 izmjena u posljednjih $2 dana<br />$3",
        "diff": "razl",
        "hist": "hist",
        "hide": "Sakrij",
-       "show": "Pokaži",
+       "show": "Prikaži",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
        "rc_categories": "Ograniči na kategorije (razdvojene sa \"|\")",
        "rc_categories_any": "Sve",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} poslije izmjene",
-       "newsectionsummary": "/* $1 */ nova sekcija",
+       "newsectionsummary": "/* $1 */ novi odjeljak",
        "rc-enhanced-expand": "Pokaži detalje",
        "rc-enhanced-hide": "Sakrij detalje",
        "rc-old-title": "prvobitno kreirano kao \"$1\"",
        "recentchangeslinked-to": "Pokaži promjene stranica koji su povezane sa datom stranicom",
        "upload": "Postavi datoteku",
        "uploadbtn": "Postavi datoteku",
-       "reuploaddesc": "Vratite se na upitnik za slanje.",
+       "reuploaddesc": "Vrati me na formular za postavljanje datoteka.",
        "upload-tryagain": "Pošaljite izmijenjeni opis datoteke",
        "uploadnologin": "Niste prijavljeni",
-       "uploadnologintext": "Morate biti $1 da bi ste slali datoteke.",
+       "uploadnologintext": "Morate biti $1 kako biste postavljali datoteke.",
        "upload_directory_missing": "Folder za postavljanje ($1) nedostaje i webserver ga ne može napraviti.",
        "upload_directory_read_only": "Folder za postavljanje ($1) na webserveru je postavljen samo za čitanje.",
        "uploaderror": "Greška pri slanju",
        "tmp-create-error": "Nije moguće napraviti privremenu datoteku.",
        "tmp-write-error": "Greška pri pisanju privremene datoteke.",
        "large-file": "Preporučeno je da datoteke nisu veće od $1;\nOva datoteka je velika $2.",
-       "largefileserver": "Ova datoteka je veća nego što server dopušta.",
+       "largefileserver": "Ova datoteka je veća nego što je dozvoljeno u postavkama servera.",
        "emptyfile": "Datoteka koju ste poslali je prazna. Ovo je moguće zbog greške u imenu datoteke. Molimo Vas da provjerite da li stvarno želite da pošaljete ovu datoteku.",
        "windows-nonascii-filename": "Ova wiki ne podržava imena datoteka sa posebnim znacima.",
        "fileexists": "Datoteka sa ovim imenom već postoji, molimo Vas provjerite <strong>[[:$1]]</strong> ako {{GENDER:|niste}} sigurni da je želite promjeniti.\n[[$1|thumb]]",
        "file-exists-duplicate": "Ova datoteka je dvojnik {{PLURAL:$1|slijedećoj datoteci|slijedećim datotekama}}:",
        "file-deleted-duplicate": "Datoteka koje je identična ovoj datoteci ([[:$1]]) je ranije bila obrisana. Trebate provjeriti historiju brisanja te datoteke prije nego što nastavite sa njenim ponovnim postavljanjem.",
        "file-deleted-duplicate-notitle": "Datoteka identična ovoj prethodno je obrisana i ime joj je sakriveno.\nTrebali biste pitati nekog ko može vidjeti podatke skrivenih datoteka da pregleda situaciju prije nego što ponovo postavite datoteku.",
-       "uploadwarning": "Upozorenje pri slanju",
+       "uploadwarning": "Upozorenje pri postavljanju",
        "uploadwarning-text": "Molimo izmijeniti opis datoteke ispod i pokušajte kasnije.",
        "savefile": "Sačuvaj datoteku",
        "uploaddisabled": "Slanje fajlova je isključeno",
        "upload-curl-error28-text": "Stranici je potrebno previše vremena za odgovor.\nMolimo provjerite da li je stranica postavljena, malo pričekajte i pokušajte ponovno.\nMožda možete pokušati kada bude manje opterećenje.",
        "license": "Licenca:",
        "license-header": "Licenciranje",
-       "nolicense": "Ništa nije odabrano",
+       "nolicense": "Nijedna nije izabrana",
        "licenses-edit": "Uredi izbor licenci",
        "license-nopreview": "(Pregled nije dostupan)",
        "upload_source_url": "(vaša izabrana datoteka od validnih, javno dostupnih URL-a)",
        "imagelinks": "Upotreba datoteke",
        "linkstoimage": "{{PLURAL:$1|Slijedeća stranica koristi|Slijedećih $1 stranica koriste}} ovu sliku:",
        "linkstoimage-more": "Više od $1 {{PLURAL:$1|datoteke|datoteka}} povezano je s ovom datotekom.\nSljedeći spisak pokazuje samo {{PLURAL:$1|prvu stranicu povezanu|prve $1 stranice povezane|prvih $1 stranica povezanih}} s ovom datotekom.\nOvdje je dostupan [[Special:WhatLinksHere/$2|potpuni spisak]].",
-       "nolinkstoimage": "Nema stranica koje koriste ovu sliku.",
+       "nolinkstoimage": "Nema stranica koje koriste ovu datoteku.",
        "morelinkstoimage": "Vidi [[Special:WhatLinksHere/$1|ostale linkove]] prema ovoj datoteci.",
        "linkstoimage-redirect": "$1 (preusmjerenje datoteke) $2",
        "duplicatesoffile": "{{PLURAL:$1|Slijedeća datoteka je dvojnik|Slijedeće $1 datoteke su dvojnici}} ove datoteke ([[Special:FileDuplicateSearch/$2|detaljnije]]):",
        "double-redirect-fixed-maintenance": "Automatsko ospravljanje dvostrukih preusmjerenja sa [[$1]] na [[$2]] je posao održavanja.",
        "double-redirect-fixer": "Popravljač preusmjerenja",
        "brokenredirects": "Pokvarena preusmjerenja",
-       "brokenredirectstext": "Slijedeća preusmjerenja vode na nepostojeće stranice:",
+       "brokenredirectstext": "Sljedeća preusmjerenja vode na nepostojeće stranice:",
        "brokenredirects-edit": "uredi",
        "brokenredirects-delete": "obriši",
        "withoutinterwiki": "Članci bez interwiki linkova",
        "withoutinterwiki-summary": "Slijedeće stranice nemaju linkove prema verzijama na drugim jezicima.",
        "withoutinterwiki-legend": "Prefiks",
-       "withoutinterwiki-submit": "Pokaži",
+       "withoutinterwiki-submit": "Prikaži",
        "fewestrevisions": "Stranice sa najmanje izmjena",
        "nbytes": "$1 {{PLURAL:$1|bajt|bajtova}}",
        "ncategories": "$1 {{PLURAL:$1|kategorija|kategorije}}",
        "nlinks": "$1 {{PLURAL:$1|veza|veze}}",
        "nmembers": "$1 {{PLURAL:$1|član|članova}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}",
-       "nrevisions": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
+       "nrevisions": "$1 {{PLURAL:$1|verzija|verzije|verzija}}",
        "nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
        "ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
-       "specialpage-empty": "Nepostoje rezultati za ovaj izvještaj.",
-       "lonelypages": "Siročići",
+       "specialpage-empty": "Nema rezultata za ovaj izvještaj.",
+       "lonelypages": "Siročad",
        "lonelypagestext": "Slijedeće stranice nemaju linkove na ostalim stranicama na ovoj {{SITENAME}}.",
        "uncategorizedpages": "Nekategorisane stranice",
        "uncategorizedcategories": "Nekategorisane kategorije",
        "uncategorizedimages": "Slike bez kategorije",
        "uncategorizedtemplates": "Šabloni bez kategorije",
        "unusedcategories": "Neiskorištene kategorije",
-       "unusedimages": "Neupotrebljene slike",
+       "unusedimages": "Nekorištene slike",
        "wantedcategories": "Tražene kategorije",
-       "wantedpages": "Tražene stranice",
+       "wantedpages": "Najpotrebnije stranice",
        "wantedpages-summary": "Spisak nepostojećih stranica sa najviše veza ka njima. Na spisku se ne nalaze stranice do kojih vode preusmjerenja. Za spisak nepostojećih stranica na koje su povezana preumsjerenja, pogledajte [[{{#special:BrokenRedirects}}|spisak pokvarenih preusmerenja]].",
        "wantedpages-badtitle": "Nevaljan naslov u setu rezultata: $1",
        "wantedfiles": "Tražene datoteke",
        "mostlinkedcategories": "Kategorije sa najviše linkova",
        "mostlinkedtemplates": "Najviše uključene stranice",
        "mostcategories": "Članci sa najviše kategorija",
-       "mostimages": "Najviše linkovane slike",
+       "mostimages": "Datoteke s najviše veza",
        "mostinterwikis": "Stranice sa najviše međuwikija",
        "mostrevisions": "Članci sa najviše izmjena",
        "prefixindex": "Sve stranice sa prefiksom",
        "prefixindex-strip": "Sakrij prefiks u spisku",
        "shortpages": "Kratke stranice",
        "longpages": "Dugačke stranice",
-       "deadendpages": "Stranice bez internih veza",
+       "deadendpages": "Stranice bez unutrašnjih veza",
        "deadendpagestext": "Slijedeće stranice nisu povezane s drugim stranicama na {{SITENAME}}.",
        "protectedpages": "Zaštićene stranice",
        "protectedpages-indef": "Samo neograničena zaštićenja",
        "ancientpages": "Najstarije stranice",
        "move": "Premjesti",
        "movethispage": "Premjesti ovu stranicu",
-       "unusedimagestext": "Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.\nMolimo obratite pažnju da druge web stranice mogu biti povezane s datotekom putem direktnog URLa, tako da i pored toga mogu biti prikazane ovdje pored aktivne upotrebe.",
+       "unusedimagestext": "Slijedeće datoteke postoje ali nisu uključene ni u jednu stranicu.\nMolimo obratite pažnju da druge web stranice mogu biti povezane s datotekom putem direktnog URL-a, tako da i pored toga mogu biti prikazane ovdje pored aktivne upotrebe.",
        "unusedcategoriestext": "Sljedeće stranice kategorija postoje iako ih nijedan drugi članak ili kategorija ne koriste.",
        "notargettitle": "Nema cilja",
        "notargettext": "Niste naveli ciljnu stranicu ili korisnika\nna kome bi se izvela ova funkcija.",
        "querypage-disabled": "Ova posebna stranica je onemogućena jer smanjuje performanse.",
        "apihelp": "API pomoć",
        "apihelp-no-such-module": "Modul \"$1\" nije pronađen.",
-       "booksources": "Štampani izvori",
+       "booksources": "Književni izvori",
        "booksources-search-legend": "Traži književne izvore",
        "booksources-search": "Traži",
        "booksources-text": "Ispod se nalazi spisak vanjskih linkova na ostale stranice koje prodaju nove ili korištene knjige kao i stranice koje mogu da imaju važnije podatke o knjigama koje tražite:",
        "showhideselectedlogentries": "Pokaži/sakrij izabrane zapise u evidenciji",
        "log-edit-tags": "Uredi oznake izabranih zapisničkih unosa",
        "allpages": "Sve stranice",
-       "nextpage": "Sljedeća strana ($1)",
+       "nextpage": "Sljedeća stranica ($1)",
        "prevpage": "Prethodna stranica ($1)",
        "allpagesfrom": "Prikaži stranice počev od:",
        "allpagesto": "Prikaži stranice koje završavaju na:",
-       "allarticles": "Svi članci",
+       "allarticles": "Sve stranice",
        "allinnamespace": "Sve stranice (imenski prostor $1)",
        "allpagessubmit": "Idi",
        "allpagesprefix": "Prikaži stranice sa prefiksom:",
        "linksearch-ns": "Imenski prostor:",
        "linksearch-ok": "Traži",
        "linksearch-text": "Mogu se koristiti općeniti izrazi poput \"*.wikipedia.org\".\nPotrebna je najmanje osnovna domena, naprimjer \"*.org.\"<br />\nPodržani {{PLURAL:$2|protokol|protokoli}}: $1 (default je http:// ako nijedan protokol nije naveden).",
-       "linksearch-line": "$1 je povezan od $2",
-       "linksearch-error": "Džokeri se mogu pojavljivati samo na početku naziva servera.",
+       "linksearch-line": "$1 vodi sa $2",
+       "linksearch-error": "Džokeri se mogu pojavljivati samo na početku adrese.",
        "listusersfrom": "Prikaži korisnike koji počinju sa:",
-       "listusers-submit": "Pokaži",
+       "listusers-submit": "Prikaži",
        "listusers-noresult": "Nije pronađen korisnik.",
        "listusers-blocked": "(blokiran)",
        "activeusers": "Spisak aktivnih korisnika",
        "emailuser-title-target": "Pošalji e-poruku {{GENDER:$1|korisniku|korisnici|korisniku}}",
        "emailuser-title-notarget": "Pošalji e-mail korisniku",
        "emailpage": "Pošalji e-mail korisniku",
-       "emailpagetext": "Možete korisiti formu ispod za slanje e-mail poruka {{GENDER:$1|ovom korisniku|ovoj korisnici|ovom korisniku}}.\nE-mail adresa koju ste unijeli u [[Special:Preferences|Vašim korisničkim postavkama]] će biti prikazana kao adresa pošiljaoca, tako da će primaoc poruke moći da Vam odgovori.",
+       "emailpagetext": "Možete korisiti obrazac ispod za slanje poruke e-poštom {{GENDER:$1|ovom korisniku|ovoj korisnici|ovom korisniku}}.\nAdresa e-pošte koju ste unijeli u [[Special:Preferences|svojim korisničkim postavkama]] će biti prikazana kao adresa pošiljaoca, tako da će primaoc poruke moći da Vam odgovori.",
        "defemailsubject": "{{SITENAME}} e-pošta od {{GENDER:$1|korisnika|korisnice|korisnika}} $1",
        "usermaildisabled": "Korisnički e-mail onemogućen",
        "usermaildisabledtext": "Ne možete poslati e-mail drugim korisnicima na ovoj wiki",
        "emailtarget": "Unesite korisnika za primanje e-mailova",
        "emailusername": "Korisničko ime:",
        "emailusernamesubmit": "Pošalji",
-       "email-legend": "Slanje e-maila drugom {{SITENAME}} korisniku",
+       "email-legend": "Slanje e-poruke drugom {{SITENAME}} korisniku",
        "emailfrom": "Od:",
        "emailto": "Za:",
-       "emailsubject": "Tema:",
+       "emailsubject": "Naslov:",
        "emailmessage": "Poruka:",
        "emailsend": "Pošalji",
-       "emailccme": "Pošalji mi kopiju moje poruke.",
+       "emailccme": "Pošalji mi kopiju moje poruke e-poštom.",
        "emailccsubject": "Kopiraj Vašu poruku za $1: $2",
        "emailsent": "Poruka poslata",
        "emailsenttext": "Vaša poruka je poslata e-poštom.",
        "emailuserfooter": "Ovaj e-mail je poslao $1 korisniku $2 putem funkcije \"{{int:emailpage}}\" sa {{SITENAME}}.",
        "usermessage-summary": "Ostavljanje sistemske poruke.",
        "usermessage-editor": "Sistem za poruke",
-       "watchlist": "Praćeni članci",
-       "mywatchlist": "Praćeni članci",
+       "watchlist": "Spisak praćenja",
+       "mywatchlist": "Spisak praćenja",
        "watchlistfor2": "Za $1 $2",
        "nowatchlist": "Nemate ništa na svom spisku praćenih članaka.",
-       "watchlistanontext": "Molimo logujte se da vidite ili uredite stavke na Vašem spisku praćenja.",
+       "watchlistanontext": "Morate biti prijavljeni kako biste vidjeli ili uređivali svoj spisak praćenih članaka.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisak praćenja",
        "addedwatchtext": "Stranica \"[[:$1]]\" je dodata vašem [[Special:Watchlist|spisku praćenih članaka]]. \nBuduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovdje.",
        "removedwatchtext-short": "Stranica \"$1\" je uklonjena sa vašeg spiska praćenja.",
        "watch": "Prati članak",
        "watchthispage": "Prati ovu stranicu",
-       "unwatch": "Ukinite praćenje",
+       "unwatch": "Prestani pratiti",
        "unwatchthispage": "Ukinite praćenje",
        "notanarticle": "Nije članak",
        "notvisiblerev": "Revizija je obrisana",
        "watchlist-details": "{{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica }} na vašem spisku praćenja, ne računajući posebno stranice za razgovor.",
-       "wlheader-enotif": "Obavještavanje e-poštom je omogućeno.",
-       "wlheader-showupdated": "Stranice koje su izmijenjene od kad ste ih posljednji put posjetili su prikazane '''podebljanim slovima'''",
+       "wlheader-enotif": "Uključeno je obavještenje e-poštom.",
+       "wlheader-showupdated": "Stranice koje su izmijenjene otkad ste ih posljednji put posjetili su prikazane <strong>podebljanim slovima</strong>.",
        "wlnote": "Ispod {{PLURAL:$1|je najskorija izmjena|su <strong>$1</strong> najskorije izmjene|<strong>$1</strong> najskorijih izmjena}} načinjenih {{PLURAL:$2|posljednjeg sata|u posljednjih <strong>$2</strong> sata|u posljednjih <strong>$2</strong> sati}}, od $3, $4.",
        "wlshowlast": "Prikaži posljednjih $1 sati $2 dana",
        "watchlist-options": "Opcije spiska praćenja",
        "watching": "Pratim...",
        "unwatching": "Ne pratim...",
        "watcherrortext": "Desila se greška pri promjeni postavki vašeg spiska praćenja za \"$1\".",
-       "enotif_reset": "Označi sve strane kao posjećene",
+       "enotif_reset": "Označi sve stranice kao posjećene",
        "enotif_impersonal_salutation": "{{SITENAME}} korisnik",
        "enotif_subject_deleted": "{{gender:$2|Korisnik|Korisnica}} $2 {{gender:$2|obrisao|obrisala}} je stranicu $1 projekta {{SITENAME}}",
        "enotif_subject_created": "{{gender:$2|Korisnik|Korisnica}} $2 {{gender:$2|napravio|napravila}} je stranicu $1 projekta {{SITENAME}}",
        "delete-legend": "Obriši",
        "historywarning": "<strong>Upozorenje</strong>: Stranica koju želite da obrišete ima historiju sa otprilike $1 {{PLURAL:$1|revizijom|revizije|revizija}}:",
        "confirmdeletetext": "Brisanjem ćete obrisati stranicu ili sliku zajedno sa historijom iz baze podataka, ali će se iste moći vratiti kasnije.\nMolim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].",
-       "actioncomplete": "Akcija završena",
+       "actioncomplete": "Radnja je izvršena",
        "actionfailed": "Akcija nije uspjela",
-       "deletedtext": "Članak \"$1\" je obrisan.\nPogledajte $2 za zapisnik nedavnih brisanja.",
+       "deletedtext": "Stranica \"$1\" je obrisana.\nPogledajte $2 za zapisnik nedavnih brisanja.",
        "dellogpage": "Zapisnik brisanja",
-       "dellogpagetext": "Ispod je spisak najskorijih brisanja.",
+       "dellogpagetext": "Ispod je spisak nedavno obrisanih stavki.",
        "deletionlog": "zapisnik brisanja",
-       "reverted": "Vraćeno na prijašnju reviziju",
+       "reverted": "Vraćeno na raniju verziju",
        "deletecomment": "Razlog:",
        "deleteotherreason": "Ostali/dodatni razlozi:",
        "deletereasonotherlist": "Ostali razlozi",
        "deleteprotected": "Ne možete obrisati ovu stranicu jer je zaštićena.",
        "deleting-backlinks-warning": "'''Upozorenje:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Druge stranice]] sadrže link ili vode na stranicu koju brišete.",
        "rollback": "Vrati izmjene",
-       "rollbacklink": "vrati",
+       "rollbacklink": "ukloni",
        "rollbacklinkcount": "vrati $1 {{PLURAL:$1|izmjenu|izmjene|izmjena}}",
        "rollbacklinkcount-morethan": "vrati više od $1 {{PLURAL:$1|izmjene|izmjene|izmjena}}",
-       "rollbackfailed": "Vraćanje nije uspjelo",
-       "cantrollback": "Ne može se vratiti izmjena; posljednji autor je ujedno i jedini.",
+       "rollbackfailed": "Neuspešno vraćanje",
+       "cantrollback": "Ne mogu vratiti izmjenu;\nposljednji autor je ujedno i jedini.",
        "alreadyrolled": "Ne može se vratiti posljednja izmjena [[:$1]] od korisnika [[User:$2|$2]] ([[User talk:$2|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); neko je već izmijenio ili vratio članak na prethodnu provjerenu verziju.\n\nPosljednju izmjenu napravio je korisnik [[User:$3|$3]] ([[User talk:$3|razgovor]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Sažetak izmjene je bio: \"''$1''\".",
        "revertpage": "Vraćene izmjene korisnika [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na posljednju izmjenu koju je napravio [[User:$1|$1]]",
        "changecontentmodel-success-title": "Model sadržaja je promijenjen",
        "changecontentmodel-success-text": "Model sadržaja stranice [[:$1]] je promijenjen.",
        "changecontentmodel-cannot-convert": "Model sadržaja stranice [[:$1]] se ne može pretvoriti u vrstu $2.",
-       "changecontentmodel-title-cantexist": "Ne može postojati stranica na $1.",
        "changecontentmodel-nodirectediting": "Model sadržaja $1 ne podržava izravno uređivanje",
        "log-name-contentmodel": "Zapisnik promjene modela sadržaja",
        "log-description-contentmodel": "Događaji koji su povezani s modelom sadržaja stranice",
        "logentry-contentmodel-change-revertlink": "vrati",
        "logentry-contentmodel-change-revert": "vrati",
        "protectlogpage": "Zapisnik zaključavanja",
-       "protectlogtext": "Ispod je spisak promjena zaštićenja stranice.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled trenutno operativnih zaštita stranica.",
+       "protectlogtext": "Ispod je spisak promjena zaštićenja stranice.\nPogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled trenutno zaštićenih stranica.",
        "protectedarticle": "stranica \"[[$1]]\" je zaštićena",
        "modifiedarticleprotection": "promijenjen stepen zaštite za \"[[$1]]\"",
-       "unprotectedarticle": "uklonjena zaštita za \"[[$1]]\"",
+       "unprotectedarticle": "uklonjena zaštita sa stranice \"[[$1]]\"",
        "movedarticleprotection": "podešavanja zaštite premještena sa \"[[$2]]\" na \"[[$1]]\"",
        "protect-title": "Zaštićuje se \"$1\"",
        "protect-title-notallowed": "Pregled stepena zaštite za \"$1\"",
        "protect-locked-dblock": "Nivoi zaštite ne mogu se mijenjati jer je aktivna baza podataka zaključana.\nTrenutna postavka za stranicu '''$1''' jest:",
        "protect-locked-access": "Nemate ovlasti za mijenjanje stepena zaštite.\nSlijede trenutne postavke stranice '''$1''':",
        "protect-cascadeon": "Ova stranica je trenutno zaštićena jer je uključena u {{PLURAL:$1|stranicu, koja ima|stranice, koje imaju}} uključenu prenosivu zaštitu.\nPromjene stepena zaštite ove stranice neće utjecati na prenosnu zaštitu.",
-       "protect-default": "Dopusti svim korisnicima",
+       "protect-default": "Dopušteno svim korisnicima",
        "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-level-autoconfirmed": "Dopušteno samo automatski potvrđenim korisnicima",
+       "protect-level-sysop": "Dopušteno samo administratorima",
        "protect-summary-cascade": "prenosna zaštita",
        "protect-expiring": "ističe $1 (UTC)",
        "protect-expiring-local": "ističe $1",
        "protect-expiry-indefinite": "neograničeno",
-       "protect-cascade": "Zaštiti sve stranice koje su uključene u ovu (kaskadna zaštita)",
+       "protect-cascade": "Prenosiva zaštita - zaštiti sve stranice koje su uključene u ovu.",
        "protect-cantedit": "Ne možete mijenjati nivo zaštite ove stranice, jer nemate prava da je uređujete.",
        "protect-othertime": "Ostali period:",
        "protect-othertime-op": "ostali period",
        "minimum-size": "Najmanja veličina",
        "maximum-size": "Najveća veličina:",
        "pagesize": "(bajta)",
-       "restriction-edit": "Uredi",
+       "restriction-edit": "Uređivanje",
        "restriction-move": "Premještanje",
        "restriction-create": "Napravi",
        "restriction-upload": "Postavljanje",
        "restriction-level-sysop": "potpuno zaštićeno",
        "restriction-level-autoconfirmed": "poluzaštićeno",
        "restriction-level-all": "svi nivoi",
-       "undelete": "Pogledaj izbrisane stranice",
-       "undeletepage": "Pogledaj i vrati izbrisane stranice",
+       "undelete": "Pregled obrisanih stranica",
+       "undeletepage": "Pregled i vraćanje obrisanih stranica",
        "undeletepagetitle": "'''Sljedeći sadržaj prikazuje obrisane revizije od [[:$1|$1]]'''.",
-       "viewdeletedpage": "Pogledaj izbrisane stranice",
+       "viewdeletedpage": "Pregled obrisanih stranica",
        "undeletepagetext": "{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.\nArhiva moše biti periodično čišćena.",
        "undelete-fieldset-title": "Vraćanje revizija",
-       "undeleteextrahelp": "Da vratite cijelu historiju članka, ostavite sve kutijice neoznačene i kliknite '''''{{int:undeletebtn}}'''''.\nDa bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
+       "undeleteextrahelp": "Da biste vratili cijelu historiju stranice, ostavite sve kućice neoznačene i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.\nDa biste vratili određene stranice, izaberite verzije koje želite vratiti i kliknite na <strong><em>{{int:undeletebtn}}</em></strong>.",
        "undeleterevisions": "{{PLURAL:$1|$1 revizija arhivirana|$1 revizije arhivirane|$1 revizija arhivirano}}",
-       "undeletehistory": "Ako vratite stranicu, sve će revizije biti vraćene u njenu historiju.\nAko je nova stranica istog imena napravljena od brisanja, vraćene revizije pojavit će se u njenoj ranijoj historiji.",
+       "undeletehistory": "Ako vratite stranicu, sve će verzije biti vraćene u njenu historiju.\nAko je u međuvremenu napravljena nova verzija s istim nazivom, vraćene verzije će se pojaviti njenoj ranijoj historiji.",
        "undeleterevdel": "Vraćanje obrisanog se neće izvršiti ako bi rezultiralo da zaglavlje stranice ili revizija datoteke bude djelimično obrisano.\nU takvim slučajevima, morate ukloniti označene ili otkriti sakrivene najskorije obrisane revizije.",
-       "undeletehistorynoadmin": "Ova stranica je izbrisana.  Ispod se nalazi dio historije brisanja i historija revizija izbrisane stranice.  Tekst izbrisane stranice je vidljiv samo korisnicima koji su administratori.",
+       "undeletehistorynoadmin": "Ova stranica je obrisana.\nRazlog za brisanje se nalazi ispod, zajedno s detaljima o korisniku koji je mijenjao stranicu prije brisanja.\nTekst obrisanih verzija dostupan je samo administratorima.",
        "undelete-revision": "Obrisana revizija stranice $1 (dana $4, u $5) od strane $3:",
        "undeleterevision-missing": "Nepoznata ili nedostajuća revizija.\nMožda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arhive.",
        "undelete-nodiff": "Nije pronađena ranija revizija.",
        "undeleteviewlink": "pogledaj",
        "undeleteinvert": "Izmijeni odabir",
        "undeletecomment": "Razlog:",
-       "undeletedrevisions": "{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}",
-       "undeletedrevisions-files": "{{PLURAL:$1|1 revizija|$1 revizije|$1 revizija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno",
+       "undeletedrevisions": "{{PLURAL:$1|$1 verzija vraćena|$1 verzije vraćene|$1 verzija vraćeno}}",
+       "undeletedrevisions-files": "{{PLURAL:$1|1 verzija|$1 verzije|$1 verzija}} i {{PLURAL:$2|1 datoteka|$2 datoteke|$2 datoteka}} vraćeno",
        "undeletedfiles": "{{PLURAL:$1|1 datoteka vraćena|$1 datoteke vraćene|$1 datoteka vraćeno}}",
        "cannotundelete": "Vraćanje nije uspjelo:\n$1",
        "undeletedpage": "'''$1 je vraćena'''\n\nProvjerite [[Special:Log/delete|zapis brisanja]] za zapise najskorijih brisanja i vraćanja.",
        "undelete-error-long": "Desile su se pogreške pri vraćanju datoteke:\n\n$1",
        "undelete-show-file-confirm": "Da li ste sigurni da želite pogledati obrisanu reviziju datoteke \"<nowiki>$1</nowiki>\" od $2 u $3?",
        "undelete-show-file-submit": "Da",
-       "namespace": "Vrsta članka:",
+       "namespace": "Imenski prostor:",
        "invert": "Sve osim odabranog",
        "tooltip-invert": "Označite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je označeno)",
        "tooltip-whatlinkshere-invert": "Označite ovu kutiju za sakrivanje linkova sa stranica u izabranom imenskom prostoru.",
        "blanknamespace": "(Glavno)",
        "contributions": "Doprinosi {{GENDER:$1|korisnika|korisnice|korisnika}}",
        "contributions-title": "Doprinosi korisnika $1",
-       "mycontris": "Doprinos",
+       "mycontris": "Doprinosi",
        "contribsub2": "Za {{GENDER:$3|$1}} ($2)",
        "contributions-userdoesnotexist": "Korisnički račun \"$1\" nije registrovan.",
        "nocontribs": "Nisu nađene promjene koje zadovoljavaju ove uslove.",
        "sp-contributions-userrights": "postavke korisničkih prava",
        "sp-contributions-blocked-notice": "Ovaj korisnik je trenutno blokiran. Posljednje stavke zapisnika blokiranja možete pogledati ispod:",
        "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nPosljednje stavke zapisnika blokiranja možete pogledati ispod:",
-       "sp-contributions-search": "Pretraga doprinosa",
+       "sp-contributions-search": "Pretraži doprinose",
        "sp-contributions-username": "IP adresa ili korisničko ime:",
        "sp-contributions-toponly": "Prikaži samo izmjene koje su posljednje revizije",
        "sp-contributions-newonly": "Prikaži samo izmjene kojima su napravljene nove stranice",
        "whatlinkshere-title": "Stranice koje vode na \"$1\"",
        "whatlinkshere-page": "Stranica:",
        "linkshere": "Sljedeći članci vode na '''[[:$1]]''':",
-       "nolinkshere": "Nema linkova na '''[[:$1]]'''.",
-       "nolinkshere-ns": "Nijedna stranica nije povezana sa '''[[:$1]]''' u odabranom imenskom prostoru.",
-       "isredirect": "preusmjerivač",
-       "istemplate": "kao šablon",
+       "nolinkshere": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong>.",
+       "nolinkshere-ns": "Nijedna stranica nije povezana sa <strong>[[:$1]]</strong> u izabranom imenskom prostoru.",
+       "isredirect": "preusmjerenje",
+       "istemplate": "šablon",
        "isimage": "veza na datoteku",
        "whatlinkshere-prev": "{{PLURAL:$1|prethodni|prethodna|prethodnih}} $1",
        "whatlinkshere-next": "{{PLURAL:$1|sljedeći|sljedeća|sljedećih}} $1",
        "ipbreason": "Razlog:",
        "ipbreason-dropdown": "*Najčešći razlozi blokiranja\n**Netačne informacije\n**Uklanjanje sadržaja stranica\n**Postavljanje spam vanjskih linkova\n**Ubacivanje gluposti/grafita\n**Osobni napadi (ili napadačko ponašanje)\n**Čarapare (zloupotreba više korisničkih računa)\n**Neprihvatljivo korisničko ime",
        "ipb-hardblock": "Onemogući prijavljene korisnike da uređuju sa ove IP adrese",
-       "ipbcreateaccount": "Onemogući pravljenje računa",
+       "ipbcreateaccount": "Spriječi pravljenje računa",
        "ipbemailban": "Onemogući korisnika da šalje e-mail",
        "ipbenableautoblock": "Automatski blokiraj posljednju IP-adresu koju je koristio ovaj korisnik i sve druge IP-adrese s kojih je pokušao uređivati",
        "ipbsubmit": "Blokirajte ovog korisnika",
        "unblockip": "Odblokiraj korisnika",
        "unblockiptext": "Upotrebite donji upitnik da bi ste vratili\npravo pisanja ranije blokiranoj IP adresi\nili korisničkom imenu.",
        "ipusubmit": "Ukloni ovu blokadu",
-       "unblocked": "[[User:$1|$1]] je deblokiran",
+       "unblocked": "[[User:$1|$1]] je deblokiran.",
        "unblocked-range": "$1 je deblokiran",
        "unblocked-id": "Blokada ID oznake $1 je uklonjena",
        "unblocked-ip": "[[Special:Contributions/$1|$1]] je deblokiran.",
        "ipblocklist-submit": "Traži",
        "ipblocklist-localblock": "Lokalna blokada",
        "ipblocklist-otherblocks": "Ostale {{PLURAL:$1|blokada|blokade}}",
-       "infiniteblock": "nije ograničena",
+       "infiniteblock": "neograničeno",
        "expiringblock": "ističe dana $1 u $2",
        "anononlyblock": "samo anonimni korisnici",
        "noautoblockblock": "automatsko blokiranje onemogućeno",
-       "createaccountblock": "blokirano pravljenje računa",
-       "emailblock": "e-mail blokiran",
+       "createaccountblock": "onemogućeno pravljenje računa",
+       "emailblock": "blokirana e-pošta",
        "blocklist-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
        "ipblocklist-empty": "Spisak blokiranja je prazan.",
        "ipblocklist-no-results": "Tražena IP adresa ili korisničko ime nisu blokirani.",
        "blocklogtext": "Ispod je spisak blokiranja i deblokiranja korisnika.\nAutomatski blokirane IP adrese nisu ispisane ispod.\nPogledajte [[Special:BlockList|spisak blokiranja]] za spisak trenutnih zabrana i blokiranja.",
        "unblocklogentry": "deblokiran $1",
        "block-log-flags-anononly": "samo anonimni korisnici",
-       "block-log-flags-nocreate": "pravljenje računa onemogućeno",
+       "block-log-flags-nocreate": "onemogućeno pravljenje računa",
        "block-log-flags-noautoblock": "automatsko blokiranje onemogućeno",
        "block-log-flags-noemail": "e-mail je blokiran",
        "block-log-flags-nousertalk": "ne može uređivati vlastitu stranicu za razgovor",
        "block-log-flags-angry-autoblock": "omogućeno napredno autoblokiranje",
        "block-log-flags-hiddenname": "korisničko ime sakriveno",
        "range_block_disabled": "Administratorska mogućnost da blokira grupe je isključena.",
-       "ipb_expiry_invalid": "Pogrešno vrijeme trajanja.",
+       "ipb_expiry_invalid": "Neispravno vrijeme isteka.",
        "ipb_expiry_temp": "Sakrivene blokade korisničkih imena moraju biti stalne.",
        "ipb_hide_invalid": "Ne može se onemogućiti ovaj račun; on ima više od {{PLURAL:$1|jedne izmjene|$1 izmjena}}.",
        "ipb_already_blocked": "\"$1\" je već blokiran",
        "ipb-needreblock": "$1 je već blokiran. Da li želite promijeniti postavke?",
        "ipb-otherblocks-header": "Ostale {{PLURAL:$1|blokada|blokade}}",
        "unblock-hideuser": "Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.",
-       "ipb_cant_unblock": "Greška: Blokada sa ID oznakom $1 nije pronađena.\nMožda je već deblokirana.",
+       "ipb_cant_unblock": "Greška: Blokirani ID $1 nije pronađen. Možda je korisnik već deblokiran.",
        "ipb_blocked_as_range": "Greška: IP adresa $1 nije direktno blokirana i ne može se deblokirati.\nMeđutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.",
        "ip_range_invalid": "Netačan raspon IP adresa.",
        "ip_range_toolarge": "Nisu dopuštene blokade veće od /$1.",
-       "proxyblocker": "Bloker proksija",
-       "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proksi.  Molimo vas da kontaktirate vašeg davatelja internetskih usluga (Internet Service Provider-a) ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
+       "proxyblocker": "Zaštita od proxya",
+       "proxyblockreason": "Vaša IP adresa je blokirana jer je ona otvoreni proxy.\nMolimo vas da kontaktirate vašeg davatelja internetskih usluga ili tehničku podršku i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.",
        "sorbsreason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL koji koristi {{SITENAME}}.",
        "sorbs_create_account_reason": "Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.\nNe možete napraviti račun",
        "xffblockreason": "Blokirana je vaša ili IP adresa proxy servera koga koristite, koja se nalazi u zaglavlju X-Forwarded-For. Razlog za blokiranje je bio: $1",
        "movenosubpage": "Ova stranica nema podstranica.",
        "movereason": "Razlog:",
        "revertmove": "vrati",
-       "delete_and_move": "Brisanje i premještanje",
-       "delete_and_move_text": "==Brisanje neophodno==\nOdredišna stranica \"[[:$1]]\" već postoji.\nDa li je želite obrisati kako bi ste mogli izvršiti premještanje?",
+       "delete_and_move": "Obriši i premjesti",
+       "delete_and_move_text": "==Potebno brisanje==\nOdredišna stranica \"[[:$1]]\" već postoji.\nDa li je želite obrisati kako bi ste mogli izvršiti premještanje?",
        "delete_and_move_confirm": "Da, obriši stranicu",
        "delete_and_move_reason": "Obrisano da bi se napravio prostor za premještanje iz \"[[$1]]\"",
        "selfmove": "Izvorni i ciljani naziv su isti; strana ne može da se premjesti preko same sebe.",
        "allmessages-language": "Jezik:",
        "allmessages-filter-submit": "Idi",
        "allmessages-filter-translate": "Prevedi",
-       "thumbnail-more": "uvećajte",
+       "thumbnail-more": "Povećaj",
        "filemissing": "Nedostaje datoteka",
        "thumbnail_error": "Greška pri pravljenju umanjene slike: $1",
        "thumbnail_error_remote": "Poruka o grešci iz $1:\n$2",
        "tooltip-pt-mytalk": "Vaša stranica za razgovor",
        "tooltip-pt-anontalk": "Razgovor o doprinosu sa ove IP adrese",
        "tooltip-pt-preferences": "Vaše postavke",
-       "tooltip-pt-watchlist": "Spisak članaka koje pratite.",
-       "tooltip-pt-mycontris": "Spisak vašeg doprinosa",
+       "tooltip-pt-watchlist": "Spisak stranica koje pratite",
+       "tooltip-pt-mycontris": "Spisak vaših doprinosa",
        "tooltip-pt-login": "Predlažemo da se prijavite, ali nije obvezno.",
        "tooltip-pt-logout": "Odjava sa projekta {{SITENAME}}",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se, međutim to nije obavezno",
        "tooltip-ca-history": "Prethodne verzije ove stranice.",
        "tooltip-ca-protect": "Zaštitite stranicu od budućih izmjena",
        "tooltip-ca-unprotect": "Promijeni zaštitu za ovu stranicu",
-       "tooltip-ca-delete": "Izbrišite ovu stranicu",
+       "tooltip-ca-delete": "Obrišite ovu stranicu",
        "tooltip-ca-undelete": "Vratite izmjene koje su načinjene prije brisanja stranice",
        "tooltip-ca-move": "Premjesti ovu stranicu",
        "tooltip-ca-watch": "Dodajte stranicu u listu praćnih članaka",
-       "tooltip-ca-unwatch": "Izbrišite stranicu sa liste praćnih članaka",
+       "tooltip-ca-unwatch": "Ukloni ovu stranicu sa spiska praćenih članaka",
        "tooltip-search": "Pretraži projekat {{SITENAME}}",
        "tooltip-search-go": "Idi na stranicu s tačno ovim imenom ako postoji",
        "tooltip-search-fulltext": "Pretražite stranice s ovim tekstom",
        "tooltip-t-upload": "Postavi slike i druge medije",
        "tooltip-t-specialpages": "Spisak svih posebnih stranica",
        "tooltip-t-print": "Verzija ove stranice za štampanje",
-       "tooltip-t-permalink": "Stalni link ove verzije stranice",
-       "tooltip-ca-nstab-main": "Pogledajte sadržaj članka",
+       "tooltip-t-permalink": "Trajni link ove verzije stranice",
+       "tooltip-ca-nstab-main": "Pogledajte stranicu sa sadržajem",
        "tooltip-ca-nstab-user": "Pogledajte korisničku stranicu",
        "tooltip-ca-nstab-media": "Pogledajte medija fajl",
-       "tooltip-ca-nstab-special": "Ovo je specijalna stranica i zato je ne možete uređivati",
+       "tooltip-ca-nstab-special": "Ovo je posebna stranica. Ne možete je uređivati.",
        "tooltip-ca-nstab-project": "Pogledajte projekat stranicu",
        "tooltip-ca-nstab-image": "Pogledajte stranicu slike",
        "tooltip-ca-nstab-mediawiki": "Pogledajte sistemsku poruku",
        "tooltip-ca-nstab-template": "Pogledajte šablon",
        "tooltip-ca-nstab-help": "Pogledajte stranicu za pomoć",
        "tooltip-ca-nstab-category": "Pogledajte stranicu kategorije",
-       "tooltip-minoredit": "Naznačite da se radi o maloj izmjeni",
-       "tooltip-save": "Sačuvajte Vaše izmjene",
-       "tooltip-preview": "Pregledajte Vaše izmjene; molimo Vas da koristite ovo prije nego što sačuvate stranicu!",
-       "tooltip-diff": "Prikaži moje izmjene u tekstu.",
-       "tooltip-compareselectedversions": "Pogledajte pazlike između dvije selektovane verzije ove stranice.",
-       "tooltip-watch": "Dodajte ovu stranicu na Vaš spisak praćenih članaka",
+       "tooltip-minoredit": "Označi kao manju izmjenu",
+       "tooltip-save": "Sačuvaj moje izmjene",
+       "tooltip-preview": "Pregledajte svoje izmjene. Preporučeno pri bilo kakvom uređivanju!",
+       "tooltip-diff": "Prikaži moje izmjene u tekstu",
+       "tooltip-compareselectedversions": "Uporedi razliku između dvije izabrane verzije ove stranice",
+       "tooltip-watch": "Dodaj ovu stranicu na svoj spisak praćenih članaka",
        "tooltip-watchlistedit-normal-submit": "Ukloni naslove",
        "tooltip-watchlistedit-raw-submit": "Ažuriraj spisak praćenja",
        "tooltip-recreate": "Ponovno pravljenje stranice iako je već brisana",
        "nocredits": "Autori ove stranice nisu navedeni.",
        "spamprotectiontitle": "Filter za zaštitu od neželjenih poruka",
        "spamprotectiontext": "Strana koju želite da sačuvate je blokirana od strane filtera za neželjene poruke.\nOvo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.",
-       "spamprotectionmatch": "Sljedeći tekst aktivirao je naš filter za neželjene poruke: $1",
+       "spamprotectionmatch": "Sljedeći tekst je aktivirao naš filter za neželjene poruke: $1",
        "spambot_username": "MediaWiki čišćenje spama",
        "spam_reverting": "Vraćanje na posljednju verziju koja ne sadrži linkove ka $1",
        "spam_blanking": "Sve revizije koje sadrže linkove ka $1, očisti",
        "file-info-size": "$1 × $2 piksela, veličina datoteke: $3, MIME tip: $4",
        "file-info-size-pages": "$1 × $2 piksela, veličina datoteke: $3, MIME vrsta: $4, $5 {{PLURAL:$5|stranica|stranice|stranica}}",
        "file-nohires": "Veća rezolucija nije dostupna.",
-       "svg-long-desc": "SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3",
+       "svg-long-desc": "SVG datoteka, nominalno $1 × $2 piksela, veličina datoteke: $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": "Izvorna datoteka",
        "file-no-thumb-animation-gif": "'''Napomena: Zbog tehničkih ograničenja, minijature GIF slika visoke rezolucije kao što je ova neće biti animirane.'''",
        "newimages": "Galerija novih slika",
        "imagelisttext": "Ispod je spisak od '''$1''' {{PLURAL:$1|datoteke|datoteke|datoteka}} poredanih $2.",
-       "newimages-summary": "Ova specijalna stranica prikazuje posljednje postavljene datoteke.",
+       "newimages-summary": "Ova posebna stranica prikazuje nedavno postavljene datoteke.",
        "newimages-legend": "Filter",
        "newimages-label": "Ime datoteke (ili dio imena):",
        "newimages-showbots": "Pokaži datoteke koje su poslali botovi",
-       "noimages": "Ništa za prikazati.",
+       "noimages": "Nema ništa.",
        "ilsubmit": "Traži",
        "bydate": "po datumu",
        "sp-newimages-showfrom": "Prikaz novih datoteka počev od $2, $1",
        "confirmemail_oncreate": "Kod za potvrđivanje Vam je poslat na Vašu e-mail adresu.\nTaj kod nije neophodan za prijavljivanje, ali Vam ne potreban kako bi ste omogućili funkcije wikija zasnovane na e-mailu.",
        "confirmemail_sendfailed": "{{SITENAME}} Vam ne može poslati poštu za potvrđivanje. Provjerite adresu zbog nepravilnih karaktera.\n\nPovratna pošta: $1",
        "confirmemail_invalid": "Netačan kod za potvrdu. Moguće je da je kod istekao.",
-       "confirmemail_needlogin": "Morate $1 da bi ste potvrdili Vašu e-mail adresu.",
+       "confirmemail_needlogin": "Morate biti $1 da biste potvrdili adresu vaše e-pošte.",
        "confirmemail_success": "Adresa vaše e-pošte je potvrđena. Možete sad da se prijavite i uživate u viki.",
        "confirmemail_loggedin": "Adresa Vaše e-pošte je potvrđena.",
        "confirmemail_subject": "{{SITENAME}} – adresa e-pošte za potvrđivanje",
        "table_pager_prev": "Prethodna stranica",
        "table_pager_first": "Prva stranica",
        "table_pager_last": "Posljednja stranica",
-       "table_pager_limit": "Pokaži $1 stavki po stranici",
+       "table_pager_limit": "Prikaži $1 stavki po stranici",
        "table_pager_limit_label": "Stavke po stranici:",
        "table_pager_limit_submit": "Idi",
-       "table_pager_empty": "Bez rezultata",
-       "autosumm-blank": "Uklanjanje sadržaja stranice",
-       "autosumm-replace": "Zamjena stranice sa '$1'",
+       "table_pager_empty": "Nema rezultata",
+       "autosumm-blank": "Uklonjen cjelokupan sadržaj stranice",
+       "autosumm-replace": "Zamijenjen sadržaj stranice sa \"$1\"",
        "autoredircomment": "Preusmjereno na [[$1]]",
-       "autosumm-new": "Napravljena stranica sa '$1'",
+       "autosumm-new": "Nova stranica: $1",
        "autosumm-newblank": "Napravljena prazna stranica",
        "size-bytes": "$1 B",
        "size-kilobytes": "$1 KB",
        "watchlistedit-clear-done": "Vaš spisak praćenja je očišćen.",
        "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova su uklonjena|$1 naslova je uklonjeno}}:",
        "watchlistedit-too-many": "Ima previše stranica za prikaz ovdje.",
-       "watchlisttools-clear": "Očisti spisak nadgledanja",
+       "watchlisttools-clear": "Očisti spisak praćenja",
        "watchlisttools-view": "Pogledaj srodne izmjene",
        "watchlisttools-edit": "Pogledaj i uredi spisak praćenja",
        "watchlisttools-raw": "Uredi spisak praćenja u okviru za uređivanje",
        "redirect-revision": "Verzija stranice",
        "redirect-file": "Naziv datoteke",
        "redirect-not-exists": "Vrijednost nije pronađena",
-       "fileduplicatesearch": "Pretraga za duplim datotekama",
+       "fileduplicatesearch": "Pretraga duplikata",
        "fileduplicatesearch-summary": "Pretraga za duplim datotekama na bazi njihove haš vrijednosti.",
        "fileduplicatesearch-legend": "Pretraga za dvojnicima",
        "fileduplicatesearch-filename": "Ime datoteke:",
        "tags-edit-nooldid-title": "Neispravna odredišna verzija",
        "tags-edit-nooldid-text": "Niste izabrali odredišnu verziju na koju treba primijeniti ovu funkciju, ili odredišna verzija na postoji.",
        "tags-edit-none-selected": "Izaberite bar jednu oznaku koju treba dodati ili ukloniti.",
-       "comparepages": "Usporedi stranice",
+       "comparepages": "Uporedi stranice",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
        "compare-rev1": "Ispravljanje 1",
        "compare-rev2": "Ispravljanje 2",
-       "compare-submit": "Usporedi",
+       "compare-submit": "Uporedi",
        "compare-invalid-title": "Naslov koji ste unijeli je nevaljan.",
        "compare-title-not-exists": "Naslov koji ste naveli ne postoji.",
        "compare-revision-not-exists": "Izmjena koji ste naveli ne postoji.",
        "expandtemplates": "Proširi šablone",
        "expand_templates_intro": "Ova posebna stranica uzima neki tekst i proširuje sve šablone u njemu rekurzivno.\nOna također proširuje parserske funkcije poput\n<code><nowiki>{{</nowiki>#language:…}}</code> i varijable poput\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. U principu proširuje gotovo sve između dvostrukih zagrada.",
        "expand_templates_title": "Naslov konteksta, za {{FULLPAGENAME}} itd.:",
-       "expand_templates_input": "Tekst unosa:",
+       "expand_templates_input": "Unos:",
        "expand_templates_output": "Rezultat",
        "expand_templates_xml_output": "XML izlaz",
        "expand_templates_html_output": "Sirov HTML prikaz",
index 511d8af..3a1f17f 100644 (file)
@@ -49,7 +49,8 @@
                        "Gerardduenas",
                        "Medol",
                        "Xavier Dengra",
-                       "Pginer"
+                       "Pginer",
+                       "Eduardo Martinez"
                ]
        },
        "tog-underline": "Subratlla els enllaços:",
        "actionthrottledtext": "Com a mesura per a prevenir la propaganda indiscriminada (spam), no podeu fer aquesta acció tantes vegades en un període de temps tan curt. Torneu-ho a intentar d'ací uns minuts.",
        "protectedpagetext": "S'ha protegit la pàgina per evitar-hi modificacions.",
        "viewsourcetext": "Podeu visualitzar i copiar el codi font d’aquesta pàgina:",
-       "viewyourtext": "Vostè pot veure i copiar la font de ' ' les modificacions ' ' d'aquesta pàgina:",
+       "viewyourtext": "Vostè pot veure i copiar la font de <strong>les teves modificacions</strong> d'aquesta pàgina.",
        "protectedinterface": "Aquesta pàgina proporciona el text de la interfície del software d'aquest wiki i està protegida per evitar els abusos.\nPer afegir o canviar les traduccions per a tots els wikis, feu servir [//translatewiki.net/ translatewiki.net], el projecte de localització de MediaWiki.",
        "editinginterface": "'''Avís:''' esteu editant una pàgina que s'utilitza per proporcionar text d'interfície per al programari. Els canvis que es facin a la pàgina afectaran l'aparença de la interfície d'altres usuaris del wiki.",
        "translateinterface": "Per afegir o canviar traduccions per a tots els wikis, utilitzeu [//translatewiki.net/ translatewiki.net], el projecte de localització de MediaWiki.",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|Un usuari vigila|$1 usuaris vigilen}} aquesta pàgina]",
        "rc_categories": "Limita a les categories (separades amb \"|\")",
-       "rc_categories_any": "Qualsevol",
+       "rc_categories_any": "Qualsevol de les triades",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} després del canvi",
        "newsectionsummary": "/* $1 */ secció nova",
        "upload-too-many-redirects": "La URL conté massa redireccions",
        "upload-http-error": "Ha ocorregut un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "Les càrregues de còpia no són disponibles des d'aquest domini.",
+       "upload-dialog-title": "Carrega un fitxer",
+       "upload-dialog-error": "S’ha produït un error",
+       "upload-dialog-button-cancel": "Cancel·la",
+       "upload-dialog-button-done": "Fet",
+       "upload-dialog-button-save": "Desa",
+       "upload-dialog-button-upload": "Carrega",
+       "upload-dialog-label-select-file": "Seleccioneu fitxer",
+       "upload-dialog-label-infoform-title": "Detalls",
+       "upload-dialog-label-infoform-name": "Nom",
+       "upload-dialog-label-infoform-description": "Descripció",
+       "upload-dialog-label-usage-title": "Ús",
+       "upload-dialog-label-usage-filename": "Nom del fitxer",
        "backend-fail-stream": "No s'ha pogut transmetre el fitxer $1.",
        "backend-fail-backup": "No s'ha pogut fer una còpia de seguretat del fitxer $1.",
        "backend-fail-notexists": "El fitxer $1 no existeix.",
        "rollback-success": "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
        "sessionfailure-title": "Error de sessió",
        "sessionfailure": "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
+       "changecontentmodel-legend": "Canvia el model de contingut",
        "changecontentmodel-title-label": "Títol de la pàgina",
        "changecontentmodel-model-label": "Nou model de contingut",
        "changecontentmodel-reason-label": "Motiu:",
+       "changecontentmodel-success-title": "S'ha canviat el model de contingut",
+       "changecontentmodel-success-text": "S'ha canviat el tipus de contingut de [[:$1]].",
+       "changecontentmodel-cannot-convert": "El contingut a [[:$1]] no es pot convertir a un tipus de $2.",
+       "changecontentmodel-nodirectediting": "El model de contingut $1 no permet l'edició directa",
+       "log-name-contentmodel": "Registre de canvis del model de contingut",
+       "log-description-contentmodel": "Esdeveniments relacionats amb els models de contingut d'una pàgina",
        "logentry-contentmodel-change-revertlink": "reverteix",
        "logentry-contentmodel-change-revert": "reverteix",
        "protectlogpage": "Registre de protecció",
        "htmlform-title-badnamespace": "[[:$1]] no es troba en l'espai de noms \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" és un títol de pàgina no editable",
        "htmlform-title-not-exists": "[[:$1]] no existeix.",
+       "htmlform-user-not-exists": "<strong>$1</strong> no existeix.",
+       "htmlform-user-not-valid": "<strong>$1</strong> no és nom d'usuari vàlid.",
        "sqlite-has-fts": "$1, amb suport de búsqueda de text íntegre",
        "sqlite-no-fts": "$1, sense supor de búsqueda de text íntegre",
        "logentry-delete-delete": "$1 {{GENDER:$2|ha esborrat}} la pàgina $3",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "guió curt",
        "special-characters-title-emdash": "guió llarg",
-       "special-characters-title-minus": "signe menys"
+       "special-characters-title-minus": "signe menys",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
+       "mw-widgets-titleinput-description-new-page": "la pàgina no existeix encara",
+       "mw-widgets-titleinput-description-redirect": "redirigeix a $1"
 }
index 0759943..3992509 100644 (file)
@@ -8,7 +8,8 @@
                        "Sasan700",
                        "Умар",
                        "아라",
-                       "Kaganer"
+                       "Kaganer",
+                       "Исмаил Садуев"
                ]
        },
        "tog-underline": "КӀел сиз хьакха хьажорган:",
        "undo-summary": "Юхадаьккхина {{GENDER:$2|декъашхочун}} [[Special:Contributions/$2|$2]] ([[User talk:$2|дийц.]]) нисдар $1",
        "undo-summary-username-hidden": "Юхадаьккхина декъашхочун нисдарш $1, цунна цӀе дӀахьулйина",
        "cantcreateaccounttitle": "Декъашхочун дӀаяздар кхолла йиш яц",
-       "viewpagelogs": "Гайта хlокху агlонан тептар",
+       "viewpagelogs": "Гайта хӀокху агӀонан тептар",
        "nohistory": "ХӀокху агӀона хийцамаш бина хила бац.",
        "currentrev": "Карара верси",
        "currentrev-asof": "Карара верси $1",
        "diff-empty": "(башхалла яц)",
        "diff-multi-sameuser": "(ца {{PLURAL:$1|гайтина юккъера цхьа верси|гайтина юккъера цхьа версеш}} оьцу декъашхочун)",
        "diff-multi-otherusers": "(ца {{PLURAL:$1|гайтина юккъера верси|гайтина юккъера версеш}} {{PLURAL:$2|кхин цхьан декъашхочун|$2 декъашхойн}})",
-       "diff-multi-manyusers": "({{PLURAL:$1|гайÑ\82ина Ñ\8fÑ\86 $1 Ñ\8eккÑ\8aеÑ\80а Ð²ÐµÑ\80Ñ\81и, Ð¹Ð¸Ð½Ð°|не Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ñ\8b $1 юккъера версеш, йина}} {{PLURAL:$2|$2 декъашхочо|$2 декъашхоша}})",
+       "diff-multi-manyusers": "({{PLURAL:$1|гайÑ\82ина Ñ\8fÑ\86 $1 Ñ\8eккÑ\8aеÑ\80а Ð²ÐµÑ\80Ñ\81и, Ð¹Ð¸Ð½Ð°|гайÑ\82ина Ñ\8fÑ\86 $1 юккъера версеш, йина}} {{PLURAL:$2|$2 декъашхочо|$2 декъашхоша}})",
        "searchresults": "Карийнарш",
        "searchresults-title": "Лахар «$1»",
        "titlematches": "АгӀонийн цӀерш цхьаьнанисялар",
        "search-category": "(категори $1)",
        "search-file-match": "(файлан чулацаме тера хилар)",
        "search-suggest": "Хила мега ахьа лоьхарг: $1",
+       "search-rewritten": "Гайтина карийнарш $1. Цуна метта лаха $2.",
        "search-interwiki-caption": "Гергара проекташ",
        "search-interwiki-default": "$1 хилам:",
        "search-interwiki-more": "(кхин)",
        "recentchanges-legend": "Керлачу хийцамийн нисдарш",
        "recentchanges-summary": "Лахахь гайтина хене хьаьжжина Википедин агӀонашкахь тӀаьхьара бина хийцамаш",
        "recentchanges-noresult": "Билгал йинчу хенахь цхьа хийцамаш бина бац.",
-       "recentchanges-feed-description": "Тергам бе тlаьхьара вики хийцаман хlокху ларца.",
+       "recentchanges-feed-description": "Тергам бе тӀаьххьара вики хийцаман хӀокху ларца.",
        "recentchanges-label-newpage": "Оцу нисдарца кхоьллина керла агӀо.",
        "recentchanges-label-minor": "Хlара нисдинарг къастийна жимо долушсан",
        "recentchanges-label-bot": "ХӀара нисдар бото дина",
        "removedwatchtext": "АгӀо «[[:$1]]» дӀаяьккхина яра хьан [[Special:Watchlist|тергаме могӀанан юкъар]].",
        "removedwatchtext-short": "«$1» агӀо хьан тергаман магӀам чура дӀаяьккхина.",
        "watch": "Тидам бе",
-       "watchthispage": "Тергам бé хlокху агlон",
+       "watchthispage": "Тергам бé хӀокху агӀона",
        "unwatch": "Тергамах къаста",
        "unwatchthispage": "ДӀадаккха терго яр",
        "notanarticle": "Бац яззам",
        "tooltip-ca-edit": "Тае хӀара агӀо",
        "tooltip-ca-addsection": "Кхолла керла дакъа",
        "tooltip-ca-viewsource": "Хlара агlо хийцам цабайта гароллехь ю, хьоьга далундерг хьажар а дезахь чура йоза хьаэцар",
-       "tooltip-ca-history": "Хlокху агlон хийцамаш болу тептар",
+       "tooltip-ca-history": "ХӀокху агӀона хийцамаш болу тептар",
        "tooltip-ca-protect": "Ларъе агӀо хийцамаш цабайта",
        "tooltip-ca-unprotect": "Дlадаккха хlокху агlонна долу гаролла",
        "tooltip-ca-delete": "ДӀаяккха хӀара агӀо",
        "tooltip-n-help": "ГӀоде меттиг",
        "tooltip-t-whatlinkshere": "Массо агӀон могӀам, хӀокху агӀонтӀе хьажийна йолу",
        "tooltip-t-recentchangeslinked": "Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо",
-       "tooltip-feed-rss": "Хьагайтар оцу RSS цани хlокху агlон",
+       "tooltip-feed-rss": "ХӀокху агӀона трансляци RSS-рца",
        "tooltip-feed-atom": "Хьагайтар оцу Atom цани хlокху агlон",
        "tooltip-t-contributions": "ХӀокху декъашхочо хийцина йолу агӀонийн могӀам",
        "tooltip-t-emailuser": "ДӀабахьийта хаам оцу декъашхона",
        "tooltip-t-upload": "Чуйаха файлаш",
        "tooltip-t-specialpages": "Белхан агӀонанийн могӀам",
-       "tooltip-t-print": "Хlокху агlонна зорба туху башхо",
+       "tooltip-t-print": "ХӀокху агӀонна зорба туху башхо",
        "tooltip-t-permalink": "Даима йолу хьажорг хӀокху башха агӀонна",
        "tooltip-ca-nstab-main": "Яззамна чулацам",
        "tooltip-ca-nstab-user": "ХӀора декъашхочун долахь йолу агӀо ю",
index c8828d1..deae105 100644 (file)
        "last": "сонъки",
        "page_first": "ильк",
        "page_last": "сонъки",
-       "histlegend": "Фаркъ сайланувы: Тенъештирмеге истеген эки версиянъызны сайлап '''{{int:compare-submit}}''' дёгмесине басынъыз.<br />\nАнълатмалар: '''({{int:cur}})''' = шимдики версиянен арасындаки фаркъ, '''({{int:last}})''' = эвельки версиянен арасындаки фаркъ, '''{{int:minoreditletter}}''' = кичик денъиштирме.",
+       "histlegend": "Фаркъ сайланувы: тенъештириледжек эки версияны сайлап '''{{int:compare-submit}}''' дёгмесине басынъыз.<br />\nАнълатмалар: '''({{int:cur}})''' = шимдики версиянен арасындаки фаркъ, '''({{int:last}})''' = эвельки версиянен арасындаки фаркъ, '''{{int:minoreditletter}}''' = кичик денъиштирме.",
        "history-fieldset-title": "Кечмишке бакъув",
        "history-show-deleted": "Тек ёкъ этильгенлер",
-       "histfirst": "Энъ эски",
-       "histlast": "Энъ янъы",
+       "histfirst": "энъ эски",
+       "histlast": "энъ янъы",
        "historysize": "({{PLURAL:$1|1=1 байт|$1 байт}})",
        "historyempty": "(бош)",
        "history-feed-title": "Денъиштирмелер тарихы",
        "revertmerge": "Айыр",
        "mergelogpagetext": "Саифелернинъ кечмиш версияларынынъ бир-бирлеринен энъ сонъки бирлештирильмелери ашагъыдаки джедвельде косьтерильген.",
        "history-title": "\"$1\" саифесининъ денъиштирмелер тарихы",
+       "difference-title": "«$1» саифесининъ версиялары арасындаки фаркъ",
+       "difference-title-multipage": "«$1» иле «$2» саифелери арасындаки фаркъ",
        "difference-multipage": "(Саифелер арасындаки фаркъ)",
        "lineno": "$1 сатыр:",
        "compareselectedversions": "Сайлангъан версияларны тенъештир",
        "showhideselectedversions": "Сайлангъан версияларны косьтер/гизле",
        "editundo": "лягъу эт",
+       "diff-empty": "(фаркъ ёкъ)",
        "diff-multi-manyusers": "($2-ден зияде {{PLURAL:$2|1=къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)",
        "searchresults": "Къыдырув нетиджелери",
        "searchresults-title": "«$1» ичюн къыдырув нетиджелери",
        "notextmatches": "Ич бир саифеде тапыламады",
        "prevn": "эвельки {{PLURAL:$1|$1}}",
        "nextn": "сонъраки {{PLURAL:$1|$1}}",
+       "prev-page": "эвельки саифе",
+       "next-page": "сонъраки саифе",
        "prevn-title": "Эвельки $1 {{PLURAL:$1|1=нетидже|нетидже}}",
        "nextn-title": "Сонъраки $1 {{PLURAL:$1|1=нетидже|нетидже}}",
        "shown-title": "Саифе башына $1 {{PLURAL:$1|1=нетидже|нетидже}} косьтер",
        "nlinks": "{{PLURAL:$1|1=1 багъланты|$1 багъланты}}",
        "nmembers": "{{PLURAL:$1|1=1 аза|$1 аза}}",
        "nrevisions": "{{PLURAL:$1|1=1 версия|$1 версия}}",
-       "nviews": "{{PLURAL:$1|1=1 корюнюв|$1 корюнюв}}",
        "specialpage-empty": "Бу соратма ичюн ич нетидже ёкъ.",
        "lonelypages": "Озюне ич багъланты олмагъан саифелер",
        "lonelypagestext": "Ашагъыдаки саифелерге {{SITENAME}} сайтындаки дигер саифелерден багъланты берильмеген, ондан да гъайры мезкюр саифелер дигер саиферлрге кирсетильмеген.",
index 47e30dd..a102c17 100644 (file)
        "last": "soñki",
        "page_first": "ilk",
        "page_last": "soñki",
-       "histlegend": "Farq saylanuvı: Teñeştirmege istegen eki versiyañıznı saylap '''{{int:compare-submit}}''' dögmesine basıñız.<br />\nAñlatmalar: '''({{int:cur}})''' = şimdiki versiyanen arasındaki farq, '''({{int:last}})''' = evelki versiyanen arasındaki farq, '''{{int:minoreditletter}}''' = kiçik deñiştirme.",
+       "histlegend": "Farq saylanuvı: teñeştirilecek eki versiyanı saylap '''{{int:compare-submit}}''' dögmesine basıñız.<br />\nAñlatmalar: '''({{int:cur}})''' = şimdiki versiyanen arasındaki farq, '''({{int:last}})''' = evelki versiyanen arasındaki farq, '''{{int:minoreditletter}}''' = kiçik deñiştirme.",
        "history-fieldset-title": "Keçmişke baquv",
        "history-show-deleted": "Tek yoq etilgenler",
-       "histfirst": "Eñ eski",
-       "histlast": "Eñ yañı",
+       "histfirst": "eñ eski",
+       "histlast": "eñ yañı",
        "historysize": "({{PLURAL:$1|1 bayt|$1 bayt}})",
        "historyempty": "(boş)",
-       "history-feed-title": "Deñiştirmeler tarihı",
-       "history-feed-description": "Vikide bu saifeniñ deñiştirmeler tarihı",
+       "history-feed-title": "Deñiştirüv tarihı",
+       "history-feed-description": "Vikide bu saifeni deñiştirüv tarihı",
        "history-feed-item-nocomment": "$2 üstünde $1",
        "history-feed-empty": "İstenilgen saife yoq.\nO yoq eilgen ya da adı deñiştirilgen ola bile.\nVikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].",
        "rev-deleted-comment": "(deñiştirmeniñ tarifi yoq etildi)",
        "revdel-restore": "körünüvni deñiştir",
        "revertmerge": "Ayır",
        "mergelogpagetext": "Saifelerniñ keçmiş versiyalarınıñ bir-birlerinen eñ soñki birleştirilmeleri aşağıdaki cedvelde kösterilgen.",
-       "history-title": "\"$1\" saifesiniñ deñiştirmeler tarihı",
+       "history-title": "“$1” saifesini deñiştirüv tarihı",
+       "difference-title": "“$1” saifesiniñ versiyaları arasındaki farq",
+       "difference-title-multipage": "“$1” ile “$2” saifeleri arasındaki farq",
        "difference-multipage": "(Saifeler arasındaki farq)",
        "lineno": "$1 satır:",
        "compareselectedversions": "Saylanğan versiyalarnı teñeştir",
        "showhideselectedversions": "Saylanğan versiyalarnı köster/gizle",
        "editundo": "lâğu et",
+       "diff-empty": "(farq yoq)",
        "diff-multi-manyusers": "($2-den ziyade {{PLURAL:$2|qullanıcı|qullanıcı}}nıñ yapqan {{PLURAL:$1|bir ara versiyası|$1 ara versiyası}} kösterilmey)",
        "searchresults": "Qıdıruv neticeleri",
-       "searchresults-title": "\"$1\" içün qıdıruv neticeleri",
+       "searchresults-title": "“$1” içün qıdıruv neticeleri",
        "titlematches": "Saife adı bir kele",
        "textmatches": "Saife metni bir kele",
        "notextmatches": "İç bir saifede tapılamadı",
        "prevn": "evelki {{PLURAL:$1|$1}}",
        "nextn": "soñraki {{PLURAL:$1|$1}}",
+       "prev-page": "evelki saife",
+       "next-page": "soñraki saife",
        "prevn-title": "Evelki $1 {{PLURAL:$1|netice|netice}}",
        "nextn-title": "Soñraki $1 {{PLURAL:$1|netice|netice}}",
        "shown-title": "Saife başına $1 {{PLURAL:$1|netice|netice}} köster",
        "nlinks": "{{PLURAL:$1|1 bağlantı|$1 bağlantı}}",
        "nmembers": "{{PLURAL:$1|1 aza|$1 aza}}",
        "nrevisions": "{{PLURAL:$1|1 versiya|$1 versiya}}",
-       "nviews": "{{PLURAL:$1|1 körünüv|$1 körünüv}}",
        "specialpage-empty": "Bu soratma içün iç netice yoq.",
        "lonelypages": "Özüne iç bağlantı olmağan saifeler",
        "lonelypagestext": "Aşağıdaki saifelerge {{SITENAME}} saytındaki diger saifelerden bağlantı berilmegen, ondan da ğayrı mezkür saifeler diger saiferlrge kirsetilmegen.",
index e20c3eb..e37172f 100644 (file)
@@ -34,6 +34,7 @@
        "tog-hideminor": "Skrýt malé editace v posledních změnách",
        "tog-hidepatrolled": "Skrýt patrolované editace v posledních změnách",
        "tog-newpageshidepatrolled": "Skrýt patrolované stránky v seznamu nových stránek",
+       "tog-hidecategorization": "Skrýt kategorizaci stránek",
        "tog-extendwatchlist": "Na seznamu sledovaných stránek zobrazovat všechny změny, ne jen tu poslední",
        "tog-usenewrc": "V posledních změnách a sledovaných stránkách seskupovat změny podle stránek",
        "tog-numberheadings": "Automaticky číslovat nadpisy",
@@ -63,6 +64,7 @@
        "tog-watchlisthideliu": "Na seznamu sledovaných stránek skrýt editace přihlášených uživatelů",
        "tog-watchlisthideanons": "Na seznamu sledovaných stránek skrýt editace nepřihlášených uživatelů",
        "tog-watchlisthidepatrolled": "Skrýt patrolované editace ve sledovaných stránkách",
+       "tog-watchlisthidecategorization": "Skrýt kategorizaci stránek",
        "tog-ccmeonemails": "Zasílat mi kopie e-mailů, které pošlu jiným uživatelům",
        "tog-diffonly": "Nezobrazovat obsah stránky pod rozdílem verzí",
        "tog-showhiddencats": "Zobrazit skryté kategorie",
        "actionthrottled": "Akce byla pozastavena",
        "actionthrottledtext": "Vzhledem k protispamovým opatřením nemůžete požadovanou akci provádět příliš častokrát v krátké době.\nZkuste to znovu za několik minut.",
        "protectedpagetext": "Tato stránka byla zamčena, aby se předešlo jejímu editování.",
-       "viewsourcetext": "Můžete si prohlédnout a zkopírovat zdrojový kód této stránky:",
-       "viewyourtext": "Můžete si prohlédnout a zkopírovat zdrojový kód <strong>vašich změn</strong> této stránky:",
+       "viewsourcetext": "Můžete si prohlédnout a zkopírovat zdrojový kód této stránky.",
+       "viewyourtext": "Můžete si prohlédnout a zkopírovat zdrojový kód <strong>vašich změn</strong> této stránky.",
        "protectedinterface": "Tato stránka obsahuje text softwarového rozhraní a je zamčena kvůli prevenci zneužití.\nPro přidávání a změny překladů pro všechny wiki použijte [//translatewiki.net/ translatewiki.net], projekt pro lokalizaci MediaWiki.",
        "editinginterface": "<strong>Upozornění:</strong> Editujete stránku, která definuje texty rozhraní.\nZměny této stránky ovlivní vzhled uživatelského rozhraní všem uživatelům této wiki.",
        "translateinterface": "Pro přidávání a změny překladů pro všechny wiki použijte [//translatewiki.net/ translatewiki.net], projekt pro lokalizaci MediaWiki.",
        "search-category": "(kategorie $1)",
        "search-file-match": "(odpovídá obsahu souboru)",
        "search-suggest": "Mysleli jste: $1",
+       "search-rewritten": "Zobrazeny výsledky pro $1. Místo toho hledat $2.",
        "search-interwiki-caption": "Sesterské projekty",
        "search-interwiki-default": "Výsledky z $1:",
        "search-interwiki-more": "(více)",
        "rcshowhidemine": "$1 moje editace",
        "rcshowhidemine-show": "Zobrazit",
        "rcshowhidemine-hide": "Skrýt",
+       "rcshowhidecategorization": "$1 kategorizaci stránek",
+       "rcshowhidecategorization-show": "Zobrazit",
+       "rcshowhidecategorization-hide": "Skrýt",
        "rclinks": "Ukázat $1 posledních změn během posledních $2 dnů<br />\n$3",
        "diff": "rozdíl",
        "hist": "historie",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|sledující uživatel|sledující uživatelé|sledujících uživatelů}}]",
-       "rc_categories": "Omezit na kategorie (oddělené „|“)",
-       "rc_categories_any": "Všechny",
+       "rc_categories": "Omezit na kategorie (oddělené „|“):",
+       "rc_categories_any": "Jakákoli z vybraných",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajty|bajtů}} po změně",
        "newsectionsummary": "Nová sekce /* $1 */",
        "rc-enhanced-expand": "Zobrazit detaily",
        "recentchangeslinked-summary": "Níže je seznam nedávných změn stránek odkazovaných ze zadané stránky (nebo patřících do dané kategorie). Vaše [[Special:Watchlist|sledované stránky]] jsou '''zvýrazněny'''.",
        "recentchangeslinked-page": "Název stránky:",
        "recentchangeslinked-to": "Zobrazit změny na stránkách odkazujících na zadanou stránku",
+       "recentchanges-page-added-to-category": "Stránka [[:$1]] zařazena do kategorie",
+       "recentchanges-page-added-to-category-bundled": "Stránka [[:$1]] a {{PLURAL:$2|jedna další zařazeny|$2 další zařazeny|$2 dalších zařazeno}} do kategorie",
+       "recentchanges-page-removed-from-category": "Stránka [[:$1]] vyřazena z kategorie",
+       "recentchanges-page-removed-from-category-bundled": "Stránka [[:$1]] a {{PLURAL:$2|jedna další vyřazeny|$2 další vyřazeny|$2 dalších vyřazeno}} z kategorie",
        "upload": "Načíst soubor",
        "uploadbtn": "Načíst soubor",
        "reuploaddesc": "Zrušit načítání a vrátit se do formuláře.",
        "upload-too-many-redirects": "URL obsahovalo příliš mnoho přesměrování",
        "upload-http-error": "Došlo k chybě HTTP: $1",
        "upload-copy-upload-invalid-domain": "Načítání kopírováním není dostupné z této domény.",
+       "upload-dialog-title": "Načtení souboru",
+       "upload-dialog-error": "Došlo k chybě",
+       "upload-dialog-button-cancel": "Storno",
+       "upload-dialog-button-done": "Hotovo",
+       "upload-dialog-button-save": "Uložit",
+       "upload-dialog-button-upload": "Načíst",
+       "upload-dialog-label-usage-filename": "Jméno souboru",
        "backend-fail-stream": "Soubor $1 nelze streamovat.",
        "backend-fail-backup": "Soubor $1 nelze zazálohovat.",
        "backend-fail-notexists": "Soubor $1 neexistuje.",
        "watchlistanontext": "Pro prohlížení či úpravu seznamu sledovaných stránek se musíte přihlásit.",
        "watchnologin": "Nejste přihlášen(a)",
        "addwatch": "Přidat do sledovaných stránek",
-       "addedwatchtext": "Stránka „[[:$1]]“ byla přidána mezi stránky, které sledujete.\nVe [[Special:Watchlist|sledovaných stránkách]] se tak budou objevovat budoucí změny této stránky a přidružené diskuse.",
+       "addedwatchtext": "Stránka „[[:$1]]“ a její diskusní stránka byly přidány mezi [[Special:Watchlist|stránky, které sledujete]].",
        "addedwatchtext-short": "Stránka „$1“ byla přidána mezi stránky, které sledujete.",
        "removewatch": "Vyřadit ze sledovaných stránek",
-       "removedwatchtext": "Stránka „[[:$1]]“ byla vyřazena z vašeho [[Special:Watchlist|seznamu sledovaných stránek]].",
+       "removedwatchtext": "Stránka „[[:$1]]“ a její diskusní stránka byly vyřazeny z vašeho [[Special:Watchlist|seznamu sledovaných stránek]].",
        "removedwatchtext-short": "Stránka „$1“ byla vyřazena z vašeho seznamu sledovaných stránek.",
        "watch": "Sledovat",
        "watchthispage": "Sledovat tuto stránku",
        "changecontentmodel-success-title": "Model obsahu byl změněn",
        "changecontentmodel-success-text": "Model obsahu stránky [[:$1]] byl změněn.",
        "changecontentmodel-cannot-convert": "Obsah stránky [[:$1]] nelze zkonvertovat na typ $2.",
-       "changecontentmodel-title-cantexist": "Pod názvem $1 nemůže být stránka.",
        "changecontentmodel-nodirectediting": "Model obsahu $1 nepodporuje přímou editaci",
        "log-name-contentmodel": "Kniha změny modelů obsahu",
        "log-description-contentmodel": "Události týkající se modelů obsahu stránek",
        "undeletepagetext": "{{PLURAL:$1|Následující stránka byla smazána, ale je dosud v archivu, takže je možno ji obnovit|Následující $1 stránky byly smazány, ale jsou dosud v archivu, takže je možno je obnovit|Následujících $1 stránek bylo smazáno, ale jsou dosud v archivu, takže je možno je obnovit}}.\nArchiv může být pravidelně vyprazdňován.",
        "undelete-fieldset-title": "Obnovit revize",
        "undeleteextrahelp": "Pokud chcete obnovit kompletní historii stránky, ponechte všechny čtverečky nezaškrtnuté a klikněte na '''''{{int:undeletebtn}}'''''.\nPro částečné obnovení zaškrtněte čtverečky u obnovovaných revizí a klikněte na '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|verze je archivována|verze jsou archivovány|verzí je archivováno}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|smazaná verze|smazané verze|smazaných verzí}}",
        "undeletehistory": "Pokud stránku obnovíte, budou  v historii obnoveny všechny verze. Pokud byla vytvořena nová stránka se stejným jménem jako smazaná, obnovené verze se zapíší na starší místo v historii novější stránky.",
        "undeleterevdel": "Obnovení nebude provedeno, pokud by vedlo k částečnému odstranění aktuální verze stránky. V takovém případě musíte odznačit nebo odkrýt nejnovější smazanou verzi.",
        "undeletehistorynoadmin": "Tato stránka byla smazána. Důvod smazání je uveden níže, spolu s informacemi o uživatelích, kteří tuto stránku před smazáním editovali. Samotný text stránky je dostupný pouze správcům.",
        "spam_reverting": "Revert na poslední verzi neobsahující odkazy na $1",
        "spam_blanking": "Všechny verze obsahovaly odkazy na $1, vyprázdněno",
        "spam_deleting": "Všechny verze obsahovaly odkazy na $1, smazáno",
-       "simpleantispam-label": "Antispamová kontrola.\n'''NEVYPLŇUJTE''' následující!",
+       "simpleantispam-label": "Antispamová kontrola.\n<strong>NEVYPLŇUJTE</strong> následující!",
        "pageinfo-title": "Informace o stránce „$1“",
        "pageinfo-not-current": "Informace bohužel nelze zobrazit pro starší verze.",
        "pageinfo-header-basic": "Základní údaje",
        "special-characters-title-endash": "krátká pomlčka",
        "special-characters-title-emdash": "dlouhá pomlčka",
        "special-characters-title-minus": "znaménko minus",
+       "mw-widgets-dateinput-no-date": "Nevybráno žádné datum",
+       "mw-widgets-dateinput-placeholder-day": "RRRR-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "RRRR-MM",
        "mw-widgets-titleinput-description-new-page": "stránka zatím neexistuje",
        "mw-widgets-titleinput-description-redirect": "přesměrování na $1"
 }
index 144fcbe..241494e 100644 (file)
@@ -6,7 +6,8 @@
                        "Svetko",
                        "Wolliger Mensch",
                        "ОйЛ",
-                       "아라"
+                       "아라",
+                       "Илья Драконов"
                ]
        },
        "tog-oldsig": "нꙑнѣшьн҄ь аѵтографъ :",
        "minoreditletter": "м҃л",
        "newpageletter": "н҃в",
        "boteditletter": "а҃ѵ",
+       "rc_categories_any": "Любы из выбраных",
        "rc-change-size-new": "$1 {{PLURAL:$1|баитъ|баита|баитъ}} послѣди мѣнꙑ",
        "rc-old-title": "напрьва страница створѥна ꙗко ⁖ $1 ⁖",
        "recentchangeslinked": "съвѧꙁанꙑ страницѧ",
        "protectedarticle": "⁖ [[$1]] ⁖ ꙁабранѥна ѥстъ",
        "prot_1movedto2": "⁖ [[$1]] ⁖ нарєчєнъ ⁖ [[$2]] ⁖ ѥстъ",
        "protectcomment": "какъ съмꙑслъ :",
+       "protect-cascadeon": "Эта страница защищена от редактирования {{PLURAL:$1|page, which has|pages, which have}}.",
        "protect-level-sysop": "толико съмотритєлє",
        "protect-othertime": "ино врѣмѧ :",
        "protect-othertime-op": "ино врѣмѧ",
index 3c0a78e..c57b00d 100644 (file)
        "category-file-count": "{{PLURAL:$2|1=Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}",
        "category-file-count-limited": "Ку категоринче $1 файл.",
        "listingcontinuesabbrev": "(малалли)",
-       "about": "Ä\82нланÑ\82аÑ\80кÄ\83Ñ\87",
+       "about": "Ä\82нланÑ\82аÑ\80ни",
        "article": "Статья",
        "newwindow": "(çĕнĕ чӳречере)",
        "cancel": "Пăрахăçла",
        "disclaimers": "Яваплăха тивĕçтерменни",
        "disclaimerpage": "Project:Яваплăха тивĕçтерменни",
        "edithelp": "Улшăнусене кĕртме пулăшакан пулăшу",
+       "helppage-top-gethelp": "Пулăшу",
        "mainpage": "Тĕп страницă",
        "mainpage-description": "Тĕп страницă",
        "policy-url": "Project:Йĕркесем",
        "yourpassword": "Вăрттăн сăмах:",
        "yourpasswordagain": "Вăрттăн сăмах тепре çырăр:",
        "remembermypassword": "Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})",
-       "yourdomainname": "Сирĕн домен",
+       "yourdomainname": "Сирĕн доменă:",
        "login": "Кĕрĕр",
        "nav-login-createaccount": "Сайта кĕр / регистрацилен",
        "userlogin": "Кĕр / аккаунт ту",
        "expensive-parserfunction-category": "Кунта эсир чылай ресурс ыйтакан функцисемпе нумай ĕçлекен страницăсене куратăр",
        "post-expand-template-argument-category": "Шаблон аргуменчĕсене сиктерсе хăварнă страницăсем",
        "undo-norev": "Ку тӳрлетĕве пăрахăçлама май çук — вăл е пулман та, е ăна кăларса пăрахнă.",
-       "undo-summary": "$1 хутшăнакан [[Special:Contributions/$2|$2]] ([[User_talk:$2|сӳтсе яв]]) кĕртнĕ № улшăнăва тавăрнă",
+       "undo-summary": "[[Special:Contributions/$2|$2]] ([[User talk:$2|сӳтсе яв]]) $1 улăштарнине тавăрчĕ",
        "cantcreateaccounttitle": "Хутшăнакана кĕртме май çук",
        "viewpagelogs": "Ку страницăн журналĕсене пăхмалли",
        "nohistory": "Ку страницăн улшăнусен журналĕ çук.",
        "prefixindex": "Сăмах пуçламăшĕсен кăтартмăшĕ",
        "shortpages": "Кĕске статьясем",
        "longpages": "Вăрăм страницăсем",
-       "deadendpages": "Ниăçта та урăх ертмен страницăсем",
+       "deadendpages": "Нимĕнпе те çыхăнман страницăсем",
        "protectedpages": "Хӳтĕленĕ страницăсем",
        "protectedtitles": "Юраман ятсем",
        "listusers": "Хутшăнакансен списокĕ",
        "pagemovedsub": "Куçарас ĕç тĕрĕс иртрĕ",
        "articleexists": "Ку ятлă статья е пур, е ун пек ят пама юрамасть.\nТархасшăн, статьяна урăх ят парăр.",
        "movetalk": "Статьяна сӳтсе явнă страницăн ятне те улăштармалла",
-       "movelogpage": "СÑ\82аÑ\82Ñ\8cÑ\8fÑ\81ен Ñ\8fÑ\82не Ñ\83лÄ\83Ñ\88Ñ\82аÑ\80нине ÐºÄ\83Ñ\82аÑ\80Ñ\82акан Ð¶Ñ\83Ñ\80нал",
+       "movelogpage": "ЯÑ\82не Ñ\83лÄ\83Ñ\88Ñ\82аÑ\80нин Ð»Ð¾Ð³Ä\95",
        "movereason": "Сăлтавĕ",
        "delete_and_move": "Кăларса пăрахса куçарасси",
        "delete_and_move_text": "==Кăларса пăрахмалла==\n[[:$1|«$1»]] ятлă страница пур. Урăх ят парас тесе ăна кăларса пăрахмалла-и?",
        "noimages": "Ӳкерчĕксем çук.",
        "ilsubmit": "Шырамалла",
        "bydate": "дата тăрăх",
+       "yesterday-at": "Ĕнер $1",
        "metadata": "Метаданнăйсем:",
        "exif-exifversion": "Exif версийĕ",
        "exif-flashpixversion": "Ĕçлеме пултаракан FlashPix версийĕ",
        "compare-submit": "Танлаштар",
        "htmlform-selectorother-other": "Урăххи",
        "htmlform-no": "Çук",
+       "logentry-delete-delete": "$1 $3 страница {{GENDER:$2|пăсса утрĕ}}",
        "logentry-move-move": "$1 страницă {{GENDER:$2|ятне улăштарчĕ}} $3 - $4",
        "rightsnone": "(çук)",
        "feedback-back": "Каялла",
index b67d4a6..20b5624 100644 (file)
        "special-characters-group-khmer": "Chmereg",
        "special-characters-title-endash": "heiffen en",
        "special-characters-title-emdash": "heiffen em",
-       "special-characters-title-minus": "arwydd minws"
+       "special-characters-title-minus": "arwydd minws",
+       "mw-widgets-dateinput-placeholder-day": "BBBB-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "BBBB-MM"
 }
index 0f8b6ce..affb473 100644 (file)
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "tankestreg",
        "special-characters-title-emdash": "lang tankestreg",
-       "special-characters-title-minus": "minustegn"
+       "special-characters-title-minus": "minustegn",
+       "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM"
 }
index 9b744ee..bfac000 100644 (file)
                        "Brackenheim",
                        "Robby",
                        "Andreasburmeister",
-                       "Tiin"
+                       "Tiin",
+                       "Freddy2001"
                ]
        },
        "tog-underline": "Links unterstreichen:",
        "tog-hideminor": "Kleine Änderungen in den „Letzten Änderungen“ ausblenden",
        "tog-hidepatrolled": "Kontrollierte Änderungen in den „Letzten Änderungen“ ausblenden",
        "tog-newpageshidepatrolled": "Kontrollierte Seiten bei den „Neuen Seiten“ ausblenden",
+       "tog-hidecategorization": "Kategorisierungen von Seiten ausblenden",
        "tog-extendwatchlist": "In der Beobachtungsliste alle und nicht nur die aktuellsten Änderungen anzeigen",
        "tog-usenewrc": "Änderungen auf „Letzte Änderungen“ und der Beobachtungsliste nach Seite gruppieren",
        "tog-numberheadings": "Überschriften automatisch nummerieren",
        "tog-watchlisthideliu": "Bearbeitungen angemeldeter Benutzer in der Beobachtungsliste ausblenden",
        "tog-watchlisthideanons": "Bearbeitungen anonymer Benutzer (IP-Adressen) in der Beobachtungsliste ausblenden",
        "tog-watchlisthidepatrolled": "Kontrollierte Änderungen in der Beobachtungsliste ausblenden",
+       "tog-watchlisthidecategorization": "Kategorisierungen von Seiten ausblenden",
        "tog-ccmeonemails": "Schicke mir Kopien der E-Mails, die ich anderen Benutzern sende",
        "tog-diffonly": "Beim Versionsvergleich nur die Unterschiede und nicht die vollständige Seite anzeigen",
        "tog-showhiddencats": "Versteckte Kategorien anzeigen",
        "actionthrottled": "Aktionsanzahl limitiert",
        "actionthrottledtext": "Im Rahmen einer Anti-Spam-Maßnahme kann diese Aktion in einem kurzen Zeitabstand nur begrenzt oft ausgeführt werden. Diese Grenze hast du überschritten.\nBitte versuche es in ein paar Minuten erneut.",
        "protectedpagetext": "Diese Seite wurde geschützt, um Bearbeitungen sowie andere Aktionen zu verhindern.",
-       "viewsourcetext": "Du kannst den Quelltext dieser Seite betrachten und kopieren:",
-       "viewyourtext": "Du kannst den Quelltext '''deiner Bearbeitung''' dieser Seite betrachten und kopieren:",
+       "viewsourcetext": "Du kannst den Quelltext dieser Seite betrachten und kopieren.",
+       "viewyourtext": "Du kannst den Quelltext <strong>deiner Bearbeitung</strong> dieser Seite betrachten und kopieren.",
        "protectedinterface": "Diese Seite enthält Text für die Benutzeroberfläche der Software auf diesem Wiki und ist geschützt, um Missbrauch vorzubeugen.\nNutze bitte [//translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern.",
        "editinginterface": "<strong>Warnung:</strong> Diese Seite enthält von der MediaWiki-Software genutzten Text.\nÄnderungen auf dieser Seite wirken sich auf die Benutzeroberfläche dieses Wikis aus.",
        "translateinterface": "Um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern, verwende bitte [//translatewiki.net/ translatewiki.net], das MediaWiki-Lokalisierungsprojekt.",
        "search-category": "(Kategorie $1)",
        "search-file-match": "(treffende Dateiinhalte)",
        "search-suggest": "Meintest du „$1“?",
+       "search-rewritten": "Es werden die Ergebnisse für $1 angezeigt. Stattdessen nach $2 suchen.",
        "search-interwiki-caption": "Schwesterprojekte",
        "search-interwiki-default": "Ergebnisse von $1:",
        "search-interwiki-more": "(weitere)",
        "rcshowhidemine": "Eigene Beiträge $1",
        "rcshowhidemine-show": "anzeigen",
        "rcshowhidemine-hide": "ausblenden",
+       "rcshowhidecategorization": "Seitenkategorisierungen $1",
+       "rcshowhidecategorization-show": "anzeigen",
+       "rcshowhidecategorization-hide": "ausblenden",
        "rclinks": "Zeige die letzten $1 Änderungen der letzten $2 Tage.<br />$3",
        "diff": "Unterschied",
        "hist": "Versionen",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|beobachtender|beobachtende}} Benutzer]",
        "rc_categories": "Nur Seiten aus den Kategorien (getrennt mit „|“):",
-       "rc_categories_any": "Alle",
+       "rc_categories_any": "Beliebige der ausgewählten",
        "rc-change-size": "$1 {{PLURAL:$1|Byte|Bytes}}",
        "rc-change-size-new": "$1 {{PLURAL:$1|Byte|Bytes}} nach der Änderung",
        "newsectionsummary": "Neuer Abschnitt /* $1 */",
        "recentchangeslinked-summary": "Diese Spezialseite listet die letzten Änderungen an den verlinkten Seiten auf (bzw. an in dieser Kategorie enthaltenen Kategorien). Seiten auf deiner [[Special:Watchlist|Beobachtungsliste]] sind <strong>fett</strong> dargestellt.",
        "recentchangeslinked-page": "Seite:",
        "recentchangeslinked-to": "Zeige nur Änderungen an Seiten, die auf diese Seite verlinken",
+       "recentchanges-page-added-to-category": "[[:$1]] zur Kategorie hinzugefügt",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] und {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} zur Kategorie hinzugefügt",
+       "recentchanges-page-removed-from-category": "[[:$1]] von der Kategorie entfernt",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] und {{PLURAL:$2|eine weitere Seite|$2 weitere Seiten}} von der Kategorie entfernt",
        "upload": "Datei hochladen",
        "uploadbtn": "Datei hochladen",
        "reuploaddesc": "Abbrechen und zurück zur Hochladen-Seite",
        "upload-too-many-redirects": "Die URL beinhaltete zu viele Weiterleitungen",
        "upload-http-error": "Ein HTTP-Fehler ist aufgetreten: $1",
        "upload-copy-upload-invalid-domain": "Als Kopie hochladbare Dateien sind über diese Domain nicht verfügbar.",
+       "upload-dialog-title": "Datei hochladen",
+       "upload-dialog-error": "Es ist ein Fehler aufgetreten",
+       "upload-dialog-warning": "Es ist eine Warnung aufgetreten",
+       "upload-dialog-button-cancel": "Abbrechen",
+       "upload-dialog-button-done": "Schließen",
+       "upload-dialog-button-save": "Speichern",
+       "upload-dialog-button-upload": "Hochladen",
+       "upload-dialog-label-select-file": "Datei auswählen",
+       "upload-dialog-label-infoform-title": "Einzelheiten",
+       "upload-dialog-label-infoform-name": "Name",
+       "upload-dialog-label-infoform-description": "Beschreibung",
+       "upload-dialog-label-usage-title": "Verwendung",
+       "upload-dialog-label-usage-filename": "Dateiname",
        "backend-fail-stream": "Die Datei $1 konnte nicht übertragen werden.",
        "backend-fail-backup": "Die Datei $1 konnte nicht gesichert werden.",
        "backend-fail-notexists": "Die Datei $1 ist nicht vorhanden.",
        "watchlistanontext": "Du musst dich anmelden, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.",
        "watchnologin": "Du bist nicht angemeldet",
        "addwatch": "Zur Beobachtungsliste hinzufügen",
-       "addedwatchtext": "Die Seite „[[:$1]]“ wurde zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.\nSpätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werden dort gelistet.",
+       "addedwatchtext": "„[[:$1]]“ und die Diskussionsseite wurden zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.",
        "addedwatchtext-short": "Die Seite „$1“ wurde zu deiner Beobachtungsliste hinzugefügt.",
        "removewatch": "Von der Beobachtungsliste entfernen",
-       "removedwatchtext": "Die Seite „[[:$1]]“ wurde von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.",
+       "removedwatchtext": "„[[:$1]]“ und die Diskussionsseite wurden von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.",
        "removedwatchtext-short": "Die Seite „$1“ wurde von deiner Beobachtungsliste entfernt.",
        "watch": "Beobachten",
        "watchthispage": "Seite beobachten",
        "enotif_body_intro_restored": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} wiederhergestellt. Siehe $3 für deren aktuelle Version.",
        "enotif_body_intro_changed": "Die {{SITENAME}}-Seite $1 wurde am $PAGEEDITDATE von {{GENDER:$2|$2}} geändert. Siehe $3 für deren aktuelle Version.",
        "enotif_lastvisited": "Alle Änderungen auf einen Blick: $1",
-       "enotif_lastdiff": "Siehe $1 nach dieser Änderung.",
+       "enotif_lastdiff": "Siehe $1 für diese Änderung.",
        "enotif_anon_editor": "Anonymer Benutzer $1",
        "enotif_body": "Hallo $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nZusammenfassung des Bearbeiters: $PAGESUMMARY $PAGEMINOREDIT\n\nKontakt zum Bearbeiter:\nE-Mail: $PAGEEDITOR_EMAIL\nWiki: $PAGEEDITOR_WIKI\n\nBei weiterer Aktivität auf der Seite werden dir so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du die Seite wieder angemeldet besucht hast. Auf deiner Beobachtungsliste kannst du alle Benachrichtigungsmarkierungen zusammen zurücksetzen.\n\nDein freundliches {{SITENAME}}-Benachrichtigungssystem\n\n--\nUm die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{canonicalurl:{{#special:Preferences}}}}.\n\nUm die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl:{{#special:EditWatchlist}}}}.\n\nUm die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL.\n\nRückmeldungen und weitere Hilfe: $HELPPAGE",
        "created": "erstellt",
        "changecontentmodel-success-title": "Das Inhaltsmodell wurde geändert",
        "changecontentmodel-success-text": "Der Inhaltstyp von [[:$1]] wurde geändert.",
        "changecontentmodel-cannot-convert": "Der Inhalt von [[:$1]] kann nicht zum Typ $2 konvertiert werden.",
-       "changecontentmodel-title-cantexist": "Auf $1 ist keine Seite möglich.",
        "changecontentmodel-nodirectediting": "Das Inhaltsmodell „$1“ unterstützt keine direkten Bearbeitungen",
        "log-name-contentmodel": "Inhaltsmodell-Änderungs-Logbuch",
        "log-description-contentmodel": "Ereignisse bezüglich den Inhaltsmodellen einer Seite",
        "undeletepagetext": "Die {{PLURAL:$1|folgende Seite wurde gelöscht und kann|folgenden $1 Seiten wurden gelöscht und können}} von Administratoren wiederhergestellt werden:",
        "undelete-fieldset-title": "Wiederherstellen",
        "undeleteextrahelp": "* Um die Seite mitsamt aller Versionen wiederherzustellen, wähle keine Version aus, gib eine Begründung an und klicke dann auf „{{int:undeletebtn}}“.\n* Um lediglich bestimmte Versionen der Seite wiederherzustellen, wähle die betreffenden Versionen einzeln aus, gib eine Begründung an und klicke dann auf „{{int:undeletebtn}}“.",
-       "undeleterevisions": "{{PLURAL:$1|1 Version|$1 Versionen}} archiviert",
+       "undeleterevisions": "{{PLURAL:$1|Eine Version|$1 Versionen}} gelöscht",
        "undeletehistory": "Wenn du diese Seite wiederherstellst, werden auch alle alten Versionen wiederhergestellt.\nWenn seit der Löschung eine neue Seite gleichen Namens erstellt wurde, werden die wiederhergestellten Versionen chronologisch in die Versionsgeschichte eingeordnet.",
        "undeleterevdel": "Die Wiederherstellung wird nicht durchgeführt, wenn die aktuellste Version versteckt ist oder versteckte Teile enthält.\nIn diesem Fall darf die aktuellste Version nicht markiert werden oder ihr Status muss auf den einer normalen Version geändert werden.",
        "undeletehistorynoadmin": "Diese Seite wurde gelöscht. Der Löschgrund ist in der Zusammenfassung angegeben,\ngenauso wie Details zum letzten Benutzer, der diese Seite vor der Löschung bearbeitet hat.\nDer aktuelle Text der gelöschten Seite ist nur Administratoren zugänglich.",
        "spam_reverting": "Letzte Version ohne Links zu $1 wiederhergestellt.",
        "spam_blanking": "Alle Versionen mit einem Link zu $1 wurden bereinigt.",
        "spam_deleting": "Alle Versionen mit einem Link zu $1 wurden gelöscht.",
-       "simpleantispam-label": "Spamschutzprüfung.\nHier <strong>NICHTS</strong> eintragen!",
+       "simpleantispam-label": "Spamschutzprüfung.\nHier <strong>nichts</strong> eintragen!",
        "pageinfo-title": "Informationen zu „$1“",
        "pageinfo-not-current": "Diese Information kann leider nicht für alte Versionen zur Verfügung gestellt werden.",
        "pageinfo-header-basic": "Basisinformationen",
        "special-characters-title-endash": "Halbgeviertstrich",
        "special-characters-title-emdash": "Geviertstrich",
        "special-characters-title-minus": "Minus",
+       "mw-widgets-dateinput-no-date": "Kein Datum ausgewählt",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
        "mw-widgets-titleinput-description-new-page": "Seite ist noch nicht vorhanden",
        "mw-widgets-titleinput-description-redirect": "Weiterleitung nach $1"
 }
index 5db0c35..445e27c 100644 (file)
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "tira kılme",
        "special-characters-title-emdash": "tira derge",
-       "special-characters-title-minus": "işaretê kemiye"
+       "special-characters-title-minus": "işaretê kemiye",
+       "mw-widgets-dateinput-placeholder-day": "SSSS-AA-RR",
+       "mw-widgets-dateinput-placeholder-month": "SSSS-AA"
 }
index e9fca76..414a559 100644 (file)
        "viewsource-title": " $1 को स्रोत हेर",
        "actionthrottled": "कार्य रोकिईयो",
        "viewyourtext": "यै पानामी रह्याका '''तमरा सम्पादनहरू''' हेद्द या प्रतिलिपी गद्द सक्द्या हौ :",
+       "editinginterface": "<strong>चेतावनी:</strong> तमी यै पानालाई सम्पादन गद्द लाग्याछौ, जनले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गरन्छ।\nयै पानामी गरियाको परिवर्तनले यै विकिमी अरु प्रयोगकर्तानको इन्टरफेसको प्रदर्शनमी प्रभाव पडन्छ ।",
        "namespaceprotected": "तमलाई '''$1'''  नेमस्पेसमी रह्याका पानाहरू सम्पादन गद्या अनुमति छैन ।",
        "exception-nologin": "प्रवेश (लग ईन) नगरिएको",
        "virus-scanfailed": "जँचाई असफल(कोड $1)",
        "virus-unknownscanner": "थानभया एन्टीभाइरस:",
        "logouttext": "<strong>तमी अहिल बाहिर निस्क्याका  छौ।</strong>\n\nयाद राख्या तमीले ब्राउजरको क्याच खालि नगर्यासम्म कुनै पानाहरूमी तमी अझैं प्रवेश गरिरख्याको धेकाउन सक्छ।",
        "welcomeuser": "$1स्वागत छ!",
+       "welcomecreation-msg": "तमरो खाता तयार भयो । \nतमले चाहेको खण्डमी {{SITENAME}} [[Special:Preferences|रोजाइहरू]] परिवर्तन गद्द सक्द्याहौ ।",
        "yourname": "प्रयोगकर्ता नाम:",
        "userlogin-yourname": "प्रयोगकर्ता नाम",
        "userlogin-yourname-ph": "तमरो प्रयोगकर्तानाम लेख",
        "userlogin-resetlink": "प्रवेश सम्बन्धी विवरणहरू बिसरया भयो?",
        "userlogin-resetpassword-link": "पासवर्ड भुलिगया?",
        "userlogin-helplink2": "प्रवेश गद्दलाई सहयोग",
+       "userlogin-loggedin": "तमी {{GENDER:$1|$1}}को रूपमी प्रवेश (लग इन) भइ सक्यौ ।\nअर्को प्रयोगकर्ताको रूपमी प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर ।",
        "userlogin-createanother": "दोसरो खाता खोल",
        "createacct-emailrequired": "इमेल ठेगाना",
        "createacct-emailoptional": "इमेल ठेगाना (ऐच्छिक)",
        "nouserspecified": "प्रयोगकर्ता नाम दिनु अनिवार्य छ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर",
        "passwordremindertitle": "{{SITENAME}}का लागि नयाँ अस्थायी पासवर्ड",
+       "passwordremindertext": "कसैले (सायद तमी, IP ठेगाना $1 बाट), {{SITENAME}}($4) को लागि नौलो पासवर्ड अनुरोध गर्या छ । प्रयोगकर्ता \"$2\" को लागि नौलो अस्थायी पासवर्ड \"$3\"तयार पारिया छ । यदि यो तमरो इच्छामी भयाको भया अहिले तमीले लगइन गरीबर नौलो पासवर्ड छान्नु पड्ड्या हुन्छ ।\nतमरो अस्थायी पासवर्ड  {{PLURAL:$5|एक दिन|$5 दिनहरू पछि}} अमान्य हुन्याछ ।\n\nयदि कोही अरुले नै अनुरोध गर्याको हो भण्या , या तमीले आफ्नो पासवर्ड सम्झ्यौ भण्या, अथवा\nत्यैलाई परिवर्तन गर्न चाहन्नौ भण्या, तमीले यो सन्देसको वेवास्ता गद्दसक्द्याहौ र पुरानै पासवर्ड प्रयोग गरिरहन सक्द्याहौ ।",
+       "blocked-mailpassword": "तमरो IP ठेगानालाई सम्पादन गद्द बठे रोक लगायाको छ, र त्यसैले दुरुपयोग रोक्दाको लागि प्रवेसशब्द पुनर्लाभ प्रक्रिया प्रयोग गद्या अनुमति छैन ।",
        "mailerror": " चिठी :$1 पठाउँदा गल्ती भयो",
+       "noemailprefs": "निम्न सुविधाहरू राम्डरी काम गद्दको लागि तमरो रोजाईमी आफ्नो ई-मेल ठेगाना खुलाओ ।",
        "emailconfirmlink": "तमरो ई-मेल ठेगाना पक्का गर",
+       "cannotchangeemail": "यै विकिमी तमरो खातासँग सम्बन्धित इमेल ठेगाना परिवर्तन गद्द नाइ सकिंदो ।",
        "emaildisabled": "ये साइटले इमेलहरू पठाउन सक्दैन।",
        "accountcreated": "खाता खोलिईयो",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]])$1 प्रयोगकर्ताको लागि खाता खोलिइया छ ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
+       "createaccount-text": "कसैले तमरो इमेल ठेगानालाई {{SITENAME}} ($4) मी \"$2\" नामको खाता बनायाको छ, जैको पासवर्ड \"$3\" छ ।\nअब तमी तुरुन्त लगइन गरिबर आफ्नो पासवर्डशब्द परिवर्तन गर ।\nयदी यो खाता गल्तिले खोलियाको रहेछ भण्या तम यै सन्देशलाई बेवास्ता गद्द सक्द्याहौ ।",
+       "login-migrated-generic": "तमरो खाता स्थानान्तरण भयाको छ, र तमरो प्रयोगकर्ता नाम यै विकिमी नाइथि ।",
        "loginlanguagelabel": "भाषा: $1",
        "pt-login": "प्रवेश (लग ईन)",
        "pt-login-button": "प्रवेश",
        "resetpass-no-info": "ये पाना सिधाई हेद्दाई तमले प्रवेश गद्दु पडून्छ ।",
        "resetpass-submit-loggedin": "पासवर्ड परिवर्तन गर",
        "resetpass-submit-cancel": "रद्द",
+       "resetpass-temp-emailed": "तम अस्थाई इमेल कोडले लगइन गर्याछौ ।\nप्रवेश सफल पाड्डका लागि, तमीले यहाँ एक नौलो पासवर्ड राख्नु पड्डेछ:",
        "resetpass-temp-password": "अस्थाइ पासवर्ड",
        "resetpass-abort-generic": "एक्सटेन्सनले पासवर्ड परिवर्तनलाई बन्द गराईया छ ।",
+       "resetpass-expired": "तमरो पासवर्ड पूरानो भयाकोछ । कृपया लग इन गद्दाकिलाइ नौलो पासवर्ड राख ।",
        "passwordreset": "पासवर्ड पूर्वनिर्धारित गर",
        "passwordreset-username": "प्रयोगकर्ता-नाम:",
        "passwordreset-domain": "डोमेन",
        "blankarticle": "<strong>चेतावनी:</strong> तम एक खालि पानाको निर्माण गद्द लाग्याछौ ।\nयदि तमले \"{{int:savearticle}}\" लाई पुनः थिच्यौ भण्या पानो बिना कुनै सामग्री नै निर्मित गरिन्याछ ।",
        "anoneditwarning": "<strong>चेतावनी:</strong> तमले प्रवेश अरेको नाइथिन । तमरो आइपि ठेगाना पाना सम्पादन इतिहासमि दर्ता गरिन्या छ र यो सब्बैले हेद्द सक्कान । यदि तमलाईँ <strong>[$1 लगईन]</strong> वा <strong>[$2 नयाँ खाता बनाउन्या] गर्याभण्या तमबठे गरियाको सम्पादन तमरो प्रयोगकर्तानाममि जोडिन्याछ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तम यै पानालाई आफुमी पुनः निर्देशित गद्द लाग्याछौ ।\nहुनसक्छ तम अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गद्द लाग्याछौ, वा गलत पानाको सम्पादन गद्द लाग्याछौ ।\nतम पुनः एकपल्ट \"{{int:savearticle}}\" क्लिक गद्दाछौ, पुनः निर्देशित तसै लै बनाइन्याछ।",
+       "missingcommentheader": "'''याद गर :''' तमीले टिप्पणीमी विषय /शीर्ष पंक्ति  दियाका छैनौ ।\nतमीले फेरि \"{{int:savearticle}}\"  थिच्यौ भण्या , तमरो सम्पादन यसै रुपमी संग्रहित हुन्याछ ।",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
+       "previewerrortext": "तमरो परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आयाको छ ।",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइया छ",
        "blockedtext": "'''तमरो प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतमले  $1 वा और कोइ  [[{{MediaWiki:Grouppage-sysop}}|administrator]] सँग रोकको बारेमी छलफल गर्न सम्पर्क गर्न सकुन्छौ ।\nतमले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|account preferences]] मी नखुलाए सम्म प्रयोगगर्न पाउनुहुन्या छैन र येको प्रयोग गर्नबठे रोक लगाइया छैन ।\nतमरो IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तमरा प्रश्नमी सबै जानकारी खुलाया ।",
        "blockednoreason": "कारण दिइईया नाइँथिन",
        "currentrevisionlink": "अहिलको पुनरावलोकन",
        "cur": "वर्तमान पाना लिङ्क इतिहास",
        "next": "दोसरो",
-       "last": "पल्लिको",
+       "last": "पà¥\88लà¥\8dलिà¤\95à¥\8b",
        "page_first": "पैल्लो",
        "page_last": "छाड्डीबारको",
        "histlegend": "अन्तर चयन:संशोधनहरूको तुलनाको लागि रेडियो बाकसमी क्लिक गरिबर इण्टर गर अथवा तल दियाको बटनमी थिच <br />\nलिजेंड: (चालू): '''({{int:cur}})''' = अवतरणको बीचमी अन्तर, '''({{int:last}})''' = पैल्लीका अवतरणको बीचमी अन्तर, '''{{int:minoreditletter}}''' = नानो परिवर्तन।",
        "search-section": "(खण्ड $1)",
        "search-category": "(श्रेणी $1)",
        "search-file-match": "(भेटिईया फाइल सामाग्री)",
-       "search-suggest": "à¤\95à¥\8dया à¤¤à¤®à¤°à¥\8b à¤\96à¥\8bà¤\9cाà¤\88 : $1 à¤¹à¥\8b?",
+       "search-suggest": "à¤\95ाहà¥\80à¤\82 à¤¤à¤®à¤²à¥\87 à¤\96à¥\8bà¤\9cà¥\8dयाà¤\95à¥\8b : $1 à¤¤ à¤¹à¥\8bà¤\87न ?",
        "search-interwiki-caption": "बैना आयोजना",
        "search-interwiki-default": "$1बठेका नतिजाहरू:",
        "search-interwiki-more": "(आजी)",
        "timezoneregion-australia": "अष्ट्रेलिया",
        "timezoneregion-indian": "हिन्द महासागर",
        "prefs-files": "फाइलहरू",
+       "badsiglength": "तमरो दस्तखत मैथै लामो छ।\nयो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुँदैन ।",
+       "prefs-help-realname": "वास्तविक नाम ऐच्छिक हो ।\nतमीले खुलायौ भण्या तमरो कामको श्रेय दिनको लेखा यैको प्रयोग गरिन्या छ ।",
+       "prefs-help-prefershttps": "यो रोजाई तमरो अर्को  लग इन बठे लागु हुन्याछ ।",
+       "userrights-conflict": "प्रयोगकर्ताको अधिकार परिवर्तनमी मतभेद भयो ! कृपया तमरो परिवर्तन पुनरावलोकन तथा पुष्टि गर ।",
+       "userrights-removed-self": "तमीले सफलतापूर्वक आफ्नो अधिकारहरूलाई मेटायौ । त्यै कारण तमी अब यो पानो हेद्द नाइसक्दा ।",
        "group-user": "प्रयोगकर्ताहरू",
        "group-autoconfirmed": "स्वत स्थापित प्रयोगकर्ताहरू",
        "right-move-subpages": "तिनीहरूको उपपाना सहित पानाको नाम बदल्ने",
        "action-move-subpages": "यै पानाको रे यैका उपपानाको नाम बदल्न्या",
        "action-unwatchedpages": "कसैले ध्यान नराख्याका पाननको सूची हेद्या",
        "action-userrights-interwiki": "अन्य विकिका प्रयोगकर्तानको प्रयोगकर्ता अधिकार सम्पादन गद्या",
+       "action-applychangetags": "तमरो परिवर्तनसँगै ट्यागहरू लागु गर्न्या",
        "enhancedrc-history": "इतिहास",
        "recentchanges": "नौला फेरबदली",
        "recentchanges-legend": "अच्यालैका परिवर्तन विकल्पहरू",
        "rcshowhidemine": "$1 मेरा सम्पादनहरू",
        "rcshowhidemine-show": "धेकाइदिय",
        "rcshowhidemine-hide": "लुकाइदिय",
+       "rcshowhidecategorization-show": "धेकाउन्या",
+       "rcshowhidecategorization-hide": "लुकाउन्या",
        "rclinks": "पछिल्ला $1 परिवर्तनहरू पछाडिका $2 दिनहरूमी<br />$3",
        "diff": "फरक",
        "hist": "इतिहास",
        "newpageletter": "नौ",
        "boteditletter": "बो",
        "rc_categories": "श्रेणीहरूमी सीमित (\"|\" ले छुट्याओ)",
-       "rc-change-size-new": "फेरबदलपाछा $1 {{PLURAL:$1|बाइट|बाइट}}",
+       "rc-change-size-new": "$1 {{PLURAL:$1|बाइट|बाइटस}}फेरबदलपाछा",
        "recentchangeslinked": "सम्बन्धित फेरबदल",
        "recentchangeslinked-toolbox": "सम्बन्धित फेरबदल",
        "recentchangeslinked-title": "\"$1\" सित सम्बन्धित परिवर्तन",
        "large-file": "यो सिफारिस गर्याछकि फाइलहरूको आकार $1 भन्दा ठूला हुनु हुँदैन;\nयै फाइलको आकार $2 छ ।",
        "fileexists": "यै नामको फाइल पैल्ली नैं छ, यदि तम परिवर्तन गद्या कुरडीमू सुनिश्चित छैनौ भण्या कृपया <strong>[[:$1]]</strong> जाँच गर।\n[[$1|thumb]]",
        "filewasdeleted": "यै नामको एक फाइल पहिली पनि अपलोड गरिबर पछि हटाई सकियाको छ।\nपुनः अपलोड गद्दु पूर्व तम $1 लाई निक्करी जाँच गर ।",
+       "upload-dialog-title": "चित्र अपलोड गर",
+       "upload-dialog-error": "गल्ती भयो",
+       "upload-dialog-warning": "सूचना हुनु",
+       "upload-dialog-button-cancel": "रद्द",
+       "upload-dialog-button-done": "सकियो",
+       "upload-dialog-button-save": "सङ्ग्रह गद्या",
+       "upload-dialog-button-upload": "अपलोड",
+       "upload-dialog-label-select-file": "फाइल छान",
+       "upload-dialog-label-infoform-title": "विवरण",
+       "upload-dialog-label-infoform-name": "नाऊ",
+       "upload-dialog-label-infoform-description": "बेलिविस्तार",
+       "upload-dialog-label-usage-title": "रिती",
+       "upload-dialog-label-usage-filename": "फाइल नाउ",
        "uploadstash-nofiles": "तमरा कोइ पनि स्टाश गर्याका फाइलहरू नाइथिन् ।",
+       "uploadstash-badtoken": "त्यो कार्य असफलभयो , सायद तमरो सम्पादन अधिकार समाप्त भयो । पुन: प्रयास गर ।",
        "uploadstash-refresh": "फाइलहरूको सूची ताजा गर्न्या",
        "license-header": "कोइ केइ नाइथिन",
        "listfiles-summary": "यै खास पानाले अपलोड गर्याका सबै फाइलहरू धेकाउन्छ ।",
        "imagelinks": "फाइलको प्रयोगहरु",
        "linkstoimage": "यै चित्रमी निम्न{{PLURAL:$1|पाना जोडिनान{{PLURAL:$1|}}|$1 पानाहरू जोडिनान्}}:",
        "nolinkstoimage": "यो चित्रसित लिंकभयाकि कोइ पाना नाइथी",
+       "morelinkstoimage": "यै फाइलको [[Special:WhatLinksHere/$1|थप लिंकहरू]] हेर ।",
        "sharedupload-desc-here": "यो फाइल $1 बठे हो र और  परियोजनाहरू बठे पन प्रयोग गद्द सकिन्याछ । \nताखाइ यैको [$2 फ़ाइल विवरण पानो]मि रयाका विवरण तल्तिर दियाको छ।",
        "upload-disallowed-here": "तमलाई यो फाइल अधिलेखन गद्द नाइसक्का ।",
        "filedelete-maintenance": "रखरखाव चलिरह्याको हुनाले अस्थायी रुपमी फाइलहरू मेट्ट्या र मेट्याकोलाई पुनर्बहाली गर्न निष्क्रिय गरियाकोछ।",
        "statistics-users-active": "सक्रिय प्रयोगकर्ताहरू",
        "statistics-users-active-desc": "प्रयोगकर्ताहरू जो {{PLURAL:$1|बितेको एक दिन|बितेका $1 दिनहरू}} बठे सक्रिय छन्",
        "nbytes": "$1 {{PLURAL:$1|बाइट|बाइटहरू}}",
+       "nlinks": "$1 {{PLURAL:$1|लिंक|लिंकहरू}}",
        "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
        "ntransclusions": "$1 {{PLURAL:$1पानामी प्रयोग भयाको|पनाहरूमी प्रयोग भयाका}}",
        "uncategorizedimages": "श्रेणीकरण नभयाका फाइलहरू",
        "emailpagetext": "तल दियाको फार्मले तमी यै {{GENDER:$1|प्रयोगकर्ता}}लाई इमेल पठाउन सक्द्या हौ । तमीले जो ठेगाना [[Special:Preferences|आफ्नो प्रयोगकर्ता रोजाईहरू]]मी दियाका छियौ त्यो यै इमेललाई \"पठाउने\" को रूपमी आउन्याछ, अतः प्राप्तकर्ता तमीलाई सिधै जवाफ दिनसक्द्याछ ।",
        "usermaildisabledtext": "यै विकिमी तम और प्रयोगकर्तानलाई ई-मेल पठाउन नाइसक्दा",
        "mywatchlist": "मेरो ध्यान सूची",
+       "nowatchlist": "तमरो ध्यान सूचीमी कोइ लै सामाग्री नाइथिन् ।",
+       "watchlistanontext": "कृपया तमरो ध्यान सूची हेद्द या सम्पादन गद्द कीलाइ लगइन गर ।",
+       "addedwatchtext-short": "\"$1\" पानो तमरो ध्यान सूचीमी जोडियाको छ ।",
+       "removedwatchtext": "\"[[:$1]]\" नामको पानो [[Special:Watchlist|तमरो ध्यान सूची]]बठे हटायाको छ।",
        "watch": "ध्यान राख",
        "watchthispage": "यै पानाको ध्यान राख",
        "unwatch": "ध्यान हटाओ",
        "unwatchthispage": "ध्यान हटाओ",
        "notanarticle": "सामाग्री छैन",
+       "watchlist-details": "तमरो ध्यान सूचीमी रहेका {{PLURAL:$1|$1 पाना|$1 पानाहरू}} कुरडी पाना गनियाका छैनन्।",
        "enotif_reset": "सब्बै पानाहरू हेर्याको भनी चिनो लाउन्या",
        "enotif_body": "प्रिय $WATCHINGUSERNAME,\n\n\n{{SITENAME}}को पाना $PAGETITLE  $PAGEEDITDATE का दिन $PAGEEDITOR द्वारा $CHANGEDORCREATED, \nअहिलको संशोधनको निउती हेर  $PAGETITLE_URL ।\n\n$NEWPAGE\n\nसम्पादकको सारांश: $PAGESUMMARY $PAGEMINOREDIT\n\nसम्पादकसित सम्पर्क राख:\nमेल: $PAGEEDITOR_EMAIL\nविकि: $PAGEEDITOR_WIKI\n\nतमी यै पानामी नगयासम्म अब उसो कुनै परिवर्तन भयाका खण्डमी कुनै सूचना दिन्याछैन ।\nतमरा सम्पूर्ण ध्यान सूचीका पानानको लागि तमीले सूचना पताकालाई ध्यान सूचीमी पुनर्बहाली गद्द सक्द्या हौ । \n\n             तमरो मित्र {{SITENAME}} सूचना प्रणाली\n--\nइमेल सूचना व्यवस्था परिवर्तन गद्द, जाओ\n{{canonicalurl:{{#special:Preferences}}}}\n\nध्यान सूची व्यवस्थित गर्न, जाओ\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nध्यान सूची मेट्न, जाओ\n$UNWATCHURL\n\nप्रतिक्रिया र अन्य सहयोगका निउती:\n$HELPPAGE",
        "confirmdeletetext": "तमी यो पानो र यैको इतिहास मेट्ट लाग्याछौ । कृपया पुष्टि गर कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तम मेट्ट लाग्याछौ।",
        "isimage": "फाइल लिङ्क",
        "whatlinkshere-prev": "{{PLURAL:$1|पैलो|पैलो $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|अर्को|अर्को $1}}",
-       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-hideredirs": "$1 अनुप्रेषित हुन्छ",
        "whatlinkshere-hidetrans": "$1 पारदर्शन",
        "whatlinkshere-hidelinks": "$1 लिङ्कहरु",
+       "whatlinkshere-hideimages": "$1 फाइल लिंकहरू",
        "whatlinkshere-filters": "छानियाका",
        "ipbreason-dropdown": "* ब्लक गर्नुका समान्य कारणहरू\n** झूटो सूचना दियाको\n** पानानबठे सामाग्रीहरू हटायाको\n** बाहिरी जालक्षेत्र (sites)सित नचाहिंदो लिङ्क गर्याको \n** पानानमी बकवास/गाली-गलौच हाल्याको\n** भै धेकाउने व्यवहार/उत्पीडन (सताउने कार्य) गर्याको\n** धेरै गलत खाताहरू बनायाको\n** प्रयोगकर्ता नाम अस्वीकार्य",
        "ipboptions": "२ घण्टाहरू:2 hours,१ दिन :1 day,३ दिनहरू:3 days,१ हप्ता:1 week,२ हप्ताहरू:2 weeks,१ महिना:1 month,३ महिनाहरू:3 months,६ महिनाहरू:6 months,१ वर्ष:1 year,अनगिन्ती:infinite",
        "blocklink": "रोक्न्या",
        "contribslink": "योगदानहरू",
        "block-log-flags-anononly": "नाम नभयाका प्रयोकर्ताहरू मात्र",
+       "proxyblockreason": "तमरो IP ठेगानामी रोक लगायाको छ किनकी यो खुला प्रोक्सी हो ।\nकृपया तमरो इन्टरनेट सेवा प्रदायक या प्राविधिक सहायतासँग सम्पर्क गरीबर यै सुरक्षा समस्याका बारेमी जानकारी गराओ ।",
+       "sorbsreason": "तमरो IP ठेगाना खुल्ला प्रोक्सीको रुपमी  DNSBL मा सूचीकरण गरिएको छ यैलाई{{SITENAME}}ले प्रयोगमी ल्यायाको छ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमी रह्याको छ, या त तमरो हो वा त्यै प्रक्सी सर्भरको हो जैको प्रयोग तमी गद्दा छौ रे यै माथि प्रतिबन्ध लगाइयाको छ । वास्तविक कारण थ्यो:$1",
        "ipbblocked": "तमी अरु प्रयोगकर्तानहरूलाई ब्लक गर्न वा उनीहरूको ब्लक खोल्न नाइसक्दा किनभने तमी आफै ब्लक भयाका छौ ।",
+       "ipbnounblockself": "तमी आफुलाई आफै अनब्लक गद्द नाइ सक्दा ।",
        "lockdbtext": "डेटाबेसमी ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो रौजाईमी परिवर्तन, आफ्नो ध्यानसूचीमी सम्पादन, र अन्य वस्तु जैको लागि डेटाबेसमी परिवर्तन गरें हुन्छ, त्यैबठे वन्चित हुन्याछ । कृपया यो सुनिश्चित गर कि तम यो गर्न चाहन्छौ, र तम रक्षण पश्चात ताला खोल्न्या हौ ।",
        "movepagetext-noredirectfixer": "तल दियाको फारमले पानाको नाम परिवर्तन गद्याछ, उइको सबै इतिहास पनि नयाँ नामले धेकिन्याछ ।\nपुरानो शीर्षक नयाँ नाममी अनुप्रेषण गद्याछ ।\nमूल शीर्षक तर्फ लिएर जान्या सबै अनुप्रेषणहरूलाई तम स्वचालित रूपले परिवर्तन गद्द सक्द्या हौ ।\nयदि तम यसो नाइ गद्या भया कृपया [[Special:DoubleRedirects|दोहोरो]] पुनर्निर्देशन वा [[Special:BrokenRedirects|टुटेको पुनर्निर्देशन]]का लागि पक्कै जाँच गर ।\nलिङ्क आफ्नो स्थानमै रहोस्, यो सुनिश्चित गर्ने जिम्मेवारी तमरो हो ।\n\nयदि नयाँ शीर्षकको लेख पहिले देखि छ भण्या नाम परिवर्तन '''हुन''' सक्दैन । तर यदि नयाँ शीर्षक भयाको लेख खाली छ अथवा कतै अन्य स्थानमी अनुप्रेषित गद्दैछ र साथै उइको पुरानो संस्करण छैन भण्या त्यैको नाम परिवर्तन हुन्याछ ।\nयैको अभिप्राय यो हो कि यदि तमीबठे गल्ती भयाको छ भण्या तम फेरी पुरानो नाममी यस पानालाई सार्न सक्द्याछौ, र साथै तम कुनै पहिली बठे रह्याको पानाको सट्टा यो स्थानान्तरण गद्द सक्द्या हौन ।\n\n<strong>चेतावनी!<strong>\nयदि पानो खासै लोकप्रिय छ भण्या त्यैको लागि यो एउटा ठुलो र अकस्मात परिवर्तन हुन सक्छ;\nअगाडी बढ्नु भन्ना पहिली तमी यैको नतिजासँग परिचित भयाकाछौ ।",
+       "movenologintext": "पानाको नाम बदल्नको लागि तमी दर्ता गरियाको र [[Special:UserLogin|लगइन गर्याको]] प्रयोगकर्ता हुनुपडन्छ ।",
        "cant-move-user-page": "तमसँग प्रयोगकर्ता पानाहरू साद्या अनुमती नाइथिन् (सहपानाहरू बाहेक)",
        "cant-move-to-user-page": "तमसँग पानाहरूलाई प्रयोगकर्ता पानामी साद्या अनुमती नाइथिन् (प्रयोगकर्ता सहपृष्ठहरूमी बाहेक)",
        "move-subpages": "उप पानाहरू सार्न्या($1 सम्मको)",
        "import-noarticle": "आयात गद्दाकी लाई पानाहरू नाइथिन्",
        "import-logentry-upload-detail": "$1 {{PLURAL:$1|संशोधन|संशोधनहरू}} आयात भयो",
        "tooltip-pt-userpage": "तमरो प्रयोगकर्ता पानो",
-       "tooltip-pt-mytalk": "तमरà¥\8b à¤\95à¥\81रणिकानी पानो",
+       "tooltip-pt-mytalk": "तमरà¥\8b à¤\95à¥\81रडà¥\80कानी पानो",
        "tooltip-pt-preferences": "तमरा अभिरुचिहरू",
        "tooltip-pt-watchlist": "पृष्ठहरूको सूची जैका फेरबदलहरुलाई तमले पहरा गरिराखेका छौ ।",
        "tooltip-pt-mycontris": "तमरो योगदानको सूची",
        "tooltip-pt-logout": "बाहिर निस्कन्या (लग आउट)",
        "tooltip-pt-createaccount": "तमलाई खाता बनौन लै लग इन अद्द हम हौसला अद्दाउ; काइकि, यो अनिवार्य नाइथी भण्या ।",
        "tooltip-ca-talk": "सामाग्री पृष्ठबारेमी छलफल",
-       "tooltip-ca-edit": "तम à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤¸à¤®à¥\8dपादन à¤\85दà¥\8dद à¤¸à¤\95नà¥\8dà¤\9bà¥\8c à¥¤ à¤\95à¥\83पया à¤¸à¤\99à¥\8dà¤\97à¥\8dरह â\80\8dà¤\97दà¥\8dद à¤\85à¤\97ाडà¥\80 à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न à¤¬à¤\9fन à¤ªà¥\8dरयà¥\8bà¤\97 à¤\85रिदिय à¥¤",
+       "tooltip-ca-edit": "यà¥\87 à¤ªà¤¾à¤¨à¤¾ à¤¸à¤®à¥\8dपादन à¤\97र",
        "tooltip-ca-addsection": "नयाँ खण्ड सुरु अरिदिय",
        "tooltip-ca-viewsource": "यो पानो सुरक्षित अरियाको छ। यैको श्रोत हेद्द सकन्छौ ।",
        "tooltip-ca-history": "यै पृष्ठका पैल्लिका पुनरावलोकनहरु",
        "tooltip-summary": "नानो सारांश हालिदिय",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|प्रयोगकर्ता|प्रयोगकर्ताहरू}} $1",
        "anonusers": "{{SITENAME}} का नाम नभयाका {{PLURAL:$2| प्रयोगकर्ता|प्रयोगकर्ताहरू}} $1",
-       "simpleantispam-label": "à¤\90नà¥\8dà¤\9fà¥\80-सà¥\8dपà¥\8dयाम à¤\9cाà¤\81à¤\9a।\nयà¥\88लाà¤\88 <strong>नहà¥\80à¤\82</strong> भद्य्या!",
+       "simpleantispam-label": "à¤\90नà¥\8dà¤\9fà¥\80-सà¥\8dपà¥\8dयाम à¤\9cाà¤\81à¤\9a।\nयà¥\88लाà¤\88 <strong>नाà¤\87à¤\81</strong> भद्य्या!",
        "pageinfo-toolboxlink": "यै पानाको जाणकारी",
        "rcpatroldisabled": "अहिलका परिवर्तनहरू गस्ती निष्क्रिय पार्याको छ ।",
        "rcpatroldisabledtext": "अहिलका परिवर्तनहरू गस्ती गुण अहिलको लागि निष्कृय पारियाको छ ।",
+       "markedaspatrollederror-noautopatrol": "तमी आफ्नै सम्पादनलाई गस्ती गरियाको भनि चिनो लगाउन नाइसक्दा ।",
        "patrol-log-header": "गस्ती गर्याका संस्करणहरूको लग यस प्रकार रह्याका छन् ।",
        "previousdiff": "← पुरानो सम्पादन",
        "nextdiff": "नौलो सम्पादन →",
+       "mediawarning": "<storng>चेतावनी</storng>: यै फाइलमी घातक कोडहरू पनि हुनसक्दान\nयैलाई सञ्चालन गद्दा तमरो प्रणालीमी नियन्त्रण गरिन सक्छ ।",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|पानो|पानाहरू}}",
        "file-info-size": "$1 × $2 पिक्सेलहरु, फाइल आकार: $3, MIME प्रकार: $4",
        "file-info-size-pages": "$1 × $2 पिक्सेलहरू, फाइल आकार: $3, MIME प्रकार: $4, $5 {{PLURAL:$5|पानो|पानाहरू}}",
        "exif-orientation-1": "सानतिनो",
        "namespacesall": "सब्बै",
        "monthsall": "सब्बै",
+       "confirmemail_noemail": "तमरो प्रयोगकर्ता [[Special:Preferences|रोजाईमी]] मान्य इमेल ठेगाना राखीयाको छैन ।",
+       "confirmemail_pending": "तमरो इमेलमी प्रपाणिकरण कोड पैल्ली नै पठाइ सकियाको छ;\nयदि तमले अल्लै खाता खोल्याका भया कोडका निउती पुन: अनुरोध गद्द अघाडी कोड नआइपुगुन्ज्या कृपया एक पल्ट पख ।",
+       "confirmemail_oncreate": "प्रमाणिकरण कोड तमरो इमेल ठेगानामी पठायाको छ ।\nयो कोड लगइन गद्दाका लागि अत्यवश्यक छैन, तर यै विकिमी इमेल ठेगानामी आधारित सेवाहरू उपभोग गद्द कोड उपलब्ध गराउनु पड्ड्या हुन्छ ।",
+       "confirmemail_sendfailed": "{{SITENAME}} प्रमाणिकरण इमेल पठाई सकियोन।\nतमरा इमेलमी अमान्य अक्षरहरू छन् कि जाँचियल ।\n\nमेलरले पठायाको त्रुटी रैबार: $1",
+       "confirmemail_success": "तमरो इमेल ठेगाना प्रमाणिकरण गरियाको छ ।\nअब तमी [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्द्याहौ ।",
+       "confirmemail_loggedin": "तमरो इमेल ठेगाना प्रमाणित भयाको छ।",
        "confirmrecreate": "प्रयोगकर्ता [[User:$1|$1]] ([[User talk:$1|कुरडी]])ले  तमले  सम्पादन सुरु गर्यापछि यो पानो मेट्याकाछन् । कारण थ्यो:\n: ''$2''\nकृपया सुनिश्चित गर कि तम यो पानो साँच्चै निर्माण गद्द चाहन्छौ ।",
        "size-bytes": "$1 अक्षरहरू",
        "size-kilobytes": "$1 किलोबाइट",
        "size-gigabytes": "$1 गिगाबाइट",
        "lag-warn-normal": " $1 {{PLURAL:$1|सेकेन्ड |सेकेन्डहरू}} भन्दा नौला फेरबदलहरू यै सूचीमी नधेकाउन सक्छ ।",
        "lag-warn-high": "डेटावेस सर्भरको मस्तै ढिलाको कारणले  $1 {{PLURAL:$1|सेकेन्ड|सेकेन्डहरू}} पछिका परिवर्तनहरू नधेकिन सक्छ ।",
+       "watchlistedit-raw-done": "तमरो ध्यान सूची अपडेट गरियाको छ।",
+       "watchlistedit-clear-explain": "तमरा ध्यान सूचीबठे सम्पूर्ण पाना हटाइया",
+       "watchlistedit-clear-done": "तमरो ध्यान सूची खाली गरीयाको छ।",
        "watchlisttools-view": "आधारित फेरबदलीहरू हेर",
-       "signature": "[[{{ns:user}}:$1|$2 ]]",
+       "signature": "[[{{एनस:प्रयोगकर्ता}}:$1|$2]]([[{{एनस:प्रयोगकर्ता_कुरडी}}:$1|कुरडी]])",
        "specialpages": "खास पानो",
        "specialpages-note": "* साधारण खास पानाहरू।\n* <span class=\"mw-specialpagerestricted\">निषेधित खास पानाहरू।</span>",
        "specialpages-group-changes": "अल्लैका परिवर्तन लगहरू",
        "tag-filter": "[[Special:Tags|पुछड]] छानिन्या",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ट्याग|ट्यागहरू}}]]: $2)",
        "tags-hitcount": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरू}}",
+       "tags-create-warnings-below": "क्या तमी यो ट्याग बनाउन्या काम जारी राख्न चाहन्छौ ?",
        "tags-delete-explanation-warning": "यो क्रिया <strong>अपरिवर्तनीय</strong> हो र <strong>त्यसलाई परिवर्तन गर्न नाईसकिंदो</strong>, डेटाबेस प्रवन्धक पनि यैलाई केहि गद्द सक्दाइनन् । विश्वासपूर्ण रूपले तम तय गर कि तमी यै ट्यागलाई हटाउन चाहन्छौ ।",
+       "htmlform-invalid-input": "तमले प्रविष्ठ गर्याका कुनै सामग्रीहरू ठिक नाइथिन्",
        "logentry-delete-delete": "$1 बठे पानो $3 {{GENDER:$2|मेटाइयो}}",
        "logentry-move-move": "$1 {{GENDER:$2|द्वारा}} $3 पृष्ठलाई $4 मि सारियो",
        "logentry-newusers-create": "प्रयोगकर्ता खाता $1 {{GENDER:$2|खोलियो}}",
        "api-error-duplicate-archive": "यै साइटमी पहिलेबाट यस्तै सामग्री {{PLURAL:$1|भयाको [$2 अर्को फाइल थियो]|भयाका  [$2 केहि अरु फाइलहरू थिए]}} ।\nतर {{PLURAL:$1|यो मेट्याको थियो|यी मेटायाका थिए}} ।",
        "api-error-duplicate-archive-popup-title": "पैल्ली  {{PLURAL:$1|मेट्याको फाइलको|मेट्याका फाइलहरूको}} नकल प्रति बनाउन्या।",
        "api-error-duplicate-popup-title": "{{PLURAL:$1|फाइल|फाइलहरू}} नकल प्रति बनाउन्या",
+       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो भण्या पुन प्रयास गर ।</strong>\nयदि यसले कार्य पूर्ण भएन भण्या [[Special:UserLogout|लग आउट गरिबर]] फेरी लग इन गर्या ।",
+       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तमीले लग इन गर्या छैनौ, पूर्वावलोकन लुकाइयाको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्द सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भण्या कृपया [[Special:UserLogin|लग इन गरिबर]] पुनः प्रयास गर्या ।</strong>",
        "default-skin-not-found": "ओह! तमरो विकिको पूर्व निर्धारित खोल जस्तो कि <code dir=\"ltr\">$wgDefaultSkin</code> मी बताइयाको<code>$1</code>, उपलब्ध नाईथिन् ।\n\nतमरो इन्स्टलेसन यी खोलहरूलाई सम्मिलित गर्दछ {{PLURAL:$4|खोल|खोलहरू}}। हेर [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: खोललाई सम्मिलित गर्नु] ताकि तमीलाई जानकारी होस् कि कसरि {{PLURAL:$4|उसलाई|उसलाई सम्मिलित गर्न सकियोस् र निर्धारितलाई तय गद्दे}}।\n\n$2\n\n; यदि तमीले अहिले मीडियाविकि इन्स्टाल गर्याका छौ:\n: तमीले सम्भवत गिटबठे इन्स्टाल गर्याका छौ, वा सिधै स्रोत कोडबठे गर्याका छौ जैको लागि कुनै अर्कै तारिका प्रयोग गरियाको छ । यो आशा अनुरूप छ । कोशिश गर केहि खोलहरू\n[https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's मीडियाविकिको खोल डाइरेक्ट्रीबाट डाउनलोड गद्या], जैको लागि तमी:\n:* डाउनलोड गर [https://www.mediawiki.org/wiki/Download टरबल इन्स्टालर], जुन कयौं खोलहरू र विस्तारमी उपलब्ध छन्। तमी खोलहरूको कोड <code>skins/</code> त्यसको डाइरेक्ट्रीबाट कपी-पेस्ट गद्द सक्द्या हौ। \n:* व्यक्तिगत खोलहरू टरबलबठे डाउनलोड गर\n[https://www.mediawiki.org/wiki/Special:SkinDistributor मीडिया विकि] बठे।\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins गिटको प्रयोग गरेर डाउनलोड गद्द सकन्छौ]।\n: यदि तमी विकासकर्ता हौ भण्या यसो गद्दा तमरो गिट-रिपजिटरीमी केहि हुनुहुँदैन । \n; यदि तमीले अहिले मीडियाविकिलाई अपग्रेड गर्याका छौ:\n: मीडियाविकि १.२४ र यैको नवीन रूप स्वतः रूपले खोलहरूलाई सक्षम गद्दैनन् (हेर [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual:खोलहरूको स्वतः खोज])। तमी निम्नलिखितलाई पेस्ट गद्द सकन्छौ: {{PLURAL:$5|लाइन|लाइनहरू}}  <code>LocalSettings.php</code> मी ताकि {{PLURAL:$5|उसले|सबै}} सक्षम होस् जस्तो कि तमीले इन्स्टाल गर्याको {{PLURAL:$5|खोल|खोलहरू}}को मामिलामी:\n\n<pre dir=\"ltr\">$3</pre>\n\n; यदि तमीले अहिले परिवर्तन गर्याका छौ<code>LocalSettings.php</code>:\n: खोल नामहरूको अगाडी डबल-क्लिक गर जसले तमलाई विभिन्न प्रकारहरूको विकल्प दिन्छ।"
 }
index d317838..03fe0c6 100644 (file)
        "actionthrottled": "Η ενέργεια παρεμποδίστηκε",
        "actionthrottledtext": "Σαν μέτρο κατά του spam, υπάρχει όριο στην εκτέλεση αυτής της ενέργειας πολλές φορές μέσα σε μικρό χρονικό διάστημα και έχετε ξεπεράσει αυτό το όριο.\nΠαρακαλούμε δοκιμάστε ξανά σε λίγα λεπτά.",
        "protectedpagetext": "Αυτή η σελίδα έχει προστατευθεί για πρόληψη επεξεργασίας ή άλλες ενέργειες.",
-       "viewsourcetext": "Μπορείτε να προβάλετε και να αντιγράψετε τον πηγαίο κώδικα αυτής της σελίδας:",
-       "viewyourtext": "Μπορείτε να προβάλετε και να αντιγράψετε τον πηγαίο κώδικα των <strong>επεξεργασιών σας</strong> σε αυτήν τη σελίδα:",
+       "viewsourcetext": "Μπορείτε να προβάλετε και να αντιγράψετε τον πηγαίο κώδικα αυτής της σελίδας.",
+       "viewyourtext": "Μπορείτε να προβάλετε και να αντιγράψετε τον πηγαίο κώδικα των <strong>επεξεργασιών σας</strong> σε αυτήν τη σελίδα.",
        "protectedinterface": "Αυτή η σελίδα παρέχει κείμενο διεπαφής για το λογισμικό σε αυτό το wiki, και έχει κλειδωθεί για την πρόληψη κατάχρησης.\n\nΓια να προσθέσετε ή να αλλάξετε τις μεταφράσεις για όλα τα wiki, παρακαλούμε χρησιμοποιήστε το [//translatewiki.net/ translatewiki.net], το εγχείρημα τοπικής προσαρμογής της γλώσσας του MediaWiki.",
        "editinginterface": "<strong>Προειδοποίηση:</strong> Επεξεργάζεστε μια σελίδα η οποία χρησιμοποιείται για να παρέχει κείμενο διεπαφής για το λογισμικό. Αλλαγές σε αυτήν τη σελίδα θα επηρεάσουν την εμφάνιση της διεπαφής χρήστη για άλλους χρήστες αυτού του wiki.",
        "translateinterface": "Για να προσθέσετε ή να αλλάξετε τις μεταφράσεις για όλα τα wiki, παρακαλούμε χρησιμοποιήστε το [//translatewiki.net/ translatewiki.net], το έργο τοπικοποίησης του MediaWiki.",
        "readonlywarning": "'''Προειδοποίηση: Η βάση δεδομένων έχει κλειδωθεί για συντήρηση, έτσι δεν θα μπορέσετε να αποθηκεύσετε τις επεξεργασίες σας αυτή τη στιγμή.'''\nΜπορείτε αν θέλετε να μεταφέρετε με αντιγραφή-επικόλληση το κείμενό σας σε αρχείο κειμένου και να το αποθηκεύσετε για αργότερα.\n\nΟ διαχειριστής που την κλείδωσε έδωσε την εξής εξήγηση: $1",
        "protectedpagewarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή μπορούν να την επεξεργαστούν.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
        "semiprotectedpagewarning": "'''Σημείωση:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο εγγεγραμμένοι χρήστες μπορούν να την επεξεργαστούν.\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
-       "cascadeprotectedwarning": "'''Προσοχή:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή συστήματος (sysop) να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην|στις}} {{PLURAL:$1|ακόλουθη|ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη|προστατευμένες}} {{PLURAL:$1|σελίδα|σελίδες}}:",
+       "cascadeprotectedwarning": "'''Προσοχή:''' Αυτή η σελίδα έχει κλειδωθεί ώστε μόνο χρήστες με δικαιώματα διαχειριστή συστήματος να μπορούν να την επεξεργαστούν, επειδή περιλαμβάνεται {{PLURAL:$1|στην ακόλουθη|στις ακόλουθες}} διαδοχικά (cascaded) {{PLURAL:$1|προστατευμένη σελίδα|προστατευμένες σελίδες}}:",
        "titleprotectedwarning": "'''Προειδοποίηση: Αυτή η σελίδα έχει κλειδωθεί ώστε χρειάζονται [[Special:ListGroupRights|ειδικά δικαιώματα]] για να δημιουργηθεί.'''\nΗ πιο πρόσφατη καταχώρηση στο αρχείο καταγραφής παρέχεται παρακάτω για αναφορά:",
        "templatesused": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} στη σελίδα αυτή:",
        "templatesusedpreview": "{{PLURAL:$1|Πρότυπο που χρησιμοποιείται|Πρότυπα που χρησιμοποιούνται}} σε αυτήν την προεπισκόπηση:",
        "search-category": "(κατηγορία $1)",
        "search-file-match": "(ταιριάζει με το περιεχόμενο του αρχείου)",
        "search-suggest": "Μήπως εννοούσατε: $1",
+       "search-rewritten": "Εμφανίζονται αποτελέσματα για $1. Εναλλακτικά αναζητήστε για $2.",
        "search-interwiki-caption": "Αδελφικά εγχειρήματα",
        "search-interwiki-default": "$1 αποτελέσματα:",
        "search-interwiki-more": "(περισσότερα)",
        "newpageletter": "Ν",
        "boteditletter": "ρ",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|χρήστης|χρήστες}} παρακολουθούν]",
-       "rc_categories": "Περιόρισε στις κατηγορίες (διαχωρίστε τις με \"|\")",
-       "rc_categories_any": "Οποιαδήποτε",
+       "rc_categories": "Περιορίστε τις κατηγορίες (διαχωρίστε τις με \"|\"):",
+       "rc_categories_any": "Οποιαδήποτε από τις επιλεγμένες",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} μετά από την αλλαγή",
        "newsectionsummary": "/* $1 */ νέα ενότητα",
        "rc-enhanced-expand": "Εμφάνιση λεπτομερειών",
        "spam_reverting": "Επαναφορά στην τελευταία έκδοση που δεν περιέχει συνδέσμους στο $1",
        "spam_blanking": "Όλες οι αναθεωρήσεις περιείχαν συνδέσμους προς το $1, εξάλειψη",
        "spam_deleting": "Διαγραφή όλων των αναθεωρήσεων που περιείχαν συνδέσμους προς το $1",
-       "simpleantispam-label": "Î\88λεγÏ\87οÏ\82 Î³Î¹Î± spam.\n<strong>Î\9cÎ\97Î\9d</strong> το συμπληρώσετε αυτό!",
+       "simpleantispam-label": "Î\88λεγÏ\87οÏ\82 Î³Î¹Î± spam.\n<strong>Î\9cην</strong> το συμπληρώσετε αυτό!",
        "pageinfo-title": "Πληροφορίες για \"$1\"",
        "pageinfo-not-current": "Μας συγχωρείτε, είναι αδύνατο να παράσχουμε αυτή την πληροφορία για παλιές αναθεωρήσεις.",
        "pageinfo-header-basic": "Βασικές πληροφορίες",
        "special-characters-group-khmer": "καμποτζιανά",
        "special-characters-title-endash": "παύλα",
        "special-characters-title-emdash": "διπλή παύλα",
-       "special-characters-title-minus": "σύμβολο πλην"
+       "special-characters-title-minus": "σύμβολο πλην",
+       "mw-widgets-dateinput-placeholder-day": "ΕΕΕΕ-ΜΜ-ΗΗ",
+       "mw-widgets-dateinput-placeholder-month": "ΕΕΕΕ-ΜΜ"
 }
index 1fdd75d..d501906 100644 (file)
@@ -7,6 +7,7 @@
        "tog-hideminor": "Hide minor edits from recent changes",
        "tog-hidepatrolled": "Hide patrolled edits from recent changes",
        "tog-newpageshidepatrolled": "Hide patrolled pages from new page list",
+       "tog-hidecategorization": "Hide categorization of pages",
        "tog-extendwatchlist": "Expand watchlist to show all changes, not just the most recent",
        "tog-usenewrc": "Group changes by page in recent changes and watchlist",
        "tog-numberheadings": "Auto-number headings",
@@ -21,7 +22,7 @@
        "tog-minordefault": "Mark all edits minor by default",
        "tog-previewontop": "Show preview before edit box",
        "tog-previewonfirst": "Show preview on first edit",
-       "tog-enotifwatchlistpages": "Email me when a page or file on my watchlist is changed",
+       "tog-enotifwatchlistpages": "Email me when a page or file on my watchlist is changed",
        "tog-enotifusertalkpages": "Email me when my user talk page is changed",
        "tog-enotifminoredits": "Email me also for minor edits of pages and files",
        "tog-enotifrevealaddr": "Reveal my email address in notification emails",
@@ -36,6 +37,7 @@
        "tog-watchlisthideliu": "Hide edits by logged in users from the watchlist",
        "tog-watchlisthideanons": "Hide edits by anonymous users from the watchlist",
        "tog-watchlisthidepatrolled": "Hide patrolled edits from the watchlist",
+       "tog-watchlisthidecategorization": "Hide categorization of pages",
        "tog-ccmeonemails": "Send me copies of emails I send to other users",
        "tog-diffonly": "Do not show page content below diffs",
        "tog-showhiddencats": "Show hidden categories",
        "actionthrottled": "Action throttled",
        "actionthrottledtext": "As an anti-spam measure, you are limited from performing this action too many times in a short space of time, and you have exceeded this limit.\nPlease try again in a few minutes.",
        "protectedpagetext": "This page has been protected to prevent editing or other actions.",
-       "viewsourcetext": "You can view and copy the source of this page:",
-       "viewyourtext": "You can view and copy the source of <strong>your edits</strong> to this page:",
+       "viewsourcetext": "You can view and copy the source of this page.",
+       "viewyourtext": "You can view and copy the source of <strong>your edits</strong> to this page.",
        "protectedinterface": "This page provides interface text for the software on this wiki, and is protected to prevent abuse.\nTo add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
        "editinginterface": "<strong>Warning:</strong> You are editing a page that is used to provide interface text for the software.\nChanges to this page will affect the appearance of the user interface for other users on this wiki.",
        "translateinterface": "To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
        "createacct-benefit-head3": "{{NUMBEROFACTIVEUSERS}}",
        "createacct-benefit-body3": "recent {{PLURAL:$1|contributor|contributors}}",
        "badretype": "The passwords you entered do not match.",
+       "usernameinprogress": "An account creation for this user name is already in progress.\nPlease wait.",
        "userexists": "Username entered already in use.\nPlease choose a different name.",
        "loginerror": "Login error",
        "createacct-error": "Account creation error",
        "search-category": "(category $1)",
        "search-file-match": "(matches file content)",
        "search-suggest": "Did you mean: $1",
+       "search-rewritten": "Showing results for $1. Search instead for $2.",
        "search-interwiki-caption": "Sister projects",
        "search-interwiki-default": "Results from $1:",
        "search-interwiki-custom": "",
        "rcshowhidemine": "$1 my edits",
        "rcshowhidemine-show": "Show",
        "rcshowhidemine-hide": "Hide",
+       "rcshowhidecategorization": "$1 page categorization",
+       "rcshowhidecategorization-show": "Show",
+       "rcshowhidecategorization-hide": "Hide",
        "rclinks": "Show last $1 changes in last $2 days<br />$3",
        "diff": "diff",
        "hist": "hist",
        "unpatrolledletter": "!",
        "number_of_watching_users_RCview": "[$1]",
        "number_of_watching_users_pageview": "[$1 watching {{PLURAL:$1|user|users}}]",
-       "rc_categories": "Limit to categories (separate with \"|\")",
-       "rc_categories_any": "Any",
+       "rc_categories": "Limit to categories (separate with \"|\"):",
+       "rc_categories_any": "Any of the chosen",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} after change",
        "newsectionsummary": "/* $1 */ new section",
        "recentchangeslinked-summary": "This is a list of changes made recently to pages linked from a specified page (or to members of a specified category).\nPages on [[Special:Watchlist|your watchlist]] are <strong>bold</strong>.",
        "recentchangeslinked-page": "Page name:",
        "recentchangeslinked-to": "Show changes to pages linked to the given page instead",
+       "recentchanges-page-added-to-category": "[[:$1]] added to category",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] and {{PLURAL:$2|one page|$2 pages}} added to category",
+       "recentchanges-page-removed-from-category": "[[:$1]] removed from category",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] and {{PLURAL:$2|one page|$2 pages}} removed from category",
        "upload": "Upload file",
        "uploadbtn": "Upload file",
        "reuploaddesc": "Cancel upload and return to the upload form",
        "upload-too-many-redirects": "The URL contained too many redirects",
        "upload-http-error": "An HTTP error occurred: $1",
        "upload-copy-upload-invalid-domain": "Copy uploads are not available from this domain.",
+       "upload-dialog-title": "Upload file",
+       "upload-dialog-error": "An error occurred",
+       "upload-dialog-warning": "A warning occurred",
+       "upload-dialog-button-cancel": "Cancel",
+       "upload-dialog-button-done": "Done",
+       "upload-dialog-button-save": "Save",
+       "upload-dialog-button-upload": "Upload",
+       "upload-dialog-label-select-file": "Select file",
+       "upload-dialog-label-infoform-title": "Details",
+       "upload-dialog-label-infoform-name": "Name",
+       "upload-dialog-label-infoform-description": "Description",
+       "upload-dialog-label-usage-title": "Usage",
+       "upload-dialog-label-usage-filename": "File name",
        "backend-fail-stream": "Could not stream file \"$1\".",
        "backend-fail-backup": "Could not backup file \"$1\".",
        "backend-fail-notexists": "The file $1 does not exist.",
        "statistics-header-users": "User statistics",
        "statistics-header-hooks": "Other statistics",
        "statistics-articles": "Content pages",
+       "statistics-articles-desc": "",
        "statistics-pages": "Pages",
        "statistics-pages-desc": "All pages in the wiki, including talk pages, redirects, etc.",
        "statistics-files": "Uploaded files",
        "watchlistanontext": "Please log in to view or edit items on your watchlist.",
        "watchnologin": "Not logged in",
        "addwatch": "Add to watchlist",
-       "addedwatchtext": "The page \"[[:$1]]\" has been added to your [[Special:Watchlist|watchlist]].\nFuture changes to this page and its associated talk page will be listed there.",
+       "addedwatchtext": "\"[[:$1]]\" and its discussion page have been added to your [[Special:Watchlist|watchlist]].",
        "addedwatchtext-short": "The page \"$1\" has been added to your watchlist.",
        "removewatch": "Remove from watchlist",
-       "removedwatchtext": "The page \"[[:$1]]\" has been removed from [[Special:Watchlist|your watchlist]].",
+       "removedwatchtext": "\"[[:$1]]\" and its discussion page have been removed from your [[Special:Watchlist|watchlist]].",
        "removedwatchtext-short": "The page \"$1\" has been removed from your watchlist.",
        "watch": "Watch",
        "watchthispage": "Watch this page",
        "changecontentmodel-success-title": "The content model was changed",
        "changecontentmodel-success-text": "The content type of [[:$1]] has been changed.",
        "changecontentmodel-cannot-convert": "The content on [[:$1]] cannot be converted to a type of $2.",
-       "changecontentmodel-title-cantexist": "It is not possible to have a page at $1.",
        "changecontentmodel-nodirectediting": "The $1 content model does not support direct editing",
        "log-name-contentmodel": "Content model change log",
        "log-description-contentmodel": "Events related to the content models of a page",
        "undeletepagetext": "The following {{PLURAL:$1|page has been deleted but is|$1 pages have been deleted but are}} still in the archive and can be restored.\nThe archive may be periodically cleaned out.",
        "undelete-fieldset-title": "Restore revisions",
        "undeleteextrahelp": "To restore the page's entire history, leave all checkboxes deselected and click <strong><em>{{int:undeletebtn}}</em></strong>.\nTo perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click <strong><em>{{int:undeletebtn}}</em></strong>.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revision|revisions}} archived",
+       "undeleterevisions": "$1 {{PLURAL:$1|revision|revisions}} deleted",
        "undeletehistory": "If you restore the page, all revisions will be restored to the history.\nIf a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history.",
        "undeleterevdel": "Undeletion will not be performed if it will result in the top page or file revision being partially deleted.\nIn such cases, you must uncheck or unhide the newest deleted revision.",
        "undeletehistorynoadmin": "This page has been deleted.\nThe reason for deletion is shown in the summary below, along with details of the users who had edited this page before deletion.\nThe actual text of these deleted revisions is only available to administrators.",
        "tooltip-ca-watch": "Add this page to your watchlist",
        "tooltip-ca-unwatch": "Remove this page from your watchlist",
        "tooltip-search": "Search {{SITENAME}}",
-       "tooltip-search-go": "Go to a page with this exact name if exists",
+       "tooltip-search-go": "Go to a page with this exact name if it exists",
        "tooltip-search-fulltext": "Search the pages for this text",
        "tooltip-p-logo": "Visit the main page",
        "tooltip-n-mainpage": "Visit the main page",
        "tooltip-ca-nstab-category": "View the category page",
        "tooltip-minoredit": "Mark this as a minor edit",
        "tooltip-save": "Save your changes",
-       "tooltip-preview": "Preview your changes, please use this before saving!",
+       "tooltip-preview": "Preview your changes. Please use this before saving.",
        "tooltip-diff": "Show which changes you made to the text",
        "tooltip-compareselectedversions": "See the differences between the two selected revisions of this page",
        "tooltip-watch": "Add this page to your watchlist",
        "spam_reverting": "Reverting to last revision not containing links to $1",
        "spam_blanking": "All revisions contained links to $1, blanking",
        "spam_deleting": "All revisions contained links to $1, deleting",
-       "simpleantispam-label": "Anti-spam check.\nDo <strong>NOT</strong> fill this in!",
+       "simpleantispam-label": "Anti-spam check.\nDo <strong>not</strong> fill this in!",
        "pageinfo-header": "-",
        "pageinfo-title": "Information for \"$1\"",
        "pageinfo-not-current": "Sorry, it's impossible to provide this information for old revisions.",
        "watchlistedit-normal-legend": "Remove titles from watchlist",
        "watchlistedit-normal-explain": "Titles on your watchlist are shown below.\nTo remove a title, check the box next to it, and click \"{{int:Watchlistedit-normal-submit}}\".\nYou can also [[Special:EditWatchlist/raw|edit the raw list]].",
        "watchlistedit-normal-submit": "Remove titles",
-       "watchlistedit-normal-done": "{{PLURAL:$1|1 title was|$1 titles were}} removed from your watchlist:",
+       "watchlistedit-normal-done": "{{PLURAL:$1|A single title was|$1 titles were}} removed from your watchlist:",
        "watchlistedit-raw-title": "Edit raw watchlist",
        "watchlistedit-raw-legend": "Edit raw watchlist",
        "watchlistedit-raw-explain": "Titles on your watchlist are shown below, and can be edited by adding to and removing from the list;\none title per line.\nWhen finished, click \"{{int:Watchlistedit-raw-submit}}\".\nYou can also [[Special:EditWatchlist|use the standard editor]].",
        "logentry-newusers-create2": "User account $3 was {{GENDER:$2|created}} by $1",
        "logentry-newusers-byemail": "User account $3 was {{GENDER:$2|created}} by $1 and password was sent by email",
        "logentry-newusers-autocreate": "User account $1 was {{GENDER:$2|created}} automatically",
+       "logentry-protect-move_prot": "$1 {{GENDER:$2|moved}} protection settings from $4 to $3",
        "logentry-rights-rights": "$1 {{GENDER:$2|changed}} group membership for $3 from $4 to $5",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|changed}} group membership for $3",
        "logentry-rights-autopromote": "$1 was automatically {{GENDER:$2|promoted}} from $4 to $5",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "minus sign",
+       "mw-widgets-dateinput-no-date": "No date selected",
+       "mw-widgets-dateinput-placeholder-day": "YYYY-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "YYYY-MM",
        "mw-widgets-titleinput-description-new-page": "page does not exist yet",
        "mw-widgets-titleinput-description-redirect": "redirect to $1"
 }
index ccc1532..f86e4e7 100644 (file)
@@ -39,7 +39,8 @@
                        "לערי ריינהארט",
                        "아라",
                        "Fitoschido",
-                       "Sudastelaro"
+                       "Sudastelaro",
+                       "Ochilov"
                ]
        },
        "tog-underline": "Substreki ligilojn",
        "rollback-success": "Restaris redaktojn de $1; ŝanĝis al lasta versio de $2.",
        "sessionfailure-title": "Seanco malsukcesis",
        "sessionfailure": "Ŝajnas, ke estas problemo kun via ensalutado;\nĈi ago estis nuligita por malhelpi fiensalutadon.\nBonvolu alklaki la reirbutonon kaj reŝargi la paĝon el kiu vi venas, kaj provu denove.",
+       "changecontentmodel-title-label": "Titolo de paĝo",
+       "changecontentmodel-reason-label": "Kialo:",
+       "logentry-contentmodel-change-revertlink": "restarigi",
+       "logentry-contentmodel-change-revert": "restarigi",
        "protectlogpage": "Protokolo pri protektoj",
        "protectlogtext": "Sube estas listo de ŝanĝoj al paĝ-protektado.\nVidu [[Special:ProtectedPages|liston de protektitaj paĝoj]] por listo de aktuale aktivaj paĝo-protektadoj.",
        "protectedarticle": "protektis \"[[$1]]\"",
        "version-libraries": "Instalitaj bibliotekoj",
        "version-libraries-library": "Biblioteko",
        "version-libraries-version": "Versio",
+       "version-libraries-license": "Permesilo",
+       "version-libraries-description": "Priskribo",
+       "version-libraries-authors": "Aŭtoroj",
        "redirect": "Alidirektilo laŭ dosiero, uzanto, paĝo aŭ identigilo de revizio.",
        "redirect-legend": "Alidirektilo al dosiero aŭ paĝo",
        "redirect-summary": "Tiu ĉi paĝo alidirektas al dosiero (laŭ ĝia nomo), paĝo (laŭ ĝia revizio-numero aŭ paĝo-identigilo) aŭ al uzantopaĝo (laŭ numera uzanto-identigilo). Uzado: [[{{#Special:Redirect}}/file/Ekzemplo.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], aŭ [[{{#Special:Redirect}}/user/101]].",
        "special-characters-group-khmer": "kmera",
        "special-characters-title-endash": "mallonga streketo",
        "special-characters-title-emdash": "longa streketo",
-       "special-characters-title-minus": "minus-signo"
+       "special-characters-title-minus": "minus-signo",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
 }
index d6520d6..62ae0ae 100644 (file)
        "tog-hideminor": "Ocultar las ediciones menores en los cambios recientes",
        "tog-hidepatrolled": "Ocultar las ediciones patrulladas en los cambios recientes",
        "tog-newpageshidepatrolled": "Ocultar las páginas patrulladas en la lista de páginas nuevas",
+       "tog-hidecategorization": "Ocultar la categorización de páginas",
        "tog-extendwatchlist": "Mostrar todos los cambios en la lista de seguimiento, no solo los más recientes",
        "tog-usenewrc": "Agrupar los cambios por página en los cambios recientes y en la lista de seguimiento",
        "tog-numberheadings": "Numerar automáticamente los encabezados",
        "tog-watchlisthideliu": "Ocultar las ediciones de los usuarios registrados en la lista de seguimiento",
        "tog-watchlisthideanons": "Ocultar las ediciones de los usuarios anónimos en la lista de seguimiento",
        "tog-watchlisthidepatrolled": "Ocultar las ediciones patrulladas en la lista de seguimiento",
+       "tog-watchlisthidecategorization": "Ocultar la categorización de páginas",
        "tog-ccmeonemails": "Recibir copias de los correos electrónicos que envíe a otros usuarios",
        "tog-diffonly": "No mostrar el contenido de la página debajo de la lista de diferencias",
        "tog-showhiddencats": "Mostrar categorías ocultas",
        "actionthrottled": "Acción limitada",
        "actionthrottledtext": "Como medida contra el ''spam'', la acción que estás realizando está limitada a un número determinado de veces en un periodo corto de tiempo, y has excedido ese límite. Por favor inténtalo de nuevo en unos minutos.",
        "protectedpagetext": "Esta página ha sido protegida para evitar su edición u otras acciones.",
-       "viewsourcetext": "Puedes ver y copiar el código fuente de esta página:",
-       "viewyourtext": "Puedes ver y copiar el código de <strong>tus ediciones</strong> en esta página:",
+       "viewsourcetext": "Puedes ver y copiar el código fuente de esta página.",
+       "viewyourtext": "Puedes ver y copiar el código de <strong>tus ediciones</strong> en esta página.",
        "protectedinterface": "Esta página proporciona el texto de la interfaz del software en este wiki, y está protegida para prevenir el abuso.\nPara agregar o cambiar las traducciones para todos los wikis, por favor, usa [//translatewiki.net/ translatewiki.net], el proyecto de localización de MediaWiki.",
-       "editinginterface": "<strong>Advertencia:</strong> Estás editando una página usada para proporcionar texto de la interfaz al software. \nLos cambios en esta página afectarán la apariencia de la interfaz de los demás usuarios de este wiki.",
+       "editinginterface": "<strong>Advertencia:</strong> estás editando una página usada para proporcionar texto de la interfaz al software. \nLos cambios en esta página afectarán la apariencia de la interfaz de los demás usuarios de este wiki.",
        "translateinterface": "Para añadir o cambiar traducciones para todos los wikis, usa [//translatewiki.net/ translatewiki.net], el proyecto de localización de MediaWiki.",
        "cascadeprotected": "Esta página ha sido protegida contra edición porque está transcluida en {{PLURAL:$1|la siguiente página protegida|las siguientes páginas protegidas}} con la opción de «cascada» activa:\n$2",
        "namespaceprotected": "No tienes permiso para editar las páginas del espacio de nombres <strong>$1</strong>.",
        "missingsummary": "<strong>Atención:</strong> No has escrito un resumen de edición.\nSi haces clic nuevamente en «{{int:savearticle}}» tu edición se grabará sin él.",
        "selfredirect": "<strong>Advertencia:</strong> estás redirigiendo esta página a sí misma.\nPuede que hayas especificado erróneamente el destino de la redirección, o quizá estés editando la página equivocada. En cualquier caso, si haces clic de nuevo en \"{{int:savearticle}}\", se creará la redirección.",
        "missingcommenttext": "Escribe un comentario a continuación.",
-       "missingcommentheader": "<strong>Atención:</strong> No has escrito un asunto/encabezado para este comentario.\nSi haces clic nuevamente en \"{{int:savearticle}}\" tu edición se grabará sin él.",
+       "missingcommentheader": "<strong>Atención:</strong> no has escrito un asunto/encabezado para este comentario.\nSi haces clic nuevamente en \"{{int:savearticle}}\" tu edición se grabará sin él.",
        "summary-preview": "Previsualización del resumen:",
        "subject-preview": "Previsualización del asunto/encabezado:",
        "previewerrortext": "Se ha producido un error al intentar la vista previa de los cambios.",
        "userpage-userdoesnotexist-view": "El usuario «$1» no está registrado.",
        "blocked-notice-logextract": "Este usuario se encuentra actualmente bloqueado.\nA continuación se muestra la última entrada del registro de bloqueos para más información:",
        "clearyourcache": "<strong>Nota:</strong> tras guardar, quizás necesites actualizar la caché de tu navegador para ver los cambios.\n* <strong>Firefox/Safari:</strong> Mantén presionada la tecla <em>Mayús</em> mientras pulsas el botón <em>Actualizar</em>, o presiona <em>Ctrl+F5</em> o <em>Ctrl+R</em> (<em>⌘+R</em> en Mac)\n* <strong>Google Chrome:</strong> presiona <em>Ctrl+Shift+R</em> (<em>⌘+Mayús+R</em> en Mac)\n* <strong>Internet Explorer:</strong> mantén presionada <em>Ctrl</em> mientras pulsas <em>Actualizar</em>, o presiona <em>Ctrl+F5</em>\n* <strong>Opera:</strong> vacía la caché en <em>Herramientas → Preferencias</em>",
-       "usercssyoucanpreview": "<strong>Consejo:</strong> Usa el botón «{{int:showpreview}}» para probar el nuevo CSS antes de guardarlo.",
-       "userjsyoucanpreview": "<strong>Consejo:</strong> Usa el botón «{{int:showpreview}}» para probar el nuevo código JavaScript antes de guardarlo.",
-       "usercsspreview": "<strong>Recuerda que solo estás previsualizando tu CSS de usuario. ¡Aún no se ha guardado!</strong>",
-       "userjspreview": "<strong>¡Recuerda que solo estás previsualizando tu JavaScript de usuario. ¡Aún no se ha guardado!</strong>",
-       "sitecsspreview": "<strong>Recuerda que solo estás previsualizando este CSS. ¡Aún no se ha guardado!</strong>",
-       "sitejspreview": "<strong>Recuerda que solo estás previsualizando este código JavaScript. ¡Aún no se ha guardado!</strong>",
-       "userinvalidcssjstitle": "<strong>Advertencia:</strong> No existe la apariencia «$1». Recuerda que las páginas personalizadas .css y .js tienen un título en minúsculas. Por ejemplo, se usa {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
+       "usercssyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el nuevo CSS antes de guardarlo.",
+       "userjsyoucanpreview": "<strong>Consejo:</strong> usa el botón «{{int:showpreview}}» para probar el nuevo código JavaScript antes de guardarlo.",
+       "usercsspreview": "<strong>Recuerda que solo estás previsualizando tu CSS de usuario.\n¡Aún no se ha guardado!</strong>",
+       "userjspreview": "<strong>¡Recuerda que solo estás previsualizando tu JavaScript de usuario.\n¡Aún no se ha guardado!</strong>",
+       "sitecsspreview": "<strong>Recuerda que solo estás previsualizando este CSS.\n¡Aún no se ha guardado!</strong>",
+       "sitejspreview": "<strong>Recuerda que solo estás previsualizando este código JavaScript.\n¡Aún no se ha guardado!</strong>",
+       "userinvalidcssjstitle": "<strong>Advertencia:</strong> no existe la apariencia «$1».\nRecuerda que las páginas personalizadas .css y .js tienen un título en minúsculas. Por ejemplo, se usa {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
        "updated": "(Actualizado)",
        "note": "<strong>Nota:</strong>",
        "previewnote": "<strong>Recuerda que esto no es más que una previsualización.</strong>\nAún no se han guardado tus cambios.",
        "undo-summary": "Se ha deshecho la revisión $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|disc.]])",
        "undo-summary-username-hidden": "Se ha deshecho la revisión $1 de un usuario oculto",
        "cantcreateaccounttitle": "No se puede crear la cuenta",
-       "cantcreateaccount-text": "[[User:$3|$3]] ha bloqueado la creación de cuentas desde esta dirección IP ('''$1''').\n\nEl motivo dado por $3 es <em>$2</em>",
+       "cantcreateaccount-text": "[[User:$3|$3]] ha bloqueado la creación de cuentas desde esta dirección IP (<strong>$1</strong>).\n\nEl motivo dado por $3 es <em>$2</em>",
        "cantcreateaccount-range-text": "[[User:$3|$3]] ha bloqueado la creación de cuentas de usuario desde direcciones IP en el rango '''$1''', en el que se encuentra tu dirección IP ('''$4''').\n\nEl motivo dado por $3 es ''$2''",
        "viewpagelogs": "Ver los registros de esta página",
        "nohistory": "No hay historial de ediciones para esta página.",
        "search-category": "(categoría $1)",
        "search-file-match": "(coincide con el contenido del archivo)",
        "search-suggest": "Quizás quieres buscar: $1",
+       "search-rewritten": "Se muestran los resultados de $1. O busca $2.",
        "search-interwiki-caption": "Proyectos hermanos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(más)",
        "rcshowhidemine": "$1 mis ediciones",
        "rcshowhidemine-show": "Mostrar",
        "rcshowhidemine-hide": "Ocultar",
+       "rcshowhidecategorization": "$1 categorización de página",
+       "rcshowhidecategorization-show": "Mostrar",
+       "rcshowhidecategorization-hide": "Ocultar",
        "rclinks": "Ver los últimos $1 cambios en los últimos $2 días.<br />$3",
        "diff": "dif",
        "hist": "hist",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuario|usuarios}} vigilando]",
-       "rc_categories": "Limitar a las categorías (separadas por «|»)",
-       "rc_categories_any": "Cualquiera",
+       "rc_categories": "Limitar a las categorías (separadas por «|»):",
+       "rc_categories_any": "Cualquiera de las elegidas",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} después del cambio",
        "newsectionsummary": "Sección nueva: /* $1 */",
        "rc-enhanced-expand": "Mostrar detalles",
        "recentchangeslinked-summary": "Esta página es una lista de los últimos cambios en las páginas enlazadas desde una página dada (o en las pertenecientes a una categoría dada). Las páginas que están en tu [[Special:Watchlist|lista de seguimiento]] aparecen en <strong>negrita</strong>.",
        "recentchangeslinked-page": "Nombre de la página:",
        "recentchangeslinked-to": "Mostrar los cambios en páginas enlazadas con la página seleccionada",
+       "recentchanges-page-added-to-category": "[[:$1]] añadida a la categoría",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] y {{PLURAL:$2|una página|$2 páginas}} añadidas a la categoría",
+       "recentchanges-page-removed-from-category": "[[:$1]] eliminada de la categoría",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] y {{PLURAL:$2|una página|$2 páginas}} eliminadas de la categoría",
        "upload": "Subir archivo",
        "uploadbtn": "Subir un archivo",
        "reuploaddesc": "Cancelar subida y volver al formulario",
        "upload-options": "Opciones de subida",
        "watchthisupload": "Vigilar este archivo",
        "filewasdeleted": "Un archivo con este nombre se subió con anterioridad y posteriormente ha sido borrado. Deberías revisar el $1 antes de subirlo de nuevo.",
-       "filename-bad-prefix": "El nombre del archivo que estás subiendo comienza por '''«$1»''', un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.\n\nPor favor, elige un nombre más descriptivo.",
+       "filename-bad-prefix": "El nombre del archivo que estás subiendo comienza por <strong>«$1»</strong>, un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.\nElige un nombre más descriptivo para tu archivo.",
        "filename-prefix-blacklist": " #<!-- deja esta línea exactamente como está --> <pre>\n# La sintaxis de esta página es la siguiente:\n#   * Todo texto que se encuentre después del carácter \"#\" hasta el final de la línea se tratará como un comentario y será ignorado\n#   * Cualquier línea que no esté en blanco será interpretada como un prefijo típico en nombres de archivo que suelen asignar automáticamente las cámaras digitales\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # algunos teléfonos móviles / celulares\nIMG # genérico\nJD # Jenoptik\nMGP # Pentax\nPICT # misc.\n #</pre> <!-- deja esta línea exactamente como está -->",
        "upload-success-subj": "Subida con éxito",
        "upload-success-msg": "La subida desde [$2] se realizó correctamente. Está disponible aquí: [[:{{ns:file}}:$1]]",
        "upload-too-many-redirects": "La URL contenía demasiadas redirecciones",
        "upload-http-error": "Ha ocurrido un error HTTP: $1",
        "upload-copy-upload-invalid-domain": "No se pueden realizar cargas remotas desde este dominio.",
+       "upload-dialog-title": "Subir archivo",
+       "upload-dialog-error": "Ha ocurrido un error",
+       "upload-dialog-warning": "Ha ocurrido una advertencia",
+       "upload-dialog-button-cancel": "Cancelar",
+       "upload-dialog-button-done": "Hecho",
+       "upload-dialog-button-save": "Guardar",
+       "upload-dialog-button-upload": "Subir",
+       "upload-dialog-label-select-file": "Seleccionar archivo",
+       "upload-dialog-label-infoform-title": "Detalles",
+       "upload-dialog-label-infoform-name": "Nombre",
+       "upload-dialog-label-infoform-description": "Descripción",
+       "upload-dialog-label-usage-title": "Uso",
+       "upload-dialog-label-usage-filename": "Nombre del archivo",
        "backend-fail-stream": "No se pudo transmitir el archivo «$1».",
        "backend-fail-backup": "No pudo hacer copia de seguridad del archivo «$1».",
        "backend-fail-notexists": "El archivo  $1  no existe.",
        "upload-disallowed-here": "No puedes sobrescribir este archivo.",
        "filerevert": "Revertir $1",
        "filerevert-legend": "Reversión de archivos",
-       "filerevert-intro": "Estás revirtiendo '''[[Media:$1|$1]]''' a la [$4 versión del $2 a las $3].",
+       "filerevert-intro": "Estás por revertir <strong>[[Media:$1|$1]]</strong> a la [$4 versión del $2 a las $3].",
        "filerevert-comment": "Motivo:",
        "filerevert-defaultcomment": "Revertido a la versión subida el $1 a las $2",
        "filerevert-submit": "Revertir",
-       "filerevert-success": "'''[[Media:$1|$1]]''' ha sido revertido a la [$4 versión del $2 a las $3].",
+       "filerevert-success": "<strong>[[Media:$1|$1]]</strong> ha sido revertido a la [$4 versión del $2 a las $3].",
        "filerevert-badversion": "No existe versión local previa de este archivo con esa marca de tiempo.",
        "filedelete": "Borrar $1",
        "filedelete-legend": "Borrar archivo",
-       "filedelete-intro": "Estás borrando el archivo '''[[Media:$1|$1]]''' así como todo su historial.",
-       "filedelete-intro-old": "Estás borrando la versión de '''[[Media:$1|$1]]''' del [$4 $2 a las $3].",
+       "filedelete-intro": "Estás por borrar el archivo <strong>[[Media:$1|$1]]</strong> así como todo su historial.",
+       "filedelete-intro-old": "Estás borrando la versión de <strong>[[Media:$1|$1]]</strong> del [$4 $2 a las $3].",
        "filedelete-comment": "Motivo:",
        "filedelete-submit": "Eliminar",
-       "filedelete-success": "'''$1''' ha sido borrado.",
+       "filedelete-success": "<strong>$1</strong> ha sido borrado.",
        "filedelete-success-old": "La versión de <strong>[[Media:$1|$1]]</strong> del $2 a las $3 ha sido borrada.",
-       "filedelete-nofile": "'''$1''' no existe.",
-       "filedelete-nofile-old": "No existe una versión guardada de '''$1''' con los atributos especificados.",
+       "filedelete-nofile": "<strong>$1</strong> no existe.",
+       "filedelete-nofile-old": "No existe una versión guardada de <strong>$1</strong> con los atributos especificados.",
        "filedelete-otherreason": "Otra razón:",
        "filedelete-reason-otherlist": "Otra razón",
        "filedelete-reason-dropdown": "*Razones habituales de borrado\n** Violación de derechos de autor\n** Archivo duplicado",
        "mostrevisions": "Artículos con más ediciones",
        "prefixindex": "Todas las páginas con prefijo",
        "prefixindex-namespace": "Todas las páginas con el prefijo (espacio de nombres $1)",
-       "prefixindex-strip": "Prefijo de la hilera en la lista",
+       "prefixindex-strip": "Quitar prefijos en la lista",
        "shortpages": "Páginas cortas",
        "longpages": "Páginas largas",
        "deadendpages": "Páginas sin salida",
        "notargettitle": "No hay página objetivo",
        "notargettext": "No has especificado sobre qué página deseas llevar a cabo esta acción.",
        "nopagetitle": "No existe la página destino",
-       "nopagetext": "La página destino que ha especificado no existe.",
+       "nopagetext": "La página destino que has especificado no existe.",
        "pager-newer-n": "{{PLURAL:$1|1 siguiente|$1 siguientes}}",
        "pager-older-n": "{{PLURAL:$1|1 anterior|$1 anteriores}}",
        "suppress": "Supresor de ediciones",
        "listusers-blocked": "({{GENDER:$1|bloqueado|bloqueada}})",
        "activeusers": "Lista de usuarios activos",
        "activeusers-intro": "Esta es una lista de usuarios que han tenido alguna actividad en los últimos $1 {{PLURAL:$1|día|días}}.",
-       "activeusers-count": "$1 {{PLURAL:$1|acción|acciones}} en los últimos {{PLURAL:$3|día|$3 días}}",
+       "activeusers-count": "$1 {{PLURAL:$1|acción|acciones}} en {{PLURAL:$3|el último día|los últimos $3 días}}",
        "activeusers-from": "Mostrando a los usuarios empezando por:",
        "activeusers-hidebots": "Ocultar robots",
        "activeusers-hidesysops": "Ocultar administradores",
        "watchlistanontext": "Es necesario acceder para ver o editar los elementos de tu lista de seguimiento.",
        "watchnologin": "No has iniciado sesión",
        "addwatch": "Añadir a la lista de seguimiento",
-       "addedwatchtext": "La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí.",
+       "addedwatchtext": "Se han añadido «[[:$1]]» y su página de discusión a tu [[Special:Watchlist|lista de seguimiento]].",
        "addedwatchtext-short": "La página \"$1\" ha sido añadida a tu lista de seguimiento.",
        "removewatch": "Quitar de la lista de seguimiento",
-       "removedwatchtext": "Se ha eliminado la página «[[:$1]]» de tu [[Special:Watchlist|lista de seguimiento]].",
+       "removedwatchtext": "Se han eliminado «[[:$1]]» y su página de discusión de tu [[Special:Watchlist|lista de seguimiento]].",
        "removedwatchtext-short": "La página \"$1\" ha sido eliminado de tu lista de seguimiento.",
        "watch": "Vigilar",
        "watchthispage": "Vigilar esta página",
        "watchlist-details": "{{PLURAL:$1|$1 página|$1 páginas}} en tu lista de seguimiento, sin contar las de discusión.",
        "wlheader-enotif": "La notificación por correo está activada.",
        "wlheader-showupdated": "Las páginas modificadas desde tu última visita aparecen en <strong>negrita</strong>.",
-       "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos '''$1''' cambios}} en {{PLURAL:$2|la última hora|las últimas '''$2''' horas}} a fecha de $4 $3.",
+       "wlnote": "A continuación {{PLURAL:$1|se muestra el último cambio|se muestran los últimos <strong>$1</strong> cambios}} en {{PLURAL:$2|la última hora|las últimas <strong>$2</strong> horas}} a fecha de $4 $3.",
        "wlshowlast": "Ver los cambios de las últimas $1 horas, $2 días",
        "watchlist-options": "Opciones de la lista de seguimiento",
        "watching": "Vigilando...",
        "delete-confirm": "Borrar «$1»",
        "delete-legend": "Borrar",
        "historywarning": "<strong>Atención:</strong> la página que estás a punto de borrar tiene un historial con $1 {{PLURAL:$1|revisión|revisiones}}:",
-       "confirmdeletetext": "Estás a punto de borrar una página, así como todo su historial.\nPor favor, confirma que realmente quieres hacer eso, que entiendes las consecuencias, y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|las políticas]].",
+       "confirmdeletetext": "Estás a punto de borrar una página, así como todo su historial.\nConfirma que realmente quieres hacer esto, que entiendes las consecuencias y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|las políticas]].",
        "actioncomplete": "Acción completada",
        "actionfailed": "Falló la acción",
        "deletedtext": "«$1» ha sido borrado.\nVéase $2 para un registro de los borrados recientes.",
        "changecontentmodel-success-title": "Se cambió el modelo de contenido",
        "changecontentmodel-success-text": "Se ha cambiado el tipo de contenido de [[:$1]].",
        "changecontentmodel-cannot-convert": "El contenido de [[:$1]] no se puede convertir a un tipo de $2.",
-       "changecontentmodel-title-cantexist": "No es posible tener una página en $1.",
        "changecontentmodel-nodirectediting": "El modelo de contenido $1 no admite la edición directa",
        "log-name-contentmodel": "Registro de cambios del modelo de contenido",
        "log-description-contentmodel": "Eventos relacionados con los modelos de contenido de una página",
        "protect_expiry_invalid": "Tiempo de caducidad incorrecto.",
        "protect_expiry_old": "El tiempo de expiración está en el pasado.",
        "protect-unchain-permissions": "Desbloquear opciones de protección adicionales",
-       "protect-text": "Puedes ver y modificar el nivel de protección de la página '''$1'''.",
+       "protect-text": "Aquí puedes ver y modificar el nivel de protección de la página <strong>$1</strong>.",
        "protect-locked-blocked": "No puedes cambiar los niveles de protección estando bloqueado.\nA continuación se muestran las opciones actuales de la página <strong>$1</strong>:",
-       "protect-locked-dblock": "Los niveles de protección no se pueden cambiar debido a un bloqueo activo de la base de datos.\nA continuación se muestran las opciones actuales de la página '''$1''':",
+       "protect-locked-dblock": "Los niveles de protección no se pueden cambiar debido a un bloqueo activo de la base de datos.\nA continuación se muestran las opciones actuales de la página <strong>$1</strong>:",
        "protect-locked-access": "Tu cuenta no tiene permiso para cambiar los niveles de protección de una página.\nA continuación se muestran las opciones actuales de la página <strong>$1</strong>:",
        "protect-cascadeon": "Actualmente esta página está protegida porque está transcluida en {{PLURAL:$1|la siguiente página, que tiene|las siguientes páginas, que tienen}} activada la opción de protección de cascada.\nPuedes cambiar el nivel de protección de esta página, pero no afectará a la protección de cascada.",
        "protect-default": "Permitir todos los usuarios",
        "restriction-level-all": "cualquier nivel",
        "undelete": "Restaurar una página borrada",
        "undeletepage": "Ver y restaurar páginas borradas",
-       "undeletepagetitle": "'''Las siguientes son las revisiones borradas de [[:$1|$1]]'''.",
+       "undeletepagetitle": "<strong>Las siguientes son las revisiones borradas de [[:$1|$1]]</strong>.",
        "viewdeletedpage": "Ver páginas borradas",
        "undeletepagetext": "{{PLURAL:$1|La siguiente página ha sido borrada, pero aún está en el archivo y puede ser restaurada.|Las siguientes $1 páginas han sido borradas, pero aún están en el archivo y pueden ser restauradas.}}\nPuede que el archivo se limpie periódicamente.",
        "undelete-fieldset-title": "Restaurar revisiones",
-       "undeleteextrahelp": "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>. Para realizar una restauración selectiva, marca las revisiones que deban restaurarse y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revisión archivada|revisiones archivadas}}",
+       "undeleteextrahelp": "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>.\nPara realizar una restauración selectiva, marca las revisiones que deban restaurarse y pulsa en <strong><em>{{int:undeletebtn}}</em></strong>.",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisión eliminada|revisiones eliminadas}}",
        "undeletehistory": "Si restauras la página, todas sus revisiones se restaurarán en el historial.\nSi una nueva página con el mismo nombre se ha creado desde que se borró la original, las versiones restauradas aparecerán en el historial previo.",
        "undeleterevdel": "No se deshará el borrado si éste resulta en el borrado parcial de la última revisión de la página. En tal caso, desmarque o muestre las revisiones borradas más recientes. Las revisiones de archivos que no tiene permitido ver no se restaurarán.",
        "undeletehistorynoadmin": "El artículo ha sido borrado. La razón de su eliminación se indica abajo en el resumen, así como los detalles de las ediciones realizadas antes del borrado. El texto completo del artículo está disponible sólo para usuarios con permisos de administrador.",
        "undeletedrevisions-files": "{{PLURAL:$1|1 revisión|$1 revisiones}} y {{PLURAL:$2|1 archivo|$2 archivos}} restaurados",
        "undeletedfiles": "$1 {{PLURAL:$1|archivo restaurado|archivos restaurados}}",
        "cannotundelete": "Hubo un error durante la restauración:\n$1",
-       "undeletedpage": "'''Se ha restaurado $1'''\n\nConsulta el [[Special:Log/delete|registro de borrados]] para ver una lista de los últimos borrados y restauraciones.",
+       "undeletedpage": "<strong>Se ha restaurado $1</strong>\n\nConsulta el [[Special:Log/delete|registro de borrados]] para ver una lista de los últimos borrados y restauraciones.",
        "undelete-header": "En el [[Special:Log/delete|registro de borrados]] se listan las páginas eliminadas.",
        "undelete-search-title": "Buscar páginas borradas",
        "undelete-search-box": "Buscar páginas borradas",
        "whatlinkshere-title": "Páginas que enlazan con «$1»",
        "whatlinkshere-page": "Página:",
        "linkshere": "Las siguientes páginas enlazan a <strong>[[:$1]]</strong>:",
-       "nolinkshere": "Ninguna página enlaza con '''[[:$1]]'''.",
-       "nolinkshere-ns": "Ninguna página enlaza con '''[[:$1]]''' en el espacio de nombres elegido.",
+       "nolinkshere": "Ninguna página enlaza con <strong>[[:$1]]</strong>.",
+       "nolinkshere-ns": "Ninguna página enlaza con <strong>[[:$1]]</strong> en el espacio de nombres elegido.",
        "isredirect": "página redirigida",
        "istemplate": "inclusión",
        "isimage": "enlace de archivo",
        "ipb-needreblock": "$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?",
        "ipb-otherblocks-header": "{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}",
        "unblock-hideuser": "No puedes desbloquear a este usuario porque su nombre ha sido ocultado.",
-       "ipb_cant_unblock": "'''Error''': Número ID $1 de bloqueo no encontrado. Pudo haber sido desbloqueado ya.",
+       "ipb_cant_unblock": "Error: no se encuentra el identificador de bloque $1. Pudo haber sido desbloqueado ya.",
        "ipb_blocked_as_range": "Error: la dirección IP $1 no está bloqueada directamente y no puede ser desbloqueada.\nSin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado.",
        "ip_range_invalid": "El rango de IP no es válido.",
        "ip_range_toolarge": "Los bloqueos de rango superiores a /$1 no están permitidos.",
        "lockedbyandtime": "(por {{GENDER:$1|$1}} el $2 a las $3)",
        "move-page": "Trasladar $1",
        "move-page-legend": "Renombrar página",
-       "movepagetext": "Mediante el siguiente formulario puedes renombrar una página, moviendo todo su historial al nombre nuevo.\nEl título anterior redirigirá al nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de asegurar que los enlaces continúen funcionando correctamente.\n\nNota que la página '''no''' se moverá si ya hay una página con el título nuevo, a menos de que ésta sea una redirección y no tenga historial de ediciones pasadas.\nEsto significa que puedes deshacer el renombrado en caso de un error, y que no puedes sobreescribir una página existente.\n\n'''Aviso'''\nEsto puede representar un cambio drástico e inesperado para una página popular;\nasegúrate de entender las consecuencias de esta acción antes de proceder.",
+       "movepagetext": "Mediante el siguiente formulario puedes renombrar una página, moviendo todo su historial al nombre nuevo.\nEl título anterior redirigirá al nuevo.\nPuedes actualizar automáticamente las redirecciones que apuntan al título original.\nSi eliges no hacerlo, asegúrate de revisar posibles redirecciones [[Special:DoubleRedirects|dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de asegurar que los enlaces continúen funcionando correctamente.\n\nNota que la página <strong>no</strong> se moverá si ya hay una página con el título nuevo, a menos de que ésta sea una redirección y no tenga historial de ediciones pasadas.\nEsto significa que puedes deshacer el renombrado en caso de un error, y que no puedes sobreescribir una página existente.\n\n<strong>Aviso</strong>\nEsto puede representar un cambio drástico e inesperado para una página popular;\nasegúrate de entender las consecuencias de esta acción antes de proceder.",
        "movepagetext-noredirectfixer": "Usando el siguiente formulario se renombrará una página, trasladando todo su historial al nuevo nombre.\nEl título anterior se convertirá en una redirección al nuevo título.\nAsegúrate de no dejar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].\nTú eres responsable de hacer que los enlaces sigan apuntando adonde se supone que deberían hacerlo.\n\nRecuerda que la página '''no''' será renombrada si ya existe una página con el nuevo título, a no ser que sea una página vacía o una redirección sin historial.\nEsto significa que podrás renombrar una página a su título original si has cometido un error, pero que no podrás sobrescribir una página existente.\n\n'''¡Aviso!'''\nEste puede ser un cambio drástico e inesperado para una página popular;\npor favor, asegúrate de entender las consecuencias del procedimiento antes de seguir adelante.",
        "movepagetalktext": "La página de discusión asociada, si existe, será renombrada automáticamente '''a menos que:'''\n*Estés trasladando la página entre espacios de nombres diferentes,\n*Una página de discusión no vacía ya exista con el nombre nuevo, o\n*No marques el recuadro «Renombrar la página de discusión asociada».\n\nEn estos casos, deberás trasladar manualmente el contenido de la página de discusión.",
        "movearticle": "Renombrar página",
        "moveuserpage-warning": "<strong>Advertencia:</strong> estás a punto de trasladar una página de usuario. Ten en cuenta que solo se trasladará la página; el usuario <em>no</em> se renombrará.",
-       "movecategorypage-warning": "<strong>Advertencia:</strong> Estás a punto de trasladar una página de categoría. Ten en cuenta que se trasladará sólo la página y las páginas en la antigua categoría <em>no</em> serán recategorizadas en la nueva.",
+       "movecategorypage-warning": "<strong>Advertencia:</strong> estás a punto de trasladar una página de categoría. Ten en cuenta que se trasladará sólo la página, y las páginas en la antigua categoría <em>no</em> se recategorizarán en la nueva.",
        "movenologintext": "Es necesario ser usuario registrado y [[Special:UserLogin|haber iniciado sesión]] para renombrar una página.",
        "movenotallowed": "No tienes permiso para trasladar páginas.",
        "movenotallowedfile": "No tienes permiso para trasladar archivos.",
        "move-watch": "Vigilar páginas de origen y destino",
        "movepagebtn": "Renombrar página",
        "pagemovedsub": "Renombrado realizado con éxito",
-       "movepage-moved": "'''«$1» ha sido trasladado a «$2».'''",
+       "movepage-moved": "<strong>«$1» ha sido trasladada a «$2»</strong>",
        "movepage-moved-redirect": "Se ha creado una redirección.",
        "movepage-moved-noredirect": "Se ha suprimido la creación de la redirección.",
        "articleexists": "Ya existe una página con ese nombre o el nombre que elegiste no es válido.\nElige otro nombre.",
        "imageinvalidfilename": "El nombre del archivo de destino no es válido.",
        "fix-double-redirects": "Actualizar las redirecciones que apuntan al título original",
        "move-leave-redirect": "Dejar una redirección",
-       "protectedpagemovewarning": "'''Advertencia:''' Esta página ha sido bloqueada de tal manera que solamente usuarios con privilegios de administrador puedan trasladarla.\nA continuación se muestra la última entrada de registro para referencia:",
-       "semiprotectedpagemovewarning": "'''Nota:''' Esta página ha sido bloqueada para que  solamente usuarios registrados pueden moverla.\nA continuación se muestra la última entrada de registro para referencia:",
+       "protectedpagemovewarning": "<strong>Advertencia:</strong> esta página ha sido protegida de tal manera que solamente usuarios con privilegios de administrador puedan trasladarla.\nA continuación se muestra la última entrada de registro como referencia:",
+       "semiprotectedpagemovewarning": "<strong>Nota:</strong> esta página ha sido protegida de tal manera que solamente usuarios registrados puedan trasladarla.\nA continuación se muestra la última entrada de registro como referencia:",
        "move-over-sharedrepo": "== El archivo existe ==\n[[:$1]] existe en un repositorio compartido. El traslado a este título invalidará la compartición del archivo.",
        "file-exists-sharedrepo": "El nombre de archivo elegido ya está siendo usado en un repositorio compartido.\nPor favor, elige otro nombre.",
        "export": "Exportar páginas",
        "exporttext": "Puedes exportar el texto y el historial de ediciones de una página en particular o de un conjunto de páginas a un texto XML. En el futuro, este texto podría importarse en otro wiki que ejecutase MediaWiki a través de [[Special:Import|importar página]].\n\nPara exportar páginas, escribe los títulos en la caja de texto de abajo, un título por línea, y selecciona si quieres la versión actual junto a las versiones anteriores, con las líneas del historial, o sólo la versión actual con la información sobre la última edición.\n\nEn el último caso también puedes usar un enlace, por ejemplo [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] para la página \"[[{{MediaWiki:Mainpage}}]]\".",
        "exportall": "Exportar todas las páginas",
        "exportcuronly": "Incluye sólo la revisión actual, no el historial de revisiones al completo.",
-       "exportnohistory": "----\n'''Nota:''' Exportar el historial completo de páginas a través de este formulario ha sido deshabilitado debido a problemas de rendimiento del servidor.",
+       "exportnohistory": "----\n<strong>Nota:</strong> la exportación del historial completo de páginas a través de este formulario ha sido desactivada debido a razones de rendimiento.",
        "exportlistauthors": "Incluir una lista completa de colaboradores para cada página",
        "export-submit": "Exportar",
        "export-addcattext": "Añadir páginas desde la categoría:",
        "allmessagesdefault": "Texto predeterminado",
        "allmessagescurrent": "Texto actual",
        "allmessagestext": "Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki.\nVisita [https://www.mediawiki.org/wiki/Special:MyLanguage/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir a la localización genérica de MediaWiki.",
-       "allmessagesnotsupportedDB": "Esta página no está disponible porque '''$wgUseDatabaseMessages''' está deshabilitado.",
+       "allmessagesnotsupportedDB": "Esta página no está disponible porque <strong>$wgUseDatabaseMessages</strong> está desactivado.",
        "allmessages-filter-legend": "Filtro",
        "allmessages-filter": "Filtrar por estado de personalización:",
        "allmessages-filter-unmodified": "Sin modificar",
        "spam_reverting": "Revirtiendo a la última versión que no contenga enlaces a $1",
        "spam_blanking": "Todas las revisiones contienen enlaces a $1, blanqueando",
        "spam_deleting": "Todas las revisiones que contienen enlaces a $1, en proceso de eliminación",
-       "simpleantispam-label": "Comprobación anti-spam.\n¡<strong>NO</strong> rellenes esto!",
+       "simpleantispam-label": "Comprobación anti-spam.\n¡<strong>No</strong> rellenes esto!",
        "pageinfo-title": "Información de «$1»",
        "pageinfo-not-current": "Lo sentimos, no es posible mostrar esta información para las revisiones antiguas.",
        "pageinfo-header-basic": "Información básica",
        "file-info-png-looped": "bucleado",
        "file-info-png-repeat": "reproducido $1 {{PLURAL:$1|vez|veces}}",
        "file-info-png-frames": "$1 {{PLURAL:$1|marco|marcos}}",
-       "file-no-thumb-animation": "'''Nota: debido a limitaciones técnicas, las miniaturas de este archivo no están animadas.'''",
-       "file-no-thumb-animation-gif": "'''Nota: Debido a limitaciones técnicas, las miniaturas de imágenes GIF de alta resolución como esta no están animadas.'''",
+       "file-no-thumb-animation": "<strong>Nota: debido a limitaciones técnicas, las miniaturas de este archivo no estarán animadas.</strong>",
+       "file-no-thumb-animation-gif": "<strong>Nota: debido a limitaciones técnicas, las miniaturas de imágenes GIF de alta resolución como esta no estarán animadas.</strong>",
        "newimages": "Galería de imágenes nuevas",
        "imagelisttext": "Debajo hay una lista de <strong>$1</strong> {{PLURAL:$1|archivo ordenado|archivos ordenados}} $2.",
        "newimages-summary": "Esta página especial muestra una galería de los últimos archivos subidos.",
        "watchlisttools-edit": "Ver y editar tu lista de seguimiento",
        "watchlisttools-raw": "Editar lista de seguimiento en crudo",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discusión]])",
-       "duplicate-defaultsort": "'''Atención:''' La clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
+       "duplicate-defaultsort": "<strong>Advertencia:</strong> la clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
        "duplicate-displaytitle": "<strong>Advertencia:</strong> El título visualizado \"$2\" sobreescribe al anterior \"$1\".",
        "invalid-indicator-name": "<strong>Error:</strong> el atributo <code>name</code> de los indicadores de estado de página no debe estar vacío.",
        "version": "Versión",
        "version-license-not-found": "No se han encontrado información detallada de licencia para esta extensión.",
        "version-credits-title": "Reconocimiento para $1",
        "version-credits-not-found": "No se ha encontrado información detallada de reconocimiento para esta extensión.",
-       "version-poweredby-credits": "Este wiki funciona gracias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+       "version-poweredby-credits": "Este wiki funciona gracias a <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001-$1 $2.",
        "version-poweredby-others": "otros",
        "version-poweredby-translators": "Traductores de translatewiki.net",
        "version-credits-summary": "Queremos reconocer a las siguientes personas por su contribución a [[Special:Version|MediaWiki]].",
        "special-characters-title-endash": "semirraya",
        "special-characters-title-emdash": "raya",
        "special-characters-title-minus": "signo de resta",
+       "mw-widgets-dateinput-no-date": "Ninguna fecha seleccionada",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "la página aún no existe",
        "mw-widgets-titleinput-description-redirect": "redirigir a $1"
 }
index ff936ad..bf80fdc 100644 (file)
                        "לערי ריינהארט",
                        "Boxmein",
                        "Roland",
-                       "Postituvi"
+                       "Postituvi",
+                       "Purodha"
                ]
        },
        "tog-underline": "Linkide allakriipsutus:",
        "tog-hideminor": "Peida pisiparandused viimastes muudatustes",
        "tog-hidepatrolled": "Peida kontrollitud redaktsioonid viimastes muudatustes",
        "tog-newpageshidepatrolled": "Peida uute lehtede loendis kontrollitud leheküljed",
+       "tog-hidecategorization": "Peida lehekülgede kategoriseerimine",
        "tog-extendwatchlist": "Laienda jälgimisloendit, et näha kõiki muudatusi, mitte vaid kõige värskemaid",
        "tog-usenewrc": "Rühmita viimased muudatused ja muudatused jälgimisloendis lehekülje järgi",
        "tog-numberheadings": "Pealkirjade automaatnummerdus",
@@ -60,6 +62,7 @@
        "tog-watchlisthideliu": "Peida sisselogitud kasutajate muudatused jälgimisloendist",
        "tog-watchlisthideanons": "Peida anonüümsete kasutajate muudatused jälgimisloendist",
        "tog-watchlisthidepatrolled": "Peida kontrollitud muudatused jälgimisloendist",
+       "tog-watchlisthidecategorization": "Peida lehekülgede kategoriseerimine",
        "tog-ccmeonemails": "Saada mulle koopiad minu läkitatud e-kirjadest",
        "tog-diffonly": "Ära näita erinevuste vaate all lehe sisu",
        "tog-showhiddencats": "Näita peidetud kategooriaid",
        "actionthrottled": "Toiming nurjus",
        "actionthrottledtext": "Rämpsmuudatuste vastase meetmena pole sul lühikse aja jooksul seda toimingut liiga palju kordi lubatud sooritada. Sa oled lühikse aja jooskul seda toimingut liiga palju kordi sooritanud.\nPalun proovi mõne minuti pärast uuesti.",
        "protectedpagetext": "See lehekülg on lukustatud, et ei tehtaks muudatusi ega sooritataks muid toiminguid.",
-       "viewsourcetext": "Saad vaadata ja kopeerida lehekülje lähteteksti:",
-       "viewyourtext": "Saad vaadata ja kopeerida sellel leheküljel tehtud '''enda muudatuste '''lähteteksti:",
+       "viewsourcetext": "Saad vaadata ja kopeerida selle lehekülje lähteteksti.",
+       "viewyourtext": "Saad vaadata ja kopeerida sellel leheküljel tehtud <strong>enda muudatuste</strong> lähteteksti.",
        "protectedinterface": "Sellel leheküljel on selle viki tarkvara kasutajaliidese tekst. Väärtarvituse vältimiseks on lehekülg kaitstud.\nEt lisada ja muuta tõlkeid kõigi vikide jaoks, kasuta palun MediaWiki lokaliseerimisprojekti [//translatewiki.net/ translatewiki.net].",
        "editinginterface": "<strong>Hoiatus:</strong> Redigeerid lehekülge, mille teksti kasutatakse tarkvaraliideses.\nMuudatused siin mõjutavad kõikide selle viki kasutajate kasutajaliidest.",
        "translateinterface": "Et lisada või muuta tõlkeid kõigi vikide jaoks, kasuta palun MediaWiki lokaliseerimisprojekti [//translatewiki.net/ translatewiki.net].",
        "search-category": "(kategooria \"$1\")",
        "search-file-match": "(vastab faili sisule)",
        "search-suggest": "Kas mõtlesid: $1",
+       "search-rewritten": "Vasted otsingule $1. Otsi hoopis teksti $2.",
        "search-interwiki-caption": "Sõsarprojektid",
        "search-interwiki-default": "Tulemused asukohast $1:",
        "search-interwiki-more": "(veel)",
        "rcshowhidemine": "Minu parandused ($1)",
        "rcshowhidemine-show": "näita",
        "rcshowhidemine-hide": "peida",
+       "rcshowhidecategorization": "Kategoriseerimine ($1)",
+       "rcshowhidecategorization-show": "näita",
+       "rcshowhidecategorization-hide": "peida",
        "rclinks": "Näita viimast $1 muudatust viimase $2 päeva jooksul<br />$3",
        "diff": "erin",
        "hist": "ajal",
        "newpageletter": "U",
        "boteditletter": "R",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|jälgiv kasutaja|jälgivat kasutajat}}]",
-       "rc_categories": "Ainult kategooriatest (eraldajaks \"|\")",
-       "rc_categories_any": "Mistahes",
+       "rc_categories": "Ainult neist kategooriatest (eraldajaks \"|\"):",
+       "rc_categories_any": "Mõnes valitutest",
        "rc-change-size-new": "$1 {{PLURAL:$1|bait|baiti}} pärast muudatust",
        "newsectionsummary": "/* $1 */ uus alaosa",
        "rc-enhanced-expand": "Näita üksikasju",
        "recentchangeslinked-summary": "Siin on loetletud määratud leheküljelt viidatud (või määratud kategooria) lehekülgedel tehtud viimased muudatused.\nSinu [[Special:Watchlist|jälgimisloendi]] leheküljed on  '''rasvaselt''' esile toodud.",
        "recentchangeslinked-page": "Lehekülje nimi:",
        "recentchangeslinked-to": "Näita hoopis muudatusi lehekülgedel, mis sellele lehele lingivad",
+       "recentchanges-page-added-to-category": "kategooriasse lisatud \"[[:$1]]\"",
+       "recentchanges-page-added-to-category-bundled": "kategooriasse lisatud \"[[:$1]]\" ja veel {{PLURAL:$2|üks lehekülg|$2 lehekülge}}",
+       "recentchanges-page-removed-from-category": "kategooriast eemaldatud \"[[:$1]]\"",
+       "recentchanges-page-removed-from-category-bundled": "kategooriast eemaldatud \"[[:$1]]\" ja veel {{PLURAL:$2|üks lehekülg|$2 lehekülge}}",
        "upload": "Faili üleslaadimine",
        "uploadbtn": "Laadi fail üles",
        "reuploaddesc": "Tagasi üleslaadimise vormi juurde.",
        "upload-too-many-redirects": "URL sisaldas liiga palju ümbersuunamisi",
        "upload-http-error": "HTTP-viga: $1",
        "upload-copy-upload-invalid-domain": "Sellest domeenist pole kopeerimise teel üleslaadimine võimalik.",
+       "upload-dialog-title": "Faili üleslaadimine",
+       "upload-dialog-error": "Esines tõrge",
+       "upload-dialog-warning": "Esines hoiatus",
+       "upload-dialog-button-cancel": "Loobu",
+       "upload-dialog-button-done": "Valmis",
+       "upload-dialog-button-save": "Salvesta",
+       "upload-dialog-button-upload": "Laadi üles",
+       "upload-dialog-label-select-file": "Vali fail",
+       "upload-dialog-label-infoform-title": "Üksikasjad",
+       "upload-dialog-label-infoform-name": "Pealkiri",
+       "upload-dialog-label-infoform-description": "Kirjeldus",
+       "upload-dialog-label-usage-title": "Kasutus",
+       "upload-dialog-label-usage-filename": "Failinimi",
        "backend-fail-stream": "Faili $1 ei saanud edastada.",
        "backend-fail-backup": "Faili $1 ei saanud varundada.",
        "backend-fail-notexists": "Faili $1 pole olemas.",
        "watchlistanontext": "Palun logi sisse, et oma jälgimisloendit näha või muuta.",
        "watchnologin": "Ei ole sisse logitud",
        "addwatch": "Lisa jälgimisloendisse",
-       "addedwatchtext": "Lehekülg \"[[:$1]]\" on lisatud sinu [[Special:Watchlist|jälgimisloendisse]].\nEdasised muudatused sellel leheküljel ja seotud aruteluleheküljel tuuakse ära jälgimisloendis.",
+       "addedwatchtext": "\"[[:$1]]\" ja selle arutelulehekülg on lisatud sinu [[Special:Watchlist|jälgimisloendisse]].",
        "addedwatchtext-short": "Lehekülg \"$1\" on lisatud sinu jälgimisloendisse.",
        "removewatch": "Eemalda jälgimisloendist",
-       "removedwatchtext": "Lehekülg \"[[:$1]]\" on [[Special:Watchlist|jälgimisloendist]] eemaldatud.",
+       "removedwatchtext": "\"[[:$1]]\" ja selle arutelulehekülg on [[Special:Watchlist|jälgimisloendist]] eemaldatud.",
        "removedwatchtext-short": "Lehekülg \"$1\" on eemaldatud sinu jälgimisloendist.",
        "watch": "Jälgi",
        "watchthispage": "Jälgi seda lehekülge",
        "changecontentmodel-success-title": "Sisumudel on muudetud",
        "changecontentmodel-success-text": "Lehekülje [[:$1]] sisumudel on muudetud.",
        "changecontentmodel-cannot-convert": "Lehekülje [[:$1]] sisumudelit ei saa teisendada tüübiks $2.",
-       "changecontentmodel-title-cantexist": "Lehekülg ei saa olla pealkirja \"$1\" all.",
        "changecontentmodel-nodirectediting": "Sisumudel $1 ei võimalda otseredigeerimist.",
        "log-name-contentmodel": "Sisumudeli muutmislogi",
        "log-description-contentmodel": "Lehekülje sisumudelite muutmisega seotud sündmused",
        "undeletepagetext": "{{PLURAL:$1|Järgmine lehekülg|Järgmised leheküljed}} on kustutatud, kuid arhiivis veel olemas ja taastatavad.\nArhiivi sisu võidakse perioodiliselt kustutada.",
        "undelete-fieldset-title": "Redaktsioonide taastamine",
        "undeleteextrahelp": "Kogu lehe ja selle ajaloo taastamiseks jäta kõik linnukesed tühjaks ja vajuta '''''{{int:undeletebtn}}'''''.\nEt taastada valikuliselt, tee linnukesed kastidesse, mida soovid taastada ja vajuta '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 arhiivitud {{PLURAL:$1|redaktsioon|redaktsiooni}}",
+       "undeleterevisions": "$1 kustutatud {{PLURAL:$1|redaktsioon|redaktsiooni}}",
        "undeletehistory": "Kui taastad lehekülje, taastuvad ajaloos kõik redaktsioonid.\nKui vahepeal on loodud uus samanimeline lehekülg, ilmuvad taastatud redaksioonid selle lehekülje ajalukku.",
        "undeleterevdel": "Lehekülge ei taastata, kui viimane redaktsioon või failiversioon kustub seeläbi osaliselt.\nSellisel juhul tuleb uusima kustutatud redaktsiooni juurest linnuke eemaldada või see peitmata jätta.",
        "undeletehistorynoadmin": "See lehekülg on kustutatud.\nKustutamise põhjus ning selle lehekülje kustutamiseelne redigeerimislugu on näha allolevas kokkuvõttes.\nLehekülje kustutamiseelsed redaktsioonid on kättesaadavad ainult administraatoritele.",
        "spam_reverting": "Taastan viimase versiooni, mis ei sisalda linke aadressile $1.",
        "spam_blanking": "Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.",
        "spam_deleting": "Kustutatud kõik redaktsioonid, mis viitasid aadressile $1.",
-       "simpleantispam-label": "Rämpspostikontroll.\n'''ÄRA''' täida seda välja!",
+       "simpleantispam-label": "Rämpspostikontroll.\n<strong>Ära</strong> täida seda välja!",
        "pageinfo-title": "Teave lehekülje \"$1\" kohta",
        "pageinfo-not-current": "Kahjuks pole vanade redaktsioonide kohta võimalik seda teavet ära tuua.",
        "pageinfo-header-basic": "Põhiteave",
        "special-characters-title-endash": "mõttekriips",
        "special-characters-title-emdash": "pikk mõttekriips",
        "special-characters-title-minus": "miinusmärk",
+       "mw-widgets-dateinput-no-date": "Kuupäev valimata",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-KK-PP",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-KK",
        "mw-widgets-titleinput-description-new-page": "lehekülge pole veel",
        "mw-widgets-titleinput-description-redirect": "ümbersuunamine leheküljele \"$1\""
 }
index 12bc1d8..ced9668 100644 (file)
        "jumptonavigation": "nabigazioa",
        "jumptosearch": "bilatu",
        "view-pool-error": "Barkatu, zerbitzariak gainezka daude uneotan.\nErabiltzaile gehiegi ari da orrialde hau ikusi nahiean.\nMesedez itxaron ezazu unetxo bat orrialde honetara berriz sartzen saiatu baino lehen.\n\n$1",
+       "generic-pool-error": "Barkatu, zerbitzariak gainezka daude uneotan.\nErabiltzaile gehiegi ari da baliabide  hau ikusi nahiean.\nMesedez itxaron ezazu unetxo bat baliabide  honetara berriz sartzen saiatu baino lehen.",
        "pool-timeout": "Lock-a itxoiten denbora amaitu da",
        "pool-queuefull": "Prozesuen zerrenda beteta dago",
        "pool-errorunknown": "Errore ezezaguna",
        "gotaccountlink": "Saioa hasi",
        "userlogin-resetlink": "Saioa hasteko datuak ahaztu dituzu?",
        "userlogin-resetpassword-link": "Zure pasahitza ahaztu duzu?",
+       "userlogin-helplink2": "Saioa hasteko laguntza",
        "userlogin-loggedin": "Dagoeneko izena emana zaude {{GENDER:$1|$1}}.\nBeheko formularioa erabil ezazu beste erabiltzaile baten izenean sartzeko.",
        "userlogin-createanother": "Beste kontu bat sortu",
        "createacct-emailrequired": "E-posta helbidea",
        "preview": "Aurrebista erakutsi",
        "showpreview": "Aurrebista erakutsi",
        "showdiff": "Aldaketak erakutsi",
-       "anoneditwarning": "'''Oharra:''' Ez duzu saioa hasi. Zure IP helbidea orrialde honetako historian gordeko da.",
+       "anoneditwarning": "'''Oharra:''' Ez duzu saioa hasi. Aldaketak egiten badituzu, zure IP helbidea ikusgai geratuko da.  <strong>[$1 Saioa hasi]</strong> edo <strong>[$2 kontu bat sortzen]</strong> baduzu, zure aldaketak lankide izenari egotziko zaizkio, eta beste abantaila batzuk ere izango dituzu.",
        "anonpreviewwarning": "''Ez duzu saioa hasi. Gordez gero, zure IP helbidea grabatuko da orri honen edizio historian.''",
        "missingsummary": "'''Gogorarazpena:''' Ez duzu aldaketa laburpen bat zehaztu. Berriz ere gordetzeko aukeratzen baduzu, laburpen mezurik gordeko da.",
        "missingcommenttext": "Mesedez, iruzkin bat idatzi jarraian.",
        "prefs-advancedwatchlist": "Aukera aurreratuak",
        "prefs-displayrc": "Aukerak erakutsi",
        "prefs-displaywatchlist": "Aukerak erakutsi",
+       "prefs-tokenwatchlist": "Token",
        "prefs-diffs": "Ezberdintasunak",
        "prefs-help-prefershttps": "Hobespen hauek eragina izango dute sartzen zaren hurrengoan.",
        "prefs-tabs-navigation-hint": "Gomendioa: Fitxen zerrendan nabigatzeko ezker eta eskuin geziak erabil ditzakezu.",
        "newpageletter": "B",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|lankide|lankide}} jarraitzen]",
-       "rc_categories": "Kategorietara mugatu (\"|\" karaktereaz banandu)",
-       "rc_categories_any": "Edozein",
+       "rc_categories": "Kategorietara mugatu (\"|\" karaktereaz banandu):",
+       "rc_categories_any": "Aukeratutako edozein",
        "rc-change-size-new": "{{PLURAL:$1|Byte 1|$1 byte}} aldaketaren ostean",
        "newsectionsummary": "/* $1 */ atal berria",
        "rc-enhanced-expand": "Erakutsi xehetasunak",
        "upload-too-many-redirects": "URLak birbideratze gehiegi zituen",
        "upload-http-error": "HTTP errorea gertatu da: $1",
        "upload-copy-upload-invalid-domain": "Domeinu honetan ezin dira igoerak kopiatu.",
+       "upload-dialog-title": "Igo fitxategia",
+       "upload-dialog-error": "Errore bat gertatu da",
+       "upload-dialog-button-cancel": "Utzi",
+       "upload-dialog-button-done": "Egina",
+       "upload-dialog-button-save": "Gorde",
+       "upload-dialog-button-upload": "Igo",
+       "upload-dialog-label-select-file": "Fitxategia Aukeratu",
+       "upload-dialog-label-infoform-title": "Xehetasunak",
+       "upload-dialog-label-infoform-name": "Izena",
+       "upload-dialog-label-infoform-description": "Deskribapena",
+       "upload-dialog-label-usage-title": "Erabilera",
+       "upload-dialog-label-usage-filename": "Fitxategiaren izena",
        "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.",
        "protectedpages": "Babestutako orrialdeak",
        "protectedpages-indef": "Babes mugagabeak bakarrik",
        "protectedpages-cascade": "Kaskada moduko babesak bakarrik",
+       "protectedpages-noredirect": "Birzuzenketak ezkutatu",
        "protectedpagesempty": "Ez dago parametro horiek dituen babesturiko orrialderik oraintxe.",
+       "protectedpages-timestamp": "Denbora-marka",
        "protectedpages-page": "Orria",
        "protectedpages-expiry": "Epemuga:",
        "protectedpages-reason": "Arrazoia",
        "sessionfailure-title": "Saio-akatsa",
        "sessionfailure": "Badirudi saioarekin arazoren bat dagoela; bandalismoak saihesteko ekintza hau ezeztatu egin da. Mesedez, nabigatzaileko \"atzera\" botoian klik egin, hona ekarri zaituen orrialde hori berriz kargatu, eta saiatu berriz.",
        "changecontentmodel-title-label": "Orriaren izenburua",
+       "changecontentmodel-reason-label": "Arrazoia:",
        "logentry-contentmodel-change-revertlink": "desegin",
        "logentry-contentmodel-change-revert": "desegin",
        "protectlogpage": "Babes erregistroa",
        "undeletepagetext": "Jarraian zerrendatzen {{PLURAL:$1|den orrialdea ezabatu da baina oraindik artxiboan gordeta dago eta leheneratu egin daiteke.|diren orrialdeak ezabatu dira baina oraindik artxiboan gordeta daude eta leheneratu egin daitezke.}}\nArtxiboa noizean behin hustu egin liteke.",
        "undelete-fieldset-title": "Berrikuspenak berrezarri",
        "undeleteextrahelp": "Orrialde osoko historia berreskuratzeko, koadrotxo guztiak hautatu gabe utzi eta '''''{{int:undeletebtn}}'''''-n klik egin.\nAukeratutako leheneratze bat burutzeko, leheneratu nahi dituzun berrikuspenen koadrotxoak markatu eta '''''{{int:undeletebtn}}'''''-n klik egin.",
-       "undeleterevisions": "$1 {{PLURAL:$1|berrikuspen|berrikuspen}} artxibatuta",
+       "undeleterevisions": "$1 {{PLURAL:$1|berrikuspen|berrikuspen}} ezabatuak",
        "undeletehistory": "Orrialdea leheneratzen baduzu, berrikuspena guztiak leheneratuko dira historian.\nEzabatu ondoren izen berdina duen orrialde berri bat sortzen bada leheneratutako berrikuspenak azalduko dira historian.",
        "undeleterevdel": "Desezabatzea ez da egingo, baldin horren ondorioz goreneko orria edo fitxategia partzialki ezabatuko bada.\nHalakoetan, ezabatutako azken aldaketak desaukeratu edo atzera agerrarazi beharko dituzu.",
        "undeletehistorynoadmin": "Artikulua ezabatu egin da. Ezabatzeko azalpena beheko laburpenean erakusten da, ezabatu aurretik parte hartu zuten erabiltzaileen xehetasunekin batera. Ezabatutako berrikuspenen oraingo testua administratzaileek bakarrik ikus dezakete.",
        "spam_reverting": "$1(e)rako loturarik ez daukan azken bertsiora itzultzen",
        "spam_blanking": "Berrikuspen guztiek $1(e)rako lotura zeukaten, husten",
        "spam_deleting": "$1(e)ra loturak dituzten errebisio guztiak ezabatzen",
-       "simpleantispam-label": "Anti-spam egiaztapena.\nAtal hau '''EZ''' bete!",
+       "simpleantispam-label": "Anti-spam egiaztapena.\nAtal hau <strong>ez</strong> bete!",
        "pageinfo-title": "\"$1\"(r)entzako informazioa",
        "pageinfo-not-current": "Barkatu, errebisio zaharretako informazioa eskaintzea ezinezkoa da.",
        "pageinfo-header-basic": "Oinarrizko informazioa",
        "version-license": "MediaWiki Lizentzia",
        "version-ext-license": "Lizentzia",
        "version-ext-colheader-name": "Luzapena",
+       "version-skin-colheader-name": "Itxura",
        "version-ext-colheader-version": "Bertsioa",
        "version-ext-colheader-license": "Lizentzia",
        "version-ext-colheader-description": "Deskribapena",
        "version-entrypoints": "Sarrera puntuko URLa",
        "version-entrypoints-header-entrypoint": "Sarrera puntua",
        "version-entrypoints-header-url": "URL",
+       "version-libraries-library": "Liburutegia",
        "version-libraries-version": "Bertsioa",
        "version-libraries-license": "Lizentzia",
        "version-libraries-description": "Deskribapena",
        "tags-create-submit": "Sortu",
        "tags-delete-title": "Etiketa ezabatu",
        "tags-delete-reason": "Arrazoia:",
+       "tags-delete-not-found": "\"$1\" etiketa  ez da existitzen.",
        "tags-activate-reason": "Arrazoia:",
        "tags-activate-submit": "Aktibatu",
        "tags-deactivate-reason": "Arrazoia:",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:wikilariak}} «$3» orria «$4» izenera aldatu du, birbideratze bat gainidatzita, birbideratzerik 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-create": "$1 erabiltzaile kontua {{GENDER:$2|sortu da}}",
        "logentry-newusers-create2": "$1 wikilariak $3 erabiltzaile kontua sortu du",
        "logentry-upload-upload": "$1(e)k $3 {{GENDER:$2|igo du}}",
        "rightsnone": "(bat ere ez)",
        "expand_templates_generate_xml": "Erakutsi XML parse zuhaitza",
        "expand_templates_preview": "Aurreikusi",
        "pagelanguage": "Orriaren hizkuntza aukeratu",
+       "pagelang-name": "Orria",
        "pagelang-language": "Hizkuntza",
        "pagelang-use-default": "Hizkuntza lehenetsia erabili",
        "pagelang-select-lang": "Hizkuntza aukeratu",
        "right-pagelang": "Aldatu orrialdearen hizkuntza",
        "action-pagelang": "orrialdearen hizkuntza aldatu",
+       "log-name-pagelang": "Hizkuntza aldatu:",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (gaituta)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''desgaituta''')",
        "mediastatistics-nbytes": "{{PLURAL:$1|$1 byte|$1 byte}} ($2; %$3)",
        "mediastatistics-header-unknown": "Ezezaguna",
        "mediastatistics-header-bitmap": "Bit-mapako irudiak",
        "mediastatistics-header-drawing": "Marrazkiak (irudi bektorialak)",
+       "mediastatistics-header-audio": "Audioa",
        "mediastatistics-header-video": "Bideoak",
+       "mediastatistics-header-office": "Bulego",
        "json-error-syntax": "Sintaxi-errorea",
        "special-characters-group-latin": "Latina",
        "special-characters-group-latinextended": "Latin hedatua",
        "special-characters-group-thai": "Thaiera",
        "special-characters-group-lao": "Laosera",
        "special-characters-group-khmer": "Khmerrera",
-       "special-characters-title-minus": "minus zeinua"
+       "special-characters-title-minus": "minus zeinua",
+       "mw-widgets-dateinput-no-date": "Ez duzu datarik aukeratu"
 }
index 5afd8b3..c2796bf 100644 (file)
        "throttled-mailpassword": "یک ایمیل بازنشانی گذرواژه در $1 {{PLURAL:$1|ساعت|ساعت}} گذشته فرستاده شده است.\nبرای جلوگیری از سوءاستفاده، هر $1 {{PLURAL:$1|ساعت|ساعت}} تنها یک ایمیل بازنشانی گذرواژه فرستاده می‌شود.",
        "mailerror": "خطا در ارسال ایمیل: $1",
        "acct_creation_throttle_hit": "بازدیدکنندگان این ویکی که از نشانی آی‌پی شما استفاده می‌کنند در روز گذشته {{PLURAL:$1|یک حساب کاربری|$1 حساب کاربری}} ساخته‌اند، که بیشترین تعداد مجاز در آن بازهٔ زمانی است.\nبه همین خاطر، بازدیدکنندگانی که از این نشانی آی‌پی استفاده می‌کنند نمی‌توانند در حال حاضر حساب جدیدی بسازند.",
-       "emailauthenticated": "آدرس ایمیل شما در $2 ساعت $3 تأیید شده است.",
+       "emailauthenticated": "نشانی ایمیل شما در $2 ساعت $3 تأیید شده است.",
        "emailnotauthenticated": "آدرس ایمیل شما هنوز تأیید نشده است.\nبرای هیچ‌یک از ویژگی‌های زیر، ایمیل ارسال نخواهد شد.",
        "noemailprefs": "برای راه‌اندازی این قابلیت‌ها یک آدرس ایمیل در ترجیحات خود مشخص کنید.",
-       "emailconfirmlink": "آدرس ایمیل خود را تأیید کنید",
+       "emailconfirmlink": "نشانی ایمیل خود را تأیید کنید",
        "invalidemailaddress": "آدرس ایمیل واردشدهٔ قابل قبول نیست، چرا که دارای ساختار نامعتبری است.\nلطفاً آدرسی با ساختار صحیح وارد کنید و یا بخش مربوط را خالی بگذارید.",
        "cannotchangeemail": "آدرس‌های ایمیل حساب کاربری در این ویکی قابل تغییر نیست.",
        "emaildisabled": "این وب سایت قادر به ارسال ایمیل نیست.",
        "hr_tip": "خط افقی (از آن کم استفاده کنید)",
        "summary": "خلاصه:",
        "subject": "موضوع/عنوان:",
-       "minoredit": "این ویرایش جزئی‌است",
+       "minoredit": "این ویرایش، جزئی است",
        "watchthis": "پی‌گیری این صفحه",
        "savearticle": "صفحه ذخیره شود",
        "preview": "پیش‌نمایش",
        "changecontentmodel-success-title": "نمونه محتوی تغییر یافت",
        "changecontentmodel-success-text": "نوع محتوی [[:$1]]  تغییر یافت",
        "changecontentmodel-cannot-convert": "محتوی در [[:$1]] نمی‌تواند به گونه‌ای از $2 تبدیل شود.",
-       "changecontentmodel-title-cantexist": "امکان داشتن صفحه در $1 نیست.",
        "changecontentmodel-nodirectediting": "نمونه محتوی $1 امکان ویرایش مستقیم را پشتیبانی نمی‌کند",
        "log-name-contentmodel": "سیاهه تغییر نمونه محتوی",
        "log-description-contentmodel": "رویدادهای مرتبط با نمونه محتوی‌های یک صفحه",
        "exif-compression-3": "رمزگذاری نمابر سی‌سی‌آی‌تی‌تی گروه ۳",
        "exif-compression-4": "رمزگذاری نمابر سی‌سی‌آی‌تی‌تی گروه ۴",
        "exif-copyrighted-true": "دارای حق تکثیر",
-       "exif-copyrighted-false": "وضعیت حق‌تکثیر تعیین نشدهاست",
+       "exif-copyrighted-false": "وضعیت حق‌تکثیر تعیین نشده است",
        "exif-unknowndate": "تاریخ نامعلوم",
        "exif-orientation-1": "عادی",
        "exif-orientation-2": "افقی پشت و روشده",
        "exif-urgency-other": "اولویت تعریف شده توسط کاربر ($1)",
        "namespacesall": "همه",
        "monthsall": "همهٔ ماه‌ها",
-       "confirmemail": "تأیید آدرس ایمیل",
+       "confirmemail": "تأیید نشانی ایمیل",
        "confirmemail_noemail": "شما در صفحهٔ [[Special:Preferences|ترجیحات کاربری]] خود آدرس ایمیل معتبری وارد نکرده‌اید.",
        "confirmemail_text": "این ویکی، شما را ملزم به تأیید آدرس ایمیل خود، پیش از استفاده از خدمات ایمیل در اینجا می‌کند. دکمهٔ زیرین را فعال کنید تا ایمیلی تأییدی به آدرس ایمیل شما فرستاده شود. این ایمیل دربردارندهٔ پیوندی خواهد بود که حاوی یک کد است. پیوند را در مرورگر خود بار کنید کنید تا آدرس ایمیل شما تأیید شود.",
        "confirmemail_pending": "یک کد تأییدی پیشتر برای شما به صورت ایمیل فرستاده شده است. اگر همین اواخر حساب خود را باز کرده‌اید شاید بد نباشد که پیش از درخواست یک کد جدید چند دقیقه درنگ کنید تا شاید ایمیل قبلی برسد.",
        "confirmemail_invalid": "کد تأیید نامعتبر است. ممکن است که منقضی شده باشد.",
        "confirmemail_needlogin": "لطفاً برای تأیید آدرس ایمیلتان $1.",
        "confirmemail_success": "آدرس ایمیل شما تأیید شده‌است.\n\nاکنون می‌توانید [[Special:UserLogin|به سیستم وارد شوید]] و از ویکی لذت ببرید.",
-       "confirmemail_loggedin": "آدرس ایمیل شما تأیید شد.",
-       "confirmemail_subject": "تأیید آدرس ایمیل {{SITENAME}}",
+       "confirmemail_loggedin": "نشانی ایمیل شما تأیید شد.",
+       "confirmemail_subject": "تأیید نشانی ایمیل {{SITENAME}}",
        "confirmemail_body": "یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1 حساب کاربری‌ای با نام «$2» و این آدرس ایمیل در {{SITENAME}} ایجاد کرده است.\n\nبرای تأیید این که این حساب واقعاً متعلق به شماست و نیز برای فعال سازی قابلیت ایمیل {{SITENAME}} پیوند زیر را در مرورگر اینترنت خود باز کنید:\n\n$3\n\nاگر شما این حساب کاربری را ثبت *نکرده‌اید*، لطفاً پیوند زیر را\nباز کنید تا تأیید آدرس ایمیل لغو شود:\n\n$5\n\nاین کدِ تأیید در تاریخ $4 منقضی خواهد شد.",
        "confirmemail_body_changed": "یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1 آدرس ایمیل حساب «$2» در {{SITENAME}} را تغییر داده است.\n\nبرای تأیید این که این حساب واقعاً به شما تعلق دارد و فعال کردن دوبارهٔ قابلیت ایمیل در {{SITENAME}}، پیوند زیر را در مرورگرتان باز کنید:\n\n$3\n\nاگر این حساب متعلق به شما نیست، پیوند زیر را باز کنید تا تغییر آدرس ایمیل لغو شود:\n\n$5\n\nاین تأییدیه در $4 منقضی می‌گردد.",
        "confirmemail_body_set": "یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1,\nآدرس ایمیل حساب «$2» در {{SITENAME}} را به این آدرس تغییر داده است.\n\nبرای تأیید این که این حساب واقعاً به شما تعلق دارد و فعال کردن دوبارهٔ قابلیت ایمیل در {{SITENAME}}، پیوند زیر را در مرورگرتان باز کنید:\n\n$3\n\nاگر این حساب متعلق به شما نیست، پیوند زیر را باز تا تغییر آدرس ایمیل، لغو شود:\n\n$5\n\nاین تأییدیه در $4 منقضی می‌گردد.",
-       "confirmemail_invalidated": "تأیید آدرس ایمیل لغو شد",
-       "invalidateemail": "لغو تأیید آدرس ایمیل",
+       "confirmemail_invalidated": "تأیید نشانی ایمیل لغو شد",
+       "invalidateemail": "لغو تأیید نشانی ایمیل",
        "scarytranscludedisabled": "[تراگنجانش بین‌ویکیانه فعال نیست]",
        "scarytranscludefailed": "[فراخوانی الگو برای $1 میسر نشد]",
        "scarytranscludefailed-httpstatus": "[فراخوانی الگو برای $1 میسر نشد: خطای اچ‌تی‌تی‌پی $2]",
index ac78994..644bd2d 100644 (file)
@@ -81,6 +81,7 @@
        "tog-watchlisthideliu": "Piilota kirjautuneiden käyttäjien muokkaukset tarkkailulistalta",
        "tog-watchlisthideanons": "Piilota rekisteröitymättömien käyttäjien muokkaukset tarkkailulistalta",
        "tog-watchlisthidepatrolled": "Piilota muutostentarkastajien hyväksymät muokkaukset tarkkailulistalta",
+       "tog-watchlisthidecategorization": "Piilota muutokset, jotka koskevat sivujeen lisäämistä tai poistamista luokkiin",
        "tog-ccmeonemails": "Lähetä minulle kopio MediaWikin kautta lähetetyistä sähköposteista",
        "tog-diffonly": "Älä näytä sivun sisältöä eroavaisuusvertailun alapuolella",
        "tog-showhiddencats": "Näytä piilotetut luokat",
        "actionthrottled": "Toiminnon useaa suorittamista on rajoitettu",
        "actionthrottledtext": "Häiriköinnin estämiseksi tämän toiminnon suorittamista on rajoitettu niin, että sitä ei voi tehdä useita kertoja lyhyen ajan sisällä. Olet suorittanut toiminnon nyt liian monta kertaa. \nYritä uudelleen muutaman minuutin kuluttua.",
        "protectedpagetext": "Tämä sivu on suojattu muutoksilta ja muilta toiminnoilta.",
-       "viewsourcetext": "Voit katsoa ja kopioida tämän sivun lähdetekstiä:",
-       "viewyourtext": "Voit nähdä ja kopioida tähän sivuun <strong>tekemistäsi muutoksista</strong> syntyneen lähdekoodin:",
+       "viewsourcetext": "Voit katsoa ja kopioida tämän sivun lähdetekstiä.",
+       "viewyourtext": "Voit nähdä ja kopioida tähän sivuun <strong>tekemistäsi muutoksista</strong> syntyneen lähdekoodin.",
        "protectedinterface": "Tämä sivu sisältää ohjelmiston käyttöliittymätekstiä ja on suojattu häiriköinnin estämiseksi.\nViestien kääntäminen tulisi tehdä [//translatewiki.net/ translatewiki.netissä] – MediaWikin kotoistusprojektissa.",
        "editinginterface": "<strong>Varoitus:</strong> Olet muokkaamassa sivua, joka sisältää ohjelmiston käyttöliittymän tekstiä.\nMuutokset tähän sivuun vaikuttavat muiden käyttäjien käyttöliittymään tässä wikissä.",
        "translateinterface": "Jos haluat lisätä tai muuttaa käännöksiä kaikissa wikeissä, käytä siihen MediaWikin kääntämistä varten rakennettua sivustoa [//translatewiki.net/ translatewiki.net].",
        "search-category": "(luokka $1)",
        "search-file-match": "(vastaa tiedoston sisältöä)",
        "search-suggest": "Tarkoititko: $1",
+       "search-rewritten": "Näytetään tulokset haulla $1. Haluatko hakea haulla $2?",
        "search-interwiki-caption": "Sisarprojektit",
        "search-interwiki-default": "Tulokset osoitteesta $1:",
        "search-interwiki-more": "(lisää)",
        "rcshowhidemine": "$1 omat muutokset",
        "rcshowhidemine-show": "Näytä",
        "rcshowhidemine-hide": "Piilota",
+       "rcshowhidecategorization": "$1 sivujen luokkien muutokset",
+       "rcshowhidecategorization-show": "Näytä",
+       "rcshowhidecategorization-hide": "Piilota",
        "rclinks": "Näytä $1 tuoretta muutosta viimeisten $2 päivän ajalta.<br />$3",
        "diff": "ero",
        "hist": "historia",
        "newpageletter": "U",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|tarkkaileva käyttäjä|tarkkailevaa käyttäjää}}]",
-       "rc_categories": "Vain luokista (erotin on ”|”)",
-       "rc_categories_any": "Mikä tahansa",
+       "rc_categories": "Rajoita luokkiin (erota luokat merkillä ”|”)",
+       "rc_categories_any": "Mikä tahansa valituista",
        "rc-change-size-new": "$1 {{PLURAL:$1|tavu|tavua}} muutosten jälkeen",
        "newsectionsummary": "/* $1 */ uusi osio",
        "rc-enhanced-expand": "Näytä yksityiskohdat",
        "watchlistanontext": "Sinun täytyy kirjautua sisään, jos haluat nähdä oman tarkkailulistasi.",
        "watchnologin": "Et ole kirjautunut sisään",
        "addwatch": "Lisää tarkkailulistalle",
-       "addedwatchtext": "Sivu '''[[:$1]]''' on lisätty [[Special:Watchlist|tarkkailulistallesi]].\nTulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä.",
+       "addedwatchtext": "\"[[:$1]]\" ja sen keskustelusivu on lisätty [[Special:Watchlist|tarkkailulistallesi]].",
        "addedwatchtext-short": "Sivu ”$1” on lisätty tarkkailulistallesi.",
        "removewatch": "Poista tarkkailulistalta",
-       "removedwatchtext": "Sivu '''[[:$1]]''' on poistettu [[Special:Watchlist|tarkkailulistaltasi]].",
+       "removedwatchtext": "\"[[:$1]]\" ja sen keskustelusivu on poistettu [[Special:Watchlist|tarkkailulistaltasi]].",
        "removedwatchtext-short": "Sivu ”$1” on poistettu tarkkailulistaltasi.",
        "watch": "Tarkkaile",
        "watchthispage": "Tarkkaile tätä sivua",
        "changecontentmodel-success-title": "Sisältömallia on muutettu",
        "changecontentmodel-success-text": "Sisältötyyppiä kohteessa [[:$1]] on muutettu.",
        "changecontentmodel-cannot-convert": "Sisältöä sivulla [[:$1]] ei voida muuntaa tyypiksi $2.",
-       "changecontentmodel-title-cantexist": "Ei ole mahdollista, että kohteessa $1 on sivua.",
        "changecontentmodel-nodirectediting": "Sisältömalli $1 ei tue suoraa muokkaamista",
        "log-name-contentmodel": "Sisältömallin muutosloki",
        "log-description-contentmodel": "Tapahtumat, jotka liittyvät sivun sisältömalleihin",
        "pageinfo-robot-index": "Indeksoitava",
        "pageinfo-robot-noindex": "Ei indeksoitava",
        "pageinfo-watchers": "Sivun tarkkailijoiden lukumäärä",
-       "pageinfo-visiting-watchers": "Sivun tuoreiden muutosten tarkkailijoiden lukumäärä",
+       "pageinfo-visiting-watchers": "Sivun tuoreet muutokset nähneiden tarkkailijoiden määrä",
        "pageinfo-few-watchers": "Vähemmän kuin $1 {{PLURAL:$1|tarkkailija|tarkkailijaa}}",
        "pageinfo-few-visiting-watchers": "Tuoreita muutoksia saatetaan tarkkailla, mutta tämä ei ole varmaa",
        "pageinfo-redirects-name": "Sivulle johtavat ohjaukset",
        "htmlform-title-badnamespace": "Sivu [[:$1]] ei ole nimiavaruudessa ”{{ns:$2}}”.",
        "htmlform-title-not-creatable": "”$1” ei kelpaa sivun nimeksi.",
        "htmlform-title-not-exists": "Sivua [[:$1]] ei ole olemassa.",
+       "htmlform-user-not-exists": "Käyttäjää <strong>$1</strong> ei ole olemassa.",
        "htmlform-user-not-valid": "<strong>$1</strong> ei ole kelvollinen käyttäjänimi.",
        "sqlite-has-fts": "$1, jossa on tuki kokotekstihaulle",
        "sqlite-no-fts": "$1, jossa ei ole tukea kokotekstihaulle",
        "special-characters-title-endash": "ajatusviiva",
        "special-characters-title-emdash": "pitkä ajatusviiva",
        "special-characters-title-minus": "miinusmerkki",
+       "mw-widgets-dateinput-no-date": "Ei ole valittu mitään päivää",
+       "mw-widgets-dateinput-placeholder-day": "VVVV-KK-PP",
+       "mw-widgets-dateinput-placeholder-month": "VVVV-KK",
        "mw-widgets-titleinput-description-new-page": "sivua ei ole olemassa vielä",
        "mw-widgets-titleinput-description-redirect": "ohjaus kohteeseen $1"
 }
index 319c398..058248d 100644 (file)
        "passwordreset": "Nullstilla loyniorðið",
        "passwordreset-text-one": "Útfyll henda teigin fyri at nullstilla títt loyniorð.",
        "passwordreset-text-many": "{{PLURAL:$1|Útfyll í ein av teigunum fyri at móttaka eitt fyribils loyniorð við telduposti.}}",
-       "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-username": "Brúkaranavn:",
        "resettokens": "Nullstilla lyklar",
        "resettokens-text": "Tú kanst nullstilla lyklar sum geva atgongd til ávís privat dáta sum eru knýtt at tínari konto her.\n\nTú eigur at gera tað um tú av óvart hevur deilt lyklarnar við onkran, ella um tín konta hevur verið útsett fyri vandastøðu.",
        "resettokens-no-tokens": "Tað eru ongir lyklar at nullstilla.",
-       "resettokens-legend": "Nullstilla lyklar",
        "resettokens-tokens": "Lyklar:",
        "resettokens-token-label": "$1 (dagsins virði: $2)",
        "resettokens-done": "Nullstilla lyklar.",
        "nlinks": "$1 {{PLURAL:$1|slóð|slóðir}}",
        "nmembers": "$1 {{PLURAL:$1|limur|limir}}",
        "nrevisions": "$1 {{PLURAL:$1|versjón|versjónir}}",
-       "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.",
        "duration-centuries": "$1 {{PLURAL:$1|øld|øldir}}",
        "expand_templates_output": "Úrslit",
        "expand_templates_ok": "Í lagi",
-       "expand_templates_preview": "Forskoðan"
+       "expand_templates_preview": "Forskoðan",
+       "mw-widgets-dateinput-placeholder-day": "ÁÁÁÁ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "ÁÁÁÁ-MM",
+       "mw-widgets-titleinput-description-new-page": "síðan er ikki til enn"
 }
index d6ab4d8..a46cfa3 100644 (file)
                        "Wladek92",
                        "Framafan",
                        "Lucky",
-                       "TomT0m"
+                       "TomT0m",
+                       "L",
+                       "SRXcraft"
                ]
        },
-       "tog-underline": "Soulignement des liens :",
+       "tog-underline": "Soulignement des liens:",
        "tog-hideminor": "Masquer les modifications mineures dans les changements récents",
        "tog-hidepatrolled": "Masquer les modifications surveillées dans les modifications récentes",
        "tog-newpageshidepatrolled": "Masquer les pages surveillées dans la liste des nouvelles pages",
+       "tog-hidecategorization": "Masquer la catégorisation des pages",
        "tog-extendwatchlist": "Étendre la liste de suivi pour afficher toutes les modifications et pas uniquement les plus récentes",
        "tog-usenewrc": "Grouper les changements par page dans les modifications récentes et la liste de suivi",
        "tog-numberheadings": "Numéroter automatiquement les titres de section",
-       "tog-showtoolbar": "Afficher la barre d'outils de modification",
+       "tog-showtoolbar": "Afficher la barre doutils de modification",
        "tog-editondblclick": "Modifier des pages sur double-clic",
        "tog-editsectiononrightclick": "Activer la modification des sections par un clic droit sur les titres de section",
        "tog-watchcreations": "Ajouter à ma liste de suivi les pages que je crée et les fichiers que j'importe",
        "tog-watchdefault": "Ajouter les pages et les fichiers que je modifie à ma liste de suivi",
-       "tog-watchmoves": "Ajouter les pages et les fichiers que je renomme à ma liste de suivi",
+       "tog-watchmoves": "Ajouter les pages et les fichiers que je déplace à ma liste de suivi",
        "tog-watchdeletion": "Ajouter à ma liste de suivi les pages et les fichiers que je supprime",
        "tog-watchrollback": "Ajouter à ma liste de suivi les pages sur lesquelles j’ai effectué une révocation",
        "tog-minordefault": "Marquer toutes mes modifications comme mineures par défaut",
-       "tog-previewontop": "Afficher la prévisualisation au-dessus de la zone de modification",
+       "tog-previewontop": "Afficher la prévisualisation avant la zone de modification",
        "tog-previewonfirst": "Afficher la prévisualisation lors de la première modification",
        "tog-enotifwatchlistpages": "M'avertir par courriel lorsqu'une page ou un fichier de ma liste de suivi est modifié",
        "tog-enotifusertalkpages": "M'avertir par courriel si ma page de discussion est modifiée",
-       "tog-enotifminoredits": "M'avertir par courriel également lors des modifications mineures de pages ou de fichiers",
+       "tog-enotifminoredits": "M'avertir par courriel également lors des modifications mineures des pages ou des fichiers",
        "tog-enotifrevealaddr": "Afficher mon adresse de courriel dans les courriels de notification",
        "tog-shownumberswatching": "Afficher le nombre d'utilisateurs qui suivent la page",
        "tog-oldsig": "Signature existante :",
        "tog-watchlisthideliu": "Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi",
        "tog-watchlisthideanons": "Masquer les modifications anonymes dans la liste de suivi",
        "tog-watchlisthidepatrolled": "Masquer les modifications surveillées dans la liste de suivi",
+       "tog-watchlisthidecategorization": "Masquer la catégorisation des pages",
        "tog-ccmeonemails": "M'envoyer une copie des courriels que j'envoie aux autres utilisateurs",
        "tog-diffonly": "Ne pas afficher le contenu des pages sous les diffs",
        "tog-showhiddencats": "Afficher les catégories cachées",
        "pagecategories": "{{PLURAL:$1|Catégorie|Catégories}}",
        "category_header": "Pages dans la catégorie « $1 »",
        "subcategories": "Sous-catégories",
-       "category-media-header": "Fichiers multimédias dans la catégorie « $1 »",
-       "category-empty": "<em>Cette catégorie ne contient aucune page, sous-catégorie ou fichier multimédia.</em>",
+       "category-media-header": "Média dans la catégorie \"$1\"",
+       "category-empty": "<em>Cette catégorie ne contient aucune page ou fichier multimédia.</em>",
        "hidden-categories": "{{PLURAL:$1|Catégorie cachée|Catégories cachées}}",
        "hidden-category-category": "Catégories cachées",
        "category-subcat-count": "Cette catégorie comprend {{PLURAL:$2|la sous-catégorie|$2 sous-catégories, dont {{PLURAL:$1|celle|les $1}}}} ci-dessous.",
        "actionthrottled": "Action limitée",
        "actionthrottledtext": "Pour lutter contre le spam, l'utilisation de cette action est limitée à un certain nombre de fois dans un laps de temps assez court. Il s'avère que vous avez dépassé cette limite.\nEssayez à nouveau dans quelques minutes.",
        "protectedpagetext": "Cette page a été protégée pour empêcher sa modification ou d'autres actions.",
-       "viewsourcetext": "Vous pouvez voir et copier le contenu de la page :",
-       "viewyourtext": "Vous pouvez voir et copier le contenu de '''vos modifications''' à cette page :",
+       "viewsourcetext": "Vous pouvez voir et copier le contenu de cette page.",
+       "viewyourtext": "Vous pouvez voir et copier le contenu de <strong>vos modifications</strong> à cette page.",
        "protectedinterface": "Cette page fournit du texte d'interface pour le logiciel sur ce wiki, et est protégée pour éviter les abus.\nPour ajouter ou modifier des traductions sur tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MediaWiki.",
        "editinginterface": "<strong>Attention :</strong> vous êtes en train de modifier une page utilisée pour créer le texte de l’interface du logiciel.\nLes changements sur cette page se répercuteront sur l’apparence de l’interface utilisateur pour les autres utilisateurs de ce wiki.",
        "translateinterface": "Pour ajouter ou modifier des traductions pour tous les wikis, veuillez utiliser [//translatewiki.net/ translatewiki.net], le projet de localisation de MédiaWiki.",
        "search-category": "(catégorie $1)",
        "search-file-match": "(correspond au contenu du fichier)",
        "search-suggest": "Essayez avec cette orthographe : $1",
+       "search-rewritten": "Affiche les résultats pour $1. Recherchez à sa place pour $2.",
        "search-interwiki-caption": "Projets frères",
        "search-interwiki-default": "Résultats de $1 :",
        "search-interwiki-more": "(plus)",
        "rcshowhidemine": "$1 mes modifications",
        "rcshowhidemine-show": "Afficher",
        "rcshowhidemine-hide": "Masquer",
+       "rcshowhidecategorization": "$1 la catégorisation des pages",
+       "rcshowhidecategorization-show": "Afficher",
+       "rcshowhidecategorization-hide": "Cacher",
        "rclinks": "Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3.",
        "diff": "diff",
        "hist": "hist",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 utilisateur{{PLURAL:$1||s}} en train de suivre]",
-       "rc_categories": "Limite des catégories (séparation avec « | »)",
-       "rc_categories_any": "Toutes",
+       "rc_categories": "Limiter aux catégories (séparées par « | ») :",
+       "rc_categories_any": "Une des sélectionnées",
        "rc-change-size-new": "$1 {{PLURAL:$1|octet|octets}} après changement",
        "newsectionsummary": "/* $1 */ nouvelle section",
        "rc-enhanced-expand": "Voir les détails",
        "recentchangeslinked-summary": "Cette page spéciale montre les modifications récentes sur les pages qui sont liées. Les pages de votre liste de suivi sont '''en gras'''.",
        "recentchangeslinked-page": "Nom de la page :",
        "recentchangeslinked-to": "Afficher les modifications des pages qui comportent un lien vers la page donnée plutôt que l'inverse",
+       "recentchanges-page-added-to-category": "[[:$1]] ajouté à la catégorie",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] et {{PLURAL:$2|une page ajoutée|$2 pages ajoutées}} à la catégorie",
+       "recentchanges-page-removed-from-category": "[[:$1]] supprimé de la catégorie",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] et {{PLURAL:$2|une page retirée|$2 pages retirées}} de la catégorie",
        "upload": "Importer un fichier",
        "uploadbtn": "Importer le fichier",
        "reuploaddesc": "Annuler et retourner au formulaire d'import",
        "upload-too-many-redirects": "L’URL contient trop de redirections.",
        "upload-http-error": "Une erreur HTTP est survenue : $1",
        "upload-copy-upload-invalid-domain": "La copie des téléversements n’est pas disponible depuis ce domaine.",
+       "upload-dialog-title": "Télécharger un fichier",
+       "upload-dialog-error": "Une erreur est survenue",
+       "upload-dialog-warning": "Un avertissement s’est produit",
+       "upload-dialog-button-cancel": "Annuler",
+       "upload-dialog-button-done": "Fait",
+       "upload-dialog-button-save": "Enregistrer",
+       "upload-dialog-button-upload": "Télécharger",
+       "upload-dialog-label-select-file": "Sélectionner un fichier",
+       "upload-dialog-label-infoform-title": "Détails",
+       "upload-dialog-label-infoform-name": "Nom",
+       "upload-dialog-label-infoform-description": "Description",
+       "upload-dialog-label-usage-title": "Utilisation",
+       "upload-dialog-label-usage-filename": "Nom du fichier",
        "backend-fail-stream": "Impossible de lire le fichier $1.",
        "backend-fail-backup": "Impossible de sauvegarder le fichier $1.",
        "backend-fail-notexists": "Le fichier $1 n’existe pas.",
        "deadendpages": "Pages en impasse",
        "deadendpagestext": "Les pages suivantes ne contiennent aucun lien vers d'autres pages du wiki.",
        "protectedpages": "Pages protégées",
-       "protectedpages-indef": "Uniquement les protections permanentes",
+       "protectedpages-indef": "Uniquement les protections indéfinies",
        "protectedpages-summary": "Cette page liste les pages existantes actuellement protégées. Pour une liste des titres protégés contre la création, voir [[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]].",
        "protectedpages-cascade": "Uniquement les protections en cascade",
        "protectedpages-noredirect": "Masquer les redirections",
        "watchlistanontext": "Veuillez vous connecter pour visualiser ou modifier les éléments de votre liste de suivi.",
        "watchnologin": "Non connecté",
        "addwatch": "Ajouter à la liste de suivi",
-       "addedwatchtext": "La page « [[:$1]] » a été ajoutée à votre [[Special:Watchlist|liste de suivi]].\nLes prochaines modifications de cette page et de la page de discussion associée y seront répertoriées.",
+       "addedwatchtext": "La page «[[:$1]]» et sa page de discussion ont été ajoutées à votre [[Special:Watchlist|liste de suivi]].",
        "addedwatchtext-short": "La page « $1 » a été ajoutée à votre liste de suivi.",
        "removewatch": "Supprimer de la liste de suivi",
-       "removedwatchtext": "La page « [[:$1]] » a été retirée de votre [[Special:Watchlist|liste de suivi]].",
+       "removedwatchtext": "La page « [[:$1]] » et sa page de discussion ont été retirées de votre [[Special:Watchlist|liste de suivi]].",
        "removedwatchtext-short": "La page « $1 » a été supprimée de votre liste de suivi.",
        "watch": "Suivre",
        "watchthispage": "Suivre cette page",
        "changecontentmodel-success-title": "Le modèle de contenu a été modifié",
        "changecontentmodel-success-text": "Le modèle de contenu de [[:$1]] a été modifié.",
        "changecontentmodel-cannot-convert": "Le contenu sur [[:$1]] n’a pas pu être converti en un type de $2.",
-       "changecontentmodel-title-cantexist": "Impossible d’avoir une page à $1.",
        "changecontentmodel-nodirectediting": "Le modèle de contenu $1 ne permet pas la modification directe",
        "log-name-contentmodel": "Journal de modification de modèle de contenu",
        "log-description-contentmodel": "Événements relatifs aux modèles de contenu d’une page",
        "undeletepagetext": "{{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d’où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}.\nL’archive peut être nettoyée périodiquement.",
        "undelete-fieldset-title": "Restaurer les versions",
        "undeleteextrahelp": "Pour restaurer l’historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.\nPour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|version archivée|versions archivées}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|révision supprimée|révisions supprimées}}",
        "undeletehistory": "Si vous restaurez la page, toutes les versions seront replacées dans l’historique.\nSi une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée.",
        "undeleterevdel": "La restauration ne sera pas effectuée si, au final, la version la plus récente de la page ou du fichier reste partiellement supprimée.\nDans de tels cas, vous devez décocher ou démasquer les versions effacées les plus récentes (en tête de liste).",
        "undeletehistorynoadmin": "Cette page a été supprimée.\nLe motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui ont modifié la page avant sa suppression.\nLe contenu effectif de ces versions supprimées n’est accessible qu’aux administrateurs.",
        "ipblocklist-submit": "Rechercher",
        "ipblocklist-localblock": "Blocage local",
        "ipblocklist-otherblocks": "{{PLURAL:$1|Autre blocage|Autres blocages}}",
-       "infiniteblock": "permanent",
+       "infiniteblock": "infini",
        "expiringblock": "expire le $1 à $2",
        "anononlyblock": "utilisateur non enregistré uniquement",
        "noautoblockblock": "blocage automatique désactivé",
        "spam_reverting": "Rétablissement de la dernière version ne contenant pas de lien vers $1",
        "spam_blanking": "Toutes les versions contenant des liens vers $1 sont blanchies",
        "spam_deleting": "Toutes les versions contenaient des liens vers $1, suppression",
-       "simpleantispam-label": "Vérification anti-pourriel.\nNe '''RIEN''' inscrire ici !",
+       "simpleantispam-label": "Vérification anti-spam.\nNe <strong>rien</strong> inscrire ici !",
        "pageinfo-title": "Informations pour « $1 »",
        "pageinfo-not-current": "Désolé, impossible de fournir cette information pour les anciennes révisions.",
        "pageinfo-header-basic": "Informations de base",
        "logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
        "logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
        "logentry-upload-upload": "$1 {{GENDER:$2|a téléchargé}} $3",
-       "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléversé}} une nouvelle version de $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|a téléchargé}} une nouvelle version de $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|a téléchargé}} $3",
        "log-name-managetags": "Journal des modifications de balises",
        "log-description-managetags": "Cette page recense les tâches de maintenance liées aux [[Special:Tags|balises]]. Le journal contient uniquement les actions faites manuellement par un administrateur ; les balises peuvent être créées ou supprimées par le logiciel wiki sans que cette action ne soit inscrite dans ce journal.",
        "special-characters-title-endash": "tiret demi-cadratin",
        "special-characters-title-emdash": "tiret cadratin",
        "special-characters-title-minus": "signe moins",
+       "mw-widgets-dateinput-no-date": "Aucune date sélectionnée",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-JJ",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "la page n’existe pas encore",
        "mw-widgets-titleinput-description-redirect": "redirection vers $1"
 }
index f3a43cb..3c89d9a 100644 (file)
        "recentchanges": "Changements récent",
        "rcshowhidebots": "$1 les robots",
        "rcshowhidepatr": "$1 les modifications patrouillés",
+       "diff": "diff",
+       "hist": "hist",
        "minoreditletter": "m",
        "newpageletter": "N",
        "boteditletter": "b",
        "listfiles-latestversion-yes": "Oui",
        "listfiles-latestversion-no": "Non",
        "file-anchor-link": "Dossier",
+       "filehist": "Historique du fichier",
        "filehist-deleteall": "effacer tout",
        "filehist-deleteone": "effacer",
        "filehist-user": "Useur",
+       "imagelinks": "Utilisation du fichier",
        "shared-repo-from": "de: $1",
        "filerevert-comment": "Raison:",
        "filedelete": "Effacer $1",
        "ancientpages": "Pages les plus anciennement changées",
        "move": "Renommer",
        "movethispage": "Renommer cette page",
+       "booksources-search": "Charcher",
        "allpagessubmit": "Aller",
        "categories": "Classes",
        "special-categories-sort-count": "tri par nombre d'éléments",
        "block-log-flags-nocreate": "création de compte interdite",
        "tooltip-pt-login": "Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier mais ce n’est pas obligatoire.",
        "tooltip-ca-talk": "Discussion de cette page de contenu",
+       "tooltip-ca-watch": "Additionner cette page à votre liste de suivi",
        "tooltip-search": "Charche {{SITENAME}}",
        "tooltip-search-fulltext": "Charche les pages pour ce texte",
        "tooltip-p-logo": "Visitez la page d'acceuil",
        "tooltip-n-randompage": "Afficher un page au hasard",
        "tooltip-n-help": "La place pour savoir",
        "tooltip-t-specialpages": "Liste de tout les pages speciales",
+       "tooltip-ca-nstab-special": "Ceci est une page spéciale, vous ne pouvez pas la changer.",
        "bad_image_list": "Le format est le suivant :\n\nSeules les listes d’énumération (commençant par *) sont prises en compte. Le premier lien d’une ligne doit être celui d’une mauvaise image.\nLes autres liens sur la même ligne sont considérés comme des exceptions, par exemple des pages sur lesquelles l’image peut apparaître.",
-       "redirect-file": "Nom du fichier"
+       "namespacesall": "Tous",
+       "redirect-file": "Nom du fichier",
+       "searchsuggest-search": "Charcher"
 }
index 2c94b47..7f61067 100644 (file)
        "special-characters-group-khmer": "C’mère",
        "special-characters-title-endash": "terèt anglès",
        "special-characters-title-emdash": "terèt èm",
-       "special-characters-title-minus": "segno muens"
+       "special-characters-title-minus": "segno muens",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-JJ",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM"
 }
index b445673..62a05cb 100644 (file)
@@ -7,13 +7,15 @@
                        "Merlissimo",
                        "Murma174",
                        "Pyt",
-                       "아라"
+                       "아라",
+                       "Purodha"
                ]
        },
        "tog-underline": "Ferwisangen onerstrik:",
        "tog-hideminor": "Letj anrangen fersteeg",
        "tog-hidepatrolled": "Letj anrangen fersteeg",
        "tog-newpageshidepatrolled": "Kontroliaret sidjen bi a \"Nei sidjen\" fersteeg",
+       "tog-hidecategorization": "Kategorisiarang faan sidjen fersteeg",
        "tog-extendwatchlist": "Ütjwidjet list faan sidjen, diar dü uun't uug behual wel",
        "tog-usenewrc": "Ütjwidjet uunwisin faan a ''Leetst feranrangen'' an bi a sidjen, diar dü ''Uun't uug behual'' wel",
        "tog-numberheadings": "Auerskraften automaatisk numeriare",
@@ -43,6 +45,7 @@
        "tog-watchlisthideliu": "Feranrangen faan uunmeldet brükern bi sidjen, diar ik uun't uug behual wal, fersteeg",
        "tog-watchlisthideanons": "Feranrangen faan anonüüm brükern (IPs) bi sidjen, diar ik uun't uug behual wal, fersteeg",
        "tog-watchlisthidepatrolled": "Kontroliaret feranrangen bi a sidjen, diar ik uun't uug behual wal, fersteeg",
+       "tog-watchlisthidecategorization": "Kategorisiarang faan sidjen fersteeg",
        "tog-ccmeonemails": "Schüür mi kopiin faan e-mails, diar ik tu ööder brükern schüür",
        "tog-diffonly": "Bi en werjuunsferglik bluas di ferskeel uunwise, ei det hialer sidj",
        "tog-showhiddencats": "Ferbürgen kategoriin uunwise",
        "badtitletext": "Didiar sidjennööm gongt ei. Hi as ferlicht leesag of as en ferkiard ferwisang faan en ööder projekt.",
        "title-invalid-empty": "Didiar sidjennööm as leesag of diar stäänt bluas en en nöömrüm.",
        "title-invalid-utf8": "Didiar sidjennööm hää en ferkiard UTF-8-sekwens.",
-       "title-invalid-interwiki": "Didiar nööm hää en interwiki-ferwisang",
+       "title-invalid-interwiki": "Didiar tiitel hää en interwiki-ferwisang, diar ei brükt wurd mut.",
        "title-invalid-talk-namespace": "Di uunfraaget sidjennööm hää mä en diskuschuunssidj tu dun, diar't goorei jiw koon.",
        "title-invalid-characters": "Di uunfraaget sidjennööm hää ferkiard tiakens: \"$1\".",
        "title-invalid-relative": "Di tiitel hää en relatiiwen wai. Relatiif waier (./, ../) san ei tuläät, auer diar ei arke browser mä amgung koon.",
+       "title-invalid-magic-tilde": "Didiar tiitel hää en rä faan tiakens (<nowiki>~~~</nowiki>), diar ei brükt wurd mut.",
+       "title-invalid-too-long": "Didiar tiitel as tu lung. Hi mut ei linger wees üs {{PLURAL:$1|ian byte|$1 bytes}} uun UTF-8-code.",
+       "title-invalid-leading-colon": "Didiar tiitel hää bi began en dobelponkt. Det gongt ei.",
        "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.",
        "actionthrottled": "Taal faan aktjuunen limitiaret",
        "actionthrottledtext": "Dü heest detdiar aktjuun tufölsis uun en kurten tidjrüm ütjfeerd.\nWees 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ü 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:",
+       "viewsourcetext": "Dü könst di kweltekst faan detdiar sidj uunluke an ham uk kopiare.",
+       "viewyourtext": "Dü könst di code faan <strong>din feranrang</strong> 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.\nDü könst [//translatewiki.net/ translatewiki.net] faan MediaWiki brük, am auersaatangen för ale wiki projekten tu maagin.",
        "editinginterface": "<strong>Paase üüb:</strong> Üüb detdiar sidj stäänt tekst, diar faan't MediaWiki software brükt woort. Wan dü diar wat feranerst, feranerst dü di skak faan't Nordfriisk Wikipedia.",
        "translateinterface": "Am auersaatangen föör aal a Wikis föörtunemen, gung tu [//translatewiki.net/ translatewiki.net], det as det MediaWiki-lokalisiarangsprojekt.",
        "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.\n\nGrünj för det sperin: $1",
        "protectedpagewarning": "'''Paase üüb: Detdiar sidj as speret wurden. Bluas administratooren kön det bewerke.'''\nUun't logbuk stäänt muar diartu:",
        "semiprotectedpagewarning": "'''Paase üüb: Detdiar sidj as dialwiis tu't bewerkin speret wurden. Bluas gudkäänd brükern kön det bewerke.'''\nUun't logbuk stäänt muar diartu:",
-       "cascadeprotectedwarning": "'''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}}:",
+       "cascadeprotectedwarning": "<strong>Paase üüb:</strong> Detdiar sidj koon bluas faan administratooren bewerket wurd. Hat as uun {{PLURAL:$1|detdiar ööder sidj|jodiar ööder sidjen}} iinbünjen, diar troch en kaskaadensper seekert {{PLURAL:$1|as|san}}:",
        "titleprotectedwarning": "'''Paase üüb: \"Detdiar sidj mä didiar nööm koon ei faan arken bewerket wurd. Bluas enkelt brükern mä [[Special:ListGroupRights|was brükerrochten]] kön detdiar sidj nei maage of bewerke.'''\nUun't logbuk stäänt muar diartu:",
        "templatesused": "{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} üüb detdiar sidj brükt:",
        "templatesusedpreview": "{{PLURAL:$1|Detdiar föörlaag woort|Jodiar föörlaagen wurd}} uun detdiar sidjenföörskau brükt:",
        "content-model-css": "CSS",
        "content-json-empty-object": "Leesag objekt",
        "content-json-empty-array": "Leesag array",
+       "duplicate-args-warning": "<strong>Paase üüb:</strong> [[:$1]] rept [[:$2]] mä muar üs ään wäärs för di parameter „$3“ ap. Bluas di leetst wäärs woort brükt.",
        "duplicate-args-category": "Sidjen, diar dobelt argumenten uun föörlaagen aprep.",
        "duplicate-args-category-desc": "Detdair sidj rept föörlaagen ap, diar dobelt argumenten brük, so üs <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> of <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Paase üüb:''' Detdiar sidj brükt tuföl widjloftag server-funktjuunen.\n\nDiar mut ei muar üs {{PLURAL:$2|1|$2}} brükt wurd. Nü {{PLURAL:$1|woort diar 1|wurd diar $1}} brükt.",
        "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.",
+       "history-edit-tags": "Markiarangen faan ütjsoocht werjuunen bewerke",
        "rev-deleted-comment": "(Tuupfaadet beskriiwang wechnimen)",
        "rev-deleted-user": "(Brükernööm stregen)",
        "rev-deleted-event": "(Logbuk-iindrach stregen)",
        "notextmatches": "Nian auerianstemangen mä teksten",
        "prevn": "{{PLURAL:$1|leetst|leetst $1}}",
        "nextn": "{{PLURAL:$1|naist|naist $1}}",
+       "prev-page": "leetst sidj (turag)",
+       "next-page": "naist sidj",
        "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-exists": "'''Deer as en sid nååmd \"[[:$1]]\" önj jüdeer Wiki'''",
+       "searchmenu-exists": "<strong>Diar as en sidj mä di tiitel \"[[:$1]]\" uun detheer wiki.</strong> {{PLURAL:$2|0=|Muar sidjen mä detdiar wurd uunwise.}}",
        "searchmenu-new": "<strong>Maage det sidj „[[:$1]]“ uun detheer wiki!</strong> {{PLURAL:$2|0=|Luke uk bi det fünjen sidj.|Luke uk bi a fünjen sidjen.}}",
        "searchprofile-articles": "Artiikler",
        "searchprofile-images": "Multimedia",
        "search-category": "(kategorii $1)",
        "search-file-match": "(fünjen tekst)",
        "search-suggest": "Mendst dü „$1“?",
+       "search-rewritten": "Diar wurd resultaaten för $1 uunwiset. Schük uunsteed för $2.",
        "search-interwiki-caption": "Saster-projekten",
        "search-interwiki-default": "Resultaaten faan $1:",
        "search-interwiki-more": "(muar)",
        "userrights-lookup-user": "Brükersköölen bewerke",
        "userrights-user-editname": "Brükernööm:",
        "editusergroup": "Brükersköölen bewerke",
-       "editinguser": "Brükerrochten faan '''[[User:$1|$1]]''' $2 feranre",
+       "editinguser": "Feranre brükerrochten {{GENDER:$1|faan di brüker}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Lasmootskap tu brükersköölen bewerke",
        "saveusergroups": "Brükersköölen seekre",
        "userrights-groupsmember": "Lasmoot faan:",
        "right-sendemail": "E-mails tu ööder brükern schüür",
        "right-passwordreset": "Paaswurd faan en brüker turagsaat an det e-mail diartu uunluke",
        "right-managechangetags": "[[Special:Tags|Markiarangen]] iinracht an uun't dootenbeenk strik",
+       "right-applychangetags": "[[Special:Tags|Markiarangen]] tuup mä ööder feranrangen brük",
+       "right-changetags": "Feranre [[Special:Tags|markiarangen]] faan enkelt werjuunen of logbukiindracher",
        "newuserlogpage": "Neiuunmeldangs-logbuk",
        "newuserlogpagetext": "Detheer as en logbuk faan nei iinracht brükerkonten.",
        "rightslog": "Brükerrochten-logbuk",
        "action-editmyprivateinfo": "din priwoot dooten tu bewerkin",
        "action-editcontentmodel": "det model faan det sidj tu bewerkin",
        "action-managechangetags": "markiarangen iinracht an uun't dootenbeenk strik",
+       "action-applychangetags": "markiarangen tuup mä ööder feranrangen tu brüken",
+       "action-changetags": "markiarangen faan enkelt werjuunen of logbukiindracher tu feranrin",
        "nchanges": "$1 {{PLURAL:$1|feranrang|feranrangen}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|sant dan leetst beschük}}",
        "enhancedrc-history": "Ferluup",
        "rcshowhidemine": "$1 min bidracher",
        "rcshowhidemine-show": "Wise",
        "rcshowhidemine-hide": "Fersteeg",
+       "rcshowhidecategorization": "$1 kategorisiarang faan sidjen",
+       "rcshowhidecategorization-show": "Wise",
+       "rcshowhidecategorization-hide": "Fersteeg",
        "rclinks": "Wise a leetst $1 feranrangen faan a leetst $2 daar.<br />$3",
        "diff": "ferskeel",
        "hist": "werjuunen",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|brüker|brükern}}, diar tuluke]",
        "rc_categories": "Bluas sidjen ütj jo kategoriin (apdiald mä „|“):",
-       "rc_categories_any": "Arke",
+       "rc_categories_any": "Arke ütjsoocht",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} efter't feranrin",
        "newsectionsummary": "Nei kirew /* $1 */",
        "rc-enhanced-expand": "Enkelthaiden wise",
        "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": "Sidjennööm:",
        "recentchangeslinked-to": "Wise feranrangen üüb sidjen, diar heerhen ferwise.",
+       "recentchanges-page-added-to-category": "[[:$1]] tu kategorii saat",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] an {{PLURAL:$2|ian sidj muar|$2 muar sidjen}} tu kategorii saat",
+       "recentchanges-page-removed-from-category": "[[:$1]] faan't kategorii wechnimen",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] an {{PLURAL:$2|ian sidj muar|$2 muar sidjen}} faan det kategorii wechnimen",
        "upload": "Datei huuchschüür",
        "uploadbtn": "Datei huuchschüür",
        "reuploaddesc": "Ufbreeg an turag tu't sidj för't huuchschüüren",
        "uploaddisabledtext": "Det huuchschüüren faan datein as ei aktiwiaret.",
        "php-uploaddisabledtext": "Det huuchschüüren faan datein as uun PHP ei aktiwiaret.\nLuke di det iinstelang faan <code>file_uploads</code> uun.",
        "uploadscripted": "Uun detdiar datei stäänt HTML- of Scriptcode, an küd ütj fersen faan en browser ütjfeerd wurd.",
+       "upload-scripted-pi-callback": "Dü könst nian datei mä XML-stylesheet-code huuchschüür.",
+       "uploaded-script-svg": "Skriptelement „$1“ uun det huuchschüürd SVG-datei fünjen.",
+       "uploaded-hostile-svg": "Ünseeker CSS uun't style-element faan det huuchschüürd SVG-datei fünjen.",
+       "uploaded-event-handler-on-svg": "Event-handler atributen <code>$1=\"$2\"</code> san uun SVG-datein ei tuläät.",
        "uploadscriptednamespace": "Detdiar SVG-datei wiset üüb en ferkiarden nöömrüm \"$1\".",
        "uploadinvalidxml": "Det XML uun det huuchschüürd datei küd ei ''parset'' wurd.",
        "uploadvirus": "Uun detdiar datei as en wiirus! Details: $1",
        "unusedimages": "Datein, diar ei brükt wurd",
        "wantedcategories": "Kategoriin, diar brükt wurd",
        "wantedpages": "Sidjen, diar brükt wurd",
-       "wantedpages-summary": "List faan sidjen, diar't goorei jaft, mä a miast ferwisangen, oober saner sidjen, huar bluas üüb ferwiset woort. För en list faan sidjen, diar't goorei jaft, oober mä ferwisangen luke bi [[{{#special:BrokenRedirects}}]].",
+       "wantedpages-summary": "List faan sidjen, diar't goorei jaft, mä a miast ferwisangen, oober saner sidjen, huar bluas üüb ferwiset woort. För en list faan sidjen, diar't goorei jaft, oober mä ferwisangen luke bi [[{{#special:BrokenRedirects}}|uunstaken ferwisangen]].",
        "wantedpages-badtitle": "Diar as en artiikelnööm ei tuläät uun: $1",
        "wantedfiles": "Datein, diar brükt wurd",
        "wantedfiletext-cat": "Jodiar datein wurd brükt, oober san ei diar. Datein faan ööder archiiwen wurd apfeerd, san oober <del>trochstregen</del>. An jo sidjen, diar sok datein brük, stun uun  [[:$1]].",
        "watchlistanontext": "Dü skel di uunmelde, am iindracher tu leesen of tu bewerkin, diar dü uun't uug behual wel.",
        "watchnologin": "Ei uunmeldet",
        "addwatch": "Uk uun't uug behual",
-       "addedwatchtext": "Det sidj „[[:$1]]“ wel dü [[Special:Watchlist|uun't uug behual]].\nFeranrangen faan detdiar sidj wurd üüb detdiar list fäästhäälen.",
+       "addedwatchtext": "Det sidj „[[:$1]]“ an det ferbünjen diskuschuunssidj könst dü nü [[Special:Watchlist|uun't uug behual]].",
        "addedwatchtext-short": "Det sidj „$1“ kaam tu din sidjen, diar dü uun't uug behual wel.",
        "removewatch": "Ei muar uun't uug behual",
-       "removedwatchtext": "Det sidj „[[:$1]]“ as faan a sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, wechnimen wurden.",
+       "removedwatchtext": "Det sidj „[[:$1]]“ an det ferbünjen diskuschuunssidj san faan a sidjen, diar dü [[Special:Watchlist|uun't uug behual]] wel, wechnimen wurden.",
        "removedwatchtext-short": "Det sidj „$1“ woort ei muar faan di uun't uug behäälen.",
        "watch": "Uun't uug behual",
        "watchthispage": "Detdiar sidj uun't uug behual",
        "undeletepagetext": "{{PLURAL:$1|Detdiar sidj as stregen wurden, oober koon|Jodiar $1 sidjen san stregen wurden, oober kön}} faan administratooren weder iinsteld wurd, wan jo noch uun't archiif san.",
        "undelete-fieldset-title": "Weder iinstel",
        "undeleteextrahelp": "* Am det sidj mä aal jo werjuunen weder iintustelen, schük nian enkelt werjuun ütj, du en grünj uun an trak do üüb „{{int:undeletebtn}}“.*\n* Am en was werjuun weder iintustelen, schük det werjuun ütj, du en grünj uun an trak do üüb „{{int:undeletebtn}}“.",
-       "undeleterevisions": "{{PLURAL:$1|1 werjuun|$1 werjuunen}} archiwiaret",
+       "undeleterevisions": "{{PLURAL:$1|ian werjuun|$1 werjuunen}} stregen",
        "undeletehistory": "Wan dü detdiar sidj weder iinstelst, wurd uk jo ual werjuunen weder iinsteld. \nWan sant det striken en nei sidj mä di salew nööm iinsteld wurden as, wurd jo ual werjuunen bi det nei sidj mä iinwerket.",
        "undeleterevdel": "Det woort ei weder iinsteld, wan det leetst werjuun ferbürgen as.\nWan det so as, skal det leetst werjuun iarst weder üüb normool steld wurd.",
        "undeletehistorynoadmin": "Detdiar sidj as stregen wurden.\nOner könst dü sä, hoker det maaget hää an huaram.\nDi tekst faan det stregen sidj fu bluas administratooren uunwiset.",
        "spam_reverting": "Leetst werjuun saner ferwisangen tu $1 weder iinsteld.",
        "spam_blanking": "Aal a werjuunen mä en ferwisang tu $1 san apklaaret wurden.",
        "spam_deleting": "Aal a werjuunen mä en ferwisung tu $1 san stregen wurden.",
-       "simpleantispam-label": "Anti-spam preew.\nHeer '''NIKS''' iindreeg!",
+       "simpleantispam-label": "Anti-spam preew.\nHeer <strong>NIKS</strong> iindreeg!",
        "pageinfo-title": "Informatjuun tu „$1“",
        "pageinfo-not-current": "Det informatjuun jaft at ei för ual werjuunen.",
        "pageinfo-header-basic": "Grünjdooten",
        "log-name-pagelang": "Logbuk för spriak-feranrangen",
        "log-description-pagelang": "Det as en logbuk för sidjenspriak-feranrangen",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|hää}} det sidjenspriak för $3 faan $4 tu $5 feranert.",
-       "default-skin-not-found": "Uuha! Uun <code dir=\"ltr\">$wgDefaultSkin</code> as fäästlaanj, dat <code>$1</code> dan standard-skak as. Man hi as ei diar!\n\nDin instalatjuun hää wel jodiar {{PLURAL:$4|skak|skaker}}. Luke uk uun't [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de brüker-hoonbuk], am {{PLURAL:$4|di skak|a skaker}} tu aktiwiarin an standards iinturachten.\n\n$2\n\n; Wan dü MediaWiki jüst instaliaret heest:\n: Dü heest was faan Git of direkt faan a kwelcode instaliaret. Do as det nian woner. Dü könst skaker ütj det [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Skakfertiaknis] instaliare. Diarför skel dü:\n:* Di [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] deelloose, hi komt mä ünlik skaker an ütjwidjangen. Dü könst det  <code>skins/</code>-fertiaknis kopiare an iinsaat.\n:* Enkelt skak-tarballs faan [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] deelloose.\n:* Ian faan a <code>mediawiki/skins/*</code>-fertiaknissen auer Git iin uun det <code dir=\"ltr\">skins/</code>-fertiaknis faan din MediaWiki-Instalatjuun auerskriiw.\n: Det skul din Git-fertiaknis ei uunstaken maage, wan dü en MediaWiki-ütjwerker beest.\n\n; Wan dü jüst MediaWiki aktualisiaret heest:\n: MediaWiki 1.24 an neier werjuunen aktiwiare instaliaret skaker ei muar faan salew (luke uk iin uun det [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery brüker-hoonbuk]). Dü könst jodiar räen uun det datei <code>LocalSettings.php</code> iinsaat, am aal a instaliaret skaker tu aktiwiarin:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Wan dü jüst <code>LocalSettings.php</code> feranert heest:\n: Heest dü a skaker uk aaltumaal rocht skrewen?",
+       "default-skin-not-found": "Uuha! Uun <code dir=\"ltr\">$wgDefaultSkin</code> as fäästlaanj, dat <code>$1</code> dan standard-skak as. Man hi as ei diar!\n\nDin instalatjuun hää wel jodiar {{PLURAL:$4|skak|skaker}}. Luke uk uun't [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de brüker-hoonbuk], am {{PLURAL:$4|di skak|a skaker}} tu aktiwiarin an standards iinturachten.\n\n$2\n\n; Wan dü MediaWiki jüst instaliaret heest:\n: Dü heest was faan Git of direkt faan a kwelcode instaliaret. Do as det nian woner. Dü könst skaker ütj det [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Skakfertiaknis] instaliare. Diarför skel dü:\n:* Di [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] deelloose, hi komt mä ünlik skaker an ütjwidjangen. Dü könst det  <code>skins/</code>-fertiaknis kopiare an iinsaat.\n:* Enkelt skak-tarballs faan [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] deelloose.\n:* Ian faan a <code>mediawiki/skins/*</code>-fertiaknissen auer Git iin uun det <code dir=\"ltr\">skins/</code>-fertiaknis faan din MediaWiki-Instalatjuun auerskriiw.\n: Det skul din Git-fertiaknis ei uunstaken maage, wan dü en MediaWiki-ütjwerker beest.\n\n; Wan dü jüst MediaWiki aktualisiaret heest:\n: MediaWiki 1.24 an neier werjuunen aktiwiare instaliaret skaker ei muar faan salew (luke uk iin uun det [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery brüker-hoonbuk]). Dü könst {{PLURAL:$5|detdiar rä|jodiar räen}} uun det datei <code>LocalSettings.php</code> iinsaat, am {{PLURAL:$5|di|aal a}} instaliaret {{PLURAL:$5|skak|skaker}} tu aktiwiarin:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Wan dü jüst <code>LocalSettings.php</code> feranert heest:\n: Heest dü a skaker uk aaltumaal rocht skrewen?",
        "default-skin-not-found-no-skins": "Uuha! Uun <code>$wgDefaultSkin</code> as fäästlaanj, dat <code>$1</code> dan standard-skak as. Man hi as ei diar!\n\nDü heest goor nian skak instaliaret.\n\n; Wan dü MediaWiki jüst instaliaret of aktualisiaret heest:\n: Dü heest was faan Git of direkt faan a kwelcode instaliaret. Do as det nian woner. MediaWiki 1.24 an neier werjuunen haa nian skak uun't hood-fertiaknis. Dü könst skaker ütj det [https://www.mediawiki.org/wiki/Category:All_skins MediaWiki.org-Skakfertiaknis] instaliare. Diarför skel dü:\n:* Di [https://www.mediawiki.org/wiki/Download/de Tarball-Installer] deelloose, hi komt mä ünlik skaker an ütjwidjangen. Dü könst det  <code>skins/</code>-fertiaknis kopiare an iinsaat.\n:* Enkelt skak-tarballs faan [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org] deelloose.\n:* Ian faan a <code>mediawiki/skins/*</code>-fertiaknissen auer Git iin uun det <code dir=\"ltr\">skins/</code>-fertiaknis faan din MediaWiki-Instalatjuun auerskriiw.\n: Det skul din Git-fertiaknis ei uunstaken maage, wan dü en MediaWiki-ütjwerker beest. Luke uk uun't [https://www.mediawiki.org/wiki/Manual:Skin_configuration/de brüker-hoonbuk], am skaker tu aktiwiarin an standards iinturachten.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (aktiwiaret)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''ufsteld''')",
index adaefd8..e98c382 100644 (file)
        "upload-file-error-text": "Der wie in ynterne fout doe't in tydlike triem op'e server oanmakke waard.\nNim kontakt op mei in [[Special:ListUsers/sysop|behearder]].",
        "upload-misc-error": "Unbekende oanbiedflater",
        "upload-misc-error-text": "Der is by it oanbieden in ûnbekende fout optreden.\nKontrolearje of de URL krekt en beskikber is en besykje it nochris.\nAs it probleem oanhâldt, nim dan kontakt op mei in\n[[Special:ListUsers/sysop|behearder]].",
+       "upload-dialog-button-done": "Klear",
        "http-read-error": "HTTP-lêsflater.",
        "upload-curl-error6": "Koe de URL net berikke",
        "upload-curl-error6-text": "De opjûne URL is net berikber.\nKontrolearje oft de URL krekt is en oft de webside beskikber is.",
index f498545..4bb53e2 100644 (file)
@@ -17,7 +17,8 @@
                        "Urhixidur",
                        "לערי ריינהארט",
                        "පසිඳු කාවින්ද",
-                       "아라"
+                       "아라",
+                       "SeoMac"
                ]
        },
        "tog-underline": "Folínte faoi naisc:",
        "userinvalidcssjstitle": "'''Rabhadh:''' Níl an craiceann \"$1\" ann.\nCuimhnigh go n-úsáideann leathanaigh shaincheaptha .css agus .js teideal i gcás íochtar, m.sh. {{ns:user}}:Foo/vector.css i leapa {{ns:user}}:Foo/Vector.css.",
        "updated": "(Leasaithe)",
        "note": "'''Tabhair faoi deara:'''",
-       "previewnote": "'''Cuimhnigh nach bhfuil ach réamhamharc sa leathanach seo.'''\nNíl do chuid athruithe shábháilte fós!",
+       "previewnote": "'''Cuimhnigh nach bhfuil ach réamhamharc sa leathanach seo.'''\nNíl do chuid athruithe sábháilte fós!",
        "previewconflict": "San réamhamharc seo, feachann tú an téacs dé réir an eagarbhosca\nthuas mar a taispeáinfear é má sábháilfear é.",
        "editing": "Ag athrú $1",
        "editingsection": "Ag athrú $1 (mir)",
        "unusedtemplateswlh": "naisc eile",
        "randompage": "Leathanach fánach",
        "randompage-nopages": "Níl aon leathanaigh san ainmspás \"$1\".",
+       "randomincategory-submit": "Gabh",
        "randomredirect": "Atreorú randamach",
        "statistics": "Staidrimh",
        "statistics-header-users": "Staidreamh úsáideora",
        "nlinks": "{{PLURAL:$1|nasc amháin|$1 naisc}}",
        "nmembers": "{{PLURAL:$1|ball amháin|$1 baill}}",
        "nrevisions": "{{PLURAL:$1|Leagan amháin|$1 leagain}}",
-       "nviews": "{{PLURAL:$1|radharc amháin|$1 radhairc}}",
        "lonelypages": "Leathanaigh aonair",
        "uncategorizedpages": "Leathanaigh gan chatagóir",
        "uncategorizedcategories": "Catagóirí gan chatagórú",
index 72c82c2..fe95271 100644 (file)
        "tooltip-pt-logout": "Log a-mach",
        "tooltip-pt-createaccount": "Ged nach eil e riatanach, tha e nas fhearr ma chruthaicheas tu cunntas agus ma logas tu air.",
        "tooltip-ca-talk": "Deasbad mu dhuilleag na susbainte",
-       "tooltip-ca-edit": "'S urrainn dhut an duilleag seo a dheasachadh. Saoil an cleachd thu an ro-shealladh mus sàbhail thu?",
+       "tooltip-ca-edit": "Deasaich an duilleag seo",
        "tooltip-ca-addsection": "Tòisich air earrann ùr",
        "tooltip-ca-viewsource": "Tha an duilleag seo fo dhìon.\n'S urrainn dhut a tùs fhaicinn",
        "tooltip-ca-history": "Seann mhùthaidhean na duilleige seo",
index 377f1f2..77b77ff 100644 (file)
        "actionthrottled": "Acción limitada",
        "actionthrottledtext": "Como unha medida de loita contra o ''spam'', limítase a realización desta acción a un número determinado de veces nun curto espazo de tempo, e vostede superou este límite.\nInténteo de novo nuns minutos.",
        "protectedpagetext": "Esta páxina foi protexida para evitar a edición e outras accións.",
-       "viewsourcetext": "Pode ver e copiar o código fonte desta páxina:",
-       "viewyourtext": "Pode ver e copiar o código fonte '''das súas edicións''' nesta páxina:",
+       "viewsourcetext": "Pode ver e copiar o código fonte desta páxina.",
+       "viewyourtext": "Pode ver e copiar o código fonte <strong>das súas edicións</strong> nesta páxina.",
        "protectedinterface": "Esta páxina fornece o texto da interface do software e está protexida para evitar o seu abuso.\nPara engadir ou modificar as traducións en todos os wikis utilice [//translatewiki.net/wiki/Main_Page?setlang=gl translatewiki.net], o proxecto de localización de MediaWiki.",
        "editinginterface": "<strong>Aviso:</strong> Está editando unha páxina usada para fornecer o texto da interface do software.\nOs cambios feitos nesta páxina afectarán á aparencia da interface dos outros usuarios do wiki.",
        "translateinterface": "Para engadir ou modificar as traducións en todos os wikis utilice [//translatewiki.net/wiki/Special:MainPage?setlang=gl translatewiki.net], o proxecto de localización de MediaWiki.",
        "search-category": "(categoría $1)",
        "search-file-match": "(coincide co contido do ficheiro)",
        "search-suggest": "Quizais quixo dicir: $1",
+       "search-rewritten": "Móstranse os resultados para \"$1\". Buscar no seu lugar \"$2\".",
        "search-interwiki-caption": "Proxectos irmáns",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(máis)",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|usuario|usuarios}} vixiando]",
-       "rc_categories": "Límite para categorías (separado con \"|\")",
-       "rc_categories_any": "Calquera",
+       "rc_categories": "Limitar ás categorías (separadas por \"|\"):",
+       "rc_categories_any": "Calquera das elixidas",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} despois da modificación",
        "newsectionsummary": "Nova sección: /* $1 */",
        "rc-enhanced-expand": "Mostrar os detalles",
        "upload-too-many-redirects": "O enderezo URL contiña moitas redireccións",
        "upload-http-error": "Produciuse un erro HTTP: $1",
        "upload-copy-upload-invalid-domain": "A copia de cargas non está dispoñible neste dominio.",
+       "upload-dialog-title": "Subir un ficheiro",
+       "upload-dialog-error": "Houbo un erro",
+       "upload-dialog-warning": "Produciuse unha advertencia",
+       "upload-dialog-button-cancel": "Cancelar",
+       "upload-dialog-button-done": "Feito",
+       "upload-dialog-button-save": "Gardar",
+       "upload-dialog-button-upload": "Subir",
+       "upload-dialog-label-select-file": "Seleccionar un ficheiro",
+       "upload-dialog-label-infoform-title": "Detalles",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descrición",
+       "upload-dialog-label-usage-title": "Uso",
+       "upload-dialog-label-usage-filename": "Nome do ficheiro",
        "backend-fail-stream": "Non se puido transmitir o ficheiro \"$1\".",
        "backend-fail-backup": "Non se puido facer unha copia de seguridade do ficheiro \"$1\".",
        "backend-fail-notexists": "O ficheiro \"$1\" non existe.",
        "watchlistanontext": "Acceda ao sistema para ver ou editar os elementos da súa lista de vixilancia.",
        "watchnologin": "Non accedeu ao sistema",
        "addwatch": "Engadir á lista vixilancia",
-       "addedwatchtext": "A páxina \"[[:$1]]\" foi engadida á súa [[Special:Watchlist|lista de vixilancia]].\nOs cambios futuros nesta páxina e na súa páxina de conversa asociada serán listados alí.",
+       "addedwatchtext": "A páxina \"[[:$1]]\" e mais a súa conversa foron engadidas á súa [[Special:Watchlist|lista de vixilancia]].",
        "addedwatchtext-short": "A páxina \"$1\" foi engadida á súa lista de vixilancia.",
        "removewatch": "Eliminar da lista de vixilancia",
-       "removedwatchtext": "A páxina \"[[:$1]]\" foi eliminada [[Special:Watchlist|da súa lista de vixilancia]].",
+       "removedwatchtext": "A páxina \"[[:$1]]\" e mais a súa conversa foron eliminadas da súa [[Special:Watchlist|lista de vixilancia]].",
        "removedwatchtext-short": "A páxina \"$1\" foi eliminada da súa lista de vixilancia.",
        "watch": "Vixiar",
        "watchthispage": "Vixiar esta páxina",
        "changecontentmodel-success-title": "O modelo de contido foi modificado",
        "changecontentmodel-success-text": "O tipo de contido de [[:$1]] foi modificado.",
        "changecontentmodel-cannot-convert": "O contido en [[:$1]] non pode converterse ó tipo de $2.",
-       "changecontentmodel-title-cantexist": "Imposible ter unha páxina en $1.",
        "changecontentmodel-nodirectediting": "O modelo de contido $1 non permite a modificación directa",
        "log-name-contentmodel": "Rexistro de cambios de modelo de contido",
        "log-description-contentmodel": "Eventos relacinados cos modelos de contido dunha páxina",
        "undeletepagetext": "{{PLURAL:$1|A seguinte páxina foi borrada|As seguintes páxinas foron borradas}}, pero aínda {{PLURAL:$1|está|están}} no arquivo e {{PLURAL:$1|pode|poden}} ser {{PLURAL:$1|restaurada|restauradas}}.\nO arquivo será limpado periodicamente.",
        "undelete-fieldset-title": "Restaurar as revisións",
        "undeleteextrahelp": "Para restaurar o historial dunha páxina ao completo, deixe todas as caixas sen marcar e prema en '''''{{int:undeletebtn}}'''''.\nPara realizar unha recuperación parcial, marque só aquelas caixas que correspondan ás revisións que se queiran recuperar e prema en '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revisión arquivada|revisións arquivadas}}",
+       "undeleterevisions": "{{PLURAL:$1|Borrouse $1 revisión|Borráronse $1 revisións}}",
        "undeletehistory": "Se restaura a páxina, todas as revisións van ser restauradas no historial.\nSe se creou unha páxina nova co mesmo nome desde o seu borrado, as revisións restauradas van aparecer no historial anterior.",
        "undeleterevdel": "Non se levará a cabo a reversión do borrado se ocasiona que a última revisión da páxina ou ficheiro se elimine parcialmente.\nNestes casos, debe retirar a selección ou quitar a ocultación das revisións borradas máis recentes.",
        "undeletehistorynoadmin": "Esta páxina foi borrada.\nO motivo do borrado consta no resumo que aparece a continuación, xunto cos detalles dos usuarios que editaron esta páxina antes da súa eliminación.\nO texto destas revisións eliminadas só está á disposición dos administradores.",
        "undeleteviewlink": "ver",
        "undeleteinvert": "Inverter a selección",
        "undeletecomment": "Motivo:",
-       "undeletedrevisions": "$1 {{PLURAL:$1|revisión restaurada|revisións restauradas}}",
-       "undeletedrevisions-files": "$1 {{PLURAL:$1|revisión|revisións}} e $2 {{PLURAL:$2|ficheiro restaurado|ficheiros restaurados}}",
-       "undeletedfiles": "$1 {{PLURAL:$1|ficheiro restaurado|ficheiros restaurados}}",
+       "undeletedrevisions": "{{PLURAL:$1|Restaurouse $1 revisión|Restauráronse $1 revisións}}",
+       "undeletedrevisions-files": "Restauráronse $1 {{PLURAL:$1|revisión|revisións}} e $2 {{PLURAL:$2|ficheiro|ficheiros}}",
+       "undeletedfiles": "{{PLURAL:$1|Restaurouse $1 ficheiro|Restauráronse $1 ficheiros}}",
        "cannotundelete": "Houbo un erro durante a restauración:\n$1",
        "undeletedpage": "'''A páxina \"$1\" foi restaurada'''\n\nComprobe o [[Special:Log/delete|rexistro de borrados]] para ver as entradas recentes no rexistro de páxinas eliminadas e restauradas.",
        "undelete-header": "Consulte [[Special:Log/delete|no rexistro de borrados]] as páxinas borradas recentemente.",
        "spam_reverting": "Revertida á última edición sen ligazóns a \"$1\"",
        "spam_blanking": "Limpáronse todas as revisións con ligazóns a \"$1\"",
        "spam_deleting": "Borráronse todas as revisións con ligazóns a \"$1\"",
-       "simpleantispam-label": "Comprobación antispam.\n'''NON''' encha isto!",
+       "simpleantispam-label": "Comprobación antispam.\n<strong>Non</strong> encha isto!",
        "pageinfo-title": "Información sobre \"$1\"",
        "pageinfo-not-current": "Sentímolo, non é posible achegar esa información sobre as revisións vellas.",
        "pageinfo-header-basic": "Información básica",
        "htmlform-cloner-create": "Engadir máis",
        "htmlform-cloner-delete": "Eliminar",
        "htmlform-cloner-required": "Necesítase, polo menos, un valor.",
-       "htmlform-title-badnamespace": "[[:$1]] non está no espazo de nomes \"{{ns:$2}}\".",
+       "htmlform-title-badnamespace": "\"[[:$1]]\" non está no espazo de nomes \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" non é un título de páxina que se poida crear",
-       "htmlform-title-not-exists": "[[:$1]] non existe.",
+       "htmlform-title-not-exists": "\"[[:$1]]\" non existe.",
+       "htmlform-user-not-exists": "\"<strong>$1</strong>\" non existe.",
+       "htmlform-user-not-valid": "\"<strong>$1</strong>\" non é un nome de usuario válido.",
        "sqlite-has-fts": "$1 con soporte para procuras de texto completo",
        "sqlite-no-fts": "$1 sen soporte para procuras de texto completo",
        "logentry-delete-delete": "$1 {{GENDER:$2|borrou}} a páxina \"$3\"",
        "special-characters-title-endash": "guión",
        "special-characters-title-emdash": "raia",
        "special-characters-title-minus": "signo menos",
+       "mw-widgets-dateinput-no-date": "Non se seleccionou ningunha data",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "a páxina aínda non existe",
        "mw-widgets-titleinput-description-redirect": "redirección cara a $1"
 }
index eb78841..279fab5 100644 (file)
@@ -21,6 +21,7 @@
        "tog-watchdefault": "हांवें संपादीत केल्लीं पानां आनी फायल म्हजे ध्यानसूचीक जोड",
        "tog-previewontop": "संपादन पेटीच्या मुखार प्रीव्यु दाखय",
        "tog-previewonfirst": "पयल्याच संपादनाचेर पुर्वनियाळ दाखय",
+       "tog-enotifwatchlistpages": "म्हज्या लक्षवळेरेंतलें पान वा फायल बदल्ली जाल्यार म्हाका इमेल करात",
        "tog-shownumberswatching": "ध्यान दवरपी वांगड्यांची संख्या दाखय",
        "tog-oldsig": "सद्याची निशाणी",
        "tog-uselivepreview": "लायव पुर्वनियाळाचो उपेग कर",
        "categorypage": "श्रेणींचें पान पळयात",
        "viewtalkpage": "चर्चा पळय",
        "otherlanguages": "हेर भासांनी",
-       "redirectedfrom": "($1 à¤¨à¤µà¥\8dया à¤¨à¤¾à¤®à¥\8dयार à¤§à¤¾à¤¡à¤²à¤¾à¤\82 )",
+       "redirectedfrom": "($1 à¤¸à¥\82न à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शित)",
        "redirectpagesub": "पान परतून निर्देशीत करचें",
-       "redirectto": "हांगां पुनर्निर्देशित करा:",
+       "redirectto": "हांगां पुनर्निर्देशित:",
        "lastmodifiedat": " ह्या पानांत निमाणो बदल,$1 वेर $2 वेळार केल्लो",
        "protectedpage": "राखून दवरिल्लें पान",
        "jumpto": "हुपून वचात:",
        "confirmable-no": "ना",
        "thisisdeleted": "पळय आनी परतून हाड 1?",
        "viewdeleted": "दाखयात $1?",
-       "feedlinks": "फà¥\80ड",
+       "feedlinks": "पà¥\81रवय :",
        "feed-invalid": "चुकीचें सब्सक्रिप्शन फीड प्रकार",
        "site-rss-feed": "$1 चीं आर.एस.एस फीड",
        "site-atom-feed": "$1 एटम फिड",
        "nstab-image": "फायल",
        "nstab-mediawiki": "संदेश",
        "nstab-template": "प्रारूप",
-       "nstab-help": "सहायà¤\95 पान",
+       "nstab-help": "à¤\86दाराà¤\9aà¥\87à¤\82 पान",
        "nstab-category": "वर्ग",
        "nosuchaction": "असले तरेचे कार्य ना",
        "nosuchspecialpage": "असले कांयच खाशेलें पान ना",
        "changeemail-none": "(कांय ना)",
        "changeemail-password": "तुजें {{SITENAME}} गुपीत उतर:",
        "changeemail-submit": "ई-मेल बदलात",
-       "resettokens": "à¤\9fà¥\8bà¤\95न à¤°à¥\80सà¥\87à¤\9f à¤\95रात",
-       "resettokens-no-tokens": "रà¥\80सà¥\87à¤\9f à¤\95रपा à¤\96ातà¥\80र à¤\95सलà¥\87à¤\82à¤\9a à¤\9fà¥\8bà¤\95न ना",
-       "resettokens-tokens": "à¤\9fà¥\8bà¤\95न",
+       "resettokens": "à¤\9aावà¥\8dयà¥\8b à¤ªà¥\81नरà¥\8dसà¥\8dथापित à¤\95र",
+       "resettokens-no-tokens": "पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रपा à¤\96ातà¥\80र à¤\95सलà¥\87à¤\82à¤\9a à¤\9aावà¥\80 ना",
+       "resettokens-tokens": "à¤\9aावà¥\8dयà¥\8b :",
        "resettokens-token-label": "$1 (सद्याचें मूल्य: $2)",
        "bold_sample": "डाट बरप",
        "bold_tip": "डाट मजकूर",
        "last": "अादलें",
        "page_first": "पयलें",
        "page_last": "निमणें",
-       "histlegend": "फरà¤\95ाà¤\9aà¥\80 à¤¨à¤¿à¤µà¤¡à¤\83 à¤ªà¥\81नरà¥\8dनियाळाà¤\82à¤\9aà¥\80 à¤¤à¥\81ळा à¤\95रपा à¤\96ातà¥\80र à¤°à¥\87डियà¥\8b à¤\9aà¥\8cà¤\95à¤\9fà¥\80à¤\82 à¤\9aà¥\87र à¤\95à¥\81रà¥\81 à¤\95रात à¤\86नà¥\80 à¤\8fà¤\82à¤\9fर à¤¨à¤¾ à¤¤à¤° à¤¤à¤³à¤¾à¤\95डà¥\87 à¤\86शिलà¥\8dलà¥\8b à¤¬à¤\9fन à¤¦à¤¾à¤®à¤¾à¤¤",
+       "histlegend": "फरà¤\95ाà¤\9aà¥\80 à¤¨à¤¿à¤µà¤¡à¤£à¥\80 : à¤ªà¥\81नरà¥\8dनियाळाà¤\82à¤\9aà¥\80 à¤¤à¥\81ळा à¤\95रपा à¤\96ातà¥\80र à¤°à¥\87डियà¥\8b à¤\9aà¥\8cà¤\95à¤\9fà¥\80à¤\82 à¤\9aà¥\87र à¤\95à¥\81रà¥\81 à¤\95रात à¤\86नà¥\80 ''à¤\8fà¤\82à¤\9fर'' à¤¨à¤¾ à¤¤à¤° à¤¤à¤³à¤¾à¤\95डà¥\87 à¤\86शिलà¥\8dलà¥\8b à¤¬à¥\81ताà¤\82व à¤¦à¤¾à¤®à¤¾à¤¤à¥¤<br />\nविवरण : <strong>({{int:cur}})</strong> = à¤¹à¤¾à¤²à¥\80à¤\82à¤\9aà¥\80 à¤ªà¥\81नरà¥\8dनियाळा à¤¬à¤°à¥\8bबर à¤«à¤°à¤\95, <strong>({{int:last}})</strong> = à¤\86दलà¥\80 à¤ªà¥\81नरà¥\8dनियाळा à¤¬à¤°à¥\8bबर à¤«à¤°à¤\95, <strong>{{int:minoreditletter}}</strong> = à¤¦à¤¾à¤\95à¥\8dà¤\9fà¥\87à¤\82 à¤¬à¤¦à¤²à¥¤",
        "history-fieldset-title": "चाळपाचो इतिहास",
        "history-show-deleted": "फकत काडून उडयिल्लें",
        "histfirst": "पोरणो",
        "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-redirect": "($1 नव्यान नामो दियात)",
+       "search-redirect": "(पुनर्निर्देशन $1)",
        "search-section": "(विभाग $1)",
        "search-suggest": "तुमकां $1 अशें म्हणपाचें आसलें?",
+       "search-rewritten": "$1 हाचो निकाल दाखयता.नाजाल्यार $2 हें सोदात.",
        "search-interwiki-more": "(आनी)",
        "search-relatedarticle": "संबंदीत",
        "searchrelated": "संबंदीत",
        "minoreditletter": "द",
        "newpageletter": "न",
        "boteditletter": "र",
+       "rc_categories_any": "वेंचिल्ल्या मदलें खंयचेय",
        "rc-change-size-new": "$1 {{बहुवचन:$1|byte|bytes}}बदल केल्या उपरांत",
        "rc-enhanced-expand": "म्हायती दाखय",
        "rc-enhanced-hide": "म्हायती लिपय",
        "watchlist": "लक्ष वळेरी",
        "mywatchlist": "लक्ष वळेरी",
        "watchlistfor2": "$1 $2 खातीर",
+       "addedwatchtext": "\"[[:$1]]\" आनी हाचे भासाभास पान तुमचें [[Special:Watchlist|सादुरवळेरेक]] जोडलां.",
        "watch": "नदर दवरात",
        "unwatch": "पळोवंक नासलें",
        "watchlist-details": "लक्ष {{PLURAL:$1|$1वळेरींतलें|$1 वळेंरींतली}} {{PLURAL:$1|$1पान|$1 पानां}} उलोवपाची पानां सोडून",
        "rollbacklink": "फाटीं घेयात",
        "rollbacklinkcount": "$1 {{PLURAL:$1|संपादन}} फाटीं घेयात",
        "changecontentmodel-title-label": "पानाचो माथाळो",
-       "changecontentmodel-reason-label": "Reason:कारण",
+       "changecontentmodel-reason-label": "कारण:",
        "protectlogpage": "सुरक्षितेचें सोत्र",
        "protectedarticle": "राखिल्ले\"[[$1]]\"",
        "restriction-edit": "संस्करण",
        "whatlinkshere-page": "पान:",
        "linkshere": "मुखावेली पानां '''[[:$1]]''': हाका जोडणी करतात",
        "nolinkshere": "$1हाका खंयच्याच पानाची जोडणी ना",
-       "isredirect": "पान à¤¨à¤µà¥\8dया à¤¨à¤¾à¤®à¥\8dयार à¤§à¤¾à¤¡à¤¾à¤¤",
+       "isredirect": "पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤ªà¤¾à¤¨",
        "istemplate": "$1 दूसरात-समावेस",
        "isimage": "फायलीचो दुवो",
        "whatlinkshere-prev": "{{PLURAL:$1|आदलें|आदलीं $1}}",
        "monthsall": "सगळे",
        "watchlisttools-view": "प्रस्तूत बदल पळयात.",
        "watchlisttools-edit": "लक्ष वळेंरी पळय आनी संपादीत करात",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|à¤\89लà¥\8bयात]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|उलयात]])",
        "specialpages": "खाशेलीं पानां",
        "tag-filter": "[[Special:Tags|कुर्वेचीट]] गाळणो:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|कुरवेचीट|कुरवेचीटी}}]]: $2)",
        "logentry-move-move": "$1 न $3 पानाचेर $4 {{GENDER:$2|हालयला}}",
        "logentry-newusers-create": "उपयोगकत्याचें $1 {{GENDER:$2|तयार केलें}}",
        "logentry-upload-upload": "$1 {{GENDER:$2|अपलोड केला}} $3",
-       "searchsuggest-search": "सोद"
+       "searchsuggest-search": "सोद",
+       "mw-widgets-dateinput-no-date": "तारीख निवडूंक ना",
+       "mw-widgets-dateinput-placeholder-day": "वर्स-म्हयनो-दीस",
+       "mw-widgets-dateinput-placeholder-month": "वर्स-म्हयनो"
 }
index df19fa8..3857a53 100644 (file)
@@ -15,6 +15,7 @@
        "tog-watchdefault": "Hanv bodolta tim panam moji sadurvollerint zod",
        "tog-previewontop": "Sonskoron petie mukhar zolok dakhoi",
        "tog-previewonfirst": "Poileach bodolacher zolok dakhoi",
+       "tog-enotifwatchlistpages": "Mhojea lokxvollerintlem pan vo fail bodol'li zalear mhaka email dhadd",
        "tog-shownumberswatching": "Nodor dovorpi vangdianche sonkhya dakhoi",
        "tog-oldsig": "Sodheachi soy:",
        "tog-uselivepreview": "Boroitastana zolok dahkoi",
        "categorypage": "Vorgachem pan poloi",
        "viewtalkpage": "Bhasabhas polloi",
        "otherlanguages": "Her bhasanim",
-       "redirectedfrom": "($1 savn porot dixent)",
+       "redirectedfrom": "($1 savn punornirdexit)",
        "redirectpagesub": "Punornirdexan pan",
-       "redirectto": "Hanga ponornirdeshit kor:",
+       "redirectto": "Hanga ponornirdeshit:",
        "lastmodifiedat": "Hem pan xevtim $1 disa, $2 vazta bodolelem.",
        "protectedpage": "Rakhun dovorl'lem pan",
        "jumpto": "Hupun voch",
        "toc": "Suchi potr",
        "showtoc": "dakhoi",
        "hidetoc": "lipoi",
+       "collapsible-collapse": "Lhan kor",
+       "collapsible-expand": "Vistarit kor",
+       "confirmable-yes": "Hoi",
+       "confirmable-no": "Na",
+       "thisisdeleted": "$1 polloi vo porot hadd?",
+       "viewdeleted": "$1 polloi?",
+       "feedlinks": "Purvoi:",
+       "feed-invalid": "Chukichem suscribcao purvoichem prokar",
+       "site-rss-feed": "$1 RSS purvoi",
        "site-atom-feed": "$1 Atom purvoi",
+       "page-rss-feed": "\"$1\" RSS purvoi",
        "page-atom-feed": "\"$1\" Atom purvonn",
        "red-link-title": "$1 (hea nanvachem pan na)",
+       "sort-descending": "Devtea kromacher kromboddh kor",
+       "sort-ascending": "Chodtea kromacher kromboddh kor",
        "nstab-main": "Pan",
        "nstab-user": "Vapuddpeachem pan",
+       "nstab-media": "Madheomachem pan",
        "nstab-special": "Khaxelem pan",
        "nstab-project": "Prokolpache pan",
        "nstab-image": "Fail",
        "nstab-mediawiki": "Sondex",
        "nstab-template": "Saacho",
+       "nstab-help": "Adarachem pan",
        "nstab-category": "Vorg",
+       "nosuchaction": "Oslem torechem karya nam",
+       "nosuchspecialpage": "Oslem kaich khashellem pan na",
        "error": "Chuk",
+       "databaseerror": "Totv-kox chuk",
+       "databaseerror-textcl": "Totv-kox (database) sodtana chuk ghodli",
+       "databaseerror-query": "Anurodh: $1",
+       "databaseerror-error": "Chuk: $1",
        "missing-article": "Totv-kox (Database) hantun mellunk zai aslem tem mozkur \"$1\" $2 mellunk-nam.\n\nHorxim, oxem ek pornem frk vo eka panachem itihasachem zodd vogllailem, tedna zata.\n\nOxem nhoi zalear, tuka softwer-an chuk sampodlam zait.\nUpkar korun eka [[Special:ListUsers/sysop|karbhari]]chea nodrek hadd, Internet Zago Sodpi (URL) hachi nond gheun.",
        "missingarticle-rev": "(uzollnni#: $1)",
        "missingarticle-diff": "(Frk: $1, $2)",
        "yourname": "Vapuddpeachem nanv:",
        "userlogin-yourname": "Vangdiachem nanv",
        "userlogin-yourname-ph": "Tujem 'vangdeachem nanv' boroi",
+       "createacct-another-username-ph": "Vapurpeachem nanv boroi",
        "yourpassword": "Gupitutor:",
        "userlogin-yourpassword": "Gupitutor",
        "userlogin-yourpassword-ph": "Tujem gupitutor boroi",
        "createacct-yourpasswordagain-ph": "Gupitutor porot boroi",
        "remembermypassword": "Hea internet browseran mhojem sotrachem ugdas dovor (chodan chod $1 {{PLURAL:$1|disak|disank}})",
        "userlogin-remembermypassword": "Mhojem sotr chalu dovor",
+       "userlogin-signwithsecure": "Surokxit onubondh vapor",
+       "yourdomainname": "Tuzo domain:",
+       "password-change-forbidden": "Tujean hea wikicher gupitutor bodlunk zaina.",
        "login": "Sotroromb kor",
        "nav-login-createaccount": "Sotrrombh kor / khatem roch",
        "userlogin": "Sotrrombh kor / khatem roch",
+       "userloginnocreate": "Sotrorombh",
        "logout": "Bhair podd",
        "userlogout": "Sotracho xevott",
+       "notloggedin": "Sotrorombh korunk nai",
        "userlogin-noaccount": "Tuje kode khatem na?",
        "userlogin-joinproject": "{{SITENAME}}-hacho vangdi za",
        "nologin": "Tuje kodde khatem na? $1.",
        "userlogin-resetlink": "Sotrorombh korpacheo bariksai visorlai?",
        "userlogin-resetpassword-link": "Gupitutor visorlo?",
        "userlogin-helplink2": "Sotrorombh korunk adar",
+       "userlogin-createanother": "Dusrem khatem roch",
+       "createacct-emailrequired": "Email potto",
        "createacct-emailoptional": "Email potto (sokti na)",
        "createacct-email-ph": "Tuzo email potto boroi",
+       "createacct-another-email-ph": "Email potto boroi",
+       "createacct-realname": "Khorem nanv (Soktichem nhoi)",
+       "createaccountreason": "Karonn:",
+       "createacct-reason": "Karonn",
+       "createacct-reason-ph": "Tum dusrem khatem kiteak rochtai",
        "createacct-captcha": "Suraksha topasni",
        "createacct-imgcaptcha-ph": "Voir dixta to mozkur boroi",
        "createacct-submit": "Tujem khatem roch",
+       "createacct-another-submit": "Dusrem khatem roch",
        "createacct-benefit-heading": "{{SITENAME}} tujea bhaxen lokani kel'la",
        "createacct-benefit-body1": "{{PLURAL:$1|bodol|bodlopam}}",
        "createacct-benefit-body2": "{{PLURAL:$1|pan|panam}}",
        "createacct-benefit-body3": "halincheo {{PLURAL:$1|yogdan diupi}}",
+       "badretype": "Tunven ghatlelim gupitutram zullnant.",
+       "userexists": "Boroillem vapurpeachem nanv poilinch vaprant asa.\nUpkar korun dusrem nanv vench.",
+       "loginerror": "Sotrorombhachi truti",
+       "createacct-error": "Khatem rochtanam truti",
+       "createaccounterror": "Khatem rochunk zaunk na: $1",
+       "loginsuccesstitle": "Sotrorombh zalem",
+       "nosuchusershort": "\"$1\" hea nanvan konn vapurpi na.\nNanv boroitana chuk zali gai?",
+       "nouserspecified": "Vapurpeachem nanv diunk-uch zai.",
+       "login-userblocked": "Hea vapurpeak addaila. Sotrorombh korunk zaina.",
+       "wrongpassword": "Chukichem gupitutor ghatlam.\nUpkar korun portun proyotn kor.",
+       "wrongpasswordempty": "Gupitutor ghalunk na.\nUpkar korun portun proyotn kor.",
+       "passwordtoolong": "Gupitutor {{PLURAL:$1|1 vornn|$1 vornnam}} proros vhodlem asunk zaina.",
+       "password-name-match": "Tujem gupitutor vapurpeachea nanva poros vegllem asunk zai.",
        "mailmypassword": "Novem gupitutor",
+       "passwordremindertitle": "{{SITENAME}} haka novo tatpurte gupitutor",
+       "noemail": "\"$1\" vapurpeak email potto nond korunk na.",
+       "noemailcreate": "Uchit email potto tunven diunk zai",
+       "mailerror": "Email dhadtana truti: $1",
+       "emailconfirmlink": "Tujea email potteachi khatri kor",
+       "cannotchangeemail": "Hea wikicher khateanchi email potte bodlunk zaina.",
+       "emaildisabled": "Hi site mail dhadpak xokona.",
+       "accountcreated": "Khatem rochlem.",
+       "createaccount-title": "{{SITENAME}} -ak khatem rochlem",
+       "login-abort-generic": "Tujem sotrorombh opexi tharlam - Nixfolit",
+       "login-migrated-generic": "Tujem khatem stholontrit zalam ani vapurpeachem nanv hea wikicher anink upostit na.",
        "loginlanguagelabel": "Bhas: $1",
        "pt-login": "Sotrorombh kor",
        "pt-login-button": "Sotrorombh kor",
        "pt-createaccount": "Khatem roch",
        "pt-userlogout": "Sotr xevott",
+       "changepassword": "Gupitutor bodol",
+       "resetpass_header": "Khateachem gupitutor bodol",
+       "oldpassword": "Pornem gupitutor:",
+       "newpassword": "Novem gupitutor:",
+       "retypenew": "Novem gupitutor portun boroi:",
+       "resetpass_submit": "Gupitutor tharai ani sotrorombh kor",
+       "changepassword-success": "Tujem gupitutor bodlop yoshosvi tharlam.",
+       "resetpass_forbidden": "Gupitutram bodlunk zaina",
+       "resetpass-submit-loggedin": "Gupitutoor bodol",
+       "resetpass-submit-cancel": "Roddh kor",
+       "resetpass-temp-password": "Tatpurtem gupitutor:",
+       "resetpass-expired": "Tujem gupitutor pidd'ddear zalam. Upkar korun sotrorombh korunk novem gupitutor tharai.",
        "passwordreset": "Novem gupitutor",
+       "passwordreset-text-one": "Tatpurtem gupitutor emaila vorvim mellpa khatir hem form purai kor.",
+       "passwordreset-username": "Vapurpeache nanv:",
+       "passwordreset-domain": "Domain:",
+       "passwordreset-email": "Email potto:",
+       "passwordreset-emailelement": "Vapurpeachem nanv: $1\nTatpurtem gupitutor: $2",
+       "passwordreset-emailsent": "Gupitutor portun tharaipacho email dhadla.",
+       "changeemail": "Email potto bodol",
+       "changeemail-oldemail": "Sodhyacho email potto:",
+       "changeemail-newemail": "Novo email potto:",
+       "changeemail-none": "(kai na)",
+       "changeemail-password": "Tujem {{SITENAME}} hachem gupitutor:",
+       "changeemail-submit": "Email bodol",
+       "resettokens": "Chavio punorsthapit kor",
+       "resettokens-no-tokens": "Punorsthapit korpa khatir koslench chavi na.",
+       "resettokens-tokens": "Chavio:",
+       "resettokens-token-label": "$1 (sodhyache valor: $2)",
        "bold_sample": "Datt mozkur",
        "bold_tip": "Datt mozkur",
        "italic_sample": "Palso mozkur",
        "showpreview": "Zholok dakhoi",
        "showdiff": "Bodolpam dakhoi",
        "anoneditwarning": "<strong>Chotrai:</strong> Tuven sotrorombh korunk nai. Tu bodlopam korit zalear tuzo internet potto soglleank polleunk zatelem. Tu <strong>[$1 sotrorombh korit]</strong> vo <strong>[$2 kont rochit]</strong> zalear, tujeo bodlopam tuzo vagddiachem nanvak zoddteleo ani anik-ui faide asat.",
+       "missingcommenttext": "Upkar korun tumcheo xiro sokoil boroi.",
+       "blockedtitle": "Vapurpeak addaila",
+       "blockednoreason": "Kainch karonn diunk na",
+       "loginreqtitle": "Sotrorombh gorjechem",
        "loginreqlink": "sotrorombh kor",
+       "accmailtitle": "Gupitutor dhaddlea",
        "newarticle": "(Novem)",
        "newarticletext": "Tuven ek zoddneche patlav kelai, zachem pan azun rochunk na.\nPan rochunk, khallchea chovkottan boroi (anik mahitik [$1 adar pan] polloi).\nTu hangasor chukin pavlai zalear tujea internet browser-achi '''Fatim'' vo '''Back''' butao dab.",
        "noarticletext": "Sodheak hem pan rinte asa.\nTujean dusrea panani [[Special:Search/{{PAGENAME}}|hea panache nanv sodunk zata]], <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sombondhi sotrani sodunk zata], vo [{{fullurl:{{FULLPAGENAME}}|action=edit}} hem pan sudharunk zata]</span>.",
        "noarticletext-nopermission": "Sodheak hem pan rinte asa.\nTujean dusrea panani [[Special:Search/{{PAGENAME}}|hea panache nanv sodunk zata]], vo <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sombondhi sotrani sodunk zata], pun tuka hem pan rochunk porvangi na.",
+       "userpage-userdoesnotexist-view": "\"$1\" hea vapurpeachea khateachi nondnni korunk na.",
        "previewnote": "'''Hi fokot ek zholok mhonn ugddas dhor.'''\nTujim bodolpam azun sambhallun dovrunk nant!",
        "editing": "$1 bodolta",
        "creating": "$1 rochta",
        "editingsection": "(Khond) $1 bodol",
+       "yourtext": "Tuzo mozkur",
        "templatesused": "Hea panant uzar {{PLURAL:$1|kel'lo sancho|kel'le sanche}}:",
        "template-protected": "(rakhlelem)",
        "template-semiprotected": "(ordhem rakhun dovorlelem)",
        "permissionserrorstext-withaction": "$2, hem korpak tuka porvangi na, {{PLURAL:$1|hea karnnak lagon|hea karnnank lagun}}:",
        "recreate-moveddeleted-warn": "'''Xittkavnni: Tum ek pan porot rochtai jem fattim vogllailelem .'''\n\nPanacho sudar korop sarkem zalear dhean di.\nPan vogllavpachem ani sotr halovpachem, sovloti khatir hangasor dilelem asa:",
        "moveddeleted-notice": "Hem pan vogllailem asa.\nPanachea vogllaonechi ani hallonechi sotr mahiti khatir sokoil sondorba khatir dilea.",
+       "content-model-wikitext": "wikimozkur",
+       "content-model-text": "Sado mozkur",
        "post-expand-template-inclusion-warning": "'''Chotrai:''' Sacho zoddpacho akar chod vhodlem asa.\nThodde sache zoddchenant",
        "post-expand-template-inclusion-category": "Zea panani sache zoddpachem akarachem merakin chod zala",
        "post-expand-template-argument-warning": "'''Chotrai:''' Hea panan ek tori oslo sacheacho parametro asa zacho patlloylea uprant akar chod vhoddlo zata.\nHeo parametrank durlokx keleat.",
        "nextrevision": "Novi uzolnni →",
        "currentrevisionlink": "Sogleanvon novi uzollnni",
        "cur": "chal",
+       "next": "Fuddlem",
        "last": "adl",
        "page_first": "poilem",
        "page_last": "akhirchem",
-       "histlegend": "Frk nivoddni: Jeo uzollneo tuka comparar korunk zai, tenche fudle ''radio'' butao petoi\nVivron: '''({{int:cur}})''' = halinchi uzollnie borobor forok, '''({{int:last}})''' = adli uzollnie borobor forok, '''{{int:minoreditletter}}''' = dhaktem sudharop.",
+       "histlegend": "Frk nivoddni: Jeo uzollneo tuka comparar korunk zai, tenche fudle ''radio'' butao petoi ani ''Enter'' nazalear khalcho butao dab.<br />\nVivron: <strong>({{int:cur}})</strong> = halinchi uzollnie borobor forok, <strong>({{int:last}})</strong> = adli uzollnie borobor forok, <strong>{{int:minoreditletter}}</strong> = dhaktem bodol.",
        "history-fieldset-title": "Itihas chall",
        "history-show-deleted": "Fokot vogllailelem",
        "histfirst": "sogleavon adhlem",
        "histlast": "sogleavon novem",
        "history-feed-item-nocomment": "$1 hannem $4, $3 hea vellar",
        "rev-delundel": "dakhoi/lipoi",
+       "rev-showdeleted": "dakhoi",
+       "revdelete-show-file-submit": "Hoi",
+       "revdelete-radio-set": "Lipoilelem",
+       "revdelete-radio-unset": "Polleunk zata",
+       "revdelete-log": "Karonn:",
        "revdel-restore": "Disnnem bodol",
+       "pagehist": "Panacho itihas",
+       "mergehistory-reason": "Karonn:",
        "revertmerge": "Doxim kor",
        "history-title": "\"$1\" hachea uzollnnecho itihas",
        "difference-title": "\"$1\"-chea avruttint ontor",
        "searchresults-title": "\"$1\" -khatir sodacho nikal",
        "prevn": "adlem {{PLURAL:$1|$1}}",
        "nextn": "fuddlem {{PLURAL:$1|$1}}",
+       "next-page": "Fuddlem pan",
        "prevn-title": "{{PLURAL:$1|Fattlem $1 porinnam|Fattlem $1 porinam}}",
        "nextn-title": "{{PLURAL:$1|Fuddlem $1 porinnam|Fudnlim $1 porinnam}}",
        "shown-title": "Dor eka panar {{PLURAL:$1|porinam}} dakhoi",
        "searchprofile-advanced-tooltip": "Khaxel'lea nanvthollanni sod",
        "search-result-size": "$1 {{PLURAL:$2|1 utor|$2 utram}}",
        "search-result-category-size": "{{PLURAL:$1|1 vangddi|$1 vangddi}} ({{PLURAL:$2|1 upvorg|$2 upvorg}}, {{PLURAL:$3|1 fichier|$3 fichieri}})",
-       "search-redirect": "($1 porot dixen dhaddop)",
+       "search-redirect": "(punornirdexon $1)",
        "search-section": "(vibhag $1)",
        "search-suggest": "Tu mhonnunk sodi: $1 ?",
+       "search-rewritten": "$1 hachim porinamam dakhoilean. Hea vantteache $2 ak sod.",
+       "search-interwiki-more": "(anik)",
+       "search-relatedarticle": "Sombondhit",
        "searchrelated": "sombondit",
        "searchall": "soglle",
        "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> modlean <strong>$1</strong> porinam|<strong>$3</strong> modlean porinam <strong>$1 - $2</strong>}}",
        "search-nonefound": "Tujea sodak mell khata toslem kai porinam nan.",
+       "powersearch-toggleall": "Soglle",
        "preferences": "Posondeo",
        "mypreferences": "Posonti",
+       "prefs-edits": "Bodolanche sonkhya",
+       "prefs-user-pages": "Vapurpeanchim panam",
+       "prefs-rc": "Halinche bodol",
+       "prefs-watchlist": "Sadurvolleri",
        "youremail": "Tuzo email potto",
        "yourrealname": "Khorem nanv:",
        "prefs-help-email": "Email potto sokticho na, pun tum gupitutor visroxi zalear gupitutor punorsthapon korunk email pottechi goroz podta.",
        "rcshowhideanons-show": "Dakhoi",
        "rcshowhideanons-hide": "Lipoi",
        "rcshowhidepatr": "$1 topaslele sudharop",
+       "rcshowhidepatr-show": "Dakhoi",
+       "rcshowhidepatr-hide": "Lipoi",
        "rcshowhidemine": "Mhojeo bodlopam $1",
        "rcshowhidemine-show": "Dakhoi",
        "rcshowhidemine-hide": "Lipoi",
        "minoreditletter": "d",
        "newpageletter": "N",
        "boteditletter": "r",
+       "rc_categories_any": "Vinchlele modlem khuimchem-i",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|byti}} bodol kel'lea uprant",
        "rc-enhanced-expand": "Bariksann dakhoi",
        "rc-enhanced-hide": "Bariksann lipoi",
        "recentchangeslinked-page": "Panache nanv:",
        "recentchangeslinked-to": "Dil'em panache bodlek haka zodlelem panank kel'lim bodlopam dakhoi",
        "upload": "Fail upload kor",
+       "uploadbtn": "Fail upload kor",
        "uploadlogpage": "Uploadachem sotr",
        "filedesc": "Sar",
+       "fileuploadsummary": "Aapros",
        "watchthisupload": "Hea faylar dixtt dovor",
        "license": "Porvangi",
        "license-header": "Porvangi",
+       "listfiles-delete": "Kadun udoi",
        "imgfile": "fail",
+       "listfiles_date": "Tarikh",
+       "listfiles_name": "Nanv",
+       "listfiles_user": "Upeogkorto",
+       "listfiles_description": "Vornon",
        "file-anchor-link": "Fail",
        "filehist": "Failicho itihas",
        "filehist-help": "Tea vellar aslelea rupan pollonvk tarikh/vellar click kor",
+       "filehist-deleteone": "Kadun udoi",
        "filehist-revert": "Nimanea avruttik porot vor",
        "filehist-current": "chalont",
        "filehist-datetime": "Tarikh/Vell",
        "filedelete-otherreason": "Dusrem/aniki karon:",
        "randompage": "Khoincheim adlem modlem pan",
        "statistics": "Ankddevari",
+       "statistics-pages": "Panam",
+       "statistics-files": "Upload kel'le faili",
+       "brokenredirects-edit": "bodol",
+       "brokenredirects-delete": "Kadun udoi",
        "nbytes": "$1 {{PLURAL:$1|byte|bytesi}}",
        "nmembers": "$1 {{PLURAL:$1|vangddi}}",
        "prefixindex": "Panam jenche nanvache survatek asa...",
        "watchlist": "Sadurachi volleri",
        "mywatchlist": "Sadurachi volleri",
        "watchlistfor2": "$1 hache khatir $2",
+       "addedwatchtext": "\"[[:$1]]\" ani hachem chorchechem pan tujea [[Special:Watchlist|sadurvollerek]] zoddlam.",
        "watch": "Nodor dovor",
        "watchthispage": "Hea panar dixtt dovor",
        "unwatch": "Nodor kadd",
        "deleteotherreason": "Dusrem/aniki karon:",
        "rollbacklink": "kovoll",
        "rollbacklinkcount": "$1 {{PLURAL:$1|bodol|bodlopam}} kovoll",
+       "changecontentmodel-title-label": "Panacho mathallo",
+       "changecontentmodel-reason-label": "Karonn:",
        "protectlogpage": "Surokxitechem sotr",
        "protectedarticle": "rakhlelem \"[[$1]]\"",
        "protect-otherreason": "Dusrem/aniki karon:",
        "whatlinkshere-page": "Pan:",
        "linkshere": "Sokoilim panam <strong>[[:$1]]</strong> ak zoddtat:",
        "nolinkshere": "Khoincheim pan '''[[:$1]]''' ak zoddna.",
-       "isredirect": "Porot dixen pan dhadd",
+       "isredirect": "punornirdexon pan",
        "istemplate": "Durasth-somaves",
        "isimage": "failichem zoddop",
        "whatlinkshere-prev": "{{PLURAL:$1|adlem|adlem $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|fuddlem|fuddlim $1}}",
        "whatlinkshere-links": "← zoddnio",
-       "whatlinkshere-hideredirs": "$1 porot dixen",
+       "whatlinkshere-hideredirs": "$1 punornirdexon",
        "whatlinkshere-hidetrans": "$1 durasth-somaves",
        "whatlinkshere-hidelinks": "$1 zoddnio",
        "whatlinkshere-hideimages": "Failinchim zoddpam $1",
        "tooltip-rollback": "\"Kovllop\" hea panachea xevttachea borovpa kodde kea kollant portota.",
        "tooltip-undo": "\"Rodd' kor\" sudharop portita ani sudharopak Zholok ritin ukodta. Tem saran karon zoddunk dita.",
        "tooltip-summary": "Mottvo sar ghal",
-       "simpleantispam-label": "Spam-virudh topasni.\nHem bhori <strong>NAKAI</strong>",
+       "simpleantispam-label": "Spam-virudh topasni.\nHem bhori <strong>nakai</strong>!",
        "pageinfo-toolboxlink": "Panachi mahiti",
        "previousdiff": "←  Adlo bodol",
        "nextdiff": "Fuddlem bodol →",
        "external_image_whitelist": " #Hi voll asa toxich dovor<pre>\n#Khala sodpache sache (''regular expressions'') ghal (fokot // modem voita poi tem bhag)\n#Hanche borobor bhaile zodlele murt comparar kel'le zatele\n#Mell khatat tim murt koxeo distele, na zalear fokot mortek ek zodd distele\n#Jeo voll #-an suru zatele tem vivek mhunn manlele zatele\n#Hanga vhodle and dhakte okxora modem forok podona\n\n#Soglle sodpache sache hea volla voir ghal. Hi voll asa toxich dovor</pre>",
        "tag-filter": "[[Special:Tags|Kurvechit]] challni:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Kurvechit|Kurvechiti}}]]: $2)",
+       "htmlform-title-not-exists": "[[:$1]] ostitvant na.",
        "logentry-delete-delete": "$1-an {{GENDER:$2|kadun udoile}} pan $3",
        "logentry-move-move": "$1{{GENDER:$2|-an}} $3 panak $4 haloilea",
        "logentry-newusers-create": "Vapurpeacho kont $1 {{GENDER:$2|rochlam}}",
        "logentry-upload-upload": "$1-an $3 {{GENDER:$2|upload kela}}",
-       "searchsuggest-search": "Sod"
+       "searchsuggest-search": "Sod",
+       "mw-widgets-dateinput-no-date": "Tarikh nivddunk na",
+       "mw-widgets-dateinput-placeholder-day": "VVVV-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "VVVV-MM"
 }
index a8aa335..1d82b9b 100644 (file)
@@ -14,7 +14,8 @@
                        "Trixt",
                        "Yannos",
                        "ZaDiak",
-                       "아라"
+                       "아라",
+                       "JoostBotman"
                ]
        },
        "tog-underline": "Ὑπογραμμίζειν συνδέσμους:",
        "articlepage": "Χρήματος δέλτον ὁρᾶν",
        "talk": "Διάλεξις",
        "views": "Προβολαί",
-       "toolbox": "á¼\98Ï\81γαλειοκάδοÏ\82",
+       "toolbox": "á¼\9cÏ\81γαλεá¿\96α",
        "userpage": "Ὁρᾶν δέλτον χρωμένου",
        "projectpage": "Ἴδε δέλτον ἐγχειρήματος",
        "imagepage": "Ὁρᾶν τῆν δέλτον τοῦ ἀρχείου",
index f87ed52..6302baa 100644 (file)
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
 }
index 62c4fff..f3b46f1 100644 (file)
@@ -25,7 +25,8 @@
                        "Vyom",
                        "Macofe",
                        "Arbhatt",
-                       "NehalDaveND"
+                       "NehalDaveND",
+                       "Nisargjhaveri"
                ]
        },
        "tog-underline": "કડીઓની નીચે લીટી (અંડરલાઇન):",
        "upload-too-many-redirects": "URLમાં ઘણાં ઉપ નિર્દેશનો છે.",
        "upload-http-error": " HTTP ત્રુટિ : $1",
        "upload-copy-upload-invalid-domain": "આ વેબસાઇટ પરથી ફાઈલ નહીં ચડાવાય.",
+       "upload-dialog-title": "ફાઇલ ચઢાવો",
+       "upload-dialog-button-cancel": "રદ કરો",
+       "upload-dialog-button-done": "સંપન્ન",
+       "upload-dialog-button-save": "સાચવો",
+       "upload-dialog-button-upload": "ચઢાવો",
+       "upload-dialog-label-select-file": "ફાઈલ પસંદ કરો",
+       "upload-dialog-label-infoform-title": "વિગતો",
+       "upload-dialog-label-infoform-name": "નામ",
+       "upload-dialog-label-infoform-description": "વર્ણન",
+       "upload-dialog-label-usage-title": "વપરાશ",
+       "upload-dialog-label-usage-filename": "ફાઈલનું નામ",
        "backend-fail-stream": "ફાઈલ $1 ને લાવી ન શકાઈ.",
        "backend-fail-backup": "ફાઈલ $1 ની પ્રત ન સાચવી શકાઈ.",
        "backend-fail-notexists": "ફાઈલ $1 ઉપલબ્ધ નથી.",
        "spambot_username": "મિડિયાવિકી સ્પેમ સફાઇ",
        "spam_reverting": " $1 પર કડી ન ધરાવતા છેલ્લા ફેરેફાર પર પુનઃ સ્થાપન કરાય છે",
        "spam_blanking": "બધા ફેરફારોમાં  $1 પર કડી હતી, આને હટાવી દેવામાં આવે છે",
-       "simpleantispam-label": "સ્પામ-વિરોધી તપાસ.\nઆને '''ના''' ભરશો!",
+       "simpleantispam-label": "સ્પામ-વિરોધી તપાસ.\nઆને <strong>ના</strong> ભરશો!",
        "pageinfo-title": " \"$1\" માટે માહિતી",
        "pageinfo-not-current": "ક્ષમા કરો, જુની આવૃત્તિ માંથી આ સૂચના આપી નથી શકતા.",
        "pageinfo-header-basic": "સામાન્ય માહિતી",
index 1093f27..20e5cde 100644 (file)
@@ -36,6 +36,7 @@
        "tog-hideminor": "הסתרת שינויים משניים ברשימת השינויים האחרונים",
        "tog-hidepatrolled": "הסתרת שינויים בדוקים ברשימת השינויים האחרונים",
        "tog-newpageshidepatrolled": "הסתרת דפים בדוקים ברשימת הדפים החדשים",
+       "tog-hidecategorization": "הסתרת הוספות והסרות של דפים מקטגוריות",
        "tog-extendwatchlist": "הרחבת רשימת המעקב כך שתציג את כל השינויים, לא רק את השינויים האחרונים בכל דף",
        "tog-usenewrc": "קיבוץ השינויים לפי דף בשינויים האחרונים וברשימת המעקב",
        "tog-numberheadings": "מספור כותרות אוטומטי",
@@ -65,6 +66,7 @@
        "tog-watchlisthideliu": "הסתרת עריכות של משתמשים רשומים ברשימת המעקב",
        "tog-watchlisthideanons": "הסתרת עריכות של משתמשים אנונימיים ברשימת המעקב",
        "tog-watchlisthidepatrolled": "הסתרת עריכות בדוקות ברשימת המעקב",
+       "tog-watchlisthidecategorization": "הסתרת הוספות והסרות של דפים מקטגוריות",
        "tog-ccmeonemails": "לשלוח אליי העתקים של הודעות דואר אלקטרוני ששלחתי למשתמשים אחרים",
        "tog-diffonly": "ביטול הצגת תוכן הדף מתחת להשוואות הגרסאות",
        "tog-showhiddencats": "הצגת קטגוריות מוסתרות",
        "actionthrottled": "הפעולה הוגבלה",
        "actionthrottledtext": "כאמצעי נגד ספאם, קיימת מגבלה על ביצוע פעולה זו פעמים רבות מדי בזמן קצר, וחרגת מהמגבלה הזאת.\nנא לנסות שוב בעוד מספר דקות.",
        "protectedpagetext": "דף זה מוגן כדי למנוע עריכה ופעולות אחרות.",
-       "viewsourcetext": "באפשרותך לצפות בטקסט המקור של הדף ולהעתיקו:",
-       "viewyourtext": "באפשרותך לצפות בטקסט המקור של <strong>העריכות שלך</strong> בדף הזה ולהעתיקו:",
+       "viewsourcetext": "באפשרותך לצפות בטקסט המקור של הדף ולהעתיקו.",
+       "viewyourtext": "באפשרותך לצפות בטקסט המקור של <strong>העריכות שלך</strong> בדף הזה ולהעתיקו.",
        "protectedinterface": "דף זה הוא אחד מסדרת דפים המספקים הודעות מערכת לתוכנה באתר ויקי זה, ומוגן כדי למנוע השחתות.\nכדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "editinginterface": "<strong>אזהרה:</strong> הדף שאתם עורכים הוא אחד הדפים המספקים הודעות מערכת לתוכנה.\nשינויים בדף זה ישפיעו על תצוגת ממשק המשתמש של משתמשים אחרים באתר ויקי זה.",
        "translateinterface": "כדי להוסיף או לשנות תרגומים עבור כל אתרי הוויקי, יש להשתמש ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.",
        "search-category": "(קטגוריה $1)",
        "search-file-match": "(התאמה בתוכן הקובץ)",
        "search-suggest": "האם התכוונת ל: $1",
+       "search-rewritten": "מוצגות התוצאות עבור $1. ניתן לחפש $2 במקום זאת.",
        "search-interwiki-caption": "מיזמי אחות",
        "search-interwiki-default": "תוצאות מ{{GRAMMAR:תחילית|$1}}:",
        "search-interwiki-more": "(עוד)",
        "rcshowhidemine": "$1 עריכות שלי",
        "rcshowhidemine-show": "הצגת",
        "rcshowhidemine-hide": "הסתרת",
+       "rcshowhidecategorization": "$1 הוספות והסרות של דפים מקטגוריות",
+       "rcshowhidecategorization-show": "הצגת",
+       "rcshowhidecategorization-hide": "הסתרת",
        "rclinks": "הצגת $1 שינויים אחרונים ב־$2 הימים האחרונים.<br /> $3",
        "diff": "הבדל",
        "hist": "היסטוריה",
        "newpageletter": "ח",
        "boteditletter": "ב",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|משתמש אחד עוקב|$1 משתמשים עוקבים}} אחרי הדף]",
-       "rc_categories": "×\94×\92×\91×\9c×\94 ×\9cק×\98×\92×\95ר×\99×\95ת (×\99ש ×\9c×\94פר×\99×\93 ×¢×\9d \"|\")",
-       "rc_categories_any": "×\94×\9b×\95×\9c",
+       "rc_categories": "×\94×\92×\91×\9c×\94 ×\9cק×\98×\92×\95ר×\99×\95ת (×\9e×\95פר×\93×\95ת ×\91ת×\95 \"|\"):",
+       "rc_categories_any": "×\9b×\9c ×\90×\97ת ×\9e×\94× ×\91×\97ר×\95ת",
        "rc-change-size-new": "{{PLURAL:$1|בית אחד|$1 בתים}} לאחר השינוי",
        "newsectionsummary": "/* $1 */ פסקה חדשה",
        "rc-enhanced-expand": "הצגת הפרטים",
        "recentchangeslinked-summary": "בדף מיוחד זה רשומים השינויים האחרונים בדפים המקושרים מתוך הדף (או בדפים הכלולים בקטגוריה).\nדפים ב[[Special:Watchlist|רשימת המעקב שלכם]] מוצגים ב'''הדגשה'''.",
        "recentchangeslinked-page": "שם הדף:",
        "recentchangeslinked-to": "הצגת השינויים בדפים המקשרים לדף הנתון במקום זאת",
+       "recentchanges-page-added-to-category": "הדף [[:$1]] נוסף לקטגוריה",
+       "recentchanges-page-added-to-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} נוספו לקטגוריה",
+       "recentchanges-page-removed-from-category": "הדף [[:$1]] הוסר מקטגוריה",
+       "recentchanges-page-removed-from-category-bundled": "הדף [[:$1]] {{PLURAL:$2|ועוד דף אחד|ועוד $2 דפים}} הוסרו מקטגוריה",
        "upload": "העלאת קובץ לשרת",
        "uploadbtn": "העלאה",
        "reuploaddesc": "ביטול ההעלאה וחזרה לטופס העלאת קבצים לשרת",
        "upload-too-many-redirects": "הכתובת מכילה הפניות רבות מדי",
        "upload-http-error": "התרחשה שגיאת HTTP‏: $1",
        "upload-copy-upload-invalid-domain": "העלאת קבצים משרת זה אינה אפשרית.",
+       "upload-dialog-title": "העלאת קובץ",
+       "upload-dialog-error": "אירעה שגיאה",
+       "upload-dialog-warning": "אירעה אזהרה",
+       "upload-dialog-button-cancel": "ביטול",
+       "upload-dialog-button-done": "בוצע",
+       "upload-dialog-button-save": "שמירה",
+       "upload-dialog-button-upload": "העלאה",
+       "upload-dialog-label-select-file": "בחירת קובץ",
+       "upload-dialog-label-infoform-title": "פרטים",
+       "upload-dialog-label-infoform-name": "שם",
+       "upload-dialog-label-infoform-description": "תיאור",
+       "upload-dialog-label-usage-title": "שימושים",
+       "upload-dialog-label-usage-filename": "שם הקובץ",
        "backend-fail-stream": "לא הייתה אפשרות להזרים את הקובץ \"$1\".",
        "backend-fail-backup": "לא הייתה אפשרות לגבות את הקובץ \"$1\".",
        "backend-fail-notexists": "הקובץ \"$1\" אינו קיים.",
        "watchlistanontext": "נדרשת כניסה לחשבון כדי לצפות או לערוך פריטים ברשימת המעקב.",
        "watchnologin": "לא נכנסת לחשבון",
        "addwatch": "הוספה לרשימת המעקב",
-       "addedwatchtext": "×\94×\93×£ \"[[:$1]]\" × ×\95סף ×\9c[[Special:Watchlist|רש×\99×\9eת ×\94×\9eעק×\91]].\nש×\99× ×\95×\99×\99×\9d ×©×\99×\99ער×\9b×\95 ×\91עת×\99×\93 ×\91×\93×£ ×\96×\94 ×\95×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\95, ×\99×\95צ×\92×\95 ×\91רש×\99×\9eת ×\94×\9eעק×\91.",
+       "addedwatchtext": "×\94×\93×£ \"[[:$1]]\" ×\95×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\95 × ×\95ספ×\95 ×\9c[[Special:Watchlist|רש×\99×\9eת ×\94×\9eעק×\91]] ×©×\9c×\9a.",
        "addedwatchtext-short": "הדף \"$1\" נוסף לרשימת המעקב.",
        "removewatch": "הסרה מרשימת המעקב",
-       "removedwatchtext": "×\94×\93×£ \"[[:$1]]\" ×\94×\95סר ×\9e[[Special:Watchlist|רש×\99×\9eת ×\94×\9eעק×\91]].",
+       "removedwatchtext": "×\94×\93×£ \"[[:$1]]\" ×\95×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\95 ×\94×\95סר×\95 ×\9e[[Special:Watchlist|רש×\99×\9eת ×\94×\9eעק×\91]] ×©×\9c×\9a.",
        "removedwatchtext-short": "הדף \"$1\" הוסר מרשימת המעקב.",
        "watch": "מעקב",
        "watchthispage": "מעקב אחרי דף זה",
        "changecontentmodel-success-title": "מודל התוכן שוּנה",
        "changecontentmodel-success-text": "מודל התוכן של [[:$1]] שוּנה.",
        "changecontentmodel-cannot-convert": "התוכן בדף [[:$1]] אינו יכול להיות מומר לסוג של $2.",
-       "changecontentmodel-title-cantexist": "לא יכול להיות דף בשם $1.",
        "changecontentmodel-nodirectediting": "מודל התוכן $1 אינו תומך בעריכה ישירה",
        "log-name-contentmodel": "יומן שינויי מודל תוכן",
        "log-description-contentmodel": "אירועים שקשורים למודל תוכן של דפים",
        "undeletepagetext": "{{PLURAL:$1|הדף שלהלן נמחק, אך הוא עדיין בארכיון וניתן לשחזר אותו|הדפים שלהלן נמחקו, אך הם עדיין בארכיון וניתן לשחזר אותם}}.\nייתכן שהארכיון ינוקה מעת לעת.",
        "undelete-fieldset-title": "שחזור גרסאות",
        "undeleteextrahelp": "לשחזור היסטוריית הגרסאות המלאה של הדף, אל תסמנו שום תיבת סימון ולחצו על '''{{int:undeletebtn}}'''.\nלשחזור של גרסאות מסוימות בלבד, סמנו את תיבות הסימון של הגרסאות הללו, ולחצו על '''{{int:undeletebtn}}'''.",
-       "undeleterevisions": "{{PLURAL:$1|×\92רס×\94 ×\90×\97ת × ×©×\9eר×\94|$1 ×\92רס×\90×\95ת × ×©×\9eר×\95}} ×\91×\90ר×\9b×\99×\95×\9f",
+       "undeleterevisions": "{{PLURAL:$1|×\92רס×\94 ×\90×\97ת × ×\9e×\97ק×\94|$1 ×\92רס×\90×\95ת × ×\9e×\97ק×\95}}",
        "undeletehistory": "אם תשחזרו את הדף, כל הגרסאות תשוחזרנה להיסטוריית השינויים שלו.\nאם יש כבר דף חדש באותו השם, הגרסאות והשינויים יופיעו רק בדף ההיסטוריה שלו.",
        "undeleterevdel": "השחזור לא יבוצע אם הגרסה הנוכחית של הדף מחוקה בחלקה. במקרה כזה, עליכם לבטל את ההסתרה של הגרסאות המחוקות החדשות ביותר.",
        "undeletehistorynoadmin": "דף זה נמחק. הסיבה למחיקה מוצגת בתקציר מטה, ביחד עם פרטים על המשתמשים שערכו את הדף לפני מחיקתו. הטקסט של גרסאות אלו זמין למפעילי מערכת בלבד.",
        "spam_reverting": "שחזור לגרסה אחרונה שלא כוללת קישורים ל־$1",
        "spam_blanking": "כל הגרסאות כוללות קישורים ל־$1, מרוקן את הדף",
        "spam_deleting": "כל הגרסאות כוללות קישורים ל־$1, מוחק את הדף",
-       "simpleantispam-label": "בדיקת אנטי־ספאם.\n'''אל''' תמלאו שדה זה!",
+       "simpleantispam-label": "בדיקת אנטי־ספאם.\n<strong>אל</strong> תמלאו שדה זה!",
        "pageinfo-title": "מידע על \"$1\"",
        "pageinfo-not-current": "מצטערים, לא ניתן להציג את המידע הזה לגרסאות ישנות.",
        "pageinfo-header-basic": "מידע בסיסי",
        "special-characters-title-endash": "קו מפריד",
        "special-characters-title-emdash": "קו מפריד ארוך",
        "special-characters-title-minus": "מינוס",
+       "mw-widgets-dateinput-no-date": "לא נבחר תאריך",
        "mw-widgets-titleinput-description-new-page": "הדף עדיין לא קיים",
        "mw-widgets-titleinput-description-redirect": "הפניה ל{{GRAMMAR:תחילית|$1}}"
 }
index 404823a..8f468ea 100644 (file)
        "missingcommentheader": "'''अनुस्मारक:''' आपने इस टिप्पणी का कोई शीर्षक नहीं दिया है।\nअगर आप \"{{int:savearticle}}\" पर दोबारा क्लिक करते हैं तो आपके बदलाव बिना शीर्षक के संजोये जायेंगे।",
        "summary-preview": "सारांश की झलक:",
        "subject-preview": "विषय/शीर्षक की झलक:",
-       "previewerrortext": "à¤\85ापके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
+       "previewerrortext": "à¤\86पके परिवर्तनों का पूर्वावलोकन करने का प्रयास करते समय एक त्रुटि हुई।",
        "blockedtitle": "सदस्य अवरुद्ध है",
        "blockedtext": "'''आपका सदस्यनाम अथवा आइ॰पी पता अवरोधित कर दिया गया हैं ।'''\n\nअवरोध $1 द्वारा किया गया था।\nअवरोध का कारण है ''$2''\n\n* अवरोध का आरंभ: $8\n* अवरोध की समाप्ति: $6\n* अवरोधित इकाई: $7\n\nइस अवरोध के बारे में चर्चा करने के लिए आप $1 या किसी अन्य [[{{MediaWiki:Grouppage-sysop}}|प्रबन्धक]] से संपर्क कर सकते हैं।\nअगर आपने [[Special:Preferences|अपनी वरीयताओं]] में वैध ई-मेल पता प्रविष्ट किया है तो ही आप 'इस प्रयोक्ता को ई-मेल भेजें' वाली सुविधा का इस्तेमाल कर सकते हैं और आपको इसका इस्तेमाल करने से नहीं रोका गया है।\nआपका मौजूदा आइ॰पी पता $3 है और अवरोध क्रमांक #$5 है।\nअपने किसी भी प्रश्न में कृपया यह सभी जानकारी भी शामिल करें।",
        "autoblockedtext": "एक और सदस्य आपके ही आइ॰पी का प्रयोग कर रहे थे और उन्हें $1 द्वारा अवरोधित कर दिया गया था। फलस्वरूप आपका आइ॰पी पता भी स्वचालित रूप से अवरोधित हो गया है।\nअवरोध करने का कारण है:\n\n:''$2''\n\n* अवरोध प्रारंभ: $8\n* अवरोध समाप्ति: $6\n* अवरोधित सदस्य: $7\n\nअवरोध की चर्चा करने के लिए आप $1 या किसी अन्य [[{{MediaWiki:Grouppage-sysop}}|प्रबंधक]] से संपर्क कर सकते हैं।\n\nकृपया ध्यान दें कि यदि आपक \"इस सदस्य को ई-मेल भेजें\" वाली सुविधा का प्रयोग करना चाहते हैं तो आपकी [[Special:Preferences|वरीयताओं]] में वैध ई-मेल पता होना चाहिए और इसका प्रयोग आपके लिए अवरोधित नहीं होना चाहिए।\n\nआपका मौजूदा आइ॰पी पता $3 है और अवरोध क्रमांक #$5 है।\nअपने किसी भी प्रश्न में कृपया यह सभी जानकारी भी शामिल करें।",
        "confirmemail_invalid": "गलत कन्फर्मेशन कोड।\nकोड रद्द हो गया होने की संभावना हैं।",
        "confirmemail_needlogin": "आपका इ-मेल पता प्रमाणित करने के लिये, आपको $1 करना पडेगा।",
        "confirmemail_success": "आपका इ-मेल पता अभी प्रमाणित हो गया हैं।\nअभी आप लॉग इन करके विकि का मज़ा ले सकतें हैं।",
-       "confirmemail_loggedin": "à¤\86पà¤\95à¥\87 à¤\87-मà¥\87ल à¤\8fडà¥\8dरà¥\87स à¤\95ा à¤ªà¥\8dरमाणिà¤\95रण à¤ªà¥\82रा à¤¹à¥\8b à¤\97या à¤¹à¥\88à¤\82।",
+       "confirmemail_loggedin": "à¤\86पà¤\95à¥\87 à¤\87-मà¥\87ल à¤ªà¤¤à¤¾ à¤\95ा à¤ªà¥\8dरमाणिà¤\95रण à¤ªà¥\82रा à¤¹à¥\8b à¤\97या à¤¹à¥\88।",
        "confirmemail_subject": "{{SITENAME}} इ-मेल एड्रेस प्रमाणिकरण",
        "confirmemail_body": "किसीने, शायद आपने,  $1 आइपी एड्रेस से,\n{{SITENAME}} पर  \"$2\" इस नाम से खाता खोलने की माँग की हैं।\n\nयह खाता आपही का हैं और {{SITENAME}} पर उपलब्ध इ-मेल\nसुविधा शुरू करने के लिये, नीचे दी गई कड़ी अपने ब्राउज़रमें खोलें:\n\n$3\n\nअगर यह माँग आपने *नहीं* की हैं, तो इसे रद्द करने के लिये\nनीचे दी हुई कड़ी खोलें:\n\n$5\n\nयह निश्चिती कोड $4 को समाप्त हो जायेगा।",
        "confirmemail_body_changed": "किसी ने, शायद आपने ही, आइ॰पी पते $1 से {{SITENAME}} पर \"$2\" सदस्य खाते का ई-मेल पता बदलकर ये पता दिया है।\n\nइस बात की पुष्टि करने के लिये कि यह सदस्य खाता आपका ही है, और {{SITENAME}} पर ई-मेल सुविधाएँ पुनः शुरू करने के लिये निम्न लिंक अपने ब्राउज़र में खोलें:\n\n$3\n\nयदि यह सदस्य खाता आपका नहीं है, ई-मेल पुष्टि रद्द करने के लिये निम्न लिंक पर जाएँ:\n\n$5\n\nये पुष्टिकरण लिंक $6 को $7 बजे के बाद काम नहीं करेंगे।",
index 8a0887e..104e2f2 100644 (file)
        "content-model-css": "CSS",
        "content-json-empty-object": "Prazan objekt",
        "content-json-empty-array": "Prazno polje",
+       "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva na [[:$2]] s više od jedne vrijednosti za parametar \"$3\". Rabit će se samo posljednja navedena vrijenost.",
        "expensive-parserfunction-warning": "Upozorenje: Ova stranica sadrži previše opterećujućih poziva parserskih funkcija\n\nTrebala bi imati manje od $2 {{PLURAL:$2|poziva|poziva}}, sada ima {{PLURAL:$1|$1 poziv|$1 poziva}}.",
        "expensive-parserfunction-category": "Stranice s previše poziva opterećujućih parserskih funkcija",
        "post-expand-template-inclusion-warning": "Upozorenje: Veličina uključenih predložaka je prevelika.\nNeki predlošci neće biti uključeni.",
        "rev-deleted-text-view": "Ova izmjena je '''izbrisana'''.\nMožete ju vidjeti; detalji se nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
        "rev-suppressed-text-view": "Ova izmjena stranice je '''skrivena'''.\nMožete ju pregledati; više podataka možete vidjeti u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} evidenciji skrivanja].",
        "rev-deleted-no-diff": "Ne možete vidjeti ovu inačicu zbog toga što je jedna od izmjena '''izbrisana'''.\nMožda postoji više informacija u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
-       "rev-suppressed-no-diff": "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.",
+       "rev-suppressed-no-diff": "Ne možete vidjeti ove razlike jer je jedna od izmjena '''obrisana'''.",
        "rev-deleted-unhide-diff": "Jedna od inačica ove izmjene je '''izbrisana'''.\nDetalji se nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].\nMožete i dalje [$1 vidjeti ovu izmjenu] ukoliko želite nastaviti.",
        "rev-suppressed-unhide-diff": "Jedna od revizija ove razlike je '''sakrivena'''.\nViše podataka možete vidjeti u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} evidenciji sakrivanja].\nMožete [$1 vidjeti ove razlike] ako želite nastaviti.",
        "rev-deleted-diff-view": "Jedna od izmjena je '''izbrisana'''.\nMožete ju vidjeti; detalji se nalaze u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} evidenciji brisanja].",
        "special-characters-group-thai": "Tajlandski (tajski) znakovi",
        "special-characters-group-lao": "laoski znakovi",
        "special-characters-group-khmer": "kmerski",
+       "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
        "mw-widgets-titleinput-description-redirect": "preusmjeravanje na $1"
 }
index 38b4f8d..eace87c 100644 (file)
        "tooltip-pt-logout": "so wotzjewić",
        "tooltip-pt-createaccount": "Pozbudźujemy će, konto załožić a so přizjewić; njeje wšak nuznje trěbne",
        "tooltip-ca-talk": "diskusija wo stronje",
-       "tooltip-ca-edit": "Móžeš stronu wobdźěłać. Prošu wužij tłóčku „Přehlad” do składowanja.",
+       "tooltip-ca-edit": "Tutu stronu wobdźěłać",
        "tooltip-ca-addsection": "Nowy wotrězk započeć",
        "tooltip-ca-viewsource": "Strona je škitana. Móžeš pak jeje žórło wobhladać.",
        "tooltip-ca-history": "stawizny tuteje strony",
        "special-characters-group-khmer": "Khmeršćina",
        "special-characters-title-endash": "krótka ležaca smužka",
        "special-characters-title-emdash": "dołha ležaca smužka",
-       "special-characters-title-minus": "minusowe znamješko"
+       "special-characters-title-minus": "minusowe znamješko",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-TT",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
 }
index 2bd0d3f..fa948a7 100644 (file)
        "tooltip-pt-logout": "Dekonekte ou",
        "tooltip-pt-createaccount": "N ap ankouraje w ouvè yon kont epi konekte; men sa pa obligatwa",
        "tooltip-ca-talk": "Diskisyon apwopo kontni paj sa a",
-       "tooltip-ca-edit": "Ou mèt modifye paj sa a. Tanpri, itilize bouton \"Kout je\" anvan ou anrejistre.",
+       "tooltip-ca-edit": "Edit paj sa a",
        "tooltip-ca-addsection": "Komanse yon nouvo seksyon",
        "tooltip-ca-viewsource": "Paj sa a pwoteje. Ou kapab wè kòd sous li.",
        "tooltip-ca-history": "Vèsyon ki ansyen pou paj sa (ak tout kontribitè ki te travay sou li)",
        "version": "Vèsyon",
        "specialpages": "Paj espesyal yo",
        "tag-filter": "Filtre [[Special:Tags|Tag]]:",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tags}}]]: $2)",
        "htmlform-reset": "Revoke chanjman yo",
        "revdelete-restricted": "aplike restriksyon sa yo pou administratè yo",
        "logentry-newusers-create": "Kont itilizatè $1 a kreye",
index 449f8a5..fb13227 100644 (file)
        "actionthrottled": "Művelet megszakítva",
        "actionthrottledtext": "A spamek elleni védekezés miatt nem végezheted el a műveletet túl sokszor egy adott időn belül, és te átlépted a megengedett határt. Próbálkozz újra néhány perc múlva.",
        "protectedpagetext": "Ez egy védett lap, így nem végezhető rajta szerkesztés és más tevékenység.",
-       "viewsourcetext": "Megtekintheted és másolhatod a lap forrását:",
-       "viewyourtext": "Megtekintheted és kimásolhatod a '''saját szerkesztéseidet''' az alábbi lapra:",
+       "viewsourcetext": "Megtekintheted és másolhatod a lap forrását.",
+       "viewyourtext": "Megtekintheted és kimásolhatod a <strong>saját szerkesztéseidet</strong> az alábbi lapra.",
        "protectedinterface": "Ez a lap a szoftver felületéhez szolgáltat szöveget, és a visszaélések elkerülése miatt le van zárva.",
        "editinginterface": "<strong>Vigyázat:</strong> egy olyan lapot szerkesztesz, ami a MediaWiki szoftver felületéhez tartozik. A lap megváltoztatása hatással lesz a kinézetre, ahogy más szerkesztők látják a lapot.",
        "translateinterface": "Minden wikire kiterjedő fordítások hozzáadásához vagy szerkesztésére használd a [//translatewiki.net/ translatewiki.net]-et, a MédiaWiki lokalizációs projektjét.",
        "readonlywarning": "FIGYELMEZTETÉS: A wiki adatbázisát karbantartás miatt zárolták, ezért most nem fogod tudni elmenteni a szerkesztéseidet!\nA lap szövegét másold egy szövegfájlba, amit később felhasználhatsz!'''\n\nAz adatbázist lezáró adminisztrátor az alábbi magyarázatot adta: $1",
        "protectedpagewarning": "'''Figyelem: Ez a lap le van védve, így csak adminisztrátori jogosultságokkal rendelkező szerkesztők módosíthatják.'''\nA legutolsó ide vonatkozó naplóbejegyzés alább látható:",
        "semiprotectedpagewarning": "'''Megjegyzés:''' ez a lap védett, így regisztrálatlan vagy újonnan regisztrált szerkesztők nem módosíthatják.",
-       "cascadeprotectedwarning": "'''Figyelem:''' ez a lap le van zárva, csak adminisztrátorok szerkeszthetik, mert a következő kaszkádvédelemmel ellátott {{PLURAL:$1|lapon|lapokon}} szerepel beillesztve:",
+       "cascadeprotectedwarning": "<strong>Figyelem:</strong> ez a lap le van zárva, csak adminisztrátorok szerkeszthetik, mert a következő kaszkádvédelemmel ellátott {{PLURAL:$1|lapon|lapokon}} be van illesztve:",
        "titleprotectedwarning": "'''Figyelem: Ez a lap le van védve, így csak a [[Special:ListGroupRights|megfelelő jogosultságokkal]] rendelkező szerkesztők hozhatják létre.'''\nA legutolsó ide vonatkozó naplóbejegyzés alább látható:",
        "templatesused": "A lapon használt {{PLURAL:$1|sablon|sablonok}}:",
        "templatesusedpreview": "Az előnézet megjelenítésekor használt {{PLURAL:$1|sablon|sablonok}}:",
        "logdelete-selected": "{{PLURAL:$1|Kiválasztott naplóesemény|Kiválasztott naplóesemények}}:",
        "revdelete-text-text": "A törölt változatok megmaradnak a laptörténetben, de a tartalmuk a nyilvánosan nem elérhető.",
        "revdelete-text-file": "A törölt változatok megmaradnak a fájl történetben, de a tartalmuk egy része nyilvánosan nem elérhető.",
-       "logdelete-text": "A törölt napló események megmaradnak a naplóban, de a tartalmuk nyilvánosan nem elérhető.",
+       "logdelete-text": "A törölt naplóesemények megmaradnak a naplóban, de a tartalmuk nyilvánosan nem elérhető.",
        "revdelete-text-others": "Más adminisztrátorok elérhetik az elrejtett tartalmat és visszaállíthatják, hacsak további korlátozások nem kerültek bevezetésre.",
        "revdelete-confirm": "Kérlek erősítsd meg, hogy valóban ezt szeretnéd tenni; megértetted a következményeket, és amit teszel, az összhangban van [[{{MediaWiki:Policy-url}}|az irányelvekkel]].",
        "revdelete-suppress-text": "Az elrejtés '''csak''' a következő esetekben használható:\n* Illetlen személyes információk\n*: ''otthoni cím, telefonszámok, társadalombiztosítási számok stb.''",
        "search-category": "($1 kategória)",
        "search-file-match": "(fájl tartalma egyezik)",
        "search-suggest": "Keresési javaslat: $1",
+       "search-rewritten": "Találatok mutatása a következőre: $1. Inkább erre szeretnék rákeresni: $2.",
        "search-interwiki-caption": "Társlapok",
        "search-interwiki-default": "$1 találatok:",
        "search-interwiki-more": "(több)",
        "uploaddisabledtext": "A fájlfeltöltés nem engedélyezett.",
        "php-uploaddisabledtext": "A PHP-s fájlfeltöltés le van tiltva. Ellenőrizd a file_uploads beállítást.",
        "uploadscripted": "Ez a fájl olyan HTML- vagy parancsfájlkódot tartalmaz, melyet tévedésből egy webböngésző esetleg értelmezni próbálhatna.",
+       "upload-scripted-pi-callback": "Nem tölthetsz fel olyan fájlt, ami XML-stíluslap feldolgozási utasításokat tartalmaz.",
+       "uploaded-script-svg": "A feltöltött SVG fájlodban szkriptelemet találtunk: \"$1\".",
+       "uploaded-hostile-svg": "Nem biztonságos CSS kódot találtunk a feltöltött SVG fájlod stíluselemei között.",
+       "uploaded-event-handler-on-svg": "Az alábbi eseménykezelő-attribútum beállítása nem megengedett az SVG fájlokban: <code>$1=$2</code>.",
+       "uploaded-href-attribute-svg": "Az alábbi nem lokális célra (pl. http://, javascript, stb.) mutató href attribútum nem megengedett az SVG fájlokban: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-href-unsafe-target-svg": "Nem biztonságos célra mutató href-et találtam a feltöltött SVG fájlban: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-animate-svg": "A feltöltött SVG fájlban \"animate\" taget találtam, ami az alábbi \"from\" attribútumával megváltoztathat egy href-et: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
+       "uploaded-setting-handler-svg": "Az SVG kódok, amelyek a \"handler\" attribútumot távolra/adatra/szkriptre állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.",
+       "uploaded-remote-url-svg": "Az SVG kódok, amelyek bármely stílus-attribútumot távoli URL-ra állítják, le vannak tiltva. A feltöltött SVG fájlban a következőt találtam: <code>$1=\"$2\"</code>.",
+       "uploaded-image-filter-svg": "A feltöltött SVG fájl URL-t tartalmazó képfiltert tartalmaz: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploadscriptednamespace": "Ez az SVG fájl érvénytelen névteret (\"$1\") tartalmaz.",
        "uploadinvalidxml": "A feltöltött XML fájlt nem lehet feldolgozni.",
        "uploadvirus": "Ez a fájl vírust tartalmaz! A részletek: $1",
        "watchlistanontext": "Jelentkezz be a figyelőlistád megtekintéséhez és szerkesztéséhez.",
        "watchnologin": "Nem vagy bejelentkezve",
        "addwatch": "Hozzáadás a figyelőlistához",
-       "addedwatchtext": "A(z) „[[:$1]]” lapot hozzáadtam a [[Special:Watchlist|figyelőlistádhoz]].\nEzután minden, a lapon vagy annak vitalapján történő változást ott fogsz látni.",
+       "addedwatchtext": "A(z) „[[:$1]]” lapot és vitalapját hozzáadtam a [[Special:Watchlist|figyelőlistádhoz]].",
        "addedwatchtext-short": "Az oldal: \"$1\" hozzá lett adva a figyelőlistádhoz.",
        "removewatch": "Eltávolítás a figyelőlistáról",
-       "removedwatchtext": "A(z) „[[:$1]]” lapot eltávolítottam a [[Special:Watchlist|figyelőlistáról]].",
+       "removedwatchtext": "A(z) „[[:$1]]” lapot és vitalapját eltávolítottam a [[Special:Watchlist|figyelőlistáról]].",
        "removedwatchtext-short": "Az oldal: \"$1\" el lett távolítva a figyelőlistádról.",
        "watch": "Lap figyelése",
        "watchthispage": "Lap figyelése",
        "changecontentmodel-success-title": "A tartalommodell megváltozott",
        "changecontentmodel-success-text": "A(z) [[:$1]] lap tartalommodellje sikeresen megváltoztatva.",
        "changecontentmodel-cannot-convert": "A(z) [[:$1]] lap nem alakítható át $2 típusúvá.",
-       "changecontentmodel-title-cantexist": "Nem lehet oldal a(z) $1 helyen.",
        "changecontentmodel-nodirectediting": "A(z) $1 tartalommodell nem támogatja a közvetlen szerkesztést",
        "log-name-contentmodel": "Tartalommodell-változások naplója",
        "log-description-contentmodel": "Egy lap tartalommodelljéhez kapcsolódó események",
        "protect-locked-blocked": "Nem változtathatod meg a védelmi szinteket, amíg blokkolnak. Itt vannak a(z)\n'''$1''' lap jelenlegi beállításai:",
        "protect-locked-dblock": "A védelmi szinteket egy aktív adatbázis zárolás miatt nem változtathatod meg.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
        "protect-locked-access": "A fiókod számára nem engedélyezett a védelmi szintek megváltoztatása.\nItt vannak a(z) '''$1''' lap jelenlegi beállításai:",
-       "protect-cascadeon": "A lap jelenleg le van védve, mert {{PLURAL:$1|tartalmazza az alábbi lap, amelyen|tartalmazzák az alábbi lapok, amelyeken}} be van kapcsolva a kaszkád védelem.\nEzen lap védelmi szintjének megváltoztatása nem lesz hatással a kaszkád védelemre.",
+       "protect-cascadeon": "A lap jelenleg le van védve, mert be van illesztve az alábbi {{PLURAL:$1|lapra, amelyen|lapokra, amelyeken}} be van kapcsolva a kaszkád védelem.\nEzen lap védelmi szintjének megváltoztatása nem lesz hatással a kaszkád védelemre.",
        "protect-default": "minden szerkesztő számára engedélyezett",
        "protect-fallback": "„$1”-i engedély szükséges hozzá",
        "protect-level-autoconfirmed": "automatikusan megerősített szerkesztők számára",
        "newtitle": "Az új cím:",
        "move-watch": "Figyeld a lapot",
        "movepagebtn": "Lap átnevezése",
-       "pagemovedsub": "Átnevezés sikeres",
+       "pagemovedsub": "Az átnevezés sikerült",
        "movepage-moved": "'''„$1” átnevezve „$2” névre'''",
        "movepage-moved-redirect": "Átirányítás létrehozva.",
        "movepage-moved-noredirect": "A régi címről nem készült átirányítás.",
        "saturday-at": "$1 (szombat)",
        "sunday-at": "$1 (vasárnap)",
        "yesterday-at": "Tegnap $1",
-       "bad_image_list": "A formátum a következő:\n\nCsak a listatételek (csillaggal * kezdődő tételek) vannak figyelembe véve. Egy sor első hivatkozásának egy rossz képre mutató hivatkozásnak kell lennie.\nUgyanazon sor további hivatkozásai kivételnek tekintettek, pl. a szócikkek, ahol a kép bennük fordulhat elő.",
+       "bad_image_list": "A formátum a következő:\n\nCsak a listatételek (csillaggal * kezdődő sorok) vannak figyelembe véve.\nEgy sor első hivatkozásának egy rossz képre mutató hivatkozásnak kell lennie.\nUgyanazon sor további hivatkozásai kivételnek tekintettek: szócikkek, amikben a kép előfordulhat.",
        "metadata": "Metaadatok",
        "metadata-help": "Ez a kép járulékos adatokat tartalmaz, amelyek feltehetően a kép létrehozásához használt digitális fényképezőgép vagy lapolvasó beállításairól adnak tájékoztatást.  Ha a képet az eredetihez képest módosították, ezen adatok eltérhetnek a kép tényleges jellemzőitől.",
        "metadata-expand": "További képadatok",
        "htmlform-cloner-create": "További hozzáadása",
        "htmlform-cloner-delete": "Eltávolítás",
        "htmlform-cloner-required": "Legalább egy érték szükséges.",
+       "htmlform-title-badnamespace": "[[:$1]] nem a(z) „{{ns:$2}}” névtérben található.",
+       "htmlform-title-not-creatable": "„$1” nem egy létrehozható lapcím",
+       "htmlform-title-not-exists": "[[:$1]] nem létezik.",
+       "htmlform-user-not-exists": "<strong>$1</strong> nem létezik.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nem egy érvényes felhasználónév.",
        "sqlite-has-fts": "$1 teljes szöveges keresés támogatással",
        "sqlite-no-fts": "$1 teljes szöveges keresés támogatása nélkül",
        "logentry-delete-delete": "$1 törölte a következő lapot: $3",
        "special-characters-title-endash": "kötőjel",
        "special-characters-title-emdash": "hosszú kötőjel",
        "special-characters-title-minus": "minusz jel",
+       "mw-widgets-dateinput-no-date": "Nincs kiválasztott dátum",
+       "mw-widgets-dateinput-placeholder-day": "ÉÉÉÉ-HH-NN",
+       "mw-widgets-dateinput-placeholder-month": "ÉÉÉÉ-HH",
        "mw-widgets-titleinput-description-new-page": "a lap még nem létezik",
        "mw-widgets-titleinput-description-redirect": "átirányítás ide: $1"
 }
index bb5dc9b..149cc42 100644 (file)
        "content-model-wikitext": "վիքիտեքստ",
        "content-model-javascript": "ՋավաՍկրիպտ",
        "content-model-css": "ՍիԷսԷս",
+       "duplicate-args-category": "Կաղապարներում կրկնակի արգումենտներով էջեր",
        "undo-success": "Խմբագրումը կարող է հետ շրջվել։ Ստուգեք տարբերակների համեմատությունը ստորև, որպեսզի համոզվեք, որ դա է ձեզ հետաքրքրող փոփոխությունը և մատնահարեք «Հիշել էջը»՝ գործողությունն ավարտելու համար։",
        "undo-failure": "Խմբագրումը չի կարող հետ շրջվել միջանկյալ խմբագրումների ընդհարման պատճառով։",
        "undo-summary": "Հետ է շրջվում $1 խմբագրումը, որի հեղինակն է՝ [[Special:Contributions/$2|$2]] ([[User talk:$2|քննարկում]]) {{GENDER:$2|մասնակիցը|մասնակցուհին}}",
index d00739c..3aba75b 100644 (file)
@@ -21,6 +21,7 @@
        "tog-hideminor": "Celar le modificationes minor in le modificationes recente",
        "tog-hidepatrolled": "Celar le modificationes patruliate in le modificationes recente",
        "tog-newpageshidepatrolled": "Celar le paginas patruliate del lista de nove paginas",
+       "tog-hidecategorization": "Celar le categorisation de paginas",
        "tog-extendwatchlist": "Displicar le observatorio pro monstrar tote le modificationes, non solmente les plus recente",
        "tog-usenewrc": "Gruppar modificationes per pagina in modificationes recente e observatorio",
        "tog-numberheadings": "Numerar titulos automaticamente",
@@ -50,6 +51,7 @@
        "tog-watchlisthideliu": "Celar modificationes de usatores registrate in le observatorio",
        "tog-watchlisthideanons": "Celar modificationes de usatores anonyme in le observatorio",
        "tog-watchlisthidepatrolled": "Celar le modificationes patruliate in le observatorio",
+       "tog-watchlisthidecategorization": "Celar le categorisation de paginas",
        "tog-ccmeonemails": "Inviar me copias del messages de e-mail que io invia a altere usatores",
        "tog-diffonly": "Non monstrar le contento del pagina sub le comparation de duo versiones",
        "tog-showhiddencats": "Monstrar categorias celate",
        "actionthrottled": "Action limitate",
        "actionthrottledtext": "Como mesura anti-spam, tu es limitate de executar iste action troppo de vices durante un curte periodo de tempore, e tu ha excedite iste limite.\nPer favor reprova post alcun minutas.",
        "protectedpagetext": "Iste pagina ha essite protegite pro impedir le modification o altere actiones.",
-       "viewsourcetext": "Tu pote vider e copiar le codice-fonte de iste pagina:",
-       "viewyourtext": "Tu pote vider e copiar le fonte de '''tu modificationes''' de iste pagina:",
+       "viewsourcetext": "Tu pote vider e copiar le codice-fonte de iste pagina.",
+       "viewyourtext": "Tu pote vider e copiar le fonte de <strong>tu modificationes</strong> de iste pagina.",
        "protectedinterface": "Iste pagina contine texto pro le interfacie del software de iste wiki, e es protegite pro impedir le abuso. Pro adder o modificar traductiones pro tote le wikis, per favor usa [//translatewiki.net/ translatewiki.net], le projecto de traduction de MediaWiki.",
        "editinginterface": "<strong>Attention:</strong> Le texto de iste pagina face parte del interfacie pro le software.\nOmne modification apportate a iste pagina cambiara le apparentia del interfacie pro altere usatores de iste wiki.",
        "translateinterface": "Pro adder o modificar traductiones pro tote le wikis, per favor usa [//translatewiki.net/ translatewiki.net], le projecto de localisation de MediaWiki.",
        "search-category": "(categoria $1)",
        "search-file-match": "(corresponde al contento del file)",
        "search-suggest": "Esque tu vole dicer: $1",
+       "search-rewritten": "Es monstrate le resultatos pro $1. Cerca $2 in su loco.",
        "search-interwiki-caption": "Projectos fratres",
        "search-interwiki-default": "Resultatos de $1:",
        "search-interwiki-more": "(plus)",
        "rcshowhidemine": "$1 mi modificationes",
        "rcshowhidemine-show": "Monstrar",
        "rcshowhidemine-hide": "Celar",
+       "rcshowhidecategorization": "$1 le categorisation de paginas",
+       "rcshowhidecategorization-show": "Monstrar",
+       "rcshowhidecategorization-hide": "Celar",
        "rclinks": "Monstrar le $1 ultime modificationes in le $2 ultime dies<br />$3",
        "diff": "diff",
        "hist": "hist",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[observate per $1 {{PLURAL:$1|usator|usatores}}]",
-       "rc_categories": "Limite a categorias (separar con \"|\")",
-       "rc_categories_any": "Qualcunque",
+       "rc_categories": "Limitar al categorias (separar con \"|\"):",
+       "rc_categories_any": "Qualcunque categoria seligite",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} post cambio",
        "newsectionsummary": "/* $1 */ nove section",
        "rc-enhanced-expand": "Revelar detalios",
        "recentchangeslinked-summary": "Isto es un lista de modificationes facite recentemente in paginas ligate ab un pagina specific (o in membros de un categoria specific).\nLe paginas presente in [[Special:Watchlist|tu observatorio]] appare in litteras '''grasse'''.",
        "recentchangeslinked-page": "Nomine del pagina:",
        "recentchangeslinked-to": "Monstrar modificationes in paginas con ligamines al pagina specificate",
+       "recentchanges-page-added-to-category": "[[:$1]] addite al categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|un pagina|$2 paginas}} addite al categoria",
+       "recentchanges-page-removed-from-category": "[[:$1]] removite del categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|un pagina|$2 paginas}} removite del categoria",
        "upload": "Incargar file",
        "uploadbtn": "Incargar file",
        "reuploaddesc": "Cancellar e retornar al formulario de incargamento",
        "uploaddisabledtext": "Le incargamento de files es disactivate.",
        "php-uploaddisabledtext": "Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.",
        "uploadscripted": "Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.",
+       "upload-scripted-pi-callback": "Non pote incargar un file que contine instructiones pro le tractamento de folios de stilo XML.",
+       "uploaded-script-svg": "Un elemento de script \"$1\" se trova in le file SVG incargate.",
+       "uploaded-hostile-svg": "Certe codice CSS insecur se trova in le elemento de stilo del file SVG incargate.",
+       "uploaded-event-handler-on-svg": "Fixar attributos de gestion de eventos <code>$1=\"$2\"</code> non es permittite in files SVG.",
+       "uploaded-href-attribute-svg": "Attributos href <code>&lt;$1 $2=\"$3\"&gt;</code> con objectivos non local (p.ex. http://, javascript:, etc) non es permittite in files SVG.",
+       "uploaded-href-unsafe-target-svg": "Un href a un objectivo non secur <code>&lt;$1 $2=\"$3\"&gt;</code> se trova in le file SVG incargate.",
+       "uploaded-animate-svg": "Un etiqueta \"animate\" que poterea cambiar le href, usante le attributo \"from\" <code>&lt;$1 $2=\"$3\"&gt;</code>, se trova in le file SVG incargate.",
+       "uploaded-setting-event-handler-svg": "Fixar le attributos de gestion de eventos non es permittite, ma le codice <code>&lt;$1 $2=\"$3\"&gt;</code> se trova in le file SVG incargate.",
+       "uploaded-setting-href-svg": "Usar le etiquetta \"set\" pro adder le attributo \"href\" al elemento genitor non es permittite.",
+       "uploaded-wrong-setting-svg": "Le uso del etiquetta \"set\" pro adder un objectivo remote, de datos o de script a un attributo es blocate, ma le codice <code>&lt;set to=\"$1\"&gt;</code> se trova in le file SVG incargate.",
+       "uploaded-setting-handler-svg": "Le SVG que fixa le attributo \"handler\" con un objectivo remote, de datos o de script es blocate, ma le codice <code>$1=\"$2\"</code> se trova in le file SVG incargate.",
+       "uploaded-remote-url-svg": "Le SVG que contine un URL remote in un attributo de stilo es blocate, ma le codice <code>$1=\"$2\"</code> se trova in le file SVG incargate.",
+       "uploaded-image-filter-svg": "Se trova un filtro de imagine con URL: <code>&lt;$1 $2=\"$3\"&gt;</code> in le file SVG incargate.",
        "uploadscriptednamespace": "Iste file SVG contine un spatio de nomines invalide: \"$1\"",
        "uploadinvalidxml": "Le codice XML in le file incargate non pote esser interpretate.",
        "uploadvirus": "Le file contine un virus! Detalios: $1",
        "upload-too-many-redirects": "Le URL contineva troppo de redirectiones",
        "upload-http-error": "Un error HTTP occurreva: $1",
        "upload-copy-upload-invalid-domain": "Le incargamento de copias non es disponibile ab iste dominio.",
+       "upload-dialog-title": "Incargar file",
+       "upload-dialog-error": "Un error ha occurrite",
+       "upload-dialog-warning": "Un advertimento se ha producite",
+       "upload-dialog-button-cancel": "Cancellar",
+       "upload-dialog-button-done": "Facite",
+       "upload-dialog-button-save": "Salveguardar",
+       "upload-dialog-button-upload": "Incargar",
+       "upload-dialog-label-select-file": "Seliger file",
+       "upload-dialog-label-infoform-title": "Detalios",
+       "upload-dialog-label-infoform-name": "Nomine",
+       "upload-dialog-label-infoform-description": "Description",
+       "upload-dialog-label-usage-title": "Uso",
+       "upload-dialog-label-usage-filename": "Nomine del file",
        "backend-fail-stream": "Non poteva transmitter le file $1.",
        "backend-fail-backup": "Non poteva facer un copia de reserva del file $1.",
        "backend-fail-notexists": "Le file $1 non existe.",
        "listfiles-delete": "deler",
        "listfiles-summary": "Iste pagina special monstra tote le files incargate.",
        "listfiles_search_for": "Cercar un nomine de media:",
+       "listfiles-userdoesnotexist": "Le conto de usator \"$1\" non es registrate.",
        "imgfile": "file",
        "listfiles": "Lista de files",
        "listfiles_thumb": "Miniatura",
        "unusedimages": "Imagines non usate",
        "wantedcategories": "Categorias plus demandate",
        "wantedpages": "Paginas plus demandate",
-       "wantedpages-summary": "Lista del paginas non existente con le major numero de ligamines verso illos, excludente le paginas que ha solmente redirectiones que liga verso illos. Pro un lista del paginas non existente que ha redirectiones que liga verso illos, vide [[{{#special:BrokenRedirects}}]].",
+       "wantedpages-summary": "Lista del paginas non existente con le major numero de ligamines verso illos, excludente le paginas verso le quales solmente redirectiones liga. Pro un lista del paginas non existente verso le quales redirectiones liga, vide [[{{#special:BrokenRedirects}}|le lista de redirectiones rupte]].",
        "wantedpages-badtitle": "Titulo invalide in le gruppo de resultatos: $1",
        "wantedfiles": "Files desirate",
        "wantedfiletext-cat": "Le sequente files es usate ma non existe. Le files ab repositorios externe pote esser listate malgrado que illos existe. Omne tal false positivos essera <del>cancellate</del>. In addition, paginas que incorpora files que non existe es listate in [[:$1]].",
        "logempty": "Le registro contine nihil pro iste pagina.",
        "log-title-wildcard": "Cercar titulos que comencia con iste texto",
        "showhideselectedlogentries": "Monstrar/celar le entratas de registro seligite",
+       "log-edit-tags": "Modificar le etiquettas del entratas de registro seligite",
        "allpages": "Tote le paginas",
        "nextpage": "Sequente pagina ($1)",
        "prevpage": "Precedente pagina ($1)",
        "watchlistanontext": "Per favor, aperi session pro poter vider o modificar entratas in tu observatorio.",
        "watchnologin": "Tu non ha aperite un session",
        "addwatch": "Adder al observatorio",
-       "addedwatchtext": "Le pagina \"[[:$1]]\" ha essite addite a tu [[Special:Watchlist|observatorio]].\nLe modificationes futur in iste pagina e in le pagina de discussion associate essera listate in illo.",
+       "addedwatchtext": "Le pagina \"[[:$1]]\", e su pagina de discussion, ha essite addite a [[Special:Watchlist|tu observatorio]].",
        "addedwatchtext-short": "Le pagina \"$1\" ha essite addite a tu observatorio.",
        "removewatch": "Remover del observatorio",
-       "removedwatchtext": "Le pagina \"[[:$1]]\" ha essite removite de [[Special:Watchlist|tu observatorio]].",
+       "removedwatchtext": "Le pagina \"[[:$1]]\", e su pagina de discussion, ha essite removite de [[Special:Watchlist|tu observatorio]].",
        "removedwatchtext-short": "Le pagina \"$1\" ha essite removite de tu observatorio.",
        "watch": "Observar",
        "watchthispage": "Observar iste pagina",
        "rollback-success": "Revocava modificationes per $1;\nretornava al version per $2.",
        "sessionfailure-title": "Error de session",
        "sessionfailure": "Il pare haber un problema con tu session de conto;\niste action ha essite cancellate como precaution contra le sequestramento de sessiones.\nPer favor preme \"retro\" e recarga le pagina de ubi tu ha venite, postea reprova.",
+       "changecontentmodel": "Cambiar le modello de contento de un pagina",
+       "changecontentmodel-legend": "Cambiar modello de contento",
+       "changecontentmodel-title-label": "Titulo del pagina",
+       "changecontentmodel-model-label": "Nove modello de contento",
+       "changecontentmodel-reason-label": "Motivo:",
+       "changecontentmodel-success-title": "Le modello de contento ha essite cambiate",
+       "changecontentmodel-success-text": "Le typo de contento de [[:$1]] ha essite cambiate.",
+       "changecontentmodel-cannot-convert": "Le contento de [[:$1]] non pote esser convertite a un typo de $2.",
+       "changecontentmodel-nodirectediting": "Le modello de contento $1 non supporta le modification directe",
+       "log-name-contentmodel": "Registro de cambiamentos de modello de contento",
+       "log-description-contentmodel": "Eventos relative al modellos de contento de un pagina",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|cambiava}} le modello de contento del pagina $3 de \"$4\" a \"$5\"",
+       "logentry-contentmodel-change-revertlink": "reverter",
+       "logentry-contentmodel-change-revert": "reversion",
        "protectlogpage": "Registro de protectiones",
        "protectlogtext": "Ecce un lista de cambios de protection de paginas.\nVide le [[Special:ProtectedPages|lista de paginas protegite]] pro le lista de protectiones de paginas actualmente in operation.",
        "protectedarticle": "protegeva \"[[$1]]\"",
        "protect-locked-blocked": "Tu non pote cambiar le nivellos de protection durante que tu es blocate.\nEcce le configurationes actual del pagina '''$1''':",
        "protect-locked-dblock": "Le nivellos de protection non pote esser cambiate proque es active un blocada del base de datos.\nEcce le configurationes actual del pagina '''$1''':",
        "protect-locked-access": "Tu conto non ha le permission de cambiar le nivellos de protection de paginas.\nEcce le configurationes actual del pagina '''$1''':",
-       "protect-cascadeon": "Iste pagina es actualmente protegite proque illo es includite in le sequente {{PLURAL:$1|pagina, le qual|paginas, le quales}} ha activate le protection in cascada.\nCambiamentos in le nivello de protection de iste pagina non influentia le protection in cascada.",
+       "protect-cascadeon": "Iste pagina es actualmente protegite proque illo es transcludite in le sequente {{PLURAL:$1|pagina, le qual|paginas, le quales}} ha activate le protection in cascada.\nCambiamentos in le nivello de protection de iste pagina non influentia le protection in cascada.",
        "protect-default": "Permitter a tote le usatores",
        "protect-fallback": "Permitter solmente al usatores con le privilegio de \"$1\"",
        "protect-level-autoconfirmed": "Permitter solmente al usatores autoconfirmate",
        "undeletepagetext": "Le {{PLURAL:$1|pagina|paginas}} sequente ha essite delite, sed es ancora in le archivo e pote esser restaurate.\nLe archivo pote esser vacuate periodicamente.",
        "undelete-fieldset-title": "Restaurar versiones",
        "undeleteextrahelp": "Pro restaurar le historia integre del pagina, lassa tote le quadratos dismarcate e clicca super '''''{{int:undeletebtn}}'''''.\nPro executar un restauration selective, marca le quadratos correspondente al versiones a restaurar, e clicca super '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|version|versiones}} archivate",
+       "undeleterevisions": "$1 {{PLURAL:$1|version|versiones}} delite",
        "undeletehistory": "Si tu restaura un pagina, tote le versiones essera restaurate al historia.\nSi un nove pagina con le mesme nomine ha essite create post le deletion, le versiones\nrestaurate apparera in le historia anterior.",
        "undeleterevdel": "Le restauration non essera executate si illo resultara in le deletion partial del version le plus recente del pagina o del file.\nIn tal casos, tu debe dismarcar o revelar le version delite le plus recente.",
        "undeletehistorynoadmin": "Iste pagina ha essite delite.\nLe motivo del deletion se monstra in le summario infra, con le detalios del usatores que habeva modificate iste pagina ante le deletion.\nLe texto complete de iste versiones delite es solmente disponibile al administratores.",
        "thumbnail_image-failure-limit": "Il ha habite recentemente troppo de tentativas fallite ($1 o plus) de generar iste miniatura. Per favor reproba plus tarde.",
        "import": "Importar paginas",
        "importinterwiki": "Importar ab un altere wiki",
-       "import-interwiki-text": "Selige le wiki e le titulo del pagina a importar.\nLe datas del versiones e nomines del contributores essera preservate.\nTote le actiones de importation transwiki se registra in le [[Special:Log/import|registro de importationes]].",
+       "import-interwiki-text": "Selige le wiki e le titulo del pagina a importar.\nLe datas del versiones e nomines del contributores essera conservate.\nTote le actiones de importation ab altere wikis se registra in le [[Special:Log/import|registro de importationes]].",
        "import-interwiki-sourcewiki": "Wiki de origine:",
        "import-interwiki-sourcepage": "Pagina de origine:",
        "import-interwiki-history": "Copiar tote le versiones del historia de iste pagina",
        "import-interwiki-templates": "Includer tote le patronos",
        "import-interwiki-submit": "Importar",
+       "import-mapping-default": "Importar in destinationes predefinite",
+       "import-mapping-namespace": "Importar in un spatio de nomines:",
+       "import-mapping-subpage": "Importar como subpaginas del pagina sequente:",
        "import-upload-filename": "Nomine del file:",
        "import-comment": "Commento:",
        "importtext": "Per favor exporta le file del wiki de origine con le [[Special:Export|facilitate de exportation]].\nSalveguarda lo in tu computator e incarga lo hic.",
        "importcantopen": "Impossibile aperir le file de importation",
        "importbadinterwiki": "Ligamine interwiki invalide",
        "importsuccess": "Importation complete!",
-       "importnosources": "Nulle origine de importation transwiki ha essite definite e le incargamento directe de historias es disactivate.",
+       "importnosources": "Nulle wiki ab le qual importar ha essite definite e le incargamento directe de historias es disactivate.",
        "importnofile": "Nulle file de importation esseva incargate.",
        "importuploaderrorsize": "Le incargamento del file de importation ha fallite. Le grandor del file excede le limite pro incargamentos.",
        "importuploaderrorpartial": "Le incargamento del file de importation ha fallite. Le file esseva incargate solmente in parte.",
        "spam_reverting": "Revertite al ultime version que non contine ligamines a $1",
        "spam_blanking": "Tote le versiones contineva ligamines a $1. Le pagina es vacuate.",
        "spam_deleting": "Tote le versiones contineva ligamines a $1. Le pagina es delite.",
-       "simpleantispam-label": "Verification anti-spam.\n'''NON''' completa isto!",
+       "simpleantispam-label": "Verification anti-spam.\n<strong>Non</strong> completa isto!",
        "pageinfo-title": "Information sur \"$1\"",
        "pageinfo-not-current": "Regrettabilemente, il es impossibile fornir iste information pro versiones ancian.",
        "pageinfo-header-basic": "Information de base",
        "pageinfo-robot-index": "Permittite",
        "pageinfo-robot-noindex": "Non permittite",
        "pageinfo-watchers": "Numero de observatores del pagina",
+       "pageinfo-visiting-watchers": "Numero de observatores del pagina qui ha visitate le modificationes recente",
        "pageinfo-few-watchers": "Minus de $1 {{PLURAL:$1|observator|observatores}}",
+       "pageinfo-few-visiting-watchers": "Il pote haber o non haber un usator observante le modificationes recente",
        "pageinfo-redirects-name": "Numero de redirectiones verso iste pagina",
        "pageinfo-subpages-name": "Subpaginas de iste pagina",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|redirection|redirectiones}}; $3 {{PLURAL:$3|non-redirection|non-redirectiones}})",
        "pageinfo-protect-cascading-yes": "Si",
        "pageinfo-protect-cascading-from": "Protection in cascada a partir de",
        "pageinfo-category-info": "Information de categoria",
+       "pageinfo-category-total": "Numero total de membros",
        "pageinfo-category-pages": "Numero de paginas",
        "pageinfo-category-subcats": "Numero de subcategorias",
        "pageinfo-category-files": "Numero de files",
        "patrol-log-page": "Registro de patrulia",
        "patrol-log-header": "Isto es un registro de versiones patruliate.",
        "log-show-hide-patrol": "$1 le registro de versiones patruliate",
+       "log-show-hide-tag": "$1 registro de etiquettas",
        "deletedrevision": "Deleva le ancian version $1",
        "filedeleteerror-short": "Error durante le deletion del file: $1",
        "filedeleteerror-long": "Se incontrava errores durante le deletion del file:\n\n$1",
        "tags-activate": "activar",
        "tags-deactivate": "disactivar",
        "tags-hitcount": "$1 {{PLURAL:$1|modification|modificationes}}",
+       "tags-manage-no-permission": "Tu non ha le permission de gerer le etiquettas de modification.",
+       "tags-create-heading": "Crear un nove etiquetta",
+       "tags-create-explanation": "Per configuration predefinite, le etiquettas novemente create essera disponibile pro le uso per usatores e robots.",
+       "tags-create-tag-name": "Nomine del etiquetta:",
        "tags-create-reason": "Motivo:",
        "tags-create-submit": "Crear",
+       "tags-create-no-name": "Tu debe specificar le nomine del etiquetta.",
+       "tags-create-invalid-chars": "Le nomines de etiquetta non pote continer commas (<code>,</code>) o barras oblique (<code>/</code>).",
+       "tags-create-invalid-title-chars": "Le nomines de etiquetta non pote continer characteres que non pote esser usate in titulos de pagina.",
+       "tags-create-already-exists": "Le etiquetta \"$1\" jam existe.",
+       "tags-create-warnings-above": "Le sequente {{PLURAL:$2|advertimento|advertimentos}} ha essite incontrate durante le tentativa de crear le etiquetta \"$1\":",
+       "tags-create-warnings-below": "Vole tu continuar a crear le etiquetta?",
        "tags-delete-title": "Deler etiquetta",
+       "tags-delete-explanation-initial": "Tu es sur le puncto de deler le etiquetta \"$1\" del base de datos.",
+       "tags-delete-explanation-in-use": "Illo essera removite ab {{PLURAL:$2|$2 version o entrata de registro al qual|tote le $2 versiones e/o entratas de registro al quales}} illo es actualmente applicate.",
+       "tags-delete-explanation-warning": "Iste action es <strong>irreversibile</strong> e <strong>non pote esser disfacite</strong>, non mesmo per le administratores del base de datos. Sia certe que iste es le etiquetta que tu intende deler.",
+       "tags-delete-explanation-active": "<strong>Le etiquetta \"$1\" es ancora active, e essera applicate anque in le futuro.</strong> Pro impedir isto, va al loco(s) ubi le etiquetta es applicate e disactiva lo.",
        "tags-delete-reason": "Motivo:",
+       "tags-delete-submit": "Deler irreversibilemente iste etiquetta",
+       "tags-delete-not-allowed": "Etiquettas definite per un extension non pote esser delite a minus que le extension specificamente lo permitte.",
+       "tags-delete-not-found": "Le etiquetta \"$1\" non existe.",
+       "tags-delete-too-many-uses": "Le etiquetta \"$1\" es applicate a plus de $2 {{PLURAL:$2|version|versiones}}, e per isto non pote esser delite.",
+       "tags-delete-warnings-after-delete": "Le etiquetta \"$1\" ha essite delite, ma le sequente {{PLURAL:$2|advertimento|advertimentos}} ha essite incontrate:",
+       "tags-activate-title": "Activar etiquetta",
+       "tags-activate-question": "Tu es sur le puncto de activar le etiquetta \"$1\".",
+       "tags-activate-reason": "Motivo:",
+       "tags-activate-not-allowed": "Non es possibile activar le etiquetta \"$1\".",
+       "tags-activate-not-found": "Le etiquetta \"$1\" non existe.",
+       "tags-activate-submit": "Activar",
+       "tags-deactivate-title": "Disactivar etiquetta",
+       "tags-deactivate-question": "Tu es sur le puncto de disactivar le etiquetta \"$1\".",
+       "tags-deactivate-reason": "Motivo:",
+       "tags-deactivate-not-allowed": "Non es possibile disactivar le etiquetta \"$1\".",
+       "tags-deactivate-submit": "Disactivar",
+       "tags-apply-no-permission": "Tu non ha le permission de adjunger etiquettas de cambiamento a tu cambiamentos.",
+       "tags-apply-not-allowed-one": "Non es permittite applicar le etiquetta \"$1\" manualmente.",
+       "tags-apply-not-allowed-multi": "Le sequente {{PLURAL:$2|etiquetta|etiquettas}} non es autorisate a esser manualmente applicate: $1",
+       "tags-update-no-permission": "Tu non ha le permission de adder o remover etiquettas de cambiamento sur individual versiones o entratas de registro.",
+       "tags-update-add-not-allowed-one": "Non es permittite adjunger le etiquetta \"$1\" manualmente.",
+       "tags-update-add-not-allowed-multi": "Le sequente {{PLURAL:$2|etiquetta|etiquettas}} non es autorisate a esser manualmente adjungite: $1",
+       "tags-update-remove-not-allowed-one": "Non es permittite remover le etiquetta \"$1\".",
+       "tags-update-remove-not-allowed-multi": "Le sequente {{PLURAL:$2|etiquetta|etiquettas}} non es autorisate a esser manualmente removite: $1",
+       "tags-edit-title": "Modificar etiquettas",
+       "tags-edit-manage-link": "Gerer etiquettas",
+       "tags-edit-revision-selected": "{{PLURAL:$1|Version|Versiones}} seligite de [[:$2]]:",
+       "tags-edit-logentry-selected": "{{PLURAL:$1|Evento|Eventos}} de registro seligite:",
+       "tags-edit-revision-legend": "Adder o remover etiquettas de {{PLURAL:$1|iste version|tote le $1 versiones}}",
+       "tags-edit-logentry-legend": "Adder o remover etiquettas de {{PLURAL:$1|iste entrata|tote le $1 entratas}} de registro",
+       "tags-edit-existing-tags": "Etiquettas existente:",
+       "tags-edit-existing-tags-none": "\"Nulle\"",
+       "tags-edit-new-tags": "Nove etiquettas:",
+       "tags-edit-add": "Adder iste etiquettas:",
+       "tags-edit-remove": "Remover iste etiquettas:",
+       "tags-edit-remove-all-tags": "(remover tote le etiquettas)",
+       "tags-edit-chosen-placeholder": "Seliger alcun etiquettas",
+       "tags-edit-chosen-no-results": "Nulle etiquetta correspondente trovate",
+       "tags-edit-reason": "Motivo:",
+       "tags-edit-revision-submit": "Applicar cambiamentos a {{PLURAL:$1|iste version|$1 versiones}}",
+       "tags-edit-logentry-submit": "Applicar cambiamentos a {{PLURAL:$1|iste entrata|$1 entratas}} de registro",
+       "tags-edit-success": "Le cambiamentos ha essite applicate con successo.",
+       "tags-edit-failure": "Le cambiamentos non ha potite esser applicate:\n$1",
+       "tags-edit-nooldid-title": "Le version de destination es invalide",
+       "tags-edit-nooldid-text": "O tu non ha specificate un version de destination sur le qual exequer iste function, o le version specificate non existe.",
+       "tags-edit-none-selected": "Selige al minus un etiquetta a adder o remover.",
        "comparepages": "Comparar paginas",
        "compare-page1": "Pagina 1",
        "compare-page2": "Pagina 2",
        "htmlform-cloner-create": "Adder plus",
        "htmlform-cloner-delete": "Remover",
        "htmlform-cloner-required": "Al minus un valor es requirite.",
+       "htmlform-title-badnamespace": "[[:$1]] non es in le spatio de nomines \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "\"$1\" non es un titulo de pagina creabile",
+       "htmlform-title-not-exists": "[[:$1]] non existe.",
+       "htmlform-user-not-exists": "<strong>$1</strong> non existe.",
+       "htmlform-user-not-valid": "<strong>$1</strong> non es un nomine de usator valide.",
        "sqlite-has-fts": "$1 con supporto de recerca de texto integre",
        "sqlite-no-fts": "$1 sin supporto de recerca de texto integre",
        "logentry-delete-delete": "$1 {{GENDER:$2|deleva}} le pagina $3",
        "revdelete-uname-unhid": "nomine de usator non plus celate",
        "revdelete-restricted": "restrictiones applicate al administratores",
        "revdelete-unrestricted": "restrictiones eliminate pro administratores",
+       "logentry-block-block": "$1 {{GENDER:$2|blocava}} {{GENDER:$4|$3}} con un tempore de expiration de $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|disblocava}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|cambiava}} le configuration del blocada de {{GENDER:$4|$3}} con un tempore de expiration de $5 $6",
+       "logentry-suppress-block": "$1 {{GENDER:$2|blocava}} {{GENDER:$4|$3}} con un tempore de expiration de $5 $6",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|cambiava}} le configuration del blocada de {{GENDER:$4|$3}} con un tempore de expiration de $5 $6",
+       "logentry-import-upload": "$1 {{GENDER:$2|importava}} $3 per incargamento de file",
+       "logentry-import-interwiki": "$1 {{GENDER:$2|importava}} $3 ab un altere wiki",
        "logentry-merge-merge": "$1 {{GENDER:$2|fusionava}} $3 in $4 (versiones usque a $5)",
        "logentry-move-move": "$1 {{GENDER:$2|renominava}} le pagina $3 a $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|renominava}} le pagina $3 a $4 sin lassar un redirection",
        "logentry-upload-upload": "$1 {{GENDER:$2|ha incargate}} $3",
        "logentry-upload-overwrite": "$1 {{GENDER:$2|ha incargate}} un nove version de $3",
        "logentry-upload-revert": "$1 {{GENDER:$2|ha incargate}} $3",
+       "log-name-managetags": "Registro de gestion de etiquettas",
+       "log-description-managetags": "Iste pagina lista le cargas de gestion relative a [[Special:Tags|etiquettas]]. Le registro contine solmente le actiones exequite manualmente per un administrator; etiquettas pote esser create o delite per le software wiki sin insertion de un entrata in iste registro.",
+       "logentry-managetags-create": "$1 {{GENDER:$2|creava}} le etiquetta \"$4\"",
+       "logentry-managetags-delete": "$1 {{GENDER:$2|deleva}} le etiquetta \"$4\" (removite ab $5 {{PLURAL:$5|version o entrata|versiones e/o entratas}} de registro)",
+       "logentry-managetags-activate": "$1 {{GENDER:$2|activava}} le etiquetta \"$4\" pro uso per usatores e robots",
+       "logentry-managetags-deactivate": "$1 {{GENDER:$2|disactivava}} le etiquetta \"$4\" pro uso per usatores e robots",
+       "log-name-tag": "Registro de etiquettas",
+       "log-description-tag": "Iste pagina monstra quando usatores ha addite o removite [[Special:Tags|etiquettas]] a individual versiones o entratas de registro. Le registro non include actiones de etiquettage que face parte de un modification, deletion o action similar.",
+       "logentry-tag-update-add-revision": "$1 {{GENDER:$2|addeva}} le {{PLURAL:$7|etiquetta|etiquettas}} $6 al version $4 del pagina $3",
+       "logentry-tag-update-add-logentry": "$1 {{GENDER:$2|addeva}} le {{PLURAL:$7|etiquetta|etiquettas}} $6 al entrata de registro $5 del pagina $3",
+       "logentry-tag-update-remove-revision": "$1 {{GENDER:$2|removeva}} le {{PLURAL:$9|etiquetta|etiquettas}} $8 ab le version $4 del pagina $3",
+       "logentry-tag-update-remove-logentry": "$1 {{GENDER:$2|removeva}} le {{PLURAL:$9|etiquetta|etiquettas}} $8 ab le entrata de registro $5 del pagina $3",
+       "logentry-tag-update-revision": "$1 {{GENDER:$2|actualisava}} etiquettas sur le version $4 del pagina $3 ({{PLURAL:$7|addeva}} $6; {{PLURAL:$9|removeva}} $8)",
+       "logentry-tag-update-logentry": "$1 {{GENDER:$2|actualisava}} etiquettas sur le entrata de registro $5 del pagina $3 ({{PLURAL:$7|addeva}} $6; {{PLURAL:$9|removeva}} $8)",
        "rightsnone": "(nulle)",
        "revdelete-summary": "summario del modification",
        "feedback-adding": "Le responsa es addite al pagina...",
+       "feedback-back": "Retornar",
        "feedback-bugcheck": "Bon! Ma per favor verifica que iste falta non es [$1 jam cognoscite].",
        "feedback-bugnew": "Si, io lo ha verificate; reportar un nove falta",
        "feedback-bugornote": "Si tu es preste a describer un problema technic in detalio, per favor [$1 reporta un falta].\nSi non, tu pote usar le formulario facile hic infra. Tu commento essera addite al pagina \"[$3 $2]\", con tu nomine de usator e le navigator del web que tu usa.",
        "feedback-cancel": "Cancellar",
        "feedback-close": "Finite",
+       "feedback-external-bug-report-button": "Signalar un problema technic",
+       "feedback-dialog-title": "Submitter commentario",
+       "feedback-dialog-intro": "Usa le formulario sequente pro submitter tu commentario, le qual apparera in le pagina \"$1\" insimul a tu nomine de usator.",
+       "feedback-error-title": "Error",
        "feedback-error1": "Error: Resultato del API non recognoscite",
        "feedback-error2": "Error: Modification fallite",
        "feedback-error3": "Error: Nulle responsa del API",
+       "feedback-error4": "Error: Impossibile adjunger le commentario sub le titulo specificate",
        "feedback-message": "Message:",
        "feedback-subject": "Subjecto:",
        "feedback-submit": "Submitter",
+       "feedback-terms": "Io comprende que mi information de agente usator include le information sur le version exacte de mi navigator del web e systema de operation e essera publicate insimul a mi commentario.",
+       "feedback-termsofuse": "Io accepta de fornir commentarios in accordo con le Conditiones de Uso.",
        "feedback-thanks": "Gratias! Tu evalutation ha essite publicate in le pagina \"[$2 $1]\".",
+       "feedback-thanks-title": "Gratias!",
+       "feedback-useragent": "Agente usator:",
        "searchsuggest-search": "Cercar",
        "searchsuggest-containing": "continente...",
        "api-error-badaccess-groups": "Tu non ha le permission de incargar files in iste wiki.",
        "log-name-pagelang": "Registro de cambios de lingua",
        "log-description-pagelang": "Isto es un registro de cambios de lingua in paginas.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|cambiava}} le lingua del pagina $3 de $4 a $5.",
-       "default-skin-not-found": "Attention! Le apparentia predefinite de tu wiki, definite in <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nLe installation pare includer le sequente apparentias. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar los e seliger le predefinite.\n\n$2\n\n; Si tu ha justo installate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Discargar archivos tar con apparentias indidivual ab [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Clonar un del repositorios <code>mediawiki/skins/*</code> via git in le directorio <code dir=\"ltr\">skins/</code> de tu installation de MediaWiki.\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki.\n\n; Si tu ha justo actualisate MediaWiki:\n: MediaWiki a partir del version 1.24 non plus activa automaticamente le apparentias installate (vide [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Tu pote collar le sequente lineas in <code>LocalSettings.php</code> pro activar tote le apparentias actualmente installate:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si tu ha justo modificate <code>LocalSettings.php</code>:\n: Verifica meticulosemente que le nomines del apparentias non ha errores.",
-       "default-skin-not-found-no-skins": "Attention! Le apparentia predefinite de tu wiki, definite in <code>$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nTu non ha apparentias installate.\n\n; Si tu ha justo installate o actualisate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Discargar archivos tar con apparentias individual ab [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* Clonar un del repositorios <code>mediawiki/skins/*</code> via git in le directorio <code dir=\"ltr\">skins/</code> de tu installation de MediaWiki.\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar skins e seliger le predefinite.",
+       "default-skin-not-found": "Attention! Le apparentia predefinite de tu wiki, definite in <code dir=\"ltr\">$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nLe installation pare includer le sequente {{PLURAL:$4|apparentia|apparentias}}. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar {{PLURAL:$4|lo|los e seliger le predefinite}}.\n\n$2\n\n; Si tu ha justo installate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Discargar archivos tar con apparentias indidivual ab [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usar Git pro discargar apparentias].\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki.\n\n; Si tu ha justo actualisate MediaWiki:\n: MediaWiki a partir del version 1.24 non plus activa automaticamente le apparentias installate (vide [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manual: Skin autodiscovery]). Tu pote collar le sequente {{PLURAL:$5|linea|lineas}} in <code>LocalSettings.php</code> pro activar {{PLURAL:$5|le apparentia|tote le apparentias}} actualmente installate:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si tu ha justo modificate <code>LocalSettings.php</code>:\n: Verifica meticulosemente que le nomines del apparentias non ha errores.",
+       "default-skin-not-found-no-skins": "Attention! Le apparentia predefinite de tu wiki, definite in <code>$wgDefaultSkin</code> como <code>$1</code>, non es disponibile.\n\nTu non ha apparentias installate.\n\n; Si tu ha justo installate o actualisate MediaWiki:\n: Tu lo ha probabilemente installate a partir de git, o directemente del codice fonte con un altere methodo. Isto es normal. Essaya installar alcun apparentias desde [https://www.mediawiki.org/wiki/Category:All_skins le directorio de apparentias de mediawiki.org], per:\n:* Discargar le [https://www.mediawiki.org/wiki/Download archivo tar del installator], que include plure apparentias e extensiones. Tu pote copiar e collar le directorio <code>skins/</code> de illo.\n:* Discargar archivos tar con apparentias individual ab [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Usar Git pro discargar apparentias].\n: Facer isto non deberea interferer con tu repositorio git si tu es un disveloppator de MediaWiki. Vide [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manual: Skin configuration] pro saper como activar apparentias e seliger le predefinite.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (activate)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''disactivate''')",
        "mediastatistics": "Statisticas de multimedia",
        "json-error-recursion": "Il ha un o plure referentias recursive in le valor a codificar",
        "json-error-inf-or-nan": "Un o plure valores NAN o INF se trova in le valor a codificar",
        "json-error-unsupported-type": "Un valor de un typo que non pote esser codificate ha essite date",
+       "headline-anchor-title": "Ligamine a site section",
        "special-characters-group-latin": "Latin",
        "special-characters-group-latinextended": "Latin extendite",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-thai": "Thailandese",
        "special-characters-group-lao": "Laotiano",
        "special-characters-group-khmer": "Cambodgiano",
-       "special-characters-title-minus": "signo minus"
+       "special-characters-title-endash": "lineetta en",
+       "special-characters-title-emdash": "lineetta em",
+       "special-characters-title-minus": "signo minus",
+       "mw-widgets-dateinput-no-date": "Nulle data seligite",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
+       "mw-widgets-titleinput-description-new-page": "pagina non existe ancora",
+       "mw-widgets-titleinput-description-redirect": "redirection a $1"
 }
index 84e543b..83f90fa 100644 (file)
@@ -38,7 +38,8 @@
                        "Arifin.wijaya",
                        "Ahdan",
                        "Macofe",
-                       "Totosunarto"
+                       "Totosunarto",
+                       "Mirws"
                ]
        },
        "tog-underline": "Garis bawahi pranala:",
        "search-category": "(kategori $1)",
        "search-file-match": "(cocok dengan isi berkas)",
        "search-suggest": "Mungkin maksud Anda adalah: $1",
+       "search-rewritten": "Menampilkan hasil untuk $1. Cari bukannya untuk $2.",
        "search-interwiki-caption": "Proyek lain",
        "search-interwiki-default": "Hasil dari $1:",
        "search-interwiki-more": "(selanjutnya)",
        "watchlistanontext": "Silahkan login untuk melihat atau mengedit item pada daftarjaga anda",
        "watchnologin": "Belum masuk log",
        "addwatch": "Tambahkan ke daftar pantauan",
-       "addedwatchtext": "Halaman \"[[:$1]]\" telah ditambahkan ke [[Special:Watchlist|daftar pantauan]] Anda.\nPerubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan terkaitnya akan tercantum di sini.",
+       "addedwatchtext": "\"[[:$1]]\" dan diskusinya telah ditambahkan ke [[Special:Watchlist|watchlist]] Anda.\nPerubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan terkaitnya akan tercantum di sini.",
        "addedwatchtext-short": "Halaman \"$1\" telah ditambahkan ke daftar pantauan Anda.",
        "removewatch": "Hapus dari daftar pantauan",
-       "removedwatchtext": "Halaman \"[[:$1]]\" telah dihapus dari [[Special:Watchlist|daftar pantauan]] Anda.",
+       "removedwatchtext": "\"[[:$1]]\" dan diskusinya telah dihapus dari [[Special:Watchlist|watchlist]] Anda.",
        "removedwatchtext-short": "Halaman \"$1\" telah dihapus dari daftar pantauan Anda.",
        "watch": "Pantau",
        "watchthispage": "Pantau halaman ini",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
-       "special-characters-title-minus": "tanda kurang"
+       "special-characters-title-minus": "tanda kurang",
+       "mw-widgets-dateinput-placeholder-day": "TTTT-BB-HH",
+       "mw-widgets-dateinput-placeholder-month": "TTTT-BB"
 }
index 18d6d60..a3886aa 100644 (file)
                ]
        },
        "tog-underline": "Pinag-ugisan ti silpo:",
-       "tog-hideminor": "Ilemmeng dagiti bassit nga inurnos manipud ti kaudian a balbaliw",
-       "tog-hidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud ti kaudian a balbaliw",
-       "tog-newpageshidepatrolled": "Ilemmeng dagiti napatruliaan a panid manipud ti baro a listaan ti panid",
+       "tog-hideminor": "Ilemmeng dagiti bassit nga inurnos manipud iti kaudian a balbaliw",
+       "tog-hidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud iti kaudian a balbaliw",
+       "tog-newpageshidepatrolled": "Ilemmeng dagiti napatruliaan a panid manipud iti baro a listaan ti panid",
+       "tog-hidecategorization": "Ilemmeng ti pannakaikategoria dagiti panid",
        "tog-extendwatchlist": "Ipalawa ti listaan ti bambantayan tapno maipakita amin a nasukatan, saan laeng a ti kabiitan",
        "tog-usenewrc": "Dagiti grupo a panagbaliw babaen ti panid ti kaudian a balbaliw ken listaan ti bambantayan",
        "tog-numberheadings": "Automatiko a pabilangan dagiti paulo",
        "tog-showtoolbar": "Ipakita ti baras ti ramit ti panagurnos",
        "tog-editondblclick": "Urnosen dagiti panid iti mamindua a panagpindut",
-       "tog-editsectiononrightclick": "Pakabaelan ti panagurnos iti paset babaen ti panagpindut iti kanawan kadagiti titulo ti paset",
+       "tog-editsectiononrightclick": "Pakabaelan ti panagurnos iti seksion babaen ti panagpindut iti kanawan kadagiti titulo ti paset",
        "tog-watchcreations": "Agnayon kadagiti panid a pinartuatko ken papeles nga inkargak iti listaan ti bambantayak",
        "tog-watchdefault": "Agnayon kadagiti panid ken papeles nga inurnosko iti listaan ti bambantayak",
        "tog-watchmoves": "Agnayon kadagiti panid ken papeles nga inyalisko iti listaan ti bambantayak",
        "tog-minordefault": "Markaan amin dagiti inurnos a kas bassit babaen ti kasisigud",
        "tog-previewontop": "Ipakita ti panagipadas sakbay ti pagurnosan a kahon",
        "tog-previewonfirst": "Ipakita ti pinadas iti umuna a panagurnos",
-       "tog-enotifwatchlistpages": "Esuratannak no mabaliwan ti panid wenno papeles iti listaan dagiti bambantayak",
+       "tog-enotifwatchlistpages": "Esuratannak no mabaliwan ti panid wenno ti papeles iti listaan dagiti bambantayak",
        "tog-enotifusertalkpages": "Esuratannak no mabaliwan ti panid ti tungtungak",
        "tog-enotifminoredits": "Esuratannak pay para kadagiti bassit a panagurnos kadagiti panid ken papeles",
        "tog-enotifrevealaddr": "Iparang ti pagtaengan ti esuratko iti panagipakaaammo kadagiti esurat",
        "tog-shownumberswatching": "Ipakita ti bilang dagiti agbuybuya nga agar-aramat",
        "tog-oldsig": "Ti adda a pirma:",
-       "tog-fancysig": "Tratuen ti pirma a kas wikitext (nga awan ti automatiko a silpo)",
+       "tog-fancysig": "Tratuen ti pirma a kas wikitext (awanan iti automatiko a silpo)",
        "tog-uselivepreview": "Usaren ti agdama a panagipadas",
        "tog-forceeditsummary": "Pakaammuannak no sumrek iti blanko a pakabuklan ti panagurnos",
-       "tog-watchlisthideown": "Ilemmeng dagiti inurnosko manipud ti listaan ti bambantayan",
-       "tog-watchlisthidebots": "Ilemmeng dagiti inurnos ti bot manipud ti listaan ti bambantayan",
-       "tog-watchlisthideminor": "Ilemmeng dagiti bassit nga inurnos manipud ti listaan ti bambantayan",
-       "tog-watchlisthideliu": "Ilemmeng dagiti inurnos babaen dagiti nakastrek nga agar-aramat manipud ti listaan ti bambantayan",
-       "tog-watchlisthideanons": "Ilemmeng dagiti inurnos babaen dagiti di ammo nga agar-aramat manipud ti listaan ti bambantayan",
-       "tog-watchlisthidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud ti listaan ti bambantayan",
+       "tog-watchlisthideown": "Ilemmeng dagiti inurnosko manipud iti listaan ti bambantayan",
+       "tog-watchlisthidebots": "Ilemmeng dagiti inurnos ti bot manipud iti listaan ti bambantayan",
+       "tog-watchlisthideminor": "Ilemmeng dagiti bassit nga inurnos manipud iti listaan ti bambantayan",
+       "tog-watchlisthideliu": "Ilemmeng dagiti inurnos babaen dagiti nakastrek nga agar-aramat manipud iti listaan ti bambantayan",
+       "tog-watchlisthideanons": "Ilemmeng dagiti inurnos babaen dagiti di ammo nga agar-aramat manipud iti listaan ti bambantayan",
+       "tog-watchlisthidepatrolled": "Ilemmeng dagiti napatruliaan nga inurnos manipud iti listaan ti bambantayan",
+       "tog-watchlisthidecategorization": "Ilemmeng ti pannakaikategoria dagiti panid",
        "tog-ccmeonemails": "Patulodandak kadagiti kopia ti esurat nga ipatulodko kadagiti sabali nga agar-aramat",
        "tog-diffonly": "Saan nga iparang ti linaon ti panid dita baba dagiti pagiddiatan",
        "tog-showhiddencats": "Ipakita dagiti nailemmeng a kategoria",
        "category-empty": "<em>Daytoy a kategoria ket agdama a saan nga aglaon kadagiti panid wenno midia.</em>",
        "hidden-categories": "{{PLURAL:$1|Nailemmeng a kategoria|Nailemmeng a katkategoria}}",
        "hidden-category-category": "Nailemmeng a katkategoria",
-       "category-subcat-count": "{{PLURAL:$2|Daytoy a kategoria ket addaan laeng ti sumaganad a subkategoria.|Daytoy a kategoria ket addaan ti sumaganad a {{PLURAL:$1|a subkategoria|$1 a subkatkategoria}}, manipud ti $2 a dagup.}}",
-       "category-subcat-count-limited": "Daytoy a kategoria ket addaan ti sumaganad a {{PLURAL:$1|a subkategoria|$1 a subkatkategoria}}.",
-       "category-article-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a panid.|Ti sumaganad a {{PLURAL:$1|a panid ket|$1 a pampanid ket dagiti}} adda iti daytoy a kategoria, manipud ti $2 a dagup.}}",
-       "category-article-count-limited": "Ti sumaganad a {{PLURAL:$1|panid |$1 a pampanid}} ket adda iti agdama a kategoria.",
-       "category-file-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng ti sumaganad a papeles.|Ti sumaganad a {{PLURAL:$1|a papeles ket|$1 a pappapeles ket dagiti}} adda iti daytoy a kategoria, ti $2 a dagup.}}",
-       "category-file-count-limited": "Ti sumaganad a {{PLURAL:$1|papeles|$1 a pappapeles}} ket adda iti agdama a kategoria.",
+       "category-subcat-count": "{{PLURAL:$2|Daytoy a kategoria ket addaan laeng iti sumaganad a subkategoria.|Daytoy a kategoria ket addaan {{PLURAL:$1|iti sumaganad a  subkategoria|kadagiti sumaganad a $1 a subkategoria}}, manipud iti $2 a dagup.}}",
+       "category-subcat-count-limited": "Daytoy a kategoria ket addaan {{PLURAL:$1|iti sumaganad a subkategoria|kadagiti sumaganad a $1 a subkategoria}}.",
+       "category-article-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng iti sumaganad a panid.|{{PLURAL:$1|Ti sumaganad a panid|Dagiti sumaganad a $1 a panid}} ket adda iti daytoy a kategoria, manipud ti $2 a dagup.}}",
+       "category-article-count-limited": "{{PLURAL:$1|Ti sumaganad a panid|Dagiti sumaganad a $1 a panid}} ket adda iti agdama a kategoria.",
+       "category-file-count": "{{PLURAL:$2|Daytoy a kategoria ket aglaon laeng iti sumaganad a papeles.|{{PLURAL:$1|Ti sumaganad a papeles|Dagiti sumaganad a $1 a papeles}} ket adda iti daytoy a kategoria, iti $2 a dagup.}}",
+       "category-file-count-limited": "{{PLURAL:$1|Ti sumaganad a papeles|Dagiti sumaganad a $1 a papeles}} ket adda iti agdama a kategoria.",
        "listingcontinuesabbrev": "tuloy.",
        "index-category": "Naipagsurotan a pampanid",
        "noindex-category": "Di naipagsurotan a pampanid",
        "variants": "Sabsabali a pagsasao",
        "navigation-heading": "Listaan ti pagdaliasatan",
        "errorpagetitle": "Biddut",
-       "returnto": "Agsubli idiay $1.",
-       "tagline": "Naggapo idiay {{SITENAME}}",
+       "returnto": "Agsubli iti $1.",
+       "tagline": "Manipud iti {{SITENAME}}",
        "help": "Tulong",
        "search": "Biruken",
        "searchbutton": "Biruken",
        "views": "Dagiti pangkitaan",
        "toolbox": "Ramramit",
        "userpage": "Kitaen ti panid ti agar-aramat",
-       "projectpage": "Kitaen ti panid ti gandat",
+       "projectpage": "Kitaen ti panid ti proyekto",
        "imagepage": "Kitaen ti panid ti papeles",
        "mediawikipage": "Kitaen ti panid ti mensahe",
        "templatepage": "Kitaen ti panid ti plantilia",
        "pool-errorunknown": "Di ammo a biddut",
        "pool-servererror": "Ti serbisio ti pagbilangan ti pagyanan ti pagur-urayan ket saan a magun-od ($1).",
        "poolcounter-usage-error": "Biddut ti panagusar: $1",
-       "aboutsite": "Maipanggep ti {{SITENAME}}",
+       "aboutsite": "Maipanggep iti {{SITENAME}}",
        "aboutpage": "Project:Maipanggep",
        "copyright": "Ti linaon ket magun-od babaen ti $1 malaksid no adda sabali a naibaga.",
        "copyrightpage": "{{ns:project}}:Dagiti karbengan ti kopia",
        "privacy": "Annuroten ti kinapribado",
        "privacypage": "Project:Annuroten ti kinapribado",
        "badaccess": "Biddut ti pammalubos",
-       "badaccess-group0": "Awan pammalubosmo a mangpataray ti kiniddawmo nga aramid.",
+       "badaccess-group0": "Awan pammalubosmo a mangpataray iti kiniddawmo nga aramid.",
        "badaccess-groups": "Ti kiniddawmo nga aramid ket limitado laeng kadagiti agar-aramat {{PLURAL:$2|iti grupo|iti maysa kadagiti grupo}}: $1.",
        "versionrequired": "Masapul ti bersion $1 ti MediaWiki",
        "versionrequiredtext": "Masapul ti bersion $1 ti MediaWiki tapno maaramat daytoy a panid. \nKitaen ti [[Special:Version|panid ti bersion]].",
        "ok": "Sige",
-       "retrievedfrom": "Naala manipud idiay \"$1\"",
+       "retrievedfrom": "Naala manipud iti \"$1\"",
        "youhavenewmessages": "{{PLURAL:$3|Addaanka}} $1 ($2).",
        "youhavenewmessagesfromusers": "{{PLURAL:$4|Addaanka}} $1 manipud {{PLURAL:$3|ti sabali nga agar-aramat|kadagiti $3 a sabali nga agar-aramat}} ($2).",
        "youhavenewmessagesmanyusers": "Addaanka $1 manipud kadagiti adu nga agar-aramat ($2).",
        "viewsourceold": "kitaen ti taudan",
        "editlink": "urnosen",
        "viewsourcelink": "kitaen ti taudan",
-       "editsectionhint": "Urnosen ti paset: $1",
+       "editsectionhint": "Urnosen ti seksion: $1",
        "toc": "Dagiti linaon",
        "showtoc": "ipakita",
        "hidetoc": "ilemmeng",
        "collapsible-collapse": "Rebbaen",
        "collapsible-expand": "Palawaen",
-       "confirmable-confirm": "Siguradoka kadi ?",
+       "confirmable-confirm": "{{GENDER:$1|Siguradoka}} kadi?",
        "confirmable-yes": "Wen",
        "confirmable-no": "Saan",
        "thisisdeleted": "Kitaen wenno ipulang $1?",
        "nstab-user": "Panid ti agar-aramat",
        "nstab-media": "Panid ti midia",
        "nstab-special": "Espesial a panid",
-       "nstab-project": "Panid ti gandat",
+       "nstab-project": "Panid ti proyekto",
        "nstab-image": "Papeles",
        "nstab-mediawiki": "Mensahe",
        "nstab-template": "Plantilia",
        "nosuchaction": "Awan ti kasta nga aramid",
        "nosuchactiontext": "Ti aramid a nainaganan babaen ti URL ket imbalido.\nMabalin a madi ti naimakiniliam nga URL, wenno sinurotmo ti saan a nasayaat a silpo.\nMabalinmo pay nga ibaga ti parikut ti sopwer nga us-usaren babaen ti {{SITENAME}}.",
        "nosuchspecialpage": "Awan ti kasta nga espesial a panid",
-       "nospecialpagetext": "<strong>Nagkiddawka ti imbalido nga espesial a panid.</strong>\n\nTi listaan dagiti umisu nga espesial a pampanid ket mabirukan iti [[Special:SpecialPages|{{int:specialpages}}]].",
+       "nospecialpagetext": "<strong>Nagkiddawka ti imbalido nga espesial a panid.</strong>\n\nTi listaan dagiti umiso nga espesial a pampanid ket mabirukan iti [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Biddut",
-       "databaseerror": "Biddut iti database",
+       "databaseerror": "Biddut ti database",
        "databaseerror-text": "Adda napasamak a biddut ti panagusisa ti database.\nDaytoy ket mabalin a mangibagbaga ti parikut ti sopwer.",
        "databaseerror-textcl": "Adda napasamak a biddut ti pangusisa ti database.",
        "databaseerror-query": "Usisa: $1",
        "title-invalid-magic-tilde": "Ti kiniddaw a titulo ti panid ket aglaon ti imbalido a panagsasaruno ti salamangka a tilde (<nowiki>~~~</nowiki>).",
        "title-invalid-too-long": "Atiddog unay ti kiniddaw a titulo ti panid. Nasken daytoy a saan nga at-atiddog ngem $1 {{PLURAL:$1|a byte|kadagiti byte}} iti UTF-8",
        "title-invalid-leading-colon": "Ti kiniddaw a titulo ti panid ket aglaon ti maysa nga imbalido a dua a tuldek iti pagrugian.",
-       "perfcached": "Ti sumaganad a datos ket naidulin ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagan|dagiti $1 a nagbanagan}} ket magun-od idiay nagidulinan.",
+       "perfcached": "Ti sumaganad a datos ket naidulin ken mabalin a saan a napabaro. Ti kaadu {{PLURAL:$1|iti maysa a nagbanagan|dagiti $1 a nagbanagan}} ket magun-od iti nagidulinan.",
        "perfcachedts": "Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu {{PLURAL:$4|iti maysa a nagbanagan|kadagiti $4 a nagbanagan}} ket magun-od iti pagidulinan.",
        "querypage-no-updates": "Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. \nSaan a mapasadiwa ita dagiti datos ditoy.",
        "viewsource": "Kitaen ti taudan",
        "actionthrottled": "Napabuntog ti aramid",
        "actionthrottledtext": "Para iti pagkontra ti spam, naipatinggaka nga agramid iti daytoy a tignay iti adu unay a beses iti nasiket nga oras, ken nalabsamon daytoy a patingga.\nPangngaasi nga ipadasmo manen no madamdama.",
        "protectedpagetext": "Nasalakniban daytoy a panid tapno mapawilan ti panagurnos wenno dagiti dadduma pay a tignay.",
-       "viewsourcetext": "Mabalinmo a kitaen ken tuladen ti taudan daytoy a panid:",
-       "viewyourtext": "Mabalinmo a makita ken tuladen ti taudan dagiti <strong>inurnosmo</strong> iti daytoy panid:",
-       "protectedinterface": "Daytoy a panid ket mangited iti testo ti interface para iti sopwer iti daytoy a wiki, ken nasalakniban tapno mapawilan ti panag-abuso.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
-       "editinginterface": "<strong>Ballaag:</strong> Ur-urnosem ti maysa a panid a maar-aramat a mangted iti testo ti interface para iti sopwer.\nDagiti panagsukat iti daytoy a panid ket maarigan ti langa ti interface ti agar-aramat para kadagiti sabali nga agar-aramat iti daytoy a wiki.",
-       "translateinterface": "Ti aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a gandat ti MediaWiki.",
+       "viewsourcetext": "Mabalinmo a kitaen ken tuladen ti taudan daytoy a panid.",
+       "viewyourtext": "Mabalinmo a makita ken tuladen ti taudan dagiti <strong>inurnosmo</strong> iti daytoy panid.",
+       "protectedinterface": "Daytoy a panid ket mangited iti teksto ti interface para iti sopwer iti daytoy a wiki, ken nasalakniban tapno mapawilan ti panagabuso.\nTi aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a proyekto ti MediaWiki.",
+       "editinginterface": "<strong>Ballaag:</strong> Ur-urnosem ti maysa a panid a maar-aramat a mangted iti teksto ti interface para iti sopwer.\nDagiti panagsukat iti daytoy a panid ket maarigan ti langa ti interface ti agar-aramat para kadagiti sabali nga agar-aramat iti daytoy a wiki.",
+       "translateinterface": "Ti aginayon wenno panagibaliw kadagiti panagipatarus para kadagiti amin a wiki,  pangngaasi nga usaren ti [//translatewiki.net/ translatewiki.net], ti lokalisasion a proyekto ti MediaWiki.",
        "cascadeprotected": "Daytoy a panid ket nasalaknibanen manipud iti panagurnos gapu ta nailak-am {{PLURAL:$1|iti sumaganad a panid|kadagiti sumaganad a panid}} a nasalakniban iti nalukatan a pagpilian ti \"sariap\":\n$2",
        "namespaceprotected": "Awan ti pammalubosmo nga agurnos kadagiti panid iti nagan ti espasio ti <strong>$1</strong>.",
        "customcssprotected": "Awan ti pammalubosmo nga agurnos iti daytoy panid ti CSS, ngamin ket naglaon ti personal a pannakaisaad iti sabali agar-aramat.",
        "myprivateinfoprotected": "Awan pammalubosmo nga agurnos iti pribado a pakaammom.",
        "mypreferencesprotected": "Awan pammalubosmo nga agurnos kadagiti kakaykayatam.",
        "ns-specialprotected": "Saan a mabalin nga urnosen dagiti espesial a panid.",
-       "titleprotected": "Daytoy a titulo ket nasalakniban manipud ti pannakapartuat babaen ni [[User:$1|$1]].\nTi naited a rason ket \"<em>$2</em>\".",
-       "filereadonlyerror": "Di nabaliwan ti papeles ti \"$1\" gapu ket ti repositorio ti papeles ti \"$2\" ket mabasa laeng a moda.\n\nTi administrador a nangserra ket nangited iti daytoy a panagilawlawag: \"$3\".",
-       "invalidtitle-knownnamespace": "Imbalido a titulo iti nagan ti espasio \"$2\" ken testo \"$3\"",
-       "invalidtitle-unknownnamespace": "Imbalido a titulo iti di ammo a nagan ti espasio a bilang $1 ken testo \"$2\"",
+       "titleprotected": "Daytoy a titulo ket nasalakniban manipud iti pannakapartuat babaen ni [[User:$1|$1]].\nTi naited a rason ket \"<em>$2</em>\".",
+       "filereadonlyerror": "Di nabaliwan ti papeles ti \"$1\" gapu ta ti repositorio ti papeles ti \"$2\" ket mabasa laeng a moda.\n\nTi administrador a nangserra ket nangited iti daytoy a panagilawlawag: \"$3\".",
+       "invalidtitle-knownnamespace": "Imbalido a titulo iti nagan ti espasio \"$2\" ken teksto \"$3\"",
+       "invalidtitle-unknownnamespace": "Imbalido a titulo iti di ammo a nagan ti espasio a bilang $1 ken teksto \"$2\"",
        "exception-nologin": "Saan a nakastrek",
        "exception-nologin-text": "Pangngaasi a sumrek tapno maserrekam daytoy a panid wenno tignay.",
        "exception-nologin-text-manual": "Pangngaasi a $1 tapno maserrekan daytoy a panid wenno tignay.",
        "createacct-realname": "Pudno a nagan (pagpilian)",
        "createaccountreason": "Rason:",
        "createacct-reason": "Rason",
-       "createacct-reason-ph": "Apay nga agparpartuatka manen ti sabali a pakabilangan",
+       "createacct-reason-ph": "Apay nga agparpartuatka manen iti sabali a pakabilangan",
        "createacct-captcha": "Panagpatalged ti seguridad",
-       "createacct-imgcaptcha-ph": "Ikabil ti testo a makitam dita ngato",
+       "createacct-imgcaptcha-ph": "Ikabil ti teksto a makitam dita ngato",
        "createacct-submit": "Partuatem ti pakabilangam",
        "createacct-another-submit": "Agpartuat iti sabali a pakabilangan",
        "createacct-benefit-heading": "Ti {{SITENAME}} ket inar-aramid babaen ti tattao a kasla kenka.",
        "badretype": "Saan nga agpada dagiti inkabilmo a kontrasenias.",
        "userexists": "Maus-usaren ti inkabilmo a nagan.\nPangngaasi nga agpilika iti sabali a nagan.",
        "loginerror": "Biddut ti iseserrek",
-       "createacct-error": "Biddut ti panagpartuat ti pakabilangan",
-       "createaccounterror": "Saan a makapartuat ti pakabilangan: $1",
+       "createacct-error": "Biddut ti panagpartuat iti pakabilangan",
+       "createaccounterror": "Saan a makapartuat iti pakabilangan: $1",
        "nocookiesnew": "Napartuaten ti pakabilangan ti agar-aramat, ngem saanka a nakastrek.\nTi {{SITENAME}} ket agus-usar kadagiti galietas tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida, ken sumrekka nga agusar iti baro a naganmo ken kontrasenias.",
        "nocookieslogin": "Ti {{SITENAME}} ket agus-usar kadagiti galietas tapno maiserrek dagiti agar-aramat.\nNabaldado dagiti galietam.\nPangngaasi a pakabaelam ida ken padasem manen ti sumrek.",
        "nocookiesfornew": "Ti pakabilangan ti agar-aramat ket saan a napartuat, saanmi a mapasingkedan ti taudanna.\nSiguraduem a napakabaelan dagita galietam, ikarga manen daytoy a panid ken padasen manen.",
        "noname": "Saanmo a nainaganan ti umisu a nagan ti agar-aramat.",
        "loginsuccesstitle": "Balligi ti panagserrek",
        "loginsuccess": "<strong>Nakastrekkan iti {{SITENAME}} a kas ni \"$1\".</strong>",
-       "nosuchuser": "Awan ti agar-aramat nga agnagan ti \"$1\". \n\nDagiti nagan ti agar-aramat ket sensitibo ti kadakkel ti letra.\n\nKitaem ti panangiletram, wenno [[Special:UserLogin/signup|agpartuat iti baro a pakabilangan]].",
-       "nosuchusershort": "Awan ti agar-aramat nga agnagan ti \"$1\".\nKitaem ti panangiletram.",
+       "nosuchuser": "Awan ti agar-aramat nga agnagan iti \"$1\". \n\nDagiti nagan ti agar-aramat ket sensitibo ti kadakkel ti letra.\n\nKitaem ti panangiletram, wenno [[Special:UserLogin/signup|agpartuat iti baro a pakabilangan]].",
+       "nosuchusershort": "Awan ti agar-aramat nga agnagan iti \"$1\".\nKitaem ti panangiletram.",
        "nouserspecified": "Nasken nga inaganam ti nagan ti agar-aramat.",
        "login-userblocked": "Naserraan daytoy nga agar-aramat. Saan a mapalubosan ti sumrek.",
        "wrongpassword": "Saan a husto ti naikabil a kontrasenias. \nPangngaasi a padasen manen.",
        "passwordtooshort": "Dagiti kontrasenias ket nasken a saan a basbasit ngem {{PLURAL:$1|1 a karakter|$1 a karkarakter}}.",
        "passwordtoolong": "Dagiti kontrasenias ket nasken a saan nga at-atiddog ngem {{PLURAL:$1|1 a karakter|$1 a karkarakter}}.",
        "password-name-match": "Nasken a ti kontrasenias ket maigiddiat manipud ti naganmo.",
-       "password-login-forbidden": "Ti panag-usar iti daytoy a nagan ti agar-aramat ken kontrasenias ket naipariten.",
+       "password-login-forbidden": "Naipariten ti panagusar iti daytoy a nagan ti agar-aramat ken kontrasenias.",
        "mailmypassword": "Isaad manen ti kontrasenias",
        "passwordremindertitle": "Baro a temporario a kontrasenias para iti {{SITENAME}}",
-       "passwordremindertext": "Adda maysa a tao (mabalin a sika met laeng, manipud iti IP a pagtaengan a $1) ket nagkiddaw ti baro a kontrasenias para iti {{SITENAME}} ($4). Ti temporario a kontrasenias para kenni agar-aramat \"$2\" ket napartuaten ken naisaad iti \"$3\". No kastan ti kinayatmo, nasken itan a sumrekka ken agpili ti baro a kontrasenias.\nTi temporario a kontraseniasmo ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\n\nNo sabali ti nagkiddaw, wenno nalagipmon ti kontraseniasmo,\nken dimo kayaten a sukatan daytoy, mabalinmo a di ikaskaso daytoy a mensahe ken agtuloy nga usaren ti daan a kontraseniasmo.",
-       "noemail": "Awan ti esurat a pagtaengan a nairehistro para iti agar-aramat a ni \"$1\".",
+       "passwordremindertext": "Adda maysa a tao (mabalin a sika met laeng, manipud iti IP a pagtaengan a $1) ket nagkiddaw iti baro a kontrasenias para iti {{SITENAME}} ($4). Ti temporario a kontrasenias para kenni agar-aramat \"$2\" ket napartuaten ken naisaad iti \"$3\". No kastan ti kinayatmo, nasken itan a sumrekka ken agpili iti baro a kontrasenias.\nTi temporario a kontraseniasmo ket agpaso {{PLURAL:$5|iti maysa nga aldaw|kadagiti $5 nga aldaw}}.\n\nNo sabali ti nagkiddaw, wenno nalagipmon ti kontraseniasmo,\nken dimo kayaten a sukatan daytoy, mabalinmo a di ikaskaso daytoy a mensahe ken agtuloy nga usaren ti daan a kontraseniasmo.",
+       "noemail": "Awan ti esurat a pagtaengan a nairehistro para kenni agar-aramat \"$1\".",
        "noemailcreate": "Nasken a mangitedka ti pudno nga esurat a pagtaengan.",
        "passwordsent": "Naipatuloden ti baro a kontrasenias iti esurat a pagtaengan a nairehistro kenni \"$1\".\nPangngaasi a sumrekka manen kalpasan ti pannakaawatmo.",
-       "blocked-mailpassword": "Ti IP a pagtaengam ket naserraan manipud ti panagurnos, ken isu a saan a mapalubosan nga agusar ti annong ti panagipulang ti kontrasenias tapno mapawilan ti panag-abuso.",
-       "eauthentsent": "Naipatuloden ti pammatalged nga esurat iti naikeddeng nga esurat a pagtaengan.\nSakbay a maipatulod ti aniaman nga esurat iti pakabilangan, masapul a surotem dagiti maibagbaga iti esurat, tapno mapatalgedan ti pakabilangan ket agpayso a kukuam.",
-       "throttled-mailpassword": "Ti panangisaad manen ti kontrasenias ket naipatuloden, iti kaunegan ti napalabas a {{PLURAL:$1|nga oras|$1 nga or-oras}}.\nTapno maipawilan ti panag-abuso, maysa laeng a panangisaad manen ti kontrasenias ti maipatulod iti kada {{PLURAL:$1|nga oras|$1 nga or-oras}}.",
+       "blocked-mailpassword": "Ti IP a pagtaengam ket naserraan manipud iti panagurnos, ken isu a saan a mapalubosan nga agusar ti annong ti panagipulang ti kontrasenias tapno mapawilan ti panagabuso.",
+       "eauthentsent": "Naipatuloden ti pammatalged nga esurat iti naikeddeng nga esurat a pagtaengan.\nSakbay a maipatulod ti ania man nga esurat iti pakabilangan, masapul a surotem dagiti maibagbaga iti esurat, tapno mapatalgedan ti pakabilangan ket agpayso a kukuam.",
+       "throttled-mailpassword": "Ti panangisaad manen ti kontrasenias ket naipatuloden, iti kaunegan ti napalabas  {{PLURAL:$1|nga oras|a $1 nga or-oras}}.\nTapno maipawilan ti panagabuso, maysa laeng a panangisaad manen ti kontrasenias ti maipatulod iti tunggal {{PLURAL:$1|maysa nga oras|$1 nga or-oras}}.",
        "mailerror": "Biddut iti panangipatulod ti surat: $1",
        "acct_creation_throttle_hit": "Dagiti sumarungkar iti daytoy a wiki nga agus-usar ti IP a pagtaengan ket nakapartuat {{PLURAL:$1|iti 1 a pakabilangan|kadagiti $1 a pakabilangan}} iti nasakbayan nga aldaw, nga isu laeng ti kaadu a maipalubos iti daytoy a paset ti panawen.\nA kas ti nagbanagan, dagiti agsarsarungkar nga agus-usar ti IP a pagtaengan ket agdama a saanda a mabalin a makapartuat kadagiti pakabilangan.",
        "emailauthenticated": "Ti esurat a pagtaengam ket napatalgedan idi $2, $3.",
        "user-mail-no-addy": "Pinadas nga inpatulod ti esurat nga awan ti maysa nga esurat a pagtaengan.",
        "user-mail-no-body": "Pinadas nga inpatulod ti esurat nga awan ti maysa a linaonna wenno ababa unay a bagi.",
        "changepassword": "Baliwan ti kontrasenias",
-       "resetpass_announce": "Tapno malpas ti panagserrek, nasken a mangisaadka ti baro a kontrasenias.",
+       "resetpass_announce": "Tapno malpas ti panagserrek, nasken a mangisaadka iti baro a kontrasenias.",
        "resetpass_header": "Sukatan ti kontrasenias ti pakabilangan",
        "oldpassword": "Daan a kontrasenias:",
        "newpassword": "Baro a kontrasenias:",
        "resetpass-abort-generic": "Ti panagsukat ti kontrasenias ket pinasardeng babaen ti maysa a pagpaatiddog.",
        "resetpass-expired": "Nagpason ti kontraseniasmo. Pangngaasi a mangisaad ti baro a kontrasenias tapno makastrek.",
        "resetpass-expired-soft": "Nagpason ti kontraseniasmo, ken nasken a maisaad manen. Pangngaasi nga agpili tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\"  tapno maisaad intono madamdama.",
-       "resetpass-validity-soft": "Saan nga umiso ti kontraseniasmo: $1\n\nAgpilika tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\" tapno maisaad intono madamdama.",
+       "resetpass-validity-soft": "Saan nga umisu ti kontraseniasmo: $1\n\nAgpilika tattan ti baro a kontrasenias, wenno pinduten ti \"{{int:resetpass-submit-cancel}}\" tapno maisaad intono madamdama.",
        "passwordreset": "Isaad manen ti kontrasenias",
        "passwordreset-text-one": "Kompletuen daytoy a porma tapno makaawat iti temporario a kontrasenias babaen ti esurat.",
        "passwordreset-text-many": "{{PLURAL:$1|Agpunno ti maysa kadagiti pagikabilan tapno makaawat ti temporario a kontrasenias babaen ti esurat.}}",
        "resettokens-watchlist-token": "Tandaan para iti pakan ti web (Atom/RSS) kadagiti [[Special:Watchlist|panagbalbaliw ti pampanid iti listaan ti bambantayam]]",
        "resettokens-done": "Naisaad manen dagiti tandaan.",
        "resettokens-resetbutton": "Isaad manen  dagiti napili a tandaan",
-       "bold_sample": "Napuskol a testo",
-       "bold_tip": "Napuskol a testo",
-       "italic_sample": "Italiko a testo",
-       "italic_tip": "Italiko a testo",
+       "bold_sample": "Napuskol a teksto",
+       "bold_tip": "Napuskol a teksto",
+       "italic_sample": "Teksto nga italiko",
+       "italic_tip": "Teksto nga italiko",
        "link_sample": "Titulo ti silpo",
        "link_tip": "Akin-uneg a silpo",
        "extlink_sample": "http://www.example.com titulo ti silpo",
        "extlink_tip": "Akinruar a silpo (laglagipen ti http:// a pasakbay)",
-       "headline_sample": "Testo ti paulo",
+       "headline_sample": "Teksto ti paulo",
        "headline_tip": "Maika-2 nga agasmang ti paulo",
-       "nowiki_sample": "Isengngat ti saan a naporma a testo ditoy",
+       "nowiki_sample": "Isengngat ti saan a naporma a teksto ditoy",
        "nowiki_tip": "Saan nga ikaskaso ti pannakaporma ti wiki",
        "image_tip": "Naisengngat a papeles",
        "media_tip": "Silpo ti papeles",
        "preview": "Ipadas",
        "showpreview": "Ipakita ti ipadas",
        "showdiff": "Ipakita dagiti sinukatan",
-       "blankarticle": "<strong>Ballaag:</strong> Ti panid a parpatuatem ket blanko.\nNo pindutem manen ti \"{{int:savearticle}}\", ti panid ket mapartuatto nga awan ti aniaman a linaon.",
+       "blankarticle": "<strong>Ballaag:</strong> Ti panid a parpatuatem ket blanko.\nNo pindutem manen ti \"{{int:savearticle}}\", ti panid ket mapartuatto nga awan ti ania man a linaon.",
        "anoneditwarning": "<strong>Ballaag:</strong> Saanka a nakastrek. Ti IP a pagtaengan ket publikonto a makita nga agaramidka iti ania man a panagurnos. No <strong>[$1 sumrekka]</strong> wenno <strong>[$2 agpartuatka iti pakabilangan]</strong>, dagiti inurnosmo ket maitunosto iti naganmo nga agar-aramat, ken dagiti dadduma pay a pagimbagan.",
        "anonpreviewwarning": "<em>Saanka a nakastrek. Ti panagidulin ket agirehistro ti IP a pagtaengam kadagitoy a pakasaritaan ti panagurnos iti daytoy a panid.</em>",
        "missingsummary": "<strong>Palagip:</strong> Saanka a nakaited iti pakabuklan ti panagurnos.\nNo pindutem manen ti \"{{int:savearticle}}\", maidulin ti inurnosmo nga awan ti pakabuklanna.",
        "subject-preview": "Suheto/naipadas a paulo:",
        "previewerrortext": "Adda napasamak a maysa a biddut bayat a nagpadpadas kadagiti binawbaliwam.",
        "blockedtitle": "Naseraan ti agar-aramat",
-       "blockedtext": "<strong>Naseraan ti naganmo nga agar-aramat wenno ti IP a pagtaengam.</strong>\n\nTi serra ket inaramid babaen ni $1. \nTi rason a naited ket <em>$2</em>.\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panagserra.\nDimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga esurat a pagtaengan a nainaganan iti [[Special:Preferences|pakabilangan ti kakaykayatm]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. \nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti aniaman nga aramidem nga usisa.",
-       "autoblockedtext": "Ti IP a pagtaengam ket automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddenga a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panagserra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"esuratan daytoy nga agar-aramat\" a langa malaksid no addaanka ti napudno nga esurat a pagtaengan a nakarehistro iti [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud ti panag-usar daytoy.\n\nTi tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.\nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti aniaman nga aramidem nga usisa.",
+       "blockedtext": "<strong>Naseraan ti naganmo nga agar-aramat wenno ti IP a pagtaengam.</strong>\n\nTi serra ket inaramid babaen ni $1. \nTi rason a naited ket <em>$2</em>.\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddeng a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno sabali pay nga [[{{MediaWiki:Grouppage-sysop}}|administrador]] no kayatmo a maipalawag daytoy a panagserra.\nDimo mabalin nga aramaten ti ramit nga esuratan daytoy nga agar-aramat malaksid no adda napudno nga esurat a pagtaengan a nainaganan iti [[Special:Preferences|pakabilangan ti kakaykayatm]] ken no saanka a naparitan nga agaramat iti daytoy.\nTi agdama nga IP a pagtaengam ket $3, ti naserraan nga ID ket #$5. \nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
+       "autoblockedtext": "Ti IP a pagtaengam ket automatiko a naserraan ngamin ket inusar ti sabali nga agar-aramat, a sinerraan ni $1.\nTi rason nga inted ket:\n\n:<em>$2</em>\n\n* Rugi ti serra: $8\n* Panagpaso ti serra: $6\n* Naikeddenga a serraanna: $7\n\nMabalinmo a kontaken ni $1 wenno maysa kadagiti [[{{MediaWiki:Grouppage-sysop}}|administrador]] tapno maipalawag daytoy a panagserra.\n\nLaglagipem a saanmo a mabalin nga usaren ti \"esuratan daytoy nga agar-aramat\" a langa malaksid no addaanka ti napudno nga esurat a pagtaengan a nakarehistro iti [[Special:Preferences|kakaykayatam]] ken saanka a naserraan manipud ti panagusar daytoy.\n\nTi tatta nga IP a pagtaengam ket $3, ken ti ID ti naserraan ket #$5.\nPangngaasi nga iramanmo amin dagiti salaysay dita ngato kadagiti ania man nga aramidem nga usisa.",
        "blockednoreason": "awan ti naited a rason",
        "whitelistedittext": "Pangngaasi a $1 tapno makaurnos kadagiti panid.",
        "confirmedittext": "Masapul a pasingkedam ti esurat sakbay a makaurnos kadagitoy a panid.\nPangngaasi nga isaad ken ipapudnom ti esuratmo babaen ti [[Special:Preferences|kakaykayatan ti agar-aramat]].",
-       "nosuchsectiontitle": "Saan a mabirukan ti paset",
-       "nosuchsectiontext": "Pinadasmo nga inurnos ti awan a paset.\nMabalin a naiyalis wenno naikkat bayat idi kitkitaem ti panid.",
+       "nosuchsectiontitle": "Saan a mabirukan ti seksion",
+       "nosuchsectiontext": "Pinadasmo nga inurnos ti awan a seksion.\nMabalin a naiyalis wenno naikkat bayat idi kitkitaem ti panid.",
        "loginreqtitle": "Masapul ti sumrek",
        "loginreqlink": "sumrek",
        "loginreqpagetext": "Pangngaasi a $1 tapno makitam dagiti sabali a panid.",
        "note": "<strong>Nota:</strong>",
        "previewnote": "<strong>Laglagipem a daytoy ket panagipadas laeng.</strong>\nDagiti sinukatam ket saan pay a naidulin!",
        "continue-editing": "Mapan idiay pagurnosan a lugar",
-       "previewconflict": "Daytoy a panagpadas ket mangipakita ti testo iti lugar ti akinngato a pangurnosan ti testo a kasla agparang no piliem nga idulin.",
+       "previewconflict": "Daytoy a panagpadas ket mangipakita ti teksto iti lugar ti akinngato a pangurnosan ti teksto a kasla agparang no piliem nga idulin.",
        "session_fail_preview": "<strong>Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.</strong>\nPangngaasi a padasen manen.\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
        "session_fail_preview_html": "<strong>Pasensia! Saanmi a maproseso ti panagurnosmo gapu ta naawanan ti sesion ti datos.</strong>'\n\n<em>Gapu ta ti {{SITENAME}} ket addaan iti naata a HTML a nakapabaelan, ti panagpadas ket nailemmeng a kas pagan-annadan kadagiti panagraut ti dakes a JavaScript.</em>\n\n<strong>No daytoy ket pudno a panagurnos, pangngaasi a padasem manen.</strong>\nNo saan pay a mabalin, padasen ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
-       "token_suffix_mismatch": "<strong>Ti panagurnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna dagiti karakter ti tuldek iti tandaan ti panagurnos.</strong>\nTi panagurnos ket saan a naawat tapno mapawilan ti pannakadadael ti testo ti panid.\nSagpaminsan a mapasamak daytoy no agus-usarka ti saan a nasayaat a naibatay ti web ti di ammo a pannakbagi a serbisio.",
+       "token_suffix_mismatch": "<strong>Ti panagurnosmo ket saan a naawat ngamin ket ti klientem ket dinadaelna dagiti karakter ti tuldek iti tandaan ti panagurnos.</strong>\nTi panagurnos ket saan a naawat tapno mapawilan ti pannakadadael ti teksto ti panid.\nSagpaminsan a mapasamak daytoy no agus-usarka ti saan a nasayaat a naibatay ti web ti di ammo a pannakbagi a serbisio.",
        "edit_form_incomplete": "<strong>Adda dagiti paset ti pagurnosan a porma a saan a nakadanon dita server; mamindua a kitaen dagiti panagurnosmo ket sibubukel ken padasen manen.</strong>",
        "editing": "Ur-urnosen ti $1",
-       "creating": "Agparpartuat ti $1",
-       "editingsection": "Ur-urnosen ti $1 (paset)",
-       "editingcomment": "Ur-urnosen ti $1 (baro a paset)",
+       "creating": "Agparpartuat iti $1",
+       "editingsection": "Ur-urnosen ti $1 (seksion)",
+       "editingcomment": "Ur-urnosen ti $1 (baro a seksion)",
        "editconflict": "Agsinnungat a panagurnos: $1",
-       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi akinngato a lugar ti testo ket aglaon ti testo ti panid iti agdama kaaddana.\nDagiti sinukatam ket maipakita iti akinbaba a lugar ti testo.\nNasken nga itiponmonto dagiti sinukatam iti adda a testo.\nTi <strong>laeng</strong> testo iti akinngato a lugar ti testo ti maidulinto no talmegam ti \"{{int:savearticle}}\".",
-       "yourtext": "Ti testom",
+       "explainconflict": "Adda sabali a nagsukat iti daytoy a panid idi nangrugika a nagurnos.\nTi akinngato a lugar ti teksto ket aglaon ti teksto ti panid iti agdama kaaddana.\nDagiti sinukatam ket maipakita iti akinbaba a lugar ti teksto.\nNasken nga itiponmonto dagiti sinukatam iti adda a teksto.\nTi <strong>laeng</strong> teksto iti akinngato a lugar ti teksto ti maidulinto no talmegam ti \"{{int:savearticle}}\".",
+       "yourtext": "Ti tekstom",
        "storedversion": "Rebision a naidulin",
        "nonunicodebrowser": "<strong>Ballaag: Ti pabasabasam ket saan a maitunos iti Unicode .</strong>\nAdda sabali a mausar tapno makaurnoska kadagiti panid: Ti saan nga-ASCII a karakter ket agparang iti pagurnosan a kahon a kas dagiti heksadesimal a kodigo.",
-       "editingold": "<strong>Ballag: Ur-urnosem ti daan a rebision iti daytoy a panid.</strong>\nNo idulinmo, ti aniaman a naramid a binaliwan manipud iti daytoy a rebision ket mapukawto.",
+       "editingold": "<strong>Ballag: Ur-urnosem ti daan a rebision iti daytoy a panid.</strong>\nNo idulinmo, mapukawto ti ania man a naaramid a binaliwan manipud iti daytoy a rebision.",
        "yourdiff": "Paggigiddiatan",
-       "copyrightwarning": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket naikeddeng a naipablaak babaen ti babaen ti $2 (kitaen ti $1 para kadagiti salaysay). \nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud ti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan.\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
-       "copyrightwarning2": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket mabalin a maurnos, mabaliwan, wenno ikkaten dagiti sabali a kontributor.\nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud ti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan. (kitaen ti $1 para kadagiti salaysay).\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
+       "copyrightwarning": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket naikeddeng a naipablaak babaen ti babaen ti $2 (kitaen ti $1 para kadagiti salaysay). \nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud iti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan.\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
+       "copyrightwarning2": "Pangngaasi a laglagipen nga amin a kontribusion iti {{SITENAME}} ket mabalin a maurnos, mabaliwan, wenno ikkaten dagiti sabali a kontributor.\nNo dimo kayat a ti sinuratmo ket maurnos nga awanan-asi ken maiwaras nga awan sungsungbatan kenka, saanmon nga ited ditoy.<br />\nIkarkarim pay kadakami a bukodmo a sinurat daytoy, wenno kinopia manipud iti publiko a dominio wenno ti kapadpadana a nawaya a nagtaudan. (kitaen ti $1 para kadagiti salaysay).\n<strong>Saan a mangited ti nakarbengan ti kopia nga obra no awan iti pammalubos!</strong>",
        "editpage-cannot-use-custom-model": "Saan a mabaliwan ti modelo ti linaon iti daytoy a panid.",
-       "longpageerror": "<strong>Biddut: Ti testo nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kilkilobyte}} ti katiddogna, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kilkilobyte}}.</strong>\nSaan a mabalin a maidulin.",
+       "longpageerror": "<strong>Biddut: Ti teksto nga intedmo ket {{PLURAL:$1|maysa a kilobyte|$1 kilkilobyte}} ti katiddogna, nga at-atiddog ngem ti kangatuan iti  {{PLURAL:$2|maysa a kilobyte|$2 kilkilobyte}}.</strong>\nSaan a mabalin a maidulin.",
        "readonlywarning": "<strong>Ballaag: Narikepan ti database tapno mataripato, isu a saanmo a mabalin nga idulin dagita inurnosmo tattan.</strong>\nMabalinmo ti agkopia ken agipegket ti testom iti papeles ti testo ken idulinmo daytoy intono madamdama.\n\nTi administrador a nangrikep ket nangited iti daytoy a palawag: $1",
        "protectedpagewarning": "<strong>Ballaag: Daytoy a panid ket nasalakniban tapno dagiti laeng agar-aramat nga addaan iti gundaway nga administrador ti makaurnos ditoy.</strong>\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
        "semiprotectedpagewarning": "<strong>Nota:</strong> Nasalakniban daytoy a panid tapno dagiti laeng nakarehistro nga agar-aramat ti makaurnos ditoy.\nTi naudi a naikabil iti listaan ket naited dita baba para iti reperensia:",
        "hiddencategories": "Daytoy a panid ket kameng {{PLURAL:$1|ti 1 a nailemmeng a kategoria|dagiti $1 a nailemmeng a kategoria}}:",
        "nocreatetext": "Ginawidan ti {{SITENAME}} ti abilidad nga agpartuat kadagiti baro a panid.\nMabalinmo ti agsubli ken agurnos ti adda a panid, wenno [[Special:UserLogin|sumrek wenno agapartuat iti pakabilangan]].",
        "nocreate-loggedin": "Awan ti pammalubosmo nga agpartuat kadagiti baro a panid.",
-       "sectioneditnotsupported-title": "Saan a nasuportaran ti panagurnos ti paset",
-       "sectioneditnotsupported-text": "Saan a nasuportaran ti panagurnos ti paset iti daytoy a panid.",
+       "sectioneditnotsupported-title": "Saan a nasuportaran ti panagurnos iti seksion",
+       "sectioneditnotsupported-text": "Saan a nasuportaran ti panagurnos iti seksion iti daytoy a panid.",
        "permissionserrors": "Biddut ti pammalubos",
        "permissionserrorstext": "Awan ti pammalubosmo nga agaramid iti dayta, gapu ti sumaganad {{PLURAL:$1|a rason|a rasrason}}:",
        "permissionserrorstext-withaction": "Awan ti pammalubosmo nga $2, gapu ti sumaganad a {{PLURAL:$1|rason|rasrason}}:",
        "edit-hook-aborted": "Ti panagurnos ket pinasardeng babaen ti kawit.\nAwan ti intedna a palawag.",
        "edit-gone-missing": "Saan a mapabaro daytoy a panid.\nKasla met naikkaten.",
        "edit-conflict": "Agsinnungat a panagurnos.",
-       "edit-no-change": "Ti inurnosmo ket saan a naikaskaso ngamin ket awan ti naaramid a pannakasukat iti testo.",
+       "edit-no-change": "Ti inurnosmo ket saan a naikaskaso ngamin ket awan ti naaramid a pannakasukat iti teksto.",
        "postedit-confirmation-created": "Napartuaten ti panid.",
        "postedit-confirmation-restored": "Naipulangen ti panid.",
        "postedit-confirmation-saved": "Naidulinen ti inurnosmo.",
        "edit-already-exists": "Saan a makapartuat iti baro a panid.\nAdda met daytoyen.",
-       "defaultmessagetext": "Kasisigud a testo ti mensahe",
+       "defaultmessagetext": "Kasisigud a teksto ti mensahe",
        "content-failed-to-parse": "Napaay a mawaswas ti $2 a linaon para iti $1 a modelo: $3",
        "invalid-content-data": "Imbalido a datos ti linaon",
        "content-not-allowed-here": "Ti \"$1\" a linaon ket saan a maipalubos iti panid ti [[$2]]",
-       "editwarning-warning": "Ti ipapanaw iti daytoy a panid ket makapataud ti pannakapukaw kadagiti aniaman a binalbaliwam.\nNo nakastrekka, mabalinmo nga ibaldado daytoy a ballaag iti \"{{int:prefs-editing}}\" a paset kadagiti kakaykayatam.",
+       "editwarning-warning": "Ti ipapanaw iti daytoy a panid ket makapataud ti pannakapukaw kadagiti ania man a binalbaliwam.\nNo nakastrekka, mabalinmo nga ibaldado daytoy a ballaag iti \"{{int:prefs-editing}}\" a seksion kadagiti kakaykayatam.",
        "editpage-notsupportedcontentformat-title": "Ti pormat ti linaon ket saan a nasuportaran",
        "editpage-notsupportedcontentformat-text": "Ti pormat ti linaon ti $1 ket saan a nasuportaran babaen ti modelo ti linaon ti $2.",
        "content-model-wikitext": "wikitext",
-       "content-model-text": "naranas a testo",
+       "content-model-text": "naranas a teksto",
        "content-model-javascript": "JavaScript",
        "content-model-css": "CSS",
        "content-json-empty-object": "Awan linaon a banag",
        "parser-unstrip-recursion-limit": "Nalabsan ti patingga ti panagdullit ti di-naukisan ($1)",
        "converter-manual-rule-error": "Adda biddut a naduktalan iti manual nga alagaden ti panagbalbaliw ti pagsasao",
        "undo-success": "Ti panag-urnos ket saan a maisubli.\nPangngaasi a kitaen ti panangipada dita baba tapno maammuan no daytoy ti kayatmo nga aramiden, ken kalpasanna idulin dagiti sinukatan dita baba tapno malpas ti panagsubli ti inurnos.",
-       "undo-failure": "Ti inurnos ket saan a maipasubli gaputa adda dagiti nakisinnungat a patingnga a naurnos.",
+       "undo-failure": "Ti inurnos ket saan a maipasubli gapu ta adda dagiti nakisinnungat a patingnga a naurnos.",
        "undo-norev": "Saan a maibabawi ti naurnos ngamin ket awan daytoy wenno mabalin a naikkaten.",
        "undo-nochange": "Ti inurnos ket kasla naibabawin.",
        "undo-summary": "Ibabawi ti $1 a binaliwan babaen ni [[Special:Contributions/$2|$2]] ([[User talk:$2|tungtungan]])",
        "undo-summary-username-hidden": "Isubli ti $1 a binaliwan babaen ti nailemmeng nga agar-aramat",
-       "cantcreateaccounttitle": "Saan a makapartuat ti pakabilangan",
-       "cantcreateaccount-text": "Ti panagpartuat ti pakabilangan manipud ti daytoy nga IP a pagtaengan (<strong>$1</strong>) ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket <em>$2</em>",
-       "cantcreateaccount-range-text": "Ti panagpartuat ti pakabilangan manipud kadagiti pagtaengan ti IP iti sakop ti '''$1''', a mairaman ti IP a pagtaengam ('''$4'''), ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket ''$2''",
+       "cantcreateaccounttitle": "Saan a makapartuat iti pakabilangan",
+       "cantcreateaccount-text": "Ti panagpartuat iti pakabilangan manipud ti daytoy nga IP a pagtaengan (<strong>$1</strong>) ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket <em>$2</em>",
+       "cantcreateaccount-range-text": "Ti panagpartuat iti pakabilangan manipud kadagiti pagtaengan ti IP iti sakop ti '''$1''', a mairaman ti IP a pagtaengam ('''$4'''), ket sinerraan babaen ni [[User:$3|$3]].\n\nTi inted a rason babaen ni $3 ket ''$2''",
        "viewpagelogs": "Kitaen dagiti listaan para iti daytoy a panid",
        "nohistory": "Awan ti pakasaritaan ti panagurnos iti daytoy a panid.",
        "currentrev": "Kinaudi a rebision",
        "page_first": "umuna",
        "page_last": "naudi",
        "histlegend": "Panagpili ti diperensia: Markaan dagiti kahon ti radio kadagiti rebision tapno maipada ken pinduten ti enter wenno ti buton dita baba.<br />\nLeyenda: <strong>({{int:cur}})</strong> = naggidiatan ti kinaudi a rebision, <strong>({{int:last}})</strong> = naggidiatan ti sarsarunuen a rebision, <strong>{{int:minoreditletter}}</strong> = bassit nga urnos.",
-       "history-fieldset-title": "Agbasabasa ti pakasaritaan",
+       "history-fieldset-title": "Agbasabasa iti pakasaritaan",
        "history-show-deleted": "Naikkat laeng",
        "histfirst": "kadaanan",
        "histlast": "kabaruan",
        "history-feed-title": "Pakasaritaan ti rebision",
        "history-feed-description": "Pakasaritaan ti rebision para iti daytoy a panid ditoy a wiki",
        "history-feed-item-nocomment": "$1 idi $2",
-       "history-feed-empty": "Awan ti kiniddaw a panid.\nMabalin a naikkat manipud ti daytoy a wiki, wenno nanaganan manen.\nPadasem ti [[Special:Search|agbiruk ditoy a wiki]] para kadagiti maitutop a baro a panid.",
+       "history-feed-empty": "Awan ti kiniddaw a panid.\nMabalin a naikkat manipud iti daytoy a wiki, wenno nanaganan manen.\nPadasem ti [[Special:Search|agbiruk ditoy a wiki]] para kadagiti maitutop a baro a panid.",
        "history-edit-tags": "Urnosen dagiti etiketa kadagiti napili a rebision",
        "rev-deleted-comment": "(naikkat ti pakabuklan ti inurnos)",
        "rev-deleted-user": "(naikkat ti nagan ti agar-aramat)",
        "rev-deleted-event": "(naikkat ti listaan dagiti salaysay)",
        "rev-deleted-user-contribs": "[naikkat ti nagan ti agar-aramat wenno IP a pagtaengan - ti inurnos ket nailemmeng manipud kadagiti kontribusion]",
-       "rev-deleted-text-permission": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
-       "rev-suppressed-text-permission": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
-       "rev-deleted-text-unhide": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
-       "rev-suppressed-text-unhide": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
-       "rev-deleted-text-view": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
-       "rev-suppressed-text-view": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
-       "rev-deleted-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a rebision ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-deleted-text-permission": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-text-permission": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabalin a mabirukan iti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
+       "rev-deleted-text-unhide": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
+       "rev-suppressed-text-unhide": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a [$1 makita daytoy a rebision] no kayatmo ti agtuloy.",
+       "rev-deleted-text-view": "Ti rebision daytoy a panid ket <strong>naikkaten</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-text-view": "Ti rebision daytoy a panid ket <strong>napasardeng</strong>.\nMabalinmo a kitaen; dagiti salaysay ket mabirukan itiy [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
+       "rev-deleted-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket ti maysa a rebision ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
        "rev-suppressed-no-diff": "Saanmo a makita daytoy a paggiddiatan ngamin ket maysa kadagiti rebision ket <strong>naikkaten</strong>.",
-       "rev-deleted-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-       "rev-suppressed-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
-       "rev-deleted-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
-       "rev-suppressed-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>..\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idiay [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
+       "rev-deleted-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+       "rev-suppressed-unhide-diff": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>.\nDagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].\nMabalinmo pay a laeng a [$1 makita daytoy a paggiddiatan] no kayatmo ti agtuloy.",
+       "rev-deleted-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>naikkaten</strong>.\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "rev-suppressed-diff-view": "Maysa a rebision iti daytoy a paggiddiatan ket <strong>napasardeng</strong>..\nMabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan iti [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} listaan ti panagpasardeng].",
        "rev-delundel": "baliwan ti pannakakita",
        "rev-showdeleted": "ipakita",
        "revisiondelete": "Ikkaten/isubli dagiti naikkat a rebision",
        "revdelete-confirm": "Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ken ar-aramidem daytoy segun [[{{MediaWiki:Policy-url}}|ti annuroten]].",
        "revdelete-suppress-text": "Ti panagdepdep ket usaren <strong>laeng</strong> kadagiti sumaganad a kaso;\n* Makapataud ti libelo a pakaammo\n* Di maiparbeng a personal a pakaammo\n* : <em>dagiti adres ti balay ken numero ti telepono, dagiti numero ti nailian a pakaipakaammuan, kdpy.</em>",
        "revdelete-legend": "Isaad dagiti panangigawid ti panagkita",
-       "revdelete-hide-text": "Testo ti rebision",
+       "revdelete-hide-text": "Teksto ti rebision",
        "revdelete-hide-image": "Ilemmeng ti linaon ti papeles",
        "revdelete-hide-name": "Ilemmeng ti puntaan ken dagiti parametro",
        "revdelete-hide-comment": "Pakabuklan ti inurnos",
        "revdelete-hide-current": "Biddut ti pannakailemmeng ti banag a napetsado ti $2, $1: Daytoy ti kinaudi a rebision.\nSaan a mabalin a mailemmeng.",
        "revdelete-show-no-access": "Biddut ti panangipakita ti banag a petsado ti $2, $1: Daytoy ket namarkaan a \"nagawidan\".\nSaanmo a mabalin a serrekan.",
        "revdelete-modify-no-access": "Biddut ti panagpabaro ti banag a petsado ti $2, $1: Daytoy ket namarkaan a \"nagawidan\".\nSaanmo a mabalin a serrekan.",
-       "revdelete-modify-missing": "Biddut ti panagpabaro daytoy ID $1: Awan daytoy manipud ti database!",
-       "revdelete-no-change": "<strong>Ballaag:</strong> Daytoy a banag a napetsado ti $2, $1 ken addaan ti kiniddaw a panagkita ti pannakaisaad.",
+       "revdelete-modify-missing": "Biddut ti panagpabaro daytoy ID $1: Awan daytoy manipud iti database!",
+       "revdelete-no-change": "<strong>Ballaag:</strong> Daytoy a banag a napetsado ti $2, $1 ken addaan iti kiniddaw a panagkita ti pannakaisaad.",
        "revdelete-concurrent-change": "Biddut ti panagpabaro daytoy a banag a napetsado ti  $2, $1: Ti kasasaadna ket mabalin a nasukatanen ti sabali idi pinadasmo a pinabaro.\nPangngaasi a kitaen dagiti listaan.",
-       "revdelete-only-restricted": "Biddut ti panagilemmeng daytoy banag a napetsado ti $2, $1: Saanmo a maidepdep dagita iti panagkita dagiti adminitrador no saanmo a pilien ti maysa kadagiti pagpilian ti panagkita.",
+       "revdelete-only-restricted": "Biddut ti panagilemmeng daytoy banag a napetsado ti $2, $1: Saanmo a maidepdep dagita iti panagkita dagiti administrador no saanmo a pilien ti maysa kadagiti pagpilian ti panagkita.",
        "revdelete-reason-dropdown": "*Dagiti kadawyan a rason ti panagikkat\n** Panaglabsing ti karbengan ti kopia\n** Di maiparbeng a komentario wenno kabukbukodan a pakaammo\n** Di maiparbeng a nagan ti agar-aramat\n** Mabalin a pammadpadakes a pakaammo",
        "revdelete-otherreason": "Sabali/maipatinayon a rason:",
        "revdelete-reasonotherlist": "Sabali a rason",
        "mergelog": "Listaan ti panagtipon",
        "revertmerge": "Pagsinaen",
        "mergelogpagetext": "Dita baba ket ti listaan dagiti kaudian a panagtipon ti maysa a pakasaritaan ti panid iti sabali.",
-       "history-title": "Pakasaritaan a rebision iti \"$1\"",
-       "difference-title": "Paggiddiatan a nagbaetan dagiti rebision iti \"$1\"",
-       "difference-title-multipage": "Paggiddiatan a nagbaetan dagiti panid  \"$1\" ken \"$2\"",
+       "history-title": "Pakasaritaan ti rebision ti \"$1\"",
+       "difference-title": "Paggiddiatan a nagbaetan dagiti rebision ti \"$1\"",
+       "difference-title-multipage": "Paggiddiatan a nagbaetan dagiti panid \"$1\" ken \"$2\"",
        "difference-multipage": "(Paggiddiatan dagiti panid)",
        "lineno": "Linia $1:",
        "compareselectedversions": "Ipada dagiti pinili a rebision",
        "diff-multi-sameuser": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen ti isu met laeng nga agar-aramat a saan a naipakita)",
        "diff-multi-otherusers": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen {{PLURAL:$2|ti maysa a sabali nga agar-aramat|dagiti $2 nga agar-aramat}} a saan a naipakita)",
        "diff-multi-manyusers": "({{PLURAL:$1|Maysa nga agtengnga a rebision|Dagiti $1 nga agtengnga a rebision}} babaen ti ad-adu ngem $2 {{PLURAL:$2|nga agar-aramat|kadagiti agar-aramat}} ti saan a naipakita)",
-       "difference-missing-revision": "{{PLURAL:$2|Maysa a rebision|$2 kadagiti rebision}} iti daytoy a paggiddiatan ($1) {{PLURAL:$2|ket ti|ket dagiti}} saan a naburikan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a nabaak a silpo ti paggiddiatan ti maysa a panid a naikkaten.\nDagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
-       "searchresults": "Dagiti nagbanagan ti panagbiruk",
-       "searchresults-title": "Dagiti nabirukan a nagbanagan para iti \"$1\"",
+       "difference-missing-revision": "{{PLURAL:$2|Maysa a rebision|$2 kadagiti rebision}} iti daytoy a paggiddiatan ($1) {{PLURAL:$2|ket ti|ket dagiti}} saan a naburikan.\n\nDaytoy ket kadawyan a gapuanan babaen ti sumaganad a nabaak a silpo ti paggiddiatan ti maysa a panid a naikkaten.\nDagiti salaysay ket mabalin a mabirukan iti [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} listaan ti panagikkat].",
+       "searchresults": "Dagiti resulta ti panagbiruk",
+       "searchresults-title": "Dagiti resulta ti panagbiruk para iti \"$1\"",
        "titlematches": "Dagiti kapadpada a titulo ti panid",
-       "textmatches": "Dagiti agpapada a testo ti panid",
-       "notextmatches": "Awan dagiti kapadpada a testo ti panid",
+       "textmatches": "Dagiti agpapada a teksto ti panid",
+       "notextmatches": "Awan dagiti kapadpada a teksto ti panid",
        "prevn": "napalabas a {{PLURAL:$1|$1}}",
        "nextn": "sumaruno a {{PLURAL:$1|$1}}",
        "prev-page": "napalabas a panid",
        "searchprofile-images": "Multimidia",
        "searchprofile-everything": "Amin amin",
        "searchprofile-advanced": "Napasayaat",
-       "searchprofile-articles-tooltip": "Agbirukka idiay $1",
+       "searchprofile-articles-tooltip": "Agbirukka iti $1",
        "searchprofile-images-tooltip": "Agbirukka para iti papeles",
        "searchprofile-everything-tooltip": "Birukem amin a linaon (uray dagiti tungtungan a panid)",
        "searchprofile-advanced-tooltip": "Agbirukka kadagiti naiduma a nagan ti espasio",
        "search-result-size": "$1 ({{PLURAL:$2|iti 1 a balikas|kadagiti $2 a balikas}})",
        "search-result-category-size": "{{PLURAL:$1|1 a kameng| dagiti $1 a kameng}} ({{PLURAL:$2|1 a subkategoria|dagiti $2 a subkategoria}}, {{PLURAL:$3|1 a papeles|dagiti $3 a papeles}})",
-       "search-redirect": "(baw-ing ti $1)",
-       "search-section": "(paset $1)",
+       "search-redirect": "(baw-ing $1)",
+       "search-section": "(seksion $1)",
        "search-category": "(kategoria $1)",
        "search-file-match": "(maipada ti linaon a papeles)",
        "search-suggest": "Daytoy kadi: $1",
-       "search-interwiki-caption": "Dagiti kakabsat a gandat",
-       "search-interwiki-default": "Dagiti resulta manipud ti $1:",
+       "search-rewritten": "Agipakita para kadagiti resulta ti $1. Imbes ket nga agbiruk para iti $2.",
+       "search-interwiki-caption": "Dagiti kakabsat a proyekto",
+       "search-interwiki-default": "Dagiti resulta manipud iti $1:",
        "search-interwiki-more": "(adu pay)",
        "search-relatedarticle": "Mainaig",
        "searchrelated": "mainaig",
        "searchall": "amin",
-       "showingresults": "Maiparang dita baba agingga {{PLURAL:$1|iti <strong>1</strong> a nagbanagan|dagiti <strong>$1</strong> a nagbanagan}} a mangrugi ti #<strong>$2</strong>.",
-       "showingresultsinrange": "Mangipakpakita aginggana {{PLURAL:$1|iti <strong>1</strong> a resulta|dagiti <strong>$1</strong> a resulta}} iti sakop ti #<strong>$2</strong> aginggana ti #<strong>$3</strong>.",
+       "showingresults": "Maiparang dita baba agingga {{PLURAL:$1|iti <strong>1</strong> a nagbanagan|dagiti <strong>$1</strong> a nagbanagan}} a mangrugi iti #<strong>$2</strong>.",
+       "showingresultsinrange": "Mangipakpakita aginggana {{PLURAL:$1|iti <strong>1</strong> a resulta|dagiti <strong>$1</strong> a resulta}} iti sakop ti #<strong>$2</strong> aginggana iti #<strong>$3</strong>.",
        "search-showingresults": "{{PLURAL:$4|Nagbanagan a <strong>$1</strong> iti <strong>$3</strong>|Dagiti nagbanagan a <strong>$1 - $2</strong> iti <strong>$3</strong>}}",
-       "search-nonefound": "Awan dagiti nagbanagan a maipada ti usisa.",
+       "search-nonefound": "Awan dagiti nagbanagan a maipada iti usisa.",
        "powersearch-legend": "Napasayat a panagbiruk",
        "powersearch-ns": "Agbiruk kadagiti nagan ti espasio:",
        "powersearch-togglelabel": "Markaan:",
        "powersearch-togglenone": "Awan",
        "powersearch-remember": "Lagipen ti napili para kadagiti masakbayan a panagbiruk",
        "search-external": "Akinruar a panagbiruk",
-       "searchdisabled": "Nabaldado ti panagbiruk iti {{SITENAME}}.\nMabalinmo itan ti agbiruk idiay Google.\nLaglagipem laeng a dagiti pagsurotan a linaon ti {{SITENAME}} ket mabalin a baak.",
+       "searchdisabled": "Nabaldado ti panagbiruk iti {{SITENAME}}.\nMabalinmo itan ti agbiruk iti Google.\nLaglagipem laeng a dagiti pagsurotan a linaon ti {{SITENAME}} ket mabalin a baak.",
        "search-error": "Adda napasamak a biddut bayat nga agbirbiruk: $1",
        "preferences": "Kakaykayatan",
        "mypreferences": "Kakaykayatan",
        "prefs-email": "Dagiti pagpilian ti esurat",
        "prefs-rendering": "Tabas",
        "saveprefs": "Idulin",
-       "restoreprefs": "Isubli amin dagiti kasisigud a pannakaisaad (kadagiti amin a paset)",
+       "restoreprefs": "Isubli amin dagiti kasisigud a pannakaisaad (kadagiti amin a seksion)",
        "prefs-editing": "Ur-urnosen",
        "rows": "Ar-aray:",
-       "columns": "Tuk-tukol:",
+       "columns": "Dagiti batong:",
        "searchresultshead": "Biruken",
-       "stub-threshold": "Pagpatinggaan para iti panagporma ti <a href=\"#\" class=\"stub\">pungol a silpo</a> (dagiti byte):",
+       "stub-threshold": "Pagpatinggaan para iti panagpormat iti <a href=\"#\" class=\"stub\">pungol a silpo</a> (dagiti byte):",
        "stub-threshold-disabled": "Nabaldado",
        "recentchangesdays": "Al-aldaw nga ipakita iti kaudian a balbaliw:",
        "recentchangesdays-max": "Kapaut nga $1 {{PLURAL:$1|nga aldaw|nga al-aldaw}}",
        "badsig": "Imbalido a naata a pirma.\nKitaen dagiti etiketa ti HTML.",
        "badsiglength": "Atiddog unay ti pirmam.\nMasapul a saan nga ad-adu ngem $1 {{PLURAL:$1| a karakter|a karkarakter}} ti kaatiddogna.",
        "yourgender": "Kasano kadi ti kayatmo a pannakaibaga?",
-       "gender-unknown": "Kaykayatko a saan nga ibaga",
+       "gender-unknown": "No maibagbagaka, agusarto ti sopwer kadagiti neutral a balikas ti gender no mabalin",
        "gender-male": "Isuna ket lalaki nga agur-urnos ti pampanid ti wiki",
        "gender-female": "Isuna ket babai nga agur-urnos ti pampanid ti wiki",
        "prefs-help-gender": "Ti panangisaad daytoy a kakaykayatan ket saan a nasken.\nTi sopwer ket agus-usar iti pategna tapno tawagannaka ken ibaganaka kadagiti sabali nga agus-usar iti maitunos gramatika ti henero.\nDaytoy a pakaammo ket makitanto iti publiko.",
        "prefs-help-prefershttps": "Daytoy a kakaykayatan ket mapakabaelanto iti sumaruno nga iseserrekmo.",
        "prefswarning-warning": "Nagaramikka kadagiti panagbalbaliw kadagiti kakaykayatam a saan pay a naidulin.\nNo panawan daytoy a panid a saan nga agpindut iti \"$1\" dagiti kakaykayatam ket saanto a mapabaro.",
        "prefs-tabs-navigation-hint": "Pakaammo: Mabalinmo nga usaren dagiti kanigid ken kanawan a tekla ti pana tapno madaliasat ti baetan dagiti etiketa iti listaan dagiti etiketa.",
-       "email-address-validity-valid": "Ti esurat a pagtaengan ket kasla umiso",
-       "email-address-validity-invalid": "Ikabil ti umiso nga esurat a pagtaengan",
+       "email-address-validity-valid": "Ti esurat a pagtaengan ket kasla umisu",
+       "email-address-validity-invalid": "Ikabil ti umisu nga esurat a pagtaengan",
        "userrights": "Panagtaripato kadagiti karbengan ti agar-aramat",
        "userrights-lookup-user": "Agtaripato kadagiti grupo ti agar-aramat",
        "userrights-user-editname": "Mangiserrek iti nagan ti agar-aramat:",
        "editinguser": "Suksukatan ti karbengan ni {{GENDER:$1|agar-aramat}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Urnosen dagiti grupo ti agar-aramat",
        "saveusergroups": "Idulin dagiti grupo ti agar-aramat",
-       "userrights-groupsmember": "Kameng iti:",
-       "userrights-groupsmember-auto": "Napudno a kameng iti:",
-       "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti nakur-it a kahon ket kayatna a saoen nga adda ti agar-aramat dita a grupo.\n* Ti saan a nakur-it a kahon ket kayatna a saoen nga awan ti agar-aramat dita a grupo.\n* A * mangipakita a saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.",
+       "userrights-groupsmember": "Kameng ti:",
+       "userrights-groupsmember-auto": "Napudno a kameng ti:",
+       "userrights-groups-help": "Mabaliwam dagiti ayan a grupo ti agar-aramat:\n* Ti nakur-it a kahon ket kayatna a sawen nga adda ti agar-aramat dita a grupo.\n* Ti saan a nakur-it a kahon ket kayatna a sawen nga awan ti agar-aramat dita a grupo.\n* A * mangipakita a saanmo a maikkat ti grupo no nainayonmon, wenno pagbalittaden.",
        "userrights-reason": "Rason:",
        "userrights-no-interwiki": "Awan ti pammalubosmo nga agurnos ti karbengan ti agar-aramat kadagiti sabali a wiki.",
        "userrights-nodatabase": "Awan ti database a $1 wenno saan a lokal.",
        "right-read": "Basaen dagiti panid",
        "right-edit": "Agurnos kadagiti panid",
        "right-createpage": "Agpartuat kadagiti panid (saan a pagtutungtongan a pampanid)",
-       "right-createtalk": "Agpartuat ti pagtungtungan a pampanid",
+       "right-createtalk": "Agpartuat iti pagtungtungan a pampanid",
        "right-createaccount": "Agpartuat kadagiti baro a pakabilangan ti agar-aramat",
        "right-minoredit": "Markaan dagiti inurnos a kas bassit",
        "right-move": "Agiyalis kadagiti panid",
        "right-move-subpages": "Agiyalis kadagiti panid a kakuyog dagiti subpanidda",
        "right-move-rootuserpages": "Agiyalis kadagiti ramut a panid ti agar-aramat",
-       "right-move-categorypages": "Agiyalis ti pampanid ti kategoria",
+       "right-move-categorypages": "Agiyalis iti pampanid ti kategoria",
        "right-movefile": "Agiyalis kadagiti papeles",
        "right-suppressredirect": "Saan nga agpartuat kadagiti baw-ing manipud ti taudan ti pampanid no agiyalis kadagiti panid",
        "right-upload": "Agikarga kadagiti papeles",
        "right-reupload": "Agisurat manen kadagiti addan a papeles",
        "right-reupload-own": "Agisurat manen kadagiti addan a papeles a bukod nga inkarga",
-       "right-reupload-shared": "Lokal a mangtuon kadagiti papeles idiay pagbingayan a repsitorio ti midia",
-       "right-upload_by_url": "Agikarga kadagiti papeles manipud ti URL",
-       "right-purge": "Agpurga ti cache ti sitio para iti panid nga awan ti pammasingked",
-       "right-autoconfirmed": "Saan a mabanagan babaen dagiti patingga ti gatad a naibatay ti IP",
+       "right-reupload-shared": "Lokal a mangtuon kadagiti papeles iti pagbingayan a repsitorio ti midia",
+       "right-upload_by_url": "Agikarga kadagiti papeles manipud iti URL",
+       "right-purge": "Agpurga iti cache ti sitio para iti panid nga awan ti pammasingked",
+       "right-autoconfirmed": "Saan a mabanagan babaen dagiti patingga ti gatad a naibatay iti IP",
        "right-bot": "Matrato a kas maysa nga automatiko a proseso",
        "right-nominornewtalk": "Nga awanan ti bassit a panagurnos dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe",
        "right-apihighlimits": "Agusar kadagiti nangatngato a patingga kadagiti usisa ti API.",
        "right-bigdelete": "Agikkat kadagiti panid nga addaan kadagiti dakkel a pakasaritaan",
        "right-deletelogentry": "Agikkat ken agisubli iti panagikkat kadagiti naisangsangayan a naikabil ti listaan",
        "right-deleterevision": "Agikkat ken agisubli kadagiti naisangayan a rebision ti panid",
-       "right-deletedhistory": "Agkita kadagiti naikabil a naikkat a pakasaritaan, nga awan kadagiti mainaig a testo",
-       "right-deletedtext": "Agkita kadagiti naikkat a testo ken dagiti nasukatan a nagbaetan dagiti naikkat a rebision",
+       "right-deletedhistory": "Agkita kadagiti naikabil a naikkat a pakasaritaan, nga awan kadagiti mainaig a teksto",
+       "right-deletedtext": "Agkita kadagiti naikkat a teksto ken dagiti nasukatan a nagbaetan dagiti naikkat a rebision",
        "right-browsearchive": "Agbiruk kadagiti naikkat a panid",
        "right-undelete": "Agisubli ti pannakaikkat ti panid",
-       "right-suppressrevision": "Agkita, agilemmeng ken agisubli ti pannakakita dagiti naisangayan a rebision dagiti panid manipud ti sinoman nga agar-aramat",
-       "right-viewsuppressed": "Agkita kadagiti rebision a nailemmeng manipud ti sinoman nga agar-aramat",
+       "right-suppressrevision": "Agkita, agilemmeng ken agisubli ti pannakakita dagiti naisangayan a rebision dagiti panid manipud iti sinoman nga agar-aramat",
+       "right-viewsuppressed": "Agkita kadagiti rebision a nailemmeng manipud iti sinoman nga agar-aramat",
        "right-suppressionlog": "Agkita kadagiti pribado a listaan",
        "right-block": "Agserra kadagiti sabali nga agar-aramat manipud iti panagurnos",
-       "right-blockemail": "Agserra iti agar-aramat manipud ti panagipatulod ti esurat",
-       "right-hideuser": "Agserra iti nagan ti agar-aramat, ken agilemmeng manipud ti publiko",
+       "right-blockemail": "Agserra iti agar-aramat manipud iti panagipatulod ti esurat",
+       "right-hideuser": "Agserra iti nagan ti agar-aramat, ken agilemmeng manipud iti publiko",
        "right-ipblock-exempt": "Labsanna dagiti serra ti IP, dagiti automatiko a serra ken dagiti sakop a serra.",
        "right-proxyunbannable": "Labsanna dagiti automatiko a serra dagiti pannakbagi",
        "right-unblockself": "Bukod nga agikkat it pannakaserra",
        "right-userrights-interwiki": "Agurnos kadagiti karbengan ti agar-aramat kadagiti agar-aramat iti sabsabali a wiki",
        "right-siteadmin": "Mangikandado ken manglukat iti database",
        "right-override-export-depth": "Agipan kadagiti panid a mairaman dagiti naisilpo a panid agingana iti kauneg ti 5",
-       "right-sendemail": "Agipatulod ti esurat kadagiti sabali nga agar-aramat",
+       "right-sendemail": "Agipatulod iti esurat kadagiti sabali nga agar-aramat",
        "right-passwordreset": "Agkita kadagiti esurat ti panangisaad manen ti kontrasenias",
-       "right-managechangetags": "Agpartuat ken agikkat kadagiti [[Special:Tags|etiketa]] manipud ti database",
+       "right-managechangetags": "Agpartuat ken agikkat kadagiti [[Special:Tags|etiketa]] manipud iti database",
        "right-applychangetags": "Ipakat dagiti [[Special:Tags|etiketa]] a mairaman dagiti nabaliwan",
        "right-changetags": "Agnayon ken agikkat kadagiti arbitario nga [[Special:Tags|etiketa]] kadagiti agmaymaysa a rebision ken dagiti naikabkabil iti listaan",
        "newuserlogpage": "Listaan ti panagpartuat ti agar-aramat",
        "action-createpage": "agpartuat kadagiti panid",
        "action-createtalk": "agpartuat kadagiti pagtungtungan a panid",
        "action-createaccount": "agpartuat iti pakabilangan daytoy nga agar-aramat",
-       "action-history": "agkita iti pakasaritaan daytoy a panid",
+       "action-history": "agkita iti pakasaritaan iti daytoy a panid",
        "action-minoredit": "agmarka iti daytoy nga inurnos a kas bassit",
        "action-move": "agiyalis iti daytoy a panid",
        "action-move-subpages": "agiyalis iti daytoy a panid, ken dagiti subpanidna",
        "action-movefile": "agiyalis iti daytoy a papeles",
        "action-upload": "agikarga iti daytoy a papeles",
        "action-reupload": "agsurat manen iti daytoy nga adda a papeles",
-       "action-reupload-shared": "mangtuon iti daytoy a papeles idiay pagbingayan a repositorio",
-       "action-upload_by_url": "agikarga iti daytoy a papeles manipud ti URL",
+       "action-reupload-shared": "mangtuon iti daytoy a papeles iti pagbingayan a repositorio",
+       "action-upload_by_url": "agikarga iti daytoy a papeles manipud iti URL",
        "action-writeapi": "agusar iti panagsurat ti API",
        "action-delete": "agikkat iti daytoy a panid",
        "action-deleterevision": "agikkat iti daytoy a rebision",
        "action-undelete": "agisubli iti pannakaikkat iti daytoy a panid",
        "action-suppressrevision": "agrepaso ken agisubli iti daytoy a nailemmeng a rebision",
        "action-suppressionlog": "agkita iti daytoy a pribado a listaan",
-       "action-block": "agserra iti daytoy nga agar-aramat manipud ti panagurnos",
+       "action-block": "agserra iti daytoy nga agar-aramat manipud iti panagurnos",
        "action-protect": "mangsukat kadagiti lessaad ti salaknib para iti daytoy a panid",
        "action-rollback": "napardas a mangisubli kadagiti inurnos ti kinaudi nga agar-aramat a nagurnos iti naisangsangayan a panid",
-       "action-import": "agala ti pampanid manipud ti sabali a wiki",
-       "action-importupload": "agala ti pampanid manipud ti naikarga a papeles",
+       "action-import": "agala ti pampanid manipud iti sabali a wiki",
+       "action-importupload": "agala ti pampanid manipud iti naikarga a papeles",
        "action-patrol": "agmarka kadagiti inurnos ti dadduma a kas napatruliaan",
        "action-autopatrol": "agmarka iti bukodmo nga inurnos a kas napatrulian",
        "action-unwatchedpages": "agkita ti listaan dagiti saan a nabambantayan a panid",
        "action-viewmyprivateinfo": "agkita iti bukodmo a pribado a pakaammo",
        "action-editmyprivateinfo": "agurnos iti bukodmo a pribado a pakaammo",
        "action-editcontentmodel": "urnosen ti modelo ti linaon iti panid",
-       "action-managechangetags": "agpartuat ken agikkat kadagiti etiketa manipud ti database",
+       "action-managechangetags": "agpartuat ken agikkat kadagiti etiketa manipud iti database",
        "action-applychangetags": "ipakat dagiti etiketa a mairaman dagiti nabaliwan",
        "action-changetags": "agnayon ken agikkat kadagiti arbitario nga etiketa kadagiti agmaymaysa a rebision ken dagiti naikabkabil iti listaan",
        "nchanges": "$1 {{PLURAL:$1|sinukatan|dagiti sinukatan}}",
-       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|manipud ti naudi a panagsarungkar}}",
+       "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|manipud iti naudi a panagsarungkar}}",
        "enhancedrc-history": "pakasaritaan",
        "recentchanges": "Kaudian a balbaliw",
        "recentchanges-legend": "Pagpilian iti kaudian a balbaliw",
        "rcshowhidemine": "$1 dagiti inurnosko",
        "rcshowhidemine-show": "Ipakita",
        "rcshowhidemine-hide": "Ilemmeng",
+       "rcshowhidecategorization": "$1 a pannakaikategoria ti panid",
+       "rcshowhidecategorization-show": "Ipakita",
+       "rcshowhidecategorization-hide": "Ilemmeng",
        "rclinks": "Ipakita dagiti naudi a $1 a sinukatan iti kallabes a $2 nga al-aldaw<br />$3",
        "diff": "dip",
        "hist": "hist",
        "newpageletter": "B",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 nga agbuybuya {{PLURAL:$1|nga agar-aramat|kadagiti agar-aramat}}]",
-       "rc_categories": "Patingga dagiti kategoria (pagsinaen iti \"|\")",
-       "rc_categories_any": "Ania man",
-       "rc-change-size-new": "$1 {{PLURAL:$1|a byte|kadagiti byte}} kalpasan ti panag-sukat",
-       "newsectionsummary": "/* $1 */ baro a paset",
+       "rc_categories": "Patingga dagiti kategoria (pagsinaen iti \"|\"):",
+       "rc_categories_any": "Ti ania man a napili",
+       "rc-change-size-new": "$1 {{PLURAL:$1|a byte|kadagiti byte}} kalpasan ti panagsukat",
+       "newsectionsummary": "/* $1 */ baro a seksion",
        "rc-enhanced-expand": "Ipakita dagiti salaysay",
        "rc-enhanced-hide": "Ilemmeng dagiti salaysay",
        "rc-old-title": "kasisigud nga inaramid a kas ti \"$1\"",
        "recentchangeslinked-summary": "Daytoy ket listaan dagiti kaudian a sinukatan kadagiti pampanid a nakasilpo manipud iti naisangayan a panid (wenno kadagiti kameng ti maysa a nainaganan a kategoria).\nDagiti panid iti [[Special:Watchlist|listaan ti bambantayam]] ket dagiti <strong>napuskol</strong>.",
        "recentchangeslinked-page": "Nagan ti panid:",
        "recentchangeslinked-to": "Ipakita dagiti sinukatan kadagiti panid nga imbes a naisilpo iti naited a panid",
+       "recentchanges-page-added-to-category": "nainayon ti [[:$1]] iti kategoria",
+       "recentchanges-page-added-to-category-bundled": "nainayon ti [[:$1]] ken {{PLURAL:$2|maysa a panid|$2 a pampanid}} iti kategoria",
+       "recentchanges-page-removed-from-category": "naikkat ti [[:$1]] manipud iti kategoria",
+       "recentchanges-page-removed-from-category-bundled": "Naikkat ti [[:$1]] ken {{PLURAL:$2|maysa a panid|$2 a pampanid}} manipud iti kategoria",
        "upload": "Agikarga iti papeles",
        "uploadbtn": "Agikarga iti papeles",
        "reuploaddesc": "Ukasen ti panagikarga ken agsubli idiay porma ti panagikarga",
-       "upload-tryagain": "Mangited ti napabaro a deskripsion ti papeles",
+       "upload-tryagain": "Mangited iti napabaro a deskripsion ti papeles",
        "uploadnologin": "Saan a nakastrek",
        "uploadnologintext": "Pangngaasi a $1 tapno makaikarga kadagiti papeles.",
        "upload_directory_missing": "Ti pagikargaan a direktorio ($1) ket awan ken saan a mabalin a mapartuat babaen ti webserver.",
        "upload-scripted-pi-callback": "Saan a maikarga ti papeles nga aglaon ti panagproseso ti instruksion iti estilo ti sabanas ti XML.",
        "uploaded-script-svg": "Nakabiruk ti maieskritu nga elemento ti \"$1\" iti naikarga a papeles ti SVG.",
        "uploaded-hostile-svg": "Nakabiruk ti saan a natalged a CSS iti elemento ti estilo ti naikarga a papeles ti SVG.",
+       "uploaded-event-handler-on-svg": "Ti panangisaad kadagiti gupit ti panagtengngel ti pasamak ti <code>$1=\"$2\"</code> ket saan a maipalubos kadagiti papeles ti SVG.$1",
+       "uploaded-href-attribute-svg": "Dagiti gupit ti href ti <code>&lt;$1 $2=\"$3\"&gt;</code> nga addaan iti saan a lokal a puntaan (kas ti http://, javascript:, kdpy) ket saan a maipalubos kadagiti papeles ti SVG.",
+       "uploaded-href-unsafe-target-svg": "Nakabiruk ti href iti saan a natalged a puntaan ti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
+       "uploaded-animate-svg": "Nakabiruk ti etiketa ti \"animado\" a mabalin a mangbalbaliw iti href, nga agus-usar iti gupit ti \"manipud\" ti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
+       "uploaded-setting-event-handler-svg": "Naserraan ti panangisaad ti kadagiti gupit ti panagtengngel ti pasamak, nakabiruk iti <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
        "uploaded-image-filter-svg": "Nakabiruk ti sagat ti ladawan nga addaan iti URL: <code>&lt;$1 $2=\"$3\"&gt;</code> iti naikarga a papeles ti SVG.",
-       "uploadscriptednamespace": "Daytoy a papeles ti SVG ket aglaon ti maysa a saan a mabalin a nagan ti espasio ti \"$1\".",
+       "uploadscriptednamespace": "Daytoy a papeles ti SVG ket aglaon iti maysa a saan a mabalin a nagan ti espasio ti \"$1\".",
        "uploadinvalidxml": "Ti XML iti naikarga a papeles ket saan a maiwaswas.",
        "uploadvirus": "Ti papeles ket aglaon ti birus! \nDagiti salaysay: $1",
        "uploadjava": "Daytoy a papeles ket papeles ti ZIP nga aglaon ti Java .a klase ti papeles.\nTi panangikarga ti papales ti Java ket saan a maipalubos gapu ta makapataudda a manglabas kadagiti panangigawid ti seguridad.",
        "upload-success-subj": "Balligi ti panagikarga",
        "upload-success-msg": "Ti panagikargam manipud ti [$2] ket nagballigi. Daytoy ket magun-od ditoy [[:{{ns:file}}:$1]]",
        "upload-failure-subj": "Parikut ti panagikarga",
-       "upload-failure-msg": "Adda parikut ti panagikargam manipud ti [$2]:\n\n$1",
+       "upload-failure-msg": "Adda parikut ti panagikargam manipud iti [$2]:\n\n$1",
        "upload-warning-subj": "Ballaag ti panagikarga",
-       "upload-warning-msg": "Adda parikut iti panagikargam manipud ti [$2]. Mabalinmo ti agsubli iti [[Special:Upload/stash/$1|porma ti panagikarga]] tapno masimpa daytoy a parikut.",
+       "upload-warning-msg": "Adda parikut iti panagikargam manipud iti [$2]. Mabalinmo ti agsubli iti [[Special:Upload/stash/$1|porma ti panagikarga]] tapno masimpa daytoy a parikut.",
        "upload-proto-error": "Saan a husto a protokol",
        "upload-proto-error-text": "Ti adayo a panagikarga ket makasapul kadagiti URL a mangrugi iti <code>http://</code> wenno <code>ftp://</code>.",
        "upload-file-error": "Akin-uneg a biddut",
        "upload-misc-error-text": "Adda napasamak a di ammo a biddut idi las-ud ti panagikarga.\nPangngaasi a pasingkedan ti URL ket umisu ken maserrekan ken padasem manen.\nNo ti parikut ket agsubli latta, kontaken ti maysa nga [[Special:ListUsers/sysop|administrador]].",
        "upload-too-many-redirects": "Ti URL ket naglaon kadagiti adu unay a baw-ing",
        "upload-http-error": "Adda napasamak a biddut ti HTTP: $1",
-       "upload-copy-upload-invalid-domain": "Dagiti kopia a panagikarga ket saan a magun-od manipud ti daytoy a dominio.",
+       "upload-copy-upload-invalid-domain": "Dagiti kopia a panagikarga ket saan a magun-od manipud iti daytoy a dominio.",
+       "upload-dialog-title": "Agikarga iti papeles",
+       "upload-dialog-error": "Adda napasamak a biddut",
+       "upload-dialog-warning": "Adda napasamak a ballaag",
+       "upload-dialog-button-cancel": "Ukasen",
+       "upload-dialog-button-done": "Nalpasen",
+       "upload-dialog-button-save": "Idulin",
+       "upload-dialog-button-upload": "Agikarga",
+       "upload-dialog-label-select-file": "Pilien ti papeles",
+       "upload-dialog-label-infoform-title": "Dagiti salaysay",
+       "upload-dialog-label-infoform-name": "Nagan",
+       "upload-dialog-label-infoform-description": "Deskripsion",
+       "upload-dialog-label-usage-title": "Panagusar",
+       "upload-dialog-label-usage-filename": "Nagan ti papeles",
        "backend-fail-stream": "Saan a maipan ti papeles $1.",
        "backend-fail-backup": "Saan a makaidulin ti kapada ti papeles ti $1.",
        "backend-fail-notexists": "Awan ti papeles ti $1.",
        "backend-fail-hashes": "Saan a makaala kadagiti hash ti papeles para iti panangipada.",
-       "backend-fail-notsame": "Addan ti awan kapada a papeles idiay \"$1\".",
+       "backend-fail-notsame": "Addan ti awan kapada a papeles iti \"$1\".",
        "backend-fail-invalidpath": "Ti \"$1\" ket imbalido a dalan ti pagidulinan.",
        "backend-fail-delete": "Saan a maikkat ti papeles ti \"$1\".",
        "backend-fail-describe": "Saan a mabaliwan ti metadata para iti papeles ti \"$1\".",
        "lockmanager-fail-acquirelock": "Saan a makaala ti kandado para iti \"$1\".",
        "lockmanager-fail-openlock": "Saan a malukatan ti kandado ti papeles para iti \"$1\".",
        "lockmanager-fail-releaselock": "Saan a maibbatan ti kandado para iti \"$1\".",
-       "lockmanager-fail-db-bucket": "Saan a makakontak ti umanay a kandado dagiti database idiay timba ti $1.",
+       "lockmanager-fail-db-bucket": "Saan a makakontak ti umanay a kandado dagiti database iti timba ti $1.",
        "lockmanager-fail-db-release": "Saan a maibbatan dagiti kandado iti database ti $1.",
-       "lockmanager-fail-svr-acquire": "Saan a makaala kadagiti kandado ti server ti $1.",
+       "lockmanager-fail-svr-acquire": "Saan a makaala kadagiti kandado iti server ti $1.",
        "lockmanager-fail-svr-release": "Saan a maibbatan dagiti kandado iti server ti $1.",
        "zip-file-open-error": "Adda napasamak a biddut idi lukluktan ti papeles para kadagiti panagkita ti ZIP.",
        "zip-wrong-format": "Ti nainagan a papeles ket saan a papeles ti ZIP.",
        "img-auth-nologinnWL": "Saanka a nakastrek ken ti \"$1\" ket awan idiay mabalin a listaan.",
        "img-auth-nofile": "Awan ti papeles ti \"$1\".",
        "img-auth-isdir": "Padpadasem ti mangserrek ti direktorio ti \"$1\".\nTi laeng panagserrek ti papeles ti maipalubos.",
-       "img-auth-streaming": "Agip-ipan ti \"$1\".",
-       "img-auth-public": "Ti annong ti img_auth.php ket ti mangiruar kadagiti papeles manipud ti pribado a wiki.\nDaytoy a wiki naaramid a kas publiko a wiki.\nPara iti kangatuan a seguridad, nabaldado ti img_auth.php.",
-       "img-auth-noread": "Ti agar-aramat ket awan ti pammalubosna nga agbasa ti \"$1\".",
+       "img-auth-streaming": "Agip-ipan iti \"$1\".",
+       "img-auth-public": "Ti annong ti img_auth.php ket ti mangiruar kadagiti papeles manipud iti pribado a wiki.\nDaytoy a wiki naaramid a kas publiko a wiki.\nPara iti kangatuan a seguridad, nabaldado ti img_auth.php.",
+       "img-auth-noread": "Ti agar-aramat ket awan ti pammalubosna nga agbasa iti \"$1\".",
        "http-invalid-url": "Imbalido nga URL: $1",
        "http-invalid-scheme": "Dagiti URL nga addaan iti \"$1\" a pamuspusan ket saan a masuportaran.",
        "http-request-error": "Ti panagkiddaw ti HTTP ket napaay gapu ti di ammo a biddut.",
        "upload-curl-error6-text": "Ti URL a naited ket saan a madanon.\nPangngaasi a kitaem manen no husto ti URL ken adda dayta a sitio.",
        "upload-curl-error28": "Nagsardeng ti panagikarga",
        "upload-curl-error28-text": "Ti sitio ket nabayag unay a simmungbat.\nPangngaasi a kitaen no naipatakder ti sito, aguray no madamdama ket padasen manen.\nBaka kayatmo a padasen iti saan a makumikom nga oras.",
-       "license": "Panaglisensia:",
-       "license-header": "Panaglisensia",
+       "license": "Lisensia:",
+       "license-header": "Lisensia",
        "nolicense": "Awan ti napili",
        "licenses-edit": "Urnosen dagiti pagpilian ti lisensia",
        "license-nopreview": "(Saan a magun-od ti panagipadas)",
-       "upload_source_url": "(ti pinilim a papeles manipud ti umiso, ken publiko a maserrekan nga URL)",
+       "upload_source_url": "(ti pinilim a papeles manipud ti umisu, ken publiko a maserrekan nga URL)",
        "upload_source_file": "(ti pinilim a papeles manipud ti kompiutermo)",
        "listfiles-delete": "ikkaten",
        "listfiles-summary": "Daytoy nga espesial a panid ket agiparang kadagiti amin a naikarga a papeles.",
        "listfiles_search_for": "Agbiruk para iti nagan ti midia:",
-       "listfiles-userdoesnotexist": "Ti pakabilangan ni \"$1\" ket saaan a nairehistro.",
+       "listfiles-userdoesnotexist": "Saan a nairehistro ti pakabilangan ni \"$1\".",
        "imgfile": "papeles",
        "listfiles": "Listaan ti papeles",
        "listfiles_thumb": "Bassit a ladawan",
        "filepage-nofile": "Awan ti agnagan ti kasta a papeles.",
        "filepage-nofile-link": "Awan ti agnagan ti kastoy a papeles, ngem mabalinmo ti [$1 agikarga].",
        "uploadnewversion-linktext": "Agikarga ti baro a bersion iti daytoy a papeles",
-       "shared-repo-from": "manipud ti $1",
+       "shared-repo-from": "manipud iti $1",
        "shared-repo": "ti pagbingbingayan a repositorio",
        "upload-disallowed-here": "Saanmo a masuratan manen daytoy a papeles.",
        "filerevert": "Isubli ti $1",
        "pageswithprop-text": "Daytoy a panid ket ilistana ti pampanid nga agus-usar ti naisangayan a tagikua ti panid.",
        "pageswithprop-prop": "Nagan ti tagikua:",
        "pageswithprop-submit": "Inkan",
-       "pageswithprop-prophidden-long": "atiddog a testo ti pateg ti tagikua a nailemmeng ($1)",
+       "pageswithprop-prophidden-long": "atiddog a teksto ti pateg ti tagikua a nailemmeng ($1)",
        "pageswithprop-prophidden-binary": "binario a pateg ti tagikua a nailemmeng ($1)",
        "doubleredirects": "Dagiti namindua a naibaw-ing",
        "doubleredirectstext": "Daytoy a panid ket ilistana dagiti panid nga agbaw-ing kadagiti sabali a baw-ing a pampanid.\nIti tunggal maysa nga aray ket aglaon kadagiti silpo iti umuna ken maikadua a baw-ing, ken ti pay puntaan ti maikadua a baw-ing, nga isu ti \"pudno\" a puntaan ti panid, nga ti umuna a baw-ing ket isu koma ti pakaituduanna.\nNasolbaren dagiti <del>nakurosan</del> a naikabil.",
        "mostimages": "Dagiti papeles a kaaduan iti nakasilpo",
        "mostinterwikis": "Dagiti panid a kaaduan kadagiti interwiki",
        "mostrevisions": "Dagiti panid a kaaduan kadagiti rebision",
-       "prefixindex": "Amin a pampanid nga addaan iti pasaruno",
+       "prefixindex": "Amin a pampanid nga addaan iti pasakbay",
        "prefixindex-namespace": "Amin a pampanid nga addaan iti pasaruno (nagan ti espasio ti $1)",
-       "prefixindex-strip": "Ikkaten ti pasaruno iti listaan",
+       "prefixindex-strip": "Ikkaten ti pasakbay iti listaan",
        "shortpages": "Dagiti ababa a panid",
        "longpages": "Dagiti atiddog a panid",
        "deadendpages": "Dagiti ngudo a panid",
        "allarticles": "Amin a pampanid",
        "allinnamespace": "Amin a pampanid (nagan ti espasio ti $1)",
        "allpagessubmit": "Inkan",
-       "allpagesprefix": "Iparang dagiti pampanid nga adda pasarunona:",
+       "allpagesprefix": "Iparang dagiti pampanid nga addaan iti pasakbay:",
        "allpagesbadtitle": "Ti naited a titulo ti panid ket imbalido wenno adda idi ti sabali a pagsasao wenno interwiki a pasarunona.\nDaytoy ket mabalin nga aglaon iti maysa wenno ad-adu a karkarakter a saan a mausar kadagiti titulo.",
        "allpages-bad-ns": "Ti {{SITENAME}} ket awan iti nagan ti espasio iti \"$1\".",
        "allpages-hide-redirects": "Ilemmeng dagiti baw-ing",
        "deletedcontributions": "Dagiti naikkat a kontribusion ti agar-aramat",
        "deletedcontributions-title": "Dagiti naikkat a kontribusion ti agar-aramat",
        "sp-deletedcontributions-contribs": "dagiti kontribusion",
-       "linksearch": "Dagiti panagbiruk ti ruar a silpo",
+       "linksearch": "Panagbiruk kadagiti akinruar a silpo",
        "linksearch-pat": "Tabas ti panagbiruk:",
        "linksearch-ns": "Nagan ti espasio:",
        "linksearch-ok": "Biruken",
        "watchlistanontext": "Pangngaasi a sumrek tapno makitam dagiti inurnosmo dita bambantayam.",
        "watchnologin": "Saan a nakastrek",
        "addwatch": "Inayon iti listaan ti bambantayan",
-       "addedwatchtext": "Ti panid iti \"[[:$1]]\" ket nainayonen idiay [[Special:Watchlist|listaan ti bambantayam]].\nDagiti masakbayan a panagsukat iti daytoy a panid ken dagiti mainaig a tungtunganna a panid ket mailistanto idiay.",
+       "addedwatchtext": "Ti \"[[:$1]]\" ken ti tungtunganna a panid ket nainayonen iti [[Special:Watchlist|listaan ti bambantayam]].",
        "addedwatchtext-short": "Ti panid ti \"$1\" ket nainayonen iti listaan ti bambantayam.",
        "removewatch": "Ikkaten manipud ti listaan ti bambantayan",
-       "removedwatchtext": "Daytoy a panid  \"[[:$1]]\" ket naikkat idiay [[Special:Watchlist|bambantayam]].",
+       "removedwatchtext": "Ti \"[[:$1]]\" ken ti tungtunganna a panid ket naikkaten manipud iti [[Special:Watchlist|listaan ti bambantayam]].",
        "removedwatchtext-short": "Ti panid ti \"$1\" ket naikkaten manipud ti listaan ti bambantayam.",
        "watch": "Bantayan",
        "watchthispage": "Bantayan daytoy a panid",
        "changecontentmodel-success-title": "Nabaliwan ti modelo ti linaon",
        "changecontentmodel-success-text": "Nabaliwanen ti kita ti linaon ti [[:$1]].",
        "changecontentmodel-cannot-convert": "Ti linaon iti [[:$1]] ket saan a mabaliwan iti kita ti $2.",
-       "changecontentmodel-title-cantexist": "Saan a mabalin nga addaan iti panid iti $1.",
        "changecontentmodel-nodirectediting": "Ti modelo ti linaon ti $1 ket saan a mangsuporta ti dagus a panagurnos",
        "log-name-contentmodel": "Listaan ti panagbaliw ti modelo ti linaon",
        "log-description-contentmodel": "Dagiti pasamak a mainaig kadagiti modelo ti linaon ti panid",
        "undeletepagetext": "Ti sumaganad a {{PLURAL:$1|panid ket naikkaten ngem|$1 pampanid ket naikkaten ngem}} adda pay naarkibo ken mabalin pay a maipasubli .\nTi arkibo ket mabalin a sagpaminsan a madalusan.",
        "undelete-fieldset-title": "Ipasubli dagiti rebision",
        "undeleteextrahelp": "Tapno maipasubli ti intero a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken pinduten ti <strong><em>{{int:undeletebtn}}</em></strong>.\nTi agaramid ti napilian a panagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken pinduten ti <strong><em>{{int:undeletebtn}}</em></strong>.",
-       "undeleterevisions": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naarkibo",
+       "undeleterevisions": "$1 {{PLURAL:$1|a rebision|kadagiti rebision}} ti naikkat",
        "undeletehistory": "No ipasublim daytoy a panid, amin dagiti rebision ket maipasubli iti pakasaritaan.\nKet no adda baro a panid a kanagnaganna a naaramid ti napalabas a panagikkat, dagiti naipasubli a rebision ket agparang iti napalabas a pakasaritaan.",
        "undeleterevdel": "Ti panagikkat ket saan a maaramid no agbanag iti rabaw ti panid, wenno ti rebision ti papeles ket maikkatan ti bassit.\nIti kastoy a kaso, masapul nga ikkatem ti kur-it wenno ikkatem ti lemmeng dagiti kabarbaro a naikkat a rebision.",
        "undeletehistorynoadmin": "Daytoy a panid ket naikkaten.\nTi rason ti panagikkat ket naipakita iti pakabuklan dita baba, ken dagita a salaysay ti agar-aramat a nagurnos iti daytoy a panid sakbay a naikkat.\nTi husto a testo dagitoy a naikat a rebision ket magun-od laeng dagiti administrador.",
        "tooltip-t-recentchangeslinked": "Kaudian a balbaliw kadagiti panid a naisilpo manipud ti daytoy a panid",
        "tooltip-feed-rss": "RSS a pakan para iti daytoy a panid",
        "tooltip-feed-atom": "Atom a pakan para iti daytoy a panid",
-       "tooltip-t-contributions": "Ti lstaan dagiti kontribusion iti daytoy nga agar-aramat",
+       "tooltip-t-contributions": "Ti listaan dagiti kontribusion iti daytoy nga agar-aramat",
        "tooltip-t-emailuser": "Patulodan ti esurat daytoy nga agar-aramat",
        "tooltip-t-info": "Adu pay a pakaammo a maipanggep iti daytoy a panid",
        "tooltip-t-upload": "Agikarga kadagiti papeles",
        "tooltip-ca-nstab-user": "Kitaen ti panid ti agar-aramat",
        "tooltip-ca-nstab-media": "Kitaen ti panid ti midia",
        "tooltip-ca-nstab-special": "Daytoy ket espesial a panid, saanmo a mismo a maurnos daytoy a panid",
-       "tooltip-ca-nstab-project": "Kitaen ti panid ti gandat",
+       "tooltip-ca-nstab-project": "Kitaen ti panid ti proyekto",
        "tooltip-ca-nstab-image": "Kitaen ti panid ti papeles",
        "tooltip-ca-nstab-mediawiki": "Kitaen ti mensahe ti sistema",
        "tooltip-ca-nstab-template": "Kitaen ti plantilia",
        "spam_reverting": "Ipasubli ti naudi a rebision nga awan dagiti linaon a silpo iti $1",
        "spam_blanking": "Amin dagiti rebision ket aglaon kadagiti silpo iti $1, iblanko",
        "spam_deleting": "Amin dagiti rebision ket aglaon kadagiti silpo iti $1, ik-ikkaten",
-       "simpleantispam-label": "Pammasingked ti anti-spam.\n<strong>SAAN</strong> a kargaan daytoy!",
+       "simpleantispam-label": "Pammasingked ti anti-spam.\n<strong>Saan</strong> a kargaan daytoy!",
        "pageinfo-title": "Pakaammo para iti \"$1\"",
        "pageinfo-not-current": "Pasensia, saan a mabalin ti mangited ti pakaammo para kadagiti daan a rebision.",
        "pageinfo-header-basic": "Kangrunaan a pakaammo",
        "pageinfo-contentpage-yes": "Wen",
        "pageinfo-protect-cascading": "Dagiti panagsalaknib ket agsariap manipud ditoy",
        "pageinfo-protect-cascading-yes": "Wen",
-       "pageinfo-protect-cascading-from": "Dagiti panagsalaknib ket agsariap manipud ti",
+       "pageinfo-protect-cascading-from": "Dagiti panagsalaknib ket agsariap manipud iti",
        "pageinfo-category-info": "Pakaammo ti kategoria",
        "pageinfo-category-total": "Dagup a bilang ti kamkameng",
        "pageinfo-category-pages": "Bilang dagiti panid",
        "exif-ycbcrpositioning-1": "Ipatingnga",
        "exif-ycbcrpositioning-2": "Kaduana nagkita",
        "exif-dc-contributor": "Dagiti nakaaramid",
+       "exif-dc-coverage": "Maipapan iti espasio wenno temporal a sakop ti midia",
        "exif-dc-date": "Petsa (dagiti petsa)",
        "exif-dc-publisher": "Nangipablaak",
        "exif-dc-relation": "Mainaig a midia",
        "tags-delete": "ikkaten",
        "tags-hitcount": "$1 {{PLURAL:$1|a sinukatan|a sinuksukatan}}",
        "tags-create-heading": "Agpartuat iti baro nga etiketa",
+       "tags-create-explanation": "Babaen ti kasisigud, dagiti kabarbaro a napartuat nga etiketa ket mabalinto a magun-od a mausar babaen dagiti agar-aramat ken dagiti bot.",
        "tags-create-tag-name": "Nagan ti etiketa:",
        "tags-create-reason": "Rason:",
        "tags-create-submit": "Agpartuat",
        "tags-create-no-name": "Nasken nga inaganam ti nagan ti etiketa.",
+       "tags-create-invalid-title-chars": "Dagiti nagan ti etiketa ket nasken a saan nga aglaon kadagiti karakter a saan a mabalin a mausar kadagiti titulo ti panid.",
        "tags-create-already-exists": "Addan ti etiketa ti \"$1\".",
+       "tags-create-warnings-above": "Nakasarak {{PLURAL:$2|iti sumaganad a ballaag|kadagiti sumaganad a ballaag}} idi nagpadas a nagpartuat iti etiketa ti \"$1\":",
        "tags-create-warnings-below": "Kayatmo kadi ti agtuloy nga agpartuat iti etiketa?",
        "tags-delete-title": "Ikkaten ti etiketa",
        "tags-delete-explanation-initial": "Ik-ikkatemon ti etiketa ti \"$1\" manipud ti database.",
        "tags-deactivate-reason": "Rason:",
        "tags-apply-not-allowed-one": "Saan a maipalubos a manual a maipakat ti tiketa ti \"$1\".",
        "tags-apply-not-allowed-multi": "Saan a maipalubos a manual a maipakat {{PLURAL:$2|ti sumaganad nga etiketa|dagiti sumagand nga etiketa}}: $1",
+       "tags-update-add-not-allowed-one": "Saan a mabalin a manual a mainayon ti etiketa ti \"$1\".",
+       "tags-update-add-not-allowed-multi": "Saan a mabalin a manual a mainayon {{PLURAL:$2|ti sumaganad nga etiketa|dagiti sumaganad nga etiketa}}: $1",
        "tags-update-remove-not-allowed-one": "Ti etiketa ti \"$1\" ket saan a maipalubos a maikkat.",
        "tags-update-remove-not-allowed-multi": "{{PLURAL:$2|Ti sumaganad nga etiketa|Dagiti sumaganad nga etiketa}} ket saan a maipalubos a manual a maikkat: $1",
        "tags-edit-title": "Urnosen dagiti etiketa",
        "htmlform-cloner-create": "Agnayon pay ti adu",
        "htmlform-cloner-delete": "Ikkaten",
        "htmlform-cloner-required": "Saan a basbassit ngem maysa a pateg ti masapul.",
+       "htmlform-title-badnamespace": "Ti [[:$1]] ket awan iti nagan ti espasio ti \"{{ns:$2}}\".",
+       "htmlform-title-not-creatable": "Saan a mabalin a mapartuat a titulo ti panid ti \"$1\"",
        "htmlform-title-not-exists": "Awan ti [[:$1]].",
        "htmlform-user-not-exists": "Awan ti <strong>$1</strong>.",
        "htmlform-user-not-valid": "Saan nga umiso a nagan ti agar-aramat ti <strong>$1</strong>.",
-       "sqlite-has-fts": "Ti $1 nga addaan iti suporta ti panagbiruk ti napno a testo",
-       "sqlite-no-fts": "Ti $1 nga awan iti suporta ti panagbiruk ti napno a testo",
+       "sqlite-has-fts": "Ti $1 nga addaan iti suporta ti panagbiruk ti napno a teksto",
+       "sqlite-no-fts": "Ti $1 nga awan iti suporta ti panagbiruk ti napno a teksto",
        "logentry-delete-delete": "{{GENDER:$2|Inikkat}} ni $1 ti panid ti $3",
        "logentry-delete-restore": "Ni $1 ket {{GENDER:$2|insublina}} ti panid ti $3",
        "logentry-delete-event": "Ni $1 ket {{GENDER:$2|binaliwanna}} ti panagkita {{PLURAL:$5|iti listaan ti pasamak |dagiti $5 a listaan ti pasamak }} iti $3: $4",
        "logentry-upload-overwrite": "Ni $1 ket {{GENDER:$2|inkargana}} ti baro a bersion ti $3",
        "logentry-upload-revert": "Ni $1 ket {{GENDER:$2|inkargana}} ti $3",
        "log-name-managetags": "Listaan ti panagtaripato ti etiketa",
+       "logentry-managetags-create": "{{GENDER:$2|Nagpartuat}} ni $1 ti etiketa ti \"$4\"",
        "log-name-tag": "Listaan ti etiketa",
        "rightsnone": "(awan)",
        "revdelete-summary": "Pakabuklan ti inurnos",
        "feedback-error1": "Biddut: Saan a malasin dagiti nagbanagan manipud ti API",
        "feedback-error2": "Biddut: Napaay ti panagurnos",
        "feedback-error3": "Biddut: Awan ti sungbat manipud ti API",
+       "feedback-error4": "Biddut:Saan a naipablak iti naited a titulo ti feedback",
        "feedback-message": "Mensahe:",
        "feedback-subject": "Suheto:",
        "feedback-submit": "Ited",
        "feedback-thanks": "Agyaman! Ti feedbackmo ket naipablaak iti panid \"[$2 $1]\".",
+       "feedback-thanks-title": "Agyamanak!",
+       "feedback-useragent": "Ahente ti agar-aramat:",
        "searchsuggest-search": "Biruken",
        "searchsuggest-containing": "naglaon ti...",
        "api-error-badaccess-groups": "Saanka mapalubosan nga agikarga kadagiti papeles iti daytoy a wiki.",
        "api-error-mustbeposted": "Akin-uneg a biddut: Ti kiddaw ket masapul ti HTTP POST.",
        "api-error-noimageinfo": "Balligi ti panagikarga, ngem ti server ket saan a nagited kadakami ti aniaman a pakaammo a maipanggep iti daytoy a papeles.",
        "api-error-nomodule": "Akin-uneg a biddut: Awan ti naisad a modulo ti panagikarga.",
-       "api-error-ok-but-empty": "Akin-uneg a biddut: Awan ti sungbat manipud ti server.",
+       "api-error-ok-but-empty": "Akin-uneg a biddut: Awan ti sungbat manipud iti server.",
        "api-error-overwrite": "Saan a maipalubos a suratan manen iti papeles nga addan.",
        "api-error-stashfailed": "Akin-uneg a biddut: Napaay ti server nga agidulin ti temporario a papeles.",
        "api-error-publishfailed": "Akin-uneg a biddut: Napaay ti server nga agipablaak ti temporario a papeles.",
        "limitreport-expansiondepth": "Kangatuan a kauneg ti panagpadakkel",
        "limitreport-expensivefunctioncount": "Bilang ti nangina nga annong ti parser",
        "expandtemplates": "Palawaen dagiti plantilia",
-       "expand_templates_intro": "Daytoy nga espesial a panid ket agala ti testo ken palawaenna amin dagiti plantilia iti unegna a minaig iti daytoy.\nPalawaenna pay dagiti nasuportaran a parser a pamay-an a kas ti\n<code><nowiki>{{</nowiki>#language:…}}</code> ken dagiti nadumaduma a kita a kas ti\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nIti kinapudno, palawaenna amin dagiti addaan iti doble a pangrikep.",
-       "expand_templates_title": "Titulo ti kontesto, para iti {{FULLPAGENAME}} kdpy.:",
-       "expand_templates_input": "Maikabil a testo:",
+       "expand_templates_intro": "Daytoy nga espesial a panid ket agala ti teksto ken palawaenna amin dagiti plantilia iti unegna a mainaig iti daytoy.\nPalawaenna pay dagiti nasuportaran a parser a pamay-an a kas ti\n<code><nowiki>{{</nowiki>#language:…}}</code> ken dagiti nadumaduma a kita a kas ti\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>. \nIti kinapudno, palawaenna amin dagiti addaan iti doble a pangrikep.",
+       "expand_templates_title": "Titulo ti konteksto, para iti {{FULLPAGENAME}} kdpy.:",
+       "expand_templates_input": "Maikabil a teksto:",
        "expand_templates_output": "Nagbanagan",
        "expand_templates_xml_output": "Maiparuar a XML",
        "expand_templates_html_output": "Naata a maiparuar a HTML",
        "mediastatistics-header-audio": "Audio",
        "mediastatistics-header-video": "Dagiti video",
        "mediastatistics-header-office": "Opisina",
+       "mediastatistics-header-text": "Tekstual",
        "json-error-unknown": "Adda idi parikut ti JSON. Biddut: $1",
        "json-error-state-mismatch": "Imbalido wenno nadadael a JSON",
        "json-error-syntax": "Biddut ti sintaksis",
        "special-characters-title-endash": "en dash",
        "special-characters-title-emdash": "em dash",
        "special-characters-title-minus": "senial a panagkissay",
+       "mw-widgets-dateinput-no-date": "Awan ti napili a petsa",
+       "mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA",
+       "mw-widgets-dateinput-placeholder-month": "TTTT-BB",
        "mw-widgets-titleinput-description-new-page": "awan pay ti panid",
        "mw-widgets-titleinput-description-redirect": "ibaw-ing iti $1"
 }
index f7facdf..da8aff7 100644 (file)
        "jumptonavigation": "flakk",
        "jumptosearch": "leita",
        "view-pool-error": "Því miður eru vefþjónarnir yfirhlaðnir í augnablikinu.\nOf margir notendur eru að reyna að skoða þessa síðu. \nVinsamlegast bíddu í smástund áður en þú reynir að sækja þessa síðu aftur.\n\n$1",
+       "generic-pool-error": "Því miður eru vefþjónarnir yfirhlaðnir í augnablikinu.\nOf margir eru að reyna að skoða þessa síðu.\nVinsamlegast bíddu áður en þú reynir að sækja þessa síðu aftur.",
        "pool-timeout": "Of löng bið efttir lás",
        "pool-queuefull": "Vefþjónninn er yfirhlaðinn í augnablikinu.",
        "pool-errorunknown": "Óþekkt villa",
        "actionthrottledtext": "Til þess að verjast ruslpósti, er ekki hægt að framkvæma þessa aðgerð of oft, og þú hefur farið fram yfir þau takmörk. Gjörðu svo vel og reyndu aftur eftir nokkrar mínútur.",
        "protectedpagetext": "Þessari síðu hefur verið læst til að koma í veg fyrir breytingar eða aðrar aðgerðir.",
        "viewsourcetext": "Þú getur skoðað og afritað kóða þessarar síðu:",
-       "viewyourtext": "Þú getur skoðað og afritað kóða '''breytinganna þinna''' yfir á þessa síðu:",
+       "viewyourtext": "Þú getur skoðað og afritað kóða <strong>breytinganna þinna</strong> yfir á þessa síðu.",
        "protectedinterface": "Þessi síða útvegar textann sem birtist í viðmóti hugbúnaðarins sem keyrir þessa síðu, og er læst til að koma í veg fyrir misnotkun.\nTil þess að bæta við eða breyta þýðingum fyrir öll wiki verkefni, vinsamlegast notaðu [//translatewiki.net/ translatewiki.net], staðfæringaverkefni MediaWiki",
        "editinginterface": "<strong>Aðvörun:</strong> Þú ert að breyta síðu sem hefur að geyma texta fyrir notendaumhverfi hugbúnaðarins.\nBreytingar á þessari síðu munu hafa áhrif á notendaumhverfi annarra notenda á þessu vefsvæði.",
-       "cascadeprotected": "Þessi síða hefur verið vernduð fyrir breytingum, vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er vernduð|síðum, sem eru verndaðar}} með „keðjuverndun“:\n$2",
+       "cascadeprotected": "Þessi síða hefur verið vernduð fyrir breytingum, vegna þess að hún er ítengd eftirfarandi {{PLURAL:$1|síðu, sem er vernduð|síðum, sem eru verndaðar}} með „keðjuverndun“:\n$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.",
        "readonlywarning": "'''AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.'''\nÞú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.\n\nStjórnandinn sem læsti honum gaf þessa skýringu: $1",
        "protectedpagewarning": "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
        "semiprotectedpagewarning": "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.\nSíðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
-       "cascadeprotectedwarning": "'''Viðvörun:''' Þessari síðu hefur verið læst svo aðeins möppudýr geta breytt henni, því hún er innifalin í keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:",
+       "cascadeprotectedwarning": "<strong>Viðvörun:</strong> Þessari síðu hefur verið læst svo aðeins möppudýr geta breytt henni, því hún er ítengd keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:",
        "titleprotectedwarning": "''VIÐVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''\nVerndunarskrá síðunnar er gefin fyrir neðan til tilvísunar.",
        "templatesused": "Snið {{PLURAL:$1|notað|notuð}} á þessari síðu:",
        "templatesusedpreview": "Snið {{PLURAL:$1|notað|notuð}} í forskoðuninni:",
        "edit-gone-missing": "Gat ekki uppfært síðu.\nSvo virðist sem henni hafi verið eytt.",
        "edit-conflict": "Breytingaárekstur.",
        "edit-no-change": "Breyting þín var hunsuð, því engin breyting var á textanum.",
+       "postedit-confirmation-created": "Síðan hefur verið búin til.",
        "postedit-confirmation-saved": "Breyting þín hefur verið vistuð.",
        "edit-already-exists": "Gat ekki skapað nýja síðu.\nHún er nú þegar til.",
        "defaultmessagetext": "Sjálfgefinn skilaboða texti",
        "history-feed-empty": "Síðan sem þú leitaðir að er ekki til.\nMöglegt er að henni hafi verið eytt út af þessari wiki síðu, eða endurnefnd.\nPrófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum síðum.",
        "rev-deleted-comment": "(breytingarágrip fjarlægt)",
        "rev-deleted-user": "(notandanafn fjarlægt)",
-       "rev-deleted-event": "(skráarbreyting fjarlægð)",
+       "rev-deleted-event": "(smáatriði atriðs fjarlægt)",
        "rev-deleted-user-contribs": "[notandanafn eða vistfang falið - breyting falin í framlögum]",
        "rev-deleted-text-permission": "Þessari útgáfu síðunnar hefur verið '''eytt'''.\nFrekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingaskrá].",
        "rev-deleted-text-unhide": "Þessari útgáfu síðunnar hefur verið '''eytt'''.\nFrekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingaskrá].\nÞú getur enn skoðað [$1 þessa útgáfu] ef þú vilt halda áfram.",
        "badsig": "Ógild hrá undirskrift. Athugaðu HTML-kóða.",
        "badsiglength": "Undirskriftin er of löng.\nHún þarf að vera færri en $1 {{PLURAL:$1|stafur|stafir}}.",
        "yourgender": "Hvernig vilt þú helst lýsa þér?",
-       "gender-unknown": "Ã\89g vil heldur ekki gefa upp",
+       "gender-unknown": "Ã\9eegar aðrir minnast Ã¡ Ã¾ig mun hugbúnaðurinn nota kynlaus orð Ã¾ar sem Ã¾að er mögulegt",
        "gender-male": "Hann breytir wikisíðum",
        "gender-female": "Hún breytir wikisíðum",
        "prefs-help-gender": "Þessi stilling er valfrjáls. Notað til að aðgreina kynin í meldingum hugbúnaðarins. Þessar upplýsingar verða aðgengilegar öllum.",
        "userrights-lookup-user": "Yfirlit notandahópa",
        "userrights-user-editname": "Skráðu notandanafn:",
        "editusergroup": "Breyta notandahópum",
-       "editinguser": "Breyti réttindum '''[[User:$1|$1]]''' $2",
+       "editinguser": "Breyti réttindum {{GENDER:$1|notandans}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Breyta notandahópum",
        "saveusergroups": "Vista notandahóp",
        "userrights-groupsmember": "Meðlimur:",
        "newpageletter": "N",
        "boteditletter": "v",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|notandi skoðandi|$1 notendur skoðandi}}]",
-       "rc_categories": "Takmark á flokkum (aðskilja með \"|\")",
-       "rc_categories_any": "Alla",
+       "rc_categories": "Takmarka við flokka (aðskilja með \"|\"):",
+       "rc_categories_any": "Allt valið",
        "rc-change-size-new": "$1 {{PLURAL:$1|bæt|bæti}} eftir breytingu",
        "newsectionsummary": "Nýr hluti: /* $1 */",
        "rc-enhanced-expand": "Sýna upplýsingar",
        "emailccsubject": "Afrit af skilaboðinu þínu til $1: $2",
        "emailsent": "Sending tókst",
        "emailsenttext": "Skilaboðin þín hafa verið send.",
-       "emailuserfooter": "Þessi tölvupóstur var sendur af $1 til $2 með möguleikanum \"Senda notanda tölvupóst\" á {{SITENAME}}.",
+       "emailuserfooter": "Þessi tölvupóstur var sendur af $1 til $2 með möguleikanum \"{{int:emailpage}}\" á {{SITENAME}}.",
        "usermessage-summary": "Skil eftir meldingu.",
        "usermessage-editor": "Meldinga sendiboði",
        "watchlist": "Vaktlistinn",
        "watchlistanontext": "Vinsamlegast skráðu þig til að skoða eða breyta hlutum á vaktlistanum þínum.",
        "watchnologin": "Óinnskráð(ur)",
        "addwatch": "Bæta á vaktlistann",
-       "addedwatchtext": "Síðunni „[[:$1]]“ hefur verið bætt á [[Special:Watchlist|vaktlistann]] þinn.\nFrekari breytingar á henni eða spjallsíðu hennar munu verða sýndar þar.",
+       "addedwatchtext": "Síðunni „[[:$1]]“ og spjallsíðu hennar hafa verið bætt á [[Special:Watchlist|vaktlistann]] þinn.",
        "removewatch": "Fjarlægja af vaktlistanum",
-       "removedwatchtext": "Síðan „[[:$1]]“ hefur verið fjarlægð af [[Special:Watchlist|vaktlistanum þínum]].",
+       "removedwatchtext": "Síðan „[[:$1]]“ og spjallsíða hennar hafa verið fjarlægð af [[Special:Watchlist|vaktlistanum]] þínum.",
        "watch": "Vakta",
        "watchthispage": "Vakta þessa síðu",
        "unwatch": "Afvakta",
        "watchlist-details": "{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.",
        "wlheader-enotif": "Tilkynning með tölvupósti er virk.",
        "wlheader-showupdated": "Síðum sem hefur verið breytt síðan þú skoðaðir þær síðast eru '''feitletraðar'''.",
-       "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta <strong>$1</strong> breyting|eru síðustu <strong>$1</strong> breytingar}} {{PLURAL:$2|síðustu <strong>$2</strong> klukkutímann|síðastliðna <strong>$2</strong> klukkutímana}}, frá $3, $4.",
+       "wlnote": "Hér fyrir neðan {{PLURAL:$1|er síðasta <strong>$1</strong> breyting|eru síðustu <strong>$1</strong> breytingar}} {{PLURAL:$2|síðasta <strong>$2</strong> klukkutímann|síðustu <strong>$2</strong> klukkutímana}}, frá $3, $4.",
        "wlshowlast": "Sýna síðustu $1 klukkutíma, $2 daga",
        "watchlist-options": "Vaktlistastillingar",
        "watching": "Vakta...",
        "protect-locked-blocked": "Þú getur ekki breytt verndunarstigi á meðan þú ert bannaður.\nHérna er núverandi verndunarstig fyrir síðuna '''$1''':",
        "protect-locked-dblock": "Á meðan gangnabankinn er læstur er ekki hægt að breyta verndunarstigi.\nHér eru núverandi verndunarstig fyrir síðuna '''$1''':",
        "protect-locked-access": "Þú hefur ekki heimild til þess að vernda eða afvernda síður.\nNúverandi staða síðunnar er '''$1''':",
-       "protect-cascadeon": "Þessi síða er vernduð vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er keðjuvernduð|síðum, sem eru keðjuverndaðar}}.\nBreytingar á verndunarstigi þessarar síðu munu ekki hafa áhrif á keðjuverndunina.",
+       "protect-cascadeon": "Þessi síða er vernduð vegna þess að hún er ítengd eftirfarandi {{PLURAL:$1|síðu, sem er keðjuvernduð|síðum, sem eru keðjuverndaðar}}.\nBreytingar á verndunarstigi þessarar síðu munu ekki hafa áhrif á keðjuverndunina.",
        "protect-default": "Leyfa öllum notendum",
        "protect-fallback": "Leyfa eingöngu notendur með „$1“ réttindi",
        "protect-level-autoconfirmed": "Leyfa aðeins sjálkrafa staðfesta notendur",
        "thumbnail_image-missing": "Skránna vantar: $1",
        "import": "Flytja inn síður",
        "importinterwiki": "Flytja inn frá öðru wiki",
-       "import-interwiki-text": "Veldu Wiki-kerfi og síðutitil til að flytja inn.\nBreytingaupplýsingar s.s. dagsetningar og höfundanöfn eru geymd.\nAllir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].",
+       "import-interwiki-text": "Veldu wiki og síðutitil til að flytja inn.\nDagsetningar og notendanöfn breytinganna verður haldið.\nAllir innflutningar frá öðrum wikum eru skráð í [[Special:Log/import|innflutningsskránna]].",
        "import-interwiki-history": "Afrita allar breytingar þessarar síðu",
        "import-interwiki-templates": "Innifala öll snið með",
        "import-interwiki-submit": "Flytja inn",
        "importcantopen": "Get ekki opnað innflutt skjal",
        "importbadinterwiki": "Villa í tungumálatengli",
        "importsuccess": "Innflutningi lokið!",
-       "importnosources": "Engin uppspretta hefur verið valin og bein upphlöð breytingarskráa eru óvirk.",
+       "importnosources": "Engir wikar sem á að flytja inn frá hava verið valdir og bein upphlöð breytingarskráa eru óvirk.",
        "importnofile": "Engri skrá var hlaðið inn.",
        "importuploaderrorsize": "Upphleðsla skrárinnar mistókst.\nSkráin er stærri en leyfð hámarksstærð.",
        "importuploaderrorpartial": "Upphleðsla skráarinnar mistókst.\nSkráinni var eingöngu hlaðið inn að hluta.",
        "tooltip-pt-mycontris": "Listi yfir framlög þín",
        "tooltip-pt-login": "Þú ert hvattur/hvött til að innskrá þig, það er hinsvegar ekki skylda.",
        "tooltip-pt-logout": "Útskráning",
+       "tooltip-pt-createaccount": "Þú ert hvattur/hvött til að búa til aðgang og skrá þig inn, en það er ekki skylda.",
        "tooltip-ca-talk": "Spallsíða þessarar síðu",
-       "tooltip-ca-edit": "Þú getur breytt síðu þessari, vinsamlegast notaðu „forskoða“ hnappinn áður en þú vistar",
+       "tooltip-ca-edit": "Breyta þessari síðu",
        "tooltip-ca-addsection": "Bæta nýjum hluta við",
        "tooltip-ca-viewsource": "Síða þessi er vernduð. Þú getur þó skoðað frumkóða hennar.",
        "tooltip-ca-history": "Eldri útgáfur af síðunni.",
        "spam_reverting": "Tek aftur síðustu breytingu sem inniheldur ekki tengil á $1",
        "spam_blanking": "Allar útgáfur innihéldu tengla á $1, tæmi síðuna",
        "spam_deleting": "Allar útgáfur innihéldu tengla á $1, eyði síðunni",
-       "simpleantispam-label": "Kæfuvörn.\n<strong>EKKI</strong> fylla þetta út!",
+       "simpleantispam-label": "Kæfuvörn.\n<strong>ekki</strong> fylla þetta út!",
        "pageinfo-title": "Upplýsingar um $1",
        "pageinfo-not-current": "Því miður er ekki hægt að veita þessar upplýsingar um gamlar útgáfur.",
        "pageinfo-header-basic": "Grunnupplýsingar",
        "compare-revision-not-exists": "Umbeðin útgáfa er ekki til.",
        "dberr-problems": "Því miður!Tæknilegir örðugleikar eru á þessari síðu.",
        "dberr-again": "Reyndu að bíða í nokkrar mínútur og endurhladdu síðan síðuna.",
-       "dberr-info": "(Mistókst að hafa samband við gagnaþjón: $1)",
-       "dberr-info-hidden": "(Mistókst að hafa samband við gagnaþjón)",
+       "dberr-info": "(Mistókst að fá aðgang að gagnaþjóni: $1)",
+       "dberr-info-hidden": "(Mistókst að fá aðgang að gagnaþjóni)",
        "dberr-usegoogle": "Þú getur notað Google til að leita á meðan.",
        "dberr-outofdate": "Athugaðu að afrit þeirra gætu verið úreld.",
        "dberr-cachederror": "Þetta er afritað eintak af umbeðinni síðu og gæti verið úreld.",
        "revdelete-restricted": "hömlur settar á stjórnendur",
        "revdelete-unrestricted": "fjarlægja hömlur á stjórnendur",
        "logentry-block-block": "$1 {{GENDER:$2|bannaði}} {{GENDER:$4|$3}}, rennur út eftir $5 $6",
+       "logentry-block-unblock": "$1 {{GENDER:$2|afbannaði}} {{GENDER:$4|$3}}",
+       "logentry-block-reblock": "$1 {{GENDER:$2|breytti}} bann stillingum fyrir {{GENDER:$4|$3}}, rennur út $5 $6",
        "logentry-suppress-block": "$1 {{GENDER:$2|bannaði}} {{GENDER:$4|$3}}, rennur út eftir $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|færði}} $3 á $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|færði}} $3 á $4 án þess að skilja eftir tilvísun",
index ff8a901..1f238fa 100644 (file)
                        "Federico Mugnaini",
                        "Fpugliajno",
                        "Fringio",
-                       "Aquatech"
+                       "Aquatech",
+                       "Statix64",
+                       "CassiodoroVicinetti"
                ]
        },
        "tog-underline": "Sottolinea i collegamenti:",
        "tog-hideminor": "Nascondi le modifiche minori nelle ultime modifiche",
        "tog-hidepatrolled": "Nascondi le modifiche verificate nelle ultime modifiche",
        "tog-newpageshidepatrolled": "Nascondi le pagine verificate dall'elenco delle pagine più recenti",
+       "tog-hidecategorization": "Nascondi la categorizzazione delle pagine",
        "tog-extendwatchlist": "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima",
        "tog-usenewrc": "Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali",
        "tog-numberheadings": "Numerazione automatica dei titoli di sezione",
        "tog-watchlisthideliu": "Nascondi le modifiche degli utenti registrati negli osservati speciali",
        "tog-watchlisthideanons": "Nascondi le modifiche degli utenti anonimi negli osservati speciali",
        "tog-watchlisthidepatrolled": "Nascondi le modifiche verificate negli osservati speciali",
+       "tog-watchlisthidecategorization": "Nascondi la categorizzazione delle pagine",
        "tog-ccmeonemails": "Inviami una copia dei messaggi spediti agli altri utenti",
        "tog-diffonly": "Non visualizzare il contenuto della pagina dopo il confronto tra versioni",
        "tog-showhiddencats": "Mostra le categorie nascoste",
        "content-model-css": "CSS",
        "content-json-empty-object": "Oggetto vuoto",
        "content-json-empty-array": "Array vuoto",
-       "duplicate-args-warning": "<strong>Avvertenza:</strong> [[:$1]] è chiamata [[:$2]] con più di un valore per il parametro \"$3\". Solo l'ultimo valore fornito sarà utilizzati.",
+       "duplicate-args-warning": "<strong>Avvertenza:</strong> [[:$1]] chiama [[:$2]] con più di un valore per il parametro \"$3\". Verrà utilizzato solo l'ultimo valore fornito.",
        "duplicate-args-category": "Pagine contenenti chiamate a template con parametri duplicati",
        "duplicate-args-category-desc": "La pagina contiene chiamate a template che utilizzano argomenti duplicati, come ad esempio <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> o <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Attenzione:''' Questa pagina contiene troppe chiamate alle parser functions.\n\nDovrebbe averne meno di $2, al momento ce {{PLURAL:$1|n'è $1|ne sono $1}}.",
        "search-category": "(categoria $1)",
        "search-file-match": "(corrispondenza nel contenuto del file)",
        "search-suggest": "Forse cercavi: $1",
+       "search-rewritten": "Mostrando i risultati per $1. Cerca invece per $2.",
        "search-interwiki-caption": "Progetti fratelli",
        "search-interwiki-default": "Risultati da $1:",
        "search-interwiki-more": "(altro)",
        "rcshowhidemine": "$1 le mie modifiche",
        "rcshowhidemine-show": "Mostra",
        "rcshowhidemine-hide": "Nascondi",
+       "rcshowhidecategorization": "$1 la categorizzazione della pagina",
+       "rcshowhidecategorization-show": "Mostra",
+       "rcshowhidecategorization-hide": "Nascondi",
        "rclinks": "Mostra le $1 modifiche più recenti apportate negli ultimi $2 giorni<br />$3",
        "diff": "diff",
        "hist": "cron",
        "recentchangeslinked-summary": "Questa pagina speciale mostra le modifiche più recenti alle pagine collegate da quella specificata (o contenute nella categoria specificata).\nLe pagine contenute nella propria lista degli [[Special:Watchlist|Osservati speciali]] sono evidenziate in <strong>grassetto</strong>.",
        "recentchangeslinked-page": "Nome della pagina:",
        "recentchangeslinked-to": "Mostra solo le modifiche alle pagine collegate a quella specificata",
+       "recentchanges-page-added-to-category": "[[:$1]] aggiunto alla categoria",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|una pagina è aggiunta|$2 pagine sono aggiunte}} alla categoria",
+       "recentchanges-page-removed-from-category": "[[:$1]] rimosso dalla categoria",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|una pagina è rimossa|$2 pagine sono rimosse}} dalla categoria",
        "upload": "Carica un file",
        "uploadbtn": "Carica",
        "reuploaddesc": "Torna al modulo per il caricamento.",
        "upload-too-many-redirects": "L'URL conteneva troppi redirect",
        "upload-http-error": "Si è verificato un errore HTTP: $1",
        "upload-copy-upload-invalid-domain": "Non è consentito il caricamento di copie da questo dominio.",
+       "upload-dialog-title": "Carica file",
+       "upload-dialog-error": "Si è verificato un errore",
+       "upload-dialog-warning": "Si è verificato un avviso",
+       "upload-dialog-button-cancel": "Annulla",
+       "upload-dialog-button-done": "Fatto",
+       "upload-dialog-button-save": "Salva",
+       "upload-dialog-button-upload": "Carica",
+       "upload-dialog-label-select-file": "Seleziona file",
+       "upload-dialog-label-infoform-title": "Dettagli",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descrizione",
+       "upload-dialog-label-usage-title": "Utilizzo",
+       "upload-dialog-label-usage-filename": "Nome del file",
        "backend-fail-stream": "Impossibile trasmettere il file $1.",
        "backend-fail-backup": "Impossibile eseguire il backup del file $1 .",
        "backend-fail-notexists": "Il file $1 non esiste.",
        "changecontentmodel-success-title": "Il modello di contenuto è stato modificato",
        "changecontentmodel-success-text": "Il tipo di contenuto di [[:$1]] è stato modificato.",
        "changecontentmodel-cannot-convert": "Il contenuto di [[:$1]] non può essere convertito in tipo $2.",
-       "changecontentmodel-title-cantexist": "Non è possibile avere una pagina in $1.",
        "changecontentmodel-nodirectediting": "Il modello di contenuto $1 non supporta la modifica diretta",
        "log-name-contentmodel": "Registro delle modifiche del modello contenuti",
        "log-description-contentmodel": "Eventi relativi al modello di contenuto di una pagina",
        "spam_reverting": "Ripristinata l'ultima versione priva di collegamenti a $1",
        "spam_blanking": "Pagina svuotata, tutte le versioni contenevano collegamenti a $1",
        "spam_deleting": "Pagina cancellata, tutte le versioni contenevano collegamenti a $1",
-       "simpleantispam-label": "Controllo anti-spam.\n<strong>NON</strong> compilare!",
+       "simpleantispam-label": "Controllo anti-spam.\n<strong>NON</strong> riempirlo!",
        "pageinfo-title": "Informazioni per \"$1\"",
        "pageinfo-not-current": "Spiacente, ma è impossibile fornire quest'informazione per vecchie versioni.",
        "pageinfo-header-basic": "Informazioni di base",
        "special-characters-title-endash": "lineetta enne",
        "special-characters-title-emdash": "lineetta emme",
        "special-characters-title-minus": "segno meno",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-GG",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "questa pagina non esiste ancora",
        "mw-widgets-titleinput-description-redirect": "reindirizzamento a $1"
 }
index 55188ea..7060214 100644 (file)
@@ -66,7 +66,8 @@
                        "朝彦",
                        "Otokoume",
                        "赤城。",
-                       "Sujiniku"
+                       "Sujiniku",
+                       "Azeha"
                ]
        },
        "tog-underline": "リンクの下線:",
        "actionthrottled": "操作が速度規制されました",
        "actionthrottledtext": "短時間にこの操作を大量に行ったため、スパム対策として設定されている制限を超えました。\n少し時間をおいてからもう一度操作してください。",
        "protectedpagetext": "このページは編集や他の操作ができないように保護されています。",
-       "viewsourcetext": "このページのソースの閲覧やコピーができます:",
-       "viewyourtext": "このページへの<strong>あなたの編集</strong>のソースの閲覧やコピーができます:",
+       "viewsourcetext": "このページのソースの閲覧やコピーができます",
+       "viewyourtext": "このページへの<strong>あなたの編集</strong>のソースの閲覧やコピーができます",
        "protectedinterface": "このページにはこのウィキのソフトウェアのインターフェイスに使用されるテキストが保存されており、いたずらなどの防止のために保護されています。\nすべてのウィキに対して翻訳を追加/変更する場合は、MediaWiki の地域化プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] を使用してください。",
        "editinginterface": "<strong>警告:</strong> ソフトウェアのインターフェイスに使用されるテキストのページを編集しています。\nこのページを変更すると、このウィキの他の利用者のユーザーインターフェイスの外観に影響します。",
        "translateinterface": "すべてのウィキに対して翻訳を追加/変更する場合は、MediaWiki の地域化プロジェクト [//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net] を使用してください。",
        "right-sendemail": "他の利用者にメールを送信",
        "right-passwordreset": "パスワード再設定メールを閲覧",
        "right-managechangetags": "[[Special:Tags|タグ]]のデータベースにおける作成および削除",
-       "right-applychangetags": "その変化に伴って[[Special:Tags|タグ]]を適用",
+       "right-applychangetags": "自分の編集に[[Special:Tags|タグ]]を適用する",
        "right-changetags": "個々の版とログエントリの任意の[[Special:Tags|タグ]]の追加と削除",
        "newuserlogpage": "アカウント作成記録",
        "newuserlogpagetext": "以下はアカウント作成の記録です。",
        "rcshowhidemine": "自分の編集を$1",
        "rcshowhidemine-show": "表示",
        "rcshowhidemine-hide": "非表示",
+       "rcshowhidecategorization": "$1 ページ カテゴリ化",
+       "rcshowhidecategorization-show": "表示",
+       "rcshowhidecategorization-hide": "非表示",
        "rclinks": "最近 $2 日間の更新を最大 $1 件表示<br />$3",
        "diff": "差分",
        "hist": "履歴",
        "boteditletter": "ボ",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|$1 人の利用者}}がウォッチしています]",
-       "rc_categories": "カテゴリを限定 (「|」で区切る)",
-       "rc_categories_any": "すべて",
+       "rc_categories": "カテゴリを限定 (「|」で区切る):",
+       "rc_categories_any": "選択したもの全部",
        "rc-change-size": "$1",
        "rc-change-size-new": "変更後は $1 {{PLURAL:$1|バイト}}",
        "newsectionsummary": "/* $1 */ 新しい節",
        "upload-too-many-redirects": "そのURLに含まれるリダイレクトが多すぎます",
        "upload-http-error": "HTTP エラー発生: $1",
        "upload-copy-upload-invalid-domain": "このドメインからのアップロードは許可されていません。",
+       "upload-dialog-button-cancel": "中止",
+       "upload-dialog-button-done": "完了",
+       "upload-dialog-button-save": "保存",
+       "upload-dialog-button-upload": "アップロード",
+       "upload-dialog-label-select-file": "ファイル選択",
+       "upload-dialog-label-infoform-title": "詳細",
+       "upload-dialog-label-infoform-name": "名前",
+       "upload-dialog-label-infoform-description": "説明",
+       "upload-dialog-label-usage-title": "使用法",
+       "upload-dialog-label-usage-filename": "ファイル名",
        "backend-fail-stream": "ファイル $1 をストリームできませんでした。",
        "backend-fail-backup": "ファイル $1 をバックアップできませんでした。",
        "backend-fail-notexists": "ファイル $1 は存在しません。",
        "watchlistanontext": "ウォッチリストにある項目を閲覧または編集するには、ログインしてください。",
        "watchnologin": "ログインしていません",
        "addwatch": "ウォッチリストに追加",
-       "addedwatchtext": "ã\83\9aã\83¼ã\82¸ã\80\8c[[:$1]]ã\80\8dã\82\92[[Special:Watchlist|ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«è¿½å\8a ã\81\97ã\81¾ã\81\97ã\81\9fã\80\82\nã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\81¾ã\81\9fã\81¯ã\81\9dã\81®ã\83\88ã\83¼ã\82¯ã\83\9aã\83¼ã\82¸ã\81\8cå¤\89æ\9b´ã\81\95ã\82\8cã\82\8bã\81¨ã\80\81ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88ã\81«è¡¨ç¤ºã\81\95ã\82\8cã\81¾ã\81\99。",
+       "addedwatchtext": "ã\80\8c[[:$1]]ã\80\8dã\81\8aã\82\88ã\81³ä»\98é\9a\8fã\81\99ã\82\8bè­°è«\96ã\83\9aã\83¼ã\82¸ã\82\92ã\80\81[[Special:Watchlist|ã\82¦ã\82©ã\83\83ã\83\81ã\83ªã\82¹ã\83\88]]ã\81«è¿½å\8a ã\81\97ã\81¾ã\81\97ã\81\9f。",
        "addedwatchtext-short": "ページ「$1」をウォッチリストに追加しました。",
        "removewatch": "ウォッチリストから除去",
-       "removedwatchtext": "ã\83\9aã\83¼ã\82¸ã\80\8c[[:$1]]ã\80\8dを[[Special:Watchlist|ウォッチリスト]]から除去しました。",
+       "removedwatchtext": "ã\80\8c[[:$1]]ã\80\8dã\81\8aã\82\88ã\81³ä»\98é\9a\8fã\81\99ã\82\8bè­°è«\96ã\83\9aã\83¼ã\82¸を[[Special:Watchlist|ウォッチリスト]]から除去しました。",
        "removedwatchtext-short": "ページ「$1」をウォッチリストから除去しました。",
        "watch": "ウォッチ",
        "watchthispage": "このページをウォッチする",
        "changecontentmodel-success-title": "コンテント・モデルは変更されました",
        "changecontentmodel-success-text": "[[:$1]]のコンテント・タイプは変更されています。",
        "changecontentmodel-cannot-convert": "[[:$1]]上のコンテントは$2の型には変換できません。",
-       "changecontentmodel-title-cantexist": "$1 でページを持つことは不可能です。",
        "changecontentmodel-nodirectediting": "$1 コンテント・モデルは、ダイレクト編集をサポートしていません。",
-       "log-name-contentmodel": "コンテント・モデル変更ログ",
+       "log-name-contentmodel": "コンテント・モデル変更記録",
        "log-description-contentmodel": "ページのコンテント・モデルに関連するイベント",
        "logentry-contentmodel-change": "$1 がページ $3 のコンテント・モデルを \"$4\" から \"$5\" に{{GENDER:$2|変更しました}}",
        "logentry-contentmodel-change-revertlink": "差し戻し",
        "undeletepagetext": "以下の{{PLURAL:$1|削除されたページ|​&#32;$1 件の削除されたページ}}は、保存版に残っているため復元できます。\n保存版は定期的に消去される可能性があります。",
        "undelete-fieldset-title": "削除された版の復元",
        "undeleteextrahelp": "すべての版を復元する場合は、どのボックスにもチェックを入れていない状態で<strong><em>{{int:undeletebtn}}</em></strong>をクリックしてください。\n特定の版を復元する場合は、復元する版のボックスにチェックを入れた状態で<strong><em>{{int:undeletebtn}}</em></strong>をクリックしてください。",
-       "undeleterevisions": "保存版に$1{{PLURAL:$1|版}}あります",
+       "undeleterevisions": "$1{{PLURAL:$1|版}}削除",
        "undeletehistory": "ページを復元すると、すべての版が履歴に復元されます。\n削除後に同じ名前で新しいページが作成されている場合、復元された版はそれに先行する履歴として表示されます。",
        "undeleterevdel": "版指定削除されている版がページまたはファイルの最新版となるような復元はできません。\nこの場合、版指定削除されている最新版のチェックを外すか、その版指定削除を解除する必要があります。",
        "undeletehistorynoadmin": "このページは削除されています。\n削除の理由は、削除前にこのページを編集していた利用者の詳細情報と共に、以下に表示されています。\n管理者以外の利用者には、削除された各版の本文への制限がかけられています。",
        "spam_reverting": "$1へのリンクを含まない最新の版に差し戻し",
        "spam_blanking": "すべての版が$1へのリンクを含んでいます。白紙化します。",
        "spam_deleting": "すべての版が$1へのリンクを含んでいます。削除します。",
-       "simpleantispam-label": "ã\82¹ã\83\91ã\83 æ\94»æ\92\83é\98²æ­¢ç\94¨ã\81®ã\83\81ã\82§ã\83\83ã\82¯ã\81§ã\81\99ã\80\82\nã\81\93ã\81\93ã\81«å\80¤ã\82\92決ã\81\97ã\81¦å\85¥å\8a\9b<strong>ã\81\97ã\81ªã\81\84</strong>ã\81§ã\81\8fã\81 ã\81\95ã\81\84ã\80\82",
+       "simpleantispam-label": "ã\82¹ã\83\91ã\83 æ\94»æ\92\83é\98²æ­¢ç\94¨ã\81®ã\83\81ã\82§ã\83\83ã\82¯ã\81§ã\81\99ã\80\82\nã\81\91ã\81£ã\81\97ã\81¦ã\80\81ã\81\93ã\81\93ã\81«ã\81¯ã\80\81å\80¤ã\81®å\85¥å\8a\9bã\81¯<strong>ã\81\97ã\81ªã\81\84</strong>ã\81§ã\81\8fã\81 ã\81\95ã\81\84ï¼\81",
        "pageinfo-title": "「$1」の情報",
        "pageinfo-not-current": "申し訳ありませんが、過去の版の情報は表示できません。",
        "pageinfo-header-basic": "基本情報",
        "htmlform-title-badnamespace": "[[:$1]]は、\"{{ns:$2}}\"名前空間にありません。",
        "htmlform-title-not-creatable": "\"$1\" は、作成可能なページ名では、ありません。",
        "htmlform-title-not-exists": "[[:$1]] は存在しません。",
+       "htmlform-user-not-exists": "<strong>$1</strong>は存在しません。",
+       "htmlform-user-not-valid": "<strong>$1</strong>は有効な利用者名ではありません。",
        "sqlite-has-fts": "$1 (全文検索あり)",
        "sqlite-no-fts": "$1 (全文検索なし)",
        "logentry-delete-delete": "$1 がページ「$3」を{{GENDER:$2|削除しました}}",
        "revdelete-uname-unhid": "利用者名の可視化",
        "revdelete-restricted": "管理者に対する制限の適用",
        "revdelete-unrestricted": "管理者に対する制限の除去",
-       "logentry-block-block": "$1 が {{GENDER:$4|$3}} を$5{{GENDER:$2|ブロックしました}} $6",
+       "logentry-block-block": "$1 が {{GENDER:$4|$3}} を$5{{GENDER:$2|ブロックしました}} $6",
        "logentry-block-unblock": "$1 が {{GENDER:$4|$3}} の{{GENDER:$2|ブロックを解除しました}}",
        "logentry-block-reblock": "$1 が {{GENDER:$4|$3}} のブロックの期限を$5に{{GENDER:$2|変更しました}} $6",
        "logentry-suppress-block": "$1 が {{GENDER:$4|$3}} を$5で{{GENDER:$2|ブロックしました}} $6",
        "special-characters-title-endash": "en ダッシュ",
        "special-characters-title-emdash": "em ダッシュ",
        "special-characters-title-minus": "マイナス記号",
+       "mw-widgets-dateinput-no-date": "選択されたデータ無し",
        "mw-widgets-titleinput-description-new-page": "ページは存在しません",
        "mw-widgets-titleinput-description-redirect": "$1 へのリダイレクト"
 }
index a8c052b..58c5ed7 100644 (file)
        "special-characters-title-endash": "ტირე",
        "special-characters-title-emdash": "გრძელი ტირე",
        "special-characters-title-minus": "მინუსის ნიშანი",
+       "mw-widgets-dateinput-placeholder-day": "წწწწ-თთ-დდ",
+       "mw-widgets-dateinput-placeholder-month": "წწწწ-თთ",
        "mw-widgets-titleinput-description-new-page": "გვერდი ჯერ არ არსებობს",
        "mw-widgets-titleinput-description-redirect": "გადამისამართება $1-ზე"
 }
index 25e29e2..2e1162c 100644 (file)
        "actionthrottled": "Әрекет бәсеңдетілді",
        "actionthrottledtext": "Спамға қарсы күрес есебінде осы әрекетті қысқа уақытта тым көп рет орындауыңыз шектелінді және бұл шектеу шамасынан асып кетіпсіз.\nБірнеше минуттан кейін қайта байқап көріңіз.",
        "protectedpagetext": "Бұл бет өңдеу немесе басқа әрекеттерді болдырмау үшін қорғалған.",
-       "viewsourcetext": "Бұл беттің қайнарын қарауыңызға және көшіріп алуыңызға болады:",
+       "viewsourcetext": "Бұл беттің қайнарын қарауыңызға және көшіріп алуыңызға болады.",
        "viewyourtext": "Осы беттен <strong>өңдемелеріңіздің</strong> қайнарын қарай және көшіре аласыз.",
        "protectedinterface": "Бұл бет осы уикидің бағдарламалық жасақтамасы үшін интерфейс мәтінін қамтамасыз етеді және қиянаттауды болдырмау үшін қорғалған. Барлық уикилер үшін аудармаларды қосу немесе өзгерту үшін [//translatewiki.net/ translatewiki.net] MediaWiki жерсіндіру жобасын қолданыңыз.",
        "editinginterface": "<strong>Ескерту:</strong> Бағдарламалық жасақтаманың тілдесу мәтінін жетістіретін бетін өңдеп жатырсыз.\nБұл беттің өзгертілуі басқа қатысушыларға пайдаланушылық интерфейсін қалай көрінетіне әсер етеді.",
        "copyrightwarning": "{{SITENAME}} жобасына қосқан барлық үлестеріңіз $2 (көбірек ақпарат үшін: $1) аясында жарияланатынын ескеріңіз.\nЕгер еңбегіңіздің еркін өңделуін және ақысыз көпшілікке таралуын қаламасаңыз мұнда жарияламаңыз<br />\nТағы да бұл мәліметті өзіңіз жазғаныңызға не қоғам қазынасынан немесе сондай ашық қорлардан көшірілгеніне бізге уәде бересіз.\n<strong>Авторлық құқықпен қорғалған мәліметті рұқсатсыз жарияламаңыз!</strong>",
        "copyrightwarning2": "{{SITENAME}} жобасына қосқан барлық үлестеріңізді басқа үлескерлер өңдеуге, өзгертуге немесе аластауы мүмкін екенін ескеріңіз.\nЕгер еңбегіңіздің еркін өңделуін қаламасаңыз осында жарияламаңыз.<br />\nТағы да бұл мәліметті өзіңіз жазғаныңызға не қоғам қазынасынан немесе сондай ашық қорлардан көшірілгеніне бізге уәде бересіз. (көбірек ақпарат үшін $1 құжатын қараңыз).\n<strong>Авторлық құқықпен қорғалған мәліметті рұқсатсыз жарияламаңыз!</strong>",
        "longpageerror": "<strong>ҚАТЕЛІК: Сақтамақшы болған мәтініңіздің көлемі {{PLURAL:$1|бір килобайт|$1 килобайт}} ең көбі {{PLURAL:$2|килобайт|$2 килобайт}} рұқсат етілген көлемінен асқан.</strong>\nБұл сақталмайды.",
-       "readonlywarning": "<strong>Ð\95СÐ\9aÐ\95РТУ: Ð\94еÑ\80екÒ\9bоÑ\80 Ñ\82еÑ\85никалÑ\8bÒ\9b Ð¶Ò±Ð¼Ñ\8bÑ\81Ñ\82аÑ\80 Ð¶Ð°Ñ\81аÑ\83 Ò¯Ñ\88Ñ\96н Ò\9bұлÑ\8bпÑ\82алÒ\93ан Ñ\81ондÑ\8bÒ\9bÑ\82ан Ð´Ó\99л Ò\9bазÑ\96Ñ\80 Ó©Ò£Ð´ÐµÐ¼ÐµÒ£Ñ\96здÑ\96 Ñ\81аÒ\9bÑ\82ай Ð°Ð»Ð¼Ð°Ð¹Ñ\81Ñ\8bз.</strong>\nÐ\9aейÑ\96н Ñ\81аÒ\9bÑ\82аÑ\83 Ò¯Ñ\88Ñ\96н Ð¼Ó\99Ñ\82Ñ\96нÑ\96Ò£Ñ\96здÑ\96 Ð¼Ó\99Ñ\82Ñ\96н Ñ\84айлÑ\8bна ÐºÓ©Ñ\88Ñ\96Ñ\80Ñ\96п Ð°Ð»Ñ\8bпÑ\83Ò£Ñ\8bзÒ\93а Ð±Ð¾Ð»Ð°Ð´Ñ\8b. \n\nÐ\90дминÑ\81Ñ\82Ñ\80аÑ\82оÑ\80 Ð¾Ð½Ñ\8b Ò\9bұлÑ\8bпÑ\82аÑ\83 Ñ\81ебебÑ\96н ÐºÐµÐ»ÐµÑ\81Ñ\96дей Ñ\82Ò¯Ñ\81Ñ\96ндÑ\96Ñ\80едÑ\96: $1",
+       "readonlywarning": "<strong>ЕСКЕРТУ: Дерекқор техникалық жұмыстар жасау үшін құлыпталған сондықтан дәл қазір өңдемеңізді сақтай алмайсыз.</strong>\nКейін сақтау үшін мәтініңізді мәтін файлына көшіріп алуңызға болады. \n\nАдминстратор оны құлыптау себебін келесідей түсіндіреді: $1",
        "protectedpagewarning": "<strong>Ескерту: Бұл бет өңдеуден қорғалған сондықтан тек әкімші құқықтары бар қатысушылар ғана өңдей алады.</strong>\nТөменде соңғы журнал жазбасы көрсетілген:",
        "semiprotectedpagewarning": "<strong>Ескерту:</strong> Бет жартылай қорғалған, сондықтан осыны тек тіркелген қатысушылар өңдей алады.\nТөменде бет журналының соңғы жазбасы көрсетілген:",
        "cascadeprotectedwarning": "<strong>Ескерту:</strong> Бұл бет қорғалған, сондықтан тек әкімші құқықтары бар қатысушылар ғана өңдей алады, себебі бұл келесі «баулы қорғауы» бар {{PLURAL:$1|бетіне|беттеріне}} кірістілген бет:",
        "userrights-lookup-user": "Қатысушы топтарын реттеу",
        "userrights-user-editname": "Қатысушы атын енгізіңіз:",
        "editusergroup": "Қатысушы топтарын өңдеу",
-       "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|user}}есімді қатысушының құқықтарын өзгерту",
+       "editinguser": "<strong>[[User:$1|$1]]</strong> $2 {{GENDER:$1|есімді қатысушының}} қатысушы құқықтарын өзгерту",
        "userrights-editusergroup": "Қатысушы топтарын өңдеу",
        "saveusergroups": "Қатысушы топтарын сақтау",
        "userrights-groupsmember": "Мүшелігі:",
        "htmlform-cloner-create": "Тағы қосу",
        "htmlform-cloner-delete": "Аластау",
        "htmlform-cloner-required": "Кемінде бір мән қажет етеді.",
+       "htmlform-title-badnamespace": "[[:$1]] беті «{{ns:$2}}» есім кеңістігінде емес.",
+       "htmlform-title-not-creatable": "«$1» беті бастауға болатын бет атауы емес",
+       "htmlform-title-not-exists": "[[:$1]] беті жоқ.",
+       "htmlform-user-not-exists": "<strong>$1</strong> есімді қатысушы жоқ.",
+       "htmlform-user-not-valid": "<strong>$1</strong> жарамды қатысушы есімі емес.",
        "sqlite-has-fts": "$1 дегенмен барлық мәтінде іздеуді қолдайды",
        "sqlite-no-fts": "$1дегенсіз барлық мәтінде іздеуді қолдайды",
        "logentry-delete-delete": "$1 $3 деген бетті {{GENDER:$2|жойды}}",
        "special-characters-title-endash": "дефис",
        "special-characters-title-emdash": "сызықша",
        "special-characters-title-minus": "минус белгісі",
+       "mw-widgets-dateinput-placeholder-day": "ЖЖЖЖ-АА-КК",
+       "mw-widgets-dateinput-placeholder-month": "ЖЖЖЖ-АА",
        "mw-widgets-titleinput-description-new-page": "бет жоқ екен",
        "mw-widgets-titleinput-description-redirect": "$1 дегенге бағыттату"
 }
index d8eda8d..208744f 100644 (file)
@@ -22,6 +22,7 @@
        "tog-hideminor": "លាក់​កំណែប្រែតិចតួច​ពីបញ្ជីបន្លាស់ប្ដូរថ្មីៗ",
        "tog-hidepatrolled": "លាក់​កំណែប្រែ​ដែល​បាន​ល្បាតពីបញ្ជីបន្លាស់ប្ដូរ​ថ្មីៗ",
        "tog-newpageshidepatrolled": "លាក់​ទំព័រ​ដែល​បាន​ល្បាតពី​បញ្ជី​ទំព័រ​ថ្មី",
+       "tog-hidecategorization": "លាក់ការដាក់ចំណាត់ថ្នាក់ក្រុមទំព័រ",
        "tog-extendwatchlist": "ពន្លាត​បញ្ជីតាមដាន​ដើម្បី​បង្ហាញ​គ្រប់​បន្លាស់ប្ដូរទាំងអស់ មិន​មែន​ត្រឹមតែ​បន្លាស់ប្ដូរថ្មី​ៗ​នោះ​ទេ",
        "tog-usenewrc": "បន្លាស់ប្ដូរជាក្រុមតាមទំព័រក្នុងបន្លាស់ប្តូរថ្មីៗនិងបញ្ជីតាមដាន",
        "tog-numberheadings": "ដាក់លេខ​ចំណងជើងរង​ដោយស្វ័យប្រវត្តិ",
@@ -32,6 +33,7 @@
        "tog-watchdefault": "បន្ថែម​ទំព័រទាំងឡាយ​ដែលខ្ញុំកែប្រែ​ទៅ​បញ្ជីតាមដាន​របស់ខ្ញុំ",
        "tog-watchmoves": "បន្ថែម​ទំព័រ​ទាំងឡាយដែលខ្ញុំប្តូរទីតាំង​ទៅ​បញ្ជីតាមដាន​របស់ខ្ញុំ",
        "tog-watchdeletion": "បន្ថែម​ទំព័រទាំងឡាយ​ដែលខ្ញុំលុបចោល​ទៅ​បញ្ជីតាមដាន​របស់ខ្ញុំ",
+       "tog-watchrollback": "បន្ថែមទំព័រដែលខ្ញុំបានមូលត្រឡប់ទៅកាន់បញ្ជីតាមដានរបស់ខ្ញុំ",
        "tog-minordefault": "ចំណាំ​គ្រប់កំណែប្រែ​របស់ខ្ញុំ​ថាជា​កំណែប្រែតិចតួច",
        "tog-previewontop": "បង្ហាញ​ការមើលមុន​ពីលើ​ប្រអប់​កែប្រែ",
        "tog-previewonfirst": "បង្ហាញ​ការមើលមុនសម្រាប់កំណែប្រែ​ដំបូងគេ",
        "tog-watchlisthideliu": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់ដែលបានកត់ឈ្មោះចូលពីបញ្ជីតាមដាន",
        "tog-watchlisthideanons": "លាក់កំណែប្រែរបស់អ្នកប្រើប្រាស់អនាមិកពីបញ្ជីតាមដាន",
        "tog-watchlisthidepatrolled": "លាក់​កំណែប្រែ​ដែល​បាន​ល្បាតពី​បញ្ជីតាមដាន",
+       "tog-watchlisthidecategorization": "លាក់ការដាក់ចំណាត់ថ្នាក់ក្រុមទំព័រ",
        "tog-ccmeonemails": "ផ្ញើច្បាប់ចម្លង​អ៊ីមែលដែលខ្ញុំផ្ញើទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតមកខ្ញុំខ្លួនឯងផងដែរ",
        "tog-diffonly": "កុំបង្ហាញខ្លឹមសារទំព័រនៅពីក្រោមតារាងប្រៀបធៀបចំណុចខុសគ្នា",
        "tog-showhiddencats": "បង្ហាញចំណាត់ថ្នាក់ក្រុមដែលត្រូវបានលាក់",
        "tog-norollbackdiff": "បំភ្លេច​ភាព​ខុស​គ្នា​បន្ទាប់​ពី​អនុវត្តការ​ស្ដារវិញ",
-       "tog-useeditwarning": "á\9e\9fá\9e¼á\9e\98á\9e\96á\9f\92á\9e\9aá\9e\98á\9e¶á\9e\93â\80\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8b á\9e\96á\9f\81á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\85á\9e¶á\9e\80á\9e\85á\9f\81á\9e\89â\80\8bá\9e\96á\9e¸â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9f\84á\9e\99á\9e\98á\9e·á\9e\93â\80\8bá\9e\94á\9e¶á\9e\93á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶â\80\8bá\9e\91á\9e»á\9e\80á\9e\94á\9f\86លាស់ប្ដូរ​នានា​",
+       "tog-useeditwarning": "á\9e\9fá\9e¼á\9e\98á\9e\96á\9f\92á\9e\9aá\9e\98á\9e¶á\9e\93â\80\8bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8b á\9e\96á\9f\81á\9e\9bá\9e\8aá\9f\82á\9e\9bá\9e\81á\9f\92á\9e\89á\9e»á\9f\86â\80\8bá\9e\85á\9e¶á\9e\80á\9e\85á\9f\81á\9e\89â\80\8bá\9e\96á\9e¸â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9f\84á\9e\99á\9e\98á\9e·á\9e\93â\80\8bá\9e\94á\9e¶á\9e\93á\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶â\80\8bá\9e\91á\9e»á\9e\80á\9e\94á\9e\93á\9f\92លាស់ប្ដូរ​នានា​",
        "tog-prefershttps": "ប្រើប្រាស់ការតភ្ជាប់មានសុវត្ថិភាពជានិច្ចពេលកត់ឈ្មោះចូល",
        "underline-always": "ជានិច្ច",
        "underline-never": "កុំឲ្យសោះ",
        "view": "មើល",
        "view-foreign": "មើលលើ $1",
        "edit": "កែប្រែ",
+       "edit-local": "កែប្រែចំណារពន្យល់ដើម",
        "create": "បង្កើត",
+       "create-local": "ចំណារពន្យល់ដើម",
        "editthispage": "កែប្រែទំព័រនេះ",
        "create-this-page": "បង្កើតទំព័រនេះ",
        "delete": "លុបចោល",
        "jumpto": "លោតទៅ៖",
        "jumptonavigation": "ការណែនាំ",
        "jumptosearch": "ស្វែងរក",
-       "view-pool-error": "á\9e\9fá\9e¼á\9e\98á\9e¢á\9e\97á\9f\90á\9e\99á\9e\91á\9f\84á\9e\9fá\9f\94 á\9e\94á\9f\92á\9e\9aá\9e\96á\9f\90á\9e\93á\9f\92á\9e\92á\9e\94á\9f\86រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\n\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\n\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។\n\n$1",
+       "view-pool-error": "á\9e\9fá\9e¼á\9e\98á\9e¢á\9e\97á\9f\90á\9e\99á\9e\91á\9f\84á\9e\9fá\9f\94 á\9e\94á\9f\92á\9e\9aá\9e\96á\9f\90á\9e\93á\9f\92á\9e\92á\9e\94á\9e\98á\9f\92រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\n\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\n\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។\n\n$1",
        "pool-errorunknown": "កំហុសមិនស្គាល់",
        "aboutsite": "អំពី{{SITENAME}}",
        "aboutpage": "Project:អំពី",
        "filerenameerror": "មិនអាចប្តូរឈ្មោះឯកសារពី\"$1\" ទៅ \"$2\"បានទេ។",
        "filedeleteerror": "មិនអាចលុបឯកសារ\"$1\"បានទេ។",
        "directorycreateerror": "មិនអាចបង្កើតថត\"$1\"បានទេ។",
+       "directoryreadonlyerror": "ថត \"$1\" គឺសម្រាប់តែអានចេញទេ។",
+       "directorynotreadableerror": "ថត \"$1\" មិនអាចអានបានទេ។",
        "filenotfound": "រក​ឯកសារ \"$1\" មិនឃើញទេ។",
        "unexpected": "តម្លៃ​មិនបានរំពឹងទុក៖ \"$1\"=\"$2\"។",
        "formerror": "បញ្ហា៖ មិនអាចដាក់ស្នើ​សំណុំបែបបទ",
        "actionthrottled": "សកម្មភាពត្រូវបានកម្រិត",
        "actionthrottledtext": "ក្រោមវិធានការប្រឆាំងស្ប៉ាម​ អ្នកត្រូវបាន​គេកំហិតមិនឱ្យ​ធ្វើសកម្មភាពនេះ​ច្រើនដងពេកទេ​ក្នុងរយៈពេលខ្លីមួយ។\n\nសូមព្យាយាមម្ដងទៀតក្នុងរយៈពេលប៉ុន្មាននាទីទៀត។",
        "protectedpagetext": "ទំព័រនេះបានត្រូវការពារមិនឱ្យកែប្រែ​ឬធ្វើសកម្មភាពផ្សេងទៀតលើវា។",
-       "viewsourcetext": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\98á\9e¾á\9e\9bá\9e\93á\9e·á\9e\84á\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84á\9e\80á\9e¼á\9e\8aá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9f\96",
-       "viewyourtext": "អ្នកអាចមើលនិងចម្លងកូដរបស់'''ការកែប្រែរបស់អ្នក'''មកកាន់ទំព័រនេះ៖",
+       "viewsourcetext": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\98á\9e¾á\9e\9bá\9e\93á\9e·á\9e\84á\9e\85á\9e\98á\9f\92á\9e\9bá\9e\84á\9e\80á\9e¼á\9e\8aá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9f\94",
+       "viewyourtext": "អ្នកអាចមើលនិងចម្លងកូដរបស់<strong>ការកែប្រែរបស់អ្នក</strong>មកកាន់ទំព័រនេះ។",
        "protectedinterface": "ទំព័រនេះផ្ដល់នូវអត្ថបទអន្តរមុខសម្រាប់សូហ្វវែរនៅក្នុងវិគីនេះ និងត្រូវបានចាក់សោដើម្បីចៀសវាងការបំពាន។\nដើម្បីបន្ថែមឬផ្លាស់ប្ដូរការបកប្រែសំរាប់វិគីទាំងអស់ សូមប្រើប្រាស់ [//translatewiki.net/ translatewiki.net] ដែលជាគំរោងបកប្រែរបស់MediaWiki។",
        "editinginterface": "<strong>ប្រយ័ត្ន៖</strong> អ្នកកំពុងតែកែប្រែទំព័រដែលបានប្រើប្រាស់​ដើម្បីផ្ដល់ជូនអន្តរមុខសម្រាប់សូហ្វវែរ។ បន្លាស់ប្ដូរចំពោះទំព័រនេះ​នឹងប៉ះពាល់ដល់ទ្រង់ទ្រាយរបស់ទំព័រអន្តរមុខសំរាប់អ្នកប្រើប្រាស់​ជាច្រើននាក់ ដែលប្រើប្រាស់វិគីនេះ។",
        "translateinterface": "ដើម្បីបន្ថែមឬកែប្រែការបកប្រែសម្រាប់វិគីទាំងអស់ សូមប្រើប្រាស់ [//translatewiki.net/ translatewiki.net] ដែលជាគម្រោងបកប្រែវិគីមេឌា។",
-       "cascadeprotected": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9f\84á\9e\99á\9e\9fá\9e¶á\9e\9aá\9e\9cá\9e¶á\9e\98á\9e¶á\9e\93{{PLURAL:$1|á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a, á\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93}} á\9e\8aá\9f\82á\9e\9bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\87á\9e¶á\9e\98á\9e½á\9e\99á\9e\87á\9f\86á\9e\9aá\9e¾á\9e\9f\"ជាបណ្ដាក់\"៖\n$2",
-       "namespaceprotected": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91'''$1'''ទេ។",
+       "cascadeprotected": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\98á\9e·á\9e\93á\9e¢á\9f\84á\9e\99á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9f\84á\9e\99á\9e\9fá\9e¶á\9e\9aá\9e\9cá\9e¶á\9e\98á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e\94á\9f\8b{{PLURAL:$1|á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9b\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9b}} á\9e\94á\9e¶á\9e\93á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\87á\9e\98á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\87á\9e¶á\9e\80á\9e¶á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9a\"ជាបណ្ដាក់\"៖\n$2",
+       "namespaceprotected": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93á\9e\9fá\9e·á\9e\91á\9f\92á\9e\92á\9e·á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\9bá\9f\86á\9e á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\87á\9e¶<strong>$1</strong>ទេ។",
        "customcssprotected": "អ្នកមិនមាន​ការអនុញ្ញាត​ក្នុងការកែប្រែទំព័រ CSS នេះទេ ព្រោះវាផ្ទុកការកំណត់ផ្ទាល់ខ្លួនផ្សេងៗរបស់អ្នកប្រើប្រាស់ម្នាក់ផ្សេងទៀត។",
        "customjsprotected": "អ្នកមិនមាន​ការអនុញ្ញាត​ក្នុងការកែប្រែទំព័រ JavaScript នេះទេ ព្រោះវាផ្ទុកការកំណត់ផ្ទាល់ខ្លួនផ្សេងៗរបស់អ្នកប្រើប្រាស់ម្នាក់ផ្សេងទៀត។",
        "mycustomcssprotected": "អ្នកមិនមាន​ការអនុញ្ញាត​ក្នុងការកែប្រែទំព័រ CSS នេះទេ។",
        "createaccount-text": "មានអ្នកផ្សេងបានបង្កើតគណនីជាឈ្មោះ \"$2\" លើ{{SITENAME}}($4) ព្រមទាំងពាក្យសំងាត់ \"$3\" ដោយប្រើអាសយដ្ឋានអ៊ីមែលរបស់អ្នកហើយ។\n\nអ្នកគួរតែកត់ឈ្មោះចូលហើយផ្លាស់ប្តូរពាក្យសំងាត់របស់អ្នកនៅពេលនេះ។\n\nអ្នកអាចបំភ្លេចពីសារនេះ ប្រសិនបើ​គណនីនេះត្រូវបានបង្កើតដោយមានបញ្ហា។",
        "login-throttled": "អ្នកបានកត់ឈ្មោះចូលមិនបានសម្រេចច្រើនដងពេកហើយ។​\n\nសូមរងចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
        "login-abort-generic": "អ្នកចុះឈ្មោះចូលមិនបានសម្រេចទេ។ ការចុះឈ្មោះចូលត្រូវបានបោះបង់។",
+       "login-migrated-generic": "គណនីរបស់អ្នកត្រូវបានផ្ទេរចេញហើយ ហើយអត្តនាមរបស់អ្នកក៏គ្មាននៅក្នុងវិគីនេះតទៅទៀតដែរ។",
        "loginlanguagelabel": "ភាសា៖ $1",
        "createacct-another-realname-tip": "អ្នកអាចផ្ដល់ឈ្មោះពិតរបស់អ្នកក៏បានមិនផ្ដល់ក៏បាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងត្រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។",
        "pt-login": "កត់ឈ្មោះចូល",
        "anoneditwarning": "'''ប្រយ័ត្ន ៖''' អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ អាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។ បើសិនជាអ្នក <strong>[$1 កត់ឈ្មោះចូល]</strong> ឬ <strong>[$2 បង្កើតគណនី]</strong> នោះការកែប្រែរបស់អ្នកនឹងត្រូវភ្ចាប់ជាមួយអត្តនាមរបស់អ្នកផង នឹងមានផលប្រយោជន៍ផ្សេងទៀតផង។",
        "anonpreviewwarning": "<em>អ្នកមិនបានកត់ឈ្មោះចូល​ទេ។ ប្រសិនបើអ្នកធ្វើការរក្សាទុក នោះអាសយដ្ឋានIPរបស់អ្នក​នឹងត្រូវបាន​កត់ត្រាទុក​ក្នុងប្រវត្តិកែប្រែ​នៃទំព័រ​នេះ។</em>",
        "missingsummary": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ចំណារពន្យល់អំពីកំណែប្រែនេះទេ។\n\nបើសិនជាអ្នកចុច '''រក្សាទុក''' ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានចំណារពន្យល់។",
+       "selfredirect": "<strong>ប្រយ័ត្ន៖</strong> អ្នកកំពុងតែបញ្ជូនបន្តទំព័រនេះទៅកាន់ទំព័រខ្លួនឯង។\n\nប្រហែលជាអ្នកបានផ្ដល់ទំព័រគោលដៅសម្រាប់បញ្ជូនបន្តខុខ ឬប្រហែលជាអ្នកកំពុងកែប្រែទំព័រខុស។\nបើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀត តំណភ្ជាប់បញ្ជូនបន្តនឹងត្រូវបង្កើតឡើងបែបនេះ។",
        "missingcommenttext": "សូមវាយបញ្ចូលយោបល់មួយនៅខាងក្រោម។",
        "missingcommentheader": "'''រំលឹក៖''' អ្នកមិនទាន់បានផ្ដល់ឱ្យនូវ ប្រធានបទ/ចំណងជើង របស់មតិយោបល់នេះទេ។\nបើសិនជាអ្នកចុច \"{{int:savearticle}}\" ម្ដងទៀតនោះកំណែប្រែរបស់អ្នកនឹងត្រូវរក្សាទុកដោយគ្មានវា។",
        "summary-preview": "ការមើលជាមុនរបស់ចំណារពន្យល់:",
        "readonlywarning": "'''ប្រយ័ត្ន:មូលដ្ឋានទិន្នន័យត្រូវបានចាក់សោសម្រាប់ការរក្សាទុក ដូច្នេះអ្នកនឹងមិនអាចរក្សាទុករាល់កំណែប្រែរបស់អ្នកបានទេឥឡូវនេះ។'''\nសូមអ្នកចម្លងអត្ថបទ រួចដាក់ទៅក្នុងឯកសារដែលជាអត្ថបទ ហើយបន្ទាប់មករក្សាវាទុកនៅពេលក្រោយ។\n\nអ្នកអភិបាលដែលបានចាក់សោវា បានផ្ដល់នូវការពន្យល់ដូចតទៅ៖ $1",
        "protectedpagewarning": "'''ប្រយ័ត្ន៖ ទំព័រនេះ​ត្រូវបានចាក់សោ។ ដូច្នេះ​មានតែ​អ្នកប្រើប្រាស់​ដែល​មាន​អភ័យឯកសិទ្ឋិ​ជាអ្នកអភិបាលទេទើបអាច​កែប្រែ​វាបាន។'''\n\nខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
        "semiprotectedpagewarning": "'''សម្គាល់់៖''' ទំព័រនេះ​បានត្រូវ​ចាក់សោ។ ដូច្នេះ​មានតែអ្នកប្រើប្រាស់​ដែលបានចុះឈ្មោះ​ទេទើបអាចកែប្រែ​វា​បាន។\n\nខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
-       "cascadeprotectedwarning": "ប្រយ័ត្ន​៖ ទំព័រ​នេះ​ត្រូវ​បាន​ចាក់​សោ​ ដូច្នោះ​ហើយ​មាន​តែ​អ្នក​ប្រើ​ប្រាស់​ដែល​មាន​សិទ្ធិ​ជា​អ្នក​អភិបាល​ប៉ុណ្ណោះ​ អាច​កែ​ប្រែ​បាន។ ពីព្រោះ​ទំព័រ​នេះ​ត្រូវ​បាន​រួម​បញ្ចូល​ទៅ​ក្នុង​\n{{PLURAL:$1|ទំព័រ​}}ដែលការ​ពារ​ជា​ថ្នាក់ (cascade-protected)៖",
-       "titleprotectedwarning": "'''ប្រយ័ត្ន៖ ទំព័រនេះត្រូវបានចាក់សោ។ ដូច្នេះមានតែ[[Special:ListGroupRights|អ្នកមានសិទ្ធពិសេស]]ប៉ុណ្ណោះទើបអាចបង្កើតវាបាន។'''\n\nខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
+       "cascadeprotectedwarning": "<strong>ប្រយ័ត្ន​៖</strong>  ទំព័រ​នេះ​ត្រូវ​បាន​ការណារ ដូច្នោះ​ហើយ​មាន​តែ​អ្នក​ប្រើ​ប្រាស់​ដែល​មាន​សិទ្ធិ​ជា​អ្នក​អភិបាល​ប៉ុណ្ណោះ​ទើបអាច​កែ​ប្រែ​បាន។ ពីព្រោះ​ទំព័រ​នេះ​ត្រូវ​បាន​បង្កប់បញ្ចូល​ទៅ​ក្នុង​{{PLURAL:$1|ទំព័រ|ទំព័រ​​}}ដែលការ​ពារ​បណ្ដាក់៖",
+       "titleprotectedwarning": "<strong>ប្រយ័ត្ន៖ ទំព័រនេះត្រូវបានការពារ។ ដូច្នេះមានតែ[[Special:ListGroupRights|អ្នកមានសិទ្ធិពិសេស]]ប៉ុណ្ណោះទើបអាចបង្កើតវាបាន។</strong>\n\nខាងក្រោមនេះជាកំណត់ហេតុចូលចុងក្រោយ៖",
        "templatesused": "{{PLURAL:$1|ទំព័រគំរូ|ទំព័រគំរូទាំងឡាយដែល}}ប្រើនៅក្នុងទំព័រនេះ៖",
        "templatesusedpreview": "{{PLURAL:$1|ទំព័រគំរូ​|ទំព័រគំរូ​ទាំងឡាយដែល​}}ប្រើ​ក្នុងការមើលមុននេះ៖",
        "templatesusedsection": "{{PLURAL:$1|ទំព័រគំរូ|ទំព័រគំរូទាំងឡាយ}}ដែលមានប្រើក្នុងផ្នែកនេះ៖",
        "timezoneregion-pacific": "មហាសមុទ្រប៉ាស៊ីហ្វិក",
        "allowemail": "ទទួលអ៊ីមែលពីអ្នកប្រើប្រាស់ដទៃទៀត",
        "prefs-searchoptions": "ស្វែងរក",
-       "prefs-namespaces": "á\9e\94á\9f\92á\9e\9aá\9e\97á\9f\81á\9e\91",
+       "prefs-namespaces": "á\9e\9bá\9f\86á\9e á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87",
        "default": "លំនាំដើម",
        "prefs-files": "ឯកសារ",
        "prefs-custom-css": "កែតំរូវ CSS",
        "prefs-registration": "កាលបរិច្ឆេទចុះឈ្មោះ៖",
        "yourrealname": "ឈ្មោះពិត៖",
        "yourlanguage": "ភាសា៖",
-       "yourvariant": "ជម្រើសភាសាខ្លឹមសារ៖",
+       "yourvariant": "ជម្រើសសណ្ដានភាសាខ្លឹមសារ៖",
+       "prefs-help-variant": "សណ្ដានភាសាដែលអ្នកចង់ប្រើសម្រាប់បង្ហាញខ្លឹមសារទំព័រក្នុងវិគីនេះ។",
        "yournick": "ហត្ថលេខាថ្មី៖",
        "prefs-help-signature": "រាល់វិចារនៅលើទំព័រពិភាក្សានានា​គួរតែមានចុះហត្ថលេខាដោយប្រើ \"<nowiki>~~~~</nowiki>\" ដែលនឹងបំលែង​ចេញជាហត្ថលេខា​របស់អ្នក​ជាមួយនឹងកាលបរិច្ឆេទ។",
        "badsig": "ហត្ថលេខាឆៅមិនត្រឹមត្រូវ។សូមពិនិត្យមើលស្លាក​ HTML ។",
        "prefs-tokenwatchlist": "កូនសោរ",
        "prefs-diffs": "ភាពខុសគ្នា",
        "prefs-help-prefershttps": "ចំណង់ចំណូលចិត្តនេះនឹងមានប្រសិទ្ធិភាពពេលអ្នកកត់ឈ្មោះចូលលើកក្រោយ។",
+       "prefswarning-warning": "អ្នកបានកែប្រែចំណង់ចំណូលចិត្តតែមិនទាន់បានរក្សាទុកទេ។ បើសិនជាអ្នកចាកចេញពីទំព័រនេះដោយមិនបានចុច \"$1\" ទេនោះចំណង់ចំណូលចិត្តរបស់អ្នកនឹងមិនត្រូវបន្ទាន់សម័យទេ។",
        "email-address-validity-valid": "អាសយដ្ឋានអ៊ីមែលហាក់មានសុពលភាព",
        "email-address-validity-invalid": "បញ្ចូលអាសយដ្ឋានអ៊ីមែលដែលមានសុពលភាព",
        "userrights": "ការគ្រប់គ្រងសិទ្ធិអ្នកប្រើប្រាស់",
        "rcshowhidemine": "$1កំណែប្រែរបស់ខ្ញុំ",
        "rcshowhidemine-show": "បង្ហាញ",
        "rcshowhidemine-hide": "លាក់",
+       "rcshowhidecategorization-show": "បង្ហាញ​",
+       "rcshowhidecategorization-hide": "លាក់",
        "rclinks": "បង្ហាញបន្លាស់ប្ដូរ$1ចុងក្រោយធ្វើឡើងក្នុងរយៈពេល$2ថ្ងៃចុងក្រោយ<br />$3",
        "diff": "ប្រៀបធៀប",
        "hist": "ប្រវត្តិ",
        "newpageletter": "ថ្មី",
        "boteditletter": "យន្ត",
        "number_of_watching_users_pageview": "[មាន{{PLURAL:$1|អ្នកប្រើប្រាស់|អ្នកប្រើប្រាស់}}$1នាក់កំពុងមើល]",
-       "rc_categories": "á\9e\80á\9e\98á\9f\92á\9e\9aá\9e·á\9e\8fá\9e\91á\9e¸á\9e\8fá\9e¶á\9f\86á\9e\84á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98\9e\81á\9e\8eá\9f\92á\9e\8cá\9e\8aá\9f\84á\9e\99á\9e\9fá\9e\89á\9f\92á\9e\89á\9e¶ \"|\")",
+       "rc_categories": "á\9e\80á\9f\86á\9e á\9e·á\9e\8fá\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\85á\9f\86á\9e\8eá\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\93á\9e¶á\9e\80á\9f\8bá\9e\80á\9f\92á\9e\9aá\9e»á\9e\98\9e\81á\9e\8eá\9f\92á\9e\8cá\9e\8aá\9f\84á\9e\99á\9e\9fá\9e\89á\9f\92á\9e\89á\9e¶ \"|\")á\9f\96",
        "rc_categories_any": "មួយណាក៏បាន",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|បៃ|បៃ}} បន្ទាប់ពីបន្លាស់ប្ដូរ",
        "recentchangeslinked-summary": "នេះជាបញ្ជីបន្លាស់ប្ដូរនានា ដែលត្រូវបានធ្វើឡើងនៅលើទំព័រទាំងឡាយ ដែលមានតំណភ្ជាប់ពីទំព័រកំណត់មួយ(ឬ មានតំណភ្ជាប់ទៅទំព័រ ដែលមានក្នុងចំណាត់ថ្នាក់ក្រុមណាមួយ) នាពេលថ្មីៗនេះ ។ ទំព័រ​នានាក្នុង[[Special:Watchlist|បញ្ជីតាមដាន​របស់អ្នក]]ត្រូវបានសរសេរជា '''អក្សរដិត''' ។",
        "recentchangeslinked-page": "ឈ្មោះទំព័រ៖",
        "recentchangeslinked-to": "បង្ហាញ​បន្លាស់ប្ដូររបស់​ទំព័រដែល​មានតំណភ្ជាប់នឹង​ទំព័រ​ដែល​បាន​ផ្ដល់​ឱ្យ​​វិញ",
+       "recentchanges-page-added-to-category": "[[:$1]] ត្រូវបានបន្ថែមទៅក្នុងចំណាត់ថ្នាក់ក្រុម",
        "upload": "ផ្ទុកឯកសារឡើង",
        "uploadbtn": "ផ្ទុកឯកសារឡើង",
        "reuploaddesc": "ឈប់ផ្ទុកឡើងរួចត្រឡប់ទៅបែបបទផ្ទុកឡើងវិញ។",
        "uploaderror": "បញ្ហាក្នុងការផ្ទុកឡើង",
        "upload-recreate-warning": "''ប្រយ័ត្ន៖ ឯកសារដែលមានឈ្មោះដូចគ្នានេះត្រូវបានលុបចោលឬប្ដូរទីតាំង។'''\n\nកំណត់ហេតុស្ដីពីការលុបចោលនិងការប្ដូរទីតាំងរបស់ទំព័រនេះមានបង្ហាញនៅទីនេះ៖",
        "uploadtext": "សូមប្រើប្រាស់សំនុំបែបបទខាងក្រោមដើម្បីផ្ទុកឯកសារ​ឡើង។\n\nដើម្បីមើល ឬស្វែងរកឯកសារដែលបានផ្ទុកឡើងពីពេលមុន សូមចូលទៅ[[Special:FileList|បញ្ជីឯកសារដែលបានផ្ទុកឡើង]]។ ការផ្ទុកឡើងវិញ​នូវឯកសារបង្ហាញនៅក្នុង[[Special:Log/upload|កំណត់ហេតុនៃការផ្ទុកឯកសារឡើង]] និងការលុបចោលឯកសារមានបង្ហាញនៅក្នុង[[Special:Log/delete|កំណត់ហេតុនៃការលុប]]។\n\n\nដើម្បីដាក់រូបភាពទៅក្នុងទំព័រ សូមប្រើប្រាស់តំណភ្ជាប់ក្នុងទម្រង់ដូចខាងក្រោម៖\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:ឈ្មោះឯកសារ.jpg]]</nowiki></code>'''ដើម្បីប្រើប្រាស់ទម្រង់ពេញលេញនៃឯកសារ\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:ឈ្មោះឯកសារ.png|200px|thumb|left|ឃ្លាពិពណ៌នា]]</nowiki></code>''' ដោយប្រើប្រាស់ទំហំ​២០០ភីកសែលក្នុងប្រអប់នៅ​គេមខាងធ្វេង​ជាមួយនឹង​ឃ្លារៀបរាប់អំពីឯកសារនេះ។\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:ឈ្មោះឯកសារ.ogg]]</nowiki></code>''' ដើម្បីតភ្ជាប់​ដោយផ្ទាល់ទៅឯកសារនេះ​ដោយមិនបង្ហាញឯកសារ។",
-       "upload-permitted": "ប្រភេទឯកសារដែលត្រូវបានអនុញ្ញាត៖ $1 ។",
-       "upload-preferred": "ប្រភេទឯកសារដែលគួរប្រើប្រាស់៖ $1 ។",
-       "upload-prohibited": "ប្រភេទឯកសារដែលត្រូវបានហាម៖ $1 ។",
+       "upload-permitted": "{{PLURAL:$2|ប្រភេទ|ប្រភេទ}}ឯកសារដែលត្រូវបានអនុញ្ញាត៖ $1 ។",
+       "upload-preferred": "{{PLURAL:$2|ប្រភេទ|ប្រភេទ}}ឯកសារដែលគួរប្រើប្រាស់៖ $1 ។",
+       "upload-prohibited": "{{PLURAL:$2|ប្រភេទ|ប្រភេទ}}ឯកសារដែលត្រូវបានហាម៖ $1 ។",
        "uploadlogpage": "កំណត់ហេតុនៃការផ្ទុកឡើង",
        "uploadlogpagetext": "ខាងក្រោមនេះ​ជាបញ្ជីនៃការផ្ទុកឡើង​ថ្មីបំផុត។\n\nសូមមើល [[Special:NewFiles|វិចិត្រសាលរូបភាពថ្មីៗ]] ដើម្បីមើលដោយផ្ទាល់ភ្នែក។",
        "filename": "ឈ្មោះឯកសារ",
        "upload-misc-error-text": "បញ្ហាដែលមិនស្គាល់មួយបានកើតឡើងនៅក្នុងកំឡុងពេលផ្ទុកឡើង។\n\nចូរផ្ទៀងផ្ទាត់ថា URL គឺមានសុពលភាពហើយអាចដំណើរការ រួចហើយ​ព្យាយាមម្តងទៀត។\n\nប្រសិនបើបញ្ហានៅតែកើតឡើង សូមទាក់ទងទៅ[[Special:ListUsers/sysop|អ្នកអភិបាល]]។",
        "upload-too-many-redirects": "URLនេះមានតំណភ្ជាប់បញ្ជូនបន្តច្រើនពេកហើយ",
        "upload-http-error": "មានកំហុសHTTPមួយបានកើតឡើង៖ $1",
+       "upload-dialog-title": "ផ្ទុកឯកសារឡើង",
+       "upload-dialog-error": "មានបញ្ហាកើតឡើង",
+       "upload-dialog-warning": "មានការព្រមាន",
+       "upload-dialog-button-cancel": "បោះបង់",
+       "upload-dialog-button-done": "រួចរាល់",
+       "upload-dialog-button-save": "រក្សាទុក",
+       "upload-dialog-button-upload": "ផ្ទុកឡើង",
+       "upload-dialog-label-select-file": "ជ្រើសរើសឯកសារ",
+       "upload-dialog-label-infoform-title": "ព័ត៌មាន​លំអិត",
+       "upload-dialog-label-infoform-name": "ឈ្មោះ​",
+       "upload-dialog-label-infoform-description": "ការ​ពិពណ៌នា",
+       "upload-dialog-label-usage-title": "បម្រើបម្រាស់",
+       "upload-dialog-label-usage-filename": "ឈ្មោះឯកសារ",
        "backend-fail-notexists": "គ្មានឯកសារ \"$1\" ទេ។",
        "backend-fail-notsame": "ឯកសារដែលមិនដូចគ្នាបេះបិទមួយមានរួចហើយនៅ \"$1\"។",
        "backend-fail-delete": "មិនអាចលុបឯកសារ \"$1\" បានទេ។",
        "statistics-users-active-desc": "អ្នក​ប្រើប្រាស់​ដែល​បាន​អនុវត្ត​សកម្មភាព​ក្នុង​{{PLURAL:$1|ថ្ងៃ​}}ចុង​ក្រោយ​",
        "doubleredirects": "ទំព័របញ្ជូនបន្តទ្វេដង",
        "doubleredirectstext": "ទំព័រនេះរាយឈ្មោះទំព័រដែលបញ្ជូនបន្តទៅទំព័របញ្ជូនបន្ដផ្សេងទៀត។\n\nជួរនីមួយៗមានតំនភ្ជាប់ទៅកាន់ទំព័របញ្ជូនបន្តទី១និងទី២ ព្រមជាមួយទំព័រគោលដៅរបស់ទំព័របញ្ជូនបន្តទី២(ដែលជាធម្មតានេះក៏ជាទំព័រគោលដៅ\"ពិត\"របស់ទំព័របញ្ជូនបន្តទី១ដែរ)។",
-       "double-redirect-fixed-move": "[[$1]] á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e\80á\9e\85á\9f\81á\9e\89á\9f\94\n\ná\9e\9cá\9e¶á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\91á\9f\85 [[$2]]",
-       "double-redirect-fixed-maintenance": "កំពុងជួសជុលការបញ្ជូនបន្តផ្ទួនគ្នាពី [[$1]] ទៅ [[$2]] ។",
+       "double-redirect-fixed-move": "[[$1]] á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\91á\9e¸á\9e\8fá\9e¶á\9f\86á\9e\84á\9f\94\ná\9e\9cá\9e¶á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\93á\9e·á\9e\84á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\91á\9f\85 [[$2]]á\9f\94",
+       "double-redirect-fixed-maintenance": "កំពុងជួសជុលការបញ្ជូនបន្តផ្ទួនគ្នាពី [[$1]] ទៅ [[$2]]ដោយស្វ័យប្រវត្តិ ក្រោមកិច្ចថែទាំជាប្រចាំ ។",
        "double-redirect-fixer": "អ្នកជួសជុលការបញ្ជូនបន្ត",
        "brokenredirects": "ការបញ្ជូនបន្តដែលខូច",
        "brokenredirectstext": "ការបញ្ជូនបន្ដដូចតទៅនេះ​សំដៅទៅ​ទំព័រដែលមិនមាន៖",
        "pager-older-n": "{{PLURAL:$1|ចាស់ជាង$1}}",
        "suppress": "អធិការ",
        "querypage-disabled": "ទំព័រពិសេសនេះត្រូវបានបិទមិនអោយប្រើដោយសារមូលហេតុដំណើរការ។",
+       "apihelp": "ជំនួយAPI",
+       "apihelp-no-such-module": "រកមិនឃើញម៉ូឌុល \"$1\" ទេ។",
        "booksources": "ប្រភពសៀវភៅ",
        "booksources-search-legend": "ស្វែងរកប្រភពសៀវភៅ",
        "booksources-isbn": "លេខ​កូដ​សៀវ​ភៅ​ ISBN ៖",
        "watchlistanontext": "សូមកត់ឈ្មោះចូលដើម្បី​មើល​ឬ​កែប្រែ​របស់​ក្នុង​បញ្ជីតាមដាន​របស់អ្នក។",
        "watchnologin": "មិនទាន់កត់ឈ្មោះចូលទេ",
        "addwatch": "បន្ថែមទៅបញ្ជីតាមដាន",
-       "addedwatchtext": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a \"[[:$1]]\" á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\91á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8b[[Special:Watchlist|á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93]]á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80á\9e á\9e¾á\9e\99 á\9f\94 á\9e\9aá\9e¶á\9e\9bá\9f\8bá\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aá\9e\93á\9f\83á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87 á\9e\9aá\9e½á\9e\98á\9e\91á\9e¶á\9f\86á\9e\84á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\97á\9e¶á\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9cá\9e¶á\9e\95á\9e\84á\9e\8aá\9f\82á\9e\9a á\9e\93á\9e¹á\9e\84á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\93á\9f\85á\9e\91á\9e¸á\9e\93á\9f\84á\9f\87។",
+       "addedwatchtext": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a \"[[:$1]]\" á\9e\93á\9e·á\9e\84á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\97á\9e¶á\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9cá\9e¶á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\94á\9e\93á\9f\92á\9e\90á\9f\82á\9e\98á\9e\91á\9f\85á\9e\80á\9f\92á\9e\93á\9e»á\9e\84â\80\8b[[Special:Watchlist|á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93]]á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80á\9e á\9e¾á\9e\99 ។",
        "addedwatchtext-short": "ទំព័រ \"$1\" ត្រូវបានបន្ថែមទៅក្នុងបញ្ជីតាមដានរបស់អ្នកហើយ។",
        "removewatch": "ដកចេញពីបញ្ជីតាមដាន",
-       "removedwatchtext": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a \"[[:$1]]\" á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e\80á\9e\85á\9f\81á\9e\89á\9e\96á\9e¸[[Special:Watchlist|á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80]]á\9e á\9e¾á\9e\99 ។",
+       "removedwatchtext": "á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a \"[[:$1]]\" á\9e\93á\9e·á\9e\84á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\97á\9e¶á\9e\80á\9f\92á\9e\9fá\9e¶á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9cá\9e¶á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\94á\9e¶á\9e\93á\9e\8aá\9e\80á\9e\85á\9f\81á\9e\89á\9e\96á\9e¸[[Special:Watchlist|á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93]]á\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e\9bá\9f\84á\9e\80á\9e¢á\9f\92á\9e\93á\9e\80á\9e á\9e¾á\9e\99។",
        "removedwatchtext-short": "ទំព័រ \"$1\" ត្រូវបានដកចេញបញ្ជីតាមដានរបស់អ្នកហើយ។",
        "watch": "តាមដាន",
        "watchthispage": "តាមដានទំព័រនេះ",
        "movenotallowedfile": "អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងឯកសារនានាទេ។",
        "cant-move-user-page": "អ្នកមិនត្រូវបានអនុញ្ញាតឱ្យប្ដូរទីតាំងទំព័រអ្នកប្រើប្រាស់នានា(ដាច់ពីអនុទំព័ររបស់វា)ទេ។",
        "cant-move-to-user-page": "អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងទំព័រមួយទៅកាន់ទំព័រអ្នកប្រើប្រាស់មួយទេ (លើកលែងតែទៅកាន់ទំព័ររងមួយ)។",
+       "cant-move-category-page": "អ្នកមិនត្រូវបាន​អនុញ្ញាត​ឱ្យ​ប្តូរទីតាំងទំព័រចំណាត់ថ្នាក់ក្រុម​ទេ។",
+       "cant-move-to-category-page": "អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងទំព័រមួយទៅកាន់ទំព័រចំណាត់ថ្នាក់ក្រុមមួយទេ។",
        "newtitle": "ទៅចំណងជើងថ្មី៖",
        "move-watch": "តាមដានទំព័រនេះ",
        "movepagebtn": "ប្ដូរទីតាំង",
        "thumbnail-temp-create": "មិនអាចបង្កើតឯកសារកូនរូបភាពបណ្ដោះអាសន្ន",
        "thumbnail-dest-create": "មិនអាចរក្សាទុកកូនរូបភាពនៅទីតាំងគោលដៅបានទេ",
        "thumbnail_invalid_params": "តួលេខ កូនទំព័រ គ្មានសុពលភាព",
+       "thumbnail_toobigimagearea": "ឯកសារដែលមានវិមាត្រធំជាង $1",
        "thumbnail_dest_directory": "មិនអាចបង្កើតថតឯកសារតាមគោលដៅបានទេ",
        "thumbnail_image-type": "មិនស្គាល់ប្រើជាមួយឯកសារប្រភេទនេះទេ",
        "thumbnail_image-missing": "ឯកសារហាក់ដូចជាកំពុងបាត់ខ្លួន៖$1",
        "import": "ការនាំចូលទំព័រ",
-       "importinterwiki": "á\9e\80á\9e¶á\9e\9aá\9e\93á\9e¶á\9f\86á\9e\85á\9e¼á\9e\9bá\9e¢á\9e\93á\9f\92á\9e\8fá\9e\9aá\9e\9cá\9e·á\9e\82á\9e¸",
+       "importinterwiki": "á\9e\80á\9e¶á\9e\9aá\9e\93á\9e¶á\9f\86á\9e\85á\9e¼á\9e\9bá\9e\96á\9e¸á\9e\9cá\9e·á\9e\82á\9e¸á\9e\8aá\9e\91á\9f\83",
        "import-interwiki-sourcewiki": "វិគីប្រភព៖",
        "import-interwiki-sourcepage": "ទំព័រប្រភព៖",
        "import-interwiki-history": "ចម្លង គ្រប់កំណែចាស់ នៃទំព័រនេះ",
        "tooltip-pt-logout": "កត់ឈ្មោះចេញ",
        "tooltip-pt-createaccount": "អ្នកត្រូវបានលើកទឹកចិត្តបង្កើតគណនីនិងកត់ឈ្មោះចូល។ ប៉ុន្តែនេះមិនមែនជាការបង្ខំទេ។",
        "tooltip-ca-talk": "ការពិភាក្សា​អំពីទំព័រខ្លឹមសារ​នេះ",
-       "tooltip-ca-edit": "á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85â\80\8bá\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\93á\9f\81á\9f\87 á\9f\94 á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\94á\9f\8aá\9e¼á\9e\8fá\9e»á\9e\84 'á\9e\94á\9e\84á\9f\92á\9e á\9e¶á\9e\89á\9e\80á\9e¶á\9e\9aá\9e\98á\9e¾á\9e\9bá\9e\98á\9e»á\9e\93' á\9e\98á\9e»á\9e\93á\9e\93á\9e¹á\9e\84â\80\8bá\9e\9aá\9e\80á\9f\92á\9e\9fá\9e¶á\9e\91á\9e»á\9e\80â\80\8bá\9e\9cá\9e¶  á\9f\94",
+       "tooltip-ca-edit": "á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87",
        "tooltip-ca-addsection": "ចាប់​ផ្ដើមផ្នែកថ្មីមួយក្នុងទំព័រពិភាក្សានេះ",
        "tooltip-ca-viewsource": "ទំព័រ​នេះ​បានត្រូវការពារ ។ អ្នកអាច​មើល​អក្សរកូដ​របស់វាបាន ។",
        "tooltip-ca-history": "កំណែកន្លងមករបស់ទំព័រនេះ ។",
        "pageinfo-protect-cascading-yes": "បាទ/ចាស",
        "pageinfo-protect-cascading-from": "ការការពារត្រូវបានដាក់ជាថ្នាក់ពី",
        "pageinfo-category-info": "ព័ត៌មានចំណាត់ថ្នាក់ក្រុម",
+       "pageinfo-category-total": "ចំនួនសមាជិកសរុប",
        "pageinfo-category-pages": "ចំនួនទំព័រ",
        "pageinfo-category-subcats": "ចំនួនកូនចំណាត់ថ្នាក់ក្រុម",
        "pageinfo-category-files": "ចំនួនឯកសារ",
        "newimages-summary": "ទំព័រពិសេសនេះបង្ហាញឯកសារដែលផ្ទុកឡើងចុងក្រោយគេ។",
        "newimages-legend": "តម្រងការពារ",
        "newimages-label": "ឈ្មោះរូបភាព៖",
-       "noimages": "គ្មានអ្វីសំរាប់មើលទេ។",
+       "newimages-showbots": "បង្ហាញការផ្ទុកឡើងដោយរូបយន្ត",
+       "noimages": "គ្មានអ្វីសម្រាប់មើលទេ។",
        "ilsubmit": "ស្វែងរក",
        "bydate": "តាមកាលបរិច្ឆេទ",
        "sp-newimages-showfrom": "បង្ហាញឯកសារថ្មីៗចាប់ពី$2 $1",
        "months": "{{PLURAL:$1|$1 ខែ|$1 ខែ}}",
        "years": "{{PLURAL:$1|$1 ឆ្នាំ|$1 ឆ្នាំ}}",
        "ago": "$1 មុន",
-       "just-now": "á\9e¢á\9f\86បាញ់មិញនេះ",
+       "just-now": "á\9e¢á\9e\98á\9f\92បាញ់មិញនេះ",
        "hours-ago": "$1 {{PLURAL:$1|ម៉ោង|ម៉ោង}}មុន",
        "minutes-ago": "$1 {{PLURAL:$1|នាទី|នាទី}}មុន",
        "seconds-ago": "$1 {{PLURAL:$1|វិនាទី|វិនាទី}}មុន",
        "exif-bitspersample": "",
        "exif-orientation": "ទិស",
        "exif-planarconfiguration": "ការរៀបចំទិន្នន័យ",
-       "exif-xresolution": "Resolution ផ្ដេក (Horizontal resolution)",
-       "exif-yresolution": "Resolution បញ្ឈរ​ (Vertical resolution)",
+       "exif-xresolution": "ភាពម៉ត់ផ្ដេក",
+       "exif-yresolution": "ភាពម៉ត់បញ្ឈរ​",
        "exif-stripoffsets": "ទីតាំងទិន្នន័យរូបភាព",
        "exif-jpeginterchangeformatlength": "ទំហំជាបៃនៃទិន្នន័យJPEG",
        "exif-datetime": "កាលបរិច្ឆេទ​និង​ពេលវេលា​នៃ​ការផ្លាស់ប្តូរ​​ឯកសារ",
        "confirm-watch-top": "បន្ថែមទំព័រនេះ​ទៅក្នុងបញ្ជីតាមដាន​របស់អ្នកឬ?",
        "confirm-unwatch-button": "យល់ព្រម",
        "confirm-unwatch-top": "ដកទំព័រនេះចេញពីបញ្ជីតាមដានរបស់ខ្ញុំឬ?",
+       "quotation-marks": "«$1»",
        "imgmultipageprev": "← ទំព័រមុន",
        "imgmultipagenext": "ទំព័របន្ទាប់ →",
        "imgmultigo": "ទៅ!",
        "imgmultigoto": "ទៅកាន់ទំព័រ$1",
+       "img-lang-default": "(ភាសាតាមលំនាំដើម)",
+       "img-lang-info": "បង្ហាញរូបភាពនេះជា$1។ $2",
        "img-lang-go": "ទៅ",
        "ascending_abbrev": "លំដាប់ឡើង",
        "descending_abbrev": "លំដាប់ចុះ",
        "watchlistedit-raw-removed": "{{PLURAL:$1|១ចំណងជើងបានត្រូវ|$1ចំណងជើងបានត្រូវ}}ដកចេញ៖",
        "watchlistedit-clear-title": "បានសម្អាតបញ្ចីតាមដាន",
        "watchlistedit-clear-legend": "សម្អាតបញ្ជីតាមដាន",
+       "watchlistedit-clear-explain": "ចំណងជើងទាំងអស់នេះនឹងត្រូវលុបចេញពីបញ្ជីតាមដានរបស់អ្នក",
+       "watchlistedit-clear-titles": "ចំណងជើង៖",
+       "watchlistedit-clear-submit": "សម្អាតបញ្ជីតាមដាន (មិនអាចត្រឡប់វិញបានទេ!)",
+       "watchlistedit-clear-done": "បញ្ជីតាមដានរបស់អ្នកត្រូវបានសម្អាតហើយ។",
+       "watchlistedit-clear-removed": "{{PLURAL:$1|ចំណងជើងមួយ|ចំណងជើងចំនួួន $1}} ត្រូវបានលុបចោល៖",
+       "watchlistedit-too-many": "ទំព័រមានច្រើនពេកមិនអាចបង្ហាញអស់នៅទីនេះទេ។",
+       "watchlisttools-clear": "សម្អាតបញ្ជីតាមដាន",
        "watchlisttools-view": "មើលបន្លាស់ប្ដូរពាក់ព័ន្ធ",
        "watchlisttools-edit": "មើលនិងកែប្រែបញ្ជីតាមដាន",
        "watchlisttools-raw": "កែប្រែបញ្ជីតាមដានឆៅ",
        "compare-title-not-exists": "ចំណងជើងដែលអ្នកផ្ដល់អោយមិនមានទេ។",
        "dberr-problems": "សូមអភ័យទោស! វិបសាយនេះកំពុងជួបបញ្ហាបច្ចេកទេស។",
        "dberr-again": "សូមរង់ចាំប៉ុន្មាននាទីសិនហើយផ្ទុកឡើងវិញម្ដងទៀត។",
-       "dberr-info": "(មិនអាចទាក់ទងទៅប្រភពទិន្នន័យរបស់ប្រព័ន្ធបំរើការបានទេ៖ $1)",
+       "dberr-info": "(មិនអាចទាក់ទងទៅប្រភពទិន្នន័យបានទេ៖ $1)",
+       "dberr-info-hidden": "(មិនអាចទាក់ទងទៅប្រភពទិន្នន័យបានទេ)",
        "dberr-usegoogle": "អ្នកអាចសាកស្វែងរកតាមរយៈហ្គូហ្គល(Google)ជាបណ្ដោះអាសន្នសិន។",
        "dberr-outofdate": "សូមចំណាំ​​ថា​ លិបិក្រម​នៃ​មាតិការ​របស់យើងប្រហែលជាហួស​សម័យ​។​",
        "dberr-cachederror": "នេះ​គឺ​ជា​ច្បាប់​ចម្លង​ដែលបាន​ដាក់ទៅសតិភ្ជាប់នៃ​ទំព័រ​ដែលបានស្នើសុំ​ និងប្រហែលជាមិនទាន់សម័យ។",
        "feedback-subject": "កម្មវត្ថុ ៖",
        "feedback-submit": "ដាក់ស្នើ",
        "feedback-thanks": "សូមអរគុណ! មតិយោបល់របស់អ្នកត្រូវបានដាក់ផ្សាយនៅលើទំព័រ \"[$2 $1]\"។",
+       "feedback-thanks-title": "សូមអរគុណ!",
        "searchsuggest-search": "ស្វែងរក​",
        "searchsuggest-containing": "ដែលមានពាក្យ...",
        "api-error-badaccess-groups": "អ្នកគ្មានការអនុញ្ញាតអោយផ្ទុកឯកសារឡើងទៅក្នុងវិគីនេះទេ។",
        "special-characters-group-thai": "អក្សរថៃ",
        "special-characters-group-lao": "អក្សរឡាវ",
        "special-characters-group-khmer": "អក្សរខ្មែរ",
-       "special-characters-title-minus": "សញ្ញាដក"
+       "special-characters-title-minus": "សញ្ញាដក",
+       "mw-widgets-dateinput-no-date": "គ្មានកាលបរិច្ឆេទត្រូវបានជ្រើសរើស",
+       "mw-widgets-titleinput-description-new-page": "ទំព័រមិនទាន់មាននៅឡើយទេ",
+       "mw-widgets-titleinput-description-redirect": "បញ្ជូនបន្តទៅ $1"
 }
index a4db1fb..c2166e3 100644 (file)
@@ -50,7 +50,8 @@
                        "Ysjbserver",
                        "LiteHell",
                        "Lefion",
-                       "Leeheonjin"
+                       "Leeheonjin",
+                       "Hwangjy9"
                ]
        },
        "tog-underline": "링크에 밑줄:",
        "pool-queuefull": "풀 대기열이 가득 찼습니다",
        "pool-errorunknown": "알 수 없는 오류",
        "pool-servererror": "풀 카운터 서비스는 사용할 수 없습니다 ($1).",
-       "poolcounter-usage-error": "ì\96´ë²\95 ì\97\90ë\9f¬: $1",
+       "poolcounter-usage-error": "ì\82¬ì\9a©ë²\95 ì\98¤ë¥\98: $1",
        "aboutsite": "{{SITENAME}} 소개",
        "aboutpage": "Project:소개",
        "copyright": "내용은 별도로 명시하지 않을 경우 $1에 따라 사용할 수 있습니다.",
        "badaccess-group0": "요청한 명령을 실행할 권한이 없습니다.",
        "badaccess-groups": "요청한 명령은 {{PLURAL:$2|다음|다음 중 하나의}} 권한을 가진 사용자에게 제한됩니다: $1.",
        "versionrequired": "미디어위키 $1 버전 필요",
-       "versionrequiredtext": "이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.\n[[Special:Version|설치된 미디어위키 버전]]을 참하세요.",
+       "versionrequiredtext": "이 문서를 사용하려면 $1 버전 미디어위키가 필요합니다.\n[[Special:Version|설치된 미디어위키 버전]]을 참하세요.",
        "ok": "확인",
        "retrievedfrom": "원본 주소 \"$1\"",
        "youhavenewmessages": "다른 사용자로부터의 $1가 {{PLURAL:$3|있습니다}}. ($2)",
        "no-null-revision": "\"$1\" 문서에 대한 새 빈 판을 만들 수 없습니다",
        "badtitle": "잘못된 제목",
        "badtitletext": "요청한 문서 제목이 잘못되었거나, 비어있거나, 잘못된 인터위키 제목으로 링크했습니다.\n문서 제목에 사용할 수 없는 문자를 사용했을 수 있습니다.",
+       "title-invalid-characters": "요청된 문서 제목이 잘못된 문자를 포함하고 있습니다: \"$1\".",
        "perfcached": "다음 자료는 캐시된 것이며 최신이 아닐 수 있습니다. 캐시에 최대 {{PLURAL:$1|결과 한 개|결과 $1개}}가 있습니다.",
        "perfcachedts": "다음 자료는 캐시된 것으로, $1에 마지막으로 업데이트되었습니다. 캐시에 최대 {{PLURAL:$4|결과 한 개|결과 $4개}}가 있습니다.",
        "querypage-no-updates": "이 문서의 갱신이 현재 중지되어 있습니다.\n자료가 잠시 갱신되지 않을 것입니다.",
        "actionthrottled": "동작 중지",
        "actionthrottledtext": "스팸을 막기 위해 짧은 시간 동안 이 작업을 너무 많이 수행하는 것을 막고 있습니다.\n제한을 넘었으니 몇 분 뒤에 새로 시도하세요.",
        "protectedpagetext": "이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.",
-       "viewsourcetext": "문서의 원본을 보거나 복사할 수 있습니다:",
-       "viewyourtext": "이 문서에 남긴 '''내 편집''' 내용을 보거나 복사할 수 있습니다:",
+       "viewsourcetext": "문서의 원본을 보거나 복사할 수 있습니다.",
+       "viewyourtext": "이 문서로의 <strong>당신의 편집</strong>의 원본을 보고 복사할 수 있습니다.",
        "protectedinterface": "이 문서는 이 위키의 소프트웨어 인터페이스에 쓰이는 문서로, 부정 행위를 막기 위해 보호되어 있습니다.\n모든 위키에 대한 번역을 추가하거나 바꾸려면 미디어위키 지역화 프로젝트인 [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]에 참여하시기 바랍니다.",
-       "editinginterface": "<strong>경고</strong>: 소프트웨어 인터페이스에 쓰이는 문서를 고치고 있습니다.\n이 문서에 있는 내용을 바꾸면 이 위키에 있는 모든 사용자에게 영향을 끼칩니다.",
+       "editinginterface": "<strong>경고:</strong> 소프트웨어 인터페이스에 쓰이는 문서를 고치고 있습니다.\n이 문서에 있는 내용을 바꾸면 이 위키에 있는 모든 사용자에게 영향을 끼칩니다.",
        "translateinterface": "모든 위키를 위해 번역을 추가하거나 바꾸려면, 미디어위키 지역화 프로젝트인 [//translatewiki.net/ translatewiki.net]을 사용해 주시기 바랍니다.",
        "cascadeprotected": "이 문서는 다음 \"연쇄적\" 보호가 걸린 {{PLURAL:$1|문서}}에 포함되어 있어 함께 보호됩니다:\n$2",
-       "namespaceprotected": "'''$1''' 이름공간을 편집할 수 있는 권한이 없습니다.",
+       "namespaceprotected": "<strong>$1</strong> 이름공간의 문서를 편집할 수 있는 권한이 없습니다.",
        "customcssprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 CSS 문서를 편집할 수 없습니다.",
        "customjsprotected": "여기에는 다른 사용자의 개인 설정이 포함되어 있기 때문에 이 자바스크립트 문서를 편집할 수 없습니다.",
        "mycustomcssprotected": "이 CSS 문서를 편집할 권한이 없습니다.",
        "exception-nologin": "로그인하지 않음",
        "exception-nologin-text": "이 문서에 접근하거나 이 동작을 수행하려면 로그인하세요.",
        "exception-nologin-text-manual": "이 문서에 접근하거나 이 명령을 수행하려면 $1하세요.",
-       "virus-badscanner": "잘못된 설정: 알 수 없는 바이러스 검사기: '''$1'''",
+       "virus-badscanner": "잘못된 설정: 알 수 없는 바이러스 검사기: <em>$1</em>",
        "virus-scanfailed": "검사 실패 (코드 $1)",
        "virus-unknownscanner": "알 수 없는 안티 바이러스:",
        "logouttext": "<strong>이제 로그아웃했습니다.</strong>\n\n브라우저 캐시를 지울 때까지 일부 문서에서 아직 로그인이 되어 있는 것처럼 보일 수 있음에 유의하세요.",
        "createaccounterror": "계정을 만들수 없습니다: $1",
        "nocookiesnew": "사용자 계정을 만들었지만, 아직 로그인하고 있지 않습니다.\n{{SITENAME}}에서는 로그인 정보를 저장하기 위해 쿠키를 사용합니다.\n지금 사용하는 웹 브라우저는 쿠키를 사용하지 않도록 설정되어 있습니다.\n로그인하기 전에 웹 브라우저에서 쿠키를 사용하도록 설정해주세요.",
        "nocookieslogin": "{{SITENAME}}에서는 로그인을 위해 쿠키를 사용합니다.\n쿠키가 비활성되어 있습니다.\n쿠키 사용을 활성화한 다음 다시 시도하세요.",
-       "nocookiesfornew": "ì\9a\94ì²­ì\9d\98 ì¶\9cì²\98를 í\99\95ì\9d¸í\95  ì\88\98 ì\97\86기 ë\95\8c문ì\97\90 ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d´ ë§\8cë\93¤ì\96´ì§\80ì§\80 ì\95\8aì\95\98ì\8aµë\8b\88ë\8b¤.\nì¿ í\82¤ë¥¼ í\97\88ì\9a©í\95\9c ê²\83ì\9d\84 í\99\95ì\9d¸í\95\9c í\9b\84ì\97\90 이 문서를 새로 고치고 나서 다시 시도하세요.",
+       "nocookiesfornew": "ì\9a\94ì²­ì\9d\98 ì¶\9cì²\98를 í\99\95ì\9d¸í\95  ì\88\98 ì\97\86기 ë\95\8c문ì\97\90 ì\82¬ì\9a©ì\9e\90 ê³\84ì \95ì\9d´ ë§\8cë\93¤ì\96´ì§\80ì§\80 ì\95\8aì\95\98ì\8aµë\8b\88ë\8b¤.\nì¿ í\82¤ë¥¼ í\99\9cì\84±í\99\94í\95\9c ê²\83ì\9d\84 í\99\95ì\9d¸í\95\98ê³ , 이 문서를 새로 고치고 나서 다시 시도하세요.",
        "noname": "사용자 계정 이름이 올바르지 않습니다.",
        "loginsuccesstitle": "로그인 성공",
-       "loginsuccess": "'''{{SITENAME}}에 \"$1\" 계정으로 로그인했습니다.'''",
+       "loginsuccess": "<strong>{{SITENAME}}에 \"$1\" 계정으로 로그인했습니다.</strong>",
        "nosuchuser": "\"$1\" 사용자가 존재하지 않습니다.\n사용자 계정 이름은 대소문자를 구별합니다.\n철자가 맞는지 확인해주세요. [[Special:UserLogin/signup|새 계정을 만들 수도 있습니다]].",
        "nosuchusershort": "이름이 \"$1\"인 사용자는 없습니다.\n철자가 맞는지 확인하세요.",
        "nouserspecified": "사용자 계정 이름을 입력하지 않았습니다.",
        "link_sample": "링크 제목",
        "link_tip": "안쪽 링크",
        "extlink_sample": "http://www.example.com 사이트 이름",
-       "extlink_tip": "바깥 링크 (주소 앞에 http://가 있어야 합니다)",
+       "extlink_tip": "바깥 링크 (http://를 앞에 붙여야 합니다)",
        "headline_sample": "제목",
        "headline_tip": "2단계 문단 제목",
        "nowiki_sample": "여기에 위키 문법을 사용하지 않을 글을 적어 주세요",
        "image_tip": "파일 넣기",
        "media_tip": "파일 링크하기",
        "sig_tip": "내 서명과 현재 시각",
-       "hr_tip": "가로 줄 (되도록 사용하지 말아 주세요)",
+       "hr_tip": "가로 줄 (되도록 사용하지 말아주세요)",
        "summary": "요약:",
        "subject": "주제/제목:",
        "minoredit": "사소한 편집입니다",
        "accmailtitle": "비밀번호를 보냈습니다",
        "accmailtext": "[[User talk:$1|$1]] 사용자의 비밀번호를 임의로 만들어 $2(으)로 보냈습니다. 로그인하고 나서 [[Special:ChangePassword|비밀번호를 바꿀]] 수 있습니다.",
        "newarticle": "(새 문서)",
-       "newarticletext": "아직 없는 문서의 링크를 따라왔습니다.\n새 문서를 만들려면 아래 상자에 내용을 입력하면 됩니다. (자세한 내용은 [$1 도움말 문서]를 참하세요)\n만약 잘못 찾아왔다면, 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
+       "newarticletext": "아직 없는 문서의 링크를 따라왔습니다.\n새 문서를 만들려면 아래 상자에 내용을 입력하면 됩니다. (자세한 내용은 [$1 도움말 문서]를 참하세요)\n만약 잘못 찾아왔다면, 브라우저의 '''뒤로''' 버튼을 눌러 주세요.",
        "anontalkpagetext": "----\n여기는 계정을 만들지 않았거나 사용하고 있지 않은 익명 사용자를 위한 토론 문서입니다.\n익명 사용자를 구별하기 위해서는 숫자로 된 IP 주소를 사용해야만 합니다.\nIP 주소는 여러 사용자가 공유할 수 있습니다.\n자신과 관계없는 의견이 자신에게 남겨져 있어 불쾌하다고 생각하는 익명 사용자는 [[Special:UserLogin/signup|계정을 만들고]] [[Special:UserLogin|로그인해서]] 나중에 다른 익명 사용자에게 줄 혼란을 줄일 수 있습니다.",
        "noarticletext": "이 문서가 현재 존재하지 않습니다.\n이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색하거나]],\n이 문서에 관련된 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인하거나,\n문서를 직접 [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>할 수 있습니다.",
        "noarticletext-nopermission": "이 문서가 현재 존재하지 않습니다.\n이 문서와 제목이 비슷한 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색하거나]], 이 문서에 관련된 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기록]을 확인할 수 있습니다.</span> 그러나 이 문서를 만들 수 있는 권한은 없습니다.",
        "userjspreview": "'''사용자 자바스크립트 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
        "sitecsspreview": "'''이 CSS의 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
        "sitejspreview": "'''이 자바스크립트 코드의 미리 보기입니다.'''\n'''아직 저장하지 않았습니다!'''",
-       "userinvalidcssjstitle": "'''경고''': \"$1\" 스킨은 없습니다.\n.css와 .js 문서의 제목은 {{ns:user}}:Foo/vector.css 처럼 소문자로 써야 합니다. {{ns:user}}:Foo/Vector.css 와 같이 대문자로 쓸 경우 작동하지 않습니다.",
+       "userinvalidcssjstitle": "<strong>경고:</strong> \"$1\" 스킨은 없습니다.\n.css와 .js 문서의 제목은 {{ns:user}}:Foo/vector.css 처럼 소문자로 써야 합니다. {{ns:user}}:Foo/Vector.css 와 같이 대문자로 쓸 경우 작동하지 않습니다.",
        "updated": "(바뀜)",
-       "note": "'''참고:'''",
+       "note": "<strong>참고:</strong>",
        "previewnote": "'''이 화면은 미리 보기입니다.'''\n편집한 내용은 아직 저장하지 않았습니다!",
        "continue-editing": "편집 영역으로 가기",
        "previewconflict": "이 미리 보기는 저장할 때의 모습으로 위쪽 편집창의 문서를 반영합니다.",
        "explainconflict": "문서를 편집하는 도중에 누군가 이 문서를 고쳤습니다.\n위쪽의 문서가 지금 바뀐 문서이고, 아래쪽의 문서가 당신이 편집한 문서입니다.\n아래쪽의 내용을 위쪽에 적절히 합쳐 주시기 바랍니다.\n\"{{int:savearticle}}\"을 누르면 '''위쪽의 편집 내역만''' 저장됩니다.",
        "yourtext": "당신의 편집",
        "storedversion": "현재 문서",
-       "nonunicodebrowser": "'''경고: 웹 브라우저가 유니코드를 완벽하게 지원하지 않습니다.'''\n아스키가 아닌 문자가 16진수 코드로 나타날 수 있습니다.",
+       "nonunicodebrowser": "<strong>경고: 웹 브라우저가 유니코드를 완벽하게 지원하지 않습니다.</strong>\n아스키가 아닌 문자가 16진수 코드로 나타날 수 있습니다.",
        "editingold": "<strong>경고: 이 문서의 오래된 판을 편집하고 있습니다.</strong>\n이것을 저장하면, 이 판 이후로 바뀐 모든 편집이 사라집니다.",
        "yourdiff": "차이",
        "copyrightwarning": "{{SITENAME}}에서의 모든 기여는 $2 라이선스로 배포된다는 점을 유의해 주세요 (자세한 내용에 대해서는 $1 문서를 읽어주세요).\n만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
        "copyrightwarning2": "{{SITENAME}}에서의 모든 기여는 다른 사용자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요.\n만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.<br />\n또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 내용에 대해서는 $1 문서를 읽어 주세요).\n'''저작권이 있는 내용을 허가 없이 저장하지 마세요!'''",
        "longpageerror": "'''오류: 문서의 크기가 {{PLURAL:$1|$1킬로바이트}}로 최대 크기인 {{PLURAL:$2|$2킬로바이트}}보다 큽니다.'''\n저장할 수 없습니다.",
        "readonlywarning": "'''경고: 데이터베이스가 관리를 위해 잠겨 있습니다. 따라서 문서를 편집한 내용을 지금 저장할 수 없습니다.'''\n편집 내용을 복사하여 붙여넣기 등을 사용하여 일단 다른 곳에 저장한 후, 나중에 다시 시도해 주세요.\n\n잠근 관리자가 남긴 설명은 다음과 같습니다: $1",
-       "protectedpagewarning": "'''경고: 이 문서는 관리자만 편집할 수 있도록 보호되어 있습니다.'''\n이 문서의 최근 기록을 참고하십시오:",
-       "semiprotectedpagewarning": "'''참고:''' 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.\n이 문서의 최근 기록을 참고하십시오:",
-       "cascadeprotectedwarning": "'''경고''': 이 문서는 잠겨 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
-       "titleprotectedwarning": "'''경고: 이 문서는 잠겨 있어, 문서를 만드려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.'''\n아래 문서의 최근 기록을 참고하십시오:",
+       "protectedpagewarning": "<strong>경고: 이 문서는 관리자 권한이 있는 사용자만 편집할 수 있도록 보호되어 있습니다.</strong>\n이 문서의 최근 기록을 참조하십시오:",
+       "semiprotectedpagewarning": "<strong>참고:</strong> 이 문서는 계정을 등록한 사용자만이 편집할 수 있도록 잠겨 있습니다.\n이 문서의 최근 기록을 참고하십시오:",
+       "cascadeprotectedwarning": "<strong>경고:</strong> 이 문서는 잠겨 있어 관리자만 편집할 수 있습니다. 연쇄적 보호가 걸린 다음 {{PLURAL:$1|문서}}에서 이 문서를 사용하고 있습니다:",
+       "titleprotectedwarning": "<strong>경고: 이 문서는 잠겨 있어, 문서를 만드려면 [[Special:ListGroupRights|특정 권한]]이 필요합니다.</strong>\n아래 문서의 최근 기록을 참조하십시오:",
        "templatesused": "이 문서에서 사용한 {{PLURAL:$1|틀}}:",
        "templatesusedpreview": "이 미리 보기에서 사용하고 있는 {{PLURAL:$1|틀}}:",
        "templatesusedsection": "이 문단에서 사용하고 있는 {{PLURAL:$1|틀}}:",
        "content-json-empty-array": "빈 배열",
        "duplicate-args-category": "중복된 인수를 사용한 틀의 호출을 포함한 문서",
        "duplicate-args-category-desc": "문서에 <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>나 <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>와 같은, 인수를 중복하여 사용한 틀 호출을 포함합니다.",
-       "expensive-parserfunction-warning": "'''경고:''' 이 문서는 너무 많은 파서 함수를 포함하고 있습니다.\n\n$2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개를 쓰고 있습니다}}.",
+       "expensive-parserfunction-warning": "<strong>경고:</strong> 이 문서는 너무 많은 파서 함수를 포함하고 있습니다.\n\n$2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개를 쓰고 있습니다}}.",
        "expensive-parserfunction-category": "느린 파서 함수 호출을 너무 많이 하는 문서",
-       "post-expand-template-inclusion-warning": "'''경고:''' 틀 포함 크기가 너무 큽니다.\n일부 틀은 포함되지 않을 수 있습니다.",
+       "post-expand-template-inclusion-warning": "<strong>경고:</strong> 틀 포함 크기가 너무 큽니다.\n일부 틀은 포함되지 않을 수 있습니다.",
        "post-expand-template-inclusion-category": "사용한 틀의 크기가 지나치게 큰 문서의 목록",
-       "post-expand-template-argument-warning": "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 인수가 하나 이상 포함되어 있습니다.\n이 인수는 생략했습니다.",
+       "post-expand-template-argument-warning": "<strong>경고:</strong> 이 문서는 전개하면 크기가 너무 큰 틀 인수가 하나 이상 포함되어 있습니다.\n이 인수는 생략했습니다.",
        "post-expand-template-argument-category": "생략된 틀 변수를 포함한 문서",
        "parser-template-loop-warning": "재귀적인 틀이 발견되었습니다: [[$1]]",
        "parser-template-recursion-depth-warning": "틀 반복 깊이 제한을 초과함 ($1)",
        "revdelete-show-no-access": "$1 $2 판을 보이는 데 오류 발생: 이 판은 \"제한\"으로 표시되어 있습니다.\n여기에 접근할 수 없습니다.",
        "revdelete-modify-no-access": "$1 $2 판을 고치는 데 오류 발생: 이 판은 \"제한\"으로 표시되어 있습니다.\n여기에 접근할 수 없습니다.",
        "revdelete-modify-missing": "판 ID $1을 수정하는 중 오류 발생: 데이터베이스에 존재하지 않습니다!",
-       "revdelete-no-change": "'''경고:''' $1 $2에 해당하는 항목은 이미 같은 보이기 설정이 설정되어 있습니다.",
+       "revdelete-no-change": "<strong>경고:</strong> $1 $2에 해당하는 항목은 이미 요청한 보이기 설정이 설정되어 있습니다.",
        "revdelete-concurrent-change": "$1 $2에 수정된 항목을 새로 고치면서 오류 발생: 이런 현상은 당신이 문서를 편집하고 있을 때 다른 사람이 문서를 편집했기 때문에 발생합니다.\n관련 기록을 확인해 보세요.",
        "revdelete-only-restricted": "$1 $2 버전 숨기기 오류: 다른 숨기기 설정을 같이 설정하지 않고 관리자가 보지 못하도록 특정 판을 숨길 수 없습니다.",
        "revdelete-reason-dropdown": "*일반적인 삭제 이유\n** 저작권 침해\n** 부적절한 의견과 개인 정보\n** 부적절한 이름\n** 잠재적인 비방 정보",
        "revdelete-edit-reasonlist": "삭제 이유 편집",
        "revdelete-offender": "판 작성자:",
        "suppressionlog": "숨기기 기록",
-       "suppressionlogtext": "다음은 관리자로부터 숨겨진 내용에 관한 삭제와 차단 기록입니다.\n현재 차단된 사용자 목록을 보려면 [[Special:BlockList|차단된 사용자 목록]]을 참하세요.",
+       "suppressionlogtext": "다음은 관리자로부터 숨겨진 내용에 관한 삭제와 차단 기록입니다.\n현재 차단된 사용자 목록을 보려면 [[Special:BlockList|차단된 사용자 목록]]을 참하세요.",
        "mergehistory": "문서 역사 합치기",
-       "mergehistory-header": "이 문서는 한 문서에서 다른 문서로 문서 역사를 합치게 할 것입니다.\n이전 문서를 역사적 기록으로 계속 남겨둘 것인지 확인해주세요.",
+       "mergehistory-header": "이 페이지는 새 문서 안으로 한 원본 문서의 편집 역사를 합치게 됩니다.\n이전 문서의 바뀜을 역사적 기록으로 계속 남겨둘 것인지 확인해주세요.",
        "mergehistory-box": "두 문서의 판 합치기:",
        "mergehistory-from": "원본 문서:",
        "mergehistory-into": "대상 문서:",
        "mergehistory-invalid-destination": "대상 문서는 올바른 제목이어야 합니다.",
        "mergehistory-autocomment": "[[:$1]] 문서를 [[:$2]] 문서로 합침",
        "mergehistory-comment": "[[:$1]] 문서를 [[:$2]] 문서로 합침: $3",
-       "mergehistory-same-destination": "원본 문서 이름과 대상 문서 이름은 달라야 합니다",
+       "mergehistory-same-destination": "원본 문서 이름과 대상 문서 이름은 같을 수 없습니다",
        "mergehistory-reason": "이유:",
        "mergelog": "합치기 기록",
        "revertmerge": "합치기 해제",
        "search-category": "(분류 $1)",
        "search-file-match": "(내용이 일치하는 파일 있음)",
        "search-suggest": "$1 문서를 찾고 있으신가요?",
+       "search-rewritten": "$1의 결과를 보여주고 있습니다. $2를 대신 검색합니다.",
        "search-interwiki-caption": "자매 프로젝트",
        "search-interwiki-default": "$1로부터의 결과:",
        "search-interwiki-more": "(더 보기)",
        "badsig": "서명이 잘못되었습니다.\nHTML 태그를 확인하세요.",
        "badsiglength": "서명이 너무 깁니다.\n서명은 $1 {{PLURAL:$1|글자}}보다 짧아야 합니다.",
        "yourgender": "어떤 성별로 표시되는 것을 선호합니까?",
-       "gender-unknown": "ë°\9dí\9e\88ê³  ì\8b¶ì§\80 ì\95\8aì\8aµë\8b\88ë\8b¤",
+       "gender-unknown": "ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95  ë\95\8c, ì\86\8cí\94\84í\8a¸ì\9b¨ì\96´ë\8a\94 ê°\80ë\8a¥í\95\9c í\95\9c ì\84± ì¤\91립ì \81ì\9d¸ ë\8b¨ì\96´ë¥¼ ì\82¬ì\9a©í\95  ê²\83ì\9e\85ë\8b\88ë\8b¤.",
        "gender-male": "위키 문서를 편집하는 남자입니다",
        "gender-female": "위키 문서를 편집하는 여자입니다",
        "prefs-help-gender": "이 환경 설정은 선택 사항입니다.\n소프트웨어는 적절한 성별 문법을 사용하여 다른 사용자에게 당신을 언급하는 것을 해결하기 위해 사용됩니다.\n이 정보는 공개됩니다.",
        "rcshowhidemine": "내 편집을 $1",
        "rcshowhidemine-show": "보이기",
        "rcshowhidemine-hide": "숨기기",
+       "rcshowhidecategorization-show": "보이기",
+       "rcshowhidecategorization-hide": "숨기기",
        "rclinks": "최근 $2일간의 $1개 바뀐 문서 보기<br />$3",
        "diff": "차이",
        "hist": "역사",
        "newpageletter": "새글",
        "boteditletter": "봇",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|사용자}} $1명이 주시하고 있음]",
-       "rc_categories": "다음 분류로 제한 (\"|\"로 구분)",
+       "rc_categories": "다음 분류로 제한 (\"|\"로 구분):",
        "rc_categories_any": "모두",
        "rc-change-size-new": "바꾼 후 $1 {{PLURAL:$1|바이트}}",
-       "newsectionsummary": "새 주제: /* $1 */",
+       "newsectionsummary": "/* $1 */ 새 문단",
        "rc-enhanced-expand": "자세한 내용 보기",
        "rc-enhanced-hide": "자세한 기록 숨기기",
        "rc-old-title": "처음에 \"$1\"라는 제목으로 만들어졌습니다",
        "recentchangeslinked-summary": "지정된 문서를 가리키는 문서(또는 지정된 분류에 들어 있는 문서)에 대한 최근에 바뀐 목록입니다.\n[[Special:Watchlist|주시문서 목록]]에 있는 문서는 <strong>굵게</strong> 나타납니다.",
        "recentchangeslinked-page": "문서 이름:",
        "recentchangeslinked-to": "해당 문서를 가리키는 문서의 바뀜 보기",
+       "recentchanges-page-added-to-category": "[[:$1]]이(가) 분류에 추가되었습니다",
+       "recentchanges-page-removed-from-category": "[[:$1]]이(가) 분류에서 제거되었습니다",
        "upload": "파일 올리기",
        "uploadbtn": "파일 올리기",
        "reuploaddesc": "올리기를 취소하고 올리기 양식으로 돌아가기",
        "upload-too-many-redirects": "URL이 너무 많은 넘겨주기를 포함하고 있습니다.",
        "upload-http-error": "HTTP 오류 발생: $1",
        "upload-copy-upload-invalid-domain": "이 도메인에 속하지 않는 웹사이트의 파일을 올릴 수 없습니다.",
+       "upload-dialog-title": "파일 올리기",
+       "upload-dialog-error": "오류가 발생했습니다",
+       "upload-dialog-button-cancel": "취소",
+       "upload-dialog-button-done": "완료",
+       "upload-dialog-button-save": "저장",
+       "upload-dialog-button-upload": "올리기",
+       "upload-dialog-label-infoform-title": "자세한 사항",
+       "upload-dialog-label-infoform-name": "이름",
+       "upload-dialog-label-infoform-description": "설명",
+       "upload-dialog-label-usage-filename": "파일 이름",
        "backend-fail-stream": "\"$1\" 파일을 스트림할 수 없습니다.",
        "backend-fail-backup": "\"$1\" 파일을 백업할 수 없습니다.",
        "backend-fail-notexists": "$1 파일이 존재하지 않습니다.",
        "unusedimages": "사용하지 않는 파일 목록",
        "wantedcategories": "필요한 분류 목록",
        "wantedpages": "필요한 문서 목록",
-       "wantedpages-summary": "다른 문서들에 링크는 걸려 있지만 존재하지 않는 문서들 중, 넘겨주기 문서를 제외한 목록입니다.\n존재하지 않는 문서로 넘겨주는 문서 목록을 보려면 [[{{#special:BrokenRedirects}}|the list of broken redirects]]를 참하세요.",
+       "wantedpages-summary": "다른 문서들에 링크는 걸려 있지만 존재하지 않는 문서들 중, 넘겨주기 문서를 제외한 목록입니다.\n존재하지 않는 문서로 넘겨주는 문서 목록을 보려면 [[{{#special:BrokenRedirects}}|the list of broken redirects]]를 참하세요.",
        "wantedpages-badtitle": "문서 제목이 잘못되었습니다: $1",
        "wantedfiles": "필요한 파일 목록",
        "wantedfiletext-cat": "다음 파일은 쓰이고는 있지만 없는 파일입니다. 바깥 저장소에 있는 파일은 실제로는 있지만 여기 올라 있을 수 있습니다. 그런 오류는 <del>삭제선</del>이 그어질 것입니다. 또한 없는 파일을 포함하고 있는 문서는 [[:$1]]에 올라 있습니다.",
        "booksources-isbn": "ISBN:",
        "booksources-search": "검색",
        "booksources-text": "아래의 목록은 새 책이나 중고 책을 판매하는 바깥 사이트로, 원하는 책의 정보를 얻을 수 있습니다.",
-       "booksources-invalid-isbn": "ì\9e\85ë ¥í\95\9c ISBNì\9d´ ì\9e\98못ë\90\9c ê²\83ì\9c¼ë¡\9c ë³´ì\9e\85ë\8b\88ë\8b¤. ì\9b\90본과 ë\8c\80ì¡°í\95´ 보세요.",
+       "booksources-invalid-isbn": "ì\9e\85ë ¥í\95\9c ISBNì\9d´ ì\98¬ë°\94르ì§\80 ì\95\8aì\9d\80 ê²\83ì\9c¼ë¡\9c ë³´ì\9e\85ë\8b\88ë\8b¤. ì\9b\90본과 ë\8c\80ì¡°í\95´ ë¬¸ì \9cê°\80 ì\9e\88ë\8a\94ì§\80 í\99\95ì\9d¸í\95´보세요.",
        "specialloguserlabel": "작업 수행자:",
        "speciallogtitlelabel": "대상 (제목 또는 사용자):",
        "log": "기록 목록",
        "cachedspecial-viewing-cached-ts": "현재 이 문서는 캐시 처리된 버전으로 현재 문서 상태를 반영하지 않을 수도 있습니다.",
        "cachedspecial-refresh-now": "최신 버전 보기.",
        "categories": "분류 목록",
-       "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참하세요.",
+       "categoriespagetext": "문서나 자료를 {{PLURAL:$1|포함하고 있는 분류}} 목록입니다.\n[[Special:UnusedCategories|사용되지 않는 분류]]는 여기에 보이지 않습니다.\n[[Special:WantedCategories|필요한 분류]]도 참하세요.",
        "categoriesfrom": "다음으로 시작하는 분류를 보여주기:",
        "special-categories-sort-count": "갯수 순으로 정렬",
        "special-categories-sort-abc": "알파벳순으로 정렬",
        "activeusers-hidesysops": "관리자를 숨기기",
        "activeusers-noresult": "사용자가 없습니다.",
        "listgrouprights": "사용자 권한 목록",
-       "listgrouprights-summary": "다음은 이 위키에 있는 사용자 권한 그룹의 목록입니다.\n각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]를 참하세요.",
+       "listgrouprights-summary": "다음은 이 위키에 있는 사용자 권한 그룹의 목록입니다.\n각각의 권한에 대해서는 [[{{MediaWiki:Listgrouprights-helppage}}|추가 정보]]를 참하세요.",
        "listgrouprights-key": "범례:\n* <span class=\"listgrouprights-granted\">부여된 권한</span>\n* <span class=\"listgrouprights-revoked\">해제된 권한</span>",
        "listgrouprights-group": "그룹",
        "listgrouprights-rights": "권한",
        "watchlistanontext": "주시문서 목록을 보거나 고치려면 로그인하세요.",
        "watchnologin": "로그인하지 않음",
        "addwatch": "주시문서 목록에 추가",
-       "addedwatchtext": "\"[[:$1]]\" 문서를 [[Special:Watchlist|주시문서 목록]]에 추가했습니다.\n앞으로 이 문서나 관련된 토론 문서가 바뀌면 보일 것입니다.",
+       "addedwatchtext": "\"[[:$1]]\" 문서와 그 토론 문서가 [[Special:Watchlist|주시문서 목록]]에 추가되었습니다.",
        "addedwatchtext-short": "\"$1\" 문서를 주시문서 목록에 추가했습니다.",
        "removewatch": "주시문서 목록에서 제거",
-       "removedwatchtext": "\"[[:$1]]\" 문서를 [[Special:Watchlist|주시문서 목록]]에서 뺐습니다.",
+       "removedwatchtext": "\"[[:$1]]\" 문서와 그 토론 문서가 [[Special:Watchlist|주시문서 목록]]에서 제거되었습니다.",
        "removedwatchtext-short": "\"$1\" 문서를 주시문서 목록에 제거했습니다.",
        "watch": "주시",
        "watchthispage": "주시하기",
        "logentry-contentmodel-change-revertlink": "되돌리기",
        "logentry-contentmodel-change-revert": "되돌리기",
        "protectlogpage": "문서 보호 기록",
-       "protectlogtext": "아래의 목록은 문서 보호에 관한 바뀜에 대한 기록입니다.\n현재 보호된 문서의 목록에 대해서는 [[Special:ProtectedPages|보호된 문서 목록]]을 참하세요.",
+       "protectlogtext": "아래의 목록은 문서 보호에 관한 바뀜에 대한 기록입니다.\n현재 보호된 문서의 목록에 대해서는 [[Special:ProtectedPages|보호된 문서 목록]]을 참하세요.",
        "protectedarticle": "사용자가 \"[[$1]]\" 문서를 보호했습니다",
        "modifiedarticleprotection": "사용자가 \"[[$1]]\" 문서의 보호 설정을 바꿨습니다",
        "unprotectedarticle": "사용자가 \"[[$1]]\" 문서를 보호 해제했습니다",
        "lockedbyandtime": "({{GENDER:$1|$1}} 사용자가 $2 $3에 잠금)",
        "move-page": "$1 옮기기",
        "move-page-legend": "문서 옮기기",
-       "movepagetext": "아래 양식을 채워 문서의 이름을 바꾸고 모든 역사를 새 이름으로 된 문서로 옮길 수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 되고,\n원래 이름을 가리키는 넘겨주기는 자동으로 갱신됩니다.\n만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 하는 책임을 집니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 '''않습니다'''.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n'''주의!'''\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
-       "movepagetext-noredirectfixer": "아래 양식을 채워 문서의 이름을 바꾸고 모든 역사를 새 이름으로 된 문서로 옮길 수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 됩니다.\n[[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 하는 책임을 집니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 '''않습니다'''.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n'''주의!'''\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+       "movepagetext": "아래 양식을 채워 문서의 이름을 바꾸고 모든 역사를 새 이름으로 된 문서로 옮길 수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 되고,\n원래 이름을 가리키는 넘겨주기는 자동으로 갱신됩니다.\n만약 이 설정을 선택하지 않았다면 [[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 하는 책임을 집니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+       "movepagetext-noredirectfixer": "아래 양식을 채워 문서의 이름을 바꾸고 모든 역사를 새 이름으로 된 문서로 옮길 수 있습니다.\n원래의 문서는 새 문서로 넘겨주는 링크로만 남게 됩니다.\n[[Special:DoubleRedirects|이중 넘겨주기]]와 [[Special:BrokenRedirects|끊긴 넘겨주기]]를 확인해주세요.\n당신은 링크와 가리키는 대상이 서로 일치하도록 해야 하는 책임을 집니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 옮긴 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
        "movepagetalktext": "딸린 토론 문서도 자동으로 이동합니다. 하지만 다음의 경우는 '''이동하지 않습니다''':\n* 이동할 이름으로 된 문서가 이미 있는 경우\n* 아래의 선택을 해제하는 경우\n\n이 경우에는 문서를 직접 이동하거나 두 문서를 합쳐야 합니다.",
        "movearticle": "문서 옮기기:",
-       "moveuserpage-warning": "'''경고:''' 사용자 문서를 옮기려 하고 있습니다. 사용자 문서만 이동되며 사용자 이름이 바뀌지 '''않는다'''는 점을 참고하세요.",
+       "moveuserpage-warning": "<strong>경고:</strong> 사용자 문서를 옮기려 하고 있습니다. 사용자 문서만 이동되며 사용자 이름이 바뀌지 <strong>않는다</strong>는 점을 참고하세요.",
        "movecategorypage-warning": "<strong>경고:</strong> 분류 문서를 옮기려고 합니다. 해당 문서만 옮겨지고 옛 분류에 있는 문서는 새 분류 안에 다시 분류되지 <em>않음</em>을 참고하세요.",
        "movenologintext": "문서를 이동하려면 [[Special:UserLogin|로그인]]해야 합니다.",
        "movenotallowed": "문서를 옮길 권한이 없습니다.",
        "delete_and_move_text": "== 삭제 필요 ==\n이동하려는 제목으로 된 \"[[:$1]]\" 문서가 이미 존재합니다.\n삭제하고 이동할까요?",
        "delete_and_move_confirm": "네. 문서를 삭제합니다",
        "delete_and_move_reason": "\"[[$1]]\"에서 문서를 이동하기 위해 삭제함",
-       "selfmove": "ì\9d´ë\8f\99í\95\98ë ¤ë\8a\94 ì \9c목ì\9d´ ì\9b\90ë\9e\98 ì \9c목과 ê°\99ì\8aµë\8b\88ë\8b¤.\nê°\99ì\9d\80 ì \9c목ì\9c¼ë¡\9cë\8a\94 옮길 수 없습니다.",
+       "selfmove": "ì\9b\90ë\9e\98 ì \9c목과 ì\9d´ë\8f\99í\95\98ë ¤ë\8a\94 ì \9c목ì\9d´ ê°\99ì\8aµë\8b\88ë\8b¤.\nê°\99ì\9d\80 ì \9c목ì\9c¼ë¡\9cë\8a\94 ë¬¸ì\84\9c룰 옮길 수 없습니다.",
        "immobile-source-namespace": "\"$1\" 이름공간에 속한 문서는 이동시킬 수 없습니다.",
        "immobile-target-namespace": "\"$1\" 이름공간에 속한 문서는 이동시킬 수 없습니다.",
        "immobile-target-namespace-iw": "인터위키 링크를 넘어 문서를 옮길 수 없습니다.",
        "imageinvalidfilename": "새 파일 이름이 잘못되었습니다.",
        "fix-double-redirects": "원래 제목을 가리키는 넘겨주기를 새로 고침",
        "move-leave-redirect": "옮긴 뒤 넘겨주기를 남기기",
-       "protectedpagemovewarning": "'''경고:''' 이 문서는 관리자만이 이동할 수 있도록 잠겨 있습니다.\n최근의 기록을 참고용으로 제공합니다:",
-       "semiprotectedpagemovewarning": "'''참고:''' 이 문서는 등록된 사용자만이 이동할 수 있도록 잠겨 있습니다.\n최근 기록 내용을 참고용로 제공합니다:",
+       "protectedpagemovewarning": "<strong>경고:</strong> 이 문서는 관리자만이 이동할 수 있도록 잠겨 있습니다.\n최근의 기록을 참조용으로 제공합니다:",
+       "semiprotectedpagemovewarning": "<strong>참고:</strong> 이 문서는 등록된 사용자만이 이동할 수 있도록 잠겨 있습니다.\n최근 기록 내용을 참고용로 제공합니다:",
        "move-over-sharedrepo": "== 파일이 존재함 ==\n[[:$1]] 파일이 공용 저장소에 있습니다. 이 이름으로 파일을 옮기면 공용의 파일을 덮어쓰게 될 것입니다.",
        "file-exists-sharedrepo": "선택한 파일 이름은 공용 저장소에서 사용 중입니다.\n다른 이름을 선택하세요.",
        "export": "문서 내보내기",
        "exporttext": "특정 문서와 그 문서의 편집 역사를 XML 파일로 만들 수 있습니다. 이렇게 만들어진 파일은 다른 미디어위키에서 [[Special:Import|문서 가져오기]] 기능을 통해 가져갈 수 있습니다.\n\n문서를 내보내려면, 내보내려는 문서 제목을 한 줄에 하나씩 입력해주세요. 그리고 문서의 전체 역사가 필요한지, 혹은 현재 버전만이 필요한지를 선택해 주세요.\n\n특정 문서를 내보내려면, 예를 들어 \"[[{{MediaWiki:Mainpage}}]]\" 문서를 내보내려면 [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] 링크를 사용할 수도 있습니다.",
        "exportall": "모든 문서를 내보내기",
        "exportcuronly": "현재 버전만 포함하고, 전체 역사는 포함하지 않음",
-       "exportnohistory": "----\n'''참고:''' 전체 문서 역사를 내보내는 기능은 성능 문제로 인해 비활성되어 있습니다.",
+       "exportnohistory": "----\n<strong>참고:</strong> 전체 문서 역사를 내보내는 기능은 성능 문제로 인해 비활성되어 있습니다.",
        "exportlistauthors": "각각 문서마다 모든 기여자의 목록을 포함",
        "export-submit": "내보내기",
        "export-addcattext": "분류에 있는 문서 추가:",
        "importfailed": "가져오기 실패: <nowiki>$1</nowiki>",
        "importunknownsource": "알 수 없는 가져오기 원본 유형",
        "importcantopen": "파일을 열 수 없습니다.",
-       "importbadinterwiki": "인터위키 링크가 잘못되었습니다.",
+       "importbadinterwiki": "인터위키 링크가 잘못되었습니다",
        "importsuccess": "가져오기 완료!",
        "importnosources": "문서를 가져올 출처 위키가 정의되지 않았고 문서 역사 올리기가 비활성화되었습니다.",
        "importnofile": "가져오기 파일이 올려지지 않았습니다.",
        "tooltip-diff": "자신이 바꾼 내용 보기",
        "tooltip-compareselectedversions": "이 문서에서 선택한 두 판 간의 차이를 비교",
        "tooltip-watch": "이 문서를 주시문서 목록에 추가",
-       "tooltip-watchlistedit-normal-submit": "항목 제거하기",
+       "tooltip-watchlistedit-normal-submit": "항목 제거",
        "tooltip-watchlistedit-raw-submit": "주시문서 목록 새로 고침",
        "tooltip-recreate": "문서를 편집하는 중 삭제되어도 새로 만들기",
        "tooltip-upload": "파일 올리기",
        "filedelete-archive-read-only": "웹 서버의 \"$1\" 파일 저장 위치에 쓰기 권한이 없습니다.",
        "previousdiff": "← 이전 편집",
        "nextdiff": "다음 편집 →",
-       "mediawarning": "'''경고''': 이 파일에 악성 코드가 포함되어 있을 수 있습니다.\n파일을 실행하면 컴퓨터에 문제가 생길 가능성이 있습니다.",
+       "mediawarning": "<strong>경고:</strong> 이 파일에 악성 코드가 포함되어 있을 수 있습니다.\n파일을 실행하면 컴퓨터에 문제가 생길 가능성이 있습니다.",
        "imagemaxsize": "그림 최대 크기:<br />(파일 문서에 적용되는 기능)",
        "thumbsize": "섬네일 크기:",
        "widthheightpage": "$1 × $2, $3{{PLURAL:$3|쪽}}",
        "file-info-png-looped": "반복됨",
        "file-info-png-repeat": "$1{{PLURAL:$1|번}} 재생됨",
        "file-info-png-frames": "$1 {{PLURAL:$1|프레임}}",
-       "file-no-thumb-animation": "'''참고: 기술적인 제한으로 인해 이 파일의 섬네일은 애니메이션을 지원하지 않습니다.'''",
-       "file-no-thumb-animation-gif": "'''참고: 기술적인 제한으로 인해 고해상도 GIF 그림 섬네일은 애니메이션을 지원하지 않습니다.'''",
+       "file-no-thumb-animation": "<strong>참고: 기술적인 제한으로 인해 이 파일의 섬네일은 애니메이션을 지원하지 않습니다.</strong>",
+       "file-no-thumb-animation-gif": "<strong>참고: 기술적인 제한으로 인해 고해상도 GIF 그림 섬네일은 애니메이션을 지원하지 않습니다.</strong>",
        "newimages": "새 파일 목록",
        "imagelisttext": "{{PLURAL:$1|파일}} '''$1'''개를 $2순으로 정렬한 목록입니다.",
        "newimages-summary": "이 특수 문서는 최근에 올라온 파일을 나열하고 있습니다.",
        "scarytranscludefailed": "[$1 틀을 불러오는 데에 실패했습니다]",
        "scarytranscludefailed-httpstatus": "[$1 틀을 가져오는 데 실패했습니다: HTTP $2]",
        "scarytranscludetoolong": "[URL이 너무 깁니다]",
-       "deletedwhileediting": "'''경고''': 이 문서를 편집하던 중에 이 문서가 삭제되었습니다!",
+       "deletedwhileediting": "<strong>경고:</strong> 이 문서를 편집하던 중에 이 문서가 삭제되었습니다!",
        "confirmrecreate": "[[User:$1|$1]] 사용자([[User talk:$1|토론]])가 당신이 편집하는 도중에 문서를 삭제했습니다. 삭제 이유는 다음과 같습니다:\n: $2\n문서를 다시 만들어야 하는지 확인해주세요.",
        "confirmrecreate-noreason": "[[User:$1|$1]] 사용자([[User talk:$1|토론]])가 당신이 편집하는 도중에 문서를 삭제했습니다. 문서를 다시 만들어야 하는지 확인해주세요.",
        "recreate": "새로 만들기",
        "watchlistedit-normal-title": "주시문서 목록 편집하기",
        "watchlistedit-normal-legend": "주시문서 목록에서 문서 제거하기",
        "watchlistedit-normal-explain": "주시문서 목록에 있는 문서의 제목이 아래에 나와 있습니다.\n주시문서 목록에서 제거하려는 문서가 있으면 각 항목의 확인 상자를 선택한 다음 \"{{int:Watchlistedit-normal-submit}}\"를 클릭해주세요.\n또는 [[Special:EditWatchlist/raw|목록을 직접 편집]]할 수도 있습니다.",
-       "watchlistedit-normal-submit": "í\95­ëª© ì\82­ì \9c",
+       "watchlistedit-normal-submit": "í\95­ëª© ì \9cê±°",
        "watchlistedit-normal-done": "{{PLURAL:$1|문서 1개|문서 $1개}}를 주시문서 목록에서 제거했습니다:",
        "watchlistedit-raw-title": "주시문서 목록 직접 편집하기",
        "watchlistedit-raw-legend": "주시문서 목록 직접 편집하기",
        "watchlisttools-edit": "주시문서 목록 보기/편집하기",
        "watchlisttools-raw": "주시문서 목록 직접 편집하기",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|토론]])",
-       "duplicate-defaultsort": "'''경고:''' 기본 정렬 키 \"$2\"가 이전의 기본 정렬 키 \"$1\"를 덮어쓰고 있습니다.",
+       "duplicate-defaultsort": "<strong>경고:</strong> 기본 정렬 키 \"$2\"가 이전의 기본 정렬 키 \"$1\"를 덮어쓰고 있습니다.",
        "duplicate-displaytitle": "<strong>경고:</strong> \"$2\" 제목 표시는 기존의 표시되는 제목 \"$1\"을 덮어씁니다.",
        "invalid-indicator-name": "<strong>오류:</strong> 문서 상태 표시기의 <code>name</code> 특성은 비어 있지 않아야 합니다.",
        "version": "버전",
        "tags-delete-submit": "이 태그를 영구히 삭제",
        "tags-delete-not-allowed": "확장 기능에서 정의된 태그는 확장 기능 설정에서 허용되지 않은 이상 삭제할 수 없습니다.",
        "tags-delete-not-found": "\"$1\" 태그가 존재하지 않습니다.",
+       "tags-activate-title": "태그 활성화",
+       "tags-activate-question": "\"$1\" 태그를 활성화하려고 합니다.",
        "tags-activate-reason": "이유:",
+       "tags-activate-not-allowed": "\"$1\" 태그를 활성화할 수 없습니다.",
        "tags-activate-not-found": "\"$1\" 태그가 존재하지 않습니다.",
        "tags-activate-submit": "활성화",
+       "tags-deactivate-title": "태그 비활성화",
+       "tags-deactivate-question": "\"$1\" 태그를 비활성화하려고 합니다.",
        "tags-deactivate-reason": "이유:",
+       "tags-deactivate-not-allowed": "\"$1\" 태그를 비활성화할 수 없습니다.",
        "tags-deactivate-submit": "비활성화",
        "tags-update-remove-not-allowed-one": "\"$1\" 태그를 제거하는 것은 허용되지 않습니다.",
        "tags-edit-title": "태그 편집",
        "htmlform-cloner-create": "더 추가",
        "htmlform-cloner-delete": "제거",
        "htmlform-cloner-required": "적어도 하나의 값이 필요합니다.",
+       "htmlform-title-not-creatable": "\"$1\"은 만들 수 없는 문서 제목입니다.",
+       "htmlform-title-not-exists": "[[:$1]] 문서는 존재하지 않습니다.",
+       "htmlform-user-not-exists": "<strong>$1</strong> 문서는 존재하지 않습니다.",
+       "htmlform-user-not-valid": "<strong>$1</strong>은 올바른 사용자 이름이 아닙니다.",
        "sqlite-has-fts": "$1 (본문 전체 검색 지원)",
        "sqlite-no-fts": "$1 (본문 전체 검색 지원 제외)",
        "logentry-delete-delete": "$1 사용자가 $3 문서를 {{GENDER:$2|삭제했습니다}}",
        "logentry-block-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
        "logentry-suppress-block": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자를 $5 $6 설정으로 차단했습니다.",
        "logentry-suppress-reblock": "$1 {{GENDER:$2|사용자가}} {{GENDER:$4|$3}} 사용자의 차단을 $5 $6 설정으로 변경했습니다.",
+       "logentry-import-upload": "$1 사용자가 $3을 파일 올리기로 {{GENDER:$2|가져왔습니다}}",
+       "logentry-import-interwiki": "$1 사용자가 $3을 다른 위키에서 {{GENDER:$2|가져왔습니다}}",
        "logentry-merge-merge": "$1 사용자가 $3 문서를 $4 안에 {{GENDER:$2|병합했습니다}} (판은 $5까지)",
        "logentry-move-move": "$1 사용자가 $3 문서를 $4 문서로 {{GENDER:$2|옮겼습니다}}",
        "logentry-move-move-noredirect": "$1 사용자가 $3 문서를 넘겨주기를 만들지 않고 $4 문서로 {{GENDER:$2|옮겼습니다}}",
        "special-characters-title-endash": "en 대시",
        "special-characters-title-emdash": "em 대시",
        "special-characters-title-minus": "빼기 기호",
+       "mw-widgets-dateinput-no-date": "선택된 날짜 없음",
        "mw-widgets-titleinput-description-new-page": "문서가 존재하지 않습니다",
        "mw-widgets-titleinput-description-redirect": "$1 문서로 넘겨주기"
 }
index 955b4bc..ee0c69e 100644 (file)
        "spambot_username": "Спамны ариулау",
        "spam_reverting": "$1 бла джибериую болмагъан ахыр версиягъа къайтылады",
        "spam_blanking": "Бютеу версияла $1 бетге джибериу тутадыла, ариуланадыла",
-       "simpleantispam-label": "Ð\90нÑ\82и-Ñ\81пам Ñ\81Ñ\8bнаÑ\83.\nÐ\9cÑ\83нÑ\83 '''Ñ\82олÑ\82Ñ\83Ñ\80Ð\9cÐ\90'''!",
+       "simpleantispam-label": "СпамгÑ\8aа ÐºÑ\8aаÑ\80Ñ\88Ñ\87Ñ\8b Ñ\81Ñ\8bнаÑ\83.\nÐ\9cÑ\83нÑ\83 Ñ\82олÑ\82Ñ\83Ñ\80<strong>Ð\9cÐ\90</strong>!",
        "pageinfo-title": "«$1» бетни юсюнден информация",
        "pageinfo-header-basic": "Баш билгиле",
        "pageinfo-header-edits": "Тюрлениу тарих",
index 515895a..c726976 100644 (file)
@@ -27,7 +27,7 @@
        "tog-watchrollback": "Donn Sigge beim schtantepee retuur Nämme vun Änderonge automattesch för ming Oppaßlėß vörschlonn",
        "tog-minordefault": "Dun all ming Änderonge jehdes Mohl als klein Mini-Änderonge vörschlonn",
        "tog-previewontop": "Zeisch de Vör-Aanseesch övver däm Fäld för der Täx enzejävve aan.",
-       "tog-previewonfirst": "Zeich de Vör-Aansich tirek för et eetste Mol beim Bearbeide aan",
+       "tog-previewonfirst": "Zeisch de Vör-Aanseesch tirek för et eetste Mohl beim Beärbeijde aan",
        "tog-enotifwatchlistpages": "Scheck mer en <i lang=\"en\">e-mail</i>, wann en Sigg us minge Oppaßlėß verändert woode es",
        "tog-enotifusertalkpages": "Scheck mer en <i lang=\"en\">e-mail</i>, wann ming Klaaf_Sigg jeändert weed",
        "tog-enotifminoredits": "Scheck mer och en <i lang=\"en\">e-mail</i> för de klein Mini-Änderonge",
        "searchbutton": "em Tex",
        "go": "Lohß Jonn!",
        "searcharticle": "Sigg",
-       "history": "Versione",
-       "history_short": "Versione",
+       "history": "Väsjohne",
+       "history_short": "Väsjohne",
        "updatedmarker": "(jeändert)",
        "printableversion": "För ze Drocke",
        "permalink": "Ne Permalink noh heh",
        "newpage": "Neu Sigg",
        "talkpage": "Övver di Sigg heh schwahde",
        "talkpagelinktext": "Klaaf",
-       "specialpage": "Extrasigg",
+       "specialpage": "Äxtrasigg",
        "personaltools": "Metmaacher Werkzüch",
        "articlepage": "Aanluure wat op dä Sigg drop steiht",
        "talk": "Klaafe",
        "currentevents-url": "Project:Et Neuste",
        "disclaimers": "Henwies",
        "disclaimerpage": "Project:Impressum",
-       "edithelp": "Hölp för et Bearbeide",
+       "edithelp": "Hölp för et Beärbeijde",
        "helppage-top-gethelp": "Hölp",
        "mainpage": "Haupsigg",
        "mainpage-description": "Haupsigg",
        "readonly": "De Daatebank es jesperrt",
        "enterlockreason": "Jevv aan, woröm un för wie lang dat de Daatebank jesperrt wääde soll",
        "readonlytext": "De Daatebank es jesperrt. Neu Saache dren avspeichere jeiht jrad nit, un ändere och nit. Dä Jrund: „$1“",
-       "missing-article": "Dä Tex för de Sigg „$1“ $2 kunnte mer nit en de Daatebank finge.\nDe Sigg es villeich fottjeschmesse oder ömjenannt woode.\nWann dat nidd esu sin sollt, dann hadder villeich ene Fähler en de Soffwär jefunge.\nVerzällt et enem [[Special:ListUsers/sysop|Wiki_Köbes]],\nun doht em och de URL vun dä Sigg heh sage.",
-       "missingarticle-rev": "(Version Numero: $1)",
+       "missing-article": "Dä Tex för de Sigg „$1“ $2 kunnte mer nit en de Daatebank fenge.\nDe Sigg es velleisch fottjeschmeße udder ömjenannt woode.\nWann dat nidd esu sin sullt, dann had_Der velleich ene Fähler em Projramm vum Wikke jefonge.\nVerzälld et enem [[Special:ListUsers/sysop|Wiki_Köhbeß]],\nun doht em och dä <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> vun dä Sigg heh sare.",
+       "missingarticle-rev": "(Väsjohn Numero: $1)",
        "missingarticle-diff": "(Ongerscheed zwesche de Versione $1 un $2)",
        "readonly_lag": "De Daatebank es för en koote Zigg automattesch jesperrt, för de Daate vun de ongerjeodente Rääschner mem Houprääschner avzejliiche.",
        "internalerror": "De Wiki-Soffwär hät ene Fähler jefunge",
        "title-invalid-magic-tilde": "En dä jewönschte Övverschreff för di Sigg es de Reih uß 4 Tilde (<nowiki>~~~</nowiki>) un di es onjöltesch.",
        "title-invalid-too-long": "Di jewönschte Övverschreff för di Sigg es zoh lang. Se darref nit mih wi {{PLURAL:$1|ein|$1|kei}} <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Byte{{PLURAL:$1||s|}}</i> lang sin, em Kohd <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Däm Unicode singe Universal Coded Character Set + Transformation Format—8-Bit\">UTF-8</i>.",
        "title-invalid-leading-colon": "En dä jewönschter Övverschrevv för di Sigg es ene onjöllteje Dubbelpungk aam Aanfang dren.",
-       "perfcached": "Di Daate heh noh kumme usem Zweschespeicher (cache) un künnte nit mieh janz de allerneuste sin.\n{{PLURAL:$1|Bloß ein Antwoot es|Nit mieh wi $1 Antwoote sin|Kein Antwoot es}} doh faßjehallde un ze han.",
-       "perfcachedts": "De Daate heenoh kumme usem Zweschespeicher (<i lang=\"en\">cache</i>) un woodte aam $2 öm $3 opjenumme. Se künnte nit janz de allerneuste sin.\n{{PLURAL:$4|Bloß ein Antwoot es|Nit mieh wi $4 Antwoote sind|Kein Antwoot es}} doh ze han.",
+       "perfcached": "Di Dahte heh noh kumme uss_em Zweschespeischer (<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Zwescheschpeijscher “\">cache</i>) un künnte nit mih janz de allerneuste sin.\n{{PLURAL:$1|Bloß ein Antwoot es|Nit mih wi $1 Antwoote sin|Kein Antwoot es}} doh faßjehallde un ze han.",
+       "perfcachedts": "De Daate heenoh kumme usem Zweschespeicher (<i lang=\"en\">cache</i>) un woodte aam $2 öm $3 opjenumme. Se künnte nit janz de allerneuste sin.\n{{PLURAL:$4|Bloß ein Antwoot es|Nit mih wi $4 Antwoote sind|Kein Antwoot es}} doh ze han.",
        "querypage-no-updates": "'''Heh di Sigg weed nit mih op ene neue Schtand jebraat.'''",
        "viewsource": "Wikitex aanluure",
        "viewsource-title": "Der Wikkitäx vun dä Sigg „$1“ belohre.",
        "actionthrottled": "Dat ka'mer nit esu öff maache",
        "actionthrottledtext": "Dat darf mer nor en jeweße Zahl Mole hengerenander maache. Do bes jrad aan de Jrenz jekumme. Kannze jo en e paar Menutte widder probeere.",
        "protectedpagetext": "Di Sigg es jeschöz, un mer kann se nit änndere.",
-       "viewsourcetext": "Heh es dä Sigg ier Wikitex zom Belooere un Koppeere:",
-       "viewyourtext": "Do kanns Ding Änderonge aan heh dä Sigg beloore un kopeere:",
+       "viewsourcetext": "Heh es dä Sigg ier Wikitex zom Belooere un Koppeere.",
+       "viewyourtext": "Mer kann de Quälle vun de eije Ännderonge aan heh dä Sigg beloore un kopeere.",
        "protectedinterface": "Op dä Sigg heh schteihd ene Täx uß dä Schnettschtäll vun de Wikki nom Minsch. Dröm es däh och jäje Ännderonge jeschöz, domet keine Meßß domet aanjestallt weed.",
        "editinginterface": "<strong>Opjepass:</strong>\nOp dä Sigg heh schteiht Täx uß de Beehnbovverfläsch vum Wikki.\nDenk dran, heh Änndere deit et\nUßsinn un de Wöht ändere, met dänne et Wikki op de Metmaacher un de\nBesöhker aankütt!",
        "translateinterface": "Övversäzonge för <stron>alle</strong> Wikis jonn blohß op [//translatewiki.net/ translatewiki.net], woh mer MedijaWiki övversaz weed.",
        "createaccount-text": "Einer hät Desch als Metmaacher „$2“ {{GRAMMAR:em|{{SITENAME}}}} aanjemälldt.\nDat es e Wikki, un De fengks et onger däm URL:\n $4\nDat Paßwoot „$3“ hät sesch dat Wiki för Desch usjewörfelt.\nDon jlisch enlogge un donn et änndere.\n\nWann Dat all böömesch Dörver för Desch sin, da fojeß heh di\ne-mail eijfach. Wann De en däm Wikki nit metmaache wells, och.",
        "login-throttled": "Do häs zo öff, zo vill, un zo lang en de letzde Zick probeet, ennzelogge.\nWaad e Wielsche ävver $1, ih dat De et wider versöhks.",
        "login-abort-generic": "Dat Enlogge hät nit jeflup.",
-       "login-migrated-generic": "Dinge Zohjang zom Wikki es verändert woode un Dinge Metmaacher_Nahme jidd_et heh nit mieh.",
+       "login-migrated-generic": "Dinge Zohjang zom Wikki es verändert woode un Dinge Metmaacher_Nahme jidd_et heh nit mih.",
        "loginlanguagelabel": "Schprohch: $1",
        "suspicious-userlogout": "Do bes '''nit''' ußjelogg.\nEt süht us, wi wann ene kappodde Brauser udder <i lang=\"en\">proxy</i>ẞööver met Zwescheschpeischer noh däm Ußlogge jefrooch hät.",
        "createacct-another-realname-tip": "Dä reschteje Nahme kam_mer fott lohße.\n\nWann dä aanjejovve es, weet_e jebruch, öm öffentlesch de Schriiver för Beidrääsch ze nänne.",
        "accmailtitle": "Passwood verscheck.",
        "accmailtext": "En automattesch un zofällesch neu ußjewörfelt Passwood för dä\nMetmaacher „[[User talk:$1|$1]]“ es noh „$2“ jescheck woode.\n\nDat Passwoot för dä neue Zojang kanns De op dä {{int:Specialpage}} zom\n„[[Special:ChangePassword|{{int:resetpass}}]]“ ändere,\nwann De wider enjelogg bes.",
        "newarticle": "(Neu)",
-       "newarticletext": "Ene Link op en Sigg, wo noch nix drop steiht, weil et se noch jar nit jitt, hät Dich noh heh jebraht.\nÖm di Sigg aanzelähje, schriev heh unge en dat Feld eren, un dun dat dann avspeichere.\nLuur op de [$1 Sigge met Hölp] noh, wann De mieh dodrüvver wesse wells.\nWann De jar nit heh hen kumme wollts, dann jangk zeröck op di Sigg, wo De herjekumme bes, Dinge Brauser hät ene Knopp doför.",
+       "newarticletext": "Ene Link op en Sigg, wo noch nix drop steiht, weil et se noch jar nit jitt, hät Dich noh heh jebraht.\nÖm di Sigg aanzelähje, schriev heh unge en dat Feld eren, un dun dat dann avspeichere.\nLuur op de [$1 Sigge met Hölp] noh, wann De mih doh drövver weßße wells.\nWann De jar nit heh hen kumme wollts, dann jangk zeröck op di Sigg, wo De herjekumme bes, Dinge Brauser hät ene Knopp doför.",
        "anontalkpagetext": "----\n<i>Dat heh es de Klaaf Sigg för ene namenlose Metmaacher. Dä hät sich noch keine Metmaacher Name jejovve un\nenjerich, ov deit keine bruche. Dröm bruche mer sing IP Adress öm It oder In en uns Lisste fasszehalde.\nSu en IP Adress kann vun janz vill Metmaacher jebruch wääde, un eine Metmaacher kann janz flöck\nzwesche de ungerscheidlichste IP Adresse wähßele, womöchlich ohne dat hä et merk. Wann Do jetz ene namenlose\nMetmaacher bes, un fings, dat heh Saache an Dich jeschrevve wääde, wo Do jar nix met am Hot häs, dann bes Do\nwahrscheinlich och nit jemeint. Denk villeich ens drüvver noh, datte Dich [[Special:UserLogin/signup|anmelde]] deis,\ndomet De dann donoh nit mieh met esu en Ömständ ze dun häs, wie de andere namenlose Metmaacher heh. Wann de aanjemelldt bes un deis [[Special:UserLogin|enlogge]], dann kam_mer Desch och fun alle andere Metmaacher ongerschejde.</i>",
        "noarticletext": "<span class=\"plainlinks\">Em Momang es keine Täx op heh dä Sigg. Jangk en de Täxte vun ander Sigge [[Special:Search/{{PAGENAME}}|noh däm Titel söhke]], udder [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} donn en de Logböscher donoh loore], udder [{{FULLURL:{{FULLPAGENAME}}|action=edit}} fang di Sigg aan] ze schrieve, udder jangk zeröck woh De heer kohms. Do hät Dinge Brauser ene Knopp för.</span>",
        "noarticletext-nopermission": "Op dä Sigg es em Momang nix drop.\nDo kanns noh däm Tittel vun heh dä Sigg [[Special:Search/{{PAGENAME}}|em Tex op ander Sigge söhke]],\nudder en dä zopaß <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbööscher nohloore]</span>.",
-       "missing-revision": "En Version $1 vun dä Sigg „{{FULLPAGENAME}}“ jidd_et nit.\n\nEsu jät kütt för jewöhnlesch, wam_mer enem övverhollte Lengk ob en Sigg follesch, di zweschedren fottjeschmeße woode es.\nMieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbooch vum Sigge Fottschmiiße].",
+       "missing-revision": "En Version $1 vun dä Sigg „{{FULLPAGENAME}}“ jidd_et nit.\n\nEsu jät kütt för jewöhnlesch, wam_mer enem övverhollte Lengk ob en Sigg follesch, di zweschedren fottjeschmeße woode es.\nMih doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbooch vum Sigge Fottschmiiße].",
        "userpage-userdoesnotexist": "Enne Metmaacher „<nowiki>$1</nowiki>“ ham_mer nit, beß De sescher, dat De di Metmaachersigg verhaftesch änndere udder aanlähje wellß?.",
        "userpage-userdoesnotexist-view": "Ene Metmaacher mem Nahme „$1“ hät sesch noch nih aanjemeldt",
        "blocked-notice-logextract": "Dä Metmaacher es jraad jesperrt.\nHeh kütt der neuste Enndraach drövver uss_em Logbooch övver et Metmaacher_Sperre:",
        "nonunicodebrowser": "<strong>Opjepaß:</strong>\nDinge Brauser kann nit öhntlesch met däm <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"a standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems\">UNICODE</i> un singe Bochstahbe ömjonn.\nBes esu johd un nemm ene andere Brauser för heh di Sigg!",
        "editingold": "'''Opjepaß:<br />\nDo bes en ahle, övverhollte, Väsjohn vun dä Sigg heh aam ändere.\nWann De di avschpeischere deihs,\nwi se es,\ndann jonn all di Ännderonge fleute,\ndi zikdämm aan dä Sigg jemaht wohde sin.\nAlsu:\nBes De verhaftesch secher, wat_De mähs?\n'''",
        "yourdiff": "Ungerscheide",
-       "copyrightwarning": "Ding Beidrähsch schtonn unger de $2, süch $1. Wann De nit han wells, dat Dinge Tex ömjemodelt weed, un söns wohin verdeilt, dun en hee nit speichere. Mem Avspeichere sähs De och zo, dat et vun Dir selvs es, un/oder Do dat Rääch häs, en hee zo verbreide. Wann et nit stemmp, oder Do kanns et nit nohwiese, kann Dich dat en dr Bau bränge!",
-       "copyrightwarning2": "De Beidrähsch {{GRAMMAR:en|{{SITENAME}}}} künne vun andere Metmaacher ömjemodelt\noder fottjeschmesse wääde. Wann Der dat nit rääch es, schriev nix. Et es och nüdich, dat et vun Dir selvs es, oder dat Do dat Rääch häs, et hee öffentlich wigger ze jevve. Süch $1. Wann et nit stemmp, oder Do kanns et nit nohwihse, künnt Dich dat en dr Bau bränge!",
+       "copyrightwarning": "Ding Beijdrähsch schtonn onger de $2, süch $1. Wann De nit han wells, dat Dinge Täx ömjemohdelt weed, un söns wohin verdeilt, dun en heh nit schpeischere. Mem Avspeischere sähs De och zo, dat et vun Dir selvs es, un/udder Do dat Rääch häs, en heh zo verbreide. Wann et nit schtemmp, udder Do kanns et nit nohwiese, kann Desch dat en dr Bau bränge!",
+       "copyrightwarning2": "De Beijdrähsch {{GRAMMAR:en|{{SITENAME}}}} künne vun andere Metmaacher ömjemodelt\nudder fottjeschmeße wähde. Wann Der dat nit rääch es, schriiv nix. Et es och nühdesch, dat et vun Der selvs es, oder dat Do dat Rääsch häs, et heh öffentlich wigger ze jävve. Süch $1. Wann et nit schtemmp, oder Do kanns et nit nohwihse, künnt Desch dat en der Bou bränge!",
        "longpageerror": "'''Janz schlemme Fähler:'''\nDä Tex, dä De heh jescheck häs, dä es {{PLURAL:$1|ein|$1|kei}} Kilobyte jruuß.\nDat {{PLURAL:$2|es mieh wie ei|sin mieh wie $2|es kei}} Kilobyte. Dat künne mer nit speichere!",
-       "readonlywarning": "'''Opjepass:'''\nDe Daatebank es jesperrt woode, wo Do ald am Ändere wohs.\nDä.\nJetz kanns De Ding Änderunge nit mieh faßhallde lohße.\nDun se bei Dir om Rechner faßhalde un versöhg et schpäder noch ens.\n\nNävvebei, dä Datenbank-Köbes hät för et Sperre och ene Jrund aanjejovve: $1",
+       "readonlywarning": "<strong>Opjepass:<strong>\nDe Daatebank es jesperrt woode, wo Do ald am Ändere wohs.\nDä.\nJetz kanns De Ding Änderunge nit mih faßhallde lohße.\nDun se bei Dir om Rechner faßhalde un versöhg et schpäder noch ens.\n\nNävvebei, dä Datenbank-Köbes hät för et Sperre och ene Jrund aanjejovve: $1",
        "protectedpagewarning": "<strong>Opjepass: Di Sigg heh es jähje Veränderonge jeschöz. Blohß de Wikki-Köbeße künne se änndere.</strong>\nHeh kütt der neuste Enndraach em Logbohch för di Sigg:",
        "semiprotectedpagewarning": "<strong>Opjepass:</strong> Di Sigg heh es halv jeschpächt, wi mer sage, dat heiß, Do muss aanjemeldt un enjelogg sin, wann De dran ändere wells.\nHeh kütt der neuste Enndrach em Logbohch doh drövver:",
        "cascadeprotectedwarning": "<strong>Opjepaß:</strong> Di Sigg es jeschöz, un nur de Wikki_Köhbeße künne se änndere. Dat es, weil se angeschwoh ennjeföhsch weed. Se es en en Schotz-Kaskahd enjebonge, zosamme met dä {{PLURAL:$1|Sigg|Sigge}}:",
        "template-protected": "(jeschöz)",
        "template-semiprotected": "(halfjeschöz - tabu för neu Metmaacher un ohne Enlogge)",
        "hiddencategories": "Di Sigg heh is en {{PLURAL:$1|dä verschtoche Saachjropp: |dä $1 verschtoche Saachjroppe: |keij verschtoche Saachjroppe dren.}}",
-       "edittools": "<!-- Dä Tex hee zeich et Wiki unger däm Texfeld zom „Ändere/Bearbeide“ un beim Texfeld vum „Huhlade“. -->",
+       "edittools": "<!-- Dä Täx heh zeisch et Wikki onger däm Täxfeld zom „Ändere/Beärbeijde“ un beim Täxfeld vum „Huhlade“ ann. -->",
        "nocreatetext": "Sigge neu aanläje es nor müjjelich, wann de [[Special:UserLogin|enjelogg]] bes. Der ohne kanns De ävver Sigge ändere, di ald doh sin.",
        "nocreate-loggedin": "Do häs nit dat Rääch, neu Sigge aanzelääje.",
        "sectioneditnotsupported-title": "Afschnedde Ändere is nit zohjelohße",
        "permissionserrors": "Dat jeit nit, dat darfs De nit.",
        "permissionserrorstext": "Do häs nit dat Rääch, dat ze maache, {{PLURAL:$1|dä Jrund es:|de Jründe sin:|oohne Jrund.}}",
        "permissionserrorstext-withaction": "Do häs nit dat Rääch $2, {{PLURAL:$1|dä Jrond es:|de Jrönde sin:|ävver ohne aanjävbahre Jrond.}}",
-       "recreate-moveddeleted-warn": "'''Opjepaß:''' Do bes om bäste Wääsch, en Sigg neu aanzelähje, di doför ald ens fottjeschmeße woode wohr.\n\nBes förseschtesch un övverlääsch Der, of dat en johde Ideh es, di Sigg widder opzemaache. Domet De Bescheid weiß, heh de Endrääsh em Logbohch vum Sigge-Ömnänne, un em Logbohch vum Sigge-Fottschmieße mem Jrond, woröm di Sigg dohmohls fottjeschmesse woode es:",
+       "recreate-moveddeleted-warn": "'''Opjepaß:''' Do bes om bäste Wääsch, en Sigg neu aanzelähje, di doför ald ens fottjeschmeße woode wohr.\n\nBes förseschtesch un övverlääsch Der, of dat en johde Ideh es, di Sigg widder opzemaache. Domet De Bescheid weiß, heh de Endrääsh em Logbohch vum Sigge-Ömnänne, un em Logbohch vum Sigge-Fottschmihße mem Jrond, woröm di Sigg dohmohls fottjeschmeße woode es:",
        "moveddeleted-notice": "Heh di Sigg es fottjeschmeße.\nE Schtök uß dä Logböhscher fum Sigge_Fottschmihße un fum Sigge-Ömnänne för di Sigg kütt jäz, en dä Hoffnung, dat dat hellef.",
        "log-fulllog": "Donn dat janze Logbohch aanlohre",
        "edit-hook-aborted": "Et Ändere wood affjebroche övver ene sujenannte „Hoke“ en de ẞoffwäer.\nEne Jrond weße mer nit.",
        "undo-norev": "Do kam_mer nix zeröck nämme. Di väsjohn jidd_et nit, udder se es verschtoche udder fottjeschmeße woode.",
        "undo-nochange": "Di Änderong schingk ald retuur jemaat woode ze sin.",
        "undo-summary": "De Änderong $1 fum [[Special:Contributions/$2|$2]] ([[User talk:$2|Klaaf]]) zeröck jenomme.",
-       "undo-summary-username-hidden": "Nemm di Väsjohn $1 vun enem verschtoche Metmaacher widder retuur.",
+       "undo-summary-username-hidden": "Nemm di Väsjohn $1 vun enem verschtoche Metmaacher widder retuhr.",
        "cantcreateaccounttitle": "Kann keine Zojang enrichte",
        "cantcreateaccount-text": "Dä [[User:$3|$3]] hät verbodde, dat mer sich vun dä IP-Adress '''$1''' uß als ene neue Metmaacher aanmelde könne soll.\n\nAls Jrund för et Sperre es enjedraare: ''$2''",
        "cantcreateaccount-range-text": "Ne neue Metmaacher aanmälde vun <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräße em Berett vun <strong>$1</strong>, woh de Dinge dren es, wood vum {{GENDER:$3|vum|vum|vumm Metmaacher|vun dä|vum}} [[User:$3|$3]] verbodde.\nDer Jrond: <em><$2</em>\n\nDing <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß es: <strong>$4</strong>",
        "viewpagelogs": "De Logböcher för heh di Sigg beloore",
-       "nohistory": "Et jitt kei fottjeschmesse, zeröckhollba Versione vun dä Sigg.",
+       "nohistory": "Et jitt kei fottjeschmeße, zeröckhollbaa Väsjohne vun dä Sigg.",
        "currentrev": "Neuste Väsjohn",
        "currentrev-asof": "De neuste Version fum $2 öm $3 Uhr",
        "revisionasof": "De Version vum $2 öm $3 Uhr",
        "histlast": "de Neuste",
        "historysize": "({{PLURAL:$1|1 Byte|$1 Bytes|0 Byte}})",
        "historyempty": "(leddich)",
-       "history-feed-title": "De Versione",
+       "history-feed-title": "De Väsjohne",
        "history-feed-description": "Ähler Versione vun dä Wikisigg",
        "history-feed-item-nocomment": "$1 aam $3 öm $4 Uhr",
-       "history-feed-empty": "De aanjefrochte Sigg jitt et nit. Künnt sin, dat se enzwesche fottjeschmesse udder ömjenannt woode es. Kanns jo ens [[Special:Search|em Wiki söke looße]], öm de zopass, neu Sigge ze finge.",
+       "history-feed-empty": "De aanjefrochte Sigg jidd et nit. Künnt sin, dat se enzwesche fottjeschmeße udder ömjenannt woode es. Kanns jo ens [[Special:Search|em Wiki söhke looße]], öm de zopaß, neuje Sigge ze fenge.",
        "history-edit-tags": "Donn de Makehronge vun de ußjesöhk Väsjohne beärbeide",
        "rev-deleted-comment": "(„Koot Zosammejefass, Quell“ usjeblendt)",
        "rev-deleted-user": "(Metmaacher_Nahme ußjebländt)",
        "revdelete-selected-text": "Di ußjesöhk Väsjohn{{PLURAL:$1||e|}} vun [[:$2]]:",
        "revdelete-selected-file": "Di ußjesöhk Väsjohn{{PLURAL:$1||e|}} vun dä Dattei [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|Dä ußjewählte Logbohch_Endrach|De Ußjewählte Logbohch_Endrähsch|kein Logbohch_Endrähsch}}:",
-       "revdelete-text-text": "Fottjeschmeße Väsjohne blieve en dä Leß met de vörrije Väsjohne, ävver zom Deil kann de Öffentleschkeit nit mieh drop zohjriehfe.",
+       "revdelete-text-text": "Fottjeschmeße Väsjohne blieve en dä Leß met de vörrije Väsjohne, ävver zom Deil kann de Öffentleschkeit nit mih drop zohjrihfe.",
        "revdelete-text-file": "Fottjeschmeße Väsjohne vun Datteije blieve en dä Leß met de vörrije Väsjohne, ävver zom Deil kann de Öffentleschkeit nit mieh drop zohjriehfe.",
        "logdelete-text": "Fottjeschmeße Endrääsch en de Logbööscher blieve en dä Leß met de vörrije Väsjohne, ävver zom Deil kann de Öffentleschkeit nit mieh drop zohjriehfe.",
        "revdelete-text-others": "De Wiki_Kööbeße künne emmer noch drop zohjriefe un künne och wider för alle seeschbaa maache, wat jäz verschtoche es, esu lang wi kein äxtra Beschränkonge jemaat woodte.",
        "logdelete-success": "'''Dä Enndraach em Logbohch wood verschtoche udder seeschbaa jemaat.'''",
        "logdelete-failure": "'''Däm Enndraach em Logbohch sing Seeschbaakeit kunnte mer nit ändere:''' $1",
        "revdel-restore": "Verschteische udder seeschba maache",
-       "pagehist": "Älldere Versione",
-       "deletedhist": "Fottjeschmesse Versione",
+       "pagehist": "Älldere Väsjohne",
+       "deletedhist": "Fottjeschmeße Väsjohne",
        "revdelete-hide-current": "Ene Fähler es opjetodde beim Verschteische. De Version vum $1 öm $2 Uhr es de neuste Version, un kann dröm nit verschtoche wääde.",
        "revdelete-show-no-access": "Ene Fähler es opjetodde beim Aanloore. De Version vum $1 öm $2 Uhr es verschtoche, un De häß dröm keine Zohjang doh drop.",
        "revdelete-modify-no-access": "Ene Fähler es opjetodde beim Ändere. De Version vum $1 öm $2 Uhr es verschtoche, un De häß dröm keine Zohjang doh drop.",
        "mergehistory-empty": "Mer han kei Versione för zesammezeläje",
        "mergehistory-success": "{{PLURAL:$3|Ein Version es|$3 Versione sen|Kei Version wood}} fun „[[:$1]]“ noh „[[:$2]]“ övverdraare un domet zosamme jelaat.",
        "mergehistory-fail": "Dat Versione zesamme läje is nit müjjelisch. Don ens di Sigge un de Zigge pröfe!",
-       "mergehistory-fail-toobig": "Mieh wi {{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein Väsjohne}} wöödte zesamme jelaat. Esu vill künne mer nit, un maache mer nit.",
+       "mergehistory-fail-toobig": "Mih wi {{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein Väsjohne}} wöödte zesamme jelaat. Esu vill künne mer nit, un maache mer nit.",
        "mergehistory-no-source": "En Ursprungssigg „$1“ jidd_et nit.",
        "mergehistory-no-destination": "En Zielsigg „$1“ jidd_et nit.",
        "mergehistory-invalid-source": "De Ursprungssigg ier Name moß och ene reschtijje Siggetittel sin.",
        "mergehistory-same-destination": "De Quell-Sigg un de Ziel-Sigg dörve nit deselve Sigg sinn.",
        "mergehistory-reason": "Der Jrond:",
        "mergelog": "Logbohch fum Sigge zesamme Lähje",
-       "revertmerge": "Dat Zosammelääje widder retuur maache",
+       "revertmerge": "Dat Zosammelääje widder retuhr maache",
        "mergelogpagetext": "Dat heh es dat Logbohch fun de zesammejelaate Väsjohne fun Sigge",
        "history-title": "Älder Versione vun dä Sigg „$1“",
        "difference-title": "Ongerscheide zwesche Versione vun dä Sigg „$1“",
        "difference-title-multipage": "Ongerscheide zwesche dä Sigge „$1“ un „$2“",
        "difference-multipage": "(Ongerscheide zwesche Sigge)",
        "lineno": "Reih $1:",
-       "compareselectedversions": "Dun de markeete Version verjliche",
+       "compareselectedversions": "Dun de markehte Väsjohn verjliiche",
        "showhideselectedversions": "De ußjewählte Versione aanzeije udder vershteiche",
        "editundo": "De läzde Änderong zeröck nämme",
        "diff-empty": "(Keine Ongerscheid)",
        "diff-multi-sameuser": "(Mer don hee {{PLURAL:$1|eij Väsjohn|$1 Väsjohne|keij Väsjohn}} dozwesche nit zeije.   Se {{PLURAL:$1|es|sin|wöhr}} vum sällve Metmaacher)",
        "diff-multi-otherusers": "(Mer don hee {{PLURAL:$1|eij Väsjohn|$1 Väsjohne|keij Väsjohn}} dozwesche vun {{PLURAL:$2|einem|$2 ongerscheidlijje|keinem}} Metmaacher nit zeije)",
        "diff-multi-manyusers": "({{PLURAL:$1|Ein Version|$1 Versione|kei Version}} dozwesche vun mieh wi {{PLURAL:$2|einem Metmaacher|$2 Metmaachere|keinem Metmaacher}} wääde nit jezeish)",
-       "difference-missing-revision": "{{PLURAL:$2|Ein Version|$2 Versione}} vun heh däm Verjlisch zwesche Versione ($1) {{PLURAL:$2|hammer}} nit jefonge.\n\nEsu jät kütt för jewöhnlesch, wam_mer enem övverhollte Lengk ob der Ongerscheid zwesche de Versione vun en Sigg follesch, di zweschedren fottjeschmeße woode es.\nMieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbooch vum Sigge Fottschmiiße].",
+       "difference-missing-revision": "{{PLURAL:$2|Ein Version|$2 Versione}} vun heh däm Verjlisch zwesche Versione ($1) {{PLURAL:$2|hammer}} nit jefonge.\n\nEsu jät kütt för jewöhnlesch, wam_mer enem övverhollte Lengk ob der Ongerscheid zwesche de Versione vun en Sigg follesch, di zweschedren fottjeschmeße woode es.\nMih doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Logbooch vum Sigge Fottschmiiße].",
        "searchresults": "Wat beim Söke eruskom",
        "searchresults-title": "Noh „$1“ jesoht.",
        "titlematches": "Zopass Üvverschrefte",
        "search-category": "({{int:Category}} $1)",
        "search-file-match": "(en dä Dattei dren)",
        "search-suggest": "Häß De „$1“ jemeint?",
+       "search-rewritten": "Mer zeije wat för „$1“ eruß kohm.\nDonn anschtatt vun däm noh „$2“ söhke.",
        "search-interwiki-caption": "Schwesterprojekte",
        "search-interwiki-default": "Op $1 woodte heh di Träffer jefonge:",
        "search-interwiki-more": "(mih)",
        "prefs-editwatchlist-raw": "De Oppaßleß en rüh beärbeijde:",
        "prefs-editwatchlist-clear": "Donn Ding Oppaßleß läddesch maache",
        "prefs-watchlist-days": "Aanzahl Dähsch för en ming Oppaßleß aanzezeije:",
-       "prefs-watchlist-days-max": "Nit mieh wie {{PLURAL:$1|eine Daach|$1 Dääch|keine Daach}}",
+       "prefs-watchlist-days-max": "Nit mih wie {{PLURAL:$1|eine Daach|$1 Dääch|keine Daach}}",
        "prefs-watchlist-edits": "Aanzahl Änderonge för en minge verjrößerte Oppaßleß aanzezeije:",
        "prefs-watchlist-edits-max": "Nit mih wie 1000",
        "prefs-watchlist-token": "Oppaßleß_Kännzeijsche:",
        "prefs-rendering": "Et Sigge-Aanzeije",
        "saveprefs": "Faßhalde",
        "restoreprefs": "Donn en alle Afschnedde alles op der Schtandatt retuur schtälle",
-       "prefs-editing": "Beim Bearbeide",
+       "prefs-editing": "Beim Beärbeijde",
        "rows": "Reihe:",
        "columns": "Spalte:",
        "searchresultshead": "Beim Söhke",
-       "stub-threshold": "Lengks  zopaß för <a href=\"#\" class=\"stub\">klein Sigge</a> fomatehre av esu vill Bytes:",
+       "stub-threshold": "Lengks zopaß för <a href=\"#\" class=\"stub\">klein Sigge</a> fomatehre av esu vill <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">Bytes</i>:",
        "stub-threshold-disabled": "Ußjeschalldt",
        "recentchangesdays": "de Aanzahl Dähsch en de Leß met de „Neuste Änderonge“ — als Standatt:",
-       "recentchangesdays-max": "(Nit mieh wie {{PLURAL:$1|eine Daach|$1 Dääsh|keine Daach}})",
+       "recentchangesdays-max": "(Nit mih wie {{PLURAL:$1|eine Daach|$1 Dääsh|keine Daach}})",
        "recentchangescount": "Aanzahl Änderonge en de Leß, als Schtandad:",
        "prefs-help-recentchangescount": "Dat ömfaß de „{{int:recentchanges}}“, de Versione uß de Fojangeheit, un de Logbööcher.",
        "prefs-help-watchlist-token2": "Dat heh es dä jeheime Schlößel för dä <i lang=\"en\" xml:lang=\"en\">Atom</i>- udder <i lang=\"en\" xml:lang=\"en\">RSS</i>-Kanaal met de Änderonge aan Sigge en Dinger Oppaßleß\nWä dä kännt, kann Ding Oppaßleß lässe, alsu halld_en för Desch.\nDo kann Der [[Special:ResetTokens|ene neue Schlößel maache lohße]], wann nüüdesch.",
        "badsig": "Di Ungeschreff jëijd_esu nit — luer noh dem HTML do_dren un maach et rėshtėsh.",
        "badsiglength": "Ding „Ungerschref“ es zoo lang. Et dörve nit nieh wi {{PLURAL:$1|eij|$1|keij}} Zeische do dren sin.",
        "yourgender": "Wi wells De, dat et Wiki övver Desch kalle deiht:",
-       "gender-unknown": "Wann övver Desch jeschwadt weed, dann der ohne dorschbleck ze lohße, ov Kääl udder Weesch bes, esu wi: „dä Metmaacher Su-wi-De-heiß schriiv em Wiki met.“",
+       "gender-unknown": "Wann övver Desch jeschwahdt weed, dann der ohne dorschblecke ze lohße, ov de ene Kääl udder e Weesch bes, esu wi: „dä Metmaacher Su-wi-De-heijß schrihv em Wiki met.“",
        "gender-male": "Dä Su-wi-De-heiß schriiv och em Wiki met.",
        "gender-female": "Dat Su-wi-De-heiß schriiv heh em Wiki met.",
        "prefs-help-gender": "* Moß mer nit aanjävve, un dat kritt de janne Welt ze sinn, nit nur Do allein.",
        "userrights-unchangeable-col": "{{PLURAL:$1:Di Jropp|Jroppe|kein Jropp doh}}, di De nit ändere kanns",
        "userrights-irreversible-marker": "$1 *",
        "userrights-conflict": "Ene Andere hät di Rääschde ald verändert. Loor, wad_eruß kohm un versöhg_et norr_ens, wann nüüdesch.",
-       "userrights-removed-self": "Do häs Dng Rääsch dohzoh jraad drannjejovve, dröm kanns De heh di Sigg nit mieh oproofe.",
+       "userrights-removed-self": "Do häs Ding Rääsch dohzoh jraad drannjejovve, dröm kanns De heh di Sigg nit mih oprohfe.",
        "group": "Jropp:",
        "group-user": "Metmaacher",
        "group-autoconfirmed": "Bestätichte Metmaacher",
        "group-bot": "Bots",
        "group-sysop": "Wiki-Köbesse",
-       "group-bureaucrat": "Bürrokrade",
+       "group-bureaucrat": "Bürrokrahde",
        "group-suppress": "Kontrollettis",
        "group-all": "(jeede)",
        "group-user-member": "{{GENDER:$1|Metmaacher|Metmaacherėn}}",
        "grouppage-autoconfirmed": "{{ns:project}}:Bestätichte Metmaacher",
        "grouppage-bot": "{{ns:project}}:Bots",
        "grouppage-sysop": "{{ns:project}}:Wiki Köbes",
-       "grouppage-bureaucrat": "{{ns:project}}:Bürrokrad",
+       "grouppage-bureaucrat": "{{ns:project}}:Bürrokrahd",
        "grouppage-suppress": "{{ns:project}}:Kontrolletti",
        "right-read": "Sigge lesse",
        "right-edit": "Sigge ändere",
        "right-deleterevision": "Einzel Versione fun Sigge fottschmiiße un zeröck holle",
        "right-deletedhistory": "Fottjeschmeße Versione vun Sigge opleßte lohße — dat zeich ävver nit der Tex aan",
        "right-deletedtext": "Fotjeschmeße Täx un Ungerscheid zwesche de verschtoche Versione aanloore",
-       "right-browsearchive": "Noh fottjeschmesse Sigge söke",
+       "right-browsearchive": "Noh fottjeschmeße Sigge söhke",
        "right-undelete": "Fottjeschmeße Sigge widder zeröck holle",
        "right-suppressrevision": "Väsjohne vun Sigge belohre, verschteische, un zeröck holle, di sujaa för de Wiki-Köhbeße verschtoche sin",
        "right-viewsuppressed": "Beloor de Väsjohne, di vun jeedem verschtoche sin.",
        "right-hideuser": "Ene Metmaacher sperre un em singe Name versteiche",
        "right-ipblock-exempt": "Es ußjenomme vun automatesche Sperre, vun Sperre fun IP-Adresse, un vun Sperre vun Bereiche vun IP-Adresse",
        "right-proxyunbannable": "Es ußjenomme fun automatische Sperre fun Proxy-Servere",
-       "right-unblockself": "Retuur nämme, wam_mer sellver jesperrt woode es",
+       "right-unblockself": "Retuhr nämme, wam_mer sellver jesperrt woode es",
        "right-protect": "Sigge schöze, jeschözde Sigge änndere, un der iere Schoz widder ophevve",
        "right-editprotected": "Sigge ändere, di met „{{int:protect-level-sysop}}“ jezöz sin",
        "right-editsemiprotected": "Sigge met däm Schoz „{{int:protect-level-autoconfirmed}}“ ändere",
        "right-viewmyprivateinfo": "ding eije päsöhnlesche Dahte belohre, wi de Adräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i> udder Dinge ääschte Nahme",
        "right-editmyprivateinfo": "ding eije päsöhnlesche Dahte ändere, wi de Adräß för de <i lang=\"en\" xml:lang=\"en\">e-mail</i> udder der ääschte Nahme",
        "right-editmyoptions": "De eije Enschtällonge ändere",
-       "right-rollback": "All de letzte Änderunge fom letzte Metmaacher aan ene Sigg retur maache",
-       "right-markbotedits": "Retur jemahte Änderonge als Bot_Änderong makkehre",
+       "right-rollback": "All de letzte Ännderonge vum läzde Metmaacher aan ene Sigg retuhr maache",
+       "right-markbotedits": "Retuhr jenumme Ännderonge als Ännderonge vun Bots makkehre",
        "right-noratelimit": "Kein Beschränkonge dorsch Jränze (<i lang=\"en\">[http://www.mediawiki.org/wiki/Manual:%24wgRateLimits $wgRateLimits]</i>)",
        "right-import": "Sigge uß ander Wikis empochteere",
        "right-importupload": "Sigge övver et <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Extensible Markup Language\">XML</i>-Dattei-Huhlahde empotteere",
        "action-movefile": "Di Dattei ömnänne",
        "action-upload": "heh di Dattei huhzelahde",
        "action-reupload": "hee di Dattei, di et ald jitt, ußzetuusche",
-       "action-reupload-shared": "hee di Datei „för“ di ze säze, di et en de jemeinsame Biblijoteek ald jitt",
+       "action-reupload-shared": "heh di Datei „för“ di ze säze, di et en dä jemeinsamme Biblijoteek ald jitt",
        "action-upload_by_url": "heh di Dattei fun en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Uniform Ressource Locator\">URL</i> erövver träke ze lohße",
        "action-writeapi": "dat API zom Schriive ze bruche",
        "action-delete": "heh di Sigg fottzeschmiiße",
        "action-suppressionlog": "heh dat jeheime Logbohch aanzelohre",
        "action-block": "hee dämm Metmaacher et Sigge Ändere ze verbeede",
        "action-protect": "hee dä Sigg iere Sigge-Schotz ze ändere",
-       "action-rollback": "all de letzte Änderunge fom letzte Metmaacher aan ene beshtemmpte Sigg flöck retur ze maache",
+       "action-rollback": "all de läzde Ännderonge vum läzde Metmaacher aan ene beschtemmpte Sigg flöck retuur ze maache",
        "action-import": "Sigge uss_enem andere Wiki ze empotteere",
        "action-importupload": "Sigge uss_ene huhjelaade Dattei ze empotteere",
        "action-patrol": "anderlüx Änderonge als „nohjelohrt“ ze makkehre",
        "rcshowhidemine-hide": "verschteihsche",
        "rclinks": "Zeisch de läzde {{int:pipe-separator}}$1{{int:pipe-separator}} Änderonge us de läzde {{int:pipe-separator}}$2{{int:pipe-separator}} Däch, un dun {{int:pipe-separator}} $3.",
        "diff": "Ongerscheid",
-       "hist": "Versione",
+       "hist": "Väsjohne",
        "hide": "Ußblände!",
        "show": "Zeije:",
        "minoreditletter": "M",
        "boteditletter": "B",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|eine|$1|kein}} Oppasser]",
-       "rc_categories": "Nor de Saachjroppe (met „|“ dozwesche):",
-       "rc_categories_any": "All, wat mer han",
+       "rc_categories": "Bejränz op de Saachjroppe (schrihv „|“ dozwesche):",
+       "rc_categories_any": "Öhndseijne vun dä aanjejovve Saachjroppe",
        "rc-change-size": "$1 {{PLURAL:$1|Byte|Bytes}}",
        "rc-change-size-new": "$1 {{PLURAL:$1|Byte|Bytes|Bytes}} noh dem Ändere",
        "newsectionsummary": "Neu Avschnet /* $1 */",
        "upload-description": "Övver di Dattei",
        "upload-options": "Ennschtällonge för et Laade",
        "watchthisupload": "Op di Dattei oppaßße",
-       "filewasdeleted": "Onger däm Nahme wohd ald ens en Dattei huhjelahde. Di es enzwesche ävver widder fottjeschmesse woode. Luhr leever eets ens en et $1 ih dat De se dann avschpeischere deihs.",
+       "filewasdeleted": "Onger däm Nahme wohd ald ens en Dattei huhjelahde. Di es enzwesche ävver widder fottjeschmeße woode. Luhr leever eets ens en et $1 ih dat De se dann avschpeischere deihs.",
        "filename-bad-prefix": "Dä Datei ier Name fängk met '''„$1“''' aan. dat eß fä jewöhnlesch ene Name, dä en dijjitaale Kammerra iere Belder jitt. Esu en Name donn uns esu winnisch verzälle, dat mer se nit jän em Wiki han wulle.\nBes esu joot un jiff dä enne Name, wo mer mieh met aanfange, öm ze wesse, wat en dä Datei dren es.",
        "filename-prefix-blacklist": " #<!-- Lohß di Reih jenou esu wie se es! --> <pre>\n#  Syntax:\n#   * Alles zwesche em #-Zeiche bes nohm Engk vun de Reih es ene Kommäntaa\n#   * Jede Reih met jet dren es ene typpesche Aanfang för ene Datteiname,\n#   * dä automattesch vun ene Dijjitahlkammera kütt\nCIMG # Casio\nDSC_ # Nikon\nDSCF # Fuji\nDSCN # Nikon\nDUW # - et ein udder andere mobile Tellefohn -\nIMG # - alljemein üplesch -\nJD # Jenoptik\nMGP # Pentax\nPICT # - diverse -\n #</pre> <!-- Lohß di Reih jenou esu wie se es! -->",
        "upload-success-subj": "Et Huhlade hät jeflupp",
        "upload-too-many-redirects": "Zoh vill Ömleitunge en däm <i lang=\"en\">URL</i>",
        "upload-http-error": "Ene <i lang=\"en\">HTTP</i>-Fäähler es opjetrodde: $1",
        "upload-copy-upload-invalid-domain": "Fun dä Domain künne mer nix noh heh huh laade. Di es nit zohjelohße.",
+       "upload-dialog-title": "Dateij huhlahde",
+       "upload-dialog-error": "Ene Fähler es opjetrodde",
+       "upload-dialog-button-cancel": "Ophühre!",
+       "upload-dialog-button-done": "Jedonn",
+       "upload-dialog-button-save": "Faßhalde",
+       "upload-dialog-button-upload": "Lohß Jonn!",
+       "upload-dialog-label-select-file": "De ußjesöhk Dattei",
+       "upload-dialog-label-infoform-title": "Eijnzelheijte",
+       "upload-dialog-label-infoform-name": "Nahme",
+       "upload-dialog-label-usage-filename": "Dä Dattei iehre Nahme",
        "backend-fail-stream": "Mer kunnte di Dattei $1 nit övverdraare.",
        "backend-fail-backup": "Mer kunnte kein Sescherongskopih vun dä Dattei $1 maache.",
        "backend-fail-notexists": "En Dattei $1 jidd et nit.",
        "backend-fail-alreadyexists": "En Dattei $1 jidd et ald.",
        "backend-fail-store": "Mer kunnte di Dattei $1 nit onger $2 affschpeischere.",
        "backend-fail-copy": "Mer kunnte di Dattei $1 nit noh $2 koppėėere.",
-       "backend-fail-move": "Mer kunnte di Dattei $1 nit op $2 ömdäufe.",
+       "backend-fail-move": "Mer kunnte di Dattei „$1“ nit op „$2“ ömdäufe.",
        "backend-fail-opentemp": "Mer kunnte de Zweschedattei no opmaache.",
        "backend-fail-writetemp": "Mer kunnte nit en de Zweschedattei schriive.",
        "backend-fail-closetemp": "Mer kunnte de Zweschedattei no zohmaache.",
        "filepage-nofile-link": "Et jit kein Datei met dämm Nahme, ävver De kanns se [$1 huhlaade].",
        "uploadnewversion-linktext": "Dun en neuj väsjohn vun dä Dattei huhlahde",
        "shared-repo-from": "uß $1",
-       "shared-repo": "ene jemeinsame Beshtand",
+       "shared-repo": "ene jemeinsamme Beschtand",
        "shared-repo-name-wikimediacommons": "Wikkimeedija Commons",
        "filepage.css": "/* Heh dat CSS küdd op Sigge övver Dateije, och di vun ander Wikis jehollt woode sin. */",
        "upload-disallowed-here": "Do kanns heh di Dattei nit övverschriive.",
        "filedelete-submit": "Fottschmieße",
        "filedelete-success": "'''„$1“''' es fottjeschmeße.",
        "filedelete-success-old": "Fun dä Datei '''„[[Media:$1|$1]]“''' es jäz di Version fum $2 öm $3 Uhr fottjeschmeße woode.",
-       "filedelete-nofile": "„$1“''' jidd_et nit.",
+       "filedelete-nofile": "<strong>$1</strong> jidd_et nit.",
        "filedelete-nofile-old": "Fun '''„$1“''' ham_mer kein arschiveete Version met dä Eijeschaffte.",
        "filedelete-otherreason": "Ander Jrund oder Zosätzlich:",
        "filedelete-reason-otherlist": "Ne andere Jrund",
        "allpages-hide-redirects": "Ömleidonge fott lohße",
        "cachedspecial-viewing-cached-ttl": "Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.",
        "cachedspecial-viewing-cached-ts": "Dat heh küdd ussem Zewescheschpeischer un nünnt nidd om neuste Schtand sin.",
-       "cachedspecial-refresh-now": "De neuste Version.",
+       "cachedspecial-refresh-now": "De neuste Väsjohn.",
        "categories": "Saachjroppe",
        "categoriespagetext": "Heh {{PLURAL:$1|es nur en Saachjropp|sin nur Saachjroppe|es kein Saachjropp}} jeleß, woh jät dren {{PLURAL:$1|es|es|wöhr}}. Mer han_er eije Leßte för de\n[[Special:UnusedCategories|Saachjropp met nix dren]], un de\n[[Special:WantedCategories|jewönschte un nit aanjelaate Saachjroppe]].",
        "categoriesfrom": "Zeijsch Saachjroppe vun heh af:",
        "special-categories-sort-count": "Zoteere noh de Aanzahl",
        "special-categories-sort-abc": "Zoteere nohm Alphabett",
-       "deletedcontributions": "Fottjeschmesse Versione",
-       "deletedcontributions-title": "Fottjeschmesse Versione",
+       "deletedcontributions": "Fottjeschmeße Väsjohne",
+       "deletedcontributions-title": "Fottjeschmeße Väsjohne",
        "sp-deletedcontributions-contribs": "Beijdrääsch",
        "linksearch": "Lėngkß noh ußerhallef söhke",
        "linksearch-pat": "Sök noh:",
        "listgrouprights-group": "Jropp",
        "listgrouprights-rights": "Räächte",
        "listgrouprights-helppage": "Help:Jrupperäächte",
-       "listgrouprights-members": "(opliste)",
+       "listgrouprights-members": "(oplte)",
        "listgrouprights-addgroup": "Metmaacher en {{PLURAL:$2|de Metmaacher-Jropp|de Metmaacher-Jroppe|kein Metmaacher-Jropp}} $1 erin donn",
        "listgrouprights-removegroup": "Metmaacher us {{PLURAL:$2|dä Metmaacher_Jropp|de Metmaacher_Jroppe|jaa kei Metmaacher_Jropp}} $1 eruß nämme",
        "listgrouprights-addgroup-all": "Metmaacher en alle Metmaacher-Jroppe erin donn",
        "trackingcategories-name": "Dä Nohreesch udder däm Täxschtöck singe Nahme",
        "trackingcategories-desc": "Bedengonge för enjeschloße ze sin",
        "noindex-category-desc": "Di Sigg sull vun de Wäbkrauler Robots un de Söhkmaschihne nit opjenumme wähde, weil dat Zauberwoot <code><nowiki>__NOINDEX__</nowiki></code> dren schteiht un se en enem Appachemang es, woh dat zohjelohße es.",
-       "index-category-desc": "Di Sigg sull vun de Wäbkrauler Robots un de Söhkmaschihne opjenumme wähde, weil dat Zauberwoot <code><nowiki>__INDEX__</nowiki></code> dren schteiht un se en enem Appachemang es, woh dat zohjelohße es, un wat nommahlerwies nit vun de Robots dorschsöhk weed.",
+       "index-category-desc": "Di Sigg sull vun de Wäbkrauler Robots un de Söhkmaschihne opjenumme wähde, weil dat Zauberwoot <code><nowiki>__INDEX__</nowiki></code> dren schteiht un se en enem Appachemang es, woh dat zohjelohße es, un wat nommahlerwihs nit vun de Robots dorschsöhk weed.",
        "post-expand-template-inclusion-category-desc": "Nohdämm a paa Schablohne enjesaz woode sen, hät di Sigg mieh Dahte wi <code xml:lang=\"en\" lang=\"en\">$wgMaxArticleSize</code> zohlöhß. Et sin nit alle Oprohve vun Schablohne opjelöhß.",
        "post-expand-template-argument-category-desc": "Di Sigg hät mieh Dahte wi <code xml:lang=\"en\" lang=\"en\">$wgMaxArticleSize</code> zohlöhß, nohdämm dä Wäät för ene Parramehter — jät met drei jeschweifte Klammere drömeröm, wi <code>{{{Dengenskersche}}}</code> — enjesaz woode es.",
        "expensive-parserfunction-category-desc": "Di Sigg hät zoh vill düüre Befähle met Pahserfonxjuhne, för e Beijschpell esu jät, wi <code xml:lang=\"en\" lang=\"en\">#ifexist</code>. Mih doh drövver schteihd em [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Handbohch].",
        "watchlistanontext": "Do moß enlogge, domet de en Ding Oppaßleß erenluhre kanns, oder jät drahn änndere.",
        "watchnologin": "Nit enjelogg",
        "addwatch": "En de Oppaßleß don",
-       "addedwatchtext": "Di Sigg „[[:$1]]“ es jetz en Dinge [[Special:Watchlist|Oppaßleß]].\nWann di Sigg udder ier Klaafsigg verändert weed, kütt dat af jäz heh en di Oppaßleß.",
+       "addedwatchtext": "Di Sigg „[[:$1]]“ un dä ier Klaafsigg sin jäz en Dinge [[Special:Watchlist|Oppaßleß]].",
        "addedwatchtext-short": "De Sigg  „$1“ es en Ding Oppaßleß openumme.",
        "removewatch": "Us de Oppaßleß nämme",
-       "removedwatchtext": "Di Sigg „[[:$1]]“ es jäz us de [[Special:Watchlist|Oppaßless]] erusjenomme.",
+       "removedwatchtext": "Di Sigg „[[:$1]]“ n di Klaafsigg derzoh sin jäz us Dinge [[Special:Watchlist|Oppaßless]] erusjenomme.",
        "removedwatchtext-short": "De Sigg  „$1“ es uß Dinge Oppaßleß eruß jenumme.",
        "watch": "Drobb oppaßße",
        "watchthispage": "Op di Sigg oppaßße",
        "unwatch": "Nimeh drobb oppaßße",
        "unwatchthispage": "Nit mih op di Sigg oppaßße",
        "notanarticle": "Keine Atikkel",
-       "notvisiblerev": "Di Version es fottjeschmesse",
+       "notvisiblerev": "Di Väsjohn es fottjeschmeße",
        "watchlist-details": "Do häß {{PLURAL:$1|ein Sigg|$1 Sigge|kein Sigg}} en Dinge Oppaßleß{{PLURAL:$1|, un di Klaafsigg dohzoh|, un de Klaafsigge dohzoh|}}.",
        "wlheader-enotif": "Et <i lang=\"en\">e-mail</i> Schecke es enjeschalt.",
        "wlheader-showupdated": "Wann se Einer jeändert hätt, zickdäm De se et letzte Mol aanjeluurt häs, sin di Sigge <strong>extra markeet</strong>.",
        "enotif_lastvisited": "Lohr onger „$1“ - doh fengks de all di Ännderonge zigg Dingem läzde Besohch heh.",
        "enotif_lastdiff": "Loor op $1 för heh di Änderong aan_ze_lohre.",
        "enotif_anon_editor": "Dä namelose Metmaacher $1",
-       "enotif_body": "Leeven $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n{{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT\n\nDo kanns dä Metmaacher „$PAGEEDITOR“ aanschpräsche:\n* Övver e-mail: $PAGEEDITOR_EMAIL\n* Em Wiki: $PAGEEDITOR_WIKI\n\nDo kreß vun jetz aan kein e-mail mieh, bes dat Do\nDer di Sigg aanjeluurt häs wann De enjelogg bes,\noch wann se norr_ens verändert weed. Do kanns ävver\noch all di Märker för e-mail för di Sigge en Dinger\nOppaßleß op eimohl ändere.\n\nEne schöne Jrohß {{GRAMMAR:vun|{{SITENAME}}}}.\n\n-- \nÖm de Enschtällonge för Nohreeschte aan Desch ze ändere,\njangk op:\n{{canonicalurl:{{#special:Preferences}}}}\n\nDo kanns heh Ding Oppaßleß ändere:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nÖm di Sigg vun Dinger Oppaßleß ze schmieße:\n$UNWATCHURL\n\nDo kanns heh noh Hölp luhre:\n$HELPPAGE",
+       "enotif_body": "Leeven $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\n{{int:summary}} „$PAGESUMMARY“ $PAGEMINOREDIT\n\nDo kanns dä Metmaacher „$PAGEEDITOR“ aanschpräsche:\n* Övver e-mail: $PAGEEDITOR_EMAIL\n* Em Wiki: $PAGEEDITOR_WIKI\n\nDo kreß vun jetz aan kein e-mail mih, bes dat Do\nDer di Sigg aanjeluurt häs wann De enjelogg bes,\noch wann se norr_ens verändert weed. Do kanns ävver\noch all di Märker för e-mail för di Sigge en Dinger\nOppaßleß op eimohl ändere.\n\nEne schöne Jrohß {{GRAMMAR:vun|{{SITENAME}}}}.\n\n-- \nÖm de Enschtällonge för Nohreeschte aan Desch ze ändere,\njangk op:\n{{canonicalurl:{{#special:Preferences}}}}\n\nDo kanns heh Ding Oppaßleß ändere:\n{{canonicalurl:{{#special:EditWatchlist}}}}\n\nÖm di Sigg vun Dinger Oppaßleß ze schmiiße:\n$UNWATCHURL\n\nDo kanns heh noh Hölp luhre:\n$HELPPAGE",
        "created": "neu aanjelaht",
        "changed": "jeändert",
        "deletepage": "Schmiiß di Sigg jäz fott",
        "rollback": "Em Läzde sing Änderonge zeröcknämme",
        "rollbacklink": "All dem Läzde sing Änderonge zeröckdrihje",
        "rollbacklinkcount": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Kein Änderonge}} schtantepee retuur nämme",
-       "rollbacklinkcount-morethan": "{{PLURAL:$1|Mieh wi ein Änderong|Övver $1 Änderonge|Kein Änderonge}} schtantepee retuur nämme",
+       "rollbacklinkcount-morethan": "{{PLURAL:$1|Mih wi ein Änderong|Övver $1 Änderonge|Kein Änderonge}} schtantepee retuur nämme",
        "rollbackfailed": "Dat Zeröcknemme jingk scheiv",
        "cantrollback": "De läzde Änderong zeröckzenemme es nit müjjelich. Dä läzde Schrihver es dä eijnzeje, dä aan dä Sigg heh jht jedonn hät!",
        "alreadyrolled": "Mer künne de letzte Änderonge vun dä Sigg „[[:$1]]“ vum Metmaacher „[[User:$2|$2]]“ ([[User talk:$2|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) nimieh zeröcknemme, dat hät ene Andere enzwesche ald jedon, udder de Sigg ömjeändert.\n\nDe Neuste Änderong aan dä Sigg es jetz vun däm Metmaacher „[[User:$3|$3]]“ ([[User talk:$3|Klaaf]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
        "editcomment": "Bei dä Änderong schtundt: „''$1''“.",
-       "revertpage": "Änderunge vun däm Metmaacher „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|däm sing Klaafsigg]]) fottjeschmesse, un doför de letzte Version vum „[[User:$1|$1]]“ widder zeröckjehollt",
+       "revertpage": "Änderunge vun däm Metmaacher „[[Special:Contributions/$2|$2]]“ ([[User talk:$2|däm sing Klaafsigg]]) fottjeschmeße, un doför de lätzde Väsjohn vum „[[User:$1|$1]]“ widder zeröckjehollt",
        "revertpage-nouser": "Änderunge vun enem Metmaacher, däm singe Name vershtoche es, retuur jemaat op de letzte Version {{GENDER:$1|vum|vum|vumm Metmaacher|vun dä|vum}} [[User:$1|$1]]",
        "rollback-success": "De Änderungen vum $1 zeröckjenumme, un dobei de letzte Version vum $2 widder jehollt.",
        "sessionfailure-title": "Fähler met dä Daate vum Enlogge",
        "sessionfailure": "Et jov wall e täschnesch Problehm met Dingem Login. Dröm ham_mer dat us Vörseesch jäz nix jemaht, domet mer nit velleich Ding Änderong däm verkihrte Metmaacher ongerjubele. Jangk zeröck un versöhk et noch ens.",
        "changecontentmodel-title-label": "Dä Sigg ier Övverschreff",
        "changecontentmodel-reason-label": "Der Jrond:",
-       "changecontentmodel-title-cantexist": "Mer kann kein  Sigge en $1 aanlähje.",
        "logentry-contentmodel-change-revertlink": "retuhr_nämme",
        "logentry-contentmodel-change-revert": "retuhr_nämme",
        "protectlogpage": "Logbohch vum Sigge Schötze",
        "restriction-level-autoconfirmed": "nur aanjemeldte Metmaacher, di ald en Zick dobei sin",
        "restriction-level-all": "jeede",
        "undelete": "Fottjeschmessene Krom aanluure odder zeröck holle",
-       "undeletepage": "Fottjeschmesse Sigge aanluure un widder zeröckholle",
+       "undeletepage": "Fottjeschmeße Sigge aanluure un widder zeröckholle",
        "undeletepagetitle": "'''He dat sin de fottjeschmeße Versione fun [[:$1|$1]]'''",
-       "viewdeletedpage": "Fottjeschmesse Sigge aanzeije",
-       "undeletepagetext": "{{PLURAL:$1|De Sigg heenoh es|De $1 Sigge heenoh sin|De 0 Sigge heenoh sin}} fottjeschmesse, mer künne se ävver immer noch usem Müllemmer eruskrose.",
+       "viewdeletedpage": "Fottjeschmeße Sigge aanzeije",
+       "undeletepagetext": "{{PLURAL:$1|De Sigg hehnoh es|De $1 Sigge hehnoh sin|De 0 Sigge hehnoh sin}} fottjeschmeße, mer künne se ävver immer noch uss_em Möllämmer eruskrohse.",
        "undelete-fieldset-title": "Versione zeröck holle",
        "undeleteextrahelp": "Öm de janze Sigg met all ehre Versione widder ze holle, looß all de Versione ohne Hökche, un klick op „<strong  style=\"padding:2px; background-color:#ddd; color:black\">{{int:Undeletebtn}}</strong>“.<br />\nÖm bloß einzel Väsjohne zeröckzeholle, maach Hökche aan di Väsjohne, di De widder han wells, un dann dun „<strong style=\"padding:2px; background-color:#ddd; color:black\">{{int:Undeletebtn}}</strong>“ kleke.<br />\nOp „<strong style=\"padding:2px; background-color:#ddd; color:black\">{{int:Undeletereset}}</strong>“\nkleks De, wann De all Ding Höhksche un Ding „{{int:Undeletecomment}}“ widder fott han wells.",
-       "undeleterevisions": "{{PLURAL:$1|Ein Version|<strong>$1</strong> Versione|<strong>Kein</strong> Version}} en et Archiv jedon",
-       "undeletehistory": "Wann De di Sigg widder zeröckhölls,\ndann kriss De all de fottjeschmesse Väsjohne widder.\nWann enzwesche en neu Sigg unger däm ahle Nahme enjereesch woode es, dann wähde de zeröckjehollte Väsjohne einfach als zohsätzlije äldere Väsjohne för di neu Sigg ennjereesch. Di neuje Sigg weed nit äsäz.",
+       "undeleterevisions": "{{PLURAL:$1|Ein Version|<strong>$1</strong> Versione|<strong>Kein</strong> Version}} fott jenumme.",
+       "undeletehistory": "Wann De di Sigg widder zeröckhölls,\ndann kriss De all de fottjeschmeße Väsjohne widder.\nWann enzwesche en neu Sigg onger däm ahle Nahme enjereesch woode es, dann wähde de zeröckjehollte Väsjohne einfach als zohsätzlije äldere Väsjohne för di neu Sigg ennjereesch. Di neuje Sigg weed nit äsäz.",
        "undeleterevdel": "Dat Zeröckholle flupp nit, wann de neuste Väsjohn verschtoche es udder verschtoche Aandeile do dren sin. En esu en Fäll darrf de neuste Väsjohn kei Höhksche krijje, udder se moß eets ens en en nommahle Väsjohn ömjewandelt wääde, di nit mih verschtoche es.",
-       "undeletehistorynoadmin": "Di Sigg es fottjeschmeße woode. Dä Jrund döför es en de Liss unge ze finge, jenau esu wie de Metmaacher, wo de Sigg verändert han, ih dat se fottjeschmesse wood. Wat op dä Sigg ehre fottjeschmesse ahle Versione stundt, dat künne nor de Wiki-Köbesse noch aansinn (un och widder zeröckholle)",
+       "undeletehistorynoadmin": "Di Sigg es fottjeschmeße woode. Dä Jrond döför es en dä Leß onge ze fenge, jenau esu wi de Metmaacher, di di  Sigg verändert han, ih dat se fottjeschmeße wood. Wat op dä Sigg ehre fottjeschmeße ahle Väsjohne schtundt, dat künne blohß de Wiki-Köbeße noch aansinn, un och widder zeröckholle.",
        "undelete-revision": "Fottjeschmeße Version fun dä Sigg „$1“ fum $4 öm $5 Uhr, et letz jeändert fum $3:",
-       "undeleterevision-missing": "De Version stemmp nit. Dat wor ene verkihrte Link, oder de Version wood usem Archiv zeröck jehollt, oder fottjeschmesse.",
+       "undeleterevision-missing": "De Väsjohn schtemmp nit. Dat wor ene verkihrte Lengk, udder di Väsjohn wood uss_em Aschihf zeröck jehollt, udder fottjeschmeße.",
        "undelete-nodiff": "Mer han kei ällder Version jefonge.",
        "undeletebtn": "Zeröckholle!",
        "undeletelink": "aanloore odder widder zeröckholle",
        "undeletedfiles": "{{PLURAL:$1|Ein Datei|<strong>$1</strong> Dateie|<strong>Kein</strong> Dateie}} zeröckjehollt",
        "cannotundelete": "<strong>Dä.</strong> Et Zeröckholle jing donävve.\n\n$1",
        "undeletedpage": "<strong>De Sigg „$1“ es jetz widder do</strong>\nLuur Der et [[Special:Log/delete|Logbohch met de fottjeschmeße Sigge]] aan, do häs De de Neuste fottjeschmeße un widder herjehollte Sigge.",
-       "undelete-header": "Loor Der [[Special:Log/delete|{{LCFIRST:{{int:deletionlog}}}}]] aan, doh fengks De de och neulesch fottjeschmesse Sigge.",
-       "undelete-search-title": "Noh fottjeschmesse Sigge söke",
-       "undelete-search-box": "Noh fottjeschmesse Sigge söke",
+       "undelete-header": "Loor Der [[Special:Log/delete|{{LCFIRST:{{int:deletionlog}}}}]] aan, doh fengks De de och neulesch fottjeschmesße Sigge.",
+       "undelete-search-title": "Noh fottjeschmeße Sigge söhke",
+       "undelete-search-box": "Noh fottjeschmeße Sigge söhke",
        "undelete-search-prefix": "Zeisch Sigge, di aanfange met:",
        "undelete-search-submit": "Söhke",
        "undelete-no-results": "Mer han em Aschiif kei Sigg, wo dä Bejreff drop paß, womet De am Söke beß.",
        "undelete-error": "Ene Fähler es opjetrodde beim Zerökholle",
        "undelete-error-short": "Fähler beim Zerökholle fun dä Dattei $1",
        "undelete-error-long": "Mer wollte en Datei widder zeröckholle, ävver dobei sin_er Fääler opjefalle:\n\n$1",
-       "undelete-show-file-confirm": "Wells De dä Datei „<nowiki>$1</nowiki>“ ier fottjeschmesse Version vum $2 öm $3 Uhr verhaftesch sinn?",
+       "undelete-show-file-confirm": "Wells De dä Dattei „<nowiki>$1</nowiki>“ ier fottjeschmeße Väsjohn vum $2 öm $3 Uhr verhaftesch sinn?",
        "undelete-show-file-submit": "Jo",
        "namespace": "Appachtemang:",
        "invert": "don di Ußwahl ömdrihje",
        "namespace_association": "mem zohjehühreje Appachtemang",
        "tooltip-namespace_association": "Maach e Höhksche, öm dat Appachtemang, wat zom ußjewählte Appachtemang doh zohjehööt — entweeder de Klaafsigge udder de nomaale Sigge — zohsäzlesch ußzewähle.",
        "blanknamespace": "(Atikkele)",
-       "contributions": "{{GENDER:$1|Däm Metmaacher|Däm|Däm Metmaacher|Dä Metmaacherėn|Däm}} $1 {{GENDER:$1|singe|singe|singe|iere|singe}} Beidrähsch",
-       "contributions-title": "Beidrähsch fum  $1",
+       "contributions": "{{GENDER:$1|Däm Metmaacher|Däm|Däm Metmaacher|Dä Metmaacherėn|Däm}} $1 {{GENDER:$1|singe|singe|singe|iere|singe}} Beijdrähsch",
+       "contributions-title": "Beijdrähsch fum $1",
        "mycontris": "Beidrähch",
        "contribsub2": "För {{GENDER:$3|dä|et|dä Metmaacher|de|dat}} $1: $1 ($2)",
        "contributions-userdoesnotexist": "Ene Metmaacher mem Nahme „$1“ ham_mer nit.",
        "year": "Beß Johr:",
        "sp-contributions-newbies": "Nor neu Metmaacher ier Beidräg zeije",
        "sp-contributions-newbies-sub": "För neu Metmaacher",
-       "sp-contributions-newbies-title": "Neu Metmaacher ier Beidrähsch",
+       "sp-contributions-newbies-title": "Neu Metmaacher ier Beijdrähsch",
        "sp-contributions-blocklog": "Logbohch met de Metmaacher ier Schpärre",
        "sp-contributions-suppresslog": "verschtoche Beidrääch",
-       "sp-contributions-deleted": "Fottjeschmesse Beidrääsch",
+       "sp-contributions-deleted": "Fottjeschmeße Beijdrähsch",
        "sp-contributions-uploads": "huhjelaade Dateie",
        "sp-contributions-logs": "Logböcher",
        "sp-contributions-talk": "Klaaf",
        "ipaddressorusername": "<i lang=\"en\">IP</i>-Adress oder Metmaacher Name:",
        "ipbexpiry": "Duur, för wie lang",
        "ipbreason": "Aanlass:",
-       "ipbreason-dropdown": "* Alljemein Jrönd för et Sperre\n** hät fekeehte Behouptunge udder Leeje en Atikele jeschrevve\n** hät Sigge fottjeschmesse udder leddig jemaat\n** hält sesch iewesch nit aan de Rejelle övver de Links op anger Websigge un jäje der Link-SPAM\n** hät Sigge met Shtuß udder Kauderwelsch drop aajelaat udder Keu en Sigge jedonn\n** deit Metmaacher bedrohe, beleijije, udder schlääsch maache\n** hät mieh wie eine Metmaachername un deit domet Schmuu maache\n* Op der Name betrocke Jrönd\n** esu ene Metmaacher_Nahme wolle mer nit\n* Op en IP-Adräß betrocke Jrönd\n** dat es en Proxy-ẞööver övver dänn de Lück zo vill Driß aanjestellt han",
+       "ipbreason-dropdown": "* Alljemein Jrönd för et Schpärre\n** hät fekeehte Behouptunge udder Leeje jeschrevve\n** hät Sigge fottjeschmeße udder läddesch jemaat\n** hält sesch ihwesch nit aan de Räjelle övver de Lengks op annder Wäbsigge un jäje der Lengk-<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„för jewöhnlesch angmaß övverdrahre Nohreeschte udder Meddeijlonge, di wä se kritt jaa nit han well,“\">SPAM</i>\n** hät Sigge met Schtuß udder Kauderwelsch drop aajelaat udder Keu en Sigge jedonn\n** deit Metmaacher bedrohe, beleijije, udder schlääsch maache\n** hät mih wi eine Metmaachernahme un deit domet Schmuu maache\n* Op der Nahme betrocke Jrönd\n** esu ene Metmaacher_Nahme wolle mer nit\n* Op en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"Internet Protocol\">IP</i>-Adräß betroke Jrönd\n** dat es en <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„ene ẞööver en de Nohberschaff, ene Zweschedrääjer udder Zwescheschpeijscher, ene Vermeddelongsrääschner“\">proxy</i>-ẞööver dää de Lück zoh vill Driß aanjeställt han",
        "ipb-hardblock": "Enjelogg Metmaacher dörfe vun heh dä <i lang=\"en\">IP</i>-Addräß kein Sigge ändere",
        "ipbcreateaccount": "Et Neu-Aanmelde verbeede",
        "ipbemailban": "Et <i lang=\"en\">e-mail</i>-Verschecke ongerbenge",
        "blocklink": "schpärre",
        "unblocklink": "widder freijevve",
        "change-blocklink": "Sperr ändere",
-       "contribslink": "Beidrähsch",
+       "contribslink": "Beijdrähsch",
        "emaillink": "Scheck en <span lang=\"en\">e-mail</span>",
        "autoblocker": "Bes automattisch jesperrt. Ding <i lang=\"en\" xml:lang=\"en\">IP</i>_Adress wood vör kootem noch vun däm Metmaacher „[[User:$1|$1]]“ jebruch. Dä es jesperrt woode wäje: „$2“",
        "blocklogpage": "Logbohch met Metmaacher-Schpärre",
        "movepage-page-exists": "En Sigg „$1“ ham_mer ald, un di bliif och beshtonn, mer don se nit ottomatėsch ußtuusche.",
        "movepage-page-moved": "Di eejemoolijje Sigg „$1“ es jëz op „$2“ ömjenannt.",
        "movepage-page-unmoved": "Mer kůnnte di Sigg „$1“ nit op „$2“ ömnënne.",
-       "movepage-max-pages": "Mer han jëtz {{PLURAL:$1|ëijn Sigg|$1 Sigge|kein Sigg}} ömjenanndt. Mieh jeiht nit automatėsch.",
+       "movepage-max-pages": "Mer han jëtz {{PLURAL:$1|ëijn Sigg|$1 Sigge|kein Sigg}} ömjenanndt. Mih jeiht nit automatėsch.",
        "movelogpage": "Logbohch vum Sigge Ömnänne",
        "movelogpagetext": "Heh sin de Neuste ömjenannte Sigge opjeliss, un wä et jedon hät.",
        "movesubpage": "{{PLURAL:$1|Ungersigg|Ungersigge|Ungersigge}}",
        "delete_and_move": "Fottschmieße un Ömnenne",
        "delete_and_move_text": "== Dä! Dubbelte Name ==\nDi Sigg „[[:$1]]“ jitt et ald. Wollts De se fottschmieße, öm heh di Sigg ömnenne ze künne?",
        "delete_and_move_confirm": "Jo, dun di Sigg fottschmieße.",
-       "delete_and_move_reason": "Fottjeschmesse, öm de Sigg [[$1]] ömnenne ze künne.",
+       "delete_and_move_reason": "Fottjeschmeße, öm di Sigg „[[$1]]“ ömbenänne ze künne.",
        "selfmove": "Du Doof! - dä ahle Name un dä neue Name es däselve - do hät et Ömnenne winnich Senn.",
        "immobile-source-namespace": "Sigge en dämm Appachtemang „$1“ künne nit ömjenannt wääde",
        "immobile-target-namespace": "Sigge künne nit en dat Appachtemang „$1“ erenn ömjenannt wääde",
        "thumbnail_image-type": "Di Zoot Beld künne mer nit met ömjonn",
        "thumbnail_gd-library": "Vun dä <i lang=\"en\">GD</i> Projramm_Biplijotheek fäählt en Funkßuhn: „$1“",
        "thumbnail_image-missing": "Di Dattei schingk nit doh ze sin: <code>$1</code>",
-       "thumbnail_image-failure-limit": "Mieh wi {{PLURAL:$1|eine Versohch|$1 Versohche|keine Versohch}} dat Minnibelldsche ze zeije. Versöhg_et schpääder widder.",
+       "thumbnail_image-failure-limit": "Mih wi {{PLURAL:$1|eine Versohch|$1 Versohche|keine Versohch}} dat Minnibelldsche ze zeije. Versöhg_et schpääder widder.",
        "import": "Sigge Emporteere",
        "importinterwiki": "Empottehre uss_enem andere Wikki",
        "import-interwiki-text": "Wähl e Wikki un en Sigg zem Emportehre uß.\nEt Dattum vun de Väsiohne un de Metmaacher_Nahme vun de Schriever wähde dobei metjenomme.\nAll de Empochte vun andere Wikkis wähde em [[Special:Log/import|Logbohch vum Empottehre]] faßjehallde.",
        "import-comment": "Jrond:",
        "importtext": "Dun de Daate met däm „[[Special:Export|Export]]“ vun doh vun enem Wiki Exporteere un - etwa bei Dir om Rechner - avspeichere, un dann heh wider huhlade.",
        "importstart": "Ben Sigge am emporteere …",
-       "import-revision-count": "({{PLURAL:$1|ein Version|$1 Versione|kein Version}})",
+       "import-revision-count": "({{PLURAL:$1|ein Väsjohn|$1 Väsjohne|kein Väsjohn}})",
        "importnopages": "Kein Sigg för ze Emporteere jefunge.",
        "imported-log-entries": "{{PLURAL:$1|Eine Enndraach woodt|$1 Enndrääsch woodte|Keine Enndraach wood}} en et Logbooch empotteert.",
        "importfailed": "Dat Importeere es donevve jejange: $1",
        "tooltip-ca-protect": "Donn di Sigg schöze",
        "tooltip-ca-unprotect": "Donn dä Schoz vun dä Sigg heh verändere udder ophävve.",
        "tooltip-ca-delete": "Donn di Sigg fottschmiiße",
-       "tooltip-ca-undelete": "Don de Änderunge widder zerök holle, di aan dä Sigg heh jemat woode wore, ih dat se fottjeschmesse wood",
+       "tooltip-ca-undelete": "Don de Änderunge widder zerök holle, di aan dä Sigg heh jemat woode wohre, ih dat se fottjeschmeße wood",
        "tooltip-ca-move": "Donn di Sigg ömbenänne",
        "tooltip-ca-watch": "Don di Sigg en Ding Oppaßleß opnämme",
        "tooltip-ca-unwatch": "Schmihß di Sigg us Dinge eije Oppaßleß eruß",
        "tooltip-diff": "Zeijsch Ding Änderonge aam Täx aan.",
        "tooltip-compareselectedversions": "Dun de Ungerscheid zwesche dä beids usjewählde Versione zeije.",
        "tooltip-watch": "Op di Sigg heh oppaßße.",
-       "tooltip-watchlistedit-normal-submit": "Donn  de Titele met Hökche eruß schmieße.",
+       "tooltip-watchlistedit-normal-submit": "Donn de Titele met Höhkche eruß schmiiße.",
        "tooltip-watchlistedit-raw-submit": "Oppaßleß neu fasshallde",
-       "tooltip-recreate": "En fottjeschmesse Sigg widder zeröckholle",
+       "tooltip-recreate": "En fottjeschmeße Sigg widder zeröckholle",
        "tooltip-upload": "Mem Dattei-Huhlaade loßlääje",
        "tooltip-rollback": "Nemmp alle Ännderonge zeröck, di dä Läzde jemaat hät, dä aan dä heh Sigg övverhoup jet jedonn hät. Deiht nimmih frohre, un mähd automattesch ene Endrahch onger „{{int:Summary}}“ en et Logbohch eren.",
        "tooltip-undo": "„{{UCfirst:{{int:editundo}}}}“ määt der förije Zohschtand\nfun dä Sigg op, zom Beärbeijde un widder Affschpeischere.\nEsu kam_mer noch en Aanmärkong en „{{int:summary}}“ maache.",
        "group-user.css": "/* Dat CSS heh aan dä Schtäll wirrek sesch nur op de enjeloggte Metmaacher uß */",
        "group-bot.css": "/* Dat CSS heh aan dä Stell krijje nur de Bot-Projrammee jescheck */",
        "group-sysop.css": "/* Dat CSS heh aan dä Stell krijje nur dem Wiki sing Köbeße jescheck */",
-       "group-bureaucrat.css": "/* Dat CSS heh aan dä Stell krijje nur de Bürrokraate jescheck */",
+       "group-bureaucrat.css": "/* Dat CSS heh aan dä Stell krijje nur de Bürrokrahde jescheck */",
        "common.js": "/* Jedes JavaScrip hee kütt för jede Metmaacher in jede Sigg erinn */",
        "group-autoconfirmed.js": "/* De JavaSkreppte fun hee krijje bloß de autemattesch beshtääteschte Metmaacher jescheck */",
        "group-user.js": "/* De JavaSkreppte heh aan dä Schtäll wirrek sesch nur op de enjeloggte Metmaacher uß */",
        "group-bot.js": "/* De JavaSkreppte fun hee krijje bloß de Bots jescheck */",
        "group-sysop.js": "/* De JavaSkreppte fun hee krijje bloß de Wiki_Köbeße jescheck */",
-       "group-bureaucrat.js": "/* De JavaSkreppte fun hee krijje bloß de Bürrokraate jescheck */",
+       "group-bureaucrat.js": "/* De JavaSkreppte fun hee krijje bloß de Bürrokrahde jescheck */",
        "anonymous": "Namelose {{PLURAL:$1|Metmaacher|Metmaacher|Metmaacher}} vun {{GRAMMAR:Dat|{{SITENAME}}}}",
        "siteuser": "{{SITENAME}}-Metmaacher $1",
        "anonuser": "dä nameloose Metmaacher $1 {{GRAMMAR:Genitive vum|{{SITENAME}}}}",
        "others": "ander",
        "siteusers": "{{PLURAL:$2|däm|de|keine}} {{PLURAL:$2|Metmaacher|Metmaachere|Metmaacher}} $1 aan {{GRAMMAR:Dat|{{SITENAME}}}}",
        "anonusers": "{{PLURAL:$2|dä|de|keine}} nameloose Metmaacher $1 vun de translatewiki.net",
-       "creditspage": "Övver de Metmaacher un dänne ehr Beidrähsch för heh di Sigg",
+       "creditspage": "Övver de Metmaacher un dänne ehr Beijdrähsch för heh di Sigg",
        "nocredits": "För di Sigg ham_mer nix en de Leß.",
        "spamprotectiontitle": "SPAM_Schotz",
        "spamprotectiontext": "De Sigg, di de avschpeicchere wells, di weed vun onsem Projramm zom Schoz jähje der <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„för jewöhnlesch angmaß övverdrahre Nohreeschte udder Meddeijlonge, di wä se kritt jaa nit han well,“\">SPAM</i> nit durchjelooße. Dat kütt mihts vun enem Link op en främde Sigg, di op de \n„Schwazze Leß“ schteiht.",
        "spam_reverting": "De läzde Väsjohn ohne de Lengks op „$1“ widder zerröckjehollt.",
        "spam_blanking": "All di Väsjohne hatte Lengks op „$1“, di sin jäz erus jemaht.",
        "spam_deleting": "All di Versione met Lenks op „$1“ wääde fott jeschmeße",
-       "simpleantispam-label": "Donn heh nix endraare!",
+       "simpleantispam-label": "Donn heh <strong>nix</strong> endrahre!",
        "pageinfo-title": "Övver di Sigg: „$1“",
        "pageinfo-not-current": "Esu en Aanjahbe künne mer övver ällder Väsjohne vun Sigge nit maache.",
        "pageinfo-header-basic": "Jrundlääje Aanjabe",
        "patrol-log-header": "<!-- -->",
        "log-show-hide-patrol": "$1 et Logbuch vum Sigge nohlooere",
        "log-show-hide-tag": "Donn et Logbohch vun de Makkehronge $1",
-       "deletedrevision": "De ahl Version „$1“ es fottjeschmesse",
+       "deletedrevision": "De ahle Väsjohn „$1“ es fottjeschmeße",
        "filedeleteerror-short": "Fähler bem Dattei-Fottschmiiße: $1",
        "filedeleteerror-long": "Bem Fosooch, de Dattei fottzeschmihße, hatte mer Fähler:\n\n$1",
        "filedelete-missing": "De Datei „$1“ künne mer nit fottschmieße, Leevje, di jidd_et janit.",
        "confirmemail_needlogin": "Do muss Dich $1, för de E-Mail Adress ze bestätije.",
        "confirmemail_success": "Ding E-Mail Adress es jetz bestätich.\nJetz künns De och noch enlogge. Vill Spass!",
        "confirmemail_loggedin": "Ding Addräß fö de <i lang=\"en\">e-mail</i> es jäz beschtäätesch!",
-       "confirmemail_subject": "Dun Ding e-mail Adress för {{GRAMMAR:Akkusativ|{{SITENAME}}}} bestäteje.",
+       "confirmemail_subject": "Don Ding e-mail-Adräß för {{GRAMMAR:Akkusativ|{{SITENAME}}}} beschtähteje.",
        "confirmemail_body": "Künnt jod sin, Do wors et selver, vun de IP_Adress $1 hät sich\njedenfalls einer jemeldt, un well dä Metmaacher \"$2\" {{GRAMMAR:vun|{{SITENAME}}}}\nsin, un hät en E-Mail Adress aanjejovve.\n\nÖm jetz klor ze krije, dat di e-mail Adräß un dä neue Metmaacher och\nzosamme jehüre, muss dä Neue en singem Brauser dä Link:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann de et selver bes.\n\nWann nit Do, sondern söns wä Ding e-mail Adräß aanjejovve hät, do bruchs de\njar nix ze don. De e-mail Adräß kann nit jebruch wääde, ih dat se nit\nbestätich es. Do kanns ävver och op he dä Lengk jon:\n\n$5\n\nDomet deiß De tirek sare, dat De di Adräß nit bestätije wells.",
        "confirmemail_body_changed": "Künnt jod sin, Do wors et selver. Vun de IP_Adräß $1 hät sich\njedenfalls einer jemeldt, un well dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nsin, un hät en neu Adress för sing e-mail aanjejovve.\n\nÖm jetz klor ze krije, dat di neu Adräß un dä Metmaacher och\nzosamme jehüre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nwidder aanzschallde, moss dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann de et selver bes.\n\nWann nit Do, sondern söns wä Ding E-Mail Adress aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit bestätich es.\nDo kanns ävver och op heh dä Link jon:\n\n$5\n\nDomet deiß De tirek sare, dat De di Adress nit bestätije wells.",
-       "confirmemail_body_set": "Künnt jod sin, Do wors et selver. Vun dä IP_Adress $1 hät op\njede Fall einer för dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nheh di Adräß för däm sing e-mail aanjejovve.\n\nÖm jäz kloh ze krije, dat di neu Adräß un dä Metmaacher och\nzosamme jehüre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\naanzschallde, moß dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann dat sing\nReeschteschkeit hät.\n\nWann nit Do, sondern söns wä Ding Addräß för de e-Mail aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit bestätesch es.\nDo kanns ävver och op heh dä Link jon:\n\n$5\n\nDomet deiß De tirek sare, dat De di Adräß nit bestäteje wells.",
+       "confirmemail_body_set": "Künnt johd sin, Do wors et sällver. Vun dä IP-Adräß $1 hät op\njede Fall einer för dä Metmaacher \"$2\" op {{GRAMMAR:Akk bet|{{SITENAME}}}}\nheh di Adräß för däm sing e-mail aanjejovve.\n\nÖm jäz kloh ze kreje, dat di neu Adräß un dä Metmaacher och\nzosamme jehühre, un öm de e-mail op {{GRAMMAR:Akk bet|{{SITENAME}}}}\naanzschallde, moß dä Metmaacher en singem Brauser dä Lengk:\n\n$3\n\nopmaache. Noch för em $6 öm $7 Uhr. Alsu dun dat, wann dat sing\nReeschteschkeijt hät.\n\nWann nit Doh, sönders söns wä Ding Addräß för de e-Mail aanjejovve hät, bruchs\nDe jar nix ze don. Di Adräß weed nit jebruch, wann se nit beschtähtesch es.\nDo kanns ävver och op heh dä Lengk jon:\n\n$5\n\nDomet deiß De tirek vermällde, dat De di Adräß nit beschtähteje wells.",
        "confirmemail_invalidated": "Et Beschtähtejje för di <i lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„de eläktrohnesche Poß“\">e-mail</i>-Adräß es afjebroche wohde, un di Adräß es '''nit''' beschtähtesch.",
        "invalidateemail": "E-Mail-Adress nit bestätich",
        "scarytranscludedisabled": "[Et Enbinge per Interwiki es avjeschalt]",
        "watchlistedit-normal-title": "Oppaßleß beärbeijde",
        "watchlistedit-normal-legend": "Övverschreffte uß de Oppaßleß eruß lohße",
        "watchlistedit-normal-explain": "Dat sin de Endräsch en Dinge Oppaßleß.\nÖm einzel Titelle loßß ze wääde, don Hökche en de Kässjer nevve inne maache, un dann deuß De dä Knopp „{{int:watchlistedit-normal-submit}}“.\nDo kanns Ding Oppassleß och [[Special:EditWatchlist/raw|en rüh beärbeide]].",
-       "watchlistedit-normal-submit": "Jangk de Titele met Hökche eruß schmieße",
+       "watchlistedit-normal-submit": "Jangk de Titele met Höhkche eruß schmiiße",
        "watchlistedit-normal-done": "{{PLURAL:$1|Eine Sigge_Övverschreff es|<strong>$1</strong> Sigge_Övverschreffte sin|Keine Sigge_Övverschreff es}} us Dinge Opaßless erus jefloore:",
        "watchlistedit-raw-title": "Rüh Oppaßleß beärbeide",
        "watchlistedit-raw-legend": "Rüh Oppaßleß beärbeide",
-       "watchlistedit-raw-explain": "Dat sin de Endrähsch in Dinge Oppaßles en rüh.\nÖm einzel Titelle loßß ze wähde, kanns de de Reije met inne eruß schmieße, ov läddich maache.\nÖm neu Titelle  dobei ze don, schriev neu Reije dobei. Jede Titel moss en en Reih för sijj_allein shtonn.\nWanns De fädig bes, dann deuß De dä Knopp „{{int:Watchlistedit-raw-submit}}“.\nNatörlesch kanns De di Les och — met Dingem Brauser singe ''<span lang=\"en\">Copy&amp;Paste</span>''-Funkßjohn — komplett kopeere odder ußtuusche.\nDe könnts Ding Oppaßless ävver och [[Special:EditWatchlist|övver e Fomulaa met Kässjer un Hökscher beärbeide]].",
+       "watchlistedit-raw-explain": "Dat sin de Endrähsch in Dinge Oppaßles en rüh.\nÖm einzel Sigge loßß ze wähde, kanns De de Reije met inne eruß schmiiße ov läddich maache.\nÖm neu Sigge dobei ze don, schriev neu Reije dobei. Jede Sigg moss en en Reih för sijj_allein schtonn.\nWanns De fädig bes, dann deuß De dä Knopp „{{int:Watchlistedit-raw-submit}}“.\nNatörlesch kanns De di Les och — met Dingem Brauser singe ''<span lang=\"en\" xml:lang=\"en\" dir=\"ltr\" title=\"„Koppehre un Ennföhje“\">Copy&amp;Paste</span>''-Funkßjohn — komplett kopeere odder ußtuusche.\nDe künnts Ding Oppaßless ävver och [[Special:EditWatchlist|övver e Fomulaa met Kässjer un Hökscher beärbeide]].",
        "watchlistedit-raw-titles": "Endrähsch:",
        "watchlistedit-raw-submit": "Oppaßleß neu faßhallde",
        "watchlistedit-raw-done": "Ding Oppaßßleß es fassjehallde.",
        "version-poweredby-credits": "Dat Wiki heh löp met <strong>[https://www.mediawiki.org/ MediaWiki]</strong>, copyright © 2001–$1 $2.",
        "version-poweredby-others": "sönß wää",
        "version-poweredby-translators": "de Övversäzer em translatewiki.net",
-       "version-credits-summary": "Mer bedanke ons för dänne iehr Beidrähsch zom [[Special:Version|MehdijaWikki]] bei:",
+       "version-credits-summary": "Mer bedanke ons för dänne iehr Beijdrähsch zom [[Special:Version|MehdijaWikki]] bei:",
        "version-license-info": "MediaWiki es e frei Projramm. Mer kann et unmolesteet wigger verdeile, un mer kann et verändere, wi mer löstich es, wam_mer sesch dobei aan de <i lang=\"en\">GNU General Public License</i> (jenerälle öffentlesche Lizänz noh GNU) hallde deiht, wi se vun der <i lang=\"en\">Free Software Foundation</i> (Steftung för frei Soffwäer) veröffentlesch woode es. Dobei kam_mer sesch ußsöhke of mer sesch aan de Version 2 dovun hallde deiht, udder öhnz en späädere Fassung.\n\nMediaWiki weed verdeilt met dä Hoffnung, dat et för jet jood es, ävver <span style=\"text-transform:uppercase\">der ohne jeede Jarantie</span>, un esujaa ohne ene unjesaate Jedangke, et künnt <span style=\"text-transform:uppercase\">ze verkoufe</span> sin udder <span style=\"text-transform:uppercase;\">för öhndsene bestemmpte Zweck ze jebruche</span>. Loor Der de jenannte Lizänz aan, wann De mieh Einzelheite weße wells.\n\nDo sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang=\"en\">GNU General Public License</i>] zosamme met däm Projramm krääje han, un wann nit, schrief aan de: <i lang=\"en\">Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA </i> udder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liß se em Internet noh].",
        "version-software": "Installeete Soffwäer",
        "version-software-product": "Produk",
        "version-libraries-library": "Projrammsammlong",
        "version-libraries-version": "Väsjohn",
        "version-libraries-license": "Lėzänz",
+       "version-libraries-description": "Wat se deiht",
        "version-libraries-authors": "Schrihver",
        "redirect": "Ömleide op en Dattei, ene Metmaacher udder de Väsjohn vun ener Sigg",
        "redirect-legend": "Ömleide ob_en Dattei udder Sigg",
        "specialpages-group-other": "Ander {{int:nstab-special}}e",
        "specialpages-group-login": "Enlogge udder Aanmälde",
        "specialpages-group-changes": "Läzde Änderonge un Logböhscher",
-       "specialpages-group-media": "Dateie — Huhlaade un Opliste",
+       "specialpages-group-media": "Dateije — Huhlahde un Opleßte",
        "specialpages-group-users": "Metmaacher un denne ier Rääschte",
        "specialpages-group-highuse": "Öff jebruch…",
        "specialpages-group-pages": "Siggeliste",
        "tags-delete-submit": "Onzeröckhollbaa fottschmiiße!",
        "tags-delete-not-allowed": "Kännzeijsche, di övver Zohsazprojramme faßjelaat wääde, kam_mer blß fottschmiiße, wann dat Zohsazprojramm et zohlöht.",
        "tags-delete-not-found": "E Kännzeijsche „$1“ jidd_et nit.",
-       "tags-delete-too-many-uses": "Dat Kännzeijsche „$1“ es för {{PLURAL:$2|mieh wi ein Väsjohn|övver $2 Väsjohn|kein Väsjohn}} em jebruch, dröm kam_mer et nit fottschmiiße.",
+       "tags-delete-too-many-uses": "Dat Kännzeijsche „$1“ es för {{PLURAL:$2|mih wi ein Väsjohn|övver $2 Väsjohn|kein Väsjohn}} em jebruch, dröm kam_mer et nit fottschmiiße.",
        "tags-delete-warnings-after-delete": "Dat Kännzeijsche „$1“ es fottjeschmeße, ävver {{PLURAL:$2|ei Problem|$2 Probleme|kein Problem}} es opjevalle:",
        "tags-activate-title": "Kännzeijsche aanschallde",
        "tags-activate-question": "Do bes om bäßte Wähsch, et Kännzeijsche „$1“ aanzeschallde.",
        "comparepages": "Sigge verjliesche",
        "compare-page1": "De ein Sigg",
        "compare-page2": "De ander Sigg",
-       "compare-rev1": "de ein Version",
+       "compare-rev1": "de ein Väsjohn",
        "compare-rev2": "de ander Väsjohn",
        "compare-submit": "Verjlieshe!",
        "compare-invalid-title": "De aanjejovve Övverschreff es nit jöltesch",
        "htmlform-title-badnamespace": "[[:$1]] es nit em Appachetmang „{{ns:$2}}“.",
        "htmlform-title-not-creatable": "„$1“ en kein Övverschreff, för di me en Sigg aanlähje künnt",
        "htmlform-title-not-exists": "[[:$1]] jidd_et nit.",
+       "htmlform-user-not-exists": "<strong>$1</strong> jidd_et nit.",
+       "htmlform-user-not-valid": "<strong>$1</strong> es keine jöltejje Nahme för ene Metmaacher.",
        "sqlite-has-fts": "Version $1 (un kann en janze Täxte söhke)",
        "sqlite-no-fts": "Version $1 (kann ävver nit en janze Täxte söhke)",
        "logentry-delete-delete": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Sigg „$3“ fottjeschmeße.",
        "rightsnone": "(nix)",
        "revdelete-summary": "dä Täx en „{{int:summary}}“",
        "feedback-adding": "Ben di Röckmäldong op di Sigg aam donn&nbsp;…",
-       "feedback-back": "Retuur",
+       "feedback-back": "Retuhr",
        "feedback-bugcheck": "Joot. Donn op jeede Vall nohlooer, dat dat bes jäz noch nit [$1 bikannt wohr].",
        "feedback-bugnew": "Hann esch nohjelooert. Esch jävven ene neue Fähler enn.",
        "feedback-bugornote": "Wann de em Bejreff bes, övver e täschnesch Problehm ze schrieve, bes esu jood un donn dat als en [$1 Fählermäldong].\nSöns, nemm dat koote Fommulaa heh dronger.\nWat De doh ennjiß, kütt met Dingem Metmaachername un Dingem Brauser op di Sigg „[$3 $2]“ drop.",
        "special-characters-title-endash": "Ene Halfjeviertschtresch",
        "special-characters-title-emdash": "Ene Jeviertschtresch",
        "special-characters-title-minus": "Et Winnijer-Zeische",
+       "mw-widgets-dateinput-no-date": "Kein Dattom es ußjewählt",
        "mw-widgets-titleinput-description-new-page": "di Sigg jidd_et noch nit",
        "mw-widgets-titleinput-description-redirect": "ömleijde op „$1“"
 }
index d63b44b..ddf03c9 100644 (file)
        "tooltip-pt-mycontris": "Lîsteya beşdariyên min",
        "tooltip-pt-logout": "Derkeve",
        "tooltip-ca-talk": "Gotûbêj li ser rûpela naverokê",
-       "tooltip-ca-edit": "Vê rûpelê biguherîne! Berê qeydkirinê bişkoka \"Pêşdîtin\"",
+       "tooltip-ca-edit": "Vê rûpelê biguherîne",
        "tooltip-ca-addsection": "Beşekê zêde bike.",
        "tooltip-ca-viewsource": "Ev rûpel tê parastin.\nTu dikarî tenê li çavkaniyê binêrî.",
        "tooltip-ca-history": "Guhertoyên berê yên vê rûpelê",
        "tooltip-n-mainpage": "Here Destpêkê",
        "tooltip-n-mainpage-description": "Here Destpêkê",
        "tooltip-n-portal": "Agahdarî li ser {{SITENAME}}, tu dikarî çi bikî, tu dikarî çi li ku bîbînî",
+       "tooltip-n-currentevents": "Der barê bûyerên dawî de agahîyên nûjen bibîne",
        "tooltip-n-recentchanges": "Lîsteya guherandinên dawî di vê wîkiyê da",
        "tooltip-n-randompage": "Rûpeleka ketober bar bike",
        "tooltip-n-help": "Bersivên ji bo pirsên te.",
index 23461ec..0dec0a0 100644 (file)
@@ -22,6 +22,7 @@
        "tog-hideminor": "Соңку өзгөрүүлөрдүн тизмесинен майда өзгөрүүлөрдү жашыруу",
        "tog-hidepatrolled": "Соңку өзгөрүүлөрдүн тизмесинен күзөттөлгөн оңдоолорду жашыруу",
        "tog-newpageshidepatrolled": "Жаңы барактар тизмесинен күзөттөлгөн барактарды жашыруу",
+       "tog-hidecategorization": "Барактардын категорияларын жашыруу",
        "tog-extendwatchlist": "Бүт өзгөртүүлөрдү камтыган кеңири көзөмөл тизмеси, эң соңкуларды гана эмес",
        "tog-usenewrc": "Өзгөртүүлөрдү соңку өзгөрүүлөргө жана көзөмөл тизмеме топтоо (JavaScript талап кылынат)",
        "tog-numberheadings": "Башжазууларды автоматтык түрдө номердөө",
index ebb128f..70d1536 100644 (file)
@@ -22,6 +22,7 @@
        "tog-hideminor": "Kleng Ännerungen an de rezenten Ännerunge verstoppen",
        "tog-hidepatrolled": "Nogekuckt Ännerungen an de \"Rezenten Ännerungen\" verstoppen",
        "tog-newpageshidepatrolled": "Nogekuckt Säiten op der Lëscht vun den \"Neie Säite\" verstoppen",
+       "tog-hidecategorization": "Kategorisatioun vu Säite verstoppen",
        "tog-extendwatchlist": "Iwwerwaachungslëscht op all Ännerungen ausbreeden, net nëmmen op déi rezentst",
        "tog-usenewrc": "Rezent Ännerungen an Iwwerwaachungslëscht pro Säit weisen",
        "tog-numberheadings": "Iwwerschrëften automatesch numeréieren",
@@ -51,6 +52,7 @@
        "tog-watchlisthideliu": "Ännerunge vun ugemellte Benotzer verstoppen",
        "tog-watchlisthideanons": "Ännerunge vun anonyme Benotzer (IP-Adressen) verstoppen",
        "tog-watchlisthidepatrolled": "Iwwerkuckten Ännerungen op der Iwwerwaachungslëscht verstoppen",
+       "tog-watchlisthidecategorization": "Kategorisatioun vu Säite verstoppen",
        "tog-ccmeonemails": "Schéck mir eng Kopie vun de Mailen, déi ech anere Benotzer schécken.",
        "tog-diffonly": "Weis bei Versiounsvergläicher just d'Ënnerscheeder an net déi ganz Säit",
        "tog-showhiddencats": "Verstoppt Kategorië weisen",
        "actionthrottled": "Dës Aktioun gouf gebremst",
        "actionthrottledtext": "Fir géint de Spam virzegoen, ass dës Aktioun sou programméiert datt Dir se an enger kuerzer Zäit nëmme limitéiert dacks maache kënnt. Dir hutt dës Limite iwwerschratt. Versicht et w.e.g. an e puer Minutten nach eng Kéier.",
        "protectedpagetext": "Dës Säit ass fir Ännerungen an aner Aktioune gespaart.",
-       "viewsourcetext": "Dir kënnt de Quelltext vun dëser Säit kucken a kopéieren:",
-       "viewyourtext": "Dir kënnt de Quelltext vun '''Ären Ännerungen''' op dëser Säit kucken a kopéieren:",
+       "viewsourcetext": "Dir kënnt de Quelltext vun dëser Säit kucken a kopéieren.",
+       "viewyourtext": "Dir kënnt de Quelltext vun <strong>Ären Ännerungen</strong> op dëser Säit kucken a kopéieren.",
        "protectedinterface": "Op dëser Säit fannt Dir Text fir de Sprooch-Interface vun der Software op dëser Wiki an dofir ass si gespaart fir Mëssbrauch ze verhënneren.\n\nFir Iwwersetzungen fir all Wikien bäizesetzen oder z'änneren gitt w.e.g. op [//translatewiki.net/ translatewiki.net], de MediaWiki-Lokalisatiouns-Projet.",
        "editinginterface": "<strong>Opgepasst:</strong> Dir sidd am Gaang, eng Säit z'änneren, déi do ass, fir Interface-Text fir d'Software ze liwweren. \nÄnnerungen op dëser Säit änneren den Interface-Text, jee no Kontext, op allen oder verschiddene Säiten, déi vun alle Benotzer op dëser Wiki gesi ginn.",
        "translateinterface": "Fir Iwwersetzunge fir all Wikien z'änneren oder dobäizesetze benotzt w.e.g.  [//translatewiki.net/ translatewiki.net], de Projet fir d'Lokalisatioun vu MediaWiki.",
        "search-category": "(Kategorie $1)",
        "search-file-match": "(Inhalt vum Fichier passt)",
        "search-suggest": "Mengt Dir: $1",
+       "search-rewritten": "D'Resultater fir $1 gi gewisen. Amplaz no $2 sichen.",
        "search-interwiki-caption": "Schwësterprojeten",
        "search-interwiki-default": "Resultater vu(n) $1:",
        "search-interwiki-more": "(méi)",
        "rcshowhidemine": "Meng Ännerunge $1",
        "rcshowhidemine-show": "Weisen",
        "rcshowhidemine-hide": "Verstoppen",
+       "rcshowhidecategorization": "Kategorisatioun vu Säite $1",
+       "rcshowhidecategorization-show": "Weisen",
+       "rcshowhidecategorization-hide": "Verstoppen",
        "rclinks": "Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3",
        "diff": "Ënnerscheed",
        "hist": "Versiounen",
        "newpageletter": "N",
        "boteditletter": "B",
        "number_of_watching_users_pageview": "[$1 Benotzer {{PLURAL:$1|iwwerwaacht|iwwerwaachen}}]",
-       "rc_categories": "Nëmme Säiten aus de Kategorien (getrennt mat \"|\"):",
-       "rc_categories_any": "All",
+       "rc_categories": "Limitéieren op d'Kategorie (getrennt mat \"|\"):",
+       "rc_categories_any": "Aus iergendenger vun den erausgesichten",
        "rc-change-size": "$1 {{PLURAL:$1|Byte|Bytes}}",
        "rc-change-size-new": "$1 {{PLURAL:$1|Byte|Bytes}} no der Ännerung",
        "newsectionsummary": "Neien Abschnitt /* $1 */",
        "recentchangeslinked-summary": "Dëst ass eng Lëscht mat Ännerunge vu verlinkte Säiten op eng bestëmmte Säit (oder vu Membersäite vun der spezifizéierter Kategorie).\nSäite vun [[Special:Watchlist|Ärer Iwwerwaachungslëscht]] si '''fett''' geschriwwen.",
        "recentchangeslinked-page": "Säitennumm:",
        "recentchangeslinked-to": "Weis Ännerungen zu de verlinkte Säiten aplaz vun der gefroter Säit",
+       "recentchanges-page-added-to-category": "[[:$1]] an d'Kategorie derbäigesat",
+       "recentchanges-page-added-to-category-bundled": "{{PLURAL:$2|}}[[:$1]] a(n) {{PLURAL:$2|eng Säit|$2 Säiten}} an d'Kategorie derbäigesat",
+       "recentchanges-page-removed-from-category": "[[:$1]] erausgeholl aus der Kategorie",
+       "recentchanges-page-removed-from-category-bundled": "{{PLURAL:$2|}}[[:$1]] a(n) {{PLURAL:$2|eng Säit|$2 Säiten}} aus der Kategorie erausgeholl",
        "upload": "Eroplueden",
        "uploadbtn": "Fichier eroplueden",
        "reuploaddesc": "Eroplueden ofbriechen an zréck op de Formulaire fir Eropzelueden",
        "upload-too-many-redirects": "Et waren zevill Viruleedungen fir d'URL do",
        "upload-http-error": "Et ass en HTTP-Feeler geschitt: $1",
        "upload-copy-upload-invalid-domain": "Vun dësem Domain ass d'Eropluede vu Kopien net méiglech.",
+       "upload-dialog-title": "Fichier eroplueden",
+       "upload-dialog-error": "Et ass e Feeler geschitt",
+       "upload-dialog-warning": "Eng Warnung gouf ausgeschwat",
+       "upload-dialog-button-cancel": "Ofbriechen",
+       "upload-dialog-button-done": "Fäerdeg",
+       "upload-dialog-button-save": "Späicheren",
+       "upload-dialog-button-upload": "Eroplueden",
+       "upload-dialog-label-select-file": "Fichier eraussichen",
+       "upload-dialog-label-infoform-title": "Detailer",
+       "upload-dialog-label-infoform-name": "Numm",
+       "upload-dialog-label-infoform-description": "Beschreiwung",
+       "upload-dialog-label-usage-title": "Benotzung",
+       "upload-dialog-label-usage-filename": "Numm vum Fichier",
        "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.",
        "watchlistanontext": "Loggt Iech a fir Elementer op Ärer Iwwerwaachungslëscht ze gesinn oder z'änneren.",
        "watchnologin": "Net ageloggt",
        "addwatch": "Op d'Iwwerwaachungslëscht derbäisetzen",
-       "addedwatchtext": "D'Säit \"[[:$1]]\" gouf op är [[Special:Watchlist|Iwwerwaachungslëscht]] gesat.\nAll weider Ännerungen op dëser Säit an der associéierter Diskussiounssäit ginn hei opgelëscht.",
+       "addedwatchtext": "\"[[:$1]]\" a seng Diskussiounssäit goufen op Är [[Special:Watchlist|Iwwerwaachungslëscht]] gesat.",
        "addedwatchtext-short": "D'Säit \"$1\" gouf op Är Iwwerwaachungslëscht derbäigesat.",
        "removewatch": "Vun der Iwwerwaachungslëscht erofhuelen",
-       "removedwatchtext": "D'Säit \"[[:$1]]\" gouf vun [[Special:Watchlist|ärer Iwwerwaachungslëscht]] erofgeholl.",
+       "removedwatchtext": "\"[[:$1]]\" a seng Diskussiounssäit goufe vun Ärer [[Special:Watchlist|Iwwerwaachungslëscht]] erofgeholl.",
        "removedwatchtext-short": "D'Säit \"$1\" gouf vun Ärer Iwwerwaachungslëscht erofgeholl.",
        "watch": "Iwwerwaachen",
        "watchthispage": "Dës Säit iwwerwaachen",
        "changecontentmodel-reason-label": "Grond:",
        "changecontentmodel-success-title": "De Modell vum Inhalt gouf geännert",
        "changecontentmodel-success-text": "Den Typ vum Inhalt vu(n) [[:$1]] gouf geännert.",
-       "changecontentmodel-title-cantexist": "Et ass net méiglech enger Säit den Numm $1 ze ginn.",
        "logentry-contentmodel-change-revertlink": "zrécksetzen",
        "logentry-contentmodel-change-revert": "zrécksetzen",
        "protectlogpage": "Protektiounslogbuch",
        "undeletepagetext": "Dës {{PLURAL:$1|Säit gouf |Säite goufe}} geläscht mä sinn nach ëmmer am Archiv a kënne vun Administrateure restauréiert ginn. D'Archiv gëtt periodesch eidel gemaach.",
        "undelete-fieldset-title": "Versioune restauréieren",
        "undeleteextrahelp": "Fir d'Säit komplett mat alle Versiounen ze restauréieren, markéiert keng vun den eenzelne Casë mat engem Krop a klickt op '''''{{int:undeletebtn}}'''''.\nFir nëmmen eng bestëmmte Versioun vun der Säit ze restauréieren, markéiert d'Case vun der gewënschter Versioun mat engem Krop, a klickt duerno op '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "{{PLURAL:$1|1 Versioun|$1 Versiounen}} archivéiert",
+       "undeleterevisions": "{{PLURAL:$1|1 Versioun|$1 Versioune}} geläscht",
        "undeletehistory": "Wann Dir dës Säit restauréiert, ginn och all déi al Versioune restauréiert.\nWann zanter dem Läschen eng nei Säit mat dem selwechten Numm ugeluecht gouf, ginn déi restauréiert Versioune chronologesch an den Historique agedroen.",
        "undeleterevdel": "D'Restauratioun gëtt net gemaach wann dat dozou féiert datt déi aktuell Versioun vun der Säit oder vum Fichier deelweis geläscht gëtt.\nA sou Fäll däerf déi neist Versioun net markéiert ginn oder déi neist geläscht Versioun muss nees ugewise ginn.",
        "undeletehistorynoadmin": "Dës Säit gouf geläscht. De Grond fir d'Läsche gesitt der ënnen, zesumme mat der Iwwersiicht vun den eenzele Versioune vun der Säit an hiren Auteuren. Déi verschidden Textversioune kënnen awer just vun Administrateure gekuckt a restauréiert ginn.",
        "spam_reverting": "Déi lescht Versioun ouni Linken op $1 restauréieren.",
        "spam_blanking": "An alle Versioune ware Linken op $1, et ass elo alles gebotzt.",
        "spam_deleting": "All Versioune mat Linken op $1 gi geläscht",
-       "simpleantispam-label": "Anti-Spam Kontroll.\nFëllt dëst '''NET''' aus!",
+       "simpleantispam-label": "Anti-Spam Kontroll.\nFëllt dëst <strong>NET</strong> aus!",
        "pageinfo-title": "Informatioun iwwer \"$1\"",
        "pageinfo-not-current": "Pardon, et ass onméiglech dës Informatioun fir al Versiounen ze weisen.",
        "pageinfo-header-basic": "Basisinformatiounen",
        "special-characters-group-lao": "Lao",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-minus": "Minus-Zeechen",
+       "mw-widgets-dateinput-no-date": "Keen Datum erausgesicht",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
        "mw-widgets-titleinput-description-new-page": "Säit gëtt et nach net",
        "mw-widgets-titleinput-description-redirect": "viruleeden op $1"
 }
index 6fd2b5e..896496b 100644 (file)
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Cambodzjaans"
+       "special-characters-group-khmer": "Cambodzjaans",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM"
 }
index acdbcad..a8681c1 100644 (file)
        "passwordreset-capture-help": "أر شوما ئی جأڤە نئ ڤارئسی بأکیت.أنجومانامە (ڤا رازینە گوڤاردئن موڤأقأتی) جوٙری کئ سی کاریاریا هأنی کئل بییە دیاری میکە.",
        "passwordreset-email": "تیرنئشوٙن أنجومانامە",
        "passwordreset-emailtitle": "جوزئیات حئساڤ ها د {{نوم مالگە}}",
-       "passwordreset-emailtext-ip": "یه کسی(شات خوتو، وا تیرنشون آی پی $1) سی د نو زنه کردن رازینه گواردن تو د {{SITENAME}}  درحاست کرده($4).\nسی کاریار «$2» یه گل رازینه گواردن موقتی دروس بیه و و هؤمبراور «$3» ئه.\nار تمارزو تو یه بیه ایسه باید بیایت وامین سامونه و یه گل رازینه گواردن هنی بهاییت\nرازینه گواردن شما د طیل {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\n\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
-       "passwordreset-emailtext-user": "کاریار $1 د {{SITENAME}} د نو زنه کردن رازینه گواردن شمانه د{{SITENAME}} ($4) کرده. {{PLURAL:$3|حساو|حساویا}} کاریاری که هان د هار د وا ای تیرنشون انجومانامه ها د ارتواط:\n\n$2\n\n{{PLURAL:$3|ای رازینه گواردن موقت|ای رازینه گواردنیا موقت}} تا {{PLURAL:$5|یه رو|$5 رو}} باطل بوئه.\nار کس هنی چنی درحاستی کرده یا یه که شما رازینه گواردن دمایی خوتونه د ویر اوردیت و تر نمیهایت ونه آلشت بیئت، می تونیت د ای پیغوم تیه پوشی بکیت و همو رازینه گواردن دمایی نه وه کار به ونیت.",
-       "passwordreset-emailelement": "نوم کاریاری: $1\nرازینه گواردن موقتی: $2",
-       "passwordreset-emailsent": "رازینه گواردن هنی سی انجومانامه کل بیه.",
-       "passwordreset-emailsent-capture": "رازینه گواردن تازه تو د انجومانامه تو که د هار نشو دئه بیه کل بیه",
-       "passwordreset-emailerror-capture": "رازینه گواردن د انجومانامه د نو زنه کننه راس بیه، و وه د هار دیاری می که، اما کل بیین وه د{{GENDER:$2|کاریار}} شکست حرده:$1",
-       "changeemail": "اÙ\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªÙ\88 Ù\86Ù\87 Ø¢Ù\84شت Ø¨Ú©Û\8cد",
-       "changeemail-text": "اÛ\8c Ù\86Ù\88Ù\85 Ø¨Ù\84Ú¯Ù\87 Ù\86Ù\87 Ø³Û\8c Ø¢Ù\84شت Ø¯Ø¦Ù\86 ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªÙ\88 Ù¾Ø± Ø¨Ú©Û\8cت. Ø´Ù\85ا Ø³Û\8c Ù¾Ø´Øª Ø±Ø§Ø³ Ú©Ø±Ø¯Ù\86 Ø§Û\8c Ø¢Ù\84شت Ù\88اس Ø±Ø§Ø²Û\8cÙ\86Ù\87 Ú¯Ù\88اردÙ\86 Ø®Ù\88تÙ\88Ù\86Ù\87 Ù\88ارد Ø¨Ú©یت.",
-       "changeemail-no-info": "Ø´Ù\85ا Ø¨Ø§ Ø¨Û\8cاÛ\8cت Ø¯ Ø³Ø§Ù\85Ù\88Ù\86Ù\87 ØªØ§ Ø¯ Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ø¯Ø³Ø±Ø³Û\8c Ø¯Ø§Ø´ØªÙ\88Û\8cت",
-       "changeemail-oldemail": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªØ§Ø²Ù\87 Ø¨Ø§Ù\88:",
-       "changeemail-newemail": "تÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªØ§Ø²Ù\87:",
+       "passwordreset-emailtext-ip": "یە کئسی(گاسی خوتوٙ، ڤا تیرنئشوٙن آی پی $1) د نۊ زئنە کئردئن رازینە گوڤاردئنئتوٙ د {{SITENAME}} حاستیتە($4).\nسی کاریار «$2» یئ گئل رازینە گوڤاردئن موڤأقتی رأڤأندیاری بییە و هومبأراڤأر «$3» ە.\nأر دالئتوٙ یە بییە ئیسئ ڤاس بیائیت ڤامین ساموٙنە و یئ گئل رازینە گوڤاردئن هأنی بئهایت.\n رازینە گوڤاردئن {{PLURAL:$3|ئی رازینە یا گوڤاردئن موڤأقأتی|ئی رازینە یا گوڤاردئن موڤأقأتی}} شوما د گات {{PLURAL:$5|یئ روٙ|$5 روٙ}} باطئل بوٙە.\n\nأر کأسی هأنی چئن حاستی داشتە یا یە کئ رازینە گوڤاردئن دئمایی شوما د ڤیرئتوٙ ئوٙما و دە نئمیهایت ڤئنە آلئشت کاری بأکیت، می توٙنیت د ئی پئیغوم تیە پوٙشی بأکیت و هأموٙ رازینە گوڤاردئن دئمایی نە بونیت د کار.",
+       "passwordreset-emailtext-user": "کاریار $1 د {{SITENAME}} د نۊ زئنە کئردئن رازینە گوڤاردئن شومانە د{{SITENAME}} ($4) حاستە. {{PLURAL:$3|حئساڤ|حئساڤیا}} کاریاری کئ هان د هار و ڤا ئی تیرنئشوٙن أنجومانامە هان د ئرتئڤاط:\n\n$2\n\n رازینە گوڤاردئن {{PLURAL:$3|ئی رازینە یا گوڤاردئن موڤأقأتی|ئی رازینە یا گوڤاردئن موڤأقأتی}} شوما د گات {{PLURAL:$5|یئ روٙ|$5 روٙ}} باطئل بوٙە.\nأر کأسی هأنی چئن حاستی داشتە یا یە کئ رازینە گوڤاردئن دئمایی شوما د ڤیرئتوٙ ئوٙما و دە نئمیهایت ڤئنە آلئشت کاری بأکیت، می توٙنیت د ئی پئیغوم تیە پوٙشی بأکیت و هأموٙ رازینە گوڤاردئن دئمایی نە بونیت د کار.",
+       "passwordreset-emailelement": "نوم کاریاری: $1\nرازینە گوڤاردئن موڤأقتی: $2",
+       "passwordreset-emailsent": "یئ گئل رازینە گوڤاردئن هأنی سی أنجومانامە کئل بییە.",
+       "passwordreset-emailsent-capture": "رازینە گوڤاردئن تازە توٙ سی أنجومانامە توٙ کئ ها د هار کئل بییە.",
+       "passwordreset-emailerror-capture": "رازینە گوڤاردئن د أنجومانامە د نۊ زئنە کون کئل بییە،و ڤئ د هار دیاری میکە، ڤألی کئل بییئن ڤئ سی {{GENDER:$2|کاریار}} ناخوش سأرنجوم بییە:$1",
+       "changeemail": "Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 ØªÙ\88Ù\99Ù\86Û\95 Ø¢Ù\84ئشت Ú©Ø§Ø±Û\8c Ø¨Ø£Ú©Û\8cت",
+       "changeemail-text": "ئÛ\8c Ù\86Ù\88Ù\85 Ø¨Ø£Ù\84Ú¯Û\95 Ù\86ئ Ø³Û\8c Ø¢Ù\84ئشت Ø¯Ø£Ø¦Ù\86 ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 ØªÙ\88Ù\99 Ù¾Ù\88ر Ø¨Ø£Ú©Û\8cت. Ø´Ù\88Ù\85ا Ø³Û\8c Ù¾Ù\88شت Ø±Ø§Ø³ Ú©Ø§Ø±Û\8c Ø¦Û\8c Ø¢Ù\84ئشت Ø¨Ø§Û\8cأد Ø±Ø§Ø²Û\8cÙ\86Û\95 Ú¯Ù\88ڤاردئÙ\86 Ø®Ù\88تÙ\88Ù\99Ù\86Û\95 Ø¨Ø£Ø²Ø¦Ù\86یت.",
+       "changeemail-no-info": "Ø´Ù\88Ù\85ا Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø¯ Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ø¯Ø£Ø³Ø±Ø¦Ø³Û\8c Ø¯Ø§Ø´ØªÙ\88Ù\99Û\8cÛ\8cت Ø¨Ø§Ø³ Ø¨Û\8cاÛ\8cÛ\8cت Ú¤Ø§Ù\85Û\8cÙ\86.",
+       "changeemail-oldemail": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ø¦Û\8cسئÙ\86Û\8c:",
+       "changeemail-newemail": "تÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 ØªØ§Ø²Û\95:",
        "changeemail-none": "(هيش كوم)",
-       "changeemail-password": "{{SITENAME}} رازینه گواردن شما:",
-       "changeemail-submit": "Ø¢Ù\84شت Ú©Ø±Ø¯Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87",
-       "changeemail-throttled": "Ø´Ù\85ا Ø§Û\8cسÙ\86Û\8c Ù\81رÙ\87 Ø³Û\8c Ù\88اÙ\85Û\8cÙ\86 Ø§Ù\88Ù\85ائÙ\86 ØªÙ\84اش Ú©Ø±Ø¯Û\8cتÙ\87.\n$1 Ù\84Ø·Ù\81Ù\86 Ø³Û\8c ØªÙ\84اش Ù\87Ù\86Û\8c ØµØ¨Ø± Ø¨Ú©Û\8cد.",
-       "resettokens": "تازه کردن نشونه یا",
-       "resettokens-text": "Ø´Ù\85ا Ø³Û\8c ØµÙ\84ا Ø¯Ø¦Ù\86 Ø¯Ø³Ø±Ø³Û\8c Ù\88Ù\87 Ø±Ø³Û\8cÙ\86Ù\87 Û\8cا Ø®ØµÙ\88صÛ\8c Ú©Ù\87 Ù\87ا Ø¯ Ø­Ø³Ø§Ù\88 Ø§Û\8cÚ\86Ù\86Û\8c ØªÙ\88 Ù\85Û\8c ØªÙ\88Ù\86Û\8cت Ø¯Û\8cارگرÛ\8cا Ù\86Ù\87 Ø¯ Ù\86Ù\88 Ø²Ù\86Ù\87 Ø¨Ú©Û\8cت.\n\nØ´Ù\85ا Ø§Ù\88سÙ\86Û\8c Ù\88اس Ø§Û\8c Ú©Ø§Ø± Ø¨Ú©Û\8cت Ú©Ù\87 Ø±Ø³Û\8cÙ\86Ù\87 Û\8cا Ø´Ù\85ا Ø³Û\8c Û\8cÙ\87 Ú©Ø³Û\8c ØªØ± Ø¨Ø¦Ø± Ø¨Û\8cÙ\87 Û\8cا Ø¯ Ø­Ø³Ø§Ù\88 Ø´Ù\85ا Ú\86Ù\84 Ø¨Û\8cÙ\87.",
-       "resettokens-no-tokens": "Ù\87Û\8cÚ\98 Ù\86Ø´Ù\88Ù\86Ù\87 Ø§Û\8c Ø³Û\8c ØªØ§Ø²Ù\87 Ú©Ø±Ø¯Ù\86 Ù\86ئ.",
+       "changeemail-password": "رازینە گوڤاردئن{{SITENAME}} شوما:",
+       "changeemail-submit": "Ø¢Ù\84ئشت Ø¯Ø£Ø¦Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95",
+       "changeemail-throttled": "Ø´Ù\88Ù\85ا Ø³Û\8c Ú¤Ø§Ù\85Û\8cÙ\86 Ø¦Ù\88Ù\99Ù\85ائÙ\86 Ù\81ئرÛ\95 ØªØ¦Ù\84اش Ú©Ø¦Ø±Ø¯Û\8cتÛ\95.\n$1 Ù\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Ø³Û\8c ØªØ¦Ù\84اش Ù\87Ø£Ù\86Û\8c Ú¯Ù\88رÛ\8c Ø¨Ø¦Ø³Û\8cت.",
+       "resettokens": "تازە کاری نئشوٙنە یا",
+       "resettokens-text": "Ø´Ù\88Ù\85اس Ø³Û\8c ØµØ¦Ù\84ا Ø¯Ø£Ø¦Ù\86 Ø¯Ø£Ø³Ø±Ø³Û\8c Ú¤Ø¦ Ø¯Ø§Ø¯Û\95 Û\8cا Ø®Ù\88صÙ\88Ù\99صÛ\8c Ú©Ø¦ Ù\87اÙ\86 Ø¯ Ø­Ø¦Ø³Ø§Ú¤ Ø¦Û\8cÚ\86ئÙ\86Û\8c ØªÙ\88Ù\99 Ù\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cت Ø¯Û\8cارگأرÛ\8cا Ù\86Û\95 Ø¯ Ù\86Û\8a Ø²Ø¦Ù\86Û\95 Ø¨Ø£Ú©Û\8cت.\n\nئÙ\88Ù\99سئ Ø´Ù\88Ù\85ا Ø¨Ø§Û\8cأد Ø¦Û\8c Ú©Ø§Ø± Ù\86Û\95 Ø£Ù\86جÙ\88Ù\85 Ø¨Ø¦Û\8cت Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø¯Ø§Ø¯Û\95 Û\8cا Ø´Ù\88Ù\85ا Û\8cا Ú¤Ø§ Ú©Ø¦Ø³Û\8c Ù\87Ø£Ù\86Û\8c Ø¨Ø£Ù\87رکارÛ\8c Ø¨Û\8cÛ\8cÛ\95 Û\8cا Û\8cÛ\95 Ú©Ø¦ Ø¯ Ø­Ø¦Ø³Ø§Ú¤ Ø´Ù\88Ù\85ا Ú\86Ù\88Ù\84 Ø¨Û\8cÛ\8cÛ\95.",
+       "resettokens-no-tokens": "Ù\87Û\8cÚ\86 Ù\86ئشÙ\88Ù\99Ù\86Û\95 Û\8cÛ\8c Ø³Û\8c Ø¯ Ù\86Û\8a Ø²Ø¦Ù\86Û\95 Ú©Ø¦Ø±Ø¯Ø¦Ù\86 Ù\86Û\8c.",
        "resettokens-tokens": "نئشوٙنە یا:",
        "resettokens-token-label": "$1 (أرزایئشت تازە: $2)",
-       "resettokens-watchlist-token": "دÛ\8cارگر Ø³Û\8c Ø­Ø±Ø¯Ù\86Û\8c ØªÙ\88رگÙ\87(اتÙ\85/آر Ø§Ø³ Ø§Ø³) Ø³Û\8c [[Ù\88Û\8cجÙ\87:سÛ\8cÙ\84 Ø¨Ø±Ú¯|Ø¢Ù\84شت Ø¯Ø¦Ù\86 Ø¨Ù\84Ú¯Ù\87 Û\8cا Ø¯ Ø³Û\8cÙ\84 Ø¨Ø±Ú¯ØªÙ\88]]",
-       "resettokens-done": "Ù\86Ø´Ù\88Ù\86Ù\87 Û\8cا ØªØ§Ø²Ù\87 Ø¨Û\8cÙ\87.",
-       "resettokens-resetbutton": "Ù\86Ø´Ù\88Ù\86Ù\87 Û\8cا Ø§Ù\86تخاÙ\88 Ø¨Û\8cÙ\87 ØªØ§Ø²Ù\87 Ø¨Ù\88ئÙ\86",
-       "bold_sample": "نیسسه توپر بیه",
-       "bold_tip": "Ù\86Û\8cسسÙ\87 ØªÙ\88پر Ø¨Ù\8aÙ\87",
-       "italic_sample": "Ù\86Û\8cسسÙ\87 Ù\83ج Ù\83Ù\88Ù\84Ù\87",
-       "italic_tip": "Ù\86Û\8cسسÙ\87 Ù\83ج Ù\83Ù\88Ù\84Ù\87",
+       "resettokens-watchlist-token": "دÛ\8cارگأر Ø³Û\8c Ø­Ù\88ڤاÙ\84 Ø­Ù\88Ù\99Ù\86 ØªÙ\88رگÛ\95(أتÙ\88Ù\85/آر Ø¦Ø³ Ø¦Ø³) Ø³Û\8c [[Special:سئÛ\8cÙ\84 Ø¨Ø£Ø±Ú¯|Ø¢Ù\84ئشت Ø¯Ø£Ø¦Ù\86 Ø¨Ø£Ù\84Ú¯Û\95 Û\8cا Ø¯ Ø³Ø¦Û\8cÙ\84 Ø¨Ø£Ø±Ú¯Ø¦ØªÙ\88Ù\99]]",
+       "resettokens-done": "Ù\86ئشÙ\88Ù\99Ù\86Û\95 Û\8cا ØªØ§Ø²Ù\87 Ø¨Û\8cÛ\8cÙ\86Û\95",
+       "resettokens-resetbutton": "Ù\86ئشÙ\88Ù\99Ù\86Û\95 Ú¯Ù\88Ù\84ئ Ú¤Ù\88رÚ\86Û\8cÛ\95 Ø¯ Ù\86Ù\88Ù\99 Ø²Ø¦Ù\86Û\95 Ø¨Û\8cÙ\86Û\95",
+       "bold_sample": "نیسسە توٙپور",
+       "bold_tip": "Ù\86Û\8cسئسÛ\95 ØªÙ\88Ù\99Ù¾Ù\88ر",
+       "italic_sample": "Ù\86Û\8cسئسÛ\95 Ú©Ø£Ø¬ Ù\88 Ú©Ù\88Ù\84Û\95",
+       "italic_tip": "Ù\86Û\8cسئسÛ\95 Û\8cا Ú©Ø£Ø¬ Ù\88 Ú©Ù\88Ù\84Û\95",
        "link_sample": "داسوٙن هوم پئیڤأند",
        "link_tip": "هوم پئیڤأند مینجایی",
-       "extlink_sample": "http://www.example.com Ø¯Ø§Ø³Ù\88Ù\86 Ù\87Ù\88Ù\85 Ù¾Û\8cÙ\88ند",
-       "extlink_tip": "هوم پیوند خارجی(د ویر داشتو)",
-       "headline_sample": "سرخط Ù\86Û\8cسسÙ\87",
-       "headline_tip": "رÛ\8cرتراز 2 Ø®Ø· Ø³Ø± Ù\88ن",
-       "nowiki_sample": "د Ø§Û\8cÚ\86Ù\87 Û\8cÙ\87 Ú¯Ù\84 Ù\86Û\8cسسÙ\87 Ø¨Û\8c Ø´Ù\84Ú© Ù\88ارد Ø¨Ú©Û\8cد",
-       "nowiki_tip": "Ø´Ù\84Ú© Ù\88Û\8cÚ©Û\8c Ù\86Ù\87 Ù\86دÛ\8cد Ø¨Ú¯Ø±",
+       "extlink_sample": "http://www.example.com Ø¯Ø§Ø³Ù\88Ù\99Ù\86 Ù\87Ù\88Ù\85 Ù¾Ø¦Û\8cڤأند",
+       "extlink_tip": "هوم پئیڤأند خارئجی(د ڤیر داشتوٙئیت)",
+       "headline_sample": "سأرخأط Ù\86Û\8cسئسÛ\95",
+       "headline_tip": "رÛ\8cتئراز 2 Ø®Ø£Ø· Ø³Ø£Ø±Ú¤Ø£ن",
+       "nowiki_sample": "د Ø¦Û\8cÚ\86ئ Û\8cئ Ú¯Ø¦Ù\84 Ù\86Û\8cسئسÛ\95 Ø¨Û\8c Ø´Ø¦Ú©Ù\84 Ú¤Ø§Ø±Ø¦Ø¯ Ø¨Ø£Ú©Û\8cت.",
+       "nowiki_tip": "د Ø´Ø¦Ú©Ù\84 Ú¤Û\8cÚ©Û\8c ØªÛ\8cÛ\95 Ù¾Ù\88Ù\99Ø´Û\8c Ø¨Ø£Ú©",
        "image_sample": "Example.jpg",
        "image_tip": "جانیا چار قئر گئرئتە",
        "media_sample": "Example.ogg",
        "showpreview": "نئشوٙ دأئن پیش سئیل",
        "showdiff": "نئشوٙ دأئن آلئشت کاریا",
        "blankarticle": "<strong>زنئار:</strong> بلگه ای که شما دروس کردیته حالیه.\nار شما د نو ری \"{{int:savearticle}}\" بپورنیت, بلگه وه شکل که هیچ مینونه ای دش نبا دروس بوئه.",
-       "anoneditwarning": "<strong>زئÙ\86ار:</strong> Ø´Ù\85ا Ù\87Ù\86Û\8c Ù\86Û\8cÙ\88Ù\85اتÙ\87 Ù\88اÙ\85Û\8cÙ\86. ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\85ا Ù\87ر Ú¯Ø§ØªÛ\8c Ú©Ù\87 Ø¢Ù\84شتÛ\8c Ø±Ø§Ø³ Ø¨Ú©Û\8cت Ø³Û\8c Ú©Ù\84 Ø®Ù\84Ú© Ø¯Û\8cارÙ\87. Ø§Ø± <strong>[$1 Ø±Ù\88ئÛ\8cت Ù\88اÙ\85Û\8cÙ\86]</strong> Û\8cا <strong>[$2 Û\8cÙ\87 Ú¯Ù\84 Ø­Ø³Ø§Ù\88 Ú©Ø§Ø±Û\8cارÛ\8c Ø±Ø§Ø³ Ø¨Ú©Û\8cت]</strong>Ø\8c Ù\88Û\8cراÛ\8cشتÛ\8cا Ø´Ù\85ا Ù\88Ù\87 Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c Ø®Ù\88تÙ\88Ù\86 Ø¯Û\8cارÛ\8c Ù\85Û\8c Ú©Ù\87Ø\8c Ù\88 Ù\88ا Ú\86Û\8cا Ø¨Û\8cتر Ù\87Ù\86Û\8c.",
-       "anonpreviewwarning": "<em>Ø´Ù\85ا Ù\86Û\8cÙ\88Ù\85ائتÙ\87 Ù\88اÙ\85Û\8cÙ\86. ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\85ا Ø¯ Ù\88Û\8cرگار Ù\88Û\8cراÛ\8cشت Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ø§Ù\85اÛ\8cÛ\8cÙ\87 Ø¨Ù\88ئÙ\87.</em>",
-       "missingsummary": "<strong>د ویر ونا:</strong> شما هنی یه گل چکسته ویرایشتی نها اماییه نکردیته.\nار شما د نو د ری\"{{int:savearticle}}\" بپورنیت, ویرایشت شما حالی اماییه بوئه.",
-       "selfredirect": "<strong>هشدار:</strong> شما د حال و بار آلشت دئن لا بلگه وه خوش هیئن.\nشایت دال اشتوایی سی آلشت دئن لا نه انتخاو کردیته، یا شایت بلگه نه اشتوایی ویرایشت می کیت.\n\nار ری \"{{int:savearticle}}\" دوبار بپورنیت، آلشت دئن لا دروس بوئه.",
-       "missingcommenttext": "لطفن د ایچه ویر و باور بیئتو",
-       "missingcommentheader": "<strong>د ویر ونا:</strong> شما هنی یه گل موضوع/سرخط سی ای ویر و باور نها اماییه نکردیته.\nار شما د نو د ری\"{{int:savearticle}}\" بپورنیت, ویرایشت شما حالی اماییه بوئه.",
+       "anoneditwarning": "<strong>زئÙ\86ار:</strong> Ø´Ù\88Ù\85ا Ù\87Ø£Ù\86Û\8c Ù\86Û\8cÙ\88Ù\99Ù\85اÛ\8cتÛ\95 Ú¤Ø§Ù\85Û\8cÙ\86. ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\88Ù\85ا Ø³Û\8c Ù\87أر Ú¯Ø§ØªÛ\8c Ú©Ø¦ Ø¢Ù\84ئشتکارÛ\8c Ø¨Ø£Ú©Û\8cت Ø³Û\8c Ú©Ù\88Ù\84 Ø®Ø£Ù\84Ú© Ø¯Û\8cارÛ\8c Ù\85Û\8c Ú©Û\95. Ø£Ø± <strong>[$1 Ø±Ù\88ئÛ\8cت Ú¤Ø§Ù\85Û\8cÙ\86]</strong> Û\8cا <strong>[$2 Û\8cئ Ú¯Ø¦Ù\84 Ø­Ø¦Ø³Ø§Ú¤ Ú©Ø§Ø±Û\8cارÛ\8c Ø±Ø§Ø³ Ø¨Ø£Ú©Û\8cت]</strong>Ø\8c Ú¤Û\8cراÛ\8cئشتÛ\8cا Ø´Ù\88Ù\85ا Ú¤Ø¦ Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c Ø®Ù\88تÙ\88Ù\99 Ø¯Û\8cارÛ\8c Ù\85Û\8c Ú©Û\95 Ù\88 Ø³Û\8c Ø´Ù\88Ù\85ا Ø¨Û\8cتأرÛ\95.",
+       "anonpreviewwarning": "<em>Ø´Ù\88Ù\85ا Ù\86Û\8cÙ\88Ù\99Ù\85اÛ\8cتÛ\95 Ú¤Ø§Ù\85Û\8cÙ\86. ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\88Ù\85ا Ø¯ Ú¤Û\8cرگار Ú¤Û\8cراÛ\8cئشت Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ø¦Ù\85اÛ\8cÛ\95 Ø¨Ù\88Ù\99Û\95.</em>",
+       "missingsummary": "<strong>ڤیر دیارکو:</strong> شوما هأنی یئ گئل چئکئسە ڤیرایئشتی نە نئها ئمایە کاری نأکئردیتە.\nأر شوما د نۊ د ری \"{{int:savearticle}}\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
+       "selfredirect": "<strong>هوشدار:</strong> شوما د حال و بال ڤاگأردوٙنی ئی بألگە د خوش هیین.\nگاسی دال ئشتئڤایی سی ڤاگأردوٙنی ئنتئخاڤ کئردیتە، یا گاسی بألگە نە ئشتئڤایی ڤیرایئشت کاری می کیت.\nأر ری \"{{int:savearticle}}\" دۊ گئل بأپوٙرنیت، ڤاگأردوٙنی راس موٙە.",
+       "missingcommenttext": "لوطف بأکیت ئیچئ ڤیر و باڤأرئ خوتوٙنە بأنیست.",
+       "missingcommentheader": "<strong>د ڤیر ڤونا:</strong> شوما هأنی یئ گئل داسوٙن/سأرڤأن سی ئی ڤیر و باڤأر نئها ئمایە نأکئردیتە.\nأر شوما یئ گئل هأنی ری \"{{int:savearticle}}\" بأپوٙرنیت، ڤیرایئشت کاری شوما حالی ئمایە بوٙە.",
        "summary-preview": "چئکئسە پیش سئیل:",
-       "subject-preview": "پیش سیل موضو سرخط",
-       "previewerrortext": "یه گل خطا د گاتی که شما میهاستیت یه گل پیش سیل د آلشتیاتو داشتوین پیش اومائه.",
-       "blockedtitle": "کاریار نهاگری بیه",
-       "blockedtext": "<strong>Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c Ø´Ù\85ا Û\8cا ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\85ا Ù\82Ù\84Ù\81 Ø¨Û\8cÙ\87.</strong>\n\n\n$1 Ù\88Ù\86Ù\87 Ù\82Ù\84Ù\81 Ú©Ø±Ø¯Ù\87.\nدÙ\84Û\8cÙ\84 Ù\87ا Ø¯ Ø§Û\8cÚ\86Ù\87<em>$2</em>.\n\nشرÙ\88 Ø¯ Ù\82Ù\84Ù\81 Ø¨Û\8cÛ\8cÙ\86:$8\nآخر Ù\82Ù\84Ù\81 Ø¨Û\8cÛ\8cÙ\86:$6\nکارÛ\8cار Ù\88رتÛ\8cÙ\87 Ù\82Ù\84Ù\81 Ø¨Û\8cÙ\87:$7\n\nØ´Ù\85ا Ù\85Û\8c ØªÙ\88Ù\86Û\8cت Ù\88ا $1 Û\8cا [[{{MediaWiki:Grouppage-sysop}}|دÛ\8cÙ\88Ù\88Ù\86دار]] Ù\87Ù\86Û\8c Ù¾Û\8cÙ\88Ù\86د Ø¨Ø¦Ø±Û\8cت Ù\88 Ø³Û\8c Ù\82Ù\84Ù\81 Ú©Ø±Ø¯Ù\86 Ú\86Ú© Ú\86Ù\86Ù\87 Ø¨Ø²Ù\86Û\8cت.\nاÙ\84Ù\88ت Ø¯ Ù\88Û\8cر Ø¯Ø§Ø´ØªÙ\88Û\8cت Ú©Ù\87 Ø´Ù\85ا Ù\86Ù\85Û\8c ØªÙ\88Ù\86Û\8cت Ø¯ Ø®ØµÙ\88صÛ\8cت Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ú©Ù\84 Ú©Ø±Ø¯Ù\86 Ø³Û\8c Ø§Û\8c Ú©Ø§Ø±Ø¨Ø± Ø§Ø³ØªÙ\81ادÙ\87 Ø¨Ú©Û\8cت Ù\85ئر  Û\8cÙ\87 Ú¯Ù\84 ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ù\85عتÙ\88ر Ø¯ [[Special:Preferences|ترجÛ\8cØ­Û\8cا Ú©Ø§Ø±Û\8cارÛ\8c]] Ø®Ù\88تÙ\88 Ù\85عÙ\84Ù\88Ù\85 Ú©Ø±Ø¯Ù\87 Ø¨Ù\88Û\8cت Ù\88 Ø¨Ø§Û\8cد Ø§Ù\85کاÙ\86 Ù\88Ù\87 Ú©Ø§Ø± Ø¨Ø³ØªÙ\86 Ù\88Ù\87 Ù\86Ù\87 Ø¯Ø§Ø´ØªÙ\88Û\8cتÙ\88\nتÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø¢Û\8c Ù¾Û\8c Ø§Û\8cسÙ\86Û\8c Ø´Ù\85ا $3 Ø¦Ù\87Ø\8c Ù\88 Ù\86Ù\88Ù\85 Ø¯Û\8cارکÙ\86 Ù\82Ù\84Ù\81 Ú©Ø±Ø¯Ù\86 #$5 Ø¦Ù\87.\nÙ\84Ø·Ù\81ا Ù\87Ù\85Ù\87 Ø¬Ø²Ø¦Û\8cات Ù\86Ù\87 Ø¯ Ù\87ر Ø­Ø§Ø³ØªÙ\87 Ø§Û\8c Ú©Ù\87 Ø¯Ø§Ø±Û\8cت Ø¨Ù\88ئیت.",
-       "autoblockedtext": "نوم کاریاری شما یا تیرنشون آی پی شما سی یه که یه گل کاریاری هنی وه کارش بسته خودانجومن قلف بیه $1 ونه قلف کرده.\nدلیل ها د ایچه\n\n:<em>$2</em>.\n\nشرو د قلف بیین:$8\nآخر قلف بیین:$6\nکاریار ورتیه قلف بیه:$7\n\nشما می تونیت وا $1 یا [[{{MediaWiki:Grouppage-sysop}}|دیووندار]] هنی پیوند بئریت و سی قلف کردن چک چنه بزنیت.\n\nالوت د ویر داشتویت که شما نمی تونیت د خصوصیت انجومانامه کل کردن سی ای کاربر استفاده بکیت مئر  یه گل تیرنشون انجومانامه معتور د [[Special:Preferences|ترجیحیا کاریاری]] خوتو دیاری کرده بویت و باید امکان وه کار بستن وه نه داشتویت.\n\nتیرنشون آی پی ایسنی شما $3 ئه، و نوم دیارکن قلف کردن #$5 ئه.\nلطفا همه جزئیات نه د هر حاسته ای که داریت بوئیت.",
-       "blockednoreason": "Ù\87Û\8cÚ\98 Ø¯Ù\84Û\8cÙ\84Û\8c Ø¯Ø¦Ù\87 Ù\86بÛ\8cÙ\87",
-       "whitelistedittext": "شما باید $1 سی ویرایشت بلگیا",
-       "confirmedittext": "Ø´Ù\85ا Ù\88اس Ø¯Ù\85ا Ù\88Û\8cراÛ\8cشت Ú©Ø±Ø¯Ù\86 Ø¨Ù\84Ú¯Ù\87 Û\8cا ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø§Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 ØªÙ\88Ù\86Ù\87 Ù¾Ø´Øª Ø±Ø§Ø³ Ø¨Ú©Û\8cت.\nÙ\84Ø·Ù\81ا Û\8cÙ\87 Ú¯Ù\84 ØªÛ\8cرÙ\86Ø´Ù\88Ù\86 Ø®Ù\88 Ø³Û\8c [[Special:اÙ\88Ù\84Ù\88Û\8cتÛ\8cا|اÙ\88Ù\84Ù\88Û\8cتÛ\8cا Ú©Ø§Ø±Û\8cار]] Ø¨نیت.",
-       "nosuchsectiontitle": "نبوئه بشخ پیدا بوئه",
-       "nosuchsectiontext": "Ø´Ù\85ا Ø³Û\8c Ù\88Û\8cراÛ\8cشت Ú©Ø±Ø¯Ù\86 Ø¬Ø§Û\8cÛ\8c Ú©Ù\87 Ù\88جÙ\88د Ù\86ارÙ\87 ØªÙ\84اش Ú©Ø±Ø¯Û\8cتÙ\87.\nشات Ù\88Ù\87 Ø§Ù\88سÙ\87 Ú©Ù\87 Ø´Ù\85ا Ø¨Ù\84Ú¯Ù\87 Ù\86Ù\87 Ù\85Û\8c Ø¯Û\8cئتÙ\87 Ø¬Ø§ Ù\88Ù\87 Ø¬Ø§ Ø¨Û\8cÙ\87 Û\8cا Ù¾Ø§Ú©Ø³Ø§ Ø¨Û\8cÙ\87.",
-       "loginreqtitle": "ڤامین ئوٙمائن لازئمە",
+       "subject-preview": "داسوٙن/پیش سئیل سأرخأط:",
+       "previewerrortext": "یئ گئل خأطا د گاتی کئ شوما میهاستیت یئ گئل پیش سئل د آلئشتیاتوٙ داشتوٙین پیش ئوٙماە.",
+       "blockedtitle": "کاریار نئهاگئری بی",
+       "blockedtext": "<strong>Ù\86Ù\88Ù\85 Ú©Ø§Ø±Û\8cارÛ\8c Ø´Ù\88Ù\85ا Û\8cا ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø¢Û\8c Ù¾Û\8c Ø´Ù\88Ù\85ا Ù\86ئÙ\87اگئرÛ\8c Ø¨Û\8cÛ\8cÛ\95.</strong>\n\n\n$1 Ú¤Ø¦Ù\86Û\95 Ù\86ئÙ\87اگئرÛ\8c Ú©Ø¦Ø±Ø¯Û\95.\nدأÙ\84Û\8cÙ\84ئش Ù\87ا Ø¯ Ø¦Û\8cÚ\86ئ<em>$2</em>.\n\nØ´Ù\88رÙ\88Ù\99 Ø¯ Ù\86ئÙ\87اگئرÛ\8c:$8\nآخئر Ù\86ئÙ\87اگئرÛ\8c:$6\nکارÛ\8cارÛ\8c Ú©Ø¦ Ù\87ا Ú¤Ø£Ø±ØªÛ\8cÛ\95 Ù\88 Ù\86ئÙ\87اگئرÛ\8c Ø¨Û\8cÛ\8cÛ\95:$7\n\nØ´Ù\88Ù\85ا Ù\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cت Ú¤Ø§ $1 Û\8cا [[{{MediaWiki:Grouppage-sysop}}|سأردÛ\8cÚ¤Ù\88Ù\99Ù\86کار]] Ù\87Ø£Ù\86Û\8c Ù¾Ø¦Û\8cڤأÙ\86د Ø¨Ø¦Û\8cرÛ\8cت Ù\88 Ø³Û\8c Ù\86ئÙ\87اگئرÛ\8c Ú¤Ø§ Ú¤Ø¦ Ú\86Ø£Ú© Ú\86ئÙ\86Û\95 Ú©Ø§Ø±Û\8c Ø¨Ø£Ú©Û\8cت.\nØ£Ù\84ڤأت Ø¯ Ú¤Û\8cر Ø¯Ø§Ø´ØªÙ\88Ù\99ئÛ\8cت Ú©Ø¦ Ø´Ù\88Ù\85ا Ù\86ئÙ\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cت Ø®Ù\88صÛ\89صÛ\8cأت Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ú©Ø¦Ù\84 Ú©Ø¦Ø±Ø¯Ø¦Ù\86 Ø³Û\8c Ø¦Û\8c Ú©Ø§Ø±Û\8cار Ù\86Û\95 Ú¤Ø¦ Ú©Ø§Ø± Ø¨Ø¦Û\8cرÛ\8cتØ\8c Ù\85أر Û\8cÛ\95 Ú©Ø¦ Û\8cئ Ú¯Ø¦Ù\84 ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ù\86ازار Ù\86Û\95 [[Special:Preferences|تأرجÛ\8cحات Ú©Ø§Ø±Û\8cارÛ\8c]] Ø®Ù\88تÙ\88Ù\99 Ø¯Û\8cارÛ\8c Ú©Ø¦Ø±Ø¯Ø¦Ù\88Ù\99Û\8cت Ù\88 ØªÙ\88Ù\99Ù\86ئستÙ\88Ù\99Û\8cت Ú¤Ø¦ Ù\86Û\95 Ú¤Ø¦ Ú©Ø§Ø± Ø¨Ø¦Û\8cرÛ\8cت .\nتÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø¢Û\8c Ù¾Û\8c Ø¦Û\8cسئÙ\86Û\8c Ø´Ù\88Ù\85ا $3Û\95Ø\8c Ù\88 Ù\86Ù\88Ù\85 Ø¯Û\8cارکÙ\88Ù\86 Ù\86ئÙ\87اگئرÛ\8c #$5 Û\95.\nÙ\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Ù\87Ø£Ù\85Û\95 Ú\86Û\8cاÙ\86Û\95 Ø¯ Ù\87أر Ø­Ø§Ø³ØªÛ\95 Û\8cÛ\8c Ú©Ø¦ Ø¯Ø§Ø±Û\8cت Ø¨Ù\88Ù\99ئیت.",
+       "autoblockedtext": "<strong>نوم کاریاری شوما یا تیرنئشوٙن آی پی شوما سی یە کئ یئ گئل کاریاری هأنی ڤئ نە ڤئ کار گئرئتە خودأنجومأن ڤئ دأس $1 نئهاگئری بییە.</strong>\n\n\n$1 ڤئنە نئهاگئری کئردە.\nدألیلئش ها د ئیچئ\n<em>$2</em>.\n\nشوروٙ د نئهاگئری:$8\nآخئر نئهاگئری:$6\nکاریاری کئ ها ڤأرتیە و نئهاگئری بییە:$7\n\nشوما می توٙنیت ڤا $1 یا [[{{MediaWiki:Grouppage-sysop}}|سأردیڤوٙنکار]] هأنی پئیڤأند بئیریت و سی نئهاگئری ڤا ڤئ چأک چئنە کاری بأکیت.\nألڤأت د ڤیر داشتوٙئیت کئ شوما نئمی توٙنیت خوصۉصیأت أنجومانامە کئل کئردئن سی ئی کاریار نە ڤئ کار بئیریت، مأر یە کئ یئ گئل تیرنئشوٙن أنجومانامە نازار نە [[Special:Preferences|تأرجیحات کاریاری]] خوتوٙ دیاری کئردئوٙیت و توٙنئستوٙیت ڤئ نە ڤئ کار بئیریت .\nتیرنئشوٙن آی پی ئیسئنی شوما $3ە، و نوم دیارکون نئهاگئری #$5 ە.\nلوطف بأکیت هأمە چیانە د هأر حاستە یی کئ داریت بوٙئیت.",
+       "blockednoreason": "Ù\87Û\8cÚ\86 Ø¯Ø£Ù\84Û\8cÙ\84Û\8c Ú¯Ù\88تÛ\95 Ù\86أبÛ\8cÛ\8cÛ\95",
+       "whitelistedittext": "$1 لوطف بأکیت بألگە یا نە ڤیرایئشت کاری بأکیت.",
+       "confirmedittext": "Ø´Ù\88Ù\85ا Ø¨Ø§Û\8cأد Ø¯Ø¦Ù\85ا Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Û\8cا ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 ØªÙ\88Ù\99Ù\86Û\95 Ù¾Ù\88شت Ø±Ø§Ø³ Ø¨Ø£Ú©Û\8cت.\nÙ\84Ù\88Ø·Ù\81 Ø¨Ø£Ú©Û\8cت Û\8cئ Ú¯Ø¦Ù\84 ØªÛ\8cرÙ\86ئشÙ\88Ù\99Ù\86 Ù\86ازار Ø³Û\8c [[Special:Ú\86Û\8cا Ù\85Ù\88Ù\87ئÙ\85تئر|Ú\86Û\8cا Ù\85Ù\88Ù\87ئÙ\85تئر Ø³Û\8c Ú©Ø§Ø±Û\8cار]] Ø¨Ø£نیت.",
+       "nosuchsectiontitle": "بأرجا پئیدا نأبوٙە",
+       "nosuchsectiontext": "Ø´Ù\88Ù\85ا Ø³Û\8c Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø¬Ø§Û\8cÛ\8c Ú©Ø¦ Ú¤Ù\88جÙ\88Ù\99د Ù\86ارÛ\95 ØªØ¦Ù\84اش Ú©Ø¦Ø±Ø¯Û\8cتÛ\95.\nگاسÛ\8c Ú¤Ø¦ Ø¦Ù\88Ù\99سئ Ú©Ø¦ Ø´Ù\88Ù\85ا Ø¨Ø£Ù\84Ú¯Û\95 Ù\86Û\95 Ø¯Ø¦Û\8cتÛ\95 Ø¬Ø§ Ú¤Ø¦ Ø¬Ø§ Ø¨Û\8cÛ\8cÛ\95 Û\8cا Ù¾Ø§Ú©Ø³Ø§ Ø¨Û\8cÛ\8cÛ\95.",
+       "loginreqtitle": "ڤامین ئوٙمائن گأرأکە",
        "loginreqlink": "ڤامین ئوٙمائن",
-       "loginreqpagetext": "$1 لطف بکید بلگه یا هنی نه بوینیت",
+       "loginreqpagetext": "$1 لوطف بأکیت بألگە یا هأنی نە سئیل بأکیت.",
        "accmailtitle": "رازینە گوڤاردئن کئل بی",
-       "accmailtext": "یه گل رازینه گواردن شامسکی سی[[چک چنه کاریار:$1|$1]] سی $2 کل بیه.بوئه وه نه د گات وه کار بستن بلگه اومائن وامین د <em>[[Special:آلشت دئن رازینه گواردن|آلشت دئن رازینه گواردن]]</em>  آلشت دئه بوئه.",
+       "accmailtext": "یئ گئل رازینە گوڤاردئن شامسأکی سی[[User talk:$1|$1]] سی $2 کئل بییە.بوٙە ڤئنە د گات ڤئ کار گئرئتئن بألگە ڤامین ئوٙمائن <em>[[Special:آلئشت دأئن رازینە گوڤاردئن|آلئشت دأئن رازینە گوڤاردئن]]</em> آلئشت کاری با.",
        "newarticle": "تازە",
-       "newarticletext": "Ø´Ù\85ا Ù\88ادÙ\85ا Ù\87Ù\88Ù\85 Ù¾Û\8cÙ\88Ù\86دÛ\8c Ù\87ئÛ\8cت Ú©Ù\87 Ù\88جÙ\88د Ù\86ارÙ\87.\nسÛ\8c Ø±Ø§Ø³ Ú©Ø±Ø¯Ù\86 Ø¨Ù\84Ú¯Ù\87.شرÙ\88 Ø¯ Ù\86Û\8cسÙ\86Ù\86 Ù\85ئÙ\86 Ø¬Ø¹Ù\88Ù\87 Ù\87ارÛ\8c Ø¨Ú©Û\8cد(سÛ\8cÙ\84[$1 ] Ø³Û\8c Ø¯Ù\88Ù\86سÙ\85Ù\86Û\8c Ø¨Û\8cشتر Ø¨Ú©Û\8cد).\nار Ø´Ù\85ا Ø³Û\8c Ø§Ø´ØªÙ\88ا Ú©Ø±Ø¯Ù\86 Ù\87اÛ\8cئÙ\86 Ø§Û\8cÚ\86Ù\87Ø\8c Ø¯Ú¯Ù\85Ù\87 Ù\88ادÙ\85ا Ø±Ø¦ØªÙ\86 Ø¯Ù\88ارتÙ\87 Ù\86Û\8cئر ØªÙ\88Ù\86Ù\87 Ø¨Ù¾Ù\88رنیت.",
+       "newarticletext": "Ø´Ù\88Ù\85ا Ù\87اÛ\8cÛ\8cÙ\86 Ú¤Ø§ Ø¯Ø¦Ù\85ا Ù\87Ù\88Ù\85 Ù¾Ø¦Û\8cڤأÙ\86دÛ\8c Ú©Ø¦ Ú¤Ù\88جÙ\88Ù\99د Ù\86ارÛ\95.\nسÛ\8c Ø±Ø£Ú¤Ø£Ù\86دÛ\8cارÛ\8c Ø¨Ø£Ù\84Ú¯Û\95.Ø´Ù\88رÙ\88Ù\99 Ø¨Ø£Ú©Û\8cت Ù\85Û\8cÙ\86ئ Ø¬Ø£Ú¤Û\95 Ù\87ارÛ\8c Ø¨Ø£Ù\86Û\8cسÛ\8cت (سÛ\8c Ø¯Ù\88Ù\99Ù\86ئسئÙ\86 Ø¨Û\8cشتئر Ø³Ø¦Û\8cÙ\84 [$1 ] Ø¨Ø£Ú©Û\8cت).\nأر Ø´Ù\88Ù\85ا Ø³Û\8c Ø¦Ø´ØªØ¦Ú¤Ø§ Ú©Ø¦Ø±Ø¯Ø¦Ù\86 Ù\87ائÛ\8cت Ø¦Û\8cÚ\86ئØ\8c Ø±Û\8c Ø¯Ù\88Ú¯Ù\85Û\95 Ú¤Ø§Ø¯Ø¦Ù\85ا Ø±Ø£ØªØ¦Ù\86 Ø¯Ù\88ڤارتÛ\95 Ù\86Û\8cأر Ø¨Ø£Ù¾Ù\88Ù\99رنیت.",
        "anontalkpagetext": "----",
-       "noarticletext": "د ØªØ§Ø²Ù\87 Û\8cا Ø¯ Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Û\8cسسÙ\87 Ù\86Û\8c.\nØ´Ù\85ا Ù\85Û\8c ØªÙ\88Ù\86Û\8cت Ø¯[[Special:Search/{{PAGENAME}}|بگردÛ\8cد]] Ø¯ Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Û\8cا Ø¯ Ø¨Ù\84Ú¯Û\8cا Ù\87Ù\86Û\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ø¯ Ù\87Ù\86Û\8c Ù¾Û\8c Ø¬Ù\88رÛ\8c Ø¨Ù\88ئÙ\87]</span>Ø\8c <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} Û\8cاÛ\8c Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Ù\87 Ù\88Û\8cراÛ\8cشت Ø¨Ú©Û\8cد]</span>.",
-       "noarticletext-nopermission": "د ØªØ§Ø²Ù\87 Û\8cا Ø¯ Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Û\8cسسÙ\87 Ù\86Û\8c.\nØ´Ù\85ا Ù\85Û\8c ØªÙ\88Ù\86Û\8cت Ø¯ [[Special:Search/{{PAGENAME}}|بگردÛ\8cد]] Ø¯ Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Û\8cا Ø¯ Ø¨Ù\84Ú¯Û\8cا Ù\87Ù\86Û\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}   Ø¯ Ù\87Ù\86Û\8c Ù¾Û\8c Ø¬Ù\88رÛ\8c Ø¨Ù\88ئÙ\87]</span> Ø§Ù\85ا Ø´Ù\85ا Ø­Ù\82 Ù\86ارÛ\8cتÙ\88 Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Ù\87 Ø±Ø§Ø³ Ø¨Ú©یت.",
-       "missing-revision": "وانئیری #$1 د بلگه ای که نومش ونه \"{{FULLPAGENAME}}\" وجود ناره.\n\nشایت بانی جاونه وه وا یه گل ویرگار وه هنگوم نبیه که د یه گل بلگه پاکسا بیه هوم پیوند بیه بوئه.\nشایت جزئیات د   [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log]  پیدا بوئن.",
+       "noarticletext": "د Ø¦Û\8cسئÙ\86Û\8cا Ø¯ Ø¦Û\8c Ø¨Ø£Ù\84گؤ Ù\86Û\8cسئسÛ\95 Û\8cÛ\8c Ú¤Ù\88جÙ\88Ù\99د Ù\86اشتÛ\95.\nØ´Ù\88Ù\85ا Ù\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cت Ø¯[[Special:Search/{{PAGENAME}}|بگردÛ\8cد]] Ø¯ Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Û\8cا Ø¯ Ø¨Ø£Ù\84Ú¯Û\95 Ù\87Ø£Ù\86Û\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ø¯ Ù\87Ø£Ù\86Û\8c Ù\86Û\95 Ù¾Ø¦Û\8c Ø¬Ù\88رÛ\8c Ø¨Ù\88Ù\99Û\95]</span>Ø\8c <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} Û\8cا Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù\86Û\95 Ú¤Û\8cراÛ\8cئشت Ø¨Ø£Ú©Û\8cت]</span>.",
+       "noarticletext-nopermission": "د Ø¦Û\8cسئÙ\86Û\8cا Ø¯ Ø¦Û\8c Ø¨Ø£Ù\84گؤ Ù\86Û\8cسئسÛ\95 Û\8cÛ\8c Ú¤Ù\88جÙ\88Ù\99د Ù\86اشتÛ\95.\nØ´Ù\88Ù\85ا Ù\85Û\8c ØªÙ\88Ù\99Ù\86Û\8cت Ø¯[[Special:Search/{{PAGENAME}}|بگردÛ\8cد]] Ø¯ Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Û\8cا Ø¯ Ø¨Ø£Ù\84Ú¯Û\95 Ù\87Ø£Ù\86Û\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ø¯ Ù\87Ø£Ù\86Û\8c Ù\86Û\95 Ù¾Ø¦Û\8c Ø¬Ù\88رÛ\8c Ø¨Ù\88Ù\99Û\95]</span>Ø\8c <span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}}</span>.ڤأÙ\84Û\8c Ø´Ù\88Ù\85ا ØµØ¦Ù\84ا Û\8cÛ\95 Ù\86Û\95 Ú©Ø¦ Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù\86Û\95 Ø±Ø§Ø³ Ø¨Ø£Ú©Û\8cت Ù\86اریت.",
+       "missing-revision": "ڤانئیأری #$1 د بألگە یی کئ نومئش ڤئنە \"{{FULLPAGENAME}}\" ڤوجوٙد نارە.\n\nگاسی سی یئ گئل ڤیرگار ڤئ هئنگوم نأبییە کئ د یئ گئل بألگە پاکسا بییە هوم پئیڤأند بییە رأڤأندیاری بییە.\nگاسی جوزئیات د[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} deletion log] دیاری بأکأن.",
        "userpage-userdoesnotexist": "حساو کاریاری\"$1\" ثوت نام نبیه.\nار میهایت ای بلگه نه بسازیتو یا ویرایشت بکیت یه گل وارسی انجوم بئیت.",
-       "userpage-userdoesnotexist-view": "حساÙ\88 Ú©Ø§Ø±Ù\88ر\"$1\" Ø«Ù\88ت Ù\86بÛ\8cÙ\87.",
+       "userpage-userdoesnotexist-view": "حئساڤ Ú©Ø§Ø±Û\8cارÛ\8c \"$1\" Ø«Ø£Ú¤Øª Ù\86أبÛ\8cÛ\8cÛ\95.",
        "blocked-notice-logextract": "ای کاریار ایسنی دسرسی ناره.\nآخری پهرستنومه قلف ورودی د هار ایچه سی سرچشمه آماده بیه:",
        "clearyourcache": "<strong>د ویر داشتویت:</strong> نها اماییه کاری, شات مژبور وه وه کار ونن ویرگه نهو دوارته نیئر خوتو سی دیئن ای آلشتیا بوئیت .\n* <strong>فایرفاکس/ سفری:</strong> بپورنیت ری<em>شیفت</em> اوسه که می پورنیت<em>د نو سوار بوئه</em>یا هنی ری <em>Ctrl-F5</em> بپورنیت یا<em>Ctrl-R</em> (<em>⌘-R</em> د سامونه مک)\n* <strong>گوگل کروم:</ strong>بپورنیت ری <em>Ctrl-Shift-R</em> (<em>⌘-Shift-R</em> یا د سامونه)\n* <strong>اینترنت اکسپلورر:</strong> <em>Ctrl</em> واداریت اوسه که می پورنیت ری <em>Refresh</em>, یل بپورنیت ری<em>Ctrl-F5</em>\n* <strong>اوپرا:</strong> ویرگه نهو نه د <em>اوزاریا→ اولویتیا پاک بکیت</em>",
        "usercssyoucanpreview": "<strong>نکته:</strong> د دگمه \"{{int:showpreview}}\" سی آزماشت کردن سی اس اس تازه دما اماییه کاری وه کار بیئریت.",
        "sitecsspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای سی اس اس  نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
        "sitejspreview": "<strong>د ویر داشتوئیت که شما فقط می تونیت ای ای جاوا اسکریپت نه فقط پیش سیل بکیت. وه د ایسنی هنی اماییه نبیه!</strong>",
        "userinvalidcssjstitle": "<strong>زئنار:</strong> پوسه \"$1\" نیئش.\nسی اس اس جاونه و بلگه یا جاوا اسکریپت  سرون وا حرف کؤچک نه وه کار بسته، همچنو{{ns:کاریار}}:فو/وکتور.سی اس اس چی د ضد{{ns:کاریار}}:فو/وکتور. سی اس اسه.",
-       "updated": "(تازه بيه)",
+       "updated": "(ڤئ هئنگوم سازی بییە)",
        "note": "'''نیسأنئن:'''",
        "previewnote": "فقط ای پیش سیل د ویرتو با.\nآلشتیاتو هنی اماییه نبیه.",
-       "continue-editing": "رو د راساگه ویرایشت",
+       "continue-editing": "رو د راساگە ڤیرایئشت کاری",
        "previewconflict": "ورگشت پیش سیل د نیسسه د راساگه وارو ویرایشت چی شکل دیار بیین بوئه ار شما وه نه سی اماییه کردن انتخاو بکیت.",
        "session_fail_preview": "<strong>د بدبختی ما سی یه که رسینه یا جلسه مونه د دس دئیمه نمی تونیم کار پردازشت ویرایشت شمانه انجوم بیئمو.</strong>\nلطفن هنی تلاش بکیت.\nار هنی کار وه دروس کار نکرد،[[Special:UserLogout|اومائن وه در]] نه ازمایشت بکیت و د نو بیایت وامین.",
        "session_fail_preview_html": "<strong>د بدبختی ما سی یه که رسینه یا جلسه مونه د دس دئیمه نمی تونیم کار پردازشت ویرایشت شمانه انجوم بیئمو.</strong>\nلطفن هنی تلاش بکیت.\n\n<em>سی یه که {{نوم دیارگه}} یه گل ردیف اچ تی ام ال کنشتگر بیه داره، پیش سیل سی یه که د دس حمله یا جاوا اسکریپ د امون با قام کرده بیه..</em>\n\n<strong>ار وه گات قانونی تلاش سی ویرایشته،لطفا د نو تلاش بکیت.</strong>\nار هنی کار وه دروس کار نکرد،[[Special:UserLogout|اومائن وه در]] نه ازمایشت بکیت و د نو بیایت وامین.",
        "readonlywarning": "<strong>زئنار:رسینه گا سی واداشت قلف بیه، سی یه نه که شما ایسه نمی تونیت ویرایشتیاتونه اماییه بکیت.</strong>\nشات شما بحایت که نیسسه خوتونه د جانیا نیسسه ای وردار بدیس بکیت و ونه سی نهاتر اماییه بکیت.\n\nدیوونداری که ونه قلف کرده چنی گوته:$1",
        "protectedpagewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
        "semiprotectedpagewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
-       "cascadeprotectedwarning": "<strong>زئÙ\86ار:</strong> Ø§Û\8c Ø¨Ù\84Ú¯Ù\87",
+       "cascadeprotectedwarning": "<strong>زئÙ\86ار:</strong> Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Ø¦ Ø¯Ø£Ø³ Ú©Ø§Ø±Û\8cارÛ\8cاÛ\8cÛ\8c Ú©Ø¦ ØµØ¦Ù\84ا Ø³Ø£Ø±Ø¯Û\8cÚ¤Ù\88Ù\99Ù\86کارÛ\8c Ø¯Ø§Ø±Ù\86 Ù\85Û\8c ØªÙ\88Ù\99Ù\86Û\95 Ú¤Û\8cراÛ\8cئشت Ú©Ø§Ø±Û\8c Ø¨Ù\88Ù\99Û\95 Ø³Û\8c Û\8cÛ\95 Ú©Ø¦ Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Ø¦ Ø±Ø£Ú¤Ø¦Ø´Øª ØªØ§Ù\81 Ù\86ئÙ\85اÛ\8cÛ\8c Ù¾Ø£Ø± Ù\88 Ù¾Û\8cÙ\85 Ú©Ø§Ø±Û\8c Ø¨Û\8cÛ\8cÛ\95 {{PLURAL:$1|بأÙ\84Ú¯Û\95|بأÙ\84Ú¯Û\95 Û\8cا}}:",
        "titleprotectedwarning": "<strong>زئنار:ای بلگه پر و پیم بیه سی یه که[[ویجه:نوم گه حقوق گرو|حقوق ویجه]] باید ونه دروس بکن .</strong>\nآخرین پهرستنومه دئه بیه سی سرچشمه دئن نهااماییه بیه:",
        "templatesused": "{{PLURAL:$1|چوئه|چوئه یا}} د ای بلگه وه کار گرته بیه:",
        "templatesusedpreview": "{{PLURAL:$1|چوئه|چوئه یا}}استفاده بیه د ای پیش سیل:",
        "nocreate-loggedin": "شوما صئلا راس کئردئن بألگە تازە نە ناریت.",
        "sectioneditnotsupported-title": "ویرایشت بهرجا حامین داری نبوئه",
        "sectioneditnotsupported-text": "ڤیرایئشت بأرجایی د ئی بألگە نیئش.",
-       "permissionserrors": "خطا Ø§Ø¬Ø§Ø²Ù\87 Ø¯Ø¦Û\8cن",
+       "permissionserrors": "خأطا ØµØ¦Ù\84ا Ø¯Ø£Ø¦ن",
        "permissionserrorstext": "شما حق ناریت ونه انجوم بیئت, سی{{PLURAL:$1|دلیل|دلیلیا}} نهایی:",
        "permissionserrorstext-withaction": "شما سی $2 اجازه ناریت\nسی نهاگری {{PLURAL:$1|دلیل|دلیلیا}}:",
        "recreate-moveddeleted-warn": "'''زنهار شما بلگه ای که وادما پاکسا بیه هنی راس کردیته'''\nشما باید دونسه بایت که آیا هنی سی نها گرتن ویرایشت ای بلگه خوئه.\nپاکسا بیئن و جمشت سی ای بلگه سی فراغتتو آماده بیه:",
        "revdelete-no-file": "جانیا تیار بیه وجود ناره.",
        "revdelete-show-file-confirm": "شما د دل میهایت که وانئری پاکسا بیه ای جانیا نه بونیت \"<nowiki>$1</nowiki>\" د $2 تا $3؟",
        "revdelete-show-file-submit": "هأری",
-       "revdelete-selected-text": "{{PLURAL:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
-       "revdelete-selected-file": "{{PLURAL:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
-       "logdelete-selected": "{{PLURAL:$1|پهرستنومه رخ ونیا انتخاو بیه|پهرستنومه رخ ونیا انتخاو بیه}}:",
+       "revdelete-selected-text": "{{PLURAL:$1|ڤانئیأری گول گئر بییە|ڤانئیأریا گول گئر بییە}} د [[:$2]]:",
+       "revdelete-selected-file": "{{PLURAL:$1|ڤانئیأری گول گئر بییە جانیا|ڤانئیأریا گول گئر بییە جانیا}} د [[:$2]]:",
+       "logdelete-selected": "{{PLURAL:$1|پئھرئستنوٙمە روخ ڤأن گول گئر بییە|پئھرئستنوٙمە روخ ڤأنیا گول گئر بییە}}:",
        "revdelete-text-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
        "revdelete-text-file": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
        "logdelete-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
        "next-page": "بلگه نهایی",
        "prevn-title": "پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
        "nextn-title": "نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}",
-       "shown-title": "Ù\86Ø´Ù\88Ù\86 Ø¯Ø¦Ù\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87\86تÙ\8aجÙ\87}} Ø³Û\8c Ù\87ر Ø¨Ù\84Ú¯Ù\87",
+       "shown-title": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£Ø¦Ù\86 $1 {{PLURAL:$1|Ù\86أتÛ\8cجÛ\95\86أتÛ\8cجÛ\95}} Ø³Û\8c Ù\87أر Ø¨Ø£Ù\84Ú¯Û\95",
        "viewprevnext": "ديئن ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''ایچه بلگه ای هئ وه نوم\"[[:$1]]\" که ها د ای ویکی'''",
        "searchmenu-new": "'''ای بلگه نه راس كو \"[[:$1]]\" د ای  ويكي!'''",
        "searchprofile-everything-tooltip": "همه مینونه یا نه پی جوری كو (شاملا بلگيا چك چنه)",
        "searchprofile-advanced-tooltip": "نوم جايا نوم ديار بگرد",
        "search-result-size": "$1 ({{PLURAL:$2|1 کلیمه|$2 کلیمه یا}})",
-       "search-result-category-size": "{{PLURAL:$1|1 Ø§Ù\86دÙ\88Ù\85|$1 Ø§Ù\86دÙ\88Ù\85Û\8cا}} ({{PLURAL:$2|1 Ø²Û\8cردسÙ\87|$2 Ø²Û\8cردسÙ\87 Û\8cا}}, {{PLURAL:$3|1 جانیا|$3 جانیایا}}",
+       "search-result-category-size": "{{PLURAL:$1|1 Ø£Ù\86دÙ\88Ù\85|$1 Ø£Ù\86دÙ\88Ù\85Û\8cا}} ({{PLURAL:$2|1 Ø²Û\8cردأسÛ\95|$2 Ø²Û\8cردأسÛ\95 Û\8cا}}Ø\8c {{PLURAL:$3|1 جانیا|$3 جانیایا}}",
        "search-redirect": "(ورگشتن $1)",
        "search-section": "(بهرجا $1)",
        "search-category": "(دسه $1)",
        "search-nonefound": "هیژ نتیجه یی وا پی جست تو یکی نئ.",
        "powersearch-legend": "پی جوری پیشکرده",
        "powersearch-ns": "د نوم جايا نوم ديار پی جوری بک:",
-       "powersearch-togglelabel": "Ú\86Ù\83 Ù\83ردن:",
-       "powersearch-toggleall": "همه",
+       "powersearch-togglelabel": "ڤارئسÛ\8c Ú©Ø¦Ø±Ø¯Ø¦ن:",
+       "powersearch-toggleall": "هأمە",
        "powersearch-togglenone": "هيش كوم",
        "powersearch-remember": "د ویر داشتن انتخاو سی پی جوریا نهایی",
        "search-external": "پی جوری د در",
        "searchdisabled": "مئن جوری د {{SITENAME}} کنشتگر نئ.\nموقتاً می تونیت مئن جوری Google نه بونیت وه کار.\nد ویرتو با که نتیجه یایی که د مئن جوری وا او روشت وه دست میان شایت وه روز نبان.",
        "search-error": "یه گل خطا سی اوسنی که پی جوری می کردیت اتفاق افتائه:$1",
-       "preferences": "خصوصيات هنی",
-       "mypreferences": "چیا هنی",
-       "prefs-edits": "Ø´Ù\85ارÙ\87 Ù\88Û\8cراÛ\8cشتا:",
+       "preferences": "خوصوٙیات هأنی",
+       "mypreferences": "خوصوٙیات هأنی",
+       "prefs-edits": "Ø´Ù\88Ù\85ارÛ\95 Ú¤Û\8cراÛ\8cئشتÛ\8cا:",
        "prefsnologintext2": "لطف بکیت بیایت وامین و ترجیحات خوتونه آلشت بئیت.",
        "prefs-skin": "پوس",
        "skin-preview": "پیش سئیل",
        "datedefault": "هیچ ترجیحات دش نئ",
        "prefs-labs": "گزینشتیا ازماشتی",
        "prefs-user-pages": "بألگە کاریار",
-       "prefs-personal": "پوروفایل کاریار",
+       "prefs-personal": "جانیاگە کاریار",
        "prefs-rc": "آلئشتیا ئیسئنی",
        "prefs-watchlist": "سئیل بأرگ",
        "prefs-editwatchlist": "ڤیرایئشت سئیل بأرگ",
        "prefs-editwatchlist-label": "داده یا نه د سیل برگ خوتو ویرایشت بکیت:",
        "prefs-editwatchlist-edit": "داسونانه سیل بکیت و ونونه د سیل برگ خوتو ورداریت",
-       "prefs-editwatchlist-raw": "ویرایشت ردیفی سیل برگ",
-       "prefs-editwatchlist-clear": "سیل برگه تونه پاک بکیت",
+       "prefs-editwatchlist-raw": "ڤیرایئشتکاری رأدیفی سئیل بأرگ",
+       "prefs-editwatchlist-clear": "سئیل بأرگئ توٙنە پاک بأکیت",
        "prefs-watchlist-days": "روزیا نه د سیل برگ نشو دئه بو:",
        "prefs-watchlist-days-max": "$1 بیشترونه {{PLURAL:$1|روز|روزیا}}",
        "prefs-watchlist-edits": "بیشترونه انازه آلشتیایی که د سیل برگ گپ بیه نشو دئه بیه:",
        "prefs-watchlist-edits-max": "شماره بیشترونه:1000",
        "prefs-watchlist-token": "نشونه سیل برگ:",
-       "prefs-misc": "شيوسن",
+       "prefs-misc": "شیڤئسئن",
        "prefs-resetpass": "رازینه گواردن نه آلشت بكيت",
        "prefs-changeemail": "تیرنشون انجومانامه تو نه آلشت بکید",
        "prefs-setemail": "يه گل انجومانامه بنیت",
        "prefs-email": "چیا هنی انجومانامه",
-       "prefs-rendering": "شلک و ری",
-       "saveprefs": "اÙ\85اÛ\8cÛ\8cÙ\87 Ù\83ردن",
+       "prefs-rendering": "شیڤە",
+       "saveprefs": "ئÙ\85اÛ\8cÛ\95 Ú©Ø¦Ø±Ø¯Ø¦ن",
        "restoreprefs": "د نو زنه کردن همه میزونکاریا پیش فرض(د همه جایا)",
        "prefs-editing": "د حال و بال ڤیرایئشت",
        "rows": "رديفيا:",
        "columns": "ستينا:",
-       "searchresultshead": "پی جوری",
+       "searchresultshead": "پئی جوٙری",
        "stub-threshold": "آستونه ویرایشتیا د یک دیسسه<a href=\"#\" class=\"stub\">ناقص</a> (بایت):",
-       "stub-threshold-disabled": "د كار ونن",
+       "stub-threshold-disabled": "ناکونئشتگأر بییە",
        "recentchangesdays": "روزیا آلشتیا تازه باو نه نشو بیه:",
        "recentchangesdays-max": "$1 بیشترونه {{PLURAL:$1|روز|روزیا}}",
        "recentchangescount": "انازه ویرایشتیایی که دیاری می که:",
        "prefs-emailconfirm-label": "پش راست کردن انجومانامه:",
        "youremail": "أنجومانامە:",
        "username": "{{GENDER:$1|نوم کاریاری}}:",
-       "prefs-memberingroups": "{{GENDER:$2|اÙ\86دÙ\88Ù\85}}  {{PLURAL:$1|گرÙ\88Û\8cا|گرÙ\88یا}}:",
+       "prefs-memberingroups": "{{GENDER:$2|Ø£Ù\86دÙ\88Ù\85}}  {{PLURAL:$1|دأسÛ\95|دأسÛ\95 یا}}:",
        "prefs-memberingroups-type": "$1",
        "prefs-registration": "گات ثوت نام:",
        "prefs-registration-date-time": "$1",
        "badsig": "امضا خؤم بی اعتوار.\nسردیسیا اچ تی ام ال نه وارسی بکیت.",
        "badsiglength": "امضا شما فره گپه.\nدرازا امضا باید کمتر  د $1 {{PLURAL:$1|نیسه}} بوئه.",
        "yourgender": "شما بیشتر میهایت که چه جوری گوته بوئه؟",
-       "gender-unknown": "مه میهام چی یی نموئم",
+       "gender-unknown": "د گاتی کئ شوما میائیت ڤا ڤیرئموٙ، نأرم أفزار دوبیشتأر  کألمیە یا جئنس خومثا نە ڤئ کار مئیرە",
        "gender-male": "وه(پیا) بلگه یا ویکی نه ویرایشت می که",
        "gender-female": "وه(زئنه)بلگه یا ویکی نه ویرایشت می که",
        "prefs-help-gender": "انجوم دئن ای میزونکاری دل به هاییه.\nنرم افزار سی هشاره درست وه جنسیت و گوتن شما سی کسونا تر د شکل درست وه کار بسن یه گل دستور زون یه نه وه کار می بنه.\nای دونسمنیا سی کل خلک دیارن.",
        "userrights-lookup-user": "دسه یا کاروری نه دیوون داری بکیت",
        "userrights-user-editname": "یه گل نوم کاریاری وارد بکیت:",
        "editusergroup": "ویرایشت گرویا کاریاری",
-       "editinguser": "Ø¢Ù\84شت Ø¯Ø¦Ù\86 Ø­Ù\82Ù\88Ù\82 Ú©Ø§Ø±Û\8cارÛ\8c Ú©Ø§Ø±Û\8cار'''[[کاریار:$1|$1]]''' $2",
+       "editinguser": "Ø¢Ù\84ئشت Ø¯Ø£Ø¦Ù\86 Ø­Ù\88Ù\82Ù\88Ù\99Ù\82 Ú©Ø§Ø±Û\8cارÛ\8c Ú©Ø§Ø±Û\8cار '''[[کاریار:$1|$1]]''' $2",
        "userrights-editusergroup": "ویرایشت گرویا کاریاری",
        "saveusergroups": "اماییه کردن گرویا کاریاری",
        "userrights-groupsmember": "اندوم:",
        "userrights-groupsmember-auto": "اندوم ضمنی:",
        "userrights-groupsmember-type": "$1",
        "userrights-groups-help": "شما می تونیت دسه یای که ای کاریار ها دشو آلشت بئیتو:\n* جعوه نشودار وه ای مئنیه که کاریار ها د او دسه.\n* جعوه بی نشون وه ای مئنیه که کاریار د او دسه نئ.\n* نشون* د ای مئنیه که ار شما او دسه نه اضاف بکیتو د نهاتر نموئه ؤردارینش یا برعسگش.",
-       "userrights-reason": "دليل:",
+       "userrights-reason": "دألیل:",
        "userrights-no-interwiki": "شما سی ویرایشت حقوق کاریار د ویکی یا هنی دسرسی ناریت.",
        "userrights-nodatabase": "پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.",
        "userrights-nologin": "شما باید وا یه گل حساو کاریاری دیووندار [[Special:UserLogin|روئیت وامین ]] تا تونستوییت حقوق کاریاری کاریار نه گماشته کاری بکیت.",
        "right-override-export-depth": "وه در دئن بلگه یایی که بلگه یا هوم پیوند بیه تا پی یا 5 ها دشو",
        "right-sendemail": "سی کاریاریا هنی انجومانامه کل بکید",
        "right-passwordreset": "رازینه گواردن انجومانامه د نو دئه بیه نه بوینیت",
-       "right-managechangetags": "راس Ú©Ø±Ø¯Ù\86[[Special:سردÛ\8cسÛ\8cا|سردÛ\8cسÛ\8cا]] Ù¾Ø§Ú©Ø³Ø§ Ú©Ø±Ø¯Ù\86 Ø¯ Ø±Ø³Û\8cÙ\86Ù\87 جا",
+       "right-managechangetags": "راس Ú©Ø¦Ø±Ø¯Ø¦Ù\86 [[Special:سأردÛ\8cسÛ\8cا|سأردÛ\8cسÛ\8cا]] Ù¾Ø§Ú©Ø³Ø§ Ú©Ø¦Ø±Ø¯Ø¦Ù\86 Ø¯ Ø±Ø¦Ø³Û\8cÙ\86Û\95 جا",
        "right-applychangetags": "وه کار گرتن [[Special:سردیسیا|سردیسیا]] واگرد آلشتیا هر کومشو",
        "right-changetags": "Add and remove arbitrary [[Special:Tags|tags]] on individual revisions and log entries",
        "newuserlogpage": "راس بیه وا کاریار",
        "nchanges": "$1 {{PLURAL:$1|آلشت|آلشتیا}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|د آخری دیئن}}",
        "enhancedrc-history": "ويرگار",
-       "recentchanges": "Ø¢Ù\84شتÛ\8cا Ø§Û\8cسنی",
+       "recentchanges": "Ø¢Ù\84ئشتÛ\8cا Ø¦Û\8cسئنی",
        "recentchanges-legend": "گزینه یا آلشتیا ایسنی",
        "recentchanges-summary": "دو بیشتر آلشتیا تازباو نه د ویکی نه د ای بلگه پیگری کو.",
        "recentchanges-noresult": "هیژ آلشتی د درازا دوره دیار بیه وا ای معیاریا یکی نبی.",
        "rcshowhidebots-show": "نشو دئن",
        "rcshowhidebots-hide": "قام کردن",
        "rcshowhideliu": "$1 کاریاریا ثوت نام کرده",
-       "rcshowhideliu-show": "Ù\86Ø´Ù\88 Ø¯ئن",
-       "rcshowhideliu-hide": "Ù\82اÙ\85 Ú©Ø±Ø¯ن",
+       "rcshowhideliu-show": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£ئن",
+       "rcshowhideliu-hide": "Ù\82اÙ\85 Ú©Ø¦Ø±Ø¯Ø¦ن",
        "rcshowhideanons": "کاریار نادیار $1",
-       "rcshowhideanons-show": "Ù\86Ø´Ù\88 Ø¯ئن",
-       "rcshowhideanons-hide": "Ù\82اÙ\85 Ú©Ø±Ø¯ن",
+       "rcshowhideanons-show": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£ئن",
+       "rcshowhideanons-hide": "Ù\82اÙ\85 Ú©Ø¦Ø±Ø¯Ø¦ن",
        "rcshowhidepatr": "$1 ویرایشتیا تیه پرس بیه",
-       "rcshowhidepatr-show": "Ù\86Ø´Ù\88 Ø¯ئن",
-       "rcshowhidepatr-hide": "Ù\82اÙ\85 Ú©Ø±Ø¯ن",
-       "rcshowhidemine": "ويرايشتيا مه$1",
-       "rcshowhidemine-show": "Ù\86Ø´Ù\88 Ø¯ئن",
-       "rcshowhidemine-hide": "Ù\82اÙ\85 Ú©Ø±Ø¯ن",
+       "rcshowhidepatr-show": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£ئن",
+       "rcshowhidepatr-hide": "Ù\82اÙ\85 Ú©Ø¦Ø±Ø¯Ø¦ن",
+       "rcshowhidemine": "ڤیرایئشتیا مئ $1",
+       "rcshowhidemine-show": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£ئن",
+       "rcshowhidemine-hide": "Ù\82اÙ\85 Ú©Ø¦Ø±Ø¯Ø¦ن",
        "rclinks": "آخرین آلشتیا $1 نشو بیه د اخرین روزیا $2",
-       "diff": "فرخ",
-       "hist": "ويرگار",
-       "hide": "قام كردن",
-       "show": "Ù\86Ø´Ù\88 Ø¯ئن",
+       "diff": "Ù\81أرخ",
+       "hist": "ڤیرگار",
+       "hide": "قام کئردئن",
+       "show": "Ù\86ئشÙ\88Ù\99 Ø¯Ø£ئن",
        "minoreditletter": "م",
        "newpageletter": "ن",
        "boteditletter": "ب",
        "recentchangeslinked-toolbox": "آلشتیا ته یک",
        "recentchangeslinked-title": "آلشتیا تی یکی د $1",
        "recentchangeslinked-summary": "ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)\nبلگیا یی که هان [[Special:Watchlist|your watchlist]]و گپ بینه",
-       "recentchangeslinked-page": "نوم بلگه:",
+       "recentchangeslinked-page": "نوم بألگە:",
        "recentchangeslinked-to": "آلشتیایی که د بلگه یا هوم پیوند بینه وه جا بلگه دئیه بیه نشو بیه",
-       "upload": "سوار کردن جانیا",
-       "uploadbtn": "سوار کردن جانیا",
+       "upload": "سوڤار کئردئن جانیا",
+       "uploadbtn": "سوڤار کئردئن جانیا",
        "reuploaddesc": "سوار کردن نه انجوم شیو بکیت و د ورئردیت جابلگ سوارکرد",
        "upload-tryagain": "کل کردن توضیحیا آلشت دئیه بیه جانیا",
        "uploadnologin": "وارد نبیه",
        "uploadnologintext": "لطفن $1 سی سوارکرد جانیایا.",
        "upload_directory_missing": "نشونگه سوارکرد ($1) وجود ناره و نبوئه دروسش بکی.",
        "upload_directory_read_only": "نشونگه سوارکرد($1) د لا سرور قاول نیسنن نئ.",
-       "uploaderror": "خطا Ø¯ Ø³Ù\88ار Ú©Ø±Ø¯ن",
+       "uploaderror": "خأطا Ø¯ Ø³Ù\88ڤار Ú©Ø¦Ø±Ø¯Ø¦ن",
        "upload-recreate-warning": "'''زئنار: جانیایی که وه ای نومه یا پاکسا بیه یا جا وه جا بیه.'''\n\nسی رائتی، نومگه پاکساگری و جا وه جا کردن ای بلگه ها د هار:",
        "uploadtext": "دسی دئین جانیایی که  د دماتر سوار بینه روئیت وه  [[Special:FileList|نوم گه جانیایا]] . د نو سوارکردن  د [[Special:Log/upload|نوم گه سوارکردیا]] و پاکساگری جانیایا د [[Special:Log/delete|deletion log]] جاگئر موئه.\n\nنها یه که یه گل جانیانه سوار کردیت می تونیت د سه شکل هاری وه نه د بلگه یا وه کار بونیت:\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' سی به کار بسن نسقه کامل جانیا\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' سی به کار بسن یه گل نسقه 200 پیکسلی  د جانیایی که ها د مینه یه گل جعوه  که ها د لا چپ نیسسه که د وه عبارت alt text چی توضیح وه کار بسه بیه\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' سی دروس کردن یه گل هوم پیوند سرراست وه جانیا بی یه که جانیا دیاری بکه نوم بلگه هاری سی سوارکرد جانیایا تازه استفاده بکیت.",
        "upload-permitted": "جورا جانیا صلادار:$1 .",
        "fileuploadsummary": "چکسه",
        "filereuploadsummary": "آلشتیا جانیا:",
        "filestatus": "حال و بال کپی رایت",
-       "filesource": "سرÚ\86Ø´Ù\85Ù\87:",
+       "filesource": "سأرÚ\86ئشÙ\85Û\95:",
        "ignorewarning": "تیه پوشی د زئنار و اماییه کردن جانیا",
        "ignorewarnings": "د هر زنهار تیه پوشی کو",
        "minlength1": "نوم جانیا باید حداقل یه حرف داشتوئه.",
        "upload-too-many-redirects": "ای یو آر ال د ورگیرنه واگردونیا فرئی هئ",
        "upload-http-error": "یه گل خطا اچ تی تی پی پیش اومائه:$1",
        "upload-copy-upload-invalid-domain": "ورداشتن سوارکردیا د ای پوشگئر د دسرس نئ.",
+       "upload-dialog-button-done": "أنجوم بییە",
+       "upload-dialog-button-save": "ئمایە کئردئن",
+       "upload-dialog-button-upload": "سوڤار کئردئن",
        "backend-fail-stream": "نبوئه جانیا\"$1\" کل بوئه.",
        "backend-fail-backup": "نبوئه سی \"$1\" پشتجا گرت.",
        "backend-fail-notexists": "جانیا $1 وجود ناره.",
        "license-nopreview": "(پیش سیل د دسرس نئ)",
        "upload_source_url": "(شما یه گل جانیا د یه گل یو آر ال د دسرس خلک و معتور ورچئ کردیته)",
        "upload_source_file": "(یه گل جانیا د انجومیار تو انتخاو بکیت)",
-       "listfiles-delete": "پاکسا Ú©Ø±Ø¯ن",
+       "listfiles-delete": "پاکسا Ú©Ø¦Ø±Ø¯Ø¦ن",
        "listfiles-summary": "ای بلگه یا ویجه همه جانیایا سوار بیه نه نشو می ئین.",
        "listfiles_search_for": "پی جوری سی نوم رسانه:",
        "listfiles-userdoesnotexist": "حساو کاریاری «$1» ثوت نام نبیه.",
        "imgfile": "جانیا",
-       "listfiles": "نوم گه فایل",
-       "listfiles_thumb": "بن کلکی",
-       "listfiles_date": "تاريخ",
+       "listfiles": "نومگە جانیا",
+       "listfiles_thumb": "بأن کئلئکی",
+       "listfiles_date": "گات",
        "listfiles_name": "نوم",
        "listfiles_user": "کاریار",
-       "listfiles_size": "اÙ\86ازÙ\87",
+       "listfiles_size": "Ø£Ù\86ازÛ\95",
        "listfiles_description": "شرح",
        "listfiles_count": "نسقیا",
        "listfiles-show-all": "شومل نسقه یا نهاتری عسگیا",
        "listfiles-latestversion": "نسقه تازه",
-       "listfiles-latestversion-yes": "هری",
-       "listfiles-latestversion-no": "نه",
-       "file-anchor-link": "فايل",
-       "filehist": "ويرگار جانیا",
+       "listfiles-latestversion-yes": "Ù\87أرÛ\8c",
+       "listfiles-latestversion-no": "تە",
+       "file-anchor-link": "جانیا",
+       "filehist": "ڤیرگار جانیا",
        "filehist-help": "ری  ويرگاريا بپورنيت تا نسقه مرتوط بونيت.",
-       "filehist-deleteall": "همه نه پاکسا کو",
-       "filehist-deleteone": "پاك كردن",
-       "filehist-revert": "Ù\88رگÙ\86Û\8cن",
-       "filehist-current": "تازه باو",
+       "filehist-deleteall": "هأمە نئ پاکسا کو",
+       "filehist-deleteone": "پاکسا کئردئن",
+       "filehist-revert": "Ù\84ئرÙ\86Û\8cئن",
+       "filehist-current": "تازە باڤ",
        "filehist-datetime": "ويرگار/وخت",
        "filehist-thumb": "عسگ كؤچك بيه",
        "filehist-thumbtext": "كؤچك كردن سی  نسقه چی $1",
        "filehist-user": "کاریار",
        "filehist-dimensions": "بعديا",
        "filehist-filesize": "انازه فایل",
-       "filehist-comment": "نظر",
+       "filehist-comment": "ڤیر و باڤأر",
        "imagelinks": "وه کار گری جانیا",
        "linkstoimage": "دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:",
        "linkstoimage-more": "بیشتر د $1 بلگه د ای جانیا هوم پیوند {{PLURAL:$1|بیه|بینه}}.\nنومگه هاری تئنا {{PLURAL:$1|اولین هوم پیوند|اولین $1 هوم پیوند}} د ای بلگه نه نشو می ئه.\n[[Special:WhatLinksHere/$2|نومگه کامل]] ئم هیئش.",
        "randomincategory": "بلگه بختی د ای دسه",
        "randomincategory-invalidcategory": "\"$1\"  نوم دسه معتوری نئ.",
        "randomincategory-nopages": "هیچ بلگه ای د ای  [[:دسه نئ:$1|$1]] دسه.",
-       "randomincategory-category": "دسÙ\87:",
+       "randomincategory-category": "دأسÛ\95:",
        "randomincategory-legend": "بلگه بختی د ای دسه",
        "randomredirect": "واگردونی بختکی",
        "randomredirect-nopages": "هیچ واگردونی د نومجا \"$1\" نئ.",
        "protectedtitles": "سرونیا پر و پیم بیه",
        "protectedtitles-summary": "د ای بلگه نومگه بلگه یایی هیئن که د ایسنی پر و پیم بینه. سی نومگه سرونیا که نبوئه دروس بان، سیل[[{{#special:ProtectedTitles}}|{{int:protectedtitles}}]]  بکیت.",
        "protectedtitlesempty": "د ایسنی هیچ سرونی وا ای پارامتریا پر و پیم نبیه",
-       "listusers": "نوم گه کارور",
-       "listusers-editsonly": "فقط کاروریایی که ویرایشت می کن نشو بیه",
+       "listusers": "نومگە کاریار",
+       "listusers-editsonly": "فأقأط کاریاریایی کئ ڤیرایئشت کاری می کأن دیار بان",
        "listusers-creationsort": "سرجاخودگری د اساس گات دروس بیین",
        "listusers-desc": "سرجاخودگری د اساس گپ د کؤچک",
        "usereditcount": "$1{{PLURAL:$1|ویرایشت|ویرایشتیا}}",
        "usercreated": "{{جنسیت:$3|راس بیه}}د $1 at $2",
        "newpages": "بلگيا نو",
-       "newpages-username": "نوم كاروری:",
+       "newpages-username": "نوم کاریاری:",
        "ancientpages": "بلگه یا نهاتر",
        "move": "جاوه جا بوئيت",
        "movethispage": "ای بگله نه جا وه جا كو",
        "linksearch-error": "نشونه یا فقط د اول نوم مئموندار اینترنتی می تونن وه کار گرته بان.",
        "listusersfrom": "کاریاریایی که د شرو بینه نشو بیه:",
        "listusers-submit": "نشو دئن",
-       "listusers-noresult": "هیچ کاروری پیدا نبی",
-       "listusers-blocked": "(Ù\82Ù\84Ù\81 Ø¨Ù\8aÙ\87)",
-       "activeusers": "نوم گه کاروریا کارکو",
+       "listusers-noresult": "هیچ کاریاری دیاری نأکئرد.",
+       "listusers-blocked": "(Ù\86ئÙ\87اگئرÛ\8c Ø¨Û\8cÛ\8cÛ\95)",
+       "activeusers": "نومگە کاریاریا کونئشتگأر",
        "activeusers-intro": "شما د هار یه گل نومگه د کاریاریایی نه مینیت که د $1 {{PLURAL:$1|رو|رو}} دماتر کنشتگر بینه.",
        "activeusers-count": "$1 {{PLURAL:$1|کنشت|کنشت}} در {{PLURAL:$3|رو|$3 رو}} دماتر",
        "activeusers-from": "کاریاریایی که د شرو بینه نشو بیه:",
        "mailnologintext": "سی کل کردن انجومانامه وه کاریاریا هنی واس [[Special:UserLogin|بیایت وامین سامونه]] و تیرنشون انجومانامه معتوری د [[Special:Preferences|ترجیحات]] خوتو داشتوئیت.",
        "emailuser": "ای كارور نه ايميل كو",
        "emailuser-title-target": "ایمیل سی ای {{GENDER:$1|کارور}}",
-       "emailuser-title-notarget": "اÛ\8cÙ\85Û\8cÙ\84 Ú©Ø§Ø±Ù\88ر",
-       "emailpage": "اÛ\8cÙ\85Û\8cÙ\84 Ú©Ø§Ø±Ù\88ر",
+       "emailuser-title-notarget": "Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Û\95 Ú©Ø§Ø±Û\8cار",
+       "emailpage": "Ø£Ù\86جÙ\88Ù\85اÙ\86اÙ\85Ù\87 Ú©Ø§Ø±Û\8cار",
        "emailpagetext": "شما می تونیت  نوم بلگه هار نه سی کل کردن یه گل انجومانامه وه ای  {{GENDER:$1|کاریار}} وه کار بئیرت.\nتیرنشون انجومانامه یی که د [[Special:Preferences|ترجیحات کاریارتو]] دئیه ته د تیرنشون کلکار انجومانامه میا، سی یه که گیرنه بتونه جواوش بیه.",
        "defemailsubject": "{{نوم سیل جا}} ایمیل د کارور \"$1\"",
        "usermaildisabled": "ایمیل کارور د کار افتائه",
        "nowikiemailtext": "ای کاریار میها که د کاریاریا هنی انجومانامه نگره.",
        "emailnotarget": "نوم کاریاری که وجود ناره یا سی گیرنه نامعتوره",
        "emailtarget": "یه گل نوم کاریاری سی پذریشتگر وارد بکیت",
-       "emailusername": "نوم كاروری:",
-       "emailusernamesubmit": "دئÙ\86",
+       "emailusername": "نوم کاریاری:",
+       "emailusernamesubmit": "دأئÙ\86:",
        "email-legend": "کل کردن یه گل انجومانامه سی یه گل کاریار هنی د {{SITENAME}}",
        "emailfrom": "د:",
        "emailto": "سی:",
index ad82920..7900e30 100644 (file)
        "actionthrottled": "Veiksmas apribotas",
        "actionthrottledtext": "Kad būtų apsisaugota nuo reklamų, jums neleidžiama daug kartų atlikti šį veiksmą per trumpą laiko tarpą, bet jūs pasiekėte šį limitą. Prašome vėl pamėginti po kelių minučių.",
        "protectedpagetext": "Šis puslapis yra užrakintas, saugant jį nuo redagavimo.",
-       "viewsourcetext": "Jūs galite žiūrėti ir kopijuoti puslapio kodą:",
-       "viewyourtext": "Jūs galite matyti ir kopijuoti '''savo redagavimų''' tekstą į šį puslapį:",
+       "viewsourcetext": "Jūs galite peržiūrėti ir kopijuoti puslapio kodą:",
+       "viewyourtext": "Jūs galite peržiūrėti ir kopijuoti <strong>savo pakeitimų</strong> kodą į šį puslapį:",
        "protectedinterface": "Šiame puslapyje yra apsaugotas nuo piktnaudžiavimo programinės įrangos sąsajos tekstas. Norėdami pridėti ar pakeisti vertimus visose wiki, naudokite [//translatewiki.net/ translatewiki.net] MediaWiki vertimų projektą.",
        "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.",
        "translateinterface": "Kad pridėtumėte vertimus visoms wiki, naudokitės  [//translatewiki.net/ translatewiki.net] – projektu, skirtu MediaWiki vertimams į vietines kalbas.",
        "search-category": "(kategorija $1)",
        "search-file-match": "(atitinka rinkmenos turinį)",
        "search-suggest": "Galbūt norėjote $1",
+       "search-rewritten": "Rodomi $1 rezultatai. Vietoje to ieškoti $2.",
        "search-interwiki-caption": "Dukteriniai projektai",
        "search-interwiki-default": "Rezultatai iš $1:",
        "search-interwiki-more": "(daugiau)",
        "newpageletter": "N",
        "boteditletter": "R",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|stebintis naudotojas|stebintys naudotojai|stebinčių naudotojų}}]",
-       "rc_categories": "Rodyti tik šias kategorijas (atskirkite naudodami „|“)",
-       "rc_categories_any": "Bet kokia",
+       "rc_categories": "Riboti kategorijoms (atskirkite su „|“)",
+       "rc_categories_any": "Bet kuris iš pasirinktųjų",
        "rc-change-size-new": "$1 {{PLURAL:$1|baitas|baitai|baitų}} po pakeitimo",
        "newsectionsummary": "/* $1 */ naujas skyrius",
        "rc-enhanced-expand": "Rodyti detales",
        "upload-too-many-redirects": "URL yra per daug kartų peradresuotas",
        "upload-http-error": "Įvyko HTTP klaida: $1",
        "upload-copy-upload-invalid-domain": "Pakrovimų kopijos yra neleidžiamos iš šio domeno.",
+       "upload-dialog-title": "Įkelti failą",
+       "upload-dialog-error": "Įvyko klaida",
+       "upload-dialog-warning": "Įvyko įspėjimas",
+       "upload-dialog-button-cancel": "Atšaukti",
+       "upload-dialog-button-done": "Atlikta",
+       "upload-dialog-button-save": "Išsaugoti",
+       "upload-dialog-button-upload": "Įkelti",
+       "upload-dialog-label-select-file": "Pasirinkti failą",
+       "upload-dialog-label-infoform-title": "Detalės",
+       "upload-dialog-label-infoform-name": "Pavadinimas",
+       "upload-dialog-label-infoform-description": "Aprašymas",
+       "upload-dialog-label-usage-title": "Naudojimas",
+       "upload-dialog-label-usage-filename": "Failo pavadinimas",
        "backend-fail-stream": "Negali būti apdorotas failas $1.",
        "backend-fail-backup": "Negali būti išsaugotas failas $1.",
        "backend-fail-notexists": "Failas $1 neegzistuoja.",
        "watchlistanontext": "Prašome prisijungti, kad peržiūrėtumėte ar pakeistumėte elementus savo stebimųjų sąraše.",
        "watchnologin": "Neprisijungęs",
        "addwatch": "Pridėti į stebimųjų sąrašą",
-       "addedwatchtext": "Puslapis „[[:$1]]“ pridėtas į [[Special:Watchlist|stebimųjų sąrašą]].\nBūsimi puslapio bei atitinkamo aptarimo puslapio pakeitimai bus rodomi stebimųjų puslapių sąraše,\ntaip pat bus '''paryškinti''' [[Special:RecentChanges|naujausių keitimų sąraše]], kad išsiskirtų iš kitų puslapių.",
+       "addedwatchtext": "\"[[:$1]]\" ir jo aptarimo puslapis buvo įtraukti į Jūsų [[Special:Watchlist|stebėjimo sąrašą]].",
        "addedwatchtext-short": "Puslapis „$1“ pridėtas į jūsų stebimųjų sąrašą.",
        "removewatch": "Pašalinti iš stebimųjų sąrašo",
-       "removedwatchtext": "Puslapis „[[:$1]]“ pašalintas iš jūsų [[Special:Watchlist|stebimųjų sąrašo]].",
+       "removedwatchtext": "\"[[:$1]]\" ir jo aptarimo puslapis buvo pašalinti iš Jūsų [[Special:Watchlist|stebėjimo sąrašo]].",
        "removedwatchtext-short": "Puslapis „$1“ pašalintas iš jūsų stebimųjų sąrašo.",
        "watch": "Stebėti",
        "watchthispage": "Stebėti šį puslapį",
        "changecontentmodel-success-title": "Turinio modelis buvo atnaujintas",
        "changecontentmodel-success-text": "Turinys, kurio tipas [[:$1]], buvo atnaujintas.",
        "changecontentmodel-cannot-convert": "Turinys [[:$1]] negali būti konvertuotas į $2 tipą.",
-       "changecontentmodel-title-cantexist": "Negalima turėti puslapio $1.",
        "changecontentmodel-nodirectediting": "$1 turinio modelis nepalaiko tiesioginio redagavimo",
        "log-name-contentmodel": "Turinio modelio kaitos istorija",
        "log-description-contentmodel": "Įvykiai susiję su puslapio turinio modeliu",
        "undeletepagetext": "{{PLURAL:$1|Šis $1 puslapis buvo ištrintas|Šie $1 puslapiai buvo ištrinti|Šie $1 puslapių buvo ištrinti}}, bet dar yra archyve ir gali būti {{PLURAL:$1|atkurtas|atkurti|atkurti}}.\nArchyvas gali būti periodiškai valomas.",
        "undelete-fieldset-title": "Atkurti versijas",
        "undeleteextrahelp": "Norėdami atkurti visą puslapio istoriją, palikite visas varneles nepažymėtas ir spauskite '''''{{int:undeletebtn}}'''''.\nNorėdami atlikti pasirinktinį atkūrimą, pažymėkite varneles tų versijų, kurias norėtumėte atkurti, ir spauskite '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|versija|versijos|versijų}} suarchyvuota",
+       "undeleterevisions": "$1 {{PLURAL:$1|versija ištrinta|versijos ištrintos}}",
        "undeletehistory": "Jei atstatysite puslapį, istorijoje bus atstatytos visos versijos.\nJei po ištrynimo buvo sukurtas puslapis tokiu pačiu pavadinimu, atstatytos versijos atsiras ankstesnėje istorijoje.",
        "undeleterevdel": "Atkūrimas nebus įvykdytas, jei tai nulems paskutinės puslapio ar failo versijos dalinį ištrynimą.\nTokiais atvejais, jums reikia atžymėti arba atslėpti naujausią ištrintą versiją.",
        "undeletehistorynoadmin": "Šis puslapis buvo ištrintas. Žemiau rodoma trynimo priežastis bei kas redagavo puslapį iki ištrynimo. Ištrintų puslapių tekstas yra galimas tik administratoriams.",
        "spam_reverting": "Atkuriama į ankstesnę versiją, neturinčios nuorodų į $1",
        "spam_blanking": "Visos versijos turėjo nuorodų į $1, išvaloma",
        "spam_deleting": "Visos versijos turėjo nuorodų į $1, ištrinama",
-       "simpleantispam-label": "Brukalų patikra.\n'''NE'''pildykite!",
+       "simpleantispam-label": "Brukalų patikra.\n<strong>Ne</strong>pildykite!",
        "pageinfo-title": "„$1“ informacija",
        "pageinfo-not-current": "Atsiprašome, neįmanoma pateikti šios senų versijų informacijos.",
        "pageinfo-header-basic": "Pagrindinė informacija",
        "special-characters-title-endash": "en brūkšnys",
        "special-characters-title-emdash": "em brūkšnys",
        "special-characters-title-minus": "minuso ženklas",
+       "mw-widgets-dateinput-no-date": "Nepasirinkta data",
        "mw-widgets-titleinput-description-new-page": "puslapis dar neegzistuoja",
        "mw-widgets-titleinput-description-redirect": "nukreipti į $1"
 }
index 88cae64..1513f00 100644 (file)
        "resetpass-wrong-oldpass": "Thurûk dik lo emaw thi tawh.\nI thurûk i thlâk hlawhtling tawh a nih loh pawhin thurûk lailâwk i dil a ni thei.",
        "resetpass-temp-password": "Thurûk lailâwk:",
        "passwordreset": "Thurûk ziakţha rawh",
-       "passwordreset-legend": "Thurûk ziakţha rawh",
        "passwordreset-username": "Hmangtu hming:",
        "passwordreset-domain": "Huamchin:",
        "passwordreset-email": "E-chenhmun:",
        "nlinks": "$1 {{PLURAL:$1||}} Zawmna $1",
        "nmembers": "A chhungah  {{PLURAL:$1||$1}} a awm.",
        "nrevisions": "siamṭhatna $1 {{PLURAL:$1||}}",
-       "nviews": "vawi $1 {{PLURAL:$1||}} ràwn a ni tawh.",
        "nimagelinks": "Phêk $1-ah {{PLURAL:$1||}} hman a ni.",
        "ntransclusions": "phêk $1-ah {{PLURAL:$1||}} hman a ni.",
        "specialpage-empty": "Thuhawn a awm lo tlat.",
        "delete-toobig": "Hë phêk hian siam danglam a tâwk ngun mangkhèng, vawi $1 {{PLURAL:$1||}} chüang zet.\nHetiang phêk nuaibo hi hrêk deuh hlek a ni, tum loh puia {{SITENAME}} tihchingpen däl tùrin.",
        "delete-warning-toobig": "Hë phêk hian tihdanglam a lo tâwk nasa tawh mangkhèng, vawi $1 {{PLURAL:$1||}} chüang zet.\nHemi nuaibo hian {{SITENAME}} hriatna-khawlpui hnathawh a tisukuk palh thei; \nfimkhur zui hräm ang che.",
        "rollback": "Siamṭhatna sûtna",
-       "rollback_short": "Sûtlêtna",
        "rollbacklink": "sûtlêtna",
        "rollbackfailed": "Sûtlêt a tlawlh",
        "cantrollback": "Siamṭhatna a sûtlêt theih loh;\na siamṭhatu hnuhnüng ber hi hë phêk tawktu awm chhun a la ni tlat.",
        "logentry-newusers-create": "$1 hian hmangtu siangchan a siam.",
        "logentry-newusers-create2": "$1 hian hmangtu siangchan $3 a siam.",
        "logentry-newusers-autocreate": "Siangchan $1 hi amahin a insiam.",
-       "feedback-subject": "Thupui:",
-       "feedback-message": "Thu",
        "feedback-cancel": "Sûtna",
+       "feedback-message": "Thu",
+       "feedback-subject": "Thupui:",
        "searchsuggest-search": "Zawnna",
-       "searchsuggest-containing": "hemi thu telna hi..."
+       "searchsuggest-containing": "hemi thu telna hi...",
+       "special-characters-group-latin": "Latin",
+       "special-characters-group-latinextended": "Latin säwizàu",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Chhinchhiahnate",
+       "special-characters-group-greek": "Grik",
+       "special-characters-group-cyrillic": "Sirilik (russia hawrawp ang chi)",
+       "special-characters-group-arabic": "arabik",
+       "special-characters-group-arabicextended": "Arabik sâwizàu",
+       "special-characters-group-persian": "Persia",
+       "special-characters-group-hebrew": "Hebrai",
+       "special-characters-group-bangla": "benggawli",
+       "special-characters-group-tamil": "Tamil ṭawng",
+       "special-characters-group-telugu": "Telegu",
+       "special-characters-group-sinhala": "Sinhala",
+       "special-characters-group-gujarati": "Gujarati",
+       "special-characters-group-devanagari": "Hindihawrawp",
+       "special-characters-group-thai": "Thaiţawng",
+       "special-characters-group-lao": "Lao",
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "KKKK-TT-NN",
+       "mw-widgets-dateinput-placeholder-month": "KKKK-TT"
 }
index 546bd0e..7fc613a 100644 (file)
        "sunday": "یە شأمە",
        "monday": "دوٙشمە",
        "tuesday": "سەشمە",
-       "wednesday": "چار شمه",
+       "wednesday": "چار شأمأھ",
        "thursday": "پأشأمە",
        "friday": "جوٙمَ",
        "saturday": "شأمە",
-       "sun": "یه شمه",
+       "sun": "یە شأمأھ",
        "mon": "دوٙشأمأھ",
        "tue": "سەشأمە",
-       "wed": "چارشمه",
-       "thu": "پشÙ\85Ù\87",
+       "wed": "چارشأمأھ",
+       "thu": "پأشأÙ\85Û\95",
        "fri": "جومَ",
-       "sat": "شمه",
+       "sat": "شأمأھ",
        "january": "أڤأل قأھارھ",
        "february": "لیریشگوٙن",
        "march": "ئنهزینوٙن",
        "october": "مالبارکوٙنوٙن",
        "november": "ئا سأردکوٙنوٙن",
        "december": "ئا ریجیکنوٙن",
-       "january-gen": "اÙ\88Ù\84 Ù\82هارھ",
+       "january-gen": "أڤأÙ\84 Ù\82Ø£هارھ",
        "february-gen": "لیریشگوٙن",
-       "march-gen": "ئنهزنۉن",
+       "march-gen": "ئنهزینوٙن",
        "april-gen": "نۉرۉزماھ",
        "may-gen": "گلبارماھ",
        "june-gen": "جۉرش",
        "july-gen": "میۉھ رسۉن",
-       "august-gen": "مه گرمه",
-       "september-gen": "شنیارۉن",
-       "october-gen": "Ù\85اÙ\84بارکÙ\86Û\89ن",
-       "november-gen": "ئا Ø³Ø±Ø¯Ú©Ù\86Û\89ن",
-       "december-gen": "ئا رجکنۉن",
+       "august-gen": "مە گأرمە",
+       "september-gen": "شینیاروٙن",
+       "october-gen": "Ù\85اÙ\84بارکÙ\88Ù\99Ù\86Ù\88Ù\99ن",
+       "november-gen": "ئا Ø³Ø£Ø±Ø¯Ú©Ù\88Ù\99Ù\86Ù\88Ù\99ن",
+       "december-gen": "ئا ریجیکنوٙن",
        "jan": "أڤأل قأھارھ",
        "feb": "لیریشگوٙن",
        "mar": "ئنهزینوٙن",
        "november-date": "نوامبر $1",
        "december-date": "دسامبر $1",
        "pagecategories": "{{PLURAL:$1|دسە|دسە یل}}",
-       "category_header": "بلگه یل مئن دسه \"$1\"",
-       "subcategories": "دسه یل فرعی",
+       "category_header": "بألگە یل مئن دأسە \"$1\"",
+       "subcategories": "دسە یل فأرعی",
        "category-media-header": "مدیا مئن دسه \"$1\"",
        "category-empty": "ای دسه الآن هیچ بلگه یا مدیا ناره",
        "hidden-categories": "{{PLURAL:$1|دسە قائم|دسە یل قائم}}",
        "category-article-count-limited": "دومن الذکر {{PLURAL:$1|بلگه هس|$1 بلگه هسن}} د او دسه جریانی.",
        "category-file-count": "{{PLURAL:$2|ای دسه فقط فایلل دۉمنه دارھ.|دۉمن الذکر{{PLURAL:$1|فایل هس|$1 فایلل هسن}} د ای دسه, بیشتر زھ$2 کل.}}",
        "category-file-count-limited": "دومن الذکر {{PLURAL:$1|فایل هس|$1 فایلل هسن}} د او دسه جریانی.",
-       "listingcontinuesabbrev": "دنباله",
+       "listingcontinuesabbrev": "دۉنبالە",
        "index-category": "بلگه یل ایندکس وابیده",
        "noindex-category": "بلگه یل ایندکس نوابیده",
        "broken-file-category": "بلگه یل وا فایلل لینک اشکسه",
        "about": "درباره",
        "article": "بلگه محتوا",
-       "newwindow": "(د یه پنجرھ دیه ۉا کۉ )",
-       "cancel": "Ù\84غÙ\88",
+       "newwindow": "(د یە پأنجیرھ دیە ڤا کۉ )",
+       "cancel": "Ù\84أغڤ",
        "moredotdotdot": "بیشتر...",
        "morenotlisted": "ای نوم بلگه کامل نی",
        "mypage": "بلگه",
-       "mytalk": "گپ",
+       "mytalk": "گأپ",
        "anontalk": "سی ای آدرس آی پی گپ بزه",
-       "navigation": "هدایت کردن",
+       "navigation": "هدایت کیردأن",
        "and": "&#32;ڤ",
        "qbfind": "سیل کردن",
        "qbbrowse": "نوم بلگه",
        "variants": "أنۉاع",
        "navigation-heading": "مأنۉ ناۉ ۉری",
        "errorpagetitle": "خطا",
-       "returnto": "بازگشت وھ $1.",
+       "returnto": "بازگشت ڤە $1.",
        "tagline": "زھ {{SITENAME}}",
        "help": "هوٙمیاری",
        "search": "جۉستأن",
        "permalink": "لینکل دائمی",
        "print": "چاپ",
        "view": "نما",
-       "view-foreign": "نما مئن  $1",
+       "view-foreign": "نیما مئن  $1",
        "edit": "ئیصلاح",
        "edit-local": "اصلاح توضیحتل محلی",
        "create": "درست کردن",
-       "create-local": "ۉندن تۉضیحتل محلی",
+       "create-local": "ڤأندن توٙضیحأتل مأحألی",
        "editthispage": "اصلاح ای بلگه",
        "create-this-page": "درست کو ای بلگه نه",
        "delete": "حذف",
        "protectthispage": "ای بلگنه حفاظت کو",
        "unprotect": "تغییر دائن حالت حفاظت",
        "unprotectthispage": "تغییر دائن حالت حفاظت ای بلگه",
-       "newpage": "بلگه نۉ",
+       "newpage": "بألگە نۉ",
        "talkpage": "گپ زئن ای بلگه",
        "talkpagelinktext": "گأپ",
        "specialpage": "بلگه مخصوص",
        "otherlanguages": "مئن زۉۉنل دیە",
        "redirectedfrom": "(تصحیح مجدد زھ $1)",
        "redirectpagesub": "بلگه تصحیح و هدایت زه مجدد",
-       "redirectto": "تغÛ\8cÛ\8cر Ø¯Ø§Ø¦Ù\86 Ù\85سÛ\8cر Û\89Ú¾:",
+       "redirectto": "تأغÛ\8cÛ\8cر Ø¯Ø§Ø¦Ù\86 Ù\85أسÛ\8cر Ú¤Û\95:",
        "lastmodifiedat": "ئی بألگە اخیرا تأغییر ڤ ئیصلاح ڤابیە مأئنە $1, مأئنە $2.",
        "viewcount": "ای بلگه قابل دسترسی وابیه {{PLURAL:$1|یه بار|$1 مدتل}}.",
        "protectedpage": "بلگه حفاظت وابیه",
        "aboutsite": "پۉرۉجھ : دأربارھ",
        "aboutpage": "Project:دأربارھ",
        "copyright": "مطلب دومن $ 1 هس نکه خلاف هونو ذکر وابی.",
-       "copyrightpage": "{{ns:project}}:کپی رایت",
+       "copyrightpage": "{{ns:project}}:کۉپی رایت",
        "currentevents": "اتفاقل جاری",
        "currentevents-url": "Project:اتفاقل جاری",
        "disclaimers": "ئینکار کنندھ یل",
        "disclaimerpage": "Project:ئینکار کارۉأران",
-       "edithelp": "هۉمیاری سی اصلاح",
+       "edithelp": "هوٙمیاری سی ئیصلاح",
        "mainpage": "بألگە أصلی",
        "mainpage-description": "بألگە أصلی",
        "policy-url": "Project:خط مشی",
        "newmessagesdifflinkplural": "آخر {{PLURAL:$1|تغییر|999=تغییرل}}",
        "youhavenewmessagesmulti": "ایشا پیوم نو داریت مئنه\n$1",
        "editsection": "ئیصلاح",
-       "editold": "اصلاح",
+       "editold": "ئÛ\8cصلاح",
        "viewsourceold": "دیئن منبع",
        "editlink": "ئیصلاح",
        "viewsourcelink": "دیئن سأرچیشمە",
        "sort-descending": "مرتب سازی وا صعودی",
        "sort-ascending": "مرتب سازی وا صعودی",
        "nstab-main": "بألگە",
-       "nstab-user": "بلگه کارۉر",
+       "nstab-user": "بألگە کارڤأر",
        "nstab-media": "بلگه مدیا",
        "nstab-special": "بألگە یل ڤیجە",
        "nstab-project": "بلگه پرۉجه",
        "nstab-image": "فایل",
        "nstab-mediawiki": "پیوم",
-       "nstab-template": "اÙ\84Ú¯Û\89",
+       "nstab-template": "ئÛ\89Ù\84Ú¯Ù\88Ù\99",
        "nstab-help": "بلگه هومیاری",
        "nstab-category": "دسە",
        "nosuchaction": "چنی دستوری موجود نی",
        "badarticleerror": "ای عمل نیوا ری ای بلگه اجرا وابی.",
        "cannotdelete-title": "نیوا بلگنه حذف کی \"$1\"",
        "badtitle": "عنۉان بد",
-       "badtitletext": "عنۉان درخۉاستی نامعتبر، خالی، یا عنۉانی بین زۉۉنی یا بین‌ۉیکی‌ای با پیۉند نادرسته.\nۉ ممکنه  یه یا چند کاراکتر داشته بۉھ که مئن عنۉان مربۉط نۉا زش استفادھ کنین.",
-       "viewsource": "دÛ\8cئÙ\86 Ø³Ø±Ú\86Ø´Ù\85Ú¾",
+       "badtitletext": "عۉنڤان دأرخڤاستی نامۉعتأبأر، خالی، یا عۉنڤانی بین زوٙوٙنی یا بین‌ ڤیکی‌ ئی با پیڤأند نادۉرۉستە.\nڤ مۉمکینە  یە یا چأند کاراکتیر داشتە بۉھ کە مئن عۉنڤان مأربوٙط نأڤا زیش ئیستیفادھ کۉنین.",
+       "viewsource": "دÛ\8cئÙ\86 Ø³Ø£Ø±Ú\86Û\8cØ´Ù\85Û\95",
        "viewsource-title": "دیئن منبع سی $1",
        "actionthrottled": "عمل متوقف وابی",
        "protectedpagetext": "ای بلگه سیکه اصلاح یا دیهر عملل ریش انجام نبی محافظت وابیه",
        "virus-unknownscanner": "آنتی ویروس ناشناخته",
        "welcomeuser": "خش اومیت، $1!",
        "yourname": "نوم کارور:",
-       "userlogin-yourname": "نۉم کارۉر",
-       "userlogin-yourname-ph": "نۉم کارۉری خۉتۉنه بنیت ایچھ",
+       "userlogin-yourname": "نۉم کارڤأر",
+       "userlogin-yourname-ph": "نۉم کارڤأری خۉتوٙنە بینیت ئیچە",
        "createacct-another-username-ph": "نوم کارورنه وار بکیت",
        "yourpassword": "رمز:",
-       "userlogin-yourpassword": "رمز",
+       "userlogin-yourpassword": "رأمز",
        "userlogin-yourpassword-ph": "رمز خۉتۉنه ۉارد بکنیت",
        "createacct-yourpassword-ph": "رمزنه ۉارد بکنیت",
        "yourpasswordagain": "مجددا رمزنه تایپ بکیت",
        "userlogin-signwithsecure": "د اتصال ایمن استفاده کو",
        "yourdomainname": "دومین کارو:",
        "password-change-forbidden": "ایشا نیتریت مئنه ای ویکی رمزه یلنه اصلاح بکیت",
-       "login": "ئۉیدن ۉھ سیستم",
+       "login": "ئوٙییدن ڤە سیستم",
        "nav-login-createaccount": "اوییدن وه سیستم / درست کردن اکانت",
        "userlogin": "اوییدن وه سیستم / درست کردن اکانت",
        "userloginnocreate": "اویدن وه سیستم",
        "userlogin-joinproject": "ملحق شۉ ۉھ {{SITENAME}}",
        "nologin": "اکانت ناریت؟ $1.",
        "nologinlink": "راست کردن یه حساو کاروری",
-       "createaccount": "راس کردن حسآۉ",
+       "createaccount": "راس کیردأن حیسآڤ",
        "gotaccount": "اکانت داریت؟ $1.",
        "gotaccountlink": "اویدن وه سیستم",
        "userlogin-resetlink": "مشخصه یل ورود خوتونه نونیت؟",
        "createaccountreason": "دلیل:",
        "createacct-reason": "دلیل",
        "createacct-reason-ph": "سیچه داریت یه اکانت دیه ایسازیت",
-       "createacct-captcha": "چک کردن امنیتی",
-       "createacct-imgcaptcha-ph": "اÛ\8c Ù\86شتÙ\86Ù\87 Ú©Ú¾ Ø¯Û\89Ù\85Ù\86 Ø³Û\8cÙ\84 Ú©Û\8c Û\89ارد کۉ",
+       "createacct-captcha": "چیک کیردأن أمنیأتی",
+       "createacct-imgcaptcha-ph": "ئÛ\8c Ù\86شتÙ\86Û\95 Ú©Û\95 Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86 Ø³Û\8cÙ\84 Ú©Û\8c Ú¤Ø§Ø±Û\8cد کۉ",
        "createacct-submit": "حسآۉ خۉتۉنه راس کنیت",
        "createacct-another-submit": "یه اکانت دیه بساز",
        "createacct-benefit-heading": "{{SITENAME}} ۉا بجلی کپ خۉتۉن راسھ بیه.",
        "accountcreated": "اکانت ساخته بی",
        "createaccount-title": "اکانت سازی سی {{SITENAME}}",
        "login-abort-generic": "ورود ایشا ناموفق وابی - سقط وابی",
-       "loginlanguagelabel": "زۉۉن:$1",
+       "loginlanguagelabel": "زوٙوٙن:$1",
        "pt-login": "ئۉیدأن ڤھ سیستم",
        "pt-login-button": "ئۉیدن ۉھ سیستم",
-       "pt-createaccount": "راس کردن حسآۉ",
-       "pt-userlogout": "رتن زھ سیستم",
+       "pt-createaccount": "راس کیردأن حیسآۉ",
+       "pt-userlogout": "رأتÙ\86 Ø²Ú¾ Ø³Û\8cستÙ\85",
        "changepassword": "تغییر رمز",
        "resetpass_announce": "سی پایان ورود ، ایشا واسی یه رمز جدید سیخوت به ونی.",
        "resetpass_header": "تغییر رمز اکانت",
        "resetpass-temp-password": "رمز جایگزین",
        "resetpass-expired": "رمز ایشانه اعتبار ناره.لطفا یه رمز نو سیخوتون بونیت.",
        "passwordreset": "تعویض رمز",
-       "bold_sample": "Ù\85تÙ\86 Ú¯Ù¾ Ù\86ما",
-       "bold_tip": "Ù\85تÙ\86 Ú¯Ù¾ Ù\86ما",
-       "italic_sample": "Ù\85تÙ\86 Ø´Ú©Ø³ØªÙ\87",
-       "italic_tip": "Ù\85تÙ\86 Ø´Ú©Ø³ØªÙ\87",
-       "link_sample": "عنۉان لینک",
-       "link_tip": "لینک داخلی",
-       "extlink_sample": "http://www.example.com عنۉان لینک",
-       "extlink_tip": "(به خاطر بسپار http:// prefix)\nلینک خارجی",
-       "headline_sample": "سرخط Ù\85تن",
-       "headline_tip": "2سرخط یکسان",
-       "nowiki_sample": "Ù\85تÙ\86 Ø´Ú©Ù\84 Ù\86دائھ Û\8cاÙ\81رÙ\85ت Ù\86Û\89ابÛ\8cدھ Ø±Ø§ Ø§Û\8cچۉ بنین",
-       "nowiki_tip": "زھ فرمت کردن یا شکل دائن ۉیکی دس ۉردار",
-       "image_tip": "فایل محاط ۉابید",
-       "media_tip": "لینک فایل",
-       "sig_tip": "اÙ\85ضا Ø§Û\8cشا Û\89 Ø¨Ø±Ú\86سب Ø²Ù\85ان",
-       "hr_tip": "خط Ø§Ù\81Ù\82Û\8c (Ú©Ù\85 Ø§Ø³ØªÙ\81ادھ Ú©نین)",
-       "summary": "خلاصه:",
-       "minoredit": "اÛ\8c Û\8cÙ\87 Ø§ØµÙ\84اح Ú©Ú\86Ú© Û\89ابی",
-       "watchthis": "Ù¾Û\8cÚ¯Û\8cرÛ\8c Ø§Û\8c Ø¨Ù\84Ú¯Ù\87",
-       "savearticle": "بلگه ضبط بوھ",
-       "showpreview": "پیش‌نمایش",
-       "showdiff": "نشۉدائن تغییرل",
-       "anoneditwarning": "<strong>هشدار:</strong> ایشا نۉایته مئنه سیستم. آی پی ایشا سی عۉمۉم قابل رۉیت هی ار اصلاحی بکنیت. ار ایشا <strong>[$1 ورود]</strong> یا <strong>[$2 راس کردن یه حسآۉ]</strong>, اصلاحل ایشا به حسآۉ کارۉری ایشا ھشتھ ایۉان ۉا منفعل حسآۉل دیه..",
-       "loginreqlink": "ئۉیدن ۉھ سیستم",
+       "bold_sample": "Ù\85أتÙ\86 Ú¾ Ú¯Ø£Ù¾ Ù\86Û\8cما",
+       "bold_tip": "Ù\85أتÙ\86 Ú¾ Ú¯Ø£Ù¾ Ù\86Û\8cما",
+       "italic_sample": "Ù\85أتÙ\86 Ú¾ Ø´Û\8cکأستÛ\95",
+       "italic_tip": "Ù\85أتÙ\86 Ú¾ Ø´Û\8cکأستÛ\95",
+       "link_sample": "عۉنڤان ھ لینک",
+       "link_tip": "لینک ھ داخلی",
+       "extlink_sample": "http://www.example.com عۉنڤان ھ لینک",
+       "extlink_tip": "(ڤە خاطیر بیسپار http:// prefix)\nلینک ھ خاریجی",
+       "headline_sample": "سأرخأط Ù\85Ø£تن",
+       "headline_tip": "2سأرخأط یکسان",
+       "nowiki_sample": "Ù\85أتÙ\86 Ø´Û\8cÚ©Ù\84 Ù\86أدائÛ\95 Û\8cا Ù\81Û\89رÙ\85أت Ù\86أڤابÛ\8cدھ Ø±Ù\86Û\95 Ø¦Ø¨چۉ بنین",
+       "nowiki_tip": "زھ فۉرمأت کیردأن یا شیکل دائن ڤیکی دس ڤیردار",
+       "image_tip": "فایل مۉحاط ڤابید",
+       "media_tip": "لینک ھ فایل",
+       "sig_tip": "ئÛ\8cÙ\85ضا Ø¦Û\8cشا Ú¤ Ø¨Ø£Ø±Ú\86أسب Ø²Û\8cÙ\85Ù\88Ù\99ن",
+       "hr_tip": "خأط Ø¦Ù\88Ù\81Û\89Ù\82Û\8c (Ú©Ø£Ù\85 Ø¦Û\8cستÛ\8cÙ\81ادھ Ú©Û\89نین)",
+       "summary": "خۉلاصە:",
+       "minoredit": "ئÛ\8c Û\8cÛ\95 Ø¦Û\8cصÙ\84اح Ú©Ù\88Ù\99Ú\86Û\8cر Ú¤ابی",
+       "watchthis": "Ù¾Û\8cÚ¯Û\8cرÛ\8c Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95",
+       "savearticle": "بألگە ضأبط ڤا",
+       "showpreview": "پیش‌نمۉیش",
+       "showdiff": "نیشۉدائن تأغییرل",
+       "anoneditwarning": "<strong>هۉشدار:</strong> ئیشا نأڤایتە مئنە سیستم. ئای پی ئیشا سی عۉموٙم قابل رۉیأت هی أر ئیصلاحی بۉکۉنیت. أر ئیشا <strong>[$1 وروٙد]</strong> یا <strong>[$2 راس کیردأن یە حیسآۉ]</strong>, ئیصلاحل ئیشا بە حیسآۉ کارڤأری ئیشا ھشتە ئیڤان ڤا مۉنفأعیل حیسآڤل دیە..",
+       "loginreqlink": "ئوٙییدن ڤە سیستم",
        "newarticletext": "ایشا یه لینک ۉھ یه بلگنه که هنی ۉجود نارنه دنبال کردیته.\nسی راس کردن ای بلگه،نوشتنه مئنه جعبه زیر شرۉع کنیت(بینیتۉ [$1 help page] سی اصلاعات اضافی).\nار ایشا ۉا خطا ایچه هیسیت، ری <strong>back</strong> button مرۉرگر ایشا کلیژ کیت.",
        "noarticletext": "ألان مأتنی مئنە ئی بألگە نی.\nئیشا ئیتأرید [[Special:Search/{{PAGENAME}}|جۉستأن سی عۉنڤان ئی بألگە]] مئنە بألگە یلە دیە.\n<span class=\"plainlinks\">[{{fullurl:{{#مأخصوٙص:نیمایل}}|بألگە={{FULLPAGENAMEE}}}} جۉستأن سی نیمایل مأربوٙط], یا [{{fullurl:{{FULLPAGENAME}}|ئیقدام=ئیصلاح}} ئیصلاح کۉ ئی بألگنە]</span>.",
-       "noarticletext-nopermission": "د Ø­Ø§Ù\84 Ø¬Ø§Ø±Û\8c Ù\85تÙ\86Û\8c Ù\85ئÙ\86Ù\87 Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Ù\86Û\8cسس.\nاÛ\8cشا Ø§Û\8cترÛ\8cد [[Special:Search/{{PAGENAME}}|search for this page title]] Ù\85ئÙ\86Ù\87 Ø¨Ù\84Ú¯Ù\84 Ø¯Û\8cÙ\87Ø\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>Ø\8c Û\89Ù\84Û\8c Ø§Û\8cشا Ù\86Û\8cترÛ\8cد Ø§Û\8c Ø¨Ù\84Ú¯Ù\86Ù\87 Ø±Ø§Ø³ Ø¨Ú©نیت.",
+       "noarticletext-nopermission": "د Ø­Ø§Ù\84 Ø¬Ø§Ø±Û\8c Ù\85أتÙ\86Û\8c Ù\85ئÙ\86Û\95 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ù\86Û\8cسس.\nئÛ\8cشا Ø¦Û\8cتأرÛ\8cد [[Special:Search/{{PAGENAME}}|search for this page title]] Ù\85ئÙ\86Û\95 Ø¨Ø£Ù\84Ú¯Ù\84 Ø¯Û\8cÛ\95Ø\8c Û\8cا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>Ø\8c Ú¤Ø£Ù\84Û\8c Ø¦Û\8cشا Ù\86Û\8cتأرÛ\8cد Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Ù\86Û\95 Ø±Ø§Ø³ Ø¨Û\89Ú©Û\89نیت.",
        "editing": "درحال اصلاح $1",
        "creating": "راس کردن $1",
        "editingsection": "درحال اصلاح $1 (قسمت)",
        "templatesused": "{{PLURAL:$1|قالب|قالبل}} اسفادھ بیه مئنه ای بلگه:",
        "template-protected": "(تأحت حمایت)",
-       "template-semiprotected": "(نیمه حمایت ۉابیدھ)",
+       "template-semiprotected": "(نیمە حیمایت ڤابیدھ)",
        "hiddencategories": "ای بلگه عضۉ {{PLURAL:$1|1 دسه بنی قائم|$1 دسه بنی یل قائم}} هیسس :",
        "permissionserrorstext-withaction": "ایشا اجازھ ناریت که $2, سی ای {{PLURAL:$1|دلیل|دلیلل}}:",
        "moveddeleted-notice": "ای بلگه حذف ۉابیدھ.\nحذف ۉ انتقال سیاهه ای بلگه فراهم ۉابیدھ دۉمن سرچشمه.",
        "previousrevision": "← ئیصلاح قأبلی",
        "nextrevision": "ۉرژن نۉتر →",
        "currentrevisionlink": "آخرین ۉرژن",
-       "cur": "فعلی",
-       "last": "قبلی",
-       "rev-delundel": "Ù\82ابÙ\84Û\8cت Øªغییر دائن",
+       "cur": "فیعلی",
+       "last": "Ù\82أبÙ\84Û\8c",
+       "rev-delundel": "Ù\82ابÙ\84Û\8cأت ØªØ£غییر دائن",
        "history-title": "تاریخچه اصلاحل $1",
        "difference-title": "فرخ ۉا بین تجدید نطرل \"$1\"",
        "lineno": "سأطر $1:",
        "diff-multi-sameuser": "({{PLURAL:$1|یه ۉرزن متۉسط|$1 ۉرژنل متۉسط}} تۉسط کارۉر مشابه نشۉ نۉابیه)",
        "searchresults": "نأتیجل جۉستأن",
        "searchresults-title": "نأتیجل جۉستأن سی \"$1\"",
-       "prevn": "قبلی {{PLURAL:$1|$1}}",
-       "nextn": "بعدی {{PLURAL:$1|$1}}",
-       "nextn-title": "بعدÛ\8c $1 {{PLURAL:$1|Ù\86تÛ\8cجÙ\87\86تیجل}}",
+       "prevn": "Ù\82أبÙ\84Û\8c {{PLURAL:$1|$1}}",
+       "nextn": "بأعدÛ\8c {{PLURAL:$1|$1}}",
+       "nextn-title": "بأعدÛ\8c $1 {{PLURAL:$1|Ù\86أتÛ\8cجÛ\95\86Ø£تیجل}}",
        "shown-title": "نیشۉ دائن $1 {{PLURAL:$1|نأتیجە|نأتیجل}} د هر بألگە",
-       "viewprevnext": "مشاهدھ ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-new": "<strong>درست Ú©Û\89 Ø§Û\8c Ø¨Ù\84Ú¯Ù\86Ù\87 \"[[:$1]]\" Ù\85ئÙ\86Ù\87 Ø§Û\8c Û\89Û\8cÚ©Û\8c!</strong> {{PLURAL:$2|0=|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ø¨Ù\84Ú¯Ù\87 Ø§Û\8c Ú©Ù\87 Û\89ا Ø¬Ø³ØªÙ\86 Ù¾Û\8cداش Ú©Ø±Ø¯Û\8cÙ\87.|Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ù\86تÛ\8cجÙ\84 Ø¬Ø³ØªÙ\86Ù\87.}}",
+       "viewprevnext": "مۉشاهدھ ($1 {{int:pipe-separator}} $2) ($3)",
+       "searchmenu-new": "<strong>راس Ú©Û\89 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Ù\86Û\95 \"[[:$1]]\" Ù\85ئÙ\86Û\95 Ø¦Û\8c Ú¤Û\8cÚ©Û\8c!</strong> {{PLURAL:$2|0=|Ù\87Ø£Ù\85Ú\86Û\8cÙ\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ø¨Ø£Ù\84Ú¯Û\95 Ø¦Û\8c Ú©Û\95 Ú¤Ø§ Ø¬Û\89ستأÙ\86 Ù¾Û\8cداش Ú©Ø£Ø±Ø¯Û\8cÛ\95.|Ù\87Ø£Ù\85Ú\86Û\8cÙ\86Û\8cÙ\86 Ø³Ù\84 Ú©Û\89 Ù\86أتÛ\8cجÙ\84 Ø¬Û\89ستأÙ\86Û\95.}}",
        "searchprofile-articles": "بألگە مۉحتڤا",
        "searchprofile-images": "چأندرسانە ئی",
        "searchprofile-everything": "همە چیا",
        "searchprofile-everything-tooltip": "جۉستأن سی مۉحتڤا(شامل بألگل گأپ)",
        "searchprofile-advanced-tooltip": "جۉستأن مأئنە هۉمدیرأنگل سفارشی",
        "search-result-size": "$1 ({{PLURAL:$2|1 کألمە|$2 کألمل}})",
-       "search-redirect": "(تغÛ\8cÛ\8cر Ù\85سیر $1)",
-       "search-section": "(قسمت $1)",
+       "search-redirect": "(تأغÛ\8cÛ\8cر Ù\85Ø£سیر $1)",
+       "search-section": "(قیسمأت $1)",
        "search-suggest": "آیا منطۉر ایشا ای بی:$1",
-       "searchall": "همه",
-       "search-showingresults": "{{PLURAL:$4|نتیجه <strong>$1</strong> ز <strong>$3</strong>|نتیجل <strong>$1 - $2</strong> ز <strong>$3</strong>}}",
-       "search-nonefound": "Ù\86تÛ\8cجÙ\87 Ø§Û\8c Ù\85رتبط Û\89ا Ù\87Û\89Ù\86Û\8c Ú©Ù\87 Ø¯Ø± Ø®Û\89است Ø¯Û\8cتÙ\87 نی.",
-       "mypreferences": "تنظیمل",
+       "searchall": "ھأمە",
+       "search-showingresults": "{{PLURAL:$4|Ù\86تÛ\8cجÙ\87 <strong>$1</strong> Ø² <strong>$3</strong>|Ù\86أتÛ\8cجÙ\84 <strong>$1 - $2</strong> Ø² <strong>$3</strong>}}",
+       "search-nonefound": "Ù\86أتÛ\8cجÛ\95 Ø¦Û\8c Ù\85Û\89رتأبÛ\8cØ· Ú¤Ø§ Ù\87Û\89Ù\86Û\8c Ú©Û\95 Ø¯Ø£Ø±Ø®Ú¤Ø§Ø³Øª Ø¯Û\8cتÛ\95 نی.",
+       "mypreferences": "تأرجیحل",
        "right-writeapi": "ئیستفادھ د نڤشتن ڤە صوٙرأت API",
-       "newuserlogpage": "سیاهە راس کردن حسآۉ",
-       "enhancedrc-history": "تاریخچھ",
+       "newuserlogpage": "سیاهە راس کیردأن حیسآۉ",
+       "enhancedrc-history": "ڤیرگار",
        "recentchanges": "تأغییرل نۉ",
-       "recentchanges-legend": "گزینه یل تغییرل اخیر",
-       "recentchanges-summary": "Ø´Û\8cار ØªØºÛ\8cÛ\8cرÙ\84 Ø§Ø®Û\8cر Ù\85ئÙ\86Ù\87 Ø§Û\8c Ø¨Ù\84Ú¯Ù\87 Û\89Ú¾ Û\89یکی .",
+       "recentchanges-legend": "گۉزینە یل تأغییرل أخیر",
+       "recentchanges-summary": "Ø´Û\8cار ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø£Ø®Û\8cر Ù\85ئÙ\86Û\95 Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Û\95 Ú¤یکی .",
        "recentchanges-label-newpage": "ئی ئیصلاح یە بألگە نوٙ ئیسازھ",
        "recentchanges-label-minor": "ئی یە ئیصلاح کوٙچیر ڤابی",
        "recentchanges-label-bot": "ئی ئیصلاح تأڤأسۉط یە روٙبات انجام ڤابیە",
-       "recentchanges-label-unpatrolled": "اÛ\8c Ø§ØµÙ\84اح Ù\87Û\89Ù\86Û\89 Ú¯Ø´Øª Ù\86Û\89ابیدھ",
-       "recentchanges-label-plusminus": "اÙ\86دازھ Ø¨Ù\84Ú¯Ù\87 Û\89ا Ø§Û\8c ØªØ¹Ø¯Ø§Ø¯ Ø¨Ø§Û\8cت ØªØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ø¨Û\8cÙ\87",
-       "recentchanges-legend-heading": "'''Ø¢Ù\84شتÛ\8cا Ø¦Û\8cÚ¾ Ø³Ù\86Û\8c :'''",
-       "recentchanges-legend-newpage": "{{عضۉل انجۉمن:تغییرل اخیر-برچسب-بلگه نۉ}} (هنی سل کۉ [[Special:NewPages|لیست بلگل نۉ]])",
-       "rclistfrom": "نشۉدائن تغییرل نۉ ۉا شرۉع زھ $3 $2",
-       "rcshowhideminor": "اصلاحل کچک $1",
+       "recentchanges-label-unpatrolled": "ئÛ\8c Ø¦Û\8cصÙ\84اح Ù\87Û\89Ù\86Û\89 Ú¯Ø£Ø´Øª Ù\86Ø£Ú¤ابیدھ",
+       "recentchanges-label-plusminus": "Ø£Ù\86دازھ Ø¨Ø£Ù\84Ú¯Û\95 Ú¤Ø§ Ø¦Û\8c ØªÛ\8cعداد Ø¨Ø§Û\8cت ØªØ£ØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ø¨Û\8cÛ\95",
+       "recentchanges-legend-heading": "'''تأغÛ\8cÛ\8cرÙ\84 Ù\86Û\89 :'''",
+       "recentchanges-legend-newpage": "{{عۉضڤل أنجوٙمأن:تأغییرل أخیر-بأرچأسب-بألگە نۉ}} (هأنی سل کۉ [[Special:NewPages|لیست بألگل نۉ]])",
+       "rclistfrom": "نیشۉ دائن تأغییرل نۉ ڤا شۉرۉ زھ $3 $2",
+       "rcshowhideminor": "ئÛ\8cصلاحل کچک $1",
        "rcshowhideminor-show": "نشۉ دائن",
-       "rcshowhideminor-hide": "قائم کردن",
-       "rcshowhidebots": "$1 ربات‌ل یا بۉتل",
-       "rcshowhidebots-show": "نشۉ دائن",
+       "rcshowhideminor-hide": "قائم کیردأن",
+       "rcshowhidebots": "$1 رۉبات‌یل یا بوٙتیل",
+       "rcshowhidebots-show": "نیشۉ دائن",
        "rcshowhidebots-hide": "قائم کردن",
-       "rcshowhideliu": "$1 حسآۉل وارد وابیدھ",
-       "rcshowhideliu-hide": "قائم کردن",
-       "rcshowhideanons": "$1 کارۉران داخل نۉابیدھ",
+       "rcshowhideliu": "$1 حیسآڤل ڤارید نڤابیدھ",
+       "rcshowhideliu-hide": "قائم کیردأن",
+       "rcshowhideanons": "$1 کارڤأرل ڤارید نڤابیدھ",
        "rcshowhideanons-show": "نشۉ دائن",
-       "rcshowhideanons-hide": "قائم کردن",
-       "rcshowhidemine": "$1 Ø§صلاحل مۉ",
+       "rcshowhideanons-hide": "قائم کیردأن",
+       "rcshowhidemine": "$1 Ø¦Û\8cصلاحل مۉ",
        "rcshowhidemine-show": "نشۉ دائن",
-       "rcshowhidemine-hide": "قائم کردن",
-       "rclinks": "نشودائن ئاخرین $1 تغییر مئن $2 روز اخیر؛ $3",
+       "rcshowhidemine-hide": "قائم کیردأن",
+       "rclinks": "نیشۉ دائن ئاخأرین $1 تأغییر مئن $2 روٙز أخیر؛ $3",
        "diff": "فأرخ",
        "hist": "گۉزاریش",
-       "hide": "قائم کردن",
-       "show": "نشۉ دائن",
+       "hide": "قائم کیردأن",
+       "show": "نیشۉ دائن",
        "minoreditletter": "رز",
        "newpageletter": "تا",
        "boteditletter": "ر",
        "rc-change-size-new": "$1 {{PLURAL:$1|بایت|بایتل}} بأعد تأغییر",
-       "recentchangeslinked": "تغÛ\8cÛ\8cرÙ\84 Ù\85ربÛ\89ط",
+       "recentchangeslinked": "تأغÛ\8cÛ\8cرÙ\84 Ù\85أربÙ\88Ù\99ط",
        "recentchangeslinked-toolbox": "تأغییرل مأربوٙط",
-       "recentchangeslinked-title": "تغÛ\8cÛ\8cرÙ\84 Ù\85رتبط Û\89ا $1",
+       "recentchangeslinked-title": "تأغÛ\8cÛ\8cرÙ\84 Ù\85Û\89رتأبÛ\8cØ· Ú¤ا $1",
        "recentchangeslinked-summary": "ئی بألگە خاص تأغییرل اخیر مأئنە بألگل لینک ڤابیدھ ڤە ئی بألگنە نیشۉ ادھ.\nبألگلی کە مأئنە [[Special:Watchlist|لیست پیگیری یل]] ئیشا هیسن بە شکل '''سیاھ''' نیشۉ دادھ ابۉن.",
-       "recentchangeslinked-page": "نۉم بلگه:",
-       "recentchangeslinked-to": "نشۉ دائن تغییرل بلگلی که ۉ بلگه دادھ بیه لینک دادھ شدنه به جای",
+       "recentchangeslinked-page": "نۉم بألگە:",
+       "recentchangeslinked-to": "نیشۉ دائن تأغییرل بألگلی کە ڤە بألگە دادھ بیە لینک دادھ شۉدنە بە جای",
        "upload": "بلم گیر کردن فایل",
-       "filedesc": "خلاصه",
-       "license-header": "صدۉر مجۉز",
+       "filedesc": "خۉلاصە",
+       "license-header": "صۉدوٙر مۉجأڤیز",
        "imgfile": "فایل",
        "file-anchor-link": "فایل",
        "filehist": "ڤیرگار فایل",
        "filehist-comment": "توٙضیح",
        "imagelinks": "ئیستفادھ د فایل",
        "linkstoimage": "دوٙمین الذکر {{PLURAL:$1|لینکل بألگە|$1 لینک بألگل}} بە ئی فایل:",
-       "nolinkstoimage": "بلگه یلی که ۉھ ای فایل لینک دائنه نی.",
+       "nolinkstoimage": "بألگە یلی کە ڤە ئی فایل لینک دائنە نی.",
        "sharedupload-desc-here": "ئی فایل ز $1 ئوٙمائە ڤ شاید د پۉرۉجە یل دیە مورد ئیستفادھ ڤابین.\nتوٙضیحتل ری [$2 بألگە تۉضیح فایل] دوٙمین نیشۉ ڤابیە .",
-       "upload-disallowed-here": "اÛ\8cشا Ù\86Û\8cترÛ\8cد Ø§Û\8c Ù\81اÛ\8cÙ\84Ù\86Ù\87 Ø¨Ù\86Û\89Û\8cسÛ\8cد",
+       "upload-disallowed-here": "ئÛ\8cشا Ù\86Û\8cتأرÛ\8cت Ø¦Û\8c Ù\81اÛ\8cÙ\84Ù\86Û\95 Ø¨Û\8cÙ\86Ú¤Û\8cسÛ\8cت",
        "randompage": "بألگە بأختە کی",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایتل}}",
        "nmembers": "$1 {{PLURAL:$1|عضۉ|اعضۉل}}",
        "newpages": "بألگە یل نوٙ",
        "pager-older-n": "{{PLURAL:$1|قدیمی تر 1|قدیمی تر $1}}",
-       "booksources": "سرÚ\86Ø´Ù\85Ù\84 Ú©ØªØ¢Û\89",
+       "booksources": "سأرÚ\86Û\8cØ´Ù\85Û\8cÙ\84 Ú©Û\8cتآڤ",
        "booksources-search-legend": "جستن سی سرچشمل کتآۉ",
        "booksources-search": "جستن",
-       "log": "نمایل",
+       "log": "نیمایل",
        "allarticles": "همه بلگل",
        "allpagessubmit": "رۉ",
        "categories": "دسه یل",
-       "mywatchlist": "فهرست پیگیری یل",
+       "mywatchlist": "فیهرست پیگیری یل",
        "watch": "پی‌گیری",
        "dellogpage": "نمایه حذف",
        "rollbacklink": "عأقأب گرد",
        "namespace_association": "هۉمدرأنگل مۉرتأبط",
        "tooltip-namespace_association": "ئینتخاب کۉ ئی جأڤأنە سیکە گأپ یا مۉضوٙع هۉمدرأنگ مۉرتأبط ڤا هۉمدرأنگل ئینتخاب ڤابینە قرار بئنی.",
        "blanknamespace": "(أصلی)",
-       "contributions": "{{GENDER:$1|سھمل}} کارۉر",
-       "mycontris": "سھمل",
+       "contributions": "{{GENDER:$1|سأھمیل}} کارڤأر",
+       "mycontris": "سأھمیل",
        "month": "مئنھ ای ماھ (ۉ قبل زھ ھۉ):",
        "year": "مئنھ ای سال (ۉ قبل زھ ھۉ):",
        "whatlinkshere": "لینکل ئی بألگە",
-       "whatlinkshere-title": "بلگل که لینک دائنه ۉھ \"$1\"",
-       "whatlinkshere-page": "بلگه",
-       "linkshere": "لینک بلگل دۉمن الذکر ۉھ '''[[:$1]]''':",
-       "isredirect": "بلگه تغییر مسیر",
-       "istemplate": "استÙ\81ادھ Û\89ابÛ\8cدھ Ø¯Ø§Ø®Ù\84 Ø¨Ù\84Ú¯Ù\87",
-       "isimage": "لینک فایل",
-       "whatlinkshere-prev": "{{PLURAL:$1|Ù\82بÙ\84Û\8c |Ù\85Û\89رد Ù\82بلی$1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|بعدÛ\8c |Ù\85Û\89رد Ø¨عدی $1}}",
+       "whatlinkshere-title": "بألگل کە لینک دائنە ڤە \"$1\"",
+       "whatlinkshere-page": "بألگە:",
+       "linkshere": "لینک ھ بألگل دوٙمین الذیکر ڤە '''[[:$1]]''':",
+       "isredirect": "بألگە تأغییر مأسیر",
+       "istemplate": "ئÛ\8cستÛ\8cÙ\81ادھ Ú¤Ø§Ø¨Û\8cدھ Ø¯Ø§Ø®Ù\84 Ø¨Ø£Ù\84Ú¯Û\95",
+       "isimage": "لینک ھ فایل",
+       "whatlinkshere-prev": "{{PLURAL:$1|Ù\82أبÙ\84Û\8c |Ù\85Û\89رÛ\8cد Ù\82Ø£بلی$1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|بأعدÛ\8c |Ù\85Û\89رÛ\8cد Ø¨Ø£عدی $1}}",
        "whatlinkshere-links": "← لینکل",
-       "whatlinkshere-hideredirs": "$1 ØªØºÛ\8cÛ\8cرÙ\84 Ù\85سیر",
-       "whatlinkshere-hidetrans": "$1 ØªØ±Ø§Ú¯Ù\86جایش",
+       "whatlinkshere-hideredirs": "$1 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ù\85Ø£سیر",
+       "whatlinkshere-hidetrans": "$1 ØªØ£Ø±Ø§Ú¯Û\89Ù\86جاÛ\8cیش",
        "whatlinkshere-hidelinks": "$1 لینکل",
-       "whatlinkshere-filters": "فیلترل",
+       "whatlinkshere-filters": "فیلتیرل",
        "blocklink": "بسە بۉھ",
        "contribslink": "شۉراکأتل",
        "movelogpage": "نمایه جابجایی",
-       "export": "بلگل صادرھ",
+       "export": "بألگل صادرھ",
        "thumbnail-more": "گأپ کردن",
-       "tooltip-pt-userpage": "حسآۉ کارۉری ایشا",
-       "tooltip-pt-mytalk": "بلگه گپ ایشا",
-       "tooltip-pt-preferences": "اÛ\89Ù\84Û\89Û\8cتل مۉ",
-       "tooltip-pt-watchlist": "لیست بلگلی که ایشا تغییرل هۉنۉنه  دنبال اکنین",
-       "tooltip-pt-mycontris": "لیست سھمل ایشا",
+       "tooltip-pt-userpage": "حیسآۉ کارڤأری ئیشا",
+       "tooltip-pt-mytalk": "بألگە گأپ ئیشا",
+       "tooltip-pt-preferences": "ئÛ\89Ù\84Ø£Ú¤Û\8cØ£تل مۉ",
+       "tooltip-pt-watchlist": "لیست بألگلی کە ئیشا تأغییرل هۉنۉنە  دۉنبال ئیکۉنین",
+       "tooltip-pt-mycontris": "لیست سأھمیل ئیشا",
        "tooltip-pt-login": "توٙصیە ڤابوٙھ کە ڤە سیستم داخل بوٙین. أما ئیجباری نیسس",
-       "tooltip-pt-logout": "رتن زھ سیستم",
+       "tooltip-pt-logout": "رأتÙ\86 Ø²Ú¾ Ø³Û\8cستÙ\85",
        "tooltip-pt-createaccount": "توٙصیە ڤابوٙھ کە حسآڤ کارڤأری راس بکنیت یا ڤە سیستم داخل بوٙین. اما ئیجباری نیسس",
        "tooltip-ca-talk": "قسە د بألگە مۉحتڤا",
        "tooltip-ca-edit": "ایسھ ترین ای بلگھ نھ اصلاح کنیت.لطفا قبل اصلاح ای بلگھ ز دۉکمه پیش نمایش استفاده کنیت",
-       "tooltip-ca-addsection": "ئاغاز کردن یە قسمت نوٙ",
-       "tooltip-ca-viewsource": "اÛ\8c Ø¨Ù\84Ú¯Ù\87  Ø¯Û\89Ù\85Ù\86 Ø­Ù\85اÛ\8cتÙ\87. \nاÛ\8cشا ØªØ±Û\8cÙ\86 Ø³Ø±Ú\86Ø´Ù\85Ú¾ Ø³Ú¾ Ø¨Û\89Û\8cÙ\86Û\8cÙ\86",
+       "tooltip-ca-addsection": "ئاغاز کیردأن یە قسمت نوٙ",
+       "tooltip-ca-viewsource": "ئÛ\8c Ø¨Ø£Ù\84Ú¯Û\95 Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86 Ø­Û\8cÙ\85اÛ\8cأتÛ\95. \nئÛ\8cشا ØªØ£Ø±Û\8cÙ\86 Ø³Ø£Ø±Ú\86Û\8cØ´Ù\85Û\95 Ø³Û\95 Ø¨Û\8cØ®Ù\88Ù\99Ù\86Û\8cت",
        "tooltip-ca-history": "ڤیرگار",
        "tooltip-ca-move": "جابجاکردن ای بلگه",
        "tooltip-ca-watch": "ئیضاف کردن ئی بألگە ڤە لیست پیگیری یل ئیشا",
        "tooltip-n-help": "ینە جا سی سیل کردن",
        "tooltip-t-whatlinkshere": "فهرست همە بألگە یل ڤیکی کە ئیچوٙ لینک دارن",
        "tooltip-t-recentchangeslinked": "تأغییرل آخر مئن بألگە کە لینک دانە ڤە ئی بألگە",
-       "tooltip-feed-atom": "تغذÛ\8cÙ\87 Ú©Ú\86Ú© ØªØ±Û\8cÙ\86 Ø¬Ø²Ø¡  Ø§Û\8c Ø¨Ù\84Ú¯Ù\87",
-       "tooltip-t-contributions": "یه لیست ز مشارکت کنندھ یل ۉ مقاله دهندھ یل ای بلگه",
+       "tooltip-feed-atom": "تأغذÛ\8cÛ\95 Ú©Ú\86Ú© ØªØ£Ø±Û\8cÙ\86 Ø¬Û\89زء  Ø¦Û\8c Ø¨Ø£Ù\84Ú¯Û\95",
+       "tooltip-t-contributions": "یە لیست ز مۉشاریکأت کۉنأندھ یل ڤ مأقالە دهأندھ یل ئی بألگە",
        "tooltip-t-upload": "بلم گیر کردن فایلل",
        "tooltip-t-specialpages": "بألگە یل ڤیجە",
        "tooltip-t-print": "ویرژن سی چاپ ئی بألگە",
        "tooltip-t-permalink": "لینکل دائمی ڤە ئی ۉیرژن ئی بألگە",
        "tooltip-ca-nstab-main": "دیئن بألگە مۉحتڤا",
-       "tooltip-ca-nstab-user": "دیئن بلگه کارۉر",
+       "tooltip-ca-nstab-user": "دیئن بألگە کارڤأر",
        "tooltip-ca-nstab-special": "ئی بألگە ھا ڤیجە ڤ ئیشا نیتأرین خۉد ئی بألگنە ئیصلاح کنیت",
        "tooltip-ca-nstab-project": "دیئن بلگه پرۉجه",
        "tooltip-ca-nstab-image": "دیئن بألگە فایل",
-       "tooltip-ca-nstab-template": "دیئن قالب",
+       "tooltip-ca-nstab-template": "دیئن قالیب",
        "tooltip-ca-nstab-category": "دیئن بألگە دسە بأنی",
-       "tooltip-save": "ضبط Ú©Ø±Ø¯Ù\86 ØªØºÛ\8cÛ\8cرÙ\84 Ø§یشا",
-       "tooltip-preview": " Ø¯Û\8cئÙ\86 ØªØºÛ\8cÛ\8cرÙ\84 Ø\8c Ù\84Ø·Ù\81ا Ù\82بÙ\84 Ø¶Ø¨Ø· Ú©Ø±Ø¯Ù\86 Ø¯ Ø§Û\8c Ø®Ø¯Ù\85ت Ø§Ø³ØªÙ\81ادھ Ú©نیت!",
-       "tooltip-diff": "دÛ\8cئÙ\86 ØªØºÛ\8cÛ\8cرÙ\84Û\8c Ú©Ù\87 Ø§Û\8cشا Ù\85ئÙ\86 Ø§Û\8c Ù\85تÙ\86 Ø§Ù\86جاÙ\85 Ø¯Ø§Ø¯Û\8cÙ\86Ù\87",
+       "tooltip-save": "ضأبط Ú©Û\8cردأÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø¦یشا",
+       "tooltip-preview": " Ø¯Û\8cئÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84 Ø\8c Ù\84Û\89Ø·Ù\81اÙ\8b Ù\82أبÙ\84 Ú¾ Ø¶Ø£Ø¨Ø· Ú©Û\8cردأÙ\86 Ø¯ Ø¦Û\8c Ø®Û\8cدÙ\85أت Ø¦Û\8cستÛ\8cÙ\81ادھ Ú©Û\89نیت!",
+       "tooltip-diff": "دÛ\8cئÙ\86 ØªØ£ØºÛ\8cÛ\8cرÙ\84Û\8c Ú©Û\95 Ø¦Û\8cشا Ù\85ئÙ\86 Ø¦Û\8c Ù\85تÙ\86 Ø£Ù\86جاÙ\85 Ø¯Ø§Ø¯Û\8cÙ\86Û\95",
        "tooltip-rollback": "\"اعادە\" ۉرگأردوٙندأن بە ڤأضع أڤألیە سی ئی بألگە کە سی مۉشارکأت  ئاخر ئیصلاح ڤابیدھ ڤا یە کلیک",
-       "tooltip-undo": "\"Ù\84غÙ\88\"Û\89رگشت Ø§Û\8c Ø§ØµÙ\84اح Û\89 Û\89ا Û\89Û\8cدÙ\86 Ù\81رÙ\85 Ø§ØµÙ\84اح Ù\85ئÙ\86Ù\87 Ù¾Û\8cØ´ Ù\86Ù\85اÛ\8cØ´.اجازھ Ø§Û\8cدھ Ú©Ù\87 Û\8cÙ\87 Ø¯Ù\84Û\8cÙ\84 Û\89Ú¾ Ø®Ù\84اصÙ\87 Ø§Ø¶Ø§Ù\81Ù\87 Ø¨Ú©نی.",
-       "tooltip-summary": "یه خلاصه کچکی بنویسیت",
-       "simpleantispam-label": "اÙ\86تخاب Ø¢Ù\86تÛ\8c-اسپÙ\85\nپر <strong>Ù\86Ú©Ù\86Û\8cت</strong> Ø§Û\8cÙ\86Ù\87 مئن!",
+       "tooltip-undo": "\"Ù\84أغڤ\" Ú¤Û\89رگأشت Ø¦Û\8c Ø¦Û\8cصÙ\84اح Ú¤ Ú¤Ø§ Ú¤Û\8cدÙ\86 Ù\81Û\89رÙ\85 Ø¦Û\8cصÙ\84اح Ù\85ئÙ\86Û\95 Ù¾Û\8cØ´ Ù\86Û\8cÙ\85اÛ\8cØ´.ئÛ\8cجازھ Ø¦Û\8cدھ Ú©Û\95 Û\8cÛ\95 Ø¯Ø£Ù\84Û\8cÙ\84 Ú¤Û\95 Ø®Û\89Ù\84اصÛ\95 Ø¦Û\8cضاÙ\81Û\95 Ø¨Û\89Ú©Û\89نی.",
+       "tooltip-summary": "یە خۉلاصە کچکی بینڤیسیت",
+       "simpleantispam-label": "ئÛ\8cÙ\86تÛ\8cخاب Ø¦Ø§Ù\86تÛ\8c-ئÛ\8cسپÛ\8cÙ\85\nÙ¾Û\89ر <strong>Ù\86Ø£Ú©Û\89Ù\86Û\8cت</strong> Ø¦Û\8cÙ\86Û\95 مئن!",
        "pageinfo-toolboxlink": "اطلاعات بألگە",
        "previousdiff": "← اصلاح قدیمی",
        "nextdiff": "اصلاح نۉتر→",
        "file-info-size": "$1 × $2 پیکسل, اندازھ فایل: $3, MIME نۉع: $4",
-       "file-nohires": "Ù\82ابÙ\84Û\8cت ØªÙ\81Ú©Û\8cÚ© Ø¨Ø§Ù\84اترÛ\8c Ø¯Ø± Ø¯Ø³ØªØ±س نی.",
-       "svg-long-desc": "SVG فایل, تقریبا$1 × $2 پیکسل, اندازھ فایل: $3",
+       "file-nohires": "Ù\82ابÙ\84Û\8cأت ØªØ£Ù\81Ú©Û\8cÚ© Ø¨Ø§Ù\84اتأرÛ\8c Ù\85ئÙ\86 Ø¯Ø£Ø³ØªØ±Û\8cس نی.",
+       "svg-long-desc": "SVG فایل, تأقریبا$1 × $2 پیکسل, اندازھ فایل: $3",
        "show-big-image": "اندازھ أصلی",
        "show-big-image-preview": "اندازھ ئی پیش نمایش:$1.",
        "show-big-image-other": "دیە {{PLURAL:$2|تأفکیک پأذیری|تأفکیک پأذیری یل}}: $1.",
        "show-big-image-size": "$1 × $2 پیکسلل",
        "metadata": "فرادادھ",
-       "metadata-help": " Ø§Û\8c Ù\81اÛ\8cÙ\84 Ø¯Ø§Ø±Ø§Û\8c Ø§Ø·Ù\84اعات Ø§Ø¶Ø§Ù\81Ù\87â\80\8cاÛ\8c Ù\87Û\8c Ú©Ù\87 Ø§Ø­ØªÙ\85اÙ\84اÙ\8b Û\89ا Ø¯Û\89ربÛ\8cÙ\86 Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8c Û\8cا Ù¾Û\89Û\8cشگرÛ\8c Ú©Ù\87 Ø³Û\8c Ø§Û\8cجاد Û\8cا Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8cکردÙ\86 Ù\87Û\89 Û\89Ú¾ Ú©Ø§Ø± Ø±Ù\87دھ Ø§Ø¶Ø§Ù\81 Û\89ابÛ\8cدھ . Ø§Û\8cر Ù\81اÛ\8cÙ\84 Ø²Ú¾ Û\89ضعÛ\8cت Ø§Û\89Ù\84Û\8cÙ\87 Ø§Ø³ ØªØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Û\89ابÛ\8cدھ Ø¨Ù\88Ú¾ Ù\85Ù\85Ú©Ù\86Ù\87 Ù\87Ù\85Ù\87 ØªÙ\88ضÛ\8cحات Ù\85Û\89جÙ\88د Ø§Ø·Ù\84اعات Ø¹Û\8cس Ø±Ù\86Ú¾ Ù\85Ù\86عکس Ù\86Ú©Ù\86Ù\87.",
+       "metadata-help": " Ø¦Û\8c Ù\81اÛ\8cÙ\84 Ø¯Ø§Ø±Ø§Û\8c Ø¦Û\8cØ·Ù\84اعات Ú¾ Ø¦Û\8cضاÙ\81Û\95ئÛ\8c Ù\87Û\8c Ú©Û\95 Ø¦Û\8cحتÙ\85اÙ\84Ù\8b Ú¤Ø§ Ø¯Ù\88Ù\99ربÛ\8cÙ\86 Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8c Û\8cا Ù¾Ù\88Ù\99Û\8cشگرÛ\8c Ú©Û\95 Ø³Û\8c Ø¦Û\8cجاد Û\8cا Ø¯Û\8cجÛ\8cتاÙ\84Û\8câ\80\8cÚ©Û\8cردأÙ\86 Ù\87Û\89 Ú¤Û\95 Ú©Ø§Ø± Ø±Ø£Ù\87دھ Ø¦Û\8cضاÙ\81 Ú¤Ø§Ø¨Û\8cدھ . Ø§Û\8cر Ù\81اÛ\8cÙ\84 Ø²Ú¾ Ú¤Ø£Ø¶Ø¹Û\8cأت Ø£Ú¤Ø£Ù\84Û\8cÛ\95 Ú¾Ø³ ØªØ£ØºÛ\8cÛ\8cر Ø¯Ø§Ø¯Ú¾ Ú¤Ø§Ø¨Û\8cدھ Ø¨Û\89Ú¾ Ù\85Ù\88Ù\99Ù\85Ú©Û\8cÙ\86Û\95 Ù\87Ø£Ù\85Û\95 ØªÙ\88Ù\99ضÛ\8cØ­Ù\84 Ù\85Û\89جÙ\88Ù\99د Ø¦Û\8cØ·Ù\84اعات Ø¹Ø£Û\8cس Ø±Ù\86Û\95 Ù\85Û\89Ù\86عأکÛ\8cس Ù\86Ø£Ú©Û\89Ù\86Û\95.",
        "metadata-fields": "زأمینە یل عأیس فرادادھ کە مأئنە ئی پیوٙم لیس ڤابینە ، قرار ڤابی گرتن ری بألگە نوٙمایش عأیس ۉقتی کە جدڤل فرادادھ فروٙریخت.\nبقیە قائم میشن ڤە صوٙرت پیش فأرض.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
-       "exif-orientation": "گرایش",
-       "exif-xresolution": "تفکیک پذیری افقی",
-       "exif-yresolution": "تفکیک پذیری عمۉدی",
-       "exif-datetime": "تغÛ\8cÛ\8cرÙ\84 ØªØ§Ø±Û\8cØ® Ù\88 Ø²Ù\85ان فایل",
-       "exif-make": "کۉمپانی راسندھ دۉربین",
-       "exif-model": "مدل دۉربین",
-       "exif-software": "Ù\86رÙ\85 Ø§Ù\81زار Ù\85Û\89رد Ø§Ø³Øªفادھ",
-       "exif-exifversion": "ۉرژن Exif",
-       "exif-colorspace": "Ù\81ضاÛ\8c Ø±نگ",
-       "exif-datetimeoriginal": "تاریخ ۉ زمان تۉلید دادھ یل",
-       "exif-datetimedigitized": "تاریخ ۉ زمان دیجیتالی ۉابیدن",
+       "exif-orientation": "گیرایش",
+       "exif-xresolution": "تأفکیک پأذیری ئوفۉقی",
+       "exif-yresolution": "تأفکیک پأذیری عأموٙدی",
+       "exif-datetime": "تأغÛ\8cÛ\8cرÙ\84 ØªØ§Ø±Û\8cØ® Ú¤ Ø²Û\8cÙ\85Ù\88Ù\99ن فایل",
+       "exif-make": "کۉمپانی راسأندھ دوٙربین",
+       "exif-model": "مۉدیل دوٙربین",
+       "exif-software": "Ù\86أرÙ\85 Ø£Ù\81زار Ù\85Û\89رد Ø¦Û\8cستÛ\8cفادھ",
+       "exif-exifversion": "ڤیرژین Exif",
+       "exif-colorspace": "Ù\81أضاÛ\8c Ø±Ø£نگ",
+       "exif-datetimeoriginal": "تاریخ ڤ زیموٙن تۉلید دادھ یل",
+       "exif-datetimedigitized": "تاریخ ڤ زیموٙن دیجیتالی ڤابیدن",
        "exif-orientation-1": "عادی",
        "namespacesall": "همە",
        "monthsall": "همه",
        "semicolon-separator": "؛&#32;",
-       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گپ]])",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|گأپ]])",
        "specialpages": "بألگە یل ڤیجە",
        "tag-filter": "[[Special:Tags|بأرچأسب]] فیلتر:",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|بأرچسب|بأرچسبل}}]]: $2)",
-       "logentry-delete-delete": "$1 {{GENDER:$2|حذÙ\81 Û\89ابÛ\8cدھ}} Ø¨Ù\84Ú¯Ù\87 $3",
+       "logentry-delete-delete": "$1 {{GENDER:$2|حأذÙ\81 Ú¤Ø§Ø¨Û\8cدھ}} Ø¨Ø£Ù\84Ú¯Û\95 $3",
        "logentry-move-move": "$1 {{GENDER:$2|انتقال دادھ بیه}} بلگه $3 ۉھ $4",
        "logentry-newusers-create": "حسآۉ کارڤأر $1 ڤابیە {{GENDER:$2|راس ڤیدھ }}",
        "logentry-upload-upload": "$1 {{GENDER:$2|بلم گیر کردھ ۉابی}} $3",
index 72af342..6f61e3b 100644 (file)
@@ -21,7 +21,9 @@
                        "Yyy",
                        "לערי ריינהארט",
                        "아라",
-                       "Macofe"
+                       "Macofe",
+                       "Nitalynx",
+                       "Silraks"
                ]
        },
        "tog-underline": "Pasvītrot saites:",
@@ -29,7 +31,7 @@
        "tog-hidepatrolled": "Slēpt apstiprinātās izmaņas pēdējo izmaiņu sarakstā",
        "tog-newpageshidepatrolled": "Paslēpt pārbaudītās lapas jauno lapu sarakstā",
        "tog-extendwatchlist": "Izvērst uzraugāmo lapu sarakstu, lai parādītu visas veiktās izmaiņas (ne tikai pašas svaigākās)",
-       "tog-usenewrc": "Grupēt izmaiņas pēc lapas pēdējās izmaiņās un uzraugāmo lapu sarakstā  (izmanto ''JavaScript'')",
+       "tog-usenewrc": "Grupēt izmaiņas pēc lapas pēdējās izmaiņās un uzraugāmo lapu sarakstā",
        "tog-numberheadings": "Automātiski numurēt virsrakstus",
        "tog-showtoolbar": "Rādīt labošanas rīkjoslu",
        "tog-editondblclick": "Atvērt lapu labošanai ar dubultklikšķi",
@@ -38,6 +40,7 @@
        "tog-watchdefault": "Pievienot manis izmainītās lapas un failus uzraugāmo lapu sarakstam",
        "tog-watchmoves": "Pievienot manis pārvietotās lapas un failus uzraugāmo lapu sarakstam",
        "tog-watchdeletion": "Pievienot manis izdzēstās lapas un failus uzraugāmo lapu sarakstam",
+       "tog-watchrollback": "Pievienot lapas, kurās es novērsu izmaiņas, manam uzraugāmo rakstu sarakstam",
        "tog-minordefault": "Atzīmēt visus labojumus jau sākotnēji par maznozīmīgiem",
        "tog-previewontop": "Parādīt priekšskatījumu virs labošanas lauka, nevis zem",
        "tog-previewonfirst": "Parādīt priekšskatījumu jau uzsākot rediģēšanu",
        "jumptonavigation": "navigācija",
        "jumptosearch": "meklēt",
        "view-pool-error": "Atvainojiet, šobrīd serveri ir pārslogoti.\nPārāk daudz lietotāju mēģina apskatīt šo lapu.\nLūdzu, brīdi uzgaidiet un mēģiniet šo lapu apskatīt vēlreiz.\n\n$1",
+       "generic-pool-error": "Atvainojiet, šobrīd serveri ir pārslogoti.\nPārāk daudz lietotāju mēģina apskatīt šo lapu.\nLūdzu, brīdi uzgaidiet un mēģiniet šo lapu apskatīt vēlreiz.",
+       "pool-timeout": "Noildze, gaidot bloķēšanu",
        "pool-errorunknown": "Nezināma kļūda",
        "poolcounter-usage-error": "Izmantošanas kļūda: $1",
        "aboutsite": "Par {{grammar:akuzatīvs|{{SITENAME}}}}",
        "ok": "Labi",
        "retrievedfrom": "Saturs iegūts no \"$1\"",
        "youhavenewmessages": "Tev ir $1 (skatīt $2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Jums ir}} $1 no {{PLURAL:$3|cita lietotāja|$3 lietotājiem}} ($2).",
        "youhavenewmessagesmanyusers": "Jums ir $1 no daudziem lietotājiem ($2).",
        "newmessageslinkplural": "{{PLURAL:$1|999=jauni vēstījumi|jauns vēstījums|999=jauni vēstījumi}}",
        "newmessagesdifflinkplural": "{{PLURAL:$1|999=pēdējās izmaiņas|pēdējā izmaiņa|999=pēdējās izmaiņas}}",
        "missing-article": "Teksts lapai ar nosaukumu \"$1\" $2 datubāzē nav atrodams.\n\nTas parasti notiek novecojušu saišu gadījumā: pieprasot izmaiņas vai hronoloģiju lapai, kas ir izdzēsta.\n\nJa lapai ir jābūt, tad, iespējams, ir kļūda programmā.\nPar to varat ziņot [[Special:ListUsers/sysop|kādam administratoram]], norādot arī URL.",
        "missingarticle-rev": "(Pārskatīšana #: $1)",
        "missingarticle-diff": "(Salīdz.: $1, $2)",
+       "readonly_lag": "Datu bāze automātiski bloķēta, kamēr sekotājserveri sinhronizējas ar vedējserveri",
        "internalerror": "Iekšēja kļūda",
        "internalerror_info": "Iekšējā kļūda: $1",
+       "internalerror-fatal-exception": "\"$1\" tipa fatāls izņēmums (kļūda)",
        "filecopyerror": "Nav iespējams nokopēt failu \"$1\" uz \"$2\"",
        "filerenameerror": "Neizdevās pārdēvēt failu \"$1\" par \"$2\".",
        "filedeleteerror": "Nevar izdzēst failu \"$1\".",
        "badarticleerror": "Šo darbību nevar veikt šajā lapā.",
        "cannotdelete": "Nevar izdzēst lapu vai failu $1. Iespējams, to jau ir izdzēsis kāds cits.",
        "cannotdelete-title": "Nevar izdzēst lapu \"$1\"",
+       "delete-hook-aborted": "Aizķere pārtraukusi dzēšanas operāciju.\nPaskaidrojums nav saņemts.",
+       "no-null-revision": "Neizdevās izveidot jaunu nulles versiju lapai \"$1\"",
        "badtitle": "Nepiemērots nosaukums",
        "badtitletext": "Pieprasītā lapa ir kļūdaina, tukša, vai nepareizi saistīts starpvalodu vai starp-vikiju virsrakstas. Tas var saturēt vienu vai vairākus simbolus, ko nedrīkst izmantot nosaukumos.",
+       "title-invalid-empty": "Pieprasītais lapas nosaukums ir tukšs vai satur tikai vārdtelpas nosaukumu.",
+       "title-invalid-utf8": "Pieprasītais lapas nosaukums satur nederīgu UTF-8 virkni.",
+       "title-invalid-interwiki": "Pieprasītais lapas nosaukums satur interwiki saiti, bet tās nevar lietot nosaukumos.",
+       "title-invalid-talk-namespace": "Pieprasītais lapas nosaukums norāda uz diskusijas lapu, kas nevar pastāvēt.",
+       "title-invalid-characters": "Pieprasītais lapas nosaukums satur nederīgus simbolus: \"$1\".",
        "perfcached": "Šie dati ir no servera kešatmiņas un var būt novecojuši. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
        "perfcachedts": "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
        "querypage-no-updates": "Šīs lapas atjaunošana pagaidām ir atslēgta. Te esošie dati tuvākajā laikā netiks atjaunoti.",
        "prefs-watchlist": "Uzraugāmie raksti",
        "prefs-editwatchlist": "Labot uzraugāmo rakstu sarakstu",
        "prefs-editwatchlist-label": "Labot ierakstus savā uzraugāmo rakstu sarakstā:",
+       "prefs-editwatchlist-clear": "Notīrīt uzraugāmos rakstus",
        "prefs-watchlist-days": "Dienu skaits, kuras parādīt uzraugāmo rakstu sarakstā:",
        "prefs-watchlist-days-max": "Ne vairāk kā $1 {{PLURAL:$1|dienas|dienu|dienas}}",
        "prefs-watchlist-edits": "Izmaiņu skaits, kuras rādīt izvērstajā uzraugāmo rakstu sarakstā:",
        "right-editusercssjs": "Izmainīt citu lietotāju CSS un JS failus",
        "right-editusercss": "Izmainīt citu lietotāju CSS failus",
        "right-edituserjs": "Izmainīt citu lietotāju JS failus",
+       "right-viewmywatchlist": "Apskatīt savu uzraugāmo rakstu sarakstu",
        "right-rollback": "Ātri veikt atriti pēdējā lietotāja labojumiem, kas veica izmaiņas kādā konkrētā lapā",
        "right-markbotedits": "Atzīmēt labojumus, kam veikta atrite, kā bota labojumus",
        "right-noratelimit": "Būt darbību ātruma ierobežojumu neietekmētiem",
        "rcshowhidemine": "$1 manus",
        "rcshowhidemine-show": "Rādīt",
        "rcshowhidemine-hide": "Slēpt",
+       "rcshowhidecategorization-show": "Rādīt",
+       "rcshowhidecategorization-hide": "Paslēpt",
        "rclinks": "Parādīt pēdējās $1 izmaiņas pēdējās $2 dienās.<br />$3",
        "diff": "izmaiņas",
        "hist": "hronoloģija",
        "upload-misc-error": "Nezināma augšupielādes kļūda",
        "upload-too-many-redirects": "URL sastāvēja pārāk daudz pāradresāciju",
        "upload-http-error": "HTTP kļūda: $1",
+       "upload-dialog-title": "Augšupielādēt failu",
+       "upload-dialog-button-cancel": "Atcelt",
+       "upload-dialog-button-done": "Gatavs",
+       "upload-dialog-button-save": "Saglabāt",
+       "upload-dialog-button-upload": "Augšupielādēt",
+       "upload-dialog-label-select-file": "Izvēlieties file",
+       "upload-dialog-label-infoform-title": "Papildinformācija",
+       "upload-dialog-label-infoform-description": "Apraksts",
+       "upload-dialog-label-usage-title": "Pielietojums",
+       "upload-dialog-label-usage-filename": "Faila nosaukums",
        "backend-fail-stream": "Nevar straumēt failu $1.",
        "backend-fail-backup": "Nevar dublēt failu $1.",
        "backend-fail-notexists": "Fails $1 nepastāv.",
        "randomincategory-invalidcategory": "\"$1\" nav derīgs kategorijas nosaukums.",
        "randomincategory-category": "Kategorija:",
        "randomincategory-legend": "Nejauša lapa kategorijā",
+       "randomincategory-submit": "Aiziet!",
        "randomredirect": "Nejauša pāradresācijas lapa",
        "statistics": "Statistika",
        "statistics-header-pages": "Lapu statistika",
        "listgrouprights-namespaceprotection-header": "Vārdtelpas ierobežojumi",
        "listgrouprights-namespaceprotection-namespace": "Vārdtelpa",
        "trackingcategories-nodesc": "Apraksts nav pieejams.",
+       "trackingcategories-disabled": "Kategorija ir atslēgta",
        "mailnologin": "Nav adreses, uz kuru sūtīt",
        "mailnologintext": "Tev jābūt [[Special:UserLogin|iegājušam]], kā arī tev jābūt [[Special:Preferences|norādītai]] derīgai e-pasta adresei, lai sūtītu e-pastu citiem lietotājiem.",
        "emailuser": "Sūtīt e-pastu šim lietotājam",
        "emailuser-title-target": "Nosūtīt e-pastu {{GENDER:$1|šim lietotājam|šai lietotājai}}",
        "emailuser-title-notarget": "Sūtīt e-pastu lietotājam",
        "emailpage": "Sūtīt e-pastu lietotājam",
-       "emailpagetext": "Ar šo veidni ir iespējams nosūtīt e-pastu šim lietotājam.\nTā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu lapā]], parādīsies e-pasta \"From\" lauciņā, tādejādi saņēmējs varēs tev atbildēt.",
+       "emailpagetext": "Ar šo veidni ir iespējams nosūtīt e-pastu šim {{GENDER:$1|lietotājam}}.\nTā e-pasta adrese, kuru tu esi norādījis [[Special:Preferences|savā izvēļu lapā]], parādīsies e-pasta \"From\" lauciņā, tādejādi saņēmējs varēs tev atbildēt.",
        "defemailsubject": "{{SITENAME}} e-pasts no lietotāja \"$1\"",
        "usermaildisabled": "Lietotāja e-pasts atslēgts",
        "usermaildisabledtext": "Jūs nevarat sūtīt e-pastu citiem lietotājiem šajā viki",
        "rollback-success": "Novērsu izmaiņas, ko izdarīja $1;\natjaunoju versiju, ko saglabāja $2.",
        "sessionfailure-title": "sesijas kļūda",
        "sessionfailure": "Ir radusies problēma ar sesijas autentifikāciju;\nšī darbība ir atcelta, lai novērstu lietotājvārda iespējami ļaunprātīgu izmantošanu.\nLūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlreiz.",
+       "changecontentmodel-reason-label": "Iemesls:",
        "protectlogpage": "Aizsargāšanas reģistrs",
        "protectedarticle": "aizsargāja \"[[$1]]\"",
        "modifiedarticleprotection": "izmainīja aizsardzības līmeni \"[[$1]]\"",
        "tooltip-pt-login": "Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.",
        "tooltip-pt-logout": "Iziet",
        "tooltip-ca-talk": "Diskusija par šī raksta lapu",
-       "tooltip-ca-edit": "Labot šo lapu. Lūdzam izmantot pirmskatu pirms lapas saglabāšanas.",
+       "tooltip-ca-edit": "Labot šo lapu",
        "tooltip-ca-addsection": "Sākt jaunu sadaļu",
        "tooltip-ca-viewsource": "Šī lapa ir aizsargāta. Tu vari apskatīt tās izejas kodu.",
        "tooltip-ca-history": "Šīs lapas iepriekšējās versijas.",
        "hours": "{{PLURAL:$1|$1 stundas|$1 stunda|$1 stundas}}",
        "days": "{{PLURAL:$1|$1 dienas|$1 diena|$1 dienas}}",
        "ago": "pirms $1",
+       "monday-at": "Pirmdiena $1",
        "bad_image_list": "Formāts:\n\nTiek ņemti vērā tikai ieraksti rindiņā kas sākas ar *\nPirmajai saitei rindiņā ir jābūt uz attiecīgo failu\nJebkuras sekojošas saites tiks uzskatītas par izņēmumiem t.i. lapām kurās fails drīkt tikt izmantots",
        "metadata": "Metadati",
        "metadata-help": "Šis fails satur papildu informāciju, kuru visticamk ir pievienojis digitālais fotoaparāts vai skeneris, kas šo failu izveidoja. Ja šis fails pēc tam ir ticis modificēts, šie dati var neatbilst izmaiņām (var būt novecojuši).",
        "version-libraries": "Instalētās bibliotēkas",
        "version-libraries-library": "Bibliotēka",
        "version-libraries-version": "Versija",
+       "version-libraries-license": "Licence",
+       "version-libraries-description": "Apraksts",
+       "version-libraries-authors": "Autori",
        "redirect-value": "Vērtība:",
        "redirect-user": "Lietotāja ID",
+       "redirect-page": "Lapas ID",
        "redirect-file": "Faila nosaukums",
        "redirect-not-exists": "Vērtība nav atrasta",
        "fileduplicatesearch": "Meklēt failu kopijas",
        "tags-tag": "Iezīmes nosaukums",
        "tags-display-header": "Izmainīto sarakstu izskats",
        "tags-description-header": "Nozīmes pilns apraksts",
+       "tags-source-header": "Avots",
        "tags-active-header": "Aktīvs?",
        "tags-hitcount-header": "Iezīmētās izmaiņas",
        "tags-actions-header": "Darbības",
        "tags-delete-title": "Dzēst iezīmi",
        "tags-delete-reason": "Iemesls:",
        "tags-activate-reason": "Iemesls:",
+       "tags-activate-submit": "Aktivizēt",
        "tags-deactivate-reason": "Iemesls:",
        "tags-edit-title": "Labot iezīmes",
        "tags-edit-manage-link": "Pārvaldīt iezīmes",
        "htmlform-yes": "Jā",
        "htmlform-chosen-placeholder": "Izvēlieties iespēju",
        "htmlform-cloner-create": "Pievienot vairāk",
+       "htmlform-cloner-delete": "Noņemt",
        "sqlite-has-fts": "$1 ar pilnteksta meklēšanas atbalstu",
        "sqlite-no-fts": "$1 bez pilnteksta meklēšanas atbalsta",
        "logentry-delete-delete": "$1 {{GENDER:$2|izdzēsa}} lapu $3",
        "rightsnone": "(nav)",
        "revdelete-summary": "izmaiņu kopsavilkums",
        "feedback-adding": "Atsauksmes tiek pievienotas lapai...",
+       "feedback-back": "Atpakaļ",
        "feedback-bugnew": "Es pārbaudīju. Ziņot par jaunu kļūdu",
        "feedback-cancel": "Atcelt",
        "feedback-close": "Gatavs",
+       "feedback-dialog-title": "Iesniegt atsauksmes",
        "feedback-error1": "Kļūda: API neatpazīts rezultāts",
        "feedback-error2": "Kļūda: Labojums neizdevās",
        "feedback-error3": "Kļūda: Nav atbildes no API",
        "feedback-subject": "Temats:",
        "feedback-submit": "Iesniegt",
        "feedback-thanks": "Paldies! Jūsu atsauksmes ir ievietotas lapā \"[$2  $1]\".",
+       "feedback-thanks-title": "Paldies!",
        "searchsuggest-search": "Meklēt",
        "searchsuggest-containing": "Meklējamā frāze:",
        "api-error-badaccess-groups": "Jums nav atļauts augšupielādēt failus šajā wiki.",
        "expand_templates_output": "Rezultāts",
        "expand_templates_ok": "Labi",
        "expand_templates_preview": "Pirmskats",
+       "pagelang-name": "Lapa",
+       "pagelang-language": "Valoda",
+       "mediastatistics-header-audio": "Audio",
        "special-characters-group-latin": "Latīņu",
        "special-characters-group-latinextended": "Latīņu (papildus)",
        "special-characters-group-ipa": "IPA",
        "special-characters-group-bangla": "Bengāļu",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Singāļu",
-       "special-characters-group-gujarati": "Gudžarati"
+       "special-characters-group-gujarati": "Gudžarati",
+       "mw-widgets-dateinput-no-date": "Nav izvēlēts datums"
 }
index c9a50df..e4f3d6e 100644 (file)
        "no-null-revision": "Tsy nahaforona famerenana poaka aty ho an'ny pejy \"$1\"",
        "badtitle": "Tsy mety ny lohateny",
        "badtitletext": "Tsy mety io anaram-pejy nangatahinao io na tsy misy n'inon'inona na rohy dikan-teny vahiny misy diso tsipelina.",
+       "title-invalid-empty": "Ny lohatenin'ny pejy angatahana dia na tsy misy, na ahitana ny anaram-balan'anarana fotsiny.",
+       "title-invalid-utf8": "Ahitana fitohizana UTF-8 tsy azo ekena ny lohatenim-pejy angatahana.",
+       "title-invalid-interwiki": "Ahitana rohy interwiki tsy azo ampiasaina amin'ny lohateny ny pejy angatahana.",
+       "title-invalid-talk-namespace": "Mampatsiahy pejin-dresaka tsy misy ilay pejy angatahana.",
+       "title-invalid-characters": "Ahitana soratra tsy azo ekena ny lohatenim-pejy angatahana: \"$1\".",
        "perfcached": "Ao amin'ny voatakona ireo data manaraka ireo ary mety tsy voavao. $1{{PLURAL:}} ihany no isan'ireo zavatra voatahiry ao amin'ny voatakona",
        "perfcachedts": "Ao amin'ny voatakona (cache) ny data aseho, ary tamin'ny $1 izy no navaozina farany. $4{{PLURAL:}} no isan'ny valim-pikarohana ao amin'ilay voatakona.",
        "querypage-no-updates": "Amin'izao fotoana izao dia tsy havaozina ny votoatin'ity pejy ity. Noho izany dia tsy mitaratra ny tena zava-misy ny votoatiny ato.",
        "actionthrottled": "Tao voafetra",
        "actionthrottledtext": "Mba hiady amin'ny spam, ny hatetika momba ny fanaovana io otao io dia ferana ho foifoy, ary niaotra io fetra io ianao.\nAndramo indray afaka minitra vitsivitsy.",
        "protectedpagetext": "Narovana mba tsy hisiana fanovana na tao hafa ity pejy ity.",
-       "viewsourcetext": "Azonao atao no mijery sy mandrika ny votoatin'ity pejy ity :",
-       "viewyourtext": "Azonao atao ny mijery ary mandika ny fangon'ny '''fanovanao''' tamin'ity pejy ity:",
+       "viewsourcetext": "Azonao atao no mijery sy mandrika ny votoatin'ity pejy ity.",
+       "viewyourtext": "Azonao atao ny mijery ary mandika ny fangon'ny <strong>fanovanao</strong> tamin'ity pejy ity.",
        "protectedinterface": "Ity pejy ity dia manome ny lahatsoratra ho an'ny rindrankajy eto amin'ity Wiki ity, ary narovana mba tsy hisian'ny fanararaotana. Raha tia hanampy na hanova ny dikanteny ho an'ny wiki rehetra, ampiasao [//translatewiki.net/ translatewiki.net], izay tetikasa fandikanan ny rindrankajy Mediawiki.",
        "editinginterface": "<strong> Fampitandremana: <strong> manova pejy ampiasaina amin'ny famoronan-tsoratry ny rindrankajy ianao. Hisy fiatraika amin'ny fisehon'ny interfasim-pikambana ho an'ny mpikambana hafan'ity wiki ity ny fiovana ho atao.",
        "translateinterface": "Mba hanampy na hanova dikanteny ho an'ny wiki rehetra, dia ampiasao  [//translatewiki.net/ translatewiki.net], na ny tetikasa fandikana Mediawiki.",
-       "cascadeprotected": "Ankehitriny dia voaaro ity pejy ity satria misy pejy voaaro {{PLURAL:$1||$1}}1 mampiasa ity pejy ity. Io pejy io dia mampiasa ny fiarovana \"en cascade\" :\n\n$2",
+       "cascadeprotected": "Ankehitriny dia voaaro ity pejy ity satria misy pejy voaaro {{PLURAL:$1|iray|$1}} mampiasa ity pejy ity. Io pejy io dia mampiasa ny fiarovana \"mirihana\":\n\n$2",
        "namespaceprotected": "Tsy manana alalàna manova ny toeran'anarana « '''$1''' » ianao.",
        "customcssprotected": "Tsy afaka manova ity pejy CSS ity ianao satria misy ny safidy manokan'ny mpikambana hafa.",
        "customjsprotected": "Tsy afaka manova ity pejy JavaScript ity inaao satria misy ny safidin'ny mpikambana hafa.",
        "wrongpassword": "Diso ny tenimiafina. Manandrama tenimiafina hafa azafady.",
        "wrongpasswordempty": "Tsy nampiditra tenimiafina ianao, azafady mba avereno indray.",
        "passwordtooshort": "{{PLURAL:}}Fohy loatra io tenimiafina io.\nFarafahakeliny tokony hisy litera $1 ny tenimiafina.",
+       "passwordtoolong": "Tsy azo atao ho lava noho ny soratra {{PLURAL:$1|iray|$1}} ny tenimiafina.",
        "password-name-match": "Tsy maintsy samihafa ny solonanaranao sy ny tenimiafinao tompoko.",
        "password-login-forbidden": "Norarana ny fampiasana io anaram-pikambana ary io tenimiafina io.",
        "mailmypassword": "Hamerina ny tenimiafina",
        "readonlywarning": "'''FAMPITANDREMANA: Nohidiana noho ny antony fikolokoloana aloha ny banky angona,\nkoa tsy afaka mitahiry ny fanovana nataonao aloha ianao izao. Angamba tokony hanao Couper coller aloha\nianao dia tehirizo anaty rakitra ny fanovanao mandra-paha.'''\n\nNy mpandrindra nanidy ny banky angona dia nanome ny antony : <br />$1",
        "protectedpagewarning": "'''FAMPITANDREMANA:  Voaaro ity pejy ity ka ny mpikambana manana ny fahazoan-dàlana sysop ihany no afaka manova azy.'''",
        "semiprotectedpagewarning": "'''Naoty''' : Voaaro ity pejy ity, ny mpikambana nanokatra kaonty tato ihany no afaka manova azy.",
-       "cascadeprotectedwarning": "'''Tandremo : ''' Voaaro ity pejy ity ary ny mpandrindra ihany no afaka manova azy. Natao ny fiarovana satria ao anatina pejy voaaro mampiasa ny « fiarovana an-driana (protection en cascade) » {{PLURAL:$1}}",
+       "cascadeprotectedwarning": "<strong>Tandremo :</strong> Voaaro ity pejy ity ary ny mpandrindra ihany no afaka manova azy. Natao ny fiarovana satria ao anatina pejy voaaro mampiasa ny « fiarovana an-driana (protection en cascade) » {{PLURAL:$1}}",
        "titleprotectedwarning": "'''TANDREMO''' : Ny mpikambana manana [[Special:ListGroupRights|alàlana manokana]] ihany no afaka manova ity pejy ity.",
        "templatesused": "endrika{{PLURAL:$1||}} miasa eto amin'ity pejy ity:",
        "templatesusedpreview": "endrika{{PLURAL:$1||}} ampiasaina anatin'ity topi-maso ity :",
        "history-feed-description": "Tantaran'ity pejy ity teto amin'ity wiki ity.",
        "history-feed-item-nocomment": "$1 tamin'ny $2",
        "history-feed-empty": "Tsy misy ny pejy notadiavina.\nMety efa voafafa na voafindra angamba izy.\nMitadiava amin'ny '''[[Special:Search|fiasàna fitadiavina]]''' mba hitady ny pejy misy fifandraisana.",
+       "history-edit-tags": "Hanova ny balizin'ny versiôna nofidiana",
        "rev-deleted-comment": "(ambangovangom-panovana nesorina)",
        "rev-deleted-user": "(solonanarana nesorina)",
        "rev-deleted-event": "(nesorina ny antsipirihan'ny laogy)",
        "rev-showdeleted": "aseho",
        "revisiondelete": "Hamafa na hamerina versiona",
        "revdelete-nooldid-title": "versiona tanjona tsy azo ekena.",
-       "revdelete-nooldid-text": "Tsy voalazanao ny versiona tanjona hanaovana ity tao ity, \ntsy misy ilay izy, na ny santiôna ankehitriny no andramana asitrika.",
+       "revdelete-nooldid-text": "Tsy nambara versiona tanjona hanaovana ity asa ity ianao, na tsy misy ilay versiona voafidy, na am-panitrihana ilay versiona ankehitriny ianao.",
        "revdelete-no-file": "Tsy misy ilay rakitra hofafàna.",
        "revdelete-show-file-confirm": "Tapa-kevitra hamafa ny ''revision''-n'i rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
        "revdelete-show-file-submit": "Eny",
        "showhideselectedversions": "Aseho/asitrika ireo ny versiona voasafidy",
        "editundo": "esory",
        "diff-empty": "(Tsy misy mahasamihafa)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Versiona mielanelana tsy miseho iray|Versiona mielanelana tsy miseho $1}} nataon'ilay mpikambana)",
        "diff-multi-manyusers": "Tsy naseho ny antiôna $1{{PLURAL:}} nataon'ny mpikambana $2.",
        "difference-missing-revision": "Tsy hita ny versiona $2{{PLURAL:$2||}} ny fahasamihafanna ($1) an'ity pejy ity.\n\nVokatry ny fanarahana rohy fampitahana lany daty mankany amy pejy efa voafafa izan . Ho hita eo amin'ny [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} laogim-pamafàna] ny antsipirihany.",
        "searchresults": "Valim-pikarohana",
        "searchrelated": "voadinika",
        "searchall": "rehetra",
        "showingresults": "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
+       "search-showingresults": "{{PLURAL:$4|Valim-pikarohana <strong>$1</strong> amin'ny <strong>$3</strong>| Valim-pikarohana <strong>$1 - $2</strong> amin'ny <strong>$3</strong>}}",
        "search-nonefound": "Tsy nahitana valiny ilay fanontaniana.",
        "powersearch-legend": "Fikarohana havanana",
        "powersearch-ns": "Hitady anatin'ny anaran-tsehatra :",
        "randomincategory-invalidcategory": "Tsy anaran-tsokajy azo raisina \"$1\"",
        "randomincategory-nopages": "Tsy misy pejy ao amin'i [[:Category:$1]]",
        "randomincategory-category": "Sokajy:",
+       "randomincategory-submit": "Lasa",
        "randomredirect": "Pejy fihodinana kisendra",
        "randomredirect-nopages": "Tsy misy pejy fihodinana eo amin'ny anaran-tsehatra «$1»",
        "statistics": "Statistika",
        "undelete-show-file-submit": "Eny",
        "namespace": "Anaran-tsehatra :",
        "invert": "Ampifamadiho ny safidy",
+       "tooltip-invert": "Marino ity boaty ity mba hanakona ireo fiovam-pejy ao amin'ny valan'anarana voafidinao (ary ny valan'anarana miaraka aminy raha voamarina ihany koa)",
        "namespace_association": "Anaran-tsehatra nampiarahana",
        "tooltip-namespace_association": "Mariho ity boaty ity mba hampiditra ny pejin-dresaky ny anaran-tsehatra voafidy",
        "blanknamespace": "(fotony)",
        "imagelisttext": "{{PLURAL:}}Eto ambany ny lisitran'ny rakitra $1 milahatra araka ny $2.",
        "newimages-legend": "Anaran-drakitra",
        "newimages-label": "Anaran-drakitra (na singan'izy io) :",
+       "newimages-showbots": "Haneho ireo fanondranana nataon'ny rôbô",
        "noimages": "Tsy misy sary ato.",
        "ilsubmit": "Karohy",
        "bydate": "araka ny daty",
        "exif-stripoffsets": "Toerana isian'ny datan'ny sary",
        "exif-rowsperstrip": "Isan'ny andininy isaky ny bandy",
        "exif-stripbytecounts": "Haben'ny bandy amin'ny oktety",
+       "exif-jpeginterchangeformat": "Fipetraky ny SOI JPEG",
+       "exif-jpeginterchangeformatlength": "Oktetin'angona JPEG",
        "exif-whitepoint": "Krômatisiten'ny teboka fotsy",
        "exif-primarychromaticities": "Krômatisiten'ny reniloko",
        "exif-ycbcrcoefficients": "Fatra YCbCr",
+       "exif-referenceblackwhite": "Sanda tsiahy fotsy sy mainty",
        "exif-datetime": "Daty fanovana",
        "exif-imagedescription": "Visavisan'ilay sary",
        "exif-make": "Mpanamboatra ilay fakan-tsary",
        "exif-exifversion": "Versiona EXIF",
        "exif-flashpixversion": "Versiona FlashPix",
        "exif-colorspace": "Valan-doko",
+       "exif-componentsconfiguration": "Dikan'ny mpanorina tsirairay",
+       "exif-compressedbitsperpixel": "Fomba famintinan-tsary",
        "exif-pixelydimension": "Haavon-tsary",
        "exif-pixelxdimension": "Halala-tsary",
        "exif-usercomment": "Diniky ny mpikambana",
        "exif-datetimeoriginal": "Daty fangalana niaviana",
        "exif-datetimedigitized": "Daty nanaovana numerisation",
        "exif-subsectime": "Daty nanovana",
+       "exif-subsectimeoriginal": "Daty nangalana voalohany",
+       "exif-subsectimedigitized": "Daty nahadijitaly",
        "exif-exposuretime": "Fitaona famakiana",
        "exif-exposuretime-format": "$1 s ($2 s)",
        "exif-fnumber": "Isa F",
        "exif-exposureprogram": "Fomba famakiana",
+       "exif-spectralsensitivity": "Fahatsapana ara-balandoko",
        "exif-isospeedratings": "ISO",
        "exif-shutterspeedvalue": "hafaingam-panapenana ny APEX",
        "exif-aperturevalue": "Fisanasana APEX",
        "exif-meteringmode": "Fomba fandrefesana",
        "exif-lightsource": "Loharanon-kazavana",
        "exif-flash": "Tselatra",
+       "exif-focallength": "Halavam-pifantohana",
        "exif-subjectarea": "Faritry ny alain-tsary",
        "exif-flashenergy": "Angôvon'akonkazavana",
+       "exif-focalplanexresolution": "Halava X an'ny fifantohana",
+       "exif-focalplaneyresolution": "Halava Y an'ny fifantohana",
+       "exif-focalplaneresolutionunit": "Mari-drefin'ny fifantohana",
        "exif-subjectlocation": "Toeram-pisian'ny alaina sary",
+       "exif-exposureindex": "Tondrom-piharihariana",
+       "exif-sensingmethod": "Fomba tsikariny",
        "exif-filesource": "Fangon-drakitra",
+       "exif-scenetype": "Karazan-tsehatra",
+       "exif-customrendered": "Fikarakaran-tsary natao manokana",
+       "exif-exposuremode": "Fomba fiharihariana",
+       "exif-whitebalance": "Lanjalanjam-potsy",
        "exif-digitalzoomratio": "Tahan'ny zoom arak'isa",
+       "exif-focallengthin35mmfilm": "Halavam-pifantohana anaty filma 35 mm",
+       "exif-scenecapturetype": "Karazam-pandraiketan-tsehatra",
+       "exif-gaincontrol": "Fifehezan-tsehatra",
+       "exif-contrast": "Fifanoheran-doko",
+       "exif-saturation": "Fahafenoan-doko",
+       "exif-sharpness": "Haranitana",
+       "exif-devicesettingdescription": "Famisavisana mikasika ny fikiram-pitaovana",
+       "exif-subjectdistancerange": "Halaviran'ny alain-tsary",
        "exif-imageuniqueid": "ID an'io sary io manokana",
+       "exif-gpsversionid": "Versiônan'ny balizy GPS",
        "exif-gpslatituderef": "Laharam-pehintany avaratra na atsimo",
        "exif-gpslatitude": "Laharam-pehintany",
        "exif-gpslongituderef": "Laharan-jarahasina andrefana na atsinanana",
        "exif-gpsaltitude": "Haambo",
        "exif-gpstimestamp": "Ora GPS (famantaranandro atômika)",
        "exif-gpssatellites": "Zanabolana mampiasaina ho an'ilay refy",
+       "exif-gpsstatus": "Toetry ny mpandray",
        "exif-gpsmeasuremode": "Fomba fandrefesana",
        "exif-gpsdop": "Hatsiko ny fandrefesana",
        "exif-gpsspeedref": "Mari-drefi-kafainganana",
        "exif-gpsspeed": "Hafaingam-pandray GPS",
+       "exif-gpstrackref": "Tsiahy ho an'ny fizotry ny hetsika",
+       "exif-gpstrack": "Fizotry ny hetsika",
+       "exif-gpsimgdirectionref": "Tsiahy ho an'ny fizotry ny hetsika",
        "exif-gpsimgdirection": "Fitodihan'ny sary",
+       "exif-gpsmapdatum": "Rafitra jeodezika nampaisaina",
+       "exif-gpsdestlatituderef": "Tsiahy ho an'ny laharam-pehintany tanjona",
        "exif-gpsdestlatitude": "Laharam-pehintany tanjona",
+       "exif-gpsdestlongituderef": "Tsiahy ho an'ny laharan-jarahasina tanjona",
        "exif-gpsdestlongitude": "Laharan-jarahasina tanjona",
+       "exif-gpsdestbearingref": "Tsiahy ho an'ny fitazomana-tanjona",
+       "exif-gpsdestbearing": "Fitazoman-tanjona",
+       "exif-gpsdestdistanceref": "Tsiahy ho an'ny halavirana amin'ny tanjona",
+       "exif-gpsdestdistance": "Halavirana amin'ny tanjona",
+       "exif-gpsprocessingmethod": "Anaran'ny fomba fanodinana GPS",
        "exif-gpsareainformation": "Anaram-paritra GPS",
        "exif-gpsdatestamp": "Daty GPS",
+       "exif-gpsdifferential": "Fanitsiana arak'elana GPS",
+       "exif-jpegfilecomment": "Resa-drakitra JPEG",
+       "exif-keywords": "Tenifototra",
        "exif-worldregioncreated": "Faritany nangalana ity ilay sary",
        "exif-countrycreated": "Firenena nangalana ilay sary",
        "exif-countrycodecreated": "Kaontim-pirenena nangalana ilay sary",
        "exif-lens": "Lojy nampiasaina",
        "exif-serialnumber": "Isa laharan'ny fakan-tsary",
        "exif-cameraownername": "Tompon'ilay mpaka sary",
+       "exif-label": "Marika",
        "exif-datetimemetadata": "Daty nanovana faran'ny metadata",
        "exif-nickname": "Solonanaran'ilay sary",
        "exif-rating": "Naoty (ampahan'ny 5)",
        "exif-giffilecomment": "Famoahan-kevitry ny rakirta GIF",
        "exif-intellectualgenre": "Karazan-javatra",
        "exif-subjectnewscode": "Kaodin'ny lohahevitra",
+       "exif-scenecode": "Kaodin-tsehatra IPTC",
        "exif-event": "Zava-mitranga azo sary",
        "exif-organisationinimage": "Fikambanana azo sary",
        "exif-personinimage": "Olona azo sary",
        "exif-originalimageheight": "Haambon-tsary talohan'ny nanovana azy",
+       "exif-compression-1": "Tsy nafintina",
+       "exif-compression-2": "CCITT vondrona 3 Halavan-kaody Huffman novaina iray saka",
+       "exif-compression-3": "CCITT Vondrona telo kaody fax",
+       "exif-compression-4": "CCITT Vondrona 4 kaody fax",
        "exif-copyrighted-true": "Iharan'ny zom-pamorona",
        "exif-copyrighted-false": "Toetran'ny zom-pamorona tsy voafaritra",
        "exif-unknowndate": "Daty tsy fantatra",
        "exif-orientation-1": "Tsotra",
+       "exif-orientation-2": "Navadika ara-marindrano",
        "exif-orientation-3": "Ahodina 180°",
        "exif-orientation-4": "Navadika ambony ambany",
        "exif-orientation-5": "Navadika 90° miankavia ary navadika ambony ambany",
        "exif-orientation-6": "Navadika 90° miankavia",
        "exif-orientation-7": "Navadika 90° miankavanana ary navadika ambony ambany",
        "exif-orientation-8": "Navadika 90° miankavanana",
+       "exif-planarconfiguration-1": "Angona miraibolongana",
        "exif-planarconfiguration-2": "Data misaraka",
        "exif-componentsconfiguration-0": "tsy nahitana",
        "exif-exposureprogram-0": "Tsy nolazaina",
        "logentry-rights-rights": "$1 dia nanova ny sokajim-pikambana isian'i $3 avy amin'ny $4 lasa $5{{GENDER:$2}}",
        "logentry-rights-rights-legacy": "{{GENDER:$2}}$1 nanova ny vonodrom-pikambana isian'i $3",
        "logentry-rights-autopromote": "{{GENDER:$2}}Lasa $5 ho azy i $1 izay $4 taloha",
+       "logentry-upload-upload": "Nampiditra an'i $3 i $1{{GENDER:$2}}",
        "rightsnone": "(tsy misy)",
        "revdelete-summary": "ambangovangon'ny fanovàna",
        "feedback-adding": "Manampy ny fahenoan-kevitra amin'ilay pejy...",
index c8dec2a..619c32a 100644 (file)
@@ -23,6 +23,7 @@
        "tog-hideminor": "Скривај ги ситните уредувања во скорешните промени",
        "tog-hidepatrolled": "Скриј испатролирани уредувања во скорешните промени",
        "tog-newpageshidepatrolled": "Скриј испатролирани страници од списокот на нови страници",
+       "tog-hidecategorization": "Сокриј ја категоризацијата на страниците",
        "tog-extendwatchlist": "Прошири го список на набљудувања за приказ на сите промени, не само скорешните",
        "tog-usenewrc": "Промени во групи по страници во списокот на скорешни промени",
        "tog-numberheadings": "Нумерирај ги заглавијата",
@@ -52,6 +53,7 @@
        "tog-watchlisthideliu": "Скриј ги уредувањата на најавените корисници во набљудуваните",
        "tog-watchlisthideanons": "Скриј ги уредувањата од анонимни корисници во набљудуваните",
        "tog-watchlisthidepatrolled": "Скриј испатролирани уредувања од мојот список на набљудувања",
+       "tog-watchlisthidecategorization": "Сокриј ја категоризацијата на страниците",
        "tog-ccmeonemails": "Испраќај ми мои примероци од писмата што ги праќам на другите корисници",
        "tog-diffonly": "Не ја покажувај содржината на страницата под разликите",
        "tog-showhiddencats": "Прикажи скриени категории",
        "actionthrottled": "Дејството е успорено",
        "actionthrottledtext": "Како анти-спам мерка, ограничени сте од вршење на ова дејство премногу пати во краток временски период, а го преминавте ограничувањето.\nВе молиме обидете се повторно за неколку минути.",
        "protectedpagetext": "Оваа страница е заклучена за уредувања и други дејства.",
-       "viewsourcetext": "Можете да го погледнете и копирате кодот на оваа страница:",
-       "viewyourtext": "Можете да го погледнете и копирате кодот на '''вашите уредувања''' на оваа страница:",
+       "viewsourcetext": "Можете да го погледнете и копирате кодот на оваа страница.",
+       "viewyourtext": "Можете да го погледнете и копирате кодот на <strong>вашите уредувања</strong> на оваа страница.",
        "protectedinterface": "Оваа страница содржи текст од посредникот на програмот на ова вики и е превентивно заштитена поради можна злоупотреба.\nЗа да додавате или менувате преводи на сите викија, појдете на [//translatewiki.net/wiki/Main_Page?uselang=mk translatewiki.net] — проектот за преведување на МедијаВики.",
        "editinginterface": "<strong>Предупредување:</strong> Уредувате страница која е дел од корисничкиот посредник на програмот МедијаВики.\nПромените на оваа страница ќе предизвикаат промени во корисничкиот посредник кај другите корисници на ова вики.",
        "translateinterface": "За да додадете или измените превод на сите викија, појдете на [//translatewiki.net/wiki/Main_Page?setlang=mk translatewiki.net] — проектот за преведување на МедијаВики.",
        "search-category": "(категорија $1)",
        "search-file-match": "(се совпаѓа со содржината на податотеката)",
        "search-suggest": "Дали мислевте на: $1",
+       "search-rewritten": "Исход од $1. Или побарајте го $2.",
        "search-interwiki-caption": "Збратимени проекти",
        "search-interwiki-default": "Најдено на $1:",
        "search-interwiki-more": "(уште)",
        "userrights-groups-help": "Можете да измените на кои групи припаѓа корисник:\n* Штиклирано - корисникот е во таа група.\n* Нештиклирано - корисникот не припаѓа на групата.\n* Ѕвездичка (*) - не можете да ја отстраните групата откако сте ја додале (и обратно).",
        "userrights-reason": "Причина:",
        "userrights-no-interwiki": "Немате дозвола за уредување на кориснички права на други викија.",
-       "userrights-nodatabase": "Ð\91азаÑ\82а Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и $1 Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82ои Ð¸Ð»Ð¸ Ð½Ðµ Ðµ Ð»Ð¾ÐºÐ°Ð»на.",
+       "userrights-nodatabase": "Ð\91азаÑ\82а Ð½Ð° Ð¿Ð¾Ð´Ð°Ñ\82оÑ\86и $1 Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82ои Ð¸Ð»Ð¸ Ð½Ðµ Ðµ Ð¼ÐµÑ\81на.",
        "userrights-nologin": "Мора да сте [[Special:UserLogin|најавени]] со администраторска корисничка сметка за да може да вршите промена на кориснички права.",
        "userrights-notallowed": "Немате дозвола за додавање и отстранување на кориснички права.",
        "userrights-changeable-col": "Групи кои може да ги промените",
        "rcshowhidemine": "$1 мои уредувања",
        "rcshowhidemine-show": "Прикажи",
        "rcshowhidemine-hide": "Скриј",
+       "rcshowhidecategorization": "$1 ја категоризацијата на страниците",
+       "rcshowhidecategorization-show": "Прикажи",
+       "rcshowhidecategorization-hide": "Скриј",
        "rclinks": "Прикажи скорешни $1 промени во последните $2 дена<br />$3",
        "diff": "разл",
        "hist": "истор",
        "newpageletter": "Н",
        "boteditletter": "б",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|корисник што набљудува|корисници што набљудуваат}}]",
-       "rc_categories": "Само од категории (одделувајќи со „|“)",
-       "rc_categories_any": "Било кои",
+       "rc_categories": "Само од категории (одделувајќи со „|“):",
+       "rc_categories_any": "Било која од избраните",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|бајт|бајти}} по промената",
        "newsectionsummary": "/* $1 */ ново заглавие",
        "recentchangeslinked-summary": "Ова е список на промени направени на страниците поврзани преку назначената страница (или до членови на назначената категорија).\nСтраниците на [[Special:Watchlist|вашиот список на набљудувања]] се прикажани '''задебелено'''.",
        "recentchangeslinked-page": "Име на страницата:",
        "recentchangeslinked-to": "Прикажи ги промените на страниците поврзани со дадената страница",
+       "recentchanges-page-added-to-category": "[[:$1]] ставена во категорија",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] и уште {{PLURAL:$2|една страница ставена|$2 страници ставеи}} во категорија",
+       "recentchanges-page-removed-from-category": "[[:$1]] отстранета од категорија",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и уште {{PLURAL:$2|една страница отстранета|$2 страници отстранети}} од категорија",
        "upload": "Подигање",
        "uploadbtn": "Подигни",
        "reuploaddesc": "Прекини и назад кон образецот за подигање",
        "upload-too-many-redirects": "Оваа URL адреса содржеше премногу пренасочувања",
        "upload-http-error": "Се појави грешка во HTTP: $1.",
        "upload-copy-upload-invalid-domain": "Примероци од подигањата не се достапни на овој домен.",
+       "upload-dialog-title": "Подигни податотека",
+       "upload-dialog-error": "Се појави грешка",
+       "upload-dialog-warning": "Се јави предупредување",
+       "upload-dialog-button-cancel": "Откажи",
+       "upload-dialog-button-done": "Готово",
+       "upload-dialog-button-save": "Зачувај",
+       "upload-dialog-button-upload": "Подигни",
+       "upload-dialog-label-select-file": "Одберете податотека",
+       "upload-dialog-label-infoform-title": "Подробно",
+       "upload-dialog-label-infoform-name": "Назив",
+       "upload-dialog-label-infoform-description": "Опис",
+       "upload-dialog-label-usage-title": "Употреба",
+       "upload-dialog-label-usage-filename": "Назив на податотеката",
        "backend-fail-stream": "Не можев да ја емитувам податотеката $1.",
        "backend-fail-backup": "Не можев да направам резерва на податотеката $1.",
        "backend-fail-notexists": "Податотеката $1 не постои.",
        "filerevert-defaultcomment": "Вратена на верзија од $2, $1",
        "filerevert-submit": "Врати",
        "filerevert-success": "'''[[Media:$1|$1]]''' е вратен на [$4 верзијата од $3, $2].",
-       "filerevert-badversion": "Ð\9dема Ð¿Ñ\80еÑ\82Ñ\85одна Ð»Ð¾ÐºÐ°Ð»на верзија на оваа податотека со даденото време.",
+       "filerevert-badversion": "Ð\9dема Ð¿Ñ\80еÑ\82Ñ\85одна Ð¼ÐµÑ\81на верзија на оваа податотека со даденото време.",
        "filedelete": "Избриши го $1",
        "filedelete-legend": "Избриши податотека",
        "filedelete-intro": "Ја бришете податотеката '''[[Media:$1|$1]]''' заедно со нејзината историја.",
        "emailuserfooter": "$1 го испрати писмово на $2 со помош на функцијата „{{int:emailpage}}“ на {{SITENAME}}.",
        "usermessage-summary": "Оставете системска порака.",
        "usermessage-editor": "Системски гласник",
+       "usermessage-template": "MediaWiki:КорисникПорака",
        "watchlist": "набљудувања",
        "mywatchlist": "Набљудувања",
        "watchlistfor2": "За $1 $2",
        "watchlistanontext": "Најавете се за да можете да го прегледувате и уредувате набљудуваните.",
        "watchnologin": "Не сте најавени",
        "addwatch": "Додај во набљудувани",
-       "addedwatchtext": "Страницата „[[:$1]]“ е додадена во [[Special:Watchlist|набљудуваните]].\nИдните промени на оваа страница и нејзината страница за разговор ќе се прикажуваат таму.",
+       "addedwatchtext": "„[[:$1]]“ и нејзината страница за разговор се додадени во вашите [[Special:Watchlist|набљудувања]].",
        "addedwatchtext-short": "Страницата „$1“ е додадена во вашите набљудувања.",
        "removewatch": "Отстрани набљудуваните",
-       "removedwatchtext": "Страницата „[[:$1]]“ е отстранета од [[Special:Watchlist|набљудуваните]].",
+       "removedwatchtext": "„[[:$1]]“ и нејзината страница за разговор се отстранети од вашите [[Special:Watchlist|набљудувања]].",
        "removedwatchtext-short": "Страницата „$1“ е отстранета од вашите набљудувања.",
        "watch": "Набљудувај",
        "watchthispage": "Набљудувај ја страницава",
        "changecontentmodel-success-title": "Содржинскиот модел е изменет",
        "changecontentmodel-success-text": "Содржинскиот тип [[:$1]] е изменет.",
        "changecontentmodel-cannot-convert": "Содржината на [[:$1]] не може да се претвори во типот $2.",
-       "changecontentmodel-title-cantexist": "Не е возможно да се направи страница на $1.",
        "changecontentmodel-nodirectediting": "Содржинскиот модел $1 не поддржува непосредно уредување",
        "log-name-contentmodel": "Дневник на измени во содржинските модели",
        "log-description-contentmodel": "Настани поврзани со содржинските модели на една страница",
        "undeletepagetext": "{{PLURAL:$1|Следната страница била избришана но сè уште е во архивот и може да биде вратена.|Следните $1 страници биле избришани но сè уште се во архивот и можат да бидат вратени.}}\nАрхивот може периодично да се чисти.",
        "undelete-fieldset-title": "Врати преработки",
        "undeleteextrahelp": "За да вратите целосна историја на една страница, отштиклирајте ги сите полиња и притиснете на „'''{{int:undeletebtn}}'''“.\nЗа да извршите делумно враќање, штиклирајте ги соодветните преработки за враќање и притиснете на „'''{{int:undeletebtn}}'''“.",
-       "undeleterevisions": "{{PLURAL:$1|$1 измена е архивирана|$1 измени се архивирани}}",
+       "undeleterevisions": "${{PLURAL:$1|Избришана една преработка|Избришани $1 преработки}}",
        "undeletehistory": "Ако ја обновите страницата, сите поправки ќе бидат вратени во историјата.\nАко нова страница со исто име е создадена по бришењето, обновените поправки ќе се појават во претходната историја.",
        "undeleterevdel": "Избришаното нема да биде вратено ако тоа значи дека со тоа најгорната страница или преработката на податотеката делумно ќе се избрише.\nВо такви случаи, морате да ја отштиклирате или откриете (ако е скриена) најновата избришана преработка.",
        "undeletehistorynoadmin": "Оваа статија е избришана. Причината за бришењето е наведена подолу,\nзаедно со информации за корисникот кој ја уредувал страницата пред бришењето. Целиот текст\nод избришаните верзии е достапен само за администраторите.",
        "spam_reverting": "Враќам на последната верзија што не содржи врска до $1",
        "spam_blanking": "Сите преработки содржеа врски до $1. Чистам",
        "spam_deleting": "Сите преработки содржеа врски до $1. Бришам",
-       "simpleantispam-label": "Проверка против спам.\n'''НЕ''' пополнувајте го ова!",
+       "simpleantispam-label": "Проверка против спам.\n<strong>Не</strong> пополнувајте го ова!",
        "pageinfo-title": "Информации за „$1“",
        "pageinfo-not-current": "Информациите може да се прикажат само за тековната преработка.",
        "pageinfo-header-basic": "Основни информации",
        "exif-gpsmapdatum": "Користен геодетски координатен систем",
        "exif-gpsdestlatituderef": "Индекс за географската ширина на објектот",
        "exif-gpsdestlatitude": "Географска ширина на објектот",
-       "exif-gpsdestlongituderef": "Ð\98ндекÑ\81 Ð·Ð° Ð³ÐµÐ¾Ð³Ñ\80аÑ\84Ñ\81каÑ\82а Ð´Ð¾Ð»Ð¶Ð¸Ð½Ð° Ð½Ð° Ð¾Ð±Ñ\98екÑ\82оÑ\82",
+       "exif-gpsdestlongituderef": "Ð\9fоказаÑ\82ел Ð·Ð° Ð³ÐµÐ¾. Ð´Ð¾Ð»Ð¶Ð¸Ð½Ð° Ð½Ð° Ð¾Ð´Ñ\80едиÑ\88Ñ\82еÑ\82о",
        "exif-gpsdestlongitude": "Географска должина на објектот",
        "exif-gpsdestbearingref": "Индекс на азимутот на објектот",
        "exif-gpsdestbearing": "Азимут на објектот",
        "special-characters-title-endash": "цртичка",
        "special-characters-title-emdash": "тире",
        "special-characters-title-minus": "минус",
+       "mw-widgets-dateinput-no-date": "Немате одбрано датум",
+       "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "mw-widgets-titleinput-description-new-page": "страницата сè уште не постои",
        "mw-widgets-titleinput-description-redirect": "пренасочување кон $1"
 }
index ef2c4a0..f7ed855 100644 (file)
                        "Ævar Arnfjörð Bjarmason <avarab@gmail.com>",
                        "לערי ריינהארט",
                        "아라",
-                       "Viswaprabha"
+                       "Viswaprabha",
+                       "Nesi"
                ]
        },
        "tog-underline": "കണ്ണികൾക്ക് അടിവരയിടുക:",
        "tog-hideminor": "പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക",
        "tog-hidepatrolled": "റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക",
        "tog-newpageshidepatrolled": "റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക",
+       "tog-hidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക",
        "tog-extendwatchlist": "ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.",
        "tog-usenewrc": "സമീപകാല മാറ്റങ്ങൾ, ശ്രദ്ധിക്കുന്നവയുടെ പട്ടിക എന്നീ താളുകളിൽ മാറ്റങ്ങൾ ഗണംതിരിക്കുക",
        "tog-numberheadings": "ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക",
@@ -64,6 +66,7 @@
        "tog-watchlisthideliu": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും ലോഗിൻ ചെയ്തിട്ടുള്ളവരുടെ തിരുത്തുകൾ മറയ്ക്കുക",
        "tog-watchlisthideanons": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും അജ്ഞാത ഉപയോക്താക്കളുടെ തിരുത്തുകൾ മറയ്ക്കുക",
        "tog-watchlisthidepatrolled": "ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് റോന്തുചുറ്റിയ തിരുത്തുകൾ മറയ്ക്കുക",
+       "tog-watchlisthidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം മറയ്ക്കുക",
        "tog-ccmeonemails": "ഞാൻ മറ്റുള്ളവർക്കയക്കുന്ന ഇമെയിലുകളുടെ ഒരു പകർപ്പ് എനിക്കും അയക്കുക",
        "tog-diffonly": "രണ്ട് പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസത്തിനു താഴെ താളിന്റെ ഉള്ളടക്കം കാണിക്കരുത്.",
        "tog-showhiddencats": "മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങളെ കാണിക്കുക",
        "actionthrottled": "പ്രവൃത്തി നടത്തിയിരിക്കുന്നു",
        "actionthrottledtext": "പാഴെഴുത്തിനെതിരെയുള്ള മുൻകരുതൽ എന്ന നിലയിൽ ഒരേ പ്രവൃത്തി കുറഞ്ഞ സമയത്തിനുള്ളിൽ നിരവധി തവണ ആവർത്തിക്കുന്നതു പരിമിതപ്പെടുത്തിയിരിക്കുന്നു. താങ്കൾ ആ പരിധി ലംഘിച്ചിരിക്കുന്നു. കുറച്ച് മിനിറ്റുകൾക്കു ശേഷം വീണ്ടും ശ്രമിക്കുക.",
        "protectedpagetext": "ഈ താൾ തിരുത്തോ മറ്റു പ്രവൃത്തികളോ തടയാനാകും വിധം സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്.",
-       "viewsourcetext": "താങ്കൾക്ക് ഈ താളിന്റെ മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും:",
-       "viewyourtext": "താങ്കൾക്ക് ഈ താളിലെ '''താങ്കളുടെ തിരുത്തുകളുടെ''' മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും:",
+       "viewsourcetext": "താങ്കൾക്ക് ഈ താളിന്റെ മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും.",
+       "viewyourtext": "താങ്കൾക്ക് ഈ താളിലെ <strong>താങ്കളുടെ തിരുത്തുകളുടെ</strong> മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും.",
        "protectedinterface": "ഈ താൾ ഈ വിക്കിയുടെ സോഫ്റ്റ്‌വെയറിന്റെ സമ്പർക്കമുഖ എഴുത്തുകൾ നൽകുന്നു, അതുകൊണ്ട് ദുരുപയോഗം തടയാൻ ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു. എല്ലാ വിക്കികൾക്കുമായി പരിഭാഷ കൂട്ടിച്ചേർക്കാനോ, പരിഭാഷയിൽ മാറ്റം വരുത്താനോ, ദയവായി മീഡിയവിക്കി പ്രാദേശീകരണ പദ്ധതിയായ [//translatewiki.net/ translatewiki.net] ഉപയോഗിക്കുക.",
        "editinginterface": "<strong>മുന്നറിയിപ്പ്:<strong> സോഫ്റ്റ്‌വെയറിൽ സമ്പർക്കമുഖം നിലനിർത്തുന്ന താളാണു താങ്കൾ തിരുത്തുവാൻ പോകുന്നത്.\nഈ താളിൽ താങ്കൾ വരുത്തുന്ന മാറ്റങ്ങൾ ഉപയോക്താക്കൾ വിക്കി കാണുന്ന വിധത്തെ മാറ്റിമറിച്ചേക്കാം.",
        "translateinterface": "എല്ലാ വിക്കികൾക്കും ഉപയോഗിക്കാനാവുംവിധം പരിഭാഷകൾ കൂട്ടിച്ചേർക്കാനും മാറ്റംവരുത്താനും മീഡിയവിക്കി സന്ദേശങ്ങളുടെ പ്രാദേശികവത്കരണ പദ്ധതിയായ [//translatewiki.net/ translatewiki.net] ഉപയോഗിക്കുവാൻ താല്പര്യപ്പെടുന്നു.",
        "search-category": "(വർഗ്ഗം $1)",
        "search-file-match": "(പ്രമാണ ഉള്ളടക്കവുമായി ഒത്തുപോകുന്നുണ്ട്)",
        "search-suggest": "താങ്കൾ ഉദ്ദേശിച്ചത് $1 എന്നാണോ",
+       "search-rewritten": "$1 എന്നതിനുള്ള ഫലങ്ങൾ കാണിക്കുന്നു. പകരം $2 എന്നതിനായി തിരയുക.",
        "search-interwiki-caption": "സഹോദര സംരംഭങ്ങൾ",
        "search-interwiki-default": "$1 വിക്കിയിൽ നിന്നുള്ള ഫലങ്ങൾ:",
        "search-interwiki-more": "(കൂടുതൽ)",
        "rcshowhidemine": "എന്റെ തിരുത്തുകൾ $1",
        "rcshowhidemine-show": "പ്രദർശിപ്പിക്കുക",
        "rcshowhidemine-hide": "മറയ്ക്കുക",
+       "rcshowhidecategorization": "താളുകളുടെ വർഗ്ഗീകരണം $1",
+       "rcshowhidecategorization-show": "പ്രദർശിപ്പിക്കുക",
+       "rcshowhidecategorization-hide": "മറയ്ക്കുക",
        "rclinks": "കഴിഞ്ഞ $2 ദിവസങ്ങൾക്കുള്ളിലുണ്ടായ $1 മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക<br />$3",
        "diff": "മാറ്റം",
        "hist": "നാൾവഴി",
        "boteditletter": "(യ.)",
        "unpatrolledletter": "(!)",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|ഒരു ഉപയോക്താവ്|$1 ഉപയോക്താക്കൾ}} ഈ താൾ ശ്രദ്ധിക്കുന്നുണ്ട്]",
-       "rc_categories": "വർഗ്ഗങ്ങളുടെ പരിധി (\"|\" ഉപയോഗിച്ച് പിരിക്കുക)",
-       "rc_categories_any": "à´\8fà´¤ും",
+       "rc_categories": "വർഗ്ഗങ്ങളുടെ പരിധി (\"|\" ഉപയോഗിച്ച് പിരിക്കുക):",
+       "rc_categories_any": "തിരà´\9eàµ\8dà´\9eàµ\86à´\9fàµ\81à´¤àµ\8dതതിൽ à´\8fà´¤àµ\86à´\99àµ\8dà´\95à´¿à´²ും",
        "rc-change-size-new": "മാറ്റത്തിനു ശേഷം {{PLURAL:$1|ഒരു ബൈറ്റ്|$1 ബൈറ്റുകൾ}}",
        "newsectionsummary": "/* $1 */ പുതിയ ഉപവിഭാഗം",
        "rc-enhanced-expand": "അധികവിവരങ്ങൾ പ്രദർശിപ്പിക്കുക",
        "recentchangeslinked-summary": "ഒരു പ്രത്യേക താളിൽ നിന്നു കണ്ണി ചേർക്കപ്പെട്ടിട്ടുള്ള താളുകളിൽ അവസാനമായി വരുത്തിയ മാറ്റങ്ങളുടെ പട്ടിക താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. ഈ പട്ടികയിൽ പെടുന്ന [[Special:Watchlist|താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകൾ]] '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു.",
        "recentchangeslinked-page": "താളിന്റെ പേര്:",
        "recentchangeslinked-to": "തന്നിരിക്കുന്ന താളിലെ മാറ്റങ്ങൾക്കു പകരം ബന്ധപ്പെട്ട താളുകളിലെ മാറ്റങ്ങൾ കാണിക്കുക",
+       "recentchanges-page-added-to-category": "[[:$1]] വർഗ്ഗത്തിലേക്ക് ചേർത്തിരിക്കുന്നു",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] താളും ഒപ്പം {{PLURAL:$2|മറ്റൊരു താളും|$2 താളുകളും}} വർഗ്ഗത്തിലേക്ക് ചേർത്തിരിക്കുന്നു",
+       "recentchanges-page-removed-from-category": "[[:$1]] വർഗ്ഗത്തിൽ നിന്ന് നീക്കംചെയ്തു",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] താളും ഒപ്പം {{PLURAL:$2|മറ്റൊരു താളും|$2 താളുകളും}} വർഗ്ഗത്തിൽ നിന്ന് നീക്കംചെയ്തിരിക്കുന്നു",
        "upload": "അപ്‌ലോഡ്‌",
        "uploadbtn": "പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക",
        "reuploaddesc": "വീണ്ടും അപ്‌ലോഡ് ചെയ്ത് നോക്കാനായി തിരിച്ചു പോവുക.",
        "uploaded-hostile-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ സുരക്ഷിതമല്ലാത്ത സി.എസ്.എസ്. സ്റ്റൈൽ ഭാഗം കണ്ടെത്താനായി.",
        "uploaded-event-handler-on-svg": "എസ്.വി.ജി. പ്രമാണങ്ങളിൽ എവന്റ്-ഹാൻഡ്‌ലർ ആട്രിബ്യൂട്ടുകൾ <code>$1=\"$2\"</code>  എന്ന് സജ്ജീകരിച്ചിരിക്കുന്നവ അനുവദിച്ചിട്ടില്ല.",
        "uploaded-href-attribute-svg": "എസ്.വി.ജി. പ്രമാണങ്ങളിൽ എച്ച്റെഫ് (href) ആട്രിബ്യൂട്ടുകൾ പ്രാദേശികമല്ലാത്ത ലക്ഷ്യങ്ങളിലേക്ക് <code>&lt;$1 $2=\"$3\"&gt;</code> എന്നുള്ളവ (ഉദാ: http://, javascript:, തുടങ്ങിയവ) അനുവദിച്ചിട്ടില്ല.",
+       "uploaded-href-unsafe-target-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ സുരക്ഷിതമല്ലാത്ത ലക്ഷ്യമായ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി.",
+       "uploaded-animate-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>&lt;$1 $2=\"$3\"&gt;</code> ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് href മാറ്റിയേക്കാവുന്ന \"animate\" റ്റാഗായ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി.",
+       "uploaded-setting-event-handler-svg": "അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>&lt;$1 $2=\"$3\"&gt;</code> കണ്ടെത്തി, ഇവന്റ്-കൈകാര്യ സജ്ജീകരണ ആട്രിബ്യൂട്ടുകൾ തടഞ്ഞിരിക്കുന്നു.",
+       "uploaded-setting-href-svg": "മാതൃഘടകത്തിലേക്ക് \"href\" ആട്രിബ്യൂട്ട് ചേർക്കാൻ \"set\" പതാക ഉപയോഗിക്കുന്നത് തടഞ്ഞിരിക്കുന്നു.",
+       "uploaded-wrong-setting-svg": "ഏതെങ്കിലും ആട്രിബ്യൂട്ടിലേക്ക് വിദൂര/ഡേറ്റ/സ്ക്രിപ്റ്റ് ലക്ഷ്യം  ചേർക്കാൻ \"set\" പതാക ഉപയോഗിക്കുന്നത് തടഞ്ഞിരിക്കുന്നു. അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>&lt;set to=\"$1\"&gt;</code> കണ്ടെത്തി.",
+       "uploaded-setting-handler-svg": "വിദൂര/ഡേറ്റ/സ്ക്രിപ്റ്റിനൊപ്പം \"handler\" ആട്രിബ്യൂട്ട് സജ്ജീകരിക്കുന്ന എസ്.വി.ജി. തടഞ്ഞിരിക്കുന്നു. അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>$1=\"$2\"</code> കണ്ടെത്തി.",
+       "uploaded-remote-url-svg": "റിമോട്ട് യു.ആർ.എലിനൊപ്പം ഏതെങ്കിലും സ്റ്റൈൽ ആട്രിബ്യൂട്ട് സജ്ജീകരിക്കുന്ന എസ്.വി.ജി. തടഞ്ഞിരിക്കുന്നു. അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. പ്രമാണത്തിൽ <code>$1=\"$2\"</code> കണ്ടെത്തി.",
        "uploaded-image-filter-svg": "യു.ആർ.എൽ. ഉൾപ്പെടെയുള്ള ചിത്ര അരിപ്പ : <code>&lt;$1 $2=\"$3\"&gt;</code>, അപ്‌ലോഡ് ചെയ്ത എസ്.വി.ജി. ചിത്രത്തിൽ കണ്ടെത്തി.",
        "uploadscriptednamespace": "ഈ എസ്.വി.ജി. പ്രമാണത്തിൽ ഉപയോഗിക്കാൻ പാടില്ലാത്ത നാമമേഖലയായ \"$1\" ഉണ്ട്",
        "uploadinvalidxml": "അപ്‌ലോഡ് ചെയ്ത പ്രമാണത്തിലെ എക്സ്.എം.എൽ. പാഴ്സ് ചെയ്യാൻ കഴിയില്ല.",
        "upload-too-many-redirects": "യൂ.ആർ.എല്ലിൽ നിരവധി തിരിച്ചുവിടലുകളുണ്ട്",
        "upload-http-error": "ഒരു എച്ച്.റ്റി.റ്റി.പി. പിഴവു സംഭവിച്ചിരിക്കുന്നു: $1",
        "upload-copy-upload-invalid-domain": "ഈ ഡൊമൈനിൽ നിന്നും പകർത്തി അപ്‌ലോഡ് ചെയ്യൽ ലഭ്യമല്ല.",
+       "upload-dialog-title": "പ്രമാണം അപ്‌ലോഡ് ചെയ്യുക",
+       "upload-dialog-error": "ഒരു പിഴവുണ്ടായി",
+       "upload-dialog-warning": "ഒരു മുന്നറിയിപ്പുണ്ടായി",
+       "upload-dialog-button-cancel": "റദ്ദാക്കുക",
+       "upload-dialog-button-done": "ചെയ്തു കഴിഞ്ഞു",
+       "upload-dialog-button-save": "സേവ് ചെയ്യുക",
+       "upload-dialog-button-upload": "അപ്‌‌ലോഡ്",
+       "upload-dialog-label-select-file": "പ്രമാണം തിരഞ്ഞെടുക്കുക",
+       "upload-dialog-label-infoform-title": "വിശദാംശങ്ങൾ",
+       "upload-dialog-label-infoform-name": "പേര്‌",
+       "upload-dialog-label-infoform-description": "വിവരണം",
+       "upload-dialog-label-usage-title": "ഉപയോഗം",
+       "upload-dialog-label-usage-filename": "പ്രമാണത്തിന്റെ പേര്",
        "backend-fail-stream": "$1 എന്ന പ്രമാണം സ്ട്രീം ചെയ്യാൻ കഴിഞ്ഞില്ല.",
        "backend-fail-backup": "$1 എന്ന പ്രമാണത്തിന്റെ ബാക്ക്അപ് എടുക്കാൻ കഴിഞ്ഞില്ല.",
        "backend-fail-notexists": "$1 എന്ന പ്രമാണം നിലവിലില്ല.",
        "watchlistanontext": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുവാനോ തിരുത്തുവാനോ പ്രവേശിക്കുക.",
        "watchnologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
        "addwatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്കു ചേർക്കുക",
-       "addedwatchtext": "താà´\99àµ\8dà´\95ൾ [[Special:Watchlist|à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിലàµ\87à´\95àµ\8dà´\95àµ\8d]] \"[[:$1]]\" à´\8eà´¨àµ\8dà´¨ à´\88 à´¤à´¾àµ¾ à´\9aàµ\87ർതàµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81. à´\87നി à´®àµ\81തൽ à´\88 à´¤à´¾à´³à´¿à´²àµ\81à´\82 à´¬à´¨àµ\8dധപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f à´¸à´\82â\80\8cവാദà´\82 à´¤à´¾à´³à´¿à´²àµ\81à´\82 à´\89à´£àµ\8dà´\9fà´¾à´\95àµ\81à´¨àµ\8dà´¨ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽ à´¦àµ\83à´¶àµ\8dയമാവàµ\81à´\82.",
+       "addedwatchtext": "താà´\99àµ\8dà´\95ൾ [[Special:Watchlist|à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിലàµ\87à´\95àµ\8dà´\95àµ\8d]] \"[[:$1]]\" à´\8eà´¨àµ\8dà´¨ à´\88 à´¤à´¾à´³àµ\81à´\82 à´\85തിനàµ\8dà´±àµ\86 à´¸à´\82വാദതàµ\8dതാളàµ\81à´\82 à´\9aàµ\87ർതàµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
        "addedwatchtext-short": "\"$1\" എന്ന താൾ താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലേക്ക് ചേർത്തു.",
        "removewatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ നിന്നും ഒഴിവാക്കുക",
-       "removedwatchtext": "താà´\99àµ\8dà´\95ൾ [[Special:Watchlist|à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽ]] à´¨à´¿à´¨àµ\8dà´¨àµ\81à´\82 \"[[:$1]]\" à´\8eà´¨àµ\8dà´¨ à´¤à´¾àµ¾ നീക്കം ചെയ്തിരിക്കുന്നു.",
+       "removedwatchtext": "താà´\99àµ\8dà´\95ൾ [[Special:Watchlist|à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽ]] à´¨à´¿à´¨àµ\8dà´¨àµ\81à´\82 \"[[:$1]]\" à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\82 à´\85തിനàµ\8dà´±àµ\86 à´¸à´\82വാദതàµ\8dതാളàµ\81à´\82 നീക്കം ചെയ്തിരിക്കുന്നു.",
        "removedwatchtext-short": "\"$1\" എന്ന താൾ താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിൽ നിന്ന് നീക്കി.",
        "watch": "മാറ്റങ്ങൾ ശ്രദ്ധിക്കുക",
        "watchthispage": "ഈ താൾ ശ്രദ്ധിക്കുക",
        "watching": "ശ്രദ്ധിക്കുന്നു...",
        "unwatching": "അവഗണിക്കുന്നു...",
        "watcherrortext": "\"$1\" എന്ന താൾ ശ്രദ്ധിക്കുന്നതിന്റെ സ്ഥിതിയിൽ മാറ്റം വരുത്തിയപ്പോൾ ഒരു പിഴവുണ്ടായിരിക്കുന്നു.",
-       "enotif_reset": "à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 à´¸à´¨àµ\8dദർശിà´\9aàµ\8dà´\9aതായി à´°àµ\87à´\96പ്പെടുത്തുക",
+       "enotif_reset": "à´\8eà´²àµ\8dലാ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\82 à´¸à´¨àµ\8dദർശിà´\9aàµ\8dà´\9aതായി à´\85à´\9fയാളപ്പെടുത്തുക",
        "enotif_impersonal_salutation": "{{SITENAME}} ഉപയോക്താവ്",
        "enotif_subject_deleted": "{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു",
        "enotif_subject_created": "{{SITENAME}} സംരംഭത്തിൽ $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു",
        "undeletepagetext": "താഴെ കാണിച്ചിരിക്കുന്ന {{PLURAL:$1|താൾ|$1 താളുകൾ}} മായ്ക്കപ്പെട്ടതാണെങ്കിലും പത്തായത്തിലുള്ളതിനാൽ പുനഃസ്ഥാപിക്കാവുന്നതാണ്‌. പത്തായം സമയാസമയങ്ങളിൽ വൃത്തിയാക്കാനിടയുണ്ട്.",
        "undelete-fieldset-title": "നാൾപ്പതിപ്പുകൾ പുനഃസ്ഥാപിക്കുക",
        "undeleteextrahelp": "താളിന്റെ മുഴുവൻ നാൾവഴിയും പുനഃസ്ഥാപിക്കാൻ എല്ലാ ചെക്ക്ബോക്സുകളും ശരിയിടാതെ വിട്ടശേഷം '''''പുനഃസ്ഥാപിക്കുക''''' എന്നത് ഞെക്കുക.\nതിരഞ്ഞെടുത്തവ പുനഃസ്ഥാപിക്കാൻ, പുനഃസ്ഥാപിക്കേണ്ട നാൾപ്പതിപ്പിനുള്ള ചെക്ക്ബോക്സിൽ ശരിയിട്ടശേഷം '''''പുനഃസ്ഥാപിക്കുക''''' എന്നത് ഞെക്കുക.",
-       "undeleterevisions": "$1 {{PLURAL:$1|പതിപ്പ്|പതിപ്പുകൾ}} പത്തായത്തിലാക്കി",
+       "undeleterevisions": "{{PLURAL:$1|ഒരു നാൾപതിപ്പ്|$1 നാൾപതിപ്പുകൾ}} മായ്ച്ചു",
        "undeletehistory": "താങ്കൾ താൾ പുനഃസ്ഥാപിച്ചാൽ, എല്ലാ നാൾപ്പതിപ്പുകളും നാൾവഴിയിൽ പുനഃസ്ഥാപിക്കപ്പെടും.\nമായ്ക്കലിനു ശേഷം പുതിയൊരു താൾ അതേ പേരിൽ സൃഷ്ടിക്കപ്പെട്ടിട്ടുണ്ടെങ്കിൽ, പുനഃസ്ഥാപിക്കപ്പെട്ട പതിപ്പുകൾ നാൾവഴിയിൽ പഴയവയായി പ്രത്യക്ഷപ്പെടുന്നതാണ്.",
        "undeleterevdel": "ഏറ്റവും ഉന്നത സ്ഥിതിയിലുള്ള താളോ പ്രമാണത്തിന്റെ നാൾപ്പതിപ്പോ ഭാഗികമായി മായ്ക്കപ്പെടുമെന്നതിനാൽ മായ്ക്കൽ പുനഃസ്ഥാപിക്കൽ നടത്താൻ കഴിയില്ല.\nഇത്തരം സന്ദർഭങ്ങളിൽ, താങ്കൾ ഏറ്റവും പുതിയ മായ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ തിരഞ്ഞെടുക്കാതിരിക്കുകയോ മറയ്ക്കാതിരിക്കുകയോ ചെയ്യേണ്ടതാണ്.",
        "undeletehistorynoadmin": "ഈ താൾ മായ്ക്കപ്പെട്ടിരിക്കുന്നു.\nഈ താൾ മായ്കാനുള്ള കാരണവും താൾ മായ്ക്കുന്നതിനു മുൻപ് തിരുത്തിയവരെ കുറിച്ചുള്ള വിവരങ്ങളും, താഴെ കൊടുത്തിരിക്കുന്നു.\nമായ്ക്കപ്പെട്ട ഈ പതിപ്പുകളുടെ ഉള്ളടക്കം കാര്യനിർവാഹകർക്ക് മാത്രമേ പ്രാപ്യമാകൂ.",
        "spam_reverting": "$1 എന്നതിലേയ്ക്കുള്ള കണ്ണികളില്ലാത്ത അവസാന നാൾപ്പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്യുന്നു",
        "spam_blanking": "$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും ശൂന്യമാക്കുന്നു",
        "spam_deleting": "$1 എന്നതിലേയ്ക്ക് കണ്ണികളുള്ള എല്ലാ നാൾപ്പതിപ്പുകളും മായ്ക്കുന്നു",
-       "simpleantispam-label": "പാഴെഴുത്ത് വിരുദ്ധ പരിശോധന.\nഇത് '''പൂരിപ്പിക്കരുത്'''!",
+       "simpleantispam-label": "പാഴെഴുത്ത് വിരുദ്ധ പരിശോധന.\nഇത് <strong>പൂരിപ്പിക്കരുത്</strong>!",
        "pageinfo-title": "\"$1\" എന്ന താളിന്റെ വിവരങ്ങൾ",
        "pageinfo-not-current": "ക്ഷമിക്കുക, പഴയ നാൾപ്പതിപ്പുകളിൽ ഈ വിവരം പ്രദർശിപ്പിക്കുക അസാദ്ധ്യമാണ്.",
        "pageinfo-header-basic": "അടിസ്ഥാനവിവരങ്ങൾ",
        "pageinfo-robot-index": "അനുവദിച്ചിരിക്കുന്നു",
        "pageinfo-robot-noindex": "അനുവദിച്ചിട്ടില്ല",
        "pageinfo-watchers": "താൾ ശ്രദ്ധിക്കുന്നവരുടെ എണ്ണം",
-       "pageinfo-visiting-watchers": "സമàµ\80à´ªà´\95ാല à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95ൾ à´\8eà´\9fàµ\81à´¤àµ\8dà´¤àµ\81à´¨àµ\8bà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨, താൾ ശ്രദ്ധിക്കുന്നവരുടെ എണ്ണം",
+       "pageinfo-visiting-watchers": "സമàµ\80à´ªà´\95ാല à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95ൾ à´\8eà´\9fàµ\81à´¤àµ\8dà´¤àµ\81à´¨àµ\8bà´\95àµ\8dà´\95à´¿à´¯, താൾ ശ്രദ്ധിക്കുന്നവരുടെ എണ്ണം",
        "pageinfo-few-watchers": "{{PLURAL:$1|ശ്രദ്ധിക്കുന്നയാളുടെ|ശ്രദ്ധിക്കുന്നവരുടെ}} എണ്ണം $1 എണ്ണത്തിലും കുറവാണ്",
        "pageinfo-few-visiting-watchers": "സമീപകാല തിരുത്തുകൾ എടുത്തുനോക്കുന്ന, താൾ ശ്രദ്ധിക്കുന്നവർ ഉണ്ടാകാനും ഉണ്ടാകാതിരിക്കാനുമിടയുണ്ട്",
        "pageinfo-redirects-name": "ഈ താളിലേക്കുള്ള തിരിച്ചുവിടലുകളുടെ എണ്ണം",
        "special-characters-title-endash": "ഇം  ഡാഷ്",
        "special-characters-title-emdash": "എം ഡാഷ്",
        "special-characters-title-minus": "വ്യവകലന ചിഹ്നം",
+       "mw-widgets-dateinput-no-date": "തീയതി ഒന്നും തിരഞ്ഞെടുത്തിട്ടില്ല",
        "mw-widgets-titleinput-description-new-page": "താൾ ഇപ്പോൾ നിലവിലില്ല",
        "mw-widgets-titleinput-description-redirect": "$1 എന്ന താളിലേക്കുള്ള തിരിച്ചുവിടൽ"
 }
index 3264963..361049c 100644 (file)
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Tajlandiż",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "SSSS-XX-ĠĠ",
+       "mw-widgets-dateinput-placeholder-month": "SSSS-XX"
 }
index 5194094..4e6d608 100644 (file)
        "login-throttled": "သင်သည် login ဝင်ရန် အကြိမ်မြောက်မြားစွာ အားထုတ်ခဲ့ပြီးဖြစ်သည်။\nကျေးဇူးပြု၍ ထပ်မဝင်ခင် စောင့်ပေးပါ။",
        "login-abort-generic": "Login ဝင်ခြင်း မအောင်မြင်ပါ - ထွက်သွားပြီ",
        "loginlanguagelabel": "ဘာသာ: $1",
-       "pt-login": "á\80¡á\80\80á\80±á\80¬á\80\84á\80·á\80ºá\81\80င်ရန်",
+       "pt-login": "á\80¡á\80\80á\80±á\80¬á\80\84á\80·á\80ºá\80\9dင်ရန်",
        "pt-createaccount": "အကောင့် ဖန်တီးရန်",
        "changepassword": "စကားဝှက် ပြောင်းရန်",
        "resetpass_announce": "သင်သည် ယာယီ စကားဝှက်ဖြင့် ဝင်ရောက်ခြင်းဖြစ်သည်။\nစကားဝှက် အသစ်အား ဤနေရာတွင်ရိုက်ပါ :",
index c35e221..79140a7 100644 (file)
@@ -38,7 +38,7 @@
        "tog-shownumberswatching": "Невтемс зяро теицятнеде, конат аравтызь лопанть эсест ванома лемрисьментень",
        "tog-oldsig": "Уликс кедьпутовксось:",
        "tog-fancysig": "Лемпутовксось прок викитекст (сонсь теевиця сюлмавома певтеме)",
-       "tog-uselivepreview": "Максомс эриця васнянь невтевкс (варчамонь сон)",
+       "tog-uselivepreview": "Максомс эриця васнянь невтевкс",
        "tog-forceeditsummary": "Невтик монень, мезе сёрмадомс витнемадо-петнемадо ёвтамонь вальминентень",
        "tog-watchlisthideown": "Кекшить монь теевть витневкстнэнь ванома лемрисьменть эйстэ",
        "tog-watchlisthidebots": "Кекшить бот витневкстнэнь-петневкстнэнь ванома лемрисьсенть эйстэ",
        "actions": "Тев теемат",
        "namespaces": "Лемпотмот",
        "variants": "Вариантт",
+       "navigation-heading": "Навигациянь меню",
        "errorpagetitle": "Ильведькс",
        "returnto": "Велявтомс $1 лопантень.",
        "tagline": "{{SITENAME}} -нь пельде",
        "permalink": "Свалшкас сюлмавомапе",
        "print": "Нолдамс",
        "view": "Ванома потмо",
+       "view-foreign": "Ваномс «$1» сайтасонть",
        "edit": "Витнеме-петнеме",
+       "edit-local": "Витнемс-петнемс тескень ёвтнеманзо",
        "create": "Тейть-шкак",
+       "create-local": "Поладомс тескень ёвтнеманзо",
        "editthispage": "Витнемс-петнемс те лопанть",
        "create-this-page": "Теик-шкик те лопанть",
        "delete": "Нардамс",
        "unprotectthispage": "Полавтомс те лопанть ванстоманзо",
        "newpage": "Од лопа",
        "talkpage": "Кортнемс те лопадонть",
-       "talkpagelinktext": "Ð\9aоÑ\80Ñ\82неме",
+       "talkpagelinktext": "Ð\9aоÑ\80Ñ\82нема",
        "specialpage": "Башка тевень лопа",
        "personaltools": "Эсень кедьёнкст",
        "articlepage": "Ваномс потмокслопанть",
-       "talk": "Ð\9aоÑ\80Ñ\82неме",
+       "talk": "Ð\9aоÑ\80Ñ\82нема",
        "views": "Ваномкат",
        "toolbox": "Кедьёнкст",
        "userpage": "Ваномонзо кирдицянть лопанзо",
        "otherlanguages": "Лия кельсэ",
        "redirectedfrom": "(Ютавтозь $1 вельде)",
        "redirectpagesub": "Лиясто ютавтозь лопа",
-       "lastmodifiedat": "Те лопанть меельседе витнезь-петнезь $2, $1.",
+       "redirectto": "Кучомс седе тов:",
+       "lastmodifiedat": "Те лопась меельцеде витнезель-петнезель $1 чистэ, $2 чассто.",
        "viewcount": "Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.",
        "protectedpage": "Те лопась ванстомасо",
        "jumpto": "Тёкадемс тей:",
        "view-pool-error": "Кежеть иляст са, сервертнень виест а сатыть ней.\nПекень пек ламо теицят стараить ваномс те лопанть.\nУчокая аламос, мейле одов варчасак тезэнь совамонть.\n$1",
        "pool-queuefull": "Процесспулось пешксе",
        "pool-errorunknown": "Апак содань ильведькс",
+       "poolcounter-usage-error": "Тевс нолдамонь ильведевкс: $1",
        "aboutsite": "{{SITENAME}} ланга",
        "aboutpage": "Project:Эстэдензэ",
        "copyright": "$1-сто муят мезе тесэ, бути лиякс апак ёвта.",
        "disclaimers": "Видечинь кортамотне",
        "disclaimerpage": "Project:Видечинь прякс кортнема",
        "edithelp": "Витнемань-петнемань лезкс",
+       "helppage-top-gethelp": "Лезкс",
        "mainpage": "Прявтлопа",
        "mainpage-description": "Прявтлопа",
        "policy-url": "Project:Политика",
        "privacypage": "Project:Салавачинь политикась",
        "badaccess": "Меревемань асатыкс",
        "badaccess-group0": "Тонеть а мерить теемс мезе вешить.",
-       "badaccess-groups": "Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|1=куронь|куротнень}} теицятненень.",
+       "badaccess-groups": "Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|куронть|куротнень}} теицятненень.",
        "versionrequired": "МедияВикинь $1 версиясь эряви",
        "versionrequiredtext": "МедияВикинь $1 версиясь эряви те лопанть тевс нолдамга.\nВант [[Special:Version|версиянь лопанть]].",
        "ok": "Маштови",
        "retrievedfrom": "Лисмапрясь \"$1\"-сто",
        "youhavenewmessages": "Тонеть сась $1 ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|од сёрма|999=од сёрмат}}",
+       "newmessagesdifflinkplural": "меельце {{PLURAL:$1|полавтнемась|999=полавтнематне}}",
        "youhavenewmessagesmulti": "Од сёрминеть учить эйсэть $1-со",
        "editsection": "витнеме-петнеме",
        "editold": "витнеме-петнеме",
        "hidetoc": "кекшемс",
        "collapsible-collapse": "Вишкалгавтомс",
        "collapsible-expand": "Келейгавтомс",
+       "confirmable-confirm": "{{GENDER:$1|Тон}} истя арсят?",
+       "confirmable-yes": "Алкукс истя",
+       "confirmable-no": "Арась",
        "thisisdeleted": "$1-нть ваномс эли велявтомс мекев?",
        "viewdeleted": "Ванномс $1?",
        "restorelink": "{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}",
        "nstab-category": "Категория",
        "nosuchaction": "Истямо тев арась",
        "nosuchspecialpage": "Истямо башка лопа арась",
+       "nospecialpagetext": "<strong>Лопась, конань вешик, арась.</strong>\n\nВант те лемрисьменть [[Special:SpecialPages|{{int:specialpages}}]].",
        "error": "Ильведькс",
        "databaseerror": "Датабазань ильведькс",
+       "databaseerror-query": "Вешемась: $1",
+       "databaseerror-function": "Функциясь: $1",
        "databaseerror-error": "Ильведькс: $1",
        "laggedslavemode": "Ванок: Кизды, лопасонть материалось таштомсь.",
        "readonly": "Датабазась панжома экшсэ",
        "filerenameerror": "Файлантень а маштови \"$1\" максомс од лем \"$2\".",
        "filedeleteerror": "\"$1\" файлась шукшпряв эзь ливтеве.",
        "directorycreateerror": "\"$1\" директориясь а тееви.",
+       "directoryreadonlyerror": "\"$1\" каталогось ансяк ловнови.",
+       "directorynotreadableerror": "\"$1\" каталогось а ловнови.",
        "filenotfound": "\"$1\" файлась а муеви.",
        "unexpected": "Апак учонь вейкетстямо: \"$1\"=\"$2\".",
        "formerror": "Ильведевкс: Формась а кучови",
        "badarticleerror": "Те лопасонть вешезь тевесь а тееви.",
+       "cannotdelete": "\"$1\" лопась эли файлась эзь нардаво.\nПаряк кияк лия икельдинзеть нардамосонзо.",
        "cannotdelete-title": "\"$1\" лопась а нардави",
+       "no-null-revision": "Од чаво ревизия эзь шкаво-тееве \"$1\" лопанть туртов",
        "badtitle": "Амаштовикс конякс",
        "badtitletext": "Вешезь лопанть лемезэ аволь виде, чаво, эли аволь видестэ сюлмазь келеньйутковань эли интервикинь лем. Паряк, лемсэнть тевс нолдазь анолдавикс тешкст.",
        "viewsource": "Ванномс лисьмапрянть",
        "createacct-submit": "Шкик совамотаркат",
        "createacct-another-submit": "Шкак од совамотарка",
        "createacct-benefit-heading": "«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.",
+       "createacct-benefit-body1": "{{PLURAL:$1|витнема-петнема|витнемат-петнемат}}",
        "createacct-benefit-body2": "{{PLURAL:$1|лопа|лопат}}",
        "badretype": "Сёрмадыть салава валот кавксть: сынь аволь вейкеть.",
        "userexists": "Те лемесь уш саезь.\nАрсека эстеть лия, инеськеть.",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|кортнема]]) совицянь таркась теевсь-шкавсь.",
        "loginlanguagelabel": "Кель: $1",
        "pt-login": "Совамс",
+       "pt-createaccount": "Шкамс совамо тарка",
        "pt-userlogout": "Лисемс",
        "user-mail-no-addy": "Терявтыть кучомс е-сёрма е-сёрмапарговтомо.",
        "changepassword": "Салавань валонь полавтома",
        "resetpass-submit-cancel": "Саемс мекев",
        "resetpass-temp-password": "А куватень совамо валось:",
        "resetpass-expired": "Салававалот таштомсь. Аравтт од салававал, мейле совават.",
-       "passwordreset": "Совамо валонь лиялгавтома",
-       "passwordreset-legend": "Полавтык совамо валонть",
+       "passwordreset": "Одов ладямс салававал",
        "passwordreset-username": "Теиця леметь:",
        "passwordreset-email": "Е-сёрмапаргот:",
        "passwordreset-emailelement": "Теицянь леметь: $1\nНурькине шкань салававалот: $2",
        "currentrevisionlink": "Тевате лиякстомтома",
        "cur": "неень",
        "next": "сыця",
-       "last": "меелÑ\8cÑ\81е",
+       "last": "меелÑ\8cÑ\86е",
        "page_first": "васенце",
        "page_last": "меельсе",
        "histlegend": "Версиянь кочкамось: тешксты невтезь версиятнень,  али лепштик Enter повнэнть.<br />\nЧарькодевтемат: (молиц.) = редямось молиця версиястонть; (и. молиц.) = редямось икеле молиця версиястонть; '''а''' = аволь седе ламо лиякстомтома.",
        "revdelete-legend": "Аравтомс неявомачынь петне",
        "revdelete-hide-text": "Лиякстомтомань текстэсь",
        "revdelete-hide-image": "Кекшемс мезе файлатнесэ",
-       "revdelete-hide-name": "Ð\9aекÑ\88емÑ\81 Ñ\82ев Ñ\82ееманÑ\82Ñ\8c Ð´Ñ\8b Ð½Ð¾Ñ\80овамо Ñ\82аÑ\80канзо",
+       "revdelete-hide-name": "Ð\9aекÑ\88емÑ\81 Ñ\82ев Ñ\82ееманÑ\82Ñ\8c Ð½Ð¾Ñ\80овамо Ñ\82аÑ\80канзо Ð´Ñ\8b Ð¿Ð°Ñ\80амеÑ\82Ñ\80анзо",
        "revdelete-hide-comment": "Витнемс-петнемс сёрмадовксонть зэмензэ.",
        "revdelete-hide-user": "Витницянть-петницянть совамолемезэ/IP сёрмапаргозо",
        "revdelete-radio-same": "(иляк лиякстомто)",
        "gender-male": "Сон витни-петни викилопатнесэ",
        "gender-female": "Сон витни-петни викилопатнесэ",
        "email": "Е-сёрма",
-       "prefs-help-realname": "Алкуксонь леметь (арась мелеть, иляк путо): путсак, ды сон карми неявомо не таркатнесэ, косо тон тев теят.",
+       "prefs-help-realname": "Алкуксонь леметь ... арась мелеть, иляк путо. Путындерясак, леметь карми неявомо не таркатнесэ, косо тон тев теят.",
        "prefs-help-email": "Е-сёрмапаргот а эряви тешкстамс. Сон карми эрявомо ансяк салававалонь одов пачтямсто ёмавтындерясак неень салавань валот.",
        "prefs-help-email-others": "Мелеть сайтянзат, путыка кортамо лопазот е-сёрмапаргот, конань вельде лия ломантне сёрмадовить тенть. Минек вельде е-сёрмапаргот зярдояк а неяви, зярдо лия совицятне сёрмалить тенть.",
        "prefs-help-email-required": "Е-сёрмань адресэть эряви.",
        "action-userrights-interwiki": "витнемс-петнемс лия викитнесэ теицянь видечитнень",
        "action-sendemail": "кучомс е-сёрмат",
        "nchanges": "$1 {{PLURAL:$1|полавтнема|полавтнемат}}",
-       "recentchanges": "Чыяконь полавтнемат-лиякстомтомат",
+       "enhancedrc-history": "путовксонзо-юронзо",
+       "recentchanges": "Чияконь полавтнемат-лиякстомтомат",
        "recentchanges-legend": "Улконь полавтнематнень аравтнемаст",
        "recentchanges-summary": "",
        "recentchanges-feed-description": "Мельга ваннынк кода ульнесть витьнемат-петнемат wiki-сэ те максовксонть.",
        "rcnotefrom": "Ало максозь {{PLURAL:$5|лиякстомтомась, конась|лиякстомтоматне, конатне}} теезь <strong>$3, $4</strong> шкасто саезь (весемеде ламо невтезь <strong>$1</strong>).",
        "rclistfrom": "Невтемс од витьнематнень $3 $2-нть эйстэ саезь.",
        "rcshowhideminor": "$1 апокшкэ витнемат-петнемат",
+       "rcshowhideminor-hide": "Кекшемс",
        "rcshowhidebots": "$1 ботт",
+       "rcshowhidebots-show": "Невтемс",
        "rcshowhideliu": "$1 совавтозь теицят",
+       "rcshowhideliu-hide": "Кекшемс",
        "rcshowhideanons": "$1 лемтеме теицят",
+       "rcshowhideanons-show": "Невтемс",
+       "rcshowhideanons-hide": "Кекшемс",
        "rcshowhidepatr": "$1 кона патрульсэ витьни-петни",
        "rcshowhidemine": "$1 мезе мон витнинь-петнинь",
-       "rclinks": "Невтемс меельсе $1 полавтнемат меельсе $2 чинь перть<br />$3",
+       "rcshowhidemine-show": "Невтемс",
+       "rcshowhidemine-hide": "Кекшемс",
+       "rclinks": "Невтемс меельце $1 полавтнемат меельце $2 чинь перть<br />$3",
        "diff": "кадовикс",
        "hist": "ист",
        "hide": "Кекшемс",
        "minoreditletter": "а",
        "newpageletter": "О",
        "boteditletter": "б",
-       "rc_categories_any": "Кодамо илязо уле",
+       "rc_categories_any": "Кочказетнень эйстэ кодамо-понгсь",
        "newsectionsummary": "/* $1 */ од пелькс",
        "rc-enhanced-expand": "Невтемс седе ламо тень ланга",
        "rc-enhanced-hide": "Кекшемс келейстэ ёвтазенть",
        "uploadbtn": "Ёвкстамс файла",
        "uploadnologin": "Эзить сова",
        "uploaderror": "Ёвкстамсто манявома",
-       "upload-permitted": "Файлань форматт, конат меревить: $1.",
-       "upload-preferred": "Файлань типт, конатне паро мельсэ учовить: $1.",
-       "upload-prohibited": "Файлань типт, конатне кардазь: $1.",
+       "upload-permitted": "Файлань маштовикс {{PLURAL:$2|типесь|типтне}}: $1.",
+       "upload-preferred": "Файлань  {{PLURAL:$2|тип, кона паро мельсэ учови|типть, конатне паро мельсэ учовить}}: $1.",
+       "upload-prohibited": "Файлань {{PLURAL:$2|тип, конась|типть, конатне}} кардазь: $1.",
        "uploadlogpage": "Файлань ёвкстамодо журнал",
        "filename": "Файлань лем",
        "filedesc": "Нурькинестэ",
        "unusedtemplates": "Тевс апак нолда лопа парцунт",
        "unusedtemplateswlh": "лия сюлмавома пенеть",
        "randompage": "Кодамо понгсь лопа",
-       "randompage-nopages": "{{PLURAL:$2|1=Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.",
+       "randompage-nopages": "Лопат арасть {{PLURAL:$2|те лемпотмосонть|неть лемпотмотнесэ}}: $1",
+       "randomincategory-submit": "Адя",
        "randomredirect": "Апак фатя ёнксось",
        "randomredirect-nopages": "\"$1\"  лем потмосонть лияв ютавтомат арасть.",
        "statistics": "Статистикат",
        "withoutinterwiki-submit": "Невтемс",
        "fewestrevisions": "Лопат, конатнесэ весемеде аламо лиякстомтомат",
        "nbytes": "$1 {{PLURAL:$1|байт|байтт}}",
-       "ncategories": "$1 {{PLURAL:$1|1=категория|категорият}}",
-       "nlinks": "$1 {{PLURAL:$1|невтевкс|невтевкснедэ|невтевкст}}",
+       "ncategories": "$1 {{PLURAL:$1|категория|категорият}}",
+       "nlinks": "$1 {{PLURAL:$1|сюлмавома пене|сюлмавома пенеть}}",
        "nmembers": "куронь $1 {{PLURAL:$1|ломань|ломанть}}",
-       "nrevisions": "$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}",
-       "nviews": "$1 {{PLURAL:$1|1=ванома потмо|ванома потмот}}",
+       "nrevisions": "$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}",
        "lonelypages": "Лопаурозкэть",
        "uncategorizedpages": "Категориявтомо лопат",
        "uncategorizedcategories": "Категориявтомо категорият",
        "wantedtemplates": "Вешезь лопа парцунт",
        "mostlinked": "Лопат конатнес сехте ламо сюлмавома пенеть невтить",
        "mostlinkedcategories": "Сехте сюлмавозь категориятнень марто",
-       "mostlinkedtemplates": "СеÑ\85Ñ\82е Ð»Ð°Ð¼Ð¾ Ñ\81Ñ\8eлмавома Ð¿Ðµ Ð¼Ð°Ñ\80Ñ\82о Ð»Ð¾Ð¿Ð° Ð¿Ð°Ñ\80Ñ\86Ñ\83нÑ\82",
+       "mostlinkedtemplates": "Ð\9bопаÑ\82, ÐºÐ¾Ð½Ð°Ñ\82не Ñ\81еÑ\85Ñ\82е Ð»Ð°Ð¼Ð¾ Ñ\81Ñ\8eлмавома Ð¿Ðµ Ð¼Ð°Ñ\80Ñ\82о",
        "mostcategories": "Весемеде ламо категория марто лопат",
        "mostimages": "Весемеде ламо сюлмавкс марто файлат",
        "mostrevisions": "Лопат конатнесэ теезь сехте ламо лиякстомтомат",
        "listusers": "Теицят-кить",
        "listusers-editsonly": "Невтемс ансяк витнема-петнема марто совийтнень-лисийтнень",
        "listusers-creationsort": "Аравтомс мельга мельцек шкамо чинь коряс",
-       "usereditcount": "$1 {{PLURAL:$1|1=витнема-петнема|витнемат-петнемат}}",
+       "usereditcount": "$1 {{PLURAL:$1|витнема-петнема|витнемат-петнемат}}",
        "usercreated": "{{GENDER:$3|Шказь}} on $1 чистэ $2 шкасто",
        "newpages": "Од лопат",
        "newpages-username": "Теицянь лем:",
        "nopagetitle": "Истямо вешема лопа арась",
        "nopagetext": "Истямо лопа, конань вешить, арась.",
        "pager-newer-n": "$1 седе {{PLURAL:$1|од|одт}}",
-       "pager-older-n": "{{PLURAL:$1|1=седе ташто 1|седе таштт $1}}",
+       "pager-older-n": "{{PLURAL:$1|седе ташто 1|седе таштт $1}}",
        "suppress": "А ванома",
        "booksources": "Кинигань лисьмапрят",
        "booksources-search-legend": "Вешнемс кинигань лисьмапрят",
        "allpagesprefix": "Невтевкс лопась полаткс марто:",
        "allpages-bad-ns": "{{SITENAME}} сайтсэнть арась лем потмо \"$1\".",
        "categories": "Категорият",
-       "categoriespagetext": "{{PLURAL:$1|1=Те категориясонть|Не категориятнесэ}} улить лопат эли медият.\n[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.\nИстяжо ванытя [[Special:WantedCategories|вешень категориятнень]].",
+       "categoriespagetext": "{{PLURAL:$1|Те категориясонть|Неть категориятнесэ}} улить лопат эли медият.\n[[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.\nИстяжо ванытя [[Special:WantedCategories|вешема категориятнень]].",
        "special-categories-sort-count": "аравтомс цётонь коряс",
        "special-categories-sort-abc": "аравтомс альфавитэнь коряс",
        "sp-deletedcontributions-contribs": "путовксонзо",
        "nowatchlist": "Ванома керьксэзэть мезеяк апак путо.",
        "watchnologin": "Апак сова",
        "addedwatchtext": "Лопась «[[:$1]]» совавтозь [[Special:Watchlist|ванома потмозот]].\nСеде тов те лопасонть ды мартонзо сюлмавозь кортнема лопасонть теезь витьнематне тешкставтовить те потмонтень, истяжо кармить кикстазь те лопасонть[[Special:RecentChanges|потмо од витнематне]], истя седе шождасто сынь неявить.",
-       "removedwatchtext": "«[[:$1]]» лопась нардавсь [[Special:Watchlist|ванома потмоксстот]].",
+       "removedwatchtext": "«[[:$1]]» Ð»Ð¾Ð¿Ð°Ñ\81Ñ\8c ÐºÐ¾Ñ\80Ñ\82нема Ð»Ð¾Ð¿Ð°Ð½ÐµÐº Ð½Ð°Ñ\80давÑ\81Ñ\8c [[Special:Watchlist|ванома Ð¿Ð¾Ñ\82мокÑ\81Ñ\81Ñ\82оÑ\82]].",
        "watch": "Ванстнемс",
        "watchthispage": "Ванстнемс те лопа мельга",
        "unwatch": "А ванстнемс тень мельга",
        "unwatchthispage": "Лоткамс ванстомадонзо",
        "notvisiblerev": "Лиякстомтомась нардазь",
-       "watchlist-details": "Ванома лемрисьмесэть $1 {{PLURAL:$1|лопа|лопат}}, кортнема лопатнень лангс апак вано.",
-       "wlshowlast": "Ð\9dевÑ\82емÑ\81 Ð¼ÐµÐ»Ñ\8cÑ\81е $1 цяст $2 чить",
+       "watchlist-details": "Ванома лемрисьмесэть {{PLURAL:$1|$1 лопа|$1 лопат}}, кортнема лопатнень лангс апак вано.",
+       "wlshowlast": "Ð\9dевÑ\82емÑ\81 Ð¼ÐµÐµÐ»Ñ\8cÑ\86е $1 цяст $2 чить",
        "watchlist-options": "Ванома потмонь аравтнемат",
        "watching": "Ванома...",
        "unwatching": "Аванома...",
        "exbeforeblank": "чамдомадо икеле эйсэнзэ ульнесь: '$1'",
        "delete-confirm": "Нардамс \"$1\"",
        "delete-legend": "Нардамс",
-       "historywarning": "Ванок: Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|1=умазо|уманзо}}:",
+       "historywarning": "<strong>Ванок:</strong> Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|умазо|уманзо}}:",
        "confirmdeletetext": "Кундыть нардамо лопа (эли невтевкс-артовкс) вейтьсэ лиякстомтоматнеде икелькс уманзо марто.<br />\nИнеськеть,  кемекстык, эсеть мелеть коряс тень тейсак, алкукс содат, мезе лияды теде мейле, ды алкукс теят тень видечинть (правилатьнень) коряс, конат сёрмадозь [[{{MediaWiki:Policy-url}}]].",
        "actioncomplete": "Тевень теемась топавтовсь",
        "actionfailed": "Тев теемась эзь лисе",
        "undeleteinvert": "Кочказень таркас апаконь кочкамо",
        "undeletecomment": "Тувталось:",
        "undeletedrevisions": "{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь",
-       "undeletedrevisions-files": "{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1=1 файла|$2 файлат}} вельмевтезь",
-       "undeletedfiles": "{{PLURAL:$1|1=1 файла|$1 файлат}} вельмевтезь",
+       "undeletedrevisions-files": "{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1 файла|$2 файлат}} вельмевтезь",
+       "undeletedfiles": "{{PLURAL:$1|1 файла|$1 файлат}} вельмевтезь",
        "undelete-search-box": "Вешнемс нардазь лопатнень ютксто",
        "undelete-search-prefix": "Невтемс лопат тестэ саезь:",
        "undelete-search-submit": "Вешнемс",
        "contributions": "{{GENDER:$1|Теицянть}} путовксонзо",
        "contributions-title": "Теицянть путовксонзо $1 таркантень",
        "mycontris": "Монь путовкстнэ",
-       "contribsub2": "$1 ($2) туртов",
+       "contribsub2": "{{GENDER:$3|$1}}-нь кладозо ($2)",
        "uctop": "(течеме чинь)",
        "month": "Ковстонть (ды седе икеле):",
        "year": "Иестэнть (ды седе икеле):",
        "isredirect": "Лиякс витнинк-петнинк лопанть",
        "istemplate": "совавтомс",
        "isimage": "файлань сюлмавома пене",
-       "whatlinkshere-prev": "{{PLURAL:$1|1=икеле|седе икелень $1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|1=сыця|сы $1}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|седе икелень|седе икелень $1}}",
+       "whatlinkshere-next": "{{PLURAL:$1|сыця|сыця $1}}",
        "whatlinkshere-links": "← сюлмавомапеть",
        "whatlinkshere-hideredirs": "$1 ютавты козонь-козонь",
        "whatlinkshere-hidetrans": "$1 сюлмавозь пелькстнэнь",
        "whatlinkshere-filters": "Фильтрат",
        "block": "Аравтомс теицянть саймас",
        "unblock": "Нолдамс теицянть саймасто",
-       "blockip": "Аравтомс теицянть саймас",
+       "blockip": "Аравтомс {{GENDER:$1|теицянть}} саймас",
        "blockip-legend": "Аравтомс теицянть саймас",
        "ipaddressorusername": "IP адрес эли теицянь лем:",
        "ipbexpiry": "Таштомома шказо:",
        "ipb-edit-dropdown": "Витнемс-петнемс саймес озавтомань тувталтнэнь",
        "ipb-unblock-addr": "Нолдамс $1-нть сайместэ",
        "ipb-blocklist": "Ваномс саймес озавтозетнень",
-       "ipb-blocklist-contribs": "$1 лопас путовкст",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}}-нь путовксонзо",
        "unblockip": "Нолдамс теицянть сайместэ",
        "ipusubmit": "Нардамс те саймас аравтоманть",
        "blocklist": "Саймес саень теицят",
        "movepage-page-moved": "\"$1\" лопась печтевтезь \"$2\"-с.",
        "movepage-page-unmoved": "Лопа $1 эзь печтевтеве $2 лопас.",
        "movelogpage": "Печтевтемань журнал",
-       "movesubpage": "{{PLURAL:$1|1=Алкслопа|Алкслопа}}",
-       "movesubpagetext": "Те лопасонть ало невтеви $1 {{PLURAL:$1|1=алкслопа|алкслопа}}.",
+       "movesubpage": "{{PLURAL:$1|Алкслопа}}",
+       "movesubpagetext": "Те лопасонть ало невтеви $1 {{PLURAL:$1|алкслопа|алкслопат}}.",
        "movenosubpage": "Те лопасонть алкслопат арасть.",
        "movereason": "Тувталось:",
        "revertmove": "велявтодо",
        "import-upload-filename": "Файла лемесь:",
        "import-comment": "Арсемат-мельть:",
        "importstart": "Лопатне совавтовить...",
-       "import-revision-count": "$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}",
+       "import-revision-count": "$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}",
        "importnopages": "Ёвкстамс лопат арасть",
        "importfailed": "Совавтома тевесь эзь лисе: <nowiki>$1</nowiki>",
        "importcantopen": "Совавтозь файлась эзь панжово",
        "import-noarticle": "Совавтомс лопат арасть!",
        "import-upload": "Ёвкстамс XML датанть",
        "importlogpage": "Импортонть журналось",
-       "import-logentry-upload-detail": "$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}",
+       "import-logentry-upload-detail": "Совавтозь $1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}",
        "tooltip-pt-userpage": "Теицянь лопат",
        "tooltip-pt-mytalk": "Кортнемалопам",
        "tooltip-pt-preferences": "Мейсэ явован лиятнень эйстэ",
        "tooltip-pt-login": "Совавтовлить эсь прят тезэнь, арась мелеть, иля.",
        "tooltip-pt-logout": "Лисемс",
        "tooltip-ca-talk": "Кортавтома пек паро лопадонть",
-       "tooltip-ca-edit": "Те Ð»Ð¾Ð¿Ð°Ñ\81Ñ\8cкак Ð²Ð¸Ñ\82неви-пеÑ\82неви. Ð\90нÑ\81Ñ\8fк, Ð²Ð°Ð½Ñ\81Ñ\82омадо Ð¸ÐºÐµÐ»Ðµ Ñ\8fла Ð²Ð°Ñ\81нÑ\8fнÑ\8c Ð½ÐµÐ²Ñ\82евкÑ\81 Ð¿Ð¾Ð²Ð½Ñ\8dнÑ\82Ñ\8c Ð»ÐµÐ¿Ñ\88Ñ\82ика.",
+       "tooltip-ca-edit": "Ð\92иÑ\82немÑ\81-пеÑ\82немÑ\81 Ñ\82е Ð»Ð¾Ð¿Ð°Ð½Ñ\82Ñ\8c",
        "tooltip-ca-addsection": "Ушодомс од явкс.",
        "tooltip-ca-viewsource": "Те лопась ванстозь. Ули меленк ваномонзо сонзе лисмапрянть.",
        "tooltip-ca-history": "Те лопанть ютазь версиянзо.",
        "tooltip-ca-protect": "Аравтомс те лопанть прянь ванстомас",
        "tooltip-ca-delete": "Нардамс те лопанть, илязо улеяк",
        "tooltip-ca-move": "Ютавтык те лопанть лияв",
-       "tooltip-ca-watch": "ТопавÑ\82омÑ\81 Ñ\82е Ð»Ð¾Ð¿Ð°Ð½Ñ\82Ñ\8c Ñ\82Ñ\8bнк Ð²Ð°Ð½Ð¾Ð¼Ð°Ð»Ð¾Ð¿Ð°Ð½Ñ\8cÑ\82е",
+       "tooltip-ca-watch": "Ð\9fоладомÑ\81 Ñ\82е Ð»Ð¾Ð¿Ð°Ð½Ñ\82Ñ\8c Ñ\8dÑ\81еÑ\82Ñ\8c Ð²Ð°Ð½Ð¾Ð¼Ð° Ð»ÐµÐ¼Ñ\80иÑ\81Ñ\8cменÑ\82енÑ\8c",
        "tooltip-ca-unwatch": "Панемензе (нардамонзо) те лопанть тынк ваномалопастонть",
        "tooltip-search": "Вешнемс вана тестэ {{SITENAME}}",
        "tooltip-search-go": "Истямо лем марто лопа улиндеряй, молемс сезэнь",
        "tooltip-n-randompage": "Макста ловномс кодамо понгсь лопа",
        "tooltip-n-help": "Превс путыть косо.",
        "tooltip-t-whatlinkshere": "Викинь весе лопатне, конат тезэнь сюлмазь",
-       "tooltip-t-recentchangeslinked": "Чыяконь полавтнемат сеть лопатнесэ, конат сюлмазь те лопанть марто",
+       "tooltip-t-recentchangeslinked": "Чияконь полавтнемат сеть лопатнесэ, конат сюлмазь те лопанть марто",
        "tooltip-feed-rss": "\"RSS\" чидикерькске те лопантень",
        "tooltip-feed-atom": "Атом лезкс те лопантень",
        "tooltip-t-contributions": "Варштык путовкс потмонть те теицянть",
        "tooltip-compareselectedversions": "Вант явовкст кавто саезь версиятнень те лопанть.",
        "tooltip-watch": "Топавтомс те лопанть тынк ваномалопаньте",
        "tooltip-upload": "Ушодомс йовкстамонть",
-       "tooltip-rollback": "\"Ð\9cекев ÐºÐµÐ²ÐµÑ\80дема\" Ð¿Ð¾Ð²Ð½Ñ\8dнÑ\82Ñ\8c Ð²ÐµÑ\81Ñ\82Ñ\8c Ð»ÐµÐ¿Ñ\88Ñ\82Ñ\8fмоÑ\81Ñ\8c Ð²ÐµÐ»Ñ\8fвÑ\82Ñ\81Ñ\8bнзе Ñ\82е Ð»Ð¾Ð¿Ð°Ñ\81онÑ\82Ñ\8c Ð¼ÐµÐµÐ»Ñ\8cÑ\81екс теезь витнематнень-петнематнень",
+       "tooltip-rollback": "\"Ð\9cекев ÐºÐµÐ²ÐµÑ\80дема\" Ð¿Ð¾Ð²Ð½Ñ\8dнÑ\82Ñ\8c Ð²ÐµÑ\81Ñ\82Ñ\8c Ð»ÐµÐ¿Ñ\88Ñ\82Ñ\8fмоÑ\81Ñ\8c Ð²ÐµÐ»Ñ\8fвÑ\82Ñ\81Ñ\8bнзе Ñ\82е Ð»Ð¾Ð¿Ð°Ñ\81онÑ\82Ñ\8c Ð¼ÐµÐµÐ»Ñ\8cÑ\86екс теезь витнематнень-петнематнень",
        "tooltip-undo": "\"Велявтомс мекев\" велявтсы витнемань-петнемань тевенть ды панжсы васнянь невтемань формасо.\nСонзэ вельде маштови поладомс полавтомадо тувтал.",
        "tooltip-preferences-save": "Ванстомс эсень аравтоматнень",
        "tooltip-summary": "Сёрмадт нурькинестэ совавтозденть",
-       "anonymous": "{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|1=теицязо|теицянзо}}",
+       "anonymous": "{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|теицязо|теицянзо}}",
        "siteuser": "{{SITENAME}}-нь теиця $1",
        "lastmodifiedatby": "Меельседе те лопанть полавтызе $3 $2, $1.",
        "othercontribs": "$1-нь важодеманзо лангс нежедезь.",
        "others": "лият",
-       "siteusers": "{{SITENAME}} сайтэнть {{PLURAL:$2|1=теицязо|теицянзо}} $1",
+       "siteusers": "{{SITENAME}} сайтэнть {{PLURAL:$2|теицязо|теицянзо}} $1",
        "creditspage": "Лопасонть кинь путовксонзо",
        "spamprotectiontitle": "Шукшто ванстома филтра",
        "spambot_username": "MediaWiki-нь шукшто ванькскавтома",
        "previousdiff": "← Седе икелень верзиязо",
        "nextdiff": "Од верзиязо →",
        "thumbsize": "Кенжешканть покшолмазо:",
-       "widthheightpage": "$1 × $2, {{PLURAL:$3|1=лопа|$3 лопат}}",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|лопа|лопат}}",
        "file-info": "файлонть-путовксонть сталмозо: $1, MIME типезе: $2",
        "file-info-size": "$1 × $2 пиксельть, файлонть-путовксонть сталмозо: $3, MIME типезе: $4",
        "file-nohires": "Арась версия покш разрешения марто.",
        "autosumm-new": "Шкавсь-теевсь од лопа $1 марто",
        "watchlistedit-normal-title": "Витнемс-петнемс ванстома лопанть",
        "watchlistedit-normal-submit": "Нардамс конякстнэнь",
-       "watchlistedit-normal-done": "{{PLURAL:$1|1=1 конякс|$1 конякст}} нардазь ваномань лопастот:",
+       "watchlistedit-normal-done": "{{PLURAL:$1|1 конякс нардазель|$1 конякст нардазельть}} ваномань лопастот:",
        "watchlistedit-raw-title": "Витнеме-петнеме верек ваномалопанть",
        "watchlistedit-raw-legend": "Витнеме-петнеме верек ваномалопанть",
        "watchlistedit-raw-titles": "Конякст:",
        "watchlistedit-raw-submit": "Мезе мельга ванстнят, спискаст одкстомтомс",
-       "watchlistedit-raw-added": "Поладозь {{PLURAL:$1|1=1 конякс|$1 конякст}}:",
-       "watchlistedit-raw-removed": "{{PLURAL:$1|1=1 конякс нардазь|$1 конякст нардазь}}:",
+       "watchlistedit-raw-added": "{{PLURAL:$1|1 конякс поладозель|$1 конякст поладозельть}}:",
+       "watchlistedit-raw-removed": "{{PLURAL:$1|1 конякс нардазель|$1 конякст нардазельть}}:",
        "watchlisttools-view": "Лиякстоматьне лопатнесэ потмоксстонть",
        "watchlisttools-edit": "Ваномс ды витнемс-петнемс мезе мельга ванстнят",
        "watchlisttools-raw": "Витнеме-петнеме верек ваномалопанть",
        "duplicate-defaultsort": "'''Ванок!''' Рядс аравтомань те \"$2\" панжомась саеви те \"$1\" панжомадо икеле.",
        "version": "Версия",
-       "version-skins": "Ð\9bангт",
+       "version-skins": "Ð\90Ñ\80авÑ\82озÑ\8c Ð»ангт",
        "version-specialpages": "Башка тевень лопат",
        "version-variables": "Полавтневикс тевть",
        "version-other": "Лия",
        "version-hook-name": "Кечказонть лемезэ",
        "version-hook-subscribedby": "Сёрмадстызе",
        "version-version": "($1)",
-       "version-license": "Лицензия",
+       "version-license": "MediaWiki лицензиясь",
        "version-software": "Нолдань программат",
        "version-software-product": "Шкавкс-нолдавкс",
        "version-software-version": "Верзия",
        "api-error-filename-tooshort": "Керьмазлементь а саты кувалмозо",
        "api-error-illegal-filename": "Керьмазлемесь а маштови.",
        "api-error-unknownerror": "Апак содань ильведевкс: «$1».",
-       "duration-seconds": "$1 {{PLURAL:$1|1=секунда|секундат}}",
-       "duration-minutes": "$1 {{PLURAL:$1|1=минут|минутт}}",
-       "duration-hours": "$1 {{PLURAL:$1|1=цяс|цяст}}",
-       "duration-days": "$1 {{PLURAL:$1|1=чи|чить}}",
-       "duration-weeks": "$1 {{PLURAL:$1|1=тарго|таргот}}",
-       "duration-years": "$1 {{PLURAL:$1|1=ие|иеть}}",
-       "duration-decades": "$1 {{PLURAL:$1|1=кеменьие|кеменьиеть}}",
-       "duration-centuries": "$1 {{PLURAL:$1|1=пинге|пингеть}}",
-       "duration-millennia": "$1 {{PLURAL:$1|1=тёжтьие|тёжтьиеть}}",
+       "duration-seconds": "$1 {{PLURAL:$1|секунда|секундат}}",
+       "duration-minutes": "$1 {{PLURAL:$1|минут|минутат}}",
+       "duration-hours": "$1 {{PLURAL:$1|цяс|цяст}}",
+       "duration-days": "$1 {{PLURAL:$1|чи|чить}}",
+       "duration-weeks": "$1 {{PLURAL:$1|тарго|таргот}}",
+       "duration-years": "$1 {{PLURAL:$1|ие|иеть}}",
+       "duration-decades": "$1 {{PLURAL:$1|кеменьие|кеменьиеть}}",
+       "duration-centuries": "$1 {{PLURAL:$1|пинге|пингеть}}",
+       "duration-millennia": "$1 {{PLURAL:$1|тёжтьие|тёжтьиеть}}",
        "expand_templates_preview": "Васнянь неевтезэ",
        "special-characters-group-latin": "Латиница",
        "special-characters-group-symbols": "Тешкстт",
index e625bfc..e20b385 100644 (file)
        "aboutpage": "Project:درباره",
        "copyright": "این صفحه ره بَنوشته‌ئون  $1  زیر شِمه دسـت دَرنه.",
        "copyrightpage": "{{ns:project}}:کـوپـی‌راسـت‌ئون",
-       "currentevents": "خـَوِرون",
+       "currentevents": "تازÙ\87 Ø®Ù\80Ù\8eÙ\88Ù\90رÙ\88Ù\86",
        "currentevents-url": "Project:خورون",
        "disclaimers": "تکذیب‌نومه‌ئون",
        "disclaimerpage": "Project:تکذیب‌نومه",
        "log-fulllog": "بدی‌ین سیاهه کامل",
        "edit-gone-missing": ".شما نتوندی صفحه ره دباره هارشی\nاحتمالا صفحه پاک بیه.",
        "edit-conflict": "دِ نفر با هم درنه نویسنه.\nاتا ته هستی.",
+       "viewpagelogs": "سیاهه‌ئون ِسِراق هدائن این صفحه وسّه",
        "currentrev-asof": "اِسایی نسخه تا $1",
        "revisionasof": "دچی‌یه‌ئونی که $1 جا دکتنه",
+       "revision-info": "$1 ِنسخه که {{GENDER:$6|$2}}$7 دَچی‌یه",
        "previousrevision": "→ پیشی دگاردسته‌ئون",
        "nextrevision": "جدیدته نسخه ←",
        "currentrevisionlink": "اِسایی نسخه ره هارشی‌ین",
        "revdel-restore": "دیاری تغییر هدائن",
        "mergehistory": "صفحه‌ئون تاریخچه ره اتا هاکردن",
        "revertmerge": "سِوا هاکردن",
+       "history-title": "$1: دچی‌یه‌ئون ِتاریخچه",
        "difference-title": "$1: نسخه‌ئون ِفرق",
        "lineno": "بند  $1:",
        "editundo": "واچی‌ین",
        "searchresults-title": "چرخه‌ئوی نتیجه «$1» وسّه",
        "prevn": "پـیـشـیـن {{PLURAL:$1|$1}}",
        "nextn": "تا پَس‌تر {{PLURAL:$1|$1}}",
-       "nextn-title": "$1 بعدی {{PLURAL:$1|نتیجه|نتیجه}}",
-       "shown-title": "$1 ِ{{PLURAL:$1|نتیجه|نتیجه}} سِراق هِدائن هر صفحه دله",
+       "nextn-title": "$1 {{PLURAL:$1|نتیجه}} بعدی",
+       "shown-title": "$1 ِسِراق هِدائن {{PLURAL:$1|نتیجه}} هر صفحه دله",
        "viewprevnext": "هارشائن ($1 {{int:pipe-separator}} $2) ($3)",
-       "searchmenu-new": "'''« [[:$1]] » ِ صفحه ره این ویکی دله بساجین!'''",
+       "searchmenu-new": "<strong>«[[:$1]]» ِصفحه ره این ویکی دله بسازین!</strong> {{PLURAL:$2|0=البته بتونّی ونه چرخه‌تو (=جستجو) نتیجه ره هم هارشین.|البته بتونّی ونه چرخه‌تو (=جستجو) نتایج ره هم هارشین.}}",
        "searchprofile-articles": "بنویشته‌ئون صفحه",
        "searchprofile-images": "مالتی‌مدیا",
        "searchprofile-everything": "همه‌چی",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|تازه بساته صفحه‌ئون]] ره هم هارشین)",
        "rclistfrom": "نِمایش تازه‌دگاردسته‌ئون با شروع از $3 $2",
        "rcshowhideminor": "پچیک دچی‌یه‌ئون $1",
+       "rcshowhideminor-show": "سِراق هِدائِن",
        "rcshowhideminor-hide": "پنهون هاکن",
        "rcshowhidebots": "ربوت‌ئون $1",
        "rcshowhidebots-show": "سِراق هاده",
+       "rcshowhidebots-hide": "پنهون هاکن",
        "rcshowhideliu": "ثبت‌نوم هاکرده کارورون $1",
        "rcshowhideliu-hide": "پنهون هاکن",
        "rcshowhideanons": "ناشناس ِکارورون $1",
+       "rcshowhideanons-show": "سِراق هِدائِن",
        "rcshowhideanons-hide": "پنهون هاکن",
        "rcshowhidepatr": "گشت‌بخارد ِدچی‌یه‌ئون $1",
        "rcshowhidemine": "مه دچی‌یه‌ئون $1",
+       "rcshowhidemine-show": "سِراق هِدائِن",
        "rcshowhidemine-hide": "پنهون هاکن",
        "rclinks": "نـِشون هـِدائن  $1 پایانی دَچی‌‌یه‌ئون، $2 اِسـا روز ره دلـه؛ $3",
        "diff": "فرق",
        "recentchangeslinked-feed": "واری دچی‌یه‌ئون",
        "recentchangeslinked-toolbox": "واری دچی‌یه‌ئون",
        "recentchangeslinked-title": "مرتبط تغییرات $1 جه",
+       "recentchangeslinked-summary": "این بـِن فهرستی تازه دگاردسته‌ئونی که این صفحه جه لینک دارنه (یا ونه رج دله درنه) جه وینّی.\nصفحه‌هایی که [[Special:Watchlist|شمه دمبال‌هاکرده‌ئون لیست]] دله دَواشه '''پررنگ''' سِراق هِدا وانه.",
        "recentchangeslinked-page": "صفحه ایسم:",
        "recentchangeslinked-to": "تغییرات صفحه‌ئونی که این صفحه جه ربط دارنه ره سِراق هِدائن",
        "upload": "باربی‌یشتن فـایـل",
        "randompage": "شانسی صفحه",
        "statistics": "آمار",
        "nbytes": "$1 {{PLURAL:$1|بایت|بایت}}",
+       "nmembers": "$1 {{PLURAL:$1|عضو}}",
        "specialpage-empty": "این صفحه دله هچّی دَنی‌یه",
        "unusedcategories": "کـار نـأزو رج‌ئون",
        "unusedimages": "کـار نأزو فایل‌ئون",
        "dellogpage": "وه ره بییته‌ئون گوزارش",
        "rollback": "دچی‌یه‌ئون ره واچی‌ین",
        "rollbacklink": "واچی‌ین",
+       "rollbacklinkcount": "وادچی‌ین $1 {{PLURAL:$1|دچی‌یه}}",
        "revertpage": "\"چـیـزونی که [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) دأچـیـه ده‌گـه‌ره‌س بـأیـه هـأمونـتـایی که [[User:$1|$1]] ای وألگ ده‌لـه، پـایـانی بـار هـه‌کـارده\"",
        "revertpage-nouser": "\"چیزونی که (ونـه کـاروری نـوم پـاک بَیّه) دچی‌یه دگـاردسته بیّه همونتایی که [[User:$1|$1]] آخرسری دچی‌ین دلـه هاکرده\"",
        "rollback-success": "چیزونی که $1 دچی‌ین دگاردسته بیّه همونتایی که $2 آخرسری دچی‌ین دلـه هاکرده",
+       "protectlogpage": "زلفن بزوئن ِسیاهه",
        "protectedarticle": "«[[$1]]» ره محافظت هاکرده",
        "modifiedarticleprotection": "«[[$1]]» محافظت تنظیمات ره تغییر هدائه",
        "movedarticleprotection": "«[[$2]]» محافظت تنظیمات ره «[[$1]]» رو منتقل هاکرده",
        "whatlinkshere-page": "صفحه:",
        "linkshere": "اینان صفحه‌ئون به '''[[:$1]]''' لینک هدانه:",
        "isredirect": "دکشی‌ین صفحه",
-       "istemplate": "$1 تراگنجانشون",
+       "istemplate": "تراگنجانش‌ئون",
        "isimage": "فایل ِلینک",
        "whatlinkshere-prev": "{{PLURAL:$1|پـیـشـیـن|$1 تـای پـیـشـیـن}}",
        "whatlinkshere-next": "{{PLURAL:$1|پَس|$1 تا پَس‌تر}}",
        "tooltip-pt-logout": "سیستم جه دأیابـوری",
        "tooltip-pt-createaccount": "شِما ره پیشنهاد کامبی که اتا کاروری حیساب بسازین و لاگین بَواشین؛ البته این کار اختیاری هسته.",
        "tooltip-ca-talk": "این صفحه خَوری گپ بَزوئن",
-       "tooltip-ca-edit": "شِما بتوندی این صفحه ره دَچینی.",
+       "tooltip-ca-edit": "شِما بتوندی این صفحه ره ویکی‌تکست جه دَچینی.",
        "tooltip-ca-addsection": "أتـا نـه گـب را دأکـه‌تـه‌ن",
        "tooltip-ca-viewsource": "این صفحه ره نتوندی دَچینی.\nشِما بِتوندی ونه منبع ره هارشی.",
        "tooltip-ca-history": "کهنه دگاردسته‌ئونی که این صفحه دله دکته",
        "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": "أتـا جـا کـه...",
        "tooltip-preview": "شـه ده‌گـه‌ره‌سـه‌ئون ره پـیـشـاپـیـش بـأویـنـه‌ن،\n خـا‌هـه‌ش بـونـه، شـه کـارئون ره جـا دأکـه‌تـه‌ن پـیـش، ای ره کـار بـأزه‌نـی.",
        "tooltip-diff": "تغییراتی که ته هِدایی ره سِراق هِدائن",
        "tooltip-rollback": "«دِگاردنی‌ین» اون دچی‌یه(ئون) که آخرین نفر انجام هِدائه ره اتا کلیک جه وَرگِردنانده.",
+       "tooltip-undo": "«واچی‌ین» این دچی‌یه ره خنثی کانده و دچی‌ین ِجعبه ره پیش-پیش سِراق هِدائِن ِحالت دله وا کانده تا شه دچی‌یه‌ئون ِدلیل ره اضافه هاکنین.",
        "tooltip-summary": "خلاصه بنویسین",
        "siteusers": "$1، {{PLURAL:$2|کارور|کارورون}} {{SITENAME}}",
        "simpleantispam-label": "!آنتی‌اسپم ِچک‌هاکردن.\nاین قسمت ره پـِر <strong>نکان!</strong>",
        "logentry-move-move_redir-noredirect": "$1 ، $3 ره بدون اینکه مسیر تغییری درس بوه به $4 که مسیر تغییر بیه منتقل هاکرده",
        "logentry-newusers-newusers": "$1  بساتن اتا حساب کاروری",
        "logentry-newusers-create": "$1 کاروری حساب {{GENDER:$2|بساته بیّه}}",
+       "logentry-upload-upload": "$1 $3 ره {{GENDER:$2|بار بی‌یشته}}",
        "rightsnone": "(هچّی)",
        "feedback-adding": "بی‌یشتن پیشنهادات و انتقادات...",
        "feedback-cancel": "ول هاکردن",
index e5efedb..63d9878 100644 (file)
        "group-sysop": "koán-lí jîn-oân",
        "group-bureaucrat": "Koaⁿ-liâu",
        "group-bot-member": "{{GENDER:$1|Ke-khì-lâng}}",
-       "group-sysop-member": "{{GENDER:$1|goán-lí jîn-oân}}",
+       "group-sysop-member": "{{GENDER:$1|koán-lí jîn-oân}}",
        "group-bureaucrat-member": "{{GENDER:$1|Koaⁿ-liâu}}",
        "grouppage-sysop": "{{ns:project}}:Hêng-chèng jîn-oân",
        "grouppage-bureaucrat": "{{ns:project}}:Koaⁿ-liâu",
index 90d1f90..96ee1c1 100644 (file)
@@ -18,6 +18,7 @@
        "tog-hideminor": "Annascunne 'e cagne piccirille  'int'a ll'úrdeme cagne",
        "tog-hidepatrolled": "Annascunne 'e cagne 'verificate' 'int'a ll'úrdeme cagne",
        "tog-newpageshidepatrolled": "Annascunne 'e paggene cuntrullate 'a ll'elenco 'e ppaggene",
+       "tog-hidecategorization": "Annascunne 'a categorizzaziona d' 'e paggene",
        "tog-extendwatchlist": "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
        "tog-usenewrc": "Urdeme càgnamiente avanzate (JavaScript)",
        "tog-numberheadings": "Annúmmera automatecamente 'e títule",
@@ -47,6 +48,7 @@
        "tog-watchlisthideliu": "Annascunne 'e cagnamiénte 'e l'utente riggistrate 'a l'elenco 'e cuntrollo",
        "tog-watchlisthideanons": "Annascunne 'e cagnamiente fatte d'anonime 'a l'elenco 'e cuntrollo",
        "tog-watchlisthidepatrolled": "Annascunne 'e modifiche cuntrullate 'a l'elenco 'e cuntrollo",
+       "tog-watchlisthidecategorization": "Annascunne 'a categorizzazione d' 'e paggene",
        "tog-ccmeonemails": "Famme na masciata pùre c' 'a copia 'e le mail mannate a l'ati utente",
        "tog-diffonly": "Nun me fà vedé cuntenute aropp'o cunfronto nfra verziune",
        "tog-showhiddencats": "Fa' vedé 'e categurie annascunnute",
        "nosuchaction": "Operazione nun ricanusciuta",
        "nosuchactiontext": "L'azione specificata dint'a l'URL nun è bbona.\nPuò darse ca l'URL fosse stata digitata 'n modo sbagliàto o che fosse stato seguito nu link sbagliàto.\nChesto putesse innecà pùre nu bug dint'a {{SITENAME}}.",
        "nosuchspecialpage": "Chista paggena speciale nun ce sta",
-       "nospecialpagetext": "<strong>'A paggena speciale richiesta nun è ricanusciuta.</strong>\n\nL'alenco d' 'e paggene valide spiciale 'o truove int'a [[Special:SpecialPages|l'Elenco d' 'e paggine spiciale]].",
+       "nospecialpagetext": "<strong>'A paggena speciale richiesta nun è ricanusciuta.</strong>\n\nL'elenco d' 'e paggene valide spiciale 'o truove int'a [[Special:SpecialPages|l'Elenco d' 'e paggine spiciale]].",
        "error": "Sbaglio",
        "databaseerror": "Sbaglio dint'a database",
        "databaseerror-text": "C'è stato nu sbaglio dint'a na richiesta â database.\nPuò darse ca ce sta nu bug int' 'o software",
        "actionthrottled": "Azione ritardata",
        "actionthrottledtext": "Comme misura anti-spam, site lemmetato 'a ffà st'azione troppe vote dint'a nu curto spazio 'e tiempo, e mò stu lèmmeto è stato superato.\nPe' piacere pruvate n'ata vota dint'a cocche minuto.",
        "protectedpagetext": "Sta paggena s'è prutetta pe' ne bloccà 'a mudifeca o n'ata azione.",
-       "viewsourcetext": "Putisse vedé e copià 'o codece surgiva 'e sta paggena:",
-       "viewyourtext": "Putisse vedé e copià 'o codice surgiva d' 'e <strong>cagnamiénte tuoje</strong> a sta paggena:",
+       "viewsourcetext": "Putite vedé e copià 'o codece surgiva 'e sta paggena.",
+       "viewyourtext": "Putite vedé e copià 'o codice surgiva d' 'e <strong>cagnamiénte vuoste</strong> a sta paggena.",
        "protectedinterface": "Sta paggena nce appruviggióna 'e n'interfaccia testo p' 'o software dint'a sta wiki, e s'è prutetta pe' nce scanzà 'e cocch'abbuso.\nSi se buò azzeccà o cagnà traduzzione ncopp'a tutte 'e wiki, pe piacere ausate [//translatewiki.net/ translatewiki.net], 'o pruggetto Mediawiki p'a localizzaziona dint'a l'ate llengue",
        "editinginterface": "<strong>Attenziò:</strong>  'O testo 'e sta paggena ffà parte 'e ll'interfaccia utente d' 'o sito.\nTutt' 'e cagnamiénte fatte a sta paggena cumpareno dint' 'e mmasciate 'e ll'interfaccia veduta 'a tutte ll'utente dint'a sta wiki.",
        "translateinterface": "Si se buò azzeccà o cagnà traduzzione ncopp'a tutte 'e wiki, pe piacere ausate [//translatewiki.net/ translatewiki.net], 'o pruggetto Mediawiki p'a localizzaziona dint'a l'ate llengue",
        "createacct-yourpassword-ph": "'Nserisce 'na password",
        "yourpasswordagain": "Ripete 'a password:",
        "createacct-yourpasswordagain": "Cunferma password",
-       "createacct-yourpasswordagain-ph": "'Nserisce 'e novo 'a password",
+       "createacct-yourpasswordagain-ph": "'Nserisce 'e nuovo 'a password",
        "remembermypassword": "Allicuordate d\"a password (for a maximum of $1 {{PLURAL:$1|day|days}})",
        "userlogin-remembermypassword": "Mantienime cullegato",
        "userlogin-signwithsecure": "Usa na conessione sicura",
        "password-change-forbidden": "Nun se ponno cagnà 'e password ncopp'a sta wiki.",
        "externaldberror": "Ce sta n'errore ch' 'e server d'autenticazione esterno, o pure nun v'è permesso accedere all'aghiurnamento d' 'o cunto sterno vuosto.",
        "login": "Tràse",
-       "nav-login-createaccount": "Tràse o cria n'acciesso novo",
-       "userlogin": "Tràse o cria n'acciesso novo",
+       "nav-login-createaccount": "Trasite o criate n'acciesso nuovo",
+       "userlogin": "Trasite o criate n'acciesso nuovo",
        "userloginnocreate": "Tràse",
        "logout": "Jèsce",
        "userlogout": "Jèsce",
        "userlogin-joinproject": "Fà 'o riggistro ncopp'a {{SITENAME}}",
        "nologin": "Nun tenite ancora n'acciesso? '''$1'''.",
        "nologinlink": "Crialo mmo",
-       "createaccount": "Cria nu cunto novo",
+       "createaccount": "Cria nu cunto nuovo",
        "gotaccount": "Tiene già nu cunto? '''$1'''.",
        "gotaccountlink": "Tràse",
        "userlogin-resetlink": "V'avite scurdato 'e dettaglie d'acciesso vuoste?",
        "userlogin-resetpassword-link": "Te sì scurdat' 'a password?",
        "userlogin-helplink2": "Aiuto cu l'accieso",
-       "userlogin-loggedin": "Sì già connesso comme {{GENDER:$1|$1}}.\nUsa 'o modulo ccà abbascio pe trasì com'a n'atu utente.",
+       "userlogin-loggedin": "Sì già {{GENDER:$1|connesso comme $1|connessa comme $1|connesso/a comme $1}}.\nUsa 'o modulo ccà abbascio pe trasì com'a n'atu utente.",
        "userlogin-createanother": "Cria n'at'account",
        "createacct-emailrequired": "Indirizzo email",
        "createacct-emailoptional": "Indirizzo 'e posta elettronica (ozzionale)",
        "createacct-captcha": "Cuntrollo 'e sicurezza",
        "createacct-imgcaptcha-ph": "Scrivite 'o testo ca vedite ncoppa",
        "createacct-submit": "Cria 'a toja utenza",
-       "createacct-another-submit": "Cria 'n atro account",
+       "createacct-another-submit": "Cria n'atu cunto",
        "createacct-benefit-heading": "{{SITENAME}} è fatta 'e perzone comme te.",
        "createacct-benefit-body1": "{{PLURAL:$1|càgnamiento|càgnamiente}}",
        "createacct-benefit-body2": "{{PLURAL:$1|paggena|paggene}}",
        "oldpassword": "Password viecchia:",
        "newpassword": "Password nova:",
        "retypenew": "Ripete 'a password:",
-       "resetpass_submit": "Stabbelisce 'a password e tràse",
+       "resetpass_submit": "Stabbelite 'a password e trasite",
        "changepassword-success": "'A password è stata cagnata currettamente!",
        "changepassword-throttled": "Songo state fatte troppe tentative 'a trasì.\nAspetta nu $1 apprimma 'e pruvà n'ata vota.",
        "resetpass_forbidden": "'E password nun se ponno cagnà",
        "loginreqpagetext": "Pe' veré ate ppaggene abbesognate $1.",
        "accmailtitle": "'O password è stato mannato.",
        "accmailtext": "'Na password gennerata casualmente ppe [[User talk:$1|$1]] è stata mannata a $2. Chista password può essere càgnata dint'â paggena ppe ''[[Special:ChangePassword|càgna 'a password]]'' subbeto doppo l'acciesso.",
-       "newarticle": "(Novo)",
+       "newarticle": "(Nuovo)",
        "newarticletext": "Site ghiuto/a addò nu link 'e na paggena ca nun esiste ancora.\nP' 'a crià sta paggena, accummenciate a scrivere dint'a cascia cà abbascio (vedite 'a [$1 paggena d'aiuto] pe liegge cchiù nfurmazziune).\nSi site venuto/a ccà pe' sbaglio, vedite 'e sprémmere 'o buttòne '''Arreto''' d' 'o navigatóre.",
-       "anontalkpagetext": "----\n''Chest'è 'a paggena 'e discussione 'e n'utente anonimo, ca nun ave criàt' 'ancora n'utenza o ca nun sta ausanno. Pe' l'identificà avite 'e truvà 'o nummero d' 'o ndirizzo IP d' 'o sujo. L'indirizze IP se ponno spartì però a cchiù 'e n'utente. Si sì n'utente anonimo e pienze ca 'e commente ccà dint'a sta paggena nun parlano 'e tte, allora [[Special:UserLogin/signup|crìa n'utenza nnova]] o [[Special:UserLogin|tràse cu chella ca tiene già]] pe' nun sta' mmescato mmiez'a l'ati utente anonime n futuro.''",
+       "anontalkpagetext": "----\n''Chest'è 'a paggena 'e discussione 'e n'utente anonimo, ca nun ave criàt' 'ancora n'utenza o ca nun sta ausanno. Pe' l'identificà avite 'e truvà 'o nummero d' 'o ndirizzo IP d' 'o sujo. L'indirizze IP se ponno spartì però sempe ausanno cunte differente. Si site n'utente anonimo e penzate ca 'e cummente ccà dint'a sta paggena nun parlano 'e vuje, allora [[Special:UserLogin/signup|criate n'utenza nnova]] o [[Special:UserLogin|trasite cu chella ca tenite già]] pe' nun sta' mmescato mmiez'a l'ati utente anonime n futuro.''",
        "noarticletext": "Mo' mo' 'a paggena richiesta è abbacante. Se pò [[Special:Search/{{PAGENAME}}|ascià stu titolo]] dint'a l'ati paggene d' 'o sito, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ascià dint'e riggistre azzeccate] o pure [{{fullurl:{{FULLPAGENAME}}|action=edit}} cagnà 'a paggena mo']</span>.",
        "noarticletext-nopermission": "Mo' mo' 'a paggena richiesta è abbacante. Se pò [[Special:Search/{{PAGENAME}}|ascià stu titolo]] dint'a l'ati paggene d' 'o sito, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ascià dint'e riggistre azzeccate]</span>, però nun tenite 'o permesso 'a crià sta paggena.",
        "missing-revision": "'A verziona #$1 d' 'a paggena \"{{FULLPAGENAME}}\" nun esiste.\n\nChest'è causato quanno se và dint'a nu link a na paggena ch'è stata scancellata.\n'E dettaglie se ponno truvà dint'a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 'o riggistro 'e scancellamiente].",
        "updated": "(Agghiurnato)",
        "note": "'''Nota:'''",
        "previewnote": "'''Chesta è sola n'anteprimma; 'e cagnamiénte â paggena nun songo ancora sarvate!'''",
-       "continue-editing": "Tràse int'a l'area 'e modifica",
+       "continue-editing": "Trasite int'a l'area 'e modifica",
        "previewconflict": "L'anteprimma currisponne a 'o testo presente dint'a cascia 'e modifica ccà ncoppa e rappresentasse 'a paggena comme cumpare si sciglite 'e Sarvà ind'a stu mumento.",
        "session_fail_preview": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.\nSi nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
        "session_fail_preview_html": "'''Nun è possibbile prucessà 'o cagnamiento pecché se so' sperdut' 'e date d' 'a sessione.\nProva n'ata vota.'''\n''Siccome dint' 'o {{SITENAME}} è abilitato l'uso 'e l'HTML cruro, 'o buttone d'anteprimma nun è abbiàto comme misura 'e sicurezza annanza cocch'attacco JavaScript''\n'''Si chest'era nu tentativo legittimo 'e cagnamiento, prova n'ata vota. Si nun funziona ancora, può pruvà 'a te [[Special:UserLogout|n'ascì]] e a trasì n'ata vota.'''",
        "readonlywarning": "<strong>Attenziò</strong>: 'o database è bloccato pe se ffà 'a manutenzione. P' 'o mumento nun se ponno sarvà 'e cagnamiente fatte.\nPe' nun 'e sperdere, copia sti cuntenute dint'a nu file 'e testo e sarvatillo pe' tramente c'aspiette 'o sblocco d' 'o database.\n\nL'ammenistratore ca mpustaje 'o blocco ave scritto sta spiegazione: $1.",
        "protectedpagewarning": "'''Attenziò: sta paggena è stata bloccata 'n modo tale ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà.'''\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe' n'avé riferimento:",
        "semiprotectedpagewarning": "'''Nota:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente riggistrate 'a ponno cagnà.\nL'urdemo elemento d' 'o riggistro è scritto ccà abbascio pe n'avé nfurmazione:",
-       "cascadeprotectedwarning": "'''Attenziò:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà. Chesto succiere pecché 'a paggena è dint'a {{PLURAL:$1|la paggena innecata ccà abbascio, ch'è stata prutetta|'e paggene innecate ccà abbascio, che so' state prutette}} sciglienno 'a prutezione \"ricurziva\":",
+       "cascadeprotectedwarning": "'''Attenziò:''' Sta paggena è stata bloccata 'n modo ca sulamente l'utente ch' 'e privilegge d'ammenistratore 'a ponno cagnà. Chesto succiere pecché 'a paggena è appennuta dint'a {{PLURAL:$1|la paggena innecata ccà abbascio, ch'è stata prutetta|'e paggene innecate ccà abbascio, che so' state prutette}} sciglienno 'a prutezione \"ricurziva\":",
        "titleprotectedwarning": "'''Attenziò: sta paggena è stata bloccata 'n modo ca fossero necessarie [[Special:ListGroupRights|deritte specifici]] p' 'a crià.'''\nL'urdemo elemento d' 'o riggistro è riportato ccà abbascio pe nfurmazione:",
        "templatesused": "{{PLURAL:$1|Template|Templates}} ausate 'a chesta paggena:",
        "templatesusedpreview": "{{PLURAL:$1|Template|Templates}} ausate dint'a st'anteprimma:",
        "permissionserrors": "Nun haje 'e premmesse abbastante.",
        "permissionserrorstext": "Nun haje premmesse pe lle ffà st'azziune, {{PLURAL:$1|'o mutivo è chesto|'e mutive so' chiste}}:",
        "permissionserrorstext-withaction": "Nun haje premmesse abbastante pe' $2, {{PLURAL:$1|'o mutivo è chesto|'e mutive so' chiste}}:",
-       "recreate-moveddeleted-warn": "'''Attenziò: staje a crià na paggena scancellata già.'''\n\nVire si è bbuono 'e cuntinuà a cagnà sta paggena. L'alenco ch' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' ffà comodo:",
-       "moveddeleted-notice": "Sta paggena è stata scancellata.\nL'alenco d' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' n'avé nfurmazione.",
+       "recreate-moveddeleted-warn": "'''Attenziò: staje a crià na paggena scancellata già.'''\n\nVire si è bbuono 'e cuntinuà a cagnà sta paggena. L'elenco ch' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' ffà comodo:",
+       "moveddeleted-notice": "Sta paggena è stata scancellata.\nL'elenco d' 'e relative scancellamiente e spustamente s'è scritto ccà abbascio pe' n'avé nfurmazione.",
        "log-fulllog": "Vide log sano",
        "edit-hook-aborted": "'O cagnamiento è stato annullato 'a 'o «hook».\nNun dette spiegazione nisciuna.",
        "edit-gone-missing": "Nun se può agghiurnà 'a paggena.\nPare ch' 'è stata scancellata.",
        "search-category": "(categurìa $1)",
        "search-file-match": "(currispunnenza dint' 'e cuntenute d' 'o file)",
        "search-suggest": "Prova chisto: $1",
+       "search-rewritten": "Mmustann' 'e risultate pe' $1. Circa mmece pe' $2.",
        "search-interwiki-caption": "Prugiette frate",
        "search-interwiki-default": "Risultate 'a $1:",
        "search-interwiki-more": "(cchiù)",
        "prefs-watchlist-days-max": "Massimo $1 {{PLURAL:$1|juorno|juorne}}",
        "prefs-watchlist-edits": "Numero massimo 'e cagnamiente 'a mmustà ch' 'e funziune avanzate:",
        "prefs-watchlist-edits-max": "Nummero massimo: 1000",
-       "prefs-watchlist-token": "Token 'e l'alenco 'e cuntrollo:",
+       "prefs-watchlist-token": "Token 'e l'elenco 'e cuntrollo:",
        "prefs-misc": "Varje",
        "prefs-resetpass": "Cagna 'a password",
        "prefs-changeemail": "Cagna l'indirizzo e-mail",
        "recentchangesdays-max": "Massimo $1 {{PLURAL:$1|juorno|juorne}}",
        "recentchangescount": "Nummero predefinito 'e cagnamiente 'a mmustà:",
        "prefs-help-recentchangescount": "Chesto ntenne ll'urdeme cagnamiente, 'e cronologgie 'e paggena, e riggistre.",
-       "prefs-help-watchlist-token2": "Chest'è 'a chiave segreta pe se ffà 'o feed web 'e l'alenco 'e cuntrolo d' 'o vuosto.\nSi coccheruno 'a cunoscesse, allora putesse vedé l'alenco 'e cuntrollo, picciò nun 'a spartite. [[Special:ResetTokens|Cliccate ccà se tenite necessità d' 'a rimpizzà]].",
+       "prefs-help-watchlist-token2": "Chest'è 'a chiave segreta pe se ffà 'o feed web 'e l'elenco 'e cuntrolo d' 'o vuosto.\nSi coccheruno 'a cunoscesse, allora putesse vedé l'elenco 'e cuntrollo, picciò nun 'a spartite. [[Special:ResetTokens|Cliccate ccà se tenite necessità d' 'a rimpizzà]].",
        "savedprefs": "'E preferenze songo state sarvate.",
        "timezonelegend": "Fuso orario:",
        "localtime": "Ora lucale:",
        "prefs-diffs": "Differenze",
        "prefs-help-prefershttps": "Sta preferenza averrà affetto 'a 'o prossimo acciesso vuosto.",
        "prefswarning-warning": "Avite fatto cagnamiente a 'e preferenze d' 'e vuoste ca nun so' stat'ancora sarvate.\nSi ascite 'a sta paggena senza clickà \"$1\" 'e preferenze d' 'e vuoste nun sarranno agghiurnate.",
-       "prefs-tabs-navigation-hint": "Suggerimento: se ponno ausà 'e buttòne 'e freccia a manca e a dritta pe' ve muovere nfra 'e schede dint'a l'alenco d' 'e schede.",
+       "prefs-tabs-navigation-hint": "Suggerimento: se ponno ausà 'e buttòne 'e freccia a manca e a dritta pe' ve muovere nfra 'e schede dint'a l'elenco d' 'e schede.",
        "email-address-validity-valid": "L'indirizzo e-mail pare valido",
        "email-address-validity-invalid": "Nzerta n'indirizzo e-mail valido",
        "userrights": "Gestione d' 'e permesse 'e l'utente",
        "right-edituserjs": "Cagna 'e file JS e l'at'utente",
        "right-editmyusercss": "Cagna 'e proprie file CSS",
        "right-editmyuserjs": "Cagna 'e proprie file JavaScript",
-       "right-viewmywatchlist": "Vide l'alenco 'e cuntrollo proprio",
-       "right-editmywatchlist": "Cagna l'alenco 'e cuntrollo proprio. Vedete ca cocch'azione putesse jògnere ancora paggene senza stu deritto.",
+       "right-viewmywatchlist": "Vide l'elenco 'e cuntrollo proprio",
+       "right-editmywatchlist": "Cagna l'elenco 'e cuntrollo proprio. Vedete ca cocch'azione putesse jògnere ancora paggene senza stu deritto.",
        "right-viewmyprivateinfo": "Vide 'e proprie date private (e.g. e-mail, nomme overo)",
        "right-editmyprivateinfo": "Cagna 'e date perzunale proprie (p'esempio: e-mail, nomme overo)",
        "right-editmyoptions": "Cagna 'e preferenze proprie",
        "action-createaccount": "crìa stu cunto utente",
        "action-history": "vide 'a cronologgia 'e sta paggena",
        "action-minoredit": "nzegnà stu cagnamiento comme minore",
-       "action-move": "Spusta chista paggena",
+       "action-move": "mòve sta paggena",
        "action-move-subpages": "muovere sta paggena, e le sottopaggene relative",
        "action-move-rootuserpages": "muove 'e paggene princepale d'utente",
        "action-move-categorypages": "muove 'e categurìe",
        "action-importupload": "carreca paggene 'a n'upload 'e file",
        "action-patrol": "nzegna 'e cagnamiente 'e l'ati utente comme cuntrullate",
        "action-autopatrol": "nzignà 'e proprie cagnamiente comme cuntrullate",
-       "action-unwatchedpages": "vide l'alenco 'e pagene nun cuntrullate",
+       "action-unwatchedpages": "vide l'elenco 'e pagene nun cuntrullate",
        "action-mergehistory": "aunisce 'a cronologgia 'e sta paggena",
        "action-userrights": "cagna 'e deritte 'e ll'utente",
        "action-userrights-interwiki": "cagna 'e deritte 'e ll'utente int'a l'ati wiki",
        "action-siteadmin": "blocca o sblocca 'o database",
        "action-sendemail": "manna e-mail",
-       "action-editmywatchlist": "cagna l'alenco 'e cuntrolo 'o tuojo",
-       "action-viewmywatchlist": "vide l'alenco 'e cuntrollo proprio",
+       "action-editmywatchlist": "cagna l'elenco 'e cuntrolo 'o tuojo",
+       "action-viewmywatchlist": "vide l'elenco 'e cuntrollo proprio",
        "action-viewmyprivateinfo": "vide 'e date perzunale",
        "action-editmyprivateinfo": "cagnà 'e proprie date perzunale",
        "action-editcontentmodel": "càgna 'o mudelo 'e cuntenute 'e na paggena",
        "rcshowhidemine": "$1 'e ffatiche mieie",
        "rcshowhidemine-show": "Faje vedé",
        "rcshowhidemine-hide": "Annascunne",
+       "rcshowhidecategorization": "$1 categorizzaziona d' 'a paggena",
+       "rcshowhidecategorization-show": "Faje vedé",
+       "rcshowhidecategorization-hide": "Annascunne",
        "rclinks": "Faje vedé ll'urdeme $1 cagnamiente dint' ll'urdeme $2 juorne<br />$3",
        "diff": "diff",
        "hist": "cron",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[osservata 'a {{PLURAL:$1|n'utente|$1 utente}}]",
-       "rc_categories": "Lemmeta a 'e categurìe (spartute 'a \"|\")",
-       "rc_categories_any": "Qualònca",
+       "rc_categories": "Lemmeta a 'e categurìe (spartute 'a \"|\"):",
+       "rc_categories_any": "Qualunque d' 'e scigliute",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|byte}} aropp'ô cagnamiento",
        "newsectionsummary": "/* $1 */ sezziona nnova",
        "rc-enhanced-expand": "Fa vede dettaglie",
        "recentchangeslinked-summary": "Chest'è n'alenco d' 'e cagnamiente fatte mò a 'e paggene cullegate 'a chilla specificata (o pe' cuntenute dint'a na categurìa specificata). 'E paggene cuntenute dint' 'o proprio elenco 'e l'[[Special:Watchlist|Paggene cuntrullate]] songo mmustate 'n '''grassetto'''.",
        "recentchangeslinked-page": "Nomme dda paggena",
        "recentchangeslinked-to": "Mmusta sulamente 'e cagnamiente a 'e paggene cullegate a chilla specificata",
-       "upload": "Careca file",
+       "recentchanges-page-added-to-category": "[[:$1]] azzeccato â categurìa",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] e {{PLURAL:$2|na paggena|$2 paggene}} azzeccate â categurìa",
+       "recentchanges-page-removed-from-category": "[[:$1]] luvato d' 'a categurìa",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] e {{PLURAL:$2|na paggena|$2 paggena}} luvate d' 'a categurìa",
+       "upload": "Carreca file",
        "uploadbtn": "Carreca file",
        "reuploaddesc": "Torna a 'o modulo pe ffà 'a carreca",
        "upload-tryagain": "Manna 'a descrizione d' 'o file cagnato",
        "upload-too-many-redirects": "L'URL teneva troppe redirect",
        "upload-http-error": "N'errore HTTP è succiesso: $1",
        "upload-copy-upload-invalid-domain": "Nun è permessa 'a carreca 'e copie 'a chistu dumminio.",
+       "upload-dialog-title": "Carreca file",
+       "upload-dialog-error": "N'errore cumparette",
+       "upload-dialog-warning": "N'avviso cumparette",
+       "upload-dialog-button-cancel": "Canciella",
+       "upload-dialog-button-done": "Fatto",
+       "upload-dialog-button-save": "Sarva",
+       "upload-dialog-button-upload": "Carreca",
+       "upload-dialog-label-select-file": "Sceglie file",
+       "upload-dialog-label-infoform-title": "Dettaglie",
+       "upload-dialog-label-infoform-name": "Nomme",
+       "upload-dialog-label-infoform-description": "Descrizzione",
+       "upload-dialog-label-usage-title": "Aúso",
+       "upload-dialog-label-usage-filename": "Nomme d' 'o file",
        "backend-fail-stream": "Nun se può mannà 'o file \"$1\".",
        "backend-fail-backup": "Nun se può ffà 'o backup d' 'o file \"$1\".",
        "backend-fail-notexists": "'O file $1 nun esiste.",
        "uploadstash-nofiles": "Nun tenite file annascunnute.",
        "uploadstash-badtoken": "L'esecuzione 'e sta azione nun ha avuto successo, forse pecché 'e credenziale 'e cagnamiento so' mmaturate. Prova n'ata vota.",
        "uploadstash-errclear": "'A pulezzia d' 'e file nun ha avuto successo.",
-       "uploadstash-refresh": "Agghiuorna l'alenco d' 'e file",
+       "uploadstash-refresh": "Agghiuorna l'elenco d' 'e file",
        "invalid-chunk-offset": "Distanza d' 'a parte nun valida",
        "img-auth-accessdenied": "Acciesso negato",
        "img-auth-nopathinfo": "PATH_INFO mancante.\n'O server nun è mpustato pe' passà sta nfurmazione.\nPuò darse ca, essenno basato ncopp'a CGI, nun putesse suppurtà img_auth.\nVide https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Image_Authorization",
        "filehist-comment": "Commento",
        "imagelinks": "Jonte ê ffiure",
        "linkstoimage": "{{PLURAL:$1|Sta paggena cullega|$1 'e sti paggene cullegano}} a stu file:",
-       "linkstoimage-more": "Cchiù 'e $1 {{PLURAL:$1|paggene cullegano|paggene cullegano}} a stu file.<br />\nL'alenco ccà abbascio fà vedé {{PLURAL:$1|'a primma paggena ca cullega|'e primme $1 paggene ca cullegano}} sulamente a stu file.<br />\nNa [[Special:WhatLinksHere/$2|lista completa]] è a disposizione.",
+       "linkstoimage-more": "Cchiù 'e $1 {{PLURAL:$1|paggena cullega|paggene cullegano}} a stu file.<br />\nL'elenco ccà abbascio fà vedé {{PLURAL:$1|'a primma paggena ca cullega|'e primme $1 paggene ca cullegano}} sulamente a stu file.<br />\nNa [[Special:WhatLinksHere/$2|lista completa]] è a disposizione.",
        "nolinkstoimage": "Nisciuna paggena cullega a stu file.",
        "morelinkstoimage": "Vide [[Special:WhatLinksHere/$1|cchiù cullegamiente]] a stu file.",
        "linkstoimage-redirect": "$1 (redirezionamiente d' 'o file) $2",
        "mimesearch-summary": "Sta paggena permette filtrà 'e file a sicondo 'o tipo 'e MIME.\nNzertate 'a stringa 'e ricerca comm'a nu tipo/sottotipo o tipo/*, p'esempio: <code>image/jpeg</code>.",
        "mimetype": "Tipo 'e MIME:",
        "download": "scarreca",
-       "unwatchedpages": "Paggene fore l'alenco 'e cuntrollo",
+       "unwatchedpages": "Paggene fore l'elenco 'e cuntrollo",
        "listredirects": "Liste 'e ridirezionamiente",
        "listduplicatedfiles": "Lista d' 'e file duplicate",
        "listduplicatedfiles-summary": "Chist'è n'alenco 'e file, addò 'a verziona cchiù recente 'e nu file è nu duplicato d' 'a verziona cchiù ricente 'e n'atu file. Songhe cunziderate sulamente 'e file lucale.",
        "newpages": "Paggene cchiù frische",
        "newpages-username": "Nomme utente:",
        "ancientpages": "Paggene cchiù viecchie",
-       "move": "Spusta",
-       "movethispage": "Spusta chesta paggena",
+       "move": "Mòve",
+       "movethispage": "Mòve sta paggena",
        "unusedimagestext": "'E file ccà abbascio esisteno, ma nun songo appennute dint' 'a nisciuna paggena.\nPe' piacere vedite ca n'ati site ncopp' 'a ll'Internet putessero cullegà cu nu file direttamente cu l'URL, picciò vedite ca putessero stà dint'a sta lista ancora tenenno nu cullegamiento diretto.",
        "unusedcategoriestext": "'E categurìe ccà abbascio esisteno, ancora ch' 'e categurìe o l'ati paggene nun l'aùsano.",
        "notargettitle": "Nisciuna destinazione",
        "watchlistanontext": "Pe' piacere, trasite pe' vedé o cagnà l'elenco 'e paggene cuntrullate.",
        "watchnologin": "Acciesso nun affettuato",
        "addwatch": "Miette dint' 'a l'elenco 'e paggene cuntrullate",
-       "addedwatchtext": "'A paggena \"[[:$1]]\" è stata azzeccata dint'a l'elenco 'e [[Special:Watchlist|paggene cuntrullate]].\n'E cagnamiente future a sta paggena e a tutt' 'e paggene 'e chiacchiera azzeccate sarranno elencate llà dinto.",
+       "addedwatchtext": "'A paggena \"[[:$1]]\" e 'a paggena 'e chiacchiera è stata azzeccata dint'a l'elenco 'e [[Special:Watchlist|paggene cuntrullate]].",
        "addedwatchtext-short": "Chista paggena \"$1\" è stata azzeccata a l'elenco 'e paggene cuntrullate.",
        "removewatch": "Leva 'a l'elenco 'e paggene cuntrullate",
-       "removedwatchtext": "'A paggena \"[[:$1]]\" è stata scancellata 'a l'elenco [[Special:Watchlist|'e paggene cuntrullate]] tuojo.",
+       "removedwatchtext": "\"[[:$1]]\" 'e 'a paggena 'e chiacchiera soja so' state scancellata 'a l'elenco [[Special:Watchlist|'e paggene cuntrullate]] vuosto.",
        "removedwatchtext-short": "Chista paggena \"$1\" è stata luvata a l'elenco 'e paggene cuntrullate.",
        "watch": "Secuta",
        "watchthispage": "Tiene d'uocchio chesta paggena",
        "changecontentmodel-success-title": "'O mudello 'e cuntenuto fuje cagnato",
        "changecontentmodel-success-text": "'O tipo 'e cuntenut 'e [[:$1]] è stato cagnato.",
        "changecontentmodel-cannot-convert": "'E cuntenute dint'a [[:$1]] nun se ponno scagnà a nu tipo 'e $2.",
-       "changecontentmodel-title-cantexist": "Nun è pussibbele 'e n'avé na paggena dint'a $1.",
        "changecontentmodel-nodirectediting": "'O mudello 'e cuntenute $1 nun suppurtasse 'o cagnamiento diretto",
        "log-name-contentmodel": "Riggistro 'e cagnamiente d' 'o mudello 'e cuntenute",
        "log-description-contentmodel": "Evvente azzeccate c' 'o mudello 'e cuntenute 'e na paggena",
-       "logentry-contentmodel-change": "$1 cagnaje 'o mudello 'e cuntenute 'e na paggena $3 'a \"$4\" a \"$5\"",
+       "logentry-contentmodel-change": "$1 {{GENDER:$2|cagnaje}} 'o mudello 'e cuntenute 'e na paggena $3 'a \"$4\" a \"$5\"",
        "logentry-contentmodel-change-revertlink": "arrepiglia",
        "logentry-contentmodel-change-revert": "arrepiglia",
        "protectlogpage": "Riggistro 'e prutezzione",
        "maximum-size": "Diminsiune massime:",
        "pagesize": "(byte)",
        "restriction-edit": "Càgna",
-       "restriction-move": "Spusta",
+       "restriction-move": "Mòve",
        "restriction-create": "Cria",
        "restriction-upload": "Carreca",
        "restriction-level-sysop": "prutetta",
        "undeletepagetext": "{{PLURAL:$1|'A paggena ccà abbascio è stata scancellata però|$1 paggene ccà abbascio so' state scancellate però}} stann'ancora dint' 'a l'archivio e se ponno arrepiglià.<br />\nL'archivie s'hanna pulezzà periodicamente.",
        "undelete-fieldset-title": "Arrepiglia verziune",
        "undeleteextrahelp": "P'arrepiglià 'a cronologgia completa d' 'a paggena, lassate 'e cascie abbacante e facite click ncopp'a '''''{{int:undeletebtn}}'''''.\nPe' putè arrepiglià selettivamente, miette nu zegno ncopp' 'e casciulele currispunnente a 'e verziune ca vulite arripiglià e po' facite click ncopp'a '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|verzione|verziune}} archiviate",
+       "undeleterevisions": "$1 {{PLURAL:$1|verzione|verziune}} scancellate",
        "undeletehistory": "Si arrepiglie 'a paggena, tutte 'e verziune sarrann'arrepigliate nziem'a chista.\nSi na paggena nova c' 'o stesso nomme è stata criata 'a che s'è fatto 'o scancellamiento, 'e verziune arripigliate cumparerranno comme cchiù viecchie dint' 'a cronologgia.",
        "undeleterevdel": "L'arripiglio nun sarrà affettuato si determina 'o scancellamiento parziale d' 'a verzione 'e mo d' 'a paggena o file.\nInt'a sti case, avite 'e smarcà o annasconnere 'e verziune scancellate cchiù nove.",
        "undeletehistorynoadmin": "Sta paggena è stata scancellata.\n'O mutivo d' 'o scancellamiento 'o truvate scritto dint' 'a 'o riepilego ccà abbascio, nzieme ch' 'e dettaglie 'e l'utente c'hanno cagnato sta paggena apprimma 'e se fà 'o scancellamiento.\n'O testo 'e mo 'e sti verziune è a disposizione sulamente a l'ammenistrature.",
        "contributions-userdoesnotexist": "'O cunto utente \"$1\" nun è riggistrato.",
        "nocontribs": "Nisciunu cagnamiento è stato truvato cu sti criterie.",
        "uctop": "(attuale)",
-       "month": "D\"o mese (e primma):",
+       "month": "D' 'o mese (e pure cchiù primma):",
        "year": "'E ll'anno (e primma):",
        "sp-contributions-newbies": "Mosta solo 'e contribbute dde nove utente",
        "sp-contributions-newbies-sub": "Pe' l'utente nuove",
        "ipbenableautoblock": "Automaticamende blocca l'urdeme indirizze IP ausate 'a st'utente, e pure tutte l'IP c'ausasse pe' pruvà 'e fà ati cagnamiente",
        "ipbsubmit": "Blocca st'utente",
        "ipbother": "N'ata durata:",
-       "ipboptions": "2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite",
+       "ipboptions": "2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anno:1 year,infinito:infinite",
        "ipbhidename": "Annascunne 'o nomme utente d' 'a lista 'e cagnamiente e l'ati liste",
        "ipbwatchuser": "Fà vedé 'a paggena utente e le chiacchieriate 'e st'utente",
        "ipb-disableusertalk": "Nun permettere a st'utente edità 'a paggena 'e chiacchiera d' 'a soja pe' tramente ch'e bloccato",
        "movepagetext": "Ausanno stu modulo ccà abbascio s'anommenarrà 'a paggena n'ata vota, movenno tutt' 'a cronologgia suja a l'atu nomme.\n'O titolo viecchio s'addeventarrà nu redirect â paggena c' 'o titolo nuovo. Putite agghiurnà 'e redirect ca puntassero ô titolo origgenale automaticamente.\nSi chesto nun facite, state sicuro 'e cuntrullà [[Special:DoubleRedirects|doppie ridirezionamiente]] o [[Special:BrokenRedirects|ridirezionamiente scassate]]. Vuje site 'o responsabbile 'e chillo ca cumbinate, assicurateve ca 'o cullegamiento cuntinua a spuntà addò avess'a spuntà.\n\nVedite bbuono ca 'a paggena <strong>nun</strong> se muoverrà si esiste n'ata paggena c' 'o titolo nuovo, a meno ca è abbacante o ca ce sta na paggena 'e ridirezionamiento senza cronologgia. Chesto significasse ca putite fà turnà 'o nomme viecchio â paggena addò ce steva apprimma si avite cumbinato nu nguacchio p'errore, e nun può sovrascrivere 'a paggena ch'esiste già. <strong>Attenzione!</strong> Chisto può essere nu cagnamiento drastico e inaspettato 'e na paggena famosa assaje; pe' piacere, avite 'a essere sicure-sicure d' 'e conseguenze apprimm' 'e cuntinuà.",
        "movepagetext-noredirectfixer": "Ausanno stu modulo ccà abbascio s'anommenarrà 'a paggena n'ata vota, movenno tutt' 'a cronologgia suja a l'atu nomme.\n'O titolo viecchio s'addeventarrà nu redirect â paggena c' 'o titolo nuovo. State sicuro 'e cuntrullà [[Special:DoubleRedirects|doppie ridirezionamiente]] o [[Special:BrokenRedirects|ridirezionamiente scassate]]. Vuje site 'o responsabbile 'e chillo ca cumbinate, assicurateve ca 'o cullegamiento cuntinua a spuntà addò avess'a spuntà.\n\nVedite bbuono ca 'a paggena <strong>nun</strong> se muoverrà si esiste n'ata paggena c' 'o titolo nuovo, a meno ca è abbacante o ca ce sta na paggena 'e ridirezionamiento senza cronologgia. Chesto significasse ca putite fà turnà 'o nomme viecchio â paggena addò ce steva apprimma si avite cumbinato nu nguacchio p'errore, e nun può sovrascrivere 'a paggena ch'esiste già. <strong>Attenzione!</strong> Chisto può essere nu cagnamiento drastico e inaspettato 'e na paggena famosa assaje; pe' piacere, avite 'a essere sicure-sicure d' 'e conseguenze apprimm' 'e cuntinuà.",
        "movepagetalktext": "'A paggena 'e chiacchieria suoccia a chesta sarrà spustata automaticamente cu chesta <strong>a meno che:</strong>\n*Esiste na paggena 'e chiacchieria ca nun è abbacante c' 'o nomme nuovo, o\n*Vuje sciglite accussì abbacantanno 'a casciulella ccà abbascio.\n\nInd' 'a sti case, 'a paggena nun se muoverrà, ma 'a putite sempe scagnà manualmente si vulite.",
-       "movearticle": "Spusta 'a paggena",
+       "movearticle": "Mòve 'a paggena",
        "moveuserpage-warning": "<strong>Attenziò:</strong> Vuje state a muovere na paggena utente. Vedite bbuono ca sulamente 'a paggena sarrà spustata e l'utente <em>nun</em> sarrà reanummenato.",
        "movecategorypage-warning": "<strong>Attenziò:</strong> Vuje state a muovere na categurìa. Vedite bbuono ca sulamente 'a paggena sarrà spustata e 'a categurìa viecchia <em>nun</em> sarrà cagnata â nnova.",
        "movenologintext": "Vuje avite 'a essere n'utente riggistrato e [[Special:UserLogin|cullegato]] pe' spustà na paggena.",
        "cant-move-to-category-page": "Nun tenite 'o permesso pe' muovere 'a paggena ncopp' 'a na categurìa",
        "newtitle": "Titulo nuovo:",
        "move-watch": "Cuntrolla sta paggena",
-       "movepagebtn": "Spusta 'a paggena",
+       "movepagebtn": "Mòve 'a paggena",
        "pagemovedsub": "Spustamento fatto",
        "movepage-moved": "<strong>\"$1\" è stata spustata int' 'a \"$2\"</strong>",
        "movepage-moved-redirect": "Nu redirezionamiento è stato criato.",
        "movenosubpage": "Sta paggena nun tene sottopaggene.",
        "movereason": "Raggióne",
        "revertmove": "arrepiglia",
-       "delete_and_move": "Scancèlla e spusta",
+       "delete_and_move": "Scancèlla e mòve",
        "delete_and_move_text": "== Scancellamiento richiesto ==\n'A paggena 'e destinazione \"[[:$1]]\" esiste già.\n'A vulite scancellà pe' ne putè ffà 'o spazio abbacante necessario?",
        "delete_and_move_confirm": "Sì, suprascrivi 'a paggena asistente",
        "delete_and_move_reason": "Scancellata pe ne fà spazio abbacante e putè spustà 'a \"[[$1]]\"",
        "tooltip-ca-unprotect": "Càgna 'a prutezzione 'e chesta paggena",
        "tooltip-ca-delete": "Scancèlla chista paggena",
        "tooltip-ca-undelete": "Arrepiglia 'e cagnamiente fatte 'a sta paggena apprimma ca fuieno scancellate",
-       "tooltip-ca-move": "Spusta chista paggena",
+       "tooltip-ca-move": "Mòve sta paggena",
        "tooltip-ca-watch": "Azzecca sta paggena int' 'a lista 'e paggene cuntrullate vuosta",
        "tooltip-ca-unwatch": "Lèva sta paggena d' 'a lista 'e paggene cuntrullate vuosta",
        "tooltip-search": "Truova dint'ô {{SITENAME}}",
        "tooltip-t-contributions": "Lista dde contributte 'e chisto utente",
        "tooltip-t-emailuser": "Manna 'nu email a chisto utente",
        "tooltip-t-info": "Cchiù nfurmaziune ncopp'a sta paggena",
-       "tooltip-t-upload": "Careca file",
+       "tooltip-t-upload": "Carreca file",
        "tooltip-t-specialpages": "Lista 'e tutte e paggene speciale",
        "tooltip-t-print": "Vversione pe' stampa 'e chista paggena",
        "tooltip-t-permalink": "Jonta permanente a chista vversione dda paggena",
        "spam_reverting": "Arrepiglianno l'urdema verziona ca nun cuntene 'e link a $1",
        "spam_blanking": "Tutt' 'e verziune cuntenenno cullegamiente a $1, pulezzate e sbacantate",
        "spam_deleting": "Tutt' 'e verziune cuntenenno cullegamiente a $1, scancellanno",
-       "simpleantispam-label": "Cuntrollo anti-spam.\n<strong>NUN</strong> ghienchere!",
+       "simpleantispam-label": "Cuntrollo anti-spam.\n<strong>nun</strong> ghienchere!",
        "pageinfo-title": "Nfurmaziune pe' \"$1\"",
        "pageinfo-not-current": "Scusate, nun se ponno piglià sti nfurmaziune p' 'e verziune viecchie.",
        "pageinfo-header-basic": "Nfurmaziune bbase",
        "pageinfo-robot-index": "Permesso",
        "pageinfo-robot-noindex": "Nun permesso",
        "pageinfo-watchers": "Nummero 'e visite â paggena",
-       "pageinfo-visiting-watchers": "Nummero 'e utente ca stanno a vedè 'e cagnamiente cchiù nuove",
+       "pageinfo-visiting-watchers": "Nummero 'e utente ca so' state a vedè 'e cagnamiente cchiù nuove",
        "pageinfo-few-watchers": "Meno 'e $1 {{PLURAL:$1|visita|visite}}",
        "pageinfo-few-visiting-watchers": "Esistesse o forse nun esistesse n'utente ca stesse a vedé 'e cagnamiente cchiù ricente",
        "pageinfo-redirects-name": "Nummero 'e redirect a sta paggena",
        "specialpages-note": "* Paggene speciale normale.\n* <span class=\"mw-specialpagerestricted\">Paggene speciale ch' 'e restriziune.</span>",
        "specialpages-group-maintenance": "Report 'e manutenzione",
        "specialpages-group-other": "Ati paggene speciale",
-       "specialpages-group-login": "Tràse o cria n'acciesso novo",
+       "specialpages-group-login": "Trasite o criate n'acciesso nuovo",
        "specialpages-group-changes": "Cagnamiente 'e mò mò e riggistre",
        "specialpages-group-media": "Riepileghe 'e media e carreche",
        "specialpages-group-users": "Utente e deritte",
        "log-description-pagelang": "Chest'è nu riggistro 'e cagnamiente 'e lengua d' 'e paggene.",
        "logentry-pagelang-pagelang": "$1 {{GENDER:$2|ave cagnato}} 'a lengua d' 'a paggena $3 'a $4 a $5.",
        "default-skin-not-found": "Oops! 'A skin predefinta ' 'o wiki vuosto, definita 'n <code dir=\"ltr\">$wgDefaultSkin</code> comme <code>$1</code>, nun se tròva.\n\n'A installazione pare ca tenesse {{PLURAL:$4|'a skin|'e skin}} ccà abbascio. Vedite [https://www.mediawiki.org/wiki/Manual:Skin_configuration Manuale: configurazione skin] pe' n'avè cchiù nfurmaziune ncopp' 'a manera {{PLURAL:$4|'e ll'abbià}} o scegliere chilla predefinita.\n\n$2\n\n; Si avite installato MediaWiki mò mò:\n: Probabbilmente l'avite installato 'a git, o direttamente 'a 'o codece sorgente ausanno cocch'atu metodo. Chesto era permesso. Verite 'e installà cocche skin 'a [https://www.mediawiki.org/wiki/Category:All_skins directory ncoppa mediawiki.org], tramite:\n:* Scarrecanno 'o [https://www.mediawiki.org/wiki/Download programma 'e installazione tarball], ca venesse fornito ch' 'e diverze skin ed estenziune. Putite fare copia-azzecca d' 'a directory <code dir=\"ltr\">skins/</code>.\n:* Scarrecanne 'e tarballs individuale 'e skin 'a [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Ausanno Git pe' scarrecà skin].\n: Facenno accussì nun se mmescasse 'o repository git vuosto si site sviluppatore MediaWiki.\n\n; Si avite MediaWiki agghiurnato MediaWiki mò mò:\n: MediaWiki 1.24 e verziune appriesso nun abbìa automatecamente 'e skin installate (vedite [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuale: rilevamento automateco skin]). Putite copià {{PLURAL:$5|'a linea|'e linee}} ccà abbascio dint' 'o <code>LocalSettings.php</code> pe' putè appiccià {{PLURAL:$5|'o|tutt' 'e}} {{PLURAL:$5|skin}} installate mò mò:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Si avite cagnato mò mò <code>LocalSettings.php</code>:\n: Cuntrullate 'e nomme d' 'e skin n'ata vota pe' ve sparagnà cocch'errore 'e battitura.",
-       "default-skin-not-found-no-skins": "Oops! 'A skin predefinita p' 'o wiki vuosto, definita 'n <code dir=\"ltr\">$wgDefaultSkin</code> comme <code>$1</code>, nun se tròva.\n\nNun avite installato nisciuno skin.\n\n; Si avite installato MediaWiki mò mò:\n: Probabbilmente l'avite installato 'a git, o direttamente 'a 'o codece sorgente ausanno cocch'atu metodo. Chesto era permesso. Verite 'e installà cocche skin 'a [https://www.mediawiki.org/wiki/Category:All_skins directory ncoppa mediawiki.org], tramite:\n:* Scarrecanne 'e tarballs individuale 'e skin 'a [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Ausanno Git pe' ve ffà 'a scarreca 'e skin].\n: Facenno accussì nun se mmescasse 'o repository git vuosto si site sviluppatore MediaWiki. Vedite [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuale: rilevamento automateco skin]) pe n'avè nfurmaziune ncopp' 'a maniera d'appiccià e scegliere chella predefinita.",
+       "default-skin-not-found-no-skins": "Oops! 'A skin predefinita p' 'o wiki vuosto, definita 'n <code dir=\"ltr\">$wgDefaultSkin</code> comme <code>$1</code>, nun se tròva.\n\nNun avite installato nisciuno skin.\n\n; Si avite installato MediaWiki mò mò:\n: Probabbilmente l'avite installato 'a git, o direttamente 'a 'o codece sorgente ausanno cocch'atu metodo. Chesto era permesso. Verite 'e installà cocche skin 'a [https://www.mediawiki.org/wiki/Category:All_skins directory ncoppa mediawiki.org], tramite:\n:* Scarrecanne 'e tarballs individuale 'e skin 'a [https://www.mediawiki.org/wiki/Special:SkinDistributor mediawiki.org].\n:* [https://www.mediawiki.org/wiki/Download_from_Git#Using_Git_to_download_MediaWiki_skins Using Git to download skins].\n\n: Facenno accussì nun se mmescasse 'o repository git vuosto si site sviluppatore MediaWiki. Vedite [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery Manuale: rilevamento automateco skin]) pe n'avè nfurmaziune ncopp' 'a maniera d'appiccià e scegliere chella predefinita.",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (funzione appicciata)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''funzione stutata''')",
        "mediastatistics": "Statistiche d' 'e media",
        "special-characters-title-endash": "trattino enne",
        "special-characters-title-emdash": "trattino emme",
        "special-characters-title-minus": "segno meno",
+       "mw-widgets-dateinput-no-date": "Nisciuna data scigliuta",
        "mw-widgets-titleinput-description-new-page": "'a pàggene nun esiste ancore",
        "mw-widgets-titleinput-description-redirect": "redirezionate ncopp' a $1"
 }
index 0f1aad0..630cb5b 100644 (file)
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "tankestrek",
        "special-characters-title-emdash": "lang tankestrek",
-       "special-characters-title-minus": "minustegn"
+       "special-characters-title-minus": "minustegn",
+       "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM"
 }
index c4278b4..059c931 100644 (file)
        "viewsourcetext": "तपाईँले यस पृष्ठको स्रोत हेर्न र प्रतिलिपी गर्न सक्नुहुन्छ ।",
        "viewyourtext": "यस पृष्ठमा रहेका '''तपाईँका सम्पादनहरू''' हेर्न या प्रतिलिपी गर्न सक्नुहुन्छ :",
        "protectedinterface": "यो पृष्ठले सफ्टवेयरको लागि अन्तरमोहडा पाठ प्रदान गर्दछ , र यसलाई दुरुपयोग हुनबाट बचाउन सुरक्षा प्रादन गरिएको छ।\nसम्पूर्ण विकिहरूका लागि अनुवादमा परिवर्तन गर्नको लागि [//translatewiki.net/ translatewiki.net], प्रयोग गर्नुहोस् ,  मिडियाविकि स्थानियकरण परियोजना ।",
-       "editinginterface": "<strong>चेतावनी:</strong> तपाई यस पृष्ठलाई सम्पादन गर्नुहुँदैछ, जसले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गर्दछ।\nयस पृष्ठमा गरिएकोपरिवर्तनले यस विकिमा अरु प्रयोगकर्ताको इन्टरफेसको प्रदर्शनमा प्रभाव पार्नेछ ।",
+       "editinginterface": "<strong>चेतावनी:</strong> तपाई यस पृष्ठलाई सम्पादन गर्नुहुँदैछ, जसले सफ्टवेयरको लागि \nइन्टरफेस सामग्रीहरू प्रदान गर्दछ।\nयस पृष्ठमा गरिएकोपरिवर्तनले यस विकिमा अरु प्रयोगकर्ताको इन्टरफेसको प्रदर्शनमा प्रभाव पार्नेछ ।",
        "translateinterface": "सबै विकिहरूको लागी अनुवाद जोड्न वा परिवर्तन गर्नका लागि मीडियाविकि क्षेत्रीयकरण परियोजना [//translatewiki.net/ ट्रान्सलेटविकि.नेट]को प्रयोग गर्नुहोस।",
        "cascadeprotected": "यो पृष्ठ सम्पादन गर्नबाट सुरक्षित गरिएकोछ किनभनें {{PLURAL:$1|पृष्ठ |पृष्ठहरू}}मा सुरक्षित गर्नुका साथै प्रपात (\"cascading\") विकल्प खुल्ला राखिएको छ:\n$2",
        "namespaceprotected": " '''$1'''  नेमस्पेसमा रहेका पृष्ठहरू सम्पादन गर्ने अनुमति यहाँलाई छैन ।",
        "virus-unknownscanner": "अज्ञात एन्टीभाइरस:",
        "logouttext": "<strong>तपाईं अहिले बाहिर निस्कनु भएको छ।</strong>\n\nयाद राख्नुहोस् तपाईंले ब्राउजरको क्याच खालि नगर्दासम्म कुनै पृष्ठहरूमा तपाईं अझै प्रवेश गरिरखेको देखाउन सक्छ।",
        "welcomeuser": "$1जी स्वागत छ!",
-       "welcomecreation-msg": "तपाà¤\88à¤\95à¥\8b à¤\96ाता à¤¤à¤¯à¤¾à¤° à¤­à¤¯à¥\8b à¥¤ \nतपाà¤\88लà¥\87 à¤\9aाहनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा {{SITENAME}} [[Special:Preferences|preferences]] परिवर्तन गर्न सक्नु हुनेछ ।",
+       "welcomecreation-msg": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\96ाता à¤¤à¤¯à¤¾à¤° à¤­à¤¯à¥\8b à¥¤ \nतपाà¤\88à¤\82लà¥\87 à¤\9aाहनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा {{SITENAME}} [[Special:Preferences|पà¥\8dराथमिà¤\95ताहरà¥\82]] परिवर्तन गर्न सक्नु हुनेछ ।",
        "yourname": "प्रयोगकर्ता नाम:",
        "userlogin-yourname": "प्रयोगकर्ता नाम",
        "userlogin-yourname-ph": "तपाईँको प्रयोगकर्तानाम लेख्नुहोस्",
        "notloggedin": "प्रवेश (लग ईन) नगरिएको",
        "userlogin-noaccount": "के खाता छैन ?",
        "userlogin-joinproject": "{{SITENAME}} मा खाता खोल्नुहोस् ।",
-       "nologin": "तपाà¤\88à¤\95à¥\8b à¤\96ाता à¤\9bà¥\88न? $1।",
+       "nologin": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\96ाता à¤\9bà¥\88न ? $1।",
        "nologinlink": "नयाँ खाता खोल्नुहोस्",
        "createaccount": "खाता खोल्नुहोस्",
        "gotaccount": "के तपाईँसँग पहिले देखि नै खाता छ ? '''$1''' ।",
        "userlogin-resetlink": "प्रवेश सम्बन्धी विवरणहरू बिर्सनु भयो?",
        "userlogin-resetpassword-link": "पासवर्ड भुल्नुभयो?",
        "userlogin-helplink2": "प्रवेश गर्नको लागि सहयोग",
-       "userlogin-loggedin": "तपाई {{GENDER:$1|$1}}को रूपमा प्रवेश (लग इन) भइ सक्नु भयो ।\nअर्को प्रयोगकर्ताको रूपमा प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर्नुहोस् ।",
+       "userlogin-loggedin": "तपाई {{GENDER:$1|$1}}को रूपमा प्रवेश (लग इन) भइ सक्नु भयो ।\nअर्को प्रयोगकर्ताको रूपमा प्रवेश (लग इन) गर्न तलको फारम प्रयोग गर्नुहोस् ।",
        "userlogin-createanother": "अर्को खाता खोल्नुहोस्",
        "createacct-emailrequired": "इमेल ठेगाना",
        "createacct-emailoptional": "इमेल ठेगाना (ऐच्छिक)",
        "password-login-forbidden": "यो प्रयोगकर्ता नाम र प्रवेश शव्द वर्जित गरिएकोछ ।",
        "mailmypassword": "पासवर्ड पूर्वनिर्धारित गर्नुहोस्",
        "passwordremindertitle": "{{SITENAME}}को लागि नयाँ अस्थायी पासवर्ड",
-       "passwordremindertext": "à¤\95सà¥\88लà¥\87 (सायद à¤¤à¤ªà¤¾à¤\88à¤\81, IP à¤ à¥\87à¤\97ाना $1 à¤¬à¤¾à¤\9f), {{SITENAME}}($4) à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता \"$2\" à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87शशवà¥\8dद \"$3\"तयार à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b। à¤¯à¤¦à¤¿ à¤¯à¥\8b à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87à¤\9aà¥\8dà¤\9bामा à¤­à¤\8fà¤\95à¥\8b à¤­à¤\8f à¤\85हिलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤ªà¥\8dरवà¥\87शà¤\97रà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤\9bानà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नà¥\8dà¤\9b।\nतपाà¤\88à¤\95à¥\8b à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87शशवà¥\8dद  {{PLURAL:$5|à¤\8fà¤\95 à¤¦à¤¿à¤¨|$5 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82 à¤ªà¤\9bि}} à¤\85मानà¥\8dय à¤¹à¥\81नà¥\87à¤\9b à¥¤\n\nयदि à¤\95à¥\8bहà¥\80 à¤\85रà¥\81लà¥\87 à¤¨à¥\88 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\87à¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¯à¤¾ à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87शशवà¥\8dद à¤¸à¤®à¥\8dà¤\9dिनà¥\81 à¤­à¤¯à¥\8b à¤­à¤¨à¥\87, à¤\85थवा\nतà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87, à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87शà¤\95à¥\8b à¤µà¥\87वासà¥\8dता à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤° à¤ªà¥\81रानà¥\88 à¤ªà¥\8dरवà¥\87शशव्द प्रयोग गरिरहन सक्नुहुन्छ ।",
+       "passwordremindertext": "à¤\95सà¥\88लà¥\87 (सायद à¤¤à¤ªà¤¾à¤\88à¤\81, IP à¤ à¥\87à¤\97ाना $1 à¤¬à¤¾à¤\9f), {{SITENAME}}($4) à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81भà¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता \"$2\" à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¨à¤¯à¤¾à¤\81 à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87सशबà¥\8dद \"$3\"तयार à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9b à¥¤ à¤¯à¤¦à¤¿ à¤¯à¥\8b à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87à¤\9aà¥\8dà¤\9bामा à¤­à¤\8fà¤\95à¥\8b à¤­à¤\8f à¤\85हिलà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤ªà¥\8dरवà¥\87शà¤\97रà¥\80 à¤¨à¤¯à¤¾à¤\81 à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤\9bानà¥\8dनà¥\81 à¤ªà¤°à¥\8dनà¥\87 à¤¹à¥\81नà¥\8dà¤\9b।\nतपाà¤\88à¤\82à¤\95à¥\8b à¤\85सà¥\8dथायà¥\80 à¤ªà¥\8dरवà¥\87सशबà¥\8dद  {{PLURAL:$5|à¤\8fà¤\95 à¤¦à¤¿à¤¨|$5 à¤¦à¤¿à¤¨à¤¹à¤°à¥\82 à¤ªà¤\9bि}} à¤\85मानà¥\8dय à¤¹à¥\81नà¥\87à¤\9b à¥¤\n\nयदि à¤\95à¥\8bहà¥\80 à¤\85रà¥\81लà¥\87 à¤¨à¥\88 à¤\85नà¥\81रà¥\8bध à¤\97रà¥\87à¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 , à¤¯à¤¾ à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤¸à¤®à¥\8dà¤\9dिनà¥\81 à¤­à¤¯à¥\8b à¤­à¤¨à¥\87, à¤\85थवा\nतà¥\8dयसलाà¤\88 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\9aाहनà¥\81हà¥\81नà¥\8dन à¤­à¤¨à¥\87, à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87सà¤\95à¥\8b à¤µà¥\87वासà¥\8dता à¤\97रà¥\8dनसà¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b à¤° à¤ªà¥\81रानà¥\88 à¤ªà¥\8dरवà¥\87सशब्द प्रयोग गरिरहन सक्नुहुन्छ ।",
        "noemail": "प्रयोगकर्ता  \"$1\"को लागि कुनै पनि इ-मेल दर्ता गरिएको छैन ।",
        "noemailcreate": "तपाईंले सही ई-मेल ठेगाना दिनुपर्छ",
        "passwordsent": "\"$1\" को लागि दर्ता गरिएको ई-मेल ठेगानामा एक प्रवेशशव्द पठाइएको छ।\nकृपया त्यसलाई प्राप्त गरेपछि प्रवेश गर्नुहोला ।",
-       "blocked-mailpassword": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¥\8dयसà¥\88लà¥\87 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरवà¥\87शशव्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।",
+       "blocked-mailpassword": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानालाà¤\88 à¤¸à¤®à¥\8dपादनà¤\97रà¥\8dनबाà¤\9f à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¥\8dयसà¥\88लà¥\87 à¤¦à¥\81रà¥\81पयà¥\8bà¤\97 à¤°à¥\8bà¤\95à¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\8dरवà¥\87सशब्द पुनर्लाभ प्रक्रिया प्रयोग गर्न अनुमति छैन ।",
        "eauthentsent": "दिइएको इमेल ठेगानामा इमेल पठाइएको छ ।\nतपाईँको खातामा अरु इमेल पठउनु अघि , इमेलमा लेखिएको मार्गदर्शन अनुसार , त्यो खाता तपाईँकै हो भनेर निश्चित गर्नु पर्नेछ ।",
        "throttled-mailpassword": "बितेको {{PLURAL:$1|घण्टा|$1 घण्टाहरु}} भित्र एउटा पासवर्ड अनुस्मारक पठाई सकिएको छ।\nदुरुपयोगबाट बचाउकोलागि प्रत्येक {{PLURAL:$1|घण्टा|$1 घण्टाहरु}}मा केवल एउटा पासवर्ड अनुस्मारक पठाइन्छ।",
        "mailerror": " चिठी :$1 पठाउँदा त्रुटी भयो",
        "acct_creation_throttle_hit": "तपाईंको आईपी ठेगानाबाट आएका आगन्तुकद्वारा बितेको चौबिस घण्टामा यस विकिमा {{PLURAL:$1|एउटा खाता बनाइसकिएको छ|$1 खाताहरु बनाइसकिएका छन्}}, यस समयावधिमा यति नैं अधिकतम सीमा हो।\nअतः यस समय यस आईपी ठेगानाको प्रयोग गर्ने आगन्तुकले अरु खाता खोल्न सक्नेछैनन्।",
        "emailauthenticated": "तपाईंको इमेल ठेगाना $2 को $3 मा प्रमाणित गरिएको थियो।",
        "emailnotauthenticated": "तपाईँको इमेल ठेगाना अहिले सम्म प्रमाणित गरिएको छैन ।\nनिम्न सुविधाको लागि कुनै पनि इमेल पठाइने छैन ।",
-       "noemailprefs": "निमà¥\8dन à¤¸à¥\81विधाहरà¥\81 à¤°à¤¾à¤®à¥\8dररà¥\80 à¤\95ाम à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88को अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
+       "noemailprefs": "निमà¥\8dन à¤¸à¥\81विधाहरà¥\82 à¤°à¤¾à¤®à¥\8dररà¥\80 à¤\95ाम à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤¤à¤ªà¤¾à¤\88à¤\82को अभिरुचिमा आफ्नो ई-मेल ठेगाना खुलाउनुहोस् ।",
        "emailconfirmlink": "तपाईंको ई-मेल ठेगाना पक्का गर्नुहोस्",
        "invalidemailaddress": "ई-मेल ठेगाना स्वीकार गर्न सकिएन किन भनें यो सही प्रारूपमा छैन, कृपया सही प्रारूपको  ठेगाना दिनुहोस्।",
-       "cannotchangeemail": "यस विकिमा तपाईको खातासँग सम्बन्धित इमेल ठेगाना परिवर्तन गर्न सकिन्न ।",
+       "cannotchangeemail": "यस à¤µà¤¿à¤\95िमा à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\96ातासà¤\81à¤\97 à¤¸à¤®à¥\8dबनà¥\8dधित à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤¸à¤\95िनà¥\8dन à¥¤",
        "emaildisabled": "यो साइटले इमेलहरू पठाउन सक्दैन।",
        "accountcreated": "खाता खोलियो",
        "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|वार्ता]])$1 प्रयोगकर्ताको लागि खाता खोलिएको छ ।",
        "createaccount-title": "{{SITENAME}}कोलागि खाता खोल्ने काम",
-       "createaccount-text": "à¤\95सà¥\88लà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ानालाà¤\88 {{SITENAME}} ($4) à¤®à¤¾ \"$2\" à¤¨à¤¾à¤®à¤\95à¥\8b à¤\96ाता à¤¬à¤¨à¤¾à¤\8fà¤\95à¥\8b à¤\9b, à¤\9cसà¤\95à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$3\" à¤\9b।",
+       "createaccount-text": "à¤\95सà¥\88लà¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ानालाà¤\88 {{SITENAME}} ($4) à¤®à¤¾ \"$2\" à¤¨à¤¾à¤®à¤\95à¥\8b à¤\96ाता à¤¬à¤¨à¤¾à¤\8fà¤\95à¥\8b à¤\9b, à¤\9cसà¤\95à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड \"$3\" à¤\9b à¥¤\nà¤\85ब à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¤à¥\81रà¥\81नà¥\8dत à¤²à¤\97à¤\87न à¤\97रà¥\87र à¤\86फà¥\8dनà¥\8b à¤ªà¥\8dरवà¥\87सशबà¥\8dद à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dनà¥\81हà¥\8bला à¥¤\nयदà¥\80 à¤¯à¥\8b à¤\96ाता à¤\97लà¥\8dतिलà¥\87 à¤\96à¥\8bलिà¤\8fà¤\95à¥\8b à¤°à¤¹à¥\87à¤\9b à¤­à¤¨à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¥\8b à¤¸à¤¨à¥\8dदà¥\87शलाà¤\88 à¤¬à¥\87वासà¥\8dता à¤\97रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dà¤\9b ।",
        "login-throttled": "तपाईंले भर्खरै धेरै पल्ट प्रवेशको निम्ति प्रयास गर्नुभएको छ ,कृपया $1 पर्खेर मात्र प्रयास गर्नुहोस्।",
        "login-abort-generic": "तपाईंको प्रवेश असफल भयो - छोड़ियो",
-       "login-migrated-generic": "तपाà¤\88à¤\95à¥\8b à¤\96ाता à¤¸à¥\8dथानानà¥\8dतरण à¤­à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¤ªà¤¾à¤\88को प्रयोगकर्ता नाम यस विकिमा छैन ।",
+       "login-migrated-generic": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\96ाता à¤¸à¥\8dथानानà¥\8dतरण à¤­à¤\8fà¤\95à¥\8b à¤\9b, à¤° à¤¤à¤ªà¤¾à¤\88à¤\82को प्रयोगकर्ता नाम यस विकिमा छैन ।",
        "loginlanguagelabel": "भाषा: $1",
        "suspicious-userlogout": "तपाईंको निर्गमन अनुरोध अस्विकार गरिन्छ किन कि यो खराब ब्राउजर वा क्यासिङ प्रोक्सिले पठाएको जस्तो देखिन्छ।",
        "createacct-another-realname-tip": "वास्तविक नाम ऐच्छिक हो ।\nतपाईले यो खुलाउनु भएको खण्डमा तपाईको काममा प्रयोगकर्ता श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "resetpass-submit-cancel": "रद्द गर्ने",
        "resetpass-wrong-oldpass": "अस्थायी अथवा हा्लिएको प्रवेश शव्द अमान्य\nतपाईंले अघिबाट नैं प्रवेश शव्द सफलता पूर्वक परिवर्तन गरिसक्नु भएको हो वा नयाँ प्रवेश शव्दको निम्ति निवेदन गर्नुभएकोछ।",
        "resetpass-recycled": "कृपया वर्तमान पासर्वड भन्दा फरक पासर्वडलाई पुनः मिलाउनुहोस् ।",
-       "resetpass-temp-emailed": "तपाई अस्थाई इमेल कोडले प्रवेश गर्नुभएको छ।\nप्रवेश सफल पार्नका लागि, तपाईंले यहाँ एउटा नयाँ पासवर्ड राख्नु पर्नेछ:",
+       "resetpass-temp-emailed": "तपाई अस्थाई इमेल कोडले प्रवेश गर्नुभएको छ।\nप्रवेश सफल पार्नका लागि, तपाईंले यहाँ एउटा नयाँ पासवर्ड राख्नु पर्नेछ:",
        "resetpass-temp-password": "अस्थाइ पासवर्ड",
        "resetpass-abort-generic": "एक्सटेन्सनले पासवर्ड परिवर्तनलाई बन्द गराएको छ ।",
-       "resetpass-expired": "तपाईको पासवर्ड पूरानो भएकोछ । कृपया प्रवेश (लग इन) को लागी नयाँ पासवर्ड राख्नुहोस् ।",
+       "resetpass-expired": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤ªà¥\82रानà¥\8b à¤­à¤\8fà¤\95à¥\8bà¤\9b à¥¤ à¤\95à¥\83पया à¤ªà¥\8dरवà¥\87श (लà¤\97 à¤\87न) à¤\95à¥\8b à¤²à¤¾à¤\97à¥\80 à¤¨à¤¯à¤¾à¤\81 à¤ªà¤¾à¤¸à¤µà¤°à¥\8dड à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bसà¥\8d à¥¤",
        "resetpass-expired-soft": "तपाईंको पासवर्ड म्याद सकिएको छ र यसलाई रिसेट गर्नुपर्नेछ। कृपया एउटा नयाँ पासवर्ड छान्नुहोस् वा \"{{int:resetpass-submit-cancel}}\"मा क्लिक गरी पछि रिसेट गर्नुहोला।",
        "resetpass-validity-soft": "तपाईंको पासवर्ड मान्य छैन:$1\n\nकृपया नयाँ पासवर्ड छान्नुहोस् वा \"{{int:resetpass-submit-cancel}}\"मा क्लिक गरी पछि रिसेट गर्नुहोला।",
        "passwordreset": "प्रवेशशव्द पुनः तय गर्ने",
        "missingsummary": "'''यादगर्नुहोस् :''' तपाईले सम्पादन सारांश दिनुभएको छैन ।\nयदि तपाईले संग्रहगर्नुहोस्  थिच्नुभयो भने , सारांश बिना नै संग्रहित गरिने छ ।",
        "selfredirect": "<strong>चेतावनी:</strong> तपाईं यस पृष्ठलाई आफुमा पुनः निर्देशित गर्दै हुनुहुन्छ।\nहुनसक्छ तपाईं अनुप्रेषितको लागि गलत लक्ष्य निर्दिष्ट गर्दै हुनुहुन्छ, वा गलत पृष्ठको सम्पादन गर्दै हुनुहुन्छ।\nतपाईं पुनः एकपटक \"{{int:savearticle}}\" क्लिक गर्नुहुन्छ, पुनः निर्देशित त्यसै पनि बनाइनेछ।",
        "missingcommenttext": "कृपया टिप्पणी प्रविष्ठ गर्नुहोस् ।",
-       "missingcommentheader": "'''याद गर्नुहोस् :''' तपाईँले टिप्पणीमा विषय /शीर्ष पंक्ति  दिनुभएको छैन ।\nतपाईँले फेरि \"{{int:savearticle}}\"  थिच्नु भएमा , तपाईको सम्पादन यसै रुपमा संग्रहित हुनेछ ।",
+       "missingcommentheader": "'''याद à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d :''' à¤¤à¤ªà¤¾à¤\88à¤\81लà¥\87 à¤\9fिपà¥\8dपणà¥\80मा à¤µà¤¿à¤·à¤¯ /शà¥\80रà¥\8dष à¤ªà¤\82à¤\95à¥\8dति  à¤¦à¤¿à¤¨à¥\81भà¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤\nतपाà¤\88à¤\81लà¥\87 à¤«à¥\87रि \"{{int:savearticle}}\"  à¤¥à¤¿à¤\9aà¥\8dनà¥\81 à¤­à¤\8fमा , à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¸à¤®à¥\8dपादन à¤¯à¤¸à¥\88 à¤°à¥\81पमा à¤¸à¤\82à¤\97à¥\8dरहित à¤¹à¥\81नà¥\87à¤\9b à¥¤",
        "summary-preview": "सारांश पूर्वालोकन:",
        "subject-preview": "विषय/शीर्षपंक्ति पूर्वरुप:",
-       "previewerrortext": "तपाईको परिवर्तनको पूर्वावलोकन बनाउन खोज्दा समस्या आएको छ ।",
+       "previewerrortext": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनà¤\95à¥\8b à¤ªà¥\82रà¥\8dवावलà¥\8bà¤\95न à¤¬à¤¨à¤¾à¤\89न à¤\96à¥\8bà¤\9cà¥\8dदा à¤¸à¤®à¤¸à¥\8dया à¤\86à¤\8fà¤\95à¥\8b à¤\9b à¥¤",
        "blockedtitle": "प्रयोककर्तालाई रोक लगाइएको छ",
        "blockedtext": "'''तपाईँको प्रयोगकर्ता नाम या IP ठेगानालाई रोक लगाइएको छ ।'''\n\nरोक लगाउने  $1.\nरोक लगाउनाको कारण ''$2''.\n\n* रोक सुरू हुने : $8\n* रोक सकिने: $6\n* रोकबाट लक्षित: $7\n\nतपाईले  $1 वा अरु कुनै  [[{{MediaWiki:Grouppage-sysop}}|administrator]] सँग रोकको बारेमा छलफल गर्न सम्पर्क गर्न सक्नुहुन्छ ।\nतपाईँले  'प्रयोगकर्तालाई इ-मेल गर्ने ' सुविधा मान्य इमेल ठेगाना [[Special:Preferences|account preferences]] मा नखुलाए सम्म प्रयोगगर्न पाउनुहुने छैन र यसको प्रयोग गर्नबाट रोक लगाइएको छैन ।\nतपाईको IP ठेगाना $3 को, र रोक्का संख्या #$5.\nकृपया तपाईँको प्रश्नमा सबै जानकारी खुलाउनुहोला ।",
        "autoblockedtext": "तपाईंको IP ठेगानामाथि रोक लगाइएकोछ किन भनें यो अर्को प्रयोगकर्ताले प्रयोग गरेको थियो, जसलाई $1ले रोक लगाएका थिए। \nरोक लगाउनुको कारण:\n:''$2''  \n\n* रोकावट सुरु: $8\n* रोकावट सकिने: $6\n* रोकावटको प्रयोजन: $7\n\nतपाईंले $1 सित संपर्क गर्न सक्नुहुन्छ अथवा कुनै [[{{MediaWiki:Grouppage-sysop}}|प्रबन्धकसित]] रोकबारे चर्चा गर्न सक्नुहु्न्छ।\n\nध्यान दिनुहोस् कि तपाईंले यस प्रयोगकर्ताका लागि ई-मेलको प्रयोग तबसम्म गर्नसक्नुहुन्न जबसम्म तपाईको [[Special:Preferences|अभिरुचि]] पंजिकृत गर्नु हुन्न वा यस ई-मेलको प्रयोगमाथि रोक लगाइएको हुँदैन। \n\nतपाईंको वर्तमान IP ठेगाना हो- $3, अनि रोक लगाइएको ID हो- #$5.\nकृपया कुनै बेला सोधनी गर्नु परे उपर्युक्त विवरण दर्शाउनु होला।",
        "search-section": "(खण्ड $1)",
        "search-category": "(श्रेणी $1)",
        "search-file-match": "(भेटिएका फाइल सामाग्री)",
-       "search-suggest": "à¤\95à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\96à¥\8bà¤\9cाà¤\88 : $1 à¤¹à¥\8b?",
+       "search-suggest": "à¤\95तà¥\88 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\96à¥\8bà¤\9cाà¤\88 : $1 à¤¤ à¤¹à¥\8bà¤\87न ?",
        "search-interwiki-caption": "भगिनी आयोजना",
        "search-interwiki-default": "$1देखिका नतिजाहरू:",
        "search-interwiki-more": "(अझै)",
        "yournick": "नयाँ हस्ताक्षर:",
        "prefs-help-signature": "वार्तालाप पृष्ठका टिप्पणीहरु \"<nowiki>~~~~</nowiki>\" द्वारा दस्तखत गरिनुपर्छ ,जुन पछि तपाईँको दस्तखत र समयरेखामा रुपान्तरित हुनेछ ।",
        "badsig": "अमान्य कच्चा दस्तखत।\nHTML ट्यागहरु जाँच्नुहोस् ।",
-       "badsiglength": "तपाईको दस्तखत धेरै लामो छ।\nयो $1 {{PLURAL:$1|अक्षर|अक्षरहरू}} भन्दा लामो हुनु हुँदैन ।",
+       "badsiglength": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¦à¤¸à¥\8dतà¤\96त à¤§à¥\87रà¥\88 à¤²à¤¾à¤®à¥\8b à¤\9b।\nयà¥\8b $1 {{PLURAL:$1|à¤\85à¤\95à¥\8dषर|à¤\85à¤\95à¥\8dषरहरà¥\82}} à¤­à¤¨à¥\8dदा à¤²à¤¾à¤®à¥\8b à¤¹à¥\81नà¥\81 à¤¹à¥\81à¤\81दà¥\88न à¥¤",
        "yourgender": "कसरी वताउन चाहनुहुन्छ ?",
        "gender-unknown": "म खुलाउन चाहन्न",
        "gender-male": "उसले विकि पृष्ठहरू सम्पादन गर्छ",
        "gender-female": "उनले विकि पृष्ठ सम्पादन गर्छिन",
        "prefs-help-gender": "यो जानकारी दिनु वैकल्पिक छ।\nयो सफ्टवेयरमा लिङ्गको आधारमा तपाईंको लागि सहि सम्बोधन गर्नको निमित्त हुन्छ।\nयो जानकारी सार्वजनिक गरिनेछ।",
        "email": "ईमेल",
-       "prefs-help-realname": "वासà¥\8dतविà¤\95 à¤¨à¤¾à¤® à¤\90à¤\9aà¥\8dà¤\9bिà¤\95 à¤¹à¥\8b à¥¤\nतपाà¤\88लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा à¤¤à¤ªà¤¾à¤\88को कामको श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
+       "prefs-help-realname": "वासà¥\8dतविà¤\95 à¤¨à¤¾à¤® à¤\90à¤\9aà¥\8dà¤\9bिà¤\95 à¤¹à¥\8b à¥¤\nतपाà¤\88à¤\82लà¥\87 à¤\96à¥\81लाà¤\89नà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤\96णà¥\8dडमा à¤¤à¤ªà¤¾à¤\88à¤\82को कामको श्रेय दिनको लागि यसको प्रयोग गरिने छ ।",
        "prefs-help-email": "इमेल ठेगाना ऐच्छिक हो, तर  प्रवेश शव्दको पुनर्स्थापनाको लागि आवश्यकता छ, के तपाईंले प्रवेश शव्द भुल्नु हुन्थ्यो।",
        "prefs-help-email-others": "तपाईंले यो पनि चयन गर्न सक्नुहुन्छ कि अरुहरुले तपाईंको परिचय नपाई तपाईंसित तपाईंको प्रयोगकर्ता अथवा वार्तालाप पृष्ठको माध्यमले सम्पर्क राखुन् ।",
        "prefs-help-email-required": "इमेल ठेगामा चाहिन्छ ।",
        "prefs-displaywatchlist": "प्रदर्शन विकल्पहरू",
        "prefs-tokenwatchlist": "टोकन",
        "prefs-diffs": "diffs(भिन्नता)",
-       "prefs-help-prefershttps": "यो अभिरूची तपाईको अर्को प्रवेश (लग इन) बाट लागु हुनेछ ।",
+       "prefs-help-prefershttps": "यà¥\8b à¤\85भिरà¥\82à¤\9aà¥\80 à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\85रà¥\8dà¤\95à¥\8b à¤ªà¥\8dरवà¥\87श (लà¤\97 à¤\87न) à¤¬à¤¾à¤\9f à¤²à¤¾à¤\97à¥\81 à¤¹à¥\81नà¥\87à¤\9b à¥¤",
        "prefswarning-warning": "तपाईंले आफ्नो अभिरूचीमा गर्नुभएको परिवर्तन अहिले सम्म सङ्ग्रह गरिएको छैन। यदि तपाईं \"$1\" मा क्लिक नगरी यस पृष्ठबाट बाहिर जानुभयो भने तपाईंको अभिरूची अपडेट गर्न सकिदैन।",
        "prefs-tabs-navigation-hint": "सुझाव: तपाईं ट्याबसहरूमा ट्याबसको बीच आवागमन गर्नका लागि देब्रे वा दाहिने तीर साँचोको प्रयोग गर्न सक्नुहुन्छ।",
        "email-address-validity-valid": "ईमेल ठेगाना मान्य देखिन्छ",
        "userrights-changeable-col": "परिवर्तन गर्न सकिने समूहहरु",
        "userrights-unchangeable-col": "तपाईले परिवर्तन गर्न सक्नुनहुने समूहहरु",
        "userrights-irreversible-marker": "$1*",
-       "userrights-conflict": "पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤\85धिà¤\95ार à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनमा à¤®à¤¤à¤­à¥\87द à¤­à¤¯à¥\8b ! à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤ªà¥\81नरावलà¥\8bà¤\95न à¤¤à¤¥à¤¾ à¤ªà¥\81षà¥\8dà¤\9fि à¤\97रà¥\8dनà¥\81 होस् ।",
-       "userrights-removed-self": "तपाà¤\88लà¥\87 à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\82रà¥\8dवà¤\95 à¤\86फà¥\8dनà¥\8b à¤\85धिà¤\95ारहरà¥\82लाà¤\88 à¤®à¥\87à¤\9fाà¤\89नà¥\81 à¤­à¤¯à¥\8b à¥¤ à¤¤à¥\8dयस à¤\95ारण à¤¤à¤ªà¤¾à¤\88 à¤\85ब à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤¹à¥\87रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81 à¤¹à¥\81नà¥\87 à¤\9bà¥\88नà¥\8d ।",
+       "userrights-conflict": "पà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dताà¤\95à¥\8b à¤\85धिà¤\95ार à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनमा à¤®à¤¤à¤­à¥\87द à¤­à¤¯à¥\8b ! à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤ªà¥\81नरावलà¥\8bà¤\95न à¤¤à¤¥à¤¾ à¤ªà¥\81षà¥\8dà¤\9fि à¤\97रà¥\8dनà¥\81होस् ।",
+       "userrights-removed-self": "तपाà¤\88à¤\82लà¥\87 à¤¸à¤«à¤²à¤¤à¤¾à¤ªà¥\82रà¥\8dवà¤\95 à¤\86फà¥\8dनà¥\8b à¤\85धिà¤\95ारहरà¥\82लाà¤\88 à¤®à¥\87à¤\9fाà¤\89नà¥\81 à¤­à¤¯à¥\8b à¥¤ à¤¤à¥\8dयस à¤\95ारण à¤¤à¤ªà¤¾à¤\88à¤\82 à¤\85ब à¤¯à¥\8b à¤ªà¥\83षà¥\8dठ à¤¹à¥\87रà¥\8dन à¤¸à¤\95à¥\8dनà¥\81 à¤¹à¥\81नà¥\8dन ।",
        "group": "समूह :",
        "group-user": "प्रयोगकर्ताहरू",
        "group-autoconfirmed": "स्वत निश्चित गरिएका प्रयोगकर्ताहरू",
        "action-editmyprivateinfo": "तपाईँको व्यक्तिगत जानकारी सम्पादन गर्नुहोस",
        "action-editcontentmodel": "पृष्ठको सामग्री नमुना सम्पादन",
        "action-managechangetags": "डाटाबेसबाट ट्यागहरू बनाउने र मेटाउने",
-       "action-applychangetags": "तपाईको परिवर्तनसँगै ट्यागहरू लागु गर्ने",
+       "action-applychangetags": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनसà¤\81à¤\97à¥\88 à¤\9fà¥\8dयाà¤\97हरà¥\82 à¤²à¤¾à¤\97à¥\81 à¤\97रà¥\8dनà¥\87",
        "action-changetags": "जोड्ने र हटाउने स्वतन्त्र ट्याग व्यक्तिगत अवतरणहरू र लग इन्ट्रीहरूमा",
        "nchanges": "$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरू}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|पछिल्लो भ्रमण पछि}}",
        "uploadstash-summary": "यो पृष्ठ ती फाइलहरूलाई पहुँच प्रदान गर्छ जुन अपलोड गरिएको छ ‍‌‍‌(वा अपलोड प्रक्रियामा रहेको छ) तर विकिमा अहिले पनि प्रकासित गरिएको छैन। यो फाइलहरू अपलोड गरेको प्रयोगकर्ता वाहेक कसैको लागि पनि उपलब्ध छैन।",
        "uploadstash-clear": "स्टाश गरिएका फाइल हटाउने",
        "uploadstash-nofiles": "तपाईंका कुनै पनि स्टाश गरिएका फाइलहरू छैनन् ।",
-       "uploadstash-badtoken": "दिà¤\87à¤\8fà¤\95à¥\8b à¤\95ारà¥\8dय à¤\85सफलभयà¥\8b , à¤¤à¤ªà¤¾à¤\88को सम्पादन अधिकार समाप्त भयो । पुन: प्रयास गर्नुहोस् ।",
+       "uploadstash-badtoken": "दिà¤\87à¤\8fà¤\95à¥\8b à¤\95ारà¥\8dय à¤\85सफलभयà¥\8b , à¤¸à¤¾à¤¯à¤¦ à¤¤à¤ªà¤¾à¤\88à¤\82को सम्पादन अधिकार समाप्त भयो । पुन: प्रयास गर्नुहोस् ।",
        "uploadstash-errclear": "फाइल हटाउने कार्य असफल भयो ।",
        "uploadstash-refresh": "फाइलहरूको सूची ताजा गर्ने",
        "invalid-chunk-offset": "अमान्य चंक अफसेट",
        "linkstoimage": "यस फाइलमा निम्न{{PLURAL:$1|पृष्ठ जोडिन्छ|$1 पृष्ठहरू जोडिन्छन्}}:",
        "linkstoimage-more": "$1 भन्दा अधिक {{PLURAL:$1|पृष्ठ लिङ्क|पृष्ठ लिङ्कहरू}} यस फाइलसँग जोडिएको छ। \nनिम्नलिखित सूची फाइलसँग {{PLURAL:$1|पहिलो पृष्ठ लिङ्क|पहिलो $1 पृष्ठ लिङ्कहरू}} जोडिने देखाउँछ।\n[[Special:WhatLinksHere/$2|पूर्ण सूची]] पनि उपलब्ध छ।",
        "nolinkstoimage": "यो फाईलसंग लिंकभएको कुनै पृष्ठ छैन.",
-       "morelinkstoimage": "हà¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d [[Special:WhatLinksHere/$1|थप à¤²à¤¿à¤\82à¤\95हरà¥\81]] à¤¯à¥\8b à¤«à¤¾à¤\87लà¤\95à¥\8b।",
+       "morelinkstoimage": "यस à¤«à¤¾à¤\87लà¤\95à¥\8b [[Special:WhatLinksHere/$1|थप à¤²à¤¿à¤\82à¤\95हरà¥\82]] à¤¹à¥\87रà¥\8dनà¥\81हà¥\8bसà¥\8d ।",
        "linkstoimage-redirect": "$1 (फाइल अनुप्रेषण) $2",
        "duplicatesoffile": "निम्नलिखित {{PLURAL:$1|फाइलको प्रतिलिपि हो|$1 फाइलहरूको प्रतिलिपि हो}} ([[Special:FileDuplicateSearch/$2|अधिक जानकारीहरू]]):",
        "sharedupload": "यो फाइल $1 को हो र अन्य परियोजनामा प्रयोग गरिएको हुनसक्छ।",
        "nbytes": "$1 {{PLURAL:$1|बाइट|बाइटहरू}}",
        "ncategories": "$1 {{PLURAL:$1|श्रेणी|श्रेणीहरू}}",
        "ninterwikis": "$1 {{PLURAL:$1|अन्तरविकि|अन्तरविकिहरू}}",
-       "nlinks": "$1 {{PLURAL:$1|लिà¤\82à¤\95|लिà¤\82à¤\95हरà¥\81}}",
+       "nlinks": "$1 {{PLURAL:$1|लिà¤\82à¤\95|लिà¤\82à¤\95हरà¥\82}}",
        "nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
        "nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य|सदस्यहरू}}",
        "nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}",
        "watchlist": "अवलोकन सूची",
        "mywatchlist": "अवलोकनसूची",
        "watchlistfor2": "$1को $2",
-       "nowatchlist": "तपाईको अवलोकन सूचीमा कुनै पनि सामाग्री छैन।",
-       "watchlistanontext": "à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\81ची हेर्न या सम्पादन गर्न लगइन गर्नुहोस्।",
+       "nowatchlist": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\85वलà¥\8bà¤\95न à¤¸à¥\82à¤\9aà¥\80मा à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤¸à¤¾à¤®à¤¾à¤\97à¥\8dरà¥\80 à¤\9bà¥\88न।",
+       "watchlistanontext": "à¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82ची हेर्न या सम्पादन गर्न लगइन गर्नुहोस्।",
        "watchnologin": "प्रवेश (लग ईन) नगरिएको",
        "addwatch": "निगरानी सुचीमा थप्ने",
        "addedwatchtext": "\"[[:$1]]\" पृष्ठ [[Special:Watchlist|अवलोकनसूची]]मा थपियो\nयो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ।",
-       "addedwatchtext-short": "\"$1\" à¤ªà¥\83षà¥\8dठ à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\85बलोकन सूचीमा थप भएको छ ।",
+       "addedwatchtext-short": "\"$1\" à¤ªà¥\83षà¥\8dठ à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\85वलोकन सूचीमा थप भएको छ ।",
        "removewatch": "निगरानी सुचीबाट हटाउने",
-       "removedwatchtext": "पृष्ठ \"[[:$1]]\" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइएको छ।",
+       "removedwatchtext": "\"[[:$1]]\" नामको पृष्ठ [[Special:Watchlist|तपाईंको निगरानी सूची]]बाट हटाइएको छ।",
        "removedwatchtext-short": "पृष्ठ \"$1\" तपाईंको अवलोकनसूची बाट हटाइयो",
        "watch": "अवलोकन",
        "watchthispage": "यो पृष्ठ अवलोकन गर्नुहोस्",
        "unwatchthispage": "निगरानीबाट हटाउने",
        "notanarticle": "सामाग्री सहितको पेज हैन",
        "notvisiblerev": "पूर्वावलोकन हटाइयो",
-       "watchlist-details": "तपाà¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95ा {{PLURAL:$1|$1 à¤ªà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}}वारà¥\8dतालापमा à¤ªà¥\83षà¥\8dठमा गनिएका छैनन्।",
+       "watchlist-details": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82à¤\9aà¥\80मा à¤°à¤¹à¥\87à¤\95ा {{PLURAL:$1|$1 à¤ªà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\82}} à¤µà¤¾à¤°à¥\8dतालाप à¤ªà¥\83षà¥\8dठ गनिएका छैनन्।",
        "wlheader-enotif": "ईमेल जानकारी सक्रिय गरियो ।",
        "wlheader-showupdated": "तपाईँले पछिल्लो पल्ट भ्रमण गरेपछि परिवर्तन भएका पृष्ठहरूलाई <strong>गाढा<strong> गरेर देखाइएको छ ।",
        "wlnote": "$3 र $4 अनुसार विगत {{PLURAL:$2|घण्टामा|'''$2''' घण्टाहरूमा}} {{PLURAL:$1|गरिएको अन्तिम परिवर्तन तल दिइएकोछ|गरिएका अन्तिम  '''$1''' परिवर्तनहरू तल दिइएका छन्}}।",
        "delete-confirm": "मेट्नुहोस् \"$1\"",
        "delete-legend": "मेट्नुहोस्",
        "historywarning": "<strong>चेतावनी:</strong> तपाईंले मेटाउन लाग्नुभएको पृष्ठको इतिहासको लगभग $1 {{PLURAL:$1|पुनरावृत्ति छ|पुनरावृत्तिहरू छन्}}:",
-       "confirmdeletetext": "तपाई यो पृष्ठ र यसको इतिहास मेट्न गइरहनु भएकोछ। कृपया पुष्टि गर्नुहोस् कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तपाईं मेट्न गइरहनु भएकोछ।",
+       "confirmdeletetext": "तपाई यो पृष्ठ र यसको इतिहास मेट्न गइरहनु भएकोछ। कृपया पुष्टि गर्नुहोस् कि [[{{MediaWiki:Policy-url}}|नियम]] मुताबिक तपाईं मेट्न गइरहनु भएकोछ।",
        "actioncomplete": "काम सकियो",
        "actionfailed": "कार्य असफल",
        "deletedtext": "\"$1\" मेटिएको छ।\nहालै हटाइएको सूची $2 मा हेर्नुहोस् ।",
        "isimage": "फाइल लिङ्क",
        "whatlinkshere-prev": "{{PLURAL:$1|पहिलो|पहिलो $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|अर्को|अर्को $1}}",
-       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-links": "â\86\90 à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-hideredirs": "$1 अनुप्रेषित हुन्छ",
        "whatlinkshere-hidetrans": "$1 पारदर्शन",
        "whatlinkshere-hidelinks": "$1 लिङ्कहरु",
-       "whatlinkshere-hideimages": "$1 à¤¤à¤¸à¥\8dवà¥\80र à¤²à¤¿à¤\82à¤\95हरà¥\81",
+       "whatlinkshere-hideimages": "$1 à¤«à¤¾à¤\87ल à¤²à¤¿à¤\82à¤\95हरà¥\82",
        "whatlinkshere-filters": "फिल्टरहरू",
        "autoblockid": "अटोब्लक #$1",
        "block": "प्रयोगकर्तालाई रोकलगाउने",
        "ip_range_invalid": "IP क्षेत्र अमान्य ।",
        "ip_range_toolarge": " /$1 भन्दा ठूलो रेन्ज रोक लगाउन पाइदैन ।.",
        "proxyblocker": "प्रोक्सी निषेध गर्ने",
-       "proxyblockreason": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ानामा à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¤\95िनà¤\95à¥\80 à¤¯à¥\8b à¤\96à¥\81ला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¹à¥\8b à¥¤\nà¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤¸à¥\87वा à¤ªà¥\8dरदायà¤\95 à¤¯à¤¾ à¤ªà¥\8dराविधिà¤\95 à¤¸à¤¹à¤¾à¤¯à¤¤à¤¾à¤²à¤¾à¤\88 सम्पर्क गरी यस सुरक्षा समस्याको बारेमा जानकारी गराउनुहोस् ।",
+       "proxyblockreason": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ानामा à¤°à¥\8bà¤\95 à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤\9b à¤\95िनà¤\95à¥\80 à¤¯à¥\8b à¤\96à¥\81ला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¹à¥\8b à¥¤\nà¤\95à¥\83पया à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87नà¥\8dà¤\9fरनà¥\87à¤\9f à¤¸à¥\87वा à¤ªà¥\8dरदायà¤\95 à¤¯à¤¾ à¤ªà¥\8dराविधिà¤\95 à¤¸à¤¹à¤¾à¤¯à¤¤à¤¾à¤¸à¤\81à¤\97 सम्पर्क गरी यस सुरक्षा समस्याको बारेमा जानकारी गराउनुहोस् ।",
        "sorbs": "DNSBL",
-       "sorbsreason": "तपाà¤\88à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\81चीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।",
+       "sorbsreason": "तपाà¤\88à¤\82à¤\95à¥\8b IP à¤ à¥\87à¤\97ाना à¤\96à¥\81लà¥\8dला à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80à¤\95à¥\8b à¤°à¥\81पमा  DNSBL à¤®à¤¾ à¤¸à¥\82चीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।",
        "sorbs_create_account_reason": "तपाईको IP ठेगाना खुल्ला प्रोक्सीको रुपमा  DNSBL मा सुचीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।\nतपाईले खाता खोल्न सक्नुहुन्न ।",
        "xffblockreason": "एउटा आइपि ठेगाना जुन X-Forwarded-For हेडरमा रहेको छ, या त तपाईंको हो वा त्यस प्रक्सी सर्भरको हो जसको प्रयोग तपाईं गर्दै हुनुहुन्छ र यस माथि प्रतिबन्ध लगाइएको छ। वास्तविक कारण थियो:$1",
        "cant-see-hidden-user": "तपाईले रोक लगाउन खोज्नु भएको प्रयोगकर्ता पहिले नै रोकलगाइ लुकाइ सकिएको छ ।\nतपाईसँग hideuser अधिकार नभएकोले यसलाई हेर्ना या सम्पादन गर्न सक्नुहुन्न ।",
        "ipbblocked": "तपाईंले अरु प्रयोगकर्ताहरूलाई प्रतिबन्धित गर्न वा उनीहरूको प्रतिबन्ध खोल्न सक्नुहुन्न किनभने तपाईं आफै प्रतिबन्धित हुनुहुन्छ।",
-       "ipbnounblockself": "तपाई आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
+       "ipbnounblockself": "तपाई आफैले आफैलाई रोक खुलाउन सक्नुहुन्न ।",
        "lockdb": "डेटाबेस ताल्चामार्ने",
        "unlockdb": "डेटाबेसको ताल्चा खोल्ने",
        "lockdbtext": "डेटाबेसमा ताला लगाउनाले सबै प्रयोगकर्ता पृष्ठ सम्पादन, आफ्नो अभिरूचीमा परिवर्तन, आफ्नो ध्यानसूचीमा सम्पादन, र अन्य वस्तु जसको लागि डेटाबेसमा परिवर्तन गरें हुन्छ, त्यसबाट वन्चित हुनेछ। कृपया यो सुनिश्चित गर्नुहोस् कि तपाईं यो गर्न चाहनुहुन्छ, र तपाईं रक्षण पश्चात ताला खोल्नुहुन्छ ।",
        "movearticle": "पृष्ठ सार्नुहोस्",
        "moveuserpage-warning": "'''चेतावनी:''' तपाईंले प्रयोगकर्ता पृष्ठ सार्न आँट्नु भएकोछ। कृपया याद राख्नुहोस् पृष्ठ मात्र सारिने छ र प्रयोगकर्ताको अर्को नाम राख्न '''सकिंदैन'''।",
        "movecategorypage-warning": "<strong>चेतावनी:</strong> तपाईं एउटा श्रेणी पृष्ठलाई स्थानान्तरित गर्न जादै हुनुहुन्छ। याद राख्नुहोस् कि मात्रै यो पृष्ठ स्थानान्तरित हुनेछ र पुरानो श्रेणीमा सामेल पृष्ठ नयाँ श्रेणी अन्तर्गत <em>जाने</em> छैन।",
-       "movenologintext": "पृष्ठ सार्नको लागि तपाई दर्ता गरिएको र [[Special:UserLogin|प्रवेश गरेको]] प्रयोगकर्ता हुनुपर्छ ।",
+       "movenologintext": "पृष्ठ सार्नको लागि तपाई दर्ता गरिएको र [[Special:UserLogin|प्रवेश गरेको]] प्रयोगकर्ता हुनुपर्छ ।",
        "movenotallowed": "तपाईँलाई पृष्ठ सार्ने अनुमति छैन",
        "movenotallowedfile": "फाइल हटाउने अनुमति तपाईँलाई  छैन।",
        "cant-move-user-page": "तपाईसँग प्रयोगकर्ता पृष्ठहरू सार्न अनुमती छैन (सहपृष्ठहरू बाहेक)",
        "javascripttest-pagetext-frameworks": "कृपया निम्न परीक्षण ढाँचाहरू मध्ये एउटा छान्नुहोस्: $1",
        "javascripttest-pagetext-skins": "परीक्षणको लागि खोल छान्नुहोस्:",
        "javascripttest-qunit-intro": "mediawiki.org मा [$1 जाँचको कागजात] हेर्नुहोस् ।",
-       "tooltip-pt-userpage": "तपाईको प्रयोगकर्ता पृष्ठ",
+       "tooltip-pt-userpage": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤ªà¥\83षà¥\8dठ",
        "tooltip-pt-anonuserpage": "तपाईले जुन IP ठेगानाको रुपमा सम्पादन गर्दै हुनुहुन्छ , त्यसको प्रयोगकर्ता पृष्ठ निम्न छ :",
-       "tooltip-pt-mytalk": "तपाईको वार्ता पृष्ठ",
+       "tooltip-pt-mytalk": "तपाà¤\88à¤\82à¤\95à¥\8b à¤µà¤¾à¤°à¥\8dता à¤ªà¥\83षà¥\8dठ",
        "tooltip-pt-anontalk": "यो IP ठेगानाबाट गरिएका सम्पादनका बारेमा बार्तालाप",
        "tooltip-pt-preferences": "तपाईंका अभिरुचिहरू",
        "tooltip-pt-watchlist": "पृष्ठहरूको सूची जसका परिवर्तनहरूलाई तपाईँले निगरानी गरिरहनु भएको छ",
-       "tooltip-pt-mycontris": "तपाà¤\88à¤\95à¥\8b à¤¯à¥\8bà¤\97दानको सूची",
+       "tooltip-pt-mycontris": "तपाà¤\88à¤\82à¤\95ा à¤¯à¥\8bà¤\97दानहरà¥\82को सूची",
        "tooltip-pt-login": "तपाईँलाई प्रवेशगर्न सुझाव दिइन्छ ; तर यो जरुरी भने छैन",
        "tooltip-pt-logout": "निर्गमन (लग आउट) गर्नुहोस्",
        "tooltip-pt-createaccount": "तपाईंलाई खाता बनाउन र लग इन गर्न हामि प्रोत्साहित गर्छौ; तथापि, यो अनिवार्य भने छैन।",
        "rcpatroldisabledtext": "हालसालैका परिवर्तनहरू गस्ती गुण हालको लागि निश्कृय पारिएको छ ।",
        "markedaspatrollederror": "गस्ती गरिएको भनी चिनो लगाउन सकिएन ।",
        "markedaspatrollederrortext": "गस्ती गरिएको भनि चिनो लगाउनको निम्ती संस्करण खुलाउनु पर्छ ।",
-       "markedaspatrollederror-noautopatrol": "तपाà¤\88à¤\95à¥\8b à¤\86फà¥\8dनà¥\88 à¤¸à¤®à¥\8dपादनलाà¤\88 à¤\97सà¥\8dतà¥\80 à¤\97रिà¤\8fà¤\95à¥\8b à¤­à¤¨à¤¿ à¤\9aिनà¥\8b à¤²à¤\89न à¤ªà¤¾à¤\87दà¥\88न ।",
+       "markedaspatrollederror-noautopatrol": "तपाà¤\88à¤\82 à¤\86फà¥\8dनà¥\88 à¤¸à¤®à¥\8dपादनलाà¤\88 à¤\97सà¥\8dतà¥\80 à¤\97रिà¤\8fà¤\95à¥\8b à¤­à¤¨à¤¿ à¤\9aिनà¥\8b à¤²à¤\97ाà¤\89न à¤¸à¤\95à¥\8dनà¥\81हà¥\81नà¥\8dन ।",
        "markedaspatrollednotify": "$1 मा गरिएको यो परिवर्तनलाई गस्ति गरिएको चिन्ह लगाइएको छ ।",
        "markedaspatrollederrornotify": "गस्ती अङ्कित गर्न विफल।",
        "patrol-log-page": "निगरानीको लग",
        "filedelete-archive-read-only": "यस अभिलेख डाइरेक्टरी \"$1\"मा वेव सर्भरलाई लेख्न सक्दैन ।",
        "previousdiff": "← पुरानो सम्पादन",
        "nextdiff": "नयाँ सम्पादन →",
-       "mediawarning": "'''चेतावनी''': यो फाइलमा घातक कोडहरु पनि हुनसक्छन\nयसलाई सञ्चालन गरेर तपाईको प्रणालीमा नियन्त्रण गरिन सक्छ ।",
+       "mediawarning": "<storng>चेतावनी</storng>: यो फाइलमा घातक कोडहरू पनि हुनसक्छन\nयसलाई सञ्चालन गर्दा तपाईंको प्रणालीमा नियन्त्रण गरिन सक्छ ।",
        "imagemaxsize": "तस्विर आकार सिमा:<br />''(फाइल जानकारी पृष्ठको लागि )''",
        "thumbsize": "थम्बनेल आकार:",
        "widthheight": "$1 × $2",
        "namespacesall": "सबै",
        "monthsall": "सबै",
        "confirmemail": "इमेल ठेगाना पक्का गर्नुहोस्",
-       "confirmemail_noemail": "तपाईको प्रयोगकर्ता [[Special:Preferences|अभिरुचीमा]] मान्य इमेल ठेगाना राखीएको छैन ।",
+       "confirmemail_noemail": "तपाà¤\88à¤\82à¤\95à¥\8b à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता [[Special:Preferences|à¤\85भिरà¥\81à¤\9aà¥\80मा]] à¤®à¤¾à¤¨à¥\8dय à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤°à¤¾à¤\96à¥\80à¤\8fà¤\95à¥\8b à¤\9bà¥\88न à¥¤",
        "confirmemail_text": "{{SITENAME}} मा उपलब्ध इमेल सुविधाहरूको लाभ उठाउनका लागि प्रमाणित ठेगाना हुनु जरूरी छ।\nतपाईंको इमेल ठेगानामा एउटा निश्चित कोड पठाउनका लागि तल दिइएको बटनमा क्लिक गर्नुहोस।\nत्यस मेलमा एउटा कोडले भरिएको एउटा लिङ्क हुनेछ;\nतपाईंको इमेललाई प्रमाणिकरणका लागि यसलाई आफ्नो ब्राउजरआ खोल्नुहोला।",
-       "confirmemail_pending": "तपाà¤\88à¤\95à¥\8b à¤\87मà¥\87लमा à¤ªà¥\8dरपाणिà¤\95रण à¤\95à¥\8bड à¤ªà¤¹à¤¿à¤²à¥\87 à¤¨à¥\88 à¤ªà¤ à¤¾à¤\87 à¤¸à¤\95िà¤\8fà¤\95à¥\8b à¤\9b;\nयदि à¤¤à¤ªà¤¾à¤\88लà¥\87 à¤\85हिलà¥\87 à¤¨à¥\88 à¤\96ाता à¤\96à¥\8bलà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\8b à¤\95à¥\8bडà¤\95à¥\8b à¤¨à¤¿à¤®à¥\8dतà¥\80 à¤ªà¥\81न: à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81 à¤\85à¤\97ि à¤\95à¥\8bड à¤¨à¤\86à¤\87पà¥\81à¤\97à¥\81नà¥\8dà¤\9cà¥\87ल à¤\95à¥\83पया à¤\95à¥\87हà¥\80 à¤¸à¤®à¤¯ à¤ªà¥\8dरतिà¤\95à¥\8dषा à¤\97रà¥\8dनà¥\81हà¥\8bस ।",
+       "confirmemail_pending": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87लमा à¤ªà¥\8dरपाणिà¤\95रण à¤\95à¥\8bड à¤ªà¤¹à¤¿à¤²à¥\87 à¤¨à¥\88 à¤ªà¤ à¤¾à¤\87 à¤¸à¤\95िà¤\8fà¤\95à¥\8b à¤\9b;\nयदि à¤¤à¤ªà¤¾à¤\88à¤\82लà¥\87 à¤\85हिलà¥\87 à¤¨à¥\88 à¤\96ाता à¤\96à¥\8bलà¥\8dनà¥\81 à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\8b à¤­à¤¨à¥\87 à¤\95à¥\8bडà¤\95à¥\8b à¤¨à¤¿à¤®à¥\8dतà¥\80 à¤ªà¥\81न: à¤\85नà¥\81रà¥\8bध à¤\97रà¥\8dनà¥\81 à¤\85à¤\97ि à¤\95à¥\8bड à¤¨à¤\86à¤\87पà¥\81à¤\97à¥\81नà¥\8dà¤\9cà¥\87ल à¤\95à¥\83पया à¤\95à¥\87हà¥\80 à¤¸à¤®à¤¯ à¤ªà¥\8dरतिà¤\95à¥\8dषा à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d ।",
        "confirmemail_send": "एक यकिन कोड मेल गर्नुहोस",
        "confirmemail_sent": "यकिन इमेल पठाइयो ।",
-       "confirmemail_oncreate": "पà¥\8dरमाणिà¤\95रण à¤¤à¤ªà¤¾à¤\88à¤\95à¥\8b à¤\95à¥\8bड à¤\87मà¥\87ल à¤ à¥\87à¤\97ानामा à¤ªà¤ à¤¾à¤\87à¤\8fà¤\95à¥\8b à¤\9b à¥¤\nयस à¤\95à¥\8bड à¤ªà¥\8dरवà¥\87श à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤\85तà¥\8dयवशà¥\8dयà¤\95 à¤\9bà¥\88न, à¤¤à¤° à¤¯à¤¸ à¤µà¤¿à¤\95िमा à¤\87मà¥\87ल à¤ à¥\87à¤\97ानामा à¤\86धारित à¤¸à¥\87वाहरà¥\81 उपभोग गर्न कोड उपलब्ध गराउनु पर्ने हुन्छ ।",
-       "confirmemail_sendfailed": "{{SITENAME}} à¤ªà¥\8dरमाणिà¤\95रण à¤\87मà¥\87ल à¤ªà¤ à¤¾à¤\89न à¤¸à¤\95िà¤\8fन।\nतपाà¤\88à¤\95à¥\8b à¤\87मà¥\87लमा à¤\85मानà¥\8dय à¤µà¤°à¥\8dणहरà¥\81 छन् कि जाँच गर्नुहोस् ।\n\nहुलाकीले दिएको त्रुटी सन्देश: $1",
+       "confirmemail_oncreate": "पà¥\8dरमाणिà¤\95रण à¤\95à¥\8bड à¤¤à¤ªà¤¾à¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ानामा à¤ªà¤ à¤¾à¤\87à¤\8fà¤\95à¥\8b à¤\9b à¥¤\nयà¥\8b à¤\95à¥\8bड à¤ªà¥\8dरवà¥\87श à¤\97रà¥\8dनà¤\95à¥\8b à¤²à¤¾à¤\97ि à¤\85तà¥\8dयवशà¥\8dयà¤\95 à¤\9bà¥\88न, à¤¤à¤° à¤¯à¤¸ à¤µà¤¿à¤\95िमा à¤\87मà¥\87ल à¤ à¥\87à¤\97ानामा à¤\86धारित à¤¸à¥\87वाहरà¥\82 उपभोग गर्न कोड उपलब्ध गराउनु पर्ने हुन्छ ।",
+       "confirmemail_sendfailed": "{{SITENAME}} à¤ªà¥\8dरमाणिà¤\95रण à¤\87मà¥\87ल à¤ªà¤ à¤¾à¤\89न à¤¸à¤\95िà¤\8fन।\nतपाà¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87लमा à¤\85मानà¥\8dय à¤µà¤°à¥\8dणहरà¥\82 छन् कि जाँच गर्नुहोस् ।\n\nहुलाकीले दिएको त्रुटी सन्देश: $1",
        "confirmemail_invalid": "अमान्य प्रमाणिकरण कोड ।\nकोडको मान्य अवधी समाप्त भएको हुनसक्छ ।",
        "confirmemail_needlogin": "तपाईले आफ्नो इमेल प्रमाणिकरण गराउन $1 गर्नु पर्छ ।",
-       "confirmemail_success": "तपाà¤\88à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणिà¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b।\nतपाà¤\88 [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।",
-       "confirmemail_loggedin": "तपाà¤\88à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणित à¤­à¤¯à¥\8b।",
+       "confirmemail_success": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणिà¤\95रण à¤\97रिà¤\8fà¤\95à¥\8b à¤\9b à¥¤\nà¤\85ब à¤¤à¤ªà¤¾à¤\88à¤\82 [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।",
+       "confirmemail_loggedin": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\87मà¥\87ल à¤ à¥\87à¤\97ाना à¤ªà¥\8dरमाणित à¤­à¤\8fà¤\95à¥\8b à¤\9b।",
        "confirmemail_subject": "{{SITENAME}} ई मेलl ठेगानाको पुष्टि",
        "confirmemail_body": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा एउटा  खाता  \"$2\"को नाममा यस ई मेल ठेगानामा  पञ्जीकरण गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु  सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंले पञ्जीकरण गर्नु भएको *होइन* भनें, ई मेलको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय  $4 मा सकिनेछ।",
        "confirmemail_body_changed": "कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,\n{{SITENAME}}मा \"$2\" नामको खाताको  ई मेल ठेगाना यस ठेगानामा  परिवर्तन गरेकोछ।\n\nयो खाता साँच्ची नैं तपाईंको हो भनेर पुष्टि गर्न र {{SITENAME}}मा यो ई मेलका सुविधाहरु  पुनः सक्रिय गर्न तपाईंको ब्राउजरमा यो लिंक खोल्नुहोस्:\n\n$3 \n\nयदि त्यो खाता तपाईंको *होइन* भनें, ई मेल ठेगानाको पुष्टिकरण रद्द गर्न यो लिंक पहिल्याउनुहोस्:\n\n$5\n\nयो पुष्टिकरणको समय  $4 मा सकिनेछ।",
        "watchlistedit-raw-explain": "तपाईंको ध्यानसूचीमा सूचीबद्ध पृष्ठ तल दिइएको छ, र त्यसलाई सूचीबाट निकालेर वा बढाएर परिवर्तन गर्न सकिन्छ;\nप्रत्येक लाइनमा एक शीर्षक दिएर।\nजब पूर्ण भइसक्छ, अनि \"{{int:Watchlistedit-raw-submit}}\" मा क्लिक गर्नुहोस।\nतपाईं [[Special:EditWatchlist|स्तरीय सम्पादकको प्रयोग]] पनि गर्न सक्नुहुन्छ।",
        "watchlistedit-raw-titles": "शीर्षकहरू :",
        "watchlistedit-raw-submit": "निगरानी सूची अध्यावधि गर्ने",
-       "watchlistedit-raw-done": "तपाà¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\81ची अद्यावधिक गरिएको छ।",
+       "watchlistedit-raw-done": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82ची अद्यावधिक गरिएको छ।",
        "watchlistedit-raw-added": "{{PLURAL:$1|१ शिर्षक|$1 शिर्षकरु}} थपियो:",
        "watchlistedit-raw-removed": "{{PLURAL:$1|१ शिर्षक|$1 शिर्षकरु}} हटाइयो:",
        "watchlistedit-clear-title": "अवलोकन सूची खाली गरियो",
        "watchlistedit-clear-legend": "अवलोकन सूची खाली गर्ने",
-       "watchlistedit-clear-explain": "तपाà¤\88à¤\95à¥\8b à¤\85बलोकन सूचीबाट सम्पूर्ण शिर्षकहरू मेटाइदै",
+       "watchlistedit-clear-explain": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\85वलोकन सूचीबाट सम्पूर्ण शिर्षकहरू मेटाइदै",
        "watchlistedit-clear-titles": "शीर्षकहरू :",
        "watchlistedit-clear-submit": "अवलोकनबाट हटाउने (यो स्थायी हुन्छ!)",
-       "watchlistedit-clear-done": "तपाà¤\88à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\81ची हटाइएको छ।",
+       "watchlistedit-clear-done": "तपाà¤\88à¤\82à¤\95à¥\8b à¤¨à¤¿à¤\97रानà¥\80 à¤¸à¥\82ची हटाइएको छ।",
        "watchlistedit-clear-removed": "{{PLURAL:$1|१ शिर्षक|$1 शिर्षकरु}} हटाइयो:",
        "watchlistedit-too-many": "यहाँ देखाउनका लागि अति धेरै पृष्ठहरू छन्",
        "watchlisttools-clear": "अवलोकन सूची खाली गर्ने",
        "tags-create-invalid-title-chars": "ट्याग नामहरूमा यस्तो क्यारेक्टर हुनुहुँदैन जुन पृष्ठको शीर्षकमा प्रयोग नहोस्।",
        "tags-create-already-exists": "ट्याग $1 पहिला देखि नै उपलब्ध ।",
        "tags-create-warnings-above": "निम्नलिखित {{PLURAL:$2|चेतावनी देखाइयो|चेतावनीहरू देखाइयो}} जब ट्याग \"$1\" बनाउने प्रयास गरिएको थियो:",
-       "tags-create-warnings-below": "à¤\9fà¥\8dयाà¤\97 à¤¬à¤¨à¤¾à¤\89दà¥\88, à¤\95à¥\87 à¤¤à¤ªà¤¾à¤\88 जारी राख्न चाहनु हुन्छ ?",
+       "tags-create-warnings-below": "à¤\95à¥\87 à¤¤à¤ªà¤¾à¤\88à¤\82 à¤¯à¥\8b à¤\9fà¥\8dयाà¤\97 à¤¬à¤¨à¤¾à¤\89नà¥\87 à¤\95ाम जारी राख्न चाहनु हुन्छ ?",
        "tags-delete-title": "ट्याग मेट्नुहोस्",
        "tags-delete-explanation-initial": "तपाईले ट्याग \"$1\" लाई डाटावेसबाट हटाउन खोज्दै हुनु हुन्छ ।",
        "tags-delete-explanation-in-use": "ट्यागलाई {{PLURAL:$2|$2 संशोधन वा लग प्रविष्टि|सबै $2 संशोधन र/वा लग प्रविष्टिहरू}}बाट हटाइनेछ जहाँ अहिले त्यसको प्रयोग गरिंदै छ।",
        "dberr-usegoogle": "तपाईले अहिले गुगलबाट खोज गर्न प्रयास गर्न सक्नुहुन्छ।",
        "dberr-outofdate": "कृपया स्मरणमा राख्नुहोस् हाम्रा लेखहरूको सूची जुन उनीहरूले राखेका छन् त्यो अद्यावधिक नहुन सक्छ ।",
        "dberr-cachederror": "यो अनुरोध गरिएको पृष्ठको क्याशमा रहेका प्रतिलिपी हो , र अद्यावधिक नहुन सक्छ ।",
-       "htmlform-invalid-input": "तपाà¤\88à¤\95à¥\8b à¤\95à¥\81नà¥\88 à¤ªà¥\8dरविषà¥\8dठिमा सही छैनन्",
+       "htmlform-invalid-input": "तपाà¤\88à¤\82à¤\95à¥\8b à¤\95à¥\81नà¥\88 à¤ªà¥\8dरविषà¥\8dठिहरà¥\82 सही छैनन्",
        "htmlform-select-badoption": "तपाईले खुलाउनु भएको मान मान्य विकल्प हैन ।",
        "htmlform-int-invalid": "तपाईले खुलाउनु भएको मान कुनै इन्टिजर हैन ।",
        "htmlform-float-invalid": "तपाईले जनाउनु भएको मान कुनै संख्या हैन ।",
        "expand_templates_generate_xml": "एक्सएमएल पार्स रूख देखाउने",
        "expand_templates_generate_rawhtml": "सुद्ध HTML देखाउने",
        "expand_templates_preview": "पूर्वावलोकन",
-       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाई लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो, भने पुन प्रयास गर्नुहोस।</strong>\nयदि यसले कार्य पूर्ण भएन भने [[Special:UserLogout|लग आउट गरेर]] फेरी लग इन गर्नुहोला।",
-       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाई लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भने कृपया [[Special:UserLogin|लग इन गरेर]] पुन प्रयास गर्नुहोला।</strong>",
+       "expand_templates_preview_fail_html": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाईंले लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्ववावलोकन प्रयास हो, भने पुन प्रयास गर्नुहोस् ।</strong>\nयदि यसले कार्य पूर्ण भएन भने [[Special:UserLogout|लग आउट गरेर]] फेरी लग इन गर्नुहोला ।",
+       "expand_templates_preview_fail_html_anon": "<em>किनकि {{SITENAME}} सिधै एचटिएमयल सक्षम छ र तपाईंले लग इन गर्नुभएको छैन, पूर्वावलोकन लुकाइएको छ ताकि सम्भावित जाभास्क्रिप्ट आक्रमणलाई रोक्न सकियोस् ।</em>\n\n<strong>यदि यो मान्य पूर्वावलोकन प्रयास हो भने कृपया [[Special:UserLogin|लग इन गरेर]] पुन प्रयास गर्नुहोला।</strong>",
        "pagelanguage": "पृष्ठ भाषा छान्ने",
        "pagelang-name": "पृष्ठ",
        "pagelang-language": "भाषा",
index 1fdbd17..7faff2f 100644 (file)
        "session_fail_preview_html": "'''Uw bewerking is niet verwerkt, omdat de sessiegegevens verloren zijn gegaan.'''\n\n''Omdat in {{SITENAME}} ruwe HTML is ingeschakeld, is een voorvertoning niet mogelijk als bescherming tegen aanvallen met JavaScript.''\n\n'''Als dit een legitieme bewerking is, probeer het dan opnieuw.'''\nAls het dan nog niet lukt, [[Special:UserLogout|meld uzelf dan af]] en vervolgens weer aan.",
        "token_suffix_mismatch": "'''Uw bewerking is geweigerd, omdat uw browser de leestekens in het bewerkingstoken onjuist heeft behandeld.'''\nDe bewerking is geweigerd om verminking van de paginatekst te voorkomen.\nDit gebeurt soms als er een webgebaseerde proxydienst wordt gebruikt die fouten bevat.",
        "edit_form_incomplete": "'''Sommige onderdelen van het bewerkingsformulier hebben de server niet bereikt. Controleer of uw bewerkingen intact zijn en probeer het opnieuw.'''",
-       "editing": "Bezig met bewerken van $1",
+       "editing": "Bewerken van $1",
        "creating": "Bezig met het aanmaken van $1",
        "editingsection": "Bezig met bewerken van $1 (deelpagina)",
        "editingcomment": "Bezig met bewerken van $1 (nieuw kopje)",
        "search-category": "(categorie $1)",
        "search-file-match": "(komt overeen met de inhoud van het bestand)",
        "search-suggest": "Bedoelde u: $1",
+       "search-rewritten": "Resultaten voor $1 getoond. Zoek in plaats daarvan naar $2.",
        "search-interwiki-caption": "Zusterprojecten",
        "search-interwiki-default": "Resultaten van $1:",
        "search-interwiki-more": "(meer)",
        "uploaddisabledtext": "Het uploaden van bestanden is uitgeschakeld.",
        "php-uploaddisabledtext": "Het uploaden van bestanden is uitgeschakeld in PHP.\nControleer de instelling \"file_uploads\".",
        "uploadscripted": "Dit bestand bevat HTML- of scriptcode die foutief door uw browser kan worden weergegeven.",
-       "upload-scripted-pi-callback": "Kan geen bestand met XML-stylesheet-processing-instructies uploaden.",
+       "upload-scripted-pi-callback": "Het uploaden van een bestand met instructies voor de verwerking van XML-stijlbladen is niet mogelijk.",
        "uploaded-script-svg": "Gevonden scriptable element \"$1\" in het geüploade SVG-bestand.",
        "uploaded-hostile-svg": "Gevonden onveilige CSS in de stijl element van het geüploade SVG-bestand .",
        "uploaded-event-handler-on-svg": "Het instellen van de event-handler attributen <code>$1=\"$2\"</code> is niet toegestaan in SVG-bestanden.",
        "changecontentmodel-success-title": "Het inhoudsmodel is veranderd",
        "changecontentmodel-success-text": "Het inhoudstype van [[:$1]] is veranderd.",
        "changecontentmodel-cannot-convert": "De inhoud van [[:$1]] kan niet worden omgezet in een type $2.",
-       "changecontentmodel-title-cantexist": "Geen pagina mogelijk op $1.",
        "changecontentmodel-nodirectediting": "Het inhoudsmodel $1 ondersteunt direct bewerken niet",
        "log-name-contentmodel": "Veranderingenlogboek van inhoudsmodel",
        "log-description-contentmodel": "Gebeurtenissen rond het inhoudsmodel van een pagina",
        "special-characters-title-endash": "liggend streepje",
        "special-characters-title-emdash": "gedachtenstreepje",
        "special-characters-title-minus": "minteken",
+       "mw-widgets-dateinput-no-date": "Geen datum geselecteerd",
+       "mw-widgets-dateinput-placeholder-day": "JJJJ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "JJJJ-MM",
        "mw-widgets-titleinput-description-new-page": "pagina bestaat nog niet",
        "mw-widgets-titleinput-description-redirect": "doorverwijzing naar $1"
 }
index fe0345f..c4c3884 100644 (file)
        "pool-timeout": "Tidsavbrot under venting på låsing.",
        "pool-queuefull": "Køen er full.",
        "pool-errorunknown": "Ukjend feil",
+       "poolcounter-usage-error": "Bruksfeil: $1",
        "aboutsite": "Om {{SITENAME}}",
        "aboutpage": "Project:Om",
        "copyright": "Innhaldet er utgjeve under $1 minder anna er oppgjeve.",
        "anoneditwarning": "'''Åtvaring:''' Du er ikkje innlogga.\nIP-adressa di vil verta lagra i den offentlege endringshistorikken til sida. Om du <strong>[$1 loggar inn]</strong> eller <strong>[$2 lager ein konto]</strong>, vil endringane dine knyttast til brukarnamnet ditt, saman med andre fordelar.",
        "anonpreviewwarning": "''Du er ikkje innlogga. Lagrar du vil IP-adressa di verta ført opp i endringshistorikken til denne sida.''",
        "missingsummary": "'''Påminning:''' Du har ikkje skrive noko endringssamandrag. Dersom du trykkjer «Lagre» ein gong til, vert endringa di lagra utan.",
+       "selfredirect": "<strong>Åtvaring:</strong> Du omdirigerer sida til seg sjølv.\nDu kan ha oppgjeve feil mål for omdirigeringa, eller det kan vera at du endrar feil side.\nKlikkar du «{{int:savearticle}}» på nytt vil omdirigeringa opprettast kor som er.",
        "missingcommenttext": "Ver venleg og skriv ein kommentar nedanfor.",
        "missingcommentheader": "'''Påminning:''' Du har ikkje oppgjeve noko emne/overskrift for denne kommentaren.\nDersom du trykkjer «{{int:savearticle}}» ein gong til, vert endringa di lagra utan.",
        "summary-preview": "Førehandsvising av endringssamandraget:",
        "activeusers-intro": "Dette er ei liste over brukarar som har hatt ei eller anna form for aktivitet innanfor {{PLURAL:$1|den siste dagen|dei siste dagane}}.",
        "activeusers-count": "{{PLURAL:$1|Éi handling|$1 handlingar}} {{PLURAL:$3|det siste døgeret|dei siste $3 døgra}}",
        "activeusers-from": "Vis brukarar frå og med:",
-       "activeusers-hidebots": "Skjul botar",
-       "activeusers-hidesysops": "Skjul administratorar",
+       "activeusers-hidebots": "Gøym robotar",
+       "activeusers-hidesysops": "Gøym administratorar",
        "activeusers-noresult": "Ingen brukarar funne.",
        "listgrouprights": "Rettar for brukargrupper",
        "listgrouprights-summary": "Detter ei liste som viser brukargruppene som er definerte på wikien, og kva rettar dei har. Det kan finnast [[{{MediaWiki:Listgrouprights-helppage}}|meir informasjon]]  om dei ulike rettane.",
        "imgmultipageprev": "← førre sida",
        "imgmultipagenext": "neste side →",
        "imgmultigo": "Gå!",
-       "imgmultigoto": "Gå til sida $1",
+       "imgmultigoto": "Gå til side $1",
        "img-lang-default": "(standardspråk)",
        "img-lang-info": "Teikn biletet på $1. $2",
        "img-lang-go": "Gjer det",
        "revdelete-uname-unhid": "brukarnamn gjort synleg",
        "revdelete-restricted": "la til avgrensingar for administratorar",
        "revdelete-unrestricted": "fjerna avgrensingar for administratorar",
+       "logentry-suppress-reblock": "$1 {{GENDER:$2|endra}} blokkeringsinnstillingar for {{GENDER:$4|$3}} med opphøyrstid $5 $6",
        "logentry-move-move": "$1 {{GENDER:$2|flytte}} sida $3 til $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|flytte}} sida $3 til $4 utan å lata etter ei omdirigering",
        "logentry-move-move_redir": "$1 {{GENDER:$2|flytte}} sida $3 til $4 over ei omdirigering",
        "special-characters-group-bangla": "Bengali",
        "special-characters-group-telugu": "Telugu",
        "special-characters-group-sinhala": "Singalesisk",
-       "special-characters-group-gujarati": "Gujarati"
+       "special-characters-group-gujarati": "Gujarati",
+       "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM"
 }
index ea09944..ce750b8 100644 (file)
        "rcshowhideanons": "$1 talagamit a e migpakilala",
        "rcshowhidepatr": "$1 edit a babanten (patrolled edits)",
        "rcshowhidemine": "$1 deng elilan ku",
+       "rcshowhidecategorization-show": "Pakit",
        "rclinks": "Pakit la reng tauling $1 miyalilan anyang tauling $2 aldo<br />$3",
        "diff": "aliwa",
        "hist": "amlat",
        "upload-file-error-text": "Mika pamagkamaling pangkilub aniang susubukan nang maglalang pansamantalang simpan king server.\nPakiyaus 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.\nPakilawe mu nung ustu ya at maliari yang luban ing URL, at subukan mung pasibayu.\nNung atin pa muring prublema, maus kang talapanibala ([[Special:ListUsers/sysop|administrator]]).",
+       "upload-dialog-button-cancel": "E taglus",
+       "upload-dialog-button-done": "Meyari na",
+       "upload-dialog-button-save": "Isikap (save)",
+       "upload-dialog-button-upload": "Maglulan (upload)",
+       "upload-dialog-label-infoform-title": "Ding detalye",
+       "upload-dialog-label-infoform-name": "Lagyu",
+       "upload-dialog-label-infoform-description": "Pamilarawan",
        "upload-curl-error6": "E ne ayabut ing URL",
        "upload-curl-error6-text": "E ne ayabut ing mibieng URL.\nPakilawe mung pasibayu nung ustu ya ing URL at makasalangi ya ing karinan (site).",
        "upload-curl-error28": "Megisan na ing oras para king pamag-upload",
index 1bf6dc2..5e0e4a8 100644 (file)
        "download": "Runnerlaade",
        "listredirects": "Lischt vun Weiderleidinge",
        "randompage": "Ennich Ardickel",
+       "randomincategory-submit": "OK",
        "randomredirect": "Random Weiderleiding",
        "statistics": "Nummere",
        "statistics-header-pages": "Nummere vun Bledder",
index 007387b..c39ce4c 100644 (file)
@@ -7,7 +7,8 @@
                        "Manuae",
                        "SPS",
                        "Xqt",
-                       "아라"
+                       "아라",
+                       "Purodha"
                ]
        },
        "tog-underline": "Ling'g unnaschdraische",
        "resetpass-abort-generic": "S'Passwoad weggsle isch vunna Eawaidarung unnabroche worre.",
        "resetpass-expired": "Doi Passwoad isch abgloffe. Gebbä naijes Passwoad oi.",
        "passwordreset": "Kennword zriggsedze",
-       "passwordreset-legend": "Kennword zriggsedze",
        "passwordreset-username": "Middawaida:",
        "passwordreset-capture": "E-Mail õgugge?",
        "changeemail": "E-Mail-Adress ännare",
index 970497a..f5f0c3d 100644 (file)
        "actionthrottledtext": "Mechanizm obrony przed spamem ogranicza liczbę wykonań tej czynności w jednostce czasu. Usiłowałeś przekroczyć to ograniczenie. Spróbuj jeszcze raz za kilka minut.",
        "protectedpagetext": "Wyłączono możliwość edycji tej strony.",
        "viewsourcetext": "Tekst źródłowy strony można podejrzeć i skopiować.",
-       "viewyourtext": "Tekst źródłowy '''zmodyfikowanej''' przez Ciebie strony możesz podejrzeć i skopiować",
+       "viewyourtext": "Tekst źródłowy <strong>zmodyfikowanej przez Ciebie</strong> strony możesz podejrzeć i skopiować.",
        "protectedinterface": "Ta strona zawiera tekst interfejsu oprogramowania wiki i jest zabezpieczona przed nadużyciami.\nBy dodać lub zmienić tłumaczenia wszystkich serwisów wiki, użyj [//translatewiki.net/ translatewiki.net], projektu lokalizacji MediaWiki.",
        "editinginterface": "<strong>Ostrzeżenie:</strong> Edytujesz stronę, która zawiera tekst interfejsu oprogramowania.\nZmiany na tej stronie zmienią wygląd interfejsu dla innych użytkowników tej wiki.",
        "translateinterface": "Aby dodać lub zmienić tłumaczenia wszystkich wiki, użyj [//translatewiki.net/ translatewiki.net], projekt lokalizacji oprogramowania MediaWiki.",
        "logouttext": "'''Nie jesteś już zalogowany.'''\n\nZauważ, że do momentu wyczyszczenia pamięci podręcznej przeglądarki niektóre strony mogą wyglądać tak, jakbyś wciąż był zalogowany.",
        "welcomeuser": "Witaj, $1!",
        "welcomecreation-msg": "Twoje konto zostało utworzone.\nMożesz zmienić swoje [[Special:Preferences|preferencje]], jeśli chcesz.",
-       "yourname": "Nazwa {{GENDER:|użytkownika|użytkowniczki}}",
+       "yourname": "Nazwa {{GENDER:|użytkownika|użytkowniczki}}:",
        "userlogin-yourname": "Nazwa użytkownika",
        "userlogin-yourname-ph": "Wprowadź swoją nazwę użytkownika",
        "createacct-another-username-ph": "Wprowadź nazwę użytkownika",
        "readonlywarning": "'''Uwaga! Baza danych została zablokowana do celów administracyjnych. W tej chwili nie można zapisać nowej wersji strony. Jeśli chcesz, może skopiować ją do pliku, aby móc zapisać ją później.'''\n\nAdministrator, który zablokował bazę, podał następujące wyjaśnienie: $1",
        "protectedpagewarning": "'''Uwaga! Możliwość modyfikacji tej strony została zabezpieczona. Mogą ją edytować jedynie użytkownicy z uprawnieniami administratora.'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "semiprotectedpagewarning": "'''Uwaga!''' Ta strona została zabezpieczona i tylko zarejestrowani użytkownicy mogą ją edytować.\nOstatni wpis z rejestru jest pokazany poniżej.",
-       "cascadeprotectedwarning": "<strong>Uwaga:<strong> Ta strona została zabezpieczona i tylko użytkownicy z uprawnieniami administratora mogą ją edytować. Została ona osadzona w {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
+       "cascadeprotectedwarning": "<strong>Uwaga:</strong> Ta strona została zabezpieczona i tylko użytkownicy z uprawnieniami administratora mogą ją edytować. Została ona osadzona w {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:",
        "titleprotectedwarning": "'''Uwaga! Utworzenie strony o tej nazwie zostało zabezpieczone. Do jej utworzenia wymagane są [[Special:ListGroupRights|specyficzne uprawnienia]].'''\nOstatni wpis z rejestru jest pokazany poniżej.",
        "templatesused": "{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym artykule:",
        "templatesusedpreview": "{{PLURAL:$1|Szablon użyty|Szablony użyte}} w tym podglądzie:",
        "revdelete-radio-unset": "Widoczny",
        "revdelete-suppress": "Utajnij informacje przed administratorami, tak samo jak przed innymi",
        "revdelete-unsuppress": "Wyłącz utajnianie dla odtwarzanej historii zmian",
-       "revdelete-log": "Powód",
+       "revdelete-log": "Powód:",
        "revdelete-submit": "Zaakceptuj dla {{PLURAL:$1|wybranej|wybranych}} wersji",
        "revdelete-success": "'''Uaktualniono widoczność wersji.'''",
        "revdelete-failure": "'''Widoczność wersji nie może zostać uaktualniona – '''\n$1",
        "revdelete-otherreason": "Inny lub dodatkowy powód:",
        "revdelete-reasonotherlist": "Inny powód",
        "revdelete-edit-reasonlist": "Edytuj listę przyczyn usunięcia",
-       "revdelete-offender": "Autor wersji",
+       "revdelete-offender": "Autor wersji:",
        "suppressionlog": "Rejestr utajniania",
        "suppressionlogtext": "Poniżej znajduje się lista usunięć i blokad utajnionych przed administratorami.\nZobacz [[Special:BlockList|rejestr blokad]], jeśli chcesz sprawdzić aktualne zakazy i blokady.",
        "mergehistory": "Scalanie historii stron",
        "mergehistory-autocomment": "Historia [[:$1]] scalona z [[:$2]]",
        "mergehistory-comment": "Historia [[:$1]] scalona z [[:$2]]: $3",
        "mergehistory-same-destination": "Strona źródłowa i docelowa nie mogą być takie same",
-       "mergehistory-reason": "Powód",
+       "mergehistory-reason": "Powód:",
        "mergelog": "Scalone",
        "revertmerge": "Rozdziel",
        "mergelogpagetext": "Poniżej znajduje się lista ostatnich scaleń historii zmian stron.",
        "search-category": "(kategoria $1)",
        "search-file-match": "(odpowiada zawartości pliku)",
        "search-suggest": "Czy chodziło Ci o: $1",
+       "search-rewritten": "Wyświetlone wyniki dla $1. zamiast tego wyszukaj $2.",
        "search-interwiki-caption": "Projekty siostrzane",
        "search-interwiki-default": "Wyniki od $1:",
        "search-interwiki-more": "(więcej)",
        "search-nonefound": "Brak wyników spełniających kryteria podane w zapytaniu.",
        "powersearch-legend": "Wyszukiwanie zaawansowane",
        "powersearch-ns": "Przeszukaj przestrzenie nazw:",
-       "powersearch-togglelabel": "Zaznacz",
+       "powersearch-togglelabel": "Zaznacz:",
        "powersearch-toggleall": "wszystko",
        "powersearch-togglenone": "nic",
        "powersearch-remember": "Zapamiętaj wybór dla kolejnych wyszukiwań",
        "rows": "Wiersze:",
        "columns": "Kolumny:",
        "searchresultshead": "Wyszukiwanie",
-       "stub-threshold": "Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href=\"#\" class=\"stub\">zalążek (stub)</a>",
+       "stub-threshold": "Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href=\"#\" class=\"stub\">zalążek (stub)</a>:",
        "stub-threshold-disabled": "Wyłączone",
        "recentchangesdays": "Liczba dni prezentowanych w ostatnich zmianach:",
        "recentchangesdays-max": "(maksymalnie $1 {{PLURAL:$1|dzień|dni}})",
        "prefs-registration": "Data rejestracji:",
        "yourrealname": "Imię i nazwisko:",
        "yourlanguage": "Język interfejsu:",
-       "yourvariant": "Wariant języka treści",
+       "yourvariant": "Wariant języka treści:",
        "prefs-help-variant": "Preferowany wariant ortografii, który ma zostać użyty przy wyświetlaniu treści tej wiki.",
        "yournick": "Nowy podpis:",
        "prefs-help-signature": "Wypowiedzi na stronach dyskusji powinny być podpisywane za pomocą „<nowiki>~~~~</nowiki>”, dzięki temu automatycznie wstawiany jest Twój podpis wraz z bieżącą datą.",
        "email-address-validity-invalid": "Wymagany jest prawidłowy adres!",
        "userrights": "Zarządzanie uprawnieniami użytkowników",
        "userrights-lookup-user": "Zarządzaj grupami użytkownika",
-       "userrights-user-editname": "Wprowadź nazwę użytkownika",
+       "userrights-user-editname": "Wprowadź nazwę użytkownika:",
        "editusergroup": "Edytuj grupy użytkownika",
        "editinguser": "Zmiana uprawnień {{GENDER:$1|użytkownika|użytkowniczki}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Edytuj grupy użytkownika",
        "userrights-groupsmember": "Należy do:",
        "userrights-groupsmember-auto": "Na stałe należy do:",
        "userrights-groups-help": "Możesz zmienić przynależność tego użytkownika do podanych grup:\n* Zaznaczone pole oznacza przynależność użytkownika do danej grupy.\n* Niezaznaczone pole oznacza, że użytkownik nie należy do danej grupy.\n* Gwiazdka * informuje, że nie możesz usunąć użytkownika z grupy po dodaniu do niej lub dodać po usunięciu.",
-       "userrights-reason": "Powód",
+       "userrights-reason": "Powód:",
        "userrights-no-interwiki": "Nie masz dostępu do edycji uprawnień na innych wiki.",
        "userrights-nodatabase": "Baza danych $1 nie istnieje lub nie jest lokalna.",
        "userrights-nologin": "Musisz [[Special:UserLogin|zalogować się]] na konto administratora, by nadawać uprawnienia użytkownikom.",
        "userrights-notallowed": "Nie jesteś upoważniony do nadawania i odbierania uprawnień użytkownikom.",
-       "userrights-changeable-col": "Grupy, które możesz wybrać:",
-       "userrights-unchangeable-col": "Grupy, których nie możesz wybrać:",
+       "userrights-changeable-col": "Grupy, które możesz wybrać",
+       "userrights-unchangeable-col": "Grupy, których nie możesz wybrać",
        "userrights-conflict": "Konflikt zmiany uprawnień użytkownika! Proszę sprawdzić i potwierdzić swoje zmiany.",
        "userrights-removed-self": "Pomyślnie odebrałeś sobie uprawnienia. W związku z tym nie masz już dostępu do tej strony.",
-       "group": "Grupa",
+       "group": "Grupa:",
        "group-user": "Użytkownicy",
        "group-autoconfirmed": "Automatycznie zatwierdzeni użytkownicy",
        "group-bot": "Boty",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|obserwujący użytkownik|obserwujących użytkowników}}]",
        "rc_categories": "Ogranicz do kategorii (oddzielaj za pomocą „|”)",
-       "rc_categories_any": "Wszystkie",
+       "rc_categories_any": "Dowolna z wybranych",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajty|bajtów}} po zmianie",
        "newsectionsummary": "/* $1 */ nowa sekcja",
        "rc-enhanced-expand": "Pokaż szczegóły",
        "uploadlogpagetext": "Lista ostatnio przesłanych plików.\nPrzejdź na stronę [[Special:NewFiles|galerii nowych plików]], by zobaczyć pliki jako miniaturki.",
        "filename": "Nazwa pliku",
        "filedesc": "Opis",
-       "fileuploadsummary": "Opis",
+       "fileuploadsummary": "Opis:",
        "filereuploadsummary": "Zmiany w pliku:",
-       "filestatus": "Status prawny",
-       "filesource": "Źródło",
+       "filestatus": "Status prawny:",
+       "filesource": "Źródło:",
        "ignorewarning": "Zignoruj ostrzeżenia i wymuś zapisanie pliku",
        "ignorewarnings": "Ignoruj wszystkie ostrzeżenia",
        "minlength1": "Nazwa pliku musi składać się co najmniej z jednej litery.",
        "file-thumbnail-no": "Nazwa pliku zaczyna się od <strong>$1</strong>.\nWydaje się, że jest to pomniejszona grafika ''(miniaturka)''.\nJeśli posiadasz tę grafikę w pełnym rozmiarze – prześlij ją. Jeśli chcesz wysłać tę – zmień nazwę przesyłanego obecnie pliku.",
        "fileexists-forbidden": "Plik o tej nazwie już istnieje i nie może zostać nadpisany.\nJeśli chcesz przesłać plik cofnij się i prześlij go pod inną nazwą. [[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Plik o tej nazwie już istnieje we współdzielonym repozytorium plików.\nCofnij się i załaduj plik pod inną nazwą. [[File:$1|thumb|center|$1]]",
-       "file-exists-duplicate": "Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików:}}",
+       "file-exists-duplicate": "Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików}}:",
        "file-deleted-duplicate": "Identyczny do tego plik ([[:$1]]) został wcześniej usunięty.\nSprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.",
        "file-deleted-duplicate-notitle": "Plik jest identyczny z plikiem, który został wcześniej usunięty, a jego nazwa została ukryta. Należy poprosić kogoś z możliwością przeglądania ukrytych danych, aby przeanalizował sytuację przed przystąpieniem do jego ponownego przesłania.",
        "uploadwarning": "Ostrzeżenie o przesyłaniu",
        "uploadvirus": "W pliku jest wirus! Szczegóły: $1",
        "uploadjava": "Ten plik zawiera deklarację klasy Java skompresowaną ZIP.\nPrzesyłanie plików Java nie jest dozwolone, ponieważ mogłoby zostać użyte do obchodzenia zabezpieczeń.",
        "upload-source": "Plik źródłowy",
-       "sourcefilename": "Nazwa pierwotna",
-       "sourceurl": "Źródłowy adres URL",
-       "destfilename": "Nazwa docelowa",
+       "sourcefilename": "Nazwa pierwotna:",
+       "sourceurl": "Źródłowy adres URL:",
+       "destfilename": "Nazwa docelowa:",
        "upload-maxfilesize": "Wielkość pliku ograniczona jest do $1",
        "upload-description": "Opis pliku",
        "upload-options": "Opcje przesyłania",
        "upload-curl-error6-text": "Podany adres URL jest nieosiągalny. Upewnij się, czy podany adres URL jest prawidłowy i czy dana strona jest dostępna.",
        "upload-curl-error28": "Upłynął limit czasu odpowiedzi",
        "upload-curl-error28-text": "Zbyt długi czas odpowiedzi serwera.\nSprawdź, czy strona działa, odczekaj kilka minut i spróbuj ponownie.\nMożesz także spróbować w czasie mniejszego obciążenia serwera.",
-       "license": "Licencja",
+       "license": "Licencja:",
        "license-header": "Licencja",
        "nolicense": "Nie wybrano",
        "licenses-edit": "Edytuj opcje licencji",
        "upload_source_file": "(wybrany plik na twoim komputerze)",
        "listfiles-delete": "usuń",
        "listfiles-summary": "Na tej stronie specjalnej prezentowane są wszystkie przesłane pliki.",
-       "listfiles_search_for": "Szukaj pliku o nazwie",
+       "listfiles_search_for": "Szukaj pliku o nazwie:",
        "listfiles-userdoesnotexist": "Konto użytkownika „$1” nie jest zarejestrowane.",
        "imgfile": "plik",
        "listfiles": "Lista plików",
        "filerevert": "Przywracanie $1",
        "filerevert-legend": "Przywracanie poprzedniej wersji pliku",
        "filerevert-intro": "Zamierzasz przywrócić '''[[Media:$1|$1]]''' do [$4 wersji z $3, $2].",
-       "filerevert-comment": "Powód",
+       "filerevert-comment": "Powód:",
        "filerevert-defaultcomment": "Przywrócono wersję z $2, $1",
        "filerevert-submit": "Przywróć",
        "filerevert-success": "Plik '''[[Media:$1|$1]]''' został cofnięty do [$4 wersji z $3, $2].",
        "filedelete-legend": "Usuń plik",
        "filedelete-intro": "Chcesz usunąć plik '''[[Media:$1|$1]]''' razem z całą jego historią.",
        "filedelete-intro-old": "Usuwasz wersję pliku '''[[Media:$1|$1]]''' z datą [$4 $3, $2].",
-       "filedelete-comment": "Powód",
+       "filedelete-comment": "Powód:",
        "filedelete-submit": "Usuń plik",
        "filedelete-success": "Usunięto plik '''$1'''.",
        "filedelete-success-old": "Usunięto plik '''[[Media:$1|$1]]''' w wersji z $3, $2.",
        "filedelete-nofile": "Plik '''$1''' nie istnieje.",
        "filedelete-nofile-old": "Brak zarchiwizowanej wersji '''$1''' o podanych atrybutach.",
-       "filedelete-otherreason": "Inny powód",
+       "filedelete-otherreason": "Inny powód:",
        "filedelete-reason-otherlist": "Inny powód",
        "filedelete-reason-dropdown": "* Najczęstsze przyczyny usunięcia\n** Naruszenie praw autorskich\n** Kopia już istniejącego pliku",
        "filedelete-edit-reasonlist": "Edycja listy powodów usunięcia pliku",
        "filedelete-maintenance-title": "Nie można usunąć pliku",
        "mimesearch": "Wyszukiwanie MIME",
        "mimesearch-summary": "Ta strona umożliwia wyszukiwanie plików ze względu na ich typ MIME.\nUżycie: typ_treści/podtyp albo typ_treści/*, np. <code>image/jpeg</code>.",
-       "mimetype": "Typ MIME",
+       "mimetype": "Typ MIME:",
        "download": "pobierz",
        "unwatchedpages": "Nieobserwowane strony",
        "listredirects": "Lista przekierowań",
        "double-redirect-fixed-maintenance": "Automatyczna naprawa podwójnego przekierowania podczas prac konserwacyjnych z [[$1]] na [[$2]].",
        "double-redirect-fixer": "Naprawiacz przekierowań",
        "brokenredirects": "Zerwane przekierowania",
-       "brokenredirectstext": "Poniższe przekierowania wskazują na nieistniejące strony.",
+       "brokenredirectstext": "Poniższe przekierowania wskazują na nieistniejące strony:",
        "brokenredirects-edit": "edytuj",
        "brokenredirects-delete": "usuń",
        "withoutinterwiki": "Strony bez odnośników do projektów w innych językach",
        "unusedimages": "Nieużywane pliki",
        "wantedcategories": "Brakujące kategorie",
        "wantedpages": "Najpotrzebniejsze strony",
-       "wantedpages-summary": "Lista najczęściej linkowanych, nieistniejących stron, z wyłączeniem stron, do których linkują wyłącznie przekierowania. By zobaczyć listę nieistniejących stron, do których linkują przekierowania, zobacz [[{{#special:BrokenRedirects}}|listę zerwanych przekierowań]].",
+       "wantedpages-summary": "Lista najczęściej linkowanych, nieistniejących stron, z wyłączeniem takich stron, do których linkują wyłącznie przekierowania. By zobaczyć listę nieistniejących stron, do których linkują przekierowania, zobacz [[{{#special:BrokenRedirects}}|listę zerwanych przekierowań]].",
        "wantedpages-badtitle": "Nieprawidłowy tytuł wśród wyników – $1",
        "wantedfiles": "Potrzebne pliki",
        "wantedfiletext-cat": "Następujące pliki są używane, ale nie istnieją. Pliki z obcych repozytoriów mogą być wymienione pomimo istnienia. Takie fałszywe wyniki zostaną <del>przekreślone</del>. Ponadto strony, które osadzają pliki, które nie istnieją, są wymienione w [[:$1]].",
        "usereditcount": "$1 {{PLURAL:$1|edycja|edycje|edycji}}",
        "usercreated": "{{GENDER:$3|Utworzył|Utworzyła|Utworzone}} $1 o $2",
        "newpages": "Nowe strony",
-       "newpages-username": "Nazwa użytkownika",
+       "newpages-username": "Nazwa użytkownika:",
        "ancientpages": "Najstarsze strony",
        "move": "Przenieś",
        "movethispage": "Przenieś tę stronę",
        "booksources-search": "Szukaj",
        "booksources-text": "Poniżej znajduje się lista odnośników do innych witryn, które pośredniczą w sprzedaży nowych i używanych książek, a także mogą posiadać dalsze informacje na temat poszukiwanej przez Ciebie książki.",
        "booksources-invalid-isbn": "Podany numer ISBN został rozpoznany jako nieprawidłowy. Sprawdź czy podany numer zgadza się z numerem zaczerpniętym ze źródła.",
-       "specialloguserlabel": "Kto",
-       "speciallogtitlelabel": "Co (tytuł lub użytkownik)",
+       "specialloguserlabel": "Kto:",
+       "speciallogtitlelabel": "Co (tytuł lub użytkownik):",
        "log": "Rejestr operacji",
        "all-logs-page": "Wszystkie publiczne operacje",
        "alllogstext": "Wspólny rejestr wszystkich typów operacji dla {{GRAMMAR:D.lp|{{SITENAME}}}}.\nMożesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytkownika albo tytułu strony.",
        "allpages": "Wszystkie strony",
        "nextpage": "Następna strona ($1)",
        "prevpage": "Poprzednia strona ($1)",
-       "allpagesfrom": "Strony o tytułach rozpoczynających się od",
-       "allpagesto": "Strony o tytułach kończących się na",
+       "allpagesfrom": "Strony o tytułach rozpoczynających się od:",
+       "allpagesto": "Strony o tytułach kończących się na:",
        "allarticles": "Wszystkie artykuły",
        "allinnamespace": "Wszystkie strony (w przestrzeni nazw $1)",
        "allpagessubmit": "Pokaż",
-       "allpagesprefix": "Pokaż strony o tytułach rozpoczynających się od",
+       "allpagesprefix": "Pokaż strony o tytułach rozpoczynających się od:",
        "allpagesbadtitle": "Podana nazwa jest nieprawidłowa, zawiera prefiks międzyprojektowy lub międzyjęzykowy. Może ona także zawierać w sobie jeden lub więcej znaków, których użycie w nazwach jest niedozwolone.",
        "allpages-bad-ns": "W {{GRAMMAR:MS.lp|{{SITENAME}}}} nie istnieje przestrzeń nazw „$1”.",
        "allpages-hide-redirects": "Ukryj przekierowania",
        "cachedspecial-refresh-now": "Najpóźniejszy widok.",
        "categories": "Kategorie",
        "categoriespagetext": "Strona przedstawia {{PLURAL:$1|kategorię zawierającą|listę kategorii zawierających}} strony lub pliki.\n[[Special:UnusedCategories|Nieużywane kategorie]] zostały ukryte.\nZobacz również [[Special:WantedCategories|brakujące kategorie]].",
-       "categoriesfrom": "Wyświetl kategorie, zaczynając od",
+       "categoriesfrom": "Wyświetl kategorie, zaczynając od:",
        "special-categories-sort-count": "sortowanie według liczby",
        "special-categories-sort-abc": "sortowanie alfabetyczne",
        "deletedcontributions": "Usunięty wkład użytkownika",
        "deletedcontributions-title": "Usunięty wkład użytkownika",
        "sp-deletedcontributions-contribs": "wkład",
        "linksearch": "Wyszukiwarka linków zewnętrznych",
-       "linksearch-pat": "Wzorzec wyszukiwania",
+       "linksearch-pat": "Wzorzec wyszukiwania:",
        "linksearch-ns": "Przestrzeń nazw:",
        "linksearch-ok": "Szukaj",
        "linksearch-text": "Można użyć symboli wieloznacznych, takich jak „*.wikipedia.org”.\nWymaganie jest podanie co najmniej domeny najwyższego poziomu np. „*.org”.<br />\n{{PLURAL:$2|Obsługiwany protokół|Obsługiwane protokoły}}: $1 (jeśli nie podano, domyślny to http://).",
        "linksearch-line": "$1 link na stronie $2",
        "linksearch-error": "Symbolu wieloznacznego można użyć wyłącznie na początku nazwy hosta.",
-       "listusersfrom": "Pokaż użytkowników zaczynając od",
+       "listusersfrom": "Pokaż użytkowników zaczynając od:",
        "listusers-submit": "Pokaż",
        "listusers-noresult": "Nie znaleziono żadnego użytkownika.",
        "listusers-blocked": "({{GENDER:$1|zablokowany|zablokowana|zablokowany}})",
        "activeusers": "Lista aktywnych użytkowników",
        "activeusers-intro": "Poniżej znajduje się lista użytkowników, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}.",
        "activeusers-count": "w ciągu {{PLURAL:$3|ostatniego dnia|ostatnich $3 dni}} {{GENDER:$2|wykonał|wykonała|wykonał}} $1 {{PLURAL:$1|operację|operacje|operacji}}",
-       "activeusers-from": "Pokaż użytkowników zaczynając od",
+       "activeusers-from": "Pokaż użytkowników zaczynając od:",
        "activeusers-hidebots": "Ukryj boty",
        "activeusers-hidesysops": "Ukryj administratorów",
        "activeusers-noresult": "Nie odnaleziono żadnego użytkownika.",
        "nowikiemailtext": "Ten użytkownik nie chce otrzymywać wiadomości e‐mail od innych użytkowników.",
        "emailnotarget": "Adresat nie istnieje lub podana nazwa użytkownika jest nieprawidłowa.",
        "emailtarget": "Wpisz nazwę użytkownika, który jest adresatem",
-       "emailusername": "Nazwa użytkownika",
+       "emailusername": "Nazwa użytkownika:",
        "emailusernamesubmit": "Wyślij",
        "email-legend": "Wyślij e‐mail do innego użytkownika {{GRAMMAR:D.lp|{{SITENAME}}}}",
-       "emailfrom": "Od",
-       "emailto": "Do",
-       "emailsubject": "Temat",
+       "emailfrom": "Od:",
+       "emailto": "Do:",
+       "emailsubject": "Temat:",
        "emailmessage": "Wiadomość:",
        "emailsend": "Wyślij",
        "emailccme": "Wyślij mi kopię mojej wiadomości.",
        "watchlistanontext": "Zaloguj się, aby obejrzeć lub edytować elementy listy obserwowanych.",
        "watchnologin": "Nie jesteś zalogowany",
        "addwatch": "Dodaj do listy obserwowanych",
-       "addedwatchtext": "Strona „[[:$1|$1]]” została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].\nKażda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie odnotowana na tej liście.",
+       "addedwatchtext": "Strona „[[:$1|$1]]” wraz ze swoją stroną dyskusji została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].",
        "addedwatchtext-short": "Strona „$1” została dodana do twojej listy obserwowanych.",
        "removewatch": "Usuń z listy obserwowanych",
-       "removedwatchtext": "Strona „[[:$1]]” została usunięta z Twojej [[Special:Watchlist|listy obserwowanych]].",
+       "removedwatchtext": "Strona „[[:$1|$1]]” wraz ze swoją stroną dyskusji została usunięta z Twojej [[Special:Watchlist|listy obserwowanych]].",
        "removedwatchtext-short": "Strona „$1” została usunięta z twojej listy obserwowanych.",
        "watch": "Obserwuj",
        "watchthispage": "Obserwuj",
        "dellogpagetext": "Poniżej znajduje się lista ostatnio wykonanych usunięć.",
        "deletionlog": "rejestr usunięć",
        "reverted": "Przywrócono poprzednią wersję",
-       "deletecomment": "Powód",
+       "deletecomment": "Powód:",
        "deleteotherreason": "Inny lub dodatkowy powód:",
        "deletereasonotherlist": "Inny powód",
        "deletereason-dropdown": "* Najczęstsze przyczyny usunięcia\n** Spam\n** Wandalizm\n** Naruszenia praw autorskich\n** Prośba autora\n** Zerwane przekierowanie",
        "protect-norestrictiontypes-text": "Ta strona nie może być chroniona, gdyż nie ma dla niej żadnych dostępnych typów ograniczeń.",
        "protect-norestrictiontypes-title": "Nieblokowalna strona",
        "protect-legend": "Potwierdź zabezpieczenie",
-       "protectcomment": "Powód",
-       "protectexpiry": "Czas wygaśnięcia",
+       "protectcomment": "Powód:",
+       "protectexpiry": "Czas wygaśnięcia:",
        "protect_expiry_invalid": "Podany czas automatycznego odbezpieczenia jest nieprawidłowy.",
        "protect_expiry_old": "Podany czas automatycznego odblokowania znajduje się w przeszłości.",
        "protect-unchain-permissions": "Odblokuj dodatkowe opcje zabezpieczania",
        "protect-expiry-indefinite": "na zawsze",
        "protect-cascade": "Dziedziczenie zabezpieczenia – zabezpiecz wszystkie strony zawarte na tej stronie.",
        "protect-cantedit": "Nie możesz zmienić poziomu zabezpieczenia tej strony, ponieważ nie masz uprawnień do jej edycji.",
-       "protect-othertime": "Inny okres",
+       "protect-othertime": "Inny okres:",
        "protect-othertime-op": "inny okres",
        "protect-existing-expiry": "Obecny czas wygaśnięcia: $2 o $3",
        "protect-existing-expiry-infinity": "Obecny czas wygaśnięcia: nieskończony",
-       "protect-otherreason": "Inny lub dodatkowy powód",
+       "protect-otherreason": "Inny lub dodatkowy powód:",
        "protect-otherreason-op": "Inny powód",
        "protect-dropdown": "*Najczęstsze powody zabezpieczenia\n** Częste wandalizmy\n** Częste spamowanie\n** Wojna edycyjna\n** Wygłupy",
        "protect-edit-reasonlist": "Edytuj listę przyczyn zabezpieczenia",
        "protect-expiry-options": "1 godzina:1 hour,1 dzień:1 day,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite",
-       "restriction-type": "Ograniczenia",
-       "restriction-level": "Stopień",
+       "restriction-type": "Ograniczenia:",
+       "restriction-level": "Stopień:",
        "minimum-size": "Minimalny rozmiar",
-       "maximum-size": "Maksymalny rozmiar",
+       "maximum-size": "Maksymalny rozmiar:",
        "pagesize": "(bajtów)",
        "restriction-edit": "edytowanie",
        "restriction-move": "przenoszenie",
        "undeletelink": "pokaż lub odtwórz",
        "undeleteviewlink": "pokaż",
        "undeleteinvert": "Odwróć zaznaczenie",
-       "undeletecomment": "Powód",
+       "undeletecomment": "Powód:",
        "undeletedrevisions": "odtworzono {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}",
        "undeletedrevisions-files": "odtworzono $1 {{PLURAL:$1|wersję|wersje|wersji}} i $2 {{PLURAL:$2|plik|pliki|plików}}",
        "undeletedfiles": "odtworzył $1 {{PLURAL:$1|plik|pliki|plików}}",
        "contributions-userdoesnotexist": "Konto użytkownika „$1” nie jest zarejestrowane.",
        "nocontribs": "Brak zmian odpowiadających tym kryteriom.",
        "uctop": "(ostatnia)",
-       "month": "Do miesiąca (włącznie)",
-       "year": "Do roku (włącznie)",
+       "month": "Do miesiąca (włącznie):",
+       "year": "Do roku (włącznie):",
        "sp-contributions-newbies": "Pokaż wyłącznie wkład nowych użytkowników",
        "sp-contributions-newbies-sub": "Dla nowych użytkowników",
        "sp-contributions-newbies-title": "Wkład nowych użytkowników",
        "sp-contributions-talk": "dyskusja",
        "sp-contributions-userrights": "zarządzanie uprawnieniami użytkownika",
        "sp-contributions-blocked-notice": "To konto użytkownika jest obecnie zablokowane. Ostatni wpis rejestru blokad jest pokazany poniżej.",
-       "sp-contributions-blocked-notice-anon": "Ten adres IP jest obecnie zablokowany.\nPoniżej znajduje się ostatni wpis w rejestrze blokowania.",
+       "sp-contributions-blocked-notice-anon": "Ten adres IP jest obecnie zablokowany.\nOstatni wpis rejestru blokad jest pokazany poniżej.",
        "sp-contributions-search": "Szukaj wkładu",
-       "sp-contributions-username": "Adres IP lub nazwa użytkownika",
+       "sp-contributions-username": "Adres IP lub nazwa użytkownika:",
        "sp-contributions-toponly": "Pokaż wyłącznie ostatnie wersje",
        "sp-contributions-newonly": "Pokazuj tylko edycje tworzące nową stronę",
        "sp-contributions-submit": "Szukaj",
        "whatlinkshere": "Linkujące",
        "whatlinkshere-title": "Strony linkujące do „$1”",
-       "whatlinkshere-page": "Strona",
+       "whatlinkshere-page": "Strona:",
        "linkshere": "Następujące strony odwołują się do '''[[:$1]]''':",
        "nolinkshere": "Żadna strona nie odwołuje się do '''[[:$1]]'''.",
        "nolinkshere-ns": "Żadna strona nie odwołuje się do '''[[:$1]]''' w wybranej przestrzeni nazw.",
        "blockip": "Zablokuj {{GENDER:$1|użytkownika|użytkowniczkę}}",
        "blockip-legend": "Zablokuj użytkownika",
        "blockiptext": "Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.\nBlokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].\nPodaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandalizmu).",
-       "ipaddressorusername": "Adres IP lub nazwa użytkownika",
-       "ipbexpiry": "Upływa",
-       "ipbreason": "Powód",
+       "ipaddressorusername": "Adres IP lub nazwa użytkownika:",
+       "ipbexpiry": "Czas trwania:",
+       "ipbreason": "Powód:",
        "ipbreason-dropdown": "*Najczęstsze przyczyny blokad\n** Ataki na innych użytkowników\n** Naruszenie praw autorskich\n** Niedozwolona nazwa użytkownika\n** Open proxy lub Tor\n** Spamowanie\n** Usuwanie treści stron\n** Wprowadzanie fałszywych informacji\n** Wulgaryzmy\n** Wypisywanie bzdur na stronach",
        "ipb-hardblock": "Zablokuj możliwość edytowania przez zalogowanych użytkowników z tego adresu IP.",
        "ipbcreateaccount": "Zapobiegnij utworzeniu konta",
        "movepagetext": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nMożesz automatycznie zaktualizować przekierowania wskazujące na tytuł przed zmianą.\nJeśli nie wybierzesz tej opcji, upewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu prowadziły tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
        "movepagetext-noredirectfixer": "Za pomocą poniższego formularza zmienisz nazwę strony, przenosząc jednocześnie jej historię.\nPod starym tytułem zostanie umieszczona strona przekierowująca.\nUpewnij się po przeniesieniu strony, czy nie powstały [[Special:DoubleRedirects|podwójne]] lub [[Special:BrokenRedirects|zerwane przekierowania]].\nJesteś odpowiedzialny za to, by linki w dalszym ciągu pokazywały tam, gdzie powinny.\n\nStrona '''nie''' zostanie przeniesiona, jeśli strona o nowej nazwie już istnieje, chyba że jest pusta lub jest przekierowaniem i ma pustą historię edycji.\nTo oznacza, że błędną operację zmiany nazwy można bezpiecznie odwrócić, zmieniając nową nazwę strony na poprzednią, i że nie można nadpisać istniejącej strony.\n\n'''UWAGA!'''\nMoże to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron.\nUpewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
        "movepagetalktext": "Powiązana strona dyskusji, jeśli istnieje, będzie przeniesiona automatycznie, chyba że:\n*niepusta strona dyskusji już jest pod nową nazwą\n*usuniesz zaznaczenie z poniższego pola wyboru\n\nW takich przypadkach treść dyskusji można przenieść tylko ręcznie.",
-       "movearticle": "Przeniesienie strony",
+       "movearticle": "Przeniesienie strony:",
        "moveuserpage-warning": "'''Uwaga!''' Masz zamiar przenieść stronę użytkownika. Miej na uwadze, że zostanie przeniesiona tylko strona, a '''nazwa użytkownika pozostanie niezmieniona'''.",
        "movecategorypage-warning": "<strong>Uwaga!</strong> Masz zamiar przenieść stronę kategorii. Miej na uwadze, że strony, które należały do starej kategorii, <em>nie</em> zostaną przeniesione do nowej.",
        "movenologintext": "Przenoszenie stron jest możliwe dopiero po zarejestrowaniu się i [[Special:UserLogin|zalogowaniu]].",
        "cant-move-to-user-page": "Nie masz uprawnień do przenoszenia strony do strony użytkownika (za wyjątkiem podstron użytkownika).",
        "cant-move-category-page": "Nie masz uprawnień do przenoszenia stron kategorii.",
        "cant-move-to-category-page": "Nie masz uprawnień do przenoszenia strony do strony kategorii.",
-       "newtitle": "Nowy tytuł",
+       "newtitle": "Nowy tytuł:",
        "move-watch": "Obserwuj",
        "movepagebtn": "Przenieś stronę",
        "pagemovedsub": "Przeniesienie powiodło się",
        "exportnohistory": "----\n'''Uwaga:''' Wyłączono możliwość eksportowania pełnej historii stron z użyciem tego narzędzia z powodu kłopotów z wydajnością.",
        "exportlistauthors": "Dołącz pełną listę autorów dla każdej strony",
        "export-submit": "Eksportuj",
-       "export-addcattext": "Dodaj strony z kategorii",
+       "export-addcattext": "Dodaj strony z kategorii:",
        "export-addcat": "Dodaj",
-       "export-addnstext": "Dodaj strony z przestrzeni nazw",
+       "export-addnstext": "Dodaj strony z przestrzeni nazw:",
        "export-addns": "Dodaj",
        "export-download": "Zapisz do pliku",
        "export-templates": "Dołącz szablony",
        "allmessages-filter-unmodified": "Niezmodyfikowane",
        "allmessages-filter-all": "Wszystkie",
        "allmessages-filter-modified": "Zmodyfikowane",
-       "allmessages-prefix": "Tytuły rozpoczynające się od",
+       "allmessages-prefix": "Tytuły rozpoczynające się od:",
        "allmessages-language": "Język:",
        "allmessages-filter-submit": "Pokaż",
        "allmessages-filter-translate": "Przetłumacz",
        "import-mapping-default": "Importuj do domyślnych lokalizacji",
        "import-mapping-namespace": "Importuj do przestrzeni nazw:",
        "import-mapping-subpage": "Importuj jako podstrony strony:",
-       "import-upload-filename": "Nazwa pliku",
+       "import-upload-filename": "Nazwa pliku:",
        "import-comment": "Komentarz:",
        "importtext": "Korzystając na źródłowej wiki z narzędzia [[Special:Export|eksportu]] wyeksportuj plik.\nZapisz go na swoim dysku, a następnie prześlij go tutaj.",
        "importstart": "Trwa importowanie stron...",
        "imagelisttext": "Poniżej na {{PLURAL:$1||posortowanej $2}} liście {{PLURAL:$1|znajduje|znajdują|znajduje}} się '''$1''' {{PLURAL:$1|plik|pliki|plików}}.",
        "newimages-summary": "Na tej stronie specjalnej prezentowane są ostatnio przesłane pliki.",
        "newimages-legend": "Filtruj",
-       "newimages-label": "Nazwa pliku (lub jej fragment)",
+       "newimages-label": "Nazwa pliku (lub jej fragment):",
        "newimages-showbots": "Pokaż pliki przesłane przez boty",
        "noimages": "Brak plików do pokazania.",
        "ilsubmit": "Szukaj",
        "table_pager_first": "Pierwsza strona",
        "table_pager_last": "Ostatnia strona",
        "table_pager_limit": "Pokaż $1 pozycji na stronie",
-       "table_pager_limit_label": "Pozycji na stronie",
+       "table_pager_limit_label": "Pozycji na stronie:",
        "table_pager_limit_submit": "Pokaż",
        "table_pager_empty": "Brak wyników",
        "autosumm-blank": "UWAGA! Usunięcie treści (strona pozostała pusta)!",
        "fileduplicatesearch": "Wyszukiwanie duplikatów pliku",
        "fileduplicatesearch-summary": "Wyszukiwanie duplikatów pliku na podstawie wartości funkcji skrótu.",
        "fileduplicatesearch-legend": "Szukaj duplikatów pliku",
-       "fileduplicatesearch-filename": "Nazwa pliku",
+       "fileduplicatesearch-filename": "Nazwa pliku:",
        "fileduplicatesearch-submit": "Szukaj",
        "fileduplicatesearch-info": "$1 × $2 pikseli<br />Wielkość pliku: $3<br />Typ MIME: $4",
        "fileduplicatesearch-result-1": "Brak duplikatu pliku „$1”.",
        "intentionallyblankpage": "Tę stronę umyślnie pozostawiono pustą.",
        "external_image_whitelist": " #Pozostaw tę linię dokładnie tak, jak jest.<pre>\n#Wstaw poniżej fragmenty wyrażeń regularnych (tylko to, co znajduje się między //).\n#Wyrażenia te zostaną dopasowane do adresów URL zewnętrznych (bezpośrednio linkowanych) grafik.\n#Dopasowane adresy URL zostaną wyświetlone jako grafiki, w przeciwnym wypadku będzie pokazany jedynie link do grafiki.\n#Linie zaczynające się od # są traktowane jako komentarze.\n#We wpisach ma znaczenie wielkość znaków.\n\n#Wstaw wszystkie deklaracje wyrażeniami regularnymi poniżej tej linii. Pozostaw tę linię dokładnie tak, jak jest.</pre>",
        "tags": "Sprawdź zmiany w oparciu o wzorce tekstu",
-       "tag-filter": "Filtr [[Special:Tags|znaczników]]",
+       "tag-filter": "Filtr [[Special:Tags|znaczników]]:",
        "tag-filter-submit": "Filtr",
        "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Znacznik|Znaczniki}}]]: $2)",
        "tags-title": "Znaczniki",
        "feedback-error3": "Błąd – brak odpowiedzi API",
        "feedback-error4": "Błąd: Nie można wysłać danego tytułu opinii",
        "feedback-message": "Wiadomość:",
-       "feedback-subject": "Temat",
+       "feedback-subject": "Temat:",
        "feedback-submit": "Wyślij",
        "feedback-terms": "Rozumiem, że mój identyfikator User Agenta zawiera informacje o wersjach mojej przeglądarki i systemu operacyjnego oraz że będzie udostępniony publicznie wraz z moim komentarzem.",
        "feedback-termsofuse": "Zgadzam się udostępnić komentarz zgodnie z warunkami korzystania.",
        "limitreport-expensivefunctioncount": "Liczba wywołań kosztownych funkcji parsera",
        "expandtemplates": "Rozwijanie szablonów",
        "expand_templates_intro": "We wprowadzonym na tej stronie tekście źródłowym zostaną rozwinięte rekurencyjnie wszystkie szablony.\nRozwinięte także zostaną funkcje parsera takie jak\n<code><nowiki>{{</nowiki>#language:…}}</code> i zmienne jak\n<code><nowiki>{{</nowiki>CURRENTDAY}}</code>.\nW zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.",
-       "expand_templates_title": "Pozorny tytuł strony dla zmiennych takich jak {{FULLPAGENAME}}",
-       "expand_templates_input": "Tekst wejściowy",
+       "expand_templates_title": "Pozorny tytuł strony dla zmiennych takich jak {{FULLPAGENAME}}:",
+       "expand_templates_input": "Tekst wejściowy:",
        "expand_templates_output": "Rezultat",
        "expand_templates_xml_output": "wynik w formacie XML",
        "expand_templates_html_output": "Wyświetlanie surowego HTML",
        "special-characters-title-endash": "półpauza",
        "special-characters-title-emdash": "pauza",
        "special-characters-title-minus": "minus",
+       "mw-widgets-dateinput-no-date": "Nie wybrano daty",
+       "mw-widgets-dateinput-placeholder-day": "RRRR-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "RRRR-MM",
        "mw-widgets-titleinput-description-new-page": "strona jeszcze nie istnieje",
        "mw-widgets-titleinput-description-redirect": "przekierowanie do $1"
 }
index b207f10..9b3450e 100644 (file)
@@ -14,7 +14,8 @@
                        "לערי ריינהארט",
                        "Shirayuki",
                        "아라",
-                       "Kolega2357"
+                       "Kolega2357",
+                       "Purodha"
                ]
        },
        "tog-underline": "Anliure con la sotliniadura",
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "tratin en",
        "special-characters-title-emdash": "tratin em",
-       "special-characters-title-minus": "segn meno"
+       "special-characters-title-minus": "segn meno",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM"
 }
index c7fab64..b2118c4 100644 (file)
        "about": "بارے چ",
        "article": "آرٹیکل والا صفہ",
        "newwindow": "(نئی ونڈو چ کھولو)",
-       "cancel": "ختم",
+       "cancel": "مکاؤ",
        "moredotdotdot": "مزید۔۔۔۔",
        "mypage": "میرا صفہ",
        "mytalk": "میریاں گلاں",
        "actions": "کم",
        "namespaces": "ناواں دی جگہ:",
        "variants": "قسماں",
+       "navigation-heading": "کھوج پتر",
        "errorpagetitle": "مسئلہ",
        "returnto": "واپس $1 چلو",
        "tagline": " {{SITENAME}} توں",
        "permalink": "پکا جوڑ",
        "print": "چھاپو",
        "view": "وکھالہ",
+       "view-foreign": "$1 تے ویکھو",
        "edit": "لکھو",
        "create": "بناؤ",
+       "create-local": "آپنی لکھت رلاؤ",
        "editthispage": "اس صفحہ تے لکھو",
        "create-this-page": "اے صفحہ بناؤ",
        "delete": "مٹاؤ",
        "articlepage": "مضمون آلا صفحہ",
        "talk": "گل بات",
        "views": "وکھالے",
-       "toolbox": "اوزار ڈبہ",
+       "toolbox": "اوزار",
        "userpage": "ورتن آلے دا صفہ ویکھو",
        "projectpage": "ویونت والا صفہ ویکھو",
        "imagepage": "فائل آلا صفہ ویکھو",
        "viewhelppage": "مدد آلا صفحہ ویکھو",
        "categorypage": "گٹھ آلا صفحہ ویکھو",
        "viewtalkpage": "گلاں باتاں وکھاؤ",
-       "otherlanguages": "دÙ\88جÛ\8cاں Ø²Ø¨Ø§Ù\86ں وچ",
+       "otherlanguages": "دÙ\88جÛ\8cاں Ø¨Ù\88Ù\84Û\8cاں وچ",
        "redirectedfrom": "(لیایا گیا $1)",
        "redirectpagesub": "صفحہ ریڈائریکٹ کرو",
+       "redirectto": "اگے کرو:",
        "lastmodifiedat": "This page was last modified on $1, at $2.\nاس صفحے نوں آخری آری $1 تریخ نوں $2 وجے بدلیا گیا۔",
        "viewcount": "اس صفحے نوں {{PLURAL:$1|اک واری|$1 واری}} کھولیا گیا اے۔",
        "protectedpage": "بجایا صفحہ",
        "aboutpage": "Project:بارے وچ",
        "copyright": "مال $1 دے تھلے ہے گا اے۔",
        "copyrightpage": "{{ns:project}}:نقل دے حق",
-       "currentevents": "اج Ú©Ù\84 Ø¯Û\92 Ù\88اÙ\82عات",
-       "currentevents-url": "Project:اج Ú©Ù\84 Ø¯Û\92 Ù\88اÙ\82عات",
+       "currentevents": "اج Ú©Ù\84 Ø¯Û\8cاں Ú¯Ù\84اں",
+       "currentevents-url": "Project:اج Ú©Ù\84 Ø¯Û\8cاں Ú¯Ù\84اں",
        "disclaimers": "منکرنا",
        "disclaimerpage": "Project:عام منکرنا",
        "edithelp": "لکھن وچ مدد",
        "site-atom-feed": "$1 Atom Feed",
        "page-rss-feed": "\"$1\" RSS Feed",
        "page-atom-feed": "\"$1\" Atom Feed",
-       "red-link-title": "$1 (اÛ\92 ØµÙ\81Ø­ہ حلے تک نئیں بنایا گیا)",
+       "red-link-title": "$1 (اÛ\8cÛ\81 ØµÙ\81ہ حلے تک نئیں بنایا گیا)",
        "sort-descending": "ونڈ تھلے ول",
        "sort-ascending": "ونڈ اتے ول",
        "nstab-main": "صفہ",
        "cannotdelete": "صفحہ یا فائل \"$1\" نوں مٹایا نا جاسکیا۔\nاینوں پہلاں توں ای کسے نے مٹایا ہوۓ گا۔",
        "cannotdelete-title": "صفہ مٹا نئیں سکدے \"$1\"",
        "badtitle": "پیڑا عنوان",
-       "badtitletext": "منگیا گۓ صفحہ دا ناں غلط اے، خالی اے یا غلط تریقے نال جوڑیا گیا اے۔\nہوسکدا اے ایدے چ اک دو ھندسے ایسے ہون جیڑے عنوان وچ استعمال نہیں کیتے جاسکدے۔",
+       "badtitletext": "منگیا گۓ صفے دا ناں غلط اے، خالی، یا ایہ غلط ول نال جوڑیا گیا اے۔\nہوسکدا اے ایدے چ اک دو ھندسے ایسے ہون جیڑے ناں وچ ورتے نہیں جاسکدے۔",
        "perfcached": "تھلے دتا گیا ڈیٹا کاشیڈ اے تے پانویں نواں ناں ہووے. زیادہ توں زیادہ کاشے چ  {{PLURAL:$1|اک نتیجہ ہووے|$1 نتیجے ہوون}} گے.",
        "perfcachedts": "تھلے دتا گیا ڈیٹا کاشیڈ اے تے  $1 نوں نواں کیتا گیا۔ زیادہ توں زیادہ {{PLURAL:$4|اک نتیجہ ہووے|$4 نتیجے ہوون}} نتیجے کاشے چ ہیگے نیں .",
        "querypage-no-updates": "اس صفحے نوں اپڈیٹ فلحال نئیں کیتا جا سکدا۔\nایدا مال ہلے نواں نئیں کیتا جاۓ گا۔",
        "virus-unknownscanner": "اندیکھا اینٹیوائرس:",
        "logouttext": "'''تسی لاگ آؤٹ ہوگۓ او.'''\nتسی   {{SITENAME}} نوں گمنامی چ ورت سکدے او یا تسی <span class='plainlinks'>[$1 لاگ ان دوبارہ]</span> ہوجاؤ اوسے ناں توں یا وکھرے ورتن والے توں۔ اے گل چیتے رکھنا جے کج صفیاں تے تسی لاگ ان دسے جاؤگے جدوں تک تسی اپنے براؤزر دے کاشے نوں صاف ناں کرلو۔\nYou can continue to use {{SITENAME}} anonymously, or you can <span class='plainlinks'>[$1 log in again]</span> as the same or as a different user.\nNote that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache.",
        "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": "مینوں لاگ ان رکھو",
        "yourdomainname": "تواڈا علاقہ:",
        "externaldberror": "ڈیٹابیس چ توانوں پہچاننے چ کوئی مسئلہ ہویا اے یا فیر تسی اپنا بارلا کھاتا نئیں بدل سکدے۔",
        "login": "اندر آؤ جی",
        "logout": "لاگ توں باہر",
        "userlogout": "باہر آؤ",
        "notloggedin": "لاگ ان نئیں ہوۓ او",
+       "userlogin-noaccount": "تواڈا کھاتہ نہیں اے؟",
+       "userlogin-joinproject": "کھاتہ بناؤ",
        "nologin": "تواڈا کھاتہ نہیں اے؟ '''$1'''۔",
        "nologinlink": "کھاتہ بناؤ",
        "createaccount": "کھاتہ بناؤ",
        "gotaccount": "تواڈا پہلے توں کھاتہ ہے؟ '''$1'''",
        "gotaccountlink": "اندر آؤ",
        "userlogin-resetlink": "اپنے لاگ ان ہون دیاں شیواں پل گۓ؟",
+       "userlogin-resetpassword-link": "اپنی کنجی بھل گۓ او؟",
+       "userlogin-helplink2": "لاگ ان ہون وچ ہتھ ونڈائی",
+       "createacct-emailoptional": "ای-میل پتہ (مرضی نال)",
+       "createacct-email-ph": "اپنا ای-میل پتہ دیؤ",
        "createaccountmail": "ای میل دے نال",
        "createaccountreason": "وجہ:",
+       "createacct-captcha": "بچاؤ روک",
+       "createacct-imgcaptcha-ph": "اتے ویکھی لکھت ایتھے پاؤ",
+       "createacct-submit": "اپنا کھاتا کھولو",
+       "createacct-benefit-heading": "پنجابی وکی نوں تواڈے ورگے لوکاں نے بنایا اے۔",
+       "createacct-benefit-body1": "$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}",
+       "createacct-benefit-body2": "{{PLURAL:$1|صفہ|صفے}}",
+       "createacct-benefit-body3": "ہن دے {{PLURAL:$1|کم|کماں}}",
        "badretype": "تواڈی کنجی صحیح نئیں۔",
        "userexists": "اے ورتن ناں پہلاں توں ای کوئی ورت ریا اے۔\nمہربانی کر کے کوئی دوجا چن لو۔",
        "loginerror": "لاگ ان چ مسئلا اے",
        "login-abort-generic": "تسی لاگ ان نئیں ہوسکے۔",
        "loginlanguagelabel": "بولی: $1",
        "suspicious-userlogout": "تھواڈی لاگ آؤٹ ہوں دی کوشش رک گئی اینج لگدا اے  جیویں اے ٹٹے براؤزر یا کیشنگ پراکسی توں پیجیا گیا سی۔",
+       "pt-login": "لاگ ان ہوو",
+       "pt-login-button": "اندر آؤ جی",
+       "pt-createaccount": "کھاتہ کھولو",
+       "pt-userlogout": "باہر آجاؤ",
        "php-mail-error-unknown": "PHP میل دے کم چ کوئی انجانی غلطی۔",
        "user-mail-no-addy": "ای-میل پتے بنا ای-میل کلن دی کوشش۔",
        "changepassword": "کنجی بدلو",
        "resetpass-submit-cancel": "ختم",
        "resetpass-wrong-oldpass": "غلط عارضی یا ہلے دی کنجی۔\nتساں نے شاید اپنی کنجی بدل لئی ہوۓ یا عارضی کنجی دی درخواست کیتی ہوۓ۔",
        "resetpass-temp-password": "عارضی کنجی:",
-       "passwordreset": "Ú©Ù\86جÛ\8c Ù\88اپس Ù\84Û\8cاؤ",
+       "passwordreset": "Ú©Ù\86جÛ\8c Ù\81Û\8cر Ø¨Ù\86اؤ",
        "passwordreset-disabled": "اس وکی تے کنجی واپس نئیں لیائی جاسکدی۔",
        "passwordreset-username": "ورتن ناں:",
        "passwordreset-domain": "ڈومین",
        "changeemail-submit": "ای-میل بدلو",
        "bold_sample": "موٹی لکھائی",
        "bold_tip": "موٹی لکھائی",
-       "italic_sample": "ترچھی لکھائی",
-       "italic_tip": "ترچھی لکھائی",
+       "italic_sample": "ٹیڈی لکھائی",
+       "italic_tip": "ٹیڈی لکھائی",
        "link_sample": "جوڑ",
        "link_tip": "اندرونی جوڑ",
        "extlink_sample": "http://www.example.com جوڑ دا ناں",
-       "extlink_tip": "بیرونی جوڑ (remember http:// prefix)",
+       "extlink_tip": "بارلے جوڑ (remember http:// prefix)",
        "headline_sample": "شہ سرخی",
        "headline_tip": "دوسرے درجے دی سرخی",
        "nowiki_sample": "فارمیٹ نہ ہوئی لکھائی ایتھے پاؤ",
        "summary": "ویروا:",
        "subject": "موضوع/شہ سرخی:",
        "minoredit": "اے نکا جیا کم اے",
-       "watchthis": "اس صفحے تے نظر رکھو",
+       "watchthis": "اس صفے تے اکھ رکھو",
        "savearticle": "کم بچاؤ",
        "preview": "وکھاؤ",
        "showpreview": "کچا کم ویکھو",
        "showdiff": "تبدیلیاں وکھاؤ",
-       "anoneditwarning": "'''خبردار''' تسی اندر نہیں آۓ\nتواڈا ''آئی پی'' پتہ فائل فائل وچ لکھیا جاۓ گا۔",
+       "anoneditwarning": "'''خبردار''': تسی اندر نہیں آۓ\nتواڈا ''آئی پی'' پتہ فائل وچ لکھیا جاۓ گا تے ساریاں نوں دسے گا۔ اگر تسیں $1 اندر آؤ یا $2 کھاتہ کھولو تے تواڈیاں لکھتاں تواڈے ورتن ناں نال جڑیاں ہون گئیاں۔",
        "anonpreviewwarning": "''تسی ہلے لاگ ان نئیں ہوۓ،۔ کم بچاؤ گے تے تواڈا IP پتہ صفحے دی تریخ چ لکھ لیا جاۓ گا۔''",
        "missingsummary": "'''یادکرائی:''' تساں تبدیلی دی سمری نئیں دتی۔  اگر تسیں \"{{int:savearticle}}\" نوں کلک کروگے تواڈیاں تبدیلیاں اک دے بنا بچ جان گیاں۔",
        "missingcommenttext": "تھلے اپنی گل لکھو۔",
        "newarticle": "(نواں)",
        "newarticletext": "تسی ایسے صفحے دے جوڑ توں ایتھے پہنچے او جیڑا ھلے تک نہیں بنیا۔<br />\nاس صفحہ بنانے آسطے تھلے دتے گۓ ڈبے وچ لکھنا شروع کر دیو(زیادہ رہنمائی آستے اے ویکھو [$1 <br />مدد دا صفحہ])۔\nاگر تسی ایتھے غلطی نال پہنچے او تے اپنے کھوجی توں \"بیک\" دا بٹن دبا دیو۔",
        "anontalkpagetext": "----'' ایہ اک گمنام ورتن والے دا گل بات دا صفہ اے جینے ہلے کھاتہ نئیں کھولیا یا او اینون ورتدا نئیں۔\nسانوں فیر نمبراں والا آئی پی پتہ ورتنا پوے گا اونوں لئی. ایہو جیا آئی پی پتہ گئی ورتن والے ورت سکدے نیں۔ \nاگر تسیں اک گمنام ورتن والے او تے اے مسوس کردے او جے پیڑی گل بات تواڈی بارے ہوئی اے، مہربانی کرکے [[Special:UserLogin/signup|create an account]] یا [[Special:UserLogin|log in]] اگے کسے مسلے توں بچن گمنام ورتن والیاں کولوں",
-       "noarticletext": "اس ویلے اس صفحے تے کج نہیں لکھیا ہویا تسیں [[Special:Search/{{PAGENAME}}|اس صفحے دے ناں نوں دوجے صفحیاں تے کھوج سکدے او]] یا فیر [{{fullurl:{{FULLPAGENAME}}|action=edit}} اس صفحے نوں لکھ سکدے او۔]",
+       "noarticletext": "اس ویلے اس صفے تے کج نہیں لکھیا ہویا تسیں [[Special:Search/{{PAGENAME}}|اس صفے دے ناں نوں دوجے صفیاں تے کھوج سکدے او]] یا فیر [{{fullurl:{{FULLPAGENAME}}|action=edit}} اس صفے نوں لکھ سکدے او۔]",
        "noarticletext-nopermission": "ایس ویلے ایس صفے تے کوئی لکھت نئیں۔ \nتسیں [[Special:Search/{{PAGENAME}}|search for this page title]] دوسریاں صفیاں تے،\nیا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>۔",
        "userpage-userdoesnotexist": "ورتن کھاتہ \"$1\" رجسٹر نئیں ہویا۔\nمہربانی کرکے دسو جے تسیں ای ھفا بنانا/بدلنا چاندے او۔",
        "userpage-userdoesnotexist-view": "''$1'' کھاتا رجسٹرڈ نئیں اے۔",
        "token_suffix_mismatch": "'''تواڈی لکھت نئیں منی گئی کیوں جے تواڈے بندے نے پنکچوایشن کیریکٹر لکھت ٹوکن چ رلاۓ.'''\nایس تبدیلی نوں لکھت چ خرابی نوں روکن لئی روکیا گیا اے۔.\nاے اودوں ہوندا اے جدوں تسیں گمنام سرور ورتدے او۔.",
        "edit_form_incomplete": "''' ایڈٹ فارم دے کج پاسے سرور تک نئيں اپڑے؛ دو واری چیک کرو جے تھواڈیاں تبدیلیاں بچیاں نیں تے فیر کوشش کرو'''",
        "editing": "تسی \"$1\" لکھ رہے او",
+       "creating": "$1 بناندیاں",
        "editingsection": "$1 دا حصہ لکھ رہے او",
        "editingcomment": "$1 بدل ریاں (نواں پاسہ)",
        "editconflict": "تبدیلی رپھڑ: $1",
        "semiprotectedpagewarning": "'''نوٹ:''' ایس صفے نوں بچایا گیا اے تے رجسٹر ورتن والے ای ایدے چ تبدیلی کرسکدے نیں۔\nآخری لاگ لکھت تھلے اتے پتے لئی دتی گئی اے۔",
        "cascadeprotectedwarning": "'''خبردار:''' ایس صفے نوں بچایا گیا اے ایس لئی مکھیا ای اینوں بدل سکدے نیں کیوں جے اے تھلے دتے گۓ بچاؤ {{PLURAL:$1|صفہ|صفے}} چ دتا گیا اے:",
        "titleprotectedwarning": "'''خبردار: ایہ صفہ بچایا گیا اے[[Special:ListGroupRights|specific rights]] دے بنان دی لوڑ اے.'''\nتھلے نیڑے دی لاگ لکھت دتی گ‏ی اے اتے پتے ل‏ی:",
-       "templatesused": "اس صفحے تے  ورتے گۓ {{PLURAL:$1|سانچے|سانچہ}}:",
+       "templatesused": "اس صفے تے  ورتے گۓ {{PLURAL:$1|سانچے|سانچہ}}:",
        "templatesusedpreview": "اس کچے کم تے ورتے گئے {{PLURAL:$1|سانچے|سانچہ}} :",
        "templatesusedsection": "{{PLURAL:$1|سچہ|سچے}} ایس ٹوٹے چ ورتے گۓ:",
        "template-protected": "(بچایا گیا)",
        "sectioneditnotsupported-text": "ایس صفے تے پاسہ تبدیلی نئیں ہوسکدی۔",
        "permissionserrors": "توانوں اجازت چ کوئی مسئلا اے",
        "permissionserrorstext": "تھلے دتیاں گیا {{PLURAL:$1|وجہ|وجاں}}وجاں توں توانوں اینوں تبدیل کرن دی اجازت نئیں۔",
-       "permissionserrorstext-withaction": "تواڈے کول $2 کرن دی اجازت نئیں اے۔ اس دی {{PLURAL:$1|وجہ|وجوہات}} نیں۔",
+       "permissionserrorstext-withaction": "تواڈے کول $2 کرن دی اجازت نئیں اے، اس دے {{PLURAL:$1|کارن|کارناں}} نیں",
        "recreate-moveddeleted-warn": "'''خبردار: تسی اک پہلاں توں مٹایا ہویا صفحہ دوبارا لکھ رہے او۔'''\n\nتوانوں اے گل سوچنی چائیدی اے کہ اینو لکھنا کوئی عقلمنداں دا کم اے۔\nتواڈی سہولت آسطے مٹان دا لاگ ایتھے موجود اے۔",
-       "moveddeleted-notice": "اس صفحے نوں مٹا دتا گیا اے۔\nمٹان دا لاگ تھلے دتا گیا اے۔",
+       "moveddeleted-notice": "اس صفے نوں مٹا دتا گیا اے۔\nمٹان دا لاگ تھلے دتا گیا اے۔",
        "log-fulllog": "پوری لاگ ویکھو",
        "edit-hook-aborted": "تبدیلی ہک نال رکی۔ بنا وجہ توں۔",
        "edit-gone-missing": "اے صفہ نواں نئیں ہوسکیا۔\nلکدا اے مٹا دتا گیا۔",
        "currentrev": "ہن آلی تبدیلی",
        "currentrev-asof": "$1 ویلے دا صفحہ",
        "revisionasof": "دی تبدیلیاں $1",
-       "revision-info": "$2 نے $1 تے اے لکھیا",
+       "revision-info": " $1 دی دہرائی  توں {{جنس:$6|$2}}$7",
        "previousrevision": "← اوس توں پچھلا کم",
        "nextrevision": "نویں تبدیلی →",
        "currentrevisionlink": "موجودہ حالت",
        "cur": "ہنوالا",
        "next": "اگلا",
-       "last": "آخری",
+       "last": "پہلا",
        "page_first": "پہلا",
        "page_last": "آخری",
        "histlegend": "ڈف سلیکشن: وکھری تبدیلیاں دا مقابلا کرن واسطے ریڈیو ڈبیاں تے نشان لاؤ تے اینٹر یا تھلے دتا گیا بٹن دباؤ۔<br />\nلیجنڈ: (موجودہ) = موجودہ تبدیلی نال مقابلہ،\n(آخری) = پچھلی تبدیلی توں فرق، M = تھوڑی تبدیلی",
        "revertmerge": "وکھریاں کرو",
        "mergelogpagetext": "تھلے اک صفے والے کٹھے کیتے گۓ صفے دی لسٹ اے۔",
        "history-title": "\"$1\" دا ریکارڈ",
+       "difference-title": "\"$1\" دیاں دہرائیاں وچ وکھراپا",
        "difference-multipage": "(صفیاں چ فرق)",
        "lineno": "لیک $1:",
        "compareselectedversions": "چنے صفحے آپنے سامنے کرو",
        "showhideselectedversions": "وکھاؤ/لکاؤ چنیاں دہرائیاں",
        "editundo": "واپس",
+       "diff-multi-sameuser": "({{PLURAL:$1|اک وشکارلی ریوین|$1 }} توں ایس ورتنوالے دیاں ریویناں نہیں دسیاں گئیاں)",
        "diff-multi-manyusers": "({{انیک:$1|اک وشکارلی ریوین|$1 وشکارلیاں ریویناں}} توں ود $2 {{انیک:$2|ورتن والا|ورتن والا}} نئیں دسی گئی)",
        "searchresults": "کھوج دا نتارا",
        "searchresults-title": "\"$1\" دے کھوج نتارے",
        "shown-title": "وکھاؤ $1 {{PLURAL:$1|نتیجے}}",
        "viewprevnext": "ویکھو ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "'''ایس وکی تے \"[[:$1]]\" ناں دا صفہ ہے۔.'''",
-       "searchmenu-new": "'''اÛ\8cس Ù\88Ú©Û\8c ØªÛ\92 \"[[:$1]]\" Ø¨Ù\86اؤ'''",
+       "searchmenu-new": "'''اÛ\8cس Ù\88Ú©Û\8c ØªÛ\92 \"[[:$1]]\" ØµÙ\81Û\81 Ø¨Ù\86اؤ''' {{PLURAL:$2|0=|اپÙ\86Û\8c Ú©Ú¾Ù\88ج Ù\86اÙ\84 Ù\84بÛ\92 ØµÙ\81Û\92 Ù\88Û\8cÚ©Ú¾Ù\88.|Ù\84بÛ\92 Ú©Ú¾Ù\88ج Ù\86تارÛ\92 Ù\88Û\8c Ù\88Û\8cÚ©Ú¾Ù\88.}}",
        "searchprofile-articles": "لسٹ صفے",
        "searchprofile-images": "ملٹیمیڈیا",
        "searchprofile-everything": "ہرشے",
        "searchprofile-images-tooltip": "فائلاں لئی لبو",
        "searchprofile-everything-tooltip": "سارا مواد لبو (گل بات والے صفے وی)",
        "searchprofile-advanced-tooltip": "کسٹم ناواں چ لبو",
-       "search-result-size": "$1 ({{PLURAL:$2|1 لفظ|$2 الفاظ}})",
+       "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-redirect": "($1 ریڈائریکٹ)",
        "search-section": "($1 ٹوٹا)",
        "searchrelated": "جڑیا",
        "searchall": "سارے",
        "showingresults": "تھلیوں دسے گۓ  {{PLURAL:$1|'''1''' نتیجہ|'''$1''' نتیجے}}  شروع #'''$2'''.",
+       "search-showingresults": "{{PLURAL:$4|نتارا<strong>$1</strong> دا <strong>$3</strong>|نتارے<strong>$1 - $2</strong> دے <strong>$3</strong>}}",
        "search-nonefound": "سوال نال رلدے کوئی نتارے نئیں سن۔",
        "powersearch-legend": "ہور کھوج",
        "powersearch-ns": "ناں الیاں جگہاں چ لبو:",
        "right-override-export-depth": "5 تک صفے تے جڑے صفے لے کے جاؤ",
        "right-sendemail": "دوجے ورتن والیاں نوں ای-میل کرو",
        "right-passwordreset": "کنجی بدلی ای-میلاں نوں وکھاؤ",
-       "newuserlogpage": "ورتاوا بنان آلی لاگ",
+       "newuserlogpage": "ورتنوالا بنان آلی لاگ",
        "newuserlogpagetext": "اے ورتن والا بنان دی لاگ اے۔",
        "rightslog": "ورتن والے دے حقاں دی لاگ",
        "rightslogtext": "ورتن حقاں چ تبدیلیاں دی اے لاگ اے۔",
        "action-siteadmin": "ڈیٹابیس نوں کھولو یا بند کرو",
        "action-sendemail": "ای-میلاں پیجو",
        "nchanges": "$1 {{PLURAL:$1|change|تبدیلیاں}}",
+       "enhancedrc-history": "پچھلا کم",
        "recentchanges": "نویاں تبدیلیاں",
        "recentchanges-legend": "نویاں تبدیلیاں دیاں راواں",
        "recentchanges-summary": "ایس وکی تے نیڑے نیڑے ہون والیاں تبدیلیاں ایس صفے تے دسو۔",
        "recentchanges-feed-description": "اس فیڈ وچ وکی تے ہوئیاں نویاں تبدیلیاں نو ویکھو۔",
        "recentchanges-label-newpage": "ایس تبدیلی نے نواں صفہ بنایا اے۔",
-       "recentchanges-label-minor": "اÛ\92 اک چھوٹی تبدیلی اے۔",
+       "recentchanges-label-minor": "اÛ\8cÛ\81 اک چھوٹی تبدیلی اے۔",
        "recentchanges-label-bot": "ایس تبدیلی نوں بوٹ نے کیتا اے۔",
        "recentchanges-label-unpatrolled": "ایس تبدیلی تے ہلے گشت نئیں ہوئی۔",
+       "recentchanges-label-plusminus": "صفے دا ناپ اینے بائٹاں نال بدلیا گیا",
+       "recentchanges-legend-heading": "'''وات:'''",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (ایہ وی ویکھو [[Special:NewPages|نویں صفیاں دی لسٹ]])",
        "rcnotefrom": "ہلے تک '''$2''' توں '''$1''' تبدیلیاں تھلے دتیاں گئیاں نیں۔",
        "rclistfrom": "$3 $2 توں ہونے آلیاں نویاں تبدیلیاں وکھاؤ",
        "rcshowhideminor": "$1 معمولی تبدیلیاں",
+       "rcshowhideminor-show": "وکھاو",
+       "rcshowhideminor-hide": "لکاؤ",
        "rcshowhidebots": "$1 بوٹ",
+       "rcshowhidebots-show": "وکھاؤ",
+       "rcshowhidebots-hide": "لکاؤ",
        "rcshowhideliu": "$1 ورتن آلے اندر نیں",
+       "rcshowhideliu-hide": "لکاؤ",
        "rcshowhideanons": "$1 گمنام ورتن والے",
+       "rcshowhideanons-show": "وکھاو",
+       "rcshowhideanons-hide": "لکاؤ",
        "rcshowhidepatr": "$1 ویکھی گئی لکھائی",
        "rcshowhidemine": "$1 میرے کم",
+       "rcshowhidemine-show": "وکھاو",
+       "rcshowhidemine-hide": "لکاؤ",
        "rclinks": "آخری $2 دناں دیاں $1 تبدیلیاں وکھاؤ<br />$3",
        "diff": "فرق",
        "hist": "پچھلا کم",
        "rc-enhanced-hide": "لمبی کہانی لکاؤ",
        "recentchangeslinked": "ملدیاں جلدیاں تبدیلیاں",
        "recentchangeslinked-feed": "ملدیاں جلدیاں تبدیلیاں",
-       "recentchangeslinked-toolbox": "ملدیاں جلدیاں تبدیلیاں",
+       "recentchangeslinked-toolbox": "رلدیاں ملدیاں تبدیلیاں",
        "recentchangeslinked-title": "\"$1\" نال تعلق آلیاں تبدیلیاں",
-       "recentchangeslinked-summary": "اے اوناں تبدیلیاں دی لسٹ اے جیڑیاں تھوڑا چر پہلاں بنائیاں گئیاں اوناں صفحیاں تے جیڑے خاص صفحے تے جڑدے نے یا کسی خاص کیٹاگری دے ممبراں نوں۔<br />\nتواڈی [[Special:Watchlist|اکھ تھلے صفحے]] '''موٹے''' نیں۔",
+       "recentchangeslinked-summary": "اے اوناں تبدیلیاں دی لسٹ اے جیڑیاں تھوڑا چر پہلاں بنائیاں گئیاں اوناں صفیاں تے جیڑے خاص صفے تے جڑدے نے یا کسی خاص کیٹاگری دے ممبراں نوں۔<br />\nتواڈی [[Special:Watchlist|اکھ تھلے صفے]] '''موٹے''' نیں۔",
        "recentchangeslinked-page": "صفے دا ناں:",
-       "recentchangeslinked-to": "کھلے ہوۓ صفحے دی بجاۓ ایدے نال جڑے صفحے دیاں نویاں تبدیلیاں وکھاؤ",
+       "recentchangeslinked-to": "کھلے ہوۓ صفے دی بجاۓ ایدے نال جڑے صفے دیاں نویاں تبدیلیاں وکھاؤ",
        "upload": "فائل چڑھاؤ",
        "uploadbtn": "فائل چڑھاؤ",
        "reuploaddesc": "فائل چڑانا چھڑو تے فائل چڑانے آلے فارم تے واپس ٹرو",
        "filehist-filesize": "فائل دا ناپ",
        "filehist-comment": "راۓ",
        "imagelinks": "فائل ورتن",
-       "linkstoimage": "تھلے دتے گۓ {{PLURAL:$1|$1 صفحے}} اس فائل نال جڑدے نے",
+       "linkstoimage": "تھلے دتے گۓ {{PLURAL:$1|$1 صفے}} اس فائل نال جڑدے نے",
        "linkstoimage-more": "$1 توں چوکھے {{PLURAL:$1|صفہ جوڑ|صفہ جوڑ}} ایس فائل نوں۔\nتھلے دتی گئی لسٹ {{PLURAL:$1|پہلا صفہ جوڑ|پہلا $1 صفہ جوڑ}} ایس فائل نال دسدی اے۔\nاک خاص [[Special:WhatLinksHere/$2|پوری لسٹ]] ہیگی اے۔",
        "nolinkstoimage": "اس فائل نال جڑیا کوئی صفحہ نہیں۔",
        "morelinkstoimage": "ایس فائل نوں [[Special:WhatLinksHere/$1|ہور جوڑ]] ویکھو",
        "uploadnewversion-linktext": "اس فائل دا نوا ورژن چھڑھاؤ",
        "shared-repo-from": "$1 توں",
        "shared-repo": "اک سانجی ریپوزیٹری",
+       "upload-disallowed-here": "تسیں ایس فائل تے نہیں لکھ سکدے",
        "filerevert": "$1 واپس",
        "filerevert-legend": "فائل پچھلی حالت چ لے جاؤ",
        "filerevert-intro": "تسیں فائل '''[[Media:$1|$1]]''' نوں واپس کرن والے او [$4 ورین $3, $2] ول۔",
        "unusedtemplates": "نا استعمال ہوۓ سچے",
        "unusedtemplatestext": "ایس صفے چ  سارے صفیاں دی لسٹ اے {{ns:ٹمپلیٹ}} تے جیہڑے کسے ہور صفے نال نئیں رلے۔  ٹمپلیٹ تے  ہور جوڑ ویکھ لو مٹان توں پہلے۔",
        "unusedtemplateswlh": "دوجے جوڑ",
-       "randompage": "ملے جلے صفحے",
+       "randompage": "رلے ملے صفے",
        "randompage-nopages": "ایتھے کوئی صفے نئیں تھلے دتے گۓ {{PLURAL:$2|ناںتھاں|ناںتھانواں}} : $1",
        "randomredirect": "بے پترتیب ریڈائریکٹ",
        "randomredirect-nopages": "\"$1\" ناں نال کوئی ریڈائرکٹ نئیں۔",
        "querypage-disabled": "اے صفہ ناکارہ کیتا گیا پرفارمنس وجہ توں۔",
        "booksources": "کتاب توں اتہ پتہ",
        "booksources-search-legend": "اس مضمون تے کتاباں لبو",
+       "booksources-search": "کھوج",
        "booksources-text": "تھلے اوناں جوڑاں دی لسٹ اے جتھے نویاں تے پرانیاں کتاباں وکدیاں نیں، تے ہور وی جانکاری ہوسکدی اے  کتاباں بارے تسیں ویکھدے او:",
        "booksources-invalid-isbn": "دتی گئی آئی ایس بی این چلدی نئیں لکدی ؛ اصل سورس نوں چیک کرو کاپی کرن توں پہلے۔",
        "specialloguserlabel": "کرن والا:",
        "delete-warning-toobig": "ایس صفے دی تبدیلی دی اک لمی تریخ اے۔ $1 توں ود {{PLURAL:$1|ریوین|ریویناں}}۔\nاینوں مٹان تے {{SITENAME}} دے ڈیٹا اوپریشنز چ مسلہ بن سکدا اے۔\nسوچ سمج کے اگے ودو۔",
        "rollback": "لکھائیاں واپس کرو",
        "rollbacklink": "واپس",
+       "rollbacklinkcount": "واپس $1 {{PLURAL:$1|لکھت|لکھتاں}}",
        "rollbackfailed": "واپس کرن ناکام",
        "cantrollback": "تبدیلی واپس نئیں ہوسکدی؛\nآخری لکھاری ای ایدا اکو لکھاری سی۔",
        "alreadyrolled": "[[:$1]] دی آخری تبدیلی جیہڑی [[User:$2|$2]]  نے ([[User talk:$2|talk|]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]); کیتی؛ واپس نئیں ہوسکدی\nکسے ہور نے تبدیلی یا پچھے نوں پہلے ای کردتا اے۔\n\nصفے تے آخری تبدیلی [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) نے کیتی.",
        "namespace_association": "رلدے ناں تھاں",
        "tooltip-namespace_association": "ایس ڈبے نون وی ویکھو گل بات یا ناںتھاں  چونویں ناںتھاں نال رلدا۔",
        "blanknamespace": "(مکھ)",
-       "contributions": "ورتن آلے دا حصہ",
+       "contributions": " $1 ورتن آلے دا حصہ",
        "contributions-title": "$1 دے کم",
        "mycontris": "میرے کم",
        "contribsub2": "$1 آستے ($2)",
        "sp-contributions-toponly": "صرف اوہ تبدیلیاں وکھاؤ جیہڑیاں سب توں نیڑے ویلے ہویاں نیں۔",
        "sp-contributions-submit": "کھوجو",
        "whatlinkshere": "ایتھے کیدا جوڑ اے",
-       "whatlinkshere-title": "او صفحات جیڑے \"$1\" نال جڑے نے",
+       "whatlinkshere-title": "او صفے جیڑے \"$1\" نال جڑے نیں",
        "whatlinkshere-page": "صفہ:",
        "linkshere": "تھلے دتے گۓ صفے اس دے نال جڑدے نے '''[[:$1]]''':",
        "nolinkshere": "'''[[:$1]]''' دے نال کسے دا جوڑ نہیں",
        "isredirect": "ریڈائرکٹ صفہ",
        "istemplate": "ملن",
        "isimage": "مورت دا جوڑ",
-       "whatlinkshere-prev": "{{PLURAL:$1|پچھل $1ا|پچھلا}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|پچھلا $1ا|پچھلا}}",
        "whatlinkshere-next": "{{PLURAL:$1|اگلا $1|اگلا}}",
        "whatlinkshere-links": "← جوڑ",
        "whatlinkshere-hideredirs": "$1 ریڈائریکٹس",
        "tooltip-pt-mytalk": "میریاں گلاں",
        "tooltip-pt-anontalk": "ایس IP  پتے دیاں تبدیلیاں تے گل بات",
        "tooltip-pt-preferences": "میریاں تانگاں",
-       "tooltip-pt-watchlist": "او صفحے جنہاں وچ تبدیلیاں تسی ویکھ رہے او",
+       "tooltip-pt-watchlist": "او صفے جنہاں وچ تبدیلیاں تسی ویکھ رہے او",
        "tooltip-pt-mycontris": "میرے کم",
        "tooltip-pt-login": "ایہ بہتر اے کہ لاگ ان ہو جاؤ، فیر وی ایہ لازمی نئیں۔",
        "tooltip-pt-logout": "باہر آؤ",
+       "tooltip-pt-createaccount": "ایہ تواڈے لئی چنگا اے جے تسیں کھاتہ بناؤ تے لاگ ان ہوو؛ پر ایہ لازمی وی نئیں",
        "tooltip-ca-talk": "اس صفے بارے گل بات",
-       "tooltip-ca-edit": "تسÛ\8cÚº Ø§Ø³ ØµÙ\81Û\92 ØªÛ\92 Ù\84Ú©Ú¾ Ø³Ú©Ø¯Û\92 Ø§Ù\88Û\94\nبÚ\86اÙ\86 ØªÙ\88Úº Ù¾Û\81Ù\84اں Ú©Ú\86Û\92 Ú©Ù\85 Ù\86Ù\88Úº Ù\88Û\8cÚ©Ú¾ Ù\84Ù\88Û\94",
+       "tooltip-ca-edit": "اس ØµÙ\81Û\92 ØªÛ\92 Ù\84Ú©Ú¾Ù\88",
        "tooltip-ca-addsection": "اس گل بات وچ حصہ لے لو۔",
-       "tooltip-ca-viewsource": "اے صفحہ بچایا گیا اے۔\nتسی اینو صرف ویکھ سکدے او۔",
-       "tooltip-ca-history": "اس صفحے دا پرانہ ورژن۔",
+       "tooltip-ca-viewsource": "اے صفہ بچایا گیا اے۔\nتسی اینو صرف ویکھ سکدے او۔",
+       "tooltip-ca-history": "اس صفے دا پرانہ ورژن۔",
        "tooltip-ca-protect": "اس صفے نوں بچاؤ",
        "tooltip-ca-unprotect": "ایس صفے دا بچاؤ بدلو۔",
        "tooltip-ca-delete": "اس صفے نوں مٹاؤ",
        "tooltip-ca-undelete": "ایس صفے دیاں تبدیلیاں نوں واپس لیاؤ ایس توں پہلے کے اے مٹ جاۓ۔",
-       "tooltip-ca-move": "اس صفحے نوں لے چلو",
+       "tooltip-ca-move": "اس صفے نوں لے چلو",
        "tooltip-ca-watch": "اس صفحہ تے نظر رکھو",
        "tooltip-ca-unwatch": "اس صفحے توں نظر ہٹاؤ",
        "tooltip-search": "کھوج {{SITENAME}}",
-       "tooltip-search-go": "اس ناں دے صفحے تے چلو، اگر اے ہے گا اے",
-       "tooltip-search-fulltext": "اس لفظ نوں صفحیاں چ لبو",
+       "tooltip-search-go": "اس ناں دے صفے تے چلو، اگر ایہ ہیگا اے",
+       "tooltip-search-fulltext": "اس شبد نوں صفیاں چ لبو",
        "tooltip-p-logo": "پہلا صفہ",
        "tooltip-n-mainpage": "پہلے صفے نوں ویکھو",
        "tooltip-n-mainpage-description": "پہلے ورقے تے جاؤ",
        "tooltip-n-randompage": "کوئی صفہ کھولو۔",
        "tooltip-n-help": "مدد لینے آلی جگہ۔",
        "tooltip-t-whatlinkshere": "اس نال جڑے سارے وکی صفے۔",
-       "tooltip-t-recentchangeslinked": "اس صفحے توں جڑے صفحیاں چ نویاں تبدیلیاں",
+       "tooltip-t-recentchangeslinked": "اس صفے توں جڑے صفیاں چ نویاں تبدیلیاں",
        "tooltip-feed-rss": "RSS feed for this page",
        "tooltip-feed-atom": "Atom feed for this page",
        "tooltip-t-contributions": "اس ورتن والے دے کم ویکھو",
        "tooltip-t-upload": "فائل چڑھاؤ",
        "tooltip-t-specialpages": "سارے خاص صفیاں دی اک لسٹ",
        "tooltip-t-print": "اس صفے دا چھپنے آلا ورژن ویکھو",
-       "tooltip-t-permalink": "اس صفحے دے اس ورژن نال پرماننٹ لنک",
-       "tooltip-ca-nstab-main": "مواد آلا صفحہ ویکھو",
-       "tooltip-ca-nstab-user": "ورتن آلے دا صفحہ ویکھو",
+       "tooltip-t-permalink": "اس صفے دے اس ورژن نال پکا جوڑ",
+       "tooltip-ca-nstab-main": "مواد آلا صفہ ویکھو",
+       "tooltip-ca-nstab-user": "ورتن آلے دا صفہ ویکھو",
        "tooltip-ca-nstab-media": "میڈیا آلا صفحہ ویکھو",
-       "tooltip-ca-nstab-special": "اÛ\92 Ø§Ú© Ø®Ø§Øµ ØµÙ\81Ø­Û\81 Ø§Û\92Ø\8c ØªÛ\92Û\8c Ø§Û\92 ØµÙ\81Ø­ہ آپے نئیں لکھ سکدے",
-       "tooltip-ca-nstab-project": "Ù\85Ù\86صÙ\88بÛ\92 Ø¯Ø§ ØµÙ\81Ø­ہ ویکھو",
-       "tooltip-ca-nstab-image": "فائل دا صفحہ ویکھو",
+       "tooltip-ca-nstab-special": "اÛ\8cÛ\81 Ø§Ú© Ø®Ø§Øµ ØµÙ\81Û\81 Ø§Û\92Ø\8c ØªÛ\92 Ø§Û\8cÛ\81 ØµÙ\81ہ آپے نئیں لکھ سکدے",
+       "tooltip-ca-nstab-project": "Ù\88Û\8cÙ\86ت Ø¯Ø§ ØµÙ\81ہ ویکھو",
+       "tooltip-ca-nstab-image": "فائل دا صفہ ویکھو",
        "tooltip-ca-nstab-mediawiki": "پربندھ سنیعہ ویکھو",
-       "tooltip-ca-nstab-template": "سانچہ تکو",
+       "tooltip-ca-nstab-template": "سانچہ ویکھو",
        "tooltip-ca-nstab-help": "مدد دا صفحہ ویکھو",
-       "tooltip-ca-nstab-category": "کیٹاگری آلا صفحہ ویکھو",
+       "tooltip-ca-nstab-category": "کیٹاگری آلا صفہ ویکھو",
        "tooltip-minoredit": "انیو نکے کم چ گنو",
        "tooltip-save": "اپنا کم بچالو",
        "tooltip-preview": "کچا کم ویکھو، اس بٹن نوں بچان توں پہلاں استعمال کرو!۔",
-       "tooltip-diff": "اس عبارت وچ کیتیاں تبدیلیاں وکھاؤ۔",
+       "tooltip-diff": "اس لکھت وچ کیتیاں تبدیلیاں وکھاؤ۔",
        "tooltip-compareselectedversions": "چنے ہوۓ صفحیاں وچ فرق ویکھو۔",
        "tooltip-watch": "اس صفے تے نظر رکھو",
        "tooltip-watchlistedit-normal-submit": "ٹائیٹلز ہٹاؤ",
        "tooltip-watchlistedit-raw-submit": "اکھ تھلے رکھی لسٹ نون نواں کرو",
        "tooltip-recreate": "ایہ صفہ دوبارہ بناؤ پاویں اے مٹادتا گیا ہووے۔",
        "tooltip-upload": "فائل چڑھانا شروع کرو",
-       "tooltip-rollback": "\"رول بیک\" اک کلک چ صفحے نوں پچھلی حالت چ لے چلے گا",
+       "tooltip-rollback": "\"رول بیک\" اک کلک چ صفے نوں پچھلی حالت چ لے چلے گا",
        "tooltip-undo": "\"واپس\" تے کلک کرن نال توانوں صفحہ کچا وکھایا جاۓ گا۔\nاس نال تسی واپس کرن دی وجہ لکھ سکو گے۔",
        "tooltip-preferences-save": "تانگاں بچاؤ",
        "tooltip-summary": "اک نکی سمری پاؤ",
        "spambot_username": "میڈیاوکی سپام سفائی",
        "spam_reverting": "آخری ریوین ول جیدے چ $1 دے جوڑ ناں ہون۔",
        "spam_blanking": "سارے ریوین جناں چ $1 نوں جوڑ نیں، طاف کیتا جاریا اے۔",
-       "simpleantispam-label": "سپام روک پھاٹک\nایدے تے ناں لکھو۔",
+       "simpleantispam-label": "سپام روک پھاٹک\nDo <strong>not</strong> fill this in!",
        "pageinfo-title": "\"$1\" لئی جانکاری",
        "pageinfo-header-edits": "تبدیلیاں",
        "pageinfo-watchers": "ویکھن والے",
        "pageinfo-edits": "تبدیلیاں گنتی",
        "pageinfo-authors": "وکھرے لکھاریاں دی گنتی",
+       "pageinfo-toolboxlink": "صفہ وات",
        "markaspatrolleddiff": "ویکھے گۓ دا نشان لاؤ",
        "markaspatrolledtext": "ایس صفے تے ویکھن دا نشان لاؤ",
        "markedaspatrolled": "ویکھن دا نشان لاؤ",
        "file-info-size-pages": "$1 × $2 پکسل, فائل ناپ: $3, مائم ٹائپ: $4, $5 {{PLURAL:$5|صفہ|صفے}}",
        "file-nohires": "اس توں وڈی فوٹو موجود نہیں۔",
        "svg-long-desc": "ایس وی جی فائل، پکسل:$1 × $2، فائل سائز: $3",
-       "show-big-image": "وڈی مورت",
+       "show-big-image": "اصلی فائل",
        "show-big-image-preview": "ایس وکھالے دا ناپ: $1۔",
        "show-big-image-other": "دوجے {{PLURAL:$2|ریزولوشن|ریزولوشنز}}: $1.",
        "show-big-image-size": "$1 × $2 پکسلز",
        "exif-primarychromaticities": "کرومیٹیسٹیز آف پرآمریٹیز",
        "exif-ycbcrcoefficients": "کلر سپیس ٹرانسنارمیشن میٹرکس کوایفیشینٹز",
        "exif-referenceblackwhite": "کالے چٹے جوڑے دی ریفرنس ویلیو",
-       "exif-datetime": "Ù\81ائÙ\84 Ø¨Ø¯Ù\84Ù\86 Ø¯Û\8c ØªØ§Ø±Û\8cØ® ØªÛ\92 Ù\88Û\8cÙ\84ا",
+       "exif-datetime": "فائل بدلن دی تریخ تے ویلا",
        "exif-imagedescription": "مورت دا ناں",
        "exif-make": "کیمرہ بنانے آلا",
        "exif-model": "کیمرا ماڈل",
        "tags": "منے ہوۓ تبدیلی دے ٹیگ",
        "tag-filter": "[[Special:Tags|Tag]] نتارا:",
        "tag-filter-submit": "فلٹر",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|ٹیگ|ٹیگز}}]]: $2)",
        "tags-title": "ٹیگز",
        "tags-intro": "ایس صفے تے ٹیگ دی لسٹ اے جینوں سوفٹوئیر تبدیلی دا نشان لا سکدا اے۔",
        "tags-tag": "ٹیگ ناں",
        "revdelete-uname-unhid": "ورتن والے دا ناں ںئیں لکیا",
        "revdelete-restricted": "مکھیاں تے روکاں لگیاں",
        "revdelete-unrestricted": "مکھیاں تے روکاں لتھیاں",
-       "logentry-move-move": "$1 {{GENDER:$2|پلٹی}} صفہ $3 توں $4",
+       "logentry-move-move": "$1 {{جنس:$2|پلٹی}} صفہ $3 توں $4",
        "logentry-move-move-noredirect": "$1 {{GENDER:$2|پلٹی}} صفہ $3 توں $4 اک ڑیڈائرکٹ چھڈے بنا",
        "logentry-move-move_redir": "$1 {{GENDER:$2|پلٹی}} صفہ $3 توں $4 ریڈائرکٹ",
        "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|پلٹی}} صفہ $3 توں $4 اک ریڈائرکٹ دے بنا کسے ریڈائرکٹ دتیاں",
        "logentry-newusers-create": "$1 {{GENDER:$2|بنایا}} اک ورتن والا کھاتہ",
        "logentry-newusers-create2": "$1 {{GENDER:$2|بنایا}} {{GENDER:$4|اک ورتن کھاتہ}} $3",
        "logentry-newusers-autocreate": "کھاتہ $1 اپنے آپ ای {{GENDER:$2|بنایا گیا}} بنایا گیا۔",
+       "logentry-upload-upload": "$1 {{جنس:$2|چڑھائی گئی}} $3",
        "rightsnone": "(کوئی وی نئیں)",
        "revdelete-summary": "لکھائی دا خلاصہ",
        "feedback-adding": "مشورہ  صفے تے دیو۔۔۔۔۔۔۔",
index ec3c55a..613a05e 100644 (file)
@@ -81,7 +81,8 @@
                        "RosaMafalda17",
                        "Macofe",
                        "TheEduGobi",
-                       "Araceletorres"
+                       "Araceletorres",
+                       "L"
                ]
        },
        "tog-underline": "Sublinhar links:",
@@ -92,9 +93,9 @@
        "tog-usenewrc": "Agrupar alterações por páginas nas mudanças recentes e nas páginas vigiadas",
        "tog-numberheadings": "Auto-numerar cabeçalhos",
        "tog-showtoolbar": "Mostrar barra de ferramentas de edição",
-       "tog-editondblclick": "Editar páginas quando houver clique duplo",
+       "tog-editondblclick": "Editar páginas no clique duplo",
        "tog-editsectiononrightclick": "Habilitar edição de seção por clique com o botão direito no título da seção (requer JavaScript)",
-       "tog-watchcreations": "Adicionar as páginas e arquivos que eu criar à minha lista de páginas vigiadas",
+       "tog-watchcreations": "Adicionar as páginas e arquivos que \neu criar à minha lista de páginas vigiadas",
        "tog-watchdefault": "Adicionar as páginas e arquivos que eu editar à minha lista de páginas vigiadas",
        "tog-watchmoves": "Adicionar as páginas e arquivos que eu mover à minha lista de páginas vigiadas",
        "tog-watchdeletion": "Adicionar as páginas e arquivos que eu eliminar à minha lista de páginas vigiadas",
        "unusedimages": "Arquivos não utilizados",
        "wantedcategories": "Categorias pedidas",
        "wantedpages": "Páginas pedidas",
-       "wantedpages-summary": "Lista de páginas não-existentes com mais links para elas, excluindo páginas que apenas têm redirecionamentos linkando para elas. Para obter uma lista de páginas inexistentes que redireciona links para elas, veja [[{{#special: Brokenredirects}}]].",
+       "wantedpages-summary": "Lista de páginas não-existentes com mais links para elas, excluindo páginas que apenas têm redirecionamentos para elas. Para obter uma lista de páginas inexistentes com redirecionamentos para elas, veja [[{{#special: Brokenredirects}}]].",
        "wantedpages-badtitle": "Título inválido no conjunto de resultados: $1",
        "wantedfiles": "Arquivos pedidos",
        "wantedfiletext-cat": "Os seguintes arquivos são usados, mas não existem. Arquivos de repositórios externos podem acabar sendo listados apesar de existirem. Esses falsos positivos aparecerão <del>riscados</del>. As páginas que incluem arquivos inexistentes são listadas em [[:$1]].",
        "watchlistanontext": "Por favor, faça login para ver ou editar os itens na sua lista de páginas vigiadas.",
        "watchnologin": "Não está autenticado",
        "addwatch": "Adicionar às páginas vigiadas",
-       "addedwatchtext": "A página \"[[:$1]]\" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].\nFuturas modificações em tal página e páginas de discussão relacionadas serão listadas lá.",
+       "addedwatchtext": "A página \"[[:$1]]\" e sua página de discussão foram adicionadas à sua [[Special:Watchlist|lista de páginas vigiadas]].",
        "addedwatchtext-short": "A página \"$1\" foi adicionada à sua lista de páginas vigiadas.",
        "removewatch": "Remover das páginas vigiadas",
-       "removedwatchtext": "A página \"[[:$1]]\" foi removida de sua [[Special:Watchlist|lista de páginas vigiadas]].",
+       "removedwatchtext": "A página \"[[:$1]]\" e sua página de discussão foram removidas de sua [[Special:Watchlist|lista de páginas vigiadas]].",
        "removedwatchtext-short": "A página \"$1\" foi removida de sua lista de páginas vigiadas.",
        "watch": "Vigiar",
        "watchthispage": "Vigiar esta página",
        "special-characters-group-khmer": "Cambojano",
        "special-characters-title-endash": "traço",
        "special-characters-title-emdash": "travessão",
-       "special-characters-title-minus": "sinal de menos"
+       "special-characters-title-minus": "sinal de menos",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM"
 }
index 6681d50..e85b9ad 100644 (file)
        "title-invalid-talk-namespace": "O título da página solicitada refere-se a uma página de discussão que não existe.",
        "title-invalid-characters": "O título da página solicitada contém carateres inválidos: \"$1\".",
        "title-invalid-too-long": "O título da página solicitada é demasiado longo. Não deverá ser maior que $1 {{PLURAL:$1|byte|bytes}} na codificação UTF-8.",
+       "title-invalid-leading-colon": "O título da página solicitada contém um erro de pontuação (:) no início.",
        "perfcached": "Os seguintes dados encontram-se armazenados na ''cache'' e podem não estar atualizados. No máximo {{PLURAL:$1|um resultado é disponível|$1 resultados são disponíveis}} na ''cache''.",
        "perfcachedts": "Os seguintes dados encontram-se armazenados na ''cache'' e foram atualizados pela última vez a $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} na ''cache''.",
        "querypage-no-updates": "As atualizações estão presentemente desativadas para esta página.\nPor enquanto, os dados aqui presentes não poderão ser atualizados.",
        "actionthrottled": "Operação limitada",
        "actionthrottledtext": "Como medida anti-spam, está impedido de realizar esta operação demasiadas vezes num espaço de tempo curto e já excedeu esse limite. Tente de novo dentro de alguns minutos, por favor.",
        "protectedpagetext": "Esta página foi protegida para prevenir a sua edição.",
-       "viewsourcetext": "Pode ver e copiar o conteúdo desta página:",
-       "viewyourtext": "Pode ver e copiar o código-fonte das '''suas edições''' desta página:",
+       "viewsourcetext": "Pode ver e copiar o conteúdo desta página.",
+       "viewyourtext": "Pode ver e copiar o código-fonte das <strong>suas edições</strong> desta página.",
        "protectedinterface": "Esta página fornece o texto da interface ao software, e está protegida para prevenir abusos.",
        "editinginterface": "<strong>Aviso:</strong> Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afetarão a aparência da interface de utilizador para os outros utilizadores.",
        "translateinterface": "Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projeto destinado à tradução do MediaWiki.",
        "creating": "A criar $1",
        "editingsection": "A editar $1 (secção)",
        "editingcomment": "A editar $1 (nova secção)",
-       "editconflict": "As suas alterações não puderam ser gravadas devido a um conflito de edição. Gostaria de resolver o conflito manualmente?",
+       "editconflict": "Conflito de edição: $1",
        "explainconflict": "A página foi alterada por alguém desde que começou a editá-la.\nA caixa de texto abaixo mostra o texto existente neste momento.\nAs suas mudanças são mostradas na área ao fundo da página.\nTerá de reintegrar as suas mudanças no texto da caixa abaixo.\n'''Só''' o texto desta caixa será gravado quando clicar \"{{int:savearticle}}\".",
        "yourtext": "O seu texto",
        "storedversion": "Versão gravada",
        "content-model-css": "CSS",
        "content-json-empty-object": "Objeto vazio",
        "content-json-empty-array": "Matriz vazia",
+       "duplicate-args-warning": "<strong>Aviso:</strong> [[:$1]] chama [[:$2]] com mais de um valor para o parâmetro \"$3\". Somente o último valor fornecido será utilizado.",
        "duplicate-args-category": "Páginas que utilizam argumentos duplicados ao chamar predefinições",
        "duplicate-args-category-desc": "A página contém campos de predefinições que utilizam duplicatas de argumentos, tais como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ou <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Aviso:''' Esta página contém demasiadas chamadas de funções exigentes do analisador sintático.\n\nDevia ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento tem $1 {{PLURAL:$1|chamada|chamadas}}.",
        "search-category": "(categoria $1)",
        "search-file-match": "(coincide com o conteúdo do ficheiro)",
        "search-suggest": "Será que quis dizer: $1",
+       "search-rewritten": "A mostrar resultados para $1. Pesquise antes por $2.",
        "search-interwiki-caption": "Projetos irmãos",
        "search-interwiki-default": "Resultados de $1:",
        "search-interwiki-more": "(mais)",
        "rows": "Linhas:",
        "columns": "Colunas:",
        "searchresultshead": "Pesquisar",
-       "stub-threshold": "Ligações para páginas curtas terão <a href=\"#\" class=\"stub\">este formato</a> se ocuparem menos de (bytes):",
+       "stub-threshold": "Limite para a formatação de <a href=\"#\" class=\"stub\">ligações para esboços</a> (bytes):",
        "stub-threshold-disabled": "Desativado",
        "recentchangesdays": "Dias a apresentar nas mudanças recentes:",
        "recentchangesdays-max": "Máximo: $1 {{PLURAL:$1|dia|dias}}",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|$1 utilizador|$1 utilizadores}} a vigiar]",
-       "rc_categories": "Limitar às categorias (separar com \"|\")",
+       "rc_categories": "Limitar às categorias (separar com \"|\"):",
        "rc_categories_any": "Qualquer",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|bytes}} após mudança",
        "newsectionsummary": "/* $1 */ nova secção",
        "upload-too-many-redirects": "A URL continha demasiados redirecionamentos",
        "upload-http-error": "Ocorreu um erro HTTP: $1",
        "upload-copy-upload-invalid-domain": "Não é possível realizar carregamentos remotos neste domínio.",
+       "upload-dialog-title": "Carregar ficheiro",
+       "upload-dialog-error": "Ocorreu um erro",
+       "upload-dialog-button-cancel": "Cancelar",
+       "upload-dialog-button-done": "Feito",
+       "upload-dialog-button-save": "Gravar",
+       "upload-dialog-button-upload": "Carregar",
+       "upload-dialog-label-select-file": "Selecionar ficheiro",
+       "upload-dialog-label-infoform-title": "Detalhes",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descrição",
+       "upload-dialog-label-usage-title": "Uso",
+       "upload-dialog-label-usage-filename": "Nome do ficheiro",
        "backend-fail-stream": "Não foi possível transmitir o ficheiro \"$1\".",
        "backend-fail-backup": "Não foi possível fazer cópia de segurança do ficheiro \"$1\".",
        "backend-fail-notexists": "O ficheiro $1 não existe.",
        "watchlistanontext": "Por favor, inicie sessão para ver ou editar itens da sua lista de páginas vigiadas.",
        "watchnologin": "Não está autenticado(a)",
        "addwatch": "Adicionar às páginas vigiadas",
-       "addedwatchtext": "A página \"[[:$1]]\" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].\nModificações futuras desta página e da respetiva página de discussão serão listadas lá.",
+       "addedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram adicionadas à sua [[Special:Watchlist|lista de páginas vigiadas]].",
        "addedwatchtext-short": "A página \"$1\" foi adicionada à sua lista de vigiadas.",
        "removewatch": "Remover das páginas vigiadas",
-       "removedwatchtext": "A página \"[[:$1]]\" foi removida da sua lista de [[Special:Watchlist|páginas vigiadas]].",
+       "removedwatchtext": "\"[[:$1]]\" e a sua página de discussão foram removidas da sua lista de [[Special:Watchlist|páginas vigiadas]].",
        "removedwatchtext-short": "A página \"$1\" foi removida da sua lista de vigiadas.",
        "watch": "Vigiar",
        "watchthispage": "Vigiar esta página",
        "rollback-success": "Foram revertidas as edições de $1, com o conteúdo passando a estar como na última edição de $2.",
        "sessionfailure-title": "Erro de sessão",
        "sessionfailure": "Foram detectados problemas com a sua sessão;\na operação foi cancelada como medida de proteção contra a interceptação de sessões.\nVolte à página anterior, recarregue-a e tente novamente.",
+       "changecontentmodel": "Editar o modelo de conteúdo de uma página",
+       "changecontentmodel-legend": "Editar modelo de contéudo",
        "changecontentmodel-title-label": "Título da página",
+       "changecontentmodel-model-label": "Novo modelo de conteúdo",
        "changecontentmodel-reason-label": "Motivo:",
+       "changecontentmodel-success-title": "O modelo de conteúdo foi alterado",
+       "changecontentmodel-success-text": "O tipo de conteúdo de [[:$1]] foi alterado.",
        "logentry-contentmodel-change-revertlink": "reverter",
        "logentry-contentmodel-change-revert": "reverter",
        "protectlogpage": "Registo de proteção",
        "pageinfo-robot-index": "Permitida",
        "pageinfo-robot-noindex": "Não permitida",
        "pageinfo-watchers": "Número de vigilantes da página",
+       "pageinfo-visiting-watchers": "Número de vigilantes que consultaram as edições recentes da página",
        "pageinfo-few-watchers": "Menos do que $1 {{PLURAL:$1|vigilante|vigilantes}}",
        "pageinfo-redirects-name": "Número de redirecionamentos para esta página",
        "pageinfo-subpages-name": "Subpáginas desta página",
        "deletedwhileediting": "<strong>AVISO:</strong> Esta página foi eliminada depois de ter começado a editá-la!",
        "confirmrecreate": "Depois de ter começado a editar esta página, o utilizador [[User:$1|$1]] ([[User talk:$1|conversar]]) eliminou-a pelo seguinte motivo:\n: <em>$2</em>\nPor favor, confirme que quer realmente recriar esta página.",
        "confirmrecreate-noreason": "O utilizador [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de ter começado a editá-la. Confirme que deseja recriar a página, por favor.",
-       "recreate": "A página que começou a editar foi eliminada entretanto. Pressione \"$1\" para recriá-la.",
+       "recreate": "Recriar",
        "confirm_purge_button": "OK",
        "confirm-purge-top": "Limpar a memória cache desta página?",
        "confirm-purge-bottom": "Recarregar uma página, limpa a cache e força a sua versão mais recente a aparecer.",
        "watchlisttools-raw": "Editar a lista de páginas vigiadas em forma de texto",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
        "duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
-       "duplicate-displaytitle": "<strong>Aviso:</strong> Exibir título \"$2\" substituindo o título anteriormente em exibição \"$1\".",
+       "duplicate-displaytitle": "<strong>Aviso:</strong> O título em exibição \"$2\" anula o título anteriormente em exibição \"$1\".",
        "invalid-indicator-name": "<strong>Erro:</strong> O atributo <code>name</code>, da página de estados, não deve estar em branco.",
        "version": "Versão",
        "version-extensions": "Extensões instaladas",
        "tags-edit-logentry-submit": "Aplicar alterações a {{PLURAL:$1|esta entrada de registo|$1 entradas de registo}}",
        "tags-edit-success": "As alterações foram aplicadas com sucesso.",
        "tags-edit-failure": "As alterações não puderam ser aplicadas:\n$1",
+       "tags-edit-nooldid-title": "Revisão de página inválida",
        "tags-edit-none-selected": "Por favor, selecione pelo menos uma etiqueta para adicionar ou remover.",
        "comparepages": "Comparar páginas",
        "compare-page1": "Página 1",
        "htmlform-title-badnamespace": "[[:$1]] não se encontra no domínio \"{{ns:$2}}\".",
        "htmlform-title-not-creatable": "\"$1\" não é um título que possa ser atribuído a uma página",
        "htmlform-title-not-exists": "[[:$1]] não existe.",
+       "htmlform-user-not-exists": "<strong>$1</strong> não existe.",
        "sqlite-has-fts": "$1 com suporte de pesquisa de texto completo",
        "sqlite-no-fts": "$1 sem suporte de pesquisa de texto completo",
        "logentry-delete-delete": "$1 apagou a página $3",
        "feedback-bugornote": "Se está pronto para descrever um problema técnico em detalhe, por favor, [$1 comunique o defeito].\nCaso contrário, pode facilmente usar o formulário abaixo. O seu comentário será adicionado à página \"[$3 $2]\", junto com o seu nome de utilizador e o navegador que está a usar.",
        "feedback-cancel": "Cancelar",
        "feedback-close": "Feito",
+       "feedback-external-bug-report-button": "Assinalar erro técnico",
        "feedback-dialog-title": "Enviar opinião",
        "feedback-dialog-intro": "Pode usar o fácil formulário abaixo para enviar os seus comentários. A sua opinião será adicionada à página \"$1\", juntamente com o seu nome de utilizador(a).",
        "feedback-error-title": "Erro",
        "special-characters-title-endash": "hífen",
        "special-characters-title-emdash": "travessão",
        "special-characters-title-minus": "sinal de subtração",
+       "mw-widgets-dateinput-no-date": "Nenhuma data selecionada",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM",
        "mw-widgets-titleinput-description-new-page": "a página ainda não existe.",
        "mw-widgets-titleinput-description-redirect": "redirecionar para $1"
 }
index 872a89f..b704a2b 100644 (file)
        "tog-hideminor": "[[Special:Preferences]], tab 'Recent changes'. Offers user to hide minor edits in recent changes or not. {{Gender}}",
        "tog-hidepatrolled": "Option in Recent changes tab of [[Special:Preferences]] (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}",
        "tog-newpageshidepatrolled": "Toggle in [[Special:Preferences]], section \"Recent changes\" (if [[mw:Manual:$wgUseRCPatrol|$wgUseRCPatrol]] is enabled). {{Gender}}",
+       "tog-hidecategorization": "Option in \"Recent changes\" tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to messages such as {{msg-mw|tog-hideminor}}.",
        "tog-extendwatchlist": "[[Special:Preferences]], tab 'Watchlist'. Offers user to show all applicable changes in watchlist (by default only the last change to a page on the watchlist is shown). {{Gender}}",
        "tog-usenewrc": "{{Gender}}\nUsed as label for the checkbox in [[Special:Preferences]], tab \"Recent changes\".\n\nOffers user to use alternative representation of [[Special:RecentChanges]] and watchlist.",
        "tog-numberheadings": "[[Special:Preferences]], tab 'Misc'. Offers numbered headings on content pages to user. {{Gender}}",
        "tog-watchlisthideliu": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
        "tog-watchlisthideanons": "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
        "tog-watchlisthidepatrolled": "Option in Watchlist tab of [[Special:Preferences]]. {{Gender}}",
+       "tog-watchlisthidecategorization": "Option in Watchlist tab of [[Special:Preferences]]. Offers user to hide/show categorization of pages. Appears next to checkboxes with labels such as {{msg-mw|tog-watchlisthideminor}}.",
        "tog-ccmeonemails": "Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}",
        "tog-diffonly": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
        "tog-showhiddencats": "Toggle option used in [[Special:Preferences]]. {{Gender}}",
        "createacct-benefit-body3": "In vertical-layout create account form, the text for the third benefit.\n\nPreceded by the message {{msg-mw|Createacct-benefit-head3}} (number of contributors).\n\nSee example: [{{canonicalurl:Special:UserLogin|type=signup}} Special:UserLogin?type=signup]\n\nParameters:\n* $1 - number of contributors (users)",
        "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.",
+       "usernameinprogress": "Used as error message in creating a user account.",
        "loginerror": "Used as title of error message.\n{{Identical|Login error}}",
        "createacct-error": "Used as heading for the error message.",
        "createaccounterror": "Parameters:\n* $1 - an error message",
        "search-category": "This text will be shown on the search result listing after the page title of a result if the search algorithm thinks that the page being in a particular category is relevant.\n\nParameters:\n* $1 - the category's name with any matching portion highlighted\n{{Identical|Category}}",
        "search-file-match": "This text will be shown on the search result listing after the page title of a result if the search engine got search results from the contents of files, rather than the pages.",
        "search-suggest": "Used for \"Did you mean\" suggestions:\n* $1 - suggested link",
+       "search-rewritten": "Used when the user is served the results for a query other than what they provided. Parameters:\n* $1 - a link to search for the current result set.\n* $2 - a link to perform the original search without rewriting.",
        "search-interwiki-caption": "Used in [[Special:Search]], when showing search results from other wikis.",
        "search-interwiki-default": "Parameters:\n* $1 - the hostname of the remote wiki from where the additional results listed below are returned",
        "search-interwiki-custom": "#REDIRECT [[MediaWiki:Wmf-search-interwiki-custom/qqq]]",
        "rcshowhidemine": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhidemine-show}} or {{msg-mw|rcshowhidemine-hide}}",
        "rcshowhidemine-show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.\n\nSee also:\n* {{msg-mw|rcshowhidemine-hide}}\n{{Identical|show}}",
        "rcshowhidemine-hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidemine}}.\n\nSee also:\n* {{msg-mw|rcshowhidemine-show}}\n{{Identical|hide}}",
+       "rcshowhidecategorization": "Option text in [[Special:RecentChanges]]. Parameters:\n* $1 - the \"show/hide\" command, with the text taken from either {{msg-mw|rcshowhidecategorization-show}} or {{msg-mw|rcshowhidecategorization-hide}}",
+       "rcshowhidecategorization-show": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-hide}}\n{{Identical|show}}",
+       "rcshowhidecategorization-hide": "{{doc-actionlink}}\nOption text in [[Special:RecentChanges]] in conjunction with {{msg-mw|rcshowhidecategorization}}.\n\nSee also:\n* {{msg-mw|rcshowhidecategorization-show}}\n{{Identical|hide}}",
        "rclinks": "Used on [[Special:RecentChanges]].\n* $1 - a list of different choices with number of pages to be shown.<br />&nbsp;Example: \"''50{{int:pipe-separator}}100{{int:pipe-separator}}250{{int:pipe-separator}}500\".\n* $2 - a list of clickable links with a number of days for which recent changes are to be displayed.<br />&nbsp;Example: \"''1{{int:pipe-separator}}3{{int:pipe-separator}}7{{int:pipe-separator}}14{{int:pipe-separator}}30''\".\n* $3 - a block of text that consists of other messages.<br />&nbsp;Example: \"''Hide minor edits{{int:pipe-separator}}Show bots{{int:pipe-separator}}Hide anonymous users{{int:pipe-separator}}Hide logged-in users{{int:pipe-separator}}Hide patrolled edits{{int:pipe-separator}}Hide my edits''\"\nList elements are separated by {{msg-mw|Pipe-separator}} each. Each list element is, or contains, a link.",
        "diff": "Short form of \"differences\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...\n{{Identical|Diff}}",
        "hist": "Short form of \"history\". Used on [[Special:RecentChanges]], [[Special:Watchlist]], ...",
        "unpatrolledletter": "{{optional}}\n\nUsed in {{msg-mw|Recentchanges-label-legend}}, meaning \"unpatrolled\".",
        "number_of_watching_users_RCview": "{{notranslate}}\nParameters:\n* $1 - number of users who are watching",
        "number_of_watching_users_pageview": "Used if <code>$wgPageShowWatchingUsers</code> is true.\n* $1 - number of watching user(s)",
-       "rc_categories": "Probably to do with 'recent changes' special page, either in a particular skin, or for a particular user group.\n\nI guess that this should appear before an input box where you can specify that recent changes should be shown for pages belonging to certain categories only. You name the categories in the input box, and separate them by a pipe character. If this is right, then you should be able to use 'restrict' instead of 'limit', or even 'show pages in the following categories only'.",
-       "rc_categories_any": "Used in the CategoryFilter form on [[Special:RecentChanges]], if <code>$wgAllowCategorizedRecentChanges</code> is true.\n{{Identical|Any}}",
+       "rc_categories": "A label of an input box. Appears on Special:RecentChanges if filtering recent changes by category is enabled (that is, $wgAllowCategorizedRecentChanges is set to true).",
+       "rc_categories_any": "Appears ''after'' the input box the label of which is {{msg-mw|rc_categories}}, which appears on [[Special:RecentChanges]], if <code>$wgAllowCategorizedRecentChanges</code> is true. \"Chosen\" refers to categories.",
        "rc-change-size": "{{optional}}\nDoes not work under $wgMiserMode ([[mwr:48986|r48986]]).\n\nParameters:\n* $1 - size of diff",
        "rc-change-size-new": "Tooltip when hovering a change list diff size. Parameters:\n* $1 - the resulting new size (in bytes)",
        "newsectionsummary": "Default summary when adding a new section to a page. Parameters:\n* $1 - section title",
        "recentchangeslinked-summary": "Summary of [[Special:RecentChangesLinked]].",
        "recentchangeslinked-page": "{{Identical|Page name}}",
        "recentchangeslinked-to": "Checkbox in [[Special:RecentChangesLinked]].",
+       "recentchanges-page-added-to-category": "Comment message for pages added to a category\n\nParameters:\n* $1 - name of the page being added",
+       "recentchanges-page-added-to-category-bundled": "Comment message for template embedded by other pages added to a category\n\nParameters:\n* $1 - name of the page being added\n* $2 - number of additional pages being affected",
+       "recentchanges-page-removed-from-category": "Comment message for pages removed from a category\n\nParameters:\n* $1 - name of the page being removed",
+       "recentchanges-page-removed-from-category-bundled": "Comment message for templates embedded by other pages removed from a category\n\nParameters:\n* $1 - name of the page being added\n* $2 - number of additional pages being affected",
        "upload": "Display name for link to [[Special:Upload]] for uploading files to the wiki.\n\nSee also:\n* {{msg-mw|Upload}}\n* {{msg-mw|Accesskey-t-upload}}\n* {{msg-mw|Tooltip-t-upload}}\n{{Identical|Upload file}}",
        "uploadbtn": "Button name in [[Special:Upload]].\n\nSee also:\n* {{msg-mw|Uploadbtn}}\n* {{msg-mw|Accesskey-upload}}\n* {{msg-mw|Tooltip-upload}}\n{{Identical|Upload file}}",
        "reuploaddesc": "Used as button text in the Upload form on [[Special:Upload]].\n\nSee also:\n* {{msg-mw|upload-tryagain|Submit button text}}\n* {{msg-mw|ignorewarning|button text}}",
        "upload-too-many-redirects": "Error message shown when uploading a file via URL, if the upload failed because the URL returned too many redirects.",
        "upload-http-error": "Parameters:\n* $1 - error message",
        "upload-copy-upload-invalid-domain": "Error message shown if a user is trying to upload (i.e. copy) a file from a website that is not in $wgCopyUploadsDomains (if set).\n\nSee also:\n* {{msg-mw|http-invalid-url}}\n* {{msg-mw|tmp-create-error}}\n* {{msg-mw|tmp-write-error}}",
+       "upload-dialog-title": "Title of the upload dialog box\n{{Identical|Upload file}}",
+       "upload-dialog-error": "Error message from upload",
+       "upload-dialog-warning": "Warning message from upload",
+       "upload-dialog-button-cancel": "Button to cancel the dialog\n{{Identical|Cancel}}",
+       "upload-dialog-button-done": "Button to close the dialog once upload is complete\n{{Identical|Done}}",
+       "upload-dialog-button-save": "Button to save the file\n{{Identical|Save}}",
+       "upload-dialog-button-upload": "Button to initiate upload\n{{Identical|Upload}}",
+       "upload-dialog-label-select-file": "Label for the select file widget\n{{Identical|Select file}}",
+       "upload-dialog-label-infoform-title": "Title for the information form\n{{Identical|Detail}}",
+       "upload-dialog-label-infoform-name": "Label for the file name input\n{{Identical|Name}}",
+       "upload-dialog-label-infoform-description": "Label for the file description input\n{{Identical|Description}}",
+       "upload-dialog-label-usage-title": "Title for the usage form\n{{Identical|Usage}}",
+       "upload-dialog-label-usage-filename": "Label for the file name input\n{{Identical|Filename}}",
        "backend-fail-stream": "Parameters:\n* $1 - a filename",
        "backend-fail-backup": "Parameters:\n* $1 - a filename",
        "backend-fail-notexists": "Parameters:\n* $1 - a filename",
        "statistics-header-users": "Used in [[Special:Statistics]].\n{{Identical|User statistics}}",
        "statistics-header-hooks": "Header of a section on [[Special:Statistics]] containing data provided by MediaWiki extensions",
        "statistics-articles": "Used in [[Special:Statistics]].\n\nA 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].\n\nPossible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.\n\n{{Identical|Content page}}",
+       "statistics-articles-desc": "Caption shown below ''Content pages'' on [[Special:Statistics]]",
        "statistics-pages": "Used in [[Special:Statistics]]\n{{Identical|Page}}",
        "statistics-pages-desc": "Tooltip shown over ''Pages'' (or as a note below it) in [[Special:Statistics]]",
        "statistics-files": "Used in [[Special:Statistics]].\n{{Identical|Uploaded file}}",
        "changecontentmodel-success-title": "Title of the success page of the change content model special page",
        "changecontentmodel-success-text": "Message telling user that their change has been successfully done.\n* $1 - Target page title",
        "changecontentmodel-cannot-convert": "Error message shown if the content model cannot be changed to the specified type. $1 is the page title, $2 is the localized content model name.",
-       "changecontentmodel-title-cantexist": "Error message shown if the page the user provided is a special page.\n\nParameters:\n* $1 - the page title which cannot exist",
        "changecontentmodel-nodirectediting": "Error message shown if the content model does not allow for direct editing. $1 is the localized name of the content model.",
        "log-name-contentmodel": "{{doc-logpage}}\n\nTitle of [[Special:Log/contentmodel]].",
        "log-description-contentmodel": "Text in [[Special:Log/contentmodel]].",
        "protectedarticle": "Text describing an action on [[Special:Log]]. $1 is a page title.",
        "modifiedarticleprotection": "Text describing an action on [[Special:Log]]. $1 is a page title.",
        "unprotectedarticle": "Used as action in the log. Parameters:\n* $1 - target page title",
-       "movedarticleprotection": "This is a log entry. It appears in the log if a protected page is renamed.\n\nExample:\n<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from \"User:Siebrand/prot-move\" to \"User:Siebrand/prot-moved\" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>\n\nParameters:\n* $1 - target page title\n* $2 - source page title",
+       "movedarticleprotection": "This is a ''logentry'' message only used on IRC. It appears in the log if a protected page is renamed.\n\nExample:\n<code>00:51, 16 September 2010 Siebrand +(Talk • contribs • block) moved protection settings from \"User:Siebrand/prot-move\" to \"User:Siebrand/prot-moved\" ‎ (User:Siebrand/prot-move moved to User:Siebrand/prot-moved: prot_move test.)</code>\n\nParameters:\n* $1 - target page title\n* $2 - source page title",
        "protect-title": "Title for the protection form. $1 is the title of the page to be (un)protected.",
        "protect-title-notallowed": "Same as {{msg-mw|Protect-title}}, but when the user does not have the right to change protection levels.\n\nParameters:\n* $1 - page title",
        "prot_1movedto2": "Message description: [[mw:Manual:Interface/1movedto2]]\n\nParameters:\n* $1 - source page title\n* $2 - target page title",
        "sunday-at": "Phrase for indicating that something occurred at a particular time on the most recent Sunday.\n\nParameters:\n* $1 - the time (localized)\n{{Related|Day-at}}",
        "today-at": "Phrase for indicating that something occurred at a particular time today.\n\nParameters:\n* $1 - the time (localized)\n{{Related|Day-at}}",
        "yesterday-at": "Phrase for indicating that something occurred at a particular time yesterday.\n\nParameters:\n* $1 - the time (localized)\n{{Related|Day-at}}",
-       "bad_image_list": "箇条信息只出现在引导管理员用正确个格式加链接。弗会徕Mediawiki别荡处出现。",
+       "bad_image_list": "This message only appears to guide administrators to add links with the right format. This will not appear anywhere else in MediaWiki.",
        "variantname-zh-hans": "{{Optional}}\n\nVariant option for wikis with variants conversion enabled.",
        "variantname-zh-hant": "{{Optional}}\n\nVariant option for wikis with variants conversion enabled.",
        "variantname-zh-cn": "{{Optional}}\n\nVariant option for wikis with variants conversion enabled.",
        "logentry-newusers-create2": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the name of the user that was created.",
        "logentry-newusers-byemail": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the name of the user that was created.",
        "logentry-newusers-autocreate": "{{Logentry|[[Special:Log/newusers]]}}\n\n$4 is the gender of the target user.",
+       "logentry-protect-move_prot": "{{Logentry|[[Special:Log/protect]]}}\n\n* $4 - the old title",
        "logentry-rights-rights": "* $1 - username\n* $2 - (see below)\n* $3 - username\n* $4 - list of user groups or {{msg-mw|Rightsnone}}\n* $5 - list of user groups or {{msg-mw|Rightsnone}}\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-rights-legacy": "* $1 - username\n* $2 - (see below)\n* $3 - username\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "logentry-rights-autopromote": "* $1 - username\n* $2 - (see below)\n* $3 - (see below)\n* $4 - comma separated list of old user groups or {{msg-mw|Rightsnone}}\n* $5 - comma separated list of new user groups\n----\n{{Logentry|[[Special:Log/rights]]}}",
        "special-characters-title-endash": "Title tooltip for the en dash character (–); See https://en.wikipedia.org/wiki/Dash",
        "special-characters-title-emdash": "Title tooltip for the em dash character (—); See https://en.wikipedia.org/wiki/Dash",
        "special-characters-title-minus": "Title tooltip for the minus sign character (−), not to be confused with a hyphen",
+       "mw-widgets-dateinput-no-date": "Label of a date input field when no date has been selected.",
+       "mw-widgets-dateinput-placeholder-day": "[[File:DateInputWidget active, empty.png|frame|Screenshot]]\nPlaceholder displayed in a date input field when it's empty, representing a date format with 4 digits for year, 2 digits for month, and 2 digits for day, separated with hyphens. This should be uppercase, if possible, and must not include any additional explanations. If there is no good way to translate it, make this message blank.",
+       "mw-widgets-dateinput-placeholder-month": "Placeholder displayed in a date input field when it's empty, representing a date format with 4 digits for year and 2 digits for month, separated with hyphens (without a day). This should be uppercase, if possible, and must not include any additional explanations. If there is no good way to translate it, make this message blank.",
        "mw-widgets-titleinput-description-new-page": "Description label for a new page in the title input widget.",
        "mw-widgets-titleinput-description-redirect": "Description label for a redirect in the title input widget."
 }
index c5e723b..0479ec9 100644 (file)
@@ -33,6 +33,7 @@
        "tog-hideminor": "Ascunde modificările minore în schimbări recente",
        "tog-hidepatrolled": "Ascunde modificările patrulate în schimbările recente",
        "tog-newpageshidepatrolled": "Ascunde paginile patrulate din lista de pagini noi",
+       "tog-hidecategorization": "Ascunde categorisirea paginilor",
        "tog-extendwatchlist": "Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente",
        "tog-usenewrc": "Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite",
        "tog-numberheadings": "Numerotează automat secțiunile",
@@ -62,6 +63,7 @@
        "tog-watchlisthideliu": "Ascunde modificările făcute de utilizatori anonimi din lista de pagini urmărite",
        "tog-watchlisthideanons": "Ascunde modificările făcute de utilizatori anonimi din lista de pagini urmărite",
        "tog-watchlisthidepatrolled": "Ascunde paginile patrulate din lista de pagini urmărite",
+       "tog-watchlisthidecategorization": "Ascunde categorisirea paginilor",
        "tog-ccmeonemails": "Doresc să primesc o copie a mesajelor e-mail pe care le trimit",
        "tog-diffonly": "Nu arăta conținutul paginii sub dif",
        "tog-showhiddencats": "Arată categoriile ascunse",
        "actionthrottled": "Acțiune limitată",
        "actionthrottledtext": "Ca o măsură anti-spam, aveți permisiuni limitate în a efectua această acțiune de prea multe ori într-o perioadă scurtă de timp, iar dv. tocmai ați depășit această limită.\nVă rugăm să încercați din nou în câteva minute.",
        "protectedpagetext": "Această pagină este protejată împotriva modificărilor sau a altor acțiuni.",
-       "viewsourcetext": "Se poate vizualiza și copia conținutul acestei pagini:",
-       "viewyourtext": "Se poate vizualiza și copia conținutul '''modificărilor dumneavoastră''' efectuate asupra acestei pagini:",
+       "viewsourcetext": "Puteți vizualiza și copia sursa acestei pagini.",
+       "viewyourtext": "Puteți vizualiza și copia conținutul <strong>modificărilor dumneavoastră</strong> efectuate asupra acestei pagini.",
        "protectedinterface": "Această pagină asigură textul interfeței pentru software și este protejată pentru a preveni abuzurile.\nPentru a adăuga sau modifica traduceri corespunzătoare tuturor wikiurilor, utilizați [//translatewiki.net/ translatewiki.net], proiectul MediaWiki de localizare.",
        "editinginterface": "<strong>Avertizare</strong>: Modificați o pagină care este folosită pentru a furniza textul interfeței software.\nModificările aduse acestei pagini vor afecta aspectul interfeței pentru alți utilizatori ai acestui wiki.",
        "translateinterface": "Pentru a adăuga sau modifica traduceri corespunzătoare tuturor wikiurilor, utilizați [//translatewiki.net/ translatewiki.net], proiectul MediaWiki pentru localizare.",
-       "cascadeprotected": "Această pagină a fost protejată la scriere deoarece este inclusă în {{PLURAL:$1|următoarea pagină|următoarele pagini}}, care {{PLURAL:$1|este protejată|sunt protejate}} în cascadă:\n$2",
+       "cascadeprotected": "Această pagină a fost protejată la modificare, deoarece este inclusă în {{PLURAL:$1|următoarea pagină|următoarele pagini}} {{PLURAL:$1|protejată|protejate}} cu opțiunea „în cascadă”:\n$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.",
        "readonlywarning": "'''Atenție: Baza de date a fost blocată pentru întreținere, deci nu veți putea salva modificările în acest moment.'''\nPuteți copia textul într-un fișier text, păstrându-l pentru mai târziu.\n\nAdministratorul care a efectuat blocarea a oferit următoarea explicație: $1",
        "protectedpagewarning": "'''Atenție: această pagină a fost protejată astfel încât poate fi modificată doar de către administratori.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "semiprotectedpagewarning": "'''Observație: această pagină a fost protejată și poate fi modificată doar de către utilizatorii înregistrați.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
-       "cascadeprotectedwarning": "'''Atenție:''' Această pagină a fost blocată astfel încât numai administratorii o pot modifica, deoarece este inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
+       "cascadeprotectedwarning": "<strong>Atenție:</strong> Această pagină a fost protejată, astfel încât numai administratorii o pot modifica, fiind inclusă în {{PLURAL:$1|următoarea pagină protejată|următoarele pagini protejate}} în cascadă:",
        "titleprotectedwarning": "'''Atenție: această pagină a fost protejată astfel încât doar anumiți [[Special:ListGroupRights|utilizatori]] o pot crea.'''\nUltima intrare în jurnal este afișată mai jos pentru referință:",
        "templatesused": "{{PLURAL:$1|Format folosit|Formate folosite}} în această pagină:",
        "templatesusedpreview": "{{PLURAL:$1|Format folosit|Formate folosite}} în această previzualizare:",
        "search-category": "(categoria $1)",
        "search-file-match": "(se regăsește în conținutul fișierului)",
        "search-suggest": "V-ați referit la: $1",
+       "search-rewritten": "Se afișează rezultatele pentru $1. Căutați, în schimb, după $2.",
        "search-interwiki-caption": "Proiecte înrudite",
        "search-interwiki-default": "Rezultate de la $1:",
        "search-interwiki-more": "(mai mult)",
        "rcshowhidemine": "$1 contribuțiile mele",
        "rcshowhidemine-show": "Arată",
        "rcshowhidemine-hide": "Ascunde",
+       "rcshowhidecategorization": "$1 categorisirea paginilor",
+       "rcshowhidecategorization-show": "Arată",
+       "rcshowhidecategorization-hide": "Ascunde",
        "rclinks": "Se arată ultimele $1 modificări din ultimele $2 zile.<br />\n$3",
        "diff": "dif",
        "hist": "ist",
        "boteditletter": "b",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|utilizator|utilizatori|de utilizatori}} care urmăresc]",
-       "rc_categories": "Limitează la categoriile (separate prin \"|\")",
-       "rc_categories_any": "Oricare",
+       "rc_categories": "Limitează la categoriile (separate prin „|”):",
+       "rc_categories_any": "Oricare dintre cele alese",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|octet|octeți|de octeți}} după modificare",
        "newsectionsummary": "/* $1 */ secțiune nouă",
        "recentchangeslinked-summary": "Aceasta este o listă a schimbărilor efectuate recent asupra paginilor cu legături de la o anumită pagină (sau asupra membrilor unei anumite categorii).\nPaginile pe care le [[Special:Watchlist|urmăriți]] apar cu <strong>aldine</strong>.",
        "recentchangeslinked-page": "Numele paginii:",
        "recentchangeslinked-to": "Afișează schimbările în paginile care se leagă de pagina dată",
+       "recentchanges-page-added-to-category": "[[:$1]] a fost adăugată în categorii",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] și încă {{PLURAL:$2|o pagină|$2 pagini|$2 de pagini}} au fost adăugate în categorii",
+       "recentchanges-page-removed-from-category": "[[:$1]] eliminată din categorii",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] și încă {{PLURAL:$2|o pagină|$2 pagini|$2 de pagini}} au fost eliminate din categorii",
        "upload": "Încărcare fișier",
        "uploadbtn": "Încarcă fișier",
        "reuploaddesc": "Revocare încărcare și întoarcere la formularul de trimitere.",
        "upload-too-many-redirects": "URL-ul conținea prea multe redirecționări",
        "upload-http-error": "A avut loc o eroare HTTP: $1",
        "upload-copy-upload-invalid-domain": "Încărcarea copiilor nu este disponibilă pentru acest domeniu.",
+       "upload-dialog-title": "Încărcare fișier",
+       "upload-dialog-error": "A apărut o eroare",
+       "upload-dialog-warning": "A apărut o atenționare",
+       "upload-dialog-button-cancel": "Revocare",
+       "upload-dialog-button-done": "Realizat",
+       "upload-dialog-button-save": "Salvare",
+       "upload-dialog-button-upload": "Încarcă",
+       "upload-dialog-label-select-file": "Selectează fișier",
+       "upload-dialog-label-infoform-title": "Detalii",
+       "upload-dialog-label-infoform-name": "Nume",
+       "upload-dialog-label-infoform-description": "Descriere",
+       "upload-dialog-label-usage-title": "Utilizare",
+       "upload-dialog-label-usage-filename": "Numele fișierului",
        "backend-fail-stream": "Imposibil de citit fișierul $1.",
        "backend-fail-backup": "Imposibil de efectuat o copie de rezervă a fișierului $1.",
        "backend-fail-notexists": "Fișierul $1 nu există.",
        "watchlistanontext": "Vă rugăm să vă autentificați pentru a consulta și modifica lista de pagini urmărite.",
        "watchnologin": "Nu sunteți autentificat",
        "addwatch": "Adăugă la lista de pagini urmărite",
-       "addedwatchtext": "Pagina „[[:$1]]” a fost adăugată în lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].\nModificările viitoare efectuate asupra acestei pagini dar și asupra paginii de discuție asociată vor fi listate acolo.",
+       "addedwatchtext": "Pagina „[[:$1]]” și pagina de discuție asociată au fost adăugate în lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].",
        "addedwatchtext-short": "Pagina „$1” a fost adăugată în lista dumneavoastră de pagini urmărite.",
        "removewatch": "Elimină din lista de pagini urmărite",
-       "removedwatchtext": "Pagina „[[:$1]]” a fost eliminată din [[Special:Watchlist|lista de pagini urmărite]].",
+       "removedwatchtext": "Pagina „[[:$1]]” și pagina de discuție asociată au fost eliminate din [[Special:Watchlist|lista de pagini urmărite]].",
        "removedwatchtext-short": "Pagina „$1” a fost eliminată din lista de pagini urmărite.",
        "watch": "Urmărire",
        "watchthispage": "Urmărește pagina",
        "changecontentmodel-success-title": "Modelul de conținut a fost modificat",
        "changecontentmodel-success-text": "Tipul de conținut al paginii [[:$1]] a fost modificat.",
        "changecontentmodel-cannot-convert": "Conținutul paginii [[:$1]] nu poate fi convertit în tipul $2.",
-       "changecontentmodel-title-cantexist": "Nu se poate utiliza titlul de pagină: $1.",
        "changecontentmodel-nodirectediting": "Modelul de conținut $1 nu acceptă editarea directă",
        "log-name-contentmodel": "Jurnal modificări model de conținut",
        "log-description-contentmodel": "Evenimente referitoare la modelele de conținut ale paginilor",
        "protect-locked-blocked": "Nu poți schimba nivelurile de protecție fiind blocat.\nIată configurația curentă a paginii '''$1''':",
        "protect-locked-dblock": "Nivelurile de protecție nu pot fi aplicate deoarece baza de date este închisă.\nIată configurația curentă a paginii '''$1''':",
        "protect-locked-access": "Contul dumneavoastră nu are permisiunea de a schimba nivelurile de protejare a paginii.\nAici sunt setările curente pentru pagina '''$1''':",
-       "protect-cascadeon": "Această pagină este protejată deoarece este inclusă în {{PLURAL:$1|următoarea pagină ce are|următoarele pagini ce au}} activată protejarea în cascadă.\nSchimbarea nivelului de protejare al acestei pagini nu va afecta protejarea în cascadă.",
+       "protect-cascadeon": "Această pagină este protejată deoarece este transclusă în {{PLURAL:$1|următoarea pagină|următoarele pagini}} cu opțiunea de protejare „în cascadă” activată.\nSchimbarea nivelului de protejare al acestei pagini nu va afecta protejarea în cascadă.",
        "protect-default": "Permis pentru toți utilizatorii",
        "protect-fallback": "Autorizat doar pentru utilizatorii cu permisiunea „$1”",
        "protect-level-autoconfirmed": "Autorizat doar pentru utilizatorii autoconfirmați",
        "undeletepagetext": "{{PLURAL:$1|Următoarea pagină a fost ștearsă, dar încă se află în arhivă și poate fi recuperată|Următoarele $1 pagini au fost șterse, dar încă se află în arhivă și pot fi recuperate|Următoarele $1 de pagini au fost șterse, dar încă se află în arhivă și pot fi recuperate}}. Arhiva ar putea fi ștearsă periodic.",
        "undelete-fieldset-title": "Recuperare versiuni",
        "undeleteextrahelp": "Pentru a restaura întregul istoric al paginii lăsați toate căsuțele nebifate și apăsați butonul '''''{{int:undeletebtn}}'''''.\nPentru a realiza o recuperare selectivă bifați versiunile pe care doriți să le recuperați și apăsați butonul '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|versiune arhivată|versiuni arhivate|de versiuni arhivate}}",
+       "undeleterevisions": "$1 {{PLURAL:$1|versiune ștearsă|versiuni șterse|de versiuni șterse}}",
        "undeletehistory": "Dacă recuperați pagina, toate versiunile asociate vor fi adăugate retroactiv în istorie. Dacă o pagină nouă cu același nume a fost creată de la momentul ștergerii acesteia, versiunile recuperate vor apărea în istoria paginii, iar versiunea curentă a paginii nu va fi înlocuită automat de către versiunea recuperată.",
        "undeleterevdel": "Restaurarea unui versiuni nu va fi efectuată dacă ea va apărea în capul listei de versiuni parțial șterse.\nÎn acest caz, trebuie să debifați sau să reafișați (''unhide'') cea mai recentă versiune ștearsă.",
        "undeletehistorynoadmin": "Acest articol a fost șters. Motivul ștergerii apare mai jos, alături de detaliile utilzatorilor care au editat această pagină înainte de ștergere. Textul prorpiu-zis al reviziilor șterse este disponibil doar administratorilor.",
        "spam_reverting": "Revenire la ultima versiune care nu conține legături către $1",
        "spam_blanking": "Toate versiunile conținând legături către $1 au fost golite",
        "spam_deleting": "Toate versiunile conținând legături către $1 au fost șterse",
-       "simpleantispam-label": "Verificare antispam.\n'''NU''' completați!",
+       "simpleantispam-label": "Verificare antispam.\n<strong>Nu</strong> completați!",
        "pageinfo-title": "Informații pentru „$1”",
        "pageinfo-not-current": "Ne cerem scuze, dar este imposibilă furnizarea acestor informații pentru versiunile mai vechi ale paginii.",
        "pageinfo-header-basic": "Informații de bază",
        "htmlform-cloner-create": "Adăugă mai mult",
        "htmlform-cloner-delete": "Elimină",
        "htmlform-cloner-required": "Este necesară cel puțin o valoare.",
+       "htmlform-title-badnamespace": "[[:$1]] nu se află în spațiul de nume „{{ns:$2}}”.",
+       "htmlform-title-not-creatable": "„$1” este un titlu de pagină inutilizabil",
+       "htmlform-title-not-exists": "[[:$1]] nu există.",
+       "htmlform-user-not-exists": "<strong>$1</strong> nu există.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nu este un nume de utilizator valid.",
        "sqlite-has-fts": "$1 cu suport de căutare în tot textul",
        "sqlite-no-fts": "$1 fără suport de căutare în tot textul",
        "logentry-delete-delete": "$1 {{GENDER:$2|a șters}} pagina $3",
        "special-characters-title-endash": "linie de pauză (en dash)",
        "special-characters-title-emdash": "linie de pauză (em dash)",
        "special-characters-title-minus": "semnul minus",
+       "mw-widgets-dateinput-no-date": "Nicio dată selectată",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-LL-ZZ",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-LL",
        "mw-widgets-titleinput-description-new-page": "pagina nu există încă",
        "mw-widgets-titleinput-description-redirect": "redirecționare către $1"
 }
index df1ee67..5fae28f 100644 (file)
@@ -7,7 +7,8 @@
                        "Reder",
                        "아라",
                        "C.R.",
-                       "Macofe"
+                       "Macofe",
+                       "Purodha"
                ]
        },
        "tog-underline": "Collegaminde sottolinèate:",
        "actionthrottled": "Azione inderrotte",
        "actionthrottledtext": "Cumme 'na mesure andi-spam, tu è state limitete da fà st'azione troppe vote jndr'à 'nu timbe piccinne e tu è subranete stu limite.\nPe piacere prueve cchiù tarde.",
        "protectedpagetext": "Sta pàgene ha state prutette pe no fa fà cangiaminde o otre aziune a uecchje.",
-       "viewsourcetext": "Tu puè vedè e cupià 'a sorgente de sta pàgene:",
-       "viewyourtext": "Tu puè vedè e copià 'a sorgende de '''le cangiaminde tune''' a sta pàgene:",
+       "viewsourcetext": "Tu puè 'ndrucà e cupià 'a sorgente de sta pàgene.",
+       "viewyourtext": "Tu puè 'ndrucà e copià 'a sorgende de <strong>le cangiaminde tune</strong> a sta pàgene.",
        "protectedinterface": "Sta pàgene dèje 'nu teste de l'inderfacce pu software de sta uicchi, e jè prutette pe prevenìe l'abbuse.\nPe aggiungere o cangià le traduziune pe tutte le uicchi, pe piacere ause [//translatewiki.net/ translatewiki.net], 'u proggette de localizzazzione de MediaUicchi.",
        "editinginterface": "<strong>Fà attenziò:</strong> Tu ste cange 'na pàgene ca jè ausate pe dà 'n'inderfacce de teste p'u software.\nLe cangiaminde de sta pàgene vonne a mettene mane sus a l'inderfacce utende pe l'otre utinde de sta Uicchi.",
        "translateinterface": "Pe aggiungere o cangià le traduziune pe tutte le uicchi, pe piacere ause [//translatewiki.net/translatewiki.net], 'u proggette de localizzazzione de MediaUicchi.",
-       "cascadeprotected": "Sta pàgene ha state prutette da le cangiaminde, purcè jè ingluse jndr'à {{PLURAL:$1|seguende pàgene, ca jè|le seguende pàggene, ca sonde}} prutette cu l'opzione \"a caschete\":\n$2",
+       "cascadeprotected": "Sta pàgene ha state prutette da le cangiaminde, purcè jè ingluse jndr'à {{PLURAL:$1|seguende pàgene, ca jè|le seguende pàggene, ca sonde}} prutette cu l'opzione \"a cascate\":\n$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.",
        "creating": "Stoche a ccreje $1",
        "editingsection": "Cangiaminde de $1 (sezione)",
        "editingcomment": "Cangiaminde de $1 (seziona nove)",
-       "editconflict": "Le cangiaminde tune non ge ponne essere reggistrate purcé ste 'nu conflitte de cangiaminde. Vuè {{GENDER:|ccu}} resolve stu conflitte a màne?",
+       "editconflict": "conflitte de cangiaminde: $1",
        "explainconflict": "Quacchedune otre ha cangete 'a pàgene apprime ca tu accumenzasse a fà 'u cangiamende tue.\n'U teste ca iacchie sus condene 'u teste d'a pàgene accume se iacchije jndr'à stu mumende.\nLe cangiaminde sonde fatte vedè jndr'à vanne de sotte.\nTu puè scuagghià le cangiaminde jndr'à 'u teste de mò.\n'''Sulamende''' 'u teste ca stè sus avène reggistrate cazzanne 'u buttone \"{{int:savearticle}}\".",
        "yourtext": "'U teste tue",
        "storedversion": "Versione archivijete",
        "readonlywarning": "'''FA ATTENZIO': 'U database ha state bloccate pe manutenzione, e allore tu non ge puè reggistrà le cangiaminde ca ste face mò.'''\nTu puè fa 'na bella cose, tagghie e 'nzicche le cangiaminde jndr'à 'nu file de teste sus a 'u combiuter tune e pò cchiù tarde le reggistre sus 'a Uicchi.\n\nL'amministratore ca ha bloccate 'u database ha date stu mutive: $1",
        "protectedpagewarning": "'''ATTENZIO': Sta pàgene ha state bloccate e allore sulamende le utinde cu le privilegge de ''sysop'' ponne cangiarle.'''\nL'urteme archivie de le trasute ha state previste aqquà sotte pe referimende:",
        "semiprotectedpagewarning": "'''Fà attenzione:''' Sta pàgene ha state bloccate accussì sulamende l'utinde reggistrete ponne fà cangiaminde.\nL'urteme archivije de le trasute ha state previste aqquà sotte pe referimende:",
-       "cascadeprotectedwarning": "'''FA ATTENZIO':''' Sta pàgene ha state blocchete accussì sulamende l'utinde ca tènene le deritte de amministratore a ponne cangià, purcè inglude {{PLURAL:$1|pàgene|pàggrnr}} prutette a cascate:",
+       "cascadeprotectedwarning": "<strong>FA ATTENZIO':</strong> Sta pàgene ha state blocchete accussì sulamende l'utinde ca tènene le deritte de amministratore a ponne cangià, purcè inglude {{PLURAL:$1|pàgene|pàggene}} prutette a cascate:",
        "titleprotectedwarning": "'''ATTENZIONE: Sta pàgene ha state bloccate accussì sulamende [[Special:ListGroupRights|specifice diritte]] a ponne ccrejà.'''\nL'urteme archivije de le trasute jè provviste sotte pe referimende:",
        "templatesused": "{{PLURAL:$1|Template|Template}} ausate sus 'a sta pàgene:",
        "templatesusedpreview": "{{PLURAL:$1|Template|Template}} ausate jndr'à sta andeprime:",
        "search-category": "(categorije $1)",
        "search-file-match": "(combronde 'u condenute d'u file)",
        "search-suggest": "Ce signifeche: $1",
+       "search-rewritten": "Stoche a fazze 'ndrucà le resultate pe $1. Cirche invece pe $2.",
        "search-interwiki-caption": "Pruggette sorelle",
        "search-interwiki-default": "Resultate da $1:",
        "search-interwiki-more": "(de cchiù)",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|utende|utinde}} ca condrollene]",
        "rc_categories": "Limite de le categorije (separate cu \"|\")",
-       "rc_categories_any": "Tutte",
+       "rc_categories_any": "Qualsiasi de le scacchiate",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte|byte}} apprisse 'u cangiamende",
        "newsectionsummary": "/* $1 */ seziona nove",
        "uploaded-hostile-svg": "Acchiate 'nu CSS insecure ndr'à l'elemende de stile d'u file SVG carecate.",
        "uploaded-event-handler-on-svg": "'A 'mbostazione de le attribute de gestione de l'evende <code>$1=\"$2\"</code> non ge se pò ffà cu le file SVG.",
        "uploaded-href-attribute-svg": "le attribbute href <code>&lt;$1 $2=\"$3\"&gt;</code> cu le destinaziune de fore (p.e. http://, javascript:, etc) non ge se ponne mettere jndr'à le file SVG.",
+       "uploaded-href-unsafe-target-svg": "Acchiate 'na destinazione href non secure <code>&lt;$1 $2=\"$3\"&gt;</code> jndr'à 'u file SVG carecate.",
        "uploadscriptednamespace": "Stu file SVG tène 'nu namespace illegale '$1'",
        "uploadinvalidxml": "L'XML jndr'à 'u file carecate non ge pò essere analizzate.",
        "uploadvirus": "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
        "upload-too-many-redirects": "'A URL tène troppe redirezionaminde",
        "upload-http-error": "S'a verificate 'n'errore HTTP: $1",
        "upload-copy-upload-invalid-domain": "'A copie de le carecaminde non g'è disponibbile da stu dominie.",
+       "upload-dialog-title": "Careche 'u file",
+       "upload-dialog-error": "Ave assute 'n'errore",
+       "upload-dialog-warning": "Ha assute 'n'avvise",
+       "upload-dialog-button-cancel": "Annulle",
+       "upload-dialog-button-done": "Fatte",
+       "upload-dialog-button-save": "Reggìstre",
+       "upload-dialog-button-upload": "Careche",
+       "upload-dialog-label-select-file": "Scacchie 'u file",
+       "upload-dialog-label-infoform-title": "Dettaglie",
+       "upload-dialog-label-infoform-name": "Nome",
+       "upload-dialog-label-infoform-description": "Descrizione",
+       "upload-dialog-label-usage-title": "Ause",
+       "upload-dialog-label-usage-filename": "Nome d'u file",
        "backend-fail-stream": "Non ge pozze trasmettere 'u file $1.",
        "backend-fail-backup": "Non ge pozze cupià 'u file $1.",
        "backend-fail-notexists": "'U file $1 non g'esiste.",
        "watchlistanontext": "Pe piacere tràse pe 'ndrucà o cangià le vosce sus l'elenghe de le pàggene condrollate.",
        "watchnologin": "Non ge sinde colleghete",
        "addwatch": "Mitte jndr'à le pàggene condrollate",
-       "addedwatchtext": "'A pàgene \"[[:$1]]\" ha state aggiunde jndr'à le [[Special:Watchlist|pàggene condrollate]].\nLe cangiaminde future a sta pàgene e 'a pàgene de le 'ngazzaminde associete le puè acchià aqquà.",
+       "addedwatchtext": "'A pàgene \"[[:$1]]\" e quedde de le 'ngazzaminde ha state aggiunde jndr'à le [[Special:Watchlist|pàggene condrollate]].",
        "addedwatchtext-short": "'A pàgene \"$1\" ha state aggiunde a l'elenghe de le pàggene condrollate.",
        "removewatch": "Live da le pàggene condrollate",
-       "removedwatchtext": "'A pàgene \"[[:$1]]\" ha state scangillete da [[Special:Watchlist|le pàggene condrollete tue]].",
+       "removedwatchtext": "'A pàgene \"[[:$1]]\" e quedde de le 'ngazzaminde ha state scangellate da [[Special:Watchlist|le pàggene condrollate tune]].",
        "removedwatchtext-short": "'A pàgene \"$1\" ha state luate da l'elenghe de le pàggene condrollate.",
        "watch": "Condrolle",
        "watchthispage": "Condrolle sta pàgene",
        "rollback-success": "Cangiaminde annullate da $1;\nturnate rete a l'urtema versione da $2.",
        "sessionfailure-title": "Sessione fallite",
        "sessionfailure": "Pare ca stonne probbleme cu 'a sessiona toje de collegamende;\nst'azione ha state scangellate pe precauzione condre a le 'ngasinaminde d'a sessione.\nPe piacere cazze \"rete\" e recareche 'a pàgene da addò tu è venute e pruève 'n'otra vote.",
+       "changecontentmodel-legend": "Cange 'u modelle de condenute",
+       "changecontentmodel-title-label": "Titole d'a vôsce",
+       "changecontentmodel-model-label": "Modelle de vôsce de condenute nuève",
+       "changecontentmodel-reason-label": "Mutive:",
+       "changecontentmodel-success-title": "'U modelle d'u condenute ha cangiate",
+       "changecontentmodel-success-text": "'U tipe d'u condenute de [[:$1]] ha state cangiate.",
+       "changecontentmodel-cannot-convert": "'U condenute sus a [[:$1]] non ge pò essere convertite jndr'à 'u tipe $2.",
+       "logentry-contentmodel-change-revertlink": "annulle",
+       "logentry-contentmodel-change-revert": "annulle",
        "protectlogpage": "Archibie de le prutezziune",
        "protectlogtext": "Sotte ste 'na liste de le cangiaminde de le proteziune de le pàggene.\nVide 'a [[Special:ProtectedPages|liste de le pàggene prutette]] pa liste de le operaziune currende sus a le prutezzione de le pàggene.",
        "protectedarticle": "prutette \"[[$1]]\"",
        "protect-locked-blocked": "Tu non ge puè cangià le levèlle de protezzione quanne si bloccate.\nAqquà stonne le 'mbostaziune corrende pa pàgene '''$1''':",
        "protect-locked-dblock": "Le levèlle de protezzione non ge ponne essere cangete purcè stè 'nu blocche d'u database.\nAqquà stonne le 'mbostaziune corrende pa pàgene '''$1''':",
        "protect-locked-access": "Tu non ge tine le permesse pe putè cangià le levèlle de protezione de le pàggene.\nChiste sonde le configuraziune corrende p'a pàgene '''$1''':",
-       "protect-cascadeon": "Sta pàgene mò jè  prutette purcè jè 'ngluse jndr'à {{PLURAL:$1|'a seguende pàgene, ca tène|le seguende pàggene, ca tènene}} a protezione a cascata appizzecate.\nTu puè cangià 'u levèlle de protezione de sta pàgene ma stu cangiamende non ge tène effette a cascata.",
+       "protect-cascadeon": "Sta pàgene mò jè prutette purcè jè 'ngluse jndr'à {{PLURAL:$1|seguende pàgene, ca tène|le seguende pàggene, ca tènene}} a protezione a cascata appizzecate.\nTu puè cangià 'u levèlle de protezione de sta pàgene ma stu cangiamende non ge tène effette a cascata.",
        "protect-default": "Permitte a tutte l'utinde",
        "protect-fallback": "Richieste d'u permesse \"$1\"",
        "protect-level-autoconfirmed": "Blocche l'utinde nuève e chidde non reggistrate",
        "undeletepagetext": "{{PLURAL:$1|'A seguende pàgene ha state scangellate ma ète|Le seguende $1 pàggene one state scangellate ma sonde}} angore in archivije e se pò reprocessà.<br />\nL'archivije avène periodicamende sdevachete.",
        "undelete-fieldset-title": "Repristine le revisiune",
        "undeleteextrahelp": "Pe repristina totte 'a storie d'a pàgene, lasse tutte le caselle cu le spunde vacande e cazze '''''{{int:undeletebtn}}'''''.\nPe fà 'nu repristine selettive, mitte 'a spunde jndr'à le caselle corrispondende a le revisiune ca vuè ccu repristine e pò cazze '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|revisione|revisiune}} archiviete",
+       "undeleterevisions": "$1 {{PLURAL:$1|revisione|revisiune}} scangellate",
        "undeletehistory": "Ce tu repristine 'a pàgene, tutte le revisiune avènene repristinate jndr'à storie.\nCe 'na pàgena nove cu 'u stesse nome ha state ccrejate da 'a scangellazione, le revisiune repristinate iessène jndr'à storia prengepàle.",
        "undeleterevdel": "Repristine non ge ponne essere eseguite ce succede ca sus a pàgene prengepàle o sus le revisiune d'u file onne state parzialmende scangellate.\nJndr'à ste case, tu à smarcà o a sconnere 'a revisione scangellate cchiù nove.",
        "undeletehistorynoadmin": "Sta pàgene ha state scangellate.\n'U mutive d'a scangellazione ste scritte jndr'à 'u riepileghe de sotte, cu tutte le dettaglie de l'utinde ca onne mise mane jndr'à sta pàgene apprima d'u scangellamende.\n'U teste corrende de ste revisiune scangellate jè sulamende disponibbile pe l'amministrature.",
        "tooltip-pt-logout": "Isse",
        "tooltip-pt-createaccount": "Te ste 'ngoragge pe ccrejà 'nu cunde e trasè; comungue, non g'è obbligatorie",
        "tooltip-ca-talk": "'Ngazzaminde sus 'a pàgene de le condenute",
-       "tooltip-ca-edit": "Tu puè cangià sta pàgene. Pe piacere ause 'u buttone de l'andeprime apprime de salvà.",
+       "tooltip-ca-edit": "Cange sta pàgene",
        "tooltip-ca-addsection": "Fà accumenzà 'na seziona nove",
        "tooltip-ca-viewsource": "Sta pàgene jè prutette.\nPuè vedè sulamende 'u sorgende.",
        "tooltip-ca-history": "Versiune passete de sta pàgene",
        "spam_reverting": "Turnanne a l'urtema revisione no ge condiene collegaminde a $1",
        "spam_blanking": "Tutte le revisiune condènene collegaminde a $1, vacande",
        "spam_deleting": "Tutte le revisiune condènene collegaminde a $1, stoche a scangelle",
-       "simpleantispam-label": "Verifiche andi-spam.\n'''NO''' anghiè quiste!",
+       "simpleantispam-label": "Verifiche andi-spam.\n<strong>NO</strong> inghie quiste!",
        "pageinfo-title": "'Mbormaziune pe \"$1\"",
        "pageinfo-not-current": "Ne despiace, non g'è possibbile pigghià sta 'mbormazione pe le versiune vecchie.",
        "pageinfo-header-basic": "'Mbormaziune 'nderra-'nderre",
        "pageinfo-robot-index": "Permesse",
        "pageinfo-robot-noindex": "Non permesse",
        "pageinfo-watchers": "Numere de visitature d'a pàgene",
+       "pageinfo-visiting-watchers": "Numere de visitature pe pàgene ca onne 'ndrucate le cangiaminde recende",
        "pageinfo-few-watchers": "Mene de $1 {{PLURAL:$1|visitatore|visitature}}",
        "pageinfo-redirects-name": "Numere de redirezionaminde a sta pàgene",
        "pageinfo-redirects-value": "$1",
        "htmlform-cloner-create": "Aggiunge 'n'otre",
        "htmlform-cloner-delete": "Live",
        "htmlform-cloner-required": "Almene 'nu valore l'a mettere.",
+       "htmlform-title-not-exists": "[[:$1]] non g'esiste.",
+       "htmlform-user-not-exists": "<strong>$1</strong> non g'esiste.",
+       "htmlform-user-not-valid": "<strong>$1</strong> non g'è 'nu nome utende valide.",
        "sqlite-has-fts": "$1 cu 'u supporte d'a ricerche full-text",
        "sqlite-no-fts": "$1 senze 'u supporte d'a ricerche full-text",
        "logentry-delete-delete": "$1 pàgena {{GENDER:$2|scangellate}} $3",
        "special-characters-title-endash": "trattine en",
        "special-characters-title-emdash": "trattine em",
        "special-characters-title-minus": "segne mene",
+       "mw-widgets-dateinput-no-date": "Nisciune date scacchiate",
        "mw-widgets-titleinput-description-new-page": "'a pàgene non g'esiste angore",
        "mw-widgets-titleinput-description-redirect": "redirezionate sus a $1"
 }
index 256c3ba..0fb5cd5 100644 (file)
                        "Mariya",
                        "Marina Melik-Adamyan",
                        "Normalex",
-                       "WindEwriX"
+                       "WindEwriX",
+                       "Nzeemin"
                ]
        },
        "tog-underline": "Подчёркивание ссылок:",
        "tog-hideminor": "Скрывать малые правки из списка свежих правок",
        "tog-hidepatrolled": "Скрывать патрулированные правки в списке свежих правок",
        "tog-newpageshidepatrolled": "Скрывать отпатрулированные страницы в списке новых страниц",
+       "tog-hidecategorization": "Скрывать категоризацию страниц",
        "tog-extendwatchlist": "Расширенный список наблюдения, включающий все изменения, а не только последние",
        "tog-usenewrc": "Группировать изменения в свежих правках и списке наблюдения",
        "tog-numberheadings": "Автоматически нумеровать заголовки",
        "tog-watchlisthideliu": "Скрывать правки представившихся участников из списка наблюдения",
        "tog-watchlisthideanons": "Скрывать правки анонимных участников из списка наблюдения",
        "tog-watchlisthidepatrolled": "Скрывать отпатрулированные правки из списка наблюдения",
+       "tog-watchlisthidecategorization": "Скрывать категоризацию страниц",
        "tog-ccmeonemails": "Отправлять мне копии писем, которые я посылаю другим участникам",
        "tog-diffonly": "Не показывать содержание страницы под сравнением двух версий",
        "tog-showhiddencats": "Показывать скрытые категории",
        "actionthrottled": "Ограничение по скорости",
        "actionthrottledtext": "В качестве меры борьбы со спамом, установлено ограничение на многократное применение данного действия в течение короткого промежутка времени. Пожалуйста, повторите попытку через несколько минут.",
        "protectedpagetext": "Эта страница защищена для предотвращения её редактирования или совершений других действий.",
-       "viewsourcetext": "Вы можете просмотреть и скопировать исходный текст этой страницы:",
-       "viewyourtext": "Вы можете просмотреть и скопировать исходный текст '''ваших правок''' на этой странице:",
+       "viewsourcetext": "Вы можете просмотреть и скопировать исходный текст этой страницы.",
+       "viewyourtext": "Вы можете просмотреть и скопировать исходный текст <strong>ваших правок</strong> на этой странице.",
        "protectedinterface": "Эта страница содержит интерфейсное сообщение программного обеспечения. Во избежание вандализма её изменение запрещено.\nЧтобы добавить или изменить перевод этого сообщения во всех вики, пожалуйста, используйте сайт локализации MediaWiki [//translatewiki.net/ translatewiki.net]",
        "editinginterface": "<strong>Внимание:</strong> Вы редактируете страницу, содержащую текст интерфейса программного обеспечения.\nЕё изменение повлияет на внешний вид интерфейса для других пользователей этой вики.",
        "translateinterface": "Чтобы добавить или изменить перевод этого сообщения, пожалуйста, используйте сайт локализации MediaWiki [//translatewiki.net/ translatewiki.net].",
        "search-category": "(категория $1)",
        "search-file-match": "(совпадает с содержимым файла)",
        "search-suggest": "Возможно, вы имели в виду «$1».",
+       "search-rewritten": "Показаны результаты для $1. Искать вместо этого $2.",
        "search-interwiki-caption": "Родственные проекты",
        "search-interwiki-default": "Результаты из $1:",
        "search-interwiki-more": "(ещё)",
        "rcshowhidemine": "$1 свои правки",
        "rcshowhidemine-show": "Показать",
        "rcshowhidemine-hide": "Скрыть",
+       "rcshowhidecategorization": "$1 категоризацию страницы",
+       "rcshowhidecategorization-show": "Показать",
+       "rcshowhidecategorization-hide": "Скрыть",
        "rclinks": "Показать последние $1 изменений за $2 дней<br />$3",
        "diff": "разн.",
        "hist": "история",
        "boteditletter": "б",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|наблюдающий участник|наблюдающих участника|наблюдающих участников}}]",
-       "rc_categories": "Только из категорий (разделитель «|»)",
-       "rc_categories_any": "Ð\9bÑ\8eбой",
+       "rc_categories": "Только из категорий (разделитель «|»):",
+       "rc_categories_any": "Ð\9bÑ\8eбаÑ\8f Ð¸Ð· Ð²Ñ\8bбÑ\80аннÑ\8bÑ\85",
        "rc-change-size-new": "Размер после изменения: $1 {{PLURAL:$1|байт|байта|байт}}",
        "newsectionsummary": "/* $1 */ новая тема",
        "rc-enhanced-expand": "Показать подробности",
        "recentchangeslinked-summary": "Это список недавних изменений в страницах, на которые ссылается указанная страница (или входящих в указанную категорию).\nСтраницы, входящие в [[Special:Watchlist|ваш список наблюдения]] '''выделены'''.",
        "recentchangeslinked-page": "Название страницы:",
        "recentchangeslinked-to": "Наоборот, показать изменения на страницах, которые ссылаются на указанную страницу",
+       "recentchanges-page-added-to-category": "[[:$1]] добавлена в категорию",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} добавлены в категорию",
+       "recentchanges-page-removed-from-category": "[[:$1]] убрана из категории",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и {{PLURAL:$2|одна страница|$2 страниц}} убраны из категории",
        "upload": "Загрузить файл",
        "uploadbtn": "Загрузить файл",
        "reuploaddesc": "Вернуться к форме загрузки",
        "upload-too-many-redirects": "URL содержит слишком много перенаправлений",
        "upload-http-error": "Произошла ошибка HTTP: $1",
        "upload-copy-upload-invalid-domain": "Копирование загрузок не доступно в этом домене.",
+       "upload-dialog-title": "Загрузить файл",
+       "upload-dialog-error": "Произошла ошибка",
+       "upload-dialog-warning": "Появилось предупреждение",
+       "upload-dialog-button-cancel": "Отменить",
+       "upload-dialog-button-done": "Готово",
+       "upload-dialog-button-save": "Сохранить",
+       "upload-dialog-button-upload": "Загрузить",
+       "upload-dialog-label-select-file": "Выбрать файл",
+       "upload-dialog-label-infoform-title": "Подробности",
+       "upload-dialog-label-infoform-name": "Имя",
+       "upload-dialog-label-infoform-description": "Описание",
+       "upload-dialog-label-usage-title": "Использование",
+       "upload-dialog-label-usage-filename": "Имя файла",
        "backend-fail-stream": "Не удалось транслировать файл $1.",
        "backend-fail-backup": "Невозможно сделать резервную копию файла $1.",
        "backend-fail-notexists": "Файл $1 не существует.",
        "watchlistanontext": "Пожалуйста, войдите, чтобы просмотреть или отредактировать элементы в списке наблюдения.",
        "watchnologin": "Нужно представиться системе",
        "addwatch": "Добавить в список наблюдения",
-       "addedwatchtext": "Страница «[[:$1]]» была добавлена в ваш [[Special:Watchlist|список наблюдения]].\nТам будут отмечаться последующие изменения этой страницы, а также связанной с ней страницы обсуждения.",
+       "addedwatchtext": "Статья «[[:$1]]» и её страница обсуждения были добавлены в ваш [[Special:Watchlist|список наблюдения]].",
        "addedwatchtext-short": "Страница «$1» была добавлена в ваш список наблюдения.",
        "removewatch": "Удалить из списка наблюдения",
-       "removedwatchtext": "Страница «[[:$1]]» была удалена из вашего [[Special:Watchlist|списка наблюдения]].",
+       "removedwatchtext": "Статья «[[:$1]]» и её страница обсуждения были удалены из вашего [[Special:Watchlist|списка наблюдения]].",
        "removedwatchtext-short": "Страница «$1» была удалена из вашего списка наблюдения.",
        "watch": "Следить",
        "watchthispage": "Наблюдать за этой страницей",
        "changecontentmodel-success-title": "Модель содержимого была изменена",
        "changecontentmodel-success-text": "Модель содержимого [[:$1]] была изменена.",
        "changecontentmodel-cannot-convert": "Содержимое [[:$1]] не может быть преобразовано к типу $2.",
-       "changecontentmodel-title-cantexist": "Невозможно иметь страницу в $1.",
        "changecontentmodel-nodirectediting": "Модель содержимого $1 не поддерживает прямое редактирование",
        "log-name-contentmodel": "Журнал изменения моделей содержимого",
        "log-description-contentmodel": "События, связанные с моделями содержимого страниц",
        "undeletepagetext": "{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страниц были удалены|Следующие $1 страницы были удалены|1=Следующая страница была удалена}}, однако {{PLURAL:$1|1=она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.\nАрхив может периодически очищаться.",
        "undelete-fieldset-title": "Восстановить версии",
        "undeleteextrahelp": "Для полного восстановления истории страницы оставьте все отметки пустыми и нажмите '''«{{int:undeletebtn}}»'''.\nДля частичного восстановления отметьте те версии страницы, которые нужно восстановить, и нажмите '''«{{int:undeletebtn}}»'''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|версия|версий|версии}} {{PLURAL:$1|помещена|помещены}} в архив",
+       "undeleterevisions": "$1 {{PLURAL:$1|версия|версий|версии}} {{PLURAL:$1|удалена|удалены}}",
        "undeletehistory": "При восстановлении страницы восстанавливается и её история правок.\nЕсли после удаления была создана новая страница с тем же названием, то восстановленные версии появятся в истории правок перед новыми версиями.",
        "undeleterevdel": "Восстановление не будет произведено, если оно приведёт к частичному удалению последней версии страницы или файла.\nВ подобном случае вы должны снять отметку или показать последние удалённые версии.",
        "undeletehistorynoadmin": "Статья была удалена. Причина удаления и список участников, редактировавших статью до её удаления, показаны ниже. Текст удалённой статьи могут просмотреть только администраторы.",
        "spam_reverting": "Откат к последней версии, не содержащей ссылки на $1",
        "spam_blanking": "Все версии содержат ссылки на $1, очистка",
        "spam_deleting": "Все версии содержали ссылки на $1, производится удаление",
-       "simpleantispam-label": "Анти-спам проверка.\n'''НЕ''' заполняйте это!",
+       "simpleantispam-label": "Анти-спам проверка.\n<strong>Не</strong> заполняйте это!",
        "pageinfo-title": "Сведения по «$1»",
        "pageinfo-not-current": "К сожалению, невозможно предоставить эту информацию для старых версий.",
        "pageinfo-header-basic": "Основные сведения",
        "htmlform-title-badnamespace": "[[:$1]] находится не в пространстве имён «{{ns:$2}}».",
        "htmlform-title-not-creatable": "«$1» не является создаваемым заголовком страницы",
        "htmlform-title-not-exists": "[[:$1]] не существует.",
+       "htmlform-user-not-exists": "<strong>$1</strong> не существует.",
+       "htmlform-user-not-valid": "<strong>$1</strong> не является допустимым именем пользователя.",
        "sqlite-has-fts": "$1 с поддержкой полнотекстового поиска",
        "sqlite-no-fts": "$1 без поддержки полнотекстового поиска",
        "logentry-delete-delete": "$1 {{GENDER:$2|удалил|удалила}} страницу $3",
        "special-characters-title-endash": "среднее тире",
        "special-characters-title-emdash": "длинное тире",
        "special-characters-title-minus": "знак минус",
+       "mw-widgets-dateinput-no-date": "Дата не выбрана",
+       "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "mw-widgets-titleinput-description-new-page": "страница ещё не существует",
        "mw-widgets-titleinput-description-redirect": "перенаправление на $1"
 }
index 98ffb27..8946049 100644 (file)
        "special-characters-group-gujarati": "Ґуджараті",
        "special-characters-group-thai": "Тайськы",
        "special-characters-group-lao": "Лаоськы",
-       "special-characters-group-khmer": "Кгмерськы"
+       "special-characters-group-khmer": "Кгмерськы",
+       "mw-widgets-dateinput-placeholder-day": "РРРР-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "РРРР-ММ"
 }
index 113e060..1d1c81a 100644 (file)
        "showpreview": "प्राग्दृश्यं दृश्यताम्",
        "showdiff": "परिवर्तनानि दृश्यन्ताम्",
        "blankarticle": "<strong>पूर्वसूचना : </strong> भवान्/भवती एकस्य रिक्तपृष्ठस्य निर्माणं करोति ।\nयदि भवान्/भवती \"{{int:savearticle}}\" इत्येतत् पुनः नोत्स्यति, तर्हि रिक्तपृष्ठस्य निर्माणं भविष्यति ।",
-       "anoneditwarning": "'''पà¥\82रà¥\8dवसà¥\82à¤\9aना''' à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤ªà¥\8dरवà¥\87शà¤\83 à¤¨ à¤\95à¥\83तà¤\83 !\nà¤\85तà¥\8dर à¤¸à¤®à¥\8dपादनà¤\82 à¤\95रà¥\8dतà¥\81à¤\82 à¤ªà¥\8dरवà¥\87शà¤\83 à¤\85निवारà¥\8dयà¤\83 à¥¤ à¤\85नà¥\8dयथा à¤\85सà¥\8dय à¤ªà¥\83षà¥\8dठसà¥\8dय à¤\87तिहासà¥\87 à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤\85नà¥\8dतरà¥\8dà¤\9cालसà¤\82विदà¤\83 (IP) à¤¸à¤\99à¥\8dà¤\96à¥\8dया à¤\85à¤\99à¥\8dà¤\95िता à¤­à¤µà¤¤à¤¿ à¥¤ à¤¯à¤¦à¤¿ à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 <strong>[$1 à¤ªà¥\8dरविषà¤\9aि]</strong> \nउत <strong>[$2 सदस्यातां प्राप्नोति]</strong>, तर्हि अन्यसुविधाभिः सह भवान्/भवती सम्पादनानां श्रेयम् अपि प्राप्स्यति ।",
+       "anoneditwarning": "'''पà¥\82रà¥\8dवसà¥\82à¤\9aना''' à¤­à¤µà¤¤à¤¾/भवतà¥\8dया à¤ªà¥\8dरवà¥\87शà¤\83 à¤¨ à¤\95à¥\83तà¤\83 !\nà¤\85तà¥\8dर à¤¸à¤®à¥\8dपादनà¤\82 à¤\95रà¥\8dतà¥\81à¤\82 à¤ªà¥\8dरवà¥\87शà¤\83 à¤\85निवारà¥\8dयà¤\83 à¥¤ à¤\85नà¥\8dयथा à¤\85सà¥\8dय à¤ªà¥\83षà¥\8dठसà¥\8dय à¤\87तिहासà¥\87 à¤­à¤µà¤¤à¤\83/भवतà¥\8dयाà¤\83 à¤\85नà¥\8dतरà¥\8dà¤\9cालसà¤\82विदà¤\83 (IP) à¤¸à¤\99à¥\8dà¤\96à¥\8dया à¤\85à¤\99à¥\8dà¤\95िता à¤­à¤µà¤¤à¤¿ à¥¤ à¤¯à¤¦à¤¿ à¤­à¤µà¤¾à¤¨à¥\8d/भवतà¥\80 <strong>[$1 à¤ªà¥\8dरविषति]</strong> \nउत <strong>[$2 सदस्यातां प्राप्नोति]</strong>, तर्हि अन्यसुविधाभिः सह भवान्/भवती सम्पादनानां श्रेयम् अपि प्राप्स्यति ।",
        "anonpreviewwarning": "''भवता/भवत्या प्रवेशः न स्वीकृतः । अस्य पृष्ठस्य परिवर्तनस्य इतिहासे भवतः/भवत्याः अन्तर्जालसंविदः (IP) उल्लेखो भविष्यति ।''",
        "missingsummary": "'''स्मरतु''' भवता/भवत्या सम्पादनस्य सारांशः न प्रदत्तः ।\n\"{{int:savearticle}}\" अत्र यदि भवान्/भवती द्वितीयवारं नोत्स्यति, तर्हि भवतः/भवत्याः सम्पादनसारांशात् ऋते परिवर्तनं रक्षितं भविष्यति ।",
        "selfredirect": "<strong>पूर्वसूचना :</strong> भवान्/भवती एतत् पृष्ठं एतत्पृष्ठं प्रत्येव प्रेषयति ।\nअनुप्रेषिणाय दोषपूर्णं लक्ष्यनिर्देशं भवितुम् अर्हति, अथवा तु भवान्/भवती अशुद्धपृष्ठस्य सम्पादनाय प्रयतते ।\n\"{{int:savearticle}}\" इत्ययत् भवान्/भवती पुनः नुदति चेत्, पुनर्नर्देशनं स्वयमेव भविष्यति ।",
        "last": "पूर्वतनम्",
        "page_first": "प्रप्रथमम्",
        "page_last": "अन्तिमम्",
-       "histlegend": "भà¥\87दसà¥\8dय à¤\9aयनमà¥\8d : à¤\86वà¥\83तà¥\8dतिभेदं द्रष्टुम् अग्रे प्रदत्ता रेडियो-मञ्जूषा नुद्यताम्, एण्टर्-कुड्मलं नुद्यताम्, अधः दत्तं कुड्मलं वा नुद्यताम् । <br />\nनूतनसंस्करणम् = नूतनासु आवृत्तिषु भेदः, \n(पूर्वतनम्) = पूर्वतनासु आवृत्तिषु भेदः, (लघु) = लघु सम्पादनम्",
+       "histlegend": "भà¥\87दसà¥\8dय à¤\9aयनमà¥\8d : à¤¸à¤\82सà¥\8dà¤\95रणभेदं द्रष्टुम् अग्रे प्रदत्ता रेडियो-मञ्जूषा नुद्यताम्, एण्टर्-कुड्मलं नुद्यताम्, अधः दत्तं कुड्मलं वा नुद्यताम् । <br />\nनूतनसंस्करणम् = नूतनासु आवृत्तिषु भेदः, \n(पूर्वतनम्) = पूर्वतनासु आवृत्तिषु भेदः, (लघु) = लघु सम्पादनम्",
        "history-fieldset-title": "अन्वेषणस्य इतिहासः",
        "history-show-deleted": "केवलम् अपाकृतम्",
        "histfirst": "पुरातनतमम्",
index 5bb3512..11efac4 100644 (file)
        "actionthrottled": "Түргэнин хааччахтааһын",
        "actionthrottledtext": "Бу дьайыыны кылгас кэм иһигэр элбэхтик оҥорор бобуллар. Бу быраабыла спаамы утары охсуһарга көмөлөһөр. Аҕыйах мүнүүтэннэн өссө боруобалаар.",
        "protectedpagetext": "Бу сирэй уларытыыттан уонна да атын дьайыылартан көмүскэммит.",
-       "viewsourcetext": "Эн бу сирэй төрдүн көрүөххүн уонна төгүллүөххүн сөп:",
-       "viewyourtext": "'''Бэйэҥ көннөрүүлэриҥ''' исходнигын бу сирэйгэ көрүөххүн уонна хатылаан ылыаххын сөп:",
+       "viewsourcetext": "Эн бу сирэй төрүт куодун көрүөххүн уонна төгүллээн ылыаххын сөп:",
+       "viewyourtext": "<strong>Бэйэҥ көннөрүүлэриҥ</strong> төрүт куодун бу сирэйгэ көрүөххүн уонна хатылаан ылыаххын сөп.",
        "protectedinterface": "Бу сирэй бырагыраамма интерфейсын биллэриитин көрдөрөр, онон моһуогурууттан халытан хатанан турар.\nТылбааһын уларытыаххын баҕарар буоллаххына онно аналлаах тылбаас ситим-сирин туһан: MediaWiki [//translatewiki.net/ translatewiki.net]",
        "editinginterface": "<strong>Болҕой:</strong> Быраҕыраамма тас көстүүтүн (интерфейсын) хааччыйар тиэкиһи уларытаары гынан эрэҕин.\nБу сирэйи уларыттаххына атын кыттааччылар көрөллөрүгэр быраҕыраамма көстүүтэ уларыйыа.",
        "translateinterface": "Бу биллэриини тылбаастыырга эбэтэр уларытарга, бука диэн, MediaWiki диэн анал тылбаастыыр сиргэ киир [//translatewiki.net/ translatewiki.net].",
-       "cascadeprotected": "Бу сирэй уларыйар кыаҕа суох, тоҕо диэтэххэ уларыйара бобуллубут (каскаднай көмүскэл холбоммут) {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:\n$2",
+       "cascadeprotected": "Бу сирэй уларыйар кыаҕа суох, тоҕо диэтэххэ уларыйара бобуллубут {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр (каскаднай көмүскэл холбоммут):\n$2",
        "namespaceprotected": "Эн '''$1''' аат эйгэтигэр киирэр сирэйдэри уларытар кыаҕыҥ суох.",
        "customcssprotected": "Эн бу CSS-сирэйи уларытар кыаҕыҥ суох, тоҕо диэтэххэ онтуҥ атын киһи тус бэйэтин туруорууларын таарыйар.",
        "customjsprotected": "Эн бу JavaScript-сирэйи уларытар кыаҕыҥ суох, тоҕо диэтэххэ онтуҥ атын киһи тус бэйэтин туруорууларын таарыйар.",
        "readonlywarning": "'''Сэрэтии: Сиэрбэргэ техническай үлэ бара турар, онон киллэрбит уларытыыларыҥ тута бигэргэнэр кыахтара суох.'''\nОнон уларытыыгын тиэкистээх билэҕэ уган баран, кэлин манна киллэриэххин сөп.\n\nХааччаҕы туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: $1",
        "protectedpagewarning": "'''Сэрэтии:  Бу сирэй хатанан турар, администратор бырааптаах эрэ кыттааччылар уларытар кыахтаахтар.'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
        "semiprotectedpagewarning": "'''Биллэрии:''' Бу сирэй хатанан турар; ааттарын билиһиннэрбит эрэ кыттааччылар уларытар кыахтаахтар.\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
-       "cascadeprotectedwarning": "'''Сэрэтии:''' Бу сирэйи \"дьаһабыллар\" бөлөххө киирэр кыттааччылар эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
+       "cascadeprotectedwarning": "<strong>Сэрэтии:</strong> Бу сирэйи дьаһабыллар эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
        "titleprotectedwarning": "'''Сэрэтии:  Маннык ааттаах сирэйи уларытар бобуллубут, [[Special:ListGroupRights|анал бырааптаах эрэ дьон]] уларытыахтарын сөп .'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
        "templatesused": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} :",
        "templatesusedpreview": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} бигэргэтиэх иннинэ көстүүлэрэ:",
        "shown-title": "Сирэйгэ $1 {{PLURAL:$1|суругу|суруктары}} көрдөр",
        "viewprevnext": "Көр ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Бу биикигэ бу сирэй маннык ааттаах \"[[$1]]\"'''",
-       "searchmenu-new": "<strong>Бу биикигэ \"[[:$1]]\" сирэйи айарга!</strong>{{PLURAL:$2|0=|Эбии көрдөөһүн түмүгэр көстүбүт сирэйи көр.|Эбии көрдөөһүн түмүктэрин көр.}}",
+       "searchmenu-new": "<strong>\"[[:$1]]\" сирэйи айыаххын баҕарар буоллаххына, кыһылынан суруллубут сирэй аатын баттаа! </strong>\n{{PLURAL:$2|0=|Көрдөөһүн түмүгэр көстүбүт сирэйи кытта билсиэххин сөп:|Көрдөөһүн түмүктэрин кытта билсиэхин сөп:}}",
        "searchprofile-articles": "Ыстатыйалар истэрэ",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Барыта",
        "search-category": "(категория $1)",
        "search-file-match": "(билэ иһинээҕитин кытта сөп түбэһэр)",
        "search-suggest": "Баҕар маннык диэри гыммытыҥ буолуо: $1",
+       "search-rewritten": "Бу түмүктэрэ көстөллөр: $1. Ол оннугар маны көрдөт: $2.",
        "search-interwiki-caption": "Уруулуу бырайыактар",
        "search-interwiki-default": "$1 түмүгэ:",
        "search-interwiki-more": "(өссө)",
        "rcshowhidemine": "Мин уларытыыларбын $1",
        "rcshowhidemine-show": "Көрдөр",
        "rcshowhidemine-hide": "Кистээ",
+       "rcshowhidecategorization-show": "Көрдөр",
+       "rcshowhidecategorization-hide": "Кистээ",
        "rclinks": "$2 күҥҥэ бүтэһик $1 уларытыыны көрдөр;<br />$3.",
        "diff": "уратыта",
        "hist": "устуоруйата",
        "newpageletter": "С",
        "boteditletter": "р",
        "number_of_watching_users_pageview": "[$1 кэтиир {{PLURAL:$1|кыттааччы|кыттааччылар}}]",
-       "rc_categories": "Бу эрэ категориялартан (араар бэлиэ \"|\")",
-       "rc_categories_any": "ХаннÑ\8bк баҕарар",
+       "rc_categories": "Бу эрэ категориялартан (араарар бэлиэ \"|\")",
+       "rc_categories_any": "ТалÑ\8bллÑ\8bбÑ\8bÑ\82Ñ\82ан Ñ\85айаÑ\82а баҕарар",
        "rc-change-size-new": "Уларытыы кээмэйэ: $1 баайт",
        "newsectionsummary": "/* $1 */ саҥа сиэксийэ",
        "rc-enhanced-expand": "Сиһилии көрдөр",
        "uploaded-href-attribute-svg": "SVG-билэлэргэ олохтоох соруга суох href-атрибууттар <code>&lt;$1 $2=\"$3\"&gt;</code> бобуллаллар (а.э. http://, javascript:, уо.д.а.).",
        "uploaded-href-unsafe-target-svg": "Хачайдаммыт SVG-билэҕэ кутталлаах сигэ көһүннэ <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploaded-animate-svg": "«Animate» тиэк көһүннэ, кини «from»-атрибут көмөтүнэн  <code>&lt;$1 $2=\"$3\"&gt;</code> хачайдаммыт SVG-билэҕэ сигэни уларытыан сөп.",
+       "uploaded-setting-href-svg": "Төрүт элэмиэҥҥэ «href» атрибуту киллэрэр «set» тиэги туһанар бобуулаах.",
        "uploaded-image-filter-svg": "Хачайдаммыт SVG-билэҕэ маннык URL-аадырыстаах ойуу сиидэтэ көстүбүт <code>&lt;$1 $2=\"$3\"&gt;</code>.",
        "uploadscriptednamespace": "Бу SVG-билэ алҕастаах аат даллаах эбит: '$1'",
        "uploadinvalidxml": "Хачайдаммит билэҕэ XML анаалыстанар кыаҕа суох.",
        "upload-too-many-redirects": "URL наһаа элбэх утаарыылаах",
        "upload-http-error": "HTTP алҕаһа таҕыста: $1",
        "upload-copy-upload-invalid-domain": "Бу домеҥҥа хачайдааһыны хатылыыр табыллыбат.",
+       "upload-dialog-title": "Билэни угуу",
+       "upload-dialog-button-cancel": "Салҕаама",
+       "upload-dialog-button-done": "Оҥоһулунна",
+       "upload-dialog-button-save": "Бигэргэт",
+       "upload-dialog-button-upload": "Киллэрии",
+       "upload-dialog-label-select-file": "Билэни тал",
+       "upload-dialog-label-infoform-title": "Сиһилии",
+       "upload-dialog-label-infoform-name": "Аата",
+       "upload-dialog-label-infoform-description": "Быһаарыыта",
+       "upload-dialog-label-usage-title": "Туһаныы",
+       "upload-dialog-label-usage-filename": "Билэ аата",
        "backend-fail-stream": "$1 билэни ыытар табыллыбата.",
        "backend-fail-backup": "Бу билэ $1 резервнэй куопуйатын оҥорор табыллыбата.",
        "backend-fail-notexists": "Маннык $1 билэ суох эбит.",
        "randomincategory-nopages": "Бу категорияҕа [[:Category:$1]] киирэр ыстатыйалар суохтар.",
        "randomincategory-category": "Категория:",
        "randomincategory-legend": "Категория түбэспиччэ ыстатыйата",
+       "randomincategory-submit": "Көс",
        "randomredirect": "Түбэспиччэ утаарыы",
        "randomredirect-nopages": "Бу аат далыгар($1) көһөрөр ыйынньыктар суохтар.",
        "statistics": "Статистика",
        "logempty": "Сурунаалга сөп түбэһэр элэмиэннэр суохтар.",
        "log-title-wildcard": "Бу сурук бэлиэлэриттэн (буукубалартан) саҕаланар ааттары бул",
        "showhideselectedlogentries": "Талыллыбыт суруктары кистээ/көрдөр",
+       "log-edit-tags": "Сурунаалтан талбыт суругуҥ тиэгин уларыт",
        "allpages": "Сирэйдэр барыта",
        "nextpage": "Аныгыскы сирэй ($1)",
        "prevpage": "Бу иннинээҕи сирэй ($1)",
        "trackingcategories-desc": "Категорияҕа киирии киритиэрийэ",
        "noindex-category-desc": "Бу сирэйи көрдүүр роботтар болҕомотоҕо ылбаттар, тоҕо диэтэххэ <code><nowiki>__NOINDEX__</nowiki></code> диэн «аптаах тыл» туттуллубут. Сирэй инньэ гынарга көҥүллэммит аат далыгар баар эбит.",
        "index-category-desc": "Сирэйгэ <nowiki>__INDEX__</nowiki> диэн «аптаах тыл» баар эбит (сирэй ону көҥүллүүр аат далыгар баар эбит), онон көрдүүр роботтар кинини болҕомтоҕо ылыа да суох түгэннэргэ көрөллөр эбит.",
-       "post-expand-template-inclusion-category-desc": "Халыыптары барытын көрөдөрдөххө сирэй кээмэйэ маннааҕар улаатыа <code>$wgMaxArticleSize</code>, ол иһин сорох халыыптар көрдөрүллүбэтилэр.",
+       "post-expand-template-inclusion-category-desc": "Халыыптары барытын көрдөрдөххө сирэй ыйааһына маны <code>$wgMaxArticleSize</code> куоһарыан сөп, онон сорҕото эрэ көрдөрүлүннэ.",
        "post-expand-template-argument-category-desc": "Халыып аргуменын арыйдахха (фигурнай ускуопка иһигэр баары, холобур, <code>{{{Foo}}})</code>, сирэй маннааҕар улахан буолуо: <code>$wgMaxArticleSize</code>.",
        "expensive-parserfunction-category-desc": "Сирэйгэ наһаа элбэх ресурсаны сиир функция туттуллубут (холобур, маннык <code>#ifexist</code>). Сиһилии — бу сирэйгэ: [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "broken-file-category-desc": "Бу категория билэҕэ алҕастаах сигэ баар буоллаҕына эбиллэр (суох билэҕэ сигэнии).",
        "rollback-success": "$1 көннөрүүлэр бу торумҥа төннөрүлүннүлэр: $2.",
        "sessionfailure-title": "Сиэссийэ алҕаһа",
        "sessionfailure": "Арааһа туох эрэ сатаммата, дьайыыҥ оҥоһуллубата. Браузергар \"Төнүн\" тимэҕи баттаа уонна бу иннинээҕи сирэйгин иккистээн киллэрэн көр.",
+       "changecontentmodel": "Сирэй ис тутулун киэбин уларытыы",
+       "changecontentmodel-title-label": "Сирэй баһа",
+       "changecontentmodel-model-label": "Иһинээҕитин саҥа киэбэ",
+       "changecontentmodel-reason-label": "Төрүөтэ:",
+       "changecontentmodel-success-title": "Иһинээҕитин киэбэ уларыйда",
+       "changecontentmodel-success-text": "[[:$1]] иһинээҕитин киэбэ уларыйда.",
+       "changecontentmodel-cannot-convert": "[[:$1]] иһинээҕитэ $2 көрүҥҥэ уларыйар кыаҕа суох эбит.",
+       "changecontentmodel-nodirectediting": "$1 иһинээҕитин киэбин быһа уларытар сатаммат эбит",
+       "log-name-contentmodel": "Иһинээҕитин киэбин уларытыы сурунаала",
+       "log-description-contentmodel": "Сирэй иһинээҕитин киэбин кытта ситимнээх",
+       "logentry-contentmodel-change-revertlink": "төннөрүү",
+       "logentry-contentmodel-change-revert": "төннөрүү",
        "protectlogpage": "Харысхал сурунаала (көннөрүүттэн көмүскэммит билэлэр испииһэктэрэ)",
        "protectlogtext": "Манна сирэйи көмүскээһин устуоруйата суруллубут.\nЭн өссө [[Special:ProtectedPages|билигин уларытыллыбат гына көмүскэммит сирэйдэр тиһиктэрин]] көрүөххүн сөп.",
        "protectedarticle": "\"[[$1]]\" сирэй уларытыллыбат",
        "protect-locked-blocked": "Уларытыы таһымын учуотунай суругуҥ бобуллубут кэмигэр уларытар кыаҕыҥ суох.\n'''$1''' сирэй уларытыытын таһыма:",
        "protect-locked-dblock": "Уларытыы таһыма уларыйар кыаҕа суох - дааннайдар баазаларын уларытар бобулунна.\n'''$1''' сирэй уларытыытын таһыма билиҥҥи туругунан маннык:",
        "protect-locked-access": "Эн аккаунуҥ уларытыы таһымын көннөрөр кыаҕа суох.\n'''$1''' сирэй уларыыттын таһыма билиҥҥи туругунан маннык:",
-       "protect-cascadeon": "Бу сирэй уларытыыттан көмүскэммит {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} (каскааднай көмүскэл) киирэр буолан эмиэ көмүскэммит. Эн көмүскэнии таһымын уларытыаххын сөп, ол каскаднай көмүскэли уларыппат.",
+       "protect-cascadeon": "Бу сирэй көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр буолан уларытыыттан көмүскэммит. Көмүскэл таһымын уларытыаххын сөп эрээри, ол каскаднай көмүскэли уларыппат.",
        "protect-default": "Барыларыгар көҥүллэнэр",
        "protect-fallback": "\"$1\" кыттааччылар эрэ маны оҥорор кыахтаахтар",
        "protect-level-autoconfirmed": "Аптамаатынан бигэргэммит кыттааччыларга эрэ көҥүллэнэр",
        "namespace": "Аат дала (Пространство имён):",
        "invert": "Бэлиэтэниллибити таҥнары тут",
        "tooltip-invert": "Бу бэлиэни туруоран талбыт аат далгар баар сирэйдэри уларытыыны көстүбэт оҥор (уонна анаан ыйыллыбыт буоллаҕына ситимнээх аат далларыгар)",
+       "tooltip-whatlinkshere-invert": "Бу чыычааҕы туруордаххына талбыт аат далгыттан сигэлэри кистиэҥ",
        "namespace_association": "Ситимнээх аат даллара",
        "tooltip-namespace_association": "Бу бэлиэни туруордаххына талбыт аат далгын кытта ситимнээх аат даллара эмиэ холбоһуохтара",
        "blanknamespace": "(Сүрүн)",
        "autoblockid": "Аптамаатынан хааччахтааһын #$1",
        "block": "Кыттааччыны хааччахтааһын",
        "unblock": "Кытааччы хааччаҕын устуу",
-       "blockip": "IP аадырыстан киириини бобуу",
+       "blockip": "{{GENDER:$1|Кыттааччыны}} хааччахтаа",
        "blockip-legend": "Кыттааччыны хааччахтааһын",
        "blockiptext": "Ханнык эмит IP-ттан суруйары манна баар форманы туһанан боп.\nВандализмы утаран уонна [[{{MediaWiki:Policy-url}}]]\nбыраабылалрын тутуһан эрэ бобуохтааххын.\nХайаан да бобуу төрүөтүн кэпсээ (холобур, вандализм баар сирэйдэриттэн\nбыһа тардан манна көрдөр).",
        "ipaddressorusername": "IP аадырыһа эбэтэр кыттааччы аата:",
        "ipb-unblock-addr": "$1 бобуутун суох гын",
        "ipb-unblock": "Кыттаачыны эбэтэр IP-ны бобуллубуттар испииһэктэриттэн таһаар",
        "ipb-blocklist": "Бобуулары көрдөр",
-       "ipb-blocklist-contribs": "$1 кыттааччы кылаата/киллэриитэ",
+       "ipb-blocklist-contribs": "{{GENDER:$1|$1}} суруйуута",
        "unblockip": "Кыттааччыны көҥүллээ",
        "unblockiptext": "IP эбэтэр кыттааччы көннөрөр/уларытар быраабын манна баар форманы туһанан төннөр.",
        "ipusubmit": "Хааччаҕын уһул",
        "unblocked": "[[User:$1|$1]] хааччахтаныыта уһулунна",
        "unblocked-range": "$1 хааччаҕа уһулунна",
        "unblocked-id": "$1 хааччахтаныыта уһулунна",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] хааччаҕа уһулунна.",
        "blocklist": "Бобуллубут кыттааччылар",
        "ipblocklist": "Хааччахтаммыт кыттааччылар",
        "ipblocklist-legend": "Хааччахтаммыт/бобуллубут кыттааччыны көрдөөһүн",
        "thumbnail-temp-create": "Эскииз быстах билэтин оҥорор табыллыбата",
        "thumbnail-dest-create": "Эскииһи ыйбыт сиргэр угар табыллыбата",
        "thumbnail_invalid_params": "Кыра ойуу кээмэйэ сыыһалаах",
+       "thumbnail_toobigimagearea": "Билэ кээмэйэ мантан - $1 - улахан",
        "thumbnail_dest_directory": "Наадалаах каталогы оҥорор табыллыбата",
        "thumbnail_image-type": "Маннык ойуу көрүҥэ манна туттуллубат",
        "thumbnail_gd-library": "GD бибилитиэкэ толору конфигурацията суох, бу функция суох: $1",
        "thumbnail_image-missing": "Арааһа бу билэ суох быһыылаах: $1",
        "thumbnail_image-failure-limit": "Эскииһи наһаа элбэхтик киллэрэ сатаатыҥ ($1 төгүл, биитэр өссө элбэх). Бука диэн, кэлин хатылаан көрөөр.",
        "import": "Сирэйдэри импортааһын",
-       "importinterwiki": "Ð\91иики Ñ\8bккаÑ\80дÑ\8bнааÒ\95Ñ\8b Ð¸Ð¼Ð¿Ð¾Ñ\80Ñ\82",
-       "import-interwiki-text": "Биикини уонна импортанар сирэй аатын киллэр.\nУларытыылар күннэрэ-ыйдара уонна аапптардар ааттара оннуларынан хаалыахтара.\nБиики ыккардынааҕы импорт дьайыылара [[Special:Log/import|аналлаах сурунаалга]] суруллаллар.",
+       "importinterwiki": "Ð\90Ñ\82Ñ\8bн Ð±Ð¸Ð¸ÐºÐ¸Ñ\82Ñ\82Ñ\8dн ÐºÐ¸Ð»Ð»Ñ\8dÑ\80ии",
+       "import-interwiki-text": "Биикини уонна импортанар сирэй аатын ый.\nУларытыылар күннэрэ-ыйдара уонна ааптардар ааттара оннуларынан хаалыаҕа.\nАтын биикиттэн ылыы [[Special:Log/import|аналлаах сурунаалга]] бэлиэтэниэҕэ.",
        "import-interwiki-sourcewiki": "Ийэ биики:",
        "import-interwiki-sourcepage": "Бастааҥы сирэй:",
        "import-interwiki-history": "Сирэй туох баар историятын көһөрөргө",
        "import-interwiki-templates": "Бары халыыптары киллэр",
        "import-interwiki-submit": "Импортаа",
+       "import-mapping-default": "Атыны эппэтэххэ угар сир аадырыһа",
+       "import-mapping-namespace": "Бу аат далыгар:",
+       "import-mapping-subpage": "Бу сирэй хос сирэйин курдук импортаа:",
        "import-upload-filename": "Билэ аата:",
        "import-comment": "Хос быһаарыы:",
        "importtext": "Сирэйи [[Special:Export|экспорт үнүстүрүмүөнүн]] көмөтүнэн бастакы биикиттэн экспортаа. \nБилэни бастаан бэйэҥ көмпүүтэргэр суруй, онтон манна көһөр.",
        "patrol-log-page": "Бэрэбиэркэ сурунаала",
        "patrol-log-header": "Ботуруулламмыт торумнар сурунааллара.",
        "log-show-hide-patrol": "$1 ботурууллааһын сурунаала",
+       "log-show-hide-tag": "$1 тиэк сурунаала",
        "deletedrevision": "$1 урукку торума сотулунна",
        "filedeleteerror-short": "Билэни сотор сатаммата: $1",
        "filedeleteerror-long": "Билэни сотуу кэмигэр кэккэ моһоллор таҕыстылар:\n\n$1",
        "watchlisttools-raw": "\"Сиикэй\" испииһэги уларытыы",
        "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|ырытыы]])",
        "duplicate-defaultsort": "Болҕой: Наардааһын «$2» күлүүһэ урукку «$1» күлүүһү сабар (Ключ сортировки переопределяет прежний ключ).",
+       "duplicate-displaytitle": "<strong>Болҕой:</strong> Көрдөрүллүбүт «$2» аат урут көрдөрүллүбүт «$1» ааты уларытар.",
        "version": "MediaWiki барыла (биэрсийэтэ)",
        "version-extensions": "Туруоруллубут расширениялар",
-       "version-skins": "Тас көстүү барыллара",
+       "version-skins": "Туруоруллубут тас көстүү барыллара",
        "version-specialpages": "Аналлаах сирэйдэр",
        "version-parserhooks": "синтаксическай анализатор перехватчиктара",
        "version-variables": "Уларыйар дааннайдар (переменнайдар)",
        "version-libraries": "Олордуллубут бибилэтиэкэлэр",
        "version-libraries-library": "Бибилэтиэкэ",
        "version-libraries-version": "Биэрсийэтэ",
+       "version-libraries-license": "Лиссиэнсийэ",
+       "version-libraries-description": "Ойуулааһын",
+       "version-libraries-authors": "Ааптар",
        "redirect": "Билэттэн, кыттааччыттан, сирэйтэн эбэтэр барыл идентификаторыттан утаарыы",
        "redirect-legend": "Билэҕэ эбэтэр сирэйгэ утаарыы",
        "redirect-summary": "Бу аналлаах сирэй билэҕэ (билэ аатыттан), сирэйгэ (барыл эбэтэр сирэй идентификааторыттан) эбэтэр кыттааччы сирэйигэр (кыттааччы идентификаторыттан) утаарар. Туһаныы: \n[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], \n[[{{#Special:Redirect}}/revision/328429]] эбэтэр\n[[{{#Special:Redirect}}/user/101]].",
        "tags-activate": "холбоо",
        "tags-deactivate": "араар",
        "tags-hitcount": "$1 {{PLURAL:$1|уларытыы|уларытыылар}}",
+       "tags-manage-no-permission": "Тиэктэри уларытар кыаҕыҥ суох эбит.",
+       "tags-create-heading": "Саҥа тиэги оҥоруу",
+       "tags-create-explanation": "Саҥа оҥоһуллубут тиэктэри кыттааччылар уонна буоттар уларытар кыахтаах буолуохтара.",
        "tags-create-tag-name": "Бэлиэ аата:",
        "tags-create-reason": "Төрүөтэ:",
        "tags-create-submit": "Оҥоруу",
        "tags-deactivate-submit": "араар",
        "tags-edit-title": "Тиэктэри уларытыы",
        "tags-edit-manage-link": "Тиэктэри дьаһайыы",
+       "tags-edit-existing-tags": "Баар тиэктэр:",
        "tags-edit-existing-tags-none": "''Суох''",
        "tags-edit-new-tags": "Саҥа тиэктэр:",
        "tags-edit-add": "Бу тиэктэри эп:",
        "htmlform-cloner-create": "Өссө эп",
        "htmlform-cloner-delete": "Сот",
        "htmlform-cloner-required": "Саатар биирин толоруохтаах эбиккин.",
+       "htmlform-title-not-creatable": "«$1» оҥоһуллар сирэй аата буолбатах",
+       "htmlform-title-not-exists": "[[:$1]] суох.",
+       "htmlform-user-not-exists": "<strong>$1</strong> суох.",
        "sqlite-has-fts": "$1 толору тиэкистээх көрдөөһүнү өйүүр",
        "sqlite-no-fts": "$1 толору тиэкистээх көрдөөһүнү өйөөбөт",
        "logentry-delete-delete": "$3 сирэйи $1 соппут",
        "logentry-rights-rights-legacy": "$3 бөлөхтөргө киириитин $1 уларыппыт",
        "logentry-rights-autopromote": "$1 мантан $4 манна $5 көһөрүллүбүт",
        "logentry-upload-upload": "$1 {{GENDER:$2|укпут}} $3",
+       "log-name-managetags": "Тиэктэр сурунааллара",
        "rightsnone": "(суох)",
        "revdelete-summary": "уларытыылар туһунан",
        "feedback-adding": "Сирэй туһунан санаа этии...",
        "right-pagelang": "Сирэй тылын уларыт",
        "action-pagelang": "сирэй тылын уларытар буол",
        "log-name-pagelang": "Тылы уларытыы сурунаала",
+       "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (холбоммут)",
+       "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''арахсыбыт''')",
        "mediastatistics": "Миэдьийэ ыстатыыстыката",
        "mediastatistics-nbytes": "$1 баайт ($2; $3%)",
        "mediastatistics-table-mimetype": "MIME көрүҥэ",
index cfc3ad5..ccae3bf 100644 (file)
        "actionthrottled": "Azzioni ritardata",
        "actionthrottledtext": "Comu misura di sicurezza contru lu spam, l'esecuzioni di alcuni azzionu è limitata a nu nùmmuru massimu di voti ni nu determinatu piriudu du tempu, limiti ca ni stu casu fu supiratu. Si prega di ripruvari tra qualchi minutu.",
        "protectedpagetext": "Sta pàggina fu bluccata pi privèniri canciamenti o autri opirazzioni.",
-       "viewsourcetext": "È pussìbbili visualizzari e cupiari lu còdici surgenti di sta pàggina:",
-       "viewyourtext": "È pussibbili visualizzarei cupiari lu còdici surgenti dî '''tò canciamenti''' nti sta pàggina:",
+       "viewsourcetext": "Poi taliari e cupiari lu còdici surgenti di sta pàggina.",
+       "viewyourtext": "Poi taliari e cupiari lu còdici surgenti dî <strong>to canciamenti</strong> nti sta pàggina.",
        "protectedinterface": "Sta pàggina cunteni un elementu ca fà parti dâ nterfaccia utenti dû software eggh'è  prutetta p'evitari pussìbbili abbusi. Pi jùnciri o canciari li traduzzioni pi tutti li wiki usari [//translatewiki.net/translatewiki.net] lu pruggettu di lucalizzazzioni di Mediawiki.",
        "editinginterface": "<strong>Accura:</strong> Lu testu di sta pàggina fà parti di l'interfaccia utenti dû situ.\nTutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti di sta wiki.",
        "translateinterface": "Pi' agghiunciri o canciari traduzzioni pi' tutti i wiki, pi' favuri adupirati [//translatewiki.net/ translatewiki.net], lu pruggettu di lucalizzazzioni di MediaWiki.",
        "search-category": "(catigurìa $1)",
        "search-file-match": "(currispunnenza ntô cuntinutu dûn file)",
        "search-suggest": "Forsi circavutu: $1",
+       "search-rewritten": "Sunnu ammustrati li risurtati pi’ $1. Nveci cerca $2.",
        "search-interwiki-caption": "Pruggetti frati",
        "search-interwiki-default": "Risultati di $1:",
        "search-interwiki-more": "(cchiù)",
        "watchlistanontext": "Pi' vìdiri e canciari li vuci dâ to lista taliata hâ' tràsiri.",
        "watchnologin": "Nun hai trasutu",
        "addwatch": "Agghiunci â lista taliata",
-       "addedwatchtext": "La pàggina \"[[:$1]]\" fu' agghiunciuta â to [[Special:Watchlist|lista taliata]].\nI canciamenti futuri a' sta pàggina e â so pàggina di discussioni venirannu elincati cca.",
+       "addedwatchtext": "La pàggina «[[:$1]]» e la so pàggina di discussioni furu agghiunciuti â to [[Special:Watchlist|lista taliata]].",
        "addedwatchtext-short": "La pàggina \"$1\" fu' agghiunciuta â to lista taliata.",
        "removewatch": "Leva dâ lista taliata",
-       "removedwatchtext": "La pàggina \"[[:$1]]\" fu' livata dâ [[Special:Watchlist|to lista taliata]].",
+       "removedwatchtext": "La pàggina «[[:$1]]» e la so pàggina di discussioni furu livati dâ to [[Special:Watchlist|lista taliata]].",
        "removedwatchtext-short": "La pàggina \"$1\" fu' livata dâ to lista taliata.",
        "watch": "Talìa",
        "watchthispage": "Talìa sta pàggina",
        "changecontentmodel-success-title": "Lu mudellu dû cuntinutu fu’ canciatu",
        "changecontentmodel-success-text": "Lu tipu dû cuntinutu di [[:$1]] fu’ canciatu.",
        "changecontentmodel-cannot-convert": "Nun si po’ cunvèrtiri lu cuntinutu di [[:$1]] ntô tipu $2.",
-       "changecontentmodel-title-cantexist": "Nun si po’ mèttiri na pàggina nta $1.",
        "changecontentmodel-nodirectediting": "Lu mudellu dû cuntinutu $1 nun cunsenti lu canciamentu direttu.",
        "log-name-contentmodel": "Riggistru dî canciamenti ô mudellu dû cuntinutu",
        "log-description-contentmodel": "Eventi ca riguàrdunu lu mudellu dû cuntinutu di na pàggina",
index 3de17ab..e39de39 100644 (file)
@@ -9,59 +9,61 @@
                        "아라"
                ]
        },
-       "tog-underline": "Pabrauktė nūruodas:",
-       "tog-hideminor": "Pakavuotė mažus pataisėmus vielībūju taisīmu sārašė",
-       "tog-extendwatchlist": "Ėšpliestė keravuojamu sāraša, kū ruodītu vėsus tėnkamus pakeitėmus",
-       "tog-usenewrc": "Grupoutė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė",
-       "tog-numberheadings": "Autuomatėškā numeroutė skėrsnelios",
-       "tog-showtoolbar": "Ruodītė redagavėma rakondinė (JavaScript)",
-       "tog-editondblclick": "Poslapiu redagavėms dvėgobu paspaudėmu (JavaScript)",
-       "tog-editsectiononrightclick": "Ijongtė skėrsneliu redagavėma paspaudos skėrsnelė pavadėnėma<br />dešėniouju pelies klavėšu (JavaScript)",
-       "tog-watchcreations": "Pridietė poslapius, katrūs sokorio, i keravuojamu sāraša",
-       "tog-watchdefault": "Pridietė poslapius, katrūs taisau, i keravuojamu sāraša",
-       "tog-watchmoves": "Pridietė poslapius, katrūs parkelio, i keravuojamu sāraša",
-       "tog-watchdeletion": "Pridietė poslapius, katrūs ėštrino, i keravuojamu sāraša",
-       "tog-minordefault": "Palē nutīliejėma pažīmietė redagavėmus kāp mažus",
-       "tog-previewontop": "Ruodītė parvaiza vėrš redagavėma lauka",
-       "tog-previewonfirst": "Ruodītė straipsnė parvėiza pėrmu redagavėmu",
-       "tog-enotifwatchlistpages": "Siōstė mon gromata, kūmet pakeitams poslapis, katra stebiu",
+       "tog-underline": "Pabriežtė nūruodas:",
+       "tog-hideminor": "Pakavuotė mažus pataisėmus vielībūju keitėmu sārošė",
+       "tog-extendwatchlist": "Ėšpliestė keravuojamu sāroša, ka ruodītu ne tėktās vielībūsius pakeitėmus",
+       "tog-usenewrc": "Skėrstītė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė",
+       "tog-numberheadings": "Autuomatėškā numeroutė skėrsnelius",
+       "tog-showtoolbar": "Ruodītė keitėmu rakondėnė",
+       "tog-editondblclick": "Poslapiu keitėms kāp dosīk spaudi ont poslapė",
+       "tog-editsectiononrightclick": "Ijongtė skėrsneliu keitėma kāp paspaudi skėrsnelė pavadėnėma so dešėnio pelies mīgtoko",
+       "tog-watchcreations": "Pridietė poslapius, katrūs padėrbo, keravuojamu sārošap",
+       "tog-watchdefault": "Pridietė poslapius, katrūs keito, keravuojamu sārošap",
+       "tog-watchmoves": "Pridietė poslapius, katrūs parvadėno, keravuojamu sārošap",
+       "tog-watchdeletion": "Pridietė poslapius, katrūs ėštrėno, keravuojamu sārošap",
+       "tog-watchrollback": "Pridietė poslapius, katrūs keitėmus grōžėno atgal, keravuojamu sārošap",
+       "tog-minordefault": "Kāp prėgol pažīmietė pakeitėmus mažās",
+       "tog-previewontop": "Ruodītė parvaiza vėrš taisīmu lauka",
+       "tog-previewonfirst": "Ruodītė straipsnė parvėiza pėrmo keitėmo",
+       "tog-enotifwatchlistpages": "Siōstė mon gromata, kumet pakeitams poslapis, katron keravuojo",
        "tog-enotifusertalkpages": "Siōstė mon gromata, kūmet pakaitams mona nauduotuojė aptarėma poslapis",
-       "tog-enotifminoredits": "Siōstė mon gromata, kūmet poslapė keitėms īr mažos",
+       "tog-enotifminoredits": "Siōstė mon gromata, kumet poslapė keitėms īr mažos",
        "tog-enotifrevealaddr": "Ruodītė mona el. pašta adresa primėnėma gromatuos",
        "tog-shownumberswatching": "Ruodītė keravuojantiu nauduotuoju skatliu",
-       "tog-oldsig": "Esams parašos:",
+       "tog-oldsig": "Dabartėnis parašos:",
        "tog-fancysig": "Parašos kāp wiki tekstos (ba autuomatėniu nūruodu)",
-       "tog-uselivepreview": "Nauduotė tėisiogėne parvėiza (JavaScript) (Eksperimentėnis)",
+       "tog-uselivepreview": "Nauduotė vielība parveiza",
        "tog-forceeditsummary": "Klaustė, kumet palėiku toščē pakeitėma kuomentara",
-       "tog-watchlisthideown": "Kavuotė mona pakeitėmos keravuojamu sarašė",
-       "tog-watchlisthidebots": "Kavuotė robotu pakeitėmos keravuojamu sārašė",
-       "tog-watchlisthideminor": "Kavuotė mažos pakeitėmos keravuojamu sarašė",
-       "tog-watchlisthideliu": "Kavuotė prisėjongosium nauduotuojum keitėmus keravuojamu sārošė",
-       "tog-watchlisthideanons": "Kavuotė anonimėniu nauduotuoju keitėmus keravuojamu sarašė",
-       "tog-watchlisthidepatrolled": "Kavuotė parveizietos pakeitėmos keravuojamu sārašė",
-       "tog-ccmeonemails": "Siōstė mon gromatu kopėjės, katros siontiu kėtėims nauduotojams",
+       "tog-watchlisthideown": "Kavuotė mona pakeitėmus keravuojamu sārošė",
+       "tog-watchlisthidebots": "Kavuotė robotu pakeitėmos keravuojamu sārošė",
+       "tog-watchlisthideminor": "Kavuotė mažus pakeitėmus keravuojamu sārošė",
+       "tog-watchlisthideliu": "Kavuotė prėsėjongosiu nauduotuoju keitėmus keravuojamu sārošė",
+       "tog-watchlisthideanons": "Kavuotė anonimėniu nauduotuoju keitėmus keravuojamu sārošė",
+       "tog-watchlisthidepatrolled": "Kavuotė sodabuotus pakeitėmus keravuojamu sārošė",
+       "tog-ccmeonemails": "Siōstė monėi gromatu kuopėjės, katros siontio kėtėims nauduotuojams",
        "tog-diffonly": "Neruodītė poslapė torėnė puo skėrtomās",
        "tog-showhiddencats": "Ruodītė pakavuotas kateguorėjės",
        "tog-norollbackdiff": "Nekrēptė diemesė i skėrtoma atlėkus atmetėma",
-       "underline-always": "Visumet",
-       "underline-never": "Nikumet",
-       "underline-default": "Palē naršīklės nostatīmos",
+       "tog-useeditwarning": "Monėi dout žėnuot, kāp ėšēno ėš poslapė anon naėšsauguojis",
+       "underline-always": "Vėsūmet",
+       "underline-never": "Nikūmet",
+       "underline-default": "Vagol naršīklės nustatīmus",
        "editfont-style": "Redagavėma longa teksta stėlios:",
-       "editfont-default": "Palē naršīklės nostatīmos",
-       "sunday": "sekma dėina",
-       "monday": "pėrmadėinis",
-       "tuesday": "ontradėinis",
-       "wednesday": "trečiadėinis",
-       "thursday": "ketvėrtadėinis",
-       "friday": "pėnktadėinis",
-       "saturday": "subata",
-       "sun": "Sekm",
-       "mon": "Pėrm",
-       "tue": "Ontr",
-       "wed": "Treč",
+       "editfont-default": "Vagol naršīklės nustatīmus",
+       "sunday": "nedielės dėina",
+       "monday": "panedielis",
+       "tuesday": "oterninks",
+       "wednesday": "sereda",
+       "thursday": "ketvergs",
+       "friday": "pernīčė",
+       "saturday": "sobata",
+       "sun": "Ned",
+       "mon": "Pan",
+       "tue": "Oter",
+       "wed": "Sered",
        "thu": "Ketv",
-       "fri": "Pėnk",
-       "sat": "Sub",
+       "fri": "Pern",
+       "sat": "Sob",
        "january": "sausė",
        "february": "vasarė",
        "march": "kuova",
        "december-date": "Groudė $1",
        "pagecategories": "{{PLURAL:$1|Kateguorėjė|Kateguorėjės|Kateguorėju}}",
        "category_header": "Kateguorėjės „$1“ straipsnē",
-       "subcategories": "Subkateguorėjės",
+       "subcategories": "Pukateguorėjės",
        "category-media-header": "Abruozdielis kateguorėjuo „$1“",
-       "category-empty": "''Šėta kateguorėjė nūnā netor nė vėina straipsnė a faila.''",
-       "hidden-categories": "{{PLURAL:$1|Pakavuota kateguorėjė|Pakavuotas kateguorėjės}}",
+       "category-empty": "<em>Ton kateguorėjuo nūnā naprėgol anėjuokis poslapis aba abruozdielis.</em>",
+       "hidden-categories": "{{PLURAL:$1|Pakavuota kateguorėjė|Pakavuotas kateguorėjės|Pakavuotu kateguorėju}}",
        "hidden-category-category": "Pakavuotas kateguorėjės",
-       "category-subcat-count": "{{PLURAL:$2|Tuo kateguorėjuo īr vėina subkateguorėjė.|{{PLURAL:$1|Ruodoma|Ruodomas|Ruodoma}} $1 {{PLURAL:$1|subkateguorėjė|subkateguorėjės|subkateguorėju}} (ėš vėsa īr $2 {{PLURAL:$2|subkateguorėjė|subkateguorėjės|subkateguorėju}}).}}",
+       "category-subcat-count": "{{PLURAL:$2|Tuo kateguorėjuo ī vėina pukateguorėjė.|{{PLURAL:$1|Ruodoma|Ruodomas|Ruodomu}} $1 {{PLURAL:$1|pukateguorėjė|pukateguorėjės|pukateguorėju}} (ėš vėsa īr $2 {{PLURAL:$2|pukateguorėjė|pukateguorėjės|pukateguorėju}}).}}",
        "category-subcat-count-limited": "Tuo kateguorėjuo īr {{PLURAL:$1|subkateguorėjė|subkateguorėjės|subkateguorėju}}.",
-       "category-article-count": "{{PLURAL:$2|Tuo kateguorėjuo īr vėins poslapis.|{{PLURAL:$1|Ruodoms|Ruodomė|Ruodoma}} $1 tuos kateguorėjės {{PLURAL:$1|poslapis|poslapē|poslapiu}} (ėš vėsa kateguorėjuo īr $2 {{PLURAL:$2|poslapis|poslapē|poslapiu}}).}}",
+       "category-article-count": "{{PLURAL:$2|Tuo kateguorėjuo īr vėins poslapis.|{{PLURAL:$1|Ruodoms|Ruodomė|Ruodomu}} $1 tuos kateguorėjės {{PLURAL:$1|poslapis|poslapē|poslapiu}} (ėš vėsa kateguorėjuo īr $2 {{PLURAL:$2|poslapis|poslapē|poslapiu}}).}}",
        "category-article-count-limited": "{{PLURAL:$1|Ruodoms|Ruodomė|Ruodom}} $1 tuos kateguorėjės {{PLURAL:$1|poslapis|poslapē|poslapiu}}.",
        "category-file-count": "{{PLURAL:$2|Tuo kateguorėjuo īr vėins poslapis.|{{PLURAL:$1|Ruodoms|Ruodomė|Ruodoma}} $1 tuos kateguorėjės {{PLURAL:$1|fails|failā|failu}} (ėš vėsa kateguorėjuo īr $2 {{PLURAL:$2|poslapis|poslapē|poslapiu}}).}}",
        "category-file-count-limited": "{{PLURAL:$1|Ruodoms|Ruodomė|Ruodom}} $1 tuos kateguorėjės {{PLURAL:$1|fails|failā|failu}}.",
        "listingcontinuesabbrev": "tes.",
        "index-category": "Indeksoutė poslapē",
        "noindex-category": "Neindeksoutė poslapē",
-       "broken-file-category": "Poslapē, katrėi tor neteisingas nūruodas i failus",
+       "broken-file-category": "Poslapē, katrėi tor bluogas nūruodas abruozdieliūsp",
        "about": "Aple",
        "article": "Straipsnis",
        "newwindow": "(īr atverams naujam longė)",
-       "cancel": "Nutrauktė",
+       "cancel": "Pabengtė",
        "moredotdotdot": "Daugiau...",
-       "morenotlisted": "Tas sārošos užbengts nie.",
+       "morenotlisted": "Tas sārošos ožbengts nie.",
        "mypage": "Poslapis",
        "mytalk": "Aptarėms",
-       "anontalk": "Šėta IP aptarėms",
+       "anontalk": "Ton IP adresa aptarėms",
        "navigation": "Naršīms",
        "and": "&#32;ėr",
        "qbfind": "Ėiškuotė",
        "faq": "DOK",
        "faqpage": "Project:DOK",
        "actions": "Vēksmā",
-       "namespaces": "Vardū srėtīs",
-       "variants": "Variantā",
+       "namespaces": "Vardū srėtis",
+       "variants": "Atmainā",
        "navigation-heading": "Naršīma pasėrinkėmā",
        "errorpagetitle": "Klaida",
        "returnto": "Grīžtė i $1.",
        "searcharticle": "Ēk",
        "history": "Poslapė istuorėjė",
        "history_short": "Istuorėjė",
-       "updatedmarker": "atnaujėnta nu paskotėnė mona apsėlonkīma",
-       "printableversion": "Versėjė spausdintė",
-       "permalink": "Nulatėnė nūruoda",
-       "print": "Spausdėntė",
+       "updatedmarker": "pakeist nug tada, kāp lonkiaus paskotėni sīki",
+       "printableversion": "Atmains spausdėnėmō",
+       "permalink": "Nūlatėnė nūruoda",
+       "print": "Spausdintė",
        "view": "Veizietė",
-       "view-foreign": "Perveiziet $1",
+       "view-foreign": "Parveiziet $1",
        "edit": "Taisītė",
        "edit-local": "Taisītė vėitėni aprašīma",
-       "create": "Sokortė",
-       "create-local": "Prikergtė vėitėni aprašīma",
+       "create": "Padėrbtė",
+       "create-local": "Prėkergtė vėitėni aprašīma",
        "editthispage": "Taisītė ton poslapė",
-       "create-this-page": "Sokortė ta poslapi",
+       "create-this-page": "Dėrbtė ton poslapi",
        "delete": "Trintė",
        "deletethispage": "Trintė ton poslapė",
-       "undeletethispage": "Atkortė ta poslapi",
-       "undelete_short": "Atstatītė $1 {{PLURAL:$1:redagavėma|redagavėmus|redagavėmu}}",
+       "undeletethispage": "Ton poslapi padėrbtė apent",
+       "undelete_short": "Dėrbtė apent $1 {{PLURAL:$1:pakeitėma|pakeitėmus|pakeitėmu}}",
        "viewdeleted_short": "Veizietė $1 {{PLURAL:$1|ėštrinta keitėma|ėštrintus keitėmus|ėštrintū keitėmu}}",
-       "protect": "Ožrakintė",
+       "protect": "Apsergietė",
        "protect_change": "pakeistė",
-       "protectthispage": "Ožrakintė šėta poslapi",
-       "unprotect": "Keistė apsauga",
-       "unprotectthispage": "Keistė tuo poslapė apsauga",
+       "protectthispage": "Apsergietė ton poslapi",
+       "unprotect": "Keistė apsarga",
+       "unprotectthispage": "Keistė ton poslapė apsarga",
        "newpage": "Naus poslapis",
-       "talkpage": "Aptartė šėta poslapi",
+       "talkpage": "Aptartė ton poslapi",
        "talkpagelinktext": "Aptarėms",
-       "specialpage": "Specēlosis poslapis",
-       "personaltools": "Persuonalėnē rakondā",
+       "specialpage": "Specēlos poslapis",
+       "personaltools": "Asabėnē rakondā",
        "articlepage": "Veizietė straipsnė",
        "talk": "Aptarėms",
-       "views": "Parveizė",
+       "views": "Parveizė̄jėmā",
        "toolbox": "Rakondā",
-       "userpage": "Ruodītė nauduotoja poslapi",
+       "userpage": "Ruodītė nauduotuojė poslapi",
        "projectpage": "Ruodītė pruojekta poslapi",
        "imagepage": "Veizietė abruozdielė poslapi",
        "mediawikipage": "Ruodītė pranešėma poslapi",
        "templatepage": "Ruodītė šabluona poslapi",
-       "viewhelppage": "Ruodītė pagelbuos poslapi",
+       "viewhelppage": "Ruodītė pagelbas poslapi",
        "categorypage": "Ruodītė kateguorėjės poslapi",
        "viewtalkpage": "Ruodītė aptarėma poslapi",
        "otherlanguages": "Kėtuom kalbuom",
-       "redirectedfrom": "(Nokreipta ėš $1)",
-       "redirectpagesub": "Nokreipėma poslapis",
-       "redirectto": "Nukreipėms ont:",
-       "lastmodifiedat": "Šėts poslapis paskotini karta pakeists $1 $2.",
-       "viewcount": "Tas poslapis bova atverts $1 {{PLURAL:$1|čiesa|čiesus|čiesu}}.",
-       "protectedpage": "Ožrakints poslapis",
+       "redirectedfrom": "(Nusokta ėš $1)",
+       "redirectpagesub": "Nusokėma poslapis",
+       "redirectto": "Nusokėms ont:",
+       "lastmodifiedat": "Tas poslapis paskotini sīki parkeists $1 $2.",
+       "viewcount": "Tas poslapis bova atverts $1 {{PLURAL:$1|sīkis|sīkius|sīkiu}}.",
+       "protectedpage": "Apsergiets poslapis",
        "jumpto": "Paršuoktė i:",
-       "jumptonavigation": "navėgacėjė",
+       "jumptonavigation": "naršīms",
        "jumptosearch": "paėiška",
-       "view-pool-error": "Atsėprašuom, bat serverē daba īr perkrautė.\nNuognē pardaug nauduotoju skait ton poslapi.\nPrašuom palaukat ė mieginkat i ton poslapi patekt vieliau.\n\n$1",
+       "view-pool-error": "Atsėprašuom, bat serverē daba īr parkrautė.\nNuognē pardaug nauduotoju skait ton poslapi.\nPrašuom palaukat ė mieginkat i ton poslapi patekt apent.\n\n$1",
        "pool-errorunknown": "Nežėnuoma klaida",
        "aboutsite": "Aple {{SITENAME}}",
        "aboutpage": "Project:Aple",
-       "copyright": "Turinīs pateikts so $1 licencėjė.",
-       "copyrightpage": "{{ns:project}}:Autuoriu teisės",
-       "currentevents": "** Vielībė̅jė ivīkē **",
-       "currentevents-url": "Project:VielÄ«bÄ\97Ì\85\97 ivÄ«kÄ\93",
+       "copyright": "Turinīs pateikts so $1 lėcencėjė.",
+       "copyrightpage": "{{ns:project}}:Dėrbieju teisės",
+       "currentevents": "Vielībė̄jė notėkėmā",
+       "currentevents-url": "Project:VielÄ«bÄ\97Ì\84\97 notÄ\97\97\81",
        "disclaimers": "Atsakuomībės aprėbuojims",
        "disclaimerpage": "Project:Atsakuomībės aprėbuojims",
-       "edithelp": "Kāp redagoutė",
+       "edithelp": "Kāp dėrbtė",
+       "helppage-top-gethelp": "Pagelba",
        "mainpage": "Pėrms poslapis",
        "mainpage-description": "Pėrms poslapis",
        "policy-url": "Project:Puolitėka",
        "privacypage": "Project:Privatoma puolitėka",
        "badaccess": "Privėlėju klaida",
        "badaccess-group0": "Tomstā nelēdama ivīkdītė veiksma, katruo prašiet.",
+       "versionrequired": "Rēk $1 MediaWiki atmaina",
        "ok": "Gerā",
        "retrievedfrom": "Gautė ėš „$1“",
-       "youhavenewmessages": "Tamsta toret $1 ($2).",
-       "youhavenewmessagesfromusers": "{{PLURAL:$4|Tamsta turėt}} $1 nū {{PLURAL:$3|kėta nauduotojė|$3 nauduotoju}} ($2).",
-       "youhavenewmessagesmanyusers": "Tamsta turėt $1 nū daug nauduotoju ($2).",
-       "newmessageslinkplural": "{{PLURAL:$1|naus pranešėms|999=naujė pranešėmā}}",
-       "newmessagesdifflinkplural": "paskiausis {{PLURAL:$1|pakeitėms|999=pakeitėmā}}",
-       "youhavenewmessagesmulti": "Toret naujū žėnotiu $1",
+       "youhavenewmessages": "{{PLURAL:$3|Tamstā parė̄jė}} $1 ($2).",
+       "youhavenewmessagesfromusers": "{{PLURAL:$4|Tamstā parė̄jė}} $1 nug {{PLURAL:$3|kėta nauduotojė|$3 nauduotoju}} ($2).",
+       "youhavenewmessagesmanyusers": "Tamstā parė̄jė $1 nug gausoma nauduotoju ($2).",
+       "newmessageslinkplural": "{{PLURAL:$1|naujė žėnie|999=naujės žėnės}}",
+       "newmessagesdifflinkplural": "{{PLURAL:$1|vielībs pakeitėms|999=vielībė pakeitėmā}}",
+       "youhavenewmessagesmulti": "Tamstā parė̄jė naujės žėnės tėnklapi $1",
        "editsection": "taisītė",
        "editold": "taisītė",
        "viewsourceold": "veizietė šaltėni",
-       "editlink": "keistė",
+       "editlink": "taisītė",
        "viewsourcelink": "veizietė kuoda",
        "editsectionhint": "Redagoutė skirsneli: $1",
        "toc": "Torėnīs",
        "showtoc": "ruodītė",
        "hidetoc": "kavuotė",
-       "collapsible-collapse": "Sugōžtė",
+       "collapsible-collapse": "Sogōžtė",
        "collapsible-expand": "Atsklēstė",
        "confirmable-confirm": "A tikslē tēp mīslėjat?",
        "confirmable-yes": "Tēp",
        "confirmable-no": "Ne",
-       "thisisdeleted": "Veizėtė a atkortė $1?",
-       "viewdeleted": "Ruodītė $1?",
-       "restorelink": "$1 {{PLURAL:$1|ėštrinta keitėma|ėštrintos keitėmos|ėštrintū keitėmu}}",
+       "thisisdeleted": "Veizietė aba dėrbtė apent $1?",
+       "viewdeleted": "Veizietė $1?",
+       "restorelink": "$1 {{PLURAL:$1|ėštrinta keitėma|ėštrintus keitėmus|ėštrintū keitėmu}}",
        "feedlinks": "Šaltėnis:",
        "site-rss-feed": "$1 RSS šaltėnis",
        "site-atom-feed": "$1 Atom šaltėnis",
        "nstab-user": "Nauduotuojė poslapis",
        "nstab-media": "Abruozdielė poslapis",
        "nstab-special": "Specēlos poslapis",
-       "nstab-project": "Proujekta poslapis",
-       "nstab-image": "Fails",
+       "nstab-project": "Aple tėnklapi",
+       "nstab-image": "Abruozdielis",
        "nstab-mediawiki": "Teksts",
        "nstab-template": "Šabluons",
        "nstab-help": "Pagelbuos poslapis",
        "nstab-category": "Kateguorėjė",
-       "nosuchaction": "Nier tuokė veiksma",
+       "nosuchaction": "Nier tuokė vēksma",
        "nosuchspecialpage": "Nier tuokė specēlėjė poslapė",
        "nospecialpagetext": "Tamsta prašiet nelaistėna specēlė̄jė poslapė, laistėnū specēliūju poslapiu sōraša rasėt [[Special:SpecialPages|specēliūju poslapiu sārošė]].",
        "error": "Klaida",
        "enterlockreason": "Iveskėt ožrakėnėma prižasti, tēpuogi kumet daugmaž bus atrokėnta",
        "readonlytext": "Doumenū bazė daba īr ožrakėnta naujėm irašam a kėtėm keitėmam,\nmažo doumenū bazės techninē pruofilaktėkā,\npuo tuo vėsks griš i sava viežes.\nOžrakėnusiuojo admėnėstratuoriaus pateikts rakėnima paaiškėnims: $1",
        "missing-article": "Doumenū bazė nerada poslapė teksta, katra ana torietu rastė, pavadėnta „$1“ $2.\n\nPaprastā tas būn dielē pasenosės skėrtoma vuo istuorėjės nūruodas i poslapi, katros bova ėštrėnts.\n\nJēgo tas nie šėts varėjants, Tamsta mažo raduot klaida pruogramėnė ironguo.\nPrašuom aple šėtā paskelbtė [[Special:ListUsers/sysop|adminėstratoriō]], nepamėršdamė nuruodītė nūruoda.",
-       "missingarticle-rev": "(versėjė#: $1)",
+       "missingarticle-rev": "(atmains nr. $1)",
        "missingarticle-diff": "(Skėrt.: $1, $2)",
        "readonly_lag": "Doumenū bazė bova autuomatėškā ožrakėnta, kuol pagelbinės doumenū bazės pasvīs pagrėndine",
        "internalerror": "Vėdėnė klaida",
        "internalerror_info": "Vėdėnė klaida: $1",
-       "filecopyerror": "Nepavīkst kopėjoutė faila ėš „$1“ i „$2“.",
-       "filerenameerror": "Nepavīkst parvardėntė faila ėš „$1“ i „$2“.",
+       "filecopyerror": "Naėšēn parkeltė abruozdielė nug „$1“ i „$2“.",
+       "filerenameerror": "Naėšēn parvadintė abruozdielė ėš „$1“ i „$2“.",
+       "filedeleteerror": "Naėšēn ėštrintė abruozdielė „$1“.",
        "filenotfound": "Nepavīkst rastė faila „$1“.",
        "unexpected": "Natėkieta raikšmie: „$1“=„$2“.",
        "cannotdelete": "Nepavīka ėštrintė nuruodīta poslapė a faila \"$1\". (Mažo kažkas padarė pėrmesnis šėta)",
        "badtitletext": "Nuruodīts poslapė pavadėnėms bova neleistėns, toščės a neteisėngā sojongts terpkalbinis a terppruojektėnis pavadėnėms. Anamė gal būtė vėins a daugiau sėmbuoliu, neleistėnū pavadėnėmūs",
        "perfcachedts": "Ruodoma ėšsauguota doumenū kopėjė, katra bova atnaujėnta $1. Daugiausē $4 {{PLURAL:$4|rezoltats|rezoltatā|rezoltatu}} īr sauguoma.",
        "querypage-no-updates": "Atnaujėnėmā tam poslapiō nūnā ėšjongtė īr. Doumenīs nūnā čė nebus atnaujėntė.",
-       "viewsource": "Veizėtė kuoda",
+       "viewsource": "Veizietė",
+       "viewsource-title": "Veizietė poslapė $1 teksta",
        "protectedpagetext": "Šėts poslapis īr ožrakints, saugont anū nū taisīma.",
-       "viewsourcetext": "Tomsta galėt veizietė ėr kopėjoutė poslapė kuoda:",
+       "viewsourcetext": "Tamsta galat veizietė ė parsėkeltė poslapė teksta.",
        "protectedinterface": "Šėtom poslapi īr pruogramėnės īronguos sasajuos teksts katros īr apsauguots, kū neprietelē anū nasogadėntu.",
        "editinginterface": "<strong>Diemesė:</strong> Tamsta keitat poslapi, katros īr nauduojams programėnės irongas sōsajės tekstė. Pakeitėmā tamė poslapū tēpuogi pakeis nauduotuojė sōsajės ėšruoda ė kėtėims nauduotujams. Jēgo nuorėt pargoldītė, siūluom pasėnauduotė [//translatewiki.net „translatewiki.net“], „MediaWiki“ lokalėzacėjės pruojėktu.",
        "namespaceprotected": "Tamsta netorėt teisiu keistė poslapiu '''$1''' srėtī.",
-       "ns-specialprotected": "Specēlė̅ jė poslapē negal būtė keitamė.",
+       "ns-specialprotected": "Specēlė̄jė poslapē nagal būtė keitamė.",
+       "titleprotected": "Nauduotuos [[User:$1|$1]] ožgīnė padėrbtė straipsni tuokio pavadėnėmo.\nDingstės īr „<em>$2</em>“.",
        "exception-nologin": "Nesat prėsėjongis",
-       "logouttext": "'''Daba Tamsta esat atsėjongės.'''\n\nGalat ė tuoliau nauduotė {{SITENAME}} anuonimėškā aba <span class='plainlinks'>[$1 prisėjonkat]</span> ėš naujė šėtuo patiu a kėto nauduotuojė vardu.\nPastebiejims: katruos nekatruos poslapiuos ė tuoliau gal ruodītė būktā būtomiet prisėjongės lėgė tuol, kumet ėšvalīsėt sava naršīklės dietovė (''cache'').",
+       "exception-nologin-text": "Ka galietomiet ton padėrbtė, Tamstā būtėnā rēk prėsėjongtė.",
+       "exception-nologin-text-manual": "Ka galietomiet ton padėrbtė, Tamstā būtėnā rēk $1.",
+       "logouttext": "'''Daba Tamsta esat atsėjongis.'''\n\nGalat ė tuoliau nauduotė {{SITENAME}} anuonėmėškā aba <span class='plainlinks'>[$1 prėsėjonkat]</span> ėš naujė tuo patio aba kėto nauduotuojė vardo.\nAtėduos: katrūs nakatrūs poslapiūs ė tuoliau gal ruodītė būktā būtomiet prėsėjongis lėgė tuol, kumet ėšvalīsat sava naršīklės dietovė (''cache'').",
        "welcomeuser": "Svēks, $1!",
-       "welcomecreation-msg": "Tamstas paskīra jau padėrbta.\nNūnā galat pakeitė sava {{SITENAME}} [[Special:Preferences|nustatīmos]], jēgo tėktās nuorat.",
+       "welcomecreation-msg": "Tamstas paskīra jau padėrbta.\nNūnā galat pakeistė sava {{SITENAME}} [[Special:Preferences|nustatīmus]], jēgo tėktās nuorat.",
        "yourname": "Nauduotuojė vards:",
        "userlogin-yourname": "Nauduotuojė vards:",
        "userlogin-yourname-ph": "Ožrašīkėt sava nauduotojė varda",
        "createacct-another-username-ph": "Ožrašīkėt nauduotojė varda",
        "yourpassword": "Slaptažuodis:",
        "userlogin-yourpassword": "Slaptažuodis",
-       "userlogin-yourpassword-ph": "Ožrašīkėt sava slaptažuodi",
-       "createacct-yourpassword-ph": "Ožrašīkėt slaptažuodi",
+       "userlogin-yourpassword-ph": "Ožrašīkat sava slaptažuodi",
+       "createacct-yourpassword-ph": "Ožrašīkat slaptažuodi",
        "yourpasswordagain": "Pakartuoket slaptažuodė:",
        "createacct-yourpasswordagain": "Čīstā tuokis slaptažuodis?",
-       "createacct-yourpasswordagain-ph": "Viel ožrašīkėt slaptažuodi",
+       "createacct-yourpasswordagain-ph": "Apent ožrašīkat slaptažuodi",
        "remembermypassword": "Atmintė prisėjongėma infuormacėjė šėtom kuompioteri (daugiausē $1 {{PLURAL:$1|dėina|dėinė|dėinas}})",
        "userlogin-remembermypassword": "Ka liktō prisėjongis",
        "userlogin-signwithsecure": "Apsauguots rīšīs",
        "yourdomainname": "Tamstas domens:",
        "password-change-forbidden": "Negalat tuo wiki keistė slaptažuodiu.",
-       "login": "Prisėjongtė",
-       "nav-login-createaccount": "Prėsėjongtė / sokortė paskīra",
-       "userlogin": "Prėsėjongtė / sokortė paskīra",
-       "userloginnocreate": "Prisėjongtė",
+       "login": "Prėsėjongtė",
+       "nav-login-createaccount": "Prėsėjongtė / padėrbtė paskīra",
+       "userlogin": "Prėsėjongtė / padėrbtė paskīra",
+       "userloginnocreate": "Prėsėjongtė",
        "logout": "Atsėjongtė",
        "userlogout": "Atsėjongtė",
-       "notloggedin": "Neprisėjongis",
-       "userlogin-noaccount": "Netorėt paskīruos?",
-       "userlogin-joinproject": "Jonkėtėis pri {{SITENAME}}",
-       "nologin": "Netorėt prisėjongėma varda? '''$1'''.",
+       "notloggedin": "Neprėsėjongis",
+       "userlogin-noaccount": "Netorat paskīruos?",
+       "userlogin-joinproject": "Jonkėtėis prī {{SITENAME}}",
+       "nologin": "Netorat prėsėjongėma varda? '''$1'''.",
        "nologinlink": "Sokorkėt paskīra",
-       "createaccount": "Sokortė paskīra",
+       "createaccount": "Pasėdėrbtė paskīra",
        "gotaccount": "Jau torėt paskīra? '''$1'''.",
-       "gotaccountlink": "Prisėjonkėt",
-       "userlogin-resetlink": "Ožmiršat sava prisėjongėma doumenis?",
-       "userlogin-resetpassword-link": "Pamiršuot slaptažuodi?",
-       "userlogin-helplink2": "Prisėjongėma pagelba",
+       "gotaccountlink": "Prėsėjonkat",
+       "userlogin-resetlink": "Ožmiršat sava prėsėjongėma doumenis?",
+       "userlogin-resetpassword-link": "Ožmiršat sava slaptažuodi?",
+       "userlogin-helplink2": "Prėsėjongėma pagelba",
        "userlogin-createanother": "Padėrbtė kėta paskīra",
        "createacct-emailrequired": "El. pašta adresos",
        "createacct-emailoptional": "El. paštos (nie būtėns)",
-       "createacct-email-ph": "Ožrašīkėt sava el. pašta adresa",
+       "createacct-email-ph": "Ožrašīkat sava el. pašta adresa",
        "createacct-another-email-ph": "Ožrašīkėt el. pašta adresa",
        "createaccountmail": "Nauduokėt laikėna slaptažuodi ė siōskėt nuruodėtō el. paštō",
        "createacct-realname": "Tėkros vardos (nie būtėns)",
-       "createaccountreason": "Prīžastis:",
-       "createacct-reason": "Prīžastis",
-       "createacct-captcha": "Apsauguos patėkrėnėms",
+       "createaccountreason": "Dingstės:",
+       "createacct-reason": "Dingstės",
+       "createacct-captcha": "Sargtėis patikrėnėms",
        "createacct-imgcaptcha-ph": "Ožrašīkėt ženklus, katrus veizėt viršō",
-       "createacct-submit": "Padėrbkėt sau paskīra",
+       "createacct-submit": "Padėrbkat savėi paskīra",
        "createacct-another-submit": "Padėrbtė kėta paskīra",
        "createacct-benefit-heading": "{{SITENAME}} īr sokorta prietėliu, tuokiu, kāp Tamsta.",
        "createacct-benefit-body1": "{{PLURAL:$1|pataisīms|pataisīmā|pataisīmu}}",
        "createacct-benefit-body2": "{{PLURAL:$1|poslapis|poslapē|poslapiu}}",
        "createacct-benefit-body3": "{{PLURAL:$1|vielībs nauduotuos|vielībė nauduotuojē|vielībū nauduotuoju}}",
-       "badretype": "Ivestė slaptažuodē nesotamp.",
+       "badretype": "Ivestė slaptažuodē nasotink.",
        "userexists": "Irašīts nauduotuojė vards jau īr nauduojams.\nPrašuom pasėrėnktė kėtuoki varda.",
        "loginerror": "Prisėjongėma klaida",
-       "createaccounterror": "Neėšiejė sokortė paskīruos: $1",
-       "nocookiesnew": "Nauduotuojė paskīra bova sokurta, ale Tamsta nēsot prisėjongis. {{SITENAME}} nauduo pakavukus, kū prijongtu nauduotuojus. Tamsta esot ėšjongis anūs. Prašuom ijongtė pakavukus, tumet prisėjonkėt so sava nauju nauduotuojė vardu ė slaptažuodiu.",
-       "nocookieslogin": "{{SITENAME}} nauduo pakavukus (''cookies''), kū prijongtu nauduotuojus. Tamsta esat ėšjongės anūs. Prašuom ijongtė pakavukus ė pamiegītė viel.",
-       "loginsuccesstitle": "Siekmingā prisėjongiet.",
-       "loginsuccess": "'''Nūnā Tamsta esot prisėjongės pri {{SITENAME}} kāp „$1“.'''",
-       "nosuchuser": "Nier anėjuokė nauduotuojė pavadėnta „$1“.\nPatikrėnkėt rašība, aba [[Special:UserLogin/signup|sokorkėt naujė paskīra]].",
-       "nosuchusershort": "Nier juokė nauduotuojė, pavadėnta „$1“. Patėkrinkėt rašība.",
+       "createaccounterror": "Nė̄šiejė padėrbtė paskīruos: $1",
+       "nocookiesnew": "Nauduotuojė paskīra bova sokurta, bat Tamsta nēsot prėsėjongis. {{SITENAME}} nauduo pakavukus (''cookies''), ka prėkergtom nauduotuojus. Tamsta esot ėšjongis anūs. Prašuom ijongtė pakavukus, tumet prisėjonkat so sava naujo nauduotuojė vardo ė slaptažuodio.",
+       "nocookieslogin": "{{SITENAME}} nauduo pakavukus (''cookies''), ka prėkergtom nauduotuojus. Tamsta esat ėšjongis anūs. Prašuom ijongtė pakavukus ė pamiegītė apent.",
+       "loginsuccesstitle": "Gerā prėsėjongiet",
+       "loginsuccess": "'''Dabā Tamsta esat prėsėjongis prī {{SITENAME}} kāp „$1“.'''",
+       "nosuchuser": "Nier anėjuokė nauduotuojė pavadėnta „$1“.\nPatikrinkat rašība, aba [[Special:UserLogin/signup|padėrbkat naujė paskīra]].",
+       "nosuchusershort": "Nier juokė nauduotuojė, pavadėnta „$1“. Patėkrinkat rašība.",
        "nouserspecified": "Tamstā rēk nuruodītė nauduotuojė varda.",
-       "login-userblocked": "Nauduotuos ožblokouts. Prisėjongt nie galėma.",
-       "wrongpassword": "Ivests neteisings slaptažuodis. Pameginket dā karta.",
-       "wrongpasswordempty": "Ivests slaptažuodis īr tošts. Pameginket vielėk.",
-       "passwordtooshort": "Tamstas slaptažuodis nier laistėns aba par tromps īr. Ans tor būtė nuors {{PLURAL:$1|1 sėmbuolė|$1 sėmbuoliu}} ėlgoma.",
+       "login-userblocked": "Nauduotuos ožgints īr. Pakliūtė nie galama.",
+       "wrongpassword": "Bluogs slaptažuodis. Pamiegīkat apent.",
+       "wrongpasswordempty": "Slaptažuodis dīks īr. Pamiegīkat apent.",
+       "passwordtooshort": "Tamstas slaptažuodis nier tinkoms aba par tromps īr. Ons tor būtė nuors {{PLURAL:$1|1 sėmbuolė|$1 sėmbuoliu}} ėlgoma.",
+       "passwordtoolong": "Slaptažuodis negal būtė ėlgesnis kāp {{PLURAL:$1|1 znuoks|$1 znuokā|$1 znuoku}}.",
        "password-name-match": "Tamstas slaptažuodis tor skirtėis nu Tamstas nauduotuojė varda.",
        "password-login-forbidden": "Tuo nauduotuojė varda ė slaptažuodė nauduojėms nie galėms.",
-       "mailmypassword": "Atkortė slaptažuodi",
+       "mailmypassword": "Atgamintė slaptažuodi",
        "passwordremindertitle": "Laikėns {{SITENAME}} slaptažuodis",
        "passwordremindertext": "Kažkastā (tėkriausē Tamsta, ėš IP adresa $1)\npaprašė, kū atsiōstomiet naujė slaptažuodi pruojektō {{SITENAME}} ($4).\nLaikėns slaptažuodis nauduotuojō „$2“ bova sokorts ėr nustatīts kāp „$3“.\nJēgo Tamsta nuoriejot ana pakeistė tūmet torietomiet prisėjongtė ė daba pakeistė sava slaptažuodi.\nTamstas laikėns slaptažuodis bengs galiuotė par {{PLURAL:$5|dėina|$5 dėinas}}.\n\nJēgo kažkas kėts atlėka ta prašīma aba Tamsta prisėmėniet sava slaptažuodi ė\nnebnuorėt ana pakeistė, Tamsta galėt tėisiuog nekreiptė diemiesė ė šėta gruomata ė tuoliau\nnauduotis sava senu slaptažuodžiu.",
        "noemail": "Nier anėjuokė el. pašta adresa ivesta nauduotuojō „$1“.",
        "passwordsent": "Naus slaptažuodis bova nusiōsts i el. pašta adresa,\nožregėstrouta nauduotuojė „$1“.\nPrašuom prisėjongtė vielē, kumet Tamsta gausėt anū.",
        "blocked-mailpassword": "Tamstas IP adresos īr ožblokouts nū redagavėma, tudie neleidama nauduotė slaptažuodė priminėma funkcėjės, kū apsėsauguotomė nū pėktnaudžēvėma.",
        "eauthentsent": "Patvėrtėnėma gruomata bova nusiōsta i paskėrta el. pašta adresa.\nPrīš ėšsiontiant kėta gruomata i Tamstas diežote, Tamsta torėt vīkdītė nuruodīmus gruomatuo, kū patvėrtėntomiet, kū diežotė tėkrā īr Tamstas.",
-       "throttled-mailpassword": "Slaptažuodžė priminims jau bova ėšsiōsts, par paskotėnes {{PLURAL:$1|adīna|$1 adīnas}}. Nuorint apsėsauguotė nū pėktnaudžēvėma, slaptažuodė priminims gal būt ėšsiōsts tėk kas {{PLURAL:$1|adīna|$1 adīnas}}.",
-       "mailerror": "Klaida siontiant pašta: $1",
+       "throttled-mailpassword": "Slaptažuodžė priminims jau bova ėšsiōsts, par paskotėnės {{PLURAL:$1|adīna|$1 adīnas}}. Nuorint apsėsauguotė nū pėktnaudēvėma, slaptažuodė priminėms gal būt ėšsiōsts tėk kas {{PLURAL:$1|adīna|$1 adīnas}}.",
+       "mailerror": "Bieda siontiont gromata: $1",
        "acct_creation_throttle_hit": "Ton pruojekta lankītuojē, katrėi nauduo Tamstas IP adresa, padėrba {{PLURAL:$1|$1 paskīra|$1 paskīras|$1 paskīrū}} par paskotėnta dėina, a tas īr dėdliausis leidams skaitlios par ta čiesa.\nTudie šėton čieso lankītuojē, katrėi nauduo ta IP adresa, daugiau paskīrū dėrbt negal.",
        "emailauthenticated": "Tamstas el. pašta adresos bova ožtvirtėnts $2 d. $3.",
        "emailnotauthenticated": "Tamstas el. pašta adresos da nier patvėrtėnts. Anėjuokės gruomatas\nnebus siontamas ni vėinam žemiau ėšvardėntam puoslaugiō.",
        "noemailprefs": "Nuruodėkīt el. pašta adresa, kū vėiktu šėtos funkcėjės.",
        "emailconfirmlink": "Patvėrtinkėt sava el. pašta adresa",
-       "accountcreated": "Nauduotuos sokorts",
+       "accountcreated": "Nauduotuos padėrbts īr",
        "accountcreatedtext": "Paskīra nauduotojō [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|aptarėms]]) bova padėrbta.",
        "createaccount-title": "{{SITENAME}} paskīruos kūrėms",
+       "createaccount-text": "Kažkastā svetainie {{SITENAME}} ($4) padėrba nauduotojė poslapi, katros vadėnas \"$2\" ė katruo slaptažuodis ī \"$3\", so Tamstas el. pašta adreso.\nDaba galat prėsėjongtė ė pasėkeistė slaptažuodi.\n\nJēgo tat ī kuokistā soklīdėms, tumet Jumis nieka darītė nerēk.",
+       "login-throttled": "Tamsta nuognē daug sīkiu miegėnat prėsėjongtė.\nPalaukat $1 prīš miegėnont apent.",
        "loginlanguagelabel": "Kalba: $1",
-       "pt-login": "Prisėjongtė",
-       "pt-login-button": "Prisėjongtė",
-       "pt-createaccount": "Pasdėrbtė paskīra",
+       "pt-login": "Prėsėjongtė",
+       "pt-login-button": "Prėsėjongtė",
+       "pt-createaccount": "Pasėdėrbtė paskīra",
        "pt-userlogout": "Atsėjongtė",
        "changepassword": "Pakeistė slaptažuodė",
-       "resetpass_announce": "Ka ožbengtomėt jongtėis, torėt sokortė nauja slaptažuodi.",
+       "resetpass_announce": "Ka ožbengtomiet jongtėis, torėt sokortė naujė slaptažuodi.",
        "resetpass_header": "Keistė paskīruos slaptažuodi",
        "oldpassword": "Sens slaptažuodis:",
        "newpassword": "Naus slaptažuodis:",
-       "retypenew": "Pakartuokėt nauja slaptažuodi:",
+       "retypenew": "Apent ožrašīkat naujė slaptažuodi:",
        "resetpass_submit": "Nostatītė slaptažuodi ė prėsėjongtė",
        "changepassword-success": "Tamstas slaptažuodis pakeists siekmėngā!",
        "changepassword-throttled": "Baisē daug čiesu mieginot prisėjongtė.\nDaba palaukėt $1 prīš mieginant vie.",
        "resetpass-submit-loggedin": "Keistė slaptažuodi",
-       "resetpass-submit-cancel": "Nutrauktė",
+       "resetpass-submit-cancel": "Pabengtė",
        "resetpass-temp-password": "Laikėns slaptažuodis:",
+       "passwordreset": "Apent padėrbtė slaptažuodi",
        "passwordreset-username": "Nauduotuojė vards:",
        "passwordreset-domain": "Domens:",
        "passwordreset-email": "El. pašta adresos:",
        "changeemail": "Keistė el. pašta adresa",
+       "changeemail-oldemail": "Vielībs el. pašta adresosː",
+       "changeemail-newemail": "Naus el. pašta adresosː",
        "changeemail-none": "(nie)",
        "changeemail-password": "Tamstas {{SITENAME}} slaptažuodis:",
        "changeemail-submit": "Keistė el. pašta",
-       "bold_sample": "Pastuorints teksts",
-       "bold_tip": "Pastuorintė teksta",
-       "italic_sample": "Teksts kursīvu",
-       "italic_tip": "Teksts kursīvu",
-       "link_sample": "Nūruodas pavadinėms",
-       "link_tip": "Vėdinė nūruoda",
+       "changeemail-throttled": "Tamsta nuognē daug sīkiu miegėnat prėsėjongtė.\nPalaukat $1 prīš miegėnont apent.",
+       "bold_sample": "Pastuorints raštos",
+       "bold_tip": "Pastuorints raštos",
+       "italic_sample": "Pasviris raštos",
+       "italic_tip": "Pasviris raštos",
+       "link_sample": "Nūruodas pavadėnėms",
+       "link_tip": "Vėduojė nūruoda",
        "extlink_sample": "http://www.example.com nūruodas pavadėnėms",
-       "extlink_tip": "Ėšuorėnė nūruoda (nepamėrškėt http:// priraša)",
-       "headline_sample": "SkÄ«rė pavadėnėms",
-       "headline_tip": "Ontra lÄ«gÄ\97 skÄ«rė pavadėnėms",
-       "nowiki_sample": "Iterpkėt nefuormouta teksta čė",
-       "nowiki_tip": "Ėgnoroutė wiki fuormata",
+       "extlink_tip": "Laukėnė nūruoda (neožmėrškat http:// prīraša)",
+       "headline_sample": "SkÄ\97rsnė pavadėnėms",
+       "headline_tip": "Ontra lÄ«gÄ\97 skÄ\97rsnė pavadėnėms",
+       "nowiki_sample": "Diekat čiuonās teksta, katruo nerēk formatoutė",
+       "nowiki_tip": "Neprėveizietė wiki teksta skvarma",
        "image_sample": "Pavīzdīs.jpg",
-       "image_tip": "Idietė abruozdieli",
+       "image_tip": "dietė abruozdieli",
        "media_sample": "Pavīzdīs.ogg",
-       "media_tip": "Nūruoda i media faila",
-       "sig_tip": "Tomstas parašos ėr čiesos",
-       "hr_tip": "Guorizuontali linėjė (nenauduokėt ba reikala)",
+       "media_tip": "Nūruoda abruozdielin",
+       "sig_tip": "Tamstas parašos ė čiesos",
+       "hr_tip": "Golos briežis (nenauduokat ba rēkala)",
        "summary": "Pāiškėnėms:",
        "subject": "Tema/ontraštė:",
-       "minoredit": "Mažos pataisims",
-       "watchthis": "Keravuotė šėta poslapė",
+       "minoredit": "Mažos pakeitėms",
+       "watchthis": "Keravuotė ton poslapė",
        "savearticle": "Ėšsauguotė poslapė",
        "preview": "Parveiza",
        "showpreview": "Ruodītė parveiza",
        "showdiff": "Ruodītė skėrtomus",
-       "anoneditwarning": "'''Diemesė:''' Tomsta nesat prisėjungės. Jūsa IP adresos būs irašīts i šiuo poslapė istuorėjė.",
+       "blankarticle": "<strong>Atėdės:</strong> Tamsta dėrbat dīka poslapi.\nJēgo apent mīgsat \"{{int:savearticle}}\", ta ons poslapis vės vėin bos padėrbts.",
+       "anoneditwarning": "<strong>Atidėsǃ</strong> Tamsta nāsot prėsėjongis. Tamstas IP adresos bos vėišā regėms, jēgo padėrbsat kuoki pakeitėma. Vuo jēgo <strong>[$1 prėsėjongsat]</strong> aba <strong>[$2 pasėdėrbsat nauduotuojė skīriu]</strong>, tumet Tamstas pakeitėmā prėgols prī Tamstas nauduotojė varda.",
+       "anonpreviewwarning": "<em>Tamsta nāsat prėsėjongis. Kāp ėšsauguosat poslapi, tāp regiesės Tamstas IP adresos</em>",
        "missingsummary": "'''Priminėms:''' Tamsta nenuruodiet pakeitėma kuomentara. Jēgo viel paspausėt ''Ėšsauguotė'', Tamstas pakeitėms bus ėšsauguots ba anuo.",
-       "missingcommenttext": "Prašuom ivestė kuomentara.",
-       "summary-preview": "Kuomentara parvaiza:",
+       "selfredirect": "<strong>Atėdės:</strong> Tamsta dėrbat poslapė nosokėma savėsp.\nParašīkat tėkslē, kor ons poslapis tor soktė.\nJēgo apent mīgsat \"{{int:savearticle}}\", ta ons poslapis vės vėin bos padėrbts.",
+       "missingcommenttext": "Duokat pāiškėnėma apatiuo.",
+       "summary-preview": "Pāiškėnėma parvaiza:",
        "subject-preview": "Skėrsnelė/ontraštės parvaiza:",
-       "blockedtitle": "Nauduotuos īr ožblokouts",
-       "blockedtext": "'''Tamstas nauduotuojė vards a IP adresos īr ožblokouts.'''\n\nOžbluokava $1.\nNuruodīta prižastis īr ''$2''.\n\n* Bluokavėma pradžia: $8\n* Bluokavėma pabenga: $6\n* Numatīts bluokoujamasės: $7\n\nTamsta galėt sosėsėiktė so $1 a kėtu\n[[{{MediaWiki:Grouppage-sysop}}|adminėstratuoriom]], kū aptartė ožbluokavėma.\nTamsta negalėt nauduotės funkcėjė „Rašītė laiška tam nauduotuojō“, jēgo nesot pateikis tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nesot ožblokouts nu anuos nauduojėma.\nTamstas dabartėnis IP adresos īr $3, a bluokavėma ID īr #$5. Prašuom nuruodītė šėtā, kumet kreipiatės diel atbluokavėma.",
-       "autoblockedtext": "Tamstas IP adresos bova autuomatėškā ožblokouts, kadongi ana nauduojė kėts nauduotuos, katra ožbluokava $1.\nNuruodīta prīžastis īr tuokė:\n\n:''$2''\n\n* Bluokavėma pradžė: $8\n* Bluokavėma pabenga: $6\n* Numatuoms bluokavėma čiesos: $7\n\nTamsta galėt sosėsėiktė so $1 aba kėtu [[{{MediaWiki:Grouppage-sysop}}|adminėstratuoriom]], kū aprokoutomėt biedas diel bluokavėma.\n\nTamsta negalėt nauduotės fonkcėjė „Rašītė gruomata tam nauduotuojō“, jēgo nesot nuruode tėkra el. pašta adresa sava [[Special:Preferences|nauduotuojė nustatīmūs]]. Tēpuogi Tamsta negalat nauduotės ta fonkcėjė, jēgo Tamstā ožblokouts anuos nauduojėms.\n\nTamstas IP adresos īr $3, bluokavėma ID īr $5.\nPrašuom nuruodītė šėtūs doumenis visūmet, kumet kreipiatės diel bluokavėma.",
-       "blockednoreason": "prīžastis nier nuruodīta",
-       "whitelistedittext": "Tamsta torėt $1, kū keistomėt poslapius.",
-       "nosuchsectiontitle": "Nier tuokė skīrė",
-       "loginreqlink": "prisėjongtė",
+       "blockedtitle": "Nauduotuos īr ožgints",
+       "blockedtext": "'''Tamstas nauduotuojė vards aba IP adresos ožgints īr.'''\n\nOžgīnė nauduotuos $1.\nDingstės ''$2''.\n\n* Ožgīnėms prasėdė̄jė: $8\n* Ožgīnėms pasėbengs: $6\n* Kas tor būtė ožgints: $7\n\nTamsta galat parašītė $1 aba kėtėim\n[[{{MediaWiki:Grouppage-sysop}}|admėnėstratuorėm]], jēgo mīslėjat, ka Tamstā ožgīnė ba grieka.\nTamsta negalat „rašītė gromata ton nauduotuojō“, jēgo nasat davis tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nasat ožgints nu anuos nauduojėma.\nTamstas dabartėnis IP adresos īr $3, vuo ožgīnėma ID īr #$5. Prašuom nuruodītė ton, kumet prašīsėt atgėnoms.",
+       "autoblockedtext": "Tamstas IP adresos bova liuosā ožgints, tudie, ka ana nauduojė kėts nauduotuos, katra ožgīnė $1.\nDouta dingstės īr tuokė:\n\n:''$2''\n\n* Ožgīnėms prasėdė̄jė: $8\n* Ožgīnėms pasėbengs: $6\n* Kas tor būtė ožgints: $7\n\nTamsta galėt sosėsėiktė so $1 aba kėtu [[{{MediaWiki:Grouppage-sysop}}|adminėstratuoriom]], kū aprokoutomėt biedas diel bluokavėma.\n\nTamsta galat parašītė $1 aba kėtėim\n[[{{MediaWiki:Grouppage-sysop}}|admėnėstratuorėm]], jēgo mīslėjat, ka Tamstā ožgīnė ba grieka.\nTamsta negalat „rašītė gromata ton nauduotuojō“, jēgo nasat davis tėkra sava el. pašta adresa sava [[Special:Preferences|paskīruos nustatīmūs]] ė nasat ožgints nu anuos nauduojėma.\nTamstas dabartėnis IP adresos īr $3, vuo ožgīnėma ID īr #$5. Prašuom nuruodītė ton, kumet prašīsėt atgėnoms.",
+       "blockednoreason": "dingstėis nie douta",
+       "whitelistedittext": "Tamstā rēk $1, ka dėrbtomiet poslapius.",
+       "nosuchsectiontitle": "Nier tuokė skėrsnė",
+       "loginreqtitle": "Rēk prėsėjongtė",
+       "loginreqlink": "prėsėjongtė",
+       "loginreqpagetext": "Rēk $1, paveiziejėmō kėtū poslapiu.",
        "accmailtitle": "Slaptažuodis ėšsiūsts īr.",
-       "accmailtext": "Nauduotuojė '$1' slaptažuodis nusiūsts i $2 īr.",
+       "accmailtext": "Bikāp padėrbts slaptažuodis, katros prėgol prī [[User talk:$1|$1]] bova siōsts pošto $2. Kāp prėsėjongsat, galat <em>[[Special:ChangePassword|anon parkeistė]]</em>.",
        "newarticle": "(Naus)",
-       "newarticletext": "Tamsta pakliovuot i nūnā neesoti poslapi.\nNuoriedamė sokortė poslapi, pradiekėt rašītė žemiau esontiamė ivedima pluotė\n(platiau [$1 pagelbas poslapī]).\nJēgo pakliovuot čė netīčiuom, paprastiausē paspauskėt naršīklės mīgtoka '''atgal'''.",
+       "newarticletext": "Tamsta pakliovat poslapin, katros dā nie padėrbts.\nJēgo nuorat anon padėrbtė, rašīkat laukė, katros ī apatiuo\n(veiziekat [$1 pagelbas poslapi]).\nJēgo pakliovat čė netīčiuom, paprastiausē paspauskat naršīklės mīgtoka '''atgal'''.",
        "anontalkpagetext": "----''Tas īr anonimėnė nauduotuojė, katros nier sosėkūrės aba nenauduo paskīruos, aptarėmu poslapis.\nDielē tuo nauduojams IP adresos anuo atpažėnėmō.\nTas IP adresos gal būtė dalinams keletō nauduotuoju.\nJēgo Tamsta esat anonimėnis nauduotuos ėr veizėt, kū kuomentarā nier skėrtė Tamstā, [[Special:UserLogin/signup|sokorkėt paskīra]] aba [[Special:UserLogin|prisėjonkėt]], ė nebūsėt maišuoms so kėtās anonimėnēs nauduotuojās.''",
-       "noarticletext": "Tuo čiesu tamė poslapī nier juokė teksta.\nTamsta galėt [[Special:Search/{{PAGENAME}}|ėiškuotė šėta poslapė pavadėnėma]] kėtūs poslapiūs,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė sosėjosiu regėstru],\naba [{{fullurl:{{FULLPAGENAME}}|action=edit}} keistė ta poslapi]</span>.",
-       "noarticletext-nopermission": "Tuo čiesu tamė poslapī nier juokė teksta.\nTamsta galėt [[Special:Search/{{PAGENAME}}|ėiškuotė šėta poslapė pavadėnėma]] kėtūs poslapiūs,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė sosėjosiu regėstru]</span>.",
+       "noarticletext": "Nūnā tamė poslapī nie nė juokė teksta.\nTamsta galat [[Special:Search/{{PAGENAME}}|ėiškuotė ton poslapė pavadėnėma]] terp kėtū poslapiū,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė prėgolontiu īrašu],\naba [{{fullurl:{{FULLPAGENAME}}|action=edit}} keistė ton poslapi]</span>.",
+       "noarticletext-nopermission": "Nūnā tamė poslapī nier anėjuokė teksta.\nTamsta galėt [[Special:Search/{{PAGENAME}}|ėiškuotė šėta poslapė pavadėnėma]] kėtūs poslapiūs,\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė prėgolontiu regėstru]</span>.",
        "userpage-userdoesnotexist": "Nauduotuojė paskīra „<nowiki>$1</nowiki>“ nier ožregėstrouta. Prašuom patikrėntė, a Tamsta nuorėt kortė/keistė ta poslapi.",
+       "userpage-userdoesnotexist-view": "Nie nauduotuojė vardo „$1“",
+       "blocked-notice-logextract": "Nauduotuos ožgints īr.\nApatiuo paruodīta kas ė kāpː",
        "clearyourcache": "'''Diemesė:''' ėšsauguojus Tamstā gal prireiktė ėšvalītė Tamstas naršīklės rėnktovė, kū paveizėtomėt pakeitėmus. '''Mozilla / Safari / Konqueror:''' laikīdami ''Shift'' pasėrinkėt ''Atsiōstė ėš nauja'', a paspauskėt ''Ctrl-Shift-R'' (sėstemuo Apple Mac ''Cmd-Shift-R''); '''IE:''' laikīdamė ''Ctrl'' paspauskėt ''Atnaujėntė'', o paspauskėt ''Ctrl-F5''; '''Konqueror:''' paprastiausē paspauskėt ''Perkrautė'' mīgtoka, o paspauskėt ''F5''; '''Opera''' nauduotuojam gal prireiktė pėlnā ėšvalītė anū rėnktovė ''Rakondā→Nustatīmā''.",
        "usercssyoucanpreview": "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS priš ėšsaugont.",
        "userjsyoucanpreview": "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji JS priš ėšsaugont.",
        "userjspreview": "'''Nepamirškėt, kū Tamsta tėk testoujat/parvaizėt sava nauduotoja ''JavaScript'', ans da nabova ėšsauguots!'''",
        "userinvalidcssjstitle": "'''Diemesė:''' Nė juokės ėšruodos „$1“. Napamirškėt, kū sava .css ėr .js poslapē nauduo pavadėnėma mažuosiomės raidiemis, pvz., Nauduotuos:Foo/vector.css, o ne Nauduotuos:Foo/Vector.css.",
        "updated": "(Atnaujėnta)",
-       "note": "'''Pastebiejims:'''",
+       "note": "'''Žėniuo:'''",
        "previewnote": "'''Nepamėrškėt, kū tas tėktās pervaiza, pakeitėmā da nier ėšsauguotė!'''",
        "continue-editing": "Dėrbtė tuoliau",
        "previewconflict": "Šėta parvaiza paruod teksta ėš vėršotinėjė teksta redagavėma lauka tēp, kāp ans bus ruodoms, jei pasirinksėt anū ėšsauguotė.",
        "session_fail_preview_html": "'''Atsėprašuom! Mes nagalėm apdoroutė Tamstas keitėma diel sesėjės doumenū praradėma.'''\n''Kadaogi šėtom pruojekte grīnasės HTML īr ijongts, parveiza īr pasliepta kāp atsargoma prėimonė priš JavaScript atakas.''\n'''Jei tā teisiets keitėma bandīms, prašuom pamiegint viel. Jei šėtā napaded, pamieginkėt atsėjongtė ėr prėsėjongtė atgal.'''",
        "editing": "Taisuoms straipsnis - $1",
        "creating": "Dėrbama $1",
-       "editingsection": "Taisuoms $1 (skėrsnelis)",
-       "editingcomment": "Taisuoms $1 (naus skīrius)",
-       "editconflict": "Ėšpreskėt kuonflėkta: $1",
-       "explainconflict": "Kažėn kas kėts jau pakeitė poslapi nū tuo čiesa, kumet Tamsta pradiejuot ana redagoutė.\nVėršotėniamė tekstėniamė laukė pateikta šėtu čiesu esontė poslapė versėjė.\nTamstas pakeitėmā pateiktė žemiau esontiamė laukė.\nTamstā rēk sojongtė Tamstas pakeitėmus so esontė versėjė.\nKumet paspausėte „{{int:savearticle}}“, bus irašīts '''tėktās''' teksts vėršotėniam tekstėniam laukė.",
-       "yourtext": "Tamstas teksts",
-       "storedversion": "Ėšsauguota versėjė",
-       "editingold": "'''ISPIEJIMS: Tamsta keitat ne naujausė poslapė versėjė.\nJēgo ėšsauguosėt sava pakeitėmus, paskum darītė pakeitėmā prapols.'''",
+       "editingsection": "Keitams $1 (skėrsnelis)",
+       "editingcomment": "Keitams $1 (naus skėrsnis)",
+       "editconflict": "Do keitėmo nesotink: $1",
+       "explainconflict": "Kažėn kas kėts jau pakeitė poslapi nug ton čiesa, kāp Tamsta pradiejuot anon keistė.\nVėršō īr patė vielībuojė straipsnė ėšruoda.\nTamstas pakeitėmā pateiktė apatiuo.\nTamstā rēk sokergtė Tamstas pakeitėmus so tās, katrėi vėršō.\nKumet paspausat „{{int:savearticle}}“, bos ožrašīts '''tėktās''' tas raštos, katros īr ėšgoldīts vėršō.",
+       "yourtext": "Tamstas raštos",
+       "storedversion": "Ėšsauguots atmains",
+       "editingold": "'''Atėdės: Tamsta keitat ne vielībiausi poslapė atmaina.\nJēgo ėšsauguosat sava pakeitėmus, īkondin darītė pakeitėmā prapols.'''",
        "yourdiff": "Skėrtomā",
-       "copyrightwarning": "Primenam, kū vėsks, kas patenk i {{SITENAME}}, īr laikuoma pavėišėnto palē $2 (platiau - $1). Jēgo nenuorit, kū Tamstas duovis būtou ba pasėgailiejėma keitams ė platėnams, nerašīkėt čė.<br />\nTamsta tēpuogi pasėžadat, kū tas īr Tamstas patėis rašīts torėnīs a kuopėjouts ėš vėišū a panašiū valnū šaltėniu.\n'''NEKOPĖJOUKĖT AUTUORĖNIEM TEISIEM APSAUGUOTU DARBŪ BA LEIDĖMA!'''",
-       "copyrightwarning2": "Primenam, kū vėsks, kas patenk i {{SITENAME}} gal būtė keitama, perdaruoma, a pašalėnama kėtū nauduotuoju. Jēgo nenuorėt, kū Tamstas duovis būtu ba pasėgailiejėma keitams, čiuonās nerašīkėt.<br />\nTēpuogi Tamsta pasėžadat, kū tas īr Tamstas rašīts teksts aba kuopėjouts\nėš vėišū liousū šaltėniu (detaliau - $1).\n'''NEKUOPĖJOUKAT AUTUORĖNIEM TEISIEM APSAUGUOTU DARBŪ BA LEIDĖMA!'''",
+       "copyrightwarning": "Žėnuokat, ka vėsks, kas patenk i {{SITENAME}}, īr laikuoma pavėišėnto vagol $2 (platiau - $1). Jēgo nenuorat, ka Tamstas duovis būtom ba gailesė keitams ė skleidams, nerašīkat čė.<br />\nTamsta tēpuogi pasėžadat, ka tas īr Tamstas patėis rašīts torėnīs aba parrašīts nug vėišū aba panašiū liousū vėitu.\n'''NEDIEKAT AUTUORĖNIEM TEISIEM APSERGIETU DARBŪ BA LEIDĖMA!'''",
+       "copyrightwarning2": "Žėnuokat, ka vėsks, kas patenk i {{SITENAME}}, gal būtė keitama ė trėnama. Jēgo nenuorat, ka Tamstas duovis būtom ba gailesė keitams ė skleidams, nerašīkat čė.<br />\nTamsta tēpuogi pasėžadat, ka tas īr Tamstas patėis rašīts torėnīs aba parrašīts nug vėišū aba panašiū liousū vėitu.\n'''NEDIEKAT AUTUORĖNIEM TEISIEM APSERGIETU DARBŪ BA LEIDĖMA!'''",
        "readonlywarning": "'''DIEMESĖ: Doumenū bazė bova ožrakėnta teknėnē pruofilaktėkā,\ntudie negaliesėt ėšsauguotė sava pakeitėmu daba. Tamsta galėt nosėkopėjoutė teksta i tekstėni faila\nė paskum ikeltė ana čė.'''",
        "protectedpagewarning": "'''DIEMESĖ: Šėts poslapis īr ožrakints ėr anū redagoutė gal tėk admėnėstratuorė teises torėntīs prietelē.'''",
        "semiprotectedpagewarning": "'''Pastebiejėms:''' Šėts poslapis bova ožrakėnts ėr anuo gal redagoutė tėk regėstroutė nauduotojā.",
        "titleprotectedwarning": "'''DIEMESĖ: Tas poslapis bova ožrakėnts tēp, ka tėktās kāpkatrė nauduotuojē galietu ana sokortė.'''",
-       "templatesused": "{{PLURAL:$1|Šabluons|Šabluonā}}, katrėi īr nauduojamė poslapī:",
+       "templatesused": "{{PLURAL:$1|Šabluons, katros|Šabluonā, katrėi}}, īr nauduojamė tamė poslapi:",
        "templatesusedpreview": "{{PLURAL:$1|Šabluons|Šabluonā}}, nauduotė šėtuo parvaizuo:",
        "templatesusedsection": "Šabluonā, nauduotė šėtom skėrsnelī:",
-       "template-protected": "(apsauguots)",
-       "template-semiprotected": "(posiau apsauguots)",
-       "hiddencategories": "Tas poslapis prėklausa $1 {{PLURAL:$1|pakavuotā kateguorėjē|pakavuotoms kateguorėjėms|pakavuotu kateguorėju}}:",
+       "template-protected": "(apsergiets)",
+       "template-semiprotected": "(posiau apsergiets)",
+       "hiddencategories": "Ons poslapis prėgol $1 {{PLURAL:$1|pakavuotā kateguorėjē|pakavuotoms kateguorėjėms|pakavuotu kateguorėju}}:",
        "nocreatetext": "{{SITENAME}} aprėbuojė galėmībe kortė naujus poslapius.\nTamsta galėt grīžtė ė redagoutė nūnā esonti poslapi, a [[Special:UserLogin|prėsėjongtė a sokortė paskīra]].",
        "permissionserrors": "Teisiu klaida",
        "permissionserrorstext": "Tamsta netorėt teisiu šėta darītė diel {{PLURAL:$1|tuos prīžastėis|tū prīžastiū}}:",
-       "permissionserrorstext-withaction": "Tamsta netorėt leidėma $2 dielē {{PLURAL:$1|tos prīžastėis|tū prīžastiu}}:",
+       "permissionserrorstext-withaction": "Tamsta natorėt leidėma $2 dielē {{PLURAL:$1|tuokės dingstėis|tuokiū dingstiū}}:",
        "recreate-moveddeleted-warn": "'''Parspiejėms: Tamsta ikeliat faila, katros onkstiau bova ėštrėnts.'''\n\nTamsta torietomiet nusprēstė, a īr naudėnga tuoliau ikeldinietė ta faila.\nTuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
-       "moveddeleted-notice": "Tas poslapis bova ėštrėnts.\nĖštrėnta poslapė versėju sārašos īr pateikts paveiziejėmō žemiau.",
-       "edit-conflict": "Redagavėma kuonflėktos",
+       "moveddeleted-notice": "Tas poslapis bova ėštrints.\nĖštrinta poslapė atmainū sārošos īr douts paveiziejėmō apatiuo.",
+       "log-fulllog": "Veizietė vėskon",
+       "edit-conflict": "Do keitėmo nesotink.",
        "postedit-confirmation-created": "Poslapis padėrbts.",
        "postedit-confirmation-restored": "Poslapis atkorts.",
        "postedit-confirmation-saved": "Tamstas padėrbts pakeitėms ėšsauguots īr.",
+       "edit-already-exists": "Nie galam padėrbtė poslapė. Ons jau īr.",
+       "defaultmessagetext": "Tekstos kāp prėklaus",
        "post-expand-template-inclusion-warning": "Perspiejėms: Šabluonu īterpėma dėdoms īr par dėdelis.\nKāp katrėi šabluonā nebus ītrauktė.",
        "post-expand-template-inclusion-category": "Poslapē, kur šabluonu īterpėma dėdoms viršėjams",
        "post-expand-template-argument-warning": "Perspiejėms: Tas poslapis tor nuors vėina šabluona argomenta, katros tor per dėdli ėšplietėma dėdoma.\nTė argomentā bova praleistė.",
        "post-expand-template-argument-category": "Poslapē, katrėi tor praleistū šabluona argomentu",
        "undo-success": "Keitėms gal būtė atšaukts. Prašuom patėkrėntė palīgėnėma, asonti žemiau, kū patvėrtėntomiet, kū Tamsta šėta ė nuorėt padarītė, ė tumet ėšsauguokit pakeitėmos, asontios žemiau, kū ožbėngtomiet keitėma atšaukėma.",
        "undo-failure": "Keitėms nagal būt atšaukts diel konflėktounantiu tarpėniu pakeitėmu.",
-       "undo-summary": "Atšauktė [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarėms]]) versėje $1",
+       "undo-summary": "Pargrōžėnams pakeitėms $1, padėrbts nauduotuojė [[Special:Contributions/$2|$2]] ([[User talk:$2|aptarėms]])",
+       "cantcreateaccounttitle": "Nie galam padėrbtė nauduotuojė",
        "cantcreateaccount-text": "Paskīrū kūrėma ėš šėta IP adresa ('''$1''') ožbluokava [[User:$3|$3]].\n\n$3 nuruodīta prīžastis īr ''$2''",
-       "viewpagelogs": "Ruodītė šėtuo poslapė specēliōsios vaiksmos",
+       "cantcreateaccount-range-text": "Nauduotuoju dėrbėms nug IP adresū '''$1''', terp katrū prėgol ė Tamstas IP adresos ('''$4'''), bova ožgints nauduotuojė [[User:$3|$3]].\n\n$3 ožrašė tuokė dingstiː ''$2''",
+       "viewpagelogs": "Ruodītė ton poslapė īpatingus notėkėmus",
        "nohistory": "Šėts poslapis netor keitėmu istuorėjės.",
-       "currentrev": "Dabartėnė versėjė",
-       "currentrev-asof": "Dabartėnė $1 versėjė",
-       "revisionasof": "$1 versėjė",
-       "revision-info": "$1 versėjė nauduotuojė $2",
-       "previousrevision": "←Onkstesnė versėjė",
-       "nextrevision": "Paskesnė versėjė→",
-       "currentrevisionlink": "Dabartėnė versėjė",
-       "cur": "dab",
+       "currentrev": "Vielībasā atmains",
+       "currentrev-asof": "Vielībasā $1 atmains",
+       "revisionasof": "$1 atmains",
+       "revision-info": "Pakeitėms nug $1 padėrbts {{GENDER:$6|$2}}$7",
+       "previousrevision": "←Onkstesnis atmains",
+       "nextrevision": "Paskesnis atmains →",
+       "currentrevisionlink": "Vielībasā atmains",
+       "cur": "viel.",
        "next": "kėts",
        "last": "pask",
        "page_first": "pėrm",
        "histlegend": "Skėrtomā terp versėju: pažīmiekit līginamas versėjės ė spauskėt ''Enter'' klavėša a mīgtuka apatiuo.<br />\nŽīmiejimā: (dab) = palīginims so vielibiausė versėjė,\n(pask) = palīginims so priš ta bovosia versėjė, S = mažos pataisims.",
        "history-fieldset-title": "Naršītė istuorėjuo",
        "history-show-deleted": "Tėktās ėštrintė",
-       "histfirst": "Seniausė",
+       "histfirst": "paskiausė",
        "histlast": "Vielibė̄jė",
        "historysize": "($1 {{PLURAL:$1|baits|baitā|baitu}})",
        "historyempty": "(nieka nier)",
        "history-feed-item-nocomment": "$1 $2",
        "history-feed-empty": "Prašuoms poslapis nēgzėstuo.\nAns galiejė būtė ėštrėnts ėš pruojekta, aba parvardėnts.\nPamiegīkėt [[Special:Search|ėiškoutė pruojektė]] sosėjosiu naujū poslapiu.",
        "rev-delundel": "ruodītė/kavuotė",
+       "rev-showdeleted": "ruodītė",
        "revisiondelete": "Trintė/atkortė versėjės",
        "revdelete-show-file-submit": "Tēp",
        "logdelete-selected": "{{PLURAL:$2|Pasėrinkts|Pasėrinktė|Pasėrinktė}} $1 istuorėjės {{PLURAL:$2|atėtėkims|atsėtėkimā|atsėtėkimā}}:",
        "revdelete-hide-comment": "Keitėma pāiškėnėms",
-       "revdelete-hide-user": "Keitiejė nauduotojė vardos/IP adresos",
+       "revdelete-hide-user": "Nauduotojė vardos/IP adresos",
        "revdelete-unsuppress": "Šalėntė apribuojėmos atkortuos versėjės",
        "revdel-restore": "Keistė veizėmuma",
-       "revdelete-edit-reasonlist": "Keistė trīnėma prīžastis",
+       "pagehist": "Poslapė istuorėjė",
+       "deletedhist": "Ėštrinta istuorėjė",
+       "revdelete-otherreason": "Kėta/papėlduoma dingstės:",
+       "revdelete-reasonotherlist": "Kėta dingstės",
+       "revdelete-edit-reasonlist": "Keistė trīnėma dingstis",
        "suppressionlog": "Trīnėma istuorėjė",
+       "mergehistory": "Sokergtė poslapė istuorėjės",
+       "mergehistory-from": "Kėlėma poslapisː",
+       "mergehistory-into": "Tiksla poslapisː",
        "mergehistory-success": "$3 [[:$1]] versėju siekmėngā sojongta so [[:$2]].",
        "revertmerge": "Atskėrtė",
        "history-title": "Poslapė „$1“ istuorėjė",
-       "difference-title": "$1: Skėrtoms terp redakcėju",
-       "difference-title-multipage": "$1 ė $2: Skėrtoms terp poslapiu",
+       "difference-title": "$1 – skėrtoms terp pakeitėmu.",
+       "difference-title-multipage": "Skėrtoms terp poslapiu „$1“ ė „$2“",
+       "difference-multipage": "(Skėtroms terp poslapiu)",
        "lineno": "Eilotė $1:",
-       "compareselectedversions": "Palīgintė pasėrinktas versėjės",
-       "editundo": "atšauktė",
-       "searchresults": "Paėiškuos rezoltatā",
-       "searchresults-title": "Paėiškuos rezoltatā \"$1\"",
+       "compareselectedversions": "Pamieruotė pasėrinktus atmainus",
+       "editundo": "atgrōžintė",
+       "diff-empty": "(Nie skėrtoma)",
+       "diff-multi-sameuser": "({{PLURAL:$1|Vėins tarpėnis pakeitėms|$1 tarpėnē pakeitėmā|$1 tarpėniu pakeitėmu}}, padėrbtū tuo patė nauduotuojė, nie ruoduoma)",
+       "searchresults": "Paėiškuos gavėnē",
+       "searchresults-title": "Paėiškuos gavėnē \"$1\"",
        "titlematches": "Straipsniu pavadėnėmu atitėkmenīs",
        "textmatches": "Poslapė torėnė atėtikmenīs",
        "notextmatches": "Juokiū poslapė teksta atitikmenū",
-       "prevn": "onkstesnius {{PLURAL:$1|$1}}",
-       "nextn": "paskesnius {{PLURAL:$1|$1}}",
+       "prevn": "pėrmesnius {{PLURAL:$1|$1}}",
+       "nextn": "paskuojus {{PLURAL:$1|$1}}",
+       "prev-page": "pėrmesnis poslapis",
+       "next-page": "paskesnis poslapis",
        "prevn-title": "{{PLURAL:$1|Onkstesnis $1 rezoltats|Onkstesnio $1 rezoltato|Onkstesni $1 rezoltatā}}",
-       "nextn-title": "{{PLURAL:$1|Kėts $1 rezoltats|Kėto $1 rezoltato|Kėti $1 rezoltatā}}",
-       "shown-title": "Ruodītė $1 {{PLURAL:$1|rezoltata|rezultato|rezoltatus}} poslapī",
+       "nextn-title": "{{PLURAL:$1|Kėts $1 gavėms|Kėtė $1 gavėmā|Kėtū $1 gavėmu}}",
+       "shown-title": "Ruodītė $1 {{PLURAL:$1|gavėni|gavėnius|gavėniū}} poslapī",
        "viewprevnext": "Veizėtė ($1 {{int:pipe-separator}} $2) ($3).",
        "searchmenu-exists": "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
-       "searchmenu-new": "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
+       "searchmenu-new": "<strong>Padėrbtė poslapi, katros vadėntos „[[:$1]]“</strong> {{PLURAL:$2|0=|Dā veiziekat paėiškuo rasta straipsni|Dā veiziekat paėiškuos gavėnius.}}",
        "searchprofile-articles": "Torėnė poslapē",
-       "searchprofile-images": "Daugēlīpės terpės failā",
-       "searchprofile-everything": "Vėsks",
+       "searchprofile-images": "Multimedėjė",
+       "searchprofile-everything": "Vėskos",
        "searchprofile-advanced": "Prapliesta",
        "searchprofile-articles-tooltip": "Ėiškuotė čiuonās: $1",
-       "searchprofile-images-tooltip": "Ėiškuotė failu",
-       "searchprofile-everything-tooltip": "Ėiškuotė vėsuo torėnė (tuom patėm ėr aptarėma poslapiu)",
-       "searchprofile-advanced-tooltip": "Ėiškoutė skėrtingūsė vardū sėtīsė",
+       "searchprofile-images-tooltip": "Ėiškuotė abruozdieliu",
+       "searchprofile-everything-tooltip": "Ėiškuotė vėsuo torėnė (tēpuogi ėr aptarėma poslapiūs)",
+       "searchprofile-advanced-tooltip": "Ėiškoutė skėrtingūs vardū sėtīs",
        "search-result-size": "$1 ({{PLURAL:$2|1 žuodis|$2 žuodē|$2 žuodiu}})",
        "search-result-category-size": "{{PLURAL:$1|1 narīs|$1 nariū}} ({{PLURAL:$2|1 subkateguorėjuo|$2 subkateguorėju}}, {{PLURAL:$3|1 fails|$3 failu}})",
-       "search-redirect": "(paradresavėms $1)",
-       "search-section": "(skÄ«rios $1)",
+       "search-redirect": "(nosokėms $1)",
+       "search-section": "(skÄ\97rsnis $1)",
        "search-category": "(kateguorėjė $1)",
        "search-file-match": "(atėtėnk abruozdielė torėni)",
-       "search-suggest": "Mažo nuoriejot $1",
+       "search-suggest": "Mažnē mīslėjėt ka $1",
+       "search-rewritten": "Ruod kas ī soėiškuota pavadėnėmo „$1“. Mažnē geriau ėiškuotė „$2“?",
        "search-interwiki-caption": "Dokterėnē pruojektā",
-       "search-interwiki-default": "$1 rezoltatā:",
+       "search-interwiki-default": "Soėiškuota nug $1ː",
        "search-interwiki-more": "(daugiau)",
        "search-relatedarticle": "Sosėjėn",
        "searchrelated": "sosėjėn",
        "searchall": "vėsė",
        "showingresults": "Žemiau ruodoma lėgė '''$1''' {{PLURAL:$1|rezoltata|rezoltatu|rezoltatu}} pradedont #'''$2'''.",
-       "search-nonefound": "Nier rezoltatu, katrėi atitėktu ožklausėma.",
+       "showingresultsinrange": "Apatiuo ruod lėgė {{PLURAL:$1|<strong>1</strong> gavėnė|<strong>$1</strong> gavėniū}} nug #<strong>$2</strong> lėgė #<strong>$3</strong>.",
+       "search-showingresults": "{{PLURAL:$4|Gavėms <strong>$1</strong> nug <strong>$3</strong>|Gavėmā <strong>$1 - $2</strong> nug <strong>$3</strong>}}",
+       "search-nonefound": "Nier gavėniū, katrėi prėgoltom ožklausėmō.",
        "powersearch-legend": "Prapliesta paėiška",
-       "powersearch-ns": "Ėiškoutė vardū srėtīsė:",
+       "powersearch-ns": "Ėiškoutė vardū srėtīs:",
        "powersearch-togglelabel": "Pažīmietė:",
        "powersearch-toggleall": "Vėskon",
        "powersearch-togglenone": "Nieka",
-       "search-external": "Ėšuorėnė paėiška",
+       "powersearch-remember": "Atmintė parinkėma būsontē paėiškā.",
+       "search-external": "Laukėnė paėiška",
+       "searchdisabled": "{{SITENAME}} paėiška nasėgaun.\nTasgaties, ėiškuotė miegīkat par Gūla.\nAtminkat, ka anū paėiška gal būtė nab'vielība.",
+       "search-error": "Soklīdėms notėka baėiškontː $1",
        "preferences": "Nustatīmā",
        "mypreferences": "Mona nustatīmā",
        "prefs-edits": "Keitėmu skaitlius:",
+       "prefsnologintext2": "Prėsėjonkat, ka pakeistomiet sava nustatīmus.",
        "prefs-skin": "Ėšruoda",
        "skin-preview": "Parveiza",
        "datedefault": "Juokė pasėrėnkėma",
+       "prefs-user-pages": "Nauduotuojė poslapē",
        "prefs-personal": "Nauduotuojė pruopilis",
        "prefs-rc": "Vielībė̅jė pakeitėmā",
        "prefs-watchlist": "Keravuojamu sārašos",
-       "prefs-watchlist-days": "Kėik dėinū ruodītė keravuojamu sārašė:",
-       "prefs-watchlist-days-max": "Maximum $1 {{PLURAL:$1|day|days}}",
+       "prefs-editwatchlist": "Keistė keravuojamu sāroša",
+       "prefs-editwatchlist-clear": "Ėštrintė keravuojamu sāroša",
+       "prefs-watchlist-days": "Kėik dėinū ruodītė keravuojamu sārošė:",
+       "prefs-watchlist-days-max": "(daugiausē $1 {{PLURAL:$1|dėina|dėinas|dėinū}})",
        "prefs-watchlist-edits": "Kėik pakeitėmu ruodītė ėšpliestiniam keravuojamu sārašė:",
-       "prefs-watchlist-edits-max": "(dėdliausias skaitlius: 1000)",
+       "prefs-watchlist-edits-max": "Dėdliausis skaitlios: 1000",
        "prefs-misc": "Ivairė nustatīmā",
        "prefs-resetpass": "Keistė slaptažuodi",
+       "prefs-changeemail": "Keistė el. pašta adresa",
+       "prefs-setemail": "El. pašta adresa parkeitėms",
+       "prefs-email": "El. pašta nustatīmā",
        "prefs-rendering": "Ėšruoda",
        "saveprefs": "Ėšsauguotė",
-       "restoreprefs": "Atstatītė vėsus numatītūsius nustatīmus",
+       "restoreprefs": "Grōžintė vėsus nustatīmus kāp bova pradiuo",
        "prefs-editing": "Redagavėms",
        "rows": "Eilotės:",
        "columns": "Štolpalē:",
-       "searchresultshead": "Paėiškuos nostatīmā",
+       "searchresultshead": "Paėiškuos nustatīmā",
        "stub-threshold": "Minimums <a href=\"#\" class=\"stub\">nabėngta poslapė</a> fuormatavėmō:",
-       "recentchangesdays": "Ruodomas dėinas vielībūju pakeitėmu sārašė:",
+       "stub-threshold-disabled": "Ėšjongta īr",
+       "recentchangesdays": "Ruodomas dėinas vielībūju pakeitėmu sārošė:",
        "recentchangesdays-max": "(daugiausē $1 {{PLURAL:$1|dėina|dėinū|dėinas}})",
-       "recentchangescount": "Numatītasā keitėmu skaitlius, ruodoms vielībūju keitėmu, poslapiu istuorėjėsė ė notėkėmu sarašūsė:",
+       "recentchangescount": "Ruoduoms keitėmu skaitliosː",
        "savedprefs": "Nostatīmā siekmėngā ėšsauguotė.",
-       "timezonelegend": "Čiesa zuona",
-       "localtime": "Vėitinis čiesos:",
-       "timezoneuseserverdefault": "Nauduotė palē nutīliejėma ėš serverė",
+       "timezonelegend": "Čiesa joustaː",
+       "localtime": "Vėitas čiesos:",
+       "timezoneuseserverdefault": "Tāp, kāp ruod serveris ($1)",
        "timezoneuseoffset": "Kėta (patikslėntė skėrtoma)",
        "servertime": "Serverė čiesos:",
        "guesstimezone": "Paimtė ėš naršīklės",
        "allowemail": "Lēstė siūstė el. gramuotelės ėš kėtū nauduotuoju",
        "prefs-searchoptions": "Ėiškuotė",
        "prefs-namespaces": "Vardū srėtīs",
-       "default": "palē nūtīliejėma",
-       "prefs-files": "Failā",
-       "youremail": "El. pašts:",
-       "username": "Nauduotuojė vards:",
-       "prefs-memberingroups": "{{PLURAL:$1|Gropės|Gropiu}} narīs:",
+       "default": "kāp prėgol",
+       "prefs-files": "Abruozdielē",
+       "prefs-custom-css": "Asabėšks CSS",
+       "prefs-custom-js": "Asabėšks JavaScript",
+       "prefs-emailconfirm-label": "Tėkrā tuokis el. paštos?",
+       "youremail": "El. paštos:",
+       "username": "{{GENDER:$1|Nauduotuojė vards}}:",
+       "prefs-memberingroups": "{{GENDER:$2|Nauduotuos}} prėgol {{PLURAL:$1|skīriō|skīriams|skīriu}}:",
        "prefs-registration": "Ožsėregėstravėma čiesos:",
        "yourrealname": "Tėkros vards:",
        "yourlanguage": "Aplėnkuos kalba:",
        "yournick": "Pasėrinkts slapīvardis:",
        "badsig": "Neteisings parašas; patėkrinkėt HTML žīmės.",
        "badsiglength": "Tamstas parašos īr par ėlgs.\nAna gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuoliu}}.",
-       "yourgender": "Lītis:",
+       "yourgender": "Lītės:",
        "gender-unknown": "Nier nuruodīta",
        "gender-male": "Vīrs",
        "gender-female": "Muoterėška",
-       "email": "El. pašts",
+       "email": "El. paštos:",
        "prefs-help-realname": "Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.",
-       "prefs-help-email": "El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.",
+       "prefs-help-email": "El. pašta adresos nier būtėns, bat ons leid Tamstā gautė naujė slaptažuodi, jēgo pamėršuot kuoks ons bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė aba nauduotuojė aptarėma poslapi tāp, ka anėi nežėnuotom Tamstas el. pašta adresa.",
        "prefs-help-email-required": "Rēk el. pašta adresa",
-       "prefs-info": "Glavnuojė infuormacėjė",
+       "prefs-info": "Pagrindėnės žėnės",
        "prefs-i18n": "Kalbuos nustatīmā",
        "prefs-signature": "Parašos",
        "prefs-dateformat": "Datuos skvarma",
        "prefs-timeoffset": "Čiesa skėrtoms",
        "prefs-advancedediting": "Bendrė parametrā",
+       "prefs-editor": "Dėrbies",
        "prefs-preview": "Parveiza",
        "prefs-advancedrc": "Papėlduomė nustatīmā",
        "prefs-advancedrendering": "Papėlduomė nustatīmā",
        "userrights-lookup-user": "Tvarkītė nauduotuojė gropės",
        "userrights-user-editname": "Iveskėt nauduotuojė varda:",
        "editusergroup": "Redagoutė nauduotuojė gropes",
-       "editinguser": "Taisuoms nauduotuos '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+       "editinguser": "Teisiu keitėms {{GENDER:$1|Nauduotuojō}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Keistė nauduotuoju gropes",
        "saveusergroups": "Sauguotė nauduotuoju gropes",
        "userrights-groupsmember": "Narīs:",
-       "userrights-reason": "Prīžastis:",
+       "userrights-reason": "Dingstės:",
        "group": "Gropė:",
        "group-user": "Nauduotuojē",
        "group-autoconfirmed": "Autuomatėškā patvirtėntė nauduotuojē",
        "right-edit": "Keistė poslapius",
        "right-upload": "Ikeltė failus",
        "right-delete": "Trintė poslapius",
-       "newuserlogpage": "Nauduotuojė kūrėma regėstros",
+       "newuserlogpage": "Nauduotuojė kūrėma sārošos",
        "rightslog": "Nauduotuoju teisiu istuorėjė",
        "rightslogtext": "Pateikiams nauduotuoju teisiu pakeitėmu sārašos.",
+       "action-read": "skaitītė ton poslapi",
        "action-edit": "redagoutė ta poslapi",
+       "action-createpage": "dėrbtė poslapius",
        "action-move": "parvadintė šėta poslapi",
        "action-move-subpages": "parvadintė šėta poslapi ėr anuo dalės",
        "action-move-categorypages": "parvadintė kateguorėjes",
        "action-userrights": "keistė vėsū nauduotuoju teises",
        "nchanges": "$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}",
        "enhancedrc-history": "istuorėjė",
-       "recentchanges": "VielÄ«bÄ\97Ì\85jė pakeitėmā",
-       "recentchanges-legend": "Vielībuju pakeitėmu pasėrinkėmā",
-       "recentchanges-summary": "Keravuokėt patius vielībiausius wiki pakeitėmus tamė poslapī.",
+       "recentchanges": "VielÄ«bÄ\97Ì\84jė pakeitėmā",
+       "recentchanges-legend": "Vielībūju pakeitėmu pasėrinkėmā",
+       "recentchanges-summary": "Keravuokat patius vielībuosius wiki pakeitėmus tamė poslapi.",
        "recentchanges-feed-description": "Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.",
-       "recentchanges-label-newpage": "Šėto keitėmo sukurts naus poslapis",
+       "recentchanges-label-newpage": "Šėtuo keitėmuo padėrbts naus poslapis",
        "recentchanges-label-minor": "Tas īr mažos pataisīms",
        "recentchanges-label-bot": "Šėta keitėma padėrba autuomatėnė pruograma",
-       "recentchanges-label-unpatrolled": "Tas keitėms da nebova patikrints",
-       "recentchanges-label-plusminus": "Ton baitu skaitliom pakeists straipsnė apmiers",
+       "recentchanges-label-unpatrolled": "Ons pakeitėms dā nabova oždabuots",
+       "recentchanges-label-plusminus": "Anuo baitu skaitliom pakeists straipsnė apmiers",
        "recentchanges-legend-heading": "'''Pāiškėnėmā:'''",
-       "rcnotefrom": "Žemiau īr pakeitėma pradedant nū <b>$2</b> (ruodom lėgė <b>$1</b> pakeitėmu).",
-       "rclistfrom": "Ruodītė naujus pakeitėmus pradedant nū $3 $2",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (dā veiziekat [[Special:NewPages|vielībūju straipsniu sāroša]])",
+       "rcnotefrom": "Apatiuo {{PLURAL:$5|ruodoms pakeitėms|ruodomė pakeitėmā}} nug <strong>$3, $4</strong> (ne daugiau kāp <strong>$1</strong> ruodoma īr).",
+       "rclistfrom": "Ruodītė vielībus pakeitėmus pradedont nug $3 $2",
        "rcshowhideminor": "$1 mažus pakeitėmus",
        "rcshowhideminor-show": "Ruodītė",
        "rcshowhideminor-hide": "Kavuotė",
        "rcshowhideliu": "$1 prėsėjongusiūm nauduotuojūm pakeitėmus",
        "rcshowhideliu-show": "Ruodītė",
        "rcshowhideliu-hide": "Kavuotė",
-       "rcshowhideanons": "$1 anuonimėnius nauduotuojus",
+       "rcshowhideanons": "$1 nažėnomus nauduotuojus",
        "rcshowhideanons-show": "Ruodītė",
        "rcshowhideanons-hide": "Kavuotė",
-       "rcshowhidepatr": "$1 patikrėntus pakeitėmus",
+       "rcshowhidepatr": "$1 sodabuotus pakeitėmus",
        "rcshowhidepatr-show": "Ruodītė",
        "rcshowhidepatr-hide": "Kavuotė",
        "rcshowhidemine": "$1 mona pakeitėmus",
        "rcshowhidemine-show": "Ruodītė",
        "rcshowhidemine-hide": "Kavuotė",
-       "rclinks": "Ruodītė paskotėnius $1 pakeitėmu par paskotėnė̅sēs $2 dėinū<br />$3",
+       "rclinks": "Ruodītė vielībus $1 pakeitėmu par paskuojės $2 dėinas<br />$3",
        "diff": "skėrt",
        "hist": "ist",
        "hide": "Kavuotė",
        "newpageletter": "N",
        "boteditletter": "r",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|keravuojontis nauduotuos|keravuojontīs nauduotuojē|keravuojontiu nauduotuoju}}]",
-       "rc_categories": "Ruodītė tėk šėtas kateguorėjės (atskirkit nauduodamė „|“)",
+       "rc_categories": "Ruodītė tėk tas kateguorėjės (atskirkat nauduojont „|“)",
        "rc_categories_any": "Bikuokė",
        "rc-change-size-new": "$1 {{PLURAL:$1|baits|baitā|baitu}} pu pakeitėma",
        "newsectionsummary": "/* $1 */ naus skėrsnelis",
-       "rc-enhanced-expand": "Ruodītė detales",
-       "rc-enhanced-hide": "Kavuotė detales",
+       "rc-enhanced-expand": "Ruodītė smolkmenas",
+       "rc-enhanced-hide": "Kavuotė smolkmenas",
        "rc-old-title": "pradiuo padėrbta kāp \"$1\"",
        "recentchangeslinked": "Sosėjėn pakeitėmā",
        "recentchangeslinked-feed": "Sosėjėn pakeitėmā",
        "recentchangeslinked-toolbox": "Sosėjėn pakeitėmā",
-       "recentchangeslinked-title": "So $1 sosėje pakeitimā",
-       "recentchangeslinked-summary": "Šėtom specēliajam poslapi ruodomė vielībė̅jė pakeitėmā poslapiūs, i katrūs īr nuruodoma. Poslapē ėš Tamstas [[Special:Watchlist|keravuojamu sāraša]] īr '''pastuorėntė'''.",
-       "recentchangeslinked-page": "Poslapė pavadinėms:",
-       "recentchangeslinked-to": "Ruodītė so doutu poslapiu sosėjosiu puslapiu pakeitėmus",
-       "upload": "Ikeltė faila",
+       "recentchangeslinked-title": "So $1 sosėjē pakeitėmā",
+       "recentchangeslinked-summary": "Tamė specēliam poslapi sogol vielībė̄jė pakeitėmā poslapiūs, i katrūs īr nuruodoma. Poslapē ėš Tamstas [[Special:Watchlist|keravuojamu sāroša]] ėšruod '''stuorā'''.",
+       "recentchangeslinked-page": "Poslapė pavadėnėms:",
+       "recentchangeslinked-to": "Ruodītė anūs poslapiu pakeitėmus, katrėi prėgol prī douta poslapė",
+       "upload": "Ožkrautė abruozdieli",
        "uploadbtn": "Ikeltė faila",
        "reuploaddesc": "Sogrīžtė i ikielima fuorma.",
        "uploadnologin": "Naprėsėjongis",
-       "uploadnologintext": "Nuoriedamė ikeltė faila, torėt būt [[Special:UserLogin|prėsėjongis]].",
+       "uploadnologintext": "$1, ka ožkrautomiet abruozdielius.",
        "upload_directory_read_only": "Tėnklapė serveris nagal rašītė i ikielima papke ($1).",
        "uploaderror": "Ikielima soklīdims",
+       "upload-recreate-warning": "<strong>Atėdės: Abruozdielis tuokio vardo bova ėštrints aba parvadints.</strong>\n\nApatiuo ėšdieta kas ė kāp:",
        "uploadtext": "Nauduokėtės žemiau pateikta skvarma kū ikeltomėt failus.\nNuoriedamė parveizietė ar ėiškuotė unkstiau ikeltū abruozdieliu, ēkėt i [[Special:FileList|ikeltū failu saraša]], ikielėmā ėr ėštrīnėmā īr ožregėstroujamė [[Special:Log/upload|ikielėmu istuorėjuo]], trīnėmā - [[Special:Log/delete|trīnėmu istuorėjuo]].\n\nNuoriedamė panauduotė ikelta faila poslapī, nauduokėt tuokės nūoruodas:\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>'''\n* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' aba\n* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' tėisiuogėnē nūruodā i faila.",
-       "upload-permitted": "Laistėnė failu tėpā: $1.",
-       "upload-preferred": "Pageidajamė failu tėpā: $1.",
-       "upload-prohibited": "Oždraustė failu tėpā: $1.",
-       "uploadlogpage": "Ikielimu istuorėjė",
+       "upload-permitted": "{{PLURAL:$2|Galams skvarmas būds|Galamė skvarmas būdā}}: $1.",
+       "upload-preferred": "{{PLURAL:$2|Velėms skvarmas būds|Velėmė skvarmas būdā}}: $1.",
+       "upload-prohibited": "{{PLURAL:$2|Nagalams skvarmas būds|Nagalamė skvarmas būdā}}: $1.",
+       "uploadlogpage": "Ožkruovėmu istuorėjė",
        "uploadlogpagetext": "Žemiau pateikiam paskotėniu failu ikielima istuorėjė.",
-       "filename": "Faila vards",
-       "filedesc": "Kuomentars",
-       "fileuploadsummary": "Kuomentars:",
+       "filename": "Abruozdėlė vards",
+       "filedesc": "Pāiškėnėms",
+       "fileuploadsummary": "Pāiškėnėms:",
+       "filereuploadsummary": "Abruozdielė pakeitėmāː",
+       "filestatus": "Derbieju teisėsː",
        "filesource": "Šaltėnis:",
        "ignorewarning": "Nekrėiptė diemiesė i parspiejėma ėr ėšauguotė faila vėsvėin.",
        "ignorewarnings": "Nekrėiptė diemesė i vėsuokius perspiejimos",
        "minlength1": "Faila pavadinėms tor būtė nuors vėina raidie.",
        "illegalfilename": "Faila vardė „$1“ īr sėmbuoliu, katrėi nier leidami poslapė pavadinėmūs. Prašuom parvadėntė faila ė miegītė ikeltė ana par naujė.",
        "badfilename": "Faila pavadinėms pakeists i „$1“.",
-       "filetype-missing": "Fails netor galūnės (kāp pavīzdīs „.jpg“).",
+       "filetype-missing": "Abruozdielis netor galūnės (kāp ontā „.jpg“).",
+       "illegal-filename": "Nagalams abruozdielė vards.",
        "unknown-error": "Nutėka nežėnuoma klaida.",
        "emptyfile": "Panašu, ka fails, katra ikieliet īr toščias. Tas gal būtė diel klaiduos faila pavadėnėmė. Pasėtėkrinkėt a tėkrā nuorėt ikeltė šėta faila.",
-       "fileexists": "Fails so tuokiu vardu jau īr, prašuom paveizėtė <strong>[[:$1]]</strong>, jēgo nesat ožtėkrėnts, a nuorit ana parrašītė.\n[[$1|thumb]]",
+       "fileexists": "Abruozdielis so tuokio vardo jau īr, prašuom paveizietė <strong>[[:$1]]</strong>, jēgo nasat tvirts, a nuorat ana parrašītė.\n[[$1|thumb]]",
        "fileexists-extension": "Fails so pavėdiu pavadinėmu jau īr: [[$2|thumb]]\n* Ikeliama faila pavadinėms: <strong>[[:$1]]</strong>\n* Jau esontė faila pavadinėms: <strong>[[:$2]]</strong>\nPrašuom ėšsėrėnktė kėta varda.",
        "file-exists-duplicate": "Tas fails īr {{PLURAL:$1|šėta faila|šėtū failu}} doblėkats:",
-       "uploadwarning": "Diemesė",
-       "savefile": "Ėšsauguotė faila",
-       "uploaddisabled": "Ikielėmā oždraustė.",
-       "uploaddisabledtext": "Failu ikielėmā oždraustė īr.",
+       "uploadwarning": "Atėdės",
+       "savefile": "Ėšsauguotė abruozdieli",
+       "uploaddisabled": "Ožkruovėma ožgintė īr.",
+       "uploaddisabledtext": "Abruozdieliu ožkruovėmā ožgintė īr.",
        "uploadscripted": "Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.",
        "uploadvirus": "Šėtom faile īr virosas! Ėšsamiau: $1",
        "upload-source": "Faila šaltėnis",
-       "sourcefilename": "Ikeliams fails",
-       "destfilename": "Nuorims faila pavadinims",
-       "upload-maxfilesize": "Dėdliausias faila dėdoms: $1",
+       "sourcefilename": "Ožkraunoms abruozdielisː",
+       "destfilename": "Nuorims abruozdielė pavadėnėmsː",
+       "upload-maxfilesize": "Dėdliausis abruozdielė dėdloms: $1",
        "upload-description": "Abruozdielė aprašīms",
        "upload-options": "Nostatīmā īkelėmō",
-       "watchthisupload": "Keravuotė šėta faila",
-       "upload-success-subj": "Ikelt siekmėngā",
-       "upload-failure-subj": "Ikielėma bieda",
+       "watchthisupload": "Keravuotė ton abruozdieli",
+       "upload-success-subj": "Ožkruovėms pavīka gerā",
+       "upload-failure-subj": "Ožkruovėma bieda",
        "upload-proto-error": "Nateisėngs protuokols",
        "upload-proto-error-text": "Nutuolinē ikielims raikalaun, kū URL prasėdietu <code>http://</code> o <code>ftp://</code>.",
-       "upload-file-error": "Vėdėnė klaida",
+       "upload-file-error": "Vėduojė bieda",
        "upload-file-error-text": "Ivīka vėdėnė klaida bandont sokortė laikinaji faila serverī. Prašuom sosėsėiktė so sistemuos admėnėstratuoriom.",
        "upload-misc-error": "Nažėnuoma ikielėma klaida",
        "upload-misc-error-text": "Ivīka nežėnuoma klaida vīkstont ikielėmō. Prašuom patėkrėnt, kū URL teisėngs teipuogi pasėikiams ėr pamiegīkit viel. Jē bieda ėšlėik, sosėsėikėt so sistemuos admėnėstratuoriom.",
+       "upload-dialog-title": "Ožkrautė abruozdieli",
+       "upload-dialog-error": "Notėka klaida",
+       "upload-dialog-button-cancel": "Pabengtė",
+       "upload-dialog-button-done": "Padėrbt",
+       "upload-dialog-button-save": "Ėšsauguotė",
+       "upload-dialog-button-upload": "Ožkrautė",
+       "upload-dialog-label-select-file": "Rinktėis abruozdieli",
+       "upload-dialog-label-infoform-title": "Aple",
+       "upload-dialog-label-infoform-name": "Pavadėnėms",
+       "upload-dialog-label-infoform-description": "Aprašīms",
+       "upload-dialog-label-usage-title": "Nauduojėms",
+       "upload-dialog-label-usage-filename": "Abruozdielė pavadėnėms",
+       "backend-fail-notexists": "Abruozdielė „$1“ nie.",
+       "backend-fail-alreadyexists": "Abruozdielis „$1“ jau īr.",
+       "img-auth-accessdenied": "Ožgint prė̄tė",
        "upload-curl-error6": "Napavīkst pasėiktė URL",
        "upload-curl-error6-text": "Pataikts URL nagal būt pasėikts. Prašuom patėkrėntė, kū URL īr teisings ėr svetainė veik.",
        "upload-curl-error28": "Par ėlgā ikeliama",
        "upload-curl-error28-text": "Atsakontė svetainė ožtronk par ėlgā. Patėkrėnkėt, a svetainė veik, palaukėt tropoti ė vielē pamiegīkit. Mažo Tamstā rēktu pamiegītė ne tuokio apkrauto čieso.",
-       "license": "Licensėjė",
-       "license-header": "Licensėjė",
+       "license": "Lėcencėjėː",
+       "license-header": "Lėcencėjė",
        "nolicense": "Nepasėrėnkt",
        "licenses-edit": "Keistė lėcencėju parametrus",
        "license-nopreview": "(Parveiza negalėma)",
        "upload_source_file": " (fails Tamstas kompioterī)",
        "listfiles-delete": "trintė",
        "listfiles-summary": "Tas specēlus poslapis ruod vėsus ikeltus failus.\nPalē numatīma paskiausē ikeltė failā īr ruoduomė sāroša vėršou.\nPaspaude ont štolpelė ontraštės pakeisėt ėšruokavėma.",
-       "imgfile": "fails",
+       "imgfile": "abruozdielis",
        "listfiles": "Failu sārašos",
        "listfiles_thumb": "Somažints",
        "listfiles_date": "Data",
        "listfiles_name": "Pavadinėms",
        "listfiles_user": "Nauduotuos",
-       "listfiles_size": "Dėdoms",
+       "listfiles_size": "Dėdloms",
        "listfiles_description": "Aprašīms",
        "listfiles_count": "Versėjės",
        "listfiles-latestversion": "Vielība atmaina",
        "listfiles-latestversion-yes": "Tēp",
        "listfiles-latestversion-no": "Ne",
-       "file-anchor-link": "Fails",
+       "file-anchor-link": "Abruozdielis",
        "filehist": "Abruozdielė istuorėjė",
-       "filehist-help": "Paspauskėt ont datas/čiesa, ka paveizietomėt faila tuoki, kokis ons bova tū čiesu.",
+       "filehist-help": "Paspauskėt ont deinas/čiesa, ka paveizietomėt abruozdieli, kāp ons ėšruodė pradiuo.",
        "filehist-deleteall": "trintė vėsus",
-       "filehist-deleteone": "trintė šėta",
-       "filehist-revert": "sogōžėntė",
-       "filehist-current": "dabartėnis",
-       "filehist-datetime": "Data/Čiesos",
-       "filehist-thumb": "Miniatiūra",
-       "filehist-thumbtext": "Versėjės $1 miniatiūra",
+       "filehist-deleteone": "trintė",
+       "filehist-revert": "sogrōžintė",
+       "filehist-current": "vielībs",
+       "filehist-datetime": "Dėina/Čiesos",
+       "filehist-thumb": "Pamažėnėms",
+       "filehist-thumbtext": "Atmaina $1 pamažėnėms",
        "filehist-nothumb": "Somažinima nie",
        "filehist-user": "Nauduotuos",
        "filehist-dimensions": "Mierā",
-       "filehist-filesize": "Faila dėdoms",
+       "filehist-filesize": "Abruozdielė dėdloms",
        "filehist-comment": "Pāiškėnėms",
-       "imagelinks": "Failu nūruodas",
-       "linkstoimage": "{{PLURAL:$1|Šėts poslapis|Šėtė poslapē}} nuruod i šėta faila:",
-       "nolinkstoimage": "I faila neruod anėjuoks poslapis.",
+       "imagelinks": "Abruozdieliu nauduojėms",
+       "linkstoimage": "{{PLURAL:$1|Ons poslapis|Anėi poslapē}} ruod ton abruozdielin:",
+       "nolinkstoimage": "Abruozdielėp neruod anėjuoks poslapis.",
        "morelinkstoimage": "Veizietė [[Special:WhatLinksHere/$1|daugiau nūruodu]] ton abruozdielėn.",
        "sharedupload": "Tas fails īr ėš $1 ė gal būtė nauduojams kėtūs pruojektūs.",
-       "sharedupload-desc-here": "Tas fails īr ėš $1 ė gal būtė nauduojams kėtūsė pruojektūsė.\nInfuormacėjė ėš [$2 faila aprašīma poslapė] īr pateikta žemiau.",
-       "uploadnewversion-linktext": "Ikeltė nauja faila versėje",
+       "sharedupload-desc-here": "Tas abruozdielis īr nug $1 ė gal būtė nauduojams kėtūs poslapiūs.\nŽinės nug [$2 abruozdielė aprašīma poslapė] prėgol apatiuo.",
+       "uploadnewversion-linktext": "Ožkrautė nauji abruozdielė atmaina",
        "shared-repo-from": "ėš $1",
        "shared-repo": "bendruos saugīklas",
-       "upload-disallowed-here": "Negalėt perrašītė ton faila.",
+       "upload-disallowed-here": "Nie galama ožkrautė abruozdieli ont vėršous.",
        "filerevert": "Sogrōžėntė $1",
        "filerevert-legend": "Faila sogrōžinėms",
        "filerevert-intro": "<span class=\"plainlinks\">Tamsta grōžėnat '''[[Media:$1|$1]]''' i versėje $4 ($2, $3).</span>",
        "filerevert-submit": "Grōžėntė",
        "filedelete": "Trintė $1",
        "filedelete-legend": "Trintė faila",
-       "filedelete-intro": "Tamsta roušeties ėštrėntė faila '''[[Media:$1|$1]]''' so vėsa anuo istuorėjė.",
-       "filedelete-comment": "Prīžastis:",
+       "filedelete-intro": "Tamsta ėštrinsat '''[[Media:$1|$1]]''' so vėsa anuo istuorėjė.",
+       "filedelete-comment": "Dingstės:",
        "filedelete-submit": "Trintė",
        "filedelete-success": "'''$1''' bova ėštrints.",
        "filedelete-nofile": "'''$1''' nēsa.",
-       "filedelete-otherreason": "Kėta/papėlduoma prīžastis:",
-       "filedelete-reason-otherlist": "Kėta prīžastis",
-       "filedelete-reason-dropdown": "*Dažnas trīnėma prīžastīs\n** Autorīstės teisiu pažeidėmā\n** Pasėkartuojontis fails",
-       "filedelete-edit-reasonlist": "Keistė trīnėma prīžastis",
+       "filedelete-otherreason": "Kėta/papėlduoma dingstės:",
+       "filedelete-reason-otherlist": "Kėta dingstės",
+       "filedelete-reason-dropdown": "*Tonkės trīnėma dingstisː\n** Dėrbė̄ju teisiu pažeidėmā\n** Līgē tuokis jau īr",
+       "filedelete-edit-reasonlist": "Keistė trīnėma dingstis",
        "mimesearch": "MIME paėiška",
        "mimesearch-summary": "Šėts poslapis laid ruodīti failus vagol anū MIME tipa. Iveskėt: torėnėtips/potipis, pvz. <code>image/jpeg</code>.",
-       "mimetype": "MIME tips:",
+       "mimetype": "MIME būds:",
        "download": "parsėsiūstė",
        "unwatchedpages": "Nekeravuojėmė poslapē",
        "listredirects": "Paradresavėmu sārašos",
        "randompage-nopages": "Šėtuo vardū srėti nier anėjuokiu poslapiu.",
        "randomincategory": "Bikuoks poslapis kateguorėjuo",
        "randomincategory-category": "Kateguorėjė:",
-       "randomredirect": "Bikuoks paradresavėms",
-       "randomredirect-nopages": "Šėtuo vardū srėti nier anėjuokiū paradresavėmu.",
-       "statistics": "Statėstėka",
-       "statistics-header-pages": "Poslapiu statėstėka",
-       "statistics-header-edits": "Redagavėmu statėstėka",
-       "statistics-header-users": "Nauduotuoju statėstėka",
-       "statistics-header-hooks": "Kėta statėstėka",
+       "randomincategory-legend": "Bikuoks poslapis kateguorėjuo",
+       "randomincategory-submit": "Ēk",
+       "randomredirect": "Bikuoks nusokims",
+       "randomredirect-nopages": "Šėtuo vardū srėtie nie anėjuokiu nusokėmu.",
+       "statistics": "Skaitlē",
+       "statistics-header-pages": "Poslapiu sklaitlē",
+       "statistics-header-edits": "Keitėmu skaitlē",
+       "statistics-header-users": "Nauduotuoju skaitlē",
+       "statistics-header-hooks": "Kėtė skaitlē",
        "statistics-articles": "Torėnė poslapē",
        "statistics-pages": "Poslapē",
        "statistics-pages-desc": "Vėsė poslapē, terp anū: aptarėma, nukrėipėmu ė kėtė.",
-       "statistics-files": "Ikeltė failā",
+       "statistics-files": "Ožkrautė abruozdielē",
        "statistics-edits": "Poslapiu redagavėmu skaitlius nū {{SITENAME}} sokūrėma",
        "statistics-edits-average": "Vėdotėnis keitėmu skaitlius poslapiō",
        "statistics-users": "Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]",
        "statistics-users-active": "Aktīviu nauduotuoju",
        "statistics-users-active-desc": "Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu",
-       "doubleredirects": "Dvėgobė paradresavėmā",
+       "pageswithprop-submit": "Ēk",
+       "doubleredirects": "Dvėgobė nusokėmā",
        "doubleredirectstext": "Tėi paradresavėmā ruod i kėtus paradresavėma poslapius. Kuožnuo eilotē pamėnavuots pėrmasā ėr ontrasā paradresavėmā, tēpuogi ontrojė paradresavėma paskėrtis, katra paprastā ė paruod i tėkraji poslapi, i katra pėrmasā paradresavėms ė torietu ruodītė.",
-       "double-redirect-fixed-move": "[[$1]] bova parkelts, daba tas īr paradresavėms i [[$2]]",
+       "double-redirect-fixed-move": "Poslapis [[$1]] bova parvadints.\nOns atnaujėnts ė daba ruod i [[$2]].",
        "brokenredirects": "Neveikiantīs paradresavėmā",
        "brokenredirectstext": "Žemiau ėšvardintė paradresavėma poslapē ruod i nasontius poslapius:",
        "brokenredirects-edit": "redagoutė",
        "brokenredirects-delete": "trintė",
        "withoutinterwiki": "Poslapē ba kalbū nūruodu",
        "withoutinterwiki-summary": "Šėtė poslapē neruod i kėtū kalbū versėjės:",
+       "withoutinterwiki-legend": "Prīšdielis",
        "withoutinterwiki-submit": "Ruodītė",
        "fewestrevisions": "Straipsnē so mažiausė pakeitėmu",
        "nbytes": "$1 {{PLURAL:$1|baits|baitā|baitu}}",
        "nlinks": "$1 {{PLURAL:$1|nūruoda|nūruodas|nūruodu}}",
        "nmembers": "$1 {{PLURAL:$1|narīs|narē|nariū}}",
        "nrevisions": "$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}",
-       "nviews": "$1 {{PLURAL:$1|paruodīms|paruodīmā|paruodīmu}}",
+       "ntransclusions": "nauduonams $1 {{PLURAL:$1|poslapi|poslapiūs|poslapiu}}",
        "specialpage-empty": "Šėtā ataskaitā nie rezoltatu.",
-       "lonelypages": "Vėinišė straipsnē",
+       "lonelypages": "Straipsnē-sėratas",
        "lonelypagestext": "I šėtuos poslapius nier nūruodu ėš kėtū šėta pruojekta poslapiu.",
-       "uncategorizedpages": "Poslapē, napriskėrtė juokē kateguorėjē",
-       "uncategorizedcategories": "Kateguorėjės, naprėskėrtas juokē kateguorėjē",
-       "uncategorizedimages": "Abruozdielē, nepriskėrtė juokē kateguorėjē",
-       "uncategorizedtemplates": "Šabluonā, nepriskėrtė juokē kateguorėjē",
+       "uncategorizedpages": "Poslapē, naprėgolōs juokē kateguorėjē",
+       "uncategorizedcategories": "Kateguorėjės, naprėgolōs juokē kateguorėjē",
+       "uncategorizedimages": "Abruozdielē, naprėgolōs juokē kateguorėjē",
+       "uncategorizedtemplates": "Šabluonā, naprėgolōs juokē kateguorėjē",
        "unusedcategories": "Nenauduojamas kateguorėjės",
        "unusedimages": "Nenauduojamė failā",
        "wantedcategories": "Nuorėmiausės kateguorėjės",
        "mostlinkedtemplates": "Daugiausē ruodomė šabluonā",
        "mostcategories": "Straipsnē so daugiausē kateguorėju",
        "mostimages": "Daugiausē ruodomė abruozdielē",
+       "mostinterwikis": "Straipsnē so daugiausē interwiki nūruodu",
        "mostrevisions": "Straipsnē so daugiausē keitėmu",
        "prefixindex": "Vėsė poslapē so prīšdielio",
        "shortpages": "Trompiausė poslapē",
        "deadendpages": "Straipsnē-aklavėitės",
        "deadendpagestext": "Tė poslapē netor nūruodu i kėtus poslapius šėtom pruojektė.",
        "protectedpages": "Apsauguotė poslapē",
+       "protectedpages-noredirect": "Kavuotė nusokėmus",
        "protectedpagesempty": "Šėtu čiesu nier apsauguots anėjuoks fails so šėtās parametrās.",
+       "protectedpages-timestamp": "Čiesos",
+       "protectedpages-page": "Poslapis",
+       "protectedpages-expiry": "Beng vēktė",
+       "protectedpages-performer": "Kas apsergiejė",
+       "protectedpages-params": "Apsergiejėma žėnės",
+       "protectedpages-reason": "Dingstės",
+       "protectedpages-unknown-timestamp": "Nežėnuoms",
+       "protectedpages-unknown-performer": "Nežėnuoms nauduotuos",
        "protectedtitles": "Apsauguotė pavadinėmā",
        "protectedtitlesempty": "Šėtou čieso nier anėjuokė pavadinėma, katros apsauguots tās parametrās.",
-       "listusers": "Sārašos nauduotuoju",
+       "listusers": "Sārošos nauduotuoju",
        "listusers-editsonly": "Ruodītė tėktās nauduotuojus katrėi īr atlėkė pakeitėmus",
-       "usercreated": "Paskīra īr padėrbta $1 $2",
-       "newpages": "Naujausė straipsnē",
+       "usereditcount": "{{PLURAL:$1|pataisīms|pataisīmā|pataisīmu}}",
+       "usercreated": "{{GENDER:$3|Padėrba paskīra}} $1 $2",
+       "newpages": "Vielībė̄jė straipsnē",
        "newpages-username": "Nauduotuojė vards:",
        "ancientpages": "Seniausė poslapē",
        "move": "Parvadintė",
-       "movethispage": "Parvadintė šėta poslapi",
+       "movethispage": "Parvadintė ton poslapi",
        "unusedimagestext": "Primenam, kū kėtas svetainės gal būtė nuruodiosės i abruozdieli tėisiogėniu URL, no vėstėik gal būtė šėtom sārašė, nuors ėr īr aktīvē naudounams.",
        "unusedcategoriestext": "Šėtū kateguorėju poslapē sokortė, nuors juoks kėts straipsnis a kateguorėjė ana nenauduo.",
        "notargettitle": "Nenuruodīts objekts",
        "notargettext": "Tamsta nenuruodiet nuorima poslapė a nauduotuojė,\nkatram ivīkdītė šėta funkcėjė.",
+       "nopagetitle": "Nie tuokė poslapė",
        "pager-newer-n": "$1 {{PLURAL:$1|paskesnis|paskesni|paskesniū}}",
-       "pager-older-n": "{{PLURAL:$1|senesnis|senesni|senesniū}}",
-       "booksources": "Knīngu šaltinē",
-       "booksources-search-legend": "Knīngu šaltiniu paėiška",
+       "pager-older-n": "{{PLURAL:$1|paskesnis|paskesnė|paskesniū}}",
+       "booksources": "Kningu šaltėnē",
+       "booksources-search-legend": "Kningu šaltėniu paėiška",
        "specialloguserlabel": "Nauduotuos:",
        "speciallogtitlelabel": "Pavadėnims:",
-       "log": "Specēliūju veiksmū istuorėjė",
+       "log": "Specēliūju vīksmū istuorėjė",
        "all-logs-page": "Vėsos istuorėjės",
        "alllogstext": "Bėndra idietu failu, ėštrīnėmu, ožrakėnėmu, bluokavėmu ė prėvėlėju soteikėmu istuorėjė.\nĪr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.",
        "logempty": "Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.",
        "showhideselectedlogentries": "Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot",
        "allpages": "Vėsė straipsnē",
        "nextpage": "Kėts poslapis ($1)",
-       "prevpage": "Unkstesnis poslapis ($1)",
-       "allpagesfrom": "Ruodītė poslapius pradedont nu:",
+       "prevpage": "Onkstesnis poslapis ($1)",
+       "allpagesfrom": "Ruodītė poslapius pradedont nug:",
        "allpagesto": "Ruodītė poslapius, basėbengėnčios so:",
        "allarticles": "Vėsė straipsnē",
        "allinnamespace": "Vėsė poslapē (srėtis - $1)",
-       "allpagessubmit": "Tink",
+       "allpagessubmit": "Dėrbtė",
        "allpagesprefix": "Ruodītė poslapios so prīdelēs:",
        "allpagesbadtitle": "Douts poslapė pavadėnėms īr neteisings a tor terpkalbėnė a terppruojektėnė prīdielė. Anamė īr vėns a kelė žėnklā, katrū negal nauduotė pavadėnėmūs.",
        "allpages-bad-ns": "{{SITENAME}} netor „$1“ vardū srėtėis.",
-       "allpages-hide-redirects": "Kavuotė nukrėipėmus",
+       "allpages-hide-redirects": "Kavuotė nusokėmus",
        "categories": "Kateguorėjės",
        "categoriespagetext": "Pruojekte īr šėtuos kateguorėjės.\n[[Special:UnusedCategories|Unused categories]] are not shown here.\nAlso see [[Special:WantedCategories|wanted categories]].",
        "categoriesfrom": "Ruodītė kateguorėjės pradedont nu:",
-       "deletedcontributions": "Panaikėnts nauduotuojė duovis",
-       "deletedcontributions-title": "Ėštrėnts nauduotuojė duovis",
+       "deletedcontributions": "Ėštrints nauduotuojė duovis",
+       "deletedcontributions-title": "Ėštrints nauduotuojė duovis",
        "linksearch": "Ėšuorėnės nūruodas",
-       "linksearch-ns": "Vardū srėtis:",
+       "linksearch-ns": "Vardū srėtės:",
        "linksearch-ok": "Ėiškuotė",
        "linksearch-line": "$1 īr sosėits ėš $2",
-       "listusersfrom": "Ruodītė nauduotuojus pradedont nū:",
+       "listusersfrom": "Ruodītė nauduotuojus pradedont nug:",
        "listusers-submit": "Ruodītė",
        "listusers-noresult": "Nerast anėjuokiū nauduotuoju.",
+       "listusers-blocked": "(ožgints)",
+       "activeusers": "Vēkōs nauduotuojē",
+       "activeusers-hidebots": "Kavuotė robuotus",
+       "activeusers-hidesysops": "Kavuotė admėnėstratorius",
+       "activeusers-noresult": "Nerast anėjuokiu nauduotuoju.",
        "listgrouprights": "Nauduotuoju gropiu teisės",
        "listgrouprights-group": "Gropė",
-       "listgrouprights-members": "(nariū sārašos)",
+       "listgrouprights-rights": "Teisės",
+       "listgrouprights-members": "(nariū sārošos)",
        "mailnologin": "Nier adresa",
        "mailnologintext": "Tamstā reik būtė [[Special:UserLogin|prisėjongosiam]]\nė tor būtė ivests teisings el. pašta adresos Tamstas [[Special:Preferences|nustatīmuos]],\nkū siōstomiet el. gruomatas kėtėm nauduotuojam.",
        "emailuser": "Rašītė gruomata šėtam nauduotuojō",
+       "emailuser-title-target": "Rašītė gromata {{GENDER:$1|tam nauduotuojuo}}",
+       "emailuser-title-notarget": "Rašītė gromata",
        "emailpage": "Siūstė el. gruomata nauduotuojui",
+       "defemailsubject": "{{SITENAME}} - gromata nug nauduotuojė $1",
+       "usermaildisabled": "El. paštos ėšjongts īr",
        "noemailtitle": "Nier el. pašta adreso",
-       "noemailtext": "Šėts nauduotuos nier nuruodės teisėnga el.pašta adresa a īr pasėrinkės negautė el. pašta ėš kėtū nauduotuoju.",
+       "noemailtext": "Tas nauduotuos nie davis sava el. pašta adresa.",
+       "nowikiemailtext": "Tas nauduotuos nenuor gautė el. gromatu nug kėtū nauduotuoju.",
+       "emailusername": "Nauduotuojė vards:",
+       "emailusernamesubmit": "Siōstė",
        "email-legend": "Siūstė elektruonėne gruomata kėtam {{SITENAME}} nauduotuojō",
        "emailfrom": "Nū:",
+       "emailto": "Kamː",
+       "emailsubject": "Aple konː",
        "emailmessage": "Pranešėms:",
        "emailsend": "Siōstė",
        "emailccme": "Siōstė monei mona gruomatas kuopėjė.",
        "emailccsubject": "Gruomatas kuopėjė nauduotuojō $1: $2",
        "emailsent": "El. gruomata ėšsiōsta",
        "emailsenttext": "Tamstas el. pašta žėnotė ėšsiōsta.",
-       "watchlist": "Keravuojamė straipsnē",
+       "emailuserfooter": "Nauduotuos $1 nosiontė gromata nauduotuojuo $2 par \"{{int:emailpage}}\" rakonda svetainie {{SITENAME}}.",
+       "watchlist": "Keravuojamė poslapē",
        "mywatchlist": "Keravuojamė poslapē",
        "watchlistfor2": "Nauduotuojė $1 ($2)",
        "nowatchlist": "Netorėt anėvėina keravuojama poslapė.",
-       "watchlistanontext": "Prašuom $1, ka parveizietomėt a pakeistomiet elementus sava keravuojamu sārašė.",
+       "watchlistanontext": "Prėsėjonkat, ka parveizietomėt a pakeistomiet dalīkus sava keravuojamu sārošė.",
        "watchnologin": "Neprisėjongės",
        "addwatch": "Prikergtė pri keravuojamu",
-       "addedwatchtext": "Poslapis \"[[$1]]\" idiets i [[Special:Watchlist|keravuojamu sāraša]].\nBūsantīs poslapė ėr atėtinkama aptarėma poslapė pakeitėmā bus paruoduomė keravuojamu poslapiu sārašė,\ntēpuogi bus '''parīškintė''' [[Special:RecentChanges|vielībūju pakeitėmu sārašė]], kū ėšsėskėrtom ėš kėtū straipsniu.\nJēgo bikumet ožsėnuorietomiet liautėis keravuotė straipsnė, spauskat \"nebkeravuotė\" vėršotėniam meniū.",
+       "addedwatchtext": "Poslapis [[:$1]] ė anuo aptarėms prėkergto Tamstas [[Special:Watchlist|keravuojamu sārošon]].",
+       "addedwatchtext-short": "Poslapis „$1“ daba prėgol prī Tamstas keravuojamu.",
        "removewatch": "Ėšmestė ėš kieravuojamu",
-       "removedwatchtext": "Poslapis „[[:$1]]“ pašalėnts ėš [[Special:Watchlist|Tamstas keravuojamu sāraša]].",
+       "removedwatchtext": "Poslapis [[:$1]] ė anuo aptarėms atkergto nug Tamstas [[Special:Watchlist|keravuojamu sāroša]].",
        "removedwatchtext-short": "Poslapis \"$1\" bova ėšmests ėš kieravuojamu.",
        "watch": "Keravuotė",
-       "watchthispage": "Keravuotė šėta poslapė",
-       "unwatch": "Nebkeravuotė",
-       "unwatchthispage": "Nustuotė keravuotė",
+       "watchthispage": "Keravuotė ton poslapi",
+       "unwatch": "Nab'keravuotė",
+       "unwatchthispage": "Bengtė keravuotė",
        "notanarticle": "Ne torėnė poslapis",
        "watchlist-details": "Keravuojama $1 {{PLURAL:$1|poslapis|$1 poslapē|$1 poslapiu}} neskaitlioujant aptarėmu poslapiu.",
        "wlheader-enotif": "El. pašta primėnėmā ijongtė īr.",
        "wlnote": "Ruoduoma '''$1''' paskotėniu pakeitėmu, atlėktū par '''$2''' paskotėniu adīnu.",
        "wlshowlast": "Ruodītė paskotėniu $1 adīnu, $2 dėinū a  pakeitėmus",
        "watchlist-options": "Keravuojamu sāroša pasėrinkėmā",
-       "watching": "Itraukiama i keravuojamu sāraša...",
+       "watching": "Kergiama keravuojamu sārošon...",
        "unwatching": "Šalėnama ėš keravuojamu sāraša...",
        "enotif_reset": "Pažīmietė vėsus poslapius kāp aplonkītus",
        "enotif_impersonal_salutation": "{{SITENAME}} nauduotuos",
        "created": "sokūrė",
        "changed": "pakeitė",
        "deletepage": "Trintė poslapi",
-       "confirm": "Ožtvėrtinu",
-       "excontent": "boves torinīs: „$1“",
-       "excontentauthor": "boves torinīs: „$1“ (redagava tėktās „[[Special:Contributions/$2|$2]]“)",
-       "exbeforeblank": "priš ėštrinant torinīs bova: „$1“",
-       "delete-confirm": "Ėštrėnta \"$1\"",
+       "confirm": "Tėkrā tāp",
+       "excontent": "bovis torėnīs: „$1“",
+       "excontentauthor": "bovis torėnīs: „$1“ (dėrba tėktās „[[Special:Contributions/$2|$2]]“)",
+       "exbeforeblank": "prīš ėštrinont torėnīs bova: „$1“",
+       "delete-confirm": "Trintė „$1“",
        "delete-legend": "Trīnėms",
-       "historywarning": "Diemesė: Trėnams poslapis tor istuorėjė:",
+       "historywarning": "<strong>Atėdės:</strong> Poslapis, katron nuorat ėštrintė, bova pakeists $1 {{PLURAL:$1|sīki|sīkius|sīkiu}}:",
        "confirmdeletetext": "Tamsta pasėrėnkuot ėštrėntė poslapi a abruozdieli draugum so vėsa anuo istuorėjė.\nPrašuom patvėrtėntė, kū Tamsta tėkrā nuorėt šėtu padarītė, žėnuot aple galėmus padarėnius, ė kū Tamsta šėtā daruot atsėžvelgdamė i [[{{MediaWiki:Policy-url}}|puolitėka]].",
-       "actioncomplete": "Vēksmos atlėkts īr",
-       "actionfailed": "Veiksmos atšaukts īr",
-       "deletedtext": "„$1“ ėštrints.\nPaskotiniu pašalinėmu istuorėjė - $2.",
-       "dellogpage": "Pašalinėmu istuorėjė",
-       "dellogpagetext": "Žemiau īr pateikiams paskotiniu ėštrīnimu sārašos.",
-       "deletionlog": "pašalinėmu istuorėjė",
-       "reverted": "Atkorta i onkstesne versėje",
-       "deletecomment": "Prīžastis:",
-       "deleteotherreason": "Kėta/papėlduoma prižastis:",
-       "deletereasonotherlist": "Kėta prižastis",
-       "deletereason-dropdown": "*Dažnas trīnėma prižastīs\n** Autorė prašīms\n** Autorėniu teisiu pažeidėms\n** Vandalėzmos",
-       "delete-edit-reasonlist": "Keistė trėnėma prīžastis",
-       "rollback": "Atmestė pakeitėmos",
+       "actioncomplete": "Vēksmos padėrbts īr",
+       "actionfailed": "Vēksmos atšaukts īr",
+       "deletedtext": "„$1“ ėštrints īr.\nVielībūju trīnėmu istuorėjė - $2.",
+       "dellogpage": "Ėštrīnėmu sārošos",
+       "dellogpagetext": "Apatiuo gol patīs vielībė̄jė ėštrīnėmā.",
+       "deletionlog": "ėštrīnėmu sārošos",
+       "reverted": "Grōžinta tāp, kāp ėšruodė pėrmiou",
+       "deletecomment": "Dingstės:",
+       "deleteotherreason": "Kėta/papėlduoma dingstės:",
+       "deletereasonotherlist": "Kėta dingstės",
+       "deletereason-dropdown": "* Tonkiausės ėštrėnėma dingstisː\n** Šiokšlėnėms\n** Zaunū/bikuo rašīms\n** Pažeistas dėrbieju teisės\n** Patėis nauduotuojė prašīms\n** Bluogs poslapė nusokėms",
+       "delete-edit-reasonlist": "Mainītė trīnėma dingstis",
+       "rollback": "Atmestė pakeitėmus",
        "rollbacklink": "atmestė",
-       "rollbacklinkcount": "atmestė $1 {{PLURAL:$1|keitėms|keitėmo|keitėmus|keitėmu}}",
-       "rollbackfailed": "Atmetims napavīka",
+       "rollbacklinkcount": "sogrōžintė $1 {{PLURAL:$1|pakeitėms|pakeitėmo|pakeitėmus|pakeitėmu}}",
+       "rollbacklinkcount-morethan": "sogrōžintė daugiau kāp $1 {{PLURAL:$1|pakeitėma|pakeitėmus|pakeitėmu}}",
+       "rollbackfailed": "Atmetėms nasėgava",
        "cantrollback": "Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.",
-       "alreadyrolled": "Nepavīka atmestė paskotėnė [[User:$2|$2]] ([[User talk:$2|Aptarėms]]) darīta straipsnė [[$1]] keitėma;\nkažkas jau pakeitė straipsnė arba sospiejė pėrmiesnis atmestė keitėma.\n\nGalėnis keitėms dėrbts nauduotuojė [[User:$3|$3]] ([[User talk:$3|Aptarėms]]).",
+       "alreadyrolled": "Nė̄šēn otgrōžintė pakeitėma, [[:$1]] katra padėrba [[User:$2|$2]] ([[User talk:$2|aptarėms]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]);\nkažkas ton jau padėrba pėrmiou.\n\nVielībiausā ton poslapė pakeitėms padėrbts [[User:$3|$3]] ([[User talk:$3|aptarėms]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) īr.",
        "editcomment": "Padėrbėma pāiškėnėms bova: „''$1''“.",
-       "revertpage": "Atmests [[Special:Contributions/$2|$2]] ([[User talk:$2|Aptarėms]]) pakeitėms; sogrōžėnta nauduotuojė [[User:$1|$1]] versėjė",
-       "rollback-success": "Atmestė $1 keitėmā; grōžėnta i paskotėne $2 versėje.",
-       "sessionfailure": "Atruod kū īr biedū so Tamstas prėsėjongėma sesėjė; šėts veiksmos bova atšaukts kāp atsargoma prėimonė priš sesėjės vuogėma.\nPrašoum paspaustė „atgal“ ėr parkrautė poslapi ėš katruo atiejot, ė pamieginkėt vielē.",
-       "protectlogpage": "Rakinėmu istuorėjė",
-       "protectlogtext": "Žemiau īr poslapė ožrakinėmu tēpuogi atrakinėmu istuorėjė. Nūnā veikiantiu poslapiu apsaugū sāraša sorasėt [[Special:ProtectedPages|apsauguotu poslapiu sarašė]].",
-       "protectedarticle": "ožrakina „[[$1]]“",
-       "modifiedarticleprotection": "pakeists „[[$1]]“ apsauguos līgis",
-       "unprotectedarticle": "atrakėna „[[$1]]“",
+       "revertpage": "Atmests [[Special:Contributions/$2|$2]] ([[User talk:$2|aptarėms]]) pakeitėms; sogrōžints atmains, katron padėrba nauduotuos [[User:$1|$1]]",
+       "rollback-success": "Atmestė $1 padėrbtė keitėmā; grōžints $2 padėrbts atmains.",
+       "sessionfailure": "Atruod ka īr biedū so Tamstas prėsėjongėmo; tas vēksmos bova grōžints kāp atsargoma prėimonė nu sesėjės vuogėma.\nPrašoum mīgtė „atgal“ ėr parkrautė poslapi ėš katruo atiejėt, ė pamieginkėt apent.",
+       "changecontentmodel-title-label": "Poslapė pavadėnėms",
+       "changecontentmodel-reason-label": "Dingstės:",
+       "logentry-contentmodel-change-revertlink": "sogrōžintė",
+       "logentry-contentmodel-change-revert": "sogrōžintė",
+       "protectlogpage": "Apsergiejėmu istuorėjė",
+       "protectlogtext": "Apatiuo īr poslapė ožsergiejėma tēpuogi atsergiejėma istuorėjė. Nūnā vēkiantiu poslapiu apsargū sāroša sorasat [[Special:ProtectedPages|apsergietu poslapiu sārošė]].",
+       "protectedarticle": "apsergiejė „[[$1]]“",
+       "modifiedarticleprotection": "pamainīts „[[$1]]“ apserguos miers",
+       "unprotectedarticle": "nujėmė apserga nug „[[$1]]“",
+       "movedarticleprotection": "apsergiejėma nustatīma parkeltė nug \"[[$2]]\" i \"[[$1]]\"",
        "protect-title": "Nustatuoms apsauguojėma līgis poslapiō „$1“",
        "prot_1movedto2": "Straipsnis [[$1]] parvadints i [[$2]]",
-       "protect-legend": "Ožrakinėma patvėrtinėms",
-       "protectcomment": "Prīžastis:",
-       "protectexpiry": "Beng galiuotė:",
+       "protect-legend": "Tėkrā tuokis apsergiejėms?",
+       "protectcomment": "Dingstės:",
+       "protectexpiry": "Beng vēktėː",
        "protect_expiry_invalid": "Galiuojėma čiesos īr nateisėngs.",
        "protect_expiry_old": "Galiuojėma čiesos īr praėitī.",
        "protect-text": "Čė Tamsta galėt paveizėtė ė pakeistė apsauguos līgi šėtuo poslapio '''$1'''.",
        "protect-level-autoconfirmed": "Blokoutė naujē prisėregėstravosius ė neregėstroutus nauduotuojus",
        "protect-level-sysop": "Tėktās adminėstratuorē",
        "protect-summary-cascade": "pakuopėnė apsauga",
-       "protect-expiring": "beng galiuotė $1 (UTC)",
-       "protect-expiring-local": "beng galiuotė $1",
-       "protect-expiry-indefinite": "nerėbuotā",
-       "protect-cascade": "Apsaugotė poslapius, itrauktus i šėta poslapi (pakuopėnė apsauga).",
+       "protect-expiring": "beng vēktė $1 (UTC)",
+       "protect-expiring-local": "beng vēktė $1",
+       "protect-expiry-indefinite": "par omžius",
+       "protect-cascade": "Apsergietė poslapius, katrėi prėgol ton poslapin (pakuopėnė apsauga).",
        "protect-cantedit": "Tamsta negalėt keistė šėta poslapė apsauguojėma līgiu, kagongi netorėt teisiu anuo redagoutė.",
        "protect-othertime": "Kėts čiesos:",
        "protect-othertime-op": "kėts čiesos",
        "protect-existing-expiry": "Esams rakėnėma ožsėbengėma čiesos: $3, $2",
        "protect-existing-expiry-infinity": "Dabartėnis galiuojėma čiesos: omžiams",
-       "protect-otherreason": "Kėta/papėlduoma prīžastis:",
-       "protect-otherreason-op": "Kėta/papėlduoma prīžastis",
-       "protect-dropdown": "*Iprastas ožrakinėma prīžastīs\n** Intensīvus vandalėzmos\n** Intensīvus nūruodu reklamavėms\n** Neproduktīvi redagavėma vaina\n** Dėdlė svarboma poslapis",
-       "protect-edit-reasonlist": "Keistė ožrakinėma prīžastis",
-       "protect-expiry-options": "1 adīna:1 hour,1 dėina:1 day,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mieniesē:3 months,6 mieniesē:6 months,1 metā:1 year,par omžius:infinite",
+       "protect-otherreason": "Kėta/papėlduoma dingstės:",
+       "protect-otherreason-op": "Kėta/papėlduoma dingstės",
+       "protect-dropdown": "*Tonkės apsergiejėma dingstis\n** Tonkē gadėnams\n** Tonkē šiokšlėnams\n** Remezis diel pakeitėmu\n** Dėdlė svarboma poslapis",
+       "protect-edit-reasonlist": "Mainītė apsergiejėma dingstis",
+       "protect-expiry-options": "1 adīna:1 hour,1 dėina:1 day,1 nedielė:1 week,2 nedieli:2 weeks,1 mienou:1 month,3 mieniesē:3 months,6 mieniesē:6 months,1 metā:1 year,par omžius:infinite",
        "restriction-type": "Laidėms:",
        "restriction-level": "Aprėbuojėma līgis:",
-       "minimum-size": "Minėmalus dėdoms",
-       "maximum-size": "Dėdliausis dėdoms",
+       "minimum-size": "Mažiausis dėdloms",
+       "maximum-size": "Dėdliausis dėdloms",
        "pagesize": "(baitās)",
-       "restriction-edit": "Redagavėms",
+       "restriction-edit": "Dėrbėms",
        "restriction-move": "Parvadėnėms",
-       "restriction-create": "Sokortė",
-       "restriction-upload": "Ikeltė",
-       "restriction-level-sysop": "pėlnā apsauguota",
-       "restriction-level-autoconfirmed": "posiau apsauguota",
+       "restriction-create": "Padėrbtė",
+       "restriction-upload": "Ožkrautė",
+       "restriction-level-sysop": "pilnā apsergieta",
+       "restriction-level-autoconfirmed": "posiou apsergieta",
        "restriction-level-all": "bikuoks",
-       "undelete": "Atstatītė ėštrinta poslapi",
-       "undeletepage": "Ruodītė ė atkortė ėštrintos poslapios",
-       "viewdeletedpage": "Ruodītė ėštrintos poslapios",
+       "undelete": "Veizietė ėštrintus poslapius",
+       "undeletepage": "Ruodītė ė grōžintė ėštrintus poslapius",
+       "viewdeletedpage": "Veizietė ėštrintus poslapius",
        "undeletepagetext": "Žemiau ėšvardėntė poslapē īr ėštrėntė, no da laikuomi\narkīve, tudie anie gal būt atstatītė. Arkīvs gal būt perēodėškā valuoms.",
        "undeleteextrahelp": "Nuoriedamė atkortė vėsa poslapi, palikit vėsas varnales napažīmietas ėr\nspauskėt '''''Atkortė'''''. Nuoriedamiė atlėktė pasirėnktini atstatīma, pažīmiekit varnales šėtū versėju, katras nuorietomiet atstatītė, ėr spauskėt '''''Atkortė'''''. Paspaudus\n'''''Ėš naujė''''' bos ėšvalītuos vėsos varnalės ėr kuomentara lauks.",
        "undeleterevisions": "$1 {{PLURAL:$1|versėjė|versėjės|versėju}} soarkīvouta",
        "undeletehistorynoadmin": "Šėts straipsnis bova ėštrints. Trīnima prižastis\nruodoma žemiau, teipuogi kas redagava poslapi\nlėgė trīnima. Ėštrintū poslapiu tekstos īr galėmas tėk admėnėstratuoriam.",
        "undelete-revision": "Ėštrėnta $1 versėjė, katra $4 d. $5 padėrba $3:",
        "undeleterevision-missing": "Neteisėnga a dėngosė versėjė. Tamsta mažo torėt bluoga nūruoda, a versėjė bova atkorta a pašalėnta ėš arkīva.",
-       "undeletebtn": "Atkortė",
-       "undeletelink": "veizietė/atstatītė",
+       "undeletebtn": "Grōžintė",
+       "undeletelink": "veizietė/grōžintė",
        "undeleteviewlink": "veizietė",
        "undeleteinvert": "Žīmietė prīšėngā",
-       "undeletecomment": "Kuomentars:",
-       "undeletedrevisions": "atkorta $1 {{PLURAL:$1|versėjė|versėjės|versėju}}",
-       "undeletedrevisions-files": "atkorta $1 {{PLURAL:$1|versėjė|versėjės|versėju}} ėr $2 {{PLURAL:$2|fails|failā|failu}}",
-       "undeletedfiles": "atkorta $1 {{PLURAL:$1|fails|failā|failu}}",
-       "undeletedpage": "'''$1 bova atkurts'''\nParveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė paskotėniu trīnimu ėr atkorėmu sāraša.",
-       "undelete-header": "Veizėkit [[Special:Log/delete|trīnima istuorėjuo]] paskoteniausē ėštrintū poslapiu.",
+       "undeletecomment": "Dingstės:",
+       "undeletedrevisions": "$1 {{PLURAL:$1|pakeitėms sogrōžints|pakeitėmā sogrōžintė|pakeitėmu sogrōžintu}} īr",
+       "undeletedrevisions-files": "sogrōžintaː $1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}} ėr $2 {{PLURAL:$2|abruozdielis|abruozdielē|abruozdieliu}}",
+       "undeletedfiles": "sogrōžintaː {{PLURAL:$1|abruozdielis|abruozdielē|abruozdieliu}}",
+       "undeletedpage": "'''$1 bova pargōžints'''\nParveizėkat [[Special:Log/delete|trīnėmu sāroša]], ka regietomiet, kas dabā ėšrinta/grōžinta īr.",
+       "undelete-header": "Veizėkat [[Special:Log/delete|trīnėma istuorėjuo]] paskoteniausē ėštrintus poslapius.",
        "undelete-search-box": "Ėiškuotė ėštrintū poslapiu",
        "undelete-search-prefix": "Ruodītė poslapios pradedant so:",
        "undelete-search-submit": "Ėiškuotė",
        "undelete-no-results": "Nabova rasta juokė atėtėnkontė poslapė ėštrīnima arkīve.",
        "undelete-show-file-confirm": "A ėš tėkrā nuorėt parveizietė ėštrėnta faila „<nowiki>$1</nowiki>“ $2 $3 versėjė?",
        "undelete-show-file-submit": "Tēp",
-       "namespace": "Vardū srėtis:",
+       "namespace": "Vardū srėtės:",
        "invert": "Žīmietė prīšėngā",
-       "namespace_association": "Sosėrėšos vardū srėtės",
+       "namespace_association": "Prėgolontė vardū srėtės",
        "blanknamespace": "(Pagrėndinė)",
        "contributions": "Nauduotuojė duovis",
        "contributions-title": "Nauduotuojė $1 duovis",
        "mycontris": "Duovis",
        "contribsub2": "Nauduotuojė $1 ($2)",
        "uctop": " (vielībs)",
-       "month": "Nu mienėsė (ėr onkstiau):",
-       "year": "Nu metu (ėr onkstiau):",
+       "month": "Nug mienėsė (ėr onkstiau):",
+       "year": "Nug metu (ėr onkstiau):",
        "sp-contributions-newbies": "Ruodītė tėk naujū prieteliu duovios",
        "sp-contributions-newbies-sub": "Naujuoms paskīruoms",
        "sp-contributions-newbies-title": "Nauduotuoju keitėmā naujuoms paskīruoms",
        "sp-contributions-blocklog": "Bluokavėmu istuorėjė",
        "sp-contributions-suppresslog": "panaikėnts nauduotuojė duovis",
-       "sp-contributions-deleted": "Panaikėnts nauduotuojė duovis",
+       "sp-contributions-deleted": "ėštrints nauduotuojė duovis",
        "sp-contributions-uploads": "abruozdielē",
        "sp-contributions-logs": "Specēliūju veiksmū istuorėjė",
        "sp-contributions-talk": "Aptarėms",
-       "sp-contributions-userrights": "Nauduotuoju teisiu valdīms",
+       "sp-contributions-userrights": "nauduotuoju teisiu rėkiavėms",
+       "sp-contributions-blocked-notice": "Nauduotuos ožgints īr.\nApatiuo paruodīta kas ė kāpː",
+       "sp-contributions-blocked-notice-anon": "Tas IP adresos ožgints īr.\nApatiuo paruodīta kas ė kāpː",
        "sp-contributions-search": "Ėiškuotė duovė",
        "sp-contributions-username": "IP adresos a nauduotuojė vards:",
        "sp-contributions-toponly": "Ruodītė tėktās paskiausius keitėmus",
        "whatlinkshere": "Sosėjėn straipsnē",
        "whatlinkshere-title": "Poslapē, katrėi ruod i \"$1\"",
        "whatlinkshere-page": "Poslapis:",
-       "linkshere": "Šėtė poslapē ruod i '''[[:$1]]''':",
+       "linkshere": "Anėi poslapē ruod i '''[[:$1]]''':",
        "nolinkshere": "I '''[[:$1]]''' nūruodu nier.",
        "nolinkshere-ns": "Nurodītuo vardū srėtī anė vėins poslapis neruod i '''[[:$1]]'''.",
-       "isredirect": "nukreipēmasės poslapis",
-       "istemplate": "iterpims",
-       "isimage": "faila nūruoda",
-       "whatlinkshere-prev": "$1 {{PLURAL:$1|onkstesnis|onkstesni|onkstesniū}}",
+       "isredirect": "nusokėma poslapis",
+       "istemplate": "īspraudėms",
+       "isimage": "abruozdielė nūruoda",
+       "whatlinkshere-prev": "$1 {{PLURAL:$1|pėrmesnis|pėrmesnė|pėrmesniū}}",
        "whatlinkshere-next": "$1 {{PLURAL:$1|kėts|kėtė|kėtū}}",
        "whatlinkshere-links": "← nūruodas",
-       "whatlinkshere-hideredirs": "$1 nukreipėmus",
+       "whatlinkshere-hideredirs": "$1 nusokėmus",
        "whatlinkshere-hidetrans": "$1 itraukėmus",
        "whatlinkshere-hidelinks": "$1 nūruodas",
        "whatlinkshere-hideimages": "$1 abruozdieliu nūruodas",
-       "whatlinkshere-filters": "Fėltrā",
-       "block": "Ožblokoutė nauduotuoja",
-       "unblock": "Atblokoutė nauduotuoja",
-       "blockip": "Ožblokoutė nauduotuoja",
-       "blockip-legend": "Blokoutė nauduotuoja",
+       "whatlinkshere-filters": "Kuošeklē",
+       "block": "Ožgintė nauduotuoji",
+       "unblock": "Nauduotuojė ožgīnėma bengtė",
+       "blockip": "Ožgintė {{GENDER:$1|nauduotoji}}",
+       "blockip-legend": "Ožgintė nauduotuoji",
        "blockiptext": "Nauduokėt šėta fuorma noriedamė oždraustė redagavėma teises nuruodīto IP adreso a nauduotuojo. Tas torietu būt atlėikama tam, kū sostabdītomiet vandalėzma, ė vagol [[{{ns:project}}:Puolitėka|puolitėka]].\nŽemiau nuruodīkėt tėkslē prižastė.",
        "ipaddressorusername": "IP adresos a nauduotuojė vards",
-       "ipbexpiry": "Galiuojėma čiesos",
-       "ipbreason": "Prīžastis:",
-       "ipbreason-dropdown": "*Dažniausės bluokavėma prižastīs\n** Melagėngas infuormacėjės rašīms\n** Torėnė trīnims ėš poslapiu\n** Spaminims\n** Zaunu/bikuo rašīms i poslapios\n** Gondinėmā/Pėktžuodiavėmā\n** Pėktnaudžiavėms paskėruomis\n** Netėnkams nauduotuojė vards",
-       "ipbcreateaccount": "Nelaistė kortė paskīrū",
-       "ipbemailban": "Nelaistė nauduotuojō siōstė el. gruomatas",
+       "ipbexpiry": "Vēkėma čiesos",
+       "ipbreason": "Dingstės:",
+       "ipbreason-dropdown": "*Tonkiausės ožgīnėma dingstisː\n** Neteisībės rašīms\n** Torėnė trīnims ėš poslapiu\n** Šiokšlėnėms\n** Zaunu/bikuo rašīms i poslapius\n** Gondėnėmā/Pėktžuodiavėmā\n** Nauduojėms daugiaus kāp vėinuos paskīruos\n** Natinkams nauduotuojė vards",
+       "ipbcreateaccount": "Nelaistė dėrbtė paskīrū",
+       "ipbemailban": "Nelaistė nauduotuojō siōstė el. gromatas",
        "ipbenableautoblock": "Autuomatėškā blokoutė tuo nauduotuojė paskiausē nauduota IP adresa, ė bikuokius paskesnius IP adresus, ėš katrū ons miegin redagoutė",
-       "ipbsubmit": "Blokoutė šėta nauduotuoja",
+       "ipbsubmit": "Ožgintė ton nauduotuoji",
        "ipbother": "Kėtuoks čiesos",
-       "ipboptions": "2 adīnas:2 hours,1 dėina:1 day,3 dėinas:3 days,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mienesē:3 months,6 mienesē:6 months,1 metā:1 year,omžėms:infinite",
+       "ipboptions": "2 adīnė:2 hours,1 dėina:1 day,3 dėinas:3 days,1 nedielė:1 week,2 nedielė:2 weeks,1 mienou:1 month,3 mienesē:3 months,6 mienesē:6 months,1 metā:1 year,omžėms:infinite",
        "ipbwatchuser": "Keravuotė tuo nauduotuojė poslapi ėr anuo aptarėma poslapi",
        "ipb-change-block": "Parblokoutė ta nauduotuoja so šėtās nustatīmās",
-       "ipb-confirm": "Tėkrā blokoutė",
+       "ipb-confirm": "Tėkrā ožgintė?",
        "badipaddress": "Nelaistėns IP adresos",
-       "blockipsuccesssub": "Ožblokavėms pavīka",
-       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] bova ožblokouts.\n<br />Aplonkīkėt [[Special:BlockList|IP blokavėmu istuorėjė]] noriedamė ana parveizėtė.",
-       "ipb-edit-dropdown": "Redagoutė blokavėmu prīžastis",
-       "ipb-unblock-addr": "Atblokoutė $1",
-       "ipb-unblock": "Atblokoutė nauduotuojė varda a IP adresa",
-       "ipb-blocklist": "Ruodītė asontius bluokavėmus",
+       "blockipsuccesssub": "Nauduotuos bova ožgints",
+       "blockipsuccesstext": "[[Special:Contributions/$1|$1]] bova ožgints.\n<br />Aplonkīkat [[Special:BlockList|IP ožginėmu istuorėjė]], jēgo nuorat anou parveizietė.",
+       "ipb-edit-dropdown": "Mainītė ožgīnėma dingstis",
+       "ipb-unblock-addr": "Nug $1 nujėmtė ožgīnėma",
+       "ipb-unblock": "Nug nauduotuojė varda a IP adresa nujėmtė ožgīnėma",
+       "ipb-blocklist": "Ruodītė vielībousius ožgīnėmus",
        "ipb-blocklist-contribs": "$1 duovis",
-       "unblockip": "Atbluokoutė nauduotuoja",
+       "unblockip": "Nauduotuojė ožgīnėma bengtė",
        "unblockiptext": "Nauduokėt šėta fuorma, kū atkortomiet rašīma teises\nonkstiau ožbluokoutam IP adresō a nauduotuojō.",
-       "ipusubmit": "Atblokoutė šėta adresa",
-       "unblocked": "[[User:$1|$1]] bova atbluokouts",
-       "unblocked-range": "$1 bova atblokouts.",
-       "unblocked-id": "Bluokavėms $1 bova pašalėnts",
-       "unblocked-ip": "[[Special:Contributions/$1|$1]] bova atblokouts.",
-       "blocklist": "Ožblokoutė nauduotuojē",
-       "ipblocklist": "Ožblokoutė nauduotuojē",
-       "ipblocklist-legend": "Rastė ožblokouta nauduotuoja",
-       "blocklist-expiry": "Beng galiuotė",
-       "blocklist-by": "Blokoutuos",
-       "blocklist-params": "Blokavėma nustatīmā",
-       "blocklist-reason": "Prīžastis",
+       "ipusubmit": "Ton ožgīnėma nojėmtė",
+       "unblocked": "Nauduotuojė [[User:$1|$1]] ožgīnėms nug dėrbėma bengės",
+       "unblocked-range": "$1 ožgīnėms nug dėrbėma bengės",
+       "unblocked-id": "$1 ožgīnėms nug dėrbėma bengės",
+       "unblocked-ip": "[[Special:Contributions/$1|$1]] ožgīnėms nug dėrbėma bengės.",
+       "blocklist": "Ožgintė nauduotuojē",
+       "ipblocklist": "Ožgintė nauduotuojē",
+       "ipblocklist-legend": "Rastė ožginta nauduotuoji",
+       "blocklist-timestamp": "Čiesos",
+       "blocklist-target": "Kon",
+       "blocklist-expiry": "Beng vēktė",
+       "blocklist-by": "Kas ožgīnė",
+       "blocklist-params": "Ožgīnėma nustatīmā",
+       "blocklist-reason": "Dingstės",
        "ipblocklist-submit": "Ėiškuotė",
+       "ipblocklist-localblock": "Ožgīnėms vėituo",
+       "ipblocklist-otherblocks": "{{PLURAL:$1|Kėts ožgīnėms|Kėtė ožgīnėmā}}",
        "infiniteblock": "neribuotā",
-       "expiringblock": "beng galiuotė $1 $2",
+       "expiringblock": "beng vēktė $1 $2",
        "anononlyblock": "vėn anuonėmā",
-       "noautoblockblock": "autuomatinis blokavėms ėšjongts",
-       "createaccountblock": "paskīrū korėms oždrausts īr",
-       "emailblock": "el. pašts ožblokouts",
+       "noautoblockblock": "savaimėšks ožgīnėms nevēk",
+       "createaccountblock": "paskīrū dėrbėms ožgints īr",
+       "emailblock": "el. paštos ožgints īr",
        "blocklist-nousertalk": "negal rašītė sava aptarėmė",
        "ipblocklist-empty": "Blokavėmu sarašos toščias.",
        "ipblocklist-no-results": "Prašuoms IP adresos a nauduotuojė vards ožblokouts nier.",
-       "blocklink": "ožblokoutė",
-       "unblocklink": "atbluokoutė",
+       "blocklink": "ožgintė",
+       "unblocklink": "ožgīnėma bengtė",
        "change-blocklink": "keistė bluokavėma nustatīmus",
        "contribslink": "duovis",
        "emaillink": "siōstė pašta",
        "autoblocker": "Autuomatėnis ožbluokavėms, nes dalėnaties IP adreso so nauduotuojo \"$1\". Prīžastės - \"$2\".",
-       "blocklogpage": "Ožblokavėmu istuorėjė",
-       "blocklogentry": "ožblokava „[[$1]]“, blokavėma čiesos - $2 $3",
+       "blocklogpage": "Ožgīnėmu sārošos",
+       "blocklog-showlog": "Nauduotuos jau bova ožgints pėrmiou.\nApatiuo veiziekat kas ė kāpː",
+       "blocklogentry": "ožgīnė „[[$1]]“ nug dėrbėma, tas vēk ton čiesa - $2 $3",
        "reblock-logentry": "pakeistė [[$1]] bluokavėma nustatīmā, naus bluokavėma čiesos īr $2 $3",
        "blocklogtext": "Čė īr nauduotuoju blokavėma ėr atblokavėma sārašos. Autuomatėškā blokoutė IP adresā nier ėšvardėntė. Jeigu nuorėt paveizėtė nūnā blokoujamus adresus, veizėkėt [[Special:BlockList|IP ožbluokavėmu istuorėjė]].",
-       "unblocklogentry": "atbluokava $1",
-       "block-log-flags-anononly": "vėn anonėmėnē nauduotuojē",
+       "unblocklogentry": "nug $1 nujėmtė ožgīnėma",
+       "block-log-flags-anononly": "tėktās anuonėmėnē nauduotuojē",
        "block-log-flags-nocreate": "privėlėju kūrėms ėšjungts",
-       "block-log-flags-noautoblock": "automatėnis blokavėms ėšjungts",
-       "block-log-flags-noemail": "e-pašts bluokouts īr",
+       "block-log-flags-noautoblock": "savaimėšks ožgīnėms nevēk",
+       "block-log-flags-noemail": "el. paštos ožgints īr",
+       "block-log-flags-nousertalk": "nagal rašītė sava aptarėma poslapin",
+       "block-log-flags-angry-autoblock": "vēk prapliests ožgīnėms",
+       "block-log-flags-hiddenname": "nauduotuojė vards pakavuots īr",
        "ipb_expiry_invalid": "Galiuojėma čiesos nelaistėns.",
-       "ipb_already_blocked": "„$1“ jau ožblokouts",
+       "ipb_already_blocked": "„$1“ jau ožgints",
        "ipb-needreblock": "$1 jau īr ožblokouts. A nuorėt pakeistė nustatīmus?",
+       "ipb-otherblocks-header": "{{PLURAL:$1|Kėts ožgīnėms|Kėtė ožgīnėmā}}",
        "unlockdbtext": "Atrakėnos doumenū baze grōžėns galimībe vėsėm\nnauduotuojam redagoutė poslapios, keistė anū nostatīmos, keistė anū keravuojamu sāraša ė\nkėtos dalīkos, rēkalaujontios pakeitėmu doumenū bazė.\nPrašuom patvėrtėntė šėtā, kū ketinat padarītė.",
        "locknoconfirm": "Tamsta neoždiejot patvėrtinėma varnalės.",
        "unlockdbsuccesstext": "Doumenū bazė bova atrakėnta.",
-       "move-page": "Pervadėntė $1",
-       "move-page-legend": "Poslapė pervadėnims",
-       "movepagetext": "Nauduodamė žemiau pateikta fuorma, parvadinsėt poslapi neprarasdamė anuo istuorėjės.\nSenasā pavadinėms pataps nukrēpiamouju - ruodīs i naujīji.\nTamsta esat atsakėngs ož šėta, kū nūruodas ruodītu i ten, kor ė nuorieta.\n\nPrimenam, kū poslapis '''nebus''' parvadints, jēgo jau īr poslapis naujo pavadinėmo, nebent tas poslapis īr tuščės a nukreipēmasis ė netor redagavėma istuorėjės.\nTumet, Tamsta galėt parvadintė poslapi seniau nauduota vardu, jēgo priš šėta ons bova par klaida parvadints, a egzėstounantiu poslapiu sogadintė negalėt.\n\n'''DIEMESĖ!'''\nJēgo parvadinat puopoliaru poslapi, tas gal sokeltė nepagēdaunamu šalotiniu efektu, tudie šėta veiksma vīkdīkit tėk isitėkine,\nkū soprantat vėsas pasiekmes.",
+       "move-page": "Parvadintė $1",
+       "move-page-legend": "Poslapė parvadėnėms",
+       "movepagetext": "Nauduojont ta skvarma, katra apatiuo īr, parvadinsat poslapi ėr ėšlaikīsat anuo istuorėjė.\nOnkstesnis pavadėnėms palėks nosokėmo - ons ruodīs poslapin naujė varda.\nTamsta esat atsakėngs, ka nūruodas ruodītom tenā, kor ė rēk.\n\nAtminkat, ka poslapis '''nabus''' parvadints, jēgo jau īr poslapis naujo pavadinėmo, tėktās jēgo ons īr dīks aba netor keitėmu istuorėjės.\nTumet, Tamsta galat parvadintė poslapi seniou nauduoto vardo, jēgo priš šėta ons bova par klaida parvadints, ar esontiu poslapiu sogadintė negalat.\n\n'''ATĖDĖS!'''\nJēgo parvadinat tonkē nauduojama poslapi, ta galat prėdėrbtė ėškadas. Tudie kervauokat, ka dėrbat.",
        "movepagetalktext": "Sosėits aptarėma poslapis bus autuomatėškā parkelts draugom so ano, '''ėšskīrus:''':\n*Poslapis nauju pavadinėmo tor netoštė aptarėma poslapi, a\n*Paliksėt žemiau asontė varnale nepažīmieta.\nŠėtās atviejās Tamsta sava nužiūra torėt parkeltė a apjongtė aptarėma poslapi.",
        "movearticle": "Parvadintė poslapi:",
+       "moveuserpage-warning": "<strong>Atėdės:</strong> Tamsta parvadėnsat nauduotuojė poslapi. Žėnuokat, ka tėktās poslapis bat <em>ne patsā nauduotuos</em> bos parvadints.",
+       "movecategorypage-warning": "<strong>Atėdės:</strong> Tamsta parvadinsat kateguorėjės poslapi. Žėnuokat, ka tėktas poslapis bos parvadints, bat <em>poslapē, katrėi anon prėgol,</em> tor būtė sokergtė apent.",
        "movenologintext": "Nuoriedamė parvadintė poslapi, torėt būtė ožsėregėstravės nauduotuos ė tēpuogi būtė [[Special:UserLogin|prisėjongės]].",
        "newtitle": "Naus pavadėnėms:",
-       "move-watch": "Keravuotė šėta poslapi",
-       "movepagebtn": "Parvadintė poslapė",
-       "pagemovedsub": "Parvadinta siekmingā",
+       "move-watch": "Keravuotė ton poslapi",
+       "movepagebtn": "Parvadintė poslapi",
+       "pagemovedsub": "Parvadėnėms pavīka gerā",
        "movepage-moved": "'''\"$1\" bova parvadints i \"$2\"'''",
-       "movepage-moved-redirect": "Nukreipims bova sokorts.",
+       "movepage-moved-redirect": "Nusokėms bova padėrbts.",
        "articleexists": "Straipsnis so tuokiu vardo jau īr\na parinktāsis vards īr bluogs.\nParinkat kėta varda.",
-       "movetalk": "Parkeltė sosėta aptarėma poslapi.",
+       "movetalk": "Parkeltė prėgolonti aptarėma poslapi.",
        "movepage-page-moved": "Poslapis $1 bova parvadints kāp $2.",
-       "movelogpage": "Parvardinėmu istuorėjė",
+       "movelogpage": "Parvardėnėmu istuorėjė",
        "movelogpagetext": "Sārašos parvadintu poslapiu.",
-       "movereason": "Prīžastis:",
+       "movereason": "Dingstės:",
        "revertmove": "atmestė",
        "delete_and_move": "Ėštrintė ė parkeltė",
        "delete_and_move_text": "==Rēkalings ėštrīnims==\nPaskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū galietomiet parvadintė?",
        "delete_and_move_confirm": "Tēp, trintė poslapi",
-       "delete_and_move_reason": "Ėštrinta diel parkielima",
+       "delete_and_move_reason": "Ėštrinta, ka $1 galietom būtė parvadints",
+       "selfmove": "Nė̄šēn parvadėntė i ton pati poslapi.",
        "move-leave-redirect": "Parvadėnant paliktė nukreipėma",
-       "export": "Ekspuortoutė poslapius",
+       "export": "Ėškeltė poslapius",
        "exportcuronly": "Eksportoutė tėktās dabartėne versėjė, neitraukiant istuorėjės",
        "export-submit": "Eksportoutė",
        "export-addcattext": "Pridietė poslapius ėš kateguorėjės:",
        "allmessagescurrent": "Dabartėnis teksts",
        "allmessagestext": "Čė pateikamė sėstemėniu pranešėmu sārašos, esontis MediaWiki srėtie.",
        "allmessagesnotsupportedDB": "'''{{ns:special}}:Allmessages''' nepalaikuoms īr, nes nustatīms '''$wgUseDatabaseMessages''' ėšjungts īr.",
+       "allmessages-filter-legend": "Kuošeklis",
+       "allmessages-filter-unmodified": "Naparkeistė",
+       "allmessages-filter-all": "Vėsė",
+       "allmessages-filter-modified": "Parkeistė",
+       "allmessages-language": "Kalbaː",
+       "allmessages-filter-submit": "Ēk",
        "allmessages-filter-translate": "Pargoldītė",
        "thumbnail-more": "Padėdintė",
+       "filemissing": "Nie abruozdielė",
        "thumbnail_error": "Klaida koriant somažėnta pavēkslieli: $1",
        "thumbnail_invalid_params": "Nalaistieni miniatiūras parametrā",
        "thumbnail_dest_directory": "Nepavīkst sokortė paskėrtėis papkes",
        "tooltip-pt-userpage": "Tamstas nauduotuojė poslapis",
        "tooltip-pt-anonuserpage": "Nauduotuojė poslapis Tamstas IP adresō",
        "tooltip-pt-mytalk": "Tamstas aptarėma poslapis",
-       "tooltip-pt-preferences": "Mona nostatīmā",
-       "tooltip-pt-watchlist": "Poslapiu sārašos, katrūs Tamsta pasėrėnkuot keravuotė.",
-       "tooltip-pt-mycontris": "Tamstas darītu keitimu sārašos",
-       "tooltip-pt-login": "Rekuomendoujam prėsėjongtė, nuors tas nėr privaluoma.",
+       "tooltip-pt-preferences": "Mona nustatīmā",
+       "tooltip-pt-watchlist": "Poslapiu, katrūs Tamsta pasėrėnkuot keravuotė, sārošos.",
+       "tooltip-pt-mycontris": "Tamstas dėrbtū keitėmu sārašos",
+       "tooltip-pt-login": "Kvėitam prėsėjongtė, nuors tas ė nie būtėna.",
        "tooltip-pt-logout": "Atsėjongtė",
+       "tooltip-pt-createaccount": "Tamstā kvėitam padėrbtė paskīra ė prėsėjongtė; bat tas nie būtėina",
        "tooltip-ca-talk": "Poslapė torėnė aptarėms",
-       "tooltip-ca-edit": "Tamsta galėt keistė ta poslapi. Nepamėrškėt paspaustė parvaizuos mīgtoka priš ėšsauguodamė.",
-       "tooltip-ca-addsection": "Pradietė nauja skīriu",
-       "tooltip-ca-viewsource": "Poslapis īr ožrakints. Galėt parveizėt torini.",
-       "tooltip-ca-history": "Unkstesnės poslapė versėjės.",
+       "tooltip-ca-edit": "Taisītė ton poslapė",
+       "tooltip-ca-addsection": "Pradietė naujė skėrsneli",
+       "tooltip-ca-viewsource": "Ons poslapis apsergiets īr. Galat tėktās parveiziet kas anamė ožrašīta.",
+       "tooltip-ca-history": "Onkstesnė ton poslapė atmainā.",
        "tooltip-ca-protect": "Ožrakintė šėta poslapi",
+       "tooltip-ca-unprotect": "Keistė ton poslapė apsergiejėma",
        "tooltip-ca-delete": "Trėntė ta poslapi",
        "tooltip-ca-move": "Parvadėntė poslapi",
-       "tooltip-ca-watch": "Pridietė poslapi i keravuojamu sāraša",
+       "tooltip-ca-watch": "Pridietė poslapi i keravuojamu sāroša",
        "tooltip-ca-unwatch": "Pašalėntė poslapi ėš keravuojamu sāraša",
        "tooltip-search": "Ėiškuotė šėtom pruojektė",
-       "tooltip-search-go": "Ētė i poslapi su tuokiu pavadėnėmu jēgo tuoks īr",
+       "tooltip-search-go": "Ētė poslapin so tuokio pavadėnėmo, jēgo tuoks īr",
        "tooltip-search-fulltext": "Ėiškuotė poslapiu so tuokiu tekstu",
-       "tooltip-p-logo": "Pėrms poslapis",
+       "tooltip-p-logo": "Ētė i pėrma poslapi",
        "tooltip-n-mainpage": "Aplonkītė pėrma poslapi",
        "tooltip-n-mainpage-description": "Ētė i pėrma poslapi",
-       "tooltip-n-portal": "Aple pruojekta, ka galėma vēktė, kamė ka rastė",
+       "tooltip-n-portal": "Aple pruojekta, kū galėma vēktė, kamė kū rastė",
        "tooltip-n-currentevents": "Raskėt naujausė infuormacėjė",
        "tooltip-n-recentchanges": "Vielībūju pakeitėmu sārašos tamė projektė.",
        "tooltip-n-randompage": "Atidarītė bikuoki straipsni",
        "tooltip-n-help": "Vėita, katruo rasėt rūpėmus atsakīmus.",
-       "tooltip-t-whatlinkshere": "Poslapiu sārašos, ruodantiu i čė",
-       "tooltip-t-recentchangeslinked": "Paskotėnē pakeitėmā straipsnious, pasėikiamous ėš šėta straipsnė",
+       "tooltip-t-whatlinkshere": "Poslapiu sārašos, katrėi ruod čiuonās",
+       "tooltip-t-recentchangeslinked": "Paskotėnē pakeitėmā straipsniūs, pasėikiamūs nug šėta straipsnė",
        "tooltip-feed-rss": "Šėta poslapė RSS šaltėnis",
-       "tooltip-feed-atom": "Šėta poslapė Atom šaltėnis",
-       "tooltip-t-contributions": "Ruodītė šėta nauduotuojė keitėmu sāraša",
+       "tooltip-feed-atom": "Ton poslapė Atom šaltėnis",
+       "tooltip-t-contributions": "Ruodītė ton nauduotuojė duovi",
        "tooltip-t-emailuser": "Siōstė gromata šėtom prietėliō",
-       "tooltip-t-upload": "Idietė abruozdielios a medėjės failos",
+       "tooltip-t-upload": "Ožkrautė abruozdielius",
        "tooltip-t-specialpages": "Specēliūju poslapiu sārašos",
-       "tooltip-t-print": "Šėta poslapė versėjė spausdėnėmō",
-       "tooltip-t-permalink": "Vėslaikėnė nūruoda i šėta poslapė versėje",
+       "tooltip-t-print": "Šėta poslapė atmains spausdėnėmō",
+       "tooltip-t-permalink": "Nūlatėnė nūruoda ton poslapė atmainuō",
        "tooltip-ca-nstab-main": "Ruodītė poslapė torėni",
        "tooltip-ca-nstab-user": "Ruodītė nauduotuojė poslapi",
-       "tooltip-ca-nstab-special": "Šėts poslapis īr specēlosis - anuo nagalėm redagoutė.",
+       "tooltip-ca-nstab-special": "Tas poslapis īr specēlos - anuo nagalėm keistė.",
        "tooltip-ca-nstab-project": "Ruodītė pruojekta poslapi",
        "tooltip-ca-nstab-image": "Ruodītė abruozdielė poslapi",
        "tooltip-ca-nstab-mediawiki": "Veizietė sėstėmas pranešėma",
        "tooltip-ca-nstab-help": "Ruodītė pagelbas poslapi",
        "tooltip-ca-nstab-category": "Ruodītė kateguorėjės poslapi",
        "tooltip-minoredit": "Pažīmietė pakeitėma kāp maža",
-       "tooltip-save": "Ėšsauguotė pakeitėmos",
-       "tooltip-preview": "Pakeitėmu parveiza, prašuom parveizėt priš ėšsaugont!",
-       "tooltip-diff": "Ruod, kuokios pakeitėmos padariet tekste.",
+       "tooltip-save": "Ėšsauguotė pakeitėmus",
+       "tooltip-preview": "Ta īr pakeitėmu parveiza. Prašuom parveizat prīš ėšsaugont!",
+       "tooltip-diff": "Ruod, kū parkeitiet straipsni.",
        "tooltip-compareselectedversions": "Veizėtė abodvėju pasėrėnktū poslapė versėju skėrtomos.",
        "tooltip-watch": "Pridietė šėta poslapi i keravuojamu sāraša",
        "tooltip-recreate": "Atkortė poslapi napaisant šėto, kū ans bova ėštrints",
-       "tooltip-rollback": "Atšauktė atmestus šėta poslapė keitėmus i vielībiause versėje par vėina paspaudėma",
-       "tooltip-undo": "\"Anolioutė\" atmeta ta keitėma ėr atidara unkstesnies versėjės redagavėma skvarma. Leid pridietė atmetėma prīžasti kuomentarūsė.",
+       "tooltip-rollback": "Sogrōžintė poslapi tāp, kāp ons bova prīš vielībūs ton nauduotuojė pardėrbėmus",
+       "tooltip-undo": "„Grōžėntė“ pargrōžėn pėrmesni pakeitėma ė laid ožrašītė, kudie īr dėrbams pargrōžėnėms.",
        "tooltip-preferences-save": "Sauguotė nustatīmus",
-       "tooltip-summary": "Īvestė trompa santrauka",
+       "tooltip-summary": "Doukat trompa aprašīma",
        "anonymous": "Neregėstrouts nauduotuos",
        "siteuser": "{{SITENAME}} nauduotuos $1",
        "lastmodifiedatby": "Šėta poslapi paskotini karta redagava $3 $2, $1.",
        "siteusers": "{{SITENAME}} {{PLURAL:$2|nauduotuos|nauduotuojē}} $1",
        "creditspage": "Poslapė kūriejē",
        "spamprotectiontitle": "Prišreklamėnis fėltros",
-       "spamprotectiontext": "Poslapis, katra nuoriejot ėšsauguotė bova ožblokouts prišreklamėnė fėltra. Šėtā tėkriausē sokielė nūruoda i kėta svetaine. Ėšėmkit nūruoda ė pamieginkėt viel.",
+       "spamprotectiontext": "Poslapis, katra nuoriejot ėšsauguotė bova ožgints prīšreklamėnė kuošeklė. Tas gavas tėkriausē tudie, ka idiejėt nagalėma laukėnė nūruoda.",
        "spamprotectionmatch": "Šėts tekstos bova atpažėnts prišreklamėnė fėltra: $1",
        "spambot_username": "''MediaWiki'' reklamu šalėnėms",
        "spam_reverting": "Atkoriama i onkstesne versėje, katra nator nūruodu i $1",
        "spam_blanking": "Vėsos versėjės toriejė nūruodu i $1. Ėšvaluoma",
+       "pageinfo-header-basic": "Poslapė žėnės",
        "pageinfo-header-edits": "Keitėma istuorėjė",
        "pageinfo-header-restrictions": "Poslapė apsauga",
        "pageinfo-header-properties": "Poslapė savībės",
        "pageinfo-article-id": "Poslapė ID",
        "pageinfo-language": "Poslapė kalba",
+       "pageinfo-firstuser": "Poslapė dėrbiejē",
+       "pageinfo-firsttime": "Padėrbėma čiesos",
+       "pageinfo-lastuser": "Vielībs dėrbies",
+       "pageinfo-lasttime": "Vielība pakeitėma čiesos",
+       "pageinfo-edits": "Vėsū keitėmu skaitlios",
        "pageinfo-toolboxlink": "Poslapė infuormacėjė",
+       "pageinfo-redirectsto": "Nusokėms ont",
+       "pageinfo-redirectsto-info": "aple",
+       "pageinfo-contentpage-yes": "Tēp",
+       "pageinfo-protect-cascading-yes": "Tēp",
        "markaspatrolleddiff": "Žīmietė, kū patikrėnta",
        "markaspatrolledtext": "Pažīmietė, ka poslapis patėkrėnts īr",
        "markedaspatrolled": "Pažīmiets kāp patėkrints",
        "thumbsize": "Somažėntu pavēkslieliu didums:",
        "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|poslapis|poslapē|poslapiu}}",
        "file-info": "faila dėdoms: $1, MIME tips: $2",
-       "file-info-size": "$1 × $2 taškū, faila dėdoms: $3, MIME tips: $4",
+       "file-info-size": "$1 × $2 taškū, abruozdielė dėdloms: $3, MIME būds: $4",
        "file-nohires": "Geresnis ėšraiškėms negalėms.",
-       "svg-long-desc": "SVG fails, fuormalē $1 × $2 puškiu, faila dėdoms: $3",
-       "show-big-image": "Pėlns ėšraiškėms",
-       "show-big-image-preview": "Parvaizos dėdoms: $1.",
-       "show-big-image-other": "{{PLURAL:$2|Kėta rezoliocėjė|Kėtas rezoliocėjės}}: $1.",
+       "svg-long-desc": "SVG skvarmou, fuormalē $1 × $2 puškiu, skvarmenė dėdloms: $3",
+       "show-big-image": "Pėrms abruozdielis",
+       "show-big-image-preview": "Parvaizos dėdloms: $1.",
+       "show-big-image-other": "{{PLURAL:$2|Kėts dėdloms|Kėtė dėdlomā|Kėtū dėdlomu}}: $1.",
        "show-big-image-size": "$1 × $2 pikselē",
        "newimages": "Naujausiu abruozdieliu galerėjė",
        "imagelisttext": "Žemiau īr '''$1''' failu sārašos, sorūšiouts $2.",
        "newimages-legend": "Rietis",
        "newimages-label": "Faila vards (ar anuo dalis):",
        "ilsubmit": "Ėiškoutė",
-       "bydate": "palē data",
+       "bydate": "vagol čiesa",
        "sp-newimages-showfrom": "Ruodītė naujus abruozdielius pradedant nū $2, $1",
+       "seconds": "{{PLURAL:$1|$1 sekondė|$1 sekondės|$1 sekondiu}}",
+       "minutes": "{{PLURAL:$1|$1 mėnotė|$1 mėnotės|$1 mėnotiu}}",
+       "hours": "{{PLURAL:$1|$1 adīna|$1 adīnas|$1 adīnu}}",
+       "days": "{{PLURAL:$1|$1 dėina|$1 dėinas|$1 dėinū}}",
+       "weeks": "{{PLURAL:$1|$1 nedielė|$1 nedielės|$1 nedieliu}}",
+       "months": "{{PLURAL:$1|$1 mienou|$1 mienesē|$1 mienesiu}}",
+       "years": "{{PLURAL:$1|$1 metā|$1 metā|$1 metu}}",
+       "ago": "prīš $1",
        "just-now": "vuo tėk daba",
+       "hours-ago": "prīš $1 {{PLURAL:$1|adīna|adīnas|adīnu}}",
+       "minutes-ago": "prīš $1 {{PLURAL:$1|mėnotė|mėnotės|mėnotiu}}",
+       "seconds-ago": "prīš $1 {{PLURAL:$1|sekondė|sekondės|sekondiu}}",
+       "yesterday-at": "Vakar dėinuo $1",
        "bad_image_list": "Fuormats tuoks īr:\n\nTėk eilotės, prasėdedantės *, īr itraukiamas. Pėrmuojė nūruoda eilotie tor būtė nūruoda i bluoga abruozdieli.\nVėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk ka poslapē, katrūs leidama iterptė abruozdieli.",
        "metadata": "Metadoumenīs",
        "metadata-help": "Šėtom failė īr papėlduomos infuormacėjės, tikriausē pridietos skaitmeninės kameruos a skanėrė, katros bova nauduots anam sokortė a parkeltė i skaitmenėni fuormata. Jēgo fails bova pakeists ėš pradėnės versėjės, katruos nekatruos datalės gal nepėlnā atspėndietė nauja faila.",
        "metadata-fields": "Abruozdielė metadoumenū laukā, nuruodītė tamė pranešėmė, bus itrauktė i abruozdielė poslapi, kumet metadoumenū lentelė bus suskleista. Palē nutīliejėma kėtė laukā bus pakavuotė.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Platoms",
        "exif-imagelength": "Aukštoms",
-       "exif-orientation": "Pasokims",
-       "exif-xresolution": "Gorizuontalus ėšraiškėms",
-       "exif-datetime": "Faila keitėma data ė čiesos",
+       "exif-orientation": "Regėnė pasokėms",
+       "exif-xresolution": "Golos dėdloms",
+       "exif-datetime": "Abruozdielė parkeitėma čiesos",
        "exif-imagedescription": "Abruozdielė pavadėnėms",
-       "exif-make": "Kameras gamėntuos",
-       "exif-model": "Kameras muodelis",
+       "exif-make": "Puortaparata dėrbies",
+       "exif-model": "Puortaparata muodelis",
        "exif-artist": "Autuorios",
-       "exif-colorspace": "Spalvū pristatīms",
+       "exif-colorspace": "Spalvū lauks",
        "exif-compressedbitsperpixel": "Abruozdielė sospaudėma rėžėms",
-       "exif-datetimeoriginal": "Doumenū generavėma data ė čiesos",
+       "exif-pixelydimension": "Abruozdielė platoms",
+       "exif-pixelxdimension": "Abruozdielė augoms",
+       "exif-usercomment": "Pāiškėnėmā",
+       "exif-relatedsoundfile": "Prėgolons garsos",
+       "exif-datetimeoriginal": "Žėnės paderbėma čiesos",
        "exif-exposuretime": "Ėšlaikīma čiesos",
+       "exif-exposuretime-format": "$1 s. ($2)",
        "exif-fnumber": "F skaitlius",
        "exif-brightnessvalue": "Švėisoms",
        "exif-lightsource": "Švėisuos šaltėnis",
        "exif-languagecode": "Kalba",
        "exif-iimversion": "IIM versėjė",
        "exif-iimcategory": "Kateguorėjė",
-       "exif-orientation-1": "Standartėšks",
+       "exif-orientation-1": "Paprasts",
        "exif-xyresolution-i": "$1 puškē cuolī",
        "exif-xyresolution-c": "$1 puškē centėmetrė",
        "exif-componentsconfiguration-0": "nēsa",
        "exif-contrast-0": "Paprasts",
        "exif-contrast-1": "Mažos",
        "exif-contrast-2": "Dėdlis",
-       "namespacesall": "vėsas",
+       "exif-iimcategory-ace": "Mens, koltūra ė pramuogas",
+       "exif-iimcategory-clj": "Nosėkaltėms ė teisė",
+       "exif-iimcategory-dis": "Biedas",
+       "exif-iimcategory-fin": "Ūkis, verslos",
+       "exif-iimcategory-edu": "Muokslos",
+       "exif-iimcategory-evn": "Gomta",
+       "exif-iimcategory-hth": "Svēkata",
+       "exif-iimcategory-lab": "Darbs",
+       "exif-iimcategory-lif": "Puoėlsis",
+       "exif-iimcategory-pol": "Puolėtėka",
+       "exif-iimcategory-rel": "Viera",
+       "exif-iimcategory-sci": "Muokslā",
+       "exif-iimcategory-soi": "Vėišė̄jė dalīkā",
+       "exif-iimcategory-spo": "Spuorts",
+       "exif-iimcategory-war": "Karės, kuovės",
+       "exif-iimcategory-wea": "Uors",
+       "namespacesall": "vėskon",
        "monthsall": "vėsė",
        "confirmemail": "Patvirtėnkėt el. pašta adresa",
        "confirmemail_noemail": "Tamsta netorėt nuruodės teisėnga el. pašta adresa [[Special:Preferences|sava nustatīmūs]].",
        "confirmemail_sent": "Patvirtėnėma gruomata ėšsiōsta.",
        "confirmemail_needlogin": "Tamstā rēk $1, kū patvirtėntomiet sava el. pašta adresa.",
        "confirmemail_loggedin": "Tamstas el. pašta adresos ožtvėrtints īr.",
+       "confirmemail_subject": "{{SITENAME}} el. pašta ožtvirtėnėms",
        "confirmemail_body": "Kažėnkas, mosiet Tamsta IP adreso $1, ožregėstrava\npaskīra „$2“ sosėita so šėtuom el. pašta adresu pruojektė {{SITENAME}}.\n\nKū patvirtėntomiet, kū ta diežotė ėš tėkrā prėklausa Tamstā, ėr aktīvoutomiet\nel. pašta puoslaugi pruojėktė {{SITENAME}}, atdarīkiet ta nūruoda sava naršīklie:\n\n$3\n\nJēgo paskīra regėstravuot *ne* Tamsta, tumet ēkėt ta nūruoda,\nkū atšauktomiet el. pašta adresa patvirtėnėma:\n\n$5\n\nPatvirtėnėma kods bengs galiuotė $4.",
        "invalidateemail": "El. pašta patvirtėnėma atšaukėms",
-       "deletedwhileediting": "Diemesė: Šėts poslapis ėštrints po šėta, kumet pradiejot redagoutė!",
+       "deletedwhileediting": "<strong>Atėdės:</strong> Tas poslapis bova ėštrints pu tuo, kāp pradiejėt anon dėrbtė!",
+       "confirmrecreate": "Nauduotuos [[User:$1|$1]] ([[User talk:$1|aptarėms]]) ėštrīnė ton poslapi pu tuo, kāp anon pradiejėt dėrbtė; ons davė tuokė dingsti:\n: <em>$2</em>\nA tėkrā nuorat anon padėrbtė apent?",
+       "confirmrecreate-noreason": "Nauduotuos [[User:$1|$1]] ([[User talk:$1|aptarėms]]) ėštrīnė ton poslapi pu tuo, kāp anon pradiejėt dėrbtė. A tėkrā nuorat anon padėrbtė apent?",
        "recreate": "Atkortė",
        "confirm_purge_button": "Tink",
        "confirm-watch-button": "Gerā",
        "confirm-watch-top": "Pridietė šėta poslapi i keravuojamu sāraša?",
        "confirm-unwatch-button": "Gerā",
+       "confirm-unwatch-top": "Atkergtė nug sava keravuojamu poslapiu?",
+       "quotation-marks": "„$1“",
        "imgmultipageprev": "← unkstesnis poslapis",
        "imgmultipagenext": "kėts poslapis →",
        "imgmultigo": "Ētė!",
        "lag-warn-high": "Dielē dėdlė doumenū bazės pasėlikėma pakeitėmā, naujesnė nēgo $1 {{PLURAL:$1|sekondė|sekondės|sekondiu}}, tamė sarašė gal būtė neruodomė.",
        "watchlistedit-normal-title": "Keistė keravuojamu sāroša",
        "watchlistedit-normal-legend": "Šalėntė poslapios ėš keravuojamu sāraša",
-       "watchlistedit-normal-explain": "Žemiau īr ruodomė poslapē Tamstas keravuojamu sārašė.\nNuoriedamė pašalėntė poslapi, pri anuo oždiekėt varnale ė paspauskėt „Šalėntė poslapios“.\nTamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuojamu sāraša]].",
+       "watchlistedit-normal-explain": "Apatiuo īr ruodomė poslapē Tamstas keravuojamu sārošė.\nJēgo nuorat atkergtė poslapi, tumet prī anuo oždiekat varnalė ė mīgat \"{{int:Watchlistedit-normal-submit}}\".\nTamsta tēpuogi galat [[Special:EditWatchlist/raw|keistė čīsta keravuojamu sāroša]].",
        "watchlistedit-normal-submit": "Šalėntė poslapios",
        "watchlistedit-normal-done": "$1 {{PLURAL:$1|poslapis bova pašalėnts|poslapē bova pašalėntė|poslapiu bova pašalėnta}} ėš Tamstas keravuojamu saraša:",
        "watchlistedit-raw-title": "Keistė grīnōjė keravuojamu sāraša",
        "watchlisttools-view": "Veizietė sosėjosius pakeitėmus",
        "watchlisttools-edit": "Veizietė ėr keistė keravuojamu straipsniu sāraša",
        "watchlisttools-raw": "Keistė nebėngta keravuojamu straipsniu sāraša",
+       "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|aptarėms]])",
        "version": "Versėjė",
-       "version-license": "Licenzėjė",
+       "version-no-ext-name": "[ba varda]",
+       "version-license": "Lėcencėjė",
+       "version-ext-license": "Lėcencėjė",
+       "version-poweredby-credits": "Ta wiki dėrb so <strong>[https://www.mediawiki.org/ MediaWiki]</strong> varėklio, copyright © 2001-$1 $2.",
+       "version-poweredby-translators": "translatewiki.net pargoldītuojē",
        "redirect-user": "Nauduotojė ID",
        "redirect-page": "Poslapė ID",
        "redirect-revision": "Poslapė versėjė",
        "fileduplicatesearch-filename": "Faila vards:",
        "fileduplicatesearch-submit": "Ėiškuotė",
        "fileduplicatesearch-info": "$1 × $2 pėkseliu<br />Faila dėdoms: $3<br />MIME tėps: $4",
-       "specialpages": "SpecÄ\93\97Ì\85jė poslapē",
+       "specialpages": "SpecÄ\93\97Ì\84jė poslapē",
        "specialpages-note-top": "Pāiškėnėmā",
        "specialpages-note": "* Normalūs specēlė̅jė puslapē.\n* <strong class=\"mw-specialpagerestricted\">Apribuotė specēlė̅jė puslapē.</strong>",
        "specialpages-group-maintenance": "Sėstemas palaikīma pranešėmā",
-       "specialpages-group-other": "KÄ\97\97 specÄ\93\97Ì\85jė poslapē",
+       "specialpages-group-other": "KÄ\97\97 specÄ\93\97Ì\84jė poslapē",
        "specialpages-group-login": "Prisėjongėms / Registracėjė",
        "specialpages-group-changes": "Vielībiė̅ jė pakeitėmā ė regėstrā",
        "specialpages-group-media": "Infuormacėjė aple failus ėr anū pakruovėms",
        "specialpages-group-pages": "Poslapiu sarašas",
        "specialpages-group-pagetools": "Poslapiu rakondā",
        "specialpages-group-wiki": "Wiki doumenīs ė rakondā",
-       "specialpages-group-redirects": "SpecÄ\93\97Ì\85\97 nukreipėma poslapē",
+       "specialpages-group-redirects": "SpecÄ\93\97Ì\84\97 nusokėma poslapē",
        "specialpages-group-spam": "Šlamšta valdīma rakondā",
        "blankpage": "Toščias poslapis",
        "external_image_whitelist": " #Palikėt ta eilotė, tuokė kāp īr <pre>\n#Īrašīkat standartėniu ėšraišku fragmentus (tėktās dali terp //)\n#Anūs bus miegėnama sotapatintė so ėšuorėniu abruozdieliu adresās\n#Tė, katrėi sotaps, bus ruodomė kāp abruozdielē, a kėtė bus ruodomė tėktās kāp nūoruodas\n#Raidiu dėdoms nier svarbos\n#Eilotės, katuos prasided # īr kuomentarā \n\n#Īterpkat vėsus standartiėniu ėšraišku fragmentus prīš šėta eilote. Palikat šėta eilote, tuokė kāp ana īr </pre>",
-       "tag-filter": "[[Special:Tags|Žīmiejėmu]] filtros:",
-       "tag-filter-submit": "Rietis",
+       "tag-filter": "[[Special:Tags|Žīmiū]] kuošeklis:",
+       "tag-filter-submit": "Kuošeklis",
        "tags-edit": "taisītė",
        "comparepages": "Primestė poslapio",
        "logentry-delete-delete": "$1 ėštrīnė poslapi $3",
        "logentry-delete-restore": "$1 atkūrė poslapi $3",
        "revdelete-content-hid": "torėnīs pakavuots",
-       "logentry-move-move": "$1 pervadėna poslapi $3 i $4",
-       "logentry-move-move-noredirect": "$1 pervadėna poslapi $3 i $4, nepalikdams nukreipėma",
-       "logentry-move-move_redir": "$1 pervadėna poslapi $3 i $4, vėituo buvosė nukreipėma",
-       "logentry-move-move_redir-noredirect": "$1 pervadėna poslapi $3 i $4, vėituo buvosė nukreipėma, bat nepadėrbdams naujė",
+       "logentry-move-move": "$1 {{GENDER:$2|parvadėna}} poslapi $3 i $4",
+       "logentry-move-move-noredirect": "$1 {{GENDER:$2|parvadėna}} poslapi nug $3 i $4 nepalinkdoms nusokėma",
+       "logentry-move-move_redir": "$1 {{GENDER:$2|parvadėna}} poslapi nog $3 i $4 ont bovosė nusokėma",
+       "logentry-move-move_redir-noredirect": "$1 {{GENDER:$2|parvadėna}} poslapi nug $3 i $4, vėituo buvosė nukreipėma, bat nepadėrbdoms naujė",
        "logentry-newusers-newusers": "$1 padėrba nauduotuojė paskīra",
        "logentry-newusers-create": "$1 padėrba nauduotuojė paskīra",
        "logentry-newusers-create2": "$1 padėrba nauduotuojė paskīra $3",
        "logentry-newusers-autocreate": "Paskīra $1 bova padėrbta autuomatėškā",
        "logentry-rights-rights": "$1 perkeitė $3 ėš $4 i $5",
+       "logentry-rights-autopromote": "$1 bova autuomatėškā {{GENDER:$2|parkelts}} ėš $4 i $5",
+       "logentry-upload-upload": "$1 {{GENDER:$2|ožkruovė}} $3",
+       "logentry-upload-overwrite": "$1 {{GENDER:$2|ožkruovė}} naujė $3 atmaina",
+       "logentry-upload-revert": "$1 {{GENDER:$2|ožkruovė}} $3",
        "rightsnone": "(juokiū)",
        "revdelete-summary": "keitėma pāiškėnėms",
        "feedback-close": "Padėrbt",
        "searchsuggest-search": "Ėiškuotė",
        "searchsuggest-containing": "katrėi tor...",
        "api-error-duplicate-popup-title": "{{PLURAL:$1|Faila|Failu}} doblėkats.",
+       "duration-seconds": "$1 {{PLURAL:$1|sekondė|sekondės|sekondiu}}",
+       "duration-minutes": "$1 {{PLURAL:$1|mėnotė|mėnotės|mėnotiu}}",
+       "duration-hours": "$1 {{PLURAL:$1|adīna|adīnas|adīnu}}",
+       "duration-days": "{{PLURAL:$1|dėina|dėinū|dėinas}}",
        "expandtemplates": "Ėšskeistė šabluonus",
+       "pagelanguage": "Rinktėis poslapė kalba",
        "pagelang-name": "Poslapis",
        "pagelang-language": "Kalba",
        "pagelang-use-default": "Nauduotė kalba kāp nustatīta",
        "pagelang-select-lang": "Rinktėis kalba",
        "right-pagelang": "Mainītė poslapė kalba",
+       "action-pagelang": "mainītė poslapė kalba",
        "mediastatistics-table-mimetype": "MIME tips",
        "mediastatistics-header-unknown": "Nežėnuoms",
-       "json-error-syntax": "Sintaksės klaida"
+       "json-error-syntax": "Sintaksės klaida",
+       "special-characters-group-latin": "Luotīnėškā",
+       "special-characters-group-latinextended": "Luotīnėškā (prapliests)",
+       "special-characters-group-ipa": "IPA",
+       "special-characters-group-symbols": "Sėmbuolē",
+       "special-characters-group-greek": "Graikėškā",
+       "special-characters-group-cyrillic": "Kirilėka",
+       "special-characters-group-arabic": "Arabėškā",
+       "special-characters-group-arabicextended": "Arabėškā (prapliests)",
+       "special-characters-group-persian": "Persėškā",
+       "special-characters-group-hebrew": "Žīdėškā",
+       "special-characters-group-bangla": "Bengalėškā",
+       "special-characters-group-tamil": "Tamėlėškā",
+       "special-characters-group-telugu": "Telogėškā",
+       "special-characters-group-sinhala": "Singalėškā",
+       "special-characters-group-gujarati": "Godžaratėškā",
+       "special-characters-group-devanagari": "Devanagari",
+       "special-characters-group-thai": "Tailondėškā",
+       "special-characters-group-lao": "Laosėitėškā",
+       "special-characters-group-khmer": "Kigmerėškā",
+       "mw-widgets-titleinput-description-redirect": "nusokėms i $1"
 }
index e6b5f97..5a4c688 100644 (file)
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "pomlčka",
        "special-characters-title-emdash": "dlhá pomlčka",
-       "special-characters-title-minus": "mínus"
+       "special-characters-title-minus": "mínus",
+       "mw-widgets-dateinput-placeholder-day": "RRRR-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "RRRR-MM"
 }
index 9a6e537..bbf7874 100644 (file)
@@ -17,6 +17,7 @@
        "tog-hideminor": "Skrij manjše popravke v zadnjih spremembah",
        "tog-hidepatrolled": "Skrij pregledana urejanja v zadnjih spremembah",
        "tog-newpageshidepatrolled": "Skrij pregledane strani iz seznama novih strani",
+       "tog-hidecategorization": "Skrij kategorizacijo strani",
        "tog-extendwatchlist": "Razširi spisek nadzorov, da bo prikazoval vse spremembe, ne le najnovejše",
        "tog-usenewrc": "Združi spremembe posamezne strani na zadnjih spremembah in spisku nadzorov",
        "tog-numberheadings": "Samodejno številči poglavja",
@@ -46,6 +47,7 @@
        "tog-watchlisthideliu": "Na spisku nadzorov skrij urejanja prijavljenih uporabnikov",
        "tog-watchlisthideanons": "Na spisku nadzorov skrij urejanja anonimnih uporabnikov",
        "tog-watchlisthidepatrolled": "Na spisku nadzorov skrij pregledana urejanja",
+       "tog-watchlisthidecategorization": "Skrij kategorizacijo strani",
        "tog-ccmeonemails": "Pošlji mi kopijo e-pošt, ki jih pošljem drugim uporabnikom",
        "tog-diffonly": "Pod primerjavo ne prikaži vsebine strani",
        "tog-showhiddencats": "Prikaži skrite kategorije",
        "actionthrottled": "Dejanje zaustavljeno",
        "actionthrottledtext": "Kot ukrep proti smetju, je število izvajanj tega dejanja v časovnem obdobju omejeno, in vi ste ta limit presegli.\nProsimo, poskusite znova čez nekaj minut.",
        "protectedpagetext": "Ta stran je bila zaklenjena za preprečitev urejanja ali drugih dejanj.",
-       "viewsourcetext": "Vsebino te strani si lahko ogledate in kopirate:",
-       "viewyourtext": "Lahko si ogledate in kopirate vsebino '''vaših urejanj''' te strani:",
+       "viewsourcetext": "Vsebino te strani si lahko ogledate in kopirate.",
+       "viewyourtext": "Lahko si ogledate in kopirate vsebino <strong>vaših urejanj</strong> te strani.",
        "protectedinterface": "Prikazana stran vsebuje besedilo vmesnika programja na tem wikiju in je zaradi preprečevanja zlorab zaščitena.\n\nZa dodajanje ali spreminjanje prevodov vseh wikijev uporabite [//translatewiki.net/ translatewiki.net], projekt za lokalizacijo MediaWiki.",
        "editinginterface": "<strong>Opozorilo:</strong> Urejate stran, ki vsebuje besedilo ali drug element uporabniškega vmesnika programja.\nSpremembe te strani bodo vplivale na podobo uporabniškega vmesnika ostalih uporabnikov na tem wikiju.",
        "translateinterface": "Za dodajanje ali spreminjanje prevodov vseh wikijev uporabite [//translatewiki.net/ translatewiki.net], projekt za lokalizacijo MediaWiki.",
        "search-category": "(kategorija $1)",
        "search-file-match": "(ujema se z vsebino datoteke)",
        "search-suggest": "Iščete morda: $1",
+       "search-rewritten": "Prikazujemo rezultate za $1. Namesto tega poiščite $2.",
        "search-interwiki-caption": "Sorodni projekti",
        "search-interwiki-default": "Rezultati s strani $1:",
        "search-interwiki-more": "(več)",
        "rcshowhidemine": "$1 moja urejanja",
        "rcshowhidemine-show": "Prikaži",
        "rcshowhidemine-hide": "Skrij",
+       "rcshowhidecategorization": "$1 kategorizacijo strani",
+       "rcshowhidecategorization-show": "Prikaži",
+       "rcshowhidecategorization-hide": "Skrij",
        "rclinks": "Prikaži zadnjih $1 sprememb v zadnjih $2 dneh<br />$3",
        "diff": "prim",
        "hist": "zgod",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[temo {{PLURAL:$1|spremlja|spremljata|spremljajo|spremlja|spremlja}} $1 {{PLURAL:$1|uporabnik|uporabnika|uporabniki|uporabnikov|uporabnikov}}]",
-       "rc_categories": "Omejitev na kategorije (ločite jih z »|«)",
-       "rc_categories_any": "Katerokoli",
+       "rc_categories": "Omejitev na kategorije (ločite jih z »|«):",
+       "rc_categories_any": "Katera koli od izbranih",
        "rc-change-size-new": "po spremembi: $1 {{PLURAL:$1|zlog|zloga|zlogi|zlogov}}",
        "newsectionsummary": "/* $1 */ nov razdelek",
        "rc-enhanced-expand": "Pokaži podrobnosti",
        "recentchangeslinked-summary": "To je seznam nedavnih sprememb strani povezanih na določeno stran (ali iz določene kategorije).\nStrani iz [[Special:Watchlist|vašega spiska nadzorov]] so '''odebeljene'''.",
        "recentchangeslinked-page": "Naslov strani:",
        "recentchangeslinked-to": "Prikaži spremembe na določeno stran povezanih strani",
+       "recentchanges-page-added-to-category": "[[:$1]] dodano v kategorijo",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] in $2 {{PLURAL:$2|stran dodana|strani dodani|strani dodane|strani dodanih}} v kategorijo",
+       "recentchanges-page-removed-from-category": "[[:$1]] odstranjeno iz kategorije",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] in $2 {{PLURAL:$2|stran odstranjena|strani odstranjeni|strani odstranjene|strani odstranjenih}} iz kategorije",
        "upload": "Naloži datoteko",
        "uploadbtn": "Naloži datoteko",
        "reuploaddesc": "Prekliči nalaganje in se vrni na obrazec za nalaganje",
        "upload-too-many-redirects": "URL vsebuje preveč preusmeritev",
        "upload-http-error": "Prišlo je do napake HTTP: $1",
        "upload-copy-upload-invalid-domain": "Nalaganje kopij s te domene ni možno.",
+       "upload-dialog-title": "Naloži datoteko",
+       "upload-dialog-error": "Prišlo je do napake",
+       "upload-dialog-warning": "Pojavilo se je opozorilo",
+       "upload-dialog-button-cancel": "Prekliči",
+       "upload-dialog-button-done": "Končano",
+       "upload-dialog-button-save": "Shrani",
+       "upload-dialog-button-upload": "Naloži",
+       "upload-dialog-label-select-file": "Izberi datoteko",
+       "upload-dialog-label-infoform-title": "Podrobnosti",
+       "upload-dialog-label-infoform-name": "Ime",
+       "upload-dialog-label-infoform-description": "Opis",
+       "upload-dialog-label-usage-title": "Uporaba",
+       "upload-dialog-label-usage-filename": "Ime datoteke",
        "backend-fail-stream": "Ne morem pretakati datoteke $1.",
        "backend-fail-backup": "Ne morem varnostno kopirati datoteke $1.",
        "backend-fail-notexists": "Datoteka $1 ne obstaja.",
        "watchlistanontext": "Za pregled ali urejanje vsebine vašega spiska nadzorov se morate prijaviti.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisek nadzorov",
-       "addedwatchtext": "Stran »[[:$1]]« smo dodali na vaš [[Special:Watchlist|spisek nadzorov]].\nTam bodo navedene prihodnje spremembe te strani in pripadajoče pogovorne strani.",
+       "addedwatchtext": "»[[:$1]]« in pripadajočo pogovorno stran smo dodali na vaš [[Special:Watchlist|spisek nadzorov]].",
        "addedwatchtext-short": "Stran »$1« smo dodali na vaš spisek nadzorov.",
        "removewatch": "Odstrani s spiska nadzorov",
-       "removedwatchtext": "Stran »[[:$1]]« smo odstranili z vašega [[Special:Watchlist|spiska nadzorov]].",
+       "removedwatchtext": "»[[:$1]]« in pripadajočo pogovorno stran smo odstranili z vašega [[Special:Watchlist|spiska nadzorov]].",
        "removedwatchtext-short": "Stran »$1« smo odstranili z vašega spiska nadzorov.",
        "watch": "Opazuj",
        "watchthispage": "Opazuj stran",
        "changecontentmodel-success-title": "Spremenili smo model vsebine",
        "changecontentmodel-success-text": "Spremenili smo vrsto vsebine [[:$1]].",
        "changecontentmodel-cannot-convert": "Vsebine na [[:$1]] ni mogoče pretvoriti v vrsto $2.",
-       "changecontentmodel-title-cantexist": "Na $1 ni mogoče imeti strani.",
        "changecontentmodel-nodirectediting": "Model vsebine $1 ne podpira neposrednega urejanja",
        "log-name-contentmodel": "Dnevnik sprememb modela vsebine",
        "log-description-contentmodel": "Dogodki, povezani z modeli vsebin strani",
        "undeletepagetext": "{{PLURAL:$1|Naslednja stran je bila izbrisana, vendar je še vedno v arhivu in jo lahko obnovite.|Naslednji $1 strani sta bili izbrisani, vendar sta še vedno v arhivu in ju lahko obnovite.|Naslednje $1 strani so bile izbrisane, vendar so še vedno v arhivu in jih lahko obnovite.|Naslednjih $1 strani je bilo izbrisanih, vendar so še vedno v arhivu in jih lahko obnovite.}}\nArhiv je treba občasno počistiti.",
        "undelete-fieldset-title": "Obnovi redakcije",
        "undeleteextrahelp": "Da bi obnovili celotno stran z vso njeno zgodovino, pustite vsa potrditvena polja prazna in kliknite '''''Obnovi'''''.\nČe želite obnoviti le določene redakcije strani, pred klikom gumba '''''Obnovi''''' označite ustrezna potrditvena polja.",
-       "undeleterevisions": "{{PLURAL:$1|Arhivirana je|Arhivirani sta|Arhivirane so|Arhiviranih je|Arhiviranih ni}} $1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}",
+       "undeleterevisions": "{{PLURAL:$1|Izbrisana je|Izbrisani sta|Izbrisane so|Izbrisanih je}} $1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij}}",
        "undeletehistory": "Če obnovite stran, bodo v zgodovino obnovljene vse redakcije.\nČe je bila po brisanju ustvarjena nova stran z enakim imenom, bodo obnovljene redakcije prikazane v prejšnji zgodovini.",
        "undeleterevdel": "Obnovitev ne bo izvedena, če vodi v delni izbris redakcije vrhnje strani ali datoteke.\nV takem primeru morate odznačiti ali prikazati najnovejšo izbrisano redakcijo.",
        "undeletehistorynoadmin": "Stran je bila izbrisana.\nRazlog za izbris je skupaj s podrobnostmi o uporabnikih, ki so jo urejali pred izbrisom, naveden v prikazanem povzetku.\nDejansko besedilo izbrisanih redakcij je dostopno le administratorjem.",
        "spam_reverting": "Vračanje na zadnjo redakcijo brez povezav na $1",
        "spam_blanking": "Vse redakcije so vsebovale povezave na $1, izpraznjujem",
        "spam_deleting": "Vse redakcije so vsebovale povezave na $1, brišem",
-       "simpleantispam-label": "Preverjanje proti smetju.\n'''NE''' izpolnite tega!",
+       "simpleantispam-label": "Preverjanje proti smetju.\n<strong>Ne</strong> izpolnite tega!",
        "pageinfo-title": "Informacije o »$1«",
        "pageinfo-not-current": "Oprostite, vendar ne moremo nuditi podatkov starejših redakcij.",
        "pageinfo-header-basic": "Osnovni podatki",
        "special-characters-title-endash": "navaden pomišljaj",
        "special-characters-title-emdash": "dolgi pomišljaj",
        "special-characters-title-minus": "znak za minus",
+       "mw-widgets-dateinput-no-date": "Datum ni izbran",
+       "mw-widgets-dateinput-placeholder-day": "LLLL-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "LLLL-MM",
        "mw-widgets-titleinput-description-new-page": "stran še ne obstaja",
        "mw-widgets-titleinput-description-redirect": "preusmeritev na $1"
 }
index 25606f5..d26b052 100644 (file)
        "special-characters-group-gujarati": "Guxharati",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "VVVV-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "VVVV-MM"
 }
index a3e903b..f25d51a 100644 (file)
@@ -34,6 +34,7 @@
        "tog-hideminor": "Сакриј мање измене у списку скорашњих измена",
        "tog-hidepatrolled": "Сакриј патролиране измене у списку скорашњих измена",
        "tog-newpageshidepatrolled": "Сакриј патролиране странице са списка нових страница",
+       "tog-hidecategorization": "Сакриј категоризацију страница",
        "tog-extendwatchlist": "Прошири списак надгледања за приказ свих измена, не само скорашњих",
        "tog-usenewrc": "Промене у групи по страници у списку скорашњих измена и надгледаних страница",
        "tog-numberheadings": "Аутоматски нумериши поднаслове",
@@ -63,6 +64,7 @@
        "tog-watchlisthideliu": "Сакриј измене пријављених корисника са списка надгледања",
        "tog-watchlisthideanons": "Сакриј измене анонимних корисника са списка надгледања",
        "tog-watchlisthidepatrolled": "Сакриј патролиране измене са списка надгледања",
+       "tog-watchlisthidecategorization": "Сакриј категоризацију страница",
        "tog-ccmeonemails": "Пошаљи ми копије е-порука које пошаљем другим корисницима",
        "tog-diffonly": "Не приказуј садржај странице испод разлика",
        "tog-showhiddencats": "Прикажи скривене категорије",
        "pool-timeout": "Истек времена чека на закључавање",
        "pool-queuefull": "Ред је пун захтева",
        "pool-errorunknown": "Непозната грешка",
+       "pool-servererror": "Услуга бројача пула није доступна ($1).",
+       "poolcounter-usage-error": "Грешка при употреби: $1",
        "aboutsite": "О пројекту {{SITENAME}}",
        "aboutpage": "Project:О нама",
        "copyright": "Садржај је доступан под лиценцом $1 осим ако је другачије наведено.",
        "readonly_lag": "База података је аутоматски закључана да би се секундарни сервери базе података ускладили с главним.",
        "internalerror": "Унутрашња грешка",
        "internalerror_info": "Унутрашња грешка: $1",
+       "internalerror-fatal-exception": "Фатална грешка типа „$1“",
        "filecopyerror": "Не могу да умножим датотеку „$1“ у „$2“.",
        "filerenameerror": "Не могу да преименујем датотеку „$1“ у „$2“.",
        "filedeleteerror": "Не могу да обришем датотеку „$1“.",
        "cannotdelete": "Не могу да обришем страницу или датотеку „$1“.\nВероватно ју је неко други обрисао.",
        "cannotdelete-title": "Не могу да обришем страницу „$1“",
        "delete-hook-aborted": "Брисање је прекинула кука.\nНије дато никакво образложење.",
+       "no-null-revision": "Не могу да направим нову празну верзију за страницу „$1“",
        "badtitle": "Неисправан наслов",
        "badtitletext": "Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.\nМожда садржи знакове који се не могу користити у насловима.",
+       "title-invalid-empty": "Тражено име странице је празно или садржи само назив именског простора.",
+       "title-invalid-utf8": "Тражени назив странице садржи неважећи UTF-8 знак.",
+       "title-invalid-interwiki": "Тражени наслов странице садржи унутрашњу вики везу која не може бити кориштена у насловима.",
+       "title-invalid-talk-namespace": "Тражени наслов странице се односи на страницу за разговор која не може постојати.",
        "title-invalid-characters": "Тражени наслов има неважеће карактере: „$1“.",
+       "title-invalid-relative": "Наслов има релативну путању. Релативни наслови страница (./, ../) нису важећи јер ће често бити недоступни у корисничком прегледачу.",
+       "title-invalid-magic-tilde": "Тражени наслов странице садржи неважећи след магичног знака тилда (<nowiki>~~~</nowiki>).",
+       "title-invalid-too-long": "Тражени назив странице је предугачак. Не сме бити дужи од $1 {{PLURAL:$1|бајта|бајтова}} у UTF-8 кодирању.",
+       "title-invalid-leading-colon": "Захтевани наслов странице садржи неважећу двотачку на почетку.",
        "perfcached": "Следећи подаци су кеширани и могу бити застарели. Кеш садржи највише {{PLURAL:$1|један резултат|$1 резултата|$1 резултата}}.",
        "perfcachedts": "Следећи подаци су кеширани и последњи пут су ажурирани $2 у $3. У кешу {{PLURAL:$4|1=је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.",
        "querypage-no-updates": "Ажурирање ове странице је тренутно онемогућено.\nПодаци који се овде налазе могу бити застарели.",
        "actionthrottled": "Радња је успорена",
        "actionthrottledtext": "У циљу борбе против непожељних порука, ограничене су вам измене у одређеном времену, а управо сте прешли то ограничење. Покушајте поново за неколико минута.",
        "protectedpagetext": "Ова страница је закључана за измене и друге радње.",
-       "viewsourcetext": "Можете читати и копирати садржај ове странице:",
-       "viewyourtext": "Можете да погледате и копирате извор '''ваших измена''' на овој страници:",
+       "viewsourcetext": "Можете читати и копирати садржај ове странице.",
+       "viewyourtext": "Можете да погледате и копирате извор <strong>ваших измена</strong> на овој страници.",
        "protectedinterface": "Ова страница садржи текст корисничког окружења за софтвер на овом викију и заштићена је ради спречавања злоупотребе.\nДа бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
        "editinginterface": "<strong>Упозорење:</strong> уређујете страницу која се користи за приказивање текста корисничког окружења.\nИзмене на овој страници ће утицати на све кориснике овог викија.",
        "translateinterface": "Да додате или промените преводе за све викије, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.",
        "changeemail-submit": "Промени",
        "changeemail-throttled": "Превише пута сте покушали да се пријавите.\nМолимо вас да сачекате $1 пре него што покушате поново.",
        "resettokens": "Ресетовање жетона",
+       "resettokens-text": "Можете поново поставити жетоне који ће вам омогућити приступ одређеним приватним подацима повезаним са вашим налогом овде.\n\nТребали бисте то да урадите ако их мимо воље поделите с неким или ако је ваш налог угрожен.",
        "resettokens-no-tokens": "Нема жетона за ресетовање.",
        "resettokens-tokens": "Жетони:",
        "resettokens-token-label": "$1 (тренутна вредност: $2)",
        "missingcommentheader": "'''Напомена:''' нисте унели наслов овог коментара.\nАко поново кликнете на „{{int:savearticle}}“, ваша измена ће бити сачувана без наслова.",
        "summary-preview": "Преглед описа:",
        "subject-preview": "Преглед теме/наслова:",
+       "previewerrortext": "Догодила се грешка приликом приказивања ваших измена.",
        "blockedtitle": "Корисник је блокиран",
        "blockedtext": "<strong>Ваше корисничко име или ИП адреса је блокирана.</strong>\n\nБлокирање је {{GENDER:$4|извршио|извршила}} $1.\nРазлог: <em>$2</em>.\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\nНе можете користити могућност „Пошаљи поруку овом кориснику“ ако нисте унели исправну е-адресу у [[Special:Preferences|подешавањима]].\nВаша блокирана ИП адреса је $3, а ID блокирања $5.\nНаведите све податке изнад при стварању било каквих упита.",
        "autoblockedtext": "Ваша ИП адреса је блокирана јер ју је употребљавао други корисник, кога је {{GENDER:$4|блокирао|блокирала}} $1.\nРазлог:\n\n:<em>$2</em>\n\n* Датум блокирања: $8\n* Блокирање истиче: $6\n* Име корисника: $7\n\nОбратите се {{GENDER:$4|кориснику|корисници}} $1 или [[{{MediaWiki:Grouppage-sysop}}|администратору]] да разјасните ствар.\n\nНе можете користити могућност „Пошаљи поруку овом кориснику“ ако нисте унели исправну е-адресу у [[Special:Preferences|подешавањима]].\n\nВаша блокирана ИП адреса је $3, а ID $5.\nНаведите све податке изнад при стварању било каквих упита.",
        "yourdiff": "Разлике",
        "copyrightwarning": "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).\nАко не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву.\n'''Не шаљите радове заштићене ауторским правима без дозволе!'''",
        "copyrightwarning2": "Имајте на уму да се сви доприноси на овом викију могу мењати, враћати или брисати од других корисника.\nАко не желите да се ваши текстови слободно мењају и расподељују, не шаљите их овде.<br />\nИсто тако обећавате да сте ви аутор текста, или да сте га умножили с извора који је у јавном власништву (више на $1).\n'''Не шаљите радове заштићене ауторским правима без дозволе!'''",
+       "editpage-cannot-use-custom-model": "Модел садржаја ове странице се не може променити.",
        "longpageerror": "'''Грешка: текст који сте унели је величине {{PLURAL:$1|један килобајт|$1 килобајта|$1 килобајта}}, што је веће од {{PLURAL:$2|дозвољеног једног килобајта|дозвољена $2 килобајта|дозвољених $2 килобајта}}.'''\nСтраница не може бити сачувана.",
        "readonlywarning": "'''Упозорење: база података је закључана ради одржавања, тако да тренутно нећете моћи да сачувате измене.'''\nМожда бисте желели сачувати текст за касније у некој текстуалној датотеци.\n\nАдминистратор који је закључао базу дао је следеће објашњење: $1",
        "protectedpagewarning": "<strong>Упозорење: ова страница је заштићена, тако да само администратори могу да је мењају.</strong>\nПоследњи запис у дневнику је приказан испод:",
        "content-not-allowed-here": "Садржај модела „$1“ није дозвољен на страници [[$2]]",
        "editwarning-warning": "Ако напустите ову страницу, изгубићете све измене које сте направили. Ако сте пријављени, можете онемогућити ово упозорење у својим подешавањима, у одељку „{{int:prefs-editing}}“.",
        "editpage-notsupportedcontentformat-title": "Формат садржаја није подржан",
+       "editpage-notsupportedcontentformat-text": "Формат садржаја $1 није подржан за модел садржаја $2.",
        "content-model-wikitext": "викитекст",
        "content-model-text": "чист текст",
        "content-model-javascript": "јаваскрипт",
        "content-model-css": "CSS",
        "content-json-empty-object": "Празан објекат",
+       "content-json-empty-array": "Празан низ",
+       "duplicate-args-warning": "<strong>Упозорење:</strong> [[:$1]] позива [[:$2]] са више од једне вредности за параметар „$3“. Само последња наведена вредност ће бити коришћена.",
+       "duplicate-args-category": "Странице с дуплираним аргументима код позива шаблона",
+       "duplicate-args-category-desc": "Страница садржи позиве шаблона који користе двоструке аргументе, као што су <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> или <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
        "expensive-parserfunction-warning": "'''Упозорење:''' ова страница садржи превише позива за рашчлањивање.\n\nТребало би да има мање од $2 {{PLURAL:$2|позив|позива|позива}}, а сада има $1.",
        "expensive-parserfunction-category": "Странице с превише позива за рашчлањивање",
        "post-expand-template-inclusion-warning": "'''Упозорење:''' величина укљученог шаблона је превелика.\nНеки шаблони неће бити укључени.",
        "parser-template-recursion-depth-warning": "Дубина укључивања шаблона је прекорачена ($1)",
        "language-converter-depth-warning": "Прекорачена је граница дубине језичког претварача ($1)",
        "node-count-exceeded-category": "Странице у којима је прекорачен број чворова",
+       "node-count-exceeded-category-desc": "Страница је прекорачила број чворова.",
        "node-count-exceeded-warning": "Страница у којој је прекорачен број чворова",
        "expansion-depth-exceeded-category": "Странице у којима је прекорачена дубина проширења",
+       "expansion-depth-exceeded-category-desc": "Страница је прекорачила највећу дубину проширења.",
        "expansion-depth-exceeded-warning": "Страница у којој је прекорачена дубина проширења",
        "parser-unstrip-loop-warning": "Утврђена је петља",
        "parser-unstrip-recursion-limit": "Прекорачено је ограничење рекурзије ($1)",
        "history-feed-description": "Историја измена ове странице на викију",
        "history-feed-item-nocomment": "$1 у $2",
        "history-feed-empty": "Тражена страница не постоји.\nМогуће да је обрисана с викија или је преименована.\nПокушајте да [[Special:Search|претражите вики]] за сличне странице.",
+       "history-edit-tags": "Уреди ознаке изабраних измена",
        "rev-deleted-comment": "(опис измене уклоњен)",
        "rev-deleted-user": "(корисничко име уклоњено)",
-       "rev-deleted-event": "(детаљи дневника уклоњени)",
+       "rev-deleted-event": "(детаљи уноса уклоњени)",
        "rev-deleted-user-contribs": "[корисничко име или ИП адреса је уклоњена – измена је сакривена са списка доприноса]",
        "rev-deleted-text-permission": "Измена ове странице је '''обрисана'''.\nДетаље можете видети у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
+       "rev-suppressed-text-permission": "Измена ове странице је <strong>сакривена</strong>. Више детаља можете наћи у [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} историји сакривања].",
        "rev-deleted-text-unhide": "Измена ове странице је '''обрисана'''.\nДетаље можете видети у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].\nИпак можете да [$1 видите ову измену] ако желите да наставите.",
        "rev-suppressed-text-unhide": "Измена ове странице је '''сакривена'''.\nДетаље можете видети у [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} историји сакривања].\nИпак можете да [$1 видите ову измену] ако желите да наставите.",
        "rev-deleted-text-view": "Измена ове странице је '''обрисана'''.\nМожете је погледати; више детаља можете наћи у [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} историји брисања].",
        "rev-showdeleted": "прикажи",
        "revisiondelete": "Обриши/врати измене",
        "revdelete-nooldid-title": "Нема тражене измене",
-       "revdelete-nooldid-text": "Ð\9dиÑ\81Ñ\82е Ð½Ð°Ð²ÐµÐ»Ð¸ Ð¶ÐµÑ\99енÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83, Ð¾Ð½Ð° Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82оÑ\98и Ð¸Ð»Ð¸ Ð¿Ð¾ÐºÑ\83Ñ\88аваÑ\82е Ð´Ð° Ñ\98е Ñ\81акÑ\80иÑ\98еÑ\82е.",
+       "revdelete-nooldid-text": "Ð\9dиÑ\81Ñ\82е Ð¸Ð·Ð°Ð±Ñ\80али Ð¾Ð´Ñ\80едиÑ\88нÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83 Ð½Ð° ÐºÐ¾Ñ\98оÑ\98 Ñ\82Ñ\80еба Ð´Ð° Ñ\81е Ð¸Ð·Ð²Ñ\80Ñ\88и Ð¾Ð²Ð° Ñ\84Ñ\83нкÑ\86иÑ\98а, Ñ\82а Ð¸Ð·Ð¼ÐµÐ½Ð° Ð½Ðµ Ð¿Ð¾Ñ\81Ñ\82оÑ\98и, Ð¸Ð»Ð¸ Ð¿Ð¾ÐºÑ\83Ñ\88аваÑ\82е Ñ\81акÑ\80иÑ\82и Ñ\82Ñ\80енÑ\83Ñ\82нÑ\83 Ð¸Ð·Ð¼ÐµÐ½Ñ\83.",
        "revdelete-no-file": "Тражена датотека не постоји.",
        "revdelete-show-file-confirm": "Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?",
        "revdelete-show-file-submit": "Да",
        "revdelete-confirm": "Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].",
        "revdelete-suppress-text": "Сакривање измена би требало користити <strong>само</strong> у следећим случајевима:\n* злонамерни или погрдни подаци\n* неприкладни лични подаци\n*: <em>кућна адреса и број телефона, број кредитне картице, ЈМБГ итд.</em>",
        "revdelete-legend": "Ограничења видљивости",
-       "revdelete-hide-text": "СакÑ\80иÑ\98 Ñ\82екст измене",
+       "revdelete-hide-text": "Текст измене",
        "revdelete-hide-image": "Сакриј садржај датотеке",
        "revdelete-hide-name": "Сакриј циљ и параметре",
        "revdelete-hide-comment": "Опис измене",
-       "revdelete-hide-user": "Кориснчко име уредника/ИП адреса",
+       "revdelete-hide-user": "Корисничко име/ИП адреса",
        "revdelete-hide-restricted": "Сакриј податке од администратора и других корисника",
        "revdelete-radio-same": "(не мењај)",
        "revdelete-radio-set": "Сакривено",
        "revdelete-unsuppress": "Уклони ограничења на враћеним изменама",
        "revdelete-log": "Разлог:",
        "revdelete-submit": "Примени на {{PLURAL:$1|изабрану измену|изабране измене}}",
-       "revdelete-success": "'''Видљивост измене је ажурирана.'''",
+       "revdelete-success": "Видљивост измене је ажурирана.",
        "revdelete-failure": "'''Не могу да ажурирам видљивост измене:'''\n$1",
-       "logdelete-success": "'''Видљивост историје је постављена.'''",
+       "logdelete-success": "Постављена је видљивост уноса у дневнику.",
        "logdelete-failure": "'''Не могу да поставим видљивост историје:'''\n$1",
        "revdel-restore": "промени видљивост",
        "pagehist": "Историја странице",
        "search-category": "(категорија $1)",
        "search-file-match": "(подудара се садржај датотеке)",
        "search-suggest": "Да ли сте мислили на: $1",
+       "search-rewritten": "Приказани резултати за $1. Ипак претражи $2.",
        "search-interwiki-caption": "Братски пројекти",
        "search-interwiki-default": "Резултати са $1:",
        "search-interwiki-more": "(више)",
        "stub-threshold": "Праг за обликовање <a href=\"#\" class=\"stub\">везе као клице</a> (у бајтовима):",
        "stub-threshold-disabled": "Онемогућено",
        "recentchangesdays": "Број дана у скорашњим изменама:",
-       "recentchangesdays-max": "(највише $1 {{PLURAL:$1|дан|дана|дана}})",
+       "recentchangesdays-max": "Највише $1 {{PLURAL:$1|дан|дана}}",
        "recentchangescount": "Број измена за приказ:",
        "prefs-help-recentchangescount": "Подразумева скорашње измене, историје страница и дневнике.",
        "prefs-help-watchlist-token2": "Ово је тајни кључ за веб довод вашег списка надгледања.\nСвако ко зна овај кључ биће у могућности да види ваша надгледања стога немојте га одавати никоме.\nАко је потребно можете га [[Special:ResetTokens|ресетовати]].",
        "email-address-validity-invalid": "Унесите исправну е-адресу",
        "userrights": "Управљање корисничким правима",
        "userrights-lookup-user": "Управљање корисничким групама",
-       "userrights-user-editname": "УнеÑ\81иÑ\82е Ðºорисничко име:",
-       "editusergroup": "Ð\9fÑ\80омени ÐºÐ¾Ñ\80иÑ\81ниÑ\87ке Ð³Ñ\80Ñ\83пе",
-       "editinguser": "Мењате корисничка права {{GENDER:$1|корисника|кориснице|корисника}} '''[[User:$1|$1]]''' $2",
+       "userrights-user-editname": "Ð\9aорисничко име:",
+       "editusergroup": "Ð\9fÑ\80еÑ\82Ñ\80ажи",
+       "editinguser": "Мењате корисничка права {{GENDER:$1|корисника|кориснице}} <strong>[[User:$1|$1]]</strong> $2",
        "userrights-editusergroup": "Промена корисничких група",
        "saveusergroups": "Сачувај корисничке групе",
        "userrights-groupsmember": "Члан:",
-       "userrights-groupsmember-auto": "УкÑ\99Ñ\83Ñ\87ени Ñ\87лан Ð¾Ð´:",
+       "userrights-groupsmember-auto": "Ð\9fодÑ\80азÑ\83мевано Ñ\87лан Ð¸:",
        "userrights-groups-help": "Можете променити групе којима овај корисник припада.\n* Означена кућица означава да се корисник налази у тој групи.\n* Неозначена кућица означава да се корисник не налази у тој групи.\n* Звездица означава да не можете уклонити групу ако је додате и обратно.",
        "userrights-reason": "Разлог:",
        "userrights-no-interwiki": "Немате овлашћења да мењате корисничка права на другим викијима.",
        "right-protect": "промени нивое заштите и уреди странице са преносивом заштитом",
        "right-editprotected": "уређивање страница под заштитом „{{int:protect-level-sysop}}“",
        "right-editsemiprotected": "уређивање страница под заштитом „{{int:protect-level-autoconfirmed}}“",
+       "right-editcontentmodel": "мењање модела садржаја странице",
        "right-editinterface": "уређивање корисничког окружења",
        "right-editusercssjs": "уређивање туђих CSS и јаваскрипт датотека",
        "right-editusercss": "уређивање туђих CSS датотека",
        "right-editmyusercss": "уређивање сопствених CSS датотека",
        "right-editmyuserjs": "уређивање сопствених JavaScript датотека",
        "right-viewmywatchlist": "види сопствени списак надгледања",
+       "right-editmywatchlist": "уређивање сопственог списка надгледања; неке предузете радње ће свеједно додати странице на списак и без овог права",
        "right-viewmyprivateinfo": "видите своје личне податке (нпр. адресу е-поште, право име)",
        "right-editmyprivateinfo": "уређивање сопствених личних података (нпр. адресу е-поште, право име)",
        "right-editmyoptions": "уређивање сопствених подешавања",
        "right-sendemail": "слање е-порука другим корисницима",
        "right-passwordreset": "прегледање порука за обнављање лозинке",
        "right-managechangetags": "прављење и/или брисање [[Special:Tags|ознака]] из базе података",
+       "right-applychangetags": "примењивање [[Special:Tags|ознака]] на нечије измене",
+       "right-changetags": "додавање и уклањање разних [[Special:Tags|ознака]] на појединачним изменама и уносима у дневницима",
        "newuserlogpage": "Дневник нових корисника",
        "newuserlogpagetext": "Ово је историја нових корисника.",
        "rightslog": "Дневник корисничких права",
        "action-viewmywatchlist": "преглед вашег списак надгледања",
        "action-viewmyprivateinfo": "прегледање ваших личних података",
        "action-editmyprivateinfo": "уређивање ваших личних података",
+       "action-editcontentmodel": "мењање модела садржаја странице",
        "action-managechangetags": "прављење и/или брисање ознака из базе података",
+       "action-applychangetags": "додавање ознака на ваше измене",
+       "action-changetags": "додавање и уклањање разних ознака на појединачним изменама и уносима у дневницима",
        "nchanges": "$1 {{PLURAL:$1|измена|измене|измена}}",
        "enhancedrc-since-last-visit": "$1 {{PLURAL:$1|измена од ваше последње посете}}",
        "enhancedrc-history": "историја",
        "rcshowhidemine": "$1 моје измене",
        "rcshowhidemine-show": "Прикажи",
        "rcshowhidemine-hide": "Сакриј",
+       "rcshowhidecategorization": "$1 категоризацију страница",
+       "rcshowhidecategorization-show": "Прикажи",
+       "rcshowhidecategorization-hide": "Сакриј",
        "rclinks": "Прикажи последњих $1 измена {{PLURAL:$2|претходни дан|у последња $2 дана|у последњих $2 дана}}<br />$3",
        "diff": "разл",
        "hist": "ист",
        "boteditletter": "б",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|корисник надгледа|корисника надгледају|корисника надгледају}}]",
-       "rc_categories": "Ограничи на категорије (раздвоји с усправном цртом)",
+       "rc_categories": "Ограничи на категорије (раздвоји с усправном цртом):",
        "rc_categories_any": "Све",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|бајт|бајта|бајтова}} после измене",
        "recentchangeslinked-summary": "Ова посебна страница приказује списак последњих измена на страницама које су повезане (или чланови одређене категорије).\nСтранице с [[Special:Watchlist|вашег списка надгледања]] су '''подебљане'''.",
        "recentchangeslinked-page": "Назив странице:",
        "recentchangeslinked-to": "Прикажи измене страница које су повезане с датом страницом",
+       "recentchanges-page-added-to-category": "[[:$1]] је додата у категорију",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су додате у категорију",
+       "recentchanges-page-removed-from-category": "[[:$1]] је уклоњена из категорије",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] и још {{PLURAL:$2|једна страница|$2 странице}} су уклоњене из категорије",
        "upload": "Пошаљи датотеку",
        "uploadbtn": "Пошаљи датотеку",
        "reuploaddesc": "Назад на образац за отпремање",
        "windows-nonascii-filename": "Овај вики не подржава називе датотека с посебним знацима.",
        "fileexists": "Датотека с овим називом већ постоји. Погледајте <strong>[[:$1]]</strong> ако нисте сигурни да ли желите да је промените.\n[[$1|thumb]]",
        "filepageexists": "Страница с описом ове датотеке је већ направљена овде <strong>[[:$1]]</strong>, иако датотека не постоји.\nОпис који сте навели се неће појавити на страници с описом.\nДа би се ваш опис овде нашао, потребно је да га ручно измените.\n[[$1|thumb]]",
-       "fileexists-extension": "Ð\94аÑ\82оÑ\82ека Ñ\81а Ñ\81лиÑ\87ним Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и: [[$2|thumb]]\n* Ð\9dазив Ð´Ð°Ñ\82оÑ\82еке ÐºÐ¾Ñ\98Ñ\83 Ñ\88аÑ\99еÑ\82е: <strong>[[:$1]]</strong>\n* Ð\9dазив Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bе Ð´Ð°Ñ\82оÑ\82еке: <strong>[[:$2]]</strong>\nÐ\98забеÑ\80иÑ\82е Ð´Ñ\80Ñ\83гаÑ\87иÑ\98и Ð½Ð°Ð·Ð¸Ð².",
+       "fileexists-extension": "Ð\94аÑ\82оÑ\82ека Ñ\81а Ñ\81лиÑ\87ним Ð½Ð°Ð·Ð¸Ð²Ð¾Ð¼ Ð²ÐµÑ\9b Ð¿Ð¾Ñ\81Ñ\82оÑ\98и: [[$2|thumb]]\n* Ð\9dазив Ð´Ð°Ñ\82оÑ\82еке ÐºÐ¾Ñ\98Ñ\83 Ñ\88аÑ\99еÑ\82е: <strong>[[:$1]]</strong>\n* Ð\9dазив Ð¿Ð¾Ñ\81Ñ\82оÑ\98еÑ\9bе Ð´Ð°Ñ\82оÑ\82еке: <strong>[[:$2]]</strong>\nÐ\94а Ð»Ð¸ Ð¶ÐµÐ»Ð¸Ñ\82е Ð´Ð° ÐºÐ¾Ñ\80иÑ\81Ñ\82иÑ\82е Ð¿Ñ\80епознаÑ\82Ñ\99ивиÑ\98е Ð¸Ð¼Ðµ?",
        "fileexists-thumbnail-yes": "Изгледа да је датотека умањено издање слике ''(thumbnail)''.\n[[$1|thumb]]\nПроверите датотеку <strong>[[:$1]]</strong>.\nАко је проверена датотека иста слика оригиналне величине, није потребно слати додатну слику.",
        "file-thumbnail-no": "Датотека почиње са <strong>$1</strong>.\nИзгледа да се ради о умањеној слици ''(thumbnail)''.\nУколико имате ову слику у пуној величини, пошаљите је, а ако немате, промените назив датотеке.",
        "fileexists-forbidden": "Датотека с овим називом већ постоји и не може се заменити.\nАко и даље желите да пошаљете датотеку, вратите се и изаберите други назив.\n[[File:$1|thumb|center|$1]]",
        "fileexists-shared-forbidden": "Датотека с овим називом већ постоји у заједничкој остави.\nВратите се и пошаљите датотеку с другим називом.\n[[File:$1|thumb|center|$1]]",
        "file-exists-duplicate": "Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:",
        "file-deleted-duplicate": "Датотека истоветна овој ([[:$1]]) је претходно обрисана.\nПогледајте историју брисања пре поновног слања.",
+       "file-deleted-duplicate-notitle": "Датотека идентична овој претходно је обрисана и име јој је сакривено.\nТребали бисте питати некога ко може видети податке скривених датотека да прегледа ситуацију пре него што поново отпремите датотеку.",
        "uploadwarning": "Упозорење при отпремању",
        "uploadwarning-text": "Измените опис датотеке и покушајте поново.",
        "savefile": "Сачувај датотеку",
        "uploaddisabledtext": "Отпремање датотека је онемогућено.",
        "php-uploaddisabledtext": "Слање датотека је онемогућено у PHP-у.\nПроверите поставке file_uploads.",
        "uploadscripted": "Датотека садржи HTML или скриптни код који може бити погрешно протумачен од стране прегледача.",
+       "upload-scripted-pi-callback": "Датотека која садржи инструкције за обраду XML стилског облика се не може отпремити.",
+       "uploaded-script-svg": "Пронађен скриптни елеменат „$1“ у постављеној SVG датотеци.",
+       "uploaded-hostile-svg": "Пронађен небезбедан CSS у стилском елементу постављене SVG датотеке.",
+       "uploaded-event-handler-on-svg": "Није дозвољено постављање атрибута који контролишу догађаје <code>$1=\"$2\"</code> у SVG датотекама.",
+       "uploaded-href-attribute-svg": "href атрибути <code>&lt;$1 $2=\"$3\"&gt;</code> са нелокалном метом (нпр. http://, javascript:, итд) нису дозвољени у SVG датотекама.",
+       "uploaded-href-unsafe-target-svg": "Пронађен href са несигурном метом <code>&lt;$1 $2=\"$3\"&gt;</code> у постављеној SVG датотеци.",
+       "uploaded-animate-svg": "Пронађена „animate“ ознака која можда мења href користећи се „from“ атрибутом <code>&lt;$1 $2=\"$3\"&gt;</code> у постављеној SVG датотеци.",
        "uploadscriptednamespace": "Ова SVG датотека садржи погрешан именски простор „$1“",
        "uploadvirus": "Датотека садржи вирус!\nДетаљи: $1",
        "uploadjava": "Датотека је формата ZIP који садржи јава .class елемент.\nСлање јава датотека није дозвољено јер оне могу изазвати заобилажење сигурносних ограничења.",
        "upload-too-many-redirects": "Адреса садржи превише преусмерења",
        "upload-http-error": "Дошло је до HTTP грешке: $1",
        "upload-copy-upload-invalid-domain": "Примерци отпремања нису доступни на овом домену.",
+       "upload-dialog-button-cancel": "Откажи",
+       "upload-dialog-button-done": "Готово",
+       "upload-dialog-label-infoform-name": "Назив",
+       "upload-dialog-label-infoform-description": "Опис",
+       "upload-dialog-label-usage-filename": "Назив датотеке",
        "backend-fail-stream": "Не могу да емитујем датотеку $1.",
        "backend-fail-backup": "Не могу да направим резерву датотеке $1.",
        "backend-fail-notexists": "Датотека $1 не постоји.",
        "unusedimages": "Некоришћене датотеке",
        "wantedcategories": "Тражене категорије",
        "wantedpages": "Тражене странице",
-       "wantedpages-summary": "Списак непостојећих страница са највише веза до њих, на овом списку се не налазе странице до којих воде преусмерења. За списак покварених преусмерења погледајте [[{{#special:BrokenRedirects}}]].",
+       "wantedpages-summary": "Списак непостојећих страница са највише веза до њих, на овом списку се не налазе странице до којих воде преусмерења. За списак покварених преусмерења погледајте [[{{#special:BrokenRedirects}}|списак покварених преусмерења]].",
        "wantedpages-badtitle": "Неисправан наслов у низу резултата: $1",
        "wantedfiles": "Тражене датотеке",
        "wantedfiletext-cat": "Следеће датотеке се користе, али не постоје. Датотеке из других ризница могу бити наведене иако не постоје. Такве датотеке ће бити <del>поништене</del> са списка. Поред тога, странице које садрже непостојеће датотеке се налазе [[:$1|овде]].",
        "all-logs-page": "Сви јавни дневници",
        "alllogstext": "Скупни приказ свих доступних историја овог викија.\nМожете сузити приказ одабирући врсту историје, корисничког имена или тражене странице.",
        "logempty": "Нема пронађених ставки у историји.",
-       "log-title-wildcard": "тражи наслове који почињу с овим текстом",
-       "showhideselectedlogentries": "Ð\9fÑ\80икажи/Ñ\81акÑ\80иÑ\98 Ð¸Ð·Ð°Ð±Ñ\80ане Ð·Ð°Ð¿Ð¸Ñ\81е",
+       "log-title-wildcard": "Тражи наслове који почињу с овим текстом",
+       "showhideselectedlogentries": "Ð\9fÑ\80икажи/Ñ\81акÑ\80иÑ\98 Ð¸Ð·Ð°Ð±Ñ\80ане Ð´Ð¾Ð³Ð°Ñ\92аÑ\98е",
        "allpages": "Све странице",
        "nextpage": "Следећа страница ($1)",
        "prevpage": "Претходна страница ($1)",
        "linksearch-pat": "Образац претраге:",
        "linksearch-ns": "Именски простор:",
        "linksearch-ok": "Претражи",
-       "linksearch-text": "Могу се користити џокери попут „*.wikipedia.org“.\nПотребан је највиши домен, као „*.org“.<br />\n{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: $1 (задаје http:// ако не наведете протокол).",
+       "linksearch-text": "Могу се користити џокери попут „*.wikipedia.org“.\nПотребан је највиши домен, као „*.org“.<br />\n{{PLURAL:$2|1=Подржан протокол|Подржани протоколи}}: $1 (задаје http:// ако не наведете протокол).",
        "linksearch-line": "$1 веза у $2",
        "linksearch-error": "Џокери се могу појавити само на почетку адресе.",
        "listusersfrom": "Прикажи кориснике почев од:",
        "listgrouprights-addgroup-self": "додавање {{PLURAL:$2|групе|група}} на свој налог: $1",
        "listgrouprights-removegroup-self": "уклањање {{PLURAL:$2|групе|група}} са свог налога: $1",
        "listgrouprights-addgroup-self-all": "Додај све групе на сопствени налог",
-       "listgrouprights-removegroup-self-all": "Уклони све групе са сопственог налога",
+       "listgrouprights-removegroup-self-all": "уклањање свих група са сопственог налога",
        "listgrouprights-namespaceprotection-header": "Ограничења именских простора",
        "listgrouprights-namespaceprotection-namespace": "Именски простор",
        "listgrouprights-namespaceprotection-restrictedto": "Права потребна за уређивање",
        "emailccsubject": "Копија ваше поруке кориснику $1: $2",
        "emailsent": "Порука је послата",
        "emailsenttext": "Ваша е-порука је послата.",
-       "emailuserfooter": "Ову е-поруку је {{GENDER:|послао|послала|послао}} $1 кориснику $2 путем е-поште с викија {{SITENAME}}.",
+       "emailuserfooter": "Ову е-поруку је послао $1 кориснику $2 помоћу „{{int:emailpage}}“ с викија {{SITENAME}}.",
        "usermessage-summary": "Слање системске поруке.",
        "usermessage-editor": "Уређивач системских порука",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchlistanontext": "Морате бити пријављени да бисте гледали и уређивали ставке на вашем списку надгледања.",
        "watchnologin": "Нисте пријављени",
        "addwatch": "Додај на списак надгледања",
-       "addedwatchtext": "Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].\nБудуће измене ове странице и њене странице за разговор биће наведене тамо.",
+       "addedwatchtext": "Страница „[[:$1]]“ и њена страница за разговор је додата на ваш [[Special:Watchlist|списак надгледања]].",
        "addedwatchtext-short": "Страница „$1“ је додата на ваш списак надгледања.",
        "removewatch": "Уклони са списка надгледања",
-       "removedwatchtext": "Страница „[[:$1]]“ је уклоњена с вашег [[Special:Watchlist|списка надгледања]].",
+       "removedwatchtext": "Страница „[[:$1]]“ и њена страница за разговор је уклоњена с вашег [[Special:Watchlist|списка надгледања]].",
        "removedwatchtext-short": "Страница „$1“ је уклоњена с вашег списка надгледања.",
        "watch": "Надгледај",
        "watchthispage": "Надгледај ову страницу",
        "changecontentmodel-success-title": "Модел садржаја је промењен",
        "changecontentmodel-success-text": "Модел садржаја странице [[:$1]] је промењен.",
        "changecontentmodel-cannot-convert": "Модел садржаја странице [[:$1]] се не може претворити у врсту $2.",
-       "changecontentmodel-title-cantexist": "Не може постојати страница на $1.",
        "changecontentmodel-nodirectediting": "Модел садржаја $1 не подржава изравно уређивање",
        "log-name-contentmodel": "Дневник промене модела садржаја",
        "log-description-contentmodel": "Догађаји који имају везу са моделима садржаја страница",
        "logentry-contentmodel-change": "$1 је {{GENDER:$2|променио|променила}} модел садржаја странице $3 из „$4“ у „$5“",
        "logentry-contentmodel-change-revertlink": "врати",
+       "logentry-contentmodel-change-revert": "врати",
        "protectlogpage": "Дневник закључавања",
        "protectlogtext": "Испод је списак заштићених страница.\nПогледајте [[Special:ProtectedPages|списак заштићених страница]] за више детаља.",
        "protectedarticle": "{{GENDER:|је заштитио|је заштитила}} „[[$1]]“",
        "protect-badnamespace-text": "Странице у овом именском простору се не могу заштитити.",
        "protect-norestrictiontypes-text": "Ова страница се не може заштитити јер нема доступних врста ограничења.",
        "protect-norestrictiontypes-title": "Незаштитљива страна",
-       "protect-legend": "Ð\9fоÑ\82вÑ\80диÑ\82е Ð·Ð°Ñ\88Ñ\82иÑ\82Ñ\83",
+       "protect-legend": "Ð\9fоÑ\81Ñ\82авке Ð·Ð°Ñ\88Ñ\82иÑ\82е",
        "protectcomment": "Разлог:",
        "protectexpiry": "Истиче:",
        "protect_expiry_invalid": "Време истека је неисправно.",
        "restriction-level-autoconfirmed": "полузаштићено",
        "restriction-level-all": "сви нивои",
        "undelete": "Приказ обрисаних страница",
-       "undeletepage": "Ð\9fÑ\80иказ и враћање обрисаних страница",
+       "undeletepage": "Ð\9fÑ\80еглед и враћање обрисаних страница",
        "undeletepagetitle": "'''Следећи садржај се састоји од обрисаних измена странице [[:$1|$1]]'''.",
        "viewdeletedpage": "Приказ обрисаних страница",
        "undeletepagetext": "{{PLURAL:$1|Следећа страница је обрисана, али је још у архиви и може бити враћена|Следеће $1 странице су обрисане, али су још у архиви и могу бити враћене|Следећих $1 страница је обрисано, али су још у архиви и могу бити враћене}}.\nАрхива се повремено чисти од оваквих страница.",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|измена|измене|измена}} и $2 {{PLURAL:$2|датотека је враћена|датотеке су враћене|датотека је враћено}}",
        "undeletedfiles": "{{PLURAL:$1|Датотека је враћена|$1 датотеке су враћене|$1 датотека је враћено}}",
        "cannotundelete": "Враћање није успело:\n$1",
-       "undeletedpage": "'''Страница $1 је враћена'''\n\nПогледајте [[Special:Log/delete|историју брисања]] за записе о скорашњим брисањима и враћањима.",
+       "undeletedpage": "<strong>Страница $1 је враћена</strong>\n\nПогледајте [[Special:Log/delete|дневник брисања]] за записе о скорашњим брисањима и враћањима.",
        "undelete-header": "Погледајте [[Special:Log/delete|историјат брисања]] за недавно обрисане странице.",
        "undelete-search-title": "Претрага обрисаних страница",
        "undelete-search-box": "Претражи обрисане странице",
        "blockipsuccesstext": "[[Special:Contributions/$1|$1]] је {{GENDER:$1|блокиран|блокирана|блокиран}}.<br />\nБлокирања можете да погледате [[Special:BlockList|овде]].",
        "ipb-blockingself": "Овом радњом ћете блокирати себе! Јесте ли сигурни да то желите?",
        "ipb-confirmhideuser": "Управо ћете блокирати корисника с укљученом могућношћу „сакриј корисника“. Овим ће корисничко име бити сакривено у свим списковима и извештајима. Желите ли то да урадите?",
+       "ipb-confirmaction": "Ако сте сигурни да желите наставити означите поље „{{int:ipb-confirm}}“ на дну странице.",
        "ipb-edit-dropdown": "Уреди разлоге блокирања",
        "ipb-unblock-addr": "Деблокирај $1",
        "ipb-unblock": "Деблокирај корисничко име или ИП адресу",
        "thumbnail_gd-library": "Недовршене поставке графичке библиотеке: недостаје функција $1",
        "thumbnail_image-missing": "Датотека недостаје: $1",
        "import": "Увоз страница",
-       "importinterwiki": "Ð\9cеÑ\92Ñ\83вики Ñ\83воз",
+       "importinterwiki": "Увоз Ð¸Ð· Ð´Ñ\80Ñ\83го Ð²Ð¸ÐºÐ¸Ñ\98а",
        "import-interwiki-text": "Изаберите вики и наслов странице за увоз.\nДатуми и имена уредника ће бити сачувани.\nСве радње при увозу с других викија су забележене у [[Special:Log/import|дневнику увоза]].",
        "import-interwiki-sourcewiki": "Изворна вики:",
        "import-interwiki-sourcepage": "Изворна страница:",
        "importcantopen": "Не могу да отворим датотеку за увоз",
        "importbadinterwiki": "Неисправна међувики веза",
        "importsuccess": "Увожење је завршено!",
-       "importnosources": "Ð\9dиÑ\98е Ð¾Ð´Ñ\80еÑ\92ен Ð½Ð¸Ñ\98едан Ð¼ÐµÑ\92Ñ\83вики Ð¸Ð·Ð²Ð¾Ñ\80 Ð·Ð° Ñ\83воз, Ñ\82ако Ð´Ð° Ñ\98е Ð¾Ñ\82пÑ\80емаÑ\9aе Ð¸Ñ\81Ñ\82оÑ\80иÑ\98е Ð¾Ð½ÐµÐ¼Ð¾Ð³Ñ\83Ñ\9bено.",
+       "importnosources": "Није одређен ниједан извор за увоз, тако да је отпремање историје онемогућено.",
        "importnofile": "Увозна датотека није послата.",
        "importuploaderrorsize": "Не могу да отпремим датотеку за увоз.\nДатотека је већа од дозвољене величине.",
        "importuploaderrorpartial": "Не могу да отпремим датотеку за увоз.\nДатотека је само делимично послата.",
        "spam_reverting": "Враћам на последњу измену која не садржи везе до $1",
        "spam_blanking": "Све измене садрже везе до $1. Чистим",
        "spam_deleting": "Све измене садрже везе до $1. Бришем",
-       "simpleantispam-label": "Ð\90нÑ\82и-Ñ\81пам Ð¿Ñ\80овеÑ\80а. \n<strong>Ð\9dÐ\95</strong> попуњавај ово унутра!",
+       "simpleantispam-label": "Ð\90нÑ\82и-Ñ\81пам Ð¿Ñ\80овеÑ\80а. \n<strong>Ð\9dе</strong> попуњавај ово унутра!",
        "pageinfo-title": "Подаци о „$1“",
        "pageinfo-not-current": "Нажалост, немогуће је прибавити ове податке за старије измене.",
        "pageinfo-header-basic": "Основни подаци",
        "confirmemail_loggedin": "Ваша е-адреса је сада потврђена.",
        "confirmemail_subject": "{{SITENAME}} – потврда е-адресе",
        "confirmemail_body": "Неко, вероватно ви, са ИП адресе $1 је отворио налог „$2“ на викију {{SITENAME}}, наводећи ову е-адресу.\n\nДа потврдите да овај налог стварно припада вама, као и да\nомогућите могућности е-поште, отворите ову везу у прегледачу:\n\n$3\n\nУколико нисте отворили налог, пратите везу\nиспод како бисте прекинули поступак уписа:\n\n$5\n\nОвај потврдни код истиче $6 у $5.",
-       "confirmemail_body_changed": "Неко, вероватно ви, са ИП адресе $1 је променио е-адресу налога „$2“ у ову адресу на викију {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали могућности е-поште, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду е-адресе:\n\n$5\n\nОвај потврдни код истиче $6 у $7.",
+       "confirmemail_body_changed": "Неко, вероватно ви, са ИП адресе $1 је променио е-адресу налога „$2“ у ову адресу на викију {{SITENAME}}.\n\nДа бисте потврдили да овај налог стварно припада вама и поново активирали могућности е-поште, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду е-адресе:\n\n$5\n\nОвај потврдни код истиче $6 у $7",
        "confirmemail_body_set": "Неко, вероватно ви, са ИП адресе $1 \nје променио е-адресу налога „$2“ у ову адресу на {{SITENAME}}.\n\nДа бисмо потврдили да овај налог стварно припада вама и поново активирали могућности е-поште на {{SITENAME}}, отворите следећу везу у прегледачу:\n\n$3\n\nАко налог *не* припада вама, пратите следећу везу да откажете потврду е-адресе:\n\n$5\n\nОвај потврдни код истиче $4.",
        "confirmemail_invalidated": "Потврда е-поште је отказана",
        "invalidateemail": "Отказивање потврде е-поште",
        "version-libraries": "Инсталиране библиотеке",
        "version-libraries-library": "Библиотека",
        "version-libraries-version": "Верзија",
+       "version-libraries-license": "Лиценца",
+       "version-libraries-description": "Опис",
+       "version-libraries-authors": "Аутори",
        "redirect": "Преусмерење на датотеку, корисника, страницу или измену",
        "redirect-legend": "Преусмери на датотеку или страницу",
        "redirect-submit": "Иди",
        "htmlform-cloner-create": "Додај још",
        "htmlform-cloner-delete": "Уклони",
        "htmlform-cloner-required": "Бар једна вредност је потребна.",
+       "htmlform-title-not-exists": "[[:$1]] не постоји.",
+       "htmlform-user-not-exists": "<strong>$1</strong> не постоји.",
+       "htmlform-user-not-valid": "<strong>$1</strong> није исправно корисничко име.",
        "sqlite-has-fts": "$1 с подршком претраге целог текста",
        "sqlite-no-fts": "$1 без подршке претраге целог текста",
        "logentry-delete-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} страницу $3",
        "logentry-delete-restore": "$1 је {{GENDER:$2|вратио|вратила}} страницу $3",
-       "logentry-delete-event": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја|$5 догађаја}} у дневнику на $3: $4",
+       "logentry-delete-event": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику $3: $4",
        "logentry-delete-revision": "$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=једне измене|$5 измене|$5 измена}} на страници $3: $4",
-       "logentry-delete-event-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3",
+       "logentry-delete-event-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику $3",
        "logentry-delete-revision-legacy": "$1 је {{GENDER:$2|променио|променила}} видљивост измена на страници $3",
        "logentry-suppress-delete": "$1 је {{GENDER:$2|потиснуо|потиснула}} страницу $3",
-       "logentry-suppress-event": "$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја|$5 догађаја}} у дневнику на $3: $4",
+       "logentry-suppress-event": "$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику $3: $4",
        "logentry-suppress-revision": "$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4",
-       "logentry-suppress-event-legacy": "$1 је потајно {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3",
+       "logentry-suppress-event-legacy": "$1 је потајно {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику $3",
        "logentry-suppress-revision-legacy": "$1 је тајно {{GENDER:$2|променио|променила}} видљивост измена на страници $3",
        "revdelete-content-hid": "садржај је сакривен",
        "revdelete-summary-hid": "опис измене је сакривен",
        "logentry-upload-overwrite": "$1 је {{GENDER:$2|послао|послала}} нову верзију $3",
        "logentry-upload-revert": "$1 је {{GENDER:$2|послао|послала}} $3",
        "log-name-managetags": "Дневник ознака",
-       "log-description-managetags": "Овај дневник садржи списак измена у вези [[Special:Tags|ознака]]. Дневник садржи само радње извршене од стране администратора; уноси за ознаке направљене или обрисане од стране вики софтвера се не налазе у овом дневнику.",
+       "log-description-managetags": "Овај дневник садржи списак измена у вези [[Special:Tags|ознака]]. Дневник садржи само радње извршене од стране администратора, уноси за ознаке направљене или обрисане од стране вики софтвера се не налазе у овом дневнику.",
        "logentry-managetags-create": "$1 је {{GENDER:$2|направио|направила}} ознаку „$4“",
        "logentry-managetags-delete": "$1 је {{GENDER:$2|обрисао|обрисала}} ознаку „$4“ (уклоњена је из $5 {{PLURAL:$5|измене или дневника|измена и/или дневника}})",
        "logentry-managetags-activate": "$1 је {{GENDER:$2|активирао|активирала}} ознаку „$4“ за употребу од стране корисника и ботова",
        "special-characters-group-thai": "тајландски",
        "special-characters-group-lao": "лаоски",
        "special-characters-group-khmer": "кмерски",
+       "mw-widgets-dateinput-placeholder-day": "ГГГГ-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "ГГГГ-ММ",
        "mw-widgets-titleinput-description-new-page": "страница још увек не постоји",
        "mw-widgets-titleinput-description-redirect": "преусмерава на $1"
 }
index 7c1e636..ab993c9 100644 (file)
        "delete-hook-aborted": "Brisanje je prekinula kuka.\nNije dato nikakvo obrazloženje.",
        "badtitle": "Neispravan naslov",
        "badtitletext": "Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.\nMožda sadrži znakove koji se ne mogu koristiti u naslovima.",
-       "title-invalid-characters": "Zatraženi naslov stranice sadrži neispravne znakove: „$1“.",
+       "title-invalid-characters": "Traženi naslov ima nevažeće karaktere: „$1“.",
        "perfcached": "Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.",
        "perfcachedts": "Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|1=je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.",
        "querypage-no-updates": "Ažuriranje ove stranice je trenutno onemogućeno.\nPodaci koji se ovde nalaze mogu biti zastareli.",
        "wrongpassword": "Uneli ste neispravnu lozinku. Pokušajte ponovo.",
        "wrongpasswordempty": "Niste uneli lozinku. Pokušajte ponovo.",
        "passwordtooshort": "Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.",
-       "passwordtoolong": "Lozinke ne mogu biti duže od {{PLURAL:$1|jednog znaka|$1 znaka|$1 znakova}}.",
+       "passwordtoolong": "Lozinke ne mogu biti duže od {{PLURAL:$1|$1 znaka|$1 znakova}}.",
        "password-name-match": "Lozinka se mora razlikovati od korisničkog imena.",
        "password-login-forbidden": "Korišćenje ovog korisničkog imena i lozinke je zabranjeno.",
        "mailmypassword": "Resetuj lozinku",
        "content-model-text": "čist tekst",
        "content-model-javascript": "javaskript",
        "content-model-css": "CSS",
+       "duplicate-args-warning": "<strong>Upozorenje:</strong> [[:$1]] poziva [[:$2]] sa više od jedne vrednosti za parametar „$3“. Samo poslednja navedena vrednost će biti korišćena.",
        "expensive-parserfunction-warning": "'''Upozorenje:''' ova stranica sadrži previše poziva za raščlanjivanje.\n\nTrebalo bi da ima manje od $2 {{PLURAL:$2|poziv|poziva|poziva}}, a sada ima $1.",
        "expensive-parserfunction-category": "Stranice s previše poziva za raščlanjivanje",
        "post-expand-template-inclusion-warning": "'''Upozorenje:''' veličina uključenog šablona je prevelika.\nNeki šabloni neće biti uključeni.",
        "history-feed-empty": "Tražena stranica ne postoji.\nMoguće da je obrisana s vikija ili je preimenovana.\nPokušajte da [[Special:Search|pretražite viki]] za slične stranice.",
        "rev-deleted-comment": "(opis izmene uklonjen)",
        "rev-deleted-user": "(korisničko ime uklonjeno)",
-       "rev-deleted-event": "(detalji dnevnika uklonjeni)",
+       "rev-deleted-event": "(detalji unosa uklonjeni)",
        "rev-deleted-user-contribs": "[korisničko ime ili IP adresa je uklonjena – izmena je sakrivena sa spiska doprinosa]",
        "rev-deleted-text-permission": "Izmena ove stranice je '''obrisana'''.\nDetalje možete videti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].",
        "rev-deleted-text-unhide": "Izmena ove stranice je '''obrisana'''.\nDetalje možete videti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} istoriji brisanja].\nIpak možete da [$1 vidite ovu izmenu] ako želite da nastavite.",
        "revdelete-confirm": "Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
        "revdelete-suppress-text": "Sakrivanje izmena bi trebalo koristiti <strong>samo</strong> u sledećim slučajevima:\n* zlonamerni ili pogrdni podaci\n* neprikladni lični podaci\n*: <em>kućna adresa i broj telefona, broj kreditne kartice, JMBG itd.</em>",
        "revdelete-legend": "Ograničenja vidljivosti",
-       "revdelete-hide-text": "Sakrij tekst izmene",
+       "revdelete-hide-text": "Tekst izmene",
        "revdelete-hide-image": "Sakrij sadržaj datoteke",
        "revdelete-hide-name": "Sakrij cilj i parametre",
        "revdelete-hide-comment": "Opis izmene",
-       "revdelete-hide-user": "Korisnčko ime urednika/IP adresa",
+       "revdelete-hide-user": "Korisničko ime/IP adresa",
        "revdelete-hide-restricted": "Sakrij podatke od administratora i drugih korisnika",
        "revdelete-radio-same": "(ne menjaj)",
        "revdelete-radio-set": "Sakriveno",
        "revdelete-unsuppress": "Ukloni ograničenja na vraćenim izmenama",
        "revdelete-log": "Razlog:",
        "revdelete-submit": "Primeni na {{PLURAL:$1|izabranu izmenu|izabrane izmene}}",
-       "revdelete-success": "'''Vidljivost izmene je ažurirana.'''",
+       "revdelete-success": "Vidljivost izmene je ažurirana.",
        "revdelete-failure": "'''Ne mogu da ažuriram vidljivost izmene:'''\n$1",
-       "logdelete-success": "'''Vidljivost istorije je postavljena.'''",
+       "logdelete-success": "Postavljena je vidljivost unosa u dnevniku.",
        "logdelete-failure": "'''Ne mogu da postavim vidljivost istorije:'''\n$1",
        "revdel-restore": "promeni vidljivost",
        "pagehist": "Istorija stranice",
        "search-category": "(kategorija $1)",
        "search-file-match": "(podudara se sadržaj datoteke)",
        "search-suggest": "Da li ste mislili na: $1",
+       "search-rewritten": "Prikazani rezultati za $1. Ipak pretraži $2.",
        "search-interwiki-caption": "Bratski projekti",
        "search-interwiki-default": "Rezultati sa $1:",
        "search-interwiki-more": "(više)",
        "stub-threshold": "Prag za oblikovanje <a href=\"#\" class=\"stub\">veze kao klice</a> (u bajtovima):",
        "stub-threshold-disabled": "Onemogućeno",
        "recentchangesdays": "Broj dana u skorašnjim izmenama:",
-       "recentchangesdays-max": "(najviše $1 {{PLURAL:$1|dan|dana|dana}})",
+       "recentchangesdays-max": "Najviše $1 {{PLURAL:$1|dan|dana}}",
        "recentchangescount": "Broj izmena za prikaz:",
        "prefs-help-recentchangescount": "Podrazumeva skorašnje izmene, istorije stranica i dnevnike.",
        "prefs-help-watchlist-token2": "Ovo je tajni ključ za veb dovod vašeg spiska nadgledanja.\nSvako ko zna ovaj ključ biće u mogućnosti da vidi vaša nadgledanja stoga nemojte ga odavati nikome.\nAko je potrebno možete ga [[Special:ResetTokens|resetovati]].",
        "email-address-validity-invalid": "Unesite ispravnu e-adresu",
        "userrights": "Upravljanje korisničkim pravima",
        "userrights-lookup-user": "Upravljanje korisničkim grupama",
-       "userrights-user-editname": "Unesite korisničko ime:",
-       "editusergroup": "Promeni korisničke grupe",
+       "userrights-user-editname": "Korisničko ime:",
+       "editusergroup": "Pretraži",
        "editinguser": "Menjate korisnička prava {{GENDER:$1|korisnika|korisnice|korisnika}} '''[[User:$1|$1]]''' $2",
        "userrights-editusergroup": "Promena korisničkih grupa",
        "saveusergroups": "Sačuvaj korisničke grupe",
        "userrights-groupsmember": "Član:",
-       "userrights-groupsmember-auto": "Uključeni član od:",
+       "userrights-groupsmember-auto": "Podrazumevano član i:",
        "userrights-groups-help": "Možete promeniti grupe kojima ovaj korisnik pripada.\n* Označena kućica označava da se korisnik nalazi u toj grupi.\n* Neoznačena kućica označava da se korisnik ne nalazi u toj grupi.\n* Zvezdica označava da ne možete ukloniti grupu ako je dodate i obratno.",
        "userrights-reason": "Razlog:",
        "userrights-no-interwiki": "Nemate ovlašćenja da menjate korisnička prava na drugim vikijima.",
        "right-protect": "promeni nivoe zaštite i uredi stranice sa prenosivom zaštitom",
        "right-editprotected": "uređivanje stranice pod zaštitom „{{int:protect-level-sysop}}“",
        "right-editsemiprotected": "uređivanje stranica pod zaštitom „{{int:protect-level-autoconfirmed}}“",
-       "right-editinterface": "uređivanje korisničkog sučelja",
+       "right-editinterface": "uređivanje korisničkog okruženja",
        "right-editusercssjs": "uređivanje tuđih CSS i javaskript datoteka",
        "right-editusercss": "uređivanje tuđih CSS datoteka",
        "right-edituserjs": "uređivanje tuđih JavaScript datoteka",
        "right-editmyusercss": "uređivanje sopstvenih CSS datoteka",
        "right-editmyuserjs": "uređivanje sopstvenih JavaScript datoteka",
        "right-viewmywatchlist": "vidi sopstveni spisak nadgledanja",
+       "right-editmywatchlist": "uređivanje sopstvenog spiska nadgledanja; neke preduzete radnje će svejedno dodati stranice na spisak i bez ovog prava",
        "right-viewmyprivateinfo": "vidite svoje lične podatke (npr. adresu e-pošte, pravo ime)",
        "right-editmyprivateinfo": "uređivanje sopstvenih ličnih podataka (npr. adresu e-pošte, pravo ime)",
        "right-editmyoptions": "uređivanje sopstvenih podešavanja",
        "boteditletter": "b",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|korisnik nadgleda|korisnika nadgledaju|korisnika nadgledaju}}]",
-       "rc_categories": "Ograniči na kategorije (razdvoji s uspravnom crtom)",
+       "rc_categories": "Ograniči na kategorije (razdvoji s uspravnom crtom):",
        "rc_categories_any": "Sve",
        "rc-change-size": "$1",
        "rc-change-size-new": "$1 {{PLURAL:$1|bajt|bajta|bajtova}} posle izmene",
        "unusedimages": "Nekorišćene datoteke",
        "wantedcategories": "Tražene kategorije",
        "wantedpages": "Tražene stranice",
-       "wantedpages-summary": "Spisak nepostojećih stranica sa najviše veza do njih, na ovom spisku se ne nalaze stranice do kojih vode preusmerenja. Za spisak pokvarenih preusmerenja pogledajte [[{{#special:BrokenRedirects}}]].",
+       "wantedpages-summary": "Spisak nepostojećih stranica sa najviše veza do njih, na ovom spisku se ne nalaze stranice do kojih vode preusmerenja. Za spisak pokvarenih preusmerenja pogledajte [[{{#special:BrokenRedirects}}|spisak pokvarenih preusmerenja]].",
        "wantedpages-badtitle": "Neispravan naslov u nizu rezultata: $1",
        "wantedfiles": "Tražene datoteke",
        "wantedfiletext-cat": "Sledeće datoteke se koriste, ali ne postoje. Datoteke iz drugih riznica mogu biti navedene iako ne postoje. Takve datoteke će biti <del>poništene</del> sa spiska. Pored toga, stranice koje sadrže nepostojeće datoteke se nalaze [[:$1|ovde]].",
        "all-logs-page": "Svi javni dnevnici",
        "alllogstext": "Skupni prikaz svih dostupnih istorija ovog vikija.\nMožete suziti prikaz odabirući vrstu istorije, korisničkog imena ili tražene stranice.",
        "logempty": "Nema pronađenih stavki u istoriji.",
-       "log-title-wildcard": "traži naslove koji počinju s ovim tekstom",
-       "showhideselectedlogentries": "Prikaži/sakrij izabrane zapise",
+       "log-title-wildcard": "Traži naslove koji počinju s ovim tekstom",
+       "showhideselectedlogentries": "Prikaži/sakrij izabrane događaje",
        "allpages": "Sve stranice",
        "nextpage": "Sledeća stranica ($1)",
        "prevpage": "Prethodna stranica ($1)",
        "linksearch-pat": "Obrazac pretrage:",
        "linksearch-ns": "Imenski prostor:",
        "linksearch-ok": "Pretraži",
-       "linksearch-text": "Mogu se koristiti džokeri poput „*.wikipedia.org“.\nPotreban je najviši domen, kao „*.org“.<br />\n{{PLURAL:$2|Podržan protokol|Podržani protokoli}}: $1 (zadaje http:// ako ne navedete protokol).",
+       "linksearch-text": "Mogu se koristiti džokeri poput „*.wikipedia.org“.\nPotreban je najviši domen, kao „*.org“.<br />\n{{PLURAL:$2|1=Podržan protokol|Podržani protokoli}}: $1 (zadaje http:// ako ne navedete protokol).",
        "linksearch-line": "$1 veza u $2",
        "linksearch-error": "Džokeri se mogu pojaviti samo na početku adrese.",
        "listusersfrom": "Prikaži korisnike počev od:",
        "listgrouprights-addgroup-self": "dodavanje {{PLURAL:$2|grupe|grupa}} na svoj nalog: $1",
        "listgrouprights-removegroup-self": "uklanjanje {{PLURAL:$2|grupe|grupa}} sa svog naloga: $1",
        "listgrouprights-addgroup-self-all": "Dodaj sve grupe na sopstveni nalog",
-       "listgrouprights-removegroup-self-all": "Ukloni sve grupe sa sopstvenog naloga",
+       "listgrouprights-removegroup-self-all": "uklanjanje svih grupa sa sopstvenog naloga",
        "listgrouprights-namespaceprotection-header": "Ograničenja imenskih prostora",
        "listgrouprights-namespaceprotection-namespace": "Imenski prostor",
        "listgrouprights-namespaceprotection-restrictedto": "Prava potrebna za uređivanje",
        "emailccsubject": "Kopija vaše poruke korisniku $1: $2",
        "emailsent": "Poruka je poslata",
        "emailsenttext": "Vaša e-poruka je poslata.",
-       "emailuserfooter": "Ovu e-poruku je {{GENDER:|poslao|poslala|poslao}} $1 korisniku $2 putem e-pošte s vikija {{SITENAME}}.",
+       "emailuserfooter": "Ovu e-poruku je poslao $1 korisniku $2 pomoću „{{int:emailpage}}“ s vikija {{SITENAME}}.",
        "usermessage-summary": "Slanje sistemske poruke.",
        "usermessage-editor": "Uređivač sistemskih poruka",
        "usermessage-template": "MediaWiki:UserMessage",
        "watchlistanontext": "Morate biti $1 da biste gledali i uređivali stavke na vašem spisku nadgledanja.",
        "watchnologin": "Niste prijavljeni",
        "addwatch": "Dodaj na spisak nadgledanja",
-       "addedwatchtext": "Stranica „[[:$1]]“ je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].\nBuduće izmene ove stranice i njene stranice za razgovor biće navedene tamo.",
+       "addedwatchtext": "Stranica „[[:$1]]“ i njena stranica za razgovor je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].",
        "addedwatchtext-short": "Stranica „$1“ je dodata na vaš spisak nadgledanja.",
        "removewatch": "Ukloni sa spiska nadgledanja",
-       "removedwatchtext": "Stranica „[[:$1]]“ je uklonjena s vašeg [[Special:Watchlist|spiska nadgledanja]].",
+       "removedwatchtext": "Stranica „[[:$1]]“ i njena stranica za razgovor je uklonjena s vašeg [[Special:Watchlist|spiska nadgledanja]].",
        "removedwatchtext-short": "Stranica „$1“ je uklonjena s vašeg spiska nadgledanja.",
        "watch": "Nadgledaj",
        "watchthispage": "Nadgledaj ovu stranicu",
        "exbeforeblank": "sadržaj pre brisanja je bio: „$1“",
        "delete-confirm": "Brisanje stranice „$1“",
        "delete-legend": "Obriši",
-       "historywarning": "<strong>Upozorenje:</strong> stranica koju želite da obrišete ima istoriju s približno $1 {{PLURAL:$1|izmenom|izmene|izmena}}:",
+       "historywarning": "<strong>Upozorenje:</strong> stranica koju želite da obrišete ima istoriju sa $1 {{PLURAL:$1|izmenom|izmene|izmena}}:",
        "confirmdeletetext": "Upravo ćete obrisati stranicu, uključujući i njenu istoriju.\nPotvrdite svoju nameru, da razumete posledice i da ovo radite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].",
        "actioncomplete": "Radnja je završena",
        "actionfailed": "Radnja nije uspela",
        "changecontentmodel-success-title": "Model sadržaja je promenjen",
        "changecontentmodel-success-text": "Model sadržaja stranice [[:$1]] je promenjen.",
        "changecontentmodel-cannot-convert": "Model sadržaja stranice [[:$1]] se ne može pretvoriti u vrstu $2.",
-       "changecontentmodel-title-cantexist": "Ne može postojati stranica na $1.",
        "changecontentmodel-nodirectediting": "Model sadržaja $1 ne podržava izravno uređivanje",
        "log-name-contentmodel": "Dnevnik promene modela sadržaja",
        "log-description-contentmodel": "Događaji koji imaju vezu sa modelima sadržaja stranica",
        "protect-badnamespace-text": "Stranice u ovom imenskom prostoru se ne mogu zaštititi.",
        "protect-norestrictiontypes-text": "Ova stranica se ne može zaštititi jer nema dostupnih vrsta ograničenja.",
        "protect-norestrictiontypes-title": "Nezaštitljiva strana",
-       "protect-legend": "Potvrdite zaštitu",
+       "protect-legend": "Postavke zaštite",
        "protectcomment": "Razlog:",
        "protectexpiry": "Ističe:",
        "protect_expiry_invalid": "Vreme isteka je neispravno.",
        "restriction-level-autoconfirmed": "poluzaštićeno",
        "restriction-level-all": "svi nivoi",
        "undelete": "Prikaz obrisanih stranica",
-       "undeletepage": "Prikaz i vraćanje obrisanih stranica",
+       "undeletepage": "Pregled i vraćanje obrisanih stranica",
        "undeletepagetitle": "'''Sledeći sadržaj se sastoji od obrisanih izmena stranice [[:$1|$1]]'''.",
        "viewdeletedpage": "Prikaz obrisanih stranica",
        "undeletepagetext": "{{PLURAL:$1|Sledeća stranica je obrisana, ali je još u arhivi i može biti vraćena|Sledeće $1 stranice su obrisane, ali su još u arhivi i mogu biti vraćene|Sledećih $1 stranica je obrisano, ali su još u arhivi i mogu biti vraćene}}.\nArhiva se povremeno čisti od ovakvih stranica.",
        "undeletedrevisions-files": "$1 {{PLURAL:$1|izmena|izmene|izmena}} i $2 {{PLURAL:$2|datoteka je vraćena|datoteke su vraćene|datoteka je vraćeno}}",
        "undeletedfiles": "{{PLURAL:$1|Datoteka je vraćena|$1 datoteke su vraćene|$1 datoteka je vraćeno}}",
        "cannotundelete": "Vraćanje nije uspelo:\n$1",
-       "undeletedpage": "'''Stranica $1 je vraćena'''\n\nPogledajte [[Special:Log/delete|istoriju brisanja]] za zapise o skorašnjim brisanjima i vraćanjima.",
+       "undeletedpage": "<strong>Stranica $1 je vraćena</strong>\n\nPogledajte [[Special:Log/delete|dnevnik brisanja]] za zapise o skorašnjim brisanjima i vraćanjima.",
        "undelete-header": "Pogledajte [[Special:Log/delete|istorijat brisanja]] za nedavno obrisane stranice.",
        "undelete-search-title": "Pretraga obrisanih stranica",
        "undelete-search-box": "Pretraži obrisane stranice",
        "thumbnail_gd-library": "Nedovršene postavke grafičke biblioteke: nedostaje funkcija $1",
        "thumbnail_image-missing": "Datoteka nedostaje: $1",
        "import": "Uvoz stranica",
-       "importinterwiki": "Međuviki uvoz",
+       "importinterwiki": "Uvoz iz drugo vikija",
        "import-interwiki-text": "Izaberite viki i naslov stranice za uvoz.\nDatumi i imena urednika će biti sačuvani.\nSve radnje pri uvozu s drugih vikija su zabeležene u [[Special:Log/import|dnevniku uvoza]].",
        "import-interwiki-sourcewiki": "Izvorna viki:",
        "import-interwiki-sourcepage": "Izvorna stranica:",
        "importcantopen": "Ne mogu da otvorim datoteku za uvoz",
        "importbadinterwiki": "Neispravna međuviki veza",
        "importsuccess": "Uvoženje je završeno!",
-       "importnosources": "Nije određen nijedan međuviki izvor za uvoz, tako da je otpremanje istorije onemogućeno.",
+       "importnosources": "Nije određen nijedan izvor za uvoz, tako da je otpremanje istorije onemogućeno.",
        "importnofile": "Uvozna datoteka nije poslata.",
        "importuploaderrorsize": "Ne mogu da otpremim datoteku za uvoz.\nDatoteka je veća od dozvoljene veličine.",
        "importuploaderrorpartial": "Ne mogu da otpremim datoteku za uvoz.\nDatoteka je samo delimično poslata.",
        "tooltip-pt-logout": "Odjavite se",
        "tooltip-pt-createaccount": "Ohrabrujemo vas da otvorite nalog i prijavite se ali to nije obavezno",
        "tooltip-ca-talk": "Razgovor o stranici sa sadržajem",
-       "tooltip-ca-edit": "Možete da uređujete ovu stranicu. Koristite pretpregled pre snimanja",
+       "tooltip-ca-edit": "Uredi ovu stranicu",
        "tooltip-ca-addsection": "Započnite novi odeljak",
        "tooltip-ca-viewsource": "Ova stranica je zaključana. Možete da vidite izvorni kod.",
        "tooltip-ca-history": "Prethodne verzije ove stranice",
        "spam_reverting": "Vraćam na poslednju izmenu koja ne sadrži veze do $1",
        "spam_blanking": "Sve izmene sadrže veze do $1. Čistim",
        "spam_deleting": "Sve izmene sadrže veze do $1. Brišem",
-       "simpleantispam-label": "Anti-spama provera. \n<strong>NE</strong> popunjavaj ovo unutra!",
+       "simpleantispam-label": "Anti-spama provera. \n<strong>Ne</strong> popunjavaj ovo unutra!",
        "pageinfo-title": "Podaci o „$1“",
        "pageinfo-not-current": "Nažalost, nemoguće je pribaviti ove podatke za starije izmene.",
        "pageinfo-header-basic": "Osnovni podaci",
        "confirmemail_loggedin": "Vaša e-adresa je sada potvrđena.",
        "confirmemail_subject": "{{SITENAME}} – potvrda e-adrese",
        "confirmemail_body": "Neko, verovatno vi, sa IP adrese $1 je otvorio nalog „$2“ na vikiju {{SITENAME}}, navodeći ovu e-adresu.\n\nDa potvrdite da ovaj nalog stvarno pripada vama, kao i da\nomogućite mogućnosti e-pošte, otvorite ovu vezu u pregledaču:\n\n$3\n\nUkoliko niste otvorili nalog, pratite vezu\nispod kako biste prekinuli postupak upisa:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $5.",
-       "confirmemail_body_changed": "Neko, verovatno vi, sa IP adrese $1 je promenio e-adresu naloga „$2“ u ovu adresu na vikiju {{SITENAME}}.\n\nDa biste potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti e-pošte, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu e-adrese:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $7.",
+       "confirmemail_body_changed": "Neko, verovatno vi, sa IP adrese $1 je promenio e-adresu naloga „$2“ u ovu adresu na vikiju {{SITENAME}}.\n\nDa biste potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti e-pošte, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu e-adrese:\n\n$5\n\nOvaj potvrdni kod ističe $6 u $7",
        "confirmemail_body_set": "Neko, verovatno vi, sa IP adrese $1 je promenio e-adresu naloga „$2“ u ovu adresu na {{SITENAME}}.\n\nDa bismo potvrdili da ovaj nalog stvarno pripada vama i ponovo aktivirali mogućnosti e-pošte na {{SITENAME}}, otvorite sledeću vezu u pregledaču:\n\n$3\n\nAko nalog *ne* pripada vama, pratite sledeću vezu da otkažete potvrdu e-adrese:\n\n$5\n\nOvaj potvrdni kod ističe $4.",
        "confirmemail_invalidated": "Potvrda e-pošte je otkazana",
        "invalidateemail": "Otkazivanje potvrde e-pošte",
        "tags-deactivate-reason": "Razlog:",
        "tags-deactivate-not-allowed": "Nije moguće deaktivirati oznaku „$1“.",
        "tags-deactivate-submit": "Dekativiraj",
+       "tags-edit-existing-tags": "Postojeće oznake:",
+       "tags-edit-new-tags": "Nove oznake:",
+       "tags-edit-reason": "Razlog:",
        "comparepages": "Upoređivanje stranica",
        "compare-page1": "Stranica 1",
        "compare-page2": "Stranica 2",
        "htmlform-cloner-create": "Dodaj još",
        "htmlform-cloner-delete": "Ukloni",
        "htmlform-cloner-required": "Bar jedna vrednost je potrebna.",
+       "htmlform-user-not-exists": "<strong>$1</strong> ne postoji.",
+       "htmlform-user-not-valid": "<strong>$1</strong> nije ispravno korisničko ime.",
        "sqlite-has-fts": "$1 s podrškom pretrage celog teksta",
        "sqlite-no-fts": "$1 bez podrške pretrage celog teksta",
        "logentry-delete-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3",
        "logentry-delete-restore": "$1 je {{GENDER:$2|vratio|vratila}} stranicu $3",
-       "logentry-delete-event": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja|$5 događaja}} u dnevniku na $3: $4",
+       "logentry-delete-event": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku $3: $4",
        "logentry-delete-revision": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=jedne izmene|$5 izmene|$5 izmena}} na stranici $3: $4",
-       "logentry-delete-event-legacy": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku na $3",
+       "logentry-delete-event-legacy": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku $3",
        "logentry-delete-revision-legacy": "$1 je {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3",
        "logentry-suppress-delete": "$1 je {{GENDER:$2|potisnuo|potisnula}} stranicu $3",
-       "logentry-suppress-event": "$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja|$5 događaja}} u dnevniku na $3: $4",
+       "logentry-suppress-event": "$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku $3: $4",
        "logentry-suppress-revision": "$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4",
-       "logentry-suppress-event-legacy": "$1 је tajno {{GENDER:$2|promenio|promenila}} vidljivost događaj u dnevniku na $3",
+       "logentry-suppress-event-legacy": "$1 је tajno {{GENDER:$2|promenio|promenila}} vidljivost događaj u dnevniku $3",
        "logentry-suppress-revision-legacy": "$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3",
        "revdelete-content-hid": "sadržaj je sakriven",
        "revdelete-summary-hid": "opis izmene je sakriven",
        "logentry-upload-overwrite": "$1 je {{GENDER:$2|poslao|poslala}} novu verziju $3",
        "logentry-upload-revert": "$1 je {{GENDER:$2|poslao|poslala}} $3",
        "log-name-managetags": "Dnevnik oznaka",
-       "log-description-managetags": "Ovaj dnevnik sadrži spisak izmena u vezi [[Special:Tags|oznaka]]. Dnevnik sadrži samo radnje izvršene od strane administratora; unosi za oznake napravljene ili obrisane od strane viki softvera se ne nalaze u ovom dnevniku.",
+       "log-description-managetags": "Ovaj dnevnik sadrži spisak izmena u vezi [[Special:Tags|oznaka]]. Dnevnik sadrži samo radnje izvršene od strane administratora, unosi za oznake napravljene ili obrisane od strane viki softvera se ne nalaze u ovom dnevniku.",
        "logentry-managetags-create": "$1 je {{GENDER:$2|napravio|napravila}} oznaku „$4“",
        "logentry-managetags-delete": "$1 je {{GENDER:$2|obrisao|obrisala}} oznaku „$4“ (uklonjena je iz $5 {{PLURAL:$5|izmene ili dnevnika|izmena i/ili dnevnika}})",
        "logentry-managetags-activate": "$1 je {{GENDER:$2|aktivirao|aktivirala}} oznaku „$4“ za upotrebu od strane korisnika i botova",
        "special-characters-group-gujarati": "Gudžarati",
        "special-characters-group-thai": "tajlandski",
        "special-characters-group-lao": "laoski",
-       "special-characters-group-khmer": "kmerski"
+       "special-characters-group-khmer": "kmerski",
+       "mw-widgets-dateinput-placeholder-day": "GGGG-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "GGGG-MM",
+       "mw-widgets-titleinput-description-new-page": "stranica još uvek ne postoji",
+       "mw-widgets-titleinput-description-redirect": "preusmerava na $1"
 }
index c4fb1be..2d8bd67 100644 (file)
@@ -73,6 +73,7 @@
        "tog-hideminor": "Dölj mindre redigeringar i senaste ändringar",
        "tog-hidepatrolled": "Dölj patrullerade redigeringar i senaste ändringar",
        "tog-newpageshidepatrolled": "Dölj patrullerade sidor i listan över nya sidor",
+       "tog-hidecategorization": "Dölj kategorisering av sidor",
        "tog-extendwatchlist": "Utöka bevakningslistan till att visa alla ändringar, inte bara den senaste",
        "tog-usenewrc": "Gruppera ändringar efter sida i senaste ändringar och bevakningslistan",
        "tog-numberheadings": "Automatisk numrerade rubriker",
        "tog-watchlisthideliu": "Visa inte redigeringar av inloggade användare i bevakningslistan",
        "tog-watchlisthideanons": "Dölj redigeringar av anonyma användare i bevakningslistan",
        "tog-watchlisthidepatrolled": "Dölj patrullerade redigeringar i bevakningslistan",
+       "tog-watchlisthidecategorization": "Dölj kategorisering av sidor",
        "tog-ccmeonemails": "Skicka kopior till mig av e-post jag skickar till andra användare",
        "tog-diffonly": "Visa inte sidinnehåll under diffar",
        "tog-showhiddencats": "Visa dolda kategorier",
        "actionthrottled": "Åtgärden stoppades",
        "actionthrottledtext": "Som skydd mot spam finns det en begränsning av hur många gånger du kan utföra den här åtgärden under en viss tid. Du har överskridit den gränsen. Försök igen om några minuter.",
        "protectedpagetext": "Den här sidan har skrivskyddats för att förhindra redigering eller andra åtgärder.",
-       "viewsourcetext": "Du kan se och kopiera denna sidas källtext:",
-       "viewyourtext": "Du kan se och kopiera källan för '''dina redigeringar''' av denna sida:",
+       "viewsourcetext": "Du kan se och kopiera denna sidas källtext.",
+       "viewyourtext": "Du kan se och kopiera källan för <strong>dina redigeringar</strong> av denna sida.",
        "protectedinterface": "Denna sida innehåller text för mjukvarans gränssnitt på denna wiki, och är skrivskyddad för att förebygga missbruk.\nFör att lägga till eller ändra översättningar för alla wikis, var god använd [//translatewiki.net/ translatewiki.net], lokaliseringsprojektet för MediaWiki.",
        "editinginterface": "<strong>Varning:</strong> Du redigerar en sida som används för texten i gränssnittet.\nÄndringar på denna sida kommer att påverka användargränssnittets utseende för andra användare på denna wiki.",
        "translateinterface": "För att lägga till eller ändra översättningar för alla wikis, använd [//translatewiki.net/ translatewiki.net], lokaliseringsprojektet för MediaWiki.",
        "search-category": "(kategorin $1)",
        "search-file-match": "(överensstämmer filens innehåll)",
        "search-suggest": "Menade du: $1",
+       "search-rewritten": "Visar resultat för $1. Sök istället efter $2.",
        "search-interwiki-caption": "Systerprojekt",
        "search-interwiki-default": "Resultat från $1:",
        "search-interwiki-more": "(mer)",
        "rcshowhidemine": "$1 mina ändringar",
        "rcshowhidemine-show": "Visa",
        "rcshowhidemine-hide": "Dölj",
+       "rcshowhidecategorization": "$1 kategorisering av sidor",
+       "rcshowhidecategorization-show": "Visa",
+       "rcshowhidecategorization-hide": "Dölj",
        "rclinks": "Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3",
        "diff": "skillnad",
        "hist": "historik",
        "newpageletter": "N",
        "boteditletter": "b",
        "number_of_watching_users_pageview": "[$1 bevakande {{PLURAL:$1|användare|användare}}]",
-       "rc_categories": "Begränsa till följande kategorier (separera med \"|\")",
-       "rc_categories_any": "Vilken som helst",
+       "rc_categories": "Begränsa till följande kategorier (separera med \"|\"):",
+       "rc_categories_any": "Någon av de valda",
        "rc-change-size-new": "$1 {{PLURAL:$1|byte}} efter ändring",
        "newsectionsummary": "/* $1 */ nytt avsnitt",
        "rc-enhanced-expand": "Visa detaljer",
        "recentchangeslinked-summary": "Detta är en lista över de senaste ändringarna på sidor som länkas till från en given sida (eller på sidor som hör till en viss kategori).\nSidor på [[Special:Watchlist|din bevakningslista]] är markerade med '''fetstil'''.",
        "recentchangeslinked-page": "Sidnamn:",
        "recentchangeslinked-to": "Visa ändringar på sidor med länkar till den givna sidan istället",
+       "recentchanges-page-added-to-category": "[[:$1]] lades till i kategorin",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} lades till i kategorin",
+       "recentchanges-page-removed-from-category": "[[:$1]] togs bort från kategorin",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] och {{PLURAL:$2|en sida|$2 sidor}} togs bort från kategorin",
        "upload": "Ladda upp fil",
        "uploadbtn": "Ladda upp fil",
        "reuploaddesc": "Avbryt uppladdningen och gå tillbaka till uppladdningsformuläret.",
        "upload-too-many-redirects": "URL-en innehöll för många omdirigeringar",
        "upload-http-error": "Ett HTTP-fel uppstod: $1",
        "upload-copy-upload-invalid-domain": "Uppladdning av kopior är inte tillgängligt från denna domän.",
+       "upload-dialog-title": "Ladda upp fil",
+       "upload-dialog-error": "Ett fel uppstod",
+       "upload-dialog-warning": "En varning uppstod",
+       "upload-dialog-button-cancel": "Avbryt",
+       "upload-dialog-button-done": "Klar",
+       "upload-dialog-button-save": "Spara",
+       "upload-dialog-button-upload": "Ladda upp",
+       "upload-dialog-label-select-file": "Välj fil",
+       "upload-dialog-label-infoform-title": "Detaljer",
+       "upload-dialog-label-infoform-name": "Namn",
+       "upload-dialog-label-infoform-description": "Beskrivning",
+       "upload-dialog-label-usage-title": "Användning",
+       "upload-dialog-label-usage-filename": "Filnamn",
        "backend-fail-stream": "Kunde inte strömma filen $1.",
        "backend-fail-backup": "Kunde inte säkerhetskopiera filen ''$1''.",
        "backend-fail-notexists": "Filen $1 finns inte.",
        "listusers-creationsort": "Sortera efter datum skapat",
        "listusers-desc": "Sortera i fallande ordning",
        "usereditcount": "$1 {{PLURAL:$1|redigering|redigeringar}}",
-       "usercreated": "{{GENDER:$3|Skapade}} den $1 $2",
+       "usercreated": "{{GENDER:$3|Skapad}} den $1 $2",
        "newpages": "Nya sidor",
        "newpages-username": "Användare:",
        "ancientpages": "Äldsta sidorna",
        "watchlistanontext": "Du måste logga in för att se eller redigera din bevakningslista.",
        "watchnologin": "Inte inloggad",
        "addwatch": "Lägg till i bevakningslistan",
-       "addedwatchtext": "Sidan \"[[:$1]]\" har lagts till på din [[Special:Watchlist|bevakningslista]].\nFramtida ändringar av den här sidan och dess diskussionssida kommer att listas där.",
+       "addedwatchtext": "\"[[:$1]]\" har lagts till i din [[Special:Watchlist|bevakningslista]].",
        "addedwatchtext-short": "Sidan \"$1\" har lagts till i din bevakningslista.",
        "removewatch": "Ta bort från bevakningslistan",
-       "removedwatchtext": "Sidan \"[[:$1]]\" har tagits bort från [[Special:Watchlist|din bevakningslista]].",
+       "removedwatchtext": "\"[[:$1]]\" och dess diskussionssida har tagits bort från [[Special:Watchlist|din bevakningslista]].",
        "removedwatchtext-short": "Sidan \"$1\" har tagits bort från din bevakningslista.",
        "watch": "Bevaka",
        "watchthispage": "Bevaka denna sida",
        "changecontentmodel-success-title": "Innehållsmodellen ändrades",
        "changecontentmodel-success-text": "Innehållstypen för [[:$1]] har ändrats.",
        "changecontentmodel-cannot-convert": "Innehållet på [[:$1]] kan inte konverteras till typen $2.",
-       "changecontentmodel-title-cantexist": "Det går inte att ha en sida på $1.",
        "changecontentmodel-nodirectediting": "Innehållsmodellen $1 stöder inte direkt redigering",
        "log-name-contentmodel": "Ändringslogg för innehållsmodellen",
        "log-description-contentmodel": "Händelser som är relaterade till en sidas innehållsmodeller",
        "undeletepagetext": "Följande {{PLURAL:$1|sida har blivit raderad|$1 sidor har blivit raderade}} men finns fortfarande i arkivet och kan återställas.\nArkivet kan ibland rensas ut.",
        "undelete-fieldset-title": "Återställ sidversioner",
        "undeleteextrahelp": "För att återställa sidans hela historik, lämna alla rutor oifyllda och klicka på '''''{{int:undeletebtn}}'''''.\nFör att göra en selektiv återställning, kryssa i de rutor som hör till de versioner som ska återställas, och klicka på '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "$1 {{PLURAL:$1|version|versioner}} arkiverade",
+       "undeleterevisions": "$1 {{PLURAL:$1|version|versioner}} raderade",
        "undeletehistory": "Om du återställer sidan kommer alla tidigare versioner att återfinnas i versionshistoriken.\nOm en ny sida med samma namn har skapats sedan sidan raderades, kommer den återskapade historiken automatiskt att återfinnas i den äldre historiken.",
        "undeleterevdel": "Återställningen kan inte utföras om den resulterar i att den senaste versionen är delvis borttagen.\nI sådana fall måste du se till att den senaste raderade versionen inte är ikryssad, eller att den inte är dold.",
        "undeletehistorynoadmin": "Den här sidan har blivit raderad. Anledningen till detta anges i sammanfattningen nedan, tillsammans med uppgifter om de användare som redigerat sidan innan den raderades. Enbart administratörerna har tillgång till den raderade texten.",
        "spam_reverting": "Återställer till den senaste versionen som inte innehåller länkar till $1",
        "spam_blanking": "Alla versioner innehöll en länk till $1, blankar",
        "spam_deleting": "Alla ändringar innehöll länkar till $1, raderar",
-       "simpleantispam-label": "Anti-spamkontroll.\nFyll '''INTE''' i den här!",
+       "simpleantispam-label": "Anti-spamkontroll.\nFyll <strong>INTE</strong> i den här!",
        "pageinfo-title": "Information om \"$1\"",
        "pageinfo-not-current": "Informationen kan endast visas för den aktuella versionen.",
        "pageinfo-header-basic": "Grundläggande information",
        "pageinfo-watchers": "Antal användare som bevakar sidan",
        "pageinfo-visiting-watchers": "Antalet sidbevakare som har besökt senaste ändringar",
        "pageinfo-few-watchers": "Färre än $1 {{PLURAL:$1|bevakare}}",
+       "pageinfo-few-visiting-watchers": "Det kan finnas någon bevakande användare som granskar nyliga redigeringar",
        "pageinfo-redirects-name": "Antal omdirigeringar till denna sida",
        "pageinfo-subpages-name": "Undersidor till denna sida",
        "pageinfo-subpages-value": "$1 ($2 {{PLURAL:$2|omdirigering|omdirigeringar}}; $3 {{PLURAL:$3|icke-omdirigering|icke-omdirigeringar}})",
        "special-characters-title-endash": "tankstreck",
        "special-characters-title-emdash": "långt tankstreck",
        "special-characters-title-minus": "minustecken",
+       "mw-widgets-dateinput-no-date": "Inget valt datum",
+       "mw-widgets-dateinput-placeholder-day": "ÅÅÅÅ-MM-DD",
+       "mw-widgets-dateinput-placeholder-month": "ÅÅÅÅ-MM",
        "mw-widgets-titleinput-description-new-page": "sidan existerar inte ännu",
        "mw-widgets-titleinput-description-redirect": "omdirigerar till $1"
 }
index 093635c..a14238c 100644 (file)
@@ -39,7 +39,8 @@
                        "Macofe",
                        "AntanO",
                        "கலைவாணன்",
-                       "Mohammed Ammar"
+                       "Mohammed Ammar",
+                       "Shrikarsan"
                ]
        },
        "tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
        "tooltip-pt-logout": "விடுபதிகை",
        "tooltip-pt-createaccount": "நீங்கள் ஒரு பயனர் கணக்கைத் துவங்கி உள்புக வரவேற்கப்படுகிறீர்கள்; எனினும் இது கட்டாயம் அல்ல.",
        "tooltip-ca-talk": "உள்ளடக்கப் பக்கம் தொடர்பான உரையாடல் பக்கம்",
-       "tooltip-ca-edit": "நà¯\80à®\99à¯\8dà®\95ளà¯\8d à®\87பà¯\8dபà®\95à¯\8dà®\95தà¯\8dதà¯\88தà¯\8d à®¤à¯\8aà®\95à¯\81à®\95à¯\8dà®\95 à®®à¯\81à®\9fியà¯\81à®®à¯\8d. \"à®®à¯\81னà¯\8dதà¯\8bà®±à¯\8dறமà¯\8d à®\95ாà®\9fà¯\8dà®\9fà¯\81\" à®ªà¯\8aதà¯\8dதானà¯\88பà¯\8d à®ªà®¯à®©à¯\8dபà®\9fà¯\81தà¯\8dதிய à®ªà®¿à®©à¯\8dனரà¯\8d à®\89à®\99à¯\8dà®\95ளà¯\8d à®®à®¾à®±à¯\8dà®±à®\99à¯\8dà®\95ளà¯\88 à®\9aà¯\87மிà®\95à¯\8dà®\95வà¯\81à®®à¯\8d.",
+       "tooltip-ca-edit": "à®\87பà¯\8dபà®\95à¯\8dà®\95தà¯\8dதà¯\88தà¯\8d à®¤à¯\8aà®\95à¯\81",
        "tooltip-ca-addsection": "புதிய பகுதியைத் தொடங்கு",
        "tooltip-ca-viewsource": "இப்பக்கம் காக்கப்பட்டுள்ளது. நீங்கள் இதன் மூலத்தைப் பார்க்கலாம்.",
        "tooltip-ca-history": "இப்பக்கத்தின் பழைய பதிப்புகள்.",
index e5bf3b6..f3a65a7 100644 (file)
        "actionthrottledtext": "เพื่อเป็นมาตรการป้องกันสแปม คุณจึงถูกจำกัดมิให้กระทำสิ่งนี้ไม่ให้ติดต่อกันหลายครั้งเกินไปในช่วงระยะเวลาสั้น ๆ ซึ่งขณะนี้คุณเลยขีดจำกัดนี้แล้ว \nกรุณารอสักครู่แล้วลองอีกครั้ง",
        "protectedpagetext": "หน้านี้ถูกล็อกเพื่อป้องกันการแก้ไขหรือปฏิบัติการอื่น",
        "viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้:",
-       "viewyourtext": "à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลอà¸\81à¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a<strong>à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93</strong>มายัà¸\87หà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89:",
+       "viewyourtext": "à¸\84ุà¸\93สามารà¸\96à¸\94ูà¹\81ละà¸\84ัà¸\94ลอà¸\81à¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a<strong>à¸\81ารà¹\81à¸\81à¹\89à¹\84à¸\82à¸\82อà¸\87à¸\84ุà¸\93</strong>มาหà¸\99à¹\89าà¸\99ีà¹\89à¹\84à¸\94à¹\89",
        "protectedinterface": "หน้านี้เป็นข้อความส่วนต่อประสานสำหรับซอฟต์แวร์บนวิกินี้ และถูกล็อกเพื่อป้องกันการกระทำผิด\nในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
        "editinginterface": "<strong>คำเตือน:</strong> คุณกำลังแก้ไขหน้าที่ใช้จัดหาข้อความอินเตอร์เฟซให้ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะมีผลต่อสภาพปรากฏของส่วนต่อประสานผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้",
        "translateinterface": "ในการเพิ่มหรือเปลี่ยนแปลงคำแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลเป็นภาษาถิ่นของมีเดียวิกิ",
        "searchprofile-advanced": "ขั้นสูง",
        "searchprofile-articles-tooltip": "ค้นหาใน $1",
        "searchprofile-images-tooltip": "ค้นหาไฟล์",
-       "searchprofile-everything-tooltip": "à¸\84à¹\89à¸\99à¹\80à¸\99ืà¹\89อหาà¸\97ัà¹\89à¸\87หมà¸\94 (รวมหà¸\99à¹\89าอภิà¸\9bราย)",
+       "searchprofile-everything-tooltip": "à¸\84à¹\89à¸\99à¹\80à¸\99ืà¹\89อหาà¸\97ัà¹\89à¸\87หมà¸\94 (รวมหà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุย)",
        "searchprofile-advanced-tooltip": "ค้นหาในเนมสเปซที่เลือกเอง",
        "search-result-size": "$1 ($2 คำ)",
        "search-result-category-size": "$1 สมาชิก ($2 หมวดหมู่ย่อย, $3 ไฟล์)",
        "search-category": "(หมวดหมู่ $1)",
        "search-file-match": "(เนื้อหาไฟล์ตรง)",
        "search-suggest": "คุณอาจหมายถึง: $1",
+       "search-rewritten": "กำลังแสดงผลลัพธ์สำหรับ $1 ค้นหา $2 แทน",
        "search-interwiki-caption": "โครงการพี่น้อง",
        "search-interwiki-default": "ผลลัพธ์จาก $1:",
        "search-interwiki-more": "(เพิ่มเติม)",
        "rcshowhidemine": "$1การแก้ไขของฉัน",
        "rcshowhidemine-show": "แสดง",
        "rcshowhidemine-hide": "ซ่อน",
+       "rcshowhidecategorization-show": "แสดง",
+       "rcshowhidecategorization-hide": "ซ่อน",
        "rclinks": "แสดงการปรับปรุงล่าสุด $1 รายการ ในช่วง $2 วันที่ผ่านมา<br />$3",
        "diff": "ต่าง",
        "hist": "ประวัติ",
        "boteditletter": "บ",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 ผู้ใช้เฝ้าดู]",
-       "rc_categories": "จำกัดเฉพาะหมวดหมู่ (แยกด้วย \"|\")",
-       "rc_categories_any": "à¹\83à¸\94 à¹\86",
+       "rc_categories": "จำกัดเฉพาะหมวดหมู่ (แยกด้วย \"|\"):",
+       "rc_categories_any": "อะà¹\84รà¸\81à¹\87à¹\84à¸\94à¹\89à¸\97ีà¹\88à¹\80ลือà¸\81",
        "rc-change-size-new": "$1 ไบต์หลังปรับปรุง",
        "newsectionsummary": "/* $1 */ หัวข้อใหม่",
        "rc-enhanced-expand": "แสดงรายละเอียด",
        "upload-too-many-redirects": "ยูอาร์แอลนั้นมีการเปลี่ยนทางมากเกินไป",
        "upload-http-error": "เกิดข้อผิดพลาดเอชทีทีพี: $1",
        "upload-copy-upload-invalid-domain": "ไม่สามารถคัดลอกการอัปโหลดจากโดเมนนี้",
+       "upload-dialog-title": "อัปโหลดไฟล์",
        "backend-fail-backup": "ไม่สามารถสำรองไฟล์ \"$1\"",
        "backend-fail-notexists": "ไม่มีไฟล์ $1",
        "backend-fail-delete": "ไม่สามารถลบไฟล์ \"$1\"",
        "randomincategory-nopages": "ไม่มีหน้าในหมวดหมู่ [[:Category:$1]]",
        "randomincategory-category": "หมวดหมู่:",
        "randomincategory-legend": "สุ่มหน้าในหมวดหมู่",
+       "randomincategory-submit": "ไป",
        "randomredirect": "สุ่มหน้าเปลี่ยนทาง",
        "randomredirect-nopages": "ไม่มีหน้าเปลี่ยนทางในเนมสเปซ \"$1\"",
        "statistics": "สถิติ",
        "unusedimages": "ไฟล์ไม่ได้ใช้",
        "wantedcategories": "หมวดหมู่ที่ต้องการ",
        "wantedpages": "หน้าที่ต้องการ",
+       "wantedpages-summary": "รายการหน้าที่ไม่มีอยู่ที่มีการโยงมามากที่สุด ยกเว้นหน้าที่มีเฉพาะหน้าเปลี่ยนทางโยงมา สำหรับรายการหน้าที่ไม่มีอยู่ที่มีหน้าเปลี่ยนทางโยงมา ดูที่ [[{{#special:BrokenRedirects}}|รายการหน้าเปลี่ยนทางเสีย]]",
        "wantedpages-badtitle": "ชื่อเรื่องไม่สมเหตุสมผลในเซตผลลัพธ์: $1",
        "wantedfiles": "ไฟล์ที่ต้องการ",
        "wantedfiletext-cat": "ไฟล์ต่อไปนี้พบใช้แต่ไม่มี ไฟล์จากคลังภายนอกอาจแสดงรายการแม้มีอยู่ ผลบวกลวงใด ๆ จะถูก<del>ขีดฆ่า</del> นอกจากนั้น หน้าที่ใส่ไฟล์ที่ไม่มีแสดงรายการใน [[:$1]]",
        "emailccsubject": "คัดลอกสารของคุณไป $1: $2",
        "emailsent": "ส่งอีเมลแล้ว",
        "emailsenttext": "ส่งสารอีเมลของคุณแล้ว",
-       "emailuserfooter": "ส่งอีเมลจาก $1 ถึง $2 ด้วยฟังก์ชัน \"อีเมลผู้ใช้รายนี้\" ที่ {{SITENAME}}",
+       "emailuserfooter": "$1 ส่งอีเมลถึง $2 ด้วยฟังก์ชัน \"อีเมลผู้ใช้รายนี้\" ที่ {{SITENAME}}",
        "usermessage-summary": "ฝากสารระบบ",
        "usermessage-editor": "ตัวส่งสารของระบบ",
        "watchlist": "รายการเฝ้าดู",
        "watchlistanontext": "กรุณาล็อกอินเพื่อดูหรือแก้ไขรายการในรายการเฝ้าดูของคุณ",
        "watchnologin": "ยังไม่ได้ล็อกอิน",
        "addwatch": "เพิ่มเข้ารายการเฝ้าดู",
-       "addedwatchtext": "à¹\80à¸\9eิà¹\88มหà¸\99à¹\89า \"[[:$1]]\" à¹\80à¸\82à¹\89า[[Special:Watchlist|รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู]]à¸\82อà¸\87à¸\84ุà¸\93à¹\81ลà¹\89ว \nà¸\81ารà¹\80à¸\9bลีà¹\88ยà¸\99à¹\81à¸\9bลà¸\87à¹\83à¸\99อà¸\99าà¸\84à¸\95à¹\81à¸\81à¹\88หà¸\99à¹\89าà¸\99ีà¹\89หรือหà¸\99à¹\89าà¸\9eูà¸\94à¸\84ุยà¸\97ีà¹\88à¹\80à¸\81ีà¹\88ยวà¸\82à¹\89อà¸\87à¸\88ะà¹\81สà¸\94à¸\87à¹\83à¸\99รายà¸\81ารà¸\94ัà¸\87à¸\81ลà¹\88าว",
+       "addedwatchtext": "à¹\80à¸\9eิà¹\88มหà¸\99à¹\89า \"[[:$1]]\" à¹\81ละหà¸\99à¹\89าอภิà¸\9bรายà¹\80à¸\82à¹\89า[[Special:Watchlist|รายà¸\81ารà¹\80à¸\9dà¹\89าà¸\94ู]]à¸\82อà¸\87à¸\84ุà¸\93à¹\81ลà¹\89ว",
        "addedwatchtext-short": "เพิ่มหน้า \"$1\" เข้ารายการเฝ้าดูของคุณแล้ว",
        "removewatch": "นำออกจากรายการเฝ้าดู",
-       "removedwatchtext": "à¸\99ำหà¸\99à¹\89า \"[[:$1]]\" ออกจาก[[Special:Watchlist|รายการเฝ้าดูของคุณ]]แล้ว",
-       "removedwatchtext-short": "à¸\99ำหน้า \"$1\" ออกจากรายการเฝ้าดูของคุณแล้ว",
+       "removedwatchtext": "ลà¸\9aหà¸\99à¹\89า \"[[:$1]]\" à¹\81ละหà¸\99à¹\89าอภิà¸\9bรายออกจาก[[Special:Watchlist|รายการเฝ้าดูของคุณ]]แล้ว",
+       "removedwatchtext-short": "ลà¸\9aหน้า \"$1\" ออกจากรายการเฝ้าดูของคุณแล้ว",
        "watch": "เฝ้าดู",
        "watchthispage": "เฝ้าดูหน้านี้",
        "unwatch": "เลิกเฝ้าดู",
        "pageinfo-robot-index": "อนุญาต",
        "pageinfo-robot-noindex": "ไม่อนุญาต",
        "pageinfo-watchers": "จำนวนผู้เฝ้าดูหน้า",
+       "pageinfo-visiting-watchers": "จำนวนผู้เฝ้าดูหน้าที่เยี่ยมชมการแก้ไขล่าสุด",
        "pageinfo-few-watchers": "{{PLURAL:$1|ผู้เฝ้าดู|ผู้เฝ้าดู}}น้อยกว่า $1 คน",
+       "pageinfo-few-visiting-watchers": "อาจมีหรือไม่มีผู้ใช้ที่เยี่ยมชมการแก้ไขล่าสุด",
        "pageinfo-redirects-name": "จำนวนการเปลี่ยนทางมาหน้านี้",
        "pageinfo-subpages-name": "จำนวนหน้าย่อยของหน้านี้",
        "pageinfo-subpages-value": "$1 ($2 หน้าเปลี่ยนทาง; $3 หน้าไม่เปลี่ยนทาง)",
        "exif-jpegfilecomment": "ความเห็นไฟล์ JPEG",
        "exif-keywords": "คำสำคัญ",
        "exif-objectname": "ชื่อเรื่องสั้น",
-       "exif-headline": "พาดหัวข่าว",
+       "exif-headline": "พาดหัว",
        "exif-contact": "ข้อมูลสำหรับติดต่อ",
        "exif-languagecode": "ภาษา",
        "exif-iimcategory": "หมวดหมู่",
        "watchlistedit-clear-submit": "ล้างรายการเฝ้าดู (เป็นการถาวร!)",
        "watchlistedit-clear-done": "ล้างรายการเฝ้าดูของคุณแล้ว",
        "watchlistedit-clear-removed": "ลบ $1 ชื่อเรื่อง:",
-       "watchlistedit-too-many": "มีหà¸\99à¹\89ามาà¸\81à¹\80à¸\81ิà¸\99à¹\81สà¸\94à¸\87à¸\97ีà¹\88à¸\99ีà¹\88",
+       "watchlistedit-too-many": "มีหà¸\99à¹\89าà¹\81สà¸\94à¸\87à¸\97ีà¹\88à¸\99ีà¹\88มาà¸\81à¹\80à¸\81ิà¸\99",
        "watchlisttools-clear": "ล้างรายการเฝ้าดู",
        "watchlisttools-view": "ดูการเปลี่ยนแปลงที่เกี่ยวข้อง",
        "watchlisttools-edit": "ดูและแก้ไขรายการเฝ้าดู",
        "fileduplicatesearch": "ค้นหาไฟล์ซ้ำซ้อน",
        "fileduplicatesearch-summary": "ค้นหาไฟล์ซ้ำกันตามค่าแฮช",
        "fileduplicatesearch-legend": "ค้นหาไฟล์ที่ซ้ำกัน",
-       "fileduplicatesearch-filename": "ชื่อไฟล์ :",
+       "fileduplicatesearch-filename": "ชื่อไฟล์:",
        "fileduplicatesearch-submit": "ค้นหา",
        "fileduplicatesearch-info": "$1 × $2 พิกเซล<br />ขนาดไฟล์: $3<br />ชนิดของไมม์: $4",
        "fileduplicatesearch-result-1": "ไม่มีไฟล์ที่ซ้ำกับไฟล์ \"$1\"",
        "specialpages-group-changes": "ปรับปรุงล่าสุดและปูม",
        "specialpages-group-media": "รายงานสื่อและการอัปโหลด",
        "specialpages-group-users": "ผู้ใช้และสิทธิ",
-       "specialpages-group-highuse": "หà¸\99à¹\89าà¸\97ีà¹\88มีà¸\81ารà¹\83à¸\8aà¹\89à¸\87าà¸\99สูà¸\87",
+       "specialpages-group-highuse": "หน้าที่มีการใช้สูง",
        "specialpages-group-pages": "รายการหน้า",
        "specialpages-group-pagetools": "เครื่องมือหน้า",
        "specialpages-group-wiki": "ข้อมูลและเครื่องมือ",
        "specialpages-group-spam": "เครื่องมือสแปม",
        "specialpages-group-developer": "เครื่องมือผู้พัฒนา",
        "blankpage": "หน้าว่าง",
-       "intentionallyblankpage": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¸\97ิà¹\89à¸\87ว่างโดยเจตนา",
+       "intentionallyblankpage": "หà¸\99à¹\89าà¸\99ีà¹\89à¸\96ูà¸\81à¸\9bลà¹\88อยว่างโดยเจตนา",
        "external_image_whitelist": "  #เว้นบรรทัดนี้ไว้จากการแก้ไข<pre>\n#ใส่คำอธิบายปกติ (เฉพาะในส่วนที่อยู่ระหว่างสัญลักษณ์ //) ด้านล่างนี้\n#ซึ่งคำอธิบายดังกล่าวจะถูกจับคู่กับ URL ของรูปถ่ายภายนอก\n#ถ้าตรงกันจะปรากฏเป็นภาพออกมา หรือมิเช่นนั้นจะปรากฏเป็นลิงก์ไปยังรูปภาพนั้น\n#บรรทัดที่ขึ้นต้นด้วย # จะถูกกำหนดเป็นหมายเหตุเพิ่มเติม\n#กรุณาพิมพ์ตัวพิมพ์เล็ก-ใหญ่ตามชื่อไฟล์ให้ตรงกัน\n\n#ใส่ส่วนของคำอธิบายด้านบนของบรรทัดนี้และเว้นบรรทัดนี้จากการแก้ไข</pre>",
        "tags": "ป้ายกำกับการเปลี่ยนแปลง (ที่สามารถใช้ได้)",
        "tag-filter": "ตัวกรอง[[Special:Tags|ป้ายกำกับ]]:",
        "tags-tag": "ชื่อป้ายกำกับ",
        "tags-display-header": "สิ่งที่แสดงในรายการการเปลี่ยนแปลง",
        "tags-description-header": "คำอธิบายความหมายโดยละเอียด",
+       "tags-source-header": "แหล่งที่มา",
        "tags-active-header": "เปิดใช้งานหรือไม่",
        "tags-hitcount-header": "การเปลี่ยนแปลงที่มีป้ายนี้กำกับ",
+       "tags-actions-header": "ปฏิบัติการ",
        "tags-active-yes": "ใช่",
        "tags-active-no": "ไม่",
        "tags-edit": "แก้ไข",
        "htmlform-float-invalid": "ค่าที่คุณกำนหดไม่ใช่ตัวเลข",
        "htmlform-int-toolow": "ค่าที่คุณกำหนดนั้นต่ำกว่าค่าต่ำสุดที่ $1",
        "htmlform-int-toohigh": "ค่าที่คุณกำหนดนั้นเกินกว่าค่าสูงสุดที่ $1",
-       "htmlform-required": "à¸\88ำà¹\80à¸\9bà¹\87à¸\99à¸\95à¹\89อà¸\87à¸\81รอà¸\81à¸\82à¹\89อมูลนี้",
-       "htmlform-submit": "ส่งข้อมูล",
+       "htmlform-required": "à¸\95à¹\89อà¸\87à¸\81รอà¸\81à¸\84à¹\88านี้",
+       "htmlform-submit": "ส่ง",
        "htmlform-reset": "ยกเลิกการเปลื่ยนแปลง",
        "htmlform-selectorother-other": "อื่น ๆ",
        "htmlform-no": "ไม่",
index 338fa0b..5ae0a43 100644 (file)
        "special-characters-group-devanagari": "Devanagari",
        "special-characters-group-thai": "Thai",
        "special-characters-group-lao": "Lao",
-       "special-characters-group-khmer": "Khmer"
+       "special-characters-group-khmer": "Khmer",
+       "mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA",
+       "mw-widgets-dateinput-placeholder-month": "TTTT-BB"
 }
index e34fc5c..42f2077 100644 (file)
        "rcshowhidemine": "Benim değişikliklerimi $1",
        "rcshowhidemine-show": "göster",
        "rcshowhidemine-hide": "gizle",
+       "rcshowhidecategorization-show": "Göster",
+       "rcshowhidecategorization-hide": "Gizle",
        "rclinks": "Son $2 günde yapılan son $1 değişikliği göster;<br /> $3",
        "diff": "fark",
        "hist": "geçmiş",
        "recentchangeslinked-summary": "Aşağıdaki liste, belirtilen sayfaya (ya da belirtilen kategorinin üyelerine) bağlantı veren sayfalarda yapılan son değişikliklerin listesidir.\n[[Special:Watchlist|İzleme listenizdeki]] sayfalar '''kalın''' olarak belirtilmiştir.",
        "recentchangeslinked-page": "Sayfa adı:",
        "recentchangeslinked-to": "Belirtilen sayfadan verilenler yerine, sayfaya verilen bağlantıları göster.",
+       "recentchanges-page-added-to-category": "[[:$1]] kategoriye eklendi",
        "upload": "Dosya yükle",
        "uploadbtn": "Dosya yükle",
        "reuploaddesc": "Yükleme formuna geri dön.",
        "upload-too-many-redirects": "URL çok fazla yönlendirme içeriyor",
        "upload-http-error": "Bir HTTP hatası oluştu: $1",
        "upload-copy-upload-invalid-domain": "Kopya yüklemeler bu etki alanında mevcut değil.",
+       "upload-dialog-button-cancel": "İptal",
+       "upload-dialog-label-usage-title": "Kullanımı",
        "backend-fail-stream": "$1 dosyası okunamadı.",
        "backend-fail-backup": "\"$1\" dosyası yedeklenemedi.",
        "backend-fail-notexists": "$1 dosyası mevcut değil.",
        "logentry-move-move_redir": "$1, $3 sayfasını $4 sayfasına yönlendirme üzerinden {{GENDER:$2|taşıdı}}",
        "logentry-move-move_redir-noredirect": "$1, $3 sayfasını bir yönlendirme üzerine yönlendirme bırakmadan $4 olarak {{GENDER:$2|taşıdı}}",
        "logentry-patrol-patrol": "$1, $3 sayfasının $4 revizyonunu kontrol edildi olarak {{GENDER:$2|işaretledi}}",
-       "logentry-patrol-patrol-auto": "$1, $3 sayfasının $4 sürümümü otomatik olarak {{GENDER:$2|kontrol etti}}",
+       "logentry-patrol-patrol-auto": "$1, $3 sayfasının $4 sürümünü otomatik olarak {{GENDER:$2|kontrol etti}}",
        "logentry-newusers-newusers": "Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}",
        "logentry-newusers-create": "Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}",
        "logentry-newusers-create2": "$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}}",
index 24e81c6..99a6fd0 100644 (file)
        "category-empty": "''Бу төркем әлегә буш.''",
        "hidden-categories": "{{PLURAL:$1|1=Яшерен төркем|Яшерен төркемнәр}}",
        "hidden-category-category": "Яшерен төркемнәр",
-       "category-subcat-count": "{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}",
+       "category-subcat-count": "{{PLURAL:$2|1=Әлеге төркем бары тик бу астөркемне генә үз өченә ала.|Әлеге төркемдә $2 астөркемдән бары тик $1 {{PLURAL:$1|астөркем}} генә күрсәтелгән.}}",
        "category-subcat-count-limited": "Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.",
-       "category-article-count": "{{PLURAL:$2|Бу төркемдә бер генә бит бар.|Төркемдәге $2 биттән {{PLURAL:$1|$1 күрсәтелде}}.}}",
+       "category-article-count": "{{PLURAL:$2|1=Әлеге төркемдә бер генә бит бар.|Әлеге төркемнең $2 {{PLURAL:$2|битеннән}} {{PLURAL:$1|$1 бит}} кенә курсәтелгән.}}",
        "category-article-count-limited": "Бу төркемдә {{PLURAL:$1|$1 бит}} бар.",
-       "category-file-count": "{{PLURAL:$2|Бу төркемдә бер генә файл бар.|Төркемдәге $2 файлдан {{PLURAL:$1|$1 күрсәтелде}}.}}",
+       "category-file-count": "{{PLURAL:$2|1=Әлеге төркемдә бер генә файл бар.|Әлеге төркемдә $2 {{PLURAL:$2|файлдан}} {{PLURAL:$1|$1 файл}} гына курсәтелгән.}}",
        "category-file-count-limited": "Бу төркемдә {{PLURAL:$1|$1 файл}} бар.",
        "listingcontinuesabbrev": "дәвамы",
        "index-category": "Индексланган битләр",
        "newwindow": "(яңа тәрәзәдә ачыла)",
        "cancel": "Баш тарту",
        "moredotdotdot": "Дәвамы…",
-       "morenotlisted": "Ð\91аÑ\88ка Ð±ÐµÑ\80ни Ð´Ó\99 Ñ\8eк...",
+       "morenotlisted": "Ð\98Ñ\81емлек Ñ\82Ñ\83лÑ\8b Ñ\82үгел.",
        "mypage": "Бит",
        "mytalk": "Бәхәс бите",
        "anontalk": "Бу IP адресы өчен бәхәс бите",
        "history": "Битнең тарихы",
        "history_short": "Тарих",
        "updatedmarker": "соңгы керүемнән соң яңартылган",
-       "printableversion": "Басма версиясе",
+       "printableversion": "Басма юрама",
        "permalink": "Даими сылтама",
        "print": "Бастыру",
        "view": "Карау",
        "nstab-project": "Проект бите",
        "nstab-image": "Файл",
        "nstab-mediawiki": "Хәбәр",
-       "nstab-template": "Үрнәк",
+       "nstab-template": "Калып",
        "nstab-help": "Ярдәм",
        "nstab-category": "Төркем",
        "nosuchaction": "Мондый гамәл юк",
        "createacct-email-ph": "Электрон почта юлламагызны языгыз",
        "createaccountmail": "электрон почта аша",
        "createaccountreason": "Сәбәп:",
+       "createacct-captcha": "Саклыкны тикшерү",
+       "createacct-imgcaptcha-ph": "Өстә күрсәтелгән текстны кертегез",
        "createacct-submit": "Хисап язмасы төзү",
        "createacct-benefit-heading": "{{SITENAME}} — сезнең шикелле кешеләрнең хезмәте.",
        "createacct-benefit-body1": "{{PLURAL:$1|төзәтмә}}",
        "preview": "Алдан карау",
        "showpreview": "Алдан карау",
        "showdiff": "Кертелгән үзгәртүләр",
-       "anoneditwarning": "'''Игътибар''': Сез системага кермәгәнсез. IP адресыгыз бу битнең тарихына язылачак.",
+       "anoneditwarning": "<strong>Игътибар!</strong> Сез сайтта теркәлмәдегез. Әгәрдә сез нинди дә булсә төзәтмәләр  яисә үзгәртүләр кертсәгез, сезне IP-адрес башкаларга да курсәтеләчәк. Сайтка <strong>[$1 керсәгез]</strong> яки <strong>[$2 кулланучы язмасын төзесәгез]</strong>, сез керткән үзгәртүләр яезнен кулланучы язмагызга бәйләнгән була, шулай ук башка мөмкинлекләр дә туачак.",
        "anonpreviewwarning": "''Сез системада теркәлмәдегез.Сезнең тарафтан эшләнгән барлык үзгәртүләр дә сезнең IP-юлламагызны саклауга китерә.''",
        "missingsummary": "'''Искәртү.''' Сез үзгәртүгә кыскача тасвирлау язмадыгыз. Сез «Битне саклау» төймәсенә тагын бер тапкыр бассагыз, үзгәртүләр тасвирламасыз сакланачак.",
        "missingcommenttext": "Аска тасвирлама язуыгыз сорала.",
        "currentrevisionlink": "Хәзерге юрама",
        "cur": "хәзерге",
        "next": "киләсе",
-       "last": "баÑ\8f.",
+       "last": "алдагÑ\8b",
        "page_first": "беренче",
        "page_last": "соңгы",
        "histlegend": "Аңлатмалар: '''({{int:cur}})''' = хәзерге юрамадан аерымлыклар, '''({{int:last}})''' = баягы юрамадан аерымлыклар, '''{{int:minoreditletter}}''' = кече үзгәртүләр.",
        "mergelog": "Берләштерүләр көндәлеге",
        "revertmerge": "Бүлү",
        "history-title": "$1 битенең үзгәртү тарихы",
-       "difference-title": "$1 — юрамалар арасындагы аермалар",
+       "difference-title": "«$1» битенең юрамалары арасындагы аермалар",
        "lineno": "$1 юл:",
        "compareselectedversions": "Сайланган юрамаларны чагыштыру",
        "showhideselectedversions": "Сайланган юрамаларны күрсәтү/яшерү",
        "prevn": "алдагы {{PLURAL:$1|$1}}",
        "nextn": "чираттагы {{PLURAL:$1|$1}}",
        "prevn-title": "Алдагы $1  {{PLURAL:$1|язма}}",
-       "nextn-title": "Киләсе $1 {{PLURAL:$1|язма|язма}}",
+       "nextn-title": "{{PLURAL:$1|Киләсе $1 язма}}",
        "shown-title": "Сәхифәдә $1 {{PLURAL:$1|1=язма|язма}} күрсәтелсен",
        "viewprevnext": "Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)",
        "searchmenu-exists": "<strong>Бу вики-проектта «[[:$1]]» исемле бит бар инде</strong>{{PLURAL:$2|0=|Башка эзләү нәтиҗәләрен дә карап ал.}}",
-       "searchmenu-new": "'''«[[:$1]]»  исемле яңа бит ясау'''",
-       "searchprofile-articles": "Төп битләр (мәкаләләр)",
+       "searchmenu-new": "<strong>«Әлеге [[:$1]]» вики-проектта бит ясарга!</strong>\n{{PLURAL:$2|0=|Шулай ук, эзләү ярдәмендә табылган битне карагыз.|Шулай ук, эзләү ярдәмендә табылган битләрне карагыз.}}",
+       "searchprofile-articles": "Төп битләр",
        "searchprofile-images": "Мультимедиа",
        "searchprofile-everything": "Һәркайда",
        "searchprofile-advanced": "Киңәйтелгән",
        "searchrelated": "бәйле",
        "searchall": "барлык",
        "showingresults": "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
+       "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> нәтиҗәдән <strong>$1</strong>| <strong>$3</strong> нәтиҗәләрдән <strong>$1 — $2</strong>}}",
        "search-nonefound": "Сорауга туры килгән нәтиҗәләр табылмады.",
        "powersearch-legend": "Өстәмә эзләү",
        "powersearch-ns": "исемнәрендә эзләү",
        "badsiglength": "Имзагыз бигрәк озын.\nУл $1 {{PLURAL:$1|хәрефтән}} күбрәк булырга тиеш түгел.",
        "yourgender": "Җенес:",
        "gender-unknown": "билгесез",
-       "gender-male": "Ð\98Ñ\80",
-       "gender-female": "ХаÑ\82Ñ\8bн",
+       "gender-male": "Ð\92ики-биÑ\82лÓ\99Ñ\80не Ð¸Ñ\80-аÑ\82 Ò¯Ð·Ð³Ó\99Ñ\80Ñ\82Ó\99",
+       "gender-female": "Ð\92ики-биÑ\82лÓ\99Ñ\80не Ñ\85аÑ\82Ñ\8bн-кÑ\8bз Ò¯Ð·Ð³Ó\99Ñ\80Ñ\82Ó\99",
        "prefs-help-gender": "Мәҗбүри түгел: Ул бары тик кайбер хатларда гына күренәчәк һәм бу мәгълүмат барлык кулланучыларга да билгеле булачак.",
        "email": "Электрон почта",
        "prefs-help-realname": "Чын исемегез (кирәкми): аны күрсәтсәгез, ул битне үзгәртүче күрсәтү өчен файдалаячак.",
        "right-suppressredirect": "Элекке исемнән юнәлтү ясамыйча исемне алмаштыру",
        "right-upload": "файлларны йөкләү",
        "right-reupload": "Булган файллар өстеннән язарга",
+       "right-writeapi": "язма өчен API куллану",
        "right-delete": "битләрне бетерү",
        "right-editinterface": "Кулланучы интерфейсын үзгәртү",
        "newuserlogpage": "Кулланучыларны теркәү көндәлеге",
        "action-createtalk": "бәхәс битен ясарга",
        "action-move": "бу битне күчерерге",
        "nchanges": "$1 {{PLURAL:$1|1=үзгәртү|үзгәртү}}",
+       "enhancedrc-history": "тарих",
        "recentchanges": "Соңгы үзгәртүләр",
        "recentchanges-legend": "Соңгы үзгәртүләр көйләүләре",
        "recentchanges-summary": "Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.",
        "recentchanges-label-bot": "Бу үзгәртү бот белән эшләнгән",
        "recentchanges-label-unpatrolled": "Үзгәртүне әлегә тикшермәгәннәр",
        "recentchanges-label-plusminus": "Битнең зурлыгы шуның кадәрле байтка үзгәрде",
+       "recentchanges-legend-heading": "'''Легенда:&nbsp;'''",
        "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} ([[Special:NewPages|яңа бит]])",
        "rcnotefrom": "Астарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрсәтелгән.",
        "rclistfrom": "$3 $2 башлап яңа үзгәртүләрне күрсәт",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|күзәтеп тора кулланучы}}]",
        "rc_categories": "Төркемнәрдә генә тора («|» бүлүче)",
        "rc_categories_any": "Һәрбер",
-       "rc-change-size-new": "ТөзÓ\99Ñ\82мÓ\99дÓ\99н Ñ\81оң ÐºÒ¯Ð»Ó\99ме: $1 {{PLURAL:$1|байÑ\82|байт}}",
+       "rc-change-size-new": "Ð\9aеÑ\80Ñ\82елгÓ\99н Ò¯Ð·Ð³Ó\99Ñ\80еÑ\88лÓ\99Ñ\80 Ð±ÐµÐ»Ó\99н Ð±ÐµÑ\80гÓ\99 Ð·Ñ\83Ñ\80лÑ\8bк: $1 {{PLURAL:$1|байт}}",
        "newsectionsummary": "/* $1 */ яңа бүлек",
        "rc-enhanced-expand": "Ваклыкларны күрсәтү",
        "rc-enhanced-hide": "Ваклыкларны яшерү",
        "listfiles": "Сүрәтләр исемлеге",
        "listfiles_thumb": "Миниатюра",
        "listfiles_date": "Вакыт",
-       "listfiles_name": "Ð\90Ñ\82",
+       "listfiles_name": "Файл Ð¸Ñ\81еме",
        "listfiles_user": "Кулланучы",
        "listfiles_size": "Үлчәм",
        "listfiles_description": "Тасвир",
        "filehist-filesize": "Файлның зурлыгы",
        "filehist-comment": "Искәрмә",
        "imagelinks": "Файлны куллану",
-       "linkstoimage": "Бу файлга әлеге {{PLURAL:$1|1=бит|$1 бит}} сылтый:",
+       "linkstoimage": "{{PLURAL:$1|Киләсе $1 бит|Киләсе $1 битләр|}} әлеге файлга сылтама ясый:",
        "nolinkstoimage": "Бу файлга сылтаган битләр юк.",
        "duplicatesoffile": "{{PLURAL:$1|Әлеге $1 файл }} астагы файлның күчерелмәсе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):",
        "sharedupload": "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
        "uploadnewversion-linktext": "Бу файлның яңа юрамасын йөкләү",
        "shared-repo-from": "$1 дән",
        "shared-repo": "гомуми саклагыч",
+       "upload-disallowed-here": "Сез бу файлны яңарта алмыйсыз.",
        "filerevert": "$1 юрамасына кире кайту",
        "filerevert-legend": "Файлның иске юрамасын кире кайтару",
        "filerevert-comment": "Сәбәп:",
        "nopagetitle": "Мондый бит юк",
        "nopagetext": "Күрсәтелгән бит юк.",
        "pager-newer-n": "{{PLURAL:$1|1=1 яңарак|$1 яңарак}}",
-       "pager-older-n": "{{PLURAL:$1|1=1 искерәк|$1 искерәк}}",
+       "pager-older-n": "$1 {{PLURAL:$1|искерәк}}",
        "suppress": "Яшерү",
        "booksources": "Китап чыганаклары",
        "booksources-search-legend": "Китап чыганакларыны эзләү",
        "booksources-search": "Эзләү",
        "booksources-text": "Әлеге биттә күрсәтелгән сылтамалар ярәмендә сезнең кызыксындырган китап буенча өстәмә мәгълүматлар табарга мөмкин. Болар интернет-кибетләр һәм китапханә җыентыгында эзләүче системалар.",
        "booksources-invalid-isbn": "Бирелгән ISBN саны бәлки хаталдыр. Зинһар, бирелгән саннарны яңадан тикшерегез.",
-       "specialloguserlabel": "Ð\9aÑ\83лланучы:",
+       "specialloguserlabel": "Ð\91аÑ\88каÑ\80учы:",
        "speciallogtitlelabel": "Башлам:",
        "log": "Көндәлекләр",
        "all-logs-page": "Барлык көндәлекләр",
        "alllogstext": "{{SITENAME}} сәхифәсенең гомуми көндәлекләре исемлеге.\nСез нәтиҗәләрне көндәлек төре, кулланучы исеме (хәреф зурлыгын истә тотыгыз) яки куззаллаган бит (шулай ук хәреф зурлыгын истә тотыгыз) буенча тәртипкә салырга мөмкин.",
        "logempty": "Кирәкле язмалар көндәлектә юк.",
        "allpages": "Барлык битләр",
-       "nextpage": "Ð\90лдагÑ\8b бит ($1)",
+       "nextpage": "Ð\9aилÓ\99Ñ\81е бит ($1)",
        "prevpage": "Алдагы бит ($1)",
        "allpagesfrom": "Моңа башланучы битләрне чыгару:",
        "allpagesto": "Монда чыгаруны туктату:",
        "undelete-show-file-submit": "Әйе",
        "namespace": "Исемнәр мәйданы:",
        "invert": "Киресен сайлау",
+       "tooltip-invert": "Сайланган исемлектәге үзгәргәртүләр күрсәтелмәсен өчен монда тамга куегыз",
        "namespace_association": "Бәйле тирәлек",
        "tooltip-namespace_association": "Сайланган бәйле исемнәр тирәлегенә караган мәкаләләр исемлеген кабызу өчен элеге урынга тамганы куегыз",
        "blanknamespace": "(Төп)",
        "isredirect": "юнәлтү бите",
        "istemplate": "кертүләр",
        "isimage": "файл сылтамасы",
-       "whatlinkshere-prev": "{{PLURAL:$1|1=алдагы|алдагы $1}}",
-       "whatlinkshere-next": "{{PLURAL:$1|1=чираттагы|чираттагы $1}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|1=алдагы}} $1",
+       "whatlinkshere-next": "{{PLURAL:$1|1=киләсе}} $1",
        "whatlinkshere-links": "← сылтамалар",
        "whatlinkshere-hideredirs": "юнәлтүләрне $1",
        "whatlinkshere-hidetrans": "кертүләрне $1",
        "filemissing": "Файл табылмады",
        "thumbnail_error": "Кечкенә сүрәт төзүе хатасы: $1",
        "import": "Битләр кертү",
-       "importinterwiki": "Ð\92икиаÑ\80а кертү",
+       "importinterwiki": "Ð\91аÑ\88ка Ð²Ð¸ÐºÐ¸Ð´Ð°Ð½ кертү",
        "import-interwiki-text": "Викины һәм кертелүче битнең исемен языгыз.\nҮзгәртүләр вакыты һәм аның авторлары сакланачак.\nБөтен викиара күчерүләр [[Special:Log/import|махсус журналда]] сакланачак.",
        "import-interwiki-history": "Бу битнең барлык үзгәртү тарихын күчермәләү",
        "import-interwiki-templates": "Барлык үрнәкләрне кертү",
        "import-comment": "Искәрмә:",
        "importtext": "Зинһар өчен, битне күчерү өчен [[Special:Export|махсус корал]] кулланыгыз. Файлны дискка саклагыз, аннан соң монда йөкләгез.",
        "importstart": "Битләрне импортлау...",
-       "import-revision-count": "$1 {{PLURAL:$1|юрама|юрама|юрама}}",
+       "import-revision-count": "$1 {{PLURAL:$1|юрама}}",
        "importnopages": "Импортлау өчен битләр юк.",
        "importlogpage": "Кертү көндәлеге",
        "tooltip-pt-userpage": "Кулланучы битегез",
        "tooltip-t-emailuser": "Бу кулланучыга хат җибәрү",
        "tooltip-t-upload": "Файлларны йөкләү",
        "tooltip-t-specialpages": "Барлык махсус битләр исемлеге",
-       "tooltip-t-print": "Бу битнең басма версиясе",
+       "tooltip-t-print": "Бу битнең басма юрамасы",
        "tooltip-t-permalink": "Битнең бу юрамасына даими сылтама",
        "tooltip-ca-nstab-main": "Мәкаләнең эчтәлеге",
        "tooltip-ca-nstab-user": "Кулланучының шәхси бите",
        "tooltip-preferences-save": "Көйләнмәләрегезне саклау",
        "tooltip-summary": "Кыска исемен кертү",
        "common.css": "/*  Монда урнаштырылган CSS башкаларында да урнашачак */",
-       "anonymous": "{{SITENAME}} сайтының аноним {{PLURAL:$1|1=кулланучысы|кулланучылары}}",
+       "anonymous": "{{grammar:genitive|{{SITENAME}}}} {{PLURAL:$1|1=Аноним кулланучысы|Аноним кулланучылары}}",
        "siteuser": "{{SITENAME}} кулланучысы $1",
        "othercontribs": "«$1» эшенә нигезләнә.",
-       "siteusers": "{{SITENAME}} {{PLURAL:$2|1=кулланучысы|кулланучылары}} $1",
+       "siteusers": "{{grammar:genitive|{{SITENAME}}}} {{PLURAL:$2|1=кулланучы|кулланучылары}} $1",
        "creditspage": "Рәхмәтләр",
        "spamprotectiontitle": "Спам фильтры",
+       "simpleantispam-label": "Анти-спам тикшерә.\nМоны <strong>ТУТЫРМАГЫЗ!</strong>",
        "pageinfo-toolboxlink": "Бит турында мәгълүмат",
        "markaspatrolledtext": "Бу мәкаләне тикшерелгән дип тамгалау",
        "markedaspatrolled": "Тикшерелгән дип тамгаланды",
        "imagemaxsize": "Рәсемнең зурлыгына чикләүләр:<br />''(тасвирлау бите өчен)''",
        "thumbsize": "Рәсемнең кечерәйтелгән юрамасы өчен:",
        "widthheight": "$1 × $2",
-       "widthheightpage": "$1 × $2, $3{{PLURAL:$1|1=бит|битләр}}",
+       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|бит|битләр|бит}}",
        "file-info": "файл зурлыгы: $1, MIME-тип: $2",
        "file-info-size": "$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4",
        "file-nohires": "Югары ачыклык белән юрама юк.",
        "svg-long-desc": "SVG файлы, шартлы $1 × $2 нокта, файлның зурлыгы: $3",
-       "show-big-image": "Оригинал файл",
+       "show-big-image": "Төп файл",
+       "show-big-image-preview": "Алдан карауның зурлыгы: $1.",
+       "show-big-image-other": "{{PLURAL:$2|1=Башка зурлык|Башка зурлыклар}}: $1.",
        "show-big-image-size": "$1 × $2 пиксель",
        "newimages": "Яңа сүрәтләр җыелмасы",
        "newimages-legend": "Фильтр",
        "metadata-fields": "Бу исемлеккә кергән метабирелмәләр кырлары рәсем битендә күрсәтелер, калганнары исә килешү буенча яшерелер.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
        "exif-imagewidth": "Киңлек",
        "exif-imagelength": "Биеклек",
+       "exif-orientation": "Кадр куелышы",
+       "exif-xresolution": "Горизонталь зурлык",
+       "exif-yresolution": "Вертикаль зурлык",
+       "exif-datetime": "Файл үзгәртүләр датасы һәм вакыты",
        "exif-imagedescription": "Рәсемнең исеме",
        "exif-make": "Камераның җитештерүчесе",
        "exif-model": "Камераның төре",
        "version-specialpages": "Махсус битләр",
        "version-other": "Башка",
        "version-hook-subscribedby": "Түбәндәгеләргә язылган:",
-       "version-license": "Лицензия",
+       "version-license": "MediaWiki лицензиясе",
        "version-software": "Урнаштырылган программа белән тәэмин ителешне",
        "version-software-product": "Продукт",
        "version-software-version": "Версия",
        "fileduplicatesearch": "Бер үк файлларны эзләү",
        "fileduplicatesearch-submit": "Эзләү",
        "specialpages": "Махсус битләр",
-       "specialpages-note": "* Гади махсус битләр.\n* <strong class=\"mw-specialpagerestricted\">Чикләнелгән махсус битләр.</strong>\n* <span class=\"mw-specialpagecached\">Кешланган махсус битләр.</span>",
+       "specialpages-note": "* Гади махсус битләр.\n* <span class=\"mw-specialpagerestricted\">Чикләнелгән махсус битләр.</span>",
        "specialpages-group-maintenance": "Техник карау хисапнамәсе",
        "specialpages-group-other": "Башка махсус битләр",
-       "specialpages-group-login": "Керү / теркәлү",
+       "specialpages-group-login": "Керү / Теркәлү",
        "specialpages-group-changes": "Соңгы үзгәртүләр",
        "specialpages-group-media": "Йөкләү һәм медиа-файллар хисапнамәсе",
        "specialpages-group-users": "Кулланучылар һәм аларның хокуклары",
        "specialpages-group-highuse": "Еш кулланылучы битләр",
        "specialpages-group-pages": "Битләр исемлеге",
        "specialpages-group-pagetools": "Бит өчен җиһазлар",
-       "specialpages-group-wiki": "Ð\92ики-мәгълүмат һәм җиһазлар",
+       "specialpages-group-wiki": "Ð\9cәгълүмат һәм җиһазлар",
        "specialpages-group-redirects": "Күчерелүче махсус битләр",
        "specialpages-group-spam": "Спамга каршы кораллар",
        "blankpage": "Буш бит",
        "tags": "Гамәлдә булучы үзгәртүләр билгеләре",
        "tag-filter": "[[Special:Tags|Tag]] фильтры:",
        "tag-filter-submit": "Фильтрлау",
+       "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|1=Билге|Билгеләр}}]]: $2)",
        "tags-title": "Теглар",
        "tags-intro": "Әлеге сәхифәдә төзәтүләрне билгеләгән, программа тәэмин итә торган теглар исемлеге һәм шул тегларның аңламнары китерелгән.",
        "tags-tag": "Тег исеме",
        "htmlform-submit": "Җибәрү",
        "htmlform-reset": "Үзгәртүләрне кире кайтару",
        "htmlform-selectorother-other": "Башка",
+       "logentry-delete-delete": "$1 $3 битен {{GENDER:$2|бетерә}}",
        "revdelete-content-hid": "эчтәлек яшерелгән",
        "revdelete-summary-hid": "төзәтмәнең тасвирламасы яшерелгән",
        "revdelete-uname-hid": "кулланучының исеме яшерелгән",
        "revdelete-uname-unhid": "кулланучының исеме ачылган",
        "revdelete-restricted": "чикләүләр идарәчеләргә дә кулланыла",
        "revdelete-unrestricted": "чикләүләр идарәчеләр өчен бетерелгән",
-       "logentry-move-move": "$1 {{GENDER:$2|итеп күчерде}} $3 сәхифәсен $4",
-       "logentry-move-move-noredirect": "$1 $3 сәхифәсен $4 итеп үзгәртте һәм юнәлтүне калдырмады",
-       "logentry-move-move_redir": "$1 $3 сәхифәсен $4 юнәлтү аша үзгәртте",
-       "logentry-move-move_redir-noredirect": "$1 $3 сәхифәсен $4 юнәлтү аша үзгәртте һәм юнәлтүне калдырмады",
-       "logentry-patrol-patrol": "$1 $3 мәкаләсенең  $4 санлы версиясен тикшерде",
-       "logentry-patrol-patrol-auto": "$1 $3 мәкаләсенең $4 санлы версиясен автоматик рәвештә тикшерде",
-       "logentry-newusers-newusers": "$1 кулланучының хисап язмасын төзеде",
-       "logentry-newusers-create": "$1 хисап язмасы төзеде",
+       "logentry-move-move": "$1 $3 сәхифәсен $4 {{GENDER:$2|итеп күчерде}}",
+       "logentry-move-move-noredirect": "$1 юнәлтү калдырмыйча $3 сәхифәсен $4 итеп күчерде",
+       "logentry-move-move_redir": "$1 юнәлтү аша $3 сәхифәсен $4 итеп күчерде",
+       "logentry-move-move_redir-noredirect": "$1 юнәлтү аша, юнәлтү калдырмыйча $3 сәхифәсен $4 итеп күчерде",
+       "logentry-patrol-patrol": "$1 $3 мәкаләсенең  $4 санлы версиясен {{GENDER:$2|тикшерде}}",
+       "logentry-patrol-patrol-auto": "$1 $3 мәкаләсенең $4 санлы версиясен автоматик рәвештә {{GENDER:$2|тикшерде}}",
+       "logentry-newusers-newusers": "{{GENDER:$2|Кулланучы}} $1 хисап язмасын төзеде",
+       "logentry-newusers-create": "{{GENDER:$2|Кулланучы}} $1 хисап язмасын төзеде",
        "logentry-newusers-create2": "$1 $3 кулланучы хисап язмасын төзеде",
        "logentry-newusers-autocreate": "Автоматик рәвештә $1 хисап язмасы төзелде.",
        "logentry-upload-upload": "$1 {{GENDER:$2|йөкләде}} $3",
index 9ae575c..a9a1f30 100644 (file)
                        "Macofe",
                        "Alex Blokha",
                        "Lxlalexlxl",
-                       "Капитан Джон Шепард"
+                       "Капитан Джон Шепард",
+                       "Translatemyname",
+                       "Dars"
                ]
        },
        "tog-underline": "Підкреслювання посилань:",
        "tog-hideminor": "Приховати незначні редагування у списку останніх змін",
        "tog-hidepatrolled": "Приховувати патрульовані редагування у списку нових редагувань",
        "tog-newpageshidepatrolled": "Приховувати патрульовані сторінки у списку нових сторінок",
+       "tog-hidecategorization": "Приховати категоризацію сторінок",
        "tog-extendwatchlist": "Розгорнути список спостереження, щоб показати всі зміни, а не лише останні",
        "tog-usenewrc": "Групувати редагування на сторінках останніх змін та списку спостереження",
        "tog-numberheadings": "Автоматично нумерувати заголовки",
@@ -95,7 +98,8 @@
        "tog-watchlisthideminor": "Приховати незначні редагування у списку спостереження",
        "tog-watchlisthideliu": "Приховати редагування зареєстрованих дописувачів у списку спостереження",
        "tog-watchlisthideanons": "Приховати редагування анонімних користувачів у списку спостереження",
-       "tog-watchlisthidepatrolled": "Приховати відпатрульовані правки у списку спостереження",
+       "tog-watchlisthidepatrolled": "Приховати відпатрульовані редагування у списку спостереження",
+       "tog-watchlisthidecategorization": "Приховати категоризацію сторінок",
        "tog-ccmeonemails": "Надсилати мені копії листів, які я надсилаю іншим користувачам",
        "tog-diffonly": "Не показувати вміст сторінки під різницею версій",
        "tog-showhiddencats": "Показувати приховані категорії",
        "actionthrottled": "Обмеження за швидкістю",
        "actionthrottledtext": "Для боротьби зі спамом встановлено обмеження на повторне застосування цієї дії за короткий час. Ви перевищили це обмеження. Можете спробувати знов за кілька хвилин.",
        "protectedpagetext": "Ця сторінка захищена від редагування та інших дій.",
-       "viewsourcetext": "Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80еглÑ\8fнÑ\83Ñ\82и Ñ\82а Ñ\81копÑ\96Ñ\8eваÑ\82и Ð¿Ð¾Ñ\87аÑ\82ковий текст цієї сторінки:",
-       "viewyourtext": "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
+       "viewsourcetext": "Ð\92и Ð¼Ð¾Ð¶ÐµÑ\82е Ð¿ÐµÑ\80еглÑ\8fнÑ\83Ñ\82и Ñ\82а Ñ\81копÑ\96Ñ\8eваÑ\82и Ð²Ð¸Ñ\85Ñ\96дний текст цієї сторінки:",
+       "viewyourtext": "Ви можете переглянути та скопіювати вихідний текст <strong>Ваших редагувань</strong> на цю сторінку.",
        "protectedinterface": "Ця сторінка містить текст інтерфейсу програмного забезпечення цієї Вікі, захищений від небажаного втручання. Щоб додати або змінити переклади для всіх вікі, перейдіть до [//translatewiki.net/ translatewiki.net], проекту локалізації MediaWiki.",
        "editinginterface": "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу програм. \nЗміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів цієї Вікі.",
        "translateinterface": "Для того, щоб додати чи змінити переклад повідомлень інтерфейсу для всіх вікі-проектів, скористайтеся будь ласка проектом локалізації MediaWiki: [//translatewiki.net/ translatewiki.net].",
        "showpreview": "Попередній перегляд",
        "showdiff": "Показати зміни",
        "blankarticle": "'''Попередження:''' Створена вами сторінка порожня.\nЯкщо Ви знову натиснете «{{int:savearticle}}», сторінку буде створено без вмісту.",
-       "anoneditwarning": "<strong>Увага!</strong> Ð\92и Ð½Ðµ Ð°Ð²Ñ\82оÑ\80изÑ\83валиÑ\81Ñ\8f Ð½Ð° Ñ\81айÑ\82Ñ\96. Ð\92аÑ\88а IP-адÑ\80еÑ\81а Ð±Ñ\83де Ð¿Ñ\83блÑ\96Ñ\87но Ð²Ð¸Ð´Ð¸Ð¼Ð°, Ñ\8fкÑ\89о Ð²Ð¸ Ð±Ñ\83деÑ\82е Ð²Ð½Ð¾Ñ\81иÑ\82и Ð±Ñ\83дÑ\8c\8fкÑ\96 Ð¿Ñ\80авки. Ð¯ÐºÑ\89о Ð²Ð¸ <strong>[$1 Ñ\83вÑ\96йдеÑ\82е]</strong> Ð°Ð±Ð¾ <strong>[$2 Ñ\81Ñ\82воÑ\80иÑ\82е Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81]</strong>, Ð¿Ñ\80авки Ð·Ð°Ð¼Ñ\96Ñ\81Ñ\82Ñ\8c Ñ\86Ñ\8cого Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð¿Ð¾Ð²'Ñ\8fзанÑ\96 Ð· Ð²Ð°Ñ\88им Ñ\96м'Ñ\8fм ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а, Ð° Ñ\82акож Ñ\83 Ð²ас з'являться інші переваги.",
+       "anoneditwarning": "<strong>Увага!</strong> Ð\92и Ð½Ðµ Ð°Ð²Ñ\82оÑ\80изÑ\83валиÑ\81Ñ\8f Ð½Ð° Ñ\81айÑ\82Ñ\96. Ð\92аÑ\88а IP-адÑ\80еÑ\81а Ð±Ñ\83де Ð¿Ñ\83блÑ\96Ñ\87но Ð²Ð¸Ð´Ð¸Ð¼Ð°, Ñ\8fкÑ\89о Ð\92и Ð±Ñ\83деÑ\82е Ð²Ð½Ð¾Ñ\81иÑ\82и Ð±Ñ\83дÑ\8c\8fкÑ\96 Ñ\80едагÑ\83ваннÑ\8f. Ð¯ÐºÑ\89о Ð\92и <strong>[$1 Ñ\83вÑ\96йдеÑ\82е]</strong> Ð°Ð±Ð¾ <strong>[$2 Ñ\81Ñ\82воÑ\80иÑ\82е Ð¾Ð±Ð»Ñ\96ковий Ð·Ð°Ð¿Ð¸Ñ\81]</strong>, Ñ\80едагÑ\83ваннÑ\8f Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð½Ð°Ñ\82омÑ\96Ñ\81Ñ\82Ñ\8c Ð¿Ð¾Ð²'Ñ\8fзанÑ\96 Ð· Ð\92аÑ\88им Ñ\96менем ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а, Ð° Ñ\89е Ñ\83 Ð\92ас з'являться інші переваги.",
        "anonpreviewwarning": "''Ви не увійшли в систему. Якщо ви виконаєте збереження, то в історію сторінки буде записана ваша IP-адреса.''",
        "missingsummary": "'''Нагадування''': Ви не дали короткого опису змін.\nНатиснувши кнопку «Зберегти» ще раз, ви збережете зміни без коментаря.",
        "selfredirect": "<strong>Попередження:</strong> Ви створюєте перенаправлення на цю ж сторінку.\nВи могли вказати невірну цільову сторінку, або ж редагуєте хибну сторінку.\nЯкщо Ви натиснете \"{{int:savearticle}}\" ще раз, перенаправлення буде створено.",
        "blockedtext": "'''Ваш обліковий запис або IP-адреса заблоковані.'''\n\nБлокування виконане адміністратором $1.\nЗазначена наступна причина: ''$2''.\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністратору, якщо ви не зареєстровані або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте ці дані у своїх запитах.",
        "autoblockedtext": "Ваша IP-адреса автоматично заблокована у зв'язку з тим, що вона раніше використовувалася кимось із заблокованих користувачів. Адміністратор ($1), що її заблокував, зазначив наступну причину блокування:\n\n:''$2''\n\n* Початок блокування: $8\n* Закінчення блокування: $6\n* Блокування виконав: $7\n\nВи можете надіслати листа користувачеві $1 або будь-якому іншому [[{{MediaWiki:Grouppage-sysop}}|адміністратору]], щоб обговорити блокування.\n\nЗверніть увагу, що ви не зможете надіслати листа адміністраторові, якщо ви не зареєстровані у проекті або не підтвердили свою електронну адресу в [[Special:Preferences|особистих налаштуваннях]], а також якщо вам було заборонено надсилати листи при блокуванні.\n\nВаша поточна IP-адреса — $3, ідентифікатор блокування — #$5. Будь ласка, зазначайте його у своїх запитах.",
        "blockednoreason": "не вказано причини",
-       "whitelistedittext": "Ви повинні $1 щоб редагувати сторінки.",
+       "whitelistedittext": "Ви повинні $1, щоб редагувати сторінки.",
        "confirmedittext": "Ви повинні підтвердити вашу адресу електронної пошти перед редагуванням сторінок.\nБудь-ласка вкажіть і підтвердіть вашу електронну адресу на [[Special:Preferences|сторінці налаштувань]].",
        "nosuchsectiontitle": "Не вдається знайти розділ",
        "nosuchsectiontext": "Ви намагаєтесь редагувати розділ, якого не існує.\nМожливо, він був перейменований або вилучений, поки ви переглядали сторінку.",
        "session_fail_preview": "'''Система не може зберегти ваші редагування, оскільки втрачені дані сеансу. Будь ласка, повторіть вашу спробу.\nЯкщо помилка буде повторюватись, спробуйте [[Special:UserLogout|вийти з системи]] і увійти знову.'''",
        "session_fail_preview_html": "<strong>Вибачте! Неможливо зберегти ваші зміни через втрату даних HTML-сесії.</strong>\n\n''Оскільки {{SITENAME}} дозволяє використовувати чистий HTML, попередній перегляд відключено, щоб попередити JavaScript-атаки.''\n\n<strong>Якщо це легітимна спроба редагування, будь ласка, спробуйте ще раз. Якщо не вийде знову, — спробуйте [[Special:UserLogout|завершити сеанс роботи]] й ще раз ввійти до системи.</strong>",
        "token_suffix_mismatch": "'''Ваше редагування було відхилене, оскільки ваша програма неправильно обробляє знаки пунктуації у вікні редагування. Редагування було скасоване для запобігання спотворенню тексту статті.\nПодібні проблеми можуть виникати при використанні анонімізуючих веб-проксі, що містять помилки.'''",
-       "edit_form_incomplete": "'''Частина даних із форми редагування не досягла сервера. Уважно перевірте, чи не пошкоджені ваші правки і спробуйте ще раз.'''",
+       "edit_form_incomplete": "<strong>Частина даних із форми редагування не досягла сервера. Уважно перевірте, чи не пошкоджені Ваші редагування і спробуйте ще раз.</strong>",
        "editing": "Редагування $1",
        "creating": "Створення $1",
        "editingsection": "Редагування $1 (розділ)",
        "undo-norev": "Редагування не може бути скасоване, бо його не існує або було вилучено.",
        "undo-nochange": "Схоже, редагування вже було скасовано.",
        "undo-summary": "Скасування редагування № $1 користувача [[Special:Contribs/$2|$2]] ([[User talk:$2|обговорення]])",
-       "undo-summary-username-hidden": "СкаÑ\81Ñ\83ваÑ\82и Ð¿Ñ\80авкÑ\83 $1, виконану прихованим користувачем",
+       "undo-summary-username-hidden": "СкаÑ\81Ñ\83ваÑ\82и Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8e $1, виконану прихованим користувачем",
        "cantcreateaccounttitle": "Неможливо створити обліковий запис",
        "cantcreateaccount-text": "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].\n\n$3 зазначив таку причину: ''$2''",
        "cantcreateaccount-range-text": "Створення облікового запису із IP-адрес у діапазоні  '''$1''', який включає вашу IP-адресу ('''$4'''), було заблоковано користувачем [[User:$3|$3]].\n\nКористувач $3 вказав як причину ''$2''",
        "revdelete-selected-text": "{{PLURAL:$1|Вибрана редакція|Вибрані редакції}} із [[:$2]]:",
        "revdelete-selected-file": "{{PLURAL:$1|Вибрана версія файлу|Вибрані версії файлу}} із [[:$2]]:",
        "logdelete-selected": "{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:",
-       "revdelete-text-text": "Видалені версії будуть як і раніше, показані в історії сторінки, але частини їх вмісту будуть недоступні для учасників.",
-       "revdelete-text-file": "Видалені версії файлу будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для учасників.",
-       "logdelete-text": "Ð\92идаленÑ\96 Ð¿Ð¾Ð´Ñ\96Ñ\97 Ð² Ð¶Ñ\83Ñ\80налÑ\96 Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ñ\8fк Ñ\96 Ñ\80анÑ\96Ñ\88е Ð²Ð¸Ð´Ð½Ð¾ Ð² Ð¶Ñ\83Ñ\80налаÑ\85, Ð°Ð»Ðµ Ñ\87аÑ\81Ñ\82ини Ñ\97Ñ\85 Ð²Ð¼Ñ\96Ñ\81Ñ\82Ñ\83 Ð±Ñ\83дÑ\83Ñ\82Ñ\8c Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пнÑ\96 Ð´Ð»Ñ\8f Ñ\83Ñ\87аÑ\81никÑ\96в.",
+       "revdelete-text-text": "Видалені версії будуть, як і раніше, показані в історії сторінки, але частини їх вмісту будуть недоступні для загалу.",
+       "revdelete-text-file": "Видалені версії файлу будуть як і раніше видно в історії сторінки, але їх частини вмісту будуть доступні для загалу.",
+       "logdelete-text": "Ð\86нÑ\84оÑ\80маÑ\86Ñ\96Ñ\8f Ð¿Ñ\80о Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ñ\96 Ð¿Ð¾Ð´Ñ\96Ñ\97 Ð±Ñ\83де, Ñ\8fк Ñ\96 Ñ\80анÑ\96Ñ\88е, Ð²Ð¸Ð´Ð¸Ð¼Ð° Ð² Ð¶Ñ\83Ñ\80налаÑ\85, Ð°Ð»Ðµ Ñ\87аÑ\81Ñ\82ина Ñ\97Ñ\85 Ñ\82екÑ\81Ñ\82Ñ\83 Ð±Ñ\83де Ð½ÐµÐ´Ð¾Ñ\81Ñ\82Ñ\83пна Ð´Ð»Ñ\8f Ð·Ð°Ð³Ð°Ð»Ñ\83.",
        "revdelete-text-others": "Інші адміністратори, як і раніше, будуть мати можливість доступу до прихованого вмісту і зможуть відновити його, якщо не встановлено додаткові обмеження.",
        "revdelete-confirm": "Будь ласка, підтвердіть, що ви справді бажаєте це здійснити, що усвідомлюєте наслідки та робите це згідно з [[{{MediaWiki:Policy-url}}|правилами]].",
        "revdelete-suppress-text": "Приховування може відбуватися '''лише''' в таких випадках:\n* Потенційно наклепницькі відомості\n* Недоречна особиста інформація\n*: ''домашні адреси, номери телефонів, номер паспорта тощо.''",
        "showhideselectedversions": "Показати/приховати обрані версії",
        "editundo": "скасувати",
        "diff-empty": "(Немає відмінностей)",
-       "diff-multi-sameuser": "(не {{PLURAL:$1|показано Ð¾Ð´Ð½Ñ\83 Ð¿Ñ\80омÑ\96жнÑ\83 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8e|показанÑ\96 $1 Ð¿Ñ\80омÑ\96жнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|показано $1 Ð¿Ñ\80омÑ\96жниÑ\85 Ð²ÐµÑ\80Ñ\81Ñ\96й}} Ñ\86Ñ\8cого Ñ\83Ñ\87аÑ\81ника)",
-       "diff-multi-otherusers": "(не {{PLURAL:$1|показана $1 Ð¿Ñ\80омÑ\96жна Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f|показано $1 Ð¿Ñ\80омÑ\96жнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|показанÑ\96 $1 Ð¿Ñ\80омÑ\96жниÑ\85 Ð²ÐµÑ\80Ñ\81Ñ\96й}} {{PLURAL:$2|Ñ\89е Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñ\83Ñ\87аÑ\81ника|$2 Ñ\83Ñ\87аÑ\81ників}})",
+       "diff-multi-sameuser": "(Ð\9dе {{PLURAL:$1|показано Ð¾Ð´Ð½Ñ\83 Ð¿Ñ\80омÑ\96жнÑ\83 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8e|показанÑ\96 $1 Ð¿Ñ\80омÑ\96жнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|показано $1 Ð¿Ñ\80омÑ\96жниÑ\85 Ð²ÐµÑ\80Ñ\81Ñ\96й}} Ñ\86Ñ\8cого ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а)",
+       "diff-multi-otherusers": "(Ð\9dе {{PLURAL:$1|показана $1 Ð¿Ñ\80омÑ\96жна Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\8f|показано $1 Ð¿Ñ\80омÑ\96жнÑ\96 Ð²ÐµÑ\80Ñ\81Ñ\96Ñ\97|показанÑ\96 $1 Ð¿Ñ\80омÑ\96жниÑ\85 Ð²ÐµÑ\80Ñ\81Ñ\96й}} {{PLURAL:$2|Ñ\89е Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87а|$2 ÐºÐ¾Ñ\80иÑ\81Ñ\82Ñ\83ваÑ\87ів}})",
        "diff-multi-manyusers": "({{PLURAL:$1|не показана $1 проміжна версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|1=$1 користувачем|$2 користувачами}})",
        "difference-missing-revision": "{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|1=знайдена|знайдені}}.\n\nІмовірно, ви перейшли за застарілим посиланням на порівняння версій вилученої сторінки.\nПодробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].",
        "searchresults": "Результати пошуку",
        "search-category": "(категорія $1)",
        "search-file-match": "(збігається із вмістом файлу)",
        "search-suggest": "Можливо, ви мали на увазі: $1",
+       "search-rewritten": "Показуються результати для $1. Шукати натомість $2.",
        "search-interwiki-caption": "Братні проекти",
        "search-interwiki-default": "Результати із $1:",
        "search-interwiki-more": "(більше)",
        "rcshowhidemine": "$1 мої редагування",
        "rcshowhidemine-show": "показати",
        "rcshowhidemine-hide": "приховати",
+       "rcshowhidecategorization": "$1 категоризацію сторінок",
+       "rcshowhidecategorization-show": "Показати",
+       "rcshowhidecategorization-hide": "Приховати",
        "rclinks": "Показати останні $1 редагувань за $2 днів<br />$3",
        "diff": "різн.",
        "hist": "історія",
        "boteditletter": "б",
        "unpatrolledletter": "!",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|користувач спостерігає|користувачі спостерігають|користувачів спостерігають}}]",
-       "rc_categories": "ТÑ\96лÑ\8cки Ð· ÐºÐ°Ñ\82егоÑ\80Ñ\96й (Ñ\80аздÑ\96лÑ\8eваÑ\87 Â«|»)",
-       "rc_categories_any": "Ð\91Ñ\83дÑ\8c\8fкий",
+       "rc_categories": "ТÑ\96лÑ\8cки Ð· ÐºÐ°Ñ\82егоÑ\80Ñ\96й (Ñ\80оздÑ\96лÑ\8eваÑ\87 Â«|»):",
+       "rc_categories_any": "Ð\91Ñ\83дÑ\8c\8fка Ð· Ð¾Ð±Ñ\80аниÑ\85",
        "rc-change-size": "$1",
        "rc-change-size-new": "Розмір після зміни: $1 {{PLURAL:$1|байт|байти|байтів}}",
        "newsectionsummary": "/* $1 */ нова тема",
        "recentchangeslinked-summary": "Це список нещодавніх змін на сторінках, на які посилається зазначена сторінка (або на сторінках, що містяться в цій категорії).\nСторінки з [[Special:Watchlist|вашого списку спостереження]] виділено '''жирним шрифтом'''.",
        "recentchangeslinked-page": "Назва сторінки:",
        "recentchangeslinked-to": "Показати зміни на сторінках, пов'язаних з даною",
+       "recentchanges-page-added-to-category": "[[:$1]] Додано до категорії",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було додано до категорії",
+       "recentchanges-page-removed-from-category": "[[:$1]] було вилучено з категорії",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] та ще {{PLURAL:$2|$2 сторінку|$2 сторінки|$2 сторінок|1=одну сторінку}} було вилучено з категорії",
        "upload": "Завантажити файл",
        "uploadbtn": "Завантажити файл",
        "reuploaddesc": "Повернутися до форми завантаження",
        "uploaded-setting-handler-svg": "SVG, який встановлює атрибут «handler» з віддаленою адресою/даними/сценарієм, заблоковано. У завантаженому SVG-файлі знайдено <code>$1=\"$2\"</code>.",
        "uploaded-remote-url-svg": "SVG, який встановлює будь-який атрибут з віддаленим URL, заблоковано. У завантаженому SVG-файлі знайдено <code>$1=\"$2\"</code>.",
        "uploaded-image-filter-svg": "У завантаженому SVG-файлі знайдено фільтр зображення з URL: <code>&lt;$1 $2=\"$3\"&gt;</code>.",
-       "uploadscriptednamespace": "Цей SVG-файл містить недопустимий простір імен \"$1\"",
+       "uploadscriptednamespace": "Цей SVG-файл містить недопустимий простір назв «$1».",
        "uploadinvalidxml": "Не вдалося проаналізувати XML у завантаженому файлі.",
        "uploadvirus": "Файл містить вірус! Див. $1",
        "uploadjava": "Файл є ZIP-архівом, що містить .class-файл Java.\nЗавантаження Java-файлів не дозволене, бо вони можуть використовуватися для обходу системи безпеки.",
        "upload-too-many-redirects": "URL містить надто багато перенаправлень",
        "upload-http-error": "Відбулася помилка HTTP: $1",
        "upload-copy-upload-invalid-domain": "З цього домену завантаження неможливе.",
+       "upload-dialog-title": "Завантажити файл",
+       "upload-dialog-error": "Сталася помилка",
+       "upload-dialog-warning": "З'явилось попередження",
+       "upload-dialog-button-cancel": "Скасувати",
+       "upload-dialog-button-done": "Готово",
+       "upload-dialog-button-save": "Зберегти",
+       "upload-dialog-button-upload": "Завантажити",
+       "upload-dialog-label-select-file": "Обрати файл",
+       "upload-dialog-label-infoform-title": "Деталі",
+       "upload-dialog-label-infoform-name": "Назва",
+       "upload-dialog-label-infoform-description": "Опис",
+       "upload-dialog-label-usage-title": "Використання",
+       "upload-dialog-label-usage-filename": "Назва файлу",
        "backend-fail-stream": "Не вдалося транслювати файл $1.",
        "backend-fail-backup": "Не вдалося створити резервну копію файлу $1.",
        "backend-fail-notexists": "Файл $1 не існує.",
        "listgrouprights-removegroup-self": "Можливість вилучити зі свого облікового запису {{PLURAL:$2|1=групу|групи}}: $1",
        "listgrouprights-addgroup-self-all": "Може додавати всі групи до свого облікового запису",
        "listgrouprights-removegroup-self-all": "може вилучати всі групи зі свого облікового запису",
-       "listgrouprights-namespaceprotection-header": "Обмеження простору імен",
-       "listgrouprights-namespaceprotection-namespace": "Простір імен",
-       "listgrouprights-namespaceprotection-restrictedto": "Права, що дозволяють учаснику редагувати",
+       "listgrouprights-namespaceprotection-header": "Обмеження простору назв",
+       "listgrouprights-namespaceprotection-namespace": "Простір назв",
+       "listgrouprights-namespaceprotection-restrictedto": "Права, що дозволяють користувачу редагувати",
        "trackingcategories": "Відстежувані категорії",
-       "trackingcategories-summary": "На цій сторінці перераховані відстежують категорії, які заповнюються автоматично програмним забезпеченням MediaWiki. Їх можна перейменувати, змінивши відповідні системні повідомлення в просторі імен {{ns:8}}.",
+       "trackingcategories-summary": "На цій сторінці перераховані відстежують категорії, які заповнюються автоматично програмним забезпеченням MediaWiki. Їх можна перейменувати, змінивши відповідні системні повідомлення в просторі назв {{ns:8}}.",
        "trackingcategories-msg": "Відстежувана категорія",
        "trackingcategories-name": "Ім'я повідомлення",
        "trackingcategories-desc": "Критерій включення в категорію",
        "noindex-category-desc": "Сторінка не індексується пошуковими роботами, тому що на ній є «чарівне слово» <code><nowiki>__NOINDEX__</nowiki></code>, і вона знаходиться в просторі імен, де дозволений цей прапор).",
-       "index-category-desc": "На сторінці є «чарівне слово» <nowiki>__INDEX__</nowiki> (і сторінка знаходиться в просторі імен, де дозволений цей прапор), тому вона індексуються пошуковими роботами в тих випадках, коли цього зазвичай не відбувається.",
+       "index-category-desc": "На сторінці є «чарівне слово» <code><nowiki>__INDEX__</nowiki></code> (і сторінка знаходиться в просторі назв, де дозволений цей прапор), тому вона індексується пошуковими роботами в тих випадках, коли цього зазвичай не відбувається.",
        "post-expand-template-inclusion-category-desc": "Розмір сторінки стане більший за <code>$wgMaxArticleSize</code> після показу всіх шаблонів, тому деякі з них не були показані повністю.",
        "post-expand-template-argument-category-desc": "Сторінка стане більшою за <code>$wgMaxArticleSize</code> після розкриття аргументу шаблона (що-небудь в потрійних фігурних дужках, наприклад, <code>{{{Foo}}})</code>).",
        "expensive-parserfunction-category-desc": "На сторінці також використовується занадто багато ресурсомістких функцій (таких, як <code>#ifexist</code>). Детальніше - на сторінці [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit].",
        "watchlistanontext": "Вам необхідно увійти, щоб переглянути чи редагувати список спостереження.",
        "watchnologin": "Ви не ввійшли до системи",
        "addwatch": "Додати до списку спостереження",
-       "addedwatchtext": "Сторінку «[[:$1]]» додано до вашого [[Special:Watchlist|списку спостереження]].\nПодальші редагування цієї сторінки (та пов'язаної з нею сторінки обговорення) відображатимуться в цьому списку.",
+       "addedwatchtext": "«[[:$1]]» та її сторінка обговорення додані до вашого [[Special:Watchlist|списку спостереження]].",
        "addedwatchtext-short": "Сторінка \" $1 \" була додана до вашого списку спостереження.",
        "removewatch": "Видалити зі списку спостереження",
-       "removedwatchtext": "Сторінку «[[:$1]]» вилучено з вашого [[Special:Watchlist|списку спостереження]].",
+       "removedwatchtext": "«[[:$1]]» та її сторінка обговорення вилучені з Вашого [[Special:Watchlist|списку спостереження]].",
        "removedwatchtext-short": "Сторінка \"$1\" була видалена із вашого списку спостереження.",
        "watch": "Спостерігати",
        "watchthispage": "Спостерігати за цією сторінкою",
        "changecontentmodel-success-title": "Модель вмісту було змінено",
        "changecontentmodel-success-text": "Тип вмісту сторінки [[:$1]] було змінено.",
        "changecontentmodel-cannot-convert": "Вміст сторінки [[:$1]] не можна перетворити на вміст типу $2.",
-       "changecontentmodel-title-cantexist": "Сторінка з назвою $1 не можлива.",
        "changecontentmodel-nodirectediting": "Модель вмісту $1 не підтримує пряме редагування",
        "log-name-contentmodel": "Журнал змін моделі вмісту",
        "log-description-contentmodel": "Події, пов'язані з моделями вмісту сторінки",
        "protect-title": "Встановлення захисту для «$1»",
        "protect-title-notallowed": "Перегляд рівню захисту \"$1\"",
        "prot_1movedto2": "«[[$1]]» перейменована на «[[$2]]»",
-       "protect-badnamespace-title": "Ð\91еззаÑ\85иÑ\81ний Ð¿Ñ\80оÑ\81Ñ\82Ñ\96Ñ\80 Ñ\96мен",
-       "protect-badnamespace-text": "Сторінки у просторі імен не можуть бути захищені.",
+       "protect-badnamespace-title": "Ð\9dезаÑ\85иÑ\89Ñ\83ваний Ð¿Ñ\80оÑ\81Ñ\82Ñ\96Ñ\80 Ð½Ð°Ð·Ð²",
+       "protect-badnamespace-text": "Сторінки у цьому просторі назв не можуть бути захищені.",
        "protect-norestrictiontypes-text": "Цю сторінку не може бути захищено, бо немає ніяких типів обмежень.",
        "protect-norestrictiontypes-title": "Сторінка, яку неможливо захистити",
        "protect-legend": "Підтвердження встановлення захисту",
        "undeletepagetext": "{{PLURAL:$1|1=Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.",
        "undelete-fieldset-title": "Відновити версії",
        "undeleteextrahelp": "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''. \nДля виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
-       "undeleterevisions": "В архіві $1 {{PLURAL:$1|версія|версії|версій}}",
+       "undeleterevisions": "Вилучено $1 {{PLURAL:$1|версію|версії|версій}}",
        "undeletehistory": "Якщо ви відновите сторінку, всі версії будуть також відновлені, разом з журналом редагувань.\nЯкщо з моменту вилучення була створена нова сторінка з такою самою назвою, відновлені версії будуть зазначені в журналі редагувань перед новими записами, але поточна версія існуючої статті не буде замінена автоматично.",
        "undeleterevdel": "Відновлення не буде здійснене, якщо воно призведе до часткового вилучення останньої версії сторінки або файлу. У подібному випадку Ви повинні зняти позначку або показати останні вилучені версії.",
        "undeletehistorynoadmin": "Стаття вилучена. Причина вилучення та список користувачів, що редагували статтю до вилучення, вказані нижче. Текст вилученої статті можуть переглянути лише адміністратори.",
        "tooltip-invert": "Встановіть цей прапорець, щоб приховати зміни на сторінках, в межах обраного простору імен (і пов'язаних просторів імен, за потреби)",
        "tooltip-whatlinkshere-invert": "Поставте цю галочку, щоб приховати зміни на сторінках із обраного простору назв.",
        "namespace_association": "Пов'язаний простір назв",
-       "tooltip-namespace_association": "Встановіть цей прапорець, щоб додати простір імен обговорень, пов'язаних з обраним простором імен",
+       "tooltip-namespace_association": "Встановіть цей прапорець, щоб додати простір назв обговорень, пов'язаних з обраним простором назв",
        "blanknamespace": "(Основний)",
        "contributions": "Внесок {{GENDER:$1|користувача|користувачки}}",
        "contributions-title": "Внесок користувача $1",
        "import-error-special": "Сторінку «$1» не було імпортовано, оскільки вона належить до особливого простору назв, що не дозволяє створення сторінок.",
        "import-error-invalid": "Сторінку «$1» не було імпортовано, оскільки назва, у яку вона імпортується, неприпустима у цій вікі.",
        "import-error-unserialize": "Версія $2 сторінки «$1» не може бути деструктурованою (десеріалізованою). Отримано повідомлення, що у цій версії використано модель $3 сериалізована як $4.",
-       "import-error-bad-location": "Ð\9fÑ\80авка $2, що використовує модель вмісту $3, не може бути збережена у «$1» цієї вікі, тому що ця модель не підтримується на цій сторінці.",
+       "import-error-bad-location": "Ð\92еÑ\80Ñ\81Ñ\96Ñ\8f $2, що використовує модель вмісту $3, не може бути збережена у «$1» цієї вікі, тому що ця модель не підтримується на цій сторінці.",
        "import-options-wrong": "{{PLURAL:$2|1=Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>",
        "import-rootpage-invalid": "Вказана некоректна назва кореневої сторінки",
        "import-rootpage-nosubpage": "В просторі назв вказаної кореневої сторінки «$1» заборонені підсторінки",
        "spam_reverting": "Відкинути до останньої версії, що не містить посилання на $1",
        "spam_blanking": "Всі версії містять посилання на $1, очистка",
        "spam_deleting": "Все версії, що містили посилання на $1, вилучаються",
-       "simpleantispam-label": "Перевірка на спам.\n'''НЕ''' заповнюйте це!",
+       "simpleantispam-label": "Перевірка на спам.\n<strong>Не</strong> заповнюйте це!",
        "pageinfo-title": "Інформація про «$1»",
        "pageinfo-not-current": "Вибачте, неможливо переглянути цю інформацію для старих версій.",
        "pageinfo-header-basic": "Основна інформація",
        "pageinfo-firstuser": "Створив сторінку",
        "pageinfo-firsttime": "Дата створення сторінки",
        "pageinfo-lastuser": "Останній редактор",
-       "pageinfo-lasttime": "Дата останньої правки",
+       "pageinfo-lasttime": "Дата останнього редагування",
        "pageinfo-edits": "Загальна кількість редагувань",
        "pageinfo-authors": "Загальна кількість унікальних авторів",
        "pageinfo-recent-edits": "Кількість поточних редагувань в історії (протягом $1)",
        "special-characters-title-endash": "коротке тире",
        "special-characters-title-emdash": "довге тире",
        "special-characters-title-minus": "мінус",
+       "mw-widgets-dateinput-no-date": "Дати не вибрано",
+       "mw-widgets-dateinput-placeholder-day": "РРРР-ММ-ДД",
+       "mw-widgets-dateinput-placeholder-month": "РРРР-ММ",
        "mw-widgets-titleinput-description-new-page": "сторінка ще не існує",
        "mw-widgets-titleinput-description-redirect": "перенаправлення на $1"
 }
index df2b2ba..8f009ca 100644 (file)
        "special-characters-group-khmer": "Khmer",
        "special-characters-title-endash": "lineeta ene",
        "special-characters-title-emdash": "lineeta eme",
-       "special-characters-title-minus": "segno meno"
+       "special-characters-title-minus": "segno meno",
+       "mw-widgets-dateinput-placeholder-day": "AAAA-MM-GG",
+       "mw-widgets-dateinput-placeholder-month": "AAAA-MM"
 }
index 80c441a..1a1cdbe 100644 (file)
        "view": "Xem",
        "view-foreign": "Xem trên $1",
        "edit": "Sửa đổi",
-       "edit-local": "Sửa đổi miêu tả trên wiki địa phương",
+       "edit-local": "Sửa miêu tả địa phương",
        "create": "Tạo",
-       "create-local": "Thêm miêu tả trên wiki địa phương",
+       "create-local": "Thêm miêu tả địa phương",
        "editthispage": "Sửa đổi trang này",
        "create-this-page": "Tạo trang này",
        "delete": "Xóa",
        "actionthrottled": "Thao tác bị giới hạn",
        "actionthrottledtext": "Để nhằm tránh spam, bạn không thể thực hiện thao tác này quá nhiều lần trong một thời gian ngắn.  Xin hãy chờ vài phút trước khi thực hiện lại.",
        "protectedpagetext": "Trang này đã bị khóa không cho sửa đổi hoặc tác động khác.",
-       "viewsourcetext": "Bạn vẫn có thể xem và chép xuống mã nguồn của trang này:",
-       "viewyourtext": "Bạn vẫn có thể xem và chép xuống mã nguồn '''các sửa đổi của bạn''' tại trang này:",
+       "viewsourcetext": "Bạn vẫn có thể xem và chép xuống mã nguồn của trang này.",
+       "viewyourtext": "Bạn vẫn có thể xem và chép xuống mã nguồn <strong>các sửa đổi của bạn</strong> tại trang này.",
        "protectedinterface": "Trang này cung cấp một thông điệp trong giao diện phần mềm, và bị khóa để tránh phá hoại. Để bổ sung hoặc thay đổi bản dịch ở bất cứ wiki nào, xin vui lòng đóng góp vào [//translatewiki.net/wiki/Main_Page?setlang=vi translatewiki.net], dự án bản địa hóa của MediaWiki.",
        "editinginterface": "<strong>Lưu ý:</strong> Bạn đang sửa chữa một trang dùng để cung cấp thông điệp giao diện cho phần mềm. Những thay đổi tại trang này sẽ ảnh hưởng đến giao diện của rất nhiều người dùng wiki này.",
        "translateinterface": "Để bổ sung hoặc thay đổi bản dịch ở bất cứ wiki nào, xin vui lòng đóng góp vào [//translatewiki.net/?setlang=vi translatewiki.net], dự án bản địa hóa MediaWiki.",
        "search-category": "(thể loại $1)",
        "search-file-match": "(khớp nội dung tập tin)",
        "search-suggest": "Có phải bạn muốn tìm: $1",
+       "search-rewritten": "Đang xem các kết quả cho $1. Tìm kiếm cho $2 thay thế.",
        "search-interwiki-caption": "Các dự án liên quan",
        "search-interwiki-default": "Kết quả từ $1:",
        "search-interwiki-more": "(thêm)",
        "prefsnologintext2": "Xin vui lòng đăng nhập để thay đổi tùy chọn.",
        "prefs-skin": "Giao diện",
        "skin-preview": "Xem trước",
-       "datedefault": "Không tuỳ biến",
+       "datedefault": "Không tùy biến",
        "prefs-labs": "Tính năng phòng thí nghiệm",
        "prefs-user-pages": "Trang cá nhân",
        "prefs-personal": "Thông tin cá nhân",
        "minoreditletter": "n",
        "newpageletter": "M",
        "boteditletter": "b",
-       "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|người|người}} đang xem]",
-       "rc_categories": "Hạn chế theo thể loại (phân cách bằng “|”)",
-       "rc_categories_any": "Bất kỳ",
+       "number_of_watching_users_pageview": "[$1 người đang xem]",
+       "rc_categories": "Hạn chế theo thể loại (phân cách bằng “|”):",
+       "rc_categories_any": "Bất kỳ được chọn",
        "rc-change-size-new": "$1 byte sau thay đổi",
        "newsectionsummary": "Đề mục mới: /* $1 */",
        "rc-enhanced-expand": "Xem chi tiết",
        "uploaded-wrong-setting-svg": "Đã ngăn cản việc sử dụng thẻ “set” để thêm đích bên ngoài/dữ liệu/kịch bản vào thuộc tính nào đó. Tìm thấy <code>&lt;set to=\"$1\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploaded-setting-handler-svg": "Đã ngăn cản mã SVG đặt thuộc tính “handler” là từ xa/dữ liệu/kịch bản. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.",
        "uploaded-remote-url-svg": "Đã ngăn cản mã SVG đặt thuộc tính style nào đó là URL ngoài máy. Tìm thấy <code>$1=\"$2\"</code> trong tập tin SVG được tải lên.",
-       "uploaded-image-filter-svg": "Tìm công cụ lọc ảnh với UPL: <Mã>&lt;$1 $2=\"$3\"&gt;</Mã> trong tập tin SVG được tải lên.",
+       "uploaded-image-filter-svg": "Đã phát hiện bộ lọc hình ảnh có URL: <code>&lt;$1 $2=\"$3\"&gt;</code> trong tập tin SVG được tải lên.",
        "uploadscriptednamespace": "Tập tin SVG này chứa không gian tên “$1” không được cho phép",
        "uploadinvalidxml": "Không thể phân tích mã XML trong tập tin tải lên.",
        "uploadvirus": "Tập tin có virút! Chi tiết: $1",
        "filehist-comment": "Miêu tả",
        "imagelinks": "Các trang sử dụng tập tin",
        "linkstoimage": "{{PLURAL:$1|Trang|$1 trang}} sau có liên kết đến tập tin này:",
-       "linkstoimage-more": "Có hơn $1 {{PLURAL:$1|trang|trang}} liên kết đến tập tin này.\nDanh sách dưới đây chỉ hiển thị {{PLURAL:$1|liên kết đầu tiên|$1 liên kết đầu tiên}} đến tập tin này.\nCó [[Special:WhatLinksHere/$2|danh sách đầy đủ ở đây]].",
+       "linkstoimage-more": "Có hơn $1 trang liên kết đến tập tin này.\nDanh sách dưới đây chỉ hiển thị {{PLURAL:$1|liên kết|$1 liên kết}} đầu tiên đến tập tin này.\nCó [[Special:WhatLinksHere/$2|danh sách đầy đủ ở đây]].",
        "nolinkstoimage": "Không có trang nào chứa liên kết đến hình.",
        "morelinkstoimage": "Xem [[Special:WhatLinksHere/$1|thêm liên kết]] đến tập tin này.",
        "linkstoimage-redirect": "$1 (tập tin đổi hướng) $2",
        "nlinks": "$1 {{PLURAL:$1|liên kết|liên kết}}",
        "nmembers": "$1 trang",
        "nmemberschanged": "$1 → $2 trang",
-       "nrevisions": "$1 {{PLURAL:$1|phiên bản|phiên bản}}",
+       "nrevisions": "$1 phiên bản",
        "nimagelinks": "Được sử dụng trong $1 trang",
        "ntransclusions": "được sử dụng trong $1 trang",
        "specialpage-empty": "Trang này đang trống.",
        "watchlistanontext": "Xin hãy đăng nhập để xem hay sửa đổi các trang trong danh sách theo dõi của bạn.",
        "watchnologin": "Chưa đăng nhập",
        "addwatch": "Thêm vào danh sách theo dõi",
-       "addedwatchtext": "Trang “[[:$1]]” đã vào [[Special:Watchlist|danh sách theo dõi]] của bạn.\nNhững sửa đổi đối với trang này và trang thảo luận của nó sẽ được liệt kê ở đấy.",
+       "addedwatchtext": "“[[:$1]]” cùng trang thảo luận đã vào [[Special:Watchlist|danh sách theo dõi]] của bạn.",
        "addedwatchtext-short": "Trang “$1” đã được thêm vào danh sách theo dõi của bạn.",
        "removewatch": "Gỡ khỏi danh sách theo dõi",
-       "removedwatchtext": "Trang “[[:$1]]” đã được đưa ra khỏi [[Special:Watchlist|danh sách theo dõi]] của bạn.",
+       "removedwatchtext": "“[[:$1]]” cùng trang thảo luận đã được đưa ra khỏi [[Special:Watchlist|danh sách theo dõi]] của bạn.",
        "removedwatchtext-short": "Trang “$1” đã được xóa khỏi danh sách theo dõi của bạn.",
        "watch": "Theo dõi",
        "watchthispage": "Theo dõi trang này",
        "changecontentmodel-success-title": "Kiểu nội dung đã thay đổi",
        "changecontentmodel-success-text": "Loại nội dung của [[:$1]] đã được thay đổi.",
        "changecontentmodel-cannot-convert": "Không thể chuyển đổi nội dung [[:$1]] thành nội dung dưới dạng $2.",
-       "changecontentmodel-title-cantexist": "Không thể có trang tại $1.",
        "changecontentmodel-nodirectediting": "Mô hình nội dung $1 không hỗ trợ sửa đổi trực tiếp",
        "log-name-contentmodel": "Nhật trình thay đổi mô hình nội dung",
        "log-description-contentmodel": "Sự kiện có liên quan đến mô hình nội dung của trang.",
        "movepage-page-exists": "Trang $1 đã tồn tại và không thể bị tự động ghi đè.",
        "movepage-page-moved": "Trang $1 đã được di chuyển đến $2.",
        "movepage-page-unmoved": "Trang $1 không thể di chuyển đến $2.",
-       "movepage-max-pages": "Đã có tối đa $1 {{PLURAL:$1|trang|trang}} đã di chuyển và không tự động di chuyển thêm được nữa.",
+       "movepage-max-pages": "Đã có tối đa $1 trang đã di chuyển và không tự động di chuyển thêm được nữa.",
        "movelogpage": "Nhật trình di chuyển",
        "movelogpagetext": "Dưới đây là danh sách các trang đã được di chuyển.",
        "movesubpage": "{{PLURAL:$1|Trang con|Các trang con}}",
        "import-comment": "Lý do:",
        "importtext": "Xin hãy xuất tập tin từ wiki nguồn dùng [[Special:Export|công cụ xuất]].\nLưu nó vào máy tính của bạn rồi tải nó lên đây.",
        "importstart": "Đang nhập các trang…",
-       "import-revision-count": "$1 {{PLURAL:$1|phiên bản|phiên bản}}",
+       "import-revision-count": "$1 phiên bản",
        "importnopages": "Không có trang để nhập vào.",
        "imported-log-entries": "Đã nhập {{PLURAL:$1|mục nhật trình|$1 mục nhật trình}}.",
        "importfailed": "Không nhập được: $1",
        "group-bot.js": "/* Mã JavaScript tại đây sẽ chỉ được tải cho các bot */",
        "group-sysop.js": "/* Mã JavaScript tại đây sẽ chỉ được tải cho các bảo quản viên */",
        "group-bureaucrat.js": "/* Mã JavaScript tại đây sẽ chỉ được tải cho các hành chính viên */",
-       "anonymous": "{{PLURAL:$1|Người dùng|Người dùng}} vô danh của {{SITENAME}}",
+       "anonymous": "{{PLURAL:$1}}Người dùng vô danh của {{SITENAME}}",
        "siteuser": "thành viên $1 của {{SITENAME}}",
        "anonuser": "người dùng vô danh $1 tại {{SITENAME}}",
        "lastmodifiedatby": "Trang này được $3 cập nhật lần cuối lúc $2 $1.",
        "imagemaxsize": "Giới hạn cỡ hình:<br />''(trên trang miêu tả tập tin)''",
        "thumbsize": "Cỡ hình thu nhỏ:",
        "widthheight": "$1×$2",
-       "widthheightpage": "$1 × $2, $3 {{PLURAL:$3|trang|trang}}",
+       "widthheightpage": "$1 × $2, $3 trang",
        "file-info": "kích thước tập tin: $1, kiểu MIME: $2",
        "file-info-size": "$1×$2 điểm ảnh, kích thước tập tin: $3, kiểu MIME: $4",
        "file-info-size-pages": "$1×$2 điểm ảnh, kích thước tập tin: $3, kiểu MIME: $4, $5 trang",
        "special-characters-title-endash": "dấu gạch en",
        "special-characters-title-emdash": "dấu gạch em",
        "special-characters-title-minus": "dấu trừ",
+       "mw-widgets-dateinput-no-date": "Không chọn ngày tháng",
+       "mw-widgets-dateinput-placeholder-day": "YYYY-MM-DD (năm-tháng-ngày)",
+       "mw-widgets-dateinput-placeholder-month": "YYYY-MM (năm-tháng)",
        "mw-widgets-titleinput-description-new-page": "Trang này chưa tồn tại",
        "mw-widgets-titleinput-description-redirect": "Đổi hướng đến $1"
 }
index c8155da..6360add 100644 (file)
        "otherlanguages": "Ha iba nga mga yinaknan",
        "redirectedfrom": "(Ginredirekta tikang ha $1)",
        "redirectpagesub": "Redirek nga pakli",
+       "redirectto": "Ig-redirect ngadto ha:",
        "lastmodifiedat": "Ini nga pakli kataposan ginliwat dida han $1, han $2.",
        "viewcount": "Ini nga pakli ginkanhi hin {{PLURAL:$1|makausa|$1 ka beses}}.",
        "protectedpage": "Ginpanalipdan nga pakli",
        "passwordreset": "igreset an tigaman-hit-pagsulod",
        "passwordreset-text-one": "Kompletoha ini nga porma paramakareset hin imo tigaman-panakob.",
        "passwordreset-text-many": "{{PLURAL:$1|Butanga it usa nga mga surodlan basi makakarawat ko hin temporaryo nga tigaman-pansulod pinaagi ha email.}}",
-       "passwordreset-legend": "igreset an tigaman-hit-pagsulod",
        "passwordreset-disabled": "Waray ginpaandar an password reset hini nga wiki.",
        "passwordreset-emaildisabled": "Mga mga higamit ha email in waray pinaandar hini nga wiki.",
        "passwordreset-username": "Agnay hiton gumaramit:",
        "resettokens": "Igrest an mga token",
        "resettokens-text": "Puydi nimo mareset an mga token para makahatag hin pipira nga pribado nga datos nga may pakahisumpay ha imo akawnt dinhi.\nKinahanglan mo ini buhaton kun aksidenti nim nasaro hira ha iba nga tawo o an imo akawnt in nakompromiso.",
        "resettokens-no-tokens": "Waray token nga marereset.",
-       "resettokens-legend": "Igreset an mga token",
        "resettokens-tokens": "Mga token:",
        "resettokens-token-label": "$1 (yana nga balor: $2)",
        "resettokens-watchlist-token": "Token para han web feed (Atom/RSS) han[[Special:Watchlist|mga pagbag-o ha imo pakli han talaan-barantayon]]",
        "preview": "Pahiuna nga pagawas",
        "showpreview": "Pakit-a an pahiuna nga pagawas",
        "showdiff": "Igpakita an mga ginliwat",
-       "anoneditwarning": "'''Pahimatngon:''' Diri ka pa naka log-in.\nAn imo IP address in maitatala ha kaagi hinin pakli han pagliwat.",
+       "anoneditwarning": "<strong>Pahimatngon:</strong> Diri ka nakalog-in. An imo IP address in makikit-an han publiko kun magbuhat ka hin mga pagliwat. Kun ikaw in <strong>[$1 maglog-in]</strong> o <strong>[$2 maghimo hin account]</strong>, an imo mga pagliwat in maa-attribute ha imo agnay-hit-gumaramit, upod han pipira pa nga mga benepisyo.",
        "anonpreviewwarning": "''Diri ka naka-log in.  Mahisusurat an imo IP address ngada ha kanan pakli kaagi hit pagliwat kun igtipig nimo.''",
        "missingsummary": "<strong>Pahinumdom:</strong> Waray ka humatag hin halipotay nga masisiring hiton pagliwat. Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bisan waray hini.",
        "missingcommenttext": "Alayon pagbutang hin komento ha ilarom.",
        "action-userrights": "Igliwat an ngatanan nga mga katungod han gumaramit",
        "action-sendemail": "Padara hin mga e-mail",
        "nchanges": "$1 {{PLURAL:$1|pagbag-o|mga pagbabag-o}}",
+       "enhancedrc-history": "kasaysayan",
        "recentchanges": "Mga kabag-ohan",
        "recentchanges-legend": "Mga pirilion han mga lab-as nga pagbag-o",
        "recentchanges-summary": "Nasubay han pinakalab-as nga pagbag-o ha wiki dinhi nga pakli.",
        "recentchanges-label-minor": "Gutiay ini nga pagliwat",
        "recentchanges-label-bot": "Ini nga pagliwat in ginbuhat han bot",
        "recentchanges-label-unpatrolled": "Ini nga pagliwat in diri pa nakapatrol",
+       "recentchanges-label-plusminus": "An kadako han pakli in nabag-o hin ini nga numero nga mga byte",
+       "recentchanges-legend-heading": "'''Leyenda:'''",
        "rcnotefrom": "An ha ubos in mga pagbabag-o tikang han <strong>$2</strong> (kutob ngadto ha <strong>$1</strong> nga ginpakita).",
        "rclistfrom": "Pakit-a an mga ginbag-ohan tikang han $3 $2",
        "rcshowhideminor": "$1 gudti nga mga pagliwat",
+       "rcshowhideminor-show": "Pakit-a",
+       "rcshowhideminor-hide": "Tago-a",
        "rcshowhidebots": "$1 mga bot",
+       "rcshowhidebots-show": "Pakit-a",
+       "rcshowhidebots-hide": "Tago-a",
        "rcshowhideliu": "$1 an mga rehistrado nga gumaramit",
+       "rcshowhideliu-hide": "Tago-a",
        "rcshowhideanons": "$1 waray nagpakilala nga mga gumaramit",
+       "rcshowhideanons-show": "Pakit-a",
+       "rcshowhideanons-hide": "Tago-a",
        "rcshowhidepatr": "$1 mga pinatrolya nga mga paliwat",
        "rcshowhidemine": "$1 akon mga ginliwat",
+       "rcshowhidemine-show": "Pakit-a",
+       "rcshowhidemine-hide": "Tago-a",
        "rclinks": "Igpakita an katapusan nga $1 nga pagbabag-o ha sulod han urhi nga $2 ka mga adlaw<br />$3",
        "diff": "kaibhan",
        "hist": "kaagi",
        "newpageletter": "B",
        "boteditletter": "b",
        "rc_categories_any": "Bisan ano nga",
+       "rc-change-size-new": "$1 {{PLURAL:$1|nga byte|nga mga byte}} kahuman han pagbag-o",
        "newsectionsummary": "/* $1 */ bag-o nga bahin",
        "rc-enhanced-expand": "Igpakita an detalye",
        "rc-enhanced-hide": "Igtago an mga detalye",
        "nlinks": "$1 {{PLURAL:$1|nga sumpay|nga mga sumpay}}",
        "nmembers": "$1 {{PLURAL:$1|nga api|nga mga api}}",
        "nrevisions": "$1 {{PLURAL:$1|nga pagliwat|nga mga pagliwat}}",
-       "nviews": "$1 {{PLURAL:$1|nga pangita|nga mga pangita}}",
        "nimagelinks": "Gingamit ha $1 {{PLURAL:$1|nga pakli|nga mga pakli}}",
        "ntransclusions": "gingamit ha $1 {{PLURAL:$1|nga pakli|nga mga pakli}}",
        "specialpage-empty": "Waray mga resulta para hini nga report.",
        "pager-older-n": "{{PLURAL:$1|durudaan 1|durudaan $1}}",
        "booksources": "Mga libro nga tinikangan",
        "booksources-search-legend": "Pamilnga an mga libro nga gintikangan",
+       "booksources-search": "Bilnga",
        "specialloguserlabel": "Magburuhat:",
        "speciallogtitlelabel": "iiguon (titulo o gumarami):",
        "log": "Mga talaan",
        "delete-edit-reasonlist": "Igliwat an mga rason han pagpara",
        "rollback": "Mga libot-pabalik nga pagliwat",
        "rollbacklink": "libot-pabalik",
+       "rollbacklinkcount": "rollback $1 {{PLURAL:$1|ka pagliwat|ka mga pagliwat}}",
        "rollbackfailed": "Diri malinamposon an paglibot-pabalik",
        "revertpage": "Ginpabalik an ginliwat ni [[Special:Contributions/$2|$2]] ([[User talk:$2|hiruhimangraw]]) ngadto ha urhi nga pagliwat ni [[User:$1|$1]]",
        "sessionfailure-title": "Pakyas an sesyon",
        "tooltip-pt-mycontris": "Talaan han imo mga ámot",
        "tooltip-pt-login": "Gin-aaghat ka nga mag log-in, pero diri ini ginpipirit.",
        "tooltip-pt-logout": "gawas",
+       "tooltip-pt-createaccount": "Ginaag-hat ka nga maghimo hin account ngan maglog-in; pero diri ini mandatorya",
        "tooltip-ca-talk": "Hiruhimangraw mahiunong han sulod nga pakli",
-       "tooltip-ca-edit": "Puydi ka makaliwat hini nga pakli.  Alayon la paggamit han pahiuna nga paggawas nga piridlitan san-o an pagtipig",
+       "tooltip-ca-edit": "Igliwat ini nga pakli",
        "tooltip-ca-addsection": "Pagtikang hin bag-o nga bahin",
        "tooltip-ca-viewsource": "Ini nga pakli in pinaliporan.\nMakikit-an nimo an ginkuhaaan",
        "tooltip-ca-history": "Mga kahadto nga mga pagliwat hini nga pakli",
        "exif-imagewidth": "Kahaluag",
        "exif-imagelength": "Kahitaas",
        "exif-ycbcrpositioning": "Pagpoposisyon han Y ngan C",
+       "exif-xresolution": "Resolusyon horizontal",
+       "exif-yresolution": "Resolusyon vertical",
        "exif-referenceblackwhite": "Padis han itom nga busag nga reperensya hin mga balor",
        "exif-datetime": "Pagliwat han petsa ngan oras han paypay",
        "exif-imagedescription": "Titulo han hulagway",
        "exif-model": "Modelo han kamera",
        "exif-software": "Software nga gingamit",
        "exif-artist": "Tag-iya",
+       "exif-exifversion": "Version han Exif",
        "exif-colorspace": "Kolor lat-ang",
+       "exif-datetimeoriginal": "Petsa ngan oras han data generation",
+       "exif-datetimedigitized": "Petsa ngan oras han pag-digitize",
        "exif-subsectime": "Mga bahin-segundo han PetsaOras",
        "exif-exposuretime-format": "$1 seg ($2)",
        "exif-fnumber": "F Numero",
        "htmlform-submit": "Isumite",
        "htmlform-reset": "Igbalik an mga pinamalyuan",
        "htmlform-selectorother-other": "iba",
+       "logentry-delete-delete": "Hi $1 {{GENDER:$2|ginpara}} an pakli nga $3",
        "revdelete-content-hid": "sulod nakatago",
        "revdelete-summary-hid": "An halipotay nga masisiring hiton pagliwat in nakatago",
        "revdelete-uname-hid": "nakatago an agnay-hit-gumaramit",
+       "logentry-move-move": "$1 {{GENDER:$2|ginbalhin}} an pakli nga $3 ngadto ha $4",
        "logentry-newusers-newusers": "An gumaramit nga akawnt nga $1 {{GENDER:$2|ginhimo}}",
        "logentry-newusers-create": "An gumaramit nga akawnt nga $1 {{GENDER:$2|ginhimo}}",
        "logentry-newusers-create2": "An gumaramit nga akawnt nga $3 {{GENDER:$2|ginhimo}} ni $1",
        "logentry-newusers-autocreate": "An gumaramit nga akawnt nga $1 in lugaring nga {{GENDER:$2|ginhimo}}",
+       "logentry-upload-upload": "Hi $1 {{GENDER:$2|gin-upload}} an $3",
        "rightsnone": "(waray)",
        "feedback-cancel": "Pasagdi",
        "feedback-close": "Human na.",
index 4b20e8b..11607af 100644 (file)
@@ -21,6 +21,7 @@
        "tog-hideminor": "დოფული ციქა რედაქტირაფა ეკონია თირაფეფს",
        "tog-hidepatrolled": "დოფულით პატრულირებულ რედაქტირაფეფი ასერდეიან თირაფეფს",
        "tog-newpageshidepatrolled": "დოფულით პატრულირებულ ხასჷლეფი ახალ ხასჷლეფიშ ერკებულშე",
+       "tog-hidecategorization": "ხასჷლეფიშ კატეგოიზაციაშ ტყობინაფა",
        "tog-extendwatchlist": "გოფაჩი ოთოჸუჯე ერკებული არძო თირაფეფიშ ოძირაფალო, ამარდეიან თირაფეფიშ მეკოროცხილო",
        "tog-usenewrc": "ბოლო ცვლილებების და კონტროლის სიის ცვლილებების დაჯგუფება",
        "tog-numberheadings": "ავტომატურო დონომერე დუდჯოხოეფი",
@@ -50,6 +51,7 @@
        "tog-watchlisthideliu": "დამალეთ დარეგისტრირებულ მოხმარებელთა ცვლილებები ჩემი კონტროლის სიიდან",
        "tog-watchlisthideanons": "დამალეთ ანონიმურ მომხმარებელთა შესწორებები ჩემი კონტროლის სიიდან",
        "tog-watchlisthidepatrolled": "დამალეთ საკონტროლო სიიდან პატრულირებული რედაქტირებები",
+       "tog-watchlisthidecategorization": "ხასჷლეფიშ კატეგოიზაციაშ ტყობინაფა",
        "tog-ccmeonemails": "გამომიგზავნე ელფოსტების ასლები, რომლებსაც მე სხვა მომხმარებლებს ვუგზავნი",
        "tog-diffonly": "დამალე გვერდის შიგთავსი ცვლილების ქვევით",
        "tog-showhiddencats": "ქაძირი ფულირი კატეგორიეფი",
        "hidden-category-category": "ფულირი კატეგორიეფი",
        "category-subcat-count": "{{PLURAL:$2|თე კატეგორიას ოკათჷ ხვალე ათე გიმენკატეგორია.|თე კატეგორიას მოჩამილი რე $1 გიმენკატეგორია $2-შე.}}",
        "category-subcat-count-limited": "ეს კატეგორია მოიცავს შემდეგ $1 ქვეკატეგორიას.",
-       "category-article-count": "{{PLURAL:$2|á\83\90á\83\97á\83\94 á\83\99á\83\90á\83¢á\83\94á\83\92á\83\9dá\83 á\83\98á\83\90 á\83\98á\83\99á\83\90á\83\97á\83£á\83\90á\83\9cá\83¡ á\83®á\83\95á\83\90á\83\9aá\83\94 á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯ á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¡.|á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯ {{PLURAL:$1|á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90 á\83 á\83\94|$1 á\83®á\83\90á\83¡á\83\98ლეფ რე}} თე კატეგორიას, გვალო $2–შე.}}",
+       "category-article-count": "{{PLURAL:$2|á\83\90á\83\97á\83\94 á\83\99á\83\90á\83¢á\83\94á\83\92á\83\9dá\83 á\83\98á\83\90 á\83\98á\83\99á\83\90á\83\97á\83£á\83\90á\83\9cá\83¡ á\83®á\83\95á\83\90á\83\9aá\83\94 á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯ á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¡.|á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯ {{PLURAL:$1|á\83®á\83\90á\83¡á\83·á\83\9aá\83\90 á\83 á\83\94|$1 á\83®á\83\90á\83¡á\83·ლეფ რე}} თე კატეგორიას, გვალო $2–შე.}}",
        "category-article-count-limited": "შემდეგი {{PLURAL:$1|გვერდი არის|$1 გვერდები არიან}} მოცემულ კატეგორიაში",
        "category-file-count": "{{PLURAL:$2|თე კატეგორიას ხვალე ათე გეჸვენჯი ფაილი რე.|თე კატეგორიას რე გეჸვენჯი $1, ართოიანო $2-შე.}}",
        "category-file-count-limited": "შემდეგი {{PLURAL:$1|ფაილი|$1 ფაილები}} ამ კატეგორიაშია.",
-       "listingcontinuesabbrev": "á\83\92á\83\98ნძარ.",
+       "listingcontinuesabbrev": "á\83\92á\83·ნძარ.",
        "index-category": "ხასჷლეფი ინდექსირაფაშ",
        "noindex-category": "ხასჷლეფი ინდექსირაფაშ უმუშო",
        "broken-file-category": "გვერდები ფაილების არასწორი ბმულებით",
        "about": "-შენი",
        "article": "სტატია",
-       "newwindow": "ინწყუმუ ახალ ოჭკორიეს",
+       "newwindow": "ინწყუმუ ახალ ოჭკორიეს",
        "cancel": "გოუქვაფა",
        "moredotdotdot": "სრულო...",
        "morenotlisted": "ეს არასრული სიაა.",
        "protectthispage": "ხასილაშ თხილუა",
        "unprotect": "დაცვის შეცვლა",
        "unprotectthispage": "შეცვალე ამ გვერდის დაცვის დონე",
-       "newpage": "ახალ ხასჷლა",
+       "newpage": "ახალ ხასჷლა",
        "talkpage": "მოჩამილი ხასჷლაშ სხუნუა",
        "talkpagelinktext": "სხუნუა",
        "specialpage": "გჷშაკერძაფილი ხასჷლა",
        "aboutsite": "{{SITENAME}}-შენი",
        "aboutpage": "Project:შენი",
        "copyright": "დინორე მიწორინაფილი რე $1–იშ ჯოხოთ.",
-       "copyrightpage": "{{ns:project}}:á\83\9dá\83\90á\83\95á\83¢á\83\9dá\83 á\83\94 á\83\90á\83\9aá\83\9dბეფი",
+       "copyrightpage": "{{ns:project}}:á\83¡á\83\90á\83\90á\83\95á\83¢á\83\9dá\83 á\83\94 á\83\9cá\83\94ბეფი",
        "currentevents": "მიმალ მოლინეფი",
        "currentevents-url": "Project:მიმალ მოლინეფი",
        "disclaimers": "გამამინჯალაშ ვარება",
        "delete-hook-aborted": "შესწორება გაუქმებულია გადამჭერით.\nდამატებითი ახსნა არ ჩაწერილა.",
        "no-null-revision": "ვერ მოხერხდა ახალი ნულოვანი ცვლილების შექმნა გვერდისათვის „$1“",
        "badtitle": "ცაგანა დუდჯოხო",
-       "badtitletext": "á\83\9bá\83\9dá\83\97á\83®á\83\98á\83\9a á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¨ á\83¯á\83\9dá\83®á\83\9d á\83©á\83\98á\83\9aá\83\90á\83\97á\83\98á\83  á\83 á\83\93á\83£, á\83\95á\83\90á\83 á\83\90 á\83©á\83\9dá\83\9aá\83\98á\83\94á\83 , á\83\95á\83\90á\83 á\83\90 á\83®á\83\9dá\83\9aá\83\9d á\83\92á\83\9dá\83®á\83\9dá\83\9aá\83£á\83\93á\83\94á\83¡ á\83©á\83\98á\83\9aá\83\90á\83\97á\83\98á\83 á\83\9d á\83\92á\83\98á\83\9cá\83\9dá\83 á\83ªá\83®á\83£á\83\90á\83¤á\83\98á\83\9a á\83\98á\83\9cá\83¢á\83\94á\83 â\80\93á\83\9cá\83\98á\83\9cá\83\90 á\83\95á\83\90á\83 á\83\90 á\83\98á\83\9cá\83¢á\83\94á\83 â\80\93á\83¬á\83\98á\83\99á\83\98 á\83¯á\83\9dá\83®á\83\9d. \ná\83\97á\83\94á\83\9cá\83\90 á\83¨á\83\98á\83\9aá\83\94á\83\91á\83\94 á\83\98á\83\99á\83\90á\83\97á\83£á\83\90á\83\9cá\83\93á\83\90á\83¡ á\83\90á\83 á\83\97 á\83\95á\83\90á\83 á\83\90 á\83£á\83\9bá\83\9dá\83¡ á\83\97á\83\98á\83¨á\83\9cá\83\94á\83  á\83\9cá\83\98á\83¨á\83\90á\83\9cá\83¡ á\83\9cá\83\90á\83\9bá\83£á\83¨ á\83\92á\83£მორინაფა ჯოხოს ვა შილებე.",
+       "badtitletext": "á\83\9bá\83\9dá\83\97á\83®á\83\98á\83\9a á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¨ á\83\93á\83£á\83\93á\83¯á\83\9dá\83®á\83\9d á\83©á\83\98á\83\9aá\83\90á\83\97á\83\98á\83  á\83 á\83\93á\83£, á\83\95á\83\90á\83 á\83\90 á\83©á\83\9dá\83\9aá\83\98á\83\94á\83 á\83\98, á\83\95á\83\90á\83 á\83\90 á\83¬á\83·á\83\9bá\83\90á\83 á\83\98á\83\9cá\83£á\83\90á\83\9cá\83\93á\83· á\83©á\83\98á\83\9aá\83\90á\83\97á\83\98á\83 á\83\9d á\83\92á\83\98á\83\9cá\83\9dá\83 á\83ªá\83®á\83£á\83\90á\83¤á\83\98á\83\9a á\83\98á\83\9cá\83¢á\83\94á\83 â\80\93á\83\9cá\83\98á\83\9cá\83\90á\83¡ á\83\95á\83\90á\83 á\83\93á\83\90 á\83\98á\83\9cá\83¢á\83\94á\83 â\80\93á\83\95á\83\98á\83\99á\83\98 á\83¯á\83\9dá\83®á\83\9dá\83¡. \ná\83\97á\83\94á\83\9cá\83\90 á\83¨á\83\98á\83\9aá\83\94á\83\91á\83\94 á\83\98á\83\99á\83\90á\83\97á\83£á\83\90á\83\9cá\83\93á\83\90á\83¡ á\83\90á\83 á\83\97 á\83\95á\83\90á\83 á\83\90 á\83£á\83\9bá\83\9dá\83¡ á\83\97á\83\98á\83¨á\83\9cá\83\94á\83  á\83¨á\83\90á\83\9cá\83¡, á\83\9cá\83\90á\83\9bá\83£á\83¨ á\83\92á\83\98მორინაფა ჯოხოს ვა შილებე.",
        "title-invalid-empty": "მოთხოვნილი გვერდის სათაური ცარიელია ან მხოლოდ სახელთა სივრცის სახელს შეიცავს.",
        "title-invalid-utf8": "მოთხოვნილი გვერდის სათაური არასწორ UTF-8 თანმიმდევრობას შეიცავს.",
        "title-invalid-interwiki": "გვერდის მოთხოვნილი სათაური ენათშორის ბმულს შეიცავს, რომლის სათაურში გამოყენებაც არ შეიძლება.",
        "actionthrottled": "სიჩქარის შეზღუდვა.",
        "actionthrottledtext": "სპამთან ბრძოლასთან დაკავშირებით აკრძალულია შემდეგი მონაცემების მრავალჯერ გამეორება. გთხოვთ გაიმეოროთ იგი მოგვიანებით.",
        "protectedpagetext": "ეს გვერდი დაბლოკილია რედაქტირებისათვის ან სხვა მოქმედებისათვის.",
-       "viewsourcetext": "თქვა შეილებუნა ქოძირათ თე ხასჷლაშ დაჭყაფური ფაილი დო ქუდარსხუათ თიშ მანგი:",
-       "viewyourtext": "á\83\97á\83¥á\83\95á\83\94á\83\9c á\83¨á\83\94á\83\92á\83\98á\83«á\83\9aá\83\98á\83\90á\83\97 á\83\98á\83®á\83\98á\83\9aá\83\9dá\83\97 á\83\93á\83\90 á\83\93á\83\90á\83\90á\83\99á\83\9dá\83\9eá\83\98á\83 á\83\9dá\83\97  '''á\83\97á\83¥á\83\95á\83\94á\83\9cá\83\98 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\94á\83\91á\83\98á\83¡''' á\83¡á\83\90á\83¬á\83§á\83\98á\83¡á\83\98 á\83¢á\83\94á\83¥á\83¡á\83¢á\83\98 á\83\90á\83\9b á\83\92á\83\95á\83\94á\83 á\83\93á\83\96á\83\94:",
+       "viewsourcetext": "თქვა შეილებუნა ქოძირათ თე ხასჷლაშ დაჭყაფური ფაილი დო ქუდარსხუათ თიშ მანგი.",
+       "viewyourtext": "á\83\97á\83¥á\83\95á\83\90 á\83¨á\83\94á\83\98á\83\9aá\83\94á\83\91á\83£á\83\9cá\83\90 á\83¥á\83\9dá\83«á\83\98á\83 á\83\90á\83\97 '''á\83\97á\83¥á\83\95á\83\90á\83\9cá\83\98 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\94á\83¤á\83\98á\83¨''' á\83\93á\83\90á\83­á\83§á\83\90á\83¤á\83£á\83 á\83\98 á\83¢á\83\94á\83¥á\83¡á\83¢á\83\98 á\83\97á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¡ á\83\93á\83\9d á\83\92á\83\94á\83­á\83\9dá\83¤á\83\90á\83\97 á\83\97á\83\98á\83¨ á\83\90á\83\9cá\83\92á\83\98.",
        "protectedinterface": "ეს გვერდი წარმოადგენს ტექსტურ ინტერფეისს პროგრამული უზრუნველყოფისათვის და დაცულია ვანდალიზმის აღკვეთის მიზნით.",
        "editinginterface": "<strong>ყურადღება:</strong> თქვენ არედაქტირებთ გვერდს, რომელიც პროგრამის ინტერფეისის ტექსტს შეიცავს. \nამ გვერდზე განხორციელებული რედაქტირება გამოიწვევს ამ ვიკის სხვა მომხმარებელთა სამუშაო ინტერფეისის შეცვლასაც.",
        "translateinterface": "თარგმანების ყველა ვიკიში დასამატებლად ან შესაცვლელად, გთხოვთ გამოიყენოთ მედიავიკებისლოკალიზაციის პროექტი [//translatewiki.net/ translatewiki.net].",
        "resetpass-expired": "თქვენს პაროლს ვადა გაუვიდა. გთხოვთ, დააყენოთ ახალი.",
        "resetpass-expired-soft": "თქვენი პაროლის მოქმედების ვადა ამოწურულია და ახლა ის შეცვლილი უნდა იყოს. გთხოვთ, აირჩიეთ ახალი პაროლი ან დააჭირეთ \"{{int:resetpass-submit-cancel}}\", რათა იგი მოგვიანებით შეცვალოთ.",
        "resetpass-validity-soft": "თქვენი პაროლი არაკორექტულია: $1\n\nგთხოვთ, აირჩიეთ ახალი პაროლი ან დააჭირეთ \"{{int:resetpass-submit-cancel}}\", რათა იგი მოგვიანებით ჩამოყაროთ.",
-       "passwordreset": "á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\90á\83¦á\83\93á\83\92á\83\94á\83\9cა",
+       "passwordreset": "á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¨ á\83\90á\83®á\83\9aá\83¨á\83\9d á\83\94á\83\98á\83\9dá\83\9cá\83¬á\83§á\83£á\83\90á\83\9aა",
        "passwordreset-text-one": "შეავსეთ ეს ფორმა, რათა კვლავ დააყენოთ თქვენი პაროლი.",
        "passwordreset-text-many": "{{PLURAL:$1|ელ.ფოსტაზე დროებითი პაროლის მისაღებად შეავსეთ ერთ-ერთი ველი.}}",
        "passwordreset-disabled": "ამ ვიკიში პაროლის კვლავ დაყენების ფუნქცია გამორთულია.",
        "resettokens-done": "ჟეტონების ჩამოყრა.",
        "resettokens-resetbutton": "არჩეული ჟეტონების ჩამოყრა",
        "bold_sample": "რუმე ტექსტი",
-       "bold_tip": "რუმე ტექსტ",
+       "bold_tip": "რუმე ტექსტ",
        "italic_sample": "ელართელი ტექსტი",
        "italic_tip": "ელართელი ტექსტი",
        "link_sample": "რცხუშ ჯოხო",
        "image_tip": "დინოხუნაფილი ფაილი",
        "media_tip": "ფაილიშ რცხუ",
        "sig_tip": "თქვან ხეშმოჭარა დო ბორჯი",
-       "hr_tip": "á\83°á\83\9dá\83 á\83\98á\83\96á\83\9dá\83\9cá\83¢á\83\90á\83\9aá\83£á\83 á\83\98 á\83¦á\83\9dá\83\96á\83\98 (á\83\95á\83\90á\83\92á\83\98á\83\9bá\83\98á\83 á\83\98á\83\9cá\83£á\83\90á\83\97 á\83\91á\83®á\83¨ირას)",
+       "hr_tip": "á\83°á\83\9dá\83 á\83\98á\83\96á\83\9dá\83\9cá\83¢á\83\90á\83\9aá\83£á\83 á\83\98 á\83¦á\83\9dá\83\96á\83\98 (á\83\95á\83\90á\83\92á\83\98á\83\9bá\83\98á\83 á\83\98á\83\9cá\83£á\83\90á\83\97 á\83¨á\83®ირას)",
        "summary": "რეზიუმე:",
        "subject": "თემა/დუდლანდარი:",
        "minoredit": "თენა რე ჭიჭე რედაქტირაფა",
        "showpreview": "ქაძირე გიწოთოლორაფა",
        "showdiff": "თირაფეფიშ ძირაფა",
        "blankarticle": "გაფრთხილება: გვერდი, რომელსაც ქმნით, ცარიელია. თუკი კვლავ დააჭერთ ღილაკს \"{{int:savearticle}}\", გვერდი შეიქმნება შემცვლელობის გარეშე.",
-       "anoneditwarning": "<strong>á\83\92á\83\90á\83¤á\83 á\83\97á\83®á\83\98á\83\9aá\83\94á\83\91á\83\90:</strong> á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\90á\83  á\83®á\83\90á\83 á\83\97 á\83\90á\83\95á\83¢á\83\9dá\83 á\83\98á\83\96á\83\98á\83 á\83\94á\83\91á\83£á\83\9aá\83\98. á\83\97á\83¥á\83\95á\83\94á\83\9cá\83\98 IP á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\98 á\83¡á\83\90á\83¯á\83\90á\83 á\83\9dá\83\93 á\83®á\83\98á\83\9aá\83£á\83\9aá\83\98 á\83\98á\83¥á\83\9cá\83\94á\83\91á\83\90, á\83\97á\83£á\83\99á\83\98 á\83\92á\83\90á\83\9cá\83\90á\83®á\83\9dá\83 á\83ªá\83\98á\83\94á\83\9aá\83\94á\83\91á\83\97 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\90á\83¡. á\83\97á\83£ á\83\97á\83¥á\83\95á\83\94á\83\9c á\83\92á\83\90á\83\98á\83\95á\83\9aá\83\98á\83\97 <strong>[$1 á\83\90á\83\95á\83¢á\83\9dá\83 á\83\98á\83\96á\83\90á\83ªá\83\98á\83\90á\83¡]</strong> á\83\90á\83\9c <strong>[$2 á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83\97 á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83¡]</strong>, á\83¡á\83®á\83\95á\83\90 á\83£á\83\9eá\83\98á\83 á\83\90á\83¢á\83\94á\83¡á\83\9dá\83\91á\83\94á\83\91á\83\97á\83\90á\83\9c á\83\94á\83 á\83\97á\83\90á\83\93, á\83\97á\83¥á\83\95á\83\94á\83\9cá\83\98 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\94á\83\91á\83\94á\83\91á\83\98 á\83\93á\83\90á\83£á\83\99á\83\90á\83\95á\83¨á\83\98á\83 á\83\93á\83\94á\83\91á\83\90 á\83\97á\83¥á\83\95á\83\94á\83\9cá\83¡ á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83¡á\83\90á\83®á\83\94á\83\9aს.",
+       "anoneditwarning": "<strong>á\83\92á\83\90á\83\97á\83®á\83\98á\83\9aá\83\94á\83\91á\83\90:</strong> á\83\97á\83¥á\83\95á\83\90 á\83\95á\83\90á\83 á\83\94á\83\97 á\83\90á\83\95á\83¢á\83\9dá\83 á\83\98á\83\96á\83\90á\83¤á\83\98á\83\9aá\83\98. á\83\97á\83¥á\83\90á\83\9cá\83\98 IP á\83\9bá\83\98á\83\9dá\83¬á\83£á\83 á\83\90á\83¤á\83£ á\83¡á\83\90á\83\90á\83 á\83«á\83\9dá\83\97 á\83\98á\83«á\83\98á\83 á\83\90á\83¤á\83\94á\83\93á\83\90á\83¡ á\83\98á\83¸á\83\98, á\83\97á\83£ á\83\97á\83¥á\83\95á\83\90 á\83¨á\83\94á\83\90á\83¡á\83 á\83£á\83\9aá\83\94á\83\9cá\83\97 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\90á\83¡. á\83\97á\83£ á\83\97á\83¥á\83\95á\83\90 á\83\92á\83\94á\83\9cá\83\99á\83£á\83 á\83\97 <strong>[$1 á\83\90á\83\95á\83¢á\83\9dá\83 á\83\98á\83\96á\83\90á\83ªá\83\98á\83\90á\83¡]</strong> á\83\95á\83\90á\83 á\83\93á\83\90 <strong>[$2 á\83\92á\83\9dá\83\9cá\83¬á\83§á\83£á\83\9cá\83\97 á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98á\83¡]</strong>, á\83¨á\83®á\83\95á\83\90 á\83\9cá\83\90á\83 á\83¡á\83®á\83£á\83\9cá\83\94á\83¤á\83¬á\83\99á\83·á\83\9bá\83\90 á\83\90á\83 á\83\97á\83\9d, á\83\97á\83¥á\83\95á\83\90á\83\9cá\83\98 á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\94á\83¤á\83\98 á\83¥á\83\98á\83\9bá\83\98á\83\90á\83 á\83¡á\83®á\83£ á\83\97á\83¥á\83\95á\83\90á\83\9c á\83\9bá\83\90á\83®á\83\95á\83\90á\83 á\83\94á\83\91á\83£á\83¨ á\83¯á\83\9dá\83®á\83\9dს.",
        "anonpreviewwarning": "''თქვენ არ შესულხართ სისტემაში. თქვენი IP მისამართი შეინახება გვერდის ისტორიაში. ''",
        "missingsummary": "<strong>ეხსენება:</strong> თქვენ არ მიგითითებიათ რედაქტირების რეზიუმე.\nთუ ისევ დააწკაპუნებთ შენახვაზე, თქვენი რედაქტირება რეზიუმეს გარეშე დამახსოვრდება.",
        "selfredirect": "გაფრთხილება: თქვენ გადამისამართებას იმავე გვერდზე ქმნით. შესაძლოა, თქვენ გადამისამართებისთვის აირჩიეთ არასწორი სამიზნე გვერდი ან არედაქტირებთ არასამიზნე გვერდს. \n\nთუ თქვენ კიდევ ერთხელ დააჭერთ ღილაკს \"{{int:savearticle}}\", გადამისამართება შეიქმნება.",
        "newarticle": "(ახალ)",
        "newarticletext": "თქვა გეჸუნელჷ რეთ ხასჷლაშ რცხის, ნამუთ დიო ვა რე დორცხუაფილი.\nხასჷლაშ დარცხუაფალო გემშეჸონით ტექსტი თუდონ ოჭკორიეშა. (ქოძირით[$1 მოხვარაშ ხასჷლა] უმოს ინფორმაციაშო).\nთე ხასჷლას ჩილათირო მოხვადით–და, ქიგუნჭირით თქვან ბრაუზერიშ კონჭის '''უკახალე'''.\"",
        "anontalkpagetext": "----\n<em>ეს არის ანონიმური მომხმარებლის განხილვის გვერდი, რომელსაც ანგარიში ჯერ არ შეუქმნია ან არ იყენებს მას.</em>\n\nშესაბამისად, ჩვენ მისი ციფრული IP მისამართი უნდა გამოვიყენოთ მისი იდენტიფიცირებისთვის.\n\nამგვარი მისამართი შეიძლება რამდენიმე მომხმარებელმა გამოიყენოს.\n\nთუ თქვენ ანონიმური მომხმარებელი ხართ და თვლით, რომ სხვისთვის გამიზნული მითითება მიიღეთ, გთხოვთ [[Special:UserLogin/signup|შექმენით ანგარიში ან დარეგისტრირდით]] მომავალში გაუგებრობის თავიდან ასაცილებლად.",
-       "noarticletext": "á\83\90á\83¡á\83\94 á\83\97á\83\94 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¡ á\83¢á\83\94á\83¥á\83¡á\83¢ á\83\95á\83\90 á\83 á\83\94. \ná\83\97á\83¥á\83\95á\83\90 á\83¨á\83\94á\83\98á\83\9aá\83\94á\83\91á\83£á\83\9cá\83\90 [[Special:Search/{{PAGENAME}}|á\83\92á\83\9dá\83 á\83\90á\83\97 á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¨ á\83¯á\83\9dá\83®á\83\9d]] á\83¨á\83®á\83\95á\83\90 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤á\83¡,\n<span class=\\\"plainlinks\\\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} á\83\93á\83\9dá\83\92á\83\9dá\83 á\83\90á\83\97 á\83\9bá\83\94á\83®á\83£á\83¯á\83\90á\83¤á\83\98á\83\9a á\83\9fá\83£á\83 á\83\9cá\83\90á\83\9aá\83\94á\83¤],\ná\83\95á\83\90á\83 á\83\90 [{{fullurl:{{FULLPAGENAME}}|action=edit}} á\83\93á\83\98á\83­á\83§á\83\90á\83\97 á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83\98ლაშ რედაქტირაფა]</span>.",
+       "noarticletext": "á\83\90á\83¡á\83\94 á\83\97á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¡ á\83¢á\83\94á\83¥á\83¡á\83¢á\83\98 á\83\95á\83\90 á\83 á\83\94. \ná\83\97á\83¥á\83\95á\83\90 á\83¨á\83\94á\83\98á\83\9aá\83\94á\83\91á\83£á\83\9cá\83\90 [[Special:Search/{{PAGENAME}}|á\83\92á\83\9dá\83 á\83\90á\83\97 á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¨ á\83¯á\83\9dá\83®á\83\9d]] á\83¨á\83®á\83\95á\83\90 á\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83¡,\n<span class=\\\"plainlinks\\\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} á\83\93á\83\9dá\83\92á\83\9dá\83 á\83\90á\83\97 á\83\9bá\83\94á\83®á\83£á\83¯á\83\90á\83¤á\83\98á\83\9a á\83\9fá\83£á\83 á\83\9cá\83\90á\83\9aá\83\94á\83¤á\83\98],\ná\83\95á\83\90á\83 á\83\90 [{{fullurl:{{FULLPAGENAME}}|action=edit}} á\83\93á\83\98á\83­á\83§á\83\90á\83\97 á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83·ლაშ რედაქტირაფა]</span>.",
        "noarticletext-nopermission": "ათე ხასჷლას ასე ტექსტი ვა რე. თქვა შეილებუნა [[Special:Search/{{PAGENAME}}|დოგორათ თე ხასჷლაშ დუდჯოხო]] შხვა ხასჷლეფს,\nვარდა <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} დოგორათ გინორცხილ ჟურნალეფი]</span>.",
        "missing-revision": "ვერსია $1 გვერდისათვის „{{FULLPAGENAME}}“ არ არსებობს.\n\nეს ჩვეულებრივ ხდება მაშინ, თუ მოძველებული ბმულით გადადიხართ გვერდზე, რომელიც წაიშალა.\nდეტალური ინფორმაცია შესაძლებელია იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლების ჟურნალში].",
        "userpage-userdoesnotexist": "მახვარებუშ ანგარიში „$1“ ვაარსებენს. დერწმუნით, ნამჷ-და დასურო გოკონა თე ანგარიშიშ დორსხუაფა ვარდა მიშათინუა.",
        "showhideselectedversions": "ჩვენება/დამალვა არჩეული ვერსიებისა",
        "editundo": "გოუქვაფა",
        "diff-empty": "(განსხვავება არ არის)",
-       "diff-multi-sameuser": "({{PLURAL:$1|á\83\94á\83 á\83\97á\83\98 á\83¨á\83£á\83\90á\83\9aá\83\94á\83\93á\83£á\83 á\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\90|$1 á\83¨á\83£á\83\90á\83\9aá\83\94á\83\93á\83£á\83 á\83\98 á\83ªá\83\95á\83\9aá\83\98á\83\9aá\83\94á\83\91á\83\94á\83\91á\83\98}} á\83\98á\83\9bá\83\90á\83\95á\83\94 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\9bá\83\98á\83\94á\83  á\83\90á\83  á\83\90á\83 á\83\98á\83¡ á\83\9cá\83\90á\83©á\83\95á\83\94á\83\9cá\83\94á\83\91ი)",
+       "diff-multi-sameuser": "({{PLURAL:$1|á\83\90á\83 á\83\97 á\83¨á\83¥á\83\90á\83¤á\83\9dá\83\9c á\83\97á\83\98á\83 á\83\90á\83¤á\83\90|$1 á\83¨á\83¥á\83\90á\83¤á\83\9dá\83\9c á\83\97á\83\98á\83 á\83\90á\83¤á\83\94á\83¤á\83\98}} á\83\99á\83\98á\83\9cá\83\94 á\83\97á\83\98 á\83\9bá\83\90á\83®á\83\95á\83\90á\83 á\83\94á\83\91á\83£á\83¨á\83\94 á\83\95á\83\90á\83 á\83\94 á\83\9cá\83\90á\83«á\83\98á\83 á\83\94á\83¤ი)",
        "diff-multi-otherusers": "(არ არის ნაჩვენები $1 მომხმარებელთა $2 შუალედ ვერსიებში)",
        "diff-multi-manyusers": "({{PLURAL:$2|ერთი მომხმარებლის|$2 მომხმარებლების}} {{PLURAL:$1|ერთი შუალედური ვერსია|$1 შუალედური ვერსიები}}, რომლებიც არ არის ნაჩვენები.)",
        "difference-missing-revision": "{{PLURAL:$2|$2 ვერსია}} ამ შედარებისათვის ($1) {{PLURAL:$2|ვერ მოიძებნა}}.\n\nეს ჩვეულებრივ ხდება მაშინ, თუ ვერსიების შედარების მოძველებული ბმულით გადადიხართ გვერდზე, რომელიც წაიშალა.\nდეტალური ინფორმაცია შესაძლებელია იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლების ჟურნალში].",
        "searchprofile-everything": "ირფელი",
        "searchprofile-advanced": "გაუჯგუშებული",
        "searchprofile-articles-tooltip": "დოგორი $1-ს",
-       "searchprofile-images-tooltip": "დოგორ ფაილეფი",
+       "searchprofile-images-tooltip": "დოგორ ფაილეფი",
        "searchprofile-everything-tooltip": "არძო ხასჷლას გორუა (ოსხუნუე ხასჷლეფიშამო)",
-       "searchprofile-advanced-tooltip": "á\83\92á\83\9dá\83 á\83£á\83\90 á\83\9bá\83\90á\83®á\83\95á\83\90á\83 á\83\94á\83\91á\83£á\83¨ á\83\92á\83\94á\83\9cá\83­á\83§ილ ჯოხოეფიშ ოფირჩას",
+       "searchprofile-advanced-tooltip": "á\83\92á\83\9dá\83 á\83£á\83\90 á\83\9bá\83\90á\83®á\83\95á\83\90á\83 á\83\94á\83\91á\83£á\83¨ á\83\9bá\83\9dá\83©á\83\90á\83\9bილ ჯოხოეფიშ ოფირჩას",
        "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-redirect": "(გინოწურაფა $1)",
        "right-bot": "ჩაითვალო ავტომატურ პროცესად",
        "right-nominornewtalk": "მცირე რედაქტირებების არ ქონის შემთხვევაში ჩაირთვება ახალ შეტყობინებათა რეჟიმი",
        "right-apihighlimits": "ნაკლები შეზღუდვა API-მოთხოვნებზე",
-       "right-writeapi": "API-á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83§á\83\94á\83\9cá\83\94á\83\91á\83\90 á\83©á\83\90á\83¬á\83\94á\83 á\83\98á\83¡á\83\97á\83\95á\83\98á\83¡",
+       "right-writeapi": "API-á\83¡ á\83\92á\83\98á\83\9bá\83\9dá\83 á\83\98á\83\9cá\83\90á\83¤á\83\90 á\83\93á\83\98á\83\9cá\83\90á\83­á\83\90á\83 á\83\90á\83\9aá\83\9d",
        "right-delete": "ხასილაშ ლასუა",
        "right-bigdelete": "გრძელი ისტორიის გვერდების წაშლა",
        "right-deletelogentry": "ჟურნალის კონკრეტული ჩანაწერების წაშლა და აღდგენა",
        "recentchanges-label-unpatrolled": "თე რედაქტირაფა დიო ხოლო ვა რე პატრულირაფირი",
        "recentchanges-label-plusminus": "თირაფეფიშ ზჷმა ბაიტეფს",
        "recentchanges-legend-heading": "'''ლეგენდა:'''",
-       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (á\83\98á\83®. á\83\90á\83\92á\83 á\83\94á\83\97á\83\95á\83\94 [[Special:NewPages|á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98á\83¡ á\83¡á\83\98á\83\90]])",
+       "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (á\83\97á\83\90á\83¨á\83\9cá\83\94á\83¨á\83\94 á\83¥á\83\9dá\83«á\83\98á\83 á\83\98á\83\97 [[Special:NewPages|á\83\90á\83®á\83\90á\83\9a á\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83\98á\83¨ á\83\94á\83 á\83\99á\83\94á\83\91á\83£á\83\9aá\83\98]])",
        "rcnotefrom": "ქვემოთ {{PLURAL:$5|ნაჩვენებია ცვლილება|ნაჩვენებია ცვლილებები}} <strong>$3, $4</strong>-დან (ნაჩვენებია არაუმეტეს <strong>$1</strong>).",
        "rclistfrom": "ახალ თირაფეფიშ ძირაფა დოჭყაფილ $3 $2-შე",
        "rcshowhideminor": "$1 ჭიჭე რედაქტირაფეფი",
        "rcshowhidebots": "ბოტეფიშ  $1",
        "rcshowhidebots-show": "ძირაფა",
        "rcshowhidebots-hide": "ტყობინაფა",
-       "rcshowhideliu": "$1 á\83 á\83\94á\83\92á\83\98á\83¡á\83¢á\83 á\83\98á\83 á\83\94á\83\91á\83£á\83\9aá\83\98 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aá\83\98",
+       "rcshowhideliu": "$1 á\83 á\83\94á\83\92á\83\98á\83¡á\83¢á\83 á\83\98á\83 á\83\90á\83¤á\83\98á\83\9aá\83\98 á\83\9bá\83\9dá\83®á\83\95á\83\90á\83 á\83\94",
        "rcshowhideliu-show": "ძირაფა",
        "rcshowhideliu-hide": "ტყობინაფა",
        "rcshowhideanons": "$1 ანონიმურ მახვარებუეფი",
        "rcshowhidemine": "ჩქიმ რედაქტირაფეფიშ $1",
        "rcshowhidemine-show": "ძირაფა",
        "rcshowhidemine-hide": "ტყობინაფა",
+       "rcshowhidecategorization": "$1 ხასჷლაშ კატეროტიზაცია",
+       "rcshowhidecategorization-show": "ძირაფა",
+       "rcshowhidecategorization-hide": "ტყობინაფა",
        "rclinks": "ეკონია $2 დღას ღოლამირ ეკონია $1 თირაფეფიშ ძირაფა <br />$3",
        "diff": "შხვანერობა",
        "hist": "ისტ.",
        "newpageletter": "ახ.",
        "boteditletter": "ბ",
        "number_of_watching_users_pageview": "[$1 {{PLURAL:$1|მომხმარებლის|მომხმარებლის}} კონტროლი]",
-       "rc_categories": "á\83\9bá\83®á\83\9dá\83\9aá\83\9dá\83\93 á\83\99á\83\90á\83¢á\83\94á\83\92á\83\9dá\83 á\83\98á\83\94á\83\91á\83\98á\83\93á\83\90á\83\9c (á\83\92á\83\90á\83\9cá\83\90á\83ªá\83\90á\83\9aá\83\99á\83\94á\83\95á\83\94á\83\97 \"|\"-á\83\98á\83¡ á\83\9bá\83\98á\83®á\83\94á\83\93á\83\95á\83\98თ)",
-       "rc_categories_any": "á\83\9cá\83\94á\83\91á\83\98á\83¡á\83\9bá\83\98ერი",
+       "rc_categories": "á\83®á\83\95á\83\90á\83\9aá\83\9d á\83\99á\83\90á\83¢á\83\94á\83\92á\83\9dá\83 á\83\98á\83\94á\83¤á\83¨á\83\94 (á\83\92á\83\94á\83\92á\83¨á\83\90á\83 á\83\97á\83\98á\83\97 \"|\"-á\83\98á\83¨ á\83\9bá\83\94á\83¯á\83\98á\83\9cá\83\90თ)",
+       "rc_categories_any": "á\83\90á\83 á\83«á\83\9dá\83\9cერი",
        "rc-change-size-new": "ზჷმა თირუაშ უკული რე: {{PLURAL:$1|ბაიტი|ბაიტი}}",
        "newsectionsummary": "/* $1 */ ახალი სექცია",
        "rc-enhanced-expand": "დეტალების  ჩვენება",
        "rc-enhanced-hide": "დეტალეფიშ ტყობინაფა",
        "rc-old-title": "თავდაპირველად შექმნილი როგორც „$1“",
-       "recentchangeslinked": "აკოხვალამირ თირაფეფ",
+       "recentchangeslinked": "აკოხვალამირ თირაფეფ",
        "recentchangeslinked-feed": "აკოხვალამირ თირაფეფ",
        "recentchangeslinked-toolbox": "აკოხვალამირ თირაფეფი",
        "recentchangeslinked-title": "\"$1\"-შა მებუნაფილ თირაფეფი",
        "recentchangeslinked-summary": "თენა რე მეწურაფილი ხასჷლაწკჷმა (ვარა მეწურაფილი კატეგორიაშ მაკათურეფწკჷმა) მერსხუაფილი ხასჷლეფს ეკონია ბორჯის ღოლამირი თირაფეფიშ ერკებული. ხასჷლეფი [[Special:Watchlist|თქვანი კონტროლიშ ერკებულს]] გჷმორთილი რე '''ფსქელას'''.\"",
        "recentchangeslinked-page": "ხასილაშ ჯოხო:",
        "recentchangeslinked-to": "მანგიერო ქაძირე ათე ხასილაშა მერცხილ ხასილეფშა მიშაღალირ თირაფეფ",
+       "recentchanges-page-added-to-category": "[[:$1]] გეძინელჷ რე კატეგორიას",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]] დო {{PLURAL:$2|ართ ხასჷლა|$2 ხასჷლა}} გეძინელ რე კატეგორიას",
+       "recentchanges-page-removed-from-category": "[[:$1]] ლასირი რე კატეგორიაშე",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]] დო {{PLURAL:$2|ართ ხასჷლა|$2 ხასჷლა}} ლასირი რე კატეგორიაშე",
        "upload": "ფაილიშ ეხარგუა",
        "uploadbtn": "ფაილიშ გეთება",
        "reuploaddesc": "გააუქმეთ ატვირთვა და დაუბრუნდით ატვირთვის ფორმას",
        "upload-too-many-redirects": "URL შეიცავს ძალიან ბევრ გადამისამართებებს",
        "upload-http-error": "მოხდა HTTP შეცდომა: $1",
        "upload-copy-upload-invalid-domain": "ამ დომენში ატვირთვების კოპირება არ არის ხელმისაწვდომი.",
+       "upload-dialog-title": "გეხარგე ფაილეფი",
+       "upload-dialog-error": "ჩილათაქ მოხვადჷ",
+       "upload-dialog-button-cancel": "გოუქვაფა",
+       "upload-dialog-button-done": "ღოლამირჷ რე",
+       "upload-dialog-button-save": "ჩუალა",
+       "upload-dialog-button-upload": "ეხარგუა",
+       "upload-dialog-label-select-file": "გეგშაგორით ფაილი",
+       "upload-dialog-label-infoform-title": "დეტალეფი",
+       "upload-dialog-label-infoform-name": "ჯოხო",
+       "upload-dialog-label-infoform-description": "ეჭარუა",
+       "upload-dialog-label-usage-title": "გიმორინაფა",
+       "upload-dialog-label-usage-filename": "ფაილიშ ჯოხო",
        "backend-fail-stream": "ფაილი $1 ტრანსლირება ვერ მოხერხდა.",
        "backend-fail-backup": "ფაილი $1 სარეზერვო ასლის გაკეთება ვერ მოხერხდა.",
        "backend-fail-notexists": "ფაილი $1 არ არსებობს.",
        "filehist-filesize": "ფაილიშ ზომა",
        "filehist-comment": "კომენტარი",
        "imagelinks": "ფაილი გჷმორინაფილი რე",
-       "linkstoimage": "á\83\92á\83\94á\83§â\80\99á\83\95á\83\94á\83\9cá\83¯á\83\98 {{PLURAL:$1|á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤}} მერცხილ რე თე ფაილშა",
+       "linkstoimage": "á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯á\83\98 {{PLURAL:$1|á\83®á\83\90á\83¡á\83·á\83\9aá\83\90\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83\98}} მერცხილ რე თე ფაილშა",
        "nolinkstoimage": "ვა რე თე ფაილწკჷმა მერსხილი ხასჷლეფი.",
        "sharedupload": "თე ფაილ რე $1-შე დო შილებე თენა შხვა პროექტეფც ხოლო გიმირინაუფუდასინ",
        "sharedupload-desc-here": "თე ფაილი რე $1-შე დო შილებე გჷმორნაფილქ იჸუას შხვა პროექტეფს. თეშ ეჭარუა [$2 ფაილიშ ეჭარუაშ ხასჷლა] თუდოლე რე მოჩამილი.",
        "apihelp": "API დახმარება",
        "apihelp-no-such-module": "მოდული „$1“ ვერ მოიძებნა.",
        "booksources": "წინგიშ წყუეფი",
-       "booksources-search-legend": "á\83¬á\83\98á\83\92á\83\9cიშ წყუშ გორუა",
+       "booksources-search-legend": "á\83¬á\83\98á\83\9cá\83\92იშ წყუშ გორუა",
        "booksources-search": "გორუა",
        "booksources-text": "ქვემოთ არის ვებ გვერდების ბმულების სია სადაც იყიდება ახალი და ნახმარი წიგნები, და შესაძლოა შეიცავდნენ დამატებით ინფორმაციას წიგნების შესახებ, რომლებსაც ეძებთ:",
        "booksources-invalid-isbn": "თქვენს მიერ მითითებული ISBN, შეცდომას შეიცავს.  შეამოწმეთ, თუ თავდაპირველი წყარო სწორადაა აკრეფილი.",
        "watchlist": "ჩქიმ ოკონტროლებულეფიშ ერკებულ",
        "mywatchlist": "ჩქიმ კონტროლიშ ერკებულ",
        "watchlistfor2": "$1 $2-ს",
-       "addedwatchtext": "\"[[:$1]]\" á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¥ á\83\92á\83\94á\83«á\83\98á\83\9cá\83\94á\83\9aá\83¥ á\83\98á\83§â\80\99á\83£ á\83\97á\83¥á\83\95á\83\90á\83\9c [[Special:Watchlist|watchlist]]â\80\93á\83¨á\83\90.\ná\83\97á\83\94 á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¨á\83\90 á\83\93á\83\9d á\83\97á\83\94á\83¬á\83\99á\83£á\83\9bá\83\90 á\83\90á\83¡á\83\9dá\83ªá\83\98á\83 á\83\94á\83\91á\83£á\83\9a á\83¡á\83®á\83£á\83\9cá\83£á\83\90á\83¨ á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90á\83¨á\83\90 á\83\9bá\83£á\83\9bá\83\90á\83£á\83\9aá\83\90á\83  á\83\97á\83\98á\83 á\83\90á\83¤á\83\94á\83¤ á\83\9bá\83\9dá\83©á\83\90á\83\9bá\83\98á\83\9a á\83\98á\83§â\80\99á\83\98 á\83\97á\83\94á\83¥ á\83\93á\83\9d á\83\97á\83¥á\83\95á\83\90 á\83\92á\83\94á\83\92á\83\94á\83\90á\83\93á\83\95á\83\98á\83\9aá\83\90á\83\9c á\83\97á\83\98á\83¨ á\83\92á\83\98á\83¨á\83\90á\83\92á\83\9dá\83 á\83£á\83\90á\83¥á\83\98á\83\9c, á\83®á\83\90á\83¡á\83\98á\83\9aá\83\90 á\83\92á\83£á\83\9bá\83\9dá\83 á\83©á\83¥á\83\98á\83\9cá\83\93á\83£ '''á\83 á\83£á\83\9bá\83\94á\83\97'''  [[Special:RecentChanges|list of recent changes]]â\80\93á\83¡.\"",
-       "removedwatchtext": "ათე ხასილაქ \"[[:$1]]\" ლასირქ იყ’უ  [[Special:Watchlist|თქვნ კონტროლიშ ერკებულშე]].",
+       "addedwatchtext": "\"[[:$1]]\" á\83\93á\83\9d á\83\97á\83\98á\83¨ á\83\9dá\83¡á\83®á\83£á\83\9cá\83£á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¥ á\83\92á\83\94á\83«á\83\98á\83\9cá\83\94á\83\9aá\83¥ á\83\98á\83¸á\83£ á\83\97á\83¥á\83\95á\83\90á\83\9c [[Special:Watchlist|watchlist]]â\80\93á\83¨á\83\90.",
+       "removedwatchtext": "\"[[:$1]]\" დო თიშ ოსხუნუე ხასჷლაქ ლასირქ იჸუ  [[Special:Watchlist|თქვნ კონტროლიშ ერკებულშე]].",
        "watch": "გაკონტროლი",
        "watchthispage": "თე ხასილაშ კონტროლ",
        "unwatch": "კონტროლიშ გოუქვაფა",
        "restriction-level-all": "ნებისმიერი დონე",
        "undelete": "აჩვენე წაშლილი გვერდები",
        "undeletepage": "იხილეთ და აღადგინეთ წაშლილი გვერდები",
+       "undeleterevisions": "$1 {{PLURAL:$1|ვერსია|ვერსია}} ლასირი რე",
        "undeletebtn": "ახალშო ეკონწყუალა",
        "undeletelink": "ძირაფა/ეკონწყუალა",
        "undeleteviewlink": "ძირაფა",
        "undelete-search-submit": "გორუა",
        "namespace": "ჯოხოეფიშ ოფირჩა:",
        "invert": "არძო, მერჩქინელიშ მოხ",
+       "namespace_association": "ელმაჸვენჯი ჯოხოეფიშ ოფირჩა",
        "blanknamespace": "(დუდ)",
        "contributions": "{{GENDER:$1|მახვარებუშ}} მიშნაღელ თია",
        "contributions-title": "$1-შა მახვარებუშ მიშაღალირ თია",
        "whatlinkshere": "სოვრეშე რე თე ხასჷლა წურაფილი",
        "whatlinkshere-title": "ხასჷლეფი, ნამუთ გინორცხილ რე $1-შა",
        "whatlinkshere-page": "ხასჷლა:",
-       "linkshere": "á\83\92á\83\94á\83§â\80\99á\83\95á\83\94á\83\9cá\83¯ á\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤ გინარცხუაფუ '''[[:$1]]'''-ეფს",
+       "linkshere": "á\83\92á\83\94á\83¸á\83\95á\83\94á\83\9cá\83¯ á\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83\98 გინარცხუაფუ '''[[:$1]]'''-ეფს",
        "nolinkshere": "ნამთინ ხასილა ვა რე გინორცხილ '''[[:$1]]'''-შა.",
        "isredirect": "გინოწურაფაშ ხასჷლა",
        "istemplate": "ტრანსკლუზია",
        "isimage": "ფაილიშ რცხი",
-       "whatlinkshere-prev": "{{PLURAL:$1|á\83¬á\83\9dá\83®á\83\9dá\83\9aá\83\94á\83\9c\83¬á\83\9dá\83®á\83\9dá\83\9aá\83\94ნ $1}}",
+       "whatlinkshere-prev": "{{PLURAL:$1|á\83\99á\83\98á\83\9cá\83\9dá\83®á\83\98á\83\90á\83\9c\83\99á\83\98á\83\9cá\83\9dá\83®á\83\98á\83\90ნ $1}}",
        "whatlinkshere-next": "{{PLURAL:$1|უკულიან|უკულიან $1}}",
        "whatlinkshere-links": "← რცხიეფ",
        "whatlinkshere-hideredirs": "გინოწურაფა $1",
        "import-comment": "კომენტარეფი:",
        "importlogpage": "იმპორტიშ ჟურნალ",
        "tooltip-pt-userpage": "თქვანი მახვარებუშ ხასჷლა",
-       "tooltip-pt-mytalk": "თქვანი სხუნუაშ ხასილა",
-       "tooltip-pt-preferences": "ჩქიმ კონფიგურაციეფ",
-       "tooltip-pt-watchlist": "á\83®á\83\90á\83¡á\83\98á\83\9aá\83\94á\83¤á\83\98á\83¨ á\83\94á\83 á\83\99á\83\94á\83\91á\83£á\83\9a, á\83\9cá\83\90á\83\9bá\83£á\83\97á\83£á\83¨ á\83\9bá\83\9dá\83\9cá\83\98á\83¢á\83\9dá\83 á\83\98á\83\9cá\83\92á\83\98á\83¡ á\83\9dá\83 á\83\97á\83£á\83\97 á\83\97á\83\98á\83 á\83\90á\83¤á\83\90á\83¨ á\83\9bá\83\98á\83\96á\83\90á\83\9cით",
-       "tooltip-pt-mycontris": "თქვან მიშნაღელ თიეფიშ ერკებულ",
+       "tooltip-pt-mytalk": "თქვან სხუნუაშ ხასჷლა",
+       "tooltip-pt-preferences": "ჩქიმ კონფიგურაციეფ",
+       "tooltip-pt-watchlist": "á\83®á\83\90á\83¡á\83·á\83\9aá\83\94á\83¤á\83\98á\83¨ á\83\94á\83 á\83\99á\83\94á\83\91á\83£á\83\9a, á\83\9cá\83\90á\83\9bá\83£á\83¨ á\83\9bá\83\9dá\83\9cá\83\98á\83¢á\83\9dá\83 á\83\98á\83\9cá\83\92á\83\98á\83¡ á\83\9dá\83 á\83\97á\83£á\83\97 á\83\97á\83\98á\83 á\83\90á\83¤á\83\90á\83¨ á\83¦á\83\90á\83\9cá\83\99ით",
+       "tooltip-pt-mycontris": "თქვან მიშნაღელ თიეფიშ ერკებულ",
        "tooltip-pt-login": "ჯგირ იჸი გემშურთუ–და, მარა თენა ვა რე უციო",
        "tooltip-pt-logout": "გიშულა",
        "tooltip-pt-createaccount": "ჩქი გიზალუთ, გონწყათ ანგარიში დო გენშართათ სისტემაშა; მარა თენა ვა რე უციო",
        "tooltip-ca-talk": "დინორეშ ხასჷლაშ სხუნუა",
-       "tooltip-ca-edit": "á\83\97á\83¥á\83\95á\83\90 á\83¨á\83\94á\83\98á\83\9aá\83\94á\83\91á\83\9cá\83\90 á\83\97á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¨ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\90. á\83 á\83\97á\83®á\83\98á\83\9cá\83\97, á\83\92á\83\94á\83£á\83\9cá\83­á\83\98á\83 á\83\98á\83\97 á\83\92á\83\98á\83¬á\83\9dá\83\97á\83\9dá\83\9aá\83\9dá\83 á\83\90á\83¤á\83\90á\83¨ á\83\99á\83\9dá\83\9cá\83­á\83\98á\83¡ á\83¡á\83\9dá\83\98á\83¨á\83\90á\83® á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¡ á\83©á\83£á\83\90á\83\9cá\83\93á\83\90á\83\97á\83\98á\83\9c",
+       "tooltip-ca-edit": "á\83\97á\83\94 á\83®á\83\90á\83¡á\83·á\83\9aá\83\90á\83¨ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\90",
        "tooltip-ca-addsection": "ქიდიჭყით ახალ სექცია",
        "tooltip-ca-viewsource": "თე ხასჷლა თხილერი რე. \nშეგილებუნა ძირათ თეშ წყუ.",
        "tooltip-ca-history": "თე ხასჷლაშა მიშაღალირი თირაფეფი",
        "tooltip-t-whatlinkshere": "არძო ვიკი ხასჷლაშ ერკებული, ნამუდგა თაქ იწურუანსინ",
        "tooltip-t-recentchangeslinked": "თე ხასჷლაწკჷმა მერსხილ ხასჷლეფშა ასერდე მიშაღალირი თირაფეფი",
        "tooltip-feed-rss": "მოჩამილი ხასილაშ RSS არხიშ ტრანსლაცია",
-       "tooltip-feed-atom": "á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83\98ლაშ ატომ არხიშ ტრანსლაცია",
+       "tooltip-feed-atom": "á\83\90á\83\97á\83\94 á\83®á\83\90á\83¡á\83·ლაშ ატომ არხიშ ტრანსლაცია",
        "tooltip-t-contributions": "თე მახვარებუშ მიშაღალირ თიაშ ერკებულიშ ძირაფა",
        "tooltip-t-emailuser": "მიდუჯღონით ელ.ფოშტა ათე მახვარებუს",
        "tooltip-t-upload": "გეხარგე ფაილეფი",
        "tooltip-ca-nstab-image": "ფაილიშ ხასჷლაშ ძირაფა",
        "tooltip-ca-nstab-template": "თანგიშ ძირაფა",
        "tooltip-ca-nstab-help": "ქოძირეთ დახვარებაშ გვერდ",
-       "tooltip-ca-nstab-category": "á\83®á\83\90á\83¡á\83\98ლაშ კატეგორიაშ ძირაფა",
+       "tooltip-ca-nstab-category": "á\83®á\83\90á\83¡á\83·ლაშ კატეგორიაშ ძირაფა",
        "tooltip-minoredit": "ქიმიოღანკი, მუჭოთ ჭიჭე რედაქტირაფა [alt-i]",
        "tooltip-save": "თირაფეფიშ ჩუალა",
        "tooltip-preview": "გეგნაჯინით თირაფეფს დო რთხინთ, თაშ ქოღოლათ სოიშახ თირაფეფს ჩუანდათინ! [alt-p]",
        "tooltip-compareselectedversions": "ქოძირით თე ხასილაშ ჟირ გიშაგორილ ვერსიაშ შხვანერობა",
        "tooltip-watch": "თე ხასილაშ გეძინა თქვან ოკონტროლე ერკებულშა [alt-w]",
        "tooltip-rollback": "\"დორთინა\" ათე ხასილაშა ეკონია გინმახანდეშ ნაღოლემ თირაფას(ეფს) გოუქვენს ართ გენჭირათ",
-       "tooltip-undo": "\"á\83\92á\83\9dá\83£á\83¥á\83\95á\83\90á\83¤á\83\90\" á\83\9bá\83\98á\83¨á\83\90á\83¦á\83\90á\83\9aá\83\98á\83  á\83\97á\83\98á\83 á\83\90á\83¤á\83\94á\83¤á\83¡ á\83\92á\83\9dá\83£á\83¥á\83\95á\83\94á\83\9cá\83¡ á\83\93á\83\9d á\83\92á\83£á\83\97á\83\9bá\83\9dá\83\9cá\83¬á\83§á\83£á\83\9cá\83¡ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\90á\83¨ á\83¤á\83\9dá\83 á\83\9bá\83\90á\83¡ á\83\92á\83\98á\83¬á\83\9dá\83\97á\83\9dá\83\9aá\83\9dá\83 á\83\90á\83¤á\83\90á\83¨ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83¡. á\83\97á\83\94á\83\9cá\83\90 á\83¨á\83\94á\83¡á\83\90á\83«á\83\9aá\83\94á\83\91á\83\9aá\83\9dá\83\91á\83\90á\83¡ á\83\98á\83 á\83«á\83\94á\83\9cá\83¡ á\83 á\83\94á\83\96á\83\98á\83£á\83\9bá\83\94á\83¡ á\83¡á\83\90á\83\9bá\83\90á\83\9cá\83¯á\83\94á\83\9aá\83¥ á\83\98á\83§â\80\99á\83£á\83\90á\83¡ á\83\93á\83\90á\83\99á\83\9dá\83\9cá\83\99á\83 á\83\94á\83¢á\83\94á\83\91á\83£ლქინ.",
+       "tooltip-undo": "\"á\83\92á\83\9dá\83£á\83¥á\83\95á\83\90á\83¤á\83\90\" á\83\9bá\83\98á\83¨á\83\90á\83¦á\83\90á\83\9aá\83\98á\83  á\83\97á\83\98á\83 á\83\90á\83¤á\83\94á\83¤á\83¡ á\83\92á\83\90á\83£á\83¥á\83\95á\83\94á\83\9cá\83¡ á\83\93á\83\9d á\83\92á\83\9dá\83\9cá\83¬á\83§á\83£á\83\9cá\83¡ á\83 á\83\94á\83\93á\83\90á\83¥á\83¢á\83\98á\83 á\83\90á\83¤á\83\90á\83¨ á\83¤á\83\9dá\83 á\83\9bá\83\90á\83¡ á\83\92á\83\98á\83¬á\83\9dá\83\97á\83\9dá\83\9aá\83\9dá\83 á\83\90á\83¤á\83\90á\83¨ á\83 á\83\94á\83\9fá\83\98á\83\9bá\83¡. á\83\97á\83\94á\83\9cá\83\90 á\83¨á\83\94á\83\9aá\83\94á\83\91á\83£á\83\90á\83¡ á\83\98á\83 á\83«á\83\94á\83\9cá\83¡ á\83 á\83\94á\83\96á\83\98á\83£á\83\9bá\83\94á\83¡ á\83¡á\83\90á\83\9bá\83\90á\83\9cá\83¯á\83\94á\83\9aá\83¥ á\83\98á\83¸á\83£á\83\90á\83¡ á\83\93á\83\9dá\83\99á\83\9dá\83\9cá\83\99á\83 á\83\94á\83¢á\83\90á\83¤á\83\98ლქინ.",
        "tooltip-summary": "კუნტა რეზიუმეშ მიშაჸონაფა",
        "simpleantispam-label": "სპამიშ სააწმარენჯო შემოწმაფა.\nთენა '''ვა''' შეამსათ!",
        "pageinfo-header-basic": "ხასჷლაშ ინფორმაცია",
        "markedaspatrolled": "მონიშნულია როგორც პატრულირებული",
        "previousdiff": "← წოხოლენ თირაფეფი",
        "nextdiff": "უახალაშ თირაფა →",
-       "file-info-size": "$1 × $2 პიქსელ, ფაილიშ ზომა: $3, MIME ტიპ: $4",
+       "file-info-size": "$1 × $2 პიქსელი, ფაილიშ ზჷმა: $3, MIME ტიპი: $4",
        "file-nohires": " უმოს მაღალ გიშაგორანჯალა ვა რე შელებუან.",
-       "svg-long-desc": "SVG ფაილ, ნომინალურო $1 × $2 პიქსელ, ფაილიშ ზიმა: $3",
-       "show-big-image": "á\83 á\83¡á\83£á\83\9aá\83\98 á\83\92á\83\98á\83¨á\83\90á\83\92á\83\9dá\83 á\83\90á\83\9cá\83¯á\83\90á\83\9aá\83\90",
+       "svg-long-desc": "SVG ფაილი, ნომინალურო $1 × $2 პიქსელი, ფაილიშ ზჷმა: $3",
+       "show-big-image": "á\83\9dá\83 á\83\98á\83\92á\83\98á\83\9cá\83\90á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98",
        "show-big-image-preview": "ზჷმა გიწოთოლორაფაშ ბორჯის: $1.",
        "show-big-image-other": "შხვა {{PLURAL:$2|გოფართაფა|გოფართაფა}}: $1.",
        "show-big-image-size": "$1 × $2 პიქსელი",
index ca13562..05e48b3 100644 (file)
        "actionthrottled": "די אַקציע איז באַגרענעצט",
        "actionthrottledtext": "אלס מאָסמיטל קעגן ספאַם, זענט איר באַגרענעצט פֿון דורכפֿירן די פעולה צופֿיל מאל אין א קורצער צײַט. ביטע פרובירט נאכאַמאָל אין א פאר מינוט.",
        "protectedpagetext": "דער בלאט איז געשיצט צו פארמיידן רעדאקטירן און אנדערע פעולות.",
-       "viewsourcetext": "איר קענט זען און קאפירן דעם מקור פון דעם בלאַט:",
-       "viewyourtext": "איר קענט באקוקן דעם מקור פון '''אייערע רעדאקטירונגען''' צו דעם בלאט:",
+       "viewsourcetext": "איר קענט זען און קאפירן דעם מקור פון דעם בלאַט.",
+       "viewyourtext": "איר קענט באקוקן דעם מקור פון <strong>אייערע רעדאקטירונגען</strong> צו דעם בלאט.",
        "protectedinterface": "דער בלאַט שטעלט צו באניצער־אויבערפלאך טעקסט פֿאַרן װײכװאַרג אויף דער דאזיקער וויקי, און איז פֿאַרשפּאַרט כּדי צו פֿאַרמײַדן װאַנדאַליזם.\nכדי צולייגן אדער ענדערן איבערזעצונגען פאר אלע וויקיס, זייט אזוי גוט ניצן [//translatewiki.net/ translatewiki.net], דער מעדיעוויקי לאקאליזאציע פראיעקט.",
        "editinginterface": "<strong>ווארענונג:</strong> איר באַאַרבעט א בלאט וואס ווערט געניצט צוצושטעלן אינטערפֿייס טעקסט פאר דער ווייכווארג.\nענדערונגען אין דעם בלאַט וועלן טוישן דאס אויסזען פון די סיסטעם מודעות פאר אנדערע באניצער אויף דער וויקי.",
        "translateinterface": "כדי צו צולייגן איבערזעצונגען פאר אלע וויקיס, זײַט אזוי גוט און ניצט [//translatewiki.net/ translatewiki.net], דער מעדיעוויקי לאקאליזירונג פראיעקט.",
        "search-category": "(קאטעגאריע $1)",
        "search-file-match": "(פאסט צו טעקע אינהאלט)",
        "search-suggest": "צי האט איר געמיינט: $1",
+       "search-rewritten": "רעזולטאטן וועגן $1 ווערן געוויזן. איר קענט אויך זוכן $2.",
        "search-interwiki-caption": "שוועסטער פראיעקטן",
        "search-interwiki-default": "רעזולטאטן פון $1:",
        "search-interwiki-more": "(נאך)",
        "boteditletter": "ב",
        "number_of_watching_users_pageview": "[{{PLURAL:$1|איין באַניצער פאַסט|$1 באַניצערס פאַסן}} אויף]",
        "rc_categories": "גרענעץ פֿאַר קאַטעגאריעס (אָפשיידן מיט \"|\")",
-       "rc_categories_any": "×\90×\9cע",
+       "rc_categories_any": "×\90×\99×\99נער ×¤×\95×\9f ×\93×\99 ×\92עק×\9c×\99×\91×¢× ע",
        "rc-change-size-new": "$1 {{PLURAL:$1|בייט|בייטן}} נאך דער ענדערונג",
        "newsectionsummary": "/* $1 */ נייע אפטיילונג",
        "rc-enhanced-expand": "צייגן דעטאלן",
        "watchlistanontext": "ביטע לאגירט ארײַן כדי צו זען אדער ענדערן בלעטער אין אייער אַכטגעבן ליסטע.",
        "watchnologin": "איר זענט נישט אַרײַנלאגירט",
        "addwatch": "צולייגן צו דער אויפֿפאַסונג ליסטע",
-       "addedwatchtext": "דער בלאט \"[[:$1]]\" איז צוגעלײגט געוואָרן צו אײַער [[Special:Watchlist|אויפֿפאַסונג ליסטע]].\n\nווײַטערע ענדערונגען צו דעם בלאַט און צו זײַן פארבינדענעם רעדן בלאַט וועלן זײַן אויסגערעכנט דארט.",
+       "addedwatchtext": "\"[[:$1]]\" און זיין רעדן־בלאַט זענען צוגעלײגט געוואָרן צו אײַער [[Special:Watchlist|אויפֿפאַסונג ליסטע]].",
        "addedwatchtext-short": "מ'האט צוגעלייגט בלאט \"$1\" צו אײַער אויפפאסן ליסטע.",
        "removewatch": "אַראָפּנעמען פון דער אויפֿפאַסונג ליסטע",
-       "removedwatchtext": "דער בלאַט \"[[:$1]]\" איז אָפּגעראַמט געוואָרן פון [[Special:Watchlist|אייער אױפֿפּאַסונג ליסטע]].",
+       "removedwatchtext": "\"[[:$1]]\" און זיין רעדן־בלאַט זענען אָפּגעראַמט געוואָרן פון [[Special:Watchlist|אייער אױפֿפּאַסונג ליסטע]].",
        "removedwatchtext-short": "מ'האט אראפגענומען בלאט \"$1\" פון אײַער אויפפאסן ליסטע.",
        "watch": "אױפֿפּאַסן",
        "watchthispage": "טוט אױפֿפּאַסן דעם בלאט",
        "undeletepagetext": "The following {{PLURAL:$1|דער פֿאלגנדער בלאַט איז געווארן אויסגעמעקט אבער קען|די פֿאלגנדע $1  בלעט ער זענען געווארן אויסגעמעקט אבער קענען}} נאך  ווערן צוריקגעשטעלט פֿון אַרכיוו.\nפֿון צײַט צו צײַט רייניגט מען אויס דעם אַרכיוו.",
        "undelete-fieldset-title": "צוריקשטעלן רעוויזיעס",
        "undeleteextrahelp": "צוריקצושטעלן די גאנצע געשיכטע, פונעם בלאט, דרוקט נישט אויף קיין איין ווערסיע, און דרוקט '''''{{int:undeletebtn}}'''''.\nצוריקצושטעלן נאר געוויסע ווערסיעס, קלויבט אויס  די רעוויזיעס וואס איר ווילט, און דרוקט אויף '''''{{int:undeletebtn}}'''''.",
-       "undeleterevisions": "{{PLURAL:$1|איין ווערסיע|$1 ווערסיעס}} אַרכיווירט",
+       "undeleterevisions": "{{PLURAL:$1|איין ווערסיע|$1 ווערסיעס}} אויסגעמעקט",
        "undeletehistory": "אויב איר שטעלט צוריק דעם בלאַט, וועלן אַלע רעוויזיעס ווערן צוריקגעשטעלט אין דער היסטאריע.\nאויב מען האט באַשאַפֿן א בלאַט מיטן זעלבן נאָמען זײַטן אויסמעקן, וועלן די צוריקגעשטעלטע רעוויזיעס זיך באַווײַזן אין דער פֿריערדיקער היסטאריע.",
        "undeletehistorynoadmin": "דער בלאַט איז געווארן אויסגעמעקט.\n די סיבה פֿאַרן אויסמעקן ווערט געוויזן אין דער רעזומע אונטן, צוזאמען מיט פרטים פון די באַניצער וואס האבן רעדאַקטירט דעם בלאַט פֿאַרן אויסמעקן.\n דער טעקסט פון די אויסגעמעקטע ווערסיעס איז דערגרײַכלעך בלויז צו סיסאפן.",
        "undelete-revision": "אויסגעמעקטע ווערסיע פֿון $1 (פֿון $4, אום $5) פֿון $3:",
        "spam_reverting": "צוריקגעשטעלט צו דער לעצטער ווערסיע אן לינקען צו $1",
        "spam_blanking": "אלע רעוויזיעס האבן לינקען צו $1, אויסליידיקן",
        "spam_deleting": "אלע רעוויזיעס האבן לינקען צו $1, אויסמעקן",
-       "simpleantispam-label": "אנטי־ספאם קאנטראלע.\n'''נישט''' אײַנגעבן קיין אײַנגאב דא!",
+       "simpleantispam-label": "אנטי־ספאם קאנטראלע. \n<strong>נישט</strong> איינגעבן קיין איינגאב דא!",
        "pageinfo-title": "אינפֿאָרמאַציע פֿאַר \"$1\"",
        "pageinfo-not-current": "קען ווייזן אינפארמאציע נאר פאר דער לויפיקער רעוויזיע.",
        "pageinfo-header-basic": "גרונטלעכע אינפֿארמאַציע",
index 775b111..d4596b8 100644 (file)
        "backend-fail-internal": "儲存後臺「$1」唔知點解出錯",
        "backend-fail-contenttype": "確定唔到存喺儲存後臺「$1」嘅內容類型。",
        "lockmanager-notlocked": "唔可以解鎖「$1」;佢都無鎖住到。",
+       "lockmanager-fail-closelock": "閂唔到鎖咗嘅$1文件",
+       "lockmanager-fail-deletelock": "刪唔到鎖咗嘅$1文件",
+       "lockmanager-fail-openlock": "打唔開鎖咗嘅$1文件",
        "zip-file-open-error": "在開啟檔案進行ZIP檢查時出錯。",
        "zip-wrong-format": "呢個唔係一個ZIP檔案。",
        "zip-bad": "呢個係不可讀嘅ZIP檔案。\n因為呢個原因,唔可以進行保安檢查。",
        "listfiles-delete": "刪除",
        "listfiles-summary": "呢個特別頁顯示全部上載咗嘅檔案。",
        "listfiles_search_for": "搵媒體名:",
+       "listfiles-userdoesnotexist": "用戶「$1」重未註冊。",
        "imgfile": "檔案",
        "listfiles": "檔案清單",
        "listfiles_thumb": "縮圖",
        "sharedupload": "呢個檔案係出自$1,可以喺其他計劃中使用。",
        "sharedupload-desc-there": "呢個檔案係出自$1,可以喺其他計劃中使用。\n更多資訊請睇[$2 檔案描述頁]。",
        "sharedupload-desc-here": "呢個檔案係出自$1,可以喺其他計劃中使用。\n佢響嗰邊嘅[$2 檔案描述頁]響下面度顯示。",
+       "sharedupload-desc-edit": "呢個文件喺$1同其他姊妹計劃度用咗,\n你可能喺佢嘅[$2文件描述頁]度改個描述先至得。",
+       "sharedupload-desc-create": "呢個文件喺$1同其他姊妹計劃度用咗,\n你可能喺佢嘅[$2文件描述頁]度改個描述先至得。",
        "filepage-nofile": "冇同名嘅檔案存在。",
        "filepage-nofile-link": "冇同名嘅檔案存在,但係你可以[$1 上載佢]。",
        "uploadnewversion-linktext": "上載呢個檔案嘅一個新版本",
        "changecontentmodel-success-title": "目錄類已經改咗",
        "changecontentmodel-success-text": "[[:$1]]目錄類已經改變咗",
        "changecontentmodel-cannot-convert": "唔可以喺[[:$1]]嘅目錄轉成$2嘅類。",
-       "changecontentmodel-title-cantexist": "$1冇呢頁,可能係刪咗或未開。",
        "logentry-contentmodel-change-revertlink": "反轉",
        "logentry-contentmodel-change-revert": "反轉",
        "protectlogpage": "保護日誌",
        "exif-dc-rights": "權",
        "exif-rating-rejected": "拒絕咗",
        "exif-isospeedratings-overflow": "超出咗65535嘅限制",
+       "exif-iimcategory-pol": "政治",
+       "exif-iimcategory-spo": "體育",
+       "exif-iimcategory-war": "戰爭,衝突同動蕩",
+       "exif-iimcategory-wea": "天氣",
        "namespacesall": "全部",
        "monthsall": "全部",
        "confirmemail": "確認電郵地址",
        "autosumm-replace": "用「$1」取代內容",
        "autoredircomment": "跳緊轉呢版到[[$1]]",
        "autosumm-new": "開咗新版「$1」",
+       "autosumm-newblank": "開空頁",
        "lag-warn-normal": "新過$1秒嘅更改可能唔會響呢個表度顯示。",
        "lag-warn-high": "由於資料庫嘅過度延遲,新過$1秒嘅更改可能唔會響呢個表度顯示。",
        "watchlistedit-normal-title": "編輯監視清單",
        "watchlistedit-raw-done": "你嘅監視清單已經更新。",
        "watchlistedit-raw-added": "已經加入咗$1個標題:",
        "watchlistedit-raw-removed": "已經拎走咗$1個標題:",
+       "watchlistedit-clear-title": "已經清空咗監視一覽",
+       "watchlistedit-clear-legend": "清空監視一覽",
        "watchlistedit-clear-titles": "標題:",
+       "watchlisttools-clear": "清空監視一覽",
        "watchlisttools-view": "睇吓有關嘅更改",
        "watchlisttools-edit": "睇吓同埋編輯監視清單",
        "watchlisttools-raw": "編輯原始監視清單",
        "version-software": "裝咗嘅軟件",
        "version-software-product": "產品",
        "version-software-version": "版本",
+       "version-entrypoints-header-entrypoint": "輸入位",
        "version-entrypoints-header-url": "網址",
        "version-libraries-version": "版本",
+       "version-libraries-license": "牌照",
+       "version-libraries-description": "敘述",
+       "version-libraries-authors": "作者",
        "redirect-submit": "去",
        "redirect-value": "值:",
        "redirect-user": "用戶ID",
        "tags-active-no": "唔係",
        "tags-edit": "編輯",
        "tags-delete": "刪除",
+       "tags-activate": "激活",
        "tags-hitcount": "$1次更改",
        "tags-create-reason": "原因:",
        "tags-create-submit": "開",
        "default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (可以用)",
        "default-skin-not-found-row-disabled": "* <code>$1</code> / $2 (唔可以用)",
        "mediastatistics": "媒體統計",
+       "mediastatistics-table-mimetype": "MIME類型",
+       "mediastatistics-table-extensions": "可能嘅格式",
+       "mediastatistics-table-count": "檔案數",
+       "mediastatistics-table-totalbytes": "結合嘥士",
        "mediastatistics-header-unknown": "唔知",
        "mediastatistics-header-bitmap": "點陣圖",
        "mediastatistics-header-drawing": "向量圖",
        "mediastatistics-header-text": "文字",
        "mediastatistics-header-executable": "執行檔",
        "mediastatistics-header-archive": "壓縮格式",
+       "json-error-depth": "超出咗最大嘅堆棧數",
+       "json-error-ctrl-char": "字符引導失敗,因為控制字符出錯。",
        "json-error-syntax": "語法錯咗",
+       "json-error-utf8": "字符引導失敗,因為有非法UTF-8代碼。",
        "headline-anchor-title": "連結到呢一節",
        "special-characters-group-latin": "拉丁文",
        "special-characters-group-latinextended": "Latin擴展左",
        "special-characters-group-khmer": "高棉文",
        "special-characters-title-endash": "短破折號",
        "special-characters-title-emdash": "長破折號",
-       "special-characters-title-minus": "減號"
+       "special-characters-title-minus": "減號",
+       "mw-widgets-titleinput-description-new-page": "冇呢頁",
+       "mw-widgets-titleinput-description-redirect": "跳轉到$1"
 }
index fa1931a..7a80c23 100644 (file)
@@ -92,6 +92,7 @@
        "tog-hideminor": "隐藏最近更改中的小编辑",
        "tog-hidepatrolled": "隐藏最近更改中的已巡查编辑",
        "tog-newpageshidepatrolled": "隐藏新页面列表中的已巡查页面",
+       "tog-hidecategorization": "隐藏对页面的分类",
        "tog-extendwatchlist": "扩展监视列表以显示所有更改,而不仅是最近的更改",
        "tog-usenewrc": "按页面合并最近更改和监视列表中的更改",
        "tog-numberheadings": "自动编号标题",
        "tog-watchlisthideliu": "隐藏监视列表中的登录用户的编辑",
        "tog-watchlisthideanons": "隐藏监视列表中的匿名用户的编辑",
        "tog-watchlisthidepatrolled": "隐藏监视列表中的已巡查编辑",
+       "tog-watchlisthidecategorization": "隐藏对页面的分类",
        "tog-ccmeonemails": "把我给其他用户发送的电子邮件的副本发送给我",
        "tog-diffonly": "不在差异下面显示页面内容",
        "tog-showhiddencats": "显示隐藏分类",
        "actionthrottled": "操作被限制",
        "actionthrottledtext": "作为反破坏措施,您被限制在短时间段内执行太多次该操作,并且您已超越此限制。请在数分钟后再试。",
        "protectedpagetext": "该页面已被保护以防止编辑和其他操作。",
-       "viewsourcetext": "您可以查看并复制此页面的源代码:",
-       "viewyourtext": "您可以查看并复制<strong>您对此页面作出编辑后</strong>的源代码:",
+       "viewsourcetext": "您可以查看与复制此页面的源代码。",
+       "viewyourtext": "您可以查看与复制<strong>您对此页面作出编辑后</strong>的源代码。",
        "protectedinterface": "该页提供此wiki软件的界面文字,它已被保护以防止恶意修改。\n如欲修改所有wiki的翻译,请到[//translatewiki.net/ translatewiki.net]上的MediaWiki本地化计划。",
        "editinginterface": "<strong>警告:</strong>您正在编辑用于提供软件的界面文字的页面。改变此页将影响其他在此wiki上其他用户的用户界面外观。",
        "translateinterface": "要加入或更改所有wiki的翻译,请访问MediaWiki本地化项目网站[//translatewiki.net/ translatewiki.net]。",
        "showdiff": "显示更改",
        "blankarticle": "<strong>警告</strong>:您创建的页面是空白的。如果您再次点击“{{int:savearticle}}”,您将真的创建没有任何内容的页面。",
        "anoneditwarning": "<strong>警告:</strong>您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您<strong>[$1 登陆]</strong>或<strong>[$2 创建]</strong>一个账户,您的编辑将归属于您的用户名,且将享受其他好处。",
-       "anonpreviewwarning": "<em>你没有登录。保存会记录你的IP地址于该页面的编辑历史中。</em>",
+       "anonpreviewwarning": "<em>您没有登录。保存将您的IP地址记录至此页面的编辑历史中。</em>",
        "missingsummary": "'''提示:'''你没有提供编辑摘要。如果你再次点击“{{int:savearticle}}”,你的编辑将不带编辑摘要保存。",
        "selfredirect": "<strong>警告:</strong>您正在将此页面重定向至它自己。\n您可能指定了错误的重定向目标,或者您正在编辑错误的页面。\n如果您再次点击“{{int:savearticle}}”,重定向将无论如何被创建。",
        "missingcommenttext": "请在下面输入评论。",
        "accmailtitle": "密码已寄出",
        "accmailtext": "为[[User talk:$1|$1]]随机生成的密码已送至$2。登录后可以在<em>[[Special:ChangePassword|更改密码]]</em>页面中修改。",
        "newarticle": "(新页面)",
-       "newarticletext": "你点击了一个尚不存在的页面的链接。要创建该页面,请在下面的编辑框中输入内容(更多信息请见[$1 帮助页面])。如果你是错误地到达这里,请点击您的浏览器的<strong>返回</strong>按钮。",
+       "newarticletext": "您点击了一个尚不存在的页面的链接。要创建该页面,请在下面的编辑框中输入内容(更多信息请见[$1 帮助页面])。如果您是错误地进入了此页面,请点击您的浏览器的<strong>返回</strong>按钮。",
        "anontalkpagetext": "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
        "noarticletext": "本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]、<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>",
        "noarticletext-nopermission": "本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索本页标题]]或<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]</span>,但你没有权限创建本页面。",
        "search-category": "(分类$1)",
        "search-file-match": "(匹配文件内容)",
        "search-suggest": "您是不是要找:$1",
+       "search-rewritten": "显示用于$1的结果。而不是寻找$2。",
        "search-interwiki-caption": "姊妹项目",
        "search-interwiki-default": "来自$1的结果:",
        "search-interwiki-more": "(更多)",
        "rcshowhidemine": "$1我的编辑",
        "rcshowhidemine-show": "显示",
        "rcshowhidemine-hide": "隐藏",
+       "rcshowhidecategorization": "$1页面分类",
+       "rcshowhidecategorization-show": "显示",
+       "rcshowhidecategorization-hide": "隐藏",
        "rclinks": "显示过去$2天的最后$1个更改<br />$3",
        "diff": "差异",
        "hist": "历史",
        "newpageletter": "新",
        "boteditletter": "机",
        "number_of_watching_users_pageview": "[$1个关注用户]",
-       "rc_categories": "分类限制(用“|”分隔)",
-       "rc_categories_any": "任",
+       "rc_categories": "分类限制(用“|”分隔)",
+       "rc_categories_any": "任何选择的",
        "rc-change-size-new": "更改后有$1字节",
        "newsectionsummary": "/* $1 */ 新段落",
        "rc-enhanced-expand": "显示细节",
        "recentchangeslinked-summary": "这是链接自指定页面(或至指定分类的成员)的页面的最近更改的列表。[[Special:Watchlist|你的监视列表]]中的页面以<strong>粗体</strong>显示。",
        "recentchangeslinked-page": "页面名称:",
        "recentchangeslinked-to": "显示链到所给出的页面",
+       "recentchanges-page-added-to-category": "[[:$1]]已添加至分类",
+       "recentchanges-page-added-to-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已添加至分类",
+       "recentchanges-page-removed-from-category": "[[:$1]]已从分类中移除",
+       "recentchanges-page-removed-from-category-bundled": "[[:$1]]及其他{{PLURAL:$2|$2个页面}}已从分类中移除",
        "upload": "上传文件",
        "uploadbtn": "上传文件",
        "reuploaddesc": "取消上传,返回上传表格",
        "upload-too-many-redirects": "在网址中有太多重新定向",
        "upload-http-error": "发生HTTP错误:$1",
        "upload-copy-upload-invalid-domain": "不能从该域名上载文件副本。",
+       "upload-dialog-title": "上传文件",
+       "upload-dialog-error": "发生错误",
+       "upload-dialog-warning": "发生一条警告",
+       "upload-dialog-button-cancel": "取消",
+       "upload-dialog-button-done": "完成",
+       "upload-dialog-button-save": "保存",
+       "upload-dialog-button-upload": "上传",
+       "upload-dialog-label-select-file": "选择文件",
+       "upload-dialog-label-infoform-title": "详细信息",
+       "upload-dialog-label-infoform-name": "名称",
+       "upload-dialog-label-infoform-description": "说明",
+       "upload-dialog-label-usage-title": "用法",
+       "upload-dialog-label-usage-filename": "文件名",
        "backend-fail-stream": "无法流传送文件$1。",
        "backend-fail-backup": "无法备份文件$1。",
        "backend-fail-notexists": "条目$1不存在。",
        "watchlistanontext": "请登录以查看或编辑您的监视列表。",
        "watchnologin": "未登录",
        "addwatch": "添加至监视列表",
-       "addedwatchtext": "已将页面“[[:$1]]”加入您的[[Special:Watchlist|监视列表]]。此后本页面及其讨论页的若有更改将在监视列表中显示。",
+       "addedwatchtext": "“[[:$1]]”及其讨论页已加入至您的[[Special:Watchlist|监视列表]]中。",
        "addedwatchtext-short": "页面“$1”已加入您的监视列表。",
        "removewatch": "从监视列表中删除",
-       "removedwatchtext": "页面“[[:$1]]”已从[[Special:Watchlist|你的监视列表]]中删除。",
+       "removedwatchtext": "“[[:$1]]”及其讨论页已从您的[[Special:Watchlist|监视列表]]中移除。",
        "removedwatchtext-short": "页面“$1”已从您的监视列表移除。",
        "watch": "监视",
        "watchthispage": "监视本页",
        "changecontentmodel-success-title": "内容模型已更改",
        "changecontentmodel-success-text": "[[:$1]]的内容类型被更改。",
        "changecontentmodel-cannot-convert": "[[:$1]]上的内容不能转换为$2的一个类型。",
-       "changecontentmodel-title-cantexist": "在$1尚不能有一个页面。",
        "changecontentmodel-nodirectediting": "$1内容模型不支持直接编辑",
        "log-name-contentmodel": "内容模型更改日志",
        "log-description-contentmodel": "与一个页面的内容模型相关的活动",
        "undeletepagetext": "以下{{PLURAL:$1|页面|$1个页面}}已被删除,但依然在归档中并可以被恢复。归档可能会被定时清理。",
        "undelete-fieldset-title": "还原版本",
        "undeleteextrahelp": "要恢复该页面的整个历史记录时,不选中任何复选框直接点击'''''{{int:undeletebtn}}'''''。要选择性地恢复部分版本时,请选中相应版本前的复选框再点击'''''{{int:undeletebtn}}'''''。",
-       "undeleterevisions": "$1版本存档",
+       "undeleterevisions": "$1个{{PLURAL:$1|修订版本}}已删除",
        "undeletehistory": "如果您恢复了该页面,所有版本都会被恢复到版本历史中。如果本页删除后有一个同名的新页面建立,被恢复的版本将会出现在先前的历史中。",
        "undeleterevdel": "如果把最新版本部分删除,反删除将会无法进行。如果遇到这种情况,您必须反选或反隐藏最新已删除的版本。",
        "undeletehistorynoadmin": "这个页面已被删除。删除原因显示在下方编辑摘要中,被删除前的所有版本文本连同删除前贡献用户的细节信息只对管理员可见。",
        "tooltip-ca-nstab-category": "查看分类页面",
        "tooltip-minoredit": "标记本编辑为小编辑",
        "tooltip-save": "保存你的更改",
-       "tooltip-preview": "预览您的更改,请在保存前使用此功能!",
+       "tooltip-preview": "预览您的更改。请在保存前使用此功能。",
        "tooltip-diff": "显示您对该文字所做的更改",
        "tooltip-compareselectedversions": "查看该页面两个选定的版本之间的差异。",
        "tooltip-watch": "添加本页面至你的监视列表",
        "scarytranscludefailed": "[提取$1失败]",
        "scarytranscludefailed-httpstatus": "[模板$1读取失败:HTTP $2]",
        "scarytranscludetoolong": "[URL过长]",
-       "deletedwhileediting": "'''警告''':此页在您开始编辑之后已经被删除!",
+       "deletedwhileediting": "<strong>警告:</strong>此页在您开始编辑之后已经被删除!",
        "confirmrecreate": "在您开始编辑这个页面后,用户[[User:$1|$1]] ([[User talk:$1|讨论]])以下列原因删除了这个页面:\n: ''$2''\n请确认在您重新创建页面前三思。",
        "confirmrecreate-noreason": "用户 [[User:$1|$1]]([[User talk:$1|talk]]) 在您开始编辑之后删除此页面。请确认您确实要重新创建此页面。",
        "recreate": "重新创建",
        "special-characters-title-endash": "短划线",
        "special-characters-title-emdash": "长划线",
        "special-characters-title-minus": "减号",
+       "mw-widgets-dateinput-no-date": "没有选定日期",
        "mw-widgets-titleinput-description-new-page": "页面不存在",
        "mw-widgets-titleinput-description-redirect": "重定向至$1"
 }
index 12a5a92..f5f6868 100644 (file)
        "pool-servererror": "無法使用程序計數服務 ($1)。",
        "poolcounter-usage-error": "用法錯誤:$1",
        "aboutsite": "關於 {{SITENAME}}",
-       "aboutpage": "Project:About",
+       "aboutpage": "Project:關於",
        "copyright": "除非額外說明,否則本站內容均使用 $1 授權條款。",
        "copyrightpage": "{{ns:project}}:版權",
        "currentevents": "最新動態",
        "currentevents-url": "Project:Current events",
        "disclaimers": "免責聲明",
-       "disclaimerpage": "Project:General disclaimer",
+       "disclaimerpage": "Project:一般免責聲明",
        "edithelp": "編輯説明",
        "helppage-top-gethelp": "説明",
        "mainpage": "首頁",
        "noemailcreate": "您需要提供一個有效的電子郵件地址。",
        "passwordsent": "使用者 \"$1\" 的新密碼已寄至當出登記的電子郵件地址,\n請稍後收到郵件後再登入。",
        "blocked-mailpassword": "您的 IP 位址已被封鎖不允許編輯,密碼復原的功能也同樣被禁止使用以防止被濫用。",
-       "eauthentsent": "已寄出一封確認信到您所設定的電子郵件址。\n在未收到其它電子郵件前,您必須先依照郵件中的指示,確認這個帳號確實是您本人。",
+       "eauthentsent": "已寄出一封確認信到您所設定的電子郵件址。\n在未收到其它電子郵件前,您必須先依照郵件中的指示,確認這個帳號確實是您本人。",
        "throttled-mailpassword": "密碼重設的電子郵件已經在最近 $1 小時內寄出。\n為防止濫用,$1 小時內只能寄出一次密碼重設信件。",
        "mailerror": "傳送電子郵件錯誤:$1",
        "acct_creation_throttle_hit": "使用您目前的 IP 位址的訪客在最近一天建立了 {{PLURAL:$1|1 個帳號|$1 個帳號}},已超出系統允許的上限。\n因此,目前無法讓使用此 IP 位址的訪客建立帳號。",
        "rcshowhidemine": "$1 我的編輯",
        "rcshowhidemine-show": "顯示",
        "rcshowhidemine-hide": "隱藏",
+       "rcshowhidecategorization-show": "顯示",
+       "rcshowhidecategorization-hide": "隱藏",
        "rclinks": "顯示近期 $2 天內的 $1 次變更。<br />$3",
        "diff": "差異",
        "hist": "歷史",
        "upload-too-many-redirects": "該 URL 重新導向至太多其他位址",
        "upload-http-error": "發生 HTTP 錯誤:$1",
        "upload-copy-upload-invalid-domain": "此網域不允許複製上傳的檔案。",
+       "upload-dialog-title": "上傳檔案",
+       "upload-dialog-error": "發生錯誤",
+       "upload-dialog-button-cancel": "取消",
+       "upload-dialog-button-done": "完成",
+       "upload-dialog-button-save": "儲存",
+       "upload-dialog-button-upload": "上傳",
+       "upload-dialog-label-select-file": "選擇檔案",
+       "upload-dialog-label-infoform-title": "詳細資訊",
+       "upload-dialog-label-infoform-name": "名稱",
+       "upload-dialog-label-infoform-description": "描述",
+       "upload-dialog-label-usage-title": "用法",
+       "upload-dialog-label-usage-filename": "檔案名稱",
        "backend-fail-stream": "無法傳輸檔案 \"$1\"。",
        "backend-fail-backup": "無法備份檔案 \"$1\"。",
        "backend-fail-notexists": "檔案 $1 不存在。",
        "emailuser-title-target": "E-mail 聯絡此{{GENDER:$1|使用者}}",
        "emailuser-title-notarget": "E-mail 聯絡使用者",
        "emailpage": "E-mail 聯絡使用者",
-       "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
+       "emailpagetext": "您可以使用以下表格傳送電子郵件給這位 {{Gender:$1|使用者}}。\n您在 [[Special:Preferences|偏好設定]] 中所輸入的電子郵件址將會作為郵件的 \"寄件人\",因此該使用者可直接回覆您。",
        "defemailsubject": "{{SITENAME}} 使用者 \"$1\" 寄來的電子郵件",
        "usermaildisabled": "使用者電子郵件已停用",
        "usermaildisabledtext": "您不能傳送電子郵件到本 Wiki 上的其他使用者",
        "changecontentmodel-success-title": "已變更內容模型",
        "changecontentmodel-success-text": "已變更 [[:$1]] 的內容類型。",
        "changecontentmodel-cannot-convert": "[[:$1]] 的內容無法轉換為 $2 類型。",
-       "changecontentmodel-title-cantexist": "無法於 $1 建立頁面。",
        "changecontentmodel-nodirectediting": "$1 的內容模型不支援直接編輯",
        "log-name-contentmodel": "內容模型變更日誌",
        "log-description-contentmodel": "與頁面內容模型相關的事件",
        "delete_and_move_text": "== 需要刪除 ==\n目標頁面 \"[[:$1]]\" 已存在。\n您是否要刪除該頁面以完成移動?",
        "delete_and_move_confirm": "是的,刪除該頁面",
        "delete_and_move_reason": "已刪除讓來自 [[$1]] 頁面可移動",
-       "selfmove": "原始標題與目標標題相同,\n無法移動頁面至自己。",
+       "selfmove": "原始標題與目標標題相同,無法移動至自身頁面。",
        "immobile-source-namespace": "無法移動在命名空間 \"$1\" 中的頁面",
        "immobile-target-namespace": "無法移動頁面至命名空間 \"$1\"",
        "immobile-target-namespace-iw": "移動頁面不可使用 Interwiki 連結做為目標。",
        "confirmemail_success": "您的電子郵件已經被確認。您現在可以 [[Special:UserLogin|登入]] 並使用此網站了。",
        "confirmemail_loggedin": "已確認您的電子郵件地址。",
        "confirmemail_subject": "{{SITENAME}} 電子郵件地址確認",
-       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1) 已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body": "不明人士 (可能是您自己,來自 IP 位址 $1) 已在 {{SITENAME}} 註冊了一個帳號 \"$2\" 並使用了此電子郵件址。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_body_changed": "不明人士 (可能是您自己,來自 IP 位址 $1)  已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件地址更改至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
-       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
+       "confirmemail_body_set": "不明人士 (可能是您自己,來自 IP 位址 $1) 已將在 {{SITENAME}} 帳號 \"$2\" 的電子郵件址設定至此。\n\n請確認這個帳號是屬於您的,並使用瀏覽器開啟下方連結以開啟在 {{SITENAME}} 上的電子郵件功能:\n\n$3\n\n若您 *未* 註冊此帳號,\n請開啟下方連結取消電子郵件確認:\n\n$5\n\n此確認代碼會於 $4 過期。",
        "confirmemail_invalidated": "已取消電子郵件地址確認",
        "invalidateemail": "取消電子郵件確認",
        "scarytranscludedisabled": "[Interwiki 轉換代碼不可用]",
index bc61235..fc6cc12 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** South Azerbaijani (تورکجه)
+/** South Azerbaijani (تۆرکجه)
  *
  * To improve a translation please visit https://translatewiki.net
  *
@@ -24,8 +24,8 @@ $namespaceNames = array(
        NS_PROJECT_TALK     => '$1_دانیشیغی',
        NS_FILE             => 'فایل',
        NS_FILE_TALK        => 'فایل_دانیشیغی',
-       NS_MEDIAWIKI        => 'مدیاویکی',
-       NS_MEDIAWIKI_TALK   => 'مدیاویکی_دانیشیغی',
+       NS_MEDIAWIKI        => 'مدیاویکی',
+       NS_MEDIAWIKI_TALK   => 'مدیاویکی_دانیشیغی',
        NS_TEMPLATE         => 'شابلون',
        NS_TEMPLATE_TALK    => 'شابلون_دانیشیغی',
        NS_HELP             => 'کؤمک',
@@ -34,6 +34,11 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'بؤلمه_دانیشیغی',
 );
 
+$namespaceAliases = array(
+       'مدیا‌ویکی' => NS_MEDIAWIKI,
+       'مدیا‌ویکی_دانیشیغی' => NS_MEDIAWIKI_TALK,
+);
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'چالیشقان_ایشلدن‌لر' ),
        'Allmessages'               => array( 'بوتون_مئساژلار' ),
index b50b83c..799836b 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Southern Luri (Ù\84ئرÛ\8c Ø¬Ø¦Ù\86Ù\88Ù\99Ú¤ی)
+/** Southern Luri (Ù\84ئرÛ\8c Ø¯Ù\88Ù\99Ù\85Û\8cÙ\86ی)
  *
  * To improve a translation please visit https://translatewiki.net
  *
@@ -7,6 +7,5 @@
  * @file
  */
 
-$fallback = 'lrc, fa';
+$fallback = 'fa';
 $rtl = true;
-
diff --git a/languages/messages/MessagesSdh.php b/languages/messages/MessagesSdh.php
new file mode 100644 (file)
index 0000000..7a9b856
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+/** Southern Kurdish (کوردی خوارگ)
+ *
+ * To improve a translation please visit https://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+$fallback = 'fa';
+
+$rtl = true;
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/maintenance/fixSlaveDesync.php b/maintenance/fixSlaveDesync.php
deleted file mode 100644 (file)
index a5418ce..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-<?php
-/**
- * Fix erroneous page_latest values due to slave desynchronisation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Maintenance
- */
-
-require_once __DIR__ . '/Maintenance.php';
-
-/**
- * Maintenance script that fixes erroneous page_latest values
- * due to slave desynchronisation.
- *
- * @ingroup Maintenance
- */
-class FixSlaveDesync extends Maintenance {
-       /** @var array */
-       private $slaveIndexes;
-
-       public function __construct() {
-               parent::__construct();
-               $this->mDescription = "";
-       }
-
-       public function getDbType() {
-               return Maintenance::DB_ADMIN;
-       }
-
-       public function execute() {
-               $this->slaveIndexes = array();
-               $serverCount = wfGetLB()->getServerCount();
-               for ( $i = 1; $i < $serverCount; $i++ ) {
-                       if ( wfGetLB()->isNonZeroLoad( $i ) ) {
-                               $this->slaveIndexes[] = $i;
-                       }
-               }
-
-               if ( $this->hasArg() ) {
-                       $this->desyncFixPage( $this->getArg() );
-               } else {
-                       $corrupt = $this->findPageLatestCorruption();
-                       foreach ( $corrupt as $id => $dummy ) {
-                               $this->desyncFixPage( $id );
-                       }
-               }
-       }
-
-       /**
-        * Find all pages that have a corrupted page_latest
-        * @return array
-        */
-       private function findPageLatestCorruption() {
-               $desync = array();
-               $n = 0;
-               $dbw = wfGetDB( DB_MASTER );
-               $masterIDs = array();
-               $res = $dbw->select(
-                       'page',
-                       array( 'page_id', 'page_latest' ),
-                       array( 'page_id<6054123' ),
-                       __METHOD__
-               );
-               $this->output( "Number of pages: " . $res->numRows() . "\n" );
-               foreach ( $res as $row ) {
-                       $masterIDs[$row->page_id] = $row->page_latest;
-                       if ( !( ++$n % 10000 ) ) {
-                               $this->output( "$n\r" );
-                       }
-               }
-               $this->output( "\n" );
-
-               foreach ( $this->slaveIndexes as $i ) {
-                       $db = wfGetDB( $i );
-                       $res = $db->select(
-                               'page',
-                               array( 'page_id', 'page_latest' ),
-                               array( 'page_id<6054123' ),
-                               __METHOD__
-                       );
-                       foreach ( $res as $row ) {
-                               if ( isset( $masterIDs[$row->page_id] ) && $masterIDs[$row->page_id] != $row->page_latest ) {
-                                       $desync[$row->page_id] = true;
-                                       $this->output( $row->page_id . "\t" );
-                               }
-                       }
-               }
-               $this->output( "\n" );
-
-               return $desync;
-       }
-
-       /**
-        * Fix a broken page entry
-        * @param int $pageID The page_id to fix
-        */
-       private function desyncFixPage( $pageID ) {
-               # Check for a corrupted page_latest
-               $dbw = wfGetDB( DB_MASTER );
-               $dbw->begin( __METHOD__ );
-               $realLatest = $dbw->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ),
-                       __METHOD__, 'FOR UPDATE' );
-               # list( $masterFile, $masterPos ) = $dbw->getMasterPos();
-               $found = false;
-               foreach ( $this->slaveIndexes as $i ) {
-                       $db = wfGetDB( $i );
-                       /*
-                       if ( !$db->masterPosWait( $masterFile, $masterPos, 10 ) ) {
-                               $this->output( "Slave is too lagged, aborting\n" );
-                               $dbw->commit( __METHOD__ );
-                               sleep(10);
-                               return;
-                       }*/
-                       $latest = $db->selectField( 'page', 'page_latest', array( 'page_id' => $pageID ), __METHOD__ );
-                       $max = $db->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ );
-                       if ( $latest != $realLatest && $realLatest < $max ) {
-                               $this->output( "page_latest corrupted in page $pageID, server $i\n" );
-                               $found = true;
-                               break;
-                       }
-               }
-               if ( !$found ) {
-                       $this->output( "page_id $pageID seems fine\n" );
-                       $dbw->commit( __METHOD__ );
-
-                       return;
-               }
-
-               # Find the missing revisions
-               $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ),
-                       __METHOD__, 'FOR UPDATE' );
-               $masterIDs = array();
-               foreach ( $res as $row ) {
-                       $masterIDs[] = $row->rev_id;
-               }
-
-               $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), __METHOD__ );
-               $slaveIDs = array();
-               foreach ( $res as $row ) {
-                       $slaveIDs[] = $row->rev_id;
-               }
-               if ( count( $masterIDs ) < count( $slaveIDs ) ) {
-                       $missingIDs = array_diff( $slaveIDs, $masterIDs );
-                       if ( count( $missingIDs ) ) {
-                               $this->output( "Found " . count( $missingIDs )
-                                       . " lost in master, copying from slave... " );
-                               $dbFrom = $dbw;
-                               $found = true;
-                               $toMaster = true;
-                       } else {
-                               $found = false;
-                       }
-               } else {
-                       $missingIDs = array_diff( $masterIDs, $slaveIDs );
-                       if ( count( $missingIDs ) ) {
-                               $this->output( "Found " . count( $missingIDs )
-                                       . " missing revision(s), copying from master... " );
-                               $dbFrom = $dbw;
-                               $found = true;
-                               $toMaster = false;
-                       } else {
-                               $found = false;
-                       }
-               }
-
-               if ( $found ) {
-                       foreach ( $missingIDs as $rid ) {
-                               $this->output( "$rid " );
-                               # Revision
-                               $row = $dbFrom->selectRow( 'revision', '*', array( 'rev_id' => $rid ), __METHOD__ );
-                               if ( $toMaster ) {
-                                       $id = $dbw->selectField( 'revision', 'rev_id', array( 'rev_id' => $rid ),
-                                               __METHOD__, 'FOR UPDATE' );
-                                       if ( $id ) {
-                                               $this->output( "Revision already exists\n" );
-                                               $found = false;
-                                               break;
-                                       } else {
-                                               $dbw->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               } else {
-                                       foreach ( $this->slaveIndexes as $i ) {
-                                               $db = wfGetDB( $i );
-                                               $db->insert( 'revision', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               }
-
-                               # Text
-                               $row = $dbFrom->selectRow( 'text', '*', array( 'old_id' => $row->rev_text_id ), __METHOD__ );
-                               if ( $toMaster ) {
-                                       $dbw->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                               } else {
-                                       foreach ( $this->slaveIndexes as $i ) {
-                                               $db = wfGetDB( $i );
-                                               $db->insert( 'text', get_object_vars( $row ), __METHOD__, 'IGNORE' );
-                                       }
-                               }
-                       }
-                       $this->output( "done\n" );
-               }
-
-               if ( $found ) {
-                       $this->output( "Fixing page_latest... " );
-                       if ( $toMaster ) {
-                               /*
-                               $dbw->update(
-                                       'page',
-                                       array( 'page_latest' => $realLatest ),
-                                       array( 'page_id' => $pageID ),
-                                       __METHOD__
-                               );
-                               */
-                       } else {
-                               foreach ( $this->slaveIndexes as $i ) {
-                                       $db = wfGetDB( $i );
-                                       $db->update(
-                                               'page',
-                                               array( 'page_latest' => $realLatest ),
-                                               array( 'page_id' => $pageID ),
-                                               __METHOD__
-                                       );
-                               }
-                       }
-                       $this->output( "done\n" );
-               }
-               $dbw->commit( __METHOD__ );
-       }
-}
-
-$maintClass = "FixSlaveDesync";
-require_once RUN_MAINTENANCE_IF_MAIN;
index 1d7a1ce..07e72bf 100644 (file)
                                "name": "General",
                                "classes": [
                                        "mw.Title",
-                                       "mw.Upload*",
                                        "mw.Uri",
                                        "mw.RegExp",
                                        "mw.messagePoster.*",
                                        "mw.notification",
                                        "mw.Notification_",
+                                       "mw.storage",
                                        "mw.user",
                                        "mw.util",
                                        "mw.plugin.*",
@@ -59,8 +59,8 @@
                        {
                                "name": "Interfaces",
                                "classes": [
-                                       "mw.Feedback",
-                                       "mw.Feedback.Dialog"
+                                       "mw.Feedback*",
+                                       "mw.Upload*"
                                ]
                        },
                        {
index fca839d..2c42364 100644 (file)
                        log( error + '\n' + filePath + ':' + linerNr  );
                };
        </script>
-       <script src="modules/src/startup.js"></script>
        <script>
                function startUp() {
                        mw.config = new mw.Map();
                }
        </script>
        <script src="modules/lib/jquery/jquery.js"></script>
+       <script src="modules/lib/phpjs-sha1/sha1.js"></script>
        <script src="modules/src/mediawiki/mediawiki.js"></script>
        <script src="modules/src/mediawiki/mediawiki.errorLogger.js"></script>
        <script src="modules/src/mediawiki/mediawiki.startUp.js"></script>
index 4bb8369..c901240 100644 (file)
@@ -37,7 +37,6 @@
  * @alternateClassName jqXHR
  */
 
-
 /**
  * @class QUnit
  * @source <http://api.qunitjs.com/>
index d029bf7..52ed81f 100644 (file)
@@ -25,7 +25,8 @@ require_once __DIR__ . '/../Maintenance.php';
 
 /**
  * Generates the normalizer data file for Arabic.
- * For NFC see includes/compat/normal.
+ *
+ * This data file is used after normalizing to NFC.
  *
  * @ingroup MaintenanceLanguage
  */
index 770a98c..cb6ae69 100644 (file)
@@ -25,7 +25,8 @@ require_once __DIR__ . '/../Maintenance.php';
 
 /**
  * Generates the normalizer data file for Malayalam.
- * For NFC see includes/compat/normal.
+ *
+ * This data file is used after normalizing to NFC.
  *
  * @ingroup MaintenanceLanguage
  */
index 5d311ad..763d97e 100644 (file)
@@ -327,13 +327,14 @@ class RefreshLinks extends Maintenance {
 
                foreach ( $linksTables as $table => $field ) {
                        $this->output( "    $table: 0" );
+                       $tableStart = $start;
                        $counter = 0;
                        do {
                                $ids = $dbr->selectFieldValues(
                                        $table,
                                        $field,
                                        array(
-                                               self::intervalCond( $dbr, $field, $start, $end ),
+                                               self::intervalCond( $dbr, $field, $tableStart, $end ),
                                                "$field NOT IN ({$dbr->selectSQLText( 'page', 'page_id' )})",
                                        ),
                                        __METHOD__,
@@ -343,17 +344,15 @@ class RefreshLinks extends Maintenance {
                                $numIds = count( $ids );
                                if ( $numIds ) {
                                        $counter += $numIds;
-                                       wfWaitForSlaves();
                                        $dbw->delete( $table, array( $field => $ids ), __METHOD__ );
                                        $this->output( ", $counter" );
-                                       $start = $ids[$numIds - 1] + 1;
+                                       $tableStart = $ids[$numIds - 1] + 1;
+                                       wfWaitForSlaves();
                                }
 
-                       } while ( $numIds >= $batchSize && ( $end === null || $start <= $end ) );
+                       } while ( $numIds >= $batchSize && ( $end === null || $tableStart <= $end ) );
 
                        $this->output( " deleted.\n" );
-
-                       wfWaitForSlaves();
                }
        }
 
index 17b2039..0e0b304 100644 (file)
        overflow: hidden;
        min-width: 20em;
 }
+
+/* tooltip styles */
+.config-help-field-hint {
+       display: none;
+       margin-left: 2px;
+       margin-bottom: -8px;
+       padding: 0 0 0 15px;
+       /* @embed */
+       background-image: url(images/help-question.gif);
+       background-position: left center;
+       background-repeat: no-repeat;
+       cursor: pointer;
+       font-size: .8em;
+       text-decoration: underline;
+       color: #0645ad;
+}
+
+.config-help-field-hint:hover {
+       /* @embed */
+       background-image: url(images/help-question-hover.gif);
+}
+
+.config-help-field-data {
+       display: block;
+       background-color: #d6f3ff;
+       padding: 5px 8px 4px 8px;
+       border: 1px solid #5dc9f4;
+       margin-left: 20px;
+}
index 840b6a9..d575c8d 100644 (file)
@@ -733,7 +733,10 @@ return array(
        /* Moment.js */
 
        'moment' => array(
-               'scripts' => 'resources/lib/moment/moment.js',
+               'scripts' => array(
+                       'resources/lib/moment/moment.js',
+                       'resources/src/moment-local-dmy.js',
+               ),
                'languageScripts' => array(
                        'af' => 'resources/lib/moment/locale/af.js',
                        'ar' => 'resources/lib/moment/locale/ar.js',
@@ -819,7 +822,7 @@ return array(
 
        'mediawiki' => array(
                'class' => 'ResourceLoaderRawFileModule',
-               // Keep maintenance/jsduck/eg-iframe.html in sync
+               // Keep in sync with maintenance/jsduck/eg-iframe.html
                'scripts' => array(
                        'resources/lib/phpjs-sha1/sha1.js',
                        'resources/src/mediawiki/mediawiki.js',
@@ -967,7 +970,10 @@ return array(
                        'feedback-useragent'
                ),
        ),
-
+       'mediawiki.feedlink' => array(
+               'position' => 'top',
+               'styles' => 'resources/src/mediawiki/mediawiki.feedlink.css',
+       ),
        'mediawiki.filewarning' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.filewarning.js',
                'styles' => 'resources/src/mediawiki/mediawiki.filewarning.less',
@@ -975,7 +981,6 @@ return array(
                        'oojs-ui',
                ),
        ),
-
        'mediawiki.helplink' => array(
                'position' => 'top',
                'styles' => array(
@@ -1089,6 +1094,10 @@ return array(
                'styles' => 'resources/src/mediawiki/mediawiki.sectionAnchor.css',
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.storage' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.storage.js',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
        'mediawiki.Title' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.Title.js',
                'dependencies' => array(
@@ -1104,6 +1113,28 @@ return array(
                        'mediawiki.api.upload',
                ),
        ),
+       'mediawiki.Upload.Dialog' => array(
+               'scripts' => 'resources/src/mediawiki/mediawiki.Upload.Dialog.js',
+               'dependencies' => array(
+                       'oojs-ui',
+                       'mediawiki.Upload',
+               ),
+               'messages' => array(
+                       'upload-dialog-title',
+                       'upload-dialog-error',
+                       'upload-dialog-warning',
+                       'upload-dialog-button-cancel',
+                       'upload-dialog-button-done',
+                       'upload-dialog-button-save',
+                       'upload-dialog-button-upload',
+                       'upload-dialog-label-select-file',
+                       'upload-dialog-label-infoform-title',
+                       'upload-dialog-label-infoform-name',
+                       'upload-dialog-label-infoform-description',
+                       'upload-dialog-label-usage-title',
+                       'upload-dialog-label-usage-filename',
+               ),
+       ),
        'mediawiki.toc' => array(
                'scripts' => 'resources/src/mediawiki/mediawiki.toc.js',
                'dependencies' => 'mediawiki.cookie',
@@ -1527,10 +1558,12 @@ return array(
                        'prefs-tabs-navigation-hint',
                        'prefswarning-warning',
                        'saveprefs',
+                       'savedprefs',
                ),
                'dependencies' => array(
                        'mediawiki.language',
                        'mediawiki.confirmCloseWindow',
+                       'mediawiki.notification',
                ),
        ),
        'mediawiki.special.recentchanges' => array(
@@ -1542,7 +1575,6 @@ return array(
                'position' => 'top',
                'scripts' => 'resources/src/mediawiki.special/mediawiki.special.search.js',
                'styles' => 'resources/src/mediawiki.special/mediawiki.special.search.css',
-               'dependencies' => 'mediawiki.widgets',
                'messages' => array(
                        'powersearch-togglelabel',
                        'powersearch-toggleall',
@@ -1665,19 +1697,12 @@ return array(
 
        /* MediaWiki Legacy */
 
-       'mediawiki.legacy.ajax' => array(
-               'scripts' => 'resources/src/mediawiki.legacy/ajax.js',
-               'dependencies' => array(
-                       'mediawiki.util',
-                       'mediawiki.legacy.wikibits',
-               ),
-               'position' => 'top',
-       ),
        'mediawiki.legacy.commonPrint' => array(
                'position' => 'top',
                'styles' => array(
                        'resources/src/mediawiki.legacy/commonPrint.css' => array( 'media' => 'print' )
                ),
+               'group' => 'print',
        ),
        'mediawiki.legacy.protect' => array(
                'scripts' => 'resources/src/mediawiki.legacy/protect.js',
@@ -1701,6 +1726,7 @@ return array(
                'scripts' => 'resources/src/mediawiki.legacy/wikibits.js',
                'dependencies' => 'mediawiki.util',
                'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
        ),
 
        /* MediaWiki UI */
@@ -1784,6 +1810,8 @@ return array(
        'mediawiki.widgets' => array(
                'scripts' => array(
                        'resources/src/mediawiki.widgets/mw.widgets.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js',
+                       'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.NamespaceInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.js',
                        'resources/src/mediawiki.widgets/mw.widgets.TitleOptionWidget.js',
@@ -1791,6 +1819,8 @@ return array(
                ),
                'skinStyles' => array(
                        'default' => array(
+                               'resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less',
+                               'resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less',
                                'resources/src/mediawiki.widgets/mw.widgets.TitleInputWidget.css',
                        ),
                ),
@@ -1799,9 +1829,13 @@ return array(
                        'jquery.autoEllipsis',
                        'mediawiki.Title',
                        'mediawiki.api',
+                       'moment',
                        'oojs-ui',
                ),
                'messages' => array(
+                       'mw-widgets-dateinput-no-date',
+                       'mw-widgets-dateinput-placeholder-day',
+                       'mw-widgets-dateinput-placeholder-month',
                        'mw-widgets-titleinput-description-new-page',
                        'mw-widgets-titleinput-description-redirect',
                ),
index 974db87..8c3d091 100644 (file)
@@ -86,6 +86,7 @@ return call_user_func( function () {
                'icons', // oojs-ui.styles.icons
                'indicators', // oojs-ui.styles.indicators
                'textures', // oojs-ui.styles.textures
+               'icons-accessibility', // oojs-ui.styles.icons-accessibility
                'icons-alerts', // oojs-ui.styles.icons-alerts
                'icons-content', // oojs-ui.styles.icons-content
                'icons-editing-advanced', // oojs-ui.styles.icons-editing-advanced
@@ -113,7 +114,7 @@ return call_user_func( function () {
 
                if ( substr( $name, 0, 5 ) === 'icons' ) {
                        $module['selectorWithoutVariant'] = '.oo-ui-icon-{name}, .mw-ui-icon-{name}:before';
-                       $module['selectorWithVariant'] = '.oo-ui-image-{variant} .oo-ui-icon-{name}, 
+                       $module['selectorWithVariant'] = '.oo-ui-image-{variant} .oo-ui-icon-{name},
                                .oo-ui-image-{variant}.oo-ui-icon-{name}, .mw-ui-icon-{name}-{variant}:before,
                                .mw-ui-hovericon:hover .mw-ui-icon-{name}-{variant}-hover:before,
                                .mw-ui-hovericon.mw-ui-icon-{name}-{variant}-hover:hover:before';
index c0d72c4..0a8bfac 100644 (file)
@@ -1,11 +1,20 @@
 {
        "@metadata": {
                "authors": [
-                       "Sovichet"
+                       "Sovichet",
+                       "គីមស៊្រុន"
                ]
        },
-       "ooui-outline-control-move-down": "រុញ​ទៅ​ក្រោម",
-       "ooui-outline-control-move-up": "រុញ​ទៅ​លើ",
-       "ooui-outline-control-remove": "ដក​វត្ថុ​ចេញ",
-       "ooui-toolbar-more": "បន្ថែម"
+       "ooui-outline-control-move-down": "រុញ​ធាតុទៅ​ក្រោម",
+       "ooui-outline-control-move-up": "រុញធាតុទៅ​លើ",
+       "ooui-outline-control-remove": "ដកធាតុចេញ",
+       "ooui-toolbar-more": "បន្ថែមទៀត",
+       "ooui-toolgroup-expand": "មើលច្រើន",
+       "ooui-toolgroup-collapse": "មើលតិច",
+       "ooui-dialog-message-accept": "យល់ព្រម",
+       "ooui-dialog-message-reject": "បោះបង់",
+       "ooui-dialog-process-error": "មានបញ្ហាអ្វីមួយ",
+       "ooui-dialog-process-dismiss": "បិទ",
+       "ooui-dialog-process-retry": "ព្យាយាមម្ដងទៀត",
+       "ooui-dialog-process-continue": "បន្ត"
 }
index f23f687..bf47f6f 100644 (file)
@@ -14,7 +14,7 @@
        },
        "ooui-outline-control-move-down": "항목을 아래로 옮기기",
        "ooui-outline-control-move-up": "항목을 위로 옮기기",
-       "ooui-outline-control-remove": "í\95­ëª© ì§\80ì\9a°ê¸°",
+       "ooui-outline-control-remove": "í\95­ëª© ì \9cê±°",
        "ooui-toolbar-more": "더 보기",
        "ooui-toolgroup-expand": "더 보기",
        "ooui-toolgroup-collapse": "덜 보기",
index d62e3cb..7d4252d 100644 (file)
@@ -20,6 +20,6 @@
        "ooui-dialog-process-dismiss": "Bỏ qua",
        "ooui-dialog-process-retry": "Thử lại",
        "ooui-dialog-process-continue": "Tiếp tục",
-       "ooui-selectfile-not-supported": "Tệp tin được chọn không được hỗ trợ",
-       "ooui-selectfile-placeholder": "Không có Tệp tin nào được chọn"
+       "ooui-selectfile-not-supported": "Không hỗ trợ việc chọn tập tin",
+       "ooui-selectfile-placeholder": "Không có tập tin nào được chọn"
 }
index d9a8314..8320362 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.1
+ * OOjs UI v0.12.5
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-22T19:37:14Z
+ * Date: 2015-08-19T02:10:25Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
@@ -82,8 +82,6 @@
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-buttonElement-frameless {
        display: inline-block;
 }
 .oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-iconElement.oo-ui-iconElement-icon {
-       opacity: 0.8;
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-iconElement .oo-ui-iconElement-icon,
+.oo-ui-iconElement.oo-ui-iconElement-icon {
+       opacity: 0.8;
 }
 .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
-       opacity: 0.8;
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
+.oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
+       opacity: 0.8;
 }
 .oo-ui-lookupElement > .oo-ui-menuSelectWidget {
        z-index: 1;
 .oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
        color: #cccccc;
 }
+.oo-ui-fieldLayout-messages {
+       list-style: none none;
+       margin: 0;
+       padding: 0;
+       margin-top: 0.25em;
+       margin-left: 0.25em;
+}
+.oo-ui-fieldLayout-messages > li {
+       margin: 0;
+       padding: 0;
+}
+.oo-ui-fieldLayout-messages .oo-ui-iconWidget {
+       display: none;
+}
+.oo-ui-fieldLayout-messages .oo-ui-fieldLayout-messages-error {
+       color: #d45353;
+}
+.oo-ui-fieldLayout-messages .oo-ui-labelWidget {
+       padding: 0;
+       line-height: 1.875em;
+       vertical-align: middle;
+}
 .oo-ui-actionFieldLayout-input,
 .oo-ui-actionFieldLayout-button {
        display: table-cell;
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        display: block;
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: inline-block;
        display: block;
        position: relative;
 }
+.oo-ui-horizontalLayout > .oo-ui-widget {
+       display: inline-block;
+       vertical-align: middle;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout {
+       display: inline-block;
+}
+.oo-ui-horizontalLayout > .oo-ui-widget {
+       margin-right: 0.5em;
+}
+.oo-ui-horizontalLayout > .oo-ui-widget:last-child {
+       margin-right: 0;
+}
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
        z-index: 4;
 .oo-ui-toolGroup .oo-ui-tool-link {
        text-decoration: none;
 }
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
        margin-left: 0;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-tool-active.oo-ui-widget-enabled + .oo-ui-tool-active.oo-ui-widget-enabled {
        border-left-color: rgba(0, 0, 0, 0.1);
 }
+.oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-tool-title {
+       color: #cccccc;
+}
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-disabled > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 0.2;
 }
 .oo-ui-barToolGroup.oo-ui-widget-enabled > .oo-ui-toolGroup-tools > .oo-ui-tool.oo-ui-widget-enabled:hover > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 1;
 }
+.oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-tool-title {
+       color: #cccccc;
+}
 .oo-ui-barToolGroup.oo-ui-widget-disabled > .oo-ui-toolGroup-tools > .oo-ui-tool > .oo-ui-tool-link .oo-ui-iconElement-icon {
        opacity: 0.2;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
        cursor: default;
        position: absolute;
        z-index: 4;
 }
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
        display: block;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button {
        margin: 0;
-       padding: 1.1953125em 0.3125em;
+       padding: 0 0.3125em;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label,
 .oo-ui-toolbar-actions > .oo-ui-buttonElement-frameless:last-child.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        margin: 0 1em;
+       line-height: 3.40625em;
+       /* 43/12.8 */
 }
 .oo-ui-toolbar-shadow {
        background-image: /* @embed */ url(themes/apex/images/toolbar-shadow.png);
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
        position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
 .oo-ui-iconWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 1.875em;
        width: 1.875em;
 .oo-ui-indicatorWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 0.9375em;
        width: 0.9375em;
        position: absolute;
        top: 0;
        height: 100%;
-       background-repeat: no-repeat;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
 .oo-ui-dropdownWidget {
        display: inline-block;
        position: relative;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-dropdownWidget > .oo-ui-menuSelectWidget {
        z-index: 1;
        display: inline-block;
        position: relative;
        vertical-align: middle;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-selectFileWidget-handle > input[type="file"] {
        position: absolute;
 .oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
        float: left;
        background-position: right center;
-       background-repeat: no-repeat;
 }
 .oo-ui-outlineControlsWidget-items {
        float: left;
        background-color: #ffffff;
        border-color: #dddddd;
 }
+.oo-ui-capsuleMultiSelectWidget {
+       display: inline-block;
+       position: relative;
+       width: 100%;
+       max-width: 50em;
+}
+.oo-ui-capsuleMultiSelectWidget-handle {
+       width: 100%;
+       display: inline-block;
+       position: relative;
+}
+.oo-ui-capsuleMultiSelectWidget-group {
+       display: inline;
+}
+.oo-ui-capsuleMultiSelectWidget > .oo-ui-menuSelectWidget {
+       z-index: 1;
+       width: 100%;
+}
+.oo-ui-capsuleMultiSelectWidget-handle {
+       background: #ffffff;
+       cursor: text;
+       min-height: 2.4em;
+       margin-right: 0.5em;
+       padding: 0.25em 0;
+       border: 1px solid rgba(0, 0, 0, 0.1);
+       border-radius: 0.25em;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+}
+.oo-ui-capsuleMultiSelectWidget-handle:last-child {
+       margin-right: 0;
+}
+.oo-ui-capsuleMultiSelectWidget-handle .oo-ui-capsuleMultiSelectWidget-group {
+       margin: 0 0.2em;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator,
+.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
+       position: absolute;
+       background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > input {
+       border: none;
+       min-width: 1em;
+       max-width: 100%;
+       line-height: 1.675em;
+       margin: 0;
+       padding: 0;
+       font-size: inherit;
+       font-family: inherit;
+       background-color: transparent;
+       color: black;
+       vertical-align: middle;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > input:focus {
+       outline: none;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle {
+       padding-right: 0.9375em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
+       right: 0;
+       top: 0;
+       width: 0.9375em;
+       height: 0.9375em;
+       margin: 0.775em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle {
+       padding-left: 1.875em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
+       left: 0;
+       top: 0;
+       width: 1.875em;
+       height: 1.875em;
+       margin: 0.3em;
+}
+.oo-ui-capsuleMultiSelectWidget:hover .oo-ui-capsuleMultiSelectWidget-handle {
+       border-color: rgba(0, 0, 0, 0.2);
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle {
+       color: #cccccc;
+       text-shadow: 0 1px 1px #ffffff;
+       border-color: #dddddd;
+       background-color: #f3f3f3;
+       cursor: default;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon,
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
+       opacity: 0.2;
+}
+.oo-ui-capsuleMultiSelectWidget .oo-ui-selectWidget {
+       border-top-color: #ffffff;
+}
+.oo-ui-capsuleItemWidget {
+       position: relative;
+       display: inline-block;
+       cursor: default;
+       white-space: nowrap;
+       width: auto;
+       max-width: 100%;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+       vertical-align: middle;
+       padding: 0 0.4em;
+       margin: 0 0.1em;
+       height: 1.7em;
+       line-height: 1.7em;
+       background: #eeeeee;
+       filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr='#ffffff', endColorstr='#dddddd');
+       background-image: -webkit-gradient(linear, right top, right bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd));
+       background-image: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+       background-image:    -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+       background-image:      -o-linear-gradient(top, #ffffff 0%, #dddddd 100%);
+       background-image:         linear-gradient(to bottom, #ffffff 0%, #dddddd 100%);
+       border: 1px solid #cccccc;
+       color: #555555;
+       border-radius: 0.25em;
+}
+.oo-ui-capsuleItemWidget > .oo-ui-iconElement-icon {
+       cursor: pointer;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-iconElement-icon {
+       cursor: default;
+}
+.oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+       display: block;
+       text-overflow: ellipsis;
+       overflow: hidden;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-labelElement-label {
+       padding-right: 1.3375em;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator {
+       position: absolute;
+       right: 0.4em;
+       top: 0;
+       width: 0.9375em;
+       height: 100%;
+       background-repeat: no-repeat;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicator-clear {
+       cursor: pointer;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
+       opacity: 0.5;
+       -webkit-transform: translate3d(0, 0, 0);
+       box-shadow: none;
+       color: #333333;
+       background: #eeeeee;
+       border-color: #cccccc;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-indicatorElement-indicator {
+       opacity: 0.2;
+}
 .oo-ui-comboBoxWidget {
        display: inline-block;
        position: relative;
index f5d2ea7..085f744 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.1
+ * OOjs UI v0.12.5
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-22T19:37:07Z
+ * Date: 2015-08-19T02:10:17Z
  */
 /**
  * @class
index d539219..41d06ff 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.1
+ * OOjs UI v0.12.5
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-22T19:37:14Z
+ * Date: 2015-08-19T02:10:25Z
  */
 @-webkit-keyframes oo-ui-progressBarWidget-slide {
        from {
@@ -82,8 +82,6 @@
 .oo-ui-buttonElement.oo-ui-iconElement > .oo-ui-buttonElement-button > .oo-ui-iconElement-icon {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-buttonElement-frameless {
        display: inline-block;
        box-shadow: inset 0 0 0 1px #1f4999;
        border-color: #1f4999;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #1f4999;
        border-color: #1f4999;
        box-shadow: inset 0 0 0 1px #005946;
        border-color: #005946;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #005946;
        border-color: #005946;
        box-shadow: inset 0 0 0 1px #73100a;
        border-color: #73100a;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #73100a;
        border-color: #73100a;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #347bff;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-progressive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #1f4999;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #00af89;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-constructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #005946;
        box-shadow: inset 0 0 0 1px #ffffff;
        border-color: #d11d13;
 }
-.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
+.oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled .oo-ui-buttonElement-button:active,
 .oo-ui-buttonElement-framed.oo-ui-widget-enabled.oo-ui-flaggedElement-primary.oo-ui-flaggedElement-destructive.oo-ui-widget-enabled.oo-ui-buttonElement-pressed > .oo-ui-buttonElement-button {
        color: #ffffff;
        background-color: #73100a;
 .oo-ui-iconElement.oo-ui-iconElement-icon {
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
 }
 .oo-ui-indicatorElement .oo-ui-indicatorElement-indicator,
 .oo-ui-indicatorElement.oo-ui-indicatorElement-indicator {
        background-size: contain;
        background-position: center center;
+       background-repeat: no-repeat;
 }
 .oo-ui-lookupElement > .oo-ui-menuSelectWidget {
        z-index: 1;
 .oo-ui-fieldLayout-disabled > .oo-ui-fieldLayout-body > .oo-ui-labelElement-label {
        color: #cccccc;
 }
+.oo-ui-fieldLayout-messages {
+       list-style: none none;
+       margin: 0;
+       padding: 0;
+       margin-top: 0.25em;
+       margin-left: 0.25em;
+}
+.oo-ui-fieldLayout-messages > li {
+       margin: 0;
+       padding: 0;
+       display: table;
+}
+.oo-ui-fieldLayout-messages .oo-ui-iconWidget {
+       display: table-cell;
+       border-right: 0.5em solid transparent;
+}
+.oo-ui-fieldLayout-messages .oo-ui-labelWidget {
+       display: table-cell;
+       padding: 0;
+       line-height: 1.875em;
+       vertical-align: middle;
+}
 .oo-ui-actionFieldLayout-input,
 .oo-ui-actionFieldLayout-button {
        display: table-cell;
 .oo-ui-fieldsetLayout.oo-ui-iconElement > .oo-ui-iconElement-icon {
        display: block;
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-fieldsetLayout.oo-ui-labelElement > .oo-ui-labelElement-label {
        display: inline-block;
        display: block;
        position: relative;
 }
+.oo-ui-horizontalLayout > .oo-ui-widget {
+       display: inline-block;
+       vertical-align: middle;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout {
+       display: inline-block;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout,
+.oo-ui-horizontalLayout > .oo-ui-widget {
+       margin-right: 0.5em;
+}
+.oo-ui-horizontalLayout > .oo-ui-layout:last-child,
+.oo-ui-horizontalLayout > .oo-ui-widget:last-child {
+       margin-right: 0;
+}
 .oo-ui-popupTool .oo-ui-popupWidget-popup,
 .oo-ui-popupTool .oo-ui-popupWidget-anchor {
        z-index: 4;
 .oo-ui-toolGroup .oo-ui-tool-link {
        text-decoration: none;
 }
-.oo-ui-toolGroup .oo-ui-tool-link .oo-ui-iconElement-icon {
-       background-position: center center;
-       background-repeat: no-repeat;
-}
 .oo-ui-toolbar-narrow .oo-ui-toolGroup + .oo-ui-toolGroup {
        margin-left: 0;
 }
 .oo-ui-popupToolGroup-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-popupToolGroup-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-popupToolGroup.oo-ui-widget-disabled .oo-ui-popupToolGroup-handle {
        cursor: default;
        position: absolute;
        z-index: 4;
 }
-.oo-ui-popupToolGroup .oo-ui-toolGroup-tools .oo-ui-iconElement-icon {
-       background-repeat: no-repeat;
-       background-position: center center;
-}
 .oo-ui-popupToolGroup-active.oo-ui-widget-enabled > .oo-ui-toolGroup-tools {
        display: block;
 }
        border: 0;
        border-radius: 0;
        margin: 0;
-       padding: 1.0546875em 0.3125em;
+       padding: 0 0.3125em;
 }
 .oo-ui-toolbar-actions > .oo-ui-buttonElement.oo-ui-labelElement > .oo-ui-buttonElement-button > .oo-ui-labelElement-label {
        margin: 0 1em;
-       line-height: inherit;
+       line-height: 3.125em;
+       /* 40/12.8 */
 }
 .oo-ui-optionWidget {
        position: relative;
 .oo-ui-decoratedOptionWidget .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget .oo-ui-indicatorElement-indicator {
        position: absolute;
-       background-repeat: no-repeat;
-       background-position: center center;
 }
 .oo-ui-decoratedOptionWidget.oo-ui-iconElement .oo-ui-iconElement-icon,
 .oo-ui-decoratedOptionWidget.oo-ui-indicatorElement .oo-ui-indicatorElement-indicator {
 .oo-ui-iconWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 1.875em;
        width: 1.875em;
 .oo-ui-indicatorWidget {
        display: inline-block;
        vertical-align: middle;
-       background-position: center center;
-       background-repeat: no-repeat;
        line-height: 2.5em;
        height: 0.9375em;
        width: 0.9375em;
             -o-transform: translateZ(0px);
                transform: translateZ(0px);
        height: 2em;
-       width: 4em;
+       width: 3.5em;
        border-radius: 1em;
-       border: 1px #dddddd solid;
+       border: 1px #555555 solid;
+       background: #ffffff;
+       -webkit-transition: background-color 0.1s ease-in-out;
+          -moz-transition: background-color 0.1s ease-in-out;
+           -ms-transition: background-color 0.1s ease-in-out;
+            -o-transition: background-color 0.1s ease-in-out;
+               transition: background-color 0.1s ease-in-out;
        margin-right: 0.5em;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
        margin-right: 0;
 }
 .oo-ui-toggleSwitchWidget-grip {
-       top: 0.25em;
-       left: 0.25em;
-       width: 1.5em;
-       height: 1.5em;
+       top: 0.5em;
+       left: 0.5em;
+       width: 1em;
+       height: 1em;
        margin-top: -1px;
        border-radius: 1em;
-       border: 1px #dddddd solid;
-       background-color: #f7f7f7;
+       background: #555555;
        -webkit-transition: left 0.1s ease-in-out, margin-left 0.1s ease-in-out;
           -moz-transition: left 0.1s ease-in-out, margin-left 0.1s ease-in-out;
            -ms-transition: left 0.1s ease-in-out, margin-left 0.1s ease-in-out;
                transition: left 0.1s ease-in-out, margin-left 0.1s ease-in-out;
 }
 .oo-ui-toggleSwitchWidget-glow {
-       border-radius: 1em;
-       background-color: #f7f7f7;
-       -webkit-transition: background-color 0.1s ease-in-out;
-          -moz-transition: background-color 0.1s ease-in-out;
-           -ms-transition: background-color 0.1s ease-in-out;
-            -o-transition: background-color 0.1s ease-in-out;
-               transition: background-color 0.1s ease-in-out;
+       display: none;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
-       left: 2.25em;
+       left: 2em;
        margin-left: -2px;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-       display: block;
-}
 .oo-ui-toggleSwitchWidget.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-grip {
-       left: 0.25em;
+       left: 0.5em;
        margin-left: 0;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled {
-       border: 1px #cccccc solid;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on {
+       background: #347bff;
+       border-color: #347bff;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+       background: #ffffff;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus {
+       outline: none;
+       border-color: #347bff;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:focus.oo-ui-toggleWidget-on {
+       border-color: #ffffff;
+       box-shadow: 0 0 0 1px #347bff;
 }
 .oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover {
-       border-color: #aaaaaa;
+       border-color: #2962cc;
+       box-shadow: 0 0 0 1px #2962cc;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled .oo-ui-toggleSwitchWidget-grip {
-       background-color: #ffffff;
-       border-color: #aaaaaa;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover.oo-ui-toggleWidget-on {
+       background: #2962cc;
+       border-color: #2962cc;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-glow {
-       background-color: #d0d0d0;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled:hover.oo-ui-toggleWidget-on .oo-ui-toggleSwitchWidget-grip {
+       background: #ffffff;
 }
-.oo-ui-toggleSwitchWidget.oo-ui-widget-enabled.oo-ui-toggleWidget-off .oo-ui-toggleSwitchWidget-glow {
-       background-color: #ffffff;
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled {
+       background: #dddddd;
+       border-color: #dddddd;
+}
+.oo-ui-toggleSwitchWidget.oo-ui-widget-disabled .oo-ui-toggleSwitchWidget-grip {
+       background: #ffffff;
 }
 .oo-ui-progressBarWidget {
        max-width: 50em;
        position: absolute;
        top: 0;
        height: 100%;
-       background-repeat: no-repeat;
        -webkit-touch-callout: none;
        -webkit-user-select: none;
           -moz-user-select: none;
 .oo-ui-dropdownWidget {
        display: inline-block;
        position: relative;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        background: #ffffff;
 .oo-ui-dropdownWidget-handle .oo-ui-indicatorElement-indicator,
 .oo-ui-dropdownWidget-handle .oo-ui-iconElement-icon {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-dropdownWidget > .oo-ui-menuSelectWidget {
        z-index: 1;
        display: inline-block;
        position: relative;
        vertical-align: middle;
-       margin: 0.25em 0;
        width: 100%;
        max-width: 50em;
        margin-right: 0.5em;
 .oo-ui-selectFileWidget-handle > .oo-ui-iconElement-icon,
 .oo-ui-selectFileWidget-handle > .oo-ui-selectFileWidget-clearButton {
        position: absolute;
-       background-position: center center;
-       background-repeat: no-repeat;
 }
 .oo-ui-selectFileWidget-handle > input[type="file"] {
        position: absolute;
 .oo-ui-outlineControlsWidget > .oo-ui-iconElement-icon {
        float: left;
        background-position: right center;
-       background-repeat: no-repeat;
 }
 .oo-ui-outlineControlsWidget-items {
        float: left;
        background-color: #ffffff;
        color: #333333;
 }
+.oo-ui-capsuleMultiSelectWidget {
+       display: inline-block;
+       position: relative;
+       width: 100%;
+       max-width: 50em;
+}
+.oo-ui-capsuleMultiSelectWidget-handle {
+       width: 100%;
+       display: inline-block;
+       position: relative;
+}
+.oo-ui-capsuleMultiSelectWidget-group {
+       display: inline;
+}
+.oo-ui-capsuleMultiSelectWidget > .oo-ui-menuSelectWidget {
+       z-index: 1;
+       width: 100%;
+}
+.oo-ui-capsuleMultiSelectWidget-handle {
+       background: #ffffff;
+       cursor: text;
+       min-height: 2.4em;
+       margin-right: 0.5em;
+       padding: 0.25em 0;
+       border: 1px solid #cccccc;
+       border-radius: 0.1em;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+}
+.oo-ui-capsuleMultiSelectWidget-handle:last-child {
+       margin-right: 0;
+}
+.oo-ui-capsuleMultiSelectWidget-handle .oo-ui-capsuleMultiSelectWidget-group {
+       margin: 0 0.2em;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator,
+.oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
+       position: absolute;
+       background-position: center center;
+       background-repeat: no-repeat;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > input {
+       border: none;
+       min-width: 1em;
+       max-width: 100%;
+       line-height: 1.675em;
+       margin: 0;
+       padding: 0;
+       font-size: inherit;
+       font-family: inherit;
+       background-color: transparent;
+       color: black;
+       vertical-align: middle;
+}
+.oo-ui-capsuleMultiSelectWidget-handle > input:focus {
+       outline: none;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle {
+       padding-right: 0.9375em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-indicatorElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
+       right: 0;
+       top: 0;
+       width: 0.9375em;
+       height: 0.9375em;
+       margin: 0.775em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle {
+       padding-left: 1.875em;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-iconElement .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon {
+       left: 0;
+       top: 0;
+       width: 1.875em;
+       height: 1.875em;
+       margin: 0.3em;
+}
+.oo-ui-capsuleMultiSelectWidget:hover .oo-ui-capsuleMultiSelectWidget-handle {
+       border-color: #aaaaaa;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle {
+       color: #cccccc;
+       text-shadow: 0 1px 1px #ffffff;
+       border-color: #dddddd;
+       background-color: #f3f3f3;
+       cursor: default;
+}
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-iconElement-icon,
+.oo-ui-capsuleMultiSelectWidget.oo-ui-widget-disabled .oo-ui-capsuleMultiSelectWidget-handle > .oo-ui-indicatorElement-indicator {
+       opacity: 0.2;
+}
+.oo-ui-capsuleMultiSelectWidget .oo-ui-selectWidget {
+       border-top-color: #ffffff;
+}
+.oo-ui-capsuleItemWidget {
+       position: relative;
+       display: inline-block;
+       cursor: default;
+       white-space: nowrap;
+       width: auto;
+       max-width: 100%;
+       -webkit-box-sizing: border-box;
+          -moz-box-sizing: border-box;
+               box-sizing: border-box;
+       vertical-align: middle;
+       padding: 0 0.4em;
+       margin: 0 0.1em;
+       height: 1.7em;
+       line-height: 1.7em;
+       background-color: #eeeeee;
+       border: 1px solid #cccccc;
+       color: #555555;
+       border-radius: 0.1em;
+}
+.oo-ui-capsuleItemWidget > .oo-ui-iconElement-icon {
+       cursor: pointer;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-iconElement-icon {
+       cursor: default;
+}
+.oo-ui-capsuleItemWidget.oo-ui-labelElement .oo-ui-labelElement-label {
+       display: block;
+       text-overflow: ellipsis;
+       overflow: hidden;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-labelElement-label {
+       padding-right: 1.3375em;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicatorElement-indicator {
+       position: absolute;
+       right: 0.4em;
+       top: 0;
+       width: 0.9375em;
+       height: 100%;
+       background-repeat: no-repeat;
+}
+.oo-ui-capsuleItemWidget.oo-ui-indicatorElement > .oo-ui-indicator-clear {
+       cursor: pointer;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled {
+       color: #cccccc;
+       text-shadow: 0 1px 1px #ffffff;
+       border-color: #dddddd;
+       background-color: #f3f3f3;
+}
+.oo-ui-capsuleItemWidget.oo-ui-widget-disabled > .oo-ui-indicatorElement-indicator {
+       opacity: 0.2;
+}
 .oo-ui-comboBoxWidget {
        display: inline-block;
        position: relative;
index b73f751..7d20dfb 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.1
+ * OOjs UI v0.12.5
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-22T19:37:07Z
+ * Date: 2015-08-19T02:10:17Z
  */
 /**
  * @class
index 96c3204..5344b1e 100644 (file)
@@ -1,12 +1,12 @@
 /*!
- * OOjs UI v0.12.1
+ * OOjs UI v0.12.5
  * https://www.mediawiki.org/wiki/OOjs_UI
  *
  * Copyright 2011–2015 OOjs UI Team and other contributors.
  * Released under the MIT license
  * http://oojs.mit-license.org
  *
- * Date: 2015-07-22T19:37:07Z
+ * Date: 2015-08-19T02:10:17Z
  */
 ( function ( OO ) {
 
@@ -84,11 +84,12 @@ OO.ui.isFocusableElement = function ( $element ) {
                        !$element.parents().addBack().filter( function () {
                                return $.css( this, 'visibility' ) === 'hidden';
                        } ).length
-               );
+               ),
+               isTabOk = isNaN( $element.attr( 'tabindex' ) ) || +$element.attr( 'tabindex' ) >= 0;
 
        return (
                ( isInElementGroup ? !node.disabled : isOtherElement ) &&
-               isVisible
+               isVisible && isTabOk
        );
 };
 
@@ -197,6 +198,38 @@ OO.ui.debounce = function ( func, wait, immediate ) {
        };
 };
 
+/**
+ * Proxy for `node.addEventListener( eventName, handler, true )`, if the browser supports it.
+ * Otherwise falls back to non-capturing event listeners.
+ *
+ * @param {HTMLElement} node
+ * @param {string} eventName
+ * @param {Function} handler
+ */
+OO.ui.addCaptureEventListener = function ( node, eventName, handler ) {
+       if ( node.addEventListener ) {
+               node.addEventListener( eventName, handler, true );
+       } else {
+               node.attachEvent( 'on' + eventName, handler );
+       }
+};
+
+/**
+ * Proxy for `node.removeEventListener( eventName, handler, true )`, if the browser supports it.
+ * Otherwise falls back to non-capturing event listeners.
+ *
+ * @param {HTMLElement} node
+ * @param {string} eventName
+ * @param {Function} handler
+ */
+OO.ui.removeCaptureEventListener = function ( node, eventName, handler ) {
+       if ( node.addEventListener ) {
+               node.removeEventListener( eventName, handler, true );
+       } else {
+               node.detachEvent( 'on' + eventName, handler );
+       }
+};
+
 /**
  * Reconstitute a JavaScript object corresponding to a widget created by
  * the PHP implementation.
@@ -318,6 +351,34 @@ OO.ui.infuse = function ( idOrNode ) {
                return msg;
        };
 
+       /**
+        * @param {string} url
+        * @return {boolean}
+        */
+       OO.ui.isSafeUrl = function ( url ) {
+               var protocol,
+                       // Keep in sync with php/Tag.php
+                       whitelist = [
+                               'bitcoin:', 'ftp:', 'ftps:', 'geo:', 'git:', 'gopher:', 'http:', 'https:', 'irc:', 'ircs:',
+                               'magnet:', 'mailto:', 'mms:', 'news:', 'nntp:', 'redis:', 'sftp:', 'sip:', 'sips:', 'sms:', 'ssh:',
+                               'svn:', 'tel:', 'telnet:', 'urn:', 'worldwind:', 'xmpp:'
+                       ];
+
+               if ( url.indexOf( ':' ) === -1 ) {
+                       // No protocol, safe
+                       return true;
+               }
+
+               protocol = url.split( ':', 1 )[0] + ':';
+               if ( !protocol.match( /^([A-za-z0-9\+\.\-])+:/ ) ) {
+                       // Not a valid protocol, safe
+                       return true;
+               }
+
+               // Safe if in the whitelist
+               return $.inArray( protocol, whitelist ) !== -1;
+       };
+
 } )();
 
 /*!
@@ -1076,7 +1137,7 @@ OO.ui.Element.static.tagName = 'div';
  *   DOM node.
  */
 OO.ui.Element.static.infuse = function ( idOrNode ) {
-       var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, true );
+       var obj = OO.ui.Element.static.unsafeInfuse( idOrNode, false );
        // Verify that the type matches up.
        // FIXME: uncomment after T89721 is fixed (see T90929)
        /*
@@ -1092,12 +1153,14 @@ OO.ui.Element.static.infuse = function ( idOrNode ) {
  * extra property so that only the top-level invocation touches the DOM.
  * @private
  * @param {string|HTMLElement|jQuery} idOrNode
- * @param {boolean} top True only for top-level invocation.
+ * @param {jQuery.Promise|boolean} domPromise A promise that will be resolved
+ *     when the top-level widget of this infusion is inserted into DOM,
+ *     replacing the original node; or false for top-level invocation.
  * @return {OO.ui.Element}
  */
-OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
+OO.ui.Element.static.unsafeInfuse = function ( idOrNode, domPromise ) {
        // look for a cached result of a previous infusion.
-       var id, $elem, data, cls, parts, parent, obj;
+       var id, $elem, data, cls, parts, parent, obj, top, state;
        if ( typeof idOrNode === 'string' ) {
                id = idOrNode;
                $elem = $( document.getElementById( id ) );
@@ -1105,7 +1168,10 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
                $elem = $( idOrNode );
                id = $elem.attr( 'id' );
        }
-       data = $elem.data( 'ooui-infused' );
+       if ( !$elem.length ) {
+               throw new Error( 'Widget not found: ' + id );
+       }
+       data = $elem.data( 'ooui-infused' ) || $elem[0].oouiInfused;
        if ( data ) {
                // cached!
                if ( data === true ) {
@@ -1113,9 +1179,6 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
                }
                return data;
        }
-       if ( !$elem.length ) {
-               throw new Error( 'Widget not found: ' + id );
-       }
        data = $elem.attr( 'data-ooui' );
        if ( !data ) {
                throw new Error( 'No infusion data found: ' + id );
@@ -1159,12 +1222,16 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
                throw new Error( 'Unknown widget type: id: ' + id + ', class: ' + data._ );
        }
 
+       if ( domPromise === false ) {
+               top = $.Deferred();
+               domPromise = top.promise();
+       }
        $elem.data( 'ooui-infused', true ); // prevent loops
        data.id = id; // implicit
        data = OO.copy( data, null, function deserialize( value ) {
                if ( OO.isPlainObject( value ) ) {
                        if ( value.tag ) {
-                               return OO.ui.Element.static.unsafeInfuse( value.tag, false );
+                               return OO.ui.Element.static.unsafeInfuse( value.tag, domPromise );
                        }
                        if ( value.html ) {
                                return new OO.ui.HtmlSnippet( value.html );
@@ -1173,13 +1240,22 @@ OO.ui.Element.static.unsafeInfuse = function ( idOrNode, top ) {
        } );
        // jscs:disable requireCapitalizedConstructors
        obj = new cls( data ); // rebuild widget
+       // pick up dynamic state, like focus, value of form inputs, scroll position, etc.
+       state = obj.gatherPreInfuseState( $elem );
        // now replace old DOM with this new DOM.
        if ( top ) {
                $elem.replaceWith( obj.$element );
+               // This element is now gone from the DOM, but if anyone is holding a reference to it,
+               // let's allow them to OO.ui.infuse() it and do what they expect (T105828).
+               // Do not use jQuery.data(), as using it on detached nodes leaks memory in 1.x line by design.
+               $elem[0].oouiInfused = obj;
+               top.resolve();
        }
        obj.$element.data( 'ooui-infused', obj );
        // set the 'data-ooui' attribute so we can identify infused widgets
        obj.$element.attr( 'data-ooui', '' );
+       // restore dynamic state after the new element is inserted into DOM
+       domPromise.done( obj.restorePreInfuseState.bind( obj, state ) );
        return obj;
 };
 
@@ -1753,12 +1829,41 @@ OO.ui.Element.prototype.scrollElementIntoView = function ( config ) {
        return OO.ui.Element.static.scrollIntoView( this.$element[ 0 ], config );
 };
 
+/**
+ * Gather the dynamic state (focus, value of form inputs, scroll position, etc.) of a HTML DOM node
+ * (and its children) that represent an Element of the same type and configuration as the current
+ * one, generated by the PHP implementation.
+ *
+ * This method is called just before `node` is detached from the DOM. The return value of this
+ * function will be passed to #restorePreInfuseState after this widget's #$element is inserted into
+ * DOM to replace `node`.
+ *
+ * @protected
+ * @param {HTMLElement} node
+ * @return {Object}
+ */
+OO.ui.Element.prototype.gatherPreInfuseState = function () {
+       return {};
+};
+
+/**
+ * Restore the pre-infusion dynamic state for this widget.
+ *
+ * This method is called after #$element has been inserted into DOM. The parameter is the return
+ * value of #gatherPreInfuseState.
+ *
+ * @protected
+ * @param {Object} state
+ */
+OO.ui.Element.prototype.restorePreInfuseState = function () {
+};
+
 /**
  * Layouts are containers for elements and are used to arrange other widgets of arbitrary type in a way
  * that is centrally controlled and can be updated dynamically. Layouts can be, and usually are, combined.
  * See {@link OO.ui.FieldsetLayout FieldsetLayout}, {@link OO.ui.FieldLayout FieldLayout}, {@link OO.ui.FormLayout FormLayout},
  * {@link OO.ui.PanelLayout PanelLayout}, {@link OO.ui.StackLayout StackLayout}, {@link OO.ui.PageLayout PageLayout},
- * and {@link OO.ui.BookletLayout BookletLayout} for more information and examples.
+ * {@link OO.ui.HorizontalLayout HorizontalLayout}, and {@link OO.ui.BookletLayout BookletLayout} for more information and examples.
  *
  * @abstract
  * @class
@@ -2090,7 +2195,27 @@ OO.ui.Window.prototype.getManager = function () {
  * @return {string} Symbolic name of the size: `small`, `medium`, `large`, `larger`, `full`
  */
 OO.ui.Window.prototype.getSize = function () {
-       return this.size;
+       var viewport = OO.ui.Element.static.getDimensions( this.getElementWindow() ),
+               sizes = this.manager.constructor.static.sizes,
+               size = this.size;
+
+       if ( !sizes[ size ] ) {
+               size = this.manager.constructor.static.defaultSize;
+       }
+       if ( size !== 'full' && viewport.rect.right - viewport.rect.left < sizes[ size ].width ) {
+               size = 'full';
+       }
+
+       return size;
+};
+
+/**
+ * Get the size properties associated with the current window size
+ *
+ * @return {Object} Size properties
+ */
+OO.ui.Window.prototype.getSizeProperties = function () {
+       return this.manager.constructor.static.sizes[ this.getSize() ];
 };
 
 /**
@@ -3423,20 +3548,11 @@ OO.ui.WindowManager.prototype.updateWindowSize = function ( win ) {
                return;
        }
 
-       var viewport = OO.ui.Element.static.getDimensions( win.getElementWindow() ),
-               sizes = this.constructor.static.sizes,
-               size = win.getSize();
-
-       if ( !sizes[ size ] ) {
-               size = this.constructor.static.defaultSize;
-       }
-       if ( size !== 'full' && viewport.rect.right - viewport.rect.left < sizes[ size ].width ) {
-               size = 'full';
-       }
+       var isFullscreen = win.getSize() === 'full';
 
-       this.$element.toggleClass( 'oo-ui-windowManager-fullscreen', size === 'full' );
-       this.$element.toggleClass( 'oo-ui-windowManager-floating', size !== 'full' );
-       win.setDimensions( sizes[ size ] );
+       this.$element.toggleClass( 'oo-ui-windowManager-fullscreen', isFullscreen );
+       this.$element.toggleClass( 'oo-ui-windowManager-floating', !isFullscreen );
+       win.setDimensions( win.getSizeProperties() );
 
        this.emit( 'resize', win );
 
@@ -4305,7 +4421,7 @@ OO.ui.mixin.ButtonElement.prototype.onMouseDown = function ( e ) {
        this.$element.addClass( 'oo-ui-buttonElement-pressed' );
        // Run the mouseup handler no matter where the mouse is when the button is let go, so we can
        // reliably remove the pressed class
-       this.getElementDocument().addEventListener( 'mouseup', this.onMouseUpHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onMouseUpHandler );
        // Prevent change of focus unless specifically configured otherwise
        if ( this.constructor.static.cancelButtonMouseDownEvents ) {
                return false;
@@ -4324,7 +4440,7 @@ OO.ui.mixin.ButtonElement.prototype.onMouseUp = function ( e ) {
        }
        this.$element.removeClass( 'oo-ui-buttonElement-pressed' );
        // Stop listening for mouseup, since we only needed this once
-       this.getElementDocument().removeEventListener( 'mouseup', this.onMouseUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onMouseUpHandler );
 };
 
 /**
@@ -4355,7 +4471,7 @@ OO.ui.mixin.ButtonElement.prototype.onKeyDown = function ( e ) {
        this.$element.addClass( 'oo-ui-buttonElement-pressed' );
        // Run the keyup handler no matter where the key is when the button is let go, so we can
        // reliably remove the pressed class
-       this.getElementDocument().addEventListener( 'keyup', this.onKeyUpHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onKeyUpHandler );
 };
 
 /**
@@ -4370,7 +4486,7 @@ OO.ui.mixin.ButtonElement.prototype.onKeyUp = function ( e ) {
        }
        this.$element.removeClass( 'oo-ui-buttonElement-pressed' );
        // Stop listening for keyup, since we only needed this once
-       this.getElementDocument().removeEventListener( 'keyup', this.onKeyUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onKeyUpHandler );
 };
 
 /**
@@ -5661,7 +5777,7 @@ OO.ui.mixin.LabelElement.prototype.setLabelContent = function ( label ) {
 };
 
 /**
- * LookupElement is a mixin that creates a {@link OO.ui.TextInputMenuSelectWidget menu} of suggested values for
+ * LookupElement is a mixin that creates a {@link OO.ui.FloatingMenuSelectWidget menu} of suggested values for
  * a {@link OO.ui.TextInputWidget text input widget}. Suggested values are based on the characters the user types
  * into the text input field and, in general, the menu is only displayed when the user types. If a suggested value is chosen
  * from the lookup menu, that value becomes the value of the input field.
@@ -5690,10 +5806,10 @@ OO.ui.mixin.LookupElement = function OoUiMixinLookupElement( config ) {
 
        // Properties
        this.$overlay = config.$overlay || this.$element;
-       this.lookupMenu = new OO.ui.TextInputMenuSelectWidget( this, {
+       this.lookupMenu = new OO.ui.FloatingMenuSelectWidget( {
                widget: this,
                input: this,
-               $container: config.$container
+               $container: config.$container || this.$element
        } );
 
        this.allowSuggestionsWhenEmpty = config.allowSuggestionsWhenEmpty || false;
@@ -5804,7 +5920,7 @@ OO.ui.mixin.LookupElement.prototype.onLookupMenuItemChoose = function ( item ) {
  * Get lookup menu.
  *
  * @private
- * @return {OO.ui.TextInputMenuSelectWidget}
+ * @return {OO.ui.FloatingMenuSelectWidget}
  */
 OO.ui.mixin.LookupElement.prototype.getLookupMenu = function () {
        return this.lookupMenu;
@@ -6174,7 +6290,8 @@ OO.ui.mixin.FlaggedElement.prototype.setFlaggedElement = function ( $flagged ) {
  * @return {boolean} The flag is set
  */
 OO.ui.mixin.FlaggedElement.prototype.hasFlag = function ( flag ) {
-       return flag in this.flags;
+       // This may be called before the constructor, thus before this.flags is set
+       return this.flags && ( flag in this.flags );
 };
 
 /**
@@ -6183,7 +6300,8 @@ OO.ui.mixin.FlaggedElement.prototype.hasFlag = function ( flag ) {
  * @return {string[]} Flag names
  */
 OO.ui.mixin.FlaggedElement.prototype.getFlags = function () {
-       return Object.keys( this.flags );
+       // This may be called before the constructor, thus before this.flags is set
+       return Object.keys( this.flags || {} );
 };
 
 /**
@@ -7588,8 +7706,8 @@ OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
                this.pressed = this.getTargetTool( e );
                if ( this.pressed ) {
                        this.pressed.setActive( true );
-                       this.getElementDocument().addEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
-                       this.getElementDocument().addEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onCapturedMouseKeyUpHandler );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onCapturedMouseKeyUpHandler );
                }
                return false;
        }
@@ -7602,8 +7720,8 @@ OO.ui.ToolGroup.prototype.onMouseKeyDown = function ( e ) {
  * @param {Event} e Mouse up or key up event
  */
 OO.ui.ToolGroup.prototype.onCapturedMouseKeyUp = function ( e ) {
-       this.getElementDocument().removeEventListener( 'mouseup', this.onCapturedMouseKeyUpHandler, true );
-       this.getElementDocument().removeEventListener( 'keyup', this.onCapturedMouseKeyUpHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onCapturedMouseKeyUpHandler );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onCapturedMouseKeyUpHandler );
        // onMouseKeyUp may be called a second time, depending on where the mouse is when the button is
        // released, but since `this.pressed` will no longer be true, the second call will be ignored.
        this.onMouseKeyUp( e );
@@ -7972,6 +8090,26 @@ OO.ui.MessageDialog.prototype.getSetupProcess = function ( data ) {
                }, this );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.MessageDialog.prototype.getReadyProcess = function ( data ) {
+       data = data || {};
+
+       // Parent method
+       return OO.ui.MessageDialog.parent.prototype.getReadyProcess.call( this, data )
+               .next( function () {
+                       // Focus the primary action button
+                       var actions = this.actions.get();
+                       actions = actions.filter( function ( action ) {
+                               return action.getFlags().indexOf( 'primary' ) > -1;
+                       } );
+                       if ( actions.length > 0 ) {
+                               actions[0].$button.focus();
+                       }
+               }, this );
+};
+
 /**
  * @inheritdoc
  */
@@ -8051,6 +8189,7 @@ OO.ui.MessageDialog.prototype.attachActions = function () {
 
        special = this.actions.getSpecial();
        others = this.actions.getOthers();
+
        if ( special.safe ) {
                this.$actions.append( special.safe.$element );
                special.safe.toggleFramed( false );
@@ -8169,6 +8308,9 @@ OO.ui.ProcessDialog = function OoUiProcessDialog( config ) {
        // Parent constructor
        OO.ui.ProcessDialog.parent.call( this, config );
 
+       // Properties
+       this.fitOnOpen = false;
+
        // Initialization
        this.$element.addClass( 'oo-ui-processDialog' );
 };
@@ -8310,6 +8452,16 @@ OO.ui.ProcessDialog.prototype.executeAction = function ( action ) {
                } );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.ProcessDialog.prototype.setDimensions = function () {
+       // Parent method
+       OO.ui.ProcessDialog.parent.prototype.setDimensions.apply( this, arguments );
+
+       this.fitLabel();
+};
+
 /**
  * Fit label between actions.
  *
@@ -8317,15 +8469,31 @@ OO.ui.ProcessDialog.prototype.executeAction = function ( action ) {
  * @chainable
  */
 OO.ui.ProcessDialog.prototype.fitLabel = function () {
-       var safeWidth, primaryWidth, biggerWidth, labelWidth, navigationWidth, leftWidth, rightWidth;
+       var safeWidth, primaryWidth, biggerWidth, labelWidth, navigationWidth, leftWidth, rightWidth,
+               size = this.getSizeProperties();
+
+       if ( typeof size.width !== 'number' ) {
+               if ( this.isOpened() ) {
+                       navigationWidth = this.$head.width() - 20;
+               } else if ( this.isOpening() ) {
+                       if ( !this.fitOnOpen ) {
+                               // Size is relative and the dialog isn't open yet, so wait.
+                               this.manager.opening.done( this.fitLabel.bind( this ) );
+                               this.fitOnOpen = true;
+                       }
+                       return;
+               } else {
+                       return;
+               }
+       } else {
+               navigationWidth = size.width - 20;
+       }
 
        safeWidth = this.$safeActions.is( ':visible' ) ? this.$safeActions.width() : 0;
        primaryWidth = this.$primaryActions.is( ':visible' ) ? this.$primaryActions.width() : 0;
        biggerWidth = Math.max( safeWidth, primaryWidth );
 
        labelWidth = this.title.$element.width();
-       // Is there a better way to calculate this?
-       navigationWidth = OO.ui.WindowManager.static.sizes[ this.getSize() ].width - 20;
 
        if ( 2 * biggerWidth + labelWidth < navigationWidth ) {
                // We have enough space to center the label
@@ -8419,6 +8587,7 @@ OO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {
                .first( function () {
                        // Make sure to hide errors
                        this.hideErrors();
+                       this.fitOnOpen = false;
                }, this );
 };
 
@@ -8445,13 +8614,21 @@ OO.ui.ProcessDialog.prototype.getTeardownProcess = function ( data ) {
  * @class
  * @extends OO.ui.Layout
  * @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {OO.ui.Widget} fieldWidget Field widget
  * @param {Object} [config] Configuration options
  * @cfg {string} [align='left'] Alignment of the label: 'left', 'right', 'top' or 'inline'
- * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a help icon will appear
- *  in the upper-right corner of the rendered field.
+ * @cfg {Array} [errors] Error messages about the widget, which will be displayed below the widget.
+ *  The array may contain strings or OO.ui.HtmlSnippet instances.
+ * @cfg {Array} [notices] Notices about the widget, which will be displayed below the widget.
+ *  The array may contain strings or OO.ui.HtmlSnippet instances.
+ * @cfg {string|OO.ui.HtmlSnippet} [help] Help text. When help text is specified, a "help" icon will appear
+ *  in the upper-right corner of the rendered field; clicking it will display the text in a popup.
+ *  For important messages, you are advised to use `notices`, as they are always shown.
+ *
+ * @throws {Error} An error is thrown if no widget is specified
  */
 OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
        // Allow passing positional parameters inside the config object
@@ -8460,8 +8637,13 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
                fieldWidget = config.fieldWidget;
        }
 
+       // Make sure we have required constructor arguments
+       if ( fieldWidget === undefined ) {
+               throw new Error( 'Widget not found' );
+       }
+
        var hasInputWidget = fieldWidget.constructor.static.supportsSimpleLabel,
-               div;
+               div, i;
 
        // Configuration initialization
        config = $.extend( { align: 'left' }, config );
@@ -8471,10 +8653,14 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
 
        // Mixin constructors
        OO.ui.mixin.LabelElement.call( this, config );
+       OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) );
 
        // Properties
        this.fieldWidget = fieldWidget;
+       this.errors = config.errors || [];
+       this.notices = config.notices || [];
        this.$field = $( '<div>' );
+       this.$messages = $( '<ul>' );
        this.$body = $( '<' + ( hasInputWidget ? 'label' : 'div' ) + '>' );
        this.align = null;
        if ( config.help ) {
@@ -8508,12 +8694,23 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
        this.$element
                .addClass( 'oo-ui-fieldLayout' )
                .append( this.$help, this.$body );
+       if ( this.errors.length || this.notices.length ) {
+               this.$element.append( this.$messages );
+       }
        this.$body.addClass( 'oo-ui-fieldLayout-body' );
+       this.$messages.addClass( 'oo-ui-fieldLayout-messages' );
        this.$field
                .addClass( 'oo-ui-fieldLayout-field' )
                .toggleClass( 'oo-ui-fieldLayout-disable', this.fieldWidget.isDisabled() )
                .append( this.fieldWidget.$element );
 
+       for ( i = 0; i < this.notices.length; i++ ) {
+               this.$messages.append( this.makeMessage( 'notice', this.notices[i] ) );
+       }
+       for ( i = 0; i < this.errors.length; i++ ) {
+               this.$messages.append( this.makeMessage( 'error', this.errors[i] ) );
+       }
+
        this.setAlignment( config.align );
 };
 
@@ -8521,6 +8718,7 @@ OO.ui.FieldLayout = function OoUiFieldLayout( fieldWidget, config ) {
 
 OO.inheritClass( OO.ui.FieldLayout, OO.ui.Layout );
 OO.mixinClass( OO.ui.FieldLayout, OO.ui.mixin.LabelElement );
+OO.mixinClass( OO.ui.FieldLayout, OO.ui.mixin.TitledElement );
 
 /* Methods */
 
@@ -8554,6 +8752,28 @@ OO.ui.FieldLayout.prototype.getField = function () {
        return this.fieldWidget;
 };
 
+/**
+ * @param {string} kind 'error' or 'notice'
+ * @param {string|OO.ui.HtmlSnippet} text
+ * @return {jQuery}
+ */
+OO.ui.FieldLayout.prototype.makeMessage = function ( kind, text ) {
+       var $listItem, $icon, message;
+       $listItem = $( '<li>' );
+       if ( kind === 'error' ) {
+               $icon = new OO.ui.IconWidget( { icon: 'alert', flags: [ 'warning' ] } ).$element;
+       } else if ( kind === 'notice' ) {
+               $icon = new OO.ui.IconWidget( { icon: 'info' } ).$element;
+       } else {
+               $icon = '';
+       }
+       message = new OO.ui.LabelWidget( { label: text } );
+       $listItem
+               .append( $icon, message.$element )
+               .addClass( 'oo-ui-fieldLayout-messages-' + kind );
+       return $listItem;
+};
+
 /**
  * Set the field alignment mode.
  *
@@ -8829,6 +9049,11 @@ OO.ui.FormLayout = function OoUiFormLayout( config ) {
        // Events
        this.$element.on( 'submit', this.onFormSubmit.bind( this ) );
 
+       // Make sure the action is safe
+       if ( config.action !== undefined && !OO.ui.isSafeUrl( config.action ) ) {
+               throw new Error( 'Potentially unsafe action provided: ' + config.action );
+       }
+
        // Initialization
        this.$element
                .addClass( 'oo-ui-formLayout' )
@@ -10576,6 +10801,53 @@ OO.ui.StackLayout.prototype.updateHiddenState = function ( items, selectedItem )
        }
 };
 
+/**
+ * HorizontalLayout arranges its contents in a single line (using `display: inline-block` for its
+ * items), with small margins between them. Convenient when you need to put a number of block-level
+ * widgets on a single line next to each other.
+ *
+ * Note that inline elements, such as OO.ui.ButtonWidgets, do not need this wrapper.
+ *
+ *     @example
+ *     // HorizontalLayout with a text input and a label
+ *     var layout = new OO.ui.HorizontalLayout( {
+ *       items: [
+ *         new OO.ui.LabelWidget( { label: 'Label' } ),
+ *         new OO.ui.TextInputWidget( { value: 'Text' } )
+ *       ]
+ *     } );
+ *     $( 'body' ).append( layout.$element );
+ *
+ * @class
+ * @extends OO.ui.Layout
+ * @mixins OO.ui.mixin.GroupElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {OO.ui.Widget[]|OO.ui.Layout[]} [items] Widgets or other layouts to add to the layout.
+ */
+OO.ui.HorizontalLayout = function OoUiHorizontalLayout( config ) {
+       // Configuration initialization
+       config = config || {};
+
+       // Parent constructor
+       OO.ui.HorizontalLayout.parent.call( this, config );
+
+       // Mixin constructors
+       OO.ui.mixin.GroupElement.call( this, $.extend( {}, config, { $group: this.$element } ) );
+
+       // Initialization
+       this.$element.addClass( 'oo-ui-horizontalLayout' );
+       if ( Array.isArray( config.items ) ) {
+               this.addItems( config.items );
+       }
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.HorizontalLayout, OO.ui.Layout );
+OO.mixinClass( OO.ui.HorizontalLayout, OO.ui.mixin.GroupElement );
+
 /**
  * BarToolGroups are one of three types of {@link OO.ui.ToolGroup toolgroups} that are used to
  * create {@link OO.ui.Toolbar toolbars} (the other types of groups are {@link OO.ui.MenuToolGroup MenuToolGroup}
@@ -10864,13 +11136,15 @@ OO.ui.PopupToolGroup.prototype.onHandleMouseKeyDown = function ( e ) {
  * deactivation.
  */
 OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
+       var containerWidth, containerLeft;
        value = !!value;
        if ( this.active !== value ) {
                this.active = value;
                if ( value ) {
-                       this.getElementDocument().addEventListener( 'mouseup', this.onBlurHandler, true );
-                       this.getElementDocument().addEventListener( 'keyup', this.onBlurHandler, true );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'mouseup', this.onBlurHandler );
+                       OO.ui.addCaptureEventListener( this.getElementDocument(), 'keyup', this.onBlurHandler );
 
+                       this.$clippable.css( 'left', '' );
                        // Try anchoring the popup to the left first
                        this.$element.addClass( 'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left' );
                        this.toggleClipping( true );
@@ -10882,9 +11156,22 @@ OO.ui.PopupToolGroup.prototype.setActive = function ( value ) {
                                        .addClass( 'oo-ui-popupToolGroup-right' );
                                this.toggleClipping( true );
                        }
+                       if ( this.isClippedHorizontally() ) {
+                               // Anchoring to the right also caused the popup to clip, so just make it fill the container
+                               containerWidth = this.$clippableContainer.width();
+                               containerLeft = this.$clippableContainer.offset().left;
+
+                               this.toggleClipping( false );
+                               this.$element.removeClass( 'oo-ui-popupToolGroup-right' );
+
+                               this.$clippable.css( {
+                                       left: -( this.$element.offset().left - containerLeft ),
+                                       width: containerWidth
+                               } );
+                       }
                } else {
-                       this.getElementDocument().removeEventListener( 'mouseup', this.onBlurHandler, true );
-                       this.getElementDocument().removeEventListener( 'keyup', this.onBlurHandler, true );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup', this.onBlurHandler );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'keyup', this.onBlurHandler );
                        this.$element.removeClass(
                                'oo-ui-popupToolGroup-active oo-ui-popupToolGroup-left  oo-ui-popupToolGroup-right'
                        );
@@ -11978,6 +12265,12 @@ OO.ui.ButtonWidget.prototype.getNoFollow = function () {
  */
 OO.ui.ButtonWidget.prototype.setHref = function ( href ) {
        href = typeof href === 'string' ? href : null;
+       if ( href !== null ) {
+               if ( !OO.ui.isSafeUrl( href ) ) {
+                       throw new Error( 'Potentially unsafe href provided: ' + href );
+               }
+
+       }
 
        if ( href !== this.href ) {
                this.href = href;
@@ -12399,106 +12692,784 @@ OO.ui.ToggleButtonWidget.prototype.setButtonElement = function ( $button ) {
 };
 
 /**
- * DropdownWidgets are not menus themselves, rather they contain a menu of options created with
- * OO.ui.MenuOptionWidget. The DropdownWidget takes care of opening and displaying the menu so that
- * users can interact with it.
+ * CapsuleMultiSelectWidgets are something like a {@link OO.ui.ComboBoxWidget combo box widget}
+ * that allows for selecting multiple values.
  *
- * If you want to use this within a HTML form, such as a OO.ui.FormLayout, use
- * OO.ui.DropdownInputWidget instead.
+ * For more information about menus and options, please see the [OOjs UI documentation on MediaWiki][1].
  *
  *     @example
- *     // Example: A DropdownWidget with a menu that contains three options
- *     var dropDown = new OO.ui.DropdownWidget( {
- *         label: 'Dropdown menu: Select a menu option',
+ *     // Example: A CapsuleMultiSelectWidget.
+ *     var capsule = new OO.ui.CapsuleMultiSelectWidget( {
+ *         label: 'CapsuleMultiSelectWidget',
+ *         selected: [ 'Option 1', 'Option 3' ],
  *         menu: {
  *             items: [
  *                 new OO.ui.MenuOptionWidget( {
- *                     data: 'a',
- *                     label: 'First'
+ *                     data: 'Option 1',
+ *                     label: 'Option One'
  *                 } ),
  *                 new OO.ui.MenuOptionWidget( {
- *                     data: 'b',
- *                     label: 'Second'
+ *                     data: 'Option 2',
+ *                     label: 'Option Two'
  *                 } ),
  *                 new OO.ui.MenuOptionWidget( {
- *                     data: 'c',
- *                     label: 'Third'
+ *                     data: 'Option 3',
+ *                     label: 'Option Three'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 4',
+ *                     label: 'Option Four'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'Option 5',
+ *                     label: 'Option Five'
  *                 } )
  *             ]
  *         }
  *     } );
- *
- *     $( 'body' ).append( dropDown.$element );
- *
- * For more information, please see the [OOjs UI documentation on MediaWiki] [1].
+ *     $( 'body' ).append( capsule.$element );
  *
  * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options
  *
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.IconElement
- * @mixins OO.ui.mixin.IndicatorElement
- * @mixins OO.ui.mixin.LabelElement
- * @mixins OO.ui.mixin.TitledElement
  * @mixins OO.ui.mixin.TabIndexedElement
+ * @mixins OO.ui.mixin.GroupElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to menu widget
- */
-OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
+ * @cfg {boolean} [allowArbitrary=false] Allow data items to be added even if not present in the menu.
+ * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.
+ * @cfg {Object} [popup] Configuration options to pass to the {@link OO.ui.PopupWidget popup widget}.
+ *  If specified, this popup will be shown instead of the menu (but the menu
+ *  will still be used for item labels and allowArbitrary=false). The widgets
+ *  in the popup should use this.addItemsFromData() or this.addItems() as necessary.
+ * @cfg {jQuery} [$overlay] Render the menu or popup into a separate layer.
+ *  This configuration is useful in cases where the expanded menu is larger than
+ *  its containing `<div>`. The specified overlay layer is usually on top of
+ *  the containing `<div>` and has a larger area. By default, the menu uses
+ *  relative positioning.
+ */
+OO.ui.CapsuleMultiSelectWidget = function OoUiCapsuleMultiSelectWidget( config ) {
+       var $tabFocus;
+
        // Configuration initialization
-       config = $.extend( { indicator: 'down' }, config );
+       config = config || {};
 
        // Parent constructor
-       OO.ui.DropdownWidget.parent.call( this, config );
+       OO.ui.CapsuleMultiSelectWidget.parent.call( this, config );
 
-       // Properties (must be set before TabIndexedElement constructor call)
-       this.$handle = this.$( '<span>' );
+       // Properties (must be set before mixin constructor calls)
+       this.$input = config.popup ? null : $( '<input>' );
+       this.$handle = $( '<div>' );
 
        // Mixin constructors
-       OO.ui.mixin.IconElement.call( this, config );
+       OO.ui.mixin.GroupElement.call( this, config );
+       if ( config.popup ) {
+               config.popup = $.extend( {}, config.popup, {
+                       align: 'forwards',
+                       anchor: false
+               } );
+               OO.ui.mixin.PopupElement.call( this, config );
+               $tabFocus = $( '<span>' );
+               OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: $tabFocus } ) );
+       } else {
+               this.popup = null;
+               $tabFocus = null;
+               OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$input } ) );
+       }
        OO.ui.mixin.IndicatorElement.call( this, config );
-       OO.ui.mixin.LabelElement.call( this, config );
-       OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) );
-       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
+       OO.ui.mixin.IconElement.call( this, config );
 
        // Properties
-       this.menu = new OO.ui.MenuSelectWidget( $.extend( { widget: this }, config.menu ) );
+       this.allowArbitrary = !!config.allowArbitrary;
+       this.$overlay = config.$overlay || this.$element;
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
+               {
+                       widget: this,
+                       $input: this.$input,
+                       $container: this.$element,
+                       filterFromInput: true,
+                       disabled: this.isDisabled()
+               },
+               config.menu
+       ) );
 
        // Events
+       if ( this.popup ) {
+               $tabFocus.on( {
+                       focus: this.onFocusForPopup.bind( this )
+               } );
+               this.popup.$element.on( 'focusout', this.onPopupFocusOut.bind( this ) );
+               if ( this.popup.$autoCloseIgnore ) {
+                       this.popup.$autoCloseIgnore.on( 'focusout', this.onPopupFocusOut.bind( this ) );
+               }
+               this.popup.connect( this, {
+                       toggle: function ( visible ) {
+                               $tabFocus.toggle( !visible );
+                       }
+               } );
+       } else {
+               this.$input.on( {
+                       focus: this.onInputFocus.bind( this ),
+                       blur: this.onInputBlur.bind( this ),
+                       'propertychange change click mouseup keydown keyup input cut paste select': this.onInputChange.bind( this ),
+                       keydown: this.onKeyDown.bind( this ),
+                       keypress: this.onKeyPress.bind( this )
+               } );
+       }
+       this.menu.connect( this, {
+               choose: 'onMenuChoose',
+               add: 'onMenuItemsChange',
+               remove: 'onMenuItemsChange'
+       } );
        this.$handle.on( {
-               click: this.onClick.bind( this ),
-               keypress: this.onKeyPress.bind( this )
+               click: this.onClick.bind( this )
        } );
-       this.menu.connect( this, { select: 'onMenuSelect' } );
 
        // Initialization
-       this.$handle
-               .addClass( 'oo-ui-dropdownWidget-handle' )
-               .append( this.$icon, this.$label, this.$indicator );
-       this.$element
-               .addClass( 'oo-ui-dropdownWidget' )
-               .append( this.$handle, this.menu.$element );
+       if ( this.$input ) {
+               this.$input.prop( 'disabled', this.isDisabled() );
+               this.$input.attr( {
+                       role: 'combobox',
+                       'aria-autocomplete': 'list'
+               } );
+               this.$input.width( '1em' );
+       }
+       if ( config.data ) {
+               this.setItemsFromData( config.data );
+       }
+       this.$group.addClass( 'oo-ui-capsuleMultiSelectWidget-group' );
+       this.$handle.addClass( 'oo-ui-capsuleMultiSelectWidget-handle' )
+               .append( this.$indicator, this.$icon, this.$group );
+       this.$element.addClass( 'oo-ui-capsuleMultiSelectWidget' )
+               .append( this.$handle );
+       if ( this.popup ) {
+               this.$handle.append( $tabFocus );
+               this.$overlay.append( this.popup.$element );
+       } else {
+               this.$handle.append( this.$input );
+               this.$overlay.append( this.menu.$element );
+       }
+       this.onMenuItemsChange();
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.DropdownWidget, OO.ui.Widget );
-OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IconElement );
-OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IndicatorElement );
-OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.LabelElement );
-OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TitledElement );
-OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TabIndexedElement );
+OO.inheritClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.Widget );
+OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.GroupElement );
+OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.PopupElement );
+OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.TabIndexedElement );
+OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.IndicatorElement );
+OO.mixinClass( OO.ui.CapsuleMultiSelectWidget, OO.ui.mixin.IconElement );
 
-/* Methods */
+/* Events */
 
 /**
- * Get the menu.
+ * @event change
  *
- * @return {OO.ui.MenuSelectWidget} Menu of widget
+ * A change event is emitted when the set of selected items changes.
+ *
+ * @param {Mixed[]} datas Data of the now-selected items
  */
-OO.ui.DropdownWidget.prototype.getMenu = function () {
+
+/* Methods */
+
+/**
+ * Get the data of the items in the capsule
+ * @return {Mixed[]}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.getItemsData = function () {
+       return $.map( this.getItems(), function ( e ) { return e.data; } );
+};
+
+/**
+ * Set the items in the capsule by providing data
+ * @chainable
+ * @param {Mixed[]} datas
+ * @return {OO.ui.CapsuleMultiSelectWidget}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.setItemsFromData = function ( datas ) {
+       var widget = this,
+               menu = this.menu,
+               items = this.getItems();
+
+       $.each( datas, function ( i, data ) {
+               var j, label,
+                       item = menu.getItemFromData( data );
+
+               if ( item ) {
+                       label = item.label;
+               } else if ( widget.allowArbitrary ) {
+                       label = String( data );
+               } else {
+                       return;
+               }
+
+               item = null;
+               for ( j = 0; j < items.length; j++ ) {
+                       if ( items[j].data === data && items[j].label === label ) {
+                               item = items[j];
+                               items.splice( j, 1 );
+                               break;
+                       }
+               }
+               if ( !item ) {
+                       item = new OO.ui.CapsuleItemWidget( { data: data, label: label } );
+               }
+               widget.addItems( [ item ], i );
+       } );
+
+       if ( items.length ) {
+               widget.removeItems( items );
+       }
+
+       return this;
+};
+
+/**
+ * Add items to the capsule by providing their data
+ * @chainable
+ * @param {Mixed[]} datas
+ * @return {OO.ui.CapsuleMultiSelectWidget}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.addItemsFromData = function ( datas ) {
+       var widget = this,
+               menu = this.menu,
+               items = [];
+
+       $.each( datas, function ( i, data ) {
+               var item;
+
+               if ( !widget.getItemFromData( data ) ) {
+                       item = menu.getItemFromData( data );
+                       if ( item ) {
+                               items.push( new OO.ui.CapsuleItemWidget( { data: data, label: item.label } ) );
+                       } else if ( widget.allowArbitrary ) {
+                               items.push( new OO.ui.CapsuleItemWidget( { data: data, label: String( data ) } ) );
+                       }
+               }
+       } );
+
+       if ( items.length ) {
+               this.addItems( items );
+       }
+
+       return this;
+};
+
+/**
+ * Remove items by data
+ * @chainable
+ * @param {Mixed[]} datas
+ * @return {OO.ui.CapsuleMultiSelectWidget}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.removeItemsFromData = function ( datas ) {
+       var widget = this,
+               items = [];
+
+       $.each( datas, function ( i, data ) {
+               var item = widget.getItemFromData( data );
+               if ( item ) {
+                       items.push( item );
+               }
+       } );
+
+       if ( items.length ) {
+               this.removeItems( items );
+       }
+
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.addItems = function ( items ) {
+       var same, i, l,
+               oldItems = this.items.slice();
+
+       OO.ui.mixin.GroupElement.prototype.addItems.call( this, items );
+
+       if ( this.items.length !== oldItems.length ) {
+               same = false;
+       } else {
+               same = true;
+               for ( i = 0, l = oldItems.length; same && i < l; i++ ) {
+                       same = same && this.items[i] === oldItems[i];
+               }
+       }
+       if ( !same ) {
+               this.emit( 'change', this.getItemsData() );
+       }
+
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.removeItems = function ( items ) {
+       var same, i, l,
+               oldItems = this.items.slice();
+
+       OO.ui.mixin.GroupElement.prototype.removeItems.call( this, items );
+
+       if ( this.items.length !== oldItems.length ) {
+               same = false;
+       } else {
+               same = true;
+               for ( i = 0, l = oldItems.length; same && i < l; i++ ) {
+                       same = same && this.items[i] === oldItems[i];
+               }
+       }
+       if ( !same ) {
+               this.emit( 'change', this.getItemsData() );
+       }
+
+       return this;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.clearItems = function () {
+       if ( this.items.length ) {
+               OO.ui.mixin.GroupElement.prototype.clearItems.call( this );
+               this.emit( 'change', this.getItemsData() );
+       }
+       return this;
+};
+
+/**
+ * Get the capsule widget's menu.
+ * @return {OO.ui.MenuSelectWidget} Menu widget
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.getMenu = function () {
+       return this.menu;
+};
+
+/**
+ * Handle focus events
+ *
+ * @private
+ * @param {jQuery.Event} event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onInputFocus = function () {
+       if ( !this.isDisabled() ) {
+               this.menu.toggle( true );
+       }
+};
+
+/**
+ * Handle blur events
+ *
+ * @private
+ * @param {jQuery.Event} event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onInputBlur = function () {
+       this.clearInput();
+};
+
+/**
+ * Handle focus events
+ *
+ * @private
+ * @param {jQuery.Event} event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onFocusForPopup = function () {
+       if ( !this.isDisabled() ) {
+               this.popup.setSize( this.$handle.width() );
+               this.popup.toggle( true );
+               this.popup.$element.find( '*' )
+                       .filter( function () { return OO.ui.isFocusableElement( $( this ), true ); } )
+                       .first()
+                       .focus();
+       }
+};
+
+/**
+ * Handles popup focus out events.
+ *
+ * @private
+ * @param {Event} e Focus out event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onPopupFocusOut = function () {
+       var widget = this.popup;
+
+       setTimeout( function () {
+               if (
+                       widget.isVisible() &&
+                       !OO.ui.contains( widget.$element[0], document.activeElement, true ) &&
+                       ( !widget.$autoCloseIgnore || !widget.$autoCloseIgnore.has( document.activeElement ).length )
+               ) {
+                       widget.toggle( false );
+               }
+       } );
+};
+
+/**
+ * Handle mouse click events.
+ *
+ * @private
+ * @param {jQuery.Event} e Mouse click event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onClick = function ( e ) {
+       if ( e.which === 1 ) {
+               this.focus();
+               return false;
+       }
+};
+
+/**
+ * Handle key press events.
+ *
+ * @private
+ * @param {jQuery.Event} e Key press event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onKeyPress = function ( e ) {
+       var item;
+
+       if ( !this.isDisabled() ) {
+               if ( e.which === OO.ui.Keys.ESCAPE ) {
+                       this.clearInput();
+                       return false;
+               }
+
+               if ( !this.popup ) {
+                       this.menu.toggle( true );
+                       if ( e.which === OO.ui.Keys.ENTER ) {
+                               item = this.menu.getItemFromLabel( this.$input.val(), true );
+                               if ( item ) {
+                                       this.addItemsFromData( [ item.data ] );
+                                       this.clearInput();
+                               } else if ( this.allowArbitrary && this.$input.val().trim() !== '' ) {
+                                       this.addItemsFromData( [ this.$input.val() ] );
+                                       this.clearInput();
+                               }
+                               return false;
+                       }
+
+                       // Make sure the input gets resized.
+                       setTimeout( this.onInputChange.bind( this ), 0 );
+               }
+       }
+};
+
+/**
+ * Handle key down events.
+ *
+ * @private
+ * @param {jQuery.Event} e Key down event
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onKeyDown = function ( e ) {
+       if ( !this.isDisabled() ) {
+               // 'keypress' event is not triggered for Backspace
+               if ( e.keyCode === OO.ui.Keys.BACKSPACE && this.$input.val() === '' ) {
+                       if ( this.items.length ) {
+                               this.removeItems( this.items.slice( -1 ) );
+                       }
+                       return false;
+               }
+       }
+};
+
+/**
+ * Handle input change events.
+ *
+ * @private
+ * @param {jQuery.Event} e Event of some sort
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onInputChange = function () {
+       if ( !this.isDisabled() ) {
+               this.$input.width( this.$input.val().length + 'em' );
+       }
+};
+
+/**
+ * Handle menu choose events.
+ *
+ * @private
+ * @param {OO.ui.OptionWidget} item Chosen item
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onMenuChoose = function ( item ) {
+       if ( item && item.isVisible() ) {
+               this.addItemsFromData( [ item.getData() ] );
+               this.clearInput();
+       }
+};
+
+/**
+ * Handle menu item change events.
+ *
+ * @private
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.onMenuItemsChange = function () {
+       this.setItemsFromData( this.getItemsData() );
+       this.$element.toggleClass( 'oo-ui-capsuleMultiSelectWidget-empty', this.menu.isEmpty() );
+};
+
+/**
+ * Clear the input field
+ * @private
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.clearInput = function () {
+       if ( this.$input ) {
+               this.$input.val( '' );
+               this.$input.width( '1em' );
+       }
+       if ( this.popup ) {
+               this.popup.toggle( false );
+       }
+       this.menu.toggle( false );
+       this.menu.selectItem();
+       this.menu.highlightItem();
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.setDisabled = function ( disabled ) {
+       var i, len;
+
+       // Parent method
+       OO.ui.CapsuleMultiSelectWidget.parent.prototype.setDisabled.call( this, disabled );
+
+       if ( this.$input ) {
+               this.$input.prop( 'disabled', this.isDisabled() );
+       }
+       if ( this.menu ) {
+               this.menu.setDisabled( this.isDisabled() );
+       }
+       if ( this.popup ) {
+               this.popup.setDisabled( this.isDisabled() );
+       }
+
+       if ( this.items ) {
+               for ( i = 0, len = this.items.length; i < len; i++ ) {
+                       this.items[i].updateDisabled();
+               }
+       }
+
+       return this;
+};
+
+/**
+ * Focus the widget
+ * @chainable
+ * @return {OO.ui.CapsuleMultiSelectWidget}
+ */
+OO.ui.CapsuleMultiSelectWidget.prototype.focus = function () {
+       if ( !this.isDisabled() ) {
+               if ( this.popup ) {
+                       this.popup.setSize( this.$handle.width() );
+                       this.popup.toggle( true );
+                       this.popup.$element.find( '*' )
+                               .filter( function () { return OO.ui.isFocusableElement( $( this ), true ); } )
+                               .first()
+                               .focus();
+               } else {
+                       this.menu.toggle( true );
+                       this.$input.focus();
+               }
+       }
+       return this;
+};
+
+/**
+ * CapsuleItemWidgets are used within a {@link OO.ui.CapsuleMultiSelectWidget
+ * CapsuleMultiSelectWidget} to display the selected items.
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.mixin.ItemWidget
+ * @mixins OO.ui.mixin.IndicatorElement
+ * @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.FlaggedElement
+ * @mixins OO.ui.mixin.TabIndexedElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ */
+OO.ui.CapsuleItemWidget = function OoUiCapsuleItemWidget( config ) {
+       // Configuration initialization
+       config = config || {};
+
+       // Parent constructor
+       OO.ui.CapsuleItemWidget.parent.call( this, config );
+
+       // Properties (must be set before mixin constructor calls)
+       this.$indicator = $( '<span>' );
+
+       // Mixin constructors
+       OO.ui.mixin.ItemWidget.call( this );
+       OO.ui.mixin.IndicatorElement.call( this, $.extend( {}, config, { $indicator: this.$indicator, indicator: 'clear' } ) );
+       OO.ui.mixin.LabelElement.call( this, config );
+       OO.ui.mixin.FlaggedElement.call( this, config );
+       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$indicator } ) );
+
+       // Events
+       this.$indicator.on( {
+               keydown: this.onCloseKeyDown.bind( this ),
+               click: this.onCloseClick.bind( this )
+       } );
+       this.$element.on( 'click', false );
+
+       // Initialization
+       this.$element
+               .addClass( 'oo-ui-capsuleItemWidget' )
+               .append( this.$indicator, this.$label );
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.CapsuleItemWidget, OO.ui.Widget );
+OO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.ItemWidget );
+OO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.IndicatorElement );
+OO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.LabelElement );
+OO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.FlaggedElement );
+OO.mixinClass( OO.ui.CapsuleItemWidget, OO.ui.mixin.TabIndexedElement );
+
+/* Methods */
+
+/**
+ * Handle close icon clicks
+ * @param {jQuery.Event} event
+ */
+OO.ui.CapsuleItemWidget.prototype.onCloseClick = function () {
+       var element = this.getElementGroup();
+
+       if ( !this.isDisabled() && element && $.isFunction( element.removeItems ) ) {
+               element.removeItems( [ this ] );
+               element.focus();
+       }
+};
+
+/**
+ * Handle close keyboard events
+ * @param {jQuery.Event} event Key down event
+ */
+OO.ui.CapsuleItemWidget.prototype.onCloseKeyDown = function ( e ) {
+       if ( !this.isDisabled() && $.isFunction( this.getElementGroup().removeItems ) ) {
+               switch ( e.which ) {
+                       case OO.ui.Keys.ENTER:
+                       case OO.ui.Keys.BACKSPACE:
+                       case OO.ui.Keys.SPACE:
+                               this.getElementGroup().removeItems( [ this ] );
+                               return false;
+               }
+       }
+};
+
+/**
+ * DropdownWidgets are not menus themselves, rather they contain a menu of options created with
+ * OO.ui.MenuOptionWidget. The DropdownWidget takes care of opening and displaying the menu so that
+ * users can interact with it.
+ *
+ * If you want to use this within a HTML form, such as a OO.ui.FormLayout, use
+ * OO.ui.DropdownInputWidget instead.
+ *
+ *     @example
+ *     // Example: A DropdownWidget with a menu that contains three options
+ *     var dropDown = new OO.ui.DropdownWidget( {
+ *         label: 'Dropdown menu: Select a menu option',
+ *         menu: {
+ *             items: [
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'a',
+ *                     label: 'First'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'b',
+ *                     label: 'Second'
+ *                 } ),
+ *                 new OO.ui.MenuOptionWidget( {
+ *                     data: 'c',
+ *                     label: 'Third'
+ *                 } )
+ *             ]
+ *         }
+ *     } );
+ *
+ *     $( 'body' ).append( dropDown.$element );
+ *
+ * For more information, please see the [OOjs UI documentation on MediaWiki] [1].
+ *
+ * [1]: https://www.mediawiki.org/wiki/OOjs_UI/Widgets/Selects_and_Options#Menu_selects_and_options
+ *
+ * @class
+ * @extends OO.ui.Widget
+ * @mixins OO.ui.mixin.IconElement
+ * @mixins OO.ui.mixin.IndicatorElement
+ * @mixins OO.ui.mixin.LabelElement
+ * @mixins OO.ui.mixin.TitledElement
+ * @mixins OO.ui.mixin.TabIndexedElement
+ *
+ * @constructor
+ * @param {Object} [config] Configuration options
+ * @cfg {Object} [menu] Configuration options to pass to {@link OO.ui.FloatingMenuSelectWidget menu select widget}
+ * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
+ *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
+ *  containing `<div>` and has a larger area. By default, the menu uses relative positioning.
+ */
+OO.ui.DropdownWidget = function OoUiDropdownWidget( config ) {
+       // Configuration initialization
+       config = $.extend( { indicator: 'down' }, config );
+
+       // Parent constructor
+       OO.ui.DropdownWidget.parent.call( this, config );
+
+       // Properties (must be set before TabIndexedElement constructor call)
+       this.$handle = this.$( '<span>' );
+       this.$overlay = config.$overlay || this.$element;
+
+       // Mixin constructors
+       OO.ui.mixin.IconElement.call( this, config );
+       OO.ui.mixin.IndicatorElement.call( this, config );
+       OO.ui.mixin.LabelElement.call( this, config );
+       OO.ui.mixin.TitledElement.call( this, $.extend( {}, config, { $titled: this.$label } ) );
+       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$handle } ) );
+
+       // Properties
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend( {
+               widget: this,
+               $container: this.$element
+       }, config.menu ) );
+
+       // Events
+       this.$handle.on( {
+               click: this.onClick.bind( this ),
+               keypress: this.onKeyPress.bind( this )
+       } );
+       this.menu.connect( this, { select: 'onMenuSelect' } );
+
+       // Initialization
+       this.$handle
+               .addClass( 'oo-ui-dropdownWidget-handle' )
+               .append( this.$icon, this.$label, this.$indicator );
+       this.$element
+               .addClass( 'oo-ui-dropdownWidget' )
+               .append( this.$handle );
+       this.$overlay.append( this.menu.$element );
+};
+
+/* Setup */
+
+OO.inheritClass( OO.ui.DropdownWidget, OO.ui.Widget );
+OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IconElement );
+OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.IndicatorElement );
+OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.LabelElement );
+OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TitledElement );
+OO.mixinClass( OO.ui.DropdownWidget, OO.ui.mixin.TabIndexedElement );
+
+/* Methods */
+
+/**
+ * Get the menu.
+ *
+ * @return {OO.ui.MenuSelectWidget} Menu of widget
+ */
+OO.ui.DropdownWidget.prototype.getMenu = function () {
        return this.menu;
 };
 
@@ -13088,6 +14059,7 @@ OO.ui.InputWidget = function OoUiInputWidget( config ) {
 
        // Initialization
        this.$input
+               .addClass( 'oo-ui-inputWidget-input' )
                .attr( 'name', config.name )
                .prop( 'disabled', this.isDisabled() );
        this.$element
@@ -13260,6 +14232,32 @@ OO.ui.InputWidget.prototype.blur = function () {
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.InputWidget.prototype.gatherPreInfuseState = function ( node ) {
+       var
+               state = OO.ui.InputWidget.parent.prototype.gatherPreInfuseState.call( this, node ),
+               $input = state.$input || $( node ).find( '.oo-ui-inputWidget-input' );
+       state.value = $input.val();
+       // Might be better in TabIndexedElement, but it's awkward to do there because mixins are awkward
+       state.focus = $input.is( ':focus' );
+       return state;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.InputWidget.prototype.restorePreInfuseState = function ( state ) {
+       OO.ui.InputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+       if ( state.value !== undefined && state.value !== this.getValue() ) {
+               this.setValue( state.value );
+       }
+       if ( state.focus ) {
+               this.focus();
+       }
+};
+
 /**
  * ButtonInputWidget is used to submit HTML forms and is intended to be used within
  * a OO.ui.FormLayout. If you do not need the button to work with HTML forms, you probably
@@ -13506,6 +14504,28 @@ OO.ui.CheckboxInputWidget.prototype.isSelected = function () {
        return this.selected;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.CheckboxInputWidget.prototype.gatherPreInfuseState = function ( node ) {
+       var
+               state = OO.ui.CheckboxInputWidget.parent.prototype.gatherPreInfuseState.call( this, node ),
+               $input = $( node ).find( '.oo-ui-inputWidget-input' );
+       state.$input = $input; // shortcut for performance, used in InputWidget
+       state.checked = $input.prop( 'checked' );
+       return state;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.CheckboxInputWidget.prototype.restorePreInfuseState = function ( state ) {
+       OO.ui.CheckboxInputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+       if ( state.checked !== undefined && state.checked !== this.isSelected() ) {
+               this.setSelected( state.checked );
+       }
+};
+
 /**
  * DropdownInputWidget is a {@link OO.ui.DropdownWidget DropdownWidget} intended to be used
  * within a HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value
@@ -13533,6 +14553,7 @@ OO.ui.CheckboxInputWidget.prototype.isSelected = function () {
  *
  * @class
  * @extends OO.ui.InputWidget
+ * @mixins OO.ui.mixin.TitledElement
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -13548,6 +14569,9 @@ OO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {
        // Parent constructor
        OO.ui.DropdownInputWidget.parent.call( this, config );
 
+       // Mixin constructors
+       OO.ui.mixin.TitledElement.call( this, config );
+
        // Events
        this.dropdownWidget.getMenu().connect( this, { select: 'onMenuSelect' } );
 
@@ -13561,6 +14585,7 @@ OO.ui.DropdownInputWidget = function OoUiDropdownInputWidget( config ) {
 /* Setup */
 
 OO.inheritClass( OO.ui.DropdownInputWidget, OO.ui.InputWidget );
+OO.mixinClass( OO.ui.DropdownInputWidget, OO.ui.mixin.TitledElement );
 
 /* Methods */
 
@@ -13751,6 +14776,28 @@ OO.ui.RadioInputWidget.prototype.isSelected = function () {
        return this.$input.prop( 'checked' );
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioInputWidget.prototype.gatherPreInfuseState = function ( node ) {
+       var
+               state = OO.ui.RadioInputWidget.parent.prototype.gatherPreInfuseState.call( this, node ),
+               $input = $( node ).find( '.oo-ui-inputWidget-input' );
+       state.$input = $input; // shortcut for performance, used in InputWidget
+       state.checked = $input.prop( 'checked' );
+       return state;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioInputWidget.prototype.restorePreInfuseState = function ( state ) {
+       OO.ui.RadioInputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+       if ( state.checked !== undefined && state.checked !== this.isSelected() ) {
+               this.setSelected( state.checked );
+       }
+};
+
 /**
  * RadioSelectInputWidget is a {@link OO.ui.RadioSelectWidget RadioSelectWidget} intended to be used
  * within a HTML form, such as a OO.ui.FormLayout. The selected value is synchronized with the value
@@ -13882,6 +14929,15 @@ OO.ui.RadioSelectInputWidget.prototype.setOptions = function ( options ) {
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.RadioSelectInputWidget.prototype.gatherPreInfuseState = function ( node ) {
+       var state = OO.ui.RadioSelectInputWidget.parent.prototype.gatherPreInfuseState.call( this, node );
+       state.value = $( node ).find( '.oo-ui-radioInputWidget .oo-ui-inputWidget-input:checked' ).val();
+       return state;
+};
+
 /**
  * TextInputWidgets, like HTML text inputs, can be configured with options that customize the
  * size of the field as well as its presentation. In addition, these widgets can be configured
@@ -14383,7 +15439,11 @@ OO.ui.TextInputWidget.prototype.setValidityFlag = function ( isValid ) {
        if ( isValid !== undefined ) {
                setFlag( isValid );
        } else {
-               this.isValid().done( setFlag );
+               this.getValidity().then( function () {
+                       setFlag( true );
+               }, function () {
+                       setFlag( false );
+               } );
        }
 };
 
@@ -14393,6 +15453,7 @@ OO.ui.TextInputWidget.prototype.setValidityFlag = function ( isValid ) {
  * This method returns a promise that resolves with a boolean `true` if the current value is
  * considered valid according to the supplied {@link #validate validation pattern}.
  *
+ * @deprecated
  * @return {jQuery.Promise} A promise that resolves to a boolean `true` if the value is valid.
  */
 OO.ui.TextInputWidget.prototype.isValid = function () {
@@ -14408,6 +15469,50 @@ OO.ui.TextInputWidget.prototype.isValid = function () {
        }
 };
 
+/**
+ * Get the validity of current value.
+ *
+ * This method returns a promise that resolves if the value is valid and rejects if
+ * it isn't. Uses the {@link #validate validation pattern}  to check for validity.
+ *
+ * @return {jQuery.Promise} A promise that resolves if the value is valid, rejects if not.
+ */
+OO.ui.TextInputWidget.prototype.getValidity = function () {
+       var result, promise;
+
+       function rejectOrResolve( valid ) {
+               if ( valid ) {
+                       return $.Deferred().resolve().promise();
+               } else {
+                       return $.Deferred().reject().promise();
+               }
+       }
+
+       if ( this.validate instanceof Function ) {
+               result = this.validate( this.getValue() );
+
+               if ( $.isFunction( result.promise ) ) {
+                       promise = $.Deferred();
+
+                       result.then( function ( valid ) {
+                               if ( valid ) {
+                                       promise.resolve();
+                               } else {
+                                       promise.reject();
+                               }
+                       }, function () {
+                               promise.reject();
+                       } );
+
+                       return promise.promise();
+               } else {
+                       return rejectOrResolve( result );
+               }
+       } else {
+               return rejectOrResolve( this.getValue().match( this.validate ) );
+       }
+};
+
 /**
  * Set the position of the inline label relative to that of the value: `‘before’` or `‘after’`.
  *
@@ -14443,9 +15548,7 @@ OO.ui.TextInputWidget.prototype.updatePosition = function () {
                .toggleClass( 'oo-ui-textInputWidget-labelPosition-after', !!this.label && after )
                .toggleClass( 'oo-ui-textInputWidget-labelPosition-before', !!this.label && !after );
 
-       if ( this.label ) {
-               this.positionLabel();
-       }
+       this.positionLabel();
 
        return this;
 };
@@ -14495,6 +15598,30 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () {
        return this;
 };
 
+/**
+ * @inheritdoc
+ */
+OO.ui.TextInputWidget.prototype.gatherPreInfuseState = function ( node ) {
+       var
+               state = OO.ui.TextInputWidget.parent.prototype.gatherPreInfuseState.call( this, node ),
+               $input = $( node ).find( '.oo-ui-inputWidget-input' );
+       state.$input = $input; // shortcut for performance, used in InputWidget
+       if ( this.multiline ) {
+               state.scrollTop = $input.scrollTop();
+       }
+       return state;
+};
+
+/**
+ * @inheritdoc
+ */
+OO.ui.TextInputWidget.prototype.restorePreInfuseState = function ( state ) {
+       OO.ui.TextInputWidget.parent.prototype.restorePreInfuseState.call( this, state );
+       if ( state.scrollTop !== undefined ) {
+               this.$input.scrollTop( state.scrollTop );
+       }
+};
+
 /**
  * ComboBoxWidgets combine a {@link OO.ui.TextInputWidget text input} (where a value
  * can be entered manually) and a {@link OO.ui.MenuSelectWidget menu of options} (from which
@@ -14547,7 +15674,7 @@ OO.ui.TextInputWidget.prototype.positionLabel = function () {
  *
  * @constructor
  * @param {Object} [config] Configuration options
- * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.MenuSelectWidget menu select widget}.
+ * @cfg {Object} [menu] Configuration options to pass to the {@link OO.ui.FloatingMenuSelectWidget menu select widget}.
  * @cfg {Object} [input] Configuration options to pass to the {@link OO.ui.TextInputWidget text input widget}.
  * @cfg {jQuery} [$overlay] Render the menu into a separate layer. This configuration is useful in cases where
  *  the expanded menu is larger than its containing `<div>`. The specified overlay layer is usually on top of the
@@ -14580,10 +15707,11 @@ OO.ui.ComboBoxWidget = function OoUiComboBoxWidget( config ) {
                role: 'combobox',
                'aria-autocomplete': 'list'
        } );
-       this.menu = new OO.ui.TextInputMenuSelectWidget( this.input, $.extend(
+       this.menu = new OO.ui.FloatingMenuSelectWidget( $.extend(
                {
                        widget: this,
                        input: this.input,
+                       $container: this.input.$element,
                        disabled: this.isDisabled()
                },
                config.menu
@@ -14619,7 +15747,7 @@ OO.mixinClass( OO.ui.ComboBoxWidget, OO.ui.mixin.TabIndexedElement );
 
 /**
  * Get the combobox's menu.
- * @return {OO.ui.TextInputMenuSelectWidget} Menu widget
+ * @return {OO.ui.FloatingMenuSelectWidget} Menu widget
  */
 OO.ui.ComboBoxWidget.prototype.getMenu = function () {
        return this.menu;
@@ -14886,7 +16014,7 @@ OO.ui.OptionWidget.static.scrollIntoViewOnSelect = false;
  * @return {boolean} Item is selectable
  */
 OO.ui.OptionWidget.prototype.isSelectable = function () {
-       return this.constructor.static.selectable && !this.isDisabled();
+       return this.constructor.static.selectable && !this.isDisabled() && this.isVisible();
 };
 
 /**
@@ -14897,7 +16025,7 @@ OO.ui.OptionWidget.prototype.isSelectable = function () {
  * @return {boolean} Item is highlightable
  */
 OO.ui.OptionWidget.prototype.isHighlightable = function () {
-       return this.constructor.static.highlightable && !this.isDisabled();
+       return this.constructor.static.highlightable && !this.isDisabled() && this.isVisible();
 };
 
 /**
@@ -14907,7 +16035,7 @@ OO.ui.OptionWidget.prototype.isHighlightable = function () {
  * @return {boolean} Item is pressable
  */
 OO.ui.OptionWidget.prototype.isPressable = function () {
-       return this.constructor.static.pressable && !this.isDisabled();
+       return this.constructor.static.pressable && !this.isDisabled() && this.isVisible();
 };
 
 /**
@@ -15072,14 +16200,17 @@ OO.mixinClass( OO.ui.DecoratedOptionWidget, OO.ui.mixin.IndicatorElement );
  */
 OO.ui.ButtonOptionWidget = function OoUiButtonOptionWidget( config ) {
        // Configuration initialization
-       config = $.extend( { tabIndex: -1 }, config );
+       config = config || {};
 
        // Parent constructor
        OO.ui.ButtonOptionWidget.parent.call( this, config );
 
        // Mixin constructors
        OO.ui.mixin.ButtonElement.call( this, config );
-       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$button } ) );
+       OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, {
+               $tabIndexed: this.$button,
+               tabIndex: -1
+       } ) );
 
        // Initialization
        this.$element.addClass( 'oo-ui-buttonOptionWidget' );
@@ -15601,7 +16732,7 @@ OO.ui.PopupWidget.prototype.onMouseDown = function ( e ) {
  */
 OO.ui.PopupWidget.prototype.bindMouseDownListener = function () {
        // Capture clicks outside popup
-       this.getElementWindow().addEventListener( 'mousedown', this.onMouseDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'mousedown', this.onMouseDownHandler );
 };
 
 /**
@@ -15621,7 +16752,7 @@ OO.ui.PopupWidget.prototype.onCloseButtonClick = function () {
  * @private
  */
 OO.ui.PopupWidget.prototype.unbindMouseDownListener = function () {
-       this.getElementWindow().removeEventListener( 'mousedown', this.onMouseDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'mousedown', this.onMouseDownHandler );
 };
 
 /**
@@ -15647,7 +16778,7 @@ OO.ui.PopupWidget.prototype.onDocumentKeyDown = function ( e ) {
  * @private
  */
 OO.ui.PopupWidget.prototype.bindKeyDownListener = function () {
-       this.getElementWindow().addEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keydown', this.onDocumentKeyDownHandler );
 };
 
 /**
@@ -15656,7 +16787,7 @@ OO.ui.PopupWidget.prototype.bindKeyDownListener = function () {
  * @private
  */
 OO.ui.PopupWidget.prototype.unbindKeyDownListener = function () {
-       this.getElementWindow().removeEventListener( 'keydown', this.onDocumentKeyDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keydown', this.onDocumentKeyDownHandler );
 };
 
 /**
@@ -15950,7 +17081,7 @@ OO.ui.ProgressBarWidget.prototype.setProgress = function ( progress ) {
 
 /**
  * SearchWidgets combine a {@link OO.ui.TextInputWidget text input field}, where users can type a search query,
- * and a {@link OO.ui.TextInputMenuSelectWidget menu} of search results, which is displayed beneath the query
+ * and a menu of search results, which is displayed beneath the query
  * field. Unlike {@link OO.ui.mixin.LookupElement lookup menus}, search result menus are always visible to the user.
  * Users can choose an item from the menu or type a query into the text field to search for a matching result item.
  * In general, search widgets are used inside a separate {@link OO.ui.Dialog dialog} window.
@@ -16109,7 +17240,7 @@ OO.ui.SearchWidget.prototype.getResults = function () {
  * @abstract
  * @class
  * @extends OO.ui.Widget
- * @mixins OO.ui.mixin.GroupElement
+ * @mixins OO.ui.mixin.GroupWidget
  *
  * @constructor
  * @param {Object} [config] Configuration options
@@ -16238,15 +17369,15 @@ OO.ui.SelectWidget.prototype.onMouseDown = function ( e ) {
                if ( item && item.isSelectable() ) {
                        this.pressItem( item );
                        this.selecting = item;
-                       this.getElementDocument().addEventListener(
+                       OO.ui.addCaptureEventListener(
+                               this.getElementDocument(),
                                'mouseup',
-                               this.onMouseUpHandler,
-                               true
+                               this.onMouseUpHandler
                        );
-                       this.getElementDocument().addEventListener(
+                       OO.ui.addCaptureEventListener(
+                               this.getElementDocument(),
                                'mousemove',
-                               this.onMouseMoveHandler,
-                               true
+                               this.onMouseMoveHandler
                        );
                }
        }
@@ -16275,16 +17406,10 @@ OO.ui.SelectWidget.prototype.onMouseUp = function ( e ) {
                this.selecting = null;
        }
 
-       this.getElementDocument().removeEventListener(
-               'mouseup',
-               this.onMouseUpHandler,
-               true
-       );
-       this.getElementDocument().removeEventListener(
-               'mousemove',
-               this.onMouseMoveHandler,
-               true
-       );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mouseup',
+               this.onMouseUpHandler );
+       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mousemove',
+               this.onMouseMoveHandler );
 
        return false;
 };
@@ -16404,7 +17529,7 @@ OO.ui.SelectWidget.prototype.onKeyDown = function ( e ) {
  * @protected
  */
 OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
-       this.getElementWindow().addEventListener( 'keydown', this.onKeyDownHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keydown', this.onKeyDownHandler );
 };
 
 /**
@@ -16413,7 +17538,7 @@ OO.ui.SelectWidget.prototype.bindKeyDownListener = function () {
  * @protected
  */
 OO.ui.SelectWidget.prototype.unbindKeyDownListener = function () {
-       this.getElementWindow().removeEventListener( 'keydown', this.onKeyDownHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keydown', this.onKeyDownHandler );
 };
 
 /**
@@ -16468,7 +17593,7 @@ OO.ui.SelectWidget.prototype.onKeyPress = function ( e ) {
                this.keyPressBuffer += c;
        }
 
-       filter = this.getItemMatcher( this.keyPressBuffer );
+       filter = this.getItemMatcher( this.keyPressBuffer, false );
        if ( !item || !filter( item ) ) {
                item = this.getRelativeSelectableItem( item, 1, filter );
        }
@@ -16489,15 +17614,21 @@ OO.ui.SelectWidget.prototype.onKeyPress = function ( e ) {
  *
  * @protected
  * @param {string} s String to match against items
+ * @param {boolean} [exact=false] Only accept exact matches
  * @return {Function} function ( OO.ui.OptionItem ) => boolean
  */
-OO.ui.SelectWidget.prototype.getItemMatcher = function ( s ) {
+OO.ui.SelectWidget.prototype.getItemMatcher = function ( s, exact ) {
        var re;
 
        if ( s.normalize ) {
                s = s.normalize();
        }
-       re = new RegExp( '^\\s*' + s.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' ), 'i' );
+       s = exact ? s.trim() : s.replace( /^\s+/, '' );
+       re = '^\\s*' + s.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' ).replace( /\s+/g, '\\s+' );
+       if ( exact ) {
+               re += '\\s*$';
+       }
+       re = new RegExp( re, 'i' );
        return function ( item ) {
                var l = item.getLabel();
                if ( typeof l !== 'string' ) {
@@ -16516,7 +17647,7 @@ OO.ui.SelectWidget.prototype.getItemMatcher = function ( s ) {
  * @protected
  */
 OO.ui.SelectWidget.prototype.bindKeyPressListener = function () {
-       this.getElementWindow().addEventListener( 'keypress', this.onKeyPressHandler, true );
+       OO.ui.addCaptureEventListener( this.getElementWindow(), 'keypress', this.onKeyPressHandler );
 };
 
 /**
@@ -16528,7 +17659,7 @@ OO.ui.SelectWidget.prototype.bindKeyPressListener = function () {
  * @protected
  */
 OO.ui.SelectWidget.prototype.unbindKeyPressListener = function () {
-       this.getElementWindow().removeEventListener( 'keypress', this.onKeyPressHandler, true );
+       OO.ui.removeCaptureEventListener( this.getElementWindow(), 'keypress', this.onKeyPressHandler );
        this.clearKeyPressBuffer();
 };
 
@@ -16634,6 +17765,62 @@ OO.ui.SelectWidget.prototype.highlightItem = function ( item ) {
        return this;
 };
 
+/**
+ * Fetch an item by its label.
+ *
+ * @param {string} label Label of the item to select.
+ * @param {boolean} [prefix=false] Allow a prefix match, if only a single item matches
+ * @return {OO.ui.Element|null} Item with equivalent label, `null` if none exists
+ */
+OO.ui.SelectWidget.prototype.getItemFromLabel = function ( label, prefix ) {
+       var i, item, found,
+               len = this.items.length,
+               filter = this.getItemMatcher( label, true );
+
+       for ( i = 0; i < len; i++ ) {
+               item = this.items[i];
+               if ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {
+                       return item;
+               }
+       }
+
+       if ( prefix ) {
+               found = null;
+               filter = this.getItemMatcher( label, false );
+               for ( i = 0; i < len; i++ ) {
+                       item = this.items[i];
+                       if ( item instanceof OO.ui.OptionWidget && item.isSelectable() && filter( item ) ) {
+                               if ( found ) {
+                                       return null;
+                               }
+                               found = item;
+                       }
+               }
+               if ( found ) {
+                       return found;
+               }
+       }
+
+       return null;
+};
+
+/**
+ * Programmatically select an option by its label. If the item does not exist,
+ * all options will be deselected.
+ *
+ * @param {string} [label] Label of the item to select.
+ * @param {boolean} [prefix=false] Allow a prefix match, if only a single item matches
+ * @fires select
+ * @chainable
+ */
+OO.ui.SelectWidget.prototype.selectItemByLabel = function ( label, prefix ) {
+       var itemFromLabel = this.getItemFromLabel( label, !!prefix );
+       if ( label === undefined || !itemFromLabel ) {
+               return this.selectItem();
+       }
+       return this.selectItem( itemFromLabel );
+};
+
 /**
  * Programmatically select an option by its data. If the `data` parameter is omitted,
  * or if the item does not exist, all options will be deselected.
@@ -17011,11 +18198,14 @@ OO.mixinClass( OO.ui.RadioSelectWidget, OO.ui.mixin.TabIndexedElement );
  * @cfg {OO.ui.TextInputWidget} [input] Text input used to implement option highlighting for menu items that match
  *  the text the user types. This config is used by {@link OO.ui.ComboBoxWidget ComboBoxWidget}
  *  and {@link OO.ui.mixin.LookupElement LookupElement}
+ * @cfg {jQuery} [$input] Text input used to implement option highlighting for menu items that match
+ *  the text the user types. This config is used by {@link OO.ui.CapsuleMultiSelectWidget CapsuleMultiSelectWidget}
  * @cfg {OO.ui.Widget} [widget] Widget associated with the menu's active state. If the user clicks the mouse
  *  anywhere on the page outside of this widget, the menu is hidden. For example, if there is a button
  *  that toggles the menu's visibility on click, the menu will be hidden then re-shown when the user clicks
  *  that button, unless the button (or its parent widget) is passed in here.
  * @cfg {boolean} [autoHide=true] Hide the menu when the mouse is pressed outside the menu.
+ * @cfg {boolean} [filterFromInput=false] Filter the displayed options from the input
  */
 OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        // Configuration initialization
@@ -17030,9 +18220,11 @@ OO.ui.MenuSelectWidget = function OoUiMenuSelectWidget( config ) {
        // Properties
        this.newItems = null;
        this.autoHide = config.autoHide === undefined || !!config.autoHide;
-       this.$input = config.input ? config.input.$input : null;
+       this.filterFromInput = !!config.filterFromInput;
+       this.$input = config.$input ? config.$input : config.input ? config.input.$input : null;
        this.$widget = config.widget ? config.widget.$element : null;
        this.onDocumentMouseDownHandler = this.onDocumentMouseDown.bind( this );
+       this.onInputEditHandler = OO.ui.debounce( this.updateItemVisibility.bind( this ), 100 );
 
        // Initialization
        this.$element
@@ -17102,6 +18294,27 @@ OO.ui.MenuSelectWidget.prototype.onKeyDown = function ( e ) {
        }
 };
 
+/**
+ * Update menu item visibility after input changes.
+ * @protected
+ */
+OO.ui.MenuSelectWidget.prototype.updateItemVisibility = function () {
+       var i, item,
+               len = this.items.length,
+               showAll = !this.isVisible(),
+               filter = showAll ? null : this.getItemMatcher( this.$input.val() );
+
+       for ( i = 0; i < len; i++ ) {
+               item = this.items[i];
+               if ( item instanceof OO.ui.OptionWidget ) {
+                       item.toggle( showAll || filter( item ) );
+               }
+       }
+
+       // Reevaluate clipping
+       this.clip();
+};
+
 /**
  * @inheritdoc
  */
@@ -17128,7 +18341,11 @@ OO.ui.MenuSelectWidget.prototype.unbindKeyDownListener = function () {
  * @inheritdoc
  */
 OO.ui.MenuSelectWidget.prototype.bindKeyPressListener = function () {
-       if ( !this.$input ) {
+       if ( this.$input ) {
+               if ( this.filterFromInput ) {
+                       this.$input.on( 'keydown mouseup cut paste change input select', this.onInputEditHandler );
+               }
+       } else {
                OO.ui.MenuSelectWidget.parent.prototype.bindKeyPressListener.call( this );
        }
 };
@@ -17138,7 +18355,10 @@ OO.ui.MenuSelectWidget.prototype.bindKeyPressListener = function () {
  */
 OO.ui.MenuSelectWidget.prototype.unbindKeyPressListener = function () {
        if ( this.$input ) {
-               this.clearKeyPressBuffer();
+               if ( this.filterFromInput ) {
+                       this.$input.off( 'keydown mouseup cut paste change input select', this.onInputEditHandler );
+                       this.updateItemVisibility();
+               }
        } else {
                OO.ui.MenuSelectWidget.parent.prototype.unbindKeyPressListener.call( this );
        }
@@ -17243,16 +18463,12 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
 
                        // Auto-hide
                        if ( this.autoHide ) {
-                               this.getElementDocument().addEventListener(
-                                       'mousedown', this.onDocumentMouseDownHandler, true
-                               );
+                               OO.ui.addCaptureEventListener( this.getElementDocument(), 'mousedown', this.onDocumentMouseDownHandler );
                        }
                } else {
                        this.unbindKeyDownListener();
                        this.unbindKeyPressListener();
-                       this.getElementDocument().removeEventListener(
-                               'mousedown', this.onDocumentMouseDownHandler, true
-                       );
+                       OO.ui.removeCaptureEventListener( this.getElementDocument(), 'mousedown', this.onDocumentMouseDownHandler );
                        this.toggleClipping( false );
                }
        }
@@ -17261,21 +18477,27 @@ OO.ui.MenuSelectWidget.prototype.toggle = function ( visible ) {
 };
 
 /**
- * TextInputMenuSelectWidget is a menu that is specially designed to be positioned beneath
- * a {@link OO.ui.TextInputWidget text input} field. The menu's position is automatically
- * calculated and maintained when the menu is toggled or the window is resized.
+ * FloatingMenuSelectWidget is a menu that will stick under a specified
+ * container, even when it is inserted elsewhere in the document (for example,
+ * in a OO.ui.Window's $overlay). This is sometimes necessary to prevent the
+ * menu from being clipped too aggresively.
+ *
+ * The menu's position is automatically calculated and maintained when the menu
+ * is toggled or the window is resized.
+ *
  * See OO.ui.ComboBoxWidget for an example of a widget that uses this class.
  *
  * @class
  * @extends OO.ui.MenuSelectWidget
  *
  * @constructor
- * @param {OO.ui.TextInputWidget} inputWidget Text input widget to provide menu for
+ * @param {OO.ui.Widget} [inputWidget] Widget to provide the menu for.
+ *   Deprecated, omit this parameter and specify `$container` instead.
  * @param {Object} [config] Configuration options
- * @cfg {jQuery} [$container=input.$element] Element to render menu under
+ * @cfg {jQuery} [$container=inputWidget.$element] Element to render menu under
  */
-OO.ui.TextInputMenuSelectWidget = function OoUiTextInputMenuSelectWidget( inputWidget, config ) {
-       // Allow passing positional parameters inside the config object
+OO.ui.FloatingMenuSelectWidget = function OoUiFloatingMenuSelectWidget( inputWidget, config ) {
+       // Allow 'inputWidget' parameter and config for backwards compatibility
        if ( OO.isPlainObject( inputWidget ) && config === undefined ) {
                config = inputWidget;
                inputWidget = config.inputWidget;
@@ -17285,20 +18507,25 @@ OO.ui.TextInputMenuSelectWidget = function OoUiTextInputMenuSelectWidget( inputW
        config = config || {};
 
        // Parent constructor
-       OO.ui.TextInputMenuSelectWidget.parent.call( this, config );
+       OO.ui.FloatingMenuSelectWidget.parent.call( this, config );
 
        // Properties
-       this.inputWidget = inputWidget;
+       this.inputWidget = inputWidget; // For backwards compatibility
        this.$container = config.$container || this.inputWidget.$element;
        this.onWindowResizeHandler = this.onWindowResize.bind( this );
 
        // Initialization
+       this.$element.addClass( 'oo-ui-floatingMenuSelectWidget' );
+       // For backwards compatibility
        this.$element.addClass( 'oo-ui-textInputMenuSelectWidget' );
 };
 
 /* Setup */
 
-OO.inheritClass( OO.ui.TextInputMenuSelectWidget, OO.ui.MenuSelectWidget );
+OO.inheritClass( OO.ui.FloatingMenuSelectWidget, OO.ui.MenuSelectWidget );
+
+// For backwards compatibility
+OO.ui.TextInputMenuSelectWidget = OO.ui.FloatingMenuSelectWidget;
 
 /* Methods */
 
@@ -17308,14 +18535,14 @@ OO.inheritClass( OO.ui.TextInputMenuSelectWidget, OO.ui.MenuSelectWidget );
  * @private
  * @param {jQuery.Event} e Window resize event
  */
-OO.ui.TextInputMenuSelectWidget.prototype.onWindowResize = function () {
+OO.ui.FloatingMenuSelectWidget.prototype.onWindowResize = function () {
        this.position();
 };
 
 /**
  * @inheritdoc
  */
-OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
+OO.ui.FloatingMenuSelectWidget.prototype.toggle = function ( visible ) {
        visible = visible === undefined ? !this.isVisible() : !!visible;
 
        var change = visible !== this.isVisible();
@@ -17328,7 +18555,7 @@ OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
        }
 
        // Parent method
-       OO.ui.TextInputMenuSelectWidget.parent.prototype.toggle.call( this, visible );
+       OO.ui.FloatingMenuSelectWidget.parent.prototype.toggle.call( this, visible );
 
        if ( change ) {
                if ( this.isVisible() ) {
@@ -17348,7 +18575,7 @@ OO.ui.TextInputMenuSelectWidget.prototype.toggle = function ( visible ) {
  * @private
  * @chainable
  */
-OO.ui.TextInputMenuSelectWidget.prototype.position = function () {
+OO.ui.FloatingMenuSelectWidget.prototype.position = function () {
        var $container = this.$container,
                pos = OO.ui.Element.static.getRelativePosition( $container, this.$element.offsetParent() );
 
diff --git a/resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json b/resources/lib/oojs-ui/themes/mediawiki/icons-accessibility.json
new file mode 100644 (file)
index 0000000..ee1d0a5
--- /dev/null
@@ -0,0 +1,19 @@
+{
+       "prefix": "oo-ui-icon",
+       "intro": "@import '../../../../src/styles/common';",
+       "images": {
+               "bright": { "file": "images/icons/bright.svg" },
+               "halfBright": { "file": "images/icons/halfBright.svg" },
+               "notBright": { "file": "images/icons/notBright.svg" },
+               "moon": { "file": "images/icons/moon.svg" },
+               "largerText": { "file": {
+                       "ltr": "images/icons/largerText-ltr.svg",
+                       "rtl": "images/icons/largerText-rtl.svg"
+               } },
+               "smallerText": { "file": {
+                       "ltr": "images/icons/smallerText-ltr.svg",
+                       "rtl": "images/icons/smallerText-rtl.svg"
+               } },
+               "visionSimulator": { "file": "images/icons/visionSimulator.svg" }
+       }
+}
index ae6b09d..c507284 100644 (file)
@@ -37,7 +37,6 @@
                "viewDetails": { "file": {
                        "ltr": "images/icons/viewDetails-ltr.svg",
                        "rtl": "images/icons/viewDetails-rtl.svg"
-               } },
-               "visionSimulator": { "file": "images/icons/visionSimulator.svg" }
+               } }
        }
 }
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png
new file mode 100644 (file)
index 0000000..3e9e2f1
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/bright.svg
new file mode 100644 (file)
index 0000000..576e89d
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <path d="M18.1 5.1c0 .3-.1.6-.3.9l-1.4 1.4-.9-.8 2.2-2.2c.3.1.4.4.4.7zm-.5 5.3h3.2c0 .3-.1.6-.4.9-.3.3-.5.4-.8.4h-2v-1.3zm-6.2-5V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm6.4 11.7c-.3 0-.6-.1-.8-.3l-1.4-1.4.8-.8 2.2 2.2c-.2.2-.5.3-.8.3zM6.2 4.9c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8z"/>
+    <g>
+        <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+    </g>
+    <path d="M12 8c1.7 0 3 1.3 3 3s-1.3 3-3 3-3-1.3-3-3 1.3-3 3-3m0-1c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png
new file mode 100644 (file)
index 0000000..9332bea
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/halfBright.svg
new file mode 100644 (file)
index 0000000..b97eae3
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <path d="M11.4 5.4V2.2c.3 0 .6.1.9.4.3.3.4.5.4.8v2h-1.3zm-5.2-.5c.3 0 .6.1.8.3l1.4 1.4-.8.9-2.2-2.3c.2-.2.5-.3.8-.3zm5.2 11.7h1.2v3.2c-.3 0-.6-.1-.9-.4-.3-.3-.4-.5-.4-.8l.1-2zm-7-6.2h2v1.2H3.2c0-.3.1-.6.4-.9.3-.3.5-.3.8-.3zM6.2 16l1.4-1.4.8.8-2.2 2.2c-.2-.2-.3-.5-.3-.8 0-.3.1-.6.3-.8zM12 7c-2.2 0-4 1.8-4 4s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4zm-3 4c0-1.7 1.3-3 3-3v6c-1.7 0-3-1.3-3-3z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png
new file mode 100644 (file)
index 0000000..79a2824
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-ltr.svg
new file mode 100644 (file)
index 0000000..99d6f01
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png
new file mode 100644 (file)
index 0000000..79a2824
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/largerText-rtl.svg
new file mode 100644 (file)
index 0000000..99d6f01
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path d="M20.8 20h-8.1v-.8c.4 0 .8-.1 1.3-.2s.8-.2.8-.4v-.2c0-.1 0-.2-.1-.3L13.4 15H8.3c-.1.3-.2.6-.4 1-.1.4-.3.7-.4 1-.1.4-.2.7-.2.8v.4c0 .2.2.4.5.6.3.2.9.3 1.7.3v.9H3.4v-.8c.2 0 .5-.1.8-.1.3-.1.5-.1.7-.2.3-.2.5-.4.7-.6.2-.3.4-.6.5-.9.8-2 1.6-3.9 2.4-5.9.8-2 1.7-4.1 2.7-6.5h2.1c1.4 3.3 2.4 6 3.2 7.9.8 1.9 1.4 3.6 2 4.8l.3.6c.1.2.3.3.6.5.2.1.4.2.7.3.3.1.5.1.7.1v.8zM13 14l-2.1-5.3L8.8 14H13z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png
new file mode 100644 (file)
index 0000000..98df69c
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/moon.svg
new file mode 100644 (file)
index 0000000..55e5ac7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <path d="M19.1 17.5c-3.3 1.4-7.1-.2-8.5-3.5-1.4-3.3.2-7.1 3.5-8.5.2-.1.5-.2.7-.3-1.6-.4-3.2-.3-4.8.4C6 7.3 4 12 5.7 16c1.7 4.1 6.4 6 10.5 4.3 1.7-.7 3-1.9 3.8-3.4-.3.3-.6.4-.9.6z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png
new file mode 100644 (file)
index 0000000..37145c7
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/notBright.svg
new file mode 100644 (file)
index 0000000..04139da
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <path d="M12 5c-4.4 0-8 3.6-8 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8z"/>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png
new file mode 100644 (file)
index 0000000..63551b4
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-ltr.svg
new file mode 100644 (file)
index 0000000..fb025f3
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path d="M17.6 20h-5.4v-.5c.2 0 .5-.1.9-.1.3-.1.5-.2.5-.3V19s0-.1-.1-.2l-.8-2H9.3c-.1.2-.2.4-.3.7-.1.3-.2.5-.2.7-.1.3-.1.4-.2.6v.2c0 .1.1.3.3.4.2.1.6.2 1.1.2v.4H6v-.5c.2 0 .3 0 .5-.1.2 0 .3-.1.5-.2s.4-.2.5-.4l.3-.6c.5-1.3 1.1-2.6 1.6-3.9.5-1.3 1.1-2.7 1.8-4.3h1.4c.9 2.2 1.6 4 2.1 5.3.5 1.3 1 2.4 1.3 3.2.1.1.1.3.2.4.1.1.2.2.4.3.1.1.3.1.5.2s.3.1.5.1v.5zm-5.2-4L11 12.4 9.6 16h2.8z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png
new file mode 100644 (file)
index 0000000..a245556
Binary files /dev/null and b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.png differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/smallerText-rtl.svg
new file mode 100644 (file)
index 0000000..bd995db
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+    <g>
+        <path d="M6 19.5c.1 0 .3 0 .5-.1s.3-.1.5-.2.3-.2.4-.3c.1-.1.2-.2.2-.4.4-.9.8-1.9 1.3-3.2.5-1.3 1.2-3.1 2.1-5.3h1.4c.7 1.6 1.2 3 1.8 4.3.5 1.3 1.1 2.6 1.6 3.9l.3.6c.1.2.3.3.5.4.1.1.3.1.5.2.2 0 .4.1.5.1v.5h-4v-.5c.5 0 .9-.1 1.1-.2.2-.1.3-.2.3-.4v-.2c0-.1-.1-.3-.2-.6-.1-.2-.2-.4-.2-.7-.1-.3-.2-.5-.3-.7h-3.4l-.8 2c0 .1-.1.1-.1.2v.1c0 .1.2.2.5.3.3.1.6.1.9.1v.6H6v-.5zm8-3.5l-1.4-3.6-1.4 3.6H14z"/>
+    </g>
+</svg>
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png
deleted file mode 100644 (file)
index 118e468..0000000
Binary files a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.png and /dev/null differ
diff --git a/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg b/resources/lib/oojs-ui/themes/mediawiki/images/icons/visionSimulator-invert.svg
deleted file mode 100644 (file)
index ae0d94e..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><style>* { fill: #FFFFFF }</style>
-    <path d="M0 10v8h2.3c.3.6 1 1 1.7 1h4c1.5 0 2.7-.8 3-2h2c.3 1.2 1.5 2 3 2h4c.7 0 1.4 0 1.7-1H24v-8zm10 6c0 1-.4 2-2 2H4c-.6 0-1-.4-1-1v-3c0-.6.4-1 1-1h5c.6 0 1 .4 1 1zm11 1c0 .6-.4 1-1 1h-4c-1.6 0-2-1-2-2v-2c0-.6.4-1 1-1h5c.6 0 1 .4 1 1z"/>
-</svg>
index 29c533d..abe912d 100644 (file)
@@ -3,7 +3,7 @@
  */
 ( function ( mw, $ ) {
        $( function () {
-               var idleTimeout = 4000,
+               var idleTimeout = 3000,
                        api = new mw.Api(),
                        pending = null,
                        $form = $( '#editform' ),
index 0b57907..5e3a962 100644 (file)
@@ -1,22 +1,24 @@
 ( function ( mw, $ ) {
 
-       // We allow people to omit these default parameters from API requests
-       // there is very customizable error handling here, on a per-call basis
-       // wondering, would it be simpler to make it easy to clone the api object,
-       // change error handling, and use that instead?
+       /**
+        * @class mw.Api
+        */
+
+       /**
+        * @property {Object} defaultOptions Default options for #ajax calls. Can be overridden by passing
+        *     `options` to mw.Api constructor.
+        * @property {Object} defaultOptions.parameters Default query parameters for API requests.
+        * @property {Object} defaultOptions.ajax Default options for jQuery#ajax.
+        * @private
+        */
        var defaultOptions = {
-                       // Query parameters for API requests
                        parameters: {
                                action: 'query',
                                format: 'json'
                        },
-
-                       // Ajax options for jQuery.ajax()
                        ajax: {
                                url: mw.util.wikiScript( 'api' ),
-
                                timeout: 30 * 1000, // 30 seconds
-
                                dataType: 'json'
                        }
                },
         * Constructor to create an object to interact with the API of a particular MediaWiki server.
         * mw.Api objects represent the API of a particular MediaWiki server.
         *
-        * TODO: Share API objects with exact same config.
-        *
         *     var api = new mw.Api();
         *     api.get( {
         *         action: 'query',
         *         meta: 'userinfo'
-        *     } ).done ( function ( data ) {
+        *     } ).done( function ( data ) {
         *         console.log( data );
         *     } );
         *
         *     api.get( {
         *         action: 'query',
         *         meta: [ 'userinfo', 'siteinfo' ] // same effect as 'userinfo|siteinfo'
-        *     } ).done ( function ( data ) {
+        *     } ).done( function ( data ) {
         *         console.log( data );
         *     } );
         *
-        * @class
-        *
         * @constructor
-        * @param {Object} options See defaultOptions documentation above. Ajax options can also be
-        *  overridden for each individual request to {@link jQuery#ajax} later on.
+        * @param {Object} [options] See #defaultOptions documentation above. Can also be overridden for
+        *  each individual request by passing them to #get or #post (or directly #ajax) later on.
         */
        mw.Api = function ( options ) {
-
-               if ( options === undefined ) {
-                       options = {};
-               }
+               // TODO: Share API objects with exact same config.
+               options = options || {};
 
                // Force a string if we got a mw.Uri object
                if ( options.ajax && options.ajax.url !== undefined ) {
diff --git a/resources/src/mediawiki.legacy/ajax.js b/resources/src/mediawiki.legacy/ajax.js
deleted file mode 100644 (file)
index 3660c20..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/**
- * Remote Scripting Library
- * Copyright 2005 modernmethod, inc
- * Under the open source BSD license
- * http://www.modernmethod.com/sajax/
- */
-
-/*jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
-/*global alert */
-( function ( mw ) {
-
-       /**
-        * if sajax_debug_mode is true, this function outputs given the message into
-        * the element with id = sajax_debug; if no such element exists in the document,
-        * it is injected.
-        */
-       function debug( text ) {
-               if ( !window.sajax_debug_mode ) {
-                       return false;
-               }
-
-               var b, m,
-                       e = document.getElementById( 'sajax_debug' );
-
-               if ( !e ) {
-                       e = document.createElement( 'p' );
-                       e.className = 'sajax_debug';
-                       e.id = 'sajax_debug';
-
-                       b = document.getElementsByTagName( 'body' )[0];
-
-                       if ( b.firstChild ) {
-                               b.insertBefore( e, b.firstChild );
-                       } else {
-                               b.appendChild( e );
-                       }
-               }
-
-               m = document.createElement( 'div' );
-               m.appendChild( document.createTextNode( text ) );
-
-               e.appendChild( m );
-
-               return true;
-       }
-
-       /**
-        * Compatibility wrapper for creating a new XMLHttpRequest object.
-        */
-       function createXhr() {
-               debug( 'sajax_init_object() called..' );
-               var a;
-               try {
-                       // Try the new style before ActiveX so we don't
-                       // unnecessarily trigger warnings in IE 7 when
-                       // set to prompt about ActiveX usage
-                       a = new XMLHttpRequest();
-               } catch ( xhrE ) {
-                       try {
-                               a = new window.ActiveXObject( 'Msxml2.XMLHTTP' );
-                       } catch ( msXmlE ) {
-                               try {
-                                       a = new window.ActiveXObject( 'Microsoft.XMLHTTP' );
-                               } catch ( msXhrE ) {
-                                       a = null;
-                               }
-                       }
-               }
-               if ( !a ) {
-                       debug( 'Could not create connection object.' );
-               }
-
-               return a;
-       }
-
-       /**
-        * Perform an AJAX call to MediaWiki. Calls are handled by AjaxDispatcher.php
-        *   func_name - the name of the function to call. Must be registered in $wgAjaxExportList
-        *   args - an array of arguments to that function
-        *   target - the target that will handle the result of the call. If this is a function,
-        *            if will be called with the XMLHttpRequest as a parameter; if it's an input
-        *            element, its value will be set to the resultText; if it's another type of
-        *            element, its innerHTML will be set to the resultText.
-        *
-        * Example:
-        *    sajax_do_call( 'doFoo', [1, 2, 3], document.getElementById( 'showFoo' ) );
-        *
-        * This will call the doFoo function via MediaWiki's AjaxDispatcher, with
-        * (1, 2, 3) as the parameter list, and will show the result in the element
-        * with id = showFoo
-        */
-       function doAjaxRequest( func_name, args, target ) {
-               var i, x, uri, post_data;
-               uri = mw.util.wikiScript() + '?action=ajax';
-               if ( window.sajax_request_type === 'GET' ) {
-                       if ( uri.indexOf( '?' ) === -1 ) {
-                               uri = uri + '?rs=' + encodeURIComponent( func_name );
-                       } else {
-                               uri = uri + '&rs=' + encodeURIComponent( func_name );
-                       }
-                       for ( i = 0; i < args.length; i++ ) {
-                               uri = uri + '&rsargs[]=' + encodeURIComponent( args[i] );
-                       }
-                       // uri = uri + '&rsrnd=' + new Date().getTime();
-                       post_data = null;
-               } else {
-                       post_data = 'rs=' + encodeURIComponent( func_name );
-                       for ( i = 0; i < args.length; i++ ) {
-                               post_data = post_data + '&rsargs[]=' + encodeURIComponent( args[i] );
-                       }
-               }
-               x = createXhr();
-               if ( !x ) {
-                       alert( 'AJAX not supported' );
-                       return false;
-               }
-
-               try {
-                       x.open( window.sajax_request_type, uri, true );
-               } catch ( e ) {
-                       if ( location.hostname === 'localhost' ) {
-                               alert( 'Your browser blocks XMLHttpRequest to "localhost", try using a real hostname for development/testing.' );
-                       }
-                       throw e;
-               }
-               if ( window.sajax_request_type === 'POST' ) {
-                       x.setRequestHeader( 'Method', 'POST ' + uri + ' HTTP/1.1' );
-                       x.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
-               }
-               x.setRequestHeader( 'Pragma', 'cache=yes' );
-               x.setRequestHeader( 'Cache-Control', 'no-transform' );
-               x.onreadystatechange = function () {
-                       if ( x.readyState !== 4 ) {
-                               return;
-                       }
-
-                       debug( 'received (' + x.status + ' ' + x.statusText + ') ' + x.responseText );
-
-                       // if ( x.status != 200 )
-                       //   alert( 'Error: ' + x.status + ' ' + x.statusText + ': ' + x.responseText );
-                       // else
-
-                       if ( typeof target === 'function' ) {
-                               target( x );
-                       } else if ( typeof target === 'object' ) {
-                               if ( target.tagName === 'INPUT' ) {
-                                       if ( x.status === 200 ) {
-                                               target.value = x.responseText;
-                                       }
-                                       // else alert( 'Error: ' + x.status + ' ' + x.statusText + ' (' + x.responseText + ')' );
-                               } else {
-                                       if ( x.status === 200 ) {
-                                               target.innerHTML = x.responseText;
-                                       } else {
-                                               target.innerHTML = '<div class="error">Error: ' + x.status +
-                                                       ' ' + x.statusText + ' (' + x.responseText + ')</div>';
-                                       }
-                               }
-                       } else {
-                               alert( 'Bad target for sajax_do_call: not a function or object: ' + target );
-                       }
-               };
-
-               debug( func_name + ' uri = ' + uri + ' / post = ' + post_data );
-               x.send( post_data );
-               debug( func_name + ' waiting..' );
-
-               return true;
-       }
-
-       /**
-        * @return {boolean} Whether the browser supports AJAX
-        */
-       function wfSupportsAjax() {
-               var request = createXhr(),
-                       supportsAjax = request ? true : false;
-
-               request = undefined;
-               return supportsAjax;
-       }
-
-       // Expose + Mark as deprecated
-       var deprecationNotice = 'Sajax is deprecated, use jQuery.ajax or mediawiki.api instead.';
-
-       // Variables
-       mw.log.deprecate( window, 'sajax_debug_mode', false, deprecationNotice );
-       mw.log.deprecate( window, 'sajax_request_type', 'GET', deprecationNotice );
-       // Methods
-       mw.log.deprecate( window, 'sajax_debug', debug, deprecationNotice );
-       mw.log.deprecate( window, 'sajax_init_object', createXhr, deprecationNotice );
-       mw.log.deprecate( window, 'sajax_do_call', doAjaxRequest, deprecationNotice );
-       mw.log.deprecate( window, 'wfSupportsAjax', wfSupportsAjax, deprecationNotice );
-
-}( mediaWiki ) );
diff --git a/resources/src/mediawiki.legacy/images/feed-icon.png b/resources/src/mediawiki.legacy/images/feed-icon.png
deleted file mode 100644 (file)
index 00f49f6..0000000
Binary files a/resources/src/mediawiki.legacy/images/feed-icon.png and /dev/null differ
diff --git a/resources/src/mediawiki.legacy/images/feed-icon.svg b/resources/src/mediawiki.legacy/images/feed-icon.svg
deleted file mode 100644 (file)
index 6e5f570..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 256 256"><defs><linearGradient x1=".085" y1=".085" x2=".915" y2=".915" id="a"><stop offset="0" stop-color="#E3702D"/><stop offset=".107" stop-color="#EA7D31"/><stop offset=".35" stop-color="#F69537"/><stop offset=".5" stop-color="#FB9E3A"/><stop offset=".702" stop-color="#EA7C31"/><stop offset=".887" stop-color="#DE642B"/><stop offset="1" stop-color="#D95B29"/></linearGradient></defs><rect width="256" height="256" rx="55" ry="55" fill="#CC5D15"/><rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/><rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#a)"/><circle cx="68" cy="189" r="24" fill="#FFF"/><path d="M160 213h-34a82 82 0 0 0-82-82v-34a116 116 0 0 1 116 116zM184 213a140 140 0 0 0-140-140v-35a175 175 0 0 1 175 175z" fill="#FFF"/></svg>
\ No newline at end of file
index e11a2c2..7e171cf 100644 (file)
@@ -2,6 +2,11 @@
  * CSS in this file is used by *all* skins (that have any CSS at all). Be
  * careful what you put in here, since what looks good in one skin may not in
  * another, but don't ignore the poor pre-Monobook users either.
+ *
+ * NOTE: The images which are referenced in this file are no longer in use in
+ * essential interface components. They should NOT be embedded, because that
+ * optimizes for the uncommon case at the cost of bloating the size of render-
+ * blocking CSS common to all pages.
  */
 
 /* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */
@@ -78,6 +83,14 @@ abbr[title],
        cursor: help;
 }
 
+@supports (text-decoration: underline dotted) {
+       abbr[title],
+       .explain[title] {
+               border-bottom: none;
+               text-decoration: underline dotted;
+       }
+}
+
 /* Colored watchlist and recent changes numbers */
 .mw-plusminus-pos {
        color: #006400; /* dark green */
@@ -237,7 +250,7 @@ td.mw-submit {
 }
 
 td.mw-label {
-       vertical-align: top;
+       vertical-align: middle;
 }
 
 .prefsection td.mw-label {
@@ -257,9 +270,7 @@ td.mw-label {
         * compatibility (browsers able to understand gradient syntax support also SVG).
         * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */
        background-image: url(images/question.png);
-       /* @embed */
        background-image: -webkit-linear-gradient(transparent, transparent), url(images/question.svg);
-       /* @embed */
        background-image: linear-gradient(transparent, transparent), url(images/question.svg);
        background-repeat: no-repeat;
        background-size: 13px 13px;
@@ -406,6 +417,11 @@ p.mw-upload-editlicenses {
 /* The auto-generated edit comments */
 .autocomment {
        color: gray;
+       /* In RTL wikis, Latin heading sections can get jumbled with comments that
+          begin with Latin letters or numbers */
+       unicode-bidi: -moz-isolate;
+       unicode-bidi: -webkit-isolate;
+       unicode-bidi: isolate;
 }
 
 #pagehistory .history-user {
@@ -482,15 +498,14 @@ a.new {
 }
 
 /* feed links */
+/* To be removed before 1.26 release, moved to mediawiki.feedlink module */
 a.feedlink {
        /* SVG support using a transparent gradient to guarantee cross-browser
         * compatibility (browsers able to understand gradient syntax support also SVG).
         * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */
-       background-image: url(images/feed-icon.png);
-       /* @embed */
-       background-image: -webkit-linear-gradient(transparent, transparent), url(images/feed-icon.svg);
-       /* @embed */
-       background-image: linear-gradient(transparent, transparent), url(images/feed-icon.svg);
+       background-image: url(../mediawiki/images/feed-icon.png);
+       background-image: -webkit-linear-gradient(transparent, transparent), url(../mediawiki/images/feed-icon.svg);
+       background-image: linear-gradient(transparent, transparent), url(../mediawiki/images/feed-icon.svg);
        background-position: center left;
        background-repeat: no-repeat;
        background-size: 12px 12px;
@@ -875,7 +890,6 @@ ul.mw-gallery-packed {
 }
 
 .mw-ajax-loader {
-       /* @embed */
        background-image: url(images/ajax-loader.gif);
        background-position: center center;
        background-repeat: no-repeat;
@@ -887,7 +901,6 @@ ul.mw-gallery-packed {
 .mw-small-spinner {
        padding: 10px !important;
        margin-right: 0.6em;
-       /* @embed */
        background-image: url(images/spinner.gif);
        background-position: center center;
        background-repeat: no-repeat;
@@ -944,6 +957,7 @@ h2:lang(te), h3:lang(te), h4:lang(te), h5:lang(te), h6:lang(te) {
 }
 
 /* Localised ordered list numbering for some languages */
+ol:lang(azb) li,
 ol:lang(bcc) li,
 ol:lang(bgn) li,
 ol:lang(bqi) li,
@@ -1026,7 +1040,6 @@ ol:lang(or) li {
        margin-left: 2px;
        margin-bottom: -8px;
        padding: 0 0 0 15px;
-       /* @embed */
        background-image: url(images/help-question.gif);
        background-position: left center;
        background-repeat: no-repeat;
@@ -1037,7 +1050,6 @@ ol:lang(or) li {
 }
 
 .mw-help-field-hint:hover {
-       /* @embed */
        background-image: url(images/help-question-hover.gif);
 }
 
index 32cd79a..b5720a4 100644 (file)
        win.importScript = importScript;
        win.importStylesheet = importStylesheet;
 
+       // Replace document.write/writeln with basic html parsing that appends
+       // to the <body> to avoid blanking pages. Added JavaScript will not run.
+       $.each( [ 'write', 'writeln' ], function ( idx, method ) {
+               mw.log.deprecate( document, method, function () {
+                       $( 'body' ).append( $.parseHTML( Array.prototype.join.call( arguments, '' ) ) );
+               }, 'Use jQuery or mw.loader.load instead.' );
+       } );
+
 }( mediaWiki, jQuery ) );
index cc72e16..f9b0d35 100644 (file)
@@ -17,7 +17,7 @@
                        var $spinner, href, rcid, apiRequest;
 
                        // Start preloading the notification module (normally loaded by mw.notify())
-                       mw.loader.load( ['mediawiki.notification'], null, true );
+                       mw.loader.load( 'mediawiki.notification' );
 
                        // Hide the link and create a spinner to show it inside the brackets.
                        $spinner = $.createSpinner( {
@@ -43,7 +43,7 @@
                                        mw.notify( mw.msg( 'markedaspatrollednotify', title.toText() ) );
                                } else {
                                        // This should never happen as errors should trigger fail
-                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
+                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ), { type: 'error' } );
                                }
                        } )
                        .fail( function ( error ) {
@@ -53,9 +53,9 @@
                                $patrolLinks.show();
                                if ( error === 'noautopatrol' ) {
                                        // Can't patrol own
-                                       mw.notify( mw.msg( 'markedaspatrollederror-noautopatrol' ) );
+                                       mw.notify( mw.msg( 'markedaspatrollederror-noautopatrol' ), { type: 'warn' } );
                                } else {
-                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ) );
+                                       mw.notify( mw.msg( 'markedaspatrollederrornotify' ), { type: 'error' } );
                                }
                        } );
 
index 70029a1..8ec4cf0 100644 (file)
@@ -64,7 +64,7 @@
                if ( $nodes.length ) {
                        mw.loader.using( 'mediawiki.widgets' ).done( function () {
                                $nodes.each( function () {
-                                       OO.ui.infuse( this.id );
+                                       OO.ui.infuse( this );
                                } );
                        } );
                }
index ddd4f0c..708dcb5 100644 (file)
@@ -1,12 +1,11 @@
 ( function ( mw, $ ) {
 
-       mw.page = {};
+       // Support: MediaWiki < 1.26
+       // Cached HTML will not yet have this from OutputPage::getHeadScripts.
+       document.documentElement.className = document.documentElement.className
+               .replace( /(^|\s)client-nojs(\s|$)/, '$1client-js$2' );
 
-       // Client profile classes for <html>
-       // Allows for easy hiding/showing of JS or no-JS-specific UI elements
-       $( document.documentElement )
-               .addClass( 'client-js' )
-               .removeClass( 'client-nojs' );
+       mw.page = {};
 
        $( function () {
                mw.util.init();
index 50f280a..9724c56 100644 (file)
                        var action, api, $link;
 
                        // Start preloading the notification module (normally loaded by mw.notify())
-                       mw.loader.load( ['mediawiki.notification'], null, true );
+                       mw.loader.load( 'mediawiki.notification' );
 
                        action = mwUriGetAction( this.href );
 
                                        msg = mw.message( 'watcherrortext', link );
 
                                        // Report to user about the error
-                                       mw.notify( msg, { tag: 'watch-self' } );
+                                       mw.notify( msg, {
+                                               tag: 'watch-self',
+                                               type: 'error'
+                                       } );
                                } );
                } );
        } );
index e27e34a..0e71d30 100644 (file)
@@ -19,3 +19,8 @@
        height: 0;
        zoom: 1;
 }
+
+/* When JS is enabled, .successbox is replaced with a mw.notification */
+.successbox {
+       display: none;
+}
index a385ad3..893db98 100644 (file)
@@ -1,3 +1,4 @@
+
 /*!
  * JavaScript for Special:Preferences
  */
@@ -5,7 +6,8 @@ jQuery( function ( $ ) {
        var $preftoc, $preferences, $fieldsets, $legends,
                hash, labelFunc,
                $tzSelect, $tzTextbox, $localtimeHolder, servertime,
-               $checkBoxes, allowCloseWindow;
+               $checkBoxes, allowCloseWindow,
+               notif;
 
        labelFunc = function () {
                return this.id.replace( /^mw-prefsection/g, 'preftab' );
@@ -84,6 +86,21 @@ jQuery( function ( $ ) {
                }
        }
 
+       // If there is a #mw-preferences-success box and javascript is enabled, use a slick notification instead!
+       if ( $( '#mw-preferences-success' ).length ) {
+               notif = mediaWiki.notification.notify( mediaWiki.message( 'savedprefs' ), { autoHide: false } );
+               $( '#preftoc, .prefsection' ).one( 'change keydown mousedown', function () { // 'change' event not reliable!
+                       if ( notif ) {
+                               notif.close();
+                       }
+               } );
+
+               // Remove now-unnecessary success=1 querystring to prevent reappearance of notification on reload
+               if ( history.replaceState ) {
+                       history.replaceState( {}, document.title, document.URL.replace( /&?success=1/, '' ) );
+               }
+       }
+
        // Populate the prefToc
        $legends.each( function ( i, legend ) {
                var $legend = $( legend ),
index 8d648a6..8f845df 100644 (file)
@@ -172,7 +172,3 @@ table#mw-search-powertable {
 form#powersearch {
        clear: both;
 }
-
-#searchText {
-       display: inline-block;
-}
index 23602b3..b27fe34 100644 (file)
@@ -33,7 +33,8 @@
 
                // Change the header search links to what user entered
                $headerLinks = $( '.search-types a' );
-               OO.ui.infuse( 'searchText' ).on( 'change', function ( searchterm ) {
+               $( '#searchText, #powerSearchText' ).change( function () {
+                       var searchterm = $( this ).val();
                        $headerLinks.each( function () {
                                var parts = $( this ).attr( 'href' ).split( 'search=' ),
                                        lastpart = '',
@@ -45,7 +46,7 @@
                                }
                                this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
                        } );
-               } );
+               } ).trigger( 'change' );
 
                // When saving settings, use the proper request method (POST instead of GET).
                $( '#mw-search-powersearch-remember' ).change( function () {
index 8d3e86a..7628ff8 100644 (file)
@@ -28,7 +28,7 @@
                                        mw.notify( mw.msg( 'addedwatchtext-short', title ) );
                                } ).fail( function () {
                                        $link.text( mw.msg( 'watch' ) );
-                                       mw.notify( mw.msg( 'watcherrortext', title ) );
+                                       mw.notify( mw.msg( 'watcherrortext', title ), { type: 'error' } );
                                } );
                        } else {
                                $link.text( mw.msg( 'unwatching' ) );
@@ -38,7 +38,7 @@
                                        mw.notify( mw.msg( 'removedwatchtext-short', title ) );
                                } ).fail( function () {
                                        $link.text( mw.msg( 'unwatch' ) );
-                                       mw.notify( mw.msg( 'watcherrortext', title ) );
+                                       mw.notify( mw.msg( 'watcherrortext', title ), { type: 'error' } );
                                } );
                        }
 
index 73042f2..4f41fad 100644 (file)
@@ -1,6 +1,6 @@
 <div id="mw-upload-thumbnail" class="thumb tright">
        <div class="thumbinner">
-               <div class="mw-small-spinner" style="width: 180px; height: 180px"></div>
+               <div class="mw-spinner mw-spinner-small" style="width: 180px; height: 180px"></div>
                <div class="thumbcaption">
                        <div class="filename"></div>
                        <div class="fileinfo"></div>
diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js
new file mode 100644 (file)
index 0000000..f1a08a3
--- /dev/null
@@ -0,0 +1,531 @@
+/*!
+ * MediaWiki Widgets – CalendarWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+/*global moment */
+( function ( $, mw ) {
+
+       /**
+        * Creates an mw.widgets.CalendarWidget object.
+        *
+        * You will most likely want to use mw.widgets.DateInputWidget instead of CalendarWidget directly.
+        *
+        * @class
+        * @extends OO.ui.Widget
+        * @mixins OO.ui.mixin.TabIndexedElement
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {string} [precision='day'] Date precision to use, 'day' or 'month'
+        * @cfg {string|null} [date=null] Day or month date (depending on `precision`), in the format
+        *     'YYYY-MM-DD' or 'YYYY-MM'. When null, the calendar will show today's date, but not select
+        *     it.
+        */
+       mw.widgets.CalendarWidget = function MWWCalendarWidget( config ) {
+               // Config initialization
+               config = config || {};
+
+               // Parent constructor
+               mw.widgets.CalendarWidget.parent.call( this, config );
+
+               // Mixin constructors
+               OO.ui.mixin.TabIndexedElement.call( this, $.extend( {}, config, { $tabIndexed: this.$element } ) );
+
+               // Properties
+               this.precision = config.precision || 'day';
+               // Currently selected date (day or month)
+               this.date = null;
+               // Current UI state (date and precision we're displaying right now)
+               this.moment = null;
+               this.displayLayer = this.getDisplayLayers()[ 0 ]; // 'month', 'year', 'duodecade'
+
+               this.$header = $( '<div>' ).addClass( 'mw-widget-calendarWidget-header' );
+               this.$bodyOuterWrapper = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body-outer-wrapper' );
+               this.$bodyWrapper = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body-wrapper' );
+               this.$body = $( '<div>' ).addClass( 'mw-widget-calendarWidget-body' );
+               this.labelButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       label: '',
+                       framed: false,
+                       classes: [ 'mw-widget-calendarWidget-labelButton' ]
+               } );
+               this.upButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'collapse',
+                       classes: [ 'mw-widget-calendarWidget-upButton' ]
+               } );
+               this.prevButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'previous',
+                       classes: [ 'mw-widget-calendarWidget-prevButton' ]
+               } );
+               this.nextButton = new OO.ui.ButtonWidget( {
+                       tabIndex: -1,
+                       framed: false,
+                       icon: 'next',
+                       classes: [ 'mw-widget-calendarWidget-nextButton' ]
+               } );
+
+               // Events
+               this.labelButton.connect( this, { click: 'onUpButtonClick' } );
+               this.upButton.connect( this, { click: 'onUpButtonClick' } );
+               this.prevButton.connect( this, { click: 'onPrevButtonClick' } );
+               this.nextButton.connect( this, { click: 'onNextButtonClick' } );
+               this.$element.on( {
+                       focus: this.onFocus.bind( this ),
+                       mousedown: this.onClick.bind( this ),
+                       keydown: this.onKeyDown.bind( this )
+               } );
+
+               // Initialization
+               this.$element
+                       .addClass( 'mw-widget-calendarWidget' )
+                       .append( this.$header, this.$bodyOuterWrapper.append( this.$bodyWrapper.append( this.$body ) ) );
+               this.$header.append(
+                       this.prevButton.$element,
+                       this.nextButton.$element,
+                       this.upButton.$element,
+                       this.labelButton.$element
+               );
+               this.setDate( config.date !== undefined ? config.date : null );
+       };
+
+       /* Inheritance */
+
+       OO.inheritClass( mw.widgets.CalendarWidget, OO.ui.Widget );
+       OO.mixinClass( mw.widgets.CalendarWidget, OO.ui.mixin.TabIndexedElement );
+
+       /* Events */
+
+       /**
+        * @event change
+        *
+        * A change event is emitted when the chosen date changes.
+        *
+        * @param {string} date Day or month date, in the format 'YYYY-MM-DD' or 'YYYY-MM'
+        */
+
+       /* Methods */
+
+       /**
+        * Get the date format ('YYYY-MM-DD' or 'YYYY-MM', depending on precision), which is used
+        * internally and for dates accepted by #setDate and returned by #getDate.
+        *
+        * @private
+        * @returns {string} Format
+        */
+       mw.widgets.CalendarWidget.prototype.getDateFormat = function () {
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.precision ];
+       };
+
+       /**
+        * Get the date precision this calendar uses, 'day' or 'month'.
+        *
+        * @private
+        * @returns {string} Precision, 'day' or 'month'
+        */
+       mw.widgets.CalendarWidget.prototype.getPrecision = function () {
+               return this.precision;
+       };
+
+       /**
+        * Get list of possible display layers.
+        *
+        * @private
+        * @returns {string[]} Layers
+        */
+       mw.widgets.CalendarWidget.prototype.getDisplayLayers = function () {
+               return [ 'month', 'year', 'duodecade' ].slice( this.precision === 'month' ? 1 : 0 );
+       };
+
+       /**
+        * Update the calendar.
+        *
+        * @private
+        * @param {string|null} [fade=null] Direction in which to fade out current calendar contents, 'previous',
+        *     'next' or 'up'
+        * @returns {string} Format
+        */
+       mw.widgets.CalendarWidget.prototype.updateUI = function ( fade ) {
+               var items, today, selected, currentMonth, currentYear, currentDay, i, needsFade,
+                       $bodyWrapper = this.$bodyWrapper;
+
+               if (
+                       this.displayLayer === this.previousDisplayLayer &&
+                       this.date === this.previousDate &&
+                       this.previousMoment &&
+                       this.previousMoment.isSame( this.moment, this.precision === 'month' ? 'month' : 'day' )
+               ) {
+                       // Already displayed
+                       return;
+               }
+
+               items = [];
+               if ( this.$oldBody ) {
+                       this.$oldBody.remove();
+               }
+               this.$oldBody = this.$body.addClass( 'mw-widget-calendarWidget-old-body' );
+               // Clone without children
+               this.$body = $( this.$body[0].cloneNode( false ) )
+                       .removeClass( 'mw-widget-calendarWidget-old-body' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-month', this.displayLayer === 'month' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-year', this.displayLayer === 'year' )
+                       .toggleClass( 'mw-widget-calendarWidget-body-duodecade', this.displayLayer === 'duodecade' );
+
+               today = moment();
+               selected = moment( this.getDate(), this.getDateFormat() );
+
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.labelButton.setLabel( this.moment.format( 'MMMM YYYY' ) );
+                       this.upButton.toggle( true );
+
+                       // First week displayed is the first week spanned by the month, unless it begins on Monday, in
+                       // which case first week displayed is the previous week. This makes the calendar "balanced"
+                       // and also neatly handles 28-day February sometimes spanning only 4 weeks.
+                       currentDay = moment( this.moment ).startOf( 'month' ).subtract( 1, 'day' ).startOf( 'week' );
+
+                       // Day-of-week labels. Localisation-independent: works with weeks starting on Saturday, Sunday
+                       // or Monday.
+                       for ( i = 0; i < 7; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-day-heading' )
+                                               .text( currentDay.format( 'dd' ) )
+                               );
+                               currentDay.add( 1, 'day' );
+                       }
+                       currentDay.subtract( 7, 'days' );
+
+                       // Actual calendar month. Always displays 6 weeks, for consistency (months can span 4 to 6
+                       // weeks).
+                       for ( i = 0; i < 42; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-day' )
+                                               .toggleClass( 'mw-widget-calendarWidget-day-additional', !currentDay.isSame( this.moment, 'month' ) )
+                                               .toggleClass( 'mw-widget-calendarWidget-day-today', currentDay.isSame( today, 'day' ) )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentDay.isSame( selected, 'day' ) )
+                                               .text( currentDay.format( 'D' ) )
+                                               .data( 'date', currentDay.date() )
+                                               .data( 'month', currentDay.month() )
+                                               .data( 'year', currentDay.year() )
+                               );
+                               currentDay.add( 1, 'day' );
+                       }
+                       break;
+
+               case 'year':
+                       this.labelButton.setLabel( this.moment.format( 'YYYY' ) );
+                       this.upButton.toggle( true );
+
+                       currentMonth = moment( this.moment ).startOf( 'year' );
+                       for ( i = 0; i < 12; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-month' )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentMonth.isSame( selected, 'month' ) )
+                                               .text( currentMonth.format( 'MMMM' ) )
+                                               .data( 'month', currentMonth.month() )
+                               );
+                               currentMonth.add( 1, 'month' );
+                       }
+                       // Shuffle the array to display months in columns rather than rows.
+                       items = [
+                               items[ 0 ], items[ 6 ],      //  | January  | July      |
+                               items[ 1 ], items[ 7 ],      //  | February | August    |
+                               items[ 2 ], items[ 8 ],      //  | March    | September |
+                               items[ 3 ], items[ 9 ],      //  | April    | October   |
+                               items[ 4 ], items[ 10 ],     //  | May      | November  |
+                               items[ 5 ], items[ 11 ]      //  | June     | December  |
+                       ];
+                       break;
+
+               case 'duodecade':
+                       this.labelButton.setLabel( null );
+                       this.upButton.toggle( false );
+
+                       currentYear = moment( { year: Math.floor( this.moment.year() / 20 ) * 20 } );
+                       for ( i = 0; i < 20; i++ ) {
+                               items.push(
+                                       $( '<div>' )
+                                               .addClass( 'mw-widget-calendarWidget-item mw-widget-calendarWidget-year' )
+                                               .toggleClass( 'mw-widget-calendarWidget-item-selected', currentYear.isSame( selected, 'year' ) )
+                                               .text( currentYear.format( 'YYYY' ) )
+                                               .data( 'year', currentYear.year() )
+                               );
+                               currentYear.add( 1, 'year' );
+                       }
+                       break;
+               }
+
+               this.$body.append.apply( this.$body, items );
+
+               $bodyWrapper
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-up' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-down' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-previous' )
+                       .removeClass( 'mw-widget-calendarWidget-body-wrapper-fade-next' );
+
+               needsFade = this.previousDisplayLayer !== this.displayLayer;
+               if ( this.displayLayer === 'month' ) {
+                       needsFade = needsFade || !this.moment.isSame( this.previousMoment, 'month' );
+               } else if ( this.displayLayer === 'year' ) {
+                       needsFade = needsFade || !this.moment.isSame( this.previousMoment, 'year' );
+               } else if ( this.displayLayer === 'duodecade' ) {
+                       needsFade = needsFade || (
+                               Math.floor( this.moment.year() / 20 ) * 20 !==
+                                       Math.floor( this.previousMoment.year() / 20 ) * 20
+                       );
+               }
+
+               if ( fade && needsFade ) {
+                       this.$oldBody.find( '.mw-widget-calendarWidget-item-selected' )
+                               .removeClass( 'mw-widget-calendarWidget-item-selected' );
+                       if ( fade === 'previous' || fade === 'up' ) {
+                               this.$body.insertBefore( this.$oldBody );
+                       } else if ( fade === 'next' || fade === 'down' ) {
+                               this.$body.insertAfter( this.$oldBody );
+                       }
+                       setTimeout( function () {
+                               $bodyWrapper.addClass( 'mw-widget-calendarWidget-body-wrapper-fade-' + fade );
+                       }.bind( this ), 0 );
+               } else {
+                       this.$oldBody.replaceWith( this.$body );
+               }
+
+               this.previousMoment = moment( this.moment );
+               this.previousDisplayLayer = this.displayLayer;
+               this.previousDate = this.date;
+
+               this.$body.on( 'click', this.onBodyClick.bind( this ) );
+       };
+
+       /**
+        * Handle click events on the "up" button, switching to less precise view.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onUpButtonClick = function () {
+               var
+                       layers = this.getDisplayLayers(),
+                       currentLayer = layers.indexOf( this.displayLayer );
+               if ( currentLayer !== layers.length - 1 ) {
+                       // One layer up
+                       this.displayLayer = layers[ currentLayer + 1 ];
+                       this.updateUI( 'up' );
+               } else {
+                       this.updateUI();
+               }
+       };
+
+       /**
+        * Handle click events on the "previous" button, switching to previous pane.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onPrevButtonClick = function () {
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.moment.subtract( 1, 'month' );
+                       break;
+               case 'year':
+                       this.moment.subtract( 1, 'year' );
+                       break;
+               case 'duodecade':
+                       this.moment.subtract( 20, 'years' );
+                       break;
+               }
+               this.updateUI( 'previous' );
+       };
+
+       /**
+        * Handle click events on the "next" button, switching to next pane.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onNextButtonClick = function () {
+               switch ( this.displayLayer ) {
+               case 'month':
+                       this.moment.add( 1, 'month' );
+                       break;
+               case 'year':
+                       this.moment.add( 1, 'year' );
+                       break;
+               case 'duodecade':
+                       this.moment.add( 20, 'years' );
+                       break;
+               }
+               this.updateUI( 'next' );
+       };
+
+       /**
+        * Handle click events anywhere in the body of the widget, which contains the matrix of days,
+        * months or years to choose. Maybe change the pane or switch to more precise view, depending on
+        * what gets clicked.
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onBodyClick = function ( e ) {
+               var
+                       previousMoment = moment( this.moment ),
+                       $target = $( e.target ),
+                       layers = this.getDisplayLayers(),
+                       currentLayer = layers.indexOf( this.displayLayer );
+               if ( $target.data( 'year' ) !== undefined ) {
+                       this.moment.year( $target.data( 'year' ) );
+               }
+               if ( $target.data( 'month' ) !== undefined ) {
+                       this.moment.month( $target.data( 'month' ) );
+               }
+               if ( $target.data( 'date' ) !== undefined ) {
+                       this.moment.date( $target.data( 'date' ) );
+               }
+               if ( currentLayer === 0 ) {
+                       this.setDateFromMoment();
+                       this.updateUI(
+                               this.precision === 'day' && this.moment.isBefore( previousMoment, 'month' ) ? 'previous' :
+                                       this.precision === 'day' && this.moment.isAfter( previousMoment, 'month' ) ? 'next' : null
+                       );
+               } else {
+                       // One layer down
+                       this.displayLayer = layers[ currentLayer - 1 ];
+                       this.updateUI( 'down' );
+               }
+       };
+
+       /**
+        * Set the date.
+        *
+        * @param {string|null} [date=null] Day or month date, in the format 'YYYY-MM-DD' or 'YYYY-MM'.
+        *     When null, the calendar will show today's date, but not select it. When invalid, the date
+        *     is not changed.
+        */
+       mw.widgets.CalendarWidget.prototype.setDate = function ( date ) {
+               var mom = date !== null ? moment( date, this.getDateFormat() ) : moment();
+               if ( mom.isValid() ) {
+                       this.moment = mom;
+                       if ( date !== null ) {
+                               this.setDateFromMoment();
+                       } else if ( this.date !== null ) {
+                               this.date = null;
+                               this.emit( 'change', this.date );
+                       }
+                       this.displayLayer = this.getDisplayLayers()[ 0 ];
+                       this.updateUI();
+               }
+       };
+
+       /**
+        * Reset the user interface of this widget to reflect selected date.
+        */
+       mw.widgets.CalendarWidget.prototype.resetUI = function () {
+               this.moment = moment( this.getDate(), this.getDateFormat() );
+               this.displayLayer = this.getDisplayLayers()[ 0 ];
+               this.updateUI();
+       };
+
+       /**
+        * Set the date from moment object.
+        *
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.setDateFromMoment = function () {
+               // Switch to English locale to avoid number formatting. We want the internal value to be
+               // '2015-07-24' and not '٢٠١٥-٠٧-٢٤' even if the UI language is Arabic.
+               var newDate = moment( this.moment ).locale( 'en' ).format( this.getDateFormat() );
+               if ( this.date !== newDate ) {
+                       this.date = newDate;
+                       this.emit( 'change', this.date );
+               }
+       };
+
+       /**
+        * Get current date, in the format 'YYYY-MM-DD' or 'YYYY-MM', depending on precision. Digits will
+        * not be localised.
+        *
+        * @returns {string|null} Date string
+        */
+       mw.widgets.CalendarWidget.prototype.getDate = function () {
+               return this.date;
+       };
+
+       /**
+        * Handle focus events.
+        *
+        * @private
+        */
+       mw.widgets.CalendarWidget.prototype.onFocus = function () {
+               this.displayLayer = this.getDisplayLayers()[ 0 ];
+               this.updateUI( 'down' );
+       };
+
+       /**
+        * Handle mouse click events.
+        *
+        * @private
+        * @param {jQuery.Event} e Mouse click event
+        */
+       mw.widgets.CalendarWidget.prototype.onClick = function ( e ) {
+               if ( !this.isDisabled() && e.which === 1 ) {
+                       // Prevent unintended focussing
+                       return false;
+               }
+       };
+
+       /**
+        * Handle key down events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key down event
+        */
+       mw.widgets.CalendarWidget.prototype.onKeyDown = function ( e ) {
+               var
+                       /*jshint -W024*/
+                       dir = OO.ui.Element.static.getDir( this.$element ),
+                       /*jshint +W024*/
+                       nextDirectionKey = dir === 'ltr' ? OO.ui.Keys.RIGHT : OO.ui.Keys.LEFT,
+                       prevDirectionKey = dir === 'ltr' ? OO.ui.Keys.LEFT : OO.ui.Keys.RIGHT,
+                       updateInDirection = null;
+
+               if ( !this.isDisabled() ) {
+                       switch ( e.which ) {
+                       case prevDirectionKey:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'month' : 'day' );
+                               updateInDirection = 'previous';
+                               break;
+                       case nextDirectionKey:
+                               this.moment.add( 1, this.precision === 'month' ? 'month' : 'day' );
+                               updateInDirection = 'next';
+                               break;
+                       case OO.ui.Keys.UP:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'month' : 'week' );
+                               updateInDirection = 'previous';
+                               break;
+                       case OO.ui.Keys.DOWN:
+                               this.moment.add( 1, this.precision === 'month' ? 'month' : 'week' );
+                               updateInDirection = 'next';
+                               break;
+                       case OO.ui.Keys.PAGEUP:
+                               this.moment.subtract( 1, this.precision === 'month' ? 'year' : 'month' );
+                               updateInDirection = 'previous';
+                               break;
+                       case OO.ui.Keys.PAGEDOWN:
+                               this.moment.add( 1, this.precision === 'month' ? 'year' : 'month' );
+                               updateInDirection = 'next';
+                               break;
+                       }
+
+                       if ( updateInDirection ) {
+                               this.displayLayer = this.getDisplayLayers()[ 0 ];
+                               this.setDateFromMoment();
+                               this.updateUI( updateInDirection );
+                               return false;
+                       }
+               }
+       };
+
+}( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.less
new file mode 100644 (file)
index 0000000..21a9019
--- /dev/null
@@ -0,0 +1,262 @@
+/*!
+ * MediaWiki Widgets – CalendarWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+@calendarWidth: 21em;
+@calendarHeight: 14em;
+
+.mw-widget-calendarWidget {
+       width: @calendarWidth;
+}
+
+.mw-widget-calendarWidget-header {
+       position: relative;
+       line-height: 2.5em;
+}
+
+.mw-widget-calendarWidget-header .oo-ui-buttonWidget {
+       margin-right: 0;
+}
+
+.mw-widget-calendarWidget-header .mw-widget-calendarWidget-labelButton {
+       margin: 0 auto;
+       display: block;
+       width: @calendarWidth - 2*3em;
+
+       .oo-ui-buttonElement-button {
+               width: @calendarWidth - 2*3em;
+               text-align: center;
+       }
+}
+
+.mw-widget-calendarWidget-upButton {
+       position: absolute;
+       right: 3em;
+}
+
+.mw-widget-calendarWidget-prevButton {
+       float: left;
+}
+
+.mw-widget-calendarWidget-nextButton {
+       float: right;
+}
+
+.mw-widget-calendarWidget-body-outer-wrapper {
+       clear: both;
+       position: relative;
+       overflow: hidden;
+       // Fit 7 days, 3em each
+       width: @calendarWidth;
+       // Fit 6 weeks + heading line, 2em each
+       height: @calendarHeight;
+}
+
+.mw-widget-calendarWidget-body-wrapper {
+       .mw-widget-calendarWidget-body {
+               display: inline-block;
+               // Fit 7 days, 3em each
+               width: @calendarWidth;
+               // Fit 6 weeks + heading line, 2em each
+               height: @calendarHeight;
+       }
+
+       .mw-widget-calendarWidget-old-body {
+               // background: #fdd;
+       }
+
+       .mw-widget-calendarWidget-body:not(.mw-widget-calendarWidget-old-body):first-child {
+               margin-top: -@calendarHeight;
+               margin-left: -@calendarWidth;
+       }
+
+       .mw-widget-calendarWidget-body:not(.mw-widget-calendarWidget-old-body):last-child {
+               margin-top: 0;
+               margin-left: 0;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-previous {
+       width: @calendarWidth * 2;
+       height: @calendarHeight;
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-top: 0 !important;
+               margin-left: 0 !important;
+               transition: 0.5s margin-left;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-next {
+       width: @calendarWidth * 2;
+       height: @calendarHeight;
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: -@calendarWidth !important;
+               margin-top: 0 !important;
+               transition: 0.5s margin-left;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-up {
+       width: @calendarWidth;
+       height: @calendarHeight * 2;
+
+       .mw-widget-calendarWidget-body {
+               display: block;
+       }
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: 0 !important;
+               margin-top: 0 !important;
+               transition: 0.5s margin-top;
+       }
+}
+
+.mw-widget-calendarWidget-body-wrapper-fade-down {
+       width: @calendarWidth;
+       height: @calendarHeight * 2;
+
+       .mw-widget-calendarWidget-body {
+               display: block;
+       }
+
+       .mw-widget-calendarWidget-body:first-child {
+               margin-left: 0 !important;
+               margin-top: -@calendarHeight !important;
+               transition: 0.5s margin-top;
+       }
+}
+
+.mw-widget-calendarWidget-day,
+.mw-widget-calendarWidget-day-heading,
+.mw-widget-calendarWidget-month,
+.mw-widget-calendarWidget-year {
+       display: inline-block;
+       vertical-align: middle;
+       white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       text-align: center;
+}
+
+.mw-widget-calendarWidget-day,
+.mw-widget-calendarWidget-day-heading {
+       // 7x7 grid
+       width: @calendarWidth / 7;
+       line-height: @calendarHeight / 7;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(7n) {
+               width: @calendarWidth / 7 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(7n+1) {
+               width: @calendarWidth / 7 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(42) ~ & {
+               line-height: @calendarHeight / 7 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-month {
+       // 2x6 grid
+       width: @calendarWidth / 2;
+       line-height: @calendarHeight / 6;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(2n) {
+               width: @calendarWidth / 2 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(2n+1) {
+               width: @calendarWidth / 2 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(10) ~ & {
+               line-height: @calendarHeight / 6 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-year {
+       // 5x4 grid
+       width: @calendarWidth / 5;
+       line-height: @calendarHeight / 4;
+       // Don't overlap the hacked-up fake box-shadow border we get inside DateInputWidget when focussed
+       &:nth-child(5n) {
+               width: @calendarWidth / 5 - 0.2em;
+               margin-right: 0.2em;
+       }
+       &:nth-child(5n+1) {
+               width: @calendarWidth / 5 - 0.2em;
+               margin-left: 0.2em;
+       }
+       &:nth-child(15) ~ & {
+               line-height: @calendarHeight / 4 - 0.2em;
+               margin-bottom: 0.2em;
+       }
+}
+
+.mw-widget-calendarWidget-item {
+       cursor: pointer;
+}
+
+/* Theme-specific */
+.mw-widget-calendarWidget-day {
+       color: #444;
+}
+
+.mw-widget-calendarWidget-day-heading {
+       font-weight: bold;
+       color: #555;
+}
+
+.mw-widget-calendarWidget-day-additional {
+       color: #aaa;
+}
+
+.mw-widget-calendarWidget-day-today {
+       box-shadow: inset 0 0 0 1px #3787fb;
+       border-radius: ((@calendarHeight / 7) / 2);
+}
+
+.mw-widget-calendarWidget-item-selected {
+       background-color: #d8e6fe;
+       color: #3787fb;
+
+       &.mw-widget-calendarWidget-day,
+       &.mw-widget-calendarWidget-day-heading {
+               border-radius: ((@calendarHeight / 7) / 2);
+       }
+
+       &.mw-widget-calendarWidget-month {
+               border-radius: ((@calendarHeight / 6) / 2);
+       }
+
+       &.mw-widget-calendarWidget-year {
+               border-radius: ((@calendarHeight / 4) / 2);
+       }
+}
+
+.mw-widget-calendarWidget-item:hover {
+       background-color: #eee;
+
+       &.mw-widget-calendarWidget-day,
+       &.mw-widget-calendarWidget-day-heading {
+               border-radius: ((@calendarHeight / 7) / 4);
+               // Hide the border from .mw-widget-calendarWidget-day-today
+               box-shadow: none;
+       }
+
+       &.mw-widget-calendarWidget-month {
+               border-radius: ((@calendarHeight / 6) / 4);
+       }
+
+       &.mw-widget-calendarWidget-year {
+               border-radius: ((@calendarHeight / 4) / 4);
+       }
+}
diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.js
new file mode 100644 (file)
index 0000000..8d952e5
--- /dev/null
@@ -0,0 +1,452 @@
+/*!
+ * MediaWiki Widgets – DateInputWidget class.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+/*global moment */
+( function ( $, mw ) {
+
+       /**
+        * Creates an mw.widgets.DateInputWidget object.
+        *
+        *     @example
+        *     // Date input widget showcase
+        *     var fieldset = new OO.ui.FieldsetLayout( {
+        *       items: [
+        *         new OO.ui.FieldLayout(
+        *           new mw.widgets.DateInputWidget(),
+        *           {
+        *             align: 'top',
+        *             label: 'Select date'
+        *           }
+        *         ),
+        *         new OO.ui.FieldLayout(
+        *           new mw.widgets.DateInputWidget( { precision: 'month' } ),
+        *           {
+        *             align: 'top',
+        *             label: 'Select month'
+        *           }
+        *         ),
+        *         new OO.ui.FieldLayout(
+        *           new mw.widgets.DateInputWidget( {
+        *             inputFormat: 'DD.MM.YYYY',
+        *             displayFormat: 'Do [of] MMMM [anno Domini] YYYY'
+        *           } ),
+        *           {
+        *             align: 'top',
+        *             label: 'Select date (custom formats)'
+        *           }
+        *         )
+        *       ]
+        *     } );
+        *     $( 'body' ).append( fieldset.$element );
+        *
+        * The value is stored in 'YYYY-MM-DD' or 'YYYY-MM' format:
+        *
+        *     @example
+        *     // Accessing values in a date input widget
+        *     var dateInput = new mw.widgets.DateInputWidget();
+        *     var $label = $( '<p>' );
+        *     $( 'body' ).append( $label, dateInput.$element );
+        *     dateInput.on( 'change', function () {
+        *       // The value will always be a valid date or empty string, malformed input is ignored
+        *       var date = dateInput.getValue();
+        *       $label.text( 'Selected date: ' + ( date || '(none)' ) );
+        *     } );
+        *
+        * @class
+        * @extends OO.ui.InputWidget
+        *
+        * @constructor
+        * @param {Object} [config] Configuration options
+        * @cfg {string} [precision='day'] Date precision to use, 'day' or 'month'
+        * @cfg {string} [value] Day or month date (depending on `precision`), in the format 'YYYY-MM-DD'
+        *     or 'YYYY-MM'. If not given or empty string, no date is selected.
+        * @cfg {string} [inputFormat] Date format string to use for the textual input field. Displayed
+        *     while the widget is active, and the user can type in a date in this format. Should be short
+        *     and easy to type. When not given, defaults to 'YYYY-MM-DD' or 'YYYY-MM', depending on
+        *     `precision`.
+        * @cfg {string} [displayFormat] Date format string to use for the clickable label. Displayed
+        *     while the widget is inactive. Should be as unambiguous as possible (for example, prefer to
+        *     spell out the month, rather than rely on the order), even if that makes it longer. When not
+        *     given, the default is language-specific.
+        * @cfg {string} [placeholder] User-visible date format string displayed in the textual input
+        *     field when it's empty. Should be the same as `inputFormat`, but translated to the user's
+        *     language. When not given, defaults to a translated version of 'YYYY-MM-DD' or 'YYYY-MM',
+        *     depending on `precision`.
+        */
+       mw.widgets.DateInputWidget = function MWWDateInputWidget( config ) {
+               // Config initialization
+               config = $.extend( { precision: 'day' }, config );
+
+               var placeholder;
+               if ( config.placeholder ) {
+                       placeholder = config.placeholder;
+               } else if ( config.inputFormat ) {
+                       // We have no way to display a translated placeholder for custom formats
+                       placeholder = '';
+               } else {
+                       // Messages: mw-widgets-dateinput-placeholder-day, mw-widgets-dateinput-placeholder-month
+                       placeholder = mw.msg( 'mw-widgets-dateinput-placeholder-' + config.precision );
+               }
+
+               // Properties (must be set before parent constructor, which calls #setValue)
+               this.handle = new OO.ui.LabelWidget();
+               this.textInput = new OO.ui.TextInputWidget( {
+                       placeholder: placeholder,
+                       validate: this.validateDate.bind( this )
+               } );
+               this.calendar = new mw.widgets.CalendarWidget( {
+                       precision: config.precision
+               } );
+               this.inCalendar = 0;
+               this.inTextInput = 0;
+               this.inputFormat = config.inputFormat;
+               this.displayFormat = config.displayFormat;
+
+               // Parent constructor
+               mw.widgets.DateInputWidget.parent.call( this, config );
+
+               // Events
+               this.calendar.connect( this, {
+                       change: 'onCalendarChange'
+               } );
+               this.textInput.connect( this, {
+                       enter: 'onEnter',
+                       change: 'onTextInputChange'
+               } );
+               this.$element.on( {
+                       focusout: this.onBlur.bind( this )
+               } );
+               this.calendar.$element.on( {
+                       keypress: this.onCalendarKeyPress.bind( this )
+               } );
+               this.handle.$element.on( {
+                       click: this.onClick.bind( this ),
+                       keypress: this.onKeyPress.bind( this )
+               } );
+
+               // Initialization
+               // Move 'tabindex' from this.$input (which is invisible) to the visible handle
+               this.setTabIndexedElement( this.handle.$element );
+               this.handle.$element
+                       .addClass( 'mw-widget-dateInputWidget-handle' );
+               this.$element
+                       .addClass( 'mw-widget-dateInputWidget' )
+                       .append( this.handle.$element, this.textInput.$element, this.calendar.$element );
+               // Set handle label and hide stuff
+               this.updateUI();
+               this.deactivate();
+       };
+
+       /* Inheritance */
+
+       OO.inheritClass( mw.widgets.DateInputWidget, OO.ui.InputWidget );
+
+       /* Methods */
+
+       /**
+        * @inheritdoc
+        * @protected
+        */
+       mw.widgets.DateInputWidget.prototype.getInputElement = function () {
+               return $( '<input type="hidden">' );
+       };
+
+       /**
+        * Respond to calendar date change events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onCalendarChange = function () {
+               this.inCalendar++;
+               if ( !this.inTextInput ) {
+                       // If this is caused by user typing in the input field, do not set anything.
+                       // The value may be invalid (see #onTextInputChange), but displayable on the calendar.
+                       this.setValue( this.calendar.getDate() );
+               }
+               this.inCalendar--;
+       };
+
+       /**
+        * Respond to text input value change events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onTextInputChange = function () {
+               var
+                       widget = this,
+                       value = this.textInput.getValue();
+               this.inTextInput++;
+               this.textInput.isValid().done( function ( valid ) {
+                       if ( value === '' ) {
+                               // No date selected
+                               widget.setValue( '' );
+                       } else if ( valid ) {
+                               // Well-formed date value, parse and set it
+                               var mom = moment( value, widget.getInputFormat() );
+                               // Use English locale to avoid number formatting
+                               widget.setValue( mom.locale( 'en' ).format( widget.getInternalFormat() ) );
+                       } else {
+                               // Not well-formed, but possibly partial? Try updating the calendar, but do not set the
+                               // internal value. Generally this only makes sense when 'inputFormat' is little-endian (e.g.
+                               // 'YYYY-MM-DD'), but that's hard to check for, and might be difficult to handle the parsing
+                               // right for weird formats. So limit this trick to only when we're using the default
+                               // 'inputFormat', which is the same as the internal format, 'YYYY-MM-DD'.
+                               if ( widget.getInputFormat() === widget.getInternalFormat() ) {
+                                       widget.calendar.setDate( widget.textInput.getValue() );
+                               }
+                       }
+                       widget.inTextInput--;
+               } );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.DateInputWidget.prototype.setValue = function ( value ) {
+               var oldValue = this.value;
+
+               if ( !moment( value, this.getInternalFormat() ).isValid() ) {
+                       value = '';
+               }
+
+               mw.widgets.DateInputWidget.parent.prototype.setValue.call( this, value );
+
+               if ( this.value !== oldValue ) {
+                       this.updateUI();
+               }
+
+               return this;
+       };
+
+       /**
+        * Handle text input and calendar blur events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onBlur = function () {
+               var widget = this;
+               setTimeout( function () {
+                       var $focussed = $( ':focus' );
+                       // Deactivate unless the focus moved to something else inside this widget
+                       if ( !OO.ui.contains( widget.$element[ 0 ], $focussed[0], true ) ) {
+                               widget.deactivate();
+                       }
+               }, 0 );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.DateInputWidget.prototype.focus = function () {
+               this.activate();
+               return this;
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.widgets.DateInputWidget.prototype.blur = function () {
+               this.deactivate();
+               return this;
+       };
+
+       /**
+        * Update the contents of the label, text input and status of calendar to reflect selected value.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.updateUI = function () {
+               if ( this.getValue() === '' ) {
+                       this.textInput.setValue( '' );
+                       this.calendar.setDate( null );
+                       this.handle.setLabel( mw.msg( 'mw-widgets-dateinput-no-date' ) );
+                       this.$element.addClass( 'mw-widget-dateInputWidget-empty' );
+               } else {
+                       if ( !this.inTextInput ) {
+                               this.textInput.setValue( this.getMoment().format( this.getInputFormat() ) );
+                       }
+                       if ( !this.inCalendar ) {
+                               this.calendar.setDate( this.getValue() );
+                       }
+                       this.handle.setLabel( this.getMoment().format( this.getDisplayFormat() ) );
+                       this.$element.removeClass( 'mw-widget-dateInputWidget-empty' );
+               }
+       };
+
+       /**
+        * Deactivate this input field for data entry. Closes the calendar and hides the text field.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.deactivate = function () {
+               this.$element.removeClass( 'mw-widget-dateInputWidget-active' );
+               this.handle.toggle( true );
+               this.textInput.toggle( false );
+               this.calendar.toggle( false );
+       };
+
+       /**
+        * Activate this input field for data entry. Opens the calendar and shows the text field.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.activate = function () {
+               this.$element.addClass( 'mw-widget-dateInputWidget-active' );
+               this.handle.toggle( false );
+               this.textInput.toggle( true );
+               this.calendar.toggle( true );
+
+               this.textInput.$input.focus();
+       };
+
+       /**
+        * Get the date format to be used for handle label when the input is inactive.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getDisplayFormat = function () {
+               if ( this.displayFormat !== undefined ) {
+                       return this.displayFormat;
+               }
+
+               if ( this.calendar.getPrecision() === 'month' ) {
+                       return 'MMMM YYYY';
+               } else {
+                       // The formats Moment.js provides:
+                       // * ll:   Month name, day of month, year
+                       // * lll:  Month name, day of month, year, time
+                       // * llll: Month name, day of month, day of week, year, time
+                       //
+                       // The format we want:
+                       // * ????: Month name, day of month, day of week, year
+                       //
+                       // We try to construct it as 'llll - (lll - ll)' and hope for the best.
+                       // This seems to work well for many languages (maybe even all?).
+
+                       var localeData = moment.localeData( moment.locale() ),
+                               llll = localeData.longDateFormat( 'llll' ),
+                               lll = localeData.longDateFormat( 'lll' ),
+                               ll = localeData.longDateFormat( 'll' ),
+                               format = llll.replace( lll.replace( ll, '' ), '' );
+
+                       return format;
+               }
+       };
+
+       /**
+        * Get the date format to be used for the text field when the input is active.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getInputFormat = function () {
+               if ( this.inputFormat !== undefined ) {
+                       return this.inputFormat;
+               }
+
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.calendar.getPrecision() ];
+       };
+
+       /**
+        * Get the date format to be used internally for the value. This is not configurable in any way,
+        * and always either 'YYYY-MM-DD' or 'YYYY-MM'.
+        *
+        * @private
+        * @return {string} Format string
+        */
+       mw.widgets.DateInputWidget.prototype.getInternalFormat = function () {
+               return {
+                       day: 'YYYY-MM-DD',
+                       month: 'YYYY-MM'
+               }[ this.calendar.getPrecision() ];
+       };
+
+       /**
+        * Get the Moment object for current value.
+        *
+        * @return {Object} Moment object
+        */
+       mw.widgets.DateInputWidget.prototype.getMoment = function () {
+               return moment( this.getValue(), this.getInternalFormat() );
+       };
+
+       /**
+        * Handle mouse click events.
+        *
+        * @private
+        * @param {jQuery.Event} e Mouse click event
+        */
+       mw.widgets.DateInputWidget.prototype.onClick = function ( e ) {
+               if ( !this.isDisabled() && e.which === 1 ) {
+                       this.activate();
+               }
+               return false;
+       };
+
+       /**
+        * Handle key press events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key press event
+        */
+       mw.widgets.DateInputWidget.prototype.onKeyPress = function ( e ) {
+               if ( !this.isDisabled() &&
+                       ( e.which === OO.ui.Keys.SPACE || e.which === OO.ui.Keys.ENTER )
+               ) {
+                       this.activate();
+                       return false;
+               }
+       };
+
+       /**
+        * Handle calendar key press events.
+        *
+        * @private
+        * @param {jQuery.Event} e Key press event
+        */
+       mw.widgets.DateInputWidget.prototype.onCalendarKeyPress = function ( e ) {
+               if ( !this.isDisabled() && e.which === OO.ui.Keys.ENTER ) {
+                       this.deactivate();
+                       this.handle.$element.focus();
+                       return false;
+               }
+       };
+
+       /**
+        * Handle text input enter events.
+        *
+        * @private
+        */
+       mw.widgets.DateInputWidget.prototype.onEnter = function () {
+               this.deactivate();
+               this.handle.$element.focus();
+       };
+
+       /**
+        * @private
+        * @param {string} date Date string, to be valid, must be empty (no date selected) or in
+        *     'YYYY-MM-DD' or 'YYYY-MM' format to be valid
+        */
+       mw.widgets.DateInputWidget.prototype.validateDate = function ( date ) {
+               if ( date === '' ) {
+                       return true;
+               }
+
+               // "Half-strict mode": for example, for the format 'YYYY-MM-DD', 2015-1-3 instead of 2015-01-03
+               // is okay, but 2015-01 isn't, and neither is 2015-01-foo. Use Moment's "fuzzy" mode and check
+               // parsing flags for the details (stoled from implementation of #isValid).
+               var
+                       mom = moment( date, this.getInputFormat() ),
+                       flags = mom.parsingFlags();
+
+               return mom.isValid() && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0;
+       };
+
+}( jQuery, mediaWiki ) );
diff --git a/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less b/resources/src/mediawiki.widgets/mw.widgets.DateInputWidget.less
new file mode 100644 (file)
index 0000000..1feb8f0
--- /dev/null
@@ -0,0 +1,112 @@
+/*!
+ * MediaWiki Widgets – DateInputWidget styles.
+ *
+ * @copyright 2011-2015 MediaWiki Widgets Team and others; see AUTHORS.txt
+ * @license The MIT License (MIT); see LICENSE.txt
+ */
+
+.oo-ui-box-sizing( @type: border-box ) {
+       -webkit-box-sizing: @type;
+       -moz-box-sizing: @type;
+       box-sizing: @type;
+}
+
+.oo-ui-unselectable() {
+       -webkit-touch-callout: none;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.oo-ui-inline-spacing( @spacing, @cancelled-spacing: 0 ) {
+       margin-right: @spacing;
+       &:last-child {
+               margin-right: @cancelled-spacing;
+       }
+}
+
+.mw-widget-dateInputWidget {
+       display: inline-block;
+       position: relative;
+
+       &-handle {
+               width: 100%;
+               display: inline-block;
+               cursor: pointer;
+
+               .oo-ui-unselectable();
+               .oo-ui-box-sizing(border-box);
+       }
+
+       &.oo-ui-widget-disabled .mw-widget-dateInputWidget-handle {
+               cursor: default;
+       }
+
+       > .mw-widget-calendarWidget {
+               position: absolute;
+               z-index: 1;
+       }
+
+       // Theme-specific styles
+       width: 21em;
+       margin: 0.25em 0;
+
+       .oo-ui-inline-spacing(0.5em);
+
+       &-handle {
+               padding: 0.5em 1em;
+               border: 1px solid #ccc;
+               border-radius: 0.1em;
+               line-height: 1.275em;
+               background-color: white;
+       }
+
+       > .oo-ui-textInputWidget input {
+               padding-left: 1em;
+       }
+
+       > .mw-widget-calendarWidget {
+               background-color: white;
+       }
+
+       &-active > .mw-widget-calendarWidget {
+               margin-top: -2px;
+               // Immitate focussed input styles
+               // First shadow generates bottom and right "border", second shadow generates bottom and left,
+               // resulting in no "border" at the top. Note that this generates a 2px-wide "border", not 1px.
+               // It makes sense when you think about it long enough and look up what each value means. Enjoy.
+               // (This is symmetrical anyway, and CSSJanus can't flip it correctly. T62805)
+               /* @noflip */
+               box-shadow: inset -1px -1px 0 1px #347bff, inset 1px -1px 0 1px #347bff;
+               border-top: 1px solid #ccc;
+
+               &:focus {
+                       outline: none;
+                       // Add border at the top on focus
+                       margin-top: -3px;
+                       border-top: 2px solid #347bff;
+               }
+       }
+
+       &.oo-ui-widget-enabled {
+               .mw-widget-dateInputWidget-handle:hover {
+                       border-color: #347bff;
+               }
+       }
+
+       &.oo-ui-widget-disabled {
+               .mw-widget-dateInputWidget-handle {
+                       color: #ccc;
+                       text-shadow: 0 1px 1px #fff;
+                       border-color: #ddd;
+                       background-color: #f3f3f3;
+               }
+       }
+
+       &-empty {
+               .mw-widget-dateInputWidget-handle {
+                       color: #ccc;
+               }
+       }
+}
diff --git a/resources/src/mediawiki/images/feed-icon.png b/resources/src/mediawiki/images/feed-icon.png
new file mode 100644 (file)
index 0000000..00f49f6
Binary files /dev/null and b/resources/src/mediawiki/images/feed-icon.png differ
diff --git a/resources/src/mediawiki/images/feed-icon.svg b/resources/src/mediawiki/images/feed-icon.svg
new file mode 100644 (file)
index 0000000..6e5f570
--- /dev/null
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 256 256"><defs><linearGradient x1=".085" y1=".085" x2=".915" y2=".915" id="a"><stop offset="0" stop-color="#E3702D"/><stop offset=".107" stop-color="#EA7D31"/><stop offset=".35" stop-color="#F69537"/><stop offset=".5" stop-color="#FB9E3A"/><stop offset=".702" stop-color="#EA7C31"/><stop offset=".887" stop-color="#DE642B"/><stop offset="1" stop-color="#D95B29"/></linearGradient></defs><rect width="256" height="256" rx="55" ry="55" fill="#CC5D15"/><rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/><rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#a)"/><circle cx="68" cy="189" r="24" fill="#FFF"/><path d="M160 213h-34a82 82 0 0 0-82-82v-34a116 116 0 0 1 116 116zM184 213a140 140 0 0 0-140-140v-35a175 175 0 0 1 175 175z" fill="#FFF"/></svg>
\ No newline at end of file
diff --git a/resources/src/mediawiki/mediawiki.Upload.Dialog.js b/resources/src/mediawiki/mediawiki.Upload.Dialog.js
new file mode 100644 (file)
index 0000000..3c10eeb
--- /dev/null
@@ -0,0 +1,520 @@
+( function ( $, mw ) {
+
+       /**
+        * mw.Upload.Dialog encapsulates the process of uploading a file
+        * to MediaWiki using the {@link mw.Upload mw.Upload} model.
+        * The dialog emits events that can be used to get the stashed
+        * upload and the final file. It can be extended to accept
+        * additional fields from the user for specific scenarios like
+        * for Commons, or campaigns.
+        *
+        * ## Structure
+        *
+        * The {@link OO.ui.ProcessDialog dialog} has three steps:
+        *
+        *  - **Upload**: Has a {@link OO.ui.SelectFileWidget field} to get the file object.
+        *
+        * - **Information**: Has a {@link OO.ui.FormLayout form} to collect metadata. This can be
+        *   extended.
+        *
+        * - **Insert**: Has details on how to use the file that was uploaded.
+        *
+        * Each step has a form associated with it defined in
+        * {@link mw.Upload.Dialog#renderUploadForm renderUploadForm},
+        * {@link mw.Upload.Dialog#renderInfoForm renderInfoForm}, and
+        * {@link mw.Upload.Dialog#renderInsertForm renderInfoForm}. The
+        * {@link mw.Upload.Dialog#getFile getFile},
+        * {@link mw.Upload.Dialog#getFilename getFilename}, and
+        * {@link mw.Upload.Dialog#getText getText} methods are used to get
+        * the information filled in these forms, required to call
+        * {@link mw.Upload mw.Upload}.
+        *
+        * ## Usage
+        *
+        * To use, setup a {@link OO.ui.WindowManager window manager} like for normal
+        * dialogs:
+        *
+        *     var uploadDialog = new mw.Upload.Dialog( { size: 'small' } );
+        *     var windowManager = new OO.ui.WindowManager();
+        *     $( 'body' ).append( windowManager.$element );
+        *     windowManager.addWindows( [ uploadDialog ] );
+        *     windowManager.openWindow( uploadDialog );
+        *
+        * The dialog's closing promise,
+        * {@link mw.Upload.Dialog#event-fileUploaded fileUploaded},
+        * and {@link mw.Upload.Dialog#event-fileSaved fileSaved} events can
+        * be used to get details of the upload.
+        *
+        * ## Extending
+        *
+        * To extend using {@link mw.Upload mw.Upload}, override
+        * {@link mw.Upload.Dialog#renderInfoForm renderInfoForm} to render
+        * the form required for the specific use-case. Update the
+        * {@link mw.Upload.Dialog#getFilename getFilename}, and
+        * {@link mw.Upload.Dialog#getText getText} methods to return data
+        * from your newly created form. If you added new fields you'll also have
+        * to update the {@link #getTeardownProcess} method.
+        *
+        * If you plan to use a different upload model, apart from what is mentioned
+        * above, you'll also have to override the
+        * {@link mw.Upload.Dialog#getUploadObject getUploadObject} method to
+        * return the new model. The {@link mw.Upload.Dialog#saveFile saveFile}, and
+        * the {@link mw.Upload.Dialog#uploadFile uploadFile} methods need to be
+        * overriden to use the new model and data returned from the forms.
+        *
+        * @class mw.Upload.Dialog
+        * @uses mw.Upload
+        * @extends OO.ui.ProcessDialog
+        */
+       mw.Upload.Dialog = function ( config ) {
+               // Parent constructor
+               mw.Upload.Dialog.parent.call( this, config );
+       };
+
+       /* Setup */
+
+       OO.inheritClass( mw.Upload.Dialog, OO.ui.ProcessDialog );
+
+       /* Static Properties */
+
+       /**
+        * @inheritdoc
+        * @property title
+        */
+       /*jshint -W024*/
+       mw.Upload.Dialog.static.title = mw.msg( 'upload-dialog-title' );
+
+       /**
+        * @inheritdoc
+        * @property actions
+        */
+       mw.Upload.Dialog.static.actions = [
+               {
+                       flags: 'safe',
+                       action: 'cancel',
+                       label: mw.msg( 'upload-dialog-button-cancel' ),
+                       modes: [ 'upload', 'insert', 'save' ]
+               },
+               {
+                       flags: [ 'primary', 'progressive' ],
+                       label: mw.msg( 'upload-dialog-button-done' ),
+                       action: 'insert',
+                       modes: 'insert'
+               },
+               {
+                       flags: [ 'primary', 'constructive' ],
+                       label: mw.msg( 'upload-dialog-button-save' ),
+                       action: 'save',
+                       modes: 'save'
+               },
+               {
+                       flags: [ 'primary', 'progressive' ],
+                       label: mw.msg( 'upload-dialog-button-upload' ),
+                       action: 'upload',
+                       modes: 'upload'
+               }
+       ];
+       /*jshint +W024*/
+
+       /* Properties */
+
+       /**
+        * @property {OO.ui.FormLayout} uploadForm
+        * The form rendered in the first step to get the file object.
+        * Rendered in {@link mw.Upload.Dialog#renderUploadForm renderUploadForm}.
+        */
+
+       /**
+        * @property {OO.ui.FormLayout} infoForm
+        * The form rendered in the second step to get metadata.
+        * Rendered in {@link mw.Upload.Dialog#renderInfoForm renderInfoForm}
+        */
+
+       /**
+        * @property {OO.ui.FormLayout} insertForm
+        * The form rendered in the third step to show usage
+        * Rendered in {@link mw.Upload.Dialog#renderInsertForm renderInsertForm}
+        */
+
+       /* Events */
+
+       /**
+        * A `fileUploaded` event is emitted from the
+        * {@link mw.Upload.Dialog#uploadFile uploadFile} method.
+        *
+        * @event fileUploaded
+        */
+
+       /**
+        * A `fileSaved` event is emitted from the
+        * {@link mw.Upload.Dialog#saveFile saveFile} method.
+        *
+        * @event fileSaved
+        */
+
+       /* Methods */
+
+       /**
+        * @inheritdoc
+        */
+       mw.Upload.Dialog.prototype.initialize = function () {
+               mw.Upload.Dialog.parent.prototype.initialize.call( this );
+
+               this.renderUploadForm();
+               this.renderInfoForm();
+               this.renderInsertForm();
+
+               this.uploadFormPanel = new OO.ui.PanelLayout( {
+                       scrollable: true,
+                       padded: true,
+                       content: [ this.uploadForm ]
+               } );
+               this.infoFormPanel = new OO.ui.PanelLayout( {
+                       scrollable: true,
+                       padded: true,
+                       content: [ this.infoForm ]
+               } );
+               this.insertFormPanel = new OO.ui.PanelLayout( {
+                       scrollable: true,
+                       padded: true,
+                       content: [ this.insertForm ]
+               } );
+
+               this.panels = new OO.ui.StackLayout();
+               this.panels.addItems( [
+                       this.uploadFormPanel,
+                       this.infoFormPanel,
+                       this.insertFormPanel
+               ] );
+
+               this.$body.append( this.panels.$element );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.Upload.Dialog.prototype.getBodyHeight = function () {
+               return 300;
+       };
+
+       /**
+        * Switch between the panels.
+        *
+        * @param {string} panel Panel name: 'upload', 'info', 'insert'
+        */
+       mw.Upload.Dialog.prototype.switchPanels = function ( panel ) {
+               switch ( panel ) {
+               case 'upload':
+                       this.panels.setItem( this.uploadFormPanel );
+                       this.actions.setMode( 'upload' );
+                       break;
+               case 'info':
+                       this.panels.setItem( this.infoFormPanel );
+                       this.actions.setMode( 'save' );
+                       break;
+               case 'insert':
+                       this.panels.setItem( this.insertFormPanel );
+                       this.actions.setMode( 'insert' );
+                       break;
+               }
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.Upload.Dialog.prototype.getSetupProcess = function ( data ) {
+               return mw.Upload.Dialog.parent.prototype.getSetupProcess.call( this, data )
+                       .next( function () {
+                               this.upload = this.getUploadObject();
+                               this.switchPanels( 'upload' );
+                               this.actions.setAbilities( { upload: false } );
+                       }, this );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.Upload.Dialog.prototype.getActionProcess = function ( action ) {
+               var dialog = this;
+
+               if ( action === 'upload' ) {
+                       return new OO.ui.Process( function () {
+                               dialog.filenameWidget.setValue( dialog.getFile().name );
+                               dialog.switchPanels( 'info' );
+                               dialog.actions.setAbilities( { save: false } );
+                               return dialog.uploadFile();
+                       } );
+               }
+               if ( action === 'save' ) {
+                       return new OO.ui.Process( dialog.saveFile() );
+               }
+               if ( action === 'insert' ) {
+                       return new OO.ui.Process( function () {
+                               dialog.close( dialog.upload );
+                       } );
+               }
+               if ( action === 'cancel' ) {
+                       return new OO.ui.Process( dialog.close() );
+               }
+
+               return mw.Upload.Dialog.parent.prototype.getActionProcess.call( this, action );
+       };
+
+       /**
+        * @inheritdoc
+        */
+       mw.Upload.Dialog.prototype.getTeardownProcess = function ( data ) {
+               return mw.Upload.Dialog.parent.prototype.getTeardownProcess.call( this, data )
+                       .next( function () {
+                               // Clear the values of all fields
+                               this.selectFileWidget.setValue( null );
+                               this.filenameWidget.setValue( null ).setValidityFlag( true );
+                               this.descriptionWidget.setValue( null ).setValidityFlag( true );
+                               this.filenameUsageWidget.setValue( null );
+                       }, this );
+       };
+
+       /* Uploading */
+
+       /**
+        * Get the upload model object required for this dialog. Can be
+        * extended to different models.
+        *
+        * @return {mw.Upload}
+        */
+       mw.Upload.Dialog.prototype.getUploadObject = function () {
+               return new mw.Upload();
+       };
+
+       /**
+        * Uploads the file that was added in the upload form. Uses
+        * {@link mw.Upload.Dialog#getFile getFile} to get the HTML5
+        * file object.
+        *
+        * @protected
+        * @fires fileUploaded
+        * @return {jQuery.Promise}
+        */
+       mw.Upload.Dialog.prototype.uploadFile = function () {
+               var dialog = this,
+                       file = this.getFile();
+               this.upload.setFile( file );
+               this.uploadPromise = this.upload.uploadToStash();
+               this.uploadPromise.then( function () {
+                       dialog.emit( 'fileUploaded' );
+               } );
+
+               return this.uploadPromise;
+       };
+
+       /**
+        * Saves the stash finalizes upload. Uses
+        * {@link mw.Upload.Dialog#getFilename getFilename}, and
+        * {@link mw.Upload.Dialog#getText getText} to get details from
+        * the form.
+        *
+        * @protected
+        * @fires fileSaved
+        * @returns {jQuery.Promise} Rejects the promise with an
+        * {@link OO.ui.Error error}, or resolves if the upload was successful.
+        */
+       mw.Upload.Dialog.prototype.saveFile = function () {
+               var dialog = this,
+                       promise = $.Deferred();
+
+               this.upload.setFilename( this.getFilename() );
+               this.upload.setText( this.getText() );
+
+               this.uploadPromise.always( function () {
+
+                       if ( dialog.upload.getState() === mw.Upload.State.ERROR ) {
+                               promise.reject( new OO.ui.Error( mw.msg( 'upload-dialog-error' )  ) );
+                               return false;
+                       }
+
+                       if ( dialog.upload.getState() === mw.Upload.State.WARNING ) {
+                               promise.reject( new OO.ui.Error( mw.msg( 'upload-dialog-error' )  ) );
+                               return false;
+                       }
+
+                       dialog.upload.finishStashUpload().then( function () {
+                               var name;
+
+                               if ( dialog.upload.getState() === mw.Upload.State.ERROR ) {
+                                       promise.reject( new OO.ui.Error( mw.msg( 'upload-dialog-error' ) ) );
+                                       return false;
+                               }
+
+                               if ( dialog.upload.getState() === mw.Upload.State.WARNING ) {
+                                       promise.reject( new OO.ui.Error( mw.msg( 'upload-dialog-warning' ) ) );
+                                       return false;
+                               }
+
+                               // Normalize page name and localise the 'File:' prefix
+                               name = new mw.Title( 'File:' + dialog.upload.getFilename() ).toString();
+                               dialog.filenameUsageWidget.setValue( '[[' + name + ']]' );
+                               dialog.switchPanels( 'insert' );
+
+                               promise.resolve();
+                               dialog.emit( 'fileSaved' );
+                       } );
+               } );
+
+               return promise.promise();
+       };
+
+       /* Form renderers */
+
+       /**
+        * Renders and returns the upload form and sets the
+        * {@link mw.Upload.Dialog#uploadForm uploadForm} property.
+        * Validates the form and
+        * {@link OO.ui.ActionSet#setAbilities sets abilities}
+        * for the dialog accordingly.
+        *
+        * @protected
+        * @returns {OO.ui.FormLayout}
+        */
+       mw.Upload.Dialog.prototype.renderUploadForm = function () {
+               var fieldset,
+                       dialog = this;
+
+               this.selectFileWidget = new OO.ui.SelectFileWidget();
+               fieldset = new OO.ui.FieldsetLayout( { label: mw.msg( 'upload-dialog-label-select-file' ) } );
+               fieldset.addItems( [ this.selectFileWidget ] );
+               this.uploadForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
+
+               // Validation
+               this.selectFileWidget.on( 'change', function ( value ) {
+                       dialog.actions.setAbilities( { upload: !!value } );
+               } );
+
+               return this.uploadForm;
+       };
+
+       /**
+        * Renders and returns the information form for collecting
+        * metadata and sets the {@link mw.Upload.Dialog#infoForm infoForm}
+        * property.
+        * Validates the form and
+        * {@link OO.ui.ActionSet#setAbilities sets abilities}
+        * for the dialog accordingly.
+        *
+        * @protected
+        * @returns {OO.ui.FormLayout}
+        */
+       mw.Upload.Dialog.prototype.renderInfoForm = function () {
+               var fieldset,
+                       dialog = this;
+
+               this.filenameWidget = new OO.ui.TextInputWidget( {
+                       indicator: 'required',
+                       required: true,
+                       validate: /.+/
+               } );
+               this.descriptionWidget = new OO.ui.TextInputWidget( {
+                       indicator: 'required',
+                       required: true,
+                       validate: /.+/,
+                       multiline: true,
+                       autosize: true
+               } );
+
+               fieldset = new OO.ui.FieldsetLayout( {
+                       label: mw.msg( 'upload-dialog-label-infoform-title' )
+               } );
+               fieldset.addItems( [
+                       new OO.ui.FieldLayout( this.filenameWidget, {
+                               label: mw.msg( 'upload-dialog-label-infoform-name' ),
+                               align: 'top'
+                       } ),
+                       new OO.ui.FieldLayout( this.descriptionWidget, {
+                               label: mw.msg( 'upload-dialog-label-infoform-description' ),
+                               align: 'top'
+                       } )
+               ] );
+               this.infoForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
+
+               // Validation
+               function checkValidity() {
+                       var validityPromises = [
+                               dialog.filenameWidget.isValid(),
+                               dialog.descriptionWidget.isValid()
+                       ];
+
+                       $.when.apply( $, validityPromises ).done( function () {
+                               var allValid,
+                                       values = Array.prototype.slice.apply( arguments );
+                               allValid = values.every( function ( value ) {
+                                       return value;
+                               } );
+
+                               dialog.actions.setAbilities( { save: allValid } );
+                       } );
+               }
+               this.filenameWidget.on( 'change', checkValidity );
+               this.descriptionWidget.on( 'change', checkValidity );
+
+               return this.infoForm;
+       };
+
+       /**
+        * Renders and returns the insert form to show file usage and
+        * sets the {@link mw.Upload.Dialog#insertForm insertForm} property.
+        *
+        * @protected
+        * @returns {OO.ui.FormLayout}
+        */
+       mw.Upload.Dialog.prototype.renderInsertForm = function () {
+               var fieldset;
+
+               this.filenameUsageWidget = new OO.ui.TextInputWidget();
+               fieldset = new OO.ui.FieldsetLayout( {
+                       label: mw.msg( 'upload-dialog-label-usage-title' )
+               } );
+               fieldset.addItems( [
+                       new OO.ui.FieldLayout( this.filenameUsageWidget, {
+                               label: mw.msg( 'upload-dialog-label-usage-filename' ),
+                               align: 'top'
+                       } )
+               ] );
+               this.insertForm = new OO.ui.FormLayout( { items: [ fieldset ] } );
+
+               return this.insertForm;
+       };
+
+       /* Getters */
+
+       /**
+        * Gets the file object from the
+        * {@link mw.Upload.Dialog#uploadForm upload form}.
+        *
+        * @protected
+        * @returns {File|null}
+        */
+       mw.Upload.Dialog.prototype.getFile = function () {
+               return this.selectFileWidget.getValue();
+       };
+
+       /**
+        * Gets the file name from the
+        * {@link mw.Upload.Dialog#infoForm information form}.
+        *
+        * @protected
+        * @returns {string}
+        */
+       mw.Upload.Dialog.prototype.getFilename = function () {
+               return this.filenameWidget.getValue();
+       };
+
+       /**
+        * Gets the page text from the
+        * {@link mw.Upload.Dialog#infoForm information form}.
+        *
+        * @protected
+        * @returns {string}
+        */
+       mw.Upload.Dialog.prototype.getText = function () {
+               return this.descriptionWidget.getValue();
+       };
+}( jQuery, mediaWiki ) );
index 197ea6f..551aa9d 100644 (file)
@@ -9,6 +9,40 @@
         * but this model class will tie it together as well as let you perform
         * actions in a logical way.
         *
+        * A simple example:
+        *
+        *     var file = new OO.ui.SelectFileWidget(),
+        *       button = new OO.ui.ButtonWidget( { label: 'Save' } ),
+        *       upload = new mw.Upload;
+        *
+        *     button.on( 'click', function () {
+        *       upload.setFile( file.getValue() );
+        *       upload.setFilename( file.getValue().name );
+        *       upload.upload();
+        *     } );
+        *
+        *     $( 'body' ).append( file.$element, button.$element );
+        *
+        * You can also choose to {@link #uploadToStash stash the upload} and
+        * {@link #finishStashUpload finalize} it later:
+        *
+        *     var file, // Some file object
+        *       upload = new mw.Upload,
+        *       stashPromise = $.Deferred();
+        *
+        *     upload.setFile( file );
+        *     upload.uploadToStash().then( function () {
+        *       stashPromise.resolve();
+        *     } );
+        *
+        *     stashPromise.then( function () {
+        *       upload.setFilename( 'foo' );
+        *       upload.setText( 'bar' );
+        *       upload.finishStashUpload().then( function () {
+        *         console.log( 'Done!' );
+        *       } );
+        *     } );
+        *
         * @constructor
         * @param {Object} apiconfig Passed to the constructor of mw.Api.
         */
@@ -21,6 +55,8 @@
                this.filename = null;
                this.file = null;
                this.state = Upload.State.NEW;
+
+               this.imageinfo = undefined;
        }
 
        UP = Upload.prototype;
                return this.state;
        };
 
+       /**
+        * Get the imageinfo object for the finished upload.
+        * Only available once the upload is finished! Don't try to get it
+        * beforehand.
+        * @return {Object|undefined}
+        */
+       UP.getImageInfo = function () {
+               return this.imageinfo;
+       };
+
        /**
         * Upload the file directly.
         * @return {jQuery.Promise}
                        text: this.text
                } ).then( function ( result ) {
                        upload.state = Upload.State.UPLOADED;
+                       upload.imageinfo = result.upload.imageinfo;
                        return result;
                }, function () {
                        upload.state = Upload.State.ERROR;
index 6e12f49..d90ca4b 100644 (file)
         */
        mw.Feedback.Dialog = function mwFeedbackDialog( config ) {
                // Parent constructor
-               mw.Feedback.Dialog.super.call( this, config );
+               mw.Feedback.Dialog.parent.call( this, config );
 
                this.status = '';
                this.feedbackPageTitle = null;
                        feedbackFieldsetLayout, termsOfUseLabel;
 
                // Parent method
-               mw.Feedback.Dialog.super.prototype.initialize.call( this );
+               mw.Feedback.Dialog.parent.prototype.initialize.call( this );
 
                this.feedbackPanel = new OO.ui.PanelLayout( {
                        scrollable: false,
         * @inheritdoc
         */
        mw.Feedback.Dialog.prototype.getSetupProcess = function ( data ) {
-               return mw.Feedback.Dialog.super.prototype.getSetupProcess.call( this, data )
+               return mw.Feedback.Dialog.parent.prototype.getSetupProcess.call( this, data )
                        .next( function () {
                                var plainMsg, parsedMsg,
                                        settings = data.settings;
         * @inheritdoc
         */
        mw.Feedback.Dialog.prototype.getReadyProcess = function ( data ) {
-               return mw.Feedback.Dialog.super.prototype.getReadyProcess.call( this, data )
+               return mw.Feedback.Dialog.parent.prototype.getReadyProcess.call( this, data )
                        .next( function () {
                                this.feedbackSubjectInput.focus();
                        }, this );
                        }, this );
                }
                // Fallback to parent handler
-               return mw.Feedback.Dialog.super.prototype.getActionProcess.call( this, action );
+               return mw.Feedback.Dialog.parent.prototype.getActionProcess.call( this, action );
        };
 
        /**
         * @inheritdoc
         */
        mw.Feedback.Dialog.prototype.getTeardownProcess = function ( data ) {
-               return mw.Feedback.Dialog.super.prototype.getTeardownProcess.call( this, data )
+               return mw.Feedback.Dialog.parent.prototype.getTeardownProcess.call( this, data )
                        .first( function () {
                                this.emit( 'submit', this.status, this.feedbackPageName, this.feedbackPageUrl );
                                // Cleanup
diff --git a/resources/src/mediawiki/mediawiki.feedlink.css b/resources/src/mediawiki/mediawiki.feedlink.css
new file mode 100644 (file)
index 0000000..1dda2ac
--- /dev/null
@@ -0,0 +1,14 @@
+/* Styles for links to RSS/Atom feeds in sidebar */
+
+/* Until the copy of this code in mediawiki.legacy.shared is removed, which no longer @embeds the
+ * background image, the selector below must be kept more specific. */
+#feedlinks a.feedlink {
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG).
+        * http://pauginer.tumblr.com/post/36614680636/invisible-gradient-technique */
+       background-image: url(images/feed-icon.png);
+       /* @embed */
+       background-image: -webkit-linear-gradient(transparent, transparent), url(images/feed-icon.svg);
+       /* @embed */
+       background-image: linear-gradient(transparent, transparent), url(images/feed-icon.svg);
+}
index 489ac42..58ca445 100644 (file)
@@ -1,7 +1,7 @@
 @import "mediawiki.ui/variables"
 
 .mediawiki-filewarning {
-       display: none;
+       visibility: hidden;
 
        .mediawiki-filewarning-header {
                padding: 0;
@@ -17,7 +17,7 @@
        }
 
        .mediawiki-filewarning-anchor:hover & {
-               display: block;
+               visibility: visible;
        }
 }
 
index c0b1642..6548896 100644 (file)
                        }
 
                        /**
-                        * Adds a script tag to the DOM, either using document.write or low-level DOM manipulation,
-                        * depending on whether document-ready has occurred yet and whether we are in async mode.
+                        * Load and execute a script with callback.
                         *
                         * @private
                         * @param {string} src URL to script, will be used as the src attribute in the script tag
                         * @param {Function} [callback] Callback which will be run when the script is done
-                        * @param {boolean} [async=false] Whether to load modules asynchronously.
-                        *  Ignored (and defaulted to `true`) if the document-ready event has already occurred.
                         */
-                       function addScript( src, callback, async ) {
-                               // Using isReady directly instead of storing it locally from a $().ready callback (bug 31895)
-                               if ( $.isReady || async ) {
-                                       $.ajax( {
-                                               url: src,
-                                               dataType: 'script',
-                                               // Force jQuery behaviour to be for crossDomain. Otherwise jQuery would use
-                                               // XHR for a same domain request instead of <script>, which changes the request
-                                               // headers (potentially missing a cache hit), and reduces caching in general
-                                               // since browsers cache XHR much less (if at all). And XHR means we retreive
-                                               // text, so we'd need to $.globalEval, which then messes up line numbers.
-                                               crossDomain: true,
-                                               cache: true,
-                                               async: true
-                                       } ).always( callback );
-                               } else {
-                                       /*jshint evil:true */
-                                       document.write( mw.html.element( 'script', { 'src': src }, '' ) );
-                                       if ( callback ) {
-                                               // Document.write is synchronous, so this is called when it's done.
-                                               // FIXME: That's a lie. doc.write isn't actually synchronous.
-                                               callback();
-                                       }
-                               }
+                       function addScript( src, callback ) {
+                               $.ajax( {
+                                       url: src,
+                                       dataType: 'script',
+                                       // Force jQuery behaviour to be for crossDomain. Otherwise jQuery would use
+                                       // XHR for a same domain request instead of <script>, which changes the request
+                                       // headers (potentially missing a cache hit), and reduces caching in general
+                                       // since browsers cache XHR much less (if at all). And XHR means we retreive
+                                       // text, so we'd need to $.globalEval, which then messes up line numbers.
+                                       crossDomain: true,
+                                       cache: true
+                               } ).always( callback );
                        }
 
                        /**
 
                                if ( !hasOwn.call( registry, module ) ) {
                                        throw new Error( 'Module has not been registered yet: ' + module );
-                               } else if ( registry[module].state === 'registered' ) {
+                               }
+                               if ( registry[module].state === 'registered' ) {
                                        throw new Error( 'Module has not been requested from the server yet: ' + module );
-                               } else if ( registry[module].state === 'loading' ) {
+                               }
+                               if ( registry[module].state === 'loading' ) {
                                        throw new Error( 'Module has not completed loading yet: ' + module );
-                               } else if ( registry[module].state === 'ready' ) {
+                               }
+                               if ( registry[module].state === 'ready' ) {
                                        throw new Error( 'Module has already been executed: ' + module );
                                }
 
                                }
 
                                function runScript() {
-                                       var script, markModuleReady, nestedAddScript;
+                                       var script, markModuleReady, nestedAddScript, legacyWait,
+                                               // Expand to include dependencies since we have to exclude both legacy modules
+                                               // and their dependencies from the legacyWait (to prevent a circular dependency).
+                                               legacyModules = resolve( mw.config.get( 'wgResourceLoaderLegacyModules', [] ) );
                                        try {
                                                script = registry[module].script;
                                                markModuleReady = function () {
                                                        registry[module].state = 'ready';
                                                        handlePending( module );
                                                };
-                                               nestedAddScript = function ( arr, callback, async, i ) {
+                                               nestedAddScript = function ( arr, callback, i ) {
                                                        // Recursively call addScript() in its own callback
                                                        // for each element of arr.
                                                        if ( i >= arr.length ) {
                                                        }
 
                                                        addScript( arr[i], function () {
-                                                               nestedAddScript( arr, callback, async, i + 1 );
-                                                       }, async );
+                                                               nestedAddScript( arr, callback, i + 1 );
+                                                       } );
                                                };
 
-                                               if ( $.isArray( script ) ) {
-                                                       nestedAddScript( script, markModuleReady, registry[module].async, 0 );
-                                               } else if ( $.isFunction( script ) ) {
-                                                       registry[module].state = 'ready';
-                                                       // Pass jQuery twice so that the signature of the closure which wraps
-                                                       // the script can bind both '$' and 'jQuery'.
-                                                       script( $, $ );
-                                                       handlePending( module );
-                                               }
+                                               legacyWait = ( $.inArray( module, legacyModules ) !== -1 )
+                                                       ? $.Deferred().resolve()
+                                                       : mw.loader.using( legacyModules );
+
+                                               legacyWait.always( function () {
+                                                       if ( $.isArray( script ) ) {
+                                                               nestedAddScript( script, markModuleReady, 0 );
+                                                       } else if ( $.isFunction( script ) ) {
+                                                               // Pass jQuery twice so that the signature of the closure which wraps
+                                                               // the script can bind both '$' and 'jQuery'.
+                                                               registry[module].state = 'ready';
+                                                               script( $, $ );
+                                                               handlePending( module );
+                                                       } else if ( typeof script === 'string' ) {
+                                                               // Site and user modules are a legacy scripts that run in the global scope.
+                                                               // This is transported as a string instead of a function to avoid needing
+                                                               // to use string manipulation to undo the function wrapper.
+                                                               if ( module === 'user' ) {
+                                                                       // Implicit dependency on the site module. Not real dependency because
+                                                                       // it should run after 'site' regardless of whether it succeeds or fails.
+                                                                       mw.loader.using( 'site' ).always( function () {
+                                                                               registry[module].state = 'ready';
+                                                                               $.globalEval( script );
+                                                                               handlePending( module );
+                                                                       } );
+                                                               } else {
+                                                                       registry[module].state = 'ready';
+                                                                       $.globalEval( script );
+                                                                       handlePending( module );
+                                                               }
+                                                       }
+                                               } );
                                        } catch ( e ) {
                                                // This needs to NOT use mw.log because these errors are common in production mode
                                                // and not in debug mode, such as when a symbol that should be global isn't exported
                                        mw.templates.set( module, registry[module].templates );
                                }
 
-                               if ( $.isReady || registry[module].async ) {
-                                       // Make sure we don't run the scripts until all (potentially asynchronous)
-                                       // stylesheet insertions have completed.
-                                       ( function () {
-                                               var pending = 0;
-                                               checkCssHandles = function () {
-                                                       // cssHandlesRegistered ensures we don't take off too soon, e.g. when
-                                                       // one of the cssHandles is fired while we're still creating more handles.
-                                                       if ( cssHandlesRegistered && pending === 0 && runScript ) {
-                                                               runScript();
-                                                               runScript = undefined; // Revoke
+                               // Make sure we don't run the scripts until all stylesheet insertions have completed.
+                               ( function () {
+                                       var pending = 0;
+                                       checkCssHandles = function () {
+                                               // cssHandlesRegistered ensures we don't take off too soon, e.g. when
+                                               // one of the cssHandles is fired while we're still creating more handles.
+                                               if ( cssHandlesRegistered && pending === 0 && runScript ) {
+                                                       runScript();
+                                                       runScript = undefined; // Revoke
+                                               }
+                                       };
+                                       cssHandle = function () {
+                                               var check = checkCssHandles;
+                                               pending++;
+                                               return function () {
+                                                       if ( check ) {
+                                                               pending--;
+                                                               check();
+                                                               check = undefined; // Revoke
                                                        }
                                                };
-                                               cssHandle = function () {
-                                                       var check = checkCssHandles;
-                                                       pending++;
-                                                       return function () {
-                                                               if ( check ) {
-                                                                       pending--;
-                                                                       check();
-                                                                       check = undefined; // Revoke
-                                                               }
-                                                       };
-                                               };
-                                       }() );
-                               } else {
-                                       // We are in blocking mode, and so we can't afford to wait for CSS
-                                       cssHandle = function () {};
-                                       // Run immediately
-                                       checkCssHandles = runScript;
-                               }
+                                       };
+                               }() );
 
                                // Process styles (see also mw.loader.implement)
                                // * back-compat: { <media>: css }
                         * @param {string|string[]} dependencies Module name or array of string module names
                         * @param {Function} [ready] Callback to execute when all dependencies are ready
                         * @param {Function} [error] Callback to execute when any dependency fails
-                        * @param {boolean} [async=false] Whether to load modules asynchronously.
-                        *  Ignored (and defaulted to `true`) if the document-ready event has already occurred.
                         */
-                       function request( dependencies, ready, error, async ) {
+                       function request( dependencies, ready, error ) {
                                // Allow calling by single module name
                                if ( typeof dependencies === 'string' ) {
                                        dependencies = [dependencies];
                                                        return;
                                                }
                                                queue.push( module );
-                                               if ( async ) {
-                                                       registry[module].async = true;
-                                               }
                                        }
                                } );
 
                        }
 
                        /**
-                        * Asynchronously append a script tag to the end of the body
-                        * that invokes load.php
+                        * Load modules from load.php
                         * @private
                         * @param {Object} moduleMap Module map, see #buildModulesString
                         * @param {Object} currReqBase Object with other parameters (other than 'modules') to use in the request
                         * @param {string} sourceLoadScript URL of load.php
-                        * @param {boolean} async Whether to load modules asynchronously.
-                        *  Ignored (and defaulted to `true`) if the document-ready event has already occurred.
                         */
-                       function doRequest( moduleMap, currReqBase, sourceLoadScript, async ) {
+                       function doRequest( moduleMap, currReqBase, sourceLoadScript ) {
                                var request = $.extend(
                                        { modules: buildModulesString( moduleMap ) },
                                        currReqBase
                                );
                                request = sortQuery( request );
                                // Support: IE6
-                               // Append &* to satisfy load.php's WebRequest::checkUrlExtension test. This script
-                               // isn't actually used in IE6, but MediaWiki enforces it in general.
-                               addScript( sourceLoadScript + '?' + $.param( request ) + '&*', null, async );
+                               // Append &* to satisfy load.php's WebRequest::checkUrlExtension test.
+                               // This script isn't actually used in IE6, but MediaWiki enforces it in general.
+                               addScript( sourceLoadScript + '?' + $.param( request ) + '&*' );
                        }
 
                        /**
                                        var     reqBase, splits, maxQueryLength, q, b, bSource, bGroup, bSourceGroup,
                                                source, concatSource, origBatch, group, i, modules, sourceLoadScript,
                                                currReqBase, currReqBaseLength, moduleMap, l,
-                                               lastDotIndex, prefix, suffix, bytesAdded, async;
+                                               lastDotIndex, prefix, suffix, bytesAdded;
 
                                        // Build a list of request parameters common to all requests.
                                        reqBase = {
                                                                currReqBase.user = mw.config.get( 'wgUserName' );
                                                        }
                                                        currReqBaseLength = $.param( currReqBase ).length;
-                                                       async = true;
                                                        // We may need to split up the request to honor the query string length limit,
                                                        // so build it piece by piece.
                                                        l = currReqBaseLength + 9; // '&modules='.length == 9
                                                                if ( maxQueryLength > 0 && !$.isEmptyObject( moduleMap ) && l + bytesAdded > maxQueryLength ) {
                                                                        // This request would become too long, create a new one
                                                                        // and fire off the old one
-                                                                       doRequest( moduleMap, currReqBase, sourceLoadScript, async );
+                                                                       doRequest( moduleMap, currReqBase, sourceLoadScript );
                                                                        moduleMap = {};
-                                                                       async = true;
                                                                        l = currReqBaseLength + 9;
                                                                        mw.track( 'resourceloader.splitRequest', { maxQueryLength: maxQueryLength } );
                                                                }
                                                                        moduleMap[prefix] = [];
                                                                }
                                                                moduleMap[prefix].push( suffix );
-                                                               if ( !registry[modules[i]].async ) {
-                                                                       // If this module is blocking, make the entire request blocking
-                                                                       // This is slightly suboptimal, but in practice mixing of blocking
-                                                                       // and async modules will only occur in debug mode.
-                                                                       async = false;
-                                                               }
                                                                l += bytesAdded;
                                                        }
                                                        // If there's anything left in moduleMap, request that too
                                                        if ( !$.isEmptyObject( moduleMap ) ) {
-                                                               doRequest( moduleMap, currReqBase, sourceLoadScript, async );
+                                                               doRequest( moduleMap, currReqBase, sourceLoadScript );
                                                        }
                                                }
                                        }
                                        if ( typeof module !== 'string' ) {
                                                throw new Error( 'module must be of type string, not ' + typeof module );
                                        }
-                                       if ( script && !$.isFunction( script ) && !$.isArray( script ) ) {
-                                               throw new Error( 'script must be of type function or array, not ' + typeof script );
+                                       if ( script && !$.isFunction( script ) && !$.isArray( script ) && typeof script !== 'string' ) {
+                                               throw new Error( 'script must be of type function, array, or script; not ' + typeof script );
                                        }
                                        if ( style && !$.isPlainObject( style ) ) {
                                                throw new Error( 'style must be of type object, not ' + typeof style );
                                 * @param {string} [type='text/javascript'] MIME type to use if calling with a URL of an
                                 *  external script or style; acceptable values are "text/css" and
                                 *  "text/javascript"; if no type is provided, text/javascript is assumed.
-                                * @param {boolean} [async] Whether to load modules asynchronously.
-                                *  Ignored (and defaulted to `true`) if the document-ready event has already occurred.
-                                *  Defaults to `true` if loading a URL, `false` otherwise.
                                 */
-                               load: function ( modules, type, async ) {
+                               load: function ( modules, type ) {
                                        var filtered, l;
 
                                        // Validate input
                                        // Allow calling with an external url or single dependency as a string
                                        if ( typeof modules === 'string' ) {
                                                if ( /^(https?:)?\/\//.test( modules ) ) {
-                                                       if ( async === undefined ) {
-                                                               // Assume async for bug 34542
-                                                               async = true;
-                                                       }
                                                        if ( type === 'text/css' ) {
                                                                // Support: IE 7-8
                                                                // Use properties instead of attributes as IE throws security
                                                                return;
                                                        }
                                                        if ( type === 'text/javascript' || type === undefined ) {
-                                                               addScript( modules, null, async );
+                                                               addScript( modules );
                                                                return;
                                                        }
                                                        // Unknown type
                                                return;
                                        }
                                        // Since some modules are not yet ready, queue up a request.
-                                       request( filtered, undefined, undefined, async );
+                                       request( filtered, undefined, undefined );
                                },
 
                                /**
                                                        // Module failed to load
                                                        descriptor.state !== 'ready' ||
                                                        // Unversioned, private, or site-/user-specific
-                                                       ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user', 'site' ] ) !== -1 ) ||
+                                                       ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user' ] ) !== -1 ) ||
                                                        // Partial descriptor
                                                        $.inArray( undefined, [ descriptor.script, descriptor.style,
                                                                        descriptor.messages, descriptor.templates ] ) !== -1
index 954de22..632ae82 100644 (file)
 .mw-notification-title {
        font-weight: bold;
 }
+
+.mw-notification-type-warn {
+       border-color: #F5BE00; /* yellow */
+       background-color: #FFFFE8;
+}
+
+.mw-notification-type-error {
+       border-color: #EB3941; /* red */
+       background-color: #FFF8F8;
+}
index 132c334..004e710 100644 (file)
                        }
                }
 
+               if ( options.type ) {
+                       // Sanitize options.type
+                       options.type = options.type.replace( /[ _\-]+/g, '-' ).replace( /[^\-a-z0-9]+/ig, '' );
+                       $notification.addClass( 'mw-notification-type-' + options.type );
+               }
+
                if ( options.title ) {
                        $notificationTitle = $( '<div class="mw-notification-title"></div>' )
                                .text( options.title )
                 * - title:
                 *   An optional title for the notification. Will be displayed above the
                 *   content. Usually in bold.
+                *
+                * - type:
+                *   An optional string for the type of the message used for styling:
+                *   Examples: 'info', 'warn', 'error'.
                 */
                defaults: {
                        autoHide: true,
                        tag: false,
-                       title: undefined
+                       title: undefined,
+                       type: false
                },
 
                /**
index c1e1dab..0f3a086 100644 (file)
@@ -6,8 +6,9 @@
 
        /**
         * @see mw.notification#notify
-        * @param message
-        * @param options
+        * @see mw.notification#defaults
+        * @param {HTMLElement|HTMLElement[]|jQuery|mw.Message|string} message
+        * @param {Object} options See mw.notification#defaults for details.
         * @return {jQuery.Promise}
         */
        mw.notify = function ( message, options ) {
index b620e05..5292e80 100644 (file)
                searchboxesSelectors = [
                        // Primary searchbox on every page in standard skins
                        '#searchInput',
+                       // Special:Search
+                       '#powerSearchText',
+                       '#searchText',
                        // Generic selector for skins with multiple searchboxes (used by CologneBlue)
                        // and for MediaWiki itself (special pages with page title inputs)
                        '.mw-searchInput'
diff --git a/resources/src/mediawiki/mediawiki.storage.js b/resources/src/mediawiki/mediawiki.storage.js
new file mode 100644 (file)
index 0000000..e10b561
--- /dev/null
@@ -0,0 +1,69 @@
+( function ( mw ) {
+       'use strict';
+       var storage;
+
+       /**
+        * Library for storing device specific information. It should be used for storing simple
+        * strings and is not suitable for storing large chunks of data.
+        * @class mw.storage
+        * @singleton
+        */
+       storage = {
+               isLocalStorageSupported: false,
+               /**
+                * Retrieve value from device storage.
+                *
+                * @param {String} key of item to retrieve
+                * @returns {String|Boolean} false when localStorage not available, otherwise string
+                */
+               get: function ( key ) {
+                       if ( this.isLocalStorageSupported ) {
+                               return localStorage.getItem( key );
+                       } else {
+                               return false;
+                       }
+               },
+
+               /**
+                * Set a value in device storage.
+                *
+                * @param {String} key key name to store under.
+                * @param {String} value to be stored.
+                * @returns {Boolean} whether the save succeeded or not.
+                */
+               set: function ( key, value ) {
+                       try {
+                               localStorage.setItem( key, value );
+                               return true;
+                       } catch ( e ) {
+                               return false;
+                       }
+               },
+
+               /**
+                * Remove a value from device storage.
+                *
+                * @param {String} key of item to remove.
+                * @returns {Boolean} whether the save succeeded or not.
+                */
+               remove: function ( key ) {
+                       if ( this.isLocalStorageSupported ) {
+                               localStorage.removeItem( key );
+                               return true;
+                       } else {
+                               return false;
+                       }
+               }
+       };
+
+       mw.storage = storage;
+       // See if local storage is supported
+       try {
+               localStorage.setItem( 'localStorageTest', 'localStorageTest' );
+               localStorage.removeItem( 'localStorageTest' );
+               storage.isLocalStorageSupported = true;
+       } catch ( e ) {
+               // Already set. No body needed.
+       }
+
+}( mediaWiki ) );
diff --git a/resources/src/moment-local-dmy.js b/resources/src/moment-local-dmy.js
new file mode 100644 (file)
index 0000000..c67b93e
--- /dev/null
@@ -0,0 +1,16 @@
+// Use DMY date format for Moment.js, in accordance with MediaWiki's date formatting routines.
+// This affects English only (and languages without localisations, that fall back to English).
+// http://momentjs.com/docs/#/customization/long-date-formats/
+/*global moment */
+moment.locale( 'en', {
+       longDateFormat: {
+               // Unchanged, but have to be repeated here:
+               LT: 'h:mm A',
+               LTS: 'h:mm:ss A',
+               // Customized:
+               L: 'DD/MM/YYYY',
+               LL: 'D MMMM YYYY',
+               LLL: 'D MMMM YYYY LT',
+               LLLL: 'dddd, D MMMM YYYY LT'
+       }
+} );
index 5ee295b..3b79bd3 100644 (file)
@@ -25,7 +25,8 @@ performance.mark( 'mediaWikiStartUp' );
  * - https://jquery.com/browser-support/
  */
 
-/*jshint unused: false */
+/*jshint unused: false, evil: true */
+/*globals mw, RLQ: true, $VARS, $CODE */
 function isCompatible( ua ) {
        if ( ua === undefined ) {
                ua = navigator.userAgent;
@@ -68,5 +69,38 @@ function isCompatible( ua ) {
 }
 
 /**
- * The startUp() function will be auto-generated and added below.
+ * The $CODE and $VARS placeholders are substituted in ResourceLoaderStartUpModule.php.
  */
+function startUp() {
+       mw.config = new mw.Map( $VARS.wgLegacyJavaScriptGlobals );
+
+       $CODE.registrations();
+
+       mw.config.set( $VARS.configuration );
+
+       // Must be after mw.config.set because these callbacks may use mw.loader which
+       // needs to have values 'skin', 'debug' etc. from mw.config.
+       window.RLQ = window.RLQ || [];
+       while ( RLQ.length ) {
+               RLQ.shift()();
+       }
+       window.RLQ = {
+               push: function ( fn ) {
+                       fn();
+               }
+       };
+}
+
+// Conditional script injection
+if ( isCompatible() ) {
+       ( function () {
+               var script = document.createElement( 'script' );
+               script.src = $VARS.baseModulesUri;
+               document.getElementsByTagName( 'head' )[0].appendChild( script );
+       }() );
+} else {
+       // Undo class swapping in case of an unsupported browser.
+       // See OutputPage::getHeadScripts().
+       document.documentElement.className = document.documentElement.className
+               .replace( /(^|\s)client-js(\s|$)/, '$1client-nojs$2' );
+}
index 5fcc7bb..f70a1b0 100644 (file)
@@ -160,6 +160,22 @@ Template:table_attribs_5
 |</noinclude>style="color:red;"||Bar
 !! endarticle
 
+!! article
+Template:table_attribs_6
+!! text
+style="background: <nowiki>
+
+
+red;</nowiki>" |
+!! endarticle
+
+!! article
+Template:table_attribs_7
+!! text
+<noinclude>
+|</noinclude>style{{=}}"background:&#35;f9f9f9;"|Foo<ref>foo</ref>
+!! endarticle
+
 !! article
 Template:table_header_cells
 !! text
@@ -822,15 +838,12 @@ parsoid=wt2html
 !!end
 
 # same html as previous, but wikitext adjusted to match parsoid html2wt
-# skipping wt2html and html2html because it wants to put <i> before <b>
 !! test
 Italics and bold: 5-quote opening sequence: (5,2+3)
-!! options
-parsoid=wt2wt,html2wt
 !! wikitext
 '''''foo'''''
-!! html
-<p><b><i>foo</i></b>
+!! html/*
+<p><i><b>foo</b></i>
 </p>
 !! end
 
@@ -1314,7 +1327,7 @@ Non-word characters don't terminate tag names + tidy
 Non-word characters are valid in extension tags (T19663)
 !! wikitext
 <tåg>tåg</tåg>
-!! html
+!! html/php
 <pre>
 'tåg'
 array (
@@ -1325,11 +1338,15 @@ array (
 
 !! test
 Isolated close tags should be treated as literal text (bug 52760)
+!! options
+parsoid=wt2html
 !! wikitext
 </b>
 
 <s.foo>s</s>
-!! html+tidy
+!! html/php+tidy
+<p>&lt;s.foo&gt;s</p>
+!! html/parsoid
 <p>&lt;s.foo&gt;s</p>
 !! end
 
@@ -1363,9 +1380,11 @@ Bare pipe character from a template (bug 52363)
 <nowiki> unordered list
 !! wikitext
 <nowiki>* This is not an unordered list item.</nowiki>
-!! html
+!! html/php
 <p>* This is not an unordered list item.
 </p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">* This is not an unordered list item.</span></p>
 !! end
 
 !! test
@@ -1378,7 +1397,7 @@ sed abit.
 
 :and a colon
 </nowiki>
-!! html
+!! html/php
 <p>Lorem ipsum dolor
 
 sed abit.
@@ -1387,6 +1406,14 @@ sed abit.
 :and a colon
 
 </p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">Lorem ipsum dolor
+
+sed abit.
+  sed nullum.
+
+:and a colon
+</span></p>
 !! end
 
 !! test
@@ -1400,7 +1427,7 @@ nowiki 3
 
 *There is not nowiki.
 *There is <nowiki>nowiki</nowiki>.
-!! html
+!! html/php
 <dl><dd>There is not nowiki.</dd>
 <dd>There is nowiki.</dd></dl>
 <ol><li>There is not nowiki.</li>
@@ -1408,6 +1435,15 @@ nowiki 3
 <ul><li>There is not nowiki.</li>
 <li>There is nowiki.</li></ul>
 
+!! html/parsoid
+<dl><dd data-parsoid='{}'>There is not nowiki.</dd>
+<dd data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</dd></dl>
+
+<ol><li data-parsoid='{}'>There is not nowiki.</li>
+<li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ol>
+
+<ul><li data-parsoid='{}'>There is not nowiki.</li>
+<li data-parsoid='{}'>There is <span typeof="mw:Nowiki">nowiki</span>.</li></ul>
 !! end
 
 !! test
@@ -1421,11 +1457,11 @@ Entities inside <nowiki>
 
 !! test
 Entities inside template parameters
-!! options
-parsoid
 !! wikitext
 {{echo|&ndash;}}
-!! html
+!! html/php+tidy
+<p>–</p>
+!! html/parsoid
 <p><span typeof="mw:Transclusion mw:Entity" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&amp;ndash;"}},"i":0}}]}'>&ndash;</span></p>
 !! end
 
@@ -1433,17 +1469,17 @@ parsoid
 Properly escape nowiki when combined with other wiki markup
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>* &lt;/nowiki&gt; tag</p>
 !! wikitext
-<nowiki>* &lt;/nowiki&gt;</nowiki> tag
+<nowiki>*</nowiki> <nowiki>&lt;/nowiki&gt;</nowiki> tag
 !! end
 
 !! test
 T93824: Put escaped HTML tags inside nowiki
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>&lt;h2&gt;foo&lt;/h2&gt;</p>
 !! wikitext
 <nowiki><h2>foo</h2></nowiki>
@@ -1453,7 +1489,7 @@ parsoid=html2wt
 T71950: 1. Put nowiki as close to cause as possible, even with non-quote escapable chars
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>This text: L'<a rel="mw:WikiLink" href="./Foo">Foo</a>
 This text: L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
 This text: L'''<a rel="mw:WikiLink" href="./Foo">Foo</a>''</p>
@@ -1468,7 +1504,7 @@ This text: L<nowiki>'''</nowiki>[[Foo]]<nowiki>''</nowiki>
 T71950: 2. Put nowiki as close to cause as possible, after ' :'
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>This text : L''<a rel="mw:WikiLink" href="./Foo">Foo</a>
 </p>
 !! wikitext
@@ -1511,7 +1547,7 @@ parsoid=html2wt
 Cases where "!!" needs nowiki protection
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table>
 <tr><th>this needs protection !! here</th></tr>
 </table>
@@ -1764,7 +1800,11 @@ parsoid=wt2html,wt2wt
 !! wikitext
 <!--c1-->*a
 <!--c2--><!--c3--><!--c4-->*b
-!! html
+!! html/php
+<ul><li>a</li>
+<li>b</li></ul>
+
+!! html/parsoid
 <!--c1--><ul>
 <li>a
 </li>
@@ -1977,7 +2017,7 @@ a [[Category:A1]] [[Category:A2]]
 [[Category:A4]]
 !! html/parsoid
 <p>a</p>
-<link rel="mw:PageProp/Category" href="Category:A1"/> <link rel="mw:PageProp/Category" href="Category:A2"/> <link rel="mw:PageProp/Category" href="Category:A3"/> <link rel="mw:PageProp/Category" href="Category:A4"/>
+<link rel="mw:PageProp/Category" href="./Category:A1"/> <link rel="mw:PageProp/Category" href="./Category:A2"/> <link rel="mw:PageProp/Category" href="./Category:A3"/> <link rel="mw:PageProp/Category" href="./Category:A4"/>
 !! end
 
 !! test
@@ -1987,7 +2027,7 @@ parsoid=wt2html
 !! wikitext
 [[Category:A1]]a
 !! html/parsoid
-<link rel="mw:PageProp/Category" href="Category:A1"/><p>a</p>
+<link rel="mw:PageProp/Category" href="./Category:A1"/><p>a</p>
 !! end
 
 ###
@@ -2223,7 +2263,7 @@ Entities inside <pre>
 </nowiki>
 </pre>
 
-!! html
+!! html/php
 <pre>
 &lt;nowiki&gt;
 </pre>
@@ -2236,6 +2276,18 @@ Entities inside <pre>
 
 &lt;/pre&gt;
 </p>
+!! html/parsoid
+<pre data-parsoid='{"stx":"html","strippedNL":true}'>&lt;nowiki>
+</pre>
+<p><span typeof="mw:Placeholder" data-parsoid='{"src":"&lt;/nowiki>"}'>&lt;/nowiki></span>
+&lt;/pre></p>
+
+<p><span typeof="mw:Nowiki">
+&lt;pre>
+&lt;nowiki>
+&lt;/pre>
+</span>
+&lt;/pre></p>
 !! end
 
 !! test
@@ -2292,13 +2344,17 @@ HTML pre followed by indent-pre
 </pre>
 !! end
 
+# Note that tidy removes the empty <p> tags from the start and end.
+# Parsoid does not, by design.
 !!test
 Block tag pre
-!!options
-parsoid
 !! wikitext
 <p><pre>foo</pre></p>
-!! html
+!! html/php+tidy
+<pre>
+foo
+</pre>
+!! html/parsoid
 <p data-parsoid='{"stx":"html","autoInsertedEnd":true}'></p><pre data-parsoid='{"stx":"html"}'>foo</pre><p data-parsoid='{"autoInsertedStart":true,"stx":"html"}'></p>
 !!end
 
@@ -2421,6 +2477,19 @@ Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
 </pre>
 !!end
 
+!! test
+Pres with newline attributes
+!! wikitext
+<pre class="one
+two">hi</pre>
+!! html/php
+<pre class="one two">hi</pre>
+
+!! html/parsoid
+<pre class="one
+two" data-parsoid='{"stx":"html"}'>hi</pre>
+!! end
+
 !! test
 Things that look like <pre> tags aren't treated as such
 !! wikitext
@@ -2460,7 +2529,10 @@ Parsoid: handle pre with space after attribute
 parsoid=wt2html
 !! wikitext
 <pre style="width:50%;" >{{echo|foo}}</pre>
-!! html
+!! html/php
+<pre style="width:50%;">{{echo|foo}}</pre>
+
+!! html/parsoid
 <pre style="width:50%;">{{echo|foo}}</pre>
 !! end
 
@@ -2666,32 +2738,32 @@ Templates: Other wikitext in parameter names (bug 67657)
 #--------------------------------------------------------------------
 !! test
 Templates: Parsoid parameter escaping test 1
-!! options
-parsoid
 !! wikitext
 {{echo|[foo]|{{echo|[bar]}}}}
-!! html
+!! html/php+tidy
+<p>[foo]</p>
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion"
 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[foo]"},"2":{"wt":"{{echo|[bar]}}"}},"i":0}}]}'>[foo]</p>
 !! end
 
 !! test
 Parsoid: Pipes in external links in template parameter
-!! options
-parsoid
 !! wikitext
 {{echo|[{{echo|http://example.com}} link]}}
-!! html
+!! html/php+tidy
+<p><a rel="nofollow" class="external text" href="http://example.com">link</a></p>
+!! html/parsoid
 <p><a rel="mw:ExtLink" href="http://example.com" about="#mwt31" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[{{echo|http://example.com}} link]"}},"i":0}}]}'>link</a></p>
 !! end
 
 !! test
 Parsoid: pipe in transclusion parameter
-!! options
-parsoid
 !! wikitext
 {{echo|http://foo.com/a&#124;b}}
-!! html
+!! html/php+tidy
+<p><a rel="nofollow" class="external free" href="http://foo.com/a%7Cb">http://foo.com/a%7Cb</a></p>
+!! html/parsoid
 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
 typeof="mw:Transclusion"
 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://foo.com/a&amp;#124;b"}},"i":0}}]}'>http://foo.com/a|b</a></p>
@@ -2703,7 +2775,9 @@ Parsoid: Pipe in external link target and content in template parameter
 parsoid=html2wt,wt2wt
 !! wikitext
 {{echo|[http://foo.com/a&#124;b a&#124;b]}}
-!! html
+!! html/php+tidy
+<p><a rel="nofollow" class="external text" href="http://foo.com/a%7Cb">a|b</a></p>
+!! html/parsoid
 <p><a rel="mw:ExtLink" href="http://foo.com/a|b" about="#mwt1"
 typeof="mw:Transclusion"
 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
@@ -2728,7 +2802,9 @@ parsoid=html2wt,wt2wt
 {{echo|foo<nowiki>|</nowiki>bar}}
 {{echo|<nowiki>&lt;div&gt;</nowiki>}}
 {{echo|<nowiki></nowiki>}}
-!! html
+!! html/php+tidy
+<p>foo|bar &lt;div&gt;</p>
+!! html/parsoid
 <p><span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo<nowiki>|</nowiki>bar"}},"i":0}}]}'}'>foo</span><span typeof="mw:Nowiki" about="#mwt1">|</span><span about="#mwt1">bar</span>
 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt2" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki>&amp;lt;div&amp;gt;</nowiki>"}},"i":0}}]}'><span typeof="mw:Entity">&lt;</span>div<span typeof="mw:Entity">&gt;</span></span>
 <span typeof="mw:Transclusion mw:Nowiki" about="#mwt3" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<nowiki></nowiki>"}},"i":0}}]}'></span>
@@ -2742,18 +2818,20 @@ Templates: '=' char in nested transclusions should not trigger nowiki escapes or
 parsoid=html2wt,wt2wt
 !! wikitext
 {{echo|{{echo|1=bar}}}}
-!! html
+!! html/php+tidy
+<p>bar</p>
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
 !! end
 
 ## Bug 56733
 !! test
 Templates parameters with special tokenizing behavior dont get modified because of arg escaping
-!! options
-parsoid
 !! wikitext
 {{echo|a : b}}
-!! html
+!! html/php+tidy
+<p>a&#160;: b</p>
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
 !! end
 
@@ -2762,9 +2840,8 @@ parsoid
 Templates: Preserve blank parameter names
 !! wikitext
 {{echo|=foo}}
-!! html/php
-<p>{{{1}}}
-</p>
+!! html/php+tidy
+<p>{{{1}}}</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"":{"wt":"foo"}},"i":0}}]}'>{{{1}}}</p>
 !! end
@@ -2773,10 +2850,8 @@ Templates: Preserve blank parameter names
 Templates: Preserve blank parameter names in other positions
 !! wikitext
 {{blank_param|bar|=foo}}
-!! html/php
-<p>bar
-foo
-</p>
+!! html/php+tidy
+<p>bar foo</p>
 !! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]},{"k":"","named":true,"spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"blank_param","href":"./Template:Blank_param"},"params":{"1":{"wt":"bar"},"":{"wt":"foo"}},"i":0}}]}'>bar
 foo</p>
@@ -3232,6 +3307,7 @@ parsoid=wt2html,wt2wt
 !! wikitext
  [[Category:foo]] <!-- No pre-wrapping -->
 {{echo| [[Category:foo]]}} <!-- No pre-wrapping -->
+!! html/php+tidy
 !! html/parsoid
  <link rel="mw:PageProp/Category" href="./Category:Foo"> <!-- No pre&#x2D;wrapping -->
 <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":" [[Category:foo]]"}},"i":0}}]}'> </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1"> <!-- No pre&#x2D;wrapping -->
@@ -3255,6 +3331,8 @@ Indent-Pre: Newlines in comments shouldn't affect sol state
 a <!--
 foo
 --> b
+!! html/php+tidy
+<p>a b</p>
 !! html/parsoid
 <p>a <!--
 foo
@@ -3284,8 +3362,10 @@ foo
 
 foo
 </pre>
-!! html
-<pre>foo</pre>
+!! html/php+tidy
+<pre>
+foo
+</pre>
 <pre>
 foo
 </pre>
@@ -3298,7 +3378,6 @@ foo
 
 foo
 </pre>
-
 !! html/parsoid
 <pre data-parsoid='{"stx":"html"}'>foo</pre>
 
@@ -3337,7 +3416,7 @@ haha
 
 
 </pre>
-!! html
+!! html/php+tidy
 <pre>
 
 
@@ -3354,7 +3433,6 @@ haha
 
 
 </pre>
-
 !! html/parsoid
 <pre data-parsoid='{"stx":"html"}'>
 
@@ -3397,7 +3475,7 @@ HTML-pre: 3: other wikitext
 '' no-italic ''
 [[ NoLink ]]
 </pre>
-!! html
+!! html/php
 <pre>
 * foo
 # bar
@@ -3406,6 +3484,13 @@ HTML-pre: 3: other wikitext
 [[ NoLink ]]
 </pre>
 
+!! html/parsoid
+<pre data-parsoid='{"stx":"html","strippedNL":true}'>* foo
+# bar
+= no-h =
+'' no-italic ''
+[[ NoLink ]]
+</pre>
 !!end
 
 ###
@@ -3729,7 +3814,7 @@ Definition Lists: Hacky use to indent tables (WS-insensitive)
 ##
 ## All Parsoid only definition list tests have this difference.
 ##
-## See also: https://bugzilla.wikimedia.org/show_bug.cgi?id=6569
+## See also: https://phabricator.wikimedia.org/T8569
 ## and http://lists.wikimedia.org/pipermail/wikitext-l/2011-November/000483.html
 
 !! test
@@ -3819,12 +3904,19 @@ parsoid
 
 !! test
 Definition Lists: Nesting: Test 2 (Parsoid only)
-!! options
-parsoid
 !! wikitext
 ;t1
 ::d2
-!! html
+!! html/php+tidy
+<dl>
+<dt>t1</dt>
+<dd>
+<dl>
+<dd>d2</dd>
+</dl>
+</dd>
+</dl>
+!! html/parsoid
 <dl>
   <dt>t1</dt>
   <dd>
@@ -3839,12 +3931,27 @@ parsoid
 
 !! test
 Definition Lists: Nesting: Test 3 (Parsoid only)
-!! options
-parsoid
 !! wikitext
 :;t1
 ::::d2
-!! html
+!! html/php+tidy
+<dl>
+<dd>
+<dl>
+<dt>t1</dt>
+<dd>
+<dl>
+<dd>
+<dl>
+<dd>d2</dd>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+</dd>
+</dl>
+!! html/parsoid
 <dl>
   <dd>
     <dl>
@@ -4236,6 +4343,17 @@ Definition Lists: colons occurring in tags
 </dl>
 </dd>
 </dl>
+!! html/parsoid
+<dl><dt>a</dt><dd data-parsoid='{"stx":"row"}'>b</dd>
+<dt><b>a:b</b></dt>
+<dt><i data-parsoid='{"stx":"html"}'>a:b</i></dt>
+<dt><span data-parsoid='{"stx":"html"}'>a:b</span></dt>
+<dt><div data-parsoid='{"stx":"html"}'>a:b</div></dt>
+<dt><div data-parsoid='{"stx":"html","autoInsertedEnd":true}'>a</div></dt>
+<dd>b</dd>
+<dt><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a:b"}},"i":0}}]}'>a:b</span></dt>
+<dt><i about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1","spc":["","","",""]}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;a:b&#39;&#39;"}},"i":0}}]}'>a:b</i>
+<dl><dt><dl><dt><i>a:b</i></dt></dl></dt></dl></dt></dl>
 !! end
 
 !! test
@@ -4556,6 +4674,25 @@ http://example.com/url_with_entity&#60;
 <a rel="mw:ExtLink" href="http://example.com/url_with_entity&lt;">http://example.com/url_with_entity&lt;</a></p>
 !! end
 
+!! test
+External links: Lone protocols are never linked (T105697)
+!! wikitext
+http://
+http://;
+(http://)
+bitcoin:
+bitcoin:;
+(bitcoin:)
+!! html
+<p>http://
+http://;
+(http://)
+bitcoin:
+bitcoin:;
+(bitcoin:)
+</p>
+!! end
+
 !! test
 External links: No preceding word characters allowed (bug 65278)
 !! wikitext
@@ -5204,14 +5341,91 @@ http://example.com/index.php?foozoid&#x5B;&#x5D;=bar
 !! end
 
 !! test
-IPv6 urls (bug 21261)
-!! options
-disabled
+IPv6 urls, autolink format (T23261)
 !! wikitext
 http://[2404:130:0:1000::187:2]/index.php
+
+Examples from RFC2373, section 2.2:
+* http://[1080::8:800:200C:417A]/unicast
+* http://[FF01::101]/multicast
+* http://[::1]/loopback
+* http://[::]/unspecified
+* http://[::13.1.68.3]/ipv4compat
+* http://[::FFFF:129.144.52.38]/ipv4compat
+
+Examples from RFC 2732, section 2:
+* http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html
+* http://[1080:0:0:0:8:800:200C:417A]/index.html
+* http://[3ffe:2a00:100:7031::1]
+* http://[1080::8:800:200C:417A]/foo
+* http://[::192.9.5.5]/ipng
+* http://[::FFFF:129.144.52.38]:80/index.html
+* http://[2010:836B:4179::836B:4179]
+
 !! html
 <p><a rel="nofollow" class="external free" href="http://[2404:130:0:1000::187:2]/index.php">http://[2404:130:0:1000::187:2]/index.php</a>
+</p><p>Examples from RFC2373, section 2.2:
 </p>
+<ul><li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/unicast">http://[1080::8:800:200C:417A]/unicast</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[FF01::101]/multicast">http://[FF01::101]/multicast</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::1]/loopback">http://[::1]/loopback</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::]/unspecified">http://[::]/unspecified</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::13.1.68.3]/ipv4compat">http://[::13.1.68.3]/ipv4compat</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]/ipv4compat">http://[::FFFF:129.144.52.38]/ipv4compat</a></li></ul>
+<p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
+</p>
+<ul><li> <a rel="nofollow" class="external free" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">http://[1080:0:0:0:8:800:200C:417A]/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[3ffe:2a00:100:7031::1]">http://[3ffe:2a00:100:7031::1]</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[1080::8:800:200C:417A]/foo">http://[1080::8:800:200C:417A]/foo</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::192.9.5.5]/ipng">http://[::192.9.5.5]/ipng</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[::FFFF:129.144.52.38]:80/index.html">http://[::FFFF:129.144.52.38]:80/index.html</a></li>
+<li> <a rel="nofollow" class="external free" href="http://[2010:836B:4179::836B:4179]">http://[2010:836B:4179::836B:4179]</a></li></ul>
+
+!! end
+
+!! test
+IPv6 urls, bracketed format (T23261)
+!! wikitext
+[http://[2404:130:0:1000::187:2]/index.php test]
+
+Examples from RFC2373, section 2.2:
+* [http://[1080::8:800:200C:417A] unicast]
+* [http://[FF01::101] multicast]
+* [http://[::1]/ loopback]
+* [http://[::] unspecified]
+* [http://[::13.1.68.3] ipv4compat]
+* [http://[::FFFF:129.144.52.38] ipv4compat]
+
+Examples from RFC 2732, section 2:
+* [http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html 1]
+* [http://[1080:0:0:0:8:800:200C:417A]/index.html 2]
+* [http://[3ffe:2a00:100:7031::1] 3]
+* [http://[1080::8:800:200C:417A]/foo 4]
+* [http://[::192.9.5.5]/ipng 5]
+* [http://[::FFFF:129.144.52.38]:80/index.html 6]
+* [http://[2010:836B:4179::836B:4179] 7]
+
+!! html
+<p><a rel="nofollow" class="external text" href="http://[2404:130:0:1000::187:2]/index.php">test</a>
+</p><p>Examples from RFC2373, section 2.2:
+</p>
+<ul><li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]">unicast</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[FF01::101]">multicast</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::1]/">loopback</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::]">unspecified</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::13.1.68.3]">ipv4compat</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]">ipv4compat</a></li></ul>
+<p>Examples from <a class="external mw-magiclink-rfc" rel="nofollow" href="//tools.ietf.org/html/rfc2732">RFC 2732</a>, section 2:
+</p>
+<ul><li> <a rel="nofollow" class="external text" href="http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html">1</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[1080:0:0:0:8:800:200C:417A]/index.html">2</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[3ffe:2a00:100:7031::1]">3</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[1080::8:800:200C:417A]/foo">4</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::192.9.5.5]/ipng">5</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[::FFFF:129.144.52.38]:80/index.html">6</a></li>
+<li> <a rel="nofollow" class="external text" href="http://[2010:836B:4179::836B:4179]">7</a></li></ul>
+
 !! end
 
 !! test
@@ -5327,7 +5541,7 @@ Parenthesis in external links, w/ transclusion or comment
 Serialize <a> tags with invalid link targets as plain text
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="[[foo]]">text</a>
 <a rel="mw:WikiLink" href="[[foo]]">*text</a>
 <a rel="mw:WikiLink" href="[[foo]]">[[foo]]</a>
@@ -6163,6 +6377,21 @@ Indented table markup mixed with indented pre content (proposed in bug 6200)
 </tbody></table>
 !! end
 
+## Edge case fix to prevent future regressions
+!! test
+T107652: <ref>s in templates that also generate table cell attributes should be rendered properly
+!! wikitext
+{|
+|{{table_attribs_7}}
+|}
+<references />
+!! html/parsoid
+<table>
+<tbody><tr><td style="background:#f9f9f9;" typeof="mw:Transclusion" about="#mwt1" data-mw='{"parts":["|",{"template":{"target":{"wt":"table_attribs_7","href":"./Template:Table_attribs_7"},"params":{},"i":0}}]}'>Foo<span class="mw-ref" id="cite_ref-1" rel="dc:references" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></td></tr>
+</tbody></table>
+<ol class="mw-references" typeof="mw:Extension/references" about="#mwt5" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
+!! end
+
 !! test
 Table with row followed by newlines and table heading
 !! wikitext
@@ -6576,7 +6805,7 @@ parsoid=wt2html,wt2wt
 Parsoid: Default to a newline after tables in new content (bug 51219)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table><tbody>
 <tr><td>foo</td></tr></tbody></table> bar
 <table><tbody>
@@ -6596,7 +6825,7 @@ parsoid=html2wt
 Parsoid: newline inducing block nodes don't suppress <nowiki>
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
  a<h1>foo</h1>
 !! wikitext
 <nowiki> </nowiki>a
@@ -6662,7 +6891,7 @@ foo
 Strip unsupported table tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table>
 <thead>
 <tr>
@@ -6967,7 +7196,7 @@ Namespace takes precedence over interwiki link (bug 51680)
 Link to namespace preferred over interwiki with correct rel attribute
 !! options
 parsoid=html2wt,html2html
-!! html
+!! html/parsoid
 <p><a rel="mw:WikiLink" href="./MemoryAlpha:AlphaTest" title="MemoryAlpha:AlphaTest">MemoryAlpha:AlphaTest</a></p>
 !! wikitext
 [[MemoryAlpha:AlphaTest]]
@@ -7155,10 +7384,10 @@ Broken image links with HTML captions (bug 39700)
 <a href="/index.php?title=Special:Upload&amp;wpDestFile=Nonexistent" class="new" title="File:Nonexistent">abc</a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;script>&lt;/script>"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
-<span typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;script>&lt;/script>"}'><a href="./File:Nonexistent" data-parsoid='{"a":{"href":"./File:Nonexistent"},"sa":{}}'><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100"/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"a&lt;i>b&lt;/i>c"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
+<span typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&amp;lt;script&amp;gt;&amp;lt;/script&amp;gt;"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="100" width="100"/></a></span>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;&amp;amp;lt;&amp;quot;,&amp;quot;srcContent&amp;quot;:&amp;quot;&lt;&amp;quot;,&amp;quot;dsr&amp;quot;:[107,111,null,null]}\">&amp;lt;&lt;/span>"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"a&lt;i data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[134,142,3,4]}\">b&lt;/i>c"}'><a href="./File:Nonexistent"><img resource="./File:Nonexistent" src="./Special:FilePath/Nonexistent" height="220" width="220"/></a></span></p>
 !! end
 
 !! test
@@ -7475,7 +7704,7 @@ mótmælenda[[söfnuður|söfnuðir]]xxx
 Parsoid link trail escaping
 !! options
 parsoid=html2wt,html2html
-!! html
+!! html/parsoid
 <p><a rel="mw:WikiLink" href="Apple" title="Apple">apple</a>s</p>
 !! wikitext
 [[apple]]<nowiki/>s
@@ -7486,7 +7715,7 @@ Parsoid link prefix escaping
 !! options
 language=is
 parsoid=html2wt,html2html
-!! html
+!! html/parsoid
 <p>Aðrir mótmælenda<a rel="mw:WikiLink" href="Söfnuður" title="Söfnuður">söfnuður</a></p>
 !! wikitext
 Aðrir mótmælenda<nowiki/>[[söfnuður]]
@@ -7871,7 +8100,7 @@ language=ln
 Parsoid bug 53221: Wikilinks should be properly entity-escaped
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>He&amp;nbsp;llo <a href="Foo" rel="mw:WikiLink">He&amp;nbsp;llo</a></p>
 <p>He&amp;nbsp;llo <a href="He&amp;nbsp;llo" rel="mw:WikiLink">He&amp;nbsp;llo</a></p>
 !! wikitext
@@ -7977,7 +8206,7 @@ Blah blah blah
 </p>
 !! html/parsoid
 <p>Blah blah blah
-<a rel="mw:WikiLink" href="Template:Foo" title="Template:Foo">mi:Template:Foo</a></p>
+<a rel="mw:WikiLink" href="./Template:Foo" title="Template:Foo">mi:Template:Foo</a></p>
 !! end
 
 ###
@@ -8273,8 +8502,8 @@ Handling html with a br self-closing tag
 <br title=bar/>
 <br title=bar/ >
 !! html/php
-<p><br title="title" />
-<br title="title" />
+<p><br title="" />
+<br title="" />
 <br />
 <br title="bar" />
 <br title="bar" />
@@ -9617,7 +9846,7 @@ parsoid=wt2wt,html2wt
 foo
 __NOTOC__
 bar
-!! html
+!! html/parsoid
 foo<meta property="mw:PageProp/notoc"/>bar
 !! end
 
@@ -9628,10 +9857,19 @@ parsoid=wt2wt
 language=de
 !! wikitext
 __NOEDITSECTION__
-!! html
+!! html/parsoid
 <meta property="mw:PageProp/noeditsection" data-parsoid='{"magicSrc":"__NOEDITSECTION__"}'/>
 !! end
 
+!!test
+__proto__ is treated as normal wikitext (T105997)
+!!wikitext
+__proto__
+!!html
+<p>__proto__
+</p>
+!!end
+
 ###
 ### Magic links
 ###
@@ -10209,6 +10447,7 @@ Template:MSGNW test
 <gallery>
 File:Foobar.jpg
 </gallery>
+<!-- comment -->
 !! endarticle
 
 # hmm, fix this or just deprecate msgnw and document its behavior?
@@ -10216,7 +10455,7 @@ File:Foobar.jpg
 msgnw keyword
 !! wikitext
 {{msgnw:MSGNW test}}
-!! html
+!! html/php
 <p>&#39;&#39;None&#39;&#39; of &#39;&#39;&#39;this&#39;&#39;&#39; should be 
 &#42; interpreted
 &#32;but rather passed unmodified
@@ -10224,6 +10463,7 @@ msgnw keyword
 &#60;gallery&#62;
 File:Foobar.jpg
 &#60;/gallery&#62;
+&#60;!-- comment --&#62;
 </p>
 !! end
 
@@ -10486,7 +10726,7 @@ b}}
 !! end
 
 !! test
-Parsoid: Merge double tds (bug 50603)
+Parsoid: Merge double tds (T52603)
 !! options
 parsoid
 !! wikitext
@@ -10500,7 +10740,7 @@ parsoid
 !! end
 
 !! test
-Parsoid: Merge double tds in nested transclusion content (bug 50603)
+Parsoid: Merge double tds in nested transclusion content (T52603)
 !! options
 parsoid
 !! wikitext
@@ -11013,17 +11253,36 @@ Templates: Support for templates generating attributes and content
 </tbody></table>
 !! end
 
-!!test
-Templates: HTML Tables: 1. Generating start of a HTML table
+# T107622
+!! test
+4. Entities and nowikis inside templated attributes should be handled correctly inside templated tables
 !! wikitext
-{{echo|<table><tr><td>foo</td>}}</tr></table>
-!! html
-<table><tr><td>foo</td></tr></table>
-
-!!end
-
-!!test
-Templates: HTML Tables: 2a. Generating middle of a HTML table
+{|
+| {{table_attribs_6}} hi
+|}
+!! html/php
+<table>
+<tr>
+<td style="background: red;"> hi
+</td></tr></table>
+
+!! html/parsoid
+<table>
+<tbody><tr><td style="background:  red;" typeof="mw:Transclusion" about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"pi":[[]]}' data-mw='{"parts":["| ",{"template":{"target":{"wt":"table_attribs_6","href":"./Template:Table_attribs_6"},"params":{},"i":0}}," hi"]}'> hi</td></tr>
+</tbody></table>
+!! end
+
+!!test
+Templates: HTML Tables: 1. Generating start of a HTML table
+!! wikitext
+{{echo|<table><tr><td>foo</td>}}</tr></table>
+!! html
+<table><tr><td>foo</td></tr></table>
+
+!!end
+
+!!test
+Templates: HTML Tables: 2a. Generating middle of a HTML table
 !! wikitext
 <table><tr>{{echo|<td>foo</td>}}</tr></table>
 !! html
@@ -11477,41 +11736,40 @@ Parser Functions: 2. Nested use (only outermost should be marked up)
 !! test
 pre-save transform: subst:
 !! options
-PST
+pst
 !! wikitext
 {{subst:test}}
-!! html
+!! html/php
 This is a test template
 !! end
 
 !! test
 pre-save transform: normal template
 !! options
-PST
+pst
 !! wikitext
 {{test}}
-!! html
+!! html/php
 {{test}}
 !! end
 
 !! test
 pre-save transform: nonexistent template
 !! options
-PST
+pst
 !! wikitext
 {{thistemplatedoesnotexist}}
-!! html
+!! html/php
 {{thistemplatedoesnotexist}}
 !! end
 
-
 !! test
 pre-save transform: subst magic variables
 !! options
-PST
+pst
 !! wikitext
 {{subst:SITENAME}}
-!! html
+!! html/php
 MediaWiki
 !! end
 
@@ -11522,7 +11780,7 @@ pre-save transform: subst: templates with parameters
 pst
 !! wikitext
 {{subst:paramtest|param="something else"}}
-!! html
+!! html/php
 This is a test template with parameter "something else"
 !! end
 
@@ -11538,11 +11796,10 @@ pre-save transform: nowiki in subst (bug 1188)
 pst
 !! wikitext
 {{subst:nowikitest}}
-!! html
+!! html/php
 <nowiki>'''not wiki'''</nowiki>
 !! end
 
-
 !! article
 Template:commenttest
 !! text
@@ -11555,7 +11812,7 @@ pre-save transform: comment in subst (bug 1936)
 pst
 !! wikitext
 {{subst:commenttest}}
-!! html
+!! html/php
 This template has <!-- a comment --> in it.
 !! end
 
@@ -11565,7 +11822,7 @@ pre-save transform: unclosed tag
 pst noxml
 !! wikitext
 <nowiki>'''not wiki'''
-!! html
+!! html/php
 <nowiki>'''not wiki'''
 !! end
 
@@ -11575,7 +11832,7 @@ pre-save transform: mixed tag case
 pst noxml
 !! wikitext
 <NOwiki>'''not wiki'''</noWIKI>
-!! html
+!! html/php
 <NOwiki>'''not wiki'''</noWIKI>
 !! end
 
@@ -11585,7 +11842,7 @@ pre-save transform: unclosed comment in <nowiki>
 pst noxml
 !! wikitext
 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
-!! html
+!! html/php
 wiki<nowiki>nowiki<!--nowiki</nowiki>wiki
 !!end
 
@@ -11613,7 +11870,7 @@ pre-save transform: comment containing gallery (bug 5024)
 pst
 !! wikitext
 <!-- <gallery>data</gallery> -->
-!! html
+!! html/php
 <!-- <gallery>data</gallery> -->
 !!end
 
@@ -11623,7 +11880,7 @@ pre-save transform: comment containing extension
 pst
 !! wikitext
 <!-- <tag>data</tag> -->
-!! html
+!! html/php
 <!-- <tag>data</tag> -->
 !!end
 
@@ -11633,7 +11890,7 @@ pre-save transform: comment containing nowiki
 pst
 !! wikitext
 <!-- <nowiki>data</nowiki> -->
-!! html
+!! html/php
 <!-- <nowiki>data</nowiki> -->
 !!end
 
@@ -11643,7 +11900,7 @@ pre-save transform: <noinclude> in subst (bug 3298)
 pst
 !! wikitext
 {{subst:Includes}}
-!! html
+!! html/php
 Foobar
 !! end
 
@@ -11653,7 +11910,7 @@ pre-save transform: <onlyinclude> in subst (bug 3298)
 pst
 !! wikitext
 {{subst:Includes2}}
-!! html
+!! html/php
 Foo
 !! end
 
@@ -11675,7 +11932,7 @@ bug 22297: safesubst: works during PST
 pst
 !! wikitext
 {{subst:SafeSubstTest}}{{safesubst:SubstTest}}
-!! html
+!! html/php
 FoobarFoobar
 !! end
 
@@ -11711,7 +11968,7 @@ pst
 [[|Article (context)]]
 [[Bar:X (Y) Z|]]
 [[:Bar:X (Y) Z|]]
-!! html
+!! html/php
 [[Article (context)|Article]]
 [[Bar:Article|Article]]
 [[:Bar:Article|Article]]
@@ -11732,7 +11989,7 @@ pst
 [[:interwiki:Article|]]
 [[interwiki:Bar:Article|]]
 [[:interwiki:Bar:Article|]]
-!! html
+!! html/php
 [[interwiki:Article|Article]]
 [[:interwiki:Article|Article]]
 [[interwiki:Bar:Article|Bar:Article]]
@@ -11745,7 +12002,7 @@ pre-save transform: context links ("pipe trick") with parens in title
 pst title=[[Somearticle (context)]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Article (context)|Article]]
 !! end
 
@@ -11757,7 +12014,7 @@ pst title=[[Someplace, Somewhere]]
 [[|Otherplace]]
 [[Otherplace, Elsewhere|]]
 [[Otherplace, Elsewhere, Anywhere|]]
-!! html
+!! html/php
 [[Otherplace, Somewhere|Otherplace]]
 [[Otherplace, Elsewhere|Otherplace]]
 [[Otherplace, Elsewhere, Anywhere|Otherplace]]
@@ -11770,7 +12027,7 @@ pst title=[[Someplace (IGNORED), Somewhere]]
 !! wikitext
 [[|Otherplace]]
 [[Otherplace (place), Elsewhere|]]
-!! html
+!! html/php
 [[Otherplace, Somewhere|Otherplace]]
 [[Otherplace (place), Elsewhere|Otherplace]]
 !! end
@@ -11782,7 +12039,7 @@ pst title=[[Who, me? (context)]]
 !! wikitext
 [[|Yes, you.]]
 [[Me, Myself, and I (1937 song)|]]
-!! html
+!! html/php
 [[Yes, you. (context)|Yes, you.]]
 [[Me, Myself, and I (1937 song)|Me, Myself, and I]]
 !! end
@@ -11793,7 +12050,7 @@ pre-save transform: context links ("pipe trick") with namespace
 pst title=[[Ns:Somearticle]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Ns:Article|Article]]
 !! end
 
@@ -11803,7 +12060,7 @@ pre-save transform: context links ("pipe trick") with namespace and parens
 pst title=[[Ns:Somearticle (context)]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Ns:Article (context)|Article]]
 !! end
 
@@ -11813,7 +12070,7 @@ pre-save transform: context links ("pipe trick") with namespace and comma
 pst title=[[Ns:Somearticle, Context, Whatever]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Ns:Article, Context, Whatever|Article]]
 !! end
 
@@ -11823,7 +12080,7 @@ pre-save transform: context links ("pipe trick") with namespace, comma and paren
 pst title=[[Ns:Somearticle, Context (context)]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Ns:Article (context)|Article]]
 !! end
 
@@ -11833,7 +12090,7 @@ pre-save transform: context links ("pipe trick") with namespace, parens and comm
 pst title=[[Ns:Somearticle (IGNORED), Context]]
 !! wikitext
 [[|Article]]
-!! html
+!! html/php
 [[Ns:Article, Context|Article]]
 !! end
 
@@ -11848,7 +12105,7 @@ pst
 [[|Article(context)]]
 [[Bar:X(Y)Z|]]
 [[:Bar:X(Y)Z|]]
-!! html
+!! html/php
 [[Article(context)|Article]]
 [[Bar:Article(context)|Article]]
 [[:Bar:Article(context)|Article]]
@@ -11868,7 +12125,7 @@ pst
 [[|Article (context)]]
 [[Bar:X (Y) Z|]]
 [[:Bar:X (Y) Z|]]
-!! html
+!! html/php
 [[Article (context)|Article]]
 [[Bar:Article (context)|Article]]
 [[:Bar:Article (context)|Article]]
@@ -11888,7 +12145,7 @@ pst
 [[|Article(context)]]
 [[Bar:X(Y)Z|]]
 [[:Bar:X(Y)Z|]]
-!! html
+!! html/php
 [[Article(context)|Article]]
 [[Bar:Article(context)|Article]]
 [[:Bar:Article(context)|Article]]
@@ -11908,7 +12165,7 @@ pst
 [[Bar:Article (context),context|]]
 [[:Bar:Article (context), context|]]
 [[:Bar:Article (context),context|]]
-!! html
+!! html/php
 [[Article (context), context|Article]]
 [[Article (context),context|Article]]
 [[Bar:Article (context), context|Article]]
@@ -11927,7 +12184,7 @@ Empty lines are trimmed
 
 
 
-!! html
+!! html/php
 Empty lines are trimmed
 !! end
 
@@ -11940,7 +12197,7 @@ pst
 * <noinclude>~~~</noinclude>
 * <includeonly>~~~</includeonly>
 * <onlyinclude>~~~</onlyinclude>
-!! html
+!! html/php
 * [[Special:Contributions/127.0.0.1|127.0.0.1]]
 * <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
 * <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
@@ -11971,7 +12228,7 @@ As well as inside noinclude/onlyinclude
 
 But not inside includeonly
 <includeonly>{{subst:Foo}}</includeonly>
-!! html
+!! html/php
 Shall not expand:
 
 <nowiki>~~~~</nowiki>
@@ -12026,7 +12283,7 @@ parsoid=wt2html
 Parsoid: Escape nowiki with trailing space in tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>&lt;nowiki &gt; foo &lt/nowiki ></p>
 <p>a&lt;nowiki /&gt;b</p>
 <p>c&lt;nowiki/ &gt;d</p>
@@ -12042,7 +12299,7 @@ c&lt;nowiki/ &gt;d
 Parsoid: Escape weird noWikI capitalizations
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>&lt;noWikI &gt; foo &lt/NoWikI ></p>
 !! wikitext
 &lt;noWikI &gt; foo &lt;/NoWikI &gt;
@@ -12483,6 +12740,21 @@ Image with link parameter, protocol-less URL target
 <p><span class="mw-default-size" typeof="mw:Image"><a href="//example.com/"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
+!! test
+Escaping non-block captions (T107435)
+!! options
+parsoid={
+  "modes": ["wt2wt"],
+  "changes": [
+    ["[typeof~='mw:Image']", "attr", "data-mw", "{\"caption\": \"|\"}"]
+  ]
+}
+!! wikitext
+[[Image:Foobar.jpg|caption]]
+!! wikitext/edited
+[[Image:Foobar.jpg|<nowiki>|</nowiki>]]
+!! end
+
 !! test
 Image with link parameter, wgExternalLinkTarget
 !! wikitext
@@ -12671,8 +12943,6 @@ parsoid=wt2html,wt2wt,html2html
 
 !! test
 Image with wiki markup in implicit alt
-!! options
-parsoid=wt2html,wt2wt,html2html
 !! wikitext
 [[Image:Foobar.jpg|testing '''bold''' in alt]]
 
@@ -12682,8 +12952,8 @@ parsoid=wt2html,wt2wt,html2html
 </p><p><a href="/wiki/File:Foobar.jpg" class="image"><img alt="testing bold in alt" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw="{&quot;caption&quot;:&quot;testing '''bold''' in alt&quot;}"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
-<p><span class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="testing bold in alt" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"testing &lt;b data-parsoid=\"{&amp;quot;dsr&amp;quot;:[27,37,3,3]}\">bold&lt;/b> in alt"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"resource":"Image:Foobar.jpg"}}'/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image"><a href="./File:Foobar.jpg"><img alt="testing bold in alt" resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941" data-parsoid='{"a":{"alt":"testing bold in alt","resource":"./File:Foobar.jpg","height":"220","width":"1941"},"sa":{"alt":"alt=testing &#39;&#39;&#39;bold&#39;&#39;&#39; in alt","resource":"Image:Foobar.jpg"}}'/></a></span></p>
 !! end
 
 !! test
@@ -12764,7 +13034,7 @@ parsoid=wt2html,wt2wt,html2html
 ###################
 # Image sizing.
 # See https://www.mediawiki.org/wiki/Help:Images#Size_and_frame
-# and https://bugzilla.wikimedia.org/show_bug.cgi?id=62258
+# and https://phabricator.wikimedia.org/T64258
 # Foobar has actual size of 1941x220
 # 1. Thumbs & frameless always reduce, can't be enlarged unless it's
 #    a scalable format.
@@ -12921,7 +13191,7 @@ Frameless image caption with a free URL
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="http://example.com"><img alt="http://example.com" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"http://example.com"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;a rel=\"mw:ExtLink\" href=\"http://example.com\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;url&amp;quot;,&amp;quot;dsr&amp;quot;:[18,36,0,0]}\">http://example.com&lt;/a>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -12997,7 +13267,7 @@ BUG 1887: A ISBN with a thumbnail
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg" width="180" height="20" class="thumbimage" srcset="http://example.com/images/thumb/3/3a/Foobar.jpg/270px-Foobar.jpg 1.5x, http://example.com/images/thumb/3/3a/Foobar.jpg/360px-Foobar.jpg 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"></a></div><a href="/wiki/Special:BookSources/1235467890" class="internal mw-magiclink-isbn">ISBN 1235467890</a></div></div></div>
 
 !! html/parsoid
-<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="Special:BookSources/1235467890" rel="mw:ExtLink">ISBN 1235467890</a></figcaption></figure>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><a href="./Special:BookSources/1235467890" rel="mw:ExtLink">ISBN 1235467890</a></figcaption></figure>
 !! end
 
 !! test
@@ -13031,7 +13301,7 @@ BUG 648: Frameless image caption with a link
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a [[link]] in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;link&amp;quot;},&amp;quot;dsr&amp;quot;:[30,38,2,2]}\">link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13042,7 +13312,7 @@ BUG 648: Frameless image caption with a link (suffix)
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a linkfoo in it"><img alt="text with a linkfoo in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a [[link]]foo in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:WikiLink\" href=\"./Link\" title=\"Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;link&amp;quot;},&amp;quot;dsr&amp;quot;:[30,41,2,5],&amp;quot;tail&amp;quot;:&amp;quot;foo&amp;quot;}\">linkfoo&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13053,7 +13323,7 @@ BUG 648: Frameless image caption with an interwiki link
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a MeatBall:Link in it"><img alt="text with a MeatBall:Link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a [[MeatBall:Link]] in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:ExtLink\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;http://www.usemod.com/cgi-bin/mb.pl?Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;MeatBall:Link&amp;quot;},&amp;quot;isIW&amp;quot;:true,&amp;quot;dsr&amp;quot;:[30,47,2,2]}\">MeatBall:Link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13064,7 +13334,15 @@ BUG 648: Frameless image caption with a piped interwiki link
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="text with a link in it"><img alt="text with a link in it" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a [[MeatBall:Link|link]] in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"text with a &lt;a rel=\"mw:ExtLink\" href=\"http://www.usemod.com/cgi-bin/mb.pl?Link\" title=\"meatball:Link\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;piped&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;http://www.usemod.com/cgi-bin/mb.pl?Link&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;MeatBall:Link&amp;quot;},&amp;quot;isIW&amp;quot;:true,&amp;quot;dsr&amp;quot;:[30,52,16,2]}\">link&lt;/a> in it"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+!! end
+
+!! test
+T107474: Frameless image caption with <nowiki>
+!! wikitext
+[[File:Foobar.jpg|<nowiki>text with a [[MeatBall:Link|link]] in it</nowiki>]]
+!! html/parsoid
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:Nowiki\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[18,75,8,9]}\">text with a [[MeatBall:Link|link]] in it&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13075,7 +13353,7 @@ Escape HTML special chars in image alt text
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="&amp; &lt; &gt; &quot;"><img alt="&amp; &lt; &gt; &quot;" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&amp; &lt; > \""}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&amp;amp; &amp;lt; &amp;gt; \""}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13086,7 +13364,7 @@ BUG 499: Alt text should have &#1234;, not &amp;1234;
 <p><a href="/wiki/File:Foobar.jpg" class="image" title="♀"><img alt="♀" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
 </p>
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&amp;#9792;"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;span typeof=\"mw:Entity\" data-parsoid=\"{&amp;quot;src&amp;quot;:&amp;quot;&amp;amp;#9792;&amp;quot;,&amp;quot;srcContent&amp;quot;:&amp;quot;♀&amp;quot;,&amp;quot;dsr&amp;quot;:[18,25,null,null]}\">♀&lt;/span>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13413,7 +13691,7 @@ Parsoid-specific image handling - simple image with a formatted caption
 !! wikitext
 [[File:Foobar.jpg|<table><tr><td>a</td><td>b</td></tr><tr><td>c</td></tr></table>]]
 !! html/parsoid
-<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;table>&lt;tr>&lt;td>a&lt;/td>&lt;td>b&lt;/td>&lt;/tr>&lt;tr>&lt;td>c&lt;/td>&lt;/tr>&lt;/table>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
+<p><span class="mw-default-size" typeof="mw:Image" data-mw='{"caption":"&lt;table data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[18,81,7,8]}\">&lt;tbody data-parsoid=\"{&amp;quot;dsr&amp;quot;:[25,73,0,0]}\">&lt;tr data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[25,54,4,5]}\">&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[29,39,4,5]}\">a&lt;/td>&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[39,49,4,5]}\">b&lt;/td>&lt;/tr>&lt;tr data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[54,73,4,5]}\">&lt;td data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;html&amp;quot;,&amp;quot;dsr&amp;quot;:[58,68,4,5]}\">c&lt;/td>&lt;/tr>&lt;/tbody>&lt;/table>"}'><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="220" width="1941"/></a></span></p>
 !! end
 
 !! test
@@ -13487,6 +13765,18 @@ bar
 bar</p>
 !! end
 
+## Edge case bug in Parsoid
+!! test
+T93580: Templated <ref> inside images
+!! wikitext
+[[File:Foobar.jpg|thumb|Caption with templated ref: {{echo|<ref>foo</ref>}}]]
+
+<references />
+!! html/parsoid
+<figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"caption","ak":"Caption with templated ref: {{echo|&lt;ref>foo&lt;/ref>}}"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"},"sa":{}}'><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"resource":"File:Foobar.jpg"}}'/></a><figcaption>Caption with templated ref: <span about="#mwt5" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Transclusion  mw:Extension/ref" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;ref>foo&lt;/ref>"}},"i":0}}]}'><a href="#cite_note-1" style="counter-reset: mw-Ref 1;"><span class="mw-reflink-text">[1]</span></a></span></figcaption></figure>
+
+<ol class="mw-references" typeof="mw:Extension/references" about="#mwt6" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><a href="#cite_ref-1" rel="mw:referencedBy"><span class="mw-linkback-text">↑ </span></a> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">foo</span></li></ol>
+!! end
 
 ###
 ### Subpages
@@ -13866,7 +14156,7 @@ parsoid=wt2html
 !! html/parsoid
 <ul>
 <li>This <link rel="mw:PageProp/Category" href="./Category:Foo"/> and this should be part of the same list item</li>
-<li>So should this <link rel="mw:PageProp/Category" href="Category:Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and this should be part of the same list item"}},"i":0}}]}'/><span> and this should be part of the same list item</span></li>
+<li>So should this <link rel="mw:PageProp/Category" href="./Category:Foo" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[Category:Foo]] and this should be part of the same list item"}},"i":0}}]}'/><span> and this should be part of the same list item</span></li>
 </ul>
 !! end
 
@@ -13975,8 +14265,8 @@ parsoid
 [[:Category:Foo|Bar]]
 !! html
 <p>
-<a rel="mw:WikiLink" href="Category:Foo" title="Category:Foo">Category:Foo</a>
-<a rel="mw:WikiLink" href="Category:Foo" title="Category:Foo">Bar</a>
+<a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Category:Foo</a>
+<a rel="mw:WikiLink" href="./Category:Foo" title="Category:Foo">Bar</a>
 </p>
 !! end
 
@@ -14020,15 +14310,15 @@ parsoid
 [[Category:Foo]]
 [[Category:Foo|Bar]]
 !! html
-<link rel="mw:PageProp/Category" href="Category:Foo">
-<link rel="mw:PageProp/Category" href="Category:Foo#Bar">
+<link rel="mw:PageProp/Category" href="./Category:Foo">
+<link rel="mw:PageProp/Category" href="./Category:Foo#Bar">
 !! end
 
 !! test
 Normalize hrefs properly before testing for invalid link targets (bug 70894)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne"/>
 !! wikitext
 [[Category:Toxine bactérienne]]
@@ -14928,11 +15218,8 @@ I always thought &xacute; was a cute letter.
 </p>
 !! end
 
-# TODO: generalize to PHP parser?
 !! test
 HTML5 tags
-!! options
-parsoid
 !! wikitext
 <data value="5">five</data>
 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
@@ -14940,7 +15227,8 @@ parsoid
 !! html
 <p><data value="5">five</data>
 <time datetime="2000-01-01T00:00Z">The new millenium started</time>
-<mark>This highlighted text</mark></p>
+<mark>This highlighted text</mark>
+</p>
 !! end
 
 !! test
@@ -15180,13 +15468,19 @@ Attribute test: unquoted but illegal value (hash)
 </p>
 !! end
 
+# Parsoid does not serialize to empty attribute syntax,
+# so wt2wt and html2wt cases are skipped
 !! test
-Attribute test: no value
+Attribute test: no value (T54330)
+!! options
+parsoid=wt2html,html2html
 !! wikitext
 <font color>foo</font>
-!! html
-<p><font color="color">foo</font>
+!! html/php
+<p><font color="">foo</font>
 </p>
+!! html/parsoid
+<p><font color="">foo</font></p>
 !! end
 
 !! test
@@ -15558,7 +15852,7 @@ CSS line continuation 2
 !! wikitext
 <div style="background-image: u\&#13;rl(test.jpg); "></div>
 !! html
-<div style="/* insecure input */"></div>
+<div style="/* invalid control char */"></div>
 
 !! end
 
@@ -15615,7 +15909,7 @@ evil <math>-wiki-tags without Extension:Math enabled
 Parser hook: empty input
 !! wikitext
 <tag></tag>
-!! html
+!! html/php
 <pre>
 ''
 array (
@@ -15628,7 +15922,7 @@ array (
 Parser hook: empty input using terminated empty elements
 !! wikitext
 <tag/>
-!! html
+!! html/php
 <pre>
 NULL
 array (
@@ -15641,7 +15935,7 @@ array (
 Parser hook: empty input using terminated empty elements (space before)
 !! wikitext
 <tag />
-!! html
+!! html/php
 <pre>
 NULL
 array (
@@ -15654,7 +15948,7 @@ array (
 Parser hook: basic input
 !! wikitext
 <tag>input</tag>
-!! html
+!! html/php
 <pre>
 'input'
 array (
@@ -15668,7 +15962,7 @@ array (
 Parser hook: case insensitive
 !! wikitext
 <TAG>input</TAG>
-!! html
+!! html/php
 <pre>
 'input'
 array (
@@ -15682,7 +15976,7 @@ array (
 Parser hook: case insensitive, redux
 !! wikitext
 <TaG>input</TAg>
-!! html
+!! html/php
 <pre>
 'input'
 array (
@@ -15697,7 +15991,7 @@ Parser hook: nested tags
 noxml
 !! wikitext
 <tag><tag></tag></tag>
-!! html
+!! html/php
 <pre>
 '<tag>'
 array (
@@ -15710,14 +16004,14 @@ array (
 Parser hook: basic arguments
 !! wikitext
 <tag width=200 height = "100" depth = '50' square></tag>
-!! html
+!! html/php
 <pre>
 ''
 array (
   'width' => '200',
   'height' => '100',
   'depth' => '50',
-  'square' => 'square',
+  'square' => '',
 )
 </pre>
 
@@ -15727,7 +16021,7 @@ array (
 Parser hook: argument containing a forward slash (bug 5344)
 !! wikitext
 <tag filename='/tmp/bla'></tag>
-!! html
+!! html/php
 <pre>
 ''
 array (
@@ -15741,7 +16035,7 @@ array (
 Parser hook: empty input using terminated empty elements (bug 2374)
 !! wikitext
 <tag foo=bar/>text
-!! html
+!! html/php
 <pre>
 NULL
 array (
@@ -15758,14 +16052,14 @@ Parser hook: basic arguments using terminated empty elements (bug 2374)
 <tag width=200 height = "100" depth = '50' square/>
 other stuff
 </tag>
-!! html
+!! html/php
 <pre>
 NULL
 array (
   'width' => '200',
   'height' => '100',
   'depth' => '50',
-  'square' => 'square',
+  'square' => '',
 )
 </pre>
 <p>other stuff
@@ -15782,7 +16076,7 @@ Parser hook: static parser hook not inside a comment
 !! wikitext
 <statictag>hello, world</statictag>
 <statictag action=flush/>
-!! html
+!! html/php
 <p>hello, world
 </p>
 !! end
@@ -15793,7 +16087,7 @@ Parser hook: static parser hook inside a comment
 !! wikitext
 <!-- <statictag>hello, world</statictag> -->
 <statictag action=flush/>
-!! html
+!! html/php
 <p><br />
 </p>
 !! end
@@ -15852,20 +16146,24 @@ Sanitizer: Closing of open but not closed tags
 
 !! test
 Sanitizer: Closing of closed but not open tags
+!! options
+parsoid=wt2html
 !! wikitext
 </s>
-!! html
-<p>&lt;/s&gt;
-</p>
+!! html/php+tidy
+!! html/parsoid
 !! end
 
 !! test
 Sanitizer: Closing of closed but not open table tags
+!! options
+parsoid=wt2html
 !! wikitext
 Table not started</td></tr></table>
-!! html
-<p>Table not started&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
-</p>
+!! html/php+tidy
+<p>Table not started</p>
+!! html/parsoid
+<p>Table not started</p>
 !! end
 
 !! test
@@ -15912,7 +16210,7 @@ Sanitizer: Validating that <meta> and <link> work, but only for Microdata
        <link rel="stylesheet" itemprop="hello" href="{{SERVER}}">
 </div>
 !! html
-<div itemscope="itemscope">
+<div itemscope="">
 <p>    <meta itemprop="hello" content="world" />
        &lt;meta http-equiv="refresh" content="5"&gt;
        <meta itemprop="hello" content="5" />
@@ -16664,7 +16962,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 !! end
 
@@ -16684,7 +16982,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ==a==
 ===aa===
 ====aaa====
@@ -16706,7 +17004,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ===aa===
 ====aaa====
 !! end
@@ -16727,7 +17025,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ====aaa====
 !! end
 
@@ -16747,7 +17045,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ==b==
 ===ba===
 ===bb===
@@ -16771,7 +17069,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ===ba===
 !! end
 
@@ -16791,7 +17089,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ===bb===
 ====bba====
 !! end
@@ -16812,7 +17110,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ====bba====
 !! end
 
@@ -16832,7 +17130,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ===bc===
 !! end
 
@@ -16852,7 +17150,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ==c==
 ===ca===
 !! end
@@ -16873,7 +17171,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 ===ca===
 !! end
 
@@ -16893,7 +17191,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 !! end
 
 !! test
@@ -16904,7 +17202,7 @@ section=1
 ==a==
 ==bogus== not a legal section
 ==b==
-!! html
+!! html/php
 ==a==
 ==bogus== not a legal section
 !! end
@@ -16917,7 +17215,7 @@ section=2
 ==a==
 ==bogus== not a legal section
 ==b==
-!! html
+!! html/php
 ==b==
 !! end
 
@@ -16929,7 +17227,7 @@ section=1
 ==a==
 ==b== <!-- -->
 ==c==
-!! html
+!! html/php
 ==a==
 !! end
 
@@ -16941,7 +17239,7 @@ section=2
 ==a==
 ==b== <!-- -->
 ==c==
-!! html
+!! html/php
 ==b== <!-- -->
 !! end
 
@@ -16953,7 +17251,7 @@ section=1
 ==a==
 ==bogus== <nowiki>not a legal section</nowiki>
 ==b==
-!! html
+!! html/php
 ==a==
 ==bogus== <nowiki>not a legal section</nowiki>
 !! end
@@ -16966,11 +17264,10 @@ section=2
 ==a==
 ==bogus== <nowiki>not a legal section</nowiki>
 ==b==
-!! html
+!! html/php
 ==b==
 !! end
 
-
 # Formerly testing for bug 2587, now resolved by the use of unmarked sections
 # instead of respecting commented sections
 !! test
@@ -16980,7 +17277,7 @@ section=1
 !! wikitext
 <!-- -->==sec1==
 ==sec2==
-!! html
+!! html/php
 ==sec2==
 !!end
 
@@ -16991,11 +17288,10 @@ section=2
 !! wikitext
 <!-- -->==sec1==
 ==sec2==
-!! html
+!! html/php
 
 !!end
 
-
 # Formerly testing for bug 2607, now resolved by the use of unmarked sections
 # instead of respecting HTML-style headings
 !! test
@@ -17009,7 +17305,7 @@ unmarked
 one
 ==2==
 two
-!! html
+!! html/php
 ==1==
 one
 !! end
@@ -17025,7 +17321,7 @@ unmarked
 one
 ==2==
 two
-!! html
+!! html/php
 ==2==
 two
 !! end
@@ -17039,7 +17335,7 @@ section=1
 !! wikitext
 <noinclude>==unmarked==</noinclude>
 ==marked==
-!! html
+!! html/php
 ==marked==
 !!end
 
@@ -17054,7 +17350,7 @@ The line above must have a trailing space
 === <!--
 --> <!-- -->
 But just in case it doesn't...
-!! html
+!! html/php
 === <!--
 --> <!-- -->
 But just in case it doesn't...
@@ -17076,7 +17372,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 xxx
 
 ==a==
@@ -17107,7 +17403,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 xxx
 
@@ -17136,7 +17432,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 xxx
@@ -17166,7 +17462,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17197,7 +17493,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17224,7 +17520,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17255,7 +17551,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17285,7 +17581,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17316,7 +17612,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17347,7 +17643,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17376,7 +17672,7 @@ start
 ===bc===
 ==c==
 ===ca===
-!! html
+!! html/php
 start
 ==a==
 ===aa===
@@ -17398,7 +17694,7 @@ replace=2,"xxx"
  Preformatted initial line
 ==a==
 ===a===
-!! html
+!! html/php
  Preformatted initial line
 ==a==
 xxx
@@ -17412,7 +17708,7 @@ section=1
 !! wikitext
 ==a==
                     a
-!! html
+!! html/php
 ==a==
                     a
 !! end
@@ -17424,7 +17720,7 @@ section=1
 !! wikitext
 ==a==
                    a
-!! html
+!! html/php
 ==a==
                    a
 !! end
@@ -17442,7 +17738,7 @@ noxml section=2
 
 == Section Two ==
 stuff
-!! html
+!! html/php
 == Section Two ==
 stuff
 !! end
@@ -17459,7 +17755,7 @@ noxml replace=2,"xxx"
 
 == Section Two ==
 stuff
-!! html
+!! html/php
 == Section One ==
 <pre>
 =======
@@ -17469,7 +17765,6 @@ xxx
 !! end
 
 
-
 !! test
 Handling of &#x0A; in URLs
 !! wikitext
@@ -17890,6 +18185,38 @@ parsoid=wt2html,wt2wt,html2html
 <p><span typeof="mw:Entity">î</span><span typeof="mw:Entity">î</span></p>
 !! end
 
+# See: http://www.w3.org/TR/html5/syntax.html#character-references
+# Note that U+000C (form feed) is not a valid XML character, so
+# it is banned even though allowed in HTML5.
+!! test
+Illegal character references (T106578)
+!! wikitext
+; Null: &#00;
+; FF: &#xC;
+; CR: &#xD;
+; Control (low): &#8;
+; Control (high): &#x7F; &#x9F;
+; Surrogate: &#xD83D;&#xDCA9;
+; This is an okay astral character: &#x1F4A9;
+!! html+tidy
+<dl>
+<dt>Null</dt>
+<dd>&amp;#00;</dd>
+<dt>FF</dt>
+<dd>&amp;#xC;</dd>
+<dt>CR</dt>
+<dd>&amp;#xD;</dd>
+<dt>Control (low)</dt>
+<dd>&amp;#8;</dd>
+<dt>Control (high)</dt>
+<dd>&amp;#x7F; &amp;#x9F;</dd>
+<dt>Surrogate</dt>
+<dd>&amp;#xD83D;&amp;#xDCA9;</dd>
+<dt>This is an okay astral character</dt>
+<dd>💩</dd>
+</dl>
+!! end
+
 !! test
 __FORCETOC__ override
 !! wikitext
@@ -17933,21 +18260,31 @@ ISBN ISBN 1234567890
 <p>ISBN <a href="./Special:BookSources/1234567890" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 1234567890</a></p>
 !! end
 
+# Uppercase X and lowercase x as well
 !! test
 ISBN with an X
 !! wikitext
 ISBN 3-462-04561-X
+ISBN 3-462-04561-x
 ISBN 080442957X
+ISBN 080442957x
 ISBN 978080442957X
+ISBN 978080442957x
 !! html/php
 <p><a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-X</a>
+<a href="/wiki/Special:BookSources/346204561X" class="internal mw-magiclink-isbn">ISBN 3-462-04561-x</a>
 <a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957X</a>
+<a href="/wiki/Special:BookSources/080442957X" class="internal mw-magiclink-isbn">ISBN 080442957x</a>
 <a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957X</a>
+<a href="/wiki/Special:BookSources/978080442957X" class="internal mw-magiclink-isbn">ISBN 978080442957x</a>
 </p>
 !! html/parsoid
 <p><a href="./Special:BookSources/346204561X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-X</a>
+<a href="./Special:BookSources/346204561X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 3-462-04561-x</a>
 <a href="./Special:BookSources/080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957X</a>
-<a href="./Special:BookSources/978080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a></p>
+<a href="./Special:BookSources/080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 080442957x</a>
+<a href="./Special:BookSources/978080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957X</a>
+<a href="./Special:BookSources/978080442957X" rel="mw:ExtLink" data-parsoid='{"stx":"magiclink"}'>ISBN 978080442957x</a></p>
 !! end
 
 !! test
@@ -17958,7 +18295,7 @@ ISBN 1234567890
 <p><a href="/wiki/Special:BookSources/1234567890" class="internal mw-magiclink-isbn">ISBN 1234567890</a>
 </p>
 !! html/parsoid
-<p><a href="Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567890</a></p>
+<p><a href="./Special:BookSources/1234567890" rel="mw:ExtLink">ISBN 1234567890</a></p>
 !! end
 
 !! test
@@ -18256,7 +18593,7 @@ Don't fall for the self-closing div
 MSGNW magic word
 !! wikitext
 {{MSGNW:msg}}
-!! html
+!! html/php
 <p>&#91;&#91;:Template:Msg&#93;&#93;
 </p>
 !! end
@@ -19689,7 +20026,7 @@ wgAllowDisplayTitle=true
 wgRestrictDisplayTitle=false
 !! wikitext
 this is not the the title
-!! html
+!! html/php
 Parser test
 <p>this is not the the title
 </p>
@@ -19706,7 +20043,7 @@ wgRestrictDisplayTitle=false
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:whatever}}
-!! html
+!! html/php
 whatever
 <p>this is not the the title
 </p>
@@ -19723,7 +20060,7 @@ wgRestrictDisplayTitle=true
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:whatever}}
-!! html
+!! html/php
 Screen
 <p>this is not the the title
 </p>
@@ -19740,7 +20077,7 @@ wgRestrictDisplayTitle=true
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:screen}}
-!! html
+!! html/php
 screen
 <p>this is not the the title
 </p>
@@ -19756,7 +20093,7 @@ wgAllowDisplayTitle=false
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:screen}}
-!! html
+!! html/php
 Screen
 <p>this is not the the title
 <a href="/index.php?title=Template:DISPLAYTITLE:screen&amp;action=edit&amp;redlink=1" class="new" title="Template:DISPLAYTITLE:screen (page does not exist)">Template:DISPLAYTITLE:screen</a>
@@ -19772,7 +20109,7 @@ title=[[Screen]]
 wgAllowDisplayTitle=false
 !! wikitext
 this is not the the title
-!! html
+!! html/php
 Screen
 <p>this is not the the title
 </p>
@@ -19789,7 +20126,7 @@ wgRestrictDisplayTitle=true
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:<span style="display: none;">s</span>creen}}
-!! html
+!! html/php
 <span style="/* attempt to bypass $wgRestrictDisplayTitle */">s</span>creen
 <p>this is not the the title
 </p>
@@ -19806,7 +20143,7 @@ wgRestrictDisplayTitle=true
 !! wikitext
 this is not the the title
 {{DISPLAYTITLE:<span style="color: red;">s</span>creen}}
-!! html
+!! html/php
 <span style="color: red;">s</span>creen
 <p>this is not the the title
 </p>
@@ -19831,7 +20168,7 @@ Page status indicators: Weird syntaxes that are okay
 showindicators
 !! wikitext
 <indicator name="empty" />
-<indicator name></indicator>
+<indicator name="name"></indicator>
 !! html
 empty=
 name=
@@ -19894,7 +20231,7 @@ preload: check <noinclude> and <includeonly>
 preload
 !! wikitext
 Hello <noinclude>cruel</noinclude><includeonly>kind</includeonly> world.
-!! html
+!! html/php
 Hello kind world.
 !! end
 
@@ -19904,7 +20241,7 @@ preload: check <onlyinclude>
 preload
 !! wikitext
 Goodbye <onlyinclude>Hello world</onlyinclude>
-!! html
+!! html/php
 Hello world
 !! end
 
@@ -19914,7 +20251,7 @@ preload: can pass tags through if we want to
 preload
 !! wikitext
 <includeonly><</includeonly>includeonly>Hello world<includeonly><</includeonly>/includeonly>
-!! html
+!! html/php
 <includeonly>Hello world</includeonly>
 !! end
 
@@ -19924,7 +20261,7 @@ preload: check that it doesn't try to do tricks
 preload
 !! wikitext
 * <!-- Hello --> ''{{world}}'' {{<includeonly>subst:</includeonly>How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
-!! html
+!! html/php
 * <!-- Hello --> ''{{world}}'' {{subst:How are you}}{{ {{{|safesubst:}}} #if:1|2|3}}
 !! end
 
@@ -19977,7 +20314,7 @@ percent-encoding and + signs in internal links (Bug 26410)
 !! html/parsoid
 <p><a rel="mw:WikiLink" href="./User:+%25" title="User:+%">User:+%</a> <a rel="mw:WikiLink" href="Page+title%25" title="Page+title%">Page+title%</a>
 <a rel="mw:WikiLink" href="%25+" title="%+">%+</a> <a rel="mw:WikiLink" href="%25+" title="%+">%20</a> <a rel="mw:WikiLink" href="%25+" title="%+">%+ </a> <a rel="mw:WikiLink" href="%25+r" title="%+r">%+r</a>
-<a rel="mw:WikiLink" href="%25" title="%">%</a> <a rel="mw:WikiLink" href="+" title="+">+</a> <span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"[[bar]]"}'><a href="./File:%25+abc9" data-parsoid='{"a":{"href":"./File:%25+abc9"},"sa":{}}'><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></span>
+<a rel="mw:WikiLink" href="%25" title="%">%</a> <a rel="mw:WikiLink" href="+" title="+">+</a> <span class="mw-default-size" typeof="mw:Error mw:Image" data-parsoid='{"optList":[{"ck":"bogus","ak":"foo"},{"ck":"caption","ak":"[[bar]]"}]}' data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"&lt;a rel=\"mw:WikiLink\" href=\"./Bar\" title=\"Bar\" data-parsoid=\"{&amp;quot;stx&amp;quot;:&amp;quot;simple&amp;quot;,&amp;quot;a&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;./Bar&amp;quot;},&amp;quot;sa&amp;quot;:{&amp;quot;href&amp;quot;:&amp;quot;bar&amp;quot;},&amp;quot;dsr&amp;quot;:[94,101,2,2]}\">bar&lt;/a>"}'><a href="./File:%25+abc9"><img resource="./File:%25+abc9" src="./Special:FilePath/%25+abc9" height="220" width="220" data-parsoid='{"a":{"resource":"./File:%25+abc9","height":"220","width":"220"},"sa":{"resource":"File:%+abc%39"}}'/></a></span>
 <a rel="mw:WikiLink" href="./3E" title="3E" data-parsoid='{"stx":"simple","a":{"href":"./3E"},"sa":{"href":"%33%45"}}'>3E</a> <a rel="mw:WikiLink" href="./3E+" title="3E+" data-parsoid='{"stx":"simple","a":{"href":"./3E+"},"sa":{"href":"%33%45+"}}'>3E+</a></p>
 !! end
 
@@ -19992,7 +20329,7 @@ Special characters in embedded file links (bug 27679)
 </p>
 !! html/parsoid
 <p><span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}]}'><a href="./File:Contains_&amp;_ampersand.jpg"><img resource="./File:Contains_&amp;_ampersand.jpg" src="./Special:FilePath/Contains_&amp;_ampersand.jpg" height="220" width="220"/></a></span>
-<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"Title with &amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></span></p>
+<span class="mw-default-size" typeof="mw:Error mw:Image" data-mw='{"errors":[{"key":"missing-image","message":"This image does not exist."}],"caption":"Title with &amp;amp; ampersand"}'><a href="./File:Does_not_exist.jpg"><img resource="./File:Does_not_exist.jpg" src="./Special:FilePath/Does_not_exist.jpg" height="220" width="220"/></a></span></p>
 !! end
 
 !! test
@@ -20756,6 +21093,30 @@ parsoid=wt2html,wt2wt
 <small><figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure></small>
 !! end
 
+!! test
+3. Bad treebuilder fixup of formatting elt is cleaned up
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+<small>'''foo[[File:Foobar.jpg|thumb|caption]]bar'''</small>
+!! html/parsoid
+<p><small><b>foo</b></small></p>
+<figure class="mw-default-size" typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220"/></a><figcaption><small><b>caption</b></small></figcaption></figure>
+<p><small><b>bar</b></small></p>
+!! end
+
+!! test
+4. Bad treebuilder fixup of formatting elt is cleaned up: formatting tags around captionless images are ignored
+!! options
+parsoid=wt2html,wt2wt
+!! wikitext
+'''<small>[[Image:Foobar.jpg|right|300px]]</small>'''
+!! html/parsoid
+<p><b><small></small></b></p>
+<figure class="mw-halign-right" typeof="mw:Image"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/300px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="34" width="300"/></a></figure>
+<p></p>
+!! end
+
 #### ----------------------------------------------------------------
 #### Parsoid-only testing of Parsoid's impl of <ref> and <references>
 #### tags. Parsoid's output for these tags differs from that of the
@@ -21479,7 +21840,7 @@ parsoid
 Headings: 1. Nested inside html
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h1>=foo=</h1>
 <h2>=foo=</h2>
 <h3>=foo=</h3>
@@ -21510,7 +21871,7 @@ parsoid=html2wt
 Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h1>foo</h1>*bar
 <h1>foo</h1>=bar
 <h1>foo</h1>=bar=
@@ -21568,7 +21929,7 @@ Headings: 4a. No escaping needed (testing just h1 and h2)
 Headings: 4b. No escaping needed (inside p-tags)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>===
 =foo= x
 =foo= <s></s>
@@ -21609,8 +21970,6 @@ Headings: 5. Empty headings
 
 !! test
 Headings: 6a. Heading chars in SOL context (with trailing spaces)
-!! options
-parsoid
 !! wikitext
 <nowiki>=a=</nowiki>
 
@@ -21619,17 +21978,24 @@ parsoid
 <nowiki>=a=</nowiki>   
 
 <nowiki>=a=</nowiki>   
-!! html
-<p>=a=</p>
-<p>=a= </p>
-<p>=a= </p>
-<p>=a=         </p>
+!! html/php
+<p>=a=
+</p><p>=a= 
+</p><p>=a=     
+</p><p>=a=     
+</p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">=a=</span></p>
+
+<p><span typeof="mw:Nowiki">=a=</span></p> 
+
+<p><span typeof="mw:Nowiki">=a=</span></p>     
+
+<p><span typeof="mw:Nowiki">=a=</span></p>     
 !!end
 
 !! test
 Headings: 6b. Heading chars in SOL context (with trailing newlines)
-!! options
-parsoid
 !! wikitext
 <nowiki>=a=
 b</nowiki>
@@ -21642,48 +22008,65 @@ b</nowiki>
 
 <nowiki>=a=     
 b</nowiki>
-!! html
+!! html/php
 <p>=a=
-b</p>
-<p>=a= 
-b</p>
-<p>=a= 
-b</p>
-<p>=a=  
-b</p>
+b
+</p><p>=a= 
+b
+</p><p>=a=     
+b
+</p><p>=a=      
+b
 </p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">=a=
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a= 
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a=        
+b</span></p>
+
+<p><span typeof="mw:Nowiki">=a=         
+b</span></p>
 !!end
 
 !! test
 Headings: 6c. Heading chars in SOL context (leading newline break)
-!! options
-parsoid
 !! wikitext
 a
 <nowiki>=b=</nowiki>
-!! html
+!! html/php
 <p>a
-=b=</p>
+=b=
+</p>
+!! html/parsoid
+<p>a
+<span typeof="mw:Nowiki">=b=</span>
 !!end
 
 !! test
 Headings: 6d. Heading chars in SOL context (with interspersed comments)
-!! options
-parsoid
 !! wikitext
 <!--c0--><nowiki>=a=</nowiki>
 
 <!--c1--><nowiki>=a=</nowiki> <!--c2-->         <!--c3-->
-!! html
-<p><!--c0-->=a=</p>
-<p><!--c1-->=a= <!--c2-->       <!--c3--></p>
+!! html/php
+<p>=a=
+</p><p>=a=      
+</p>
+!! html/parsoid
+<!--c0--><p><span typeof="mw:Nowiki">=a=</span></p>
+
+<!--c1--><p><span typeof="mw:Nowiki">=a=</span></p> <!--c2-->   <!--c3-->
 !!end
 
 !! test
 Headings: 6d. Heading chars in SOL context (No escaping needed)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 =a=<div>b</div>
 !! wikitext
 =a=<div>b</div>
@@ -21693,11 +22076,11 @@ parsoid=html2wt
 Headings: 7. Insert a newline between new content and headings
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h2>NEW</h2>
 <p>new</p>
-<h2 data-parsoid='{"dsr":[0,5,2,2]}'>A</h2>
-<p data-parsoid='{"dsr":[6,7,0,0]}'>a</p>
+<h2 data-parsoid='{}'>A</h2>
+<p data-parsoid='{}'>a</p>
 !! wikitext
 == NEW ==
 new
@@ -21726,11 +22109,17 @@ Lists: 0. Outside nests
 <nowiki>#</nowiki>foo
 
 <nowiki>;Foo:</nowiki>bar
-!! html
+!! html/php
 <p>*foo
 </p><p>#foo
 </p><p>;Foo:bar
 </p>
+!! html/parsoid
+<p><span typeof="mw:Nowiki">*</span>foo</p>
+
+<p><span typeof="mw:Nowiki">#</span>foo</p>
+
+<p><span typeof="mw:Nowiki">;Foo:</span>bar</p>
 !!end
 
 !! test
@@ -21857,7 +22246,7 @@ Lists: 5. No unnecessary escapes
 Lists: 6. Escape bullets in SOL position
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><!--cmt-->*foo</p>
 !! wikitext
 <!--cmt--><nowiki>*</nowiki>foo
 Lists: 8. Escape colons only if not present in tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <dl><dt>a:b<i>c:d</i></dt></dl>
 !! wikitext
 ; <nowiki>a:b</nowiki>''c:d''
@@ -22254,7 +22643,7 @@ parsoid=wt2html
 T97430: Don't emit empty nowiki pairs around marker meta tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>*This is a long sentence here that will make the nowiki algo split up the nowikis into multiple pairs
 |** Make this another long long long sentence forcing the nowiki algo to split up the nowikis.</p>
 !! wikitext
@@ -22570,7 +22959,7 @@ parsoid=html2wt
 <p>this is not a link: http://example.com
 </p>
 !! wikitext
-this is not a link: <nowiki>http://example.com</nowiki>
+<nowiki>this is not a link: http://example.com</nowiki>
 !! end
 
 !! test
@@ -22820,7 +23209,7 @@ parsoid
 5. Nowiki escaping should account for indent-pres
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <pre>==foo==</pre>
 !! wikitext
  ==foo==
@@ -22846,7 +23235,7 @@ parsoid
 1. Valid behavior switches should be escaped
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 __TOC__
 <i>__TOC__</i>
 !! wikitext
@@ -22858,7 +23247,7 @@ __TOC__
 2. Invalid behavior switches should not be escaped
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 __TOO__
 __|__
 !! wikitext
@@ -23401,9 +23790,9 @@ Improperly nested inline or quotes tags with whitespace in between
 !!test
 Encapsulate protected attributes from wt
 !! wikitext
-<div typeof="mw:placeholder stuff" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true">foo</div>
+<div typeof="mw:placeholder stuff" data-mw="whoo" data-parsoid="weird" data-parsoid-other="no" about="time" rel="mw:true">foo</div>
 !! html/parsoid
-<body><div data-x-typeof="mw:placeholder stuff" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">foo</div>
+<body><div data-x-typeof="mw:placeholder stuff" data-x-data-mw="whoo" data-x-data-parsoid="weird" data-x-data-parsoid-other="no" data-x-about="time" data-x-rel="mw:true">foo</div>
 </body>
 !!end
 
@@ -23693,7 +24082,7 @@ Don't block XML namespace declaration
 Serialize interwiki links pointing to the current wiki as plain wiki links (bug 65869)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><a rel="mw:ExtLink" href="http://mi.wikipedia.org/wiki/Foo">Foo</a></p>
 !! wikitext
 [[Foo]]
@@ -23704,7 +24093,7 @@ parsoid=html2wt
 New wikilinks should be serialized properly
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{}'>Foo</a>
 <a rel="mw:WikiLink" href="./Foo" title="Foo">Foo</a>
 !! wikitext
@@ -23716,7 +24105,7 @@ parsoid=html2wt
 New wiki links (href variations)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
 <a rel="mw:WikiLink" href="Foo_bar">Foo_bar</a>
 <a rel="mw:WikiLink" href="Foo bar">Foo_bar</a>
@@ -23732,7 +24121,7 @@ parsoid=html2wt
 New wiki links (content string variations)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Foo_bar">Foo_bar</a>
 <a rel="mw:WikiLink" href="./Foo_bar">Foo bar</a>
 <a rel="mw:WikiLink" href="./Foo_bar">./Foo_bar</a>
@@ -23746,7 +24135,7 @@ parsoid=html2wt
 New category links (href variations)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <link rel="mw:PageProp/Category" href="./Category:Toxine_bactérienne" />
 <link rel="mw:PageProp/Category" href="./Category:Toxine_bact%C3%A9rienne" />
 <link rel="mw:PageProp/Category" href="Category:Toxine_bact%C3%A9rienne" />
@@ -23761,7 +24150,7 @@ New sol transparent links don't need indent-pre nowiki protection
 !! options
 parsoid=html2wt
 language=de
-!! html
+!! html/parsoid
          <link rel="mw:PageProp/redirect" href="./Main_Page">
 <!-- this is good  -->    <link rel="mw:PageProp/Category" href="./Category:Good" />
 <!-- this is great -->    <link rel="mw:PageProp/Category" href="./Kategorie:Great" />
@@ -23775,7 +24164,7 @@ language=de
 New interlanguage links (href variations)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine bactérienne" />
 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bactérienne" />
 <link rel="mw:PageProp/Language" href="http://es.wikipedia.org/wiki/Toxine_bact%C3%A9rienne" />
@@ -23922,16 +24311,17 @@ parsoid
 <figure class="mw-default-size" typeof="mw:Image/Thumb" data-parsoid='{"optList":[{"ck":"thumbnail","ak":"thumb"},{"ck":"alt","ak":"alt="},{"ck":"caption","ak":"bar"}]}'><a href="./File:Foobar.jpg" data-parsoid='{"a":{"href":"./File:Foobar.jpg"}}'><img alt="" resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/220px-Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="25" width="220" data-parsoid='{"a":{"alt":"","resource":"./File:Foobar.jpg","height":"25","width":"220"},"sa":{"alt":"alt=","resource":"File:Foobar.jpg"}}'/></a><figcaption>bar</figcaption></figure>
 !! end
 
-#!! test
-#Image: new attributes should be serialized in wiki's language for RTL languages (bug 51852)
-#!! options
-#parsoid=html2wt
-#language=ar
-#!! html
-#<figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="Imagen:Foobar.jpg"><img resource="./Imagen:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180"/></a></figure>
-#!! wikitext
-#[[Imagen:Foobar.jpg|derecha|miniaturadeimagen]]
-#!! end
+!! test
+Image: new attributes should be serialized in wiki's language for RTL languages (bug 51852)
+!! options
+parsoid=html2wt
+language=ar
+disabled
+!! html/parsoid
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image/Thumb"><a href="./Imagen:Foobar.jpg"><img resource="./Imagen:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" data-file-width="1941" data-file-height="220" data-file-type="bitmap" height="20" width="180"/></a></figure>
+!! wikitext
+[[Imagen:Foobar.jpg|derecha|miniaturadeimagen]]
+!! end
 
 !! test
 Image: Block level image should have \n before and after
@@ -24023,7 +24413,7 @@ parsoid=html2wt
 Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul>
 <li><p>foo</p></li>
 </ul>
@@ -24035,7 +24425,7 @@ parsoid=html2wt
 Lists: Serialize correctly even when list tags has unneeded whitespace between tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul> <li>foo</li></ul>
 !! wikitext
 * foo
@@ -24045,7 +24435,7 @@ parsoid=html2wt
 Don't strip leading whitespace when handling indent-pre suppressing tags
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table>
   <tr><td> indented row</td></tr>
 </table>
@@ -24078,31 +24468,31 @@ foo
 Nowiki-wrap leading whitespace when handling indent-pre inducing tags
 !! options
 parsoid=html2wt
-!! wikitext
-foo
-<nowiki> </nowiki><span>bar</span>
+!! html/parsoid
+<p>foo</p>
+ <span>bar</span>
 
 <span>foo2
-<nowiki> </nowiki></span>bar2
+ </span>bar2
 
 <div>foo</div>
-<nowiki> </nowiki><span>bar</span>
+ <span>bar</span>
 
 <div>
-<nowiki> </nowiki><span>foo</span>
+ <span>foo</span>
 </div>
-!! html
-<p>foo</p>
- <span>bar</span>
+!! wikitext
+foo
+<nowiki> </nowiki><span>bar</span>
 
 <span>foo2
- </span>bar2
+<nowiki> </nowiki></span>bar2
 
 <div>foo</div>
- <span>bar</span>
+<nowiki> </nowiki><span>bar</span>
 
 <div>
- <span>foo</span>
+<nowiki> </nowiki><span>foo</span>
 </div>
 !! end
 
@@ -24110,7 +24500,7 @@ foo
 Lists: Dont insert newlines in a serialized list item.
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul><li>a<br>b</li><li>c</li></ul>
 !! wikitext
 * a<br>b
@@ -24118,17 +24508,49 @@ parsoid=html2wt
 !! end
 
 !! test
-Headings: Force sol-transparent links and behavior switches to serialize before/after
+1. Headings: Force sol-transparent links and behavior switches to serialize before/after
 !! options
-parsoid=html2wt
-!! html
-<h2>hello there<link href="Category:A1" rel="mw:PageProp/Category" /></h2>
-<h2><link href="Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": false
+}
+!! html/parsoid
+<h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
+<h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
+
+<h2><!--foo-->  <link href="./Category:A3" rel="mw:PageProp/Category" />   how goes it</h2>
+<h2>it goes well   <link href="./Category:A4" rel="mw:PageProp/Category" />  <!--bar--></h2>
+
+<h2 data-parsoid='{}'>howdy<link href="./Category:A5" rel="mw:PageProp/Category" /></h2>
+
+<h2><meta property="mw:PageProp/toc" /> ok</h2>
+!! wikitext
+== hello there [[Category:A1]]  ==
+
+==  [[Category:A2]] hi pal ==
+
+== <!--foo-->   [[Category:A3]]    how goes it ==
+
+== it goes well    [[Category:A4]]  <!--bar-->  ==
+
+==howdy [[Category:A5]] ==
+
+==  __TOC__  ok ==
+!! end
 
-<h2><!--foo-->  <link href="Category:A3" rel="mw:PageProp/Category" />   how goes it</h2>
-<h2>it goes well   <link href="Category:A4" rel="mw:PageProp/Category" />  <!--bar--></h2>
+!! test
+2. Headings: Force sol-transparent links and behavior switches to serialize before/after
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<h2>hello there<link href="./Category:A1" rel="mw:PageProp/Category" /></h2>
+<h2><link href="./Category:A2" rel="mw:PageProp/Category" />hi pal</h2>
 
-<h2 data-parsoid='{}'>howdy<link href="Category:A5" rel="mw:PageProp/Category" /></h2>
+<h2><!--foo-->  <link href="./Category:A3" rel="mw:PageProp/Category" />   how goes it</h2>
+<h2>it goes well   <link href="./Category:A4" rel="mw:PageProp/Category" />  <!--bar--></h2>
 
 <h2><meta property="mw:PageProp/toc" /> ok</h2>
 !! wikitext
@@ -24145,8 +24567,6 @@ parsoid=html2wt
 == it goes well ==
 [[Category:A4]]  <!--bar-->
 
-==howdy [[Category:A5]] ==
-
 __TOC__
 
 == ok ==
@@ -24155,8 +24575,11 @@ __TOC__
 !! test
 Headings: Don't hoist metas that come from templates
 !! options
-parsoid=html2wt
-!! html
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
 <h2><span about="#mwt1" typeof="mw:Transclusion" data-parsoid="{}" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"foo [[Category:Foo]]"}},"i":0}}]}'>foo </span><link rel="mw:PageProp/Category" href="./Category:Foo" about="#mwt1" data-parsoid="{}" /></h2>
 !! wikitext
 == {{echo|foo [[Category:Foo]]}} ==
@@ -24165,9 +24588,12 @@ parsoid=html2wt
 !! test
 Headings: Category in ref isn't hoisted
 !! options
-parsoid=html2wt
-!! html
-<h2> foo <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> </h2>
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text">bar <link rel="mw:PageProp/Category" href="./Category:Baz" /> </span></li></ol>
 !! wikitext
@@ -24181,7 +24607,7 @@ parsoid=html2wt
 Parsoid: Serialize positional parameters with = in them as named parameter
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p about="#mwt1" typeof="mw:Transclusion"
 data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"f=oo"}},"i":0}}]}'>foo</p>
 
@@ -24205,7 +24631,7 @@ data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},
 Parsoid: Serialize positional parameters with = in extlink as named parameter
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><a rel="mw:ExtLink" href="http://stuff?is=ok" about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"http://stuff?is=ok"}},"i":0}}]}'>http://stuff?is=ok</a></p>
 !! wikitext
 {{echo|1 = http://stuff?is=ok}}
@@ -24215,7 +24641,7 @@ parsoid=html2wt
 Parsoid: Correctly serialize block-node children when they are a combination of text and p-nodes
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <div>a<p>b</p></div>
 <div>a
 <p>b</p></div>
 Substrings resembling wikitext in hrefs should not get nowiki escapes
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Foo''bar''baz">Foo''bar''baz</a>
 !! wikitext
 [[Foo''bar''baz]]
@@ -24250,14 +24676,14 @@ parsoid=html2wt
 Enforce single-line context in the serializer
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h2>testing
 123</h2>
 
 <h2> hi <span about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"bogus","href":"./Template:Bogus"},"params":{"1":{"wt":"there\nyou"}},"i":0}}]}'>there</span><span about="#mwt1">
 </span><span about="#mwt1">you</span> </h2>
 
-<h2> foo <span about="#mwt2" class="reference" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1">[1]</a></span> </h2>
+<h2> foo <span about="#mwt2" class="mw-ref" id="cite_ref-1" rel="dc:references" typeof="mw:Extension/ref" data-mw='{"name":"ref","body":{"id":"mw-reference-text-cite_note-1"},"attrs":{}}'><a href="#cite_note-1"><span class="mw-reflink-text">[1]</span></a></span> </h2>
 
 <ol class="references" typeof="mw:Extension/references" about="#mwt3" data-mw='{"name":"references","attrs":{}}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1">↑</a></span> <span id="mw-reference-text-cite_note-1" class="mw-reference-text" data-parsoid="{}">hello
 there</span></li></ol>
@@ -24270,6 +24696,16 @@ bar
 baz</li>
 <li>foo <b>bar</b>
 baz</li></ul>
+
+<dl><dt>hi
+ho </dt><dd data-parsoid='{"stx":"row"}'> hi
+ho</dd></dl>
+
+<dl><dd> <table>
+<tbody><tr><td> ha
+ha
+ha</td></tr>
+</tbody></table></dd></dl>
 !! wikitext
 == testing 123 ==
 
@@ -24285,13 +24721,21 @@ there</ref> ==
 
 * foo bar baz
 * foo '''bar''' baz
+
+; hi ho : hi ho
+
+: {|
+| ha
+ha
+ha
+|}
 !! end
 
 !! test
 Serialize new placeholder space without spans
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p>foo<span typeof="mw:Placeholder"> </span>: bar</p>
 
 <p>foo<span typeof="mw:DisplaySpace mw:Placeholder" data-parsoid='{"src":" ","isDisplayHack":true}'> </span>: bar</p>
@@ -24314,7 +24758,7 @@ foo : bar
 1. I/B quote minimization: wikitext-only tags should be combined
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><i>A</i><i>B</i></p>
 <p><b>A</b><b>B</b></p>
 <p><i>A</i><b><i>B</i></b></p>
@@ -24345,7 +24789,7 @@ parsoid=html2wt
 2. I/B quote minimization: wikitext and html tags should not be combined
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><i>A</i><i data-parsoid='{"stx":"html"}'>B</i></p>
 <p><i>A</i><b><i data-parsoid='{"stx":"html"}'>B</i></b></p>
 !! wikitext
@@ -24358,7 +24802,7 @@ parsoid=html2wt
 3. I/B quote minimization: templated content stops minimization
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><i>A</i><i about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;B&#39;&#39;"}},"i":0}}]}'>B</i>
 <p><i>A</i><b about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&#39;&#39;&#39;&#39;&#39;B&#39;&#39;&#39;&#39;&#39;"}},"i":0}}]}'><i>B</i></b>
 !! wikitext
@@ -24371,7 +24815,7 @@ parsoid=html2wt
 4. I/B quote minimization: new content should be mimimized with adjacent old content
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p><i>A</i><i>B</i></p>
 <p><b>A</b><b>B</b></p>
 <p><i>A</i><b><i>B</i></b></p>
@@ -24420,7 +24864,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
 <a data-parsoid="{}" rel="mw:WikiLink" href="./Football">Foot</a><a data-parsoid="{}" rel="mw:WikiLink" href="./Football">ball</a>
@@ -24437,7 +24881,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Football"><i>Foot</i></a><a rel="mw:WikiLink" href="./Football"><i>ball</i></a>
 !! wikitext
 [[Football|''Football'']]
@@ -24450,7 +24894,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": false
 }
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Football">Foot</a><a rel="mw:WikiLink" href="./Football">ball</a>
 !! wikitext
 [[Football|Foot]][[Football|ball]]
@@ -24464,10 +24908,10 @@ parsoid={
 Bug 54262: New entities
 !! options
 parsoid=html2wt
+!! html/parsoid
+<span typeof="mw:Entity">&nbsp;</span>
 !! wikitext
 &nbsp;
-!! html
-<span typeof="mw:Entity">&nbsp;</span>
 !! end
 
 ## Note that there is no wikitext output for 'unknownproperty' ##
@@ -24504,7 +24948,7 @@ __NOCONTENTCONVERT__
 Consecutive <pre>s should not get merged
 !! options
 parsoid=html2wt,html2html
-!! html
+!! html/parsoid
 <pre>a</pre><pre>b</pre>
 
 <pre>c
@@ -24536,7 +24980,7 @@ f</pre>
 Edited ISBN links not serializable as ISBN links should serialize as wikilinks
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:ExtLink" href="./Special:BookSources/1234567890">ISBN 1234567895</a>
 !! wikitext
 [[Special:BookSources/1234567890|ISBN 1234567895]]
@@ -24546,7 +24990,7 @@ parsoid=html2wt
 Edited RFC links not serializable as RFC links should serialize as extlinks
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
 !! wikitext
 [//tools.ietf.org/html/rfc123 New RFC]
@@ -24556,7 +25000,7 @@ parsoid=html2wt
 Edited PMID links not serializable as PMID links should serialize as extlinks
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
 !! wikitext
 [//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
@@ -24612,11 +25056,46 @@ x<nowiki/>http://cscott.net<nowiki/>x
 x<nowiki/>http://cscott.net<nowiki/>x
 !! end
 
+!! test
+WTS of edited autolink-like text (T103364)
+!! options
+parsoid={
+  "modes": ["wt2wt"],
+  "changes": [
+    [ "span[typeof]", "removeAttr", "typeof" ]
+  ]
+}
+!! wikitext
+Not a link: <nowiki>http://example.com</nowiki>.
+!! wikitext/edited
+Not a link: <span><nowiki>http://example.com</nowiki></span>.
+!! end
+
+!! test
+WTS of newly-authored autolink-like text (T103364)
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p>http://example.com is not a link.</p>
+!! wikitext
+<nowiki>http://example.com is not a link.</nowiki>
+!! end
+
+!! test
+WTS of autolink-like text after an autolink (T108563)
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a> http://example.com is not a link.</p>
+!! wikitext
+http://example.com<nowiki> http://example.com is not a link.</nowiki>
+!! end
+
 !! test
 Edited Redirect link should emit a non-piped wikitext link
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <link rel="mw:PageProp/redirect" href="Bar" data-parsoid='{"a":{"href":"./Foo"},"sa":{"href":"Foo"}}'>
 !! wikitext
 #REDIRECT [[Bar]]
@@ -24626,7 +25105,7 @@ parsoid=html2wt
 T75121: Infer extension name from typeOf if data-mw is not present
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <div typeOf="mw:Extension/foo"></div>
 !! wikitext
 <foo />
@@ -24686,7 +25165,7 @@ parsoid=html2wt,wt2wt
 HTML id attribute with Parsoid-like element ids should not be serialized to wikitext
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <table id='mwAb'>
 <td id='mwAc'>foo</td>
 <td id='serialize-this'>bar</td>
@@ -24702,7 +25181,7 @@ parsoid=html2wt
 Parsoid-like element ids should not be serialized to wikitext unless shadowed
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <div id="mwAQ" data-parsoid='{"stx":"html","a":{"id":"mwAQ"},"sa":{"id":"hello"}}'>ok</div>
 !! wikitext
 <div id="hello">ok</div>
@@ -24729,7 +25208,7 @@ parsoid={
 Never serialize a-tag as html, regardless of what data-parsoid has to say
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a rel="mw:WikiLink" href="./Foo" title="Foo" data-parsoid='{"stx":"html"}'>Foo</a>
 !! wikitext
 [[Foo]]
@@ -24743,12 +25222,25 @@ parsoid=html2wt
 Never serialize a-tag as html, no matter what attributes it has
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <a bad='true' href='http://boo.org'><img src='http://boohoo.org' /></a>
 !! wikitext
 [http://boo.org http://boohoo.org]
 !! end
 
+# Misnested is an indication that selser can reuse the source but these have
+# shown to sneak through on occasion. See T101768.
+# The original wikitext here is: [http://test.com [[one]] two three]
+!! test
+Strip span tags added to mark as misnested
+!! options
+parsoid=html2wt
+!! html/parsoid
+<p data-parsoid='{}'><a rel="mw:ExtLink" href="http://test.com" data-parsoid='{"targetOff":17,"contentOffsets":[17,34]}'></a><a rel="mw:WikiLink" href="./One" title="One" data-parsoid='{"stx":"simple","a":{"href":"./One"},"sa":{"href":"one"},"misnested":true}'>one</a><span data-parsoid='{"misnested":true}'> two three</span></p>
+!! wikitext
+[http://test.com][[one]] two three
+!! end
+
 # --------------------------------------------
 # Tests spec'ing wikitext serialization norms |
 # --------------------------------------------
@@ -24757,7 +25249,7 @@ parsoid=html2wt
 Lists: Add space after bullets
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <ul>
 <li>foo</li>
 <li> bar</li>
@@ -24770,17 +25262,14 @@ parsoid=html2wt
 !! end
 
 !! test
-Headings: Add space before/after == (T53744)
+1. Headings: Add space before/after == (T53744)
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h2>foo</h2>
 <h2> bar</h2>
 <h2>baz </h2>
 <h2><span> baz</span></h2>
-
-<!-- Even after hoisted content -->
-<h2> <link href="Category:A2" rel="mw:PageProp/Category" />ok</h2>
 !! wikitext
 == foo ==
 
@@ -24789,8 +25278,18 @@ parsoid=html2wt
 == baz ==
 
 == <span> baz</span> ==
+!! end
 
-<!-- Even after hoisted content -->
+!! test
+2. Headings: Add space before/after == even after hoisted content
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<h2> <link href="./Category:A2" rel="mw:PageProp/Category" />ok</h2>
+!! wikitext
  [[Category:A2]]
 
 == ok ==
@@ -24803,7 +25302,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <h2></h2>
 !! wikitext
 !! end
@@ -24812,23 +25311,25 @@ parsoid={
 2. Headings: don't suppress empty headings if scrubWikitext is false
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <h2></h2>
 !! wikitext
 ==<nowiki/>==
 !! end
 
 !! test
-3. Headings: don't suppress empty headings for existing headings even if scrubWikitext is true
+3. Headings: suppress empty headings on edits
 !! options
 parsoid={
-  "modes": ["html2wt"],
-  "scrubWikitext": true
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "remove"]
+  ]
 }
-!! html
-<h2 data-parsoid='{}'></h2>
 !! wikitext
-==<nowiki/>==
+==<span id="x">foo</span>==
+!! wikitext/edited
 !! end
 
 !! test
@@ -24838,7 +25339,7 @@ parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
-!! html
+!! html/parsoid
 <i></i><b></b>
 !! wikitext
 !! end
@@ -24847,33 +25348,452 @@ parsoid={
 2. WT Quote Tags: don't suppress empty style tags if scrubWikitext is false
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <i></i><b></b>
 !! wikitext
 ''<nowiki/>'''''<nowiki/>'''
 !! end
 
 !! test
-1. Indent Pre Nowiki: suppress whitespace at the start of new paragraph
+3. WT Quote Tags: suppress empty style tags on edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "remove"]
+  ]
+}
+!! wikitext
+'''<span id="x">foo</span>'''
+!! wikitext/edited
+!! end
+
+!! test
+1. Anchors: suppress newly created empty anchors
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<a rel="mw:WikiLink" href="./Test" title="Test"></a>
+!! wikitext
+!! end
+
+!! test
+2. Anchors: don't suppress empty anchors if scrubWikitext is false
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": false
+}
+!! html/parsoid
+<a rel="mw:WikiLink" href="./Test" title="Test"></a>
+!! wikitext
+[[Test|<nowiki/>]]
+!! end
+
+!! test
+3. Anchors: suppress empty anchors on edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "remove"]
+  ]
+}
+!! wikitext
+[[Test|<span id="x">foo</span>]]
+!! wikitext/edited
+!! end
+
+!! test
+3a. Anchors: do not suppress numbered extlinks
+!! options
+parsoid={
+  "modes": ["wt2wt"],
+  "scrubWikitext": true
+}
+!! wikitext
+[http://foo.com]
+!! html/parsoid
+<a rel="mw:ExtLink" href="http://foo.com"></a>
+!! end
+
+!! test
+3b. Anchors: do not suppress numbered extlinks
+!! options
+parsoid={
+  "modes": ["wt2wt"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "remove"]
+  ]
+}
+!! wikitext
+[http://foo.com <span id="x">foo</span>]
+!! wikitext/edited
+[http://foo.com]
+!! end
+
+!!test
+Normalizations should be restricted to edited content
+!!options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "h1", "before", "<i></i>"]
+  ]
+}
+!!wikitext
+a
+= =
+b
+!!wikitext/edited
+a
+= =
+b
+!!end
+
+!! test
+1. Multiple normalizations (html2wt)
 !! options
 parsoid={
   "modes": ["html2wt"],
   "scrubWikitext": true
 }
 !! html
+<h2><i></i></h2>
+<p><a href='Foo' rel='mw:WikiLink'>foo<i></i>
+ </a><b><i></i></b>x</p>
+!! wikitext
+
+[[foo]]
+x
+
+!! end
+
+!! test
+2. Multiple normalizations (selser)
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "after", "<h1><i></i></h1>\n<p> x<b></b></p>"]
+  ]
+}
+!! wikitext
+<span id="x">foo</span>
+!! wikitext/edited
+<span id="x">foo</span>
+
+x
+!! end
+
+!! test
+1. Indent Pre Nowiki: suppress whitespace at the start of new paragraph
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
 <p> hi</p>
+<p>    hello</p>
 !! wikitext
 hi
+
+hello
 !! end
 
 !! test
 2. Indent Pre Nowiki: don't suppress whitespace at the start of new paragraph if scrubWikitext is false
 !! options
 parsoid=html2wt
-!! html
+!! html/parsoid
 <p> hi</p>
+<p>    hello</p>
 !! wikitext
 <nowiki> </nowiki>hi
+
+<nowiki> </nowiki>   hello
+!! end
+
+!! test
+3. Indent Pre Nowiki: suppress whitespace after newlines in new paragraph or table cell
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<p>Foo
+ bar
+baz</p>
+
+<table><tr><td>Foo
+ bar
+ baz bang</td></tr></table>
+
+<p><!--boo--> foo
+ bar</p>
+
+<p> foo
+ bar<span>boo</span></p>
+!! wikitext
+Foo
+bar
+baz
+
+{|
+|Foo
+bar
+baz bang
+|}
+
+<!--boo-->foo
+bar
+
+foo
+bar<span>boo</span>
+!! end
+
+!! test
+4. Indent Pre Nowiki: suppress leading whitespace in edited paragraphs
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "p", "html", " a\n b" ]
+  ]
+}
+!! wikitext
+xyz
+!! wikitext/edited
+a
+b
+!! end
+
+!! test
+1. New links that end in spaces
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": false
+}
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
+<p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
+!! wikitext
+[[Berlin ]]<nowiki/>is the capital of Germany.
+
+[[Foo ]]'''bar'''
+
+[[Boston ]] is a city.
+!! end
+
+!! test
+2. New links that end in spaces
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html/parsoid
+<p><a rel="mw:WikiLink" href="./Berlin" title="Berlin">Berlin </a>is the capital of Germany.</p>
+<p><a rel="mw:WikiLink" href="./Foo" title="Foo">Foo </a><b>bar</b></p>
+<p><a rel="mw:WikiLink" href="./Boston" title="Boston">Boston </a> is a city.</p>
+!! wikitext
+[[Berlin]] is the capital of Germany.
+
+[[Foo]] '''bar'''
+
+[[Boston]] is a city.
+!! end
+
+!! test
+1. Table cells with escapable prefixes
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": false
+}
+!! html
+<table>
+<tr><td>a</td></tr>
+<tr><td>-</td></tr>
+<tr><td>+</td></tr>
+</table>
+!! wikitext
+{|
+|a
+|-
+|<nowiki>-</nowiki>
+|-
+|<nowiki>+</nowiki>
+|}
+!! end
+
+!! test
+2. Table cells with escapable prefixes
+!! options
+parsoid={
+  "modes": ["html2wt"],
+  "scrubWikitext": true
+}
+!! html
+<table>
+<tr><td>a</td></tr>
+<tr><td>-</td></tr>
+<tr><td>+</td></tr>
+</table>
+!! wikitext
+{|
+|a
+|-
+| -
+|-
+| +
+|}
+!! end
+
+!! test
+3a. Table cells with escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "table tbody tr:first-child td:first-child", "remove"]
+  ]
+}
+!! wikitext
+{|
+|a||-
+|}
+!! wikitext/edited
+{|
+| -
+|}
+!! end
+
+!! test
+3b. Table cells with escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "table tbody tr:first-child td:first-child", "html", "-" ],
+    [ "#x", "remove" ]
+  ]
+}
+!! wikitext
+{|
+|pqr
+|<span id="x">foo</span>+
+|}
+!! wikitext/edited
+{|
+| -
+| +
+|}
+!! end
+
+# FIXME: This test will fail because
+# normalization doesn't realize that the id attribute
+# will eliminate the escapable scenario
+!! test
+4a. Table cells without escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "#x", "html", "-" ]
+  ]
+}
+!! wikitext
+{|
+| id="x" |abcd
+|}
+!! wikitext/edited
+{|
+| id="x" |-
+|}
+!! end
+
+## This tests normalizer's ability to discriminate between
+## cells having identical content.
+!! test
+4b. Table cells without escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "td", "html", "-" ]
+  ]
+}
+!! wikitext
+{|
+|a||b
+|}
+!! wikitext/edited
+{|
+| -||-
+|}
+!! end
+
+## This tests normalizer's ability to not be tripped by
+## comments (and whitespace)
+!! test
+4c. Table cells without escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "table tbody tr td:first-child", "remove" ]
+  ]
+}
+!! wikitext
+{|
+|-
+<!--foo--> |a||-
+|}
+!! wikitext/edited
+{|
+|-
+<!--foo--> | -
+|}
+!! end
+
+## This tests normalizer's ability to handle HTML cells
+!! test
+4d. Table cells without escapable prefixes after edits
+!! options
+parsoid={
+  "modes": ["selser"],
+  "scrubWikitext": true,
+  "changes": [
+    [ "td", "html", "-" ]
+  ]
+}
+!! wikitext
+<table>
+<tr><td>a</td></tr>
+</table>
+!! wikitext/edited
+<table>
+<tr><td>-</td></tr>
+</table>
 !! end
 
 # ---------------------------------------------------
index df4690a..73fa0b5 100644 (file)
@@ -48,10 +48,6 @@ class LessFileCompilationTest extends ResourceLoaderTestCase {
                $this->assertNotNull( $compiler->compileFile( $this->file ) );
        }
 
-       public function getName( $withDataSet = true ) {
-               return $this->toString();
-       }
-
        public function toString() {
                $moduleName = $this->module->getName();
 
index 7dddf77..85c2220 100644 (file)
@@ -141,53 +141,36 @@ class OutputPageTest extends MediaWikiTestCase {
                        // Load module script only
                        array(
                                array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script>if(window.mw){
-document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.foo\u0026amp;only=scripts\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
-}</script>
-'
+                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.foo\u0026only=scripts\u0026skin=fallback\u0026*");'
+                                       . "\n} );</script>"
                        ),
                        array(
                                // Don't condition wrap raw modules (like the startup module)
                                array( 'test.raw', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback&amp;*"></script>
-'
+                               '<script async src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.raw&amp;only=scripts&amp;skin=fallback&amp;*"></script>'
                        ),
                        // Load module styles only
                        // This also tests the order the modules are put into the url
                        array(
                                array( array( 'test.baz', 'test.foo', 'test.bar' ), ResourceLoaderModule::TYPE_STYLES ),
-                               '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback&amp;*">
-'
+
+                               '<link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.bar%2Cbaz%2Cfoo&amp;only=styles&amp;skin=fallback&amp;*">'
                        ),
                        // Load private module (only=scripts)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_SCRIPTS ),
-                               '<script>if(window.mw){
-mw.test.baz({token:123});mw.loader.state({"test.quux":"ready"});
-
-}</script>
-'
+                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . "mw.test.baz({token:123});mw.loader.state({\"test.quux\":\"ready\"});\n"
+                                       . "} );</script>"
                        ),
                        // Load private module (combined)
                        array(
                                array( 'test.quux', ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script>if(window.mw){
-mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"css":[".mw-icon{transition:none}\n"]});
-
-}</script>
-'
-                       ),
-                       // Load module script with ESI
-                       array(
-                               array( 'test.foo', ResourceLoaderModule::TYPE_SCRIPTS, true ),
-                               '<script><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=scripts&amp;skin=fallback&amp;*" /></script>
-'
-                       ),
-                       // Load module styles with ESI
-                       array(
-                               array( 'test.foo', ResourceLoaderModule::TYPE_STYLES, true ),
-                               '<style><esi:include src="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.foo&amp;only=styles&amp;skin=fallback&amp;*" /></style>
-',
+                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . "mw.loader.implement(\"test.quux\",function($,jQuery){"
+                                       . "mw.test.baz({token:123});},{\"css\":[\".mw-icon{transition:none}"
+                                       . "\"]});\n} );</script>"
                        ),
                        // Load no modules
                        array(
@@ -197,19 +180,17 @@ mw.loader.implement("test.quux",function($,jQuery){mw.test.baz({token:123});},{"
                        // noscript group
                        array(
                                array( 'test.noscript', ResourceLoaderModule::TYPE_STYLES ),
-                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback&amp;*"></noscript>
-'
+                               '<noscript><link rel=stylesheet href="http://127.0.0.1:8080/w/load.php?debug=false&amp;lang=en&amp;modules=test.noscript&amp;only=styles&amp;skin=fallback&amp;*"></noscript>'
                        ),
                        // Load two modules in separate groups
                        array(
                                array( array( 'test.group.foo', 'test.group.bar' ), ResourceLoaderModule::TYPE_COMBINED ),
-                               '<script>if(window.mw){
-document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.bar\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
-}</script>
-<script>if(window.mw){
-document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\u0026amp;lang=en\u0026amp;modules=test.group.foo\u0026amp;skin=fallback\u0026amp;*\"\u003E\u003C/script\u003E");
-}</script>
-'
+                               "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.bar\u0026skin=fallback\u0026*");'
+                                       . "\n} );</script>\n"
+                                       . "<script>window.RLQ = window.RLQ || []; window.RLQ.push( function () {\n"
+                                       . 'mw.loader.load("http://127.0.0.1:8080/w/load.php?debug=false\u0026lang=en\u0026modules=test.group.foo\u0026skin=fallback\u0026*");'
+                                       . "\n} );</script>"
                        ),
                );
        }
@@ -226,7 +207,6 @@ document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\
        public function testMakeResourceLoaderLink( $args, $expectedHtml ) {
                $this->setMwGlobals( array(
                        'wgResourceLoaderDebug' => false,
-                       'wgResourceLoaderUseESI' => true,
                        'wgLoadScript' => 'http://127.0.0.1:8080/w/load.php',
                        // Affects whether CDATA is inserted
                        'wgWellFormedXml' => false,
@@ -277,7 +257,7 @@ document.write("\u003Cscript src=\"http://127.0.0.1:8080/w/load.php?debug=false\
                ) );
                $links = $method->invokeArgs( $out, $args );
                // Strip comments to avoid variation due to wgDBname in WikiID and cache key
-               $actualHtml = preg_replace( '#/\*[^*]+\*/#', '', $links['html'] );
+               $actualHtml = preg_replace( '#/\*[^*]+\*/#', '', implode( "\n", $links['html'] ) );
                $this->assertEquals( $expectedHtml, $actualHtml );
        }
 }
@@ -303,4 +283,3 @@ class NullMessageBlobStore extends MessageBlobStore {
        public function clear() {
        }
 }
-
index 880572b..575efd6 100644 (file)
@@ -53,7 +53,7 @@ class ApiBlockTest extends ApiTestCase {
                        'action' => 'block',
                        'user' => 'UTApiBlockee',
                        'reason' => 'Some reason',
-                       'token' => $tokens['blocktoken'] ), null, false, self::$users['sysop']->user );
+                       'token' => $tokens['blocktoken'] ), null, false, self::$users['sysop']->getUser() );
 
                $block = Block::newFromTarget( 'UTApiBlockee' );
 
@@ -77,7 +77,7 @@ class ApiBlockTest extends ApiTestCase {
                        ),
                        null,
                        false,
-                       self::$users['sysop']->user
+                       self::$users['sysop']->getUser()
                );
        }
 }
index e006bf7..61a8ad1 100644 (file)
@@ -262,18 +262,18 @@ class ApiEditPageTest extends ApiTestCase {
 
                // base edit for content
                $page->doEditContent( new WikitextContent( "Foo" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $page, '20120101000000' );
                $baseTime = $page->getRevision()->getTimestamp();
 
                // base edit for redirect
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101000000' );
 
                // conflicting edit to redirect
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]\n\n[[Category:Test]]" ),
-                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101020202' );
 
                // try to save edit, following the redirect
@@ -284,7 +284,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'basetimestamp' => $baseTime,
                        'section' => 'new',
                        'redirect' => true,
-               ), null, self::$users['sysop']->user );
+               ), null, self::$users['sysop']->getUser() );
 
                $this->assertEquals( 'Success', $re['edit']['result'],
                        "no problems expected when following redirect" );
@@ -308,18 +308,18 @@ class ApiEditPageTest extends ApiTestCase {
 
                // base edit for content
                $page->doEditContent( new WikitextContent( "Foo" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $page, '20120101000000' );
                $baseTime = $page->getRevision()->getTimestamp();
 
                // base edit for redirect
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101000000' );
 
                // conflicting edit to redirect
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]\n\n[[Category:Test]]" ),
-                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101020202' );
 
                // try to save edit, following the redirect but without creating a section
@@ -330,7 +330,7 @@ class ApiEditPageTest extends ApiTestCase {
                                'text' => 'nix bar!',
                                'basetimestamp' => $baseTime,
                                'redirect' => true,
-                       ), null, self::$users['sysop']->user );
+                       ), null, self::$users['sysop']->getUser() );
 
                        $this->fail( 'redirect-appendonly error expected' );
                } catch ( UsageException $ex ) {
@@ -350,13 +350,13 @@ class ApiEditPageTest extends ApiTestCase {
 
                // base edit
                $page->doEditContent( new WikitextContent( "Foo" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $page, '20120101000000' );
                $baseTime = $page->getRevision()->getTimestamp();
 
                // conflicting edit
                $page->doEditContent( new WikitextContent( "Foo bar" ),
-                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->getUser() );
                $this->forceRevisionDate( $page, '20120101020202' );
 
                // try to save edit, expect conflict
@@ -366,7 +366,7 @@ class ApiEditPageTest extends ApiTestCase {
                                'title' => $name,
                                'text' => 'nix bar!',
                                'basetimestamp' => $baseTime,
-                       ), null, self::$users['sysop']->user );
+                       ), null, self::$users['sysop']->getUser() );
 
                        $this->fail( 'edit conflict expected' );
                } catch ( UsageException $ex ) {
@@ -389,13 +389,13 @@ class ApiEditPageTest extends ApiTestCase {
 
                // base edit
                $page->doEditContent( new WikitextContent( "Foo" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $page, '20120101000000' );
                $baseTime = $page->getRevision()->getTimestamp();
 
                // conflicting edit
                $page->doEditContent( new WikitextContent( "Foo bar" ),
-                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->getUser() );
                $this->forceRevisionDate( $page, '20120101020202' );
 
                // try to save edit, expect no conflict
@@ -405,7 +405,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'text' => 'nix bar!',
                        'basetimestamp' => $baseTime,
                        'section' => 'new',
-               ), null, self::$users['sysop']->user );
+               ), null, self::$users['sysop']->getUser() );
 
                $this->assertEquals( 'Success', $re['edit']['result'],
                        "no edit conflict expected here" );
@@ -432,17 +432,17 @@ class ApiEditPageTest extends ApiTestCase {
 
                // base edit for content
                $page->doEditContent( new WikitextContent( "Foo" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $page, '20120101000000' );
 
                // base edit for redirect
                $rpage->doEditContent( new WikitextContent( "#REDIRECT [[$name]]" ),
-                       "testing 1", EDIT_NEW, false, self::$users['sysop']->user );
+                       "testing 1", EDIT_NEW, false, self::$users['sysop']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101000000' );
 
                // new edit to content
                $page->doEditContent( new WikitextContent( "Foo bar" ),
-                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->user );
+                       "testing 2", EDIT_UPDATE, $page->getLatest(), self::$users['uploader']->getUser() );
                $this->forceRevisionDate( $rpage, '20120101020202' );
 
                // try to save edit; should work, following the redirect.
@@ -452,7 +452,7 @@ class ApiEditPageTest extends ApiTestCase {
                        'text' => 'nix bar!',
                        'section' => 'new',
                        'redirect' => true,
-               ), null, self::$users['sysop']->user );
+               ), null, self::$users['sysop']->getUser() );
 
                $this->assertEquals( 'Success', $re['edit']['result'],
                        "no edit conflict expected here" );
index 88a99e9..7dfd14f 100644 (file)
@@ -23,7 +23,7 @@ class ApiLoginTest extends ApiTestCase {
                global $wgServer;
 
                $user = self::$users['sysop'];
-               $user->user->logOut();
+               $user->getUser()->logOut();
 
                if ( !isset( $wgServer ) ) {
                        $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
@@ -68,7 +68,7 @@ class ApiLoginTest extends ApiTestCase {
                }
 
                $user = self::$users['sysop'];
-               $user->user->logOut();
+               $user->getUser()->logOut();
 
                $ret = $this->doApiRequest( array(
                                "action" => "login",
index b03836e..362d647 100644 (file)
@@ -25,7 +25,7 @@ class ApiRevisionDeleteTest extends ApiTestCase {
        }
 
        public function testHidingRevisions() {
-               $user = self::$users['sysop']->user;
+               $user = self::$users['sysop']->getUser();
                $revid = array_shift( $this->revs );
                $out = $this->doApiRequest( array(
                        'action' => 'revisiondelete',
@@ -80,7 +80,7 @@ class ApiRevisionDeleteTest extends ApiTestCase {
        }
 
        public function testUnhidingOutput() {
-               $user = self::$users['sysop']->user;
+               $user = self::$users['sysop']->getUser();
                $revid = array_shift( $this->revs );
                // Hide revisions
                $this->doApiRequest( array(
index e9dff9f..a374f09 100644 (file)
@@ -25,7 +25,7 @@ class ApiUnblockTest extends ApiTestCase {
                        ),
                        null,
                        false,
-                       self::$users['sysop']->user
+                       self::$users['sysop']->getUser()
                );
        }
 }
index b7f7d10..c852d72 100644 (file)
@@ -80,7 +80,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                try {
                        $this->doApiRequestWithToken( array(
                                'action' => 'upload',
-                       ), $session, self::$users['uploader']->user );
+                       ), $session, self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                        $this->assertEquals( "One of the parameters filekey, file, url, statuskey is required",
@@ -126,7 +126,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result, , ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user );
+                               self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -165,7 +165,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
 
                $exception = false;
                try {
-                       $this->doApiRequestWithToken( $params, $session, self::$users['uploader']->user );
+                       $this->doApiRequestWithToken( $params, $session, self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $this->assertContains( 'The file you submitted was empty', $e->getMessage() );
                        $exception = true;
@@ -215,7 +215,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user );
+                               self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -232,7 +232,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result, , ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user ); // FIXME: leaks a temporary file
+                               self::$users['uploader']->getUser() ); // FIXME: leaks a temporary file
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -286,7 +286,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user );
+                               self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -311,7 +311,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user ); // FIXME: leaks a temporary file
+                               self::$users['uploader']->getUser() ); // FIXME: leaks a temporary file
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -331,7 +331,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
         */
        public function testUploadStash( $session ) {
                $this->setMwGlobals( array(
-                       'wgUser' => self::$users['uploader']->user, // @todo FIXME: still used somewhere
+                       'wgUser' => self::$users['uploader']->getUser(), // @todo FIXME: still used somewhere
                ) );
 
                $extension = 'png';
@@ -368,7 +368,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user ); // FIXME: leaks a temporary file
+                               self::$users['uploader']->getUser() ); // FIXME: leaks a temporary file
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -397,7 +397,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user );
+                               self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                }
@@ -415,7 +415,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
        public function testUploadChunks( $session ) {
                $this->setMwGlobals( array(
                        // @todo FIXME: still used somewhere
-                       'wgUser' => self::$users['uploader']->user,
+                       'wgUser' => self::$users['uploader']->getUser(),
                ) );
 
                $chunkSize = 1048576;
@@ -473,7 +473,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                                // Upload fist chunk ( and get the session key )
                                try {
                                        list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session,
-                                               self::$users['uploader']->user );
+                                               self::$users['uploader']->getUser() );
                                } catch ( UsageException $e ) {
                                        $this->markTestIncomplete( $e->getMessage() );
                                }
@@ -501,7 +501,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                        // Upload current chunk
                        try {
                                list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session,
-                                       self::$users['uploader']->user );
+                                       self::$users['uploader']->getUser() );
                        } catch ( UsageException $e ) {
                                $this->markTestIncomplete( $e->getMessage() );
                        }
@@ -541,7 +541,7 @@ class ApiUploadTest extends ApiTestCaseUpload {
                $exception = false;
                try {
                        list( $result ) = $this->doApiRequestWithToken( $params, $session,
-                               self::$users['uploader']->user );
+                               self::$users['uploader']->getUser() );
                } catch ( UsageException $e ) {
                        $exception = true;
                }
index a14a50d..01e221f 100644 (file)
@@ -74,6 +74,20 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                $this->assertEquals( '', $html );
        }
 
+       public function testCategorizationLineFormatting() {
+               $html = $this->createCategorizationLine(
+                       $this->getCategorizationChange( '20150629191735', 0, 0 )
+               );
+               $this->assertNotContains( '(diff | hist)', strip_tags( $html ) );
+       }
+
+       public function testCategorizationLineFormattingWithRevision() {
+               $html = $this->createCategorizationLine(
+                       $this->getCategorizationChange( '20150629191735', 1025, 1024 )
+               );
+               $this->assertContains( '(diff | hist)', strip_tags( $html ) );
+       }
+
        /**
         * @todo more tests for actual formatting, this is more of a smoke test
         */
@@ -115,6 +129,24 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $recentChange;
        }
 
+       /**
+        * @return RecentChange
+        */
+       private function getCategorizationChange( $timestamp, $thisId, $lastId ) {
+               $wikiPage = new WikiPage( Title::newFromText( 'Testpage' ) );
+               $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'page created' );
+
+               $wikiPage = new WikiPage( Title::newFromText( 'Category:Foo' ) );
+               $wikiPage->doEditContent( new WikitextContent( 'Some random text' ), 'category page created' );
+
+               $user = $this->getTestUser();
+               $recentChange = $this->testRecentChangesHelper->makeCategorizationRecentChange(
+                       $user, 'Category:Foo', $wikiPage->getId(), $thisId, $lastId, $timestamp
+               );
+
+               return $recentChange;
+       }
+
        /**
         * @return User
         */
@@ -128,4 +160,15 @@ class EnhancedChangesListTest extends MediaWikiLangTestCase {
                return $user;
        }
 
+       private function createCategorizationLine( $recentChange ) {
+               $enhancedChangesList = $this->newEnhancedChangesList();
+               $cacheEntry = $this->testRecentChangesHelper->getCacheEntry( $recentChange );
+
+               $reflection = new \ReflectionClass( get_class( $enhancedChangesList ) );
+               $method = $reflection->getMethod( 'recentChangesBlockLine' );
+               $method->setAccessible( true );
+
+               return $method->invokeArgs( $enhancedChangesList, array( $cacheEntry ) );
+       }
+
 }
index ab35453..60235b8 100644 (file)
@@ -243,7 +243,9 @@ class RecentChangeTest extends MediaWikiTestCase {
                        $this->context->msg( 'movedarticleprotection', 'SomeTitle', 'OldTitle' )
                                ->plain() . $sep . $this->user_comment,
                        'protect', 'move_prot',
-                       array( 'OldTitle' ),
+                       array(
+                               '4::oldtitle' => 'OldTitle'
+                       ),
                        $this->user_comment
                );
        }
index 2506087..e59825a 100644 (file)
@@ -97,6 +97,36 @@ class TestRecentChangesHelper {
                return $change;
        }
 
+       public function getCacheEntry( $recentChange ) {
+               $rcCacheFactory = new RCCacheEntryFactory(
+                       new RequestContext(),
+                       array( 'diff' => 'diff', 'cur' => 'cur', 'last' => 'last' )
+               );
+               return $rcCacheFactory->newFromRecentChange( $recentChange, false );
+       }
+
+       public function makeCategorizationRecentChange(
+               User $user, $titleText, $curid, $thisid, $lastid, $timestamp
+       ) {
+
+               $attribs = array_merge(
+                       $this->getDefaultAttributes( $titleText, $timestamp ),
+                       array(
+                               'rc_type' => RC_CATEGORIZE,
+                               'rc_user' => $user->getId(),
+                               'rc_user_text' => $user->getName(),
+                               'rc_this_oldid' => $thisid,
+                               'rc_last_oldid' => $lastid,
+                               'rc_cur_id' => $curid,
+                               'rc_comment' => '[[:Testpage]] added to category',
+                               'rc_old_len' => 0,
+                               'rc_new_len' => 0,
+                       )
+               );
+
+               return $this->makeRecentChange( $attribs, 0, 0 );
+       }
+
        private function getDefaultAttributes( $titleText, $timestamp ) {
                return array(
                        'rc_id' => 545,
diff --git a/tests/phpunit/includes/content/CssContentHandlerTest.php b/tests/phpunit/includes/content/CssContentHandlerTest.php
new file mode 100644 (file)
index 0000000..e1785a9
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+class CssContentHandlerTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider provideMakeRedirectContent
+        * @covers CssContentHandler::makeRedirectContent
+        */
+       public function testMakeRedirectContent( $title, $expected ) {
+               $this->setMwGlobals( array(
+                       'wgServer' => '//example.org',
+                       'wgScript' => '/w/index.php',
+               ) );
+               $ch = new CssContentHandler();
+               $content = $ch->makeRedirectContent( Title::newFromText( $title ) );
+               $this->assertInstanceOf( 'CssContent', $content );
+               $this->assertEquals( $expected, $content->serialize( CONTENT_FORMAT_CSS ) );
+       }
+
+       /**
+        * Keep this in sync with CssContentTest::provideGetRedirectTarget()
+        */
+       public static function provideMakeRedirectContent() {
+               return array(
+                       array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
+                       array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
+                       array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
+               );
+       }
+}
index 44427ba..c4d87c2 100644 (file)
@@ -83,11 +83,31 @@ class CssContentTest extends JavaScriptContentTest {
        }
 
        /**
-        * Override this since CssContent does not support redirects yet
+        * @dataProvider provideGetRedirectTarget
+        */
+       public function testGetRedirectTarget( $title, $text ) {
+               $this->setMwGlobals( array(
+                       'wgServer' => '//example.org',
+                       'wgScriptPath' => '/w',
+                       'wgScript' => '/w/index.php',
+               ) );
+               $content = new CssContent( $text );
+               $target = $content->getRedirectTarget();
+               $this->assertEquals( $title, $target ? $target->getPrefixedText() : null );
+       }
+
+       /**
+        * Keep this in sync with CssContentHandlerTest::provideMakeRedirectContent()
         */
        public static function provideGetRedirectTarget() {
                return array(
-                       array( null, '' ),
+                       array( 'MediaWiki:MonoBook.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=MediaWiki:MonoBook.css&action=raw&ctype=text/css);" ),
+                       array( 'User:FooBar/common.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=User:FooBar/common.css&action=raw&ctype=text/css);" ),
+                       array( 'Gadget:FooBaz.css', "/* #REDIRECT */@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
+                       # No #REDIRECT comment
+                       array( null, "@import url(//example.org/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
+                       # Wrong domain
+                       array( null, "/* #REDIRECT */@import url(//example.com/w/index.php?title=Gadget:FooBaz.css&action=raw&ctype=text/css);" ),
                );
        }
 
index 451d82a..3db9172 100644 (file)
@@ -189,18 +189,34 @@ class DatabaseSqliteTest extends MediaWikiTestCase {
        public function testDuplicateTableStructure() {
                $db = DatabaseSqlite::newStandaloneInstance( ':memory:' );
                $db->query( 'CREATE TABLE foo(foo, barfoo)' );
+               $db->query( 'CREATE INDEX index1 ON foo(foo)' );
+               $db->query( 'CREATE UNIQUE INDEX index2 ON foo(barfoo)' );
 
                $db->duplicateTableStructure( 'foo', 'bar' );
                $this->assertEquals( 'CREATE TABLE "bar"(foo, barfoo)',
                        $db->selectField( 'sqlite_master', 'sql', array( 'name' => 'bar' ) ),
                        'Normal table duplication'
                );
+               $indexList = $db->query( 'PRAGMA INDEX_LIST("bar")' );
+               $index = $indexList->next();
+               $this->assertEquals( 'bar_index1', $index->name );
+               $this->assertEquals( '0', $index->unique );
+               $index = $indexList->next();
+               $this->assertEquals( 'bar_index2', $index->name );
+               $this->assertEquals( '1', $index->unique );
 
                $db->duplicateTableStructure( 'foo', 'baz', true );
                $this->assertEquals( 'CREATE TABLE "baz"(foo, barfoo)',
                        $db->selectField( 'sqlite_temp_master', 'sql', array( 'name' => 'baz' ) ),
                        'Creation of temporary duplicate'
                );
+               $indexList = $db->query( 'PRAGMA INDEX_LIST("baz")' );
+               $index = $indexList->next();
+               $this->assertEquals( 'baz_index1', $index->name );
+               $this->assertEquals( '0', $index->unique );
+               $index = $indexList->next();
+               $this->assertEquals( 'baz_index2', $index->name );
+               $this->assertEquals( '1', $index->unique );
                $this->assertEquals( 0,
                        $db->selectField( 'sqlite_master', 'COUNT(*)', array( 'name' => 'baz' ) ),
                        'Create a temporary duplicate only'
index c63ce66..1b3ce2c 100644 (file)
@@ -84,6 +84,13 @@ class LegacyLoggerTest extends MediaWikiTestCase {
                                ),
                                'true',
                        ),
+                       array(
+                               '{float}',
+                               array(
+                                       'float' => 1.23,
+                               ),
+                               '1.23',
+                       ),
                        array(
                                '{array}',
                                array(
diff --git a/tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php b/tests/phpunit/includes/debug/logger/monolog/LineFormatterTest.php
new file mode 100644 (file)
index 0000000..05c32a0
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+namespace MediaWiki\Logger\Monolog;
+
+use InvalidArgumentException;
+use LengthException;
+use LogicException;
+use MediaWikiTestCase;
+use TestingAccessWrapper;
+
+class LineFormatterTest extends MediaWikiTestCase {
+
+       /**
+        * @covers LineFormatter::normalizeException
+        */
+       public function testNormalizeExceptionNoTrace() {
+               $fixture = new LineFormatter();
+               $fixture->includeStacktraces( false );
+               $fixture = TestingAccessWrapper::newFromObject( $fixture );
+               $boom = new InvalidArgumentException( 'boom', 0,
+                       new LengthException( 'too long', 0,
+                               new LogicException( 'Spock wuz here' )
+                       )
+               );
+               $out = $fixture->normalizeException( $boom );
+               $this->assertContains( '[Exception InvalidArgumentException]', $out );
+               $this->assertContains( ', [Exception LengthException]', $out );
+               $this->assertContains( ', [Exception LogicException]', $out );
+               $this->assertNotContains( '[stacktrace]', $out );
+       }
+
+       /**
+        * @covers LineFormatter::normalizeException
+        */
+       public function testNormalizeExceptionTrace() {
+               $fixture = new LineFormatter();
+               $fixture->includeStacktraces( true );
+               $fixture = TestingAccessWrapper::newFromObject( $fixture );
+               $boom = new InvalidArgumentException( 'boom', 0,
+                       new LengthException( 'too long', 0,
+                               new LogicException( 'Spock wuz here' )
+                       )
+               );
+               $out = $fixture->normalizeException( $boom );
+               $this->assertContains( '[Exception InvalidArgumentException', $out );
+               $this->assertContains( ', [Exception LengthException]', $out );
+               $this->assertContains( ', [Exception LogicException]', $out );
+               $this->assertContains( '[stacktrace]', $out );
+       }
+}
index 02f6b2a..efbfe6f 100644 (file)
@@ -19,7 +19,8 @@ class LinksUpdateTest extends MediaWikiTestCase {
                                'externallinks',
                                'imagelinks',
                                'templatelinks',
-                               'iwlinks'
+                               'iwlinks',
+                               'recentchanges',
                        )
                );
        }
@@ -41,6 +42,12 @@ class LinksUpdateTest extends MediaWikiTestCase {
                );
        }
 
+       public function addDBData() {
+               $this->insertPage( 'Testing' );
+               $this->insertPage( 'Some_other_page' );
+               $this->insertPage( 'Template:TestingTemplate' );
+       }
+
        protected function makeTitleAndParserOutput( $name, $id ) {
                $t = Title::newFromText( $name );
                $t->mArticleID = $id; # XXX: this is fugly
@@ -133,6 +140,61 @@ class LinksUpdateTest extends MediaWikiTestCase {
                ) );
        }
 
+       public function testOnAddingAndRemovingCategory_recentChangesRowIsAdded() {
+               $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
+
+               $title = Title::newFromText( 'Testing' );
+               $wikiPage = new WikiPage( $title );
+               $wikiPage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' );
+
+               $this->assertRecentChangeByCategorization(
+                       $title,
+                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       Title::newFromText( 'Category:Foo' ),
+                       array( array( 'Foo', '[[:Testing]] added to category' ) )
+               );
+
+               $wikiPage->doEditContent( new WikitextContent( '[[Category:Bar]]' ), 'added category' );
+               $this->assertRecentChangeByCategorization(
+                       $title,
+                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       Title::newFromText( 'Category:Foo' ),
+                       array(
+                               array( 'Foo', '[[:Testing]] added to category' ),
+                               array( 'Foo', '[[:Testing]] removed from category' ),
+                       )
+               );
+
+               $this->assertRecentChangeByCategorization(
+                       $title,
+                       $wikiPage->getParserOutput( new ParserOptions() ),
+                       Title::newFromText( 'Category:Bar' ),
+                       array(
+                               array( 'Bar', '[[:Testing]] added to category' ),
+                       )
+               );
+       }
+
+       public function testOnAddingAndRemovingCategoryToTemplates_embeddingPagesAreIgnored() {
+               $this->setMwGlobals( 'wgCategoryCollation', 'uppercase' );
+
+               $templateTitle = Title::newFromText( 'Template:TestingTemplate' );
+               $templatePage = new WikiPage( $templateTitle );
+
+               $wikiPage = new WikiPage( Title::newFromText( 'Testing' ) );
+               $wikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' );
+               $otherWikiPage = new WikiPage( Title::newFromText( 'Some_other_page' ) );
+               $otherWikiPage->doEditContent( new WikitextContent( '{{TestingTemplate}}' ), 'added template' );
+               $templatePage->doEditContent( new WikitextContent( '[[Category:Foo]]' ), 'added category' );
+
+               $this->assertRecentChangeByCategorization(
+                       $templateTitle,
+                       $templatePage->getParserOutput( new ParserOptions() ),
+                       Title::newFromText( 'Foo' ),
+                       array( array( 'Foo', '[[:Template:TestingTemplate]] and 2 pages added to category' ) )
+               );
+       }
+
        /**
         * @covers ParserOutput::addInterwikiLink
         */
@@ -263,4 +325,26 @@ class LinksUpdateTest extends MediaWikiTestCase {
                $this->assertSelect( $table, $fields, $condition, $expectedRows );
                return $update;
        }
+
+       protected function assertRecentChangeByCategorization(
+               Title $pageTitle, ParserOutput $parserOutput, Title $categoryTitle, $expectedRows
+       ) {
+               $update = new LinksUpdate( $pageTitle, $parserOutput );
+               $revision = Revision::newFromTitle( $pageTitle );
+               $update->setRevision( $revision );
+               $update->beginTransaction();
+               $update->doUpdate();
+               $update->commitTransaction();
+
+               $this->assertSelect(
+                       'recentchanges',
+                       'rc_title, rc_comment',
+                       array(
+                               'rc_type' => RC_CATEGORIZE,
+                               'rc_namespace' => NS_CATEGORY,
+                               'rc_title' => $categoryTitle->getDBkey()
+                       ),
+                       $expectedRows
+               );
+       }
 }
diff --git a/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php b/tests/phpunit/includes/filebackend/SwiftFileBackendTest.php
new file mode 100644 (file)
index 0000000..a618889
--- /dev/null
@@ -0,0 +1,148 @@
+<?php
+
+/**
+ * @group FileRepo
+ * @group FileBackend
+ * @group medium
+ */
+class SwiftFileBackendTest extends MediaWikiTestCase {
+       /** @var TestingAccessWrapper Proxy to SwiftFileBackend */
+       private $backend;
+
+       protected function setUp() {
+               parent::setUp();
+
+               $this->backend = TestingAccessWrapper::newFromObject(
+                       new SwiftFileBackend( array(
+                               'name'             => 'local-swift-testing',
+                               'class'            => 'SwiftFileBackend',
+                               'wikiId'           => 'unit-testing',
+                               'lockManager'      => LockManagerGroup::singleton()->get( 'fsLockManager' ),
+                               'swiftAuthUrl'     => 'http://127.0.0.1:8080/auth', // unused
+                               'swiftUser'        => 'test:tester',
+                               'swiftKey'         => 'testing',
+                               'swiftTempUrlKey'  => 'b3968d0207b54ece87cccc06515a89d4' // unused
+                       ) )
+               );
+       }
+
+       /**
+        * @dataProvider provider_testSanitzeHdrs
+        * @covers SwiftFileBackend::sanitzeHdrs
+        * @covers SwiftFileBackend::getCustomHeaders
+        */
+       public function testSanitzeHdrs( $raw, $sanitized ) {
+               $hdrs = $this->backend->sanitizeHdrs( array( 'headers' => $raw ) );
+
+               $this->assertEquals( $hdrs, $sanitized, 'sanitizeHdrs() has expected result' );
+       }
+
+       public static function provider_testSanitzeHdrs() {
+               return array(
+                       array(
+                               array(
+                                       'content-length' => 345,
+                                       'content-type'   => 'image+bitmap/jpeg',
+                                       'content-disposition' => 'inline',
+                                       'content-duration' => 35.6363,
+                                       'content-Custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               ),
+                               array(
+                                       'content-disposition' => 'inline',
+                                       'content-duration' => 35.6363,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               )
+                       ),
+                       array(
+                               array(
+                                       'content-length' => 345,
+                                       'content-type'   => 'image+bitmap/jpeg',
+                                       'content-Disposition' => 'inline; filename=xxx; ' . str_repeat( 'o', 1024 ),
+                                       'content-duration' => 35.6363,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               ),
+                               array(
+                                       'content-disposition' => 'inline;filename=xxx',
+                                       'content-duration' => 35.6363,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               )
+                       ),
+                       array(
+                               array(
+                                       'content-length' => 345,
+                                       'content-type'   => 'image+bitmap/jpeg',
+                                       'content-disposition' => 'filename='. str_repeat( 'o', 1024 ) . ';inline',
+                                       'content-duration' => 35.6363,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               ),
+                               array(
+                                       'content-disposition' => '',
+                                       'content-duration' => 35.6363,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello'
+                               )
+                       )
+               );
+       }
+
+       /**
+        * @dataProvider provider_testGetMetadataHeaders
+        * @covers SwiftFileBackend::getMetadataHeaders
+        */
+       public function testGetMetadataHeaders( $raw, $sanitized ) {
+               $hdrs = $this->backend->getMetadataHeaders( $raw );
+
+               $this->assertEquals( $hdrs, $sanitized, 'getMetadataHeaders() has expected result' );
+       }
+
+       public static function provider_testGetMetadataHeaders() {
+               return array(
+                       array(
+                               array(
+                                       'content-length' => 345,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello',
+                                       'x-object-meta-custom' => 5,
+                                       'x-object-meta-sha1Base36' => 'a3deadfg...',
+                               ),
+                               array(
+                                       'x-object-meta-custom' => 5,
+                                       'x-object-meta-sha1base36' => 'a3deadfg...',
+                               )
+                       )
+               );
+       }
+
+       /**
+        * @dataProvider provider_testGetMetadata
+        * @covers SwiftFileBackend::getMetadata
+        */
+       public function testGetMetadata( $raw, $sanitized ) {
+               $hdrs = $this->backend->getMetadata( $raw );
+
+               $this->assertEquals( $hdrs, $sanitized, 'getMetadata() has expected result' );
+       }
+
+       public static function provider_testGetMetadata() {
+               return array(
+                       array(
+                               array(
+                                       'content-length' => 345,
+                                       'content-custom' => 'hello',
+                                       'x-content-custom' => 'hello',
+                                       'x-object-meta-custom' => 5,
+                                       'x-object-meta-sha1Base36' => 'a3deadfg...',
+                               ),
+                               array(
+                                       'custom' => 5,
+                                       'sha1base36' => 'a3deadfg...',
+                               )
+                       )
+               );
+       }
+}
\ No newline at end of file
index 6142f96..22ad6ce 100644 (file)
@@ -133,12 +133,7 @@ class CSSMinTest extends MediaWikiTestCase {
                $remotePath = 'http://localhost/w/';
 
                $realOutput = CSSMin::remap( $input, $localPath, $remotePath );
-
-               $this->assertEquals(
-                       $expectedOutput,
-                       preg_replace( '/\d+-\d+-\d+T\d+:\d+:\d+Z/', 'timestamp', $realOutput ),
-                       "CSSMin::remap: $message"
-               );
+               $this->assertEquals( $expectedOutput, $realOutput, "CSSMin::remap: $message" );
        }
 
        public static function provideIsRemoteUrl() {
@@ -197,7 +192,7 @@ class CSSMinTest extends MediaWikiTestCase {
                        array(
                                'Regular file',
                                'foo { background: url(red.gif); }',
-                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                               'foo { background: url(http://localhost/w/red.gif?34ac6); }',
                        ),
                        array(
                                'Regular file (missing)',
@@ -242,12 +237,12 @@ class CSSMinTest extends MediaWikiTestCase {
                        array(
                                'Embedded file',
                                'foo { /* @embed */ background: url(red.gif); }',
-                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; }",
                        ),
                        array(
                                'Embedded file, other comments before the rule',
                                "foo { /* Bar. */ /* @embed */ background: url(red.gif); }",
-                               "foo { /* Bar. */ background: url($red); /* Bar. */ background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                               "foo { /* Bar. */ background: url($red); /* Bar. */ background: url(http://localhost/w/red.gif?34ac6)!ie; }",
                        ),
                        array(
                                'Can not re-embed data: URIs',
@@ -268,12 +263,12 @@ class CSSMinTest extends MediaWikiTestCase {
                                'Embedded file (inline @embed)',
                                'foo { background: /* @embed */ url(red.gif); }',
                                "foo { background: url($red); "
-                                       . "background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                                       . "background: url(http://localhost/w/red.gif?34ac6)!ie; }",
                        ),
                        array(
                                'Can not embed large files',
                                'foo { /* @embed */ background: url(large.png); }',
-                               "foo { background: url(http://localhost/w/large.png?timestamp); }",
+                               "foo { background: url(http://localhost/w/large.png?e3d1f); }",
                        ),
                        array(
                                'SVG files are embedded without base64 encoding and unnecessary IE 6 and 7 fallback',
@@ -283,55 +278,55 @@ class CSSMinTest extends MediaWikiTestCase {
                        array(
                                'Two regular files in one rule',
                                'foo { background: url(red.gif), url(green.gif); }',
-                               'foo { background: url(http://localhost/w/red.gif?timestamp), '
-                                       . 'url(http://localhost/w/green.gif?timestamp); }',
+                               'foo { background: url(http://localhost/w/red.gif?34ac6), '
+                                       . 'url(http://localhost/w/green.gif?13651); }',
                        ),
                        array(
                                'Two embedded files in one rule',
                                'foo { /* @embed */ background: url(red.gif), url(green.gif); }',
                                "foo { background: url($red), url($green); "
-                                       . "background: url(http://localhost/w/red.gif?timestamp), "
-                                       . "url(http://localhost/w/green.gif?timestamp)!ie; }",
+                                       . "background: url(http://localhost/w/red.gif?34ac6), "
+                                       . "url(http://localhost/w/green.gif?13651)!ie; }",
                        ),
                        array(
                                'Two embedded files in one rule (inline @embed)',
                                'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }',
                                "foo { background: url($red), url($green); "
-                                       . "background: url(http://localhost/w/red.gif?timestamp), "
-                                       . "url(http://localhost/w/green.gif?timestamp)!ie; }",
+                                       . "background: url(http://localhost/w/red.gif?34ac6), "
+                                       . "url(http://localhost/w/green.gif?13651)!ie; }",
                        ),
                        array(
                                'Two embedded files in one rule (inline @embed), one too large',
                                'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }',
-                               "foo { background: url($red), url(http://localhost/w/large.png?timestamp); "
-                                       . "background: url(http://localhost/w/red.gif?timestamp), "
-                                       . "url(http://localhost/w/large.png?timestamp)!ie; }",
+                               "foo { background: url($red), url(http://localhost/w/large.png?e3d1f); "
+                                       . "background: url(http://localhost/w/red.gif?34ac6), "
+                                       . "url(http://localhost/w/large.png?e3d1f)!ie; }",
                        ),
                        array(
                                'Practical example with some noise',
                                'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }',
                                "foo { background: #f9f9f9 url($red) 0 0 no-repeat; "
-                                       . "background: #f9f9f9 url(http://localhost/w/red.gif?timestamp) 0 0 no-repeat!ie; }",
+                                       . "background: #f9f9f9 url(http://localhost/w/red.gif?34ac6) 0 0 no-repeat!ie; }",
                        ),
                        array(
                                'Does not mess with other properties',
                                'foo { color: red; background: url(red.gif); font-size: small; }',
-                               'foo { color: red; background: url(http://localhost/w/red.gif?timestamp); font-size: small; }',
+                               'foo { color: red; background: url(http://localhost/w/red.gif?34ac6); font-size: small; }',
                        ),
                        array(
                                'Spacing and miscellanea not changed (1)',
                                'foo {   background:    url(red.gif);  }',
-                               'foo {   background:    url(http://localhost/w/red.gif?timestamp);  }',
+                               'foo {   background:    url(http://localhost/w/red.gif?34ac6);  }',
                        ),
                        array(
                                'Spacing and miscellanea not changed (2)',
                                'foo {background:url(red.gif)}',
-                               'foo {background:url(http://localhost/w/red.gif?timestamp)}',
+                               'foo {background:url(http://localhost/w/red.gif?34ac6)}',
                        ),
                        array(
                                'Spaces within url() parentheses are ignored',
                                'foo { background: url( red.gif ); }',
-                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                               'foo { background: url(http://localhost/w/red.gif?34ac6); }',
                        ),
                        array(
                                '@import rule to local file (should we remap this?)',
@@ -351,22 +346,22 @@ class CSSMinTest extends MediaWikiTestCase {
                        array(
                                'Simple case with comments after url',
                                'foo { prop: url(red.gif)/* some {funny;} comment */ ; }',
-                               'foo { prop: url(http://localhost/w/red.gif?timestamp)/* some {funny;} comment */ ; }',
+                               'foo { prop: url(http://localhost/w/red.gif?34ac6)/* some {funny;} comment */ ; }',
                        ),
                        array(
                                'Embedded file with comment before url',
                                'foo { /* @embed */ background: /* some {funny;} comment */ url(red.gif); }',
-                               "foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?timestamp)!ie; }",
+                               "foo { background: /* some {funny;} comment */ url($red); background: /* some {funny;} comment */ url(http://localhost/w/red.gif?34ac6)!ie; }",
                        ),
                        array(
                                'Embedded file with comments inside and outside the rule',
                                'foo { /* @embed */ background: url(red.gif) /* some {foo;} comment */; /* some {bar;} comment */ }',
-                               "foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?timestamp) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
+                               "foo { background: url($red) /* some {foo;} comment */; background: url(http://localhost/w/red.gif?34ac6) /* some {foo;} comment */!ie; /* some {bar;} comment */ }",
                        ),
                        array(
                                'Embedded file with comment outside the rule',
                                'foo { /* @embed */ background: url(red.gif); /* some {funny;} comment */ }',
-                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; /* some {funny;} comment */ }",
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?34ac6)!ie; /* some {funny;} comment */ }",
                        ),
                        array(
                                'Rule with two urls, each with comments',
index 13908b9..d23534e 100644 (file)
@@ -140,6 +140,13 @@ class JavaScriptMinifierTest extends PHPUnit_Framework_TestCase {
                        array( "5..toString();", "5..toString();" ),
                        array( "5...toString();", false ),
                        array( "5.\n.toString();", '5..toString();' ),
+
+                       // Boolean minification (!0 / !1)
+                       array( "var a = { b: true };", "var a={b:!0};" ),
+                       array( "var a = { true: 12 };", "var a={true:12};", false ),
+                       array( "a.true = 12;", "a.true=12;", false ),
+                       array( "a.foo = true;", "a.foo=!0;" ),
+                       array( "a.foo = false;", "a.foo=!1;" ),
                );
        }
 
@@ -147,15 +154,17 @@ class JavaScriptMinifierTest extends PHPUnit_Framework_TestCase {
         * @dataProvider provideCases
         * @covers JavaScriptMinifier::minify
         */
-       public function testJavaScriptMinifierOutput( $code, $expectedOutput ) {
+       public function testJavaScriptMinifierOutput( $code, $expectedOutput, $expectedValid = true ) {
                $minified = JavaScriptMinifier::minify( $code );
 
                // JSMin+'s parser will throw an exception if output is not valid JS.
                // suppression of warnings needed for stupid crap
-               MediaWiki\suppressWarnings();
-               $parser = new JSParser();
-               MediaWiki\restoreWarnings();
-               $parser->parse( $minified, 'minify-test.js', 1 );
+               if ( $expectedValid ) {
+                       MediaWiki\suppressWarnings();
+                       $parser = new JSParser();
+                       MediaWiki\restoreWarnings();
+                       $parser->parse( $minified, 'minify-test.js', 1 );
+               }
 
                $this->assertEquals(
                        $expectedOutput,
index a9d3cc1..aea037e 100644 (file)
@@ -29,10 +29,17 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
                        'args' => array( function() {
                                return 'unwrapped';
                        }, ),
+                       'calls' => array(
+                               'setter' => array( function() {
+                                       return 'unwrapped';
+                               }, ),
+                       ),
                        'closure_expansion' => false,
                ) );
                $this->assertInstanceOf( 'Closure', $obj->args[0] );
                $this->assertSame( 'unwrapped', $obj->args[0]() );
+               $this->assertInstanceOf( 'Closure', $obj->setterArgs[0] );
+               $this->assertSame( 'unwrapped', $obj->setterArgs[0]() );
        }
 
        /**
@@ -44,25 +51,43 @@ class ObjectFactoryTest extends PHPUnit_Framework_TestCase {
                        'args' => array( function() {
                                return 'unwrapped';
                        }, ),
+                       'calls' => array(
+                               'setter' => array( function() {
+                                       return 'unwrapped';
+                               }, ),
+                       ),
                        'closure_expansion' => true,
                ) );
                $this->assertInternalType( 'string', $obj->args[0] );
                $this->assertSame( 'unwrapped', $obj->args[0] );
+               $this->assertInternalType( 'string', $obj->setterArgs[0] );
+               $this->assertSame( 'unwrapped', $obj->setterArgs[0] );
 
                $obj = ObjectFactory::getObjectFromSpec( array(
                        'class' => 'ObjectFactoryTest_Fixture',
                        'args' => array( function() {
                                return 'unwrapped';
                        }, ),
+                       'calls' => array(
+                               'setter' => array( function() {
+                                       return 'unwrapped';
+                               }, ),
+                       ),
                ) );
                $this->assertInternalType( 'string', $obj->args[0] );
                $this->assertSame( 'unwrapped', $obj->args[0] );
+               $this->assertInternalType( 'string', $obj->setterArgs[0] );
+               $this->assertSame( 'unwrapped', $obj->setterArgs[0] );
        }
 }
 
 class ObjectFactoryTest_Fixture {
        public $args;
+       public $setterArgs;
        public function __construct( /*...*/ ) {
                $this->args = func_get_args();
        }
+       public function setter( /*...*/ ) {
+               $this->setterArgs = func_get_args();
+       }
 }
diff --git a/tests/phpunit/includes/libs/SamplingStatsdClientTest.php b/tests/phpunit/includes/libs/SamplingStatsdClientTest.php
new file mode 100644 (file)
index 0000000..be6732d
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+use Liuggio\StatsdClient\Entity\StatsdData;
+
+class SamplingStatsdClientTest extends PHPUnit_Framework_TestCase {
+       /**
+        * @dataProvider samplingDataProvider
+        */
+       public function testSampling( $data, $sampleRate, $seed, $expectWrite ) {
+               $sender = $this->getMock( 'Liuggio\StatsdClient\Sender\SenderInterface' );
+               $sender->expects( $this->any() )->method( 'open' )->will( $this->returnValue( true ) );
+               if ( $expectWrite ) {
+                       $sender->expects( $this->once() )->method( 'write' )
+                               ->with( $this->anything(), $this->equalTo( $data ) );
+               } else {
+                       $sender->expects( $this->never() )->method( 'write' );
+               }
+               mt_srand( $seed );
+               $client = new SamplingStatsdClient( $sender );
+               $client->send( $data, $sampleRate );
+       }
+
+       public function samplingDataProvider() {
+               $unsampled = new StatsdData();
+               $unsampled->setKey( 'foo' );
+               $unsampled->setValue( 1 );
+
+               $sampled = new StatsdData();
+               $sampled->setKey( 'foo' );
+               $sampled->setValue( 1 );
+               $sampled->setSampleRate( '0.1' );
+
+               return array(
+                       // $data, $sampleRate, $seed, $expectWrite
+                       array( $unsampled, 1, 0 /*0.44*/, $unsampled ),
+                       array( $sampled, 1, 0 /*0.44*/, null ),
+                       array( $sampled, 1, 4 /*0.03*/, $sampled ),
+                       array( $unsampled, 0.1, 4 /*0.03*/, $sampled ),
+                       array( $sampled, 0.5, 0 /*0.44*/, null ),
+                       array( $sampled, 0.5, 4 /*0.03*/, $sampled ),
+               );
+       }
+}
index cab6794..e88452b 100644 (file)
@@ -48,6 +48,7 @@ abstract class LogFormatterTestCase extends MediaWikiLangTestCase {
        }
 
        private static function removeSomeHtml( $html ) {
+               $html = str_replace( '&quot;', '"', $html );
                return trim( preg_replace( '/<(a|span)[^>]*>([^<]*)<\/\1>/', '$2', $html ) );
        }
 
diff --git a/tests/phpunit/includes/logging/ProtectLogFormatterTest.php b/tests/phpunit/includes/logging/ProtectLogFormatterTest.php
new file mode 100644 (file)
index 0000000..611b2df
--- /dev/null
@@ -0,0 +1,63 @@
+<?php
+
+class ProtectLogFormatterTest extends LogFormatterTestCase {
+
+       /**
+        * Provide different rows from the logging table to test
+        * for backward compatibility.
+        * Do not change the existing data, just add a new database row
+        */
+       public static function provideMoveProtLogDatabaseRows() {
+               return array(
+                       // Current format
+                       array(
+                               array(
+                                       'type' => 'protect',
+                                       'action' => 'move_prot',
+                                       'comment' => 'Move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'NewPage',
+                                       'params' => array(
+                                               '4::oldtitle' => 'OldPage',
+                                       ),
+                               ),
+                               array(
+                                       'text' => 'User moved protection settings from OldPage to NewPage',
+                                       'api' => array(
+                                               'oldtitle_ns' => 0,
+                                               'oldtitle_title' => 'OldPage',
+                                       ),
+                               ),
+                       ),
+
+                       // Legacy format
+                       array(
+                               array(
+                                       'type' => 'protect',
+                                       'action' => 'move_prot',
+                                       'comment' => 'Move comment',
+                                       'namespace' => NS_MAIN,
+                                       'title' => 'NewPage',
+                                       'params' => array(
+                                               'OldPage',
+                                       ),
+                               ),
+                               array(
+                                       'legacy' => true,
+                                       'text' => 'User moved protection settings from OldPage to NewPage',
+                                       'api' => array(
+                                               'oldtitle_ns' => 0,
+                                               'oldtitle_title' => 'OldPage',
+                                       ),
+                               ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideMoveProtLogDatabaseRows
+        */
+       public function testMoveProtLogDatabaseRows( $row, $extra ) {
+               $this->doTestLogFormatter( $row, $extra );
+       }
+}
index 4516bb4..fcc15d3 100644 (file)
@@ -3,6 +3,7 @@
  * @author Matthias Mullie <mmullie@wikimedia.org>
  */
 class BagOStuffTest extends MediaWikiTestCase {
+       /** @var BagOStuff */
        private $cache;
 
        protected function setUp() {
@@ -152,4 +153,21 @@ class BagOStuffTest extends MediaWikiTestCase {
                $this->cache->delete( $key1 );
                $this->cache->delete( $key2 );
        }
+
+       /**
+        * @covers BagOStuff::getScopedLock
+        */
+       public function testGetScopedLock() {
+               $key = wfMemcKey( 'test' );
+               $value1 = $this->cache->getScopedLock( $key, 0 );
+               $value2 = $this->cache->getScopedLock( $key, 0 );
+
+               $this->assertType( 'ScopedCallback', $value1, 'First call returned lock' );
+               $this->assertNull( $value2, 'Duplicate call returned no lock' );
+
+               unset( $value1 );
+
+               $value3 = $this->cache->getScopedLock( $key, 0 );
+               $this->assertType( 'ScopedCallback', $value3, 'Lock returned callback after release' );
+       }
 }
index a79c9a8..0964137 100644 (file)
@@ -38,6 +38,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
        }
 
        public static function provideRegisterHooks() {
+               $merge = array( ExtensionRegistry::MERGE_STRATEGY => 'array_merge_recursive' );
                // Format:
                // Current $wgHooks
                // Content in extension.json
@@ -47,19 +48,19 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                        array(
                                array(),
                                self::$default,
-                               array(),
+                               $merge,
                        ),
                        // No current hooks, adding one for "FooBaz"
                        array(
                                array(),
                                array( 'Hooks' => array( 'FooBaz' => 'FooBazCallback' ) ) + self::$default,
-                               array( 'FooBaz' => array( 'FooBazCallback' ) ),
+                               array( 'FooBaz' => array( 'FooBazCallback' ) ) + $merge,
                        ),
                        // Hook for "FooBaz", adding another one
                        array(
                                array( 'FooBaz' => array( 'PriorCallback' ) ),
                                array( 'Hooks' => array( 'FooBaz' => 'FooBazCallback' ) ) + self::$default,
-                               array( 'FooBaz' => array( 'PriorCallback', 'FooBazCallback' ) ),
+                               array( 'FooBaz' => array( 'PriorCallback', 'FooBazCallback' ) ) + $merge,
                        ),
                        // Hook for "BarBaz", adding one for "FooBaz"
                        array(
@@ -68,7 +69,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                                array(
                                        'BarBaz' => array( 'BarBazCallback' ),
                                        'FooBaz' => array( 'FooBazCallback' ),
-                               ),
+                               ) + $merge,
                        ),
                        // Callbacks for FooBaz wrapped in an array
                        array(
@@ -76,7 +77,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                                array( 'Hooks' => array( 'FooBaz' => array( 'Callback1' ) ) ) + self::$default,
                                array(
                                        'FooBaz' => array( 'Callback1' ),
-                               ),
+                               ) + $merge,
                        ),
                        // Multiple callbacks for FooBaz hook
                        array(
@@ -84,7 +85,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
                                array( 'Hooks' => array( 'FooBaz' => array( 'Callback1', 'Callback2' ) ) ) + self::$default,
                                array(
                                        'FooBaz' => array( 'Callback1', 'Callback2' ),
-                               ),
+                               ) + $merge,
                        ),
                );
        }
index 515ce11..b8b1b06 100644 (file)
@@ -101,6 +101,50 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                                        ),
                                )
                        ),
+                       array(
+                               'Global already set, 1d array that appends',
+                               array(
+                                       'mwAvailableRights' => array(
+                                               'foobar',
+                                               'foo'
+                                       ),
+                               ),
+                               array(
+                                       'mwAvailableRights' => array(
+                                               'barbaz',
+                                       ),
+                               ),
+                               array(
+                                       'mwAvailableRights' => array(
+                                               'barbaz',
+                                               'foobar',
+                                               'foo',
+                                       ),
+                               )
+                       ),
+                       array(
+                               'Global already set, 2d array with integer keys',
+                               array(
+                                       'mwNamespacesFoo' => array(
+                                               100 => true,
+                                               102 => false
+                                       ),
+                               ),
+                               array(
+                                       'mwNamespacesFoo' => array(
+                                               100 => false,
+                                               500 => true,
+                                               ExtensionRegistry::MERGE_STRATEGY => 'array_plus',
+                                       ),
+                               ),
+                               array(
+                                       'mwNamespacesFoo' => array(
+                                               100 => false,
+                                               102 => false,
+                                               500 => true,
+                                       ),
+                               )
+                       ),
                        array(
                                'No global already set, $wgHooks',
                                array(
@@ -111,6 +155,7 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                                                'FooBarEvent' => array(
                                                        'FooBarClass::onFooBarEvent'
                                                ),
+                                               ExtensionRegistry::MERGE_STRATEGY => 'array_merge_recursive'
                                        ),
                                ),
                                array(
@@ -138,6 +183,7 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                                                'FooBarEvent' => array(
                                                        'BazBarClass::onFooBarEvent',
                                                ),
+                                               ExtensionRegistry::MERGE_STRATEGY => 'array_merge_recursive',
                                        ),
                                ),
                                array(
@@ -173,7 +219,8 @@ class ExtensionRegistryTest extends MediaWikiTestCase {
                                                        'right' => true,
                                                        'somethingtwo' => false,
                                                        'nonduplicated' => true,
-                                               )
+                                               ),
+                                               ExtensionRegistry::MERGE_STRATEGY => 'array_plus_2d',
                                        ),
                                ),
                                array(
index 490f5c6..cb91614 100644 (file)
@@ -10,7 +10,8 @@ class ResourceLoaderStartUpModuleTest extends ResourceLoaderTestCase {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [] );'
+} );
+mw.loader.register( [] );'
                        ) ),
                        array( array(
                                'msg' => 'Basic registry',
@@ -20,7 +21,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -37,7 +39,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -65,7 +68,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -87,7 +91,8 @@ mw.loader.addSource( {
 mw.loader.addSource( {
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse",
@@ -123,7 +128,8 @@ mw.loader.addSource( {
                                'out' => '
 mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.x.core",
         "wvTifjse"
@@ -219,7 +225,8 @@ mw.loader.addSource( {
 mw.loader.addSource( {
     "local": "/w/load.php",
     "example": "http://example.org/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
@@ -342,7 +349,7 @@ mw.loader.addSource( {
                $rl->register( $modules );
                $module = new ResourceLoaderStartUpModule();
                $this->assertEquals(
-'mw.loader.addSource({"local":"/w/load.php"});'
+'mw.loader.addSource({"local":"/w/load.php"});' . "\n"
 . 'mw.loader.register(['
 . '["test.blank","wvTifjse"],'
 . '["test.min","wvTifjse",[0],null,null,'
@@ -364,7 +371,8 @@ mw.loader.addSource( {
                $this->assertEquals(
 'mw.loader.addSource( {
     "local": "/w/load.php"
-} );mw.loader.register( [
+} );
+mw.loader.register( [
     [
         "test.blank",
         "wvTifjse"
index 673ba54..48ef524 100644 (file)
@@ -130,4 +130,28 @@ class DBSiteStoreTest extends MediaWikiTestCase {
                $sites = $store->getSites();
                $this->assertEquals( 0, $sites->count() );
        }
+
+       /**
+        * @covers DBSiteStore::getSites
+        */
+       public function testGetSitesDefaultOrder() {
+               $store = new DBSiteStore();
+               $siteB = new Site();
+               $siteB->setGlobalId( 'B' );
+               $siteA = new Site();
+               $siteA->setGlobalId( 'A' );
+               $store->saveSites( array( $siteB, $siteA ) );
+
+               $sites = $store->getSites();
+               $siteIdentifiers = array();
+               /** @var Site $site */
+               foreach ( $sites as $site ) {
+                       $siteIdentifiers[] = $site->getGlobalId();
+               }
+               $this->assertSame( array( 'A', 'B' ), $siteIdentifiers );
+
+               // Note: SiteList::getGlobalIdentifiers uses an other internal state. Iteration must be
+               // tested separately.
+               $this->assertSame( array( 'A', 'B' ), $sites->getGlobalIdentifiers() );
+       }
 }
index 5482b97..7e60fdd 100644 (file)
@@ -141,4 +141,107 @@ class SpecialSearchTest extends MediaWikiTestCase {
                        "Search term '{$term}' should not be expanded in Special:Search <title>"
                );
        }
+
+       public function provideRewriteQueryWithSuggestion() {
+               return array(
+                       array(
+                               'With results and a suggestion does not run suggested query',
+                               '/Did you mean: <a[^>]+>first suggestion/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array(
+                                               SearchResult::newFromTitle( Title::newMainPage() ),
+                                       ) ),
+                                       new SpecialSearchTestMockResultSet( 'was never run', array() ),
+                               ),
+                       ),
+
+                       array(
+                               'With no results and a suggestion responds with suggested query results',
+                               '/Showing results for <a[^>]+>first suggestion/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array() ),
+                                       new SpecialSearchTestMockResultSet( 'second suggestion', array(
+                                               SearchResult::newFromTitle( Title::newMainPage() ),
+                                       ) ),
+                               ),
+                       ),
+
+                       array(
+                               'When both queries have no results user gets no results',
+                               '/There were no results matching the query/',
+                               array(
+                                       new SpecialSearchTestMockResultSet( 'first suggestion', array() ),
+                                       new SpecialSearchTestMockResultSet( 'second suggestion', array() ),
+                               ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provideRewriteQueryWithSuggestion
+        */
+       public function testRewriteQueryWithSuggestion( $message, $expectRegex, $fromResults ) {
+               $mockSearchEngine = $this->mockSearchEngine( $fromResults );
+               $search = $this->getMockBuilder( 'SpecialSearch' )
+                       ->setMethods( array( 'getSearchEngine' ) )
+                       ->getMock();
+               $search->expects( $this->any() )
+                       ->method( 'getSearchEngine' )
+                       ->will( $this->returnValue( $mockSearchEngine ) );
+
+               $search->getContext()->setTitle( Title::makeTitle( NS_SPECIAL, 'Search' ) );
+               $search->load();
+               $search->showResults( 'this is a fake search' );
+
+               $html = $search->getContext()->getOutput()->getHTML();
+               foreach ( (array)$expectRegex as $regex ) {
+                       $this->assertRegExp( $regex, $html, $message );
+               }
+       }
+
+       protected function mockSearchEngine( array $returnValues ) {
+               $mock = $this->getMockBuilder( 'SearchEngine' )
+                       ->setMethods( array( 'searchText' ) )
+                       ->getMock();
+
+               $mock->expects( $this->any() )
+                       ->method( 'searchText' )
+                       ->will( call_user_func_array(
+                               array( $this, 'onConsecutiveCalls' ),
+                               array_map( array( $this, 'returnValue' ), $returnValues )
+                       ) );
+
+               return $mock;
+       }
+}
+
+class SpecialSearchTestMockResultSet extends SearchResultSet {
+       protected $results;
+       protected $suggestion;
+
+       public function __construct( $suggestion = null, array $results = array(), $containedSyntax = false) {
+               $this->results = $results;
+               $this->suggestion = $suggestion;
+               $this->containedSyntax = $containedSyntax;
+       }
+
+       public function numRows() {
+               return count( $this->results );
+       }
+
+       public function getTotalHits() {
+               return $this->numRows();
+       }
+
+       public function hasSuggestion() {
+               return $this->suggestion !== null;
+       }
+
+       public function getSuggestionQuery() {
+               return $this->suggestion;
+       }
+
+       public function getSuggestionSnippet() {
+               return $this->suggestion;
+       }
 }
diff --git a/tests/phpunit/includes/utils/BatchRowUpdateTest.php b/tests/phpunit/includes/utils/BatchRowUpdateTest.php
new file mode 100644 (file)
index 0000000..a2b35f3
--- /dev/null
@@ -0,0 +1,243 @@
+<?php
+
+/**
+ * Tests for BatchRowUpdate and its components
+ *
+ * @group db
+ */
+class BatchRowUpdateTest extends MediaWikiTestCase {
+
+       public function testWriterBasicFunctionality() {
+               $db = $this->mockDb();
+               $writer = new BatchRowWriter( $db, 'echo_event' );
+
+               $updates = array(
+                       self::mockUpdate( array( 'something' => 'changed' ) ),
+                       self::mockUpdate( array( 'otherthing' => 'changed' ) ),
+                       self::mockUpdate( array( 'and' => 'something', 'else' => 'changed' ) ),
+               );
+
+               $db->expects( $this->exactly( count( $updates ) ) )
+                       ->method( 'update' );
+
+               $writer->write( $updates );
+       }
+
+       static protected function mockUpdate( array $changes ) {
+               static $i = 0;
+               return array(
+                       'primaryKey' => array( 'event_id' => $i++ ),
+                       'changes' => $changes,
+               );
+       }
+
+       public function testReaderBasicIterate() {
+               $db = $this->mockDb();
+               $batchSize = 2;
+               $reader = new BatchRowIterator( $db, 'some_table', 'id_field', $batchSize );
+
+               $response = $this->genSelectResult( $batchSize, /*numRows*/ 5, function() {
+                       static $i = 0;
+                       return array( 'id_field' => ++$i );
+               } );
+               $db->expects( $this->exactly( count( $response ) ) )
+                       ->method( 'select' )
+                       ->will( $this->consecutivelyReturnFromSelect( $response ) );
+
+               $pos = 0;
+               foreach ( $reader as $rows ) {
+                       $this->assertEquals( $response[$pos], $rows, "Testing row in position $pos" );
+                       $pos++;
+               }
+               // -1 is because the final array() marks the end and isnt included
+               $this->assertEquals( count( $response ) - 1, $pos );
+       }
+
+       static public function provider_readerGetPrimaryKey() {
+               $row = array(
+                       'id_field' => 42,
+                       'some_col' => 'dvorak',
+                       'other_col' => 'samurai',
+               );
+               return array(
+
+                       array(
+                               'Must return single column pk when requested',
+                               array( 'id_field' => 42 ),
+                               $row
+                       ),
+
+                       array(
+                               'Must return multiple column pks when requested',
+                               array( 'id_field' => 42, 'other_col' => 'samurai' ),
+                               $row
+                       ),
+
+               );
+       }
+
+       /**
+        * @dataProvider provider_readerGetPrimaryKey
+        */
+       public function testReaderGetPrimaryKey( $message, array $expected, array $row ) {
+               $reader = new BatchRowIterator( $this->mockDb(), 'some_table', array_keys( $expected ), 8675309 );
+               $this->assertEquals( $expected, $reader->extractPrimaryKeys( (object) $row ), $message );
+       }
+
+       static public function provider_readerSetFetchColumns() {
+               return array(
+
+                       array(
+                               'Must merge primary keys into select conditions',
+                               // Expected column select
+                               array( 'foo', 'bar' ),
+                               // primary keys
+                               array( 'foo' ),
+                               // setFetchColumn
+                               array( 'bar' )
+                       ),
+
+                       array(
+                               'Must not merge primary keys into the all columns selector',
+                               // Expected column select
+                               array( '*' ),
+                               // primary keys
+                               array( 'foo' ),
+                               // setFetchColumn
+                               array( '*' ),
+                       ),
+
+                       array(
+                               'Must not duplicate primary keys into column selector',
+                               // Expected column select.
+                               // TODO: figure out how to only assert the array_values portion and not the keys
+                               array( 0 => 'foo', 1 => 'bar', 3 => 'baz' ),
+                               // primary keys
+                               array( 'foo', 'bar', ),
+                               // setFetchColumn
+                               array( 'bar', 'baz' ),
+                       ),
+               );
+       }
+
+       /**
+        * @dataProvider provider_readerSetFetchColumns
+        */
+       public function testReaderSetFetchColumns( $message, array $columns, array $primaryKeys, array $fetchColumns ) {
+               $db = $this->mockDb();
+               $db->expects( $this->once() )
+                       ->method( 'select' )
+                       ->with( 'some_table', $columns ) // only testing second parameter of DatabaseBase::select
+                       ->will( $this->returnValue( new ArrayIterator( array() ) ) );
+
+               $reader = new BatchRowIterator( $db, 'some_table', $primaryKeys, 22 );
+               $reader->setFetchColumns( $fetchColumns );
+               // triggers first database select
+               $reader->rewind();
+       }
+
+       static public function provider_readerSelectConditions() {
+               return array(
+
+                       array(
+                               "With single primary key must generate id > 'value'",
+                               // Expected second iteration
+                               array( "( id_field > '3' )" ),
+                               // Primary key(s)
+                               'id_field',
+                       ),
+
+                       array(
+                               'With multiple primary keys the first conditions must use >= and the final condition must use >',
+                               // Expected second iteration
+                               array( "( id_field = '3' AND foo > '103' ) OR ( id_field > '3' )" ),
+                               // Primary key(s)
+                               array( 'id_field', 'foo' ),
+                       ),
+
+               );
+       }
+
+       /**
+        * Slightly hackish to use reflection, but asserting different parameters
+        * to consecutive calls of DatabaseBase::select in phpunit is error prone
+        *
+        * @dataProvider provider_readerSelectConditions
+        */
+       public function testReaderSelectConditionsMultiplePrimaryKeys( $message, $expectedSecondIteration, $primaryKeys, $batchSize = 3 ) {
+               $results = $this->genSelectResult( $batchSize, $batchSize * 3, function() {
+                       static $i = 0, $j = 100, $k = 1000;
+                       return array( 'id_field' => ++$i, 'foo' => ++$j, 'bar' => ++$k );
+               } );
+               $db = $this->mockDbConsecutiveSelect( $results );
+
+               $conditions = array( 'bar' => 42, 'baz' => 'hai' );
+               $reader = new BatchRowIterator( $db, 'some_table', $primaryKeys, $batchSize );
+               $reader->addConditions( $conditions );
+
+               $buildConditions = new ReflectionMethod( $reader, 'buildConditions' );
+               $buildConditions->setAccessible( true );
+
+               // On first iteration only the passed conditions must be used
+               $this->assertEquals( $conditions, $buildConditions->invoke( $reader ),
+                       'First iteration must return only the conditions passed in addConditions' );
+               $reader->rewind();
+
+               // Second iteration must use the maximum primary key of last set
+               $this->assertEquals(
+                       $conditions + $expectedSecondIteration,
+                       $buildConditions->invoke( $reader ),
+                       $message
+               );
+       }
+
+       protected function mockDbConsecutiveSelect( array $retvals ) {
+               $db = $this->mockDb();
+               $db->expects( $this->any() )
+                       ->method( 'select' )
+                       ->will( $this->consecutivelyReturnFromSelect( $retvals ) );
+               $db->expects( $this->any() )
+                       ->method( 'addQuotes' )
+                       ->will( $this->returnCallback( function( $value ) {
+                               return "'$value'"; // not real quoting: doesn't matter in test
+                       } ) );
+
+               return $db;
+       }
+
+       protected function consecutivelyReturnFromSelect( array $results ) {
+               $retvals = array();
+               foreach ( $results as $rows ) {
+                       // The DatabaseBase::select method returns iterators, so we do too.
+                       $retvals[] = $this->returnValue( new ArrayIterator( $rows ) );
+               }
+
+               return call_user_func_array( array( $this, 'onConsecutiveCalls' ), $retvals );
+       }
+
+
+       protected function genSelectResult( $batchSize, $numRows, $rowGenerator ) {
+               $res = array();
+               for ( $i = 0; $i < $numRows; $i += $batchSize ) {
+                       $rows = array();
+                       for ( $j = 0; $j < $batchSize && $i + $j < $numRows; $j++ ) {
+                               $rows [] = (object) call_user_func( $rowGenerator );
+                       }
+                       $res[] = $rows;
+               }
+               $res[] = array(); // termination condition requires empty result for last row
+               return $res;
+       }
+
+       protected function mockDb() {
+               // Cant mock from DatabaseType or DatabaseBase, they dont
+               // have the full gamut of methods
+               $databaseMysql = $this->getMockBuilder( 'DatabaseMysql' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+               $databaseMysql->expects( $this->any() )
+                       ->method( 'isOpen' )
+                       ->will( $this->returnValue( true ) );
+               return $databaseMysql;
+       }
+}
index 3608a53..bcfdead 100644 (file)
@@ -68,6 +68,7 @@ return array(
                        'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js',
+                       'tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
                        'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
@@ -113,6 +114,7 @@ return array(
                        'mediawiki.jqueryMsg',
                        'mediawiki.messagePoster',
                        'mediawiki.RegExp',
+                       'mediawiki.storage',
                        'mediawiki.Title',
                        'mediawiki.toc',
                        'mediawiki.Uri',
index 61ebbf8..0fcaa5f 100644 (file)
@@ -133,8 +133,7 @@ class GenerateJqueryMsgData extends Maintenance {
                                . "// languages, and parser modes. Intended for use by a unit test framework by looping\n"
                                . "// through the object and comparing its parser return value with the 'result' property.\n"
                                . '// Last generated with ' . basename( __FILE__ ) . ' at ' . gmdate( 'r' ) . "\n"
-                               // This file will contain unquoted JSON strings as javascript native object literals,
-                               // flip the quotemark convention for this file.
+                               . "//jscs:disable\n"
                                . "\n"
                                . 'mediaWiki.libs.phpParserData = ' . FormatJson::encode( $phpParserData, true ) . ";\n";
 
index 4ab5f14..498acc1 100644 (file)
@@ -1,7 +1,8 @@
 // This file stores the output from the PHP parser for various messages, arguments,
 // languages, and parser modes. Intended for use by a unit test framework by looping
 // through the object and comparing its parser return value with the 'result' property.
-// Last generated with generateJqueryMsgData.php at Thu, 30 Jan 2014 04:04:41 +0000
+// Last generated with generateJqueryMsgData.php at Fri, 10 Jul 2015 11:44:08 +0000
+//jscs:disable
 
 mediaWiki.libs.phpParserData = {
     "messages": {
index 41754b4..78771de 100644 (file)
                                },
 
                                teardown: function () {
-                                       var timers, active;
+                                       var timers, pending, $activeLen;
 
                                        localEnv.teardown.call( this );
 
                                        }
 
                                        // Test should use fake XHR, wait for requests, or call abort()
-                                       if ( $.active !== undefined && $.active !== 0 ) {
-                                               active = $.grep( ajaxRequests, function ( ajax ) {
+                                       $activeLen = $.active;
+                                       if ( $activeLen !== undefined && $activeLen !== 0 ) {
+                                               pending = $.grep( ajaxRequests, function ( ajax ) {
                                                        return ajax.xhr.state() === 'pending';
                                                } );
-                                               if ( active.length !== $.active ) {
+                                               if ( pending.length !== $activeLen ) {
                                                        mw.log.warn( 'Pending requests does not match jQuery.active count' );
                                                }
                                                // Force requests to stop to give the next test a clean start
-                                               $.each( active, function ( i, ajax ) {
-                                                       mw.log.warn( 'Unfinished AJAX request #' + i, ajax.options );
+                                               $.each( pending, function ( i, ajax ) {
+                                                       mw.log.warn( 'Pending AJAX request #' + i, ajax.options );
                                                        ajax.xhr.abort();
                                                } );
                                                ajaxRequests = [];
 
-                                               throw new Error( 'Unfinished AJAX requests: ' + active.length );
+                                               throw new Error( 'Pending AJAX requests: ' + pending.length + ' (active: ' + $activeLen + ')' );
                                        }
                                }
                        };
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js
new file mode 100644 (file)
index 0000000..c25641d
--- /dev/null
@@ -0,0 +1,53 @@
+( function ( mw ) {
+       QUnit.module( 'mediawiki.storage: normal case.', {
+               setup: function () {
+                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', true );
+                       this.spy = this.sandbox.spy( localStorage, 'setItem' );
+                       this.sandbox.stub( localStorage, 'getItem' )
+                               .withArgs( 'foo' ).returns( 'test' )
+                               .withArgs( 'bar' ).returns( null );
+               }
+       } );
+
+       QUnit.test( 'set/get with localStorage', 4, function ( assert ) {
+               mw.storage.set( 'foo', 'test' );
+               assert.strictEqual( this.spy.calledOnce, true, 'Check localStorage called.' );
+               assert.strictEqual( this.spy.calledWith( 'foo', 'test' ), true,
+                       'Check prefixed.' );
+               assert.strictEqual( mw.storage.get( 'foo' ), 'test', 'Check value gets stored.' );
+               assert.strictEqual( mw.storage.get( 'bar' ), null, 'Unset values are null.' );
+       } );
+
+       QUnit.module( 'mediawiki.storage: localStorage does not exist', {
+               setup: function () {
+                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', false );
+                       this.sandbox.stub( localStorage, 'setItem' ).throws();
+               }
+       } );
+
+       QUnit.test( 'set/get without localStorage', 3, function ( assert ) {
+               assert.strictEqual( mw.storage.set( 'foo', 'test' ), false,
+                       'When localStorage not available save fails.' );
+
+               assert.strictEqual( mw.storage.remove( 'foo', 'test' ), false,
+                       'When localStorage not available remove fails.' );
+
+               assert.strictEqual( mw.storage.get( 'foo' ), false,
+                               'Inability to retrieve values return false to differentiate from null (not set).' );
+       } );
+
+       QUnit.module( 'mediawiki.storage: localStorage exhausted', {
+               setup: function () {
+                       this.sandbox.stub( mw.storage, 'isLocalStorageSupported', true );
+                       this.sandbox.stub( localStorage, 'setItem' ).throws();
+                       this.sandbox.stub( localStorage, 'getItem' ).returns( null );
+               }
+       } );
+
+       QUnit.test( 'set/get without localStorage', 2, function ( assert ) {
+               assert.strictEqual( mw.storage.set( 'foo', 'test' ), false,
+                       'When localStorage not available inform user with false.' );
+               assert.strictEqual( mw.storage.get( 'foo' ), null, 'No value registered.' );
+       } );
+
+}( mediaWiki ) );
index 3b7ff43..25bca87 100644 (file)
--- a/thumb.php
+++ b/thumb.php
@@ -163,7 +163,7 @@ function wfStreamThumb( array $params ) {
 
        // Check if the file is hidden
        if ( $img->isDeleted( File::DELETED_FILE ) ) {
-               wfThumbError( 404, "The source file '$fileName' does not exist." );
+               wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        }
 
@@ -213,14 +213,15 @@ function wfStreamThumb( array $params ) {
                        if ( count( $varyHeader ) ) {
                                $response->header( 'Vary: ' . implode( ', ', $varyHeader ) );
                        }
+                       $response->header( 'Content-Length: 0' );
                        return;
                }
 
                // If its not a redirect that has a target as a local file, give 404.
-               wfThumbError( 404, "The source file '$fileName' does not exist." );
+               wfThumbErrorText( 404, "The source file '$fileName' does not exist." );
                return;
        } elseif ( $img->getPath() === false ) {
-               wfThumbError( 500, "The source file '$fileName' is not locally accessible." );
+               wfThumbErrorText( 500, "The source file '$fileName' is not locally accessible." );
                return;
        }
 
@@ -282,7 +283,7 @@ function wfStreamThumb( array $params ) {
                        }
                        return;
                } else {
-                       wfThumbError( 404, "The given path of the specified thumbnail is incorrect;
+                       wfThumbErrorText( 404, "The given path of the specified thumbnail is incorrect;
                                expected '" . $img->getThumbRel( $thumbName ) . "' but got '" .
                                rawurldecode( $rel404 ) . "'." );
                        return;
@@ -309,7 +310,6 @@ function wfStreamThumb( array $params ) {
                        wfThumbError( 500, 'Could not stream the file' );
                } else {
                        RequestContext::getMain()->getStats()->timing( 'media.thumbnail.stream', $streamtime );
-                       wfDebugLog( 'thumbnailaccess', time() . ' ' . $thumbPath . ' ' . ob_get_length() . ' Streamed ' );
                }
                return;
        }
@@ -546,14 +546,26 @@ function wfExtractThumbParams( $file, $params ) {
        return null;
 }
 
+
+/**
+ * Output a thumbnail generation error message
+ *
+ * @param int $status
+ * @param string $msg Plain text (will be html escaped)
+ * @return void
+ */
+function wfThumbErrorText( $status, $msgText ) {
+       return wfThumbError( $status, htmlspecialchars( $msgText ) );
+}
+
 /**
  * Output a thumbnail generation error message
  *
  * @param int $status
- * @param string $msg HTML
+ * @param string $msgHtml HTML
  * @return void
  */
-function wfThumbError( $status, $msg ) {
+function wfThumbError( $status, $msgHtml ) {
        global $wgShowHostnames;
 
        header( 'Cache-Control: no-cache' );
@@ -585,7 +597,7 @@ function wfThumbError( $status, $msg ) {
 <body>
 <h1>Error generating thumbnail</h1>
 <p>
-$msg
+$msgHtml
 </p>
 $debug
 </body>